diff --git a/CHANGELOG b/CHANGELOG new file mode 100644 index 000000000..27d97cec8 --- /dev/null +++ b/CHANGELOG @@ -0,0 +1,79 @@ +- Trees regrow from their stumps over time, or from Hydra's regrowth scrolls. +- Diseased trees can be cured with secateurs. +- Willow branches can be harvested from willow trees. +- Giant ent improves yields of certain patch types by 50%. +- Replaced all Druids with their RSHD counterparts, released the same time as Summoning and the Taverley Graphical Update. +- This also means the Druidess is now correctly added to the game, and can be attacked. +- Druid and Druidess added to Druid's Cricle (5 Druid/Druidess) +- All HD Druids/Druidess' now have the right drop table assigned (all have identical drops to the original Druid NPC) +- All Druid and Druidess NPCs animations corrected +- All Druid and Druidess NPCs attack speed corrected +- All Druid and Druidess NPCs stats corrected +- All Druid and Druidess NPCs correct respawn rate of 25 ticks (15 seconds) +- Pen (Taverley/Yanille Pet Shop) (ID 28341) examine added +- Counter (Taverley/Yanille Pet Shop) (IDs 28357,28358,28364) examine added +- The puppy spawns wandering inside the Yanille Pet Shop's pen have been corrected to the right NPCs +- The puppy spawns wandering isnide the Taverley Pet Shop's pen have been corrected to the right NPCs +- Gaius' Two Handed Shop (Taverley) name correction +- Gaius' Two Handed Shop (Taverley) stock correction +- Relocated Bernald (Burthorpe Vineyard) to his grapevines +- Bernald (NPC ID 2580) examine added +- Sanfew (NPC ID 454) examine added +- Jatix (NPC ID 587) examine added +- Kaqemeex (NPC ID 455) examine added +- Pikkupstix (NPC ID 6971) examine added +- Gaius (NPC ID 586) examine added +- Sylas (NPC ID 5987) examine added +- Druid's robe bottom (ID 538) examine corrected +- Druid's robe top (ID 540) examine corrected +- removed erroneous runite items from Ice Warrior droptable +- relocated one Imp spawn near Ardougne Monastery a few tiles to resolve a poor pathing issue +- removed [REDACTED] trapdoor +- Removed a whole bunch of Dragon gear, including dragon boots, and combat bracelets that were erroneously on the Revenant ork, Revenant knight, Revenant cyclops, Revenant hellhound, Revenant demon, Revenant dark beast and Revenant dragon +- Added Clue Scroll (easy) drop to Revenant imp, Revenant goblin and Revenant icefiend +- Added Clue Scroll (medium) drop to Revenant werewolf, Revenant hobgoblin, Revenant vampire, Revenant pyrefiend and Revenant cyclops +- Added Clue Scroll (hard) drop to Revenant ork, Revenant knight, Revenant hellhound, Revenant demon, Revenant dark beast and Revenant dragon +- Removed all Rune platebody drops across all Revenants +- Removed all Rune pickaxe drops across all Revenants +- Removed all Rune axe drops across all Revenants +- Removed all Rune scimitar drops across all Revenants +- Removed ridiculous noted Manta ray drop across all Revenants +- Reverted the absurd 50-100 noted Sharks drop to a more believable number of 4 across all Revenants +- Reverted the noted tuna potato drop to a maximum of 5 across all Revenants +- Fixed a potential exploit with defensive brews and titan effects +- Fixed a potential exploit with chinchompas +- Addressed a potentially serious issue with charm droprates +< ---- ABOVE Released NOVEMBER 1, 2021 https://gitlab.com/2009scape/2009scape/-/tags/Nov-1-2021 ---- > +- Removed halloween decorations +- Alkharid Upstairs locations can now be entered exited correctly +- Fix Yak Hide Armor crafting level requirements +- Spiky Vambraces crafing added +- Fixed Typo in Professor Oddenstein's dialogue +- Random Events can no longer spawn in the wilderness. +- Fairy rings emit a sound when teleporting. +- Void set effects now work more uniformly. +- Summoning familiars now grant combat xp when attacking +- Canoe travel interface now animates correctly +- Fix how the attack skill cape perk is calculated. It should now have a much more noticeable effect +- Properly track leaf-bladed sword drops in ::stats command +- Make broad bolts tradeable and fix their ranged strength +< ---- ABOVE Released NOVEMBER 22, 2021 https://gitlab.com/2009scape/2009scape/-/tags/Nov-22-2021 ---- > +- Animations for passing through Isafdar Dense Forest added +- Implement Wire Traps, Leaf Traps, and Stick Traps in Isafdar +- Quest point cape/hood no longer unequip on login if wearing QP hood +- Random Event Genie lamps now scale exp correctly +- Void mace now consumes runes correctly +- Add remote kicking support to the Management Server +- Added Christmas Event :) +- Added snow toggle to client config +< --- ABOVE Released December 4, 2021 https://gitlab.com/2009scape/2009scape/-/tags/Dec-4-2021 ---- > +- Shooting star discovery bonus xp is now gradually disbursed instead of lump-sum. +- Spending points to cancel your slayer task no longer sets your task streak to 0. +- Stars now have bots that will spawn and help mine for stars higher than level 5. +- Barrows equipment now lasts for 15 hours of combat instead of 40 minutes of combat. +- Fix granting hp xp on controlled +- Implemented HCIM Rework +< --- ABOVE Released December 15, 2021 https://gitlab.com/2009scape/2009scape/-/tags/Dec-15-2021 ---- > +- Implemented server performance monitor, many performance improvements +- Fishing and fishing trawler now use closer-to-empirical formulae. +- Server configuration language has been changed from JSON to TOML. diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 000000000..db62b332f --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,321 @@ +"So be it! Let my life fuel the spell that ends his!" + + redwings Update Log + + +The latest changes are at the top, and the less latest changes are at the bottom. + +08 February -> March 10 2022 + +- ***The beginning of the Expansion Disk Content*** +Some of the upcoming items for the Expansion Disk have been successfully ported and packed into the cache. + +- New Items: +- Dragon Defender +- Dragon Pickaxe +- Blade of Saeldor and inactive Blade +- Neitiznot Faceguard +- Ring of the Gods +- Treasonous Ring +- Tyrranical Ring +- Corrupt Armour set +- Bronze (g) Armour set +- Iron (g) Armour set +- Steel (g) Armour set +- Mithril (g) Armour set +- Bronze-Mithril (g) Med helms and Square shields + +- Dragon pickaxe added to Chaos Elemental and King Black Dragon's droptables at 1/256 and 1/1500 respectively + +- Dragon pickaxe added with correct mining power + +- As a result of the inclusion of the Dragon Pickaxe, Inferno Adze's mining strength has been reduced back to its original mining strength level, equal to Rune + +- Dragon Pickaxe special attack added +- Dragon axe (OSRS) special attack corrected + +- Blade of Saeldor has a new, heavily WIP special attack based on the failed poll implementation: Saeldor's Strike, consuming 100% spec energy to stun target + +- Bronze, Iron, and Steel (g) equipment now obtainable from Easy Clue reward caskets + +- Mithril (g) equipment now obtainable from Medium Clue reward caskets + +- Currently unobtainable by player: Neitiznot Faceguard, Blade of Saeldor, Corrupt armour set, Wilderness Rings + +- ***Monk's Friend Quest!!** Should be fully complete now + +- Sara brews properly on the linear formula (Meaning they will correctly scale, and correctly overheal to the right amounts) + +- Make-All fixed for using Pestle and Mortar on Herblore secondaries + +- Dark bow and Crystal bow now have their correct Attack Range of 10 tiles + +- Overhauled Entrana Item Restriction checks + +- Allow using a hunter potion to catch implings, you can now Boost to catch them + +- Implement Make-X for potatoes, pizzas, and breads + +- Improve the behavior of trying to interact with moving entities (such as tool leprechauns) + + +27 January -> 08 February 2022 +- **Fremennik Trials!!** Don your horned helmets and board your longboat, gaining the trust of the standoffish Fremennik tribe won't be easy, but the Adventurer never shies away from a good adventure! The Quest has been fully completed and is now in-game. + +- **Tribal Totem!!** Help Kangali Mau recover an important tribal artefact from the clutches of the postal system. The Tribal Totem Quest is now fully complete and in-game. + +- **HOSTILE RANDOM EVENTS ARE BACK** Tree Spirit, Rock Golem, River Troll, Shade, and Zombie join evil chicken in his AFK-anihilation schemes. Be careful when training Woodcutting, Mining, and Fishing, as you will have a chance to meet these nasties! + +- **A sleeping bot has been awoken!** GenericSlayerBot can only currently mosey his way on down to the Fremennik Slayer Dungeon and kill Cave Crawlers, but he's now awake and online! Go say hi if you see him on a Slayer assigment! + +- **GLOBAL SHOP RESTOCKING** Before, shops would only restock if a minute had passed, and a player was in render distance/region distance of the shop. Now, it functions more correctly, restocking shops every 60 seconds globally. Rejoice, ShopScapers! + +- **POSITIONAL AUDIO SUPPORT!** Sounds will now fall off after a certain distance. The cacophonous cry of 20+ whips at Pest Control will now be no longer. Monster combat, area sounds, object sounds, and more now correctly fall off depending on how far away from their origin the player is. + +- **SFX UPDATES** Due to the inclusion of positional audio, many many SFX have been added. Jewellery teleports(incl. Mounted), Standard Spellbook Teleports, slashing of webs, entering the Mole Lair, digging with a Spade, charging orbs, charging God Spells, Bones to Bananas, Dwarven Multicannon and more are now playing their sounds! Volume UP! + +- **MONSTER SFX UPDATES** Due to finding a debug sfx dump, some work has been done to adding monster combat SFX. The list is quite long, so here's one good example: All the Pest Control monsters now have their entire suite of combat SFX! + +- **BIRD'S NEST LOOT POOL CORRECTIONS** Seed Nests, Ring Nests, and Wyson nests have been corrected in loot pool, and weights to be more accurate to the original game instead of... a complete mess. + +- **CHAOS ELEMENTAL OVERHAUL!** Chaos Elemental has been overhauled with Crash's special Accuracy Polish. He has all SFX added(sans Spellcast SFX), and his drop table has been accurately repaired. He now has his minor drop table, which always rolls alongside his "main" table. No longer will you be only getting 5 bones, you'll get 5 bones *and something possibly decent*. Or 10 Strange Fruit. Who knows? + +- **FELLER CELLAR UPDATES!!** The Cellar now shows you what track is currently playing in the chatbox. When a song is about to end, the Cellar will now shuffle, and tell the players currently inside what the next track will be. 2 new tracks have been added to accompany the Cellar Jukebox polish: Fight On! (FF7) and Fun Naming! :cd: + +- Barlak (Long Bone Merchant) now temporarily spawned in the Dorgeshuun Mine, next to the Bone Weapon merchant. + +- Falador Mole Lair Music track "The Mad Mole" now correctly plays across the entirety of the Mole Lair. + +- Added 8 spawns for Tortured souls, 6 spawns north of the Ectofuntus, and 2 spawns west of Port Phasmatys + +- All God Kiteshields now have a +1 Prayer bonus, in line with the previous Equipment Rebalance changes + +- All Baby Mole NPCs now correctly wander, and their three unique examine texts have been added. + +- Ryan: Failing to enter the GWD Boss rooms now no longer reduces your KC. (Example: attempting to enter the same time as another player is entering) + +- Ryan: Plank Make spell rewritten to be authentic and polished + +- Ryan: Player is now notified that Turael Slayer tasks won't give them Slayer points + +- aweinstock: Add InteractionListener.onUseWithWildcard. Important for quests and content that requires checking of using *any* item, not just small specific handfuls of them. + +- aweinstock: Allow Dark Mage to be contacted via NPC Contact Spell, allowing players to contact the mage and repair pouches. + +- aweinstock: Make multiple runes continuous (via linear interpolation) between levels required for multiple runes. + + +18 -> 26 January 2022 +- Chaos Druid Warrior drop table corrections, removing copious noted secondary drops (Arios loved these for some reason...) + +- Fixed some hats clipping with hair (Q) + +- All Ancient Warriors Equipment (Vesta, Zuriel, etc) can now be correctly traded in its un-degraded form + +- Kermit: Fixed issues with Adventure bot assembly and initial spawning. You'll notice increased GE activity, as less bots are now capable of becoming inactive null bots, and increased stability on launch, as the adventure bots will no longer all be forced to spawn in the same timeframe. + +- Ryan: Fix Gertrude's Cat quest step not appropriately setting, allowing players to once again complete the Quest. + +- More Zanaris dialogue and spawn work by Q! + +- **FIRST REDWINGS CACHE CHANGES** - Mounted Glory Right-Click Options, Obelisk in POH +Mounted glories now have right-click options for each teleport, similar to later incarnations, and a brand-new Construction object has been added, built in the Centrepiece slot of the Garden room: The Summoning Obelisk! Requiring 41 Summoning, and similar materials to its later RS2 counterpart, you now have the opportunity to recharge your Summoning points right inside your POH! + +- Ryan: Random events now actually random. Before, Randoms would roll every 60 seconds, for everyone, no deviation. Now, there's a larger window (Between 30 and 90 minutes), and is appropriately random so we all don't chimp out at the sight of the first Genie/Old Man random spawn. + +- Ryan: Added a bunch of debugging to RSA block and player init + +- Ryan: fix ruby bolt(e) calc and fix general bolt spec audio. Rejoice! The Ruby bolt special attack will now also forfeit your eardrums as well as your HP! + +- **BOSS SLAYER** Boss Slayer tasks have now been added to the game! You can only receive these Boss tasks from Duradel, and can only get them assigned at 75/90 Slayer depending on Boss. Now you can also get some Slayer EXP while hunting for drops! +75: G.Mole, C.Ele, KBD +90: GWD + +- aweinstock: MTA fixes to Graveyard, Telekinetic Maze, and the Shop interface + +- aweinstock: All GWD Boss minion secondary drops that should be noted, are now noted. + +- aweinstock: TDs unique items have been correctly re-weighted (1/256 for claws, 1/1024 for ruined armour pieces), erroneous highly-weighted Godsword Shard drop on Balfrug Kreeyath corrected + +- aweinstock: Add server-wide announcements for Godsword shards, Ruined armour pieces, steam battlestaves and Seercull. + +- aweinstock: Re-run charm scraper to fix monster charm drops missed the first time and any regressions since + +- **REDWINGS OST DISK 1** Due to new, experimental tools from the sorceror, we can now pack new midi files inside the cache. Ten new songs have been added to the game. + + + +14 -> 18 January 2022 +- Long and curved bones are now real content! You can trade these in to Barlak after completion of The Lost Tribe quest, for Construction XP. Huge thanks to Q! + +- Many other NPC dialogues by Q in the Dorgeshuun and Ape Atoll areas of the game as well as expansion to Crate code. + +- All currently functional Summoning familiars with invisible skills boosts are now correctly added to the game! Pyrelord, Forge Regent, Arctic Bear, Lava Titan, Magpie, Spirit Graahk, Spirit Larupia, Spirit Kyatt, Void Ravager and Wolpertinger now boost skills alongside their other helpful abilities. + +- The Mining Guild can now be entered under 60 Mining via the use of skill boosts. + +- Black Knight and Water Elemental drop fixes + +- The Burnt Stew Incident has been resolved. All burnt bowl foods can now be properly emptied. + +- Barrows prayer drain timer has been fixed, and now correctly drains every 18 seconds. + +- The Lady of the Lake will now **finally** enhance Excalibur for you if you have the prerequisite Seers Hard Diary and Merlin's Crystal completed, and the headband and sword equipped when talking to her. + +- Giant Mole's Burrow ability has now been corrected, no longer being entirely random down to it's last Hitpoint. + +Burrow: When the mole's health is between 5-50%, there is a 25% chance for any incoming attack to cause it to burrow away into another location. There is also a chance that the dirt she digs while burrowing to escape can extinguish the player's light source (shown with dirt splatters on the player's screen), though covered light sources will be unaffected by this. + +- Potion decanting note bug should now be fixed and not eat up all your notes when attempting to decant. Another certified Q moment (fixed in !28) + +- Fixed incorrect arrows being returned when used with poison++ (Q) + + + + + +13 January 2022 +- The GE should now properly save and load, meaning our newly-resurrected bot boys will actually be able to stock up their gathered goods! And, we'll actually be able to put in buy/sell offers that won't get voided on server restart! + +- More Vexia-tier dialogue cleanups by Nuggles 😍 + +- More dialogue by Q for some Digsite, Isafdar, and Tyras Camp NPCs 🗣️ + +- aweinstock: Waterbirth Dungeon is cannonable, Spinolyps only drain prayer if they hit, and always target ranged defence. + +- Some nice Waterbirth Dungeon tweaks by Avi, making it more consistent, opening up a new Dag Cannon spot, and Spinolyps draining Prayer more in-line with how it should work on the original games + +- aweinstock: - Increase drop rate of Sinister Key to 1/12, make strike spells always max on Salarin, and port Yanille Agility Dungeon to kotlin + InteractionListener. + +- Yanille Agility Dungeon's unique content (Salarin and his herb-filled, poison-trapped Chest) has been properly overhauled, and functions correctly to how it does in the RS2 game. Thanks Avi! + +11 January 2022 +- Core Reversion has now been completed The unstable changes the alien made to the core have been carefully singled out and reverted. Stability should be back to pre-new-core levels of the usual occasional server vomit. 🌍 + +- The bots are back in town! A few changes singled out and diff'd by Ryan were found to be the cause of the bots becoming completely nonfunctional. The bots have been returned to their former glory. 🤖 Huge content BIS upgrade!! + +- This makes the Adventure bots work similarly to how they did on 09-live pre-core changes, where they will actually adventure and sell shit until the entropy eventually slows them down. Can you find sniffbot? +- This makes the simple gatherer (logs etc) bots work again +- This makes PC bots work again +- This ((probably)) makes the GD bots work again +- This stops most of the bots from pooling at the Lumbridge spawnpoint after they die/void out/other shit + +- Playerscripts are functional again! Bit cringe, but they're back for those who want to make use of them + +- A staggering amount of new NPC dialogue work done by Q, for places like Falador, Miscellania, and many other areas of the game! 🗣️ + +4 January 2022 +- The Ring of Wealth now has **all** of its unique teleports, akin to OSRS. You can now use it to teleport to: Miscellania, Grand Exchange(as usual), Falador Park and Dondakan's Rock. :ring: + +Equipment Rebalancing: Part I +Similar to OSRS's small, oft necessary tweaks to improve health of the combat triangle, and open up some more horizontal or supplementary gearing options, after careful analysis, some of the Rebalance changes have now been included into `redwings`. Read below for all currently included changes. Possibly more to come in the future. + +- **ALL** God plate armour (helmets, platebody, platelegs) (Saradomin, Zamorak, Guthix) now receives a `+1` `Prayer bonus`, up from `+0` + +- **ALL** God dragonhide (coif, body, chaps, bracers) now receives a `+1` `Prayer bonus`, up from `+0` + +- **ALL** God dragonhide chaps `Defence` level requirement has been ***removed***. Def pures weep with reckless abandon. + +- Mystic Staves and Battlestaves across the board have had their `Magic attack` and `Magic defence` increased. + +- **ALL Battlestaves** have an increased MagicATK/MagicDEF of `+12`, up from `+10` + +- **ALL Mystic staves** have an increased MagicATK/MagicDEF of `+14`, up from `+10` + +The above staff changes still keep power in-line, as `Ancient Staff` and beyond is at `+15` and above, but opens up more options for staves, making some of the combo staves more useful for combat. + +3 January 2022 +- Fixes to Family Crest +- GlobalKillCounter fixes +- Ship Charters that cost -1GP now corrected to cost 0GP +- Magic Dart EXP correction +- Can now correctly pickpocket ID 25 Woman +- Enchanting Emerald or Diamond Bracelets no longer turns them into enchanted (noted) bracelets but the correct unnoted item +- A whole bunch of funny backend shit that may or may not work haha (such as disabling GUI server monitor, and reverting Fractals dynamic region changes) +- more fixes to blast furnace (so it doesnt accidentally eat coal when it shouldnt) + +31 December 2021 +- Renewable Familiars You can now renew your Summoning familiar by Summon-ing an extra pouch of the same Familiar, refreshing their duration to its maximum. Extend Beasts of Burden for longer trips, or your Golem to keep the Mining Boost up! + +- Beasts of Burden will now drop their currently held items on dismissal, even if the player is an Iron. + +- Battlestaff price correction to 7k ea + +- Slimy eel fishing spots have been added + +- the cope boxes have been disabled we will see him next time + +- Clue Scroll Overhaul All monsters that can drop Clue Scrolls have now been corrected to drop the right "clue" drop. No longer will everything always force an Easy Clue. + +27 December 2021 + +- Secondary banks are now accessible at a hefty fee of 5 million GP, doubling your bank space from 496 to 992. You can switch between bank accounts at a bank teller. + +- A new chinning/bursting spot has been made accessible. The Skeleton Monkeys inside Ape Atoll Dungeon can now be fought, and the area is now a multicombat area + +- Giant Mole's drop table has been cleaned up, with the Thanos Drop Editor back online. + +- The Oo'glog Fresh Meat store is now accessible, and has an increased stock of 100 raw bird meat. + +- The damage modifier (A thing mostly used in special attacks to modify damage) is now correctly factored in, for all 3 combat styles. + +- You can now obtain Mort Myre Pears and stems from casting Bloom, and Bloom's sfx has been added. + +- The Fishing Guild can now be entered via skill boosts. + +- Edgeville Canoe -> WIlderness Pond travel option now fixed + +26 December 2021 + +- Ruby bolts(e) fix!(kinda)!! Ruby bolt(e) special attack, Blood Forfeit, maximum current Hitpoint damage cap has been increased from 35 to a kiiinda close enough cap of 150 Hitpoints. (The reason why the cap can't be removed yet, is that the Corporeal Beast-specific damage cap is not implemented) + +- The Cider, needed to complete a step in Seers Village Diary, can now be purchased from our bandaid-fix Digsite Exam Center shop. Make sure to take 5, and try not to left-click Drink them + +25 December 2021 +- Seer's Achievement Diaries should now be fully completable. +- Enhanced Excalibur now has all of it's special attack effects implemented +- Blast Furnace should now reward 1 smithing XP to everyone in the Blast Furnace area for each bar that is smithed. +- The AFK timer has been removed, may Evil Chicken have mercy on your soul. + +- Mobile Client Update +- The Android Client has been updated. +- App strings updated to match the rebrand, new app icon replacement still pending. +- To use redwings-mobile to connect to other servers (such as local dev instances or the main 2009scape game), download and edit the Android Client Config, load the Android Client, tap the rightmost corner in-app to bring up the Settings menu, and tap LOAD CONFIG. + +24 December 2021 +- THE FUNNY FURNACE UPDATE(and friends) +- What's new? +- Blast Furnace is now complete enough to be considered complete™️ +- Ordan and Jorzik's dialogue has been implemented. +- Jorzik's armour store is in as well so now you have a place to dump all of your blast furnace creations +- Some of the funny furnace funny logic has been polished up and the kinks worked out +- The steps to the blast furnace in Keldagrim will now gatekeep players with under 60 smithing as intended +- If you're under 60 smithing you can pay 2500gp for ten minutes of access to the blast furnace +- If you have the Ring of Charos(a) equipped the fee is lowered to 1250gp +- Green Dragon bots can hop over the wildy ditch again but bots in general are still fucked +- The correct item spawns have been added to the Blast Furnace area +- The Blast Furnace will now remember what you have stored into it +- You now have to pedal your ores into the ore pot before you can smelt them + +- Explorer's Ring now has correct sfx for recharging your run energy, as well as the Falador Farm Cabbage-port. Leaf-bladed sword now has correct sfx. + +- Family Crest Update! Fractals polished the last bits of the quest up. The bossfight, Chronozon, now works as it should, and the perfect gold ore puzzle has been added. + +- Client Update! +1. december_snow is now accessible, allowing you to toggle on/off the game-wide snow effect. +2. left_click_attack This allows you, no matter what, to have any monster's main left-click option be Attack. This is important for bossing, as bosses usually have insanely high Combat levels, thus usually only being right-clickable. + +23 December 2021 +- The Xmas Gift Limit has been increased! To compensate for missing most of December, the daily gift limit has been increased to 28. + +- Permadeath Ironmen should now be able to access the 20x rates from Hans in Tutorial Cellar/Lumbridge Castle. Take on the challenge, and rebuild faster than ever. + +- sniffbot is back The Adventure Bot dialogue has been restored + +- At the Digsite Exam Centre, south of the Digsite, there is a Researcher you can talk to to access a shop "Forgotten Relix" which contains until now inacessible quest-unlocked items such as the Magic Secateurs, Salve Amulet, and Iban's Staff. + +- Bill Teach, Once Lost Uncle of the Fellers, has returned to take us on adventures near and far. At the Port Phasmatys pub, you can talk to him and he will take you where you want to go. + +- Barrows gloves return from the crypt! The Culinaromancer's Chest, the RFD gloves, and the bankchest in Lumbridge Basement are now accessible to all accounts. + +- Blast Furnace Exclusive Beta The Blast Furnace is now accessible deep within Keldagrim. Smithing skill trainers are weeping, overjoyed. \ No newline at end of file diff --git a/CONTRIBUTE.md b/CONTRIBUTE.md new file mode 100644 index 000000000..9f105e6b4 --- /dev/null +++ b/CONTRIBUTE.md @@ -0,0 +1,196 @@ +## Table of Contents + +* [Contributing](#contributing) +* [Setup for Content Developers](#content-developers-setting-up-the-project) + * [Github Setup](#github-setup) + * [Prerequisites](#prerequisites) + * [Prereq Installation](#prereq-installation) + * [Project Setup](#project-setup) + * [Running the project](#running-the-project) +* [Video Setup Tutorial](#video-setup-tutorial) + + # Contributing +Most new code (unless it is fixes or patches to impossible java spaghetti) is required to be in the Kotlin language. + +

More information on Kotlin can be found here.

+ +* **Wiki Editors**: Did you know the main 2009scape project has a wiki? Well it's always in need of people to fill it out and stay on top of it. If you're an active player and have the will, there's so much you could be helping out with over at the wiki. Click here to go to the wiki. + + +* **JSON editors**: Did you know that the vast majority of our drop tables, stats, examines, item info, npc info, etc is all stored in a very easy-to-modify format called JSON? This is something almost anyone can help with, especially with the tool made by Ceikry to make it simple and streamlined. If you want to know what can be done to help here, get in touch in the development channel in the discord! **JSON editors are always in need and always appreciated!!**. + + +## Content Developers: Setting Up the Project. +### Github Setup + +

Note: This allows you to commit changes to the main repo (with approval)! Also, always stay up to date with the most recent updates by pulling into your copy when redwings updates!

+ +1. Create a gitlab account if you haven't done so already + +3. Click "Fork" in the top right hand side of our gitlab page. + +**If at anytime you have an issue with gitlab please refer to the** Gitlab help center. + + +### Prerequisites + +

Note: It is required for a developer submitting a PR to use Intellij IDEA as your integrated development environment.

+ +* Intellij IDEA +* Java SE Development Kit Version 1.8/OpenJDK 1.8 (preferred) +* Gradle (optional - Installs with Intellij on project build) +* Xampp + +## Prereq Installation + +

Windows

+
+ + +1. Install JDK version 1.8 + * Scroll down until you see Windows x86 and Windows x64 + * If you are running a 64bit verison of Windows (standard), select Windows x64 + * Accept the terms and conditions, after reading them of course, and login to oracle + * Download and install like any normal application + +2. Install Intellij IDEA + * Click "Download" on the main page + * Ensure "Windows" is selected at the top + * Select "Community download" + * Download and install like any normal application + +3. Install Gradle + * Click on "Install Gradle" + * Scroll down to "Installing manually" + * Download "Binary-only" + * Scroll down until you see "Microsoft Windows users" + * Follow the instructions listed on the website + +4. Install Xampp + * Click on "Xampp for Windows" + * Download + * Install as Administrator +
+ +

MacOS

+
+ + +1. Install JDK version 1.8 + * Scroll down until you see macOS x64 + * select macOS x64 + * Accept the terms and conditions, after reading them of course, and login to oracle + * Download and install like any normal mac application + +2. Install Intellij IDEA + * Click "Download" on the main page + * Select "Mac" towards the top of the main page + * Select "Community download" + * Download and install like any normal application + +3. Install Gradle + * Click on "Install Gradle" + * Scroll down to "Installing manually" + * Download "Binary-only" + * Scroll down until you see "Linux & MacOS users" + * Follow the instructions listed on the website + +4. Install Xampp + * Click on "Xampp for OS X" + * Download + * Install as Administrator +
+ +

Linux

+
+ + +1. Install JDK version 1.8 through Oracle or through command line + * Debian, Ubuntu, etc. + ```sh + sudo apt-get install jre8-openjdk + ``` + * Fedora, Oracle Linux, Red Hat Enterprise Linux, etc. + ```sh + su -c "yum install java-1.8.0-openjdk" + ``` + +2. Install Intellij IDEA through Intellij Website or through Command Line + * Debian, Ubuntu, etc. + ```sh + sudo snap install intellij-idea-community --classic + ``` + +3. Install Gradle through the Gradle Website or through Command Line + * Click install Gradle + * If you're installing through Command Line follow : Installing with a package manager + * If you're installing through Download follow : Installing manually : Linux & MacOS users + ```sh + sdk install gradle 6.6.1 + ``` + +4. Install Xampp + * Click install "XAMPP for Linux" + * Install like any normal Linux program +
+ + +### Project Setup + +1. Open Xampp + * On Windows make sure you run Xampp as administrator + * On the left hand side make sure you tick the two "Service" boxes for Apache and MySQL + * For both Apache and MySQL click "Start" under Actions + * After doing that navigate to the PHP My Admin LOCAL SITE + * Once opened, on the left hand side click the three "disks" that say "New" + * In the "Database name" bar type: global + * Press the "Create" button + * A three disk "global" should appear on the left hand side + * Click it and on the top bar select "Import" + * Under **FILE TO IMPORT** click "Browse...." + * Navigate to your redwings project folder + * Go to Server/db_exports/ and import global.sql + * It may take a moment to import, when It is done importing Xampp is all set up! + +2. Open Intellij + * Select Get from Version Control + * Click on "Github", and you will be asked to login + * Change your directory to wherever you want the project to load, or keep it default + * On the right hand side you should see your Github Repository for redwings + * Select it and hit "Clone" + * The project should instantly start building on import. Give it some time because it is going through and compiling alot of files + * In Intellij go to File -> Project Structure -> Project and verify your Project SDK is set to JDK "1.8" + * Setup through Intellij should now be finished! + +### Running the project + +1. Navigate to the right hand side of Intellij where it says "Gradle" + * Gradle is very useful when it comes to running and compiling the project + * The only tabs we are concerned about are "Client", "Management-Server", and "Server" + * Each of these have a "Tasks" folder and an "application" folder inside of "Tasks" +
+2. Click on the "application" folder for the Management-Server and double-click "run" + * The management server is used for things such as player data(not saves), highscores, and world information +
+3. Click on the "application" folder for the Server and double-click "run" + * Please note this may take a minute or two to build, it is compiling a lot of files! + * If you receive an error on server start, check and make sure that your worldprops/default.json is pointing to the correct paths +
+4. Copy your cache from redwings/Server/data/cache (.dat2/.idx0-255) to C:/Users/(your_name)/.runite_rs/runescape/ + * As of the writing of this readme, cache downloading is still broken. It is on the agenda to be fixed in the future + * **If you don't have those folders then create them** + * Server debug mode/other information can be changed in worldprops/default.json +
+5. Click on the "application" folder for the Client and double-click "run" + * If you receive an error on client run open your build.gradle to verify that the mainClassName is set to the correct location + * Due to client work that is on going a lot of files get changed and new paths for the main class are created + * **FIX** In your build.gradle change the mainClassName and Main-Class attributes to 'org.runite.jagex.Client' + * If Gradle run still does not work, launch the Client by navigating to Client/src/main/java/org.runite/jagex/Client + * Right click on the client and select Run 'Client.main()' + * Client debugging options can be found inside of config.json + + +### Video Setup Tutorial +Occexe made a nice video showing you how to set it up if you'd prefer that. Check it out here: + +[![View Tutorial](http://img.youtube.com/vi/3oQcsZdrRcE/0.jpg)](http://www.youtube.com/watch?v=3oQcsZdrRcE "2009Scape Setup") diff --git a/Client/config.json b/Client/config.json new file mode 100644 index 000000000..d1d81aabb --- /dev/null +++ b/Client/config.json @@ -0,0 +1,53 @@ +{ + "ip_address": "localhost", + "ip_management" : "localhost", + "server_port": 43594, + "wl_port": 5555, + "js5_port": 43593, + "world": 1, + + "customization": { + "login_theme": "newbie melody", + "december_snow": true, + + "right_click_menu": { + "left_click_attack": false, + "background": { + "color": "#0fab00", + "opacity": "70" + }, + "title_bar": { + "color": "#000000", + "opacity": "255", + "font_color": "#FFFFFF" + }, + "border": { + "color": "#FFFFFF", + "opacity": "255" + }, + "styles": { + "Presets provide default customizations.": "rs3, classic, or custom. custom allows you to define your own values above. Classic is standard 2009.", + "presets": "classic", + "rs3border": false + } + }, + "rendering_options": { + "technical": { + "render_distance_increase": true + }, + "skybox": { + "skybox_color" : "Coming in a future update..." + } + } + }, + + "debug": { + "item_debug": false, + "object_debug": false, + "npc_debug": false, + "hd_login_region_debug": false, + "hd_login_region_debug_verbose": false, + "cache_debug": false, + "world_map_debug": false + } +} \ No newline at end of file diff --git a/Client/hs_err_pid23465.log b/Client/hs_err_pid23465.log new file mode 100644 index 000000000..a187b9e27 --- /dev/null +++ b/Client/hs_err_pid23465.log @@ -0,0 +1,1070 @@ +# +# A fatal error has been detected by the Java Runtime Environment: +# +# SIGSEGV (0xb) at pc=0x0000000000013776, pid=23465, tid=0x00007f557726c700 +# +# JRE version: OpenJDK Runtime Environment (8.0_275-b01) (build 1.8.0_275-8u275-b01-0ubuntu1~18.04-b01) +# Java VM: OpenJDK 64-Bit Server VM (25.275-b01 mixed mode linux-amd64 compressed oops) +# Problematic frame: +# C 0x0000000000013776 +# +# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again +# +# If you would like to submit a bug report, please visit: +# http://bugreport.java.com/bugreport/crash.jsp +# + +--------------- T H R E A D --------------- + +Current thread is native thread + +siginfo: si_signo: 11 (SIGSEGV), si_code: 1 (SEGV_MAPERR), si_addr: 0x0000000000013776 + +Registers: +RAX=0x000000000000006e, RBX=0x00007f556408bf90, RCX=0x0000000000000004, RDX=0x0000000000000000 +RSP=0x00007f557726bd38, RBP=0x00007f557726bda0, RSI=0x0000000000000000, RDI=0x0000000000000002 +R8 =0x00007f556408bbf8, R9 =0x00007f556408bc20, R10=0x00007f557726bd60, R11=0x0000000000000000 +R12=0x00007f557726bfc0, R13=0x0000000000000000, R14=0x00007f556408bfa8, R15=0x00007f5577aee5f0 +RIP=0x0000000000013776, EFLAGS=0x0000000000010206, CSGSFS=0x002b000000000033, ERR=0x0000000000000014 + TRAPNO=0x000000000000000e + +Top of Stack: (sp=0x00007f557726bd38) +0x00007f557726bd38: 00007f5577287fda 0000006e7726bd90 +0x00007f557726bd48: 00007f556408bc20 00007f557726bd80 +0x00007f557726bd58: 0000000060258e9f 0000000060258e9f +0x00007f557726bd68: 00000000256819a5 00000000256819a5 +0x00007f557726bd78: 00000000256819a5 0000000060258e9f +0x00007f557726bd88: 00007f557726be00 00007f557726be58 +0x00007f557726bd98: 00007f556408bc20 00007f557726bdd0 +0x00007f557726bda8: 00007f5577287f35 1662ca5438978fa5 +0x00007f557726bdb8: 00007f557726be00 00007f557726be58 +0x00007f557726bdc8: 00007f556408bc20 00007f557726be20 +0x00007f557726bdd8: 00007f5577286fcf 00007f557726be58 +0x00007f557726bde8: 00007f557726be58 00007f556408bc20 +0x00007f557726bdf8: 1662ca541aca2aa5 1662ca5438978fa5 +0x00007f557726be08: 00007f5577293fb8 00007f557726be58 +0x00007f557726be18: 00007f556408bc20 00007f557726be70 +0x00007f557726be28: 00007f5577286e9d 000000017726be50 +0x00007f557726be38: 00007f557726be58 00007f556408bbf0 +0x00007f557726be48: 00007f556408bfc0 00007f557726be70 +0x00007f557726be58: 00007f556408bbf8 00007f556408bf01 +0x00007f557726be68: 00007f556408bfc0 00007f557726be90 +0x00007f557726be78: 00007f5577286e05 00007f556408bfc0 +0x00007f557726be88: 00007f5564066740 00007f557726beb0 +0x00007f557726be98: 00007f5577286dd5 00007f556408bf90 +0x00007f557726bea8: 00007f556408bfc0 00007f557726bed0 +0x00007f557726beb8: 00007f5577286bc9 0000000000000000 +0x00007f557726bec8: 00007f556408bfa8 0000000000000000 +0x00007f557726bed8: 00007f55e3289a50 0000000000000000 +0x00007f557726bee8: 0000000000000000 0000000000000000 +0x00007f557726bef8: 00007f55e45bb6db 0000000000000000 +0x00007f557726bf08: 00007f557726c700 00007f557726c700 +0x00007f557726bf18: 3645f94e10e25851 00007f557726bfc0 +0x00007f557726bf28: 0000000000000000 00007f556408bfa8 + +Instructions: (pc=0x0000000000013776) +0x0000000000013756: +[error occurred during error reporting (printing registers, top of stack, instructions near pc), id 0xb] + +Register to memory mapping: + +RAX=0x000000000000006e is an unknown value +RBX=0x00007f556408bf90 is an unknown value +RCX=0x0000000000000004 is an unknown value +RDX=0x0000000000000000 is an unknown value +RSP=0x00007f557726bd38 is an unknown value +RBP=0x00007f557726bda0 is an unknown value +RSI=0x0000000000000000 is an unknown value +RDI=0x0000000000000002 is an unknown value +R8 =0x00007f556408bbf8 is an unknown value +R9 =0x00007f556408bc20 is an unknown value +R10=0x00007f557726bd60 is an unknown value +R11=0x0000000000000000 is an unknown value +R12=0x00007f557726bfc0 is an unknown value +R13=0x0000000000000000 is an unknown value +R14=0x00007f556408bfa8 is an unknown value +R15=0x00007f5577aee5f0 is pointing into the stack for thread: 0x00007f556c001000 + + +Stack: [0x00007f5576a6d000,0x00007f557726d000], sp=0x00007f557726bd38, free space=8187k +Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code) +C 0x0000000000013776 + +[error occurred during error reporting (printing native stack), id 0xb] + + +--------------- P R O C E S S --------------- + +VM state:not at safepoint (normal execution) + +VM Mutex/Monitor currently owned by a thread: None + +heap address: 0x0000000085600000, size: 1962 MB, Compressed Oops mode: 32-bit +Narrow klass base: 0x0000000000000000, Narrow klass shift: 3 +Compressed class space size: 1073741824 Address: 0x0000000100000000 + +Heap: + PSYoungGen total 23040K, used 18631K [0x00000000d7200000, 0x00000000da180000, 0x0000000100000000) + eden space 22528K, 82% used [0x00000000d7200000,0x00000000d8411e70,0x00000000d8800000) + from space 512K, 25% used [0x00000000da100000,0x00000000da120000,0x00000000da180000) + to space 512K, 0% used [0x00000000da080000,0x00000000da080000,0x00000000da100000) + ParOldGen total 74752K, used 51620K [0x0000000085600000, 0x0000000089f00000, 0x00000000d7200000) + object space 74752K, 69% used [0x0000000085600000,0x0000000088869058,0x0000000089f00000) + Metaspace used 21058K, capacity 21358K, committed 21632K, reserved 1069056K + class space used 1825K, capacity 1914K, committed 1920K, reserved 1048576K + +Card table byte_map: [0x00007f55e13ee000,0x00007f55e17c4000] byte_map_base: 0x00007f55e0fc3000 + +Marking Bits: (ParMarkBitMap*) 0x00007f55e4597680 + Begin Bits: [0x00007f55c92b0000, 0x00007f55cb158000) + End Bits: [0x00007f55cb158000, 0x00007f55cd000000) + +Polling page: 0x00007f55e541a000 + +CodeCache: size=245760Kb used=20700Kb max_used=21592Kb free=225059Kb + bounds [0x00007f55cd000000, 0x00007f55ce560000, 0x00007f55dc000000] + total_blobs=4020 nmethods=3358 adapters=575 + compilation: enabled + +Compilation events (10 events): +Event: 13195.495 Thread 0x00007f55dc0bc800 5336 % 4 org.runite.client.Model_Sub1::method2017 @ 770 (1484 bytes) +Event: 13195.667 Thread 0x00007f55dc0bc800 nmethod 5336% 0x00007f55cdd1d210 code [0x00007f55cdd1d4e0, 0x00007f55cdd21cb8] +Event: 13199.043 Thread 0x00007f55dc0c1000 5337 ! 3 java.awt.KeyboardFocusManager::getGlobalFocusedWindow (20 bytes) +Event: 13199.043 Thread 0x00007f55dc0c1000 nmethod 5337 0x00007f55ce02a210 code [0x00007f55ce02a3c0, 0x00007f55ce02a848] +Event: 13199.043 Thread 0x00007f55dc0c1000 5338 3 sun.awt.X11.XInputMethod::getParent (5 bytes) +Event: 13199.043 Thread 0x00007f55dc0c1000 nmethod 5338 0x00007f55cd129b50 code [0x00007f55cd129cc0, 0x00007f55cd129ee8] +Event: 13206.002 Thread 0x00007f55dc0c1000 5339 3 java.awt.Window::eventEnabled (138 bytes) +Event: 13206.003 Thread 0x00007f55dc0c1000 nmethod 5339 0x00007f55cd5aa750 code [0x00007f55cd5aa8e0, 0x00007f55cd5aace8] +Event: 13211.227 Thread 0x00007f55dc0c1000 5340 3 org.runite.client.Class3_Sub28_Sub16_Sub2:: (44 bytes) +Event: 13211.227 Thread 0x00007f55dc0c1000 nmethod 5340 0x00007f55cd5b0050 code [0x00007f55cd5b01e0, 0x00007f55cd5b0570] + +GC Heap History (10 events): +Event: 13214.142 GC heap before +{Heap before GC invocations=39930 (full 22): + PSYoungGen total 23040K, used 21608K [0x00000000d7200000, 0x00000000da180000, 0x0000000100000000) + eden space 22528K, 95% used [0x00000000d7200000,0x00000000d8702028,0x00000000d8800000) + from space 512K, 18% used [0x00000000da080000,0x00000000da098000,0x00000000da100000) + to space 512K, 0% used [0x00000000da100000,0x00000000da100000,0x00000000da180000) + ParOldGen total 74752K, used 51540K [0x0000000085600000, 0x0000000089f00000, 0x00000000d7200000) + object space 74752K, 68% used [0x0000000085600000,0x0000000088855058,0x0000000089f00000) + Metaspace used 21058K, capacity 21358K, committed 21632K, reserved 1069056K + class space used 1825K, capacity 1914K, committed 1920K, reserved 1048576K +Event: 13214.143 GC heap after +Heap after GC invocations=39930 (full 22): + PSYoungGen total 23040K, used 128K [0x00000000d7200000, 0x00000000da180000, 0x0000000100000000) + eden space 22528K, 0% used [0x00000000d7200000,0x00000000d7200000,0x00000000d8800000) + from space 512K, 25% used [0x00000000da100000,0x00000000da120000,0x00000000da180000) + to space 512K, 0% used [0x00000000da080000,0x00000000da080000,0x00000000da100000) + ParOldGen total 74752K, used 51556K [0x0000000085600000, 0x0000000089f00000, 0x00000000d7200000) + object space 74752K, 68% used [0x0000000085600000,0x0000000088859058,0x0000000089f00000) + Metaspace used 21058K, capacity 21358K, committed 21632K, reserved 1069056K + class space used 1825K, capacity 1914K, committed 1920K, reserved 1048576K +} +Event: 13214.415 GC heap before +{Heap before GC invocations=39931 (full 22): + PSYoungGen total 23040K, used 21646K [0x00000000d7200000, 0x00000000da180000, 0x0000000100000000) + eden space 22528K, 95% used [0x00000000d7200000,0x00000000d87038a0,0x00000000d8800000) + from space 512K, 25% used [0x00000000da100000,0x00000000da120000,0x00000000da180000) + to space 512K, 0% used [0x00000000da080000,0x00000000da080000,0x00000000da100000) + ParOldGen total 74752K, used 51556K [0x0000000085600000, 0x0000000089f00000, 0x00000000d7200000) + object space 74752K, 68% used [0x0000000085600000,0x0000000088859058,0x0000000089f00000) + Metaspace used 21058K, capacity 21358K, committed 21632K, reserved 1069056K + class space used 1825K, capacity 1914K, committed 1920K, reserved 1048576K +Event: 13214.418 GC heap after +Heap after GC invocations=39931 (full 22): + PSYoungGen total 23040K, used 96K [0x00000000d7200000, 0x00000000da180000, 0x0000000100000000) + eden space 22528K, 0% used [0x00000000d7200000,0x00000000d7200000,0x00000000d8800000) + from space 512K, 18% used [0x00000000da080000,0x00000000da098000,0x00000000da100000) + to space 512K, 0% used [0x00000000da100000,0x00000000da100000,0x00000000da180000) + ParOldGen total 74752K, used 51564K [0x0000000085600000, 0x0000000089f00000, 0x00000000d7200000) + object space 74752K, 68% used [0x0000000085600000,0x000000008885b058,0x0000000089f00000) + Metaspace used 21058K, capacity 21358K, committed 21632K, reserved 1069056K + class space used 1825K, capacity 1914K, committed 1920K, reserved 1048576K +} +Event: 13214.695 GC heap before +{Heap before GC invocations=39932 (full 22): + PSYoungGen total 23040K, used 21607K [0x00000000d7200000, 0x00000000da180000, 0x0000000100000000) + eden space 22528K, 95% used [0x00000000d7200000,0x00000000d8701fb8,0x00000000d8800000) + from space 512K, 18% used [0x00000000da080000,0x00000000da098000,0x00000000da100000) + to space 512K, 0% used [0x00000000da100000,0x00000000da100000,0x00000000da180000) + ParOldGen total 74752K, used 51564K [0x0000000085600000, 0x0000000089f00000, 0x00000000d7200000) + object space 74752K, 68% used [0x0000000085600000,0x000000008885b058,0x0000000089f00000) + Metaspace used 21058K, capacity 21358K, committed 21632K, reserved 1069056K + class space used 1825K, capacity 1914K, committed 1920K, reserved 1048576K +Event: 13214.696 GC heap after +Heap after GC invocations=39932 (full 22): + PSYoungGen total 23040K, used 160K [0x00000000d7200000, 0x00000000da180000, 0x0000000100000000) + eden space 22528K, 0% used [0x00000000d7200000,0x00000000d7200000,0x00000000d8800000) + from space 512K, 31% used [0x00000000da100000,0x00000000da128000,0x00000000da180000) + to space 512K, 0% used [0x00000000da080000,0x00000000da080000,0x00000000da100000) + ParOldGen total 74752K, used 51596K [0x0000000085600000, 0x0000000089f00000, 0x00000000d7200000) + object space 74752K, 69% used [0x0000000085600000,0x0000000088863058,0x0000000089f00000) + Metaspace used 21058K, capacity 21358K, committed 21632K, reserved 1069056K + class space used 1825K, capacity 1914K, committed 1920K, reserved 1048576K +} +Event: 13215.055 GC heap before +{Heap before GC invocations=39933 (full 22): + PSYoungGen total 23040K, used 21671K [0x00000000d7200000, 0x00000000da180000, 0x0000000100000000) + eden space 22528K, 95% used [0x00000000d7200000,0x00000000d8701fc0,0x00000000d8800000) + from space 512K, 31% used [0x00000000da100000,0x00000000da128000,0x00000000da180000) + to space 512K, 0% used [0x00000000da080000,0x00000000da080000,0x00000000da100000) + ParOldGen total 74752K, used 51596K [0x0000000085600000, 0x0000000089f00000, 0x00000000d7200000) + object space 74752K, 69% used [0x0000000085600000,0x0000000088863058,0x0000000089f00000) + Metaspace used 21058K, capacity 21358K, committed 21632K, reserved 1069056K + class space used 1825K, capacity 1914K, committed 1920K, reserved 1048576K +Event: 13215.057 GC heap after +Heap after GC invocations=39933 (full 22): + PSYoungGen total 23040K, used 64K [0x00000000d7200000, 0x00000000da180000, 0x0000000100000000) + eden space 22528K, 0% used [0x00000000d7200000,0x00000000d7200000,0x00000000d8800000) + from space 512K, 12% used [0x00000000da080000,0x00000000da090000,0x00000000da100000) + to space 512K, 0% used [0x00000000da100000,0x00000000da100000,0x00000000da180000) + ParOldGen total 74752K, used 51604K [0x0000000085600000, 0x0000000089f00000, 0x00000000d7200000) + object space 74752K, 69% used [0x0000000085600000,0x0000000088865058,0x0000000089f00000) + Metaspace used 21058K, capacity 21358K, committed 21632K, reserved 1069056K + class space used 1825K, capacity 1914K, committed 1920K, reserved 1048576K +} +Event: 13215.376 GC heap before +{Heap before GC invocations=39934 (full 22): + PSYoungGen total 23040K, used 21577K [0x00000000d7200000, 0x00000000da180000, 0x0000000100000000) + eden space 22528K, 95% used [0x00000000d7200000,0x00000000d87027e0,0x00000000d8800000) + from space 512K, 12% used [0x00000000da080000,0x00000000da090000,0x00000000da100000) + to space 512K, 0% used [0x00000000da100000,0x00000000da100000,0x00000000da180000) + ParOldGen total 74752K, used 51604K [0x0000000085600000, 0x0000000089f00000, 0x00000000d7200000) + object space 74752K, 69% used [0x0000000085600000,0x0000000088865058,0x0000000089f00000) + Metaspace used 21058K, capacity 21358K, committed 21632K, reserved 1069056K + class space used 1825K, capacity 1914K, committed 1920K, reserved 1048576K +Event: 13215.377 GC heap after +Heap after GC invocations=39934 (full 22): + PSYoungGen total 23040K, used 128K [0x00000000d7200000, 0x00000000da180000, 0x0000000100000000) + eden space 22528K, 0% used [0x00000000d7200000,0x00000000d7200000,0x00000000d8800000) + from space 512K, 25% used [0x00000000da100000,0x00000000da120000,0x00000000da180000) + to space 512K, 0% used [0x00000000da080000,0x00000000da080000,0x00000000da100000) + ParOldGen total 74752K, used 51620K [0x0000000085600000, 0x0000000089f00000, 0x00000000d7200000) + object space 74752K, 69% used [0x0000000085600000,0x0000000088869058,0x0000000089f00000) + Metaspace used 21058K, capacity 21358K, committed 21632K, reserved 1069056K + class space used 1825K, capacity 1914K, committed 1920K, reserved 1048576K +} + +Deoptimization events (10 events): +Event: 9077.071 Thread 0x00007f556c001000 Uncommon trap: reason=unstable_if action=reinterpret pc=0x00007f55cdfd0ed8 method=org.runite.client.LinkableRSString.method729(BII)I @ 25 +Event: 9089.701 Thread 0x00007f556c001000 Uncommon trap: reason=unstable_if action=reinterpret pc=0x00007f55ce510604 method=org.runite.client.Class145.method2073(Lorg/runite/client/Class3_Sub2;Z)V @ 2339 +Event: 9089.722 Thread 0x00007f556c001000 Uncommon trap: reason=unstable_if action=reinterpret pc=0x00007f55ce4c119c method=org.runite.client.Class145.method2073(Lorg/runite/client/Class3_Sub2;Z)V @ 2339 +Event: 9362.755 Thread 0x00007f556c001000 Uncommon trap: reason=unstable_if action=reinterpret pc=0x00007f55ce38e4fc method=org.runite.client.Class110.method1683(IZIZLorg/runite/client/Class91;IIIII)V @ 195 +Event: 11578.468 Thread 0x00007f556c001000 Uncommon trap: reason=unstable_if action=reinterpret pc=0x00007f55cdc103dc method=org.runite.client.Class163_Sub1.method2211(I)V @ 67 +Event: 12675.849 Thread 0x00007f556c001000 Uncommon trap: reason=unstable_if action=reinterpret pc=0x00007f55cd6ec030 method=org.runite.client.Class20.method907(IIIIILorg/runite/client/GameObject;IJZ)V @ 34 +Event: 12675.885 Thread 0x00007f556c001000 Uncommon trap: reason=unstable_if action=reinterpret pc=0x00007f55ce10da20 method=org.runite.client.Class140_Sub3.method1957(IZLorg/runite/client/SequenceDefinition;IIIIILorg/runite/client/Model;IIII)Lorg/runite/client/Model; @ 670 +Event: 12675.901 Thread 0x00007f556c001000 Uncommon trap: reason=unstable_if action=reinterpret pc=0x00007f55cdf35cd8 method=org.runite.client.Class20.method907(IIIIILorg/runite/client/GameObject;IJZ)V @ 34 +Event: 12677.100 Thread 0x00007f556c001000 Uncommon trap: reason=unstable_if action=reinterpret pc=0x00007f55ce3c5588 method=org.runite.client.Class52.method1165([Lorg/runite/client/Class145;ILorg/runite/client/SequenceDefinition;Lorg/runite/client/SequenceDefinition;IIIIII)Lorg/runite/client/Mode +Event: 12677.100 Thread 0x00007f556c001000 Uncommon trap: reason=unstable_if action=reinterpret pc=0x00007f55cdc6803c method=org.runite.client.Model.method1875(Lorg/runite/client/Class3_Sub17;Lorg/runite/client/AnimationHeader;Lorg/runite/client/AnimationHeader;II[ZZZI[I)V @ 328 + +Classes redefined (0 events): +No events + +Internal exceptions (10 events): +Event: 8854.849 Thread 0x00007f556c001000 Implicit null exception at 0x00007f55ce452661 to 0x00007f55ce45ac5d +Event: 9003.685 Thread 0x00007f556c010800 Exception (0x00000000d81a0748) thrown at [/build/openjdk-8-ElpxQ7/openjdk-8-8u275-b01/src/hotspot/src/share/vm/prims/jni.cpp, line 711] +Event: 9004.727 Thread 0x00007f55dc48b800 Implicit null exception at 0x00007f55cd5e9ffe to 0x00007f55cd5eb329 +Event: 9004.727 Thread 0x00007f55dc48b800 Exception (0x00000000d745f630) thrown at [/build/openjdk-8-ElpxQ7/openjdk-8-8u275-b01/src/hotspot/src/share/vm/prims/jni.cpp, line 711] +Event: 9004.765 Thread 0x00007f55dc48b800 Exception (0x00000000d745ff60) thrown at [/build/openjdk-8-ElpxQ7/openjdk-8-8u275-b01/src/hotspot/src/share/vm/prims/jni.cpp, line 711] +Event: 9089.701 Thread 0x00007f556c001000 Implicit null exception at 0x00007f55ce505d85 to 0x00007f55ce5105e5 +Event: 9089.722 Thread 0x00007f556c001000 Implicit null exception at 0x00007f55ce4b7fed to 0x00007f55ce4c1191 +Event: 9321.599 Thread 0x00007f556c008800 Exception (0x00000000d85b7958) thrown at [/build/openjdk-8-ElpxQ7/openjdk-8-8u275-b01/src/hotspot/src/share/vm/prims/jni.cpp, line 711] +Event: 9322.643 Thread 0x00007f55dc48b800 Exception (0x00000000d78790f8) thrown at [/build/openjdk-8-ElpxQ7/openjdk-8-8u275-b01/src/hotspot/src/share/vm/prims/jni.cpp, line 711] +Event: 9322.680 Thread 0x00007f55dc48b800 Exception (0x00000000d7879a28) thrown at [/build/openjdk-8-ElpxQ7/openjdk-8-8u275-b01/src/hotspot/src/share/vm/prims/jni.cpp, line 711] + +Events (10 events): +Event: 13214.142 Executing VM operation: ParallelGCFailedAllocation +Event: 13214.143 Executing VM operation: ParallelGCFailedAllocation done +Event: 13214.415 Executing VM operation: ParallelGCFailedAllocation +Event: 13214.418 Executing VM operation: ParallelGCFailedAllocation done +Event: 13214.695 Executing VM operation: ParallelGCFailedAllocation +Event: 13214.696 Executing VM operation: ParallelGCFailedAllocation done +Event: 13215.055 Executing VM operation: ParallelGCFailedAllocation +Event: 13215.057 Executing VM operation: ParallelGCFailedAllocation done +Event: 13215.376 Executing VM operation: ParallelGCFailedAllocation +Event: 13215.377 Executing VM operation: ParallelGCFailedAllocation done + + +Dynamic libraries: +85600000-89f00000 rw-p 00000000 00:00 0 +89f00000-d7200000 ---p 00000000 00:00 0 +d7200000-da180000 rw-p 00000000 00:00 0 +da180000-100000000 ---p 00000000 00:00 0 +100000000-1001e0000 rw-p 00000000 00:00 0 +1001e0000-140000000 ---p 00000000 00:00 0 +55a7d472c000-55a7d472d000 r-xp 00000000 08:06 13375076 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java +55a7d492c000-55a7d492d000 r--p 00000000 08:06 13375076 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java +55a7d492d000-55a7d492e000 rw-p 00001000 08:06 13375076 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java +55a7d4d24000-55a7d4d45000 rw-p 00000000 00:00 0 [heap] +7f552c000000-7f552c021000 rw-p 00000000 00:00 0 +7f552c021000-7f5530000000 ---p 00000000 00:00 0 +7f5530000000-7f5530021000 rw-p 00000000 00:00 0 +7f5530021000-7f5534000000 ---p 00000000 00:00 0 +7f5534000000-7f5534021000 rw-p 00000000 00:00 0 +7f5534021000-7f5538000000 ---p 00000000 00:00 0 +7f5538000000-7f5538032000 rw-p 00000000 00:00 0 +7f5538032000-7f553c000000 ---p 00000000 00:00 0 +7f5540000000-7f5544000000 rw-s 00000000 00:01 111831 /memfd:pulseaudio (deleted) +7f5544000000-7f5548000000 rw-s 00000000 00:01 50104 /memfd:pulseaudio (deleted) +7f5548000000-7f554c000000 rw-s 00000000 00:01 109480 /memfd:pulseaudio (deleted) +7f554c000000-7f5550000000 rw-s 00000000 00:01 109480 /memfd:pulseaudio (deleted) +7f5550000000-7f5550021000 rw-p 00000000 00:00 0 +7f5550021000-7f5554000000 ---p 00000000 00:00 0 +7f55575f8000-7f55575f9000 ---p 00000000 00:00 0 +7f55575f9000-7f5557df9000 rw-p 00000000 00:00 0 +7f555b6eb000-7f555b82b000 rw-p 00000000 00:00 0 +7f555b82b000-7f555b8eb000 ---p 00000000 00:00 0 +7f555b8eb000-7f555b8ee000 ---p 00000000 00:00 0 +7f555b8ee000-7f555bbec000 rw-p 00000000 00:00 0 +7f555bbec000-7f555bbf8000 r-xp 00000000 08:06 13380751 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/libicedtea-sound.so +7f555bbf8000-7f555bdf7000 ---p 0000c000 08:06 13380751 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/libicedtea-sound.so +7f555bdf7000-7f555bdf8000 r--p 0000b000 08:06 13380751 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/libicedtea-sound.so +7f555bdf8000-7f555bdf9000 rw-p 0000c000 08:06 13380751 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/libicedtea-sound.so +7f555bdf9000-7f555bdff000 r-xp 00000000 08:06 13501817 /usr/lib/x86_64-linux-gnu/alsa-lib/libasound_module_pcm_pulse.so +7f555bdff000-7f555bffe000 ---p 00006000 08:06 13501817 /usr/lib/x86_64-linux-gnu/alsa-lib/libasound_module_pcm_pulse.so +7f555bffe000-7f555bfff000 r--p 00005000 08:06 13501817 /usr/lib/x86_64-linux-gnu/alsa-lib/libasound_module_pcm_pulse.so +7f555bfff000-7f555c000000 rw-p 00006000 08:06 13501817 /usr/lib/x86_64-linux-gnu/alsa-lib/libasound_module_pcm_pulse.so +7f555c000000-7f555c021000 rw-p 00000000 00:00 0 +7f555c021000-7f5560000000 ---p 00000000 00:00 0 +7f5560000000-7f5560021000 rw-p 00000000 00:00 0 +7f5560021000-7f5564000000 ---p 00000000 00:00 0 +7f5564000000-7f5564794000 rw-p 00000000 00:00 0 +7f5564794000-7f5568000000 ---p 00000000 00:00 0 +7f5568000000-7f5568021000 rw-p 00000000 00:00 0 +7f5568021000-7f556c000000 ---p 00000000 00:00 0 +7f556c000000-7f556c021000 rw-p 00000000 00:00 0 +7f556c021000-7f5570000000 ---p 00000000 00:00 0 +7f5570000000-7f557003b000 rw-p 00000000 00:00 0 +7f557003b000-7f5574000000 ---p 00000000 00:00 0 +7f5574087000-7f55741ff000 rw-s 00000000 00:01 589851 /SYSV00000000 (deleted) +7f55741ff000-7f5574216000 r-xp 00000000 08:06 11802674 /lib/x86_64-linux-gnu/libresolv-2.27.so +7f5574216000-7f5574415000 ---p 00017000 08:06 11802674 /lib/x86_64-linux-gnu/libresolv-2.27.so +7f5574415000-7f5574416000 r--p 00016000 08:06 11802674 /lib/x86_64-linux-gnu/libresolv-2.27.so +7f5574416000-7f5574417000 rw-p 00017000 08:06 11802674 /lib/x86_64-linux-gnu/libresolv-2.27.so +7f5574417000-7f5574419000 rw-p 00000000 00:00 0 +7f5574419000-7f55744a6000 r-xp 00000000 08:06 13376032 /usr/lib/x86_64-linux-gnu/libvorbisenc.so.2.0.11 +7f55744a6000-7f55746a5000 ---p 0008d000 08:06 13376032 /usr/lib/x86_64-linux-gnu/libvorbisenc.so.2.0.11 +7f55746a5000-7f55746c1000 r--p 0008c000 08:06 13376032 /usr/lib/x86_64-linux-gnu/libvorbisenc.so.2.0.11 +7f55746c1000-7f55746c2000 rw-p 000a8000 08:06 13376032 /usr/lib/x86_64-linux-gnu/libvorbisenc.so.2.0.11 +7f55746c2000-7f55746ec000 r-xp 00000000 08:06 13376030 /usr/lib/x86_64-linux-gnu/libvorbis.so.0.4.8 +7f55746ec000-7f55748eb000 ---p 0002a000 08:06 13376030 /usr/lib/x86_64-linux-gnu/libvorbis.so.0.4.8 +7f55748eb000-7f55748ec000 r--p 00029000 08:06 13376030 /usr/lib/x86_64-linux-gnu/libvorbis.so.0.4.8 +7f55748ec000-7f55748ed000 rw-p 0002a000 08:06 13376030 /usr/lib/x86_64-linux-gnu/libvorbis.so.0.4.8 +7f55748ed000-7f55748f4000 r-xp 00000000 08:06 13375709 /usr/lib/x86_64-linux-gnu/libogg.so.0.8.2 +7f55748f4000-7f5574af4000 ---p 00007000 08:06 13375709 /usr/lib/x86_64-linux-gnu/libogg.so.0.8.2 +7f5574af4000-7f5574af5000 r--p 00007000 08:06 13375709 /usr/lib/x86_64-linux-gnu/libogg.so.0.8.2 +7f5574af5000-7f5574af6000 rw-p 00008000 08:06 13375709 /usr/lib/x86_64-linux-gnu/libogg.so.0.8.2 +7f5574af6000-7f5574b6b000 r-xp 00000000 08:06 13374772 /usr/lib/x86_64-linux-gnu/libFLAC.so.8.3.0 +7f5574b6b000-7f5574d6b000 ---p 00075000 08:06 13374772 /usr/lib/x86_64-linux-gnu/libFLAC.so.8.3.0 +7f5574d6b000-7f5574d6c000 r--p 00075000 08:06 13374772 /usr/lib/x86_64-linux-gnu/libFLAC.so.8.3.0 +7f5574d6c000-7f5574d6d000 rw-p 00076000 08:06 13374772 /usr/lib/x86_64-linux-gnu/libFLAC.so.8.3.0 +7f5574d6d000-7f5574d7c000 r-xp 00000000 08:06 11801675 /lib/x86_64-linux-gnu/libapparmor.so.1.4.2 +7f5574d7c000-7f5574f7b000 ---p 0000f000 08:06 11801675 /lib/x86_64-linux-gnu/libapparmor.so.1.4.2 +7f5574f7b000-7f5574f7c000 r--p 0000e000 08:06 11801675 /lib/x86_64-linux-gnu/libapparmor.so.1.4.2 +7f5574f7c000-7f5574f7d000 rw-p 0000f000 08:06 11801675 /lib/x86_64-linux-gnu/libapparmor.so.1.4.2 +7f5574f7d000-7f5574f82000 r-xp 00000000 08:06 13374943 /usr/lib/x86_64-linux-gnu/libasyncns.so.0.3.1 +7f5574f82000-7f5575181000 ---p 00005000 08:06 13374943 /usr/lib/x86_64-linux-gnu/libasyncns.so.0.3.1 +7f5575181000-7f5575182000 r--p 00004000 08:06 13374943 /usr/lib/x86_64-linux-gnu/libasyncns.so.0.3.1 +7f5575182000-7f5575183000 rw-p 00005000 08:06 13374943 /usr/lib/x86_64-linux-gnu/libasyncns.so.0.3.1 +7f5575183000-7f55751f7000 r-xp 00000000 08:06 13375907 /usr/lib/x86_64-linux-gnu/libsndfile.so.1.0.28 +7f55751f7000-7f55753f6000 ---p 00074000 08:06 13375907 /usr/lib/x86_64-linux-gnu/libsndfile.so.1.0.28 +7f55753f6000-7f55753f9000 r--p 00073000 08:06 13375907 /usr/lib/x86_64-linux-gnu/libsndfile.so.1.0.28 +7f55753f9000-7f55753fa000 rw-p 00076000 08:06 13375907 /usr/lib/x86_64-linux-gnu/libsndfile.so.1.0.28 +7f55753fa000-7f55753fc000 rw-p 00000000 00:00 0 +7f55753fc000-7f5575404000 r-xp 00000000 08:06 11801864 /lib/x86_64-linux-gnu/libwrap.so.0.7.6 +7f5575404000-7f5575604000 ---p 00008000 08:06 11801864 /lib/x86_64-linux-gnu/libwrap.so.0.7.6 +7f5575604000-7f5575605000 r--p 00008000 08:06 11801864 /lib/x86_64-linux-gnu/libwrap.so.0.7.6 +7f5575605000-7f5575606000 rw-p 00009000 08:06 11801864 /lib/x86_64-linux-gnu/libwrap.so.0.7.6 +7f5575606000-7f5575683000 r-xp 00000000 08:06 13501232 /usr/lib/x86_64-linux-gnu/pulseaudio/libpulsecommon-11.1.so +7f5575683000-7f5575882000 ---p 0007d000 08:06 13501232 /usr/lib/x86_64-linux-gnu/pulseaudio/libpulsecommon-11.1.so +7f5575882000-7f5575884000 r--p 0007c000 08:06 13501232 /usr/lib/x86_64-linux-gnu/pulseaudio/libpulsecommon-11.1.so +7f5575884000-7f5575885000 rw-p 0007e000 08:06 13501232 /usr/lib/x86_64-linux-gnu/pulseaudio/libpulsecommon-11.1.so +7f5575885000-7f55758d3000 r-xp 00000000 08:06 13372284 /usr/lib/x86_64-linux-gnu/libpulse.so.0.20.2 +7f55758d3000-7f5575ad2000 ---p 0004e000 08:06 13372284 /usr/lib/x86_64-linux-gnu/libpulse.so.0.20.2 +7f5575ad2000-7f5575ad4000 r--p 0004d000 08:06 13372284 /usr/lib/x86_64-linux-gnu/libpulse.so.0.20.2 +7f5575ad4000-7f5575ad5000 rw-p 0004f000 08:06 13372284 /usr/lib/x86_64-linux-gnu/libpulse.so.0.20.2 +7f5575ad5000-7f5575ad8000 ---p 00000000 00:00 0 +7f5575ad8000-7f5575bd6000 rw-p 00000000 00:00 0 +7f5575bd6000-7f5575bd9000 ---p 00000000 00:00 0 +7f5575bd9000-7f5575cd7000 rw-p 00000000 00:00 0 +7f5575cd7000-7f5575dd6000 r-xp 00000000 08:06 13374935 /usr/lib/x86_64-linux-gnu/libasound.so.2.0.0 +7f5575dd6000-7f5575fd6000 ---p 000ff000 08:06 13374935 /usr/lib/x86_64-linux-gnu/libasound.so.2.0.0 +7f5575fd6000-7f5575fdd000 r--p 000ff000 08:06 13374935 /usr/lib/x86_64-linux-gnu/libasound.so.2.0.0 +7f5575fdd000-7f5575fde000 rw-p 00106000 08:06 13374935 /usr/lib/x86_64-linux-gnu/libasound.so.2.0.0 +7f5576065000-7f5576074000 r-xp 00000000 08:06 13380752 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/libjsoundalsa.so +7f5576074000-7f5576273000 ---p 0000f000 08:06 13380752 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/libjsoundalsa.so +7f5576273000-7f5576274000 r--p 0000e000 08:06 13380752 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/libjsoundalsa.so +7f5576274000-7f5576275000 rw-p 0000f000 08:06 13380752 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/libjsoundalsa.so +7f5576275000-7f557627c000 r--s 00000000 08:06 17040393 /var/cache/fontconfig/f4ffd49aa80a0ccc205b41ea829259d4-le64.cache-7 +7f557627c000-7f5576283000 r--s 00000000 08:06 17039428 /var/cache/fontconfig/4be9850f182b35c1350b6bbf2e42601c-le64.cache-7 +7f5576283000-7f5576285000 r--s 00000000 08:06 17040391 /var/cache/fontconfig/6f2223e5edf04fbe83e635cfdbc9e8e3-le64.cache-7 +7f5576285000-7f5576290000 r--s 00000000 08:06 17040390 /var/cache/fontconfig/feb3b6ac46fa77cc6301a5ed3a5b0e40-le64.cache-7 +7f5576290000-7f5576295000 r--s 00000000 08:06 17040389 /var/cache/fontconfig/a5aa37d70fce65bda8b671f2e718c575-le64.cache-7 +7f5576295000-7f5576299000 r--s 00000000 08:06 17040388 /var/cache/fontconfig/528cfaa298957e7f374bef939e1d9f6c-le64.cache-7 +7f5576299000-7f557629b000 r--s 00000000 08:06 17040386 /var/cache/fontconfig/4f799d4f62cbdb7117d96620a361af99-le64.cache-7 +7f557629b000-7f557629f000 r--s 00000000 08:06 17040385 /var/cache/fontconfig/8e44b5c2eaa2fdadfe5c6fe9a38b7f2b-le64.cache-7 +7f557629f000-7f55762a2000 r--s 00000000 08:06 17040384 /var/cache/fontconfig/c355ee2b09f937783b5336cddb29f5df-le64.cache-7 +7f55762a2000-7f55762a8000 r--s 00000000 08:06 17040381 /var/cache/fontconfig/70119ed9faf785a7d1728c848ab99deb-le64.cache-7 +7f55762a8000-7f55762f4000 r--s 00000000 08:06 17040380 /var/cache/fontconfig/ff3b5010a9fba1773c8f88a6b255f56f-le64.cache-7 +7f557634d000-7f5576350000 ---p 00000000 00:00 0 +7f5576350000-7f557644e000 rw-p 00000000 00:00 0 +7f557644e000-7f5576450000 r--s 00011000 08:06 10093548 /home/ceik/.gradle/caches/modules-2/files-2.1/org.hamcrest/hamcrest-core/1.1/860340562250678d1a344907ac75754e259cdb14/hamcrest-core-1.1.jar +7f5576450000-7f5576452000 r--s 00003000 08:06 10093084 /home/ceik/.gradle/caches/modules-2/files-2.1/org.jetbrains/annotations/13.0/919f0dfe192fb4e063e7dacadee7f8bb9a2672a9/annotations-13.0.jar +7f5576452000-7f557645a000 r--s 00027000 08:06 10093082 /home/ceik/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-common/1.4.10/6229be3465805c99db1142ad75e6c6ddeac0b04c/kotlin-stdlib-common-1.4.10.jar +7f557645a000-7f5576461000 r--s 00037000 08:06 10093550 /home/ceik/.gradle/caches/modules-2/files-2.1/junit/junit/4.10/e4f1766ce7404a08f45d859fb9c226fc9e41a861/junit-4.10.jar +7f5576461000-7f5576468000 r--s 00000000 08:06 13506147 /usr/lib/x86_64-linux-gnu/gconv/gconv-modules.cache +7f5576468000-7f5576469000 r-xp 00000000 08:06 13380592 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/libjsound.so +7f5576469000-7f5576668000 ---p 00001000 08:06 13380592 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/libjsound.so +7f5576668000-7f5576669000 r--p 00000000 08:06 13380592 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/libjsound.so +7f5576669000-7f557666a000 rw-p 00001000 08:06 13380592 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/libjsound.so +7f557666a000-7f557666d000 ---p 00000000 00:00 0 +7f557666d000-7f557696b000 rw-p 00000000 00:00 0 +7f557696b000-7f557696e000 ---p 00000000 00:00 0 +7f557696e000-7f5576a6c000 rw-p 00000000 00:00 0 +7f5576a6c000-7f5576a6d000 ---p 00000000 00:00 0 +7f5576a6d000-7f557726d000 rw-p 00000000 00:00 0 +7f557726d000-7f557729e000 r-xp 00000000 08:06 9701439 /home/ceik/.discord-rpc/libdiscord-rpc.so +7f557729e000-7f557749d000 ---p 00031000 08:06 9701439 /home/ceik/.discord-rpc/libdiscord-rpc.so +7f557749d000-7f557749e000 r--p 00030000 08:06 9701439 /home/ceik/.discord-rpc/libdiscord-rpc.so +7f557749e000-7f55774a0000 rw-p 00031000 08:06 9701439 /home/ceik/.discord-rpc/libdiscord-rpc.so +7f55774a0000-7f55774d6000 rw-p 00000000 00:00 0 +7f55774d6000-7f55774ee000 r-xp 00000000 08:06 19142392 /tmp/jna-3049732/jna346119487822175448.tmp (deleted) +7f55774ee000-7f55776ee000 ---p 00018000 08:06 19142392 /tmp/jna-3049732/jna346119487822175448.tmp (deleted) +7f55776ee000-7f55776ef000 rw-p 00018000 08:06 19142392 /tmp/jna-3049732/jna346119487822175448.tmp (deleted) +7f55776ef000-7f55776f2000 ---p 00000000 00:00 0 +7f55776f2000-7f55779f0000 rw-p 00000000 00:00 0 +7f55779f0000-7f55779f3000 ---p 00000000 00:00 0 +7f55779f3000-7f5577af1000 rw-p 00000000 00:00 0 +7f5577af1000-7f5577af4000 ---p 00000000 00:00 0 +7f5577af4000-7f5577bf2000 rw-p 00000000 00:00 0 +7f5577bf2000-7f5577bf4000 r-xp 00000000 08:06 13374855 /usr/lib/x86_64-linux-gnu/libXcomposite.so.1.0.0 +7f5577bf4000-7f5577df3000 ---p 00002000 08:06 13374855 /usr/lib/x86_64-linux-gnu/libXcomposite.so.1.0.0 +7f5577df3000-7f5577df4000 r--p 00001000 08:06 13374855 /usr/lib/x86_64-linux-gnu/libXcomposite.so.1.0.0 +7f5577df4000-7f5577df5000 rw-p 00002000 08:06 13374855 /usr/lib/x86_64-linux-gnu/libXcomposite.so.1.0.0 +7f5577df5000-7f5577dff000 r-xp 00000000 08:06 13374881 /usr/lib/x86_64-linux-gnu/libXrandr.so.2.2.0 +7f5577dff000-7f5577ffe000 ---p 0000a000 08:06 13374881 /usr/lib/x86_64-linux-gnu/libXrandr.so.2.2.0 +7f5577ffe000-7f5577fff000 r--p 00009000 08:06 13374881 /usr/lib/x86_64-linux-gnu/libXrandr.so.2.2.0 +7f5577fff000-7f5578000000 rw-p 0000a000 08:06 13374881 /usr/lib/x86_64-linux-gnu/libXrandr.so.2.2.0 +7f5578000000-7f5578021000 rw-p 00000000 00:00 0 +7f5578021000-7f557c000000 ---p 00000000 00:00 0 +7f557c000000-7f557c021000 rw-p 00000000 00:00 0 +7f557c021000-7f5580000000 ---p 00000000 00:00 0 +7f5580000000-7f5580021000 rw-p 00000000 00:00 0 +7f5580021000-7f5584000000 ---p 00000000 00:00 0 +7f5584000000-7f5584021000 rw-p 00000000 00:00 0 +7f5584021000-7f5588000000 ---p 00000000 00:00 0 +7f5588000000-7f5588021000 rw-p 00000000 00:00 0 +7f5588021000-7f558c000000 ---p 00000000 00:00 0 +7f558c000000-7f558c021000 rw-p 00000000 00:00 0 +7f558c021000-7f5590000000 ---p 00000000 00:00 0 +7f5590000000-7f5590002000 r--s 00000000 08:06 17040383 /var/cache/fontconfig/511690a04b25677670627778fd28e538-le64.cache-7 +7f5590002000-7f5590003000 r--s 00000000 08:06 17040382 /var/cache/fontconfig/39d58c487a2b698a485cbc3338412786-le64.cache-7 +7f5590003000-7f5590004000 r--s 00000000 08:06 17040379 /var/cache/fontconfig/5dc337c4d6f7e377db915cf8b2f8f360-le64.cache-7 +7f5590004000-7f5590005000 r--s 00000000 08:06 17040378 /var/cache/fontconfig/8a486f81e4c235da4683bbadeaf36764-le64.cache-7 +7f5590005000-7f559000b000 r--s 00000000 08:06 17040377 /var/cache/fontconfig/f0dcabaa770e5892e8b1bf50caa4d718-le64.cache-7 +7f559000b000-7f559000c000 r--s 00000000 08:06 17040376 /var/cache/fontconfig/657346adeb7ee6e1e270022ed45f3b3c-le64.cache-7 +7f559000c000-7f5590012000 r--s 00000000 08:06 17040375 /var/cache/fontconfig/e590d564dbbcb1616f18ec41673142ab-le64.cache-7 +7f5590012000-7f5590013000 r--s 00000000 08:06 17040374 /var/cache/fontconfig/f7fa73f2099ae251bc77fd626f3e0174-le64.cache-7 +7f5590013000-7f5590014000 r--s 00000000 08:06 17040373 /var/cache/fontconfig/8ad0cd72269f17dffdedb6f2e355311b-le64.cache-7 +7f5590014000-7f5590015000 r--s 00000000 08:06 17040372 /var/cache/fontconfig/470613ecaf9186df9d7a2dd5f528a5aa-le64.cache-7 +7f5590015000-7f5590021000 r--s 00000000 08:06 17040371 /var/cache/fontconfig/9b3861222e9b48ce410e7512f19354df-le64.cache-7 +7f5590021000-7f5590023000 r--s 00000000 08:06 17040370 /var/cache/fontconfig/9632cce8d60b9d317fc261cafebbed09-le64.cache-7 +7f5590023000-7f5590028000 r--s 00000000 08:06 17040369 /var/cache/fontconfig/692aa46cdcb6f2010e72f7715c416726-le64.cache-7 +7f5590028000-7f559002a000 r--s 00000000 08:06 17040368 /var/cache/fontconfig/980323017da4c4d21c1825b16079d14c-le64.cache-7 +7f559002a000-7f5590037000 r--s 00000000 08:06 17040367 /var/cache/fontconfig/a574ef10a92e55f10a01bdbd966a646e-le64.cache-7 +7f5590037000-7f559003b000 r--s 00000000 08:06 17040366 /var/cache/fontconfig/1c8b083178c302b675902d1cdee2872f-le64.cache-7 +7f559003b000-7f559004a000 r--s 00000000 08:06 17040365 /var/cache/fontconfig/d84f04e9645d87563cfd5ec96e42391e-le64.cache-7 +7f559004a000-7f559004d000 r--s 00000000 08:06 17040364 /var/cache/fontconfig/4649881a9652ae0880079bb74c0cb52b-le64.cache-7 +7f559004d000-7f5590050000 r--s 00000000 08:06 17040355 /var/cache/fontconfig/0b60c6307ef26009fb0aa79daf86e3af-le64.cache-7 +7f5590050000-7f5590052000 r--s 00000000 08:06 17039426 /var/cache/fontconfig/3bd6a00a1059ca9725da3f0d7afa935d-le64.cache-7 +7f5590052000-7f559005d000 r--s 00000000 08:06 17039440 /var/cache/fontconfig/945677eb7aeaf62f1d50efc3fb3ec7d8-le64.cache-7 +7f559005d000-7f5590062000 r--s 00000000 08:06 17039422 /var/cache/fontconfig/2300eef321c393bfd76478a5c0e95b23-le64.cache-7 +7f5590062000-7f5590066000 r--s 00000000 08:06 17039459 /var/cache/fontconfig/f0b0891f3a988e97b2aa7c076a1430f3-le64.cache-7 +7f5590066000-7f5590068000 r--s 00000000 08:06 17039435 /var/cache/fontconfig/6adb16404e170b9523f41c0701dd4690-le64.cache-7 +7f5590068000-7f559006c000 r--s 00000000 08:06 17039438 /var/cache/fontconfig/7b79abe4499501fcd4e4826394083a53-le64.cache-7 +7f559006c000-7f559006f000 r--s 00000000 08:06 17039425 /var/cache/fontconfig/3a9914ff62a69b32234685a84fdc926d-le64.cache-7 +7f559006f000-7f5590071000 r--s 00000000 08:06 17039437 /var/cache/fontconfig/767a8244fc0220cfb567a839d0392e0b-le64.cache-7 +7f5590071000-7f5590072000 r--s 00000000 08:06 17039418 /var/cache/fontconfig/0b41ebd278d9388cf5d83f81d476c672-le64.cache-7 +7f5590072000-7f5590077000 r--s 00000000 08:06 17039449 /var/cache/fontconfig/bbd3eebb6912613e2596f2fd46535a95-le64.cache-7 +7f5590077000-7f55900c3000 r--s 00000000 08:06 17039419 /var/cache/fontconfig/0bd3dc0958fa2205aaaa8ebb13e2872b-le64.cache-7 +7f55900c3000-7f55900c4000 r--s 00000000 08:06 17039444 /var/cache/fontconfig/b036df7bbb72844893df6bcf5570ea7f-le64.cache-7 +7f55900c4000-7f55900c5000 r--s 00000000 08:06 17039431 /var/cache/fontconfig/575107dd7452b4b2b2b1361909925bb4-le64.cache-7 +7f55900c5000-7f55900cb000 r--s 00000000 08:06 17053813 /var/cache/fontconfig/3047814df9a2f067bd2d96a2b9c36e5a-le64.cache-7 +7f55900cb000-7f55902cb000 rw-p 00000000 00:00 0 +7f55902cb000-7f55902ce000 ---p 00000000 00:00 0 +7f55902ce000-7f55903cc000 rw-p 00000000 00:00 0 +7f55903cc000-7f55903cf000 ---p 00000000 00:00 0 +7f55903cf000-7f55904cd000 rw-p 00000000 00:00 0 +7f55904cd000-7f55904ce000 ---p 00000000 00:00 0 +7f55904ce000-7f55904d1000 ---p 00000000 00:00 0 +7f55904d1000-7f5590cce000 rw-p 00000000 00:00 0 +7f5590cce000-7f5590cd7000 r-xp 00000000 08:06 13380593 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/libmanagement.so +7f5590cd7000-7f5590ed6000 ---p 00009000 08:06 13380593 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/libmanagement.so +7f5590ed6000-7f5590ed7000 r--p 00008000 08:06 13380593 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/libmanagement.so +7f5590ed7000-7f5590ed8000 rw-p 00009000 08:06 13380593 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/libmanagement.so +7f5590ed8000-7f5590eec000 r-xp 00000000 08:06 11801734 /lib/x86_64-linux-gnu/libgpg-error.so.0.22.0 +7f5590eec000-7f55910eb000 ---p 00014000 08:06 11801734 /lib/x86_64-linux-gnu/libgpg-error.so.0.22.0 +7f55910eb000-7f55910ec000 r--p 00013000 08:06 11801734 /lib/x86_64-linux-gnu/libgpg-error.so.0.22.0 +7f55910ec000-7f55910ed000 rw-p 00014000 08:06 11801734 /lib/x86_64-linux-gnu/libgpg-error.so.0.22.0 +7f55910ed000-7f5591201000 r-xp 00000000 08:06 11801732 /lib/x86_64-linux-gnu/libgcrypt.so.20.2.1 +7f5591201000-7f5591401000 ---p 00114000 08:06 11801732 /lib/x86_64-linux-gnu/libgcrypt.so.20.2.1 +7f5591401000-7f5591403000 r--p 00114000 08:06 11801732 /lib/x86_64-linux-gnu/libgcrypt.so.20.2.1 +7f5591403000-7f5591408000 rw-p 00116000 08:06 11801732 /lib/x86_64-linux-gnu/libgcrypt.so.20.2.1 +7f5591408000-7f5591409000 rw-p 00000000 00:00 0 +7f5591409000-7f5591424000 r-xp 00000000 08:06 13375612 /usr/lib/x86_64-linux-gnu/liblz4.so.1.7.1 +7f5591424000-7f5591623000 ---p 0001b000 08:06 13375612 /usr/lib/x86_64-linux-gnu/liblz4.so.1.7.1 +7f5591623000-7f5591624000 r--p 0001a000 08:06 13375612 /usr/lib/x86_64-linux-gnu/liblz4.so.1.7.1 +7f5591624000-7f5591625000 rw-p 0001b000 08:06 13375612 /usr/lib/x86_64-linux-gnu/liblz4.so.1.7.1 +7f5591625000-7f5591649000 r-xp 00000000 08:06 11801753 /lib/x86_64-linux-gnu/liblzma.so.5.2.2 +7f5591649000-7f5591849000 ---p 00024000 08:06 11801753 /lib/x86_64-linux-gnu/liblzma.so.5.2.2 +7f5591849000-7f559184a000 r--p 00024000 08:06 11801753 /lib/x86_64-linux-gnu/liblzma.so.5.2.2 +7f559184a000-7f559184b000 rw-p 00025000 08:06 11801753 /lib/x86_64-linux-gnu/liblzma.so.5.2.2 +7f559184b000-7f55918cb000 r-xp 00000000 08:06 11798768 /lib/x86_64-linux-gnu/libsystemd.so.0.21.0 +7f55918cb000-7f5591aca000 ---p 00080000 08:06 11798768 /lib/x86_64-linux-gnu/libsystemd.so.0.21.0 +7f5591aca000-7f5591acd000 r--p 0007f000 08:06 11798768 /lib/x86_64-linux-gnu/libsystemd.so.0.21.0 +7f5591acd000-7f5591ace000 rw-p 00082000 08:06 11798768 /lib/x86_64-linux-gnu/libsystemd.so.0.21.0 +7f5591ace000-7f5591acf000 rw-p 00000000 00:00 0 +7f5591acf000-7f5591b3f000 r-xp 00000000 08:06 11801814 /lib/x86_64-linux-gnu/libpcre.so.3.13.3 +7f5591b3f000-7f5591d3f000 ---p 00070000 08:06 11801814 /lib/x86_64-linux-gnu/libpcre.so.3.13.3 +7f5591d3f000-7f5591d40000 r--p 00070000 08:06 11801814 /lib/x86_64-linux-gnu/libpcre.so.3.13.3 +7f5591d40000-7f5591d41000 rw-p 00071000 08:06 11801814 /lib/x86_64-linux-gnu/libpcre.so.3.13.3 +7f5591d41000-7f5591d48000 r-xp 00000000 08:06 13375198 /usr/lib/x86_64-linux-gnu/libffi.so.6.0.4 +7f5591d48000-7f5591f47000 ---p 00007000 08:06 13375198 /usr/lib/x86_64-linux-gnu/libffi.so.6.0.4 +7f5591f47000-7f5591f48000 r--p 00006000 08:06 13375198 /usr/lib/x86_64-linux-gnu/libffi.so.6.0.4 +7f5591f48000-7f5591f49000 rw-p 00007000 08:06 13375198 /usr/lib/x86_64-linux-gnu/libffi.so.6.0.4 +7f5591f49000-7f5591f75000 r-xp 00000000 08:06 13374951 /usr/lib/x86_64-linux-gnu/libatspi.so.0.0.1 +7f5591f75000-7f5592175000 ---p 0002c000 08:06 13374951 /usr/lib/x86_64-linux-gnu/libatspi.so.0.0.1 +7f5592175000-7f5592178000 r--p 0002c000 08:06 13374951 /usr/lib/x86_64-linux-gnu/libatspi.so.0.0.1 +7f5592178000-7f5592179000 rw-p 0002f000 08:06 13374951 /usr/lib/x86_64-linux-gnu/libatspi.so.0.0.1 +7f5592179000-7f55921c4000 r-xp 00000000 08:06 11801708 /lib/x86_64-linux-gnu/libdbus-1.so.3.19.4 +7f55921c4000-7f55923c4000 ---p 0004b000 08:06 11801708 /lib/x86_64-linux-gnu/libdbus-1.so.3.19.4 +7f55923c4000-7f55923c5000 r--p 0004b000 08:06 11801708 /lib/x86_64-linux-gnu/libdbus-1.so.3.19.4 +7f55923c5000-7f55923c6000 rw-p 0004c000 08:06 11801708 /lib/x86_64-linux-gnu/libdbus-1.so.3.19.4 +7f55923c6000-7f55924da000 r-xp 00000000 08:06 13375330 /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.5600.4 +7f55924da000-7f55926da000 ---p 00114000 08:06 13375330 /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.5600.4 +7f55926da000-7f55926db000 r--p 00114000 08:06 13375330 /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.5600.4 +7f55926db000-7f55926dc000 rw-p 00115000 08:06 13375330 /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.5600.4 +7f55926dc000-7f55926dd000 rw-p 00000000 00:00 0 +7f55926dd000-7f559272f000 r-xp 00000000 08:06 13375358 /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.5600.4 +7f559272f000-7f559292f000 ---p 00052000 08:06 13375358 /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.5600.4 +7f559292f000-7f5592930000 r--p 00052000 08:06 13375358 /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.5600.4 +7f5592930000-7f5592931000 rw-p 00053000 08:06 13375358 /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.5600.4 +7f5592931000-7f559295f000 r-xp 00000000 08:06 13374947 /usr/lib/x86_64-linux-gnu/libatk-bridge-2.0.so.0.0.0 +7f559295f000-7f5592b5f000 ---p 0002e000 08:06 13374947 /usr/lib/x86_64-linux-gnu/libatk-bridge-2.0.so.0.0.0 +7f5592b5f000-7f5592b60000 r--p 0002e000 08:06 13374947 /usr/lib/x86_64-linux-gnu/libatk-bridge-2.0.so.0.0.0 +7f5592b60000-7f5592b61000 rw-p 0002f000 08:06 13374947 /usr/lib/x86_64-linux-gnu/libatk-bridge-2.0.so.0.0.0 +7f5592b61000-7f5592b62000 rw-p 00000000 00:00 0 +7f5592b62000-7f5592b84000 r-xp 00000000 08:06 13374945 /usr/lib/x86_64-linux-gnu/libatk-1.0.so.0.22810.1 +7f5592b84000-7f5592d84000 ---p 00022000 08:06 13374945 /usr/lib/x86_64-linux-gnu/libatk-1.0.so.0.22810.1 +7f5592d84000-7f5592d87000 r--p 00022000 08:06 13374945 /usr/lib/x86_64-linux-gnu/libatk-1.0.so.0.22810.1 +7f5592d87000-7f5592d88000 rw-p 00025000 08:06 13374945 /usr/lib/x86_64-linux-gnu/libatk-1.0.so.0.22810.1 +7f5592d88000-7f5592d9f000 r-xp 00000000 08:06 13506617 /usr/lib/x86_64-linux-gnu/jni/libatk-wrapper.so.6.0.0 +7f5592d9f000-7f5592f9f000 ---p 00017000 08:06 13506617 /usr/lib/x86_64-linux-gnu/jni/libatk-wrapper.so.6.0.0 +7f5592f9f000-7f5592fa0000 r--p 00017000 08:06 13506617 /usr/lib/x86_64-linux-gnu/jni/libatk-wrapper.so.6.0.0 +7f5592fa0000-7f5592fa1000 rw-p 00018000 08:06 13506617 /usr/lib/x86_64-linux-gnu/jni/libatk-wrapper.so.6.0.0 +7f5592fa1000-7f55931a1000 rw-p 00000000 00:00 0 +7f55931a1000-7f55931a4000 ---p 00000000 00:00 0 +7f55931a4000-7f55932a2000 rw-p 00000000 00:00 0 +7f55932a2000-7f55932a7000 r-xp 00000000 08:06 13374865 /usr/lib/x86_64-linux-gnu/libXfixes.so.3.1.0 +7f55932a7000-7f55934a6000 ---p 00005000 08:06 13374865 /usr/lib/x86_64-linux-gnu/libXfixes.so.3.1.0 +7f55934a6000-7f55934a7000 r--p 00004000 08:06 13374865 /usr/lib/x86_64-linux-gnu/libXfixes.so.3.1.0 +7f55934a7000-7f55934a8000 rw-p 00005000 08:06 13374865 /usr/lib/x86_64-linux-gnu/libXfixes.so.3.1.0 +7f55934a8000-7f55934b1000 r-xp 00000000 08:06 13374857 /usr/lib/x86_64-linux-gnu/libXcursor.so.1.0.2 +7f55934b1000-7f55936b0000 ---p 00009000 08:06 13374857 /usr/lib/x86_64-linux-gnu/libXcursor.so.1.0.2 +7f55936b0000-7f55936b1000 r--p 00008000 08:06 13374857 /usr/lib/x86_64-linux-gnu/libXcursor.so.1.0.2 +7f55936b1000-7f55936b2000 rw-p 00009000 08:06 13374857 /usr/lib/x86_64-linux-gnu/libXcursor.so.1.0.2 +7f55936b2000-7f55936e3000 r-xp 00000000 08:06 13375792 /usr/lib/x86_64-linux-gnu/libpng16.so.16.34.0 +7f55936e3000-7f55938e2000 ---p 00031000 08:06 13375792 /usr/lib/x86_64-linux-gnu/libpng16.so.16.34.0 +7f55938e2000-7f55938e3000 r--p 00030000 08:06 13375792 /usr/lib/x86_64-linux-gnu/libpng16.so.16.34.0 +7f55938e3000-7f55938e4000 rw-p 00031000 08:06 13375792 /usr/lib/x86_64-linux-gnu/libpng16.so.16.34.0 +7f55938e4000-7f5593991000 r-xp 00000000 08:06 13379440 /usr/lib/x86_64-linux-gnu/libfreetype.so.6.15.0 +7f5593991000-7f5593b90000 ---p 000ad000 08:06 13379440 /usr/lib/x86_64-linux-gnu/libfreetype.so.6.15.0 +7f5593b90000-7f5593b97000 r--p 000ac000 08:06 13379440 /usr/lib/x86_64-linux-gnu/libfreetype.so.6.15.0 +7f5593b97000-7f5593b98000 rw-p 000b3000 08:06 13379440 /usr/lib/x86_64-linux-gnu/libfreetype.so.6.15.0 +7f5593b98000-7f5593be8000 r-xp 00000000 08:06 13375786 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/libfontmanager.so +7f5593be8000-7f5593de8000 ---p 00050000 08:06 13375786 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/libfontmanager.so +7f5593de8000-7f5593dea000 r--p 00050000 08:06 13375786 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/libfontmanager.so +7f5593dea000-7f5593deb000 rw-p 00052000 08:06 13375786 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/libfontmanager.so +7f5593deb000-7f5593dfe000 r-xp 00000000 08:06 11801689 /lib/x86_64-linux-gnu/libbsd.so.0.8.7 +7f5593dfe000-7f5593ffd000 ---p 00013000 08:06 11801689 /lib/x86_64-linux-gnu/libbsd.so.0.8.7 +7f5593ffd000-7f5593ffe000 r--p 00012000 08:06 11801689 /lib/x86_64-linux-gnu/libbsd.so.0.8.7 +7f5593ffe000-7f5593fff000 rw-p 00013000 08:06 11801689 /lib/x86_64-linux-gnu/libbsd.so.0.8.7 +7f5593fff000-7f5594000000 rw-p 00000000 00:00 0 +7f5594000000-7f5595203000 rw-p 00000000 00:00 0 +7f5595203000-7f5598000000 ---p 00000000 00:00 0 +7f5598000000-7f5598021000 rw-p 00000000 00:00 0 +7f5598021000-7f559c000000 ---p 00000000 00:00 0 +7f559c000000-7f559e4eb000 rw-p 00000000 00:00 0 +7f559e4eb000-7f55a0000000 ---p 00000000 00:00 0 +7f55a0000000-7f55a2c9e000 rw-p 00000000 00:00 0 +7f55a2c9e000-7f55a4000000 ---p 00000000 00:00 0 +7f55a4000000-7f55a4021000 rw-p 00000000 00:00 0 +7f55a4021000-7f55a8000000 ---p 00000000 00:00 0 +7f55a8000000-7f55a8021000 rw-p 00000000 00:00 0 +7f55a8021000-7f55ac000000 ---p 00000000 00:00 0 +7f55ac000000-7f55ac021000 rw-p 00000000 00:00 0 +7f55ac021000-7f55b0000000 ---p 00000000 00:00 0 +7f55b0000000-7f55b0001000 r--s 00000000 08:06 17039448 /var/cache/fontconfig/b9d506c9ac06c20b433354fa67a72993-le64.cache-7 +7f55b0001000-7f55b0007000 r--s 00000000 08:06 17039447 /var/cache/fontconfig/b47c4e1ecd0709278f4910c18777a504-le64.cache-7 +7f55b0007000-7f55b0008000 r--s 00000000 08:06 17039417 /var/cache/fontconfig/0b3f2427388044a01a5738fa4b8cc9d1-le64.cache-7 +7f55b0008000-7f55b0009000 r--s 00000000 08:06 17039416 /var/cache/fontconfig/0941b6d3777f1e64883d36fd6d84a52f-le64.cache-7 +7f55b0009000-7f55b0015000 r--s 00000000 08:06 17040354 /var/cache/fontconfig/d589a48862398ed80a3d6066f4f56f4c-le64.cache-7 +7f55b0015000-7f55b0017000 r--s 00000000 08:06 17039458 /var/cache/fontconfig/e8d703157d3641d20c7e900be2e8d091-le64.cache-7 +7f55b0017000-7f55b001c000 r--s 00000000 08:06 17039445 /var/cache/fontconfig/b25010134a2e462c779c1c1d5ccbff7b-le64.cache-7 +7f55b001c000-7f55b001f000 ---p 00000000 00:00 0 +7f55b001f000-7f55b011d000 rw-p 00000000 00:00 0 +7f55b011d000-7f55b0122000 r-xp 00000000 08:06 13374861 /usr/lib/x86_64-linux-gnu/libXdmcp.so.6.0.0 +7f55b0122000-7f55b0321000 ---p 00005000 08:06 13374861 /usr/lib/x86_64-linux-gnu/libXdmcp.so.6.0.0 +7f55b0321000-7f55b0322000 r--p 00004000 08:06 13374861 /usr/lib/x86_64-linux-gnu/libXdmcp.so.6.0.0 +7f55b0322000-7f55b0323000 rw-p 00005000 08:06 13374861 /usr/lib/x86_64-linux-gnu/libXdmcp.so.6.0.0 +7f55b0323000-7f55b0325000 r-xp 00000000 08:06 13374850 /usr/lib/x86_64-linux-gnu/libXau.so.6.0.0 +7f55b0325000-7f55b0525000 ---p 00002000 08:06 13374850 /usr/lib/x86_64-linux-gnu/libXau.so.6.0.0 +7f55b0525000-7f55b0526000 r--p 00002000 08:06 13374850 /usr/lib/x86_64-linux-gnu/libXau.so.6.0.0 +7f55b0526000-7f55b0527000 rw-p 00003000 08:06 13374850 /usr/lib/x86_64-linux-gnu/libXau.so.6.0.0 +7f55b0527000-7f55b054d000 r-xp 00000000 08:06 13376122 /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0 +7f55b054d000-7f55b074d000 ---p 00026000 08:06 13376122 /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0 +7f55b074d000-7f55b074e000 r--p 00026000 08:06 13376122 /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0 +7f55b074e000-7f55b074f000 rw-p 00027000 08:06 13376122 /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0 +7f55b074f000-7f55b075e000 r-xp 00000000 08:06 13374871 /usr/lib/x86_64-linux-gnu/libXi.so.6.1.0 +7f55b075e000-7f55b095d000 ---p 0000f000 08:06 13374871 /usr/lib/x86_64-linux-gnu/libXi.so.6.1.0 +7f55b095d000-7f55b095e000 r--p 0000e000 08:06 13374871 /usr/lib/x86_64-linux-gnu/libXi.so.6.1.0 +7f55b095e000-7f55b095f000 rw-p 0000f000 08:06 13374871 /usr/lib/x86_64-linux-gnu/libXi.so.6.1.0 +7f55b095f000-7f55b0964000 r-xp 00000000 08:06 13374889 /usr/lib/x86_64-linux-gnu/libXtst.so.6.1.0 +7f55b0964000-7f55b0b63000 ---p 00005000 08:06 13374889 /usr/lib/x86_64-linux-gnu/libXtst.so.6.1.0 +7f55b0b63000-7f55b0b64000 r--p 00004000 08:06 13374889 /usr/lib/x86_64-linux-gnu/libXtst.so.6.1.0 +7f55b0b64000-7f55b0b65000 rw-p 00005000 08:06 13374889 /usr/lib/x86_64-linux-gnu/libXtst.so.6.1.0 +7f55b0b65000-7f55b0b6e000 r-xp 00000000 08:06 13374883 /usr/lib/x86_64-linux-gnu/libXrender.so.1.3.0 +7f55b0b6e000-7f55b0d6d000 ---p 00009000 08:06 13374883 /usr/lib/x86_64-linux-gnu/libXrender.so.1.3.0 +7f55b0d6d000-7f55b0d6e000 r--p 00008000 08:06 13374883 /usr/lib/x86_64-linux-gnu/libXrender.so.1.3.0 +7f55b0d6e000-7f55b0d6f000 rw-p 00009000 08:06 13374883 /usr/lib/x86_64-linux-gnu/libXrender.so.1.3.0 +7f55b0d6f000-7f55b0ea2000 r-xp 00000000 08:06 13369804 /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0 +7f55b0ea2000-7f55b10a2000 ---p 00133000 08:06 13369804 /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0 +7f55b10a2000-7f55b10a3000 r--p 00133000 08:06 13369804 /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0 +7f55b10a3000-7f55b10a7000 rw-p 00134000 08:06 13369804 /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0 +7f55b10a7000-7f55b10b8000 r-xp 00000000 08:06 13374863 /usr/lib/x86_64-linux-gnu/libXext.so.6.4.0 +7f55b10b8000-7f55b12b7000 ---p 00011000 08:06 13374863 /usr/lib/x86_64-linux-gnu/libXext.so.6.4.0 +7f55b12b7000-7f55b12b8000 r--p 00010000 08:06 13374863 /usr/lib/x86_64-linux-gnu/libXext.so.6.4.0 +7f55b12b8000-7f55b12b9000 rw-p 00011000 08:06 13374863 /usr/lib/x86_64-linux-gnu/libXext.so.6.4.0 +7f55b12b9000-7f55b1315000 r-xp 00000000 08:06 13375703 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/libawt_xawt.so +7f55b1315000-7f55b1514000 ---p 0005c000 08:06 13375703 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/libawt_xawt.so +7f55b1514000-7f55b1515000 r--p 0005b000 08:06 13375703 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/libawt_xawt.so +7f55b1515000-7f55b1518000 rw-p 0005c000 08:06 13375703 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/libawt_xawt.so +7f55b1518000-7f55b151a000 rw-p 00000000 00:00 0 +7f55b151a000-7f55b15b9000 r-xp 00000000 08:06 13375652 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/libawt.so +7f55b15b9000-7f55b17b8000 ---p 0009f000 08:06 13375652 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/libawt.so +7f55b17b8000-7f55b17b9000 r--p 0009e000 08:06 13375652 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/libawt.so +7f55b17b9000-7f55b17c4000 rw-p 0009f000 08:06 13375652 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/libawt.so +7f55b17c4000-7f55b17e9000 rw-p 00000000 00:00 0 +7f55b17e9000-7f55b1801000 r-xp 00000000 08:06 13380595 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/libnet.so +7f55b1801000-7f55b1a00000 ---p 00018000 08:06 13380595 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/libnet.so +7f55b1a00000-7f55b1a01000 r--p 00017000 08:06 13380595 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/libnet.so +7f55b1a01000-7f55b1a02000 rw-p 00018000 08:06 13380595 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/libnet.so +7f55b1a02000-7f55b1a14000 r-xp 00000000 08:06 13380596 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/libnio.so +7f55b1a14000-7f55b1c13000 ---p 00012000 08:06 13380596 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/libnio.so +7f55b1c13000-7f55b1c14000 r--p 00011000 08:06 13380596 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/libnio.so +7f55b1c14000-7f55b1c15000 rw-p 00012000 08:06 13380596 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/libnio.so +7f55b1c15000-7f55b1c16000 ---p 00000000 00:00 0 +7f55b1c16000-7f55b1d16000 rw-p 00000000 00:00 0 +7f55b1d16000-7f55b1d19000 ---p 00000000 00:00 0 +7f55b1d19000-7f55b1e17000 rw-p 00000000 00:00 0 +7f55b1e17000-7f55b1e18000 ---p 00000000 00:00 0 +7f55b1e18000-7f55b1e1b000 ---p 00000000 00:00 0 +7f55b1e1b000-7f55b1f18000 rw-p 00000000 00:00 0 +7f55b1f18000-7f55b1f19000 ---p 00000000 00:00 0 +7f55b1f19000-7f55b1f1c000 ---p 00000000 00:00 0 +7f55b1f1c000-7f55b2019000 rw-p 00000000 00:00 0 +7f55b2019000-7f55b201a000 ---p 00000000 00:00 0 +7f55b201a000-7f55b201d000 ---p 00000000 00:00 0 +7f55b201d000-7f55b211a000 rw-p 00000000 00:00 0 +7f55b211a000-7f55b211d000 ---p 00000000 00:00 0 +7f55b211d000-7f55b221b000 rw-p 00000000 00:00 0 +7f55b221b000-7f55b3dfe000 r--p 00000000 08:06 13378100 /usr/lib/locale/locale-archive +7f55b3dfe000-7f55b3e01000 ---p 00000000 00:00 0 +7f55b3e01000-7f55b3eff000 rw-p 00000000 00:00 0 +7f55b3eff000-7f55b3f02000 ---p 00000000 00:00 0 +7f55b3f02000-7f55b4000000 rw-p 00000000 00:00 0 +7f55b4000000-7f55b4024000 rw-p 00000000 00:00 0 +7f55b4024000-7f55b8000000 ---p 00000000 00:00 0 +7f55b8000000-7f55b80fc000 rw-p 00000000 00:00 0 +7f55b80fc000-7f55bc000000 ---p 00000000 00:00 0 +7f55bc000000-7f55bc021000 rw-p 00000000 00:00 0 +7f55bc021000-7f55c0000000 ---p 00000000 00:00 0 +7f55c0000000-7f55c0021000 rw-p 00000000 00:00 0 +7f55c0021000-7f55c4000000 ---p 00000000 00:00 0 +7f55c4000000-7f55c4064000 rw-p 00000000 00:00 0 +7f55c4064000-7f55c8000000 ---p 00000000 00:00 0 +7f55c8000000-7f55c8001000 r--s 00000000 08:06 17039427 /var/cache/fontconfig/3f7329c5293ffd510edef78f73874cfd-le64.cache-7 +7f55c8001000-7f55c8003000 r--s 00000000 08:06 17039434 /var/cache/fontconfig/6a6dfed4a7d1e4367ef225093de82110-le64.cache-7 +7f55c8003000-7f55c8010000 r--s 00000000 08:06 17039415 /var/cache/fontconfig/089dead882dea3570ffc31a9898cfb69-le64.cache-7 +7f55c8010000-7f55c8014000 r--s 00000000 08:06 17039414 /var/cache/fontconfig/0843ca893a93b5446bad221815920e23-le64.cache-7 +7f55c8014000-7f55c8023000 r--s 00000000 08:06 17039442 /var/cache/fontconfig/9b89f8e3dae116d678bbf48e5f21f69b-le64.cache-7 +7f55c8023000-7f55c8026000 r--s 00000000 08:06 17039446 /var/cache/fontconfig/b2d60264172c9fafc2f82e9237d8d959-le64.cache-7 +7f55c8026000-7f55c8029000 r--s 00000000 08:06 17039456 /var/cache/fontconfig/e13b20fdb08344e0e664864cc2ede53d-le64.cache-7 +7f55c8029000-7f55c802a000 rwxp 00000000 00:00 0 +7f55c802a000-7f55c803b000 r--s 001bc000 08:06 13380632 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/jsse.jar +7f55c803b000-7f55c803e000 ---p 00000000 00:00 0 +7f55c803e000-7f55c8074000 rw-p 00000000 00:00 0 +7f55c8074000-7f55c8087000 r--s 0034b000 08:06 13380636 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/resources.jar +7f55c8087000-7f55c809c000 r--s 00157000 08:06 10093046 /home/ceik/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.4.10/ea29e063d2bbe695be13e9d044dcfb0c7add398e/kotlin-stdlib-1.4.10.jar +7f55c809c000-7f55c809d000 r--s 00000000 08:06 10093494 /home/ceik/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jdk7/1.4.10/30e46450b0bb3dbf43898d2f461be4a942784780/kotlin-stdlib-jdk7-1.4.10.jar +7f55c809d000-7f55c809e000 r--s 00005000 08:06 10093546 /home/ceik/.gradle/caches/modules-2/files-2.1/com.googlecode.json-simple/json-simple/1.1.1/c9ad4a0850ab676c5c64461a05ca524cdfff59f1/json-simple-1.1.1.jar +7f55c809e000-7f55c80cf000 rw-p 00000000 00:00 0 +7f55c80cf000-7f55c80d0000 ---p 00000000 00:00 0 +7f55c80d0000-7f55c90df000 rw-p 00000000 00:00 0 +7f55c90df000-7f55c92b0000 r--s 03c94000 08:06 13380637 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/rt.jar +7f55c92b0000-7f55cd000000 rw-p 00000000 00:00 0 +7f55cd000000-7f55ce560000 rwxp 00000000 00:00 0 +7f55ce560000-7f55dc000000 ---p 00000000 00:00 0 +7f55dc000000-7f55dc4fd000 rw-p 00000000 00:00 0 +7f55dc4fd000-7f55e0000000 ---p 00000000 00:00 0 +7f55e0000000-7f55e0005000 r--s 001f4000 08:06 10093552 /home/ceik/.gradle/caches/modules-2/files-2.1/com.github.Vatuu/discord-rpc/1.6.2/233ee898e37dddd97ceaa9e7fd31a3eb8f10a128/discord-rpc-1.6.2.jar +7f55e0005000-7f55e0009000 r--s 0002d000 08:06 9961565 /home/ceik/IdeaProjects/2009scape/Client/libs/clientlibs.jar +7f55e0009000-7f55e0024000 r--s 00394000 08:06 13380617 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/cldrdata.jar +7f55e0024000-7f55e003f000 r--s 001d6000 08:06 13380622 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/nashorn.jar +7f55e003f000-7f55e0d5c000 rw-p 00000000 00:00 0 +7f55e0d5c000-7f55e0d5d000 ---p 00000000 00:00 0 +7f55e0d5d000-7f55e0e5d000 rw-p 00000000 00:00 0 +7f55e0e5d000-7f55e0e5e000 ---p 00000000 00:00 0 +7f55e0e5e000-7f55e0f5e000 rw-p 00000000 00:00 0 +7f55e0f5e000-7f55e0f5f000 ---p 00000000 00:00 0 +7f55e0f5f000-7f55e105f000 rw-p 00000000 00:00 0 +7f55e105f000-7f55e1060000 ---p 00000000 00:00 0 +7f55e1060000-7f55e1185000 rw-p 00000000 00:00 0 +7f55e1185000-7f55e13ee000 ---p 00000000 00:00 0 +7f55e13ee000-7f55e1413000 rw-p 00000000 00:00 0 +7f55e1413000-7f55e167c000 ---p 00000000 00:00 0 +7f55e167c000-7f55e1694000 rw-p 00000000 00:00 0 +7f55e1694000-7f55e17c3000 ---p 00000000 00:00 0 +7f55e17c3000-7f55e181a000 rw-p 00000000 00:00 0 +7f55e181a000-7f55e1b84000 ---p 00000000 00:00 0 +7f55e1b84000-7f55e1b8c000 r-xp 00000000 08:06 13380603 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/libzip.so +7f55e1b8c000-7f55e1d8b000 ---p 00008000 08:06 13380603 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/libzip.so +7f55e1d8b000-7f55e1d8c000 r--p 00007000 08:06 13380603 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/libzip.so +7f55e1d8c000-7f55e1d8d000 rw-p 00008000 08:06 13380603 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/libzip.so +7f55e1d8d000-7f55e1d98000 r-xp 00000000 08:06 11802668 /lib/x86_64-linux-gnu/libnss_files-2.27.so +7f55e1d98000-7f55e1f97000 ---p 0000b000 08:06 11802668 /lib/x86_64-linux-gnu/libnss_files-2.27.so +7f55e1f97000-7f55e1f98000 r--p 0000a000 08:06 11802668 /lib/x86_64-linux-gnu/libnss_files-2.27.so +7f55e1f98000-7f55e1f99000 rw-p 0000b000 08:06 11802668 /lib/x86_64-linux-gnu/libnss_files-2.27.so +7f55e1f99000-7f55e1f9f000 rw-p 00000000 00:00 0 +7f55e1f9f000-7f55e1fb6000 r-xp 00000000 08:06 11802665 /lib/x86_64-linux-gnu/libnsl-2.27.so +7f55e1fb6000-7f55e21b5000 ---p 00017000 08:06 11802665 /lib/x86_64-linux-gnu/libnsl-2.27.so +7f55e21b5000-7f55e21b6000 r--p 00016000 08:06 11802665 /lib/x86_64-linux-gnu/libnsl-2.27.so +7f55e21b6000-7f55e21b7000 rw-p 00017000 08:06 11802665 /lib/x86_64-linux-gnu/libnsl-2.27.so +7f55e21b7000-7f55e21b9000 rw-p 00000000 00:00 0 +7f55e21b9000-7f55e21c4000 r-xp 00000000 08:06 11802670 /lib/x86_64-linux-gnu/libnss_nis-2.27.so +7f55e21c4000-7f55e23c3000 ---p 0000b000 08:06 11802670 /lib/x86_64-linux-gnu/libnss_nis-2.27.so +7f55e23c3000-7f55e23c4000 r--p 0000a000 08:06 11802670 /lib/x86_64-linux-gnu/libnss_nis-2.27.so +7f55e23c4000-7f55e23c5000 rw-p 0000b000 08:06 11802670 /lib/x86_64-linux-gnu/libnss_nis-2.27.so +7f55e23c5000-7f55e23cd000 r-xp 00000000 08:06 11802666 /lib/x86_64-linux-gnu/libnss_compat-2.27.so +7f55e23cd000-7f55e25cd000 ---p 00008000 08:06 11802666 /lib/x86_64-linux-gnu/libnss_compat-2.27.so +7f55e25cd000-7f55e25ce000 r--p 00008000 08:06 11802666 /lib/x86_64-linux-gnu/libnss_compat-2.27.so +7f55e25ce000-7f55e25cf000 rw-p 00009000 08:06 11802666 /lib/x86_64-linux-gnu/libnss_compat-2.27.so +7f55e25cf000-7f55e25f9000 r-xp 00000000 08:06 13376055 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/libjava.so +7f55e25f9000-7f55e27f9000 ---p 0002a000 08:06 13376055 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/libjava.so +7f55e27f9000-7f55e27fa000 r--p 0002a000 08:06 13376055 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/libjava.so +7f55e27fa000-7f55e27fc000 rw-p 0002b000 08:06 13376055 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/libjava.so +7f55e27fc000-7f55e280c000 r-xp 00000000 08:06 13380602 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/libverify.so +7f55e280c000-7f55e2a0b000 ---p 00010000 08:06 13380602 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/libverify.so +7f55e2a0b000-7f55e2a0d000 r--p 0000f000 08:06 13380602 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/libverify.so +7f55e2a0d000-7f55e2a0e000 rw-p 00011000 08:06 13380602 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/libverify.so +7f55e2a0e000-7f55e2a15000 r-xp 00000000 08:06 11802675 /lib/x86_64-linux-gnu/librt-2.27.so +7f55e2a15000-7f55e2c14000 ---p 00007000 08:06 11802675 /lib/x86_64-linux-gnu/librt-2.27.so +7f55e2c14000-7f55e2c15000 r--p 00006000 08:06 11802675 /lib/x86_64-linux-gnu/librt-2.27.so +7f55e2c15000-7f55e2c16000 rw-p 00007000 08:06 11802675 /lib/x86_64-linux-gnu/librt-2.27.so +7f55e2c16000-7f55e2c2d000 r-xp 00000000 08:06 11801730 /lib/x86_64-linux-gnu/libgcc_s.so.1 +7f55e2c2d000-7f55e2e2c000 ---p 00017000 08:06 11801730 /lib/x86_64-linux-gnu/libgcc_s.so.1 +7f55e2e2c000-7f55e2e2d000 r--p 00016000 08:06 11801730 /lib/x86_64-linux-gnu/libgcc_s.so.1 +7f55e2e2d000-7f55e2e2e000 rw-p 00017000 08:06 11801730 /lib/x86_64-linux-gnu/libgcc_s.so.1 +7f55e2e2e000-7f55e2fcb000 r-xp 00000000 08:06 11802662 /lib/x86_64-linux-gnu/libm-2.27.so +7f55e2fcb000-7f55e31ca000 ---p 0019d000 08:06 11802662 /lib/x86_64-linux-gnu/libm-2.27.so +7f55e31ca000-7f55e31cb000 r--p 0019c000 08:06 11802662 /lib/x86_64-linux-gnu/libm-2.27.so +7f55e31cb000-7f55e31cc000 rw-p 0019d000 08:06 11802662 /lib/x86_64-linux-gnu/libm-2.27.so +7f55e31cc000-7f55e3345000 r-xp 00000000 08:06 13375942 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.25 +7f55e3345000-7f55e3545000 ---p 00179000 08:06 13375942 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.25 +7f55e3545000-7f55e354f000 r--p 00179000 08:06 13375942 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.25 +7f55e354f000-7f55e3551000 rw-p 00183000 08:06 13375942 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.25 +7f55e3551000-7f55e3555000 rw-p 00000000 00:00 0 +7f55e3555000-7f55e42c3000 r-xp 00000000 08:06 13380606 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so +7f55e42c3000-7f55e44c2000 ---p 00d6e000 08:06 13380606 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so +7f55e44c2000-7f55e4558000 r--p 00d6d000 08:06 13380606 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so +7f55e4558000-7f55e4581000 rw-p 00e03000 08:06 13380606 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so +7f55e4581000-7f55e45b4000 rw-p 00000000 00:00 0 +7f55e45b4000-7f55e45ce000 r-xp 00000000 08:06 11802673 /lib/x86_64-linux-gnu/libpthread-2.27.so +7f55e45ce000-7f55e47cd000 ---p 0001a000 08:06 11802673 /lib/x86_64-linux-gnu/libpthread-2.27.so +7f55e47cd000-7f55e47ce000 r--p 00019000 08:06 11802673 /lib/x86_64-linux-gnu/libpthread-2.27.so +7f55e47ce000-7f55e47cf000 rw-p 0001a000 08:06 11802673 /lib/x86_64-linux-gnu/libpthread-2.27.so +7f55e47cf000-7f55e47d3000 rw-p 00000000 00:00 0 +7f55e47d3000-7f55e47d6000 r-xp 00000000 08:06 11802661 /lib/x86_64-linux-gnu/libdl-2.27.so +7f55e47d6000-7f55e49d5000 ---p 00003000 08:06 11802661 /lib/x86_64-linux-gnu/libdl-2.27.so +7f55e49d5000-7f55e49d6000 r--p 00002000 08:06 11802661 /lib/x86_64-linux-gnu/libdl-2.27.so +7f55e49d6000-7f55e49d7000 rw-p 00003000 08:06 11802661 /lib/x86_64-linux-gnu/libdl-2.27.so +7f55e49d7000-7f55e49f3000 r-xp 00000000 08:06 11801866 /lib/x86_64-linux-gnu/libz.so.1.2.11 +7f55e49f3000-7f55e4bf2000 ---p 0001c000 08:06 11801866 /lib/x86_64-linux-gnu/libz.so.1.2.11 +7f55e4bf2000-7f55e4bf3000 r--p 0001b000 08:06 11801866 /lib/x86_64-linux-gnu/libz.so.1.2.11 +7f55e4bf3000-7f55e4bf4000 rw-p 0001c000 08:06 11801866 /lib/x86_64-linux-gnu/libz.so.1.2.11 +7f55e4bf4000-7f55e4ddb000 r-xp 00000000 08:06 11802658 /lib/x86_64-linux-gnu/libc-2.27.so +7f55e4ddb000-7f55e4fdb000 ---p 001e7000 08:06 11802658 /lib/x86_64-linux-gnu/libc-2.27.so +7f55e4fdb000-7f55e4fdf000 r--p 001e7000 08:06 11802658 /lib/x86_64-linux-gnu/libc-2.27.so +7f55e4fdf000-7f55e4fe1000 rw-p 001eb000 08:06 11802658 /lib/x86_64-linux-gnu/libc-2.27.so +7f55e4fe1000-7f55e4fe5000 rw-p 00000000 00:00 0 +7f55e4fe5000-7f55e4ff3000 r-xp 00000000 08:06 13375581 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/jli/libjli.so +7f55e4ff3000-7f55e51f2000 ---p 0000e000 08:06 13375581 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/jli/libjli.so +7f55e51f2000-7f55e51f3000 r--p 0000d000 08:06 13375581 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/jli/libjli.so +7f55e51f3000-7f55e51f4000 rw-p 0000e000 08:06 13375581 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/jli/libjli.so +7f55e51f4000-7f55e521d000 r-xp 00000000 08:06 11802653 /lib/x86_64-linux-gnu/ld-2.27.so +7f55e521d000-7f55e521e000 r--s 00003000 08:06 10093496 /home/ceik/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jdk8/1.4.10/998caa30623f73223194a8b657abd2baec4880ea/kotlin-stdlib-jdk8-1.4.10.jar +7f55e521e000-7f55e5220000 r--s 00001000 08:06 13380618 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/dnsns.jar +7f55e5220000-7f55e5222000 r--s 00007000 08:06 13632766 /usr/share/java/java-atk-wrapper.jar +7f55e5222000-7f55e5224000 r--s 00010000 08:06 13380626 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/zipfs.jar +7f55e5224000-7f55e522a000 r--s 0003d000 08:06 13380624 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/sunjce_provider.jar +7f55e522a000-7f55e522e000 r--s 00040000 08:06 13380625 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/sunpkcs11.jar +7f55e522e000-7f55e522f000 r--s 0000d000 08:06 13380623 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/sunec.jar +7f55e522f000-7f55e5232000 r--s 0000f000 08:06 13380619 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/icedtea-sound.jar +7f55e5232000-7f55e5233000 r--s 0000a000 08:06 13380620 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/jaccess.jar +7f55e5233000-7f55e52fe000 rw-p 00000000 00:00 0 +7f55e52fe000-7f55e52ff000 ---p 00000000 00:00 0 +7f55e52ff000-7f55e5302000 ---p 00000000 00:00 0 +7f55e5302000-7f55e5401000 rw-p 00000000 00:00 0 +7f55e5401000-7f55e540b000 r--s 00117000 08:06 13380621 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/localedata.jar +7f55e540b000-7f55e5411000 r--s 000d3000 08:06 13380631 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/jfr.jar +7f55e5411000-7f55e5419000 rw-s 00000000 08:06 16648955 /tmp/hsperfdata_ceik/23465 +7f55e5419000-7f55e541a000 rw-p 00000000 00:00 0 +7f55e541a000-7f55e541b000 r--p 00000000 00:00 0 +7f55e541b000-7f55e541d000 rw-p 00000000 00:00 0 +7f55e541d000-7f55e541e000 r--p 00029000 08:06 11802653 /lib/x86_64-linux-gnu/ld-2.27.so +7f55e541e000-7f55e541f000 rw-p 0002a000 08:06 11802653 /lib/x86_64-linux-gnu/ld-2.27.so +7f55e541f000-7f55e5420000 rw-p 00000000 00:00 0 +7ffd3adec000-7ffd3ae0d000 rw-p 00000000 00:00 0 [stack] +7ffd3af4d000-7ffd3af50000 r--p 00000000 00:00 0 [vvar] +7ffd3af50000-7ffd3af51000 r-xp 00000000 00:00 0 [vdso] +ffffffffff600000-ffffffffff601000 --xp 00000000 00:00 0 [vsyscall] + +VM Arguments: +jvm_args: -Dfile.encoding=UTF-8 -Duser.country=US -Duser.language=en -Duser.variant +java_command: org.rs09.client.GameLaunch +java_class_path (initial): /home/ceik/IdeaProjects/2009scape/Client/build/classes/java/main:/home/ceik/IdeaProjects/2009scape/Client/build/classes/kotlin/main:/home/ceik/IdeaProjects/2009scape/Client/build/resources/main:/home/ceik/IdeaProjects/2009scape/Client/libs/clientlibs.jar:/home/ceik/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jdk8/1.4.10/998caa30623f73223194a8b657abd2baec4880ea/kotlin-stdlib-jdk8-1.4.10.jar:/home/ceik/.gradle/caches/modules-2/files-2.1/com.github.Vatuu/discord-rpc/1.6.2/233ee898e37dddd97ceaa9e7fd31a3eb8f10a128/discord-rpc-1.6.2.jar:/home/ceik/.gradle/caches/modules-2/files-2.1/com.googlecode.json-simple/json-simple/1.1.1/c9ad4a0850ab676c5c64461a05ca524cdfff59f1/json-simple-1.1.1.jar:/home/ceik/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jdk7/1.4.10/30e46450b0bb3dbf43898d2f461be4a942784780/kotlin-stdlib-jdk7-1.4.10.jar:/home/ceik/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.4.10/ea29e063d2bbe695be13e9d044dcfb0c7add398e/kotlin-stdlib-1.4.10.jar:/home/ceik/.gradle/caches/modules-2/files-2.1/junit/junit/4.10/e4f1766ce7404a08f45d859fb9c226fc9e41a861/junit-4.10.jar:/home/ceik/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-common/1.4.10/6229be3465805c99db1142ad75e6c6ddeac0b04c/kotlin-stdlib-common-1.4.10.jar:/home/ceik/.gradle/caches/modules-2/files-2.1/org.jetbrains/annotations/13.0/919f0dfe192fb4e063e7dacadee7f8bb9a2672a9/annotations-13.0.jar:/home/ceik/.gradle/caches/modules-2/files-2.1/org.hamcrest/hamcrest-core/1.1/860340562250678d1a344907ac75754e259cdb14/hamcrest-core-1.1.jar +Launcher Type: SUN_STANDARD + +Environment Variables: +PATH=/bedrock/cross/pin/bin:/bedrock/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/usr/local/games:/usr/games:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/bedrock/cross/bin +SHELL=/bedrock/cross/bin/bash +DISPLAY=:0 + +Signal Handlers: +SIGSEGV: [libjvm.so+0xb6c690], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO +SIGBUS: [libjvm.so+0xb6c690], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO +SIGFPE: [libjvm.so+0x98c990], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO +SIGPIPE: [libjvm.so+0x98c990], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO +SIGXFSZ: [libjvm.so+0x98c990], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO +SIGILL: [libjvm.so+0x98c990], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO +SIGUSR1: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none +SIGUSR2: [libjvm.so+0x98c840], sa_mask[0]=00100000000000000000000000000000, sa_flags=SA_RESTART|SA_SIGINFO +SIGHUP: [libjvm.so+0x98ceb0], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO +SIGINT: [libjvm.so+0x98ceb0], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO +SIGTERM: [libjvm.so+0x98ceb0], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO +SIGQUIT: [libjvm.so+0x98ceb0], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO + + +--------------- S Y S T E M --------------- + +OS:DISTRIB_ID=elementary +DISTRIB_RELEASE=5.1.7 +DISTRIB_CODENAME=hera +DISTRIB_DESCRIPTION="elementary OS 5.1.7 Hera" + +uname:Linux 5.4.0-65-generic #73~18.04.1-Ubuntu SMP Tue Jan 19 09:02:24 UTC 2021 x86_64 +libc:glibc 2.27 NPTL 2.27 +rlimit: STACK 8192k, CORE 0k, NPROC 31096, NOFILE 1048576, AS infinity +load average:1.90 1.82 1.74 + +/proc/meminfo: +MemTotal: 8035576 kB +MemFree: 135340 kB +MemAvailable: 459952 kB +Buffers: 34784 kB +Cached: 851484 kB +SwapCached: 14640 kB +Active: 6497300 kB +Inactive: 1109580 kB +Active(anon): 6190188 kB +Inactive(anon): 898032 kB +Active(file): 307112 kB +Inactive(file): 211548 kB +Unevictable: 27488 kB +Mlocked: 64 kB +SwapTotal: 2097148 kB +SwapFree: 1694560 kB +Dirty: 4556 kB +Writeback: 0 kB +AnonPages: 6741496 kB +Mapped: 545228 kB +Shmem: 369688 kB +KReclaimable: 60404 kB +Slab: 127116 kB +SReclaimable: 60404 kB +SUnreclaim: 66712 kB +KernelStack: 19512 kB +PageTables: 65788 kB +NFS_Unstable: 0 kB +Bounce: 0 kB +WritebackTmp: 0 kB +CommitLimit: 6114936 kB +Committed_AS: 13096776 kB +VmallocTotal: 34359738367 kB +VmallocUsed: 34552 kB +VmallocChunk: 0 kB +Percpu: 1312 kB +HardwareCorrupted: 0 kB +AnonHugePages: 0 kB +ShmemHugePages: 0 kB +ShmemPmdMapped: 0 kB +FileHugePages: 0 kB +FilePmdMapped: 0 kB +CmaTotal: 0 kB +CmaFree: 0 kB +HugePages_Total: 0 +HugePages_Free: 0 +HugePages_Rsvd: 0 +HugePages_Surp: 0 +Hugepagesize: 2048 kB +Hugetlb: 0 kB +DirectMap4k: 233076 kB +DirectMap2M: 8038400 kB +DirectMap1G: 0 kB + +container (cgroup) information: +container_type: cgroupv1 +cpu_cpuset_cpus: 0-3 +cpu_memory_nodes: 0 +active_processor_count: 4 +cpu_quota: -1 +cpu_period: 100000 +cpu_shares: -1 +memory_limit_in_bytes: -1 +memory_and_swap_limit_in_bytes: -2 +memory_soft_limit_in_bytes: -1 +memory_usage_in_bytes: 7811866624 +memory_max_usage_in_bytes: 0 + + +CPU:total 4 (initial active 4) (2 cores per cpu, 2 threads per core) family 6 model 142 stepping 9, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, avx, avx2, aes, clmul, erms, 3dnowpref, lzcnt, ht, tsc, tscinvbit, bmi1, bmi2, adx + +/proc/cpuinfo: +processor : 0 +vendor_id : GenuineIntel +cpu family : 6 +model : 142 +model name : Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz +stepping : 9 +microcode : 0xde +cpu MHz : 2953.682 +cache size : 4096 KB +physical id : 0 +siblings : 4 +core id : 0 +cpu cores : 2 +apicid : 0 +initial apicid : 0 +fpu : yes +fpu_exception : yes +cpuid level : 22 +wp : yes +flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb invpcid_single pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid mpx rdseed adx smap clflushopt intel_pt xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp md_clear flush_l1d +bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs itlb_multihit srbds +bogomips : 5799.77 +clflush size : 64 +cache_alignment : 64 +address sizes : 39 bits physical, 48 bits virtual +power management: + +processor : 1 +vendor_id : GenuineIntel +cpu family : 6 +model : 142 +model name : Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz +stepping : 9 +microcode : 0xde +cpu MHz : 2960.209 +cache size : 4096 KB +physical id : 0 +siblings : 4 +core id : 1 +cpu cores : 2 +apicid : 2 +initial apicid : 2 +fpu : yes +fpu_exception : yes +cpuid level : 22 +wp : yes +flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb invpcid_single pti tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid mpx rdseed adx smap clflushopt intel_pt xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp +bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs itlb_multihit srbds +bogomips : 5799.77 +clflush size : 64 +cache_alignment : 64 +address sizes : 39 bits physical, 48 bits virtual +power management: + +processor : 2 +vendor_id : GenuineIntel +cpu family : 6 +model : 142 +model name : Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz +stepping : 9 +microcode : 0xde +cpu MHz : 2716.595 +cache size : 4096 KB +physical id : 0 +siblings : 4 +core id : 0 +cpu cores : 2 +apicid : 1 +initial apicid : 1 +fpu : yes +fpu_exception : yes +cpuid level : 22 +wp : yes +flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb invpcid_single pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid mpx rdseed adx smap clflushopt intel_pt xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp md_clear flush_l1d +bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs itlb_multihit srbds +bogomips : 5799.77 +clflush size : 64 +cache_alignment : 64 +address sizes : 39 bits physical, 48 bits virtual +power management: + +processor : 3 +vendor_id : GenuineIntel +cpu family : 6 +model : 142 +model name : Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz +stepping : 9 +microcode : 0xde +cpu MHz : 2934.120 +cache size : 4096 KB +physical id : 0 +siblings : 4 +core id : 1 +cpu cores : 2 +apicid : 3 +initial apicid : 3 +fpu : yes +fpu_exception : yes +cpuid level : 22 +wp : yes +flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb invpcid_single pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid mpx rdseed adx smap clflushopt intel_pt xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp md_clear flush_l1d +bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs itlb_multihit srbds +bogomips : 5799.77 +clflush size : 64 +cache_alignment : 64 +address sizes : 39 bits physical, 48 bits virtual +power management: + + + +Memory: 4k page, physical 8035576k(134836k free), swap 2097148k(1694560k free) + +vm_info: OpenJDK 64-Bit Server VM (25.275-b01) for linux-amd64 JRE (1.8.0_275-8u275-b01-0ubuntu1~18.04-b01), built on Nov 9 2020 02:38:58 by "buildd" with gcc 7.5.0 + +time: Thu Feb 11 14:07:59 2021 +timezone: CST +elapsed time: 13215.746486 seconds (0d 3h 40m 15s) + diff --git a/Client/hs_err_pid750.log b/Client/hs_err_pid750.log new file mode 100644 index 000000000..50df383a8 --- /dev/null +++ b/Client/hs_err_pid750.log @@ -0,0 +1,9 @@ +# +# A fatal error has been detected by the Java Runtime Environment: +# +# SIGBUS (0x7) at pc=0x00007f8aacc26730, pid=750, tid=0x00007f8aad494700 +# +# JRE version: OpenJDK Runtime Environment (8.0_275-b01) (build 1.8.0_275-8u275-b01-0ubuntu1~18.04-b01) +# Java VM: OpenJDK 64-Bit Server VM (25.275-b01 mixed mode linux-amd64 compressed oops) +# Problematic frame: +# \ No newline at end of file diff --git a/Client/src/main/java/org/runite/client/AbstractIndexedSprite.java b/Client/src/main/java/org/runite/client/AbstractIndexedSprite.java new file mode 100644 index 000000000..6dadc3283 --- /dev/null +++ b/Client/src/main/java/org/runite/client/AbstractIndexedSprite.java @@ -0,0 +1,17 @@ +package org.runite.client; + +public abstract class AbstractIndexedSprite { + + public int width; + int anInt1464; + int anInt1467; + int height; + int anInt1469; + int anInt1470; + + + abstract void method1666(int var1, int var2, int var3); + + public abstract void method1667(int var1, int var2); + +} diff --git a/Client/src/main/java/org/runite/client/AbstractSprite.java b/Client/src/main/java/org/runite/client/AbstractSprite.java new file mode 100644 index 000000000..fd2f51eea --- /dev/null +++ b/Client/src/main/java/org/runite/client/AbstractSprite.java @@ -0,0 +1,147 @@ +package org.runite.client; + +import org.rs09.client.Node; +import org.rs09.client.rendering.Toolkit; + +import java.util.Objects; + +public abstract class AbstractSprite extends Node { + + public int height; + int anInt3697; + int anInt3698; + public static int anInt3699 = 0; + int anInt3701; + static int anInt3704; + int anInt3706; + public int width; + static RSInterface aClass11_3708 = null; + + public static AbstractSprite constructItemSprite(int var0, boolean useHDSprite, int itemID, boolean var4, int outlineType, int itemCount, boolean shrinkInSprite) { + try { + ItemDefinition item = ItemDefinition.getItemDefinition(itemID); + if (itemCount > 1 && item.anIntArray804 != null) { + int var9 = -1; + + for (int var10 = 0; var10 < 10; ++var10) { + if (item.anIntArray766[var10] <= itemCount && item.anIntArray766[var10] != 0) { + var9 = item.anIntArray804[var10]; + } + } + + if (var9 != -1) { + item = ItemDefinition.getItemDefinition(var9); + } + } + + Class140_Sub1_Sub2 var21 = item.method1120(); + if (null == var21) { + return null; + } else { + SoftwareSprite var22 = null; + if (item.anInt791 == -1) { + if (item.anInt762 != -1) { + var22 = (SoftwareSprite) constructItemSprite(var0, true, item.anInt795, false, outlineType, itemCount, false); + if (null == var22) { + return null; + } + } + } else { + var22 = (SoftwareSprite) constructItemSprite(0, true, item.noteID, false, 1, 10, true); + if (null == var22) { + return null; + } + } + + int[] var11 = Toolkit.JAVA_TOOLKIT.getBuffer(); + int var12 = Toolkit.JAVA_TOOLKIT.width; + int var13 = Toolkit.JAVA_TOOLKIT.height; + int[] var14 = new int[4]; + Class74.method1325(var14); + SoftwareSprite var15 = new SoftwareSprite(36, 32); + Class74.setBuffer(var15.anIntArray4081, 36, 32); + Class51.method1134(); + Class51.method1145(16, 16); + int var16 = item.modelZoom; + Class51.aBoolean843 = false; + if (shrinkInSprite) { + var16 = (int) ((double) var16 * 1.5D); + } else if (outlineType == 2) { + var16 = (int) (1.04D * (double) var16); + } + + int var18 = Class51.anIntArray851[item.modelRotation1] * var16 >> 16; + int var17 = Class51.anIntArray840[item.modelRotation1] * var16 >> 16; + var21.method1893(item.modelRotation2, item.anInt768, item.modelRotation1, item.anInt792, var17 - (var21.method1871() / 2 + -item.anInt754), item.anInt754 + var18); + if (outlineType >= 1) { + var15.method657(1); + if (outlineType >= 2) { + var15.method657(16777215); + } + + Class74.setBuffer(var15.anIntArray4081, 36, 32); + } + + if (var0 != 0) { + var15.method668(var0); + } + + if (item.anInt791 != -1) { + Objects.requireNonNull(var22).drawAt(0, 0); + } else if (-1 != item.anInt762) { + Class74.setBuffer(Objects.requireNonNull(var22).anIntArray4081, 36, 32); + var15.drawAt(0, 0); + var15 = var22; + } + + if (var4 && (item.stackingType == 1 || itemCount != 1) && itemCount != -1) { + TextureOperation10.aClass3_Sub28_Sub17_Sub1_3440.method681(Class3_Sub7.itemStackColor(1000, itemCount), 0, 9, 16776960, 1); + } + + Class74.setBuffer(var11, var12, var13); + Class74.setClipping(var14); + Class51.method1134(); + Class51.aBoolean843 = true; + return HDToolKit.highDetail && !useHDSprite ? new HDSprite(var15) : var15; + } + } catch (RuntimeException var20) { + throw ClientErrorException.clientError(var20, "na.WA(" + var0 + ',' + useHDSprite + ',' + itemID + ',' + var4 + ',' + outlineType + ',' + itemCount + ',' + shrinkInSprite + ')'); + } + } + + abstract void method635(int var1, int var2); + + abstract void method636(int var1, int var2, int var3, int var4, int var5, int var6); + + abstract void method637(int var1, int var2, int var3); + + public static RSInterface method638(int var1, int var2) { + try { + RSInterface var3 = Unsorted.getRSInterface(var1); + return var2 == -1 ?var3: var3 != null && var3.aClass11Array262 != null && var2 < var3.aClass11Array262.length ?var3.aClass11Array262[var2]:null; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "qf.P(" + (byte) -19 + ',' + var1 + ',' + var2 + ')'); + } + } + + public abstract void method639(int var1, int var2, int var3, int var4); + + public final void drawScaledOrRotated(int x, int y, int angle, int scale) { + try { + int var6 = this.anInt3697 << 3; + int var7 = this.anInt3706 << 3; + scale = (scale << 4) + (var6 & 15); + x = (x << 4) + (15 & var7); + this.method636(var6, var7, scale, x, y, angle); + } catch (RuntimeException var8) { + throw ClientErrorException.clientError(var8, "qf.F(" + x + ',' + y + ',' + angle + ',' + scale + ',' + -1470985020 + ')'); + } + } + + abstract void method641(int var1, int var2); + + abstract void method642(int var1, int var2, int var3, int var4, int var5); + + public abstract void drawAt(int var1, int var2); + +} diff --git a/Client/src/main/java/org/runite/client/AnimationHeader.java b/Client/src/main/java/org/runite/client/AnimationHeader.java new file mode 100644 index 000000000..8a832305a --- /dev/null +++ b/Client/src/main/java/org/runite/client/AnimationHeader.java @@ -0,0 +1,210 @@ +package org.runite.client; + + +final class AnimationHeader { + + boolean aBoolean1382 = false; + int anInt1383; + Class3_Sub17 skins; + short[] aShortArray1385; + boolean aBoolean1386 = false; + short[] aShortArray1387; + short[] aShortArray1388; + private static final byte[] aByteArray1389 = new byte[500]; + private static final short[] aShortArray1390 = new short[500]; + private static final short[] aShortArray1391 = new short[500]; + private static final short[] aShortArray1392 = new short[500]; + byte[] aByteArray1393; + private static final short[] aShortArray1394 = new short[500]; + short[] aShortArray1395; + short[] aShortArray1396; + private static final short[] aShortArray1397 = new short[500]; + + + // AnimationHeader(byte[] bs, Class3_Sub17 skin) { +// this.skins = skin; +// RSByteBuffer buffer = new RSByteBuffer(bs); +// RSByteBuffer parent = new RSByteBuffer(bs); +// buffer.index = 2; +// int size = buffer.getByte((byte)-86); +// int var6 = 0; +// int var7 = -1; +// parent.index = buffer.index + size; +// +// int i; +// for(i = 0; i < size; ++i) { +// +// int var11 = buffer.getByte((byte)-55); +// if(var11 > 0) { +// int var10 = this.skins.anIntArray2466[i]; +// if (skins.anIntArray2466[i] != 0) { +// for (int j = i - 1; j > var7; j--) { +// if (skins.anIntArray2466[j] == 0) { +// aShortArray1397[var7] = (short) j; +// aShortArray1394[var7] = 0; +// aShortArray1391[var7] = 0; +// aShortArray1390[var7] = 0; +// var6++; +// break; +// } +// } +// aShortArray1397[var6] = (short)i; +// short var12 = 0; +// if(var10 == 3) { +// var12 = 128; +// } +// +// if((var11 & 1) != 0) { +// aShortArray1394[var6] = (short)parent.getSmart(-21208); +// } else { +// aShortArray1394[var6] = var12; +// } +// +// if((var11 & 2) != 0) { +// aShortArray1391[var6] = (short)parent.getSmart(-21208); +// } else { +// aShortArray1391[var6] = var12; +// } +// +// if((var11 & 4) != 0) { +// aShortArray1390[var6] = (short)parent.getSmart(-21208); +// } else { +// aShortArray1390[var6] = var12; +// } +// +// aByteArray1389[var6] = (byte)(var11 >>> 3 & 3); +// if(var10 == 2) { +// aShortArray1394[var6] = (short)(((aShortArray1394[var6] & 0xFF) << 3) + (aShortArray1394[var6] >> 8 & 7)); +// aShortArray1391[var6] = (short)(((aShortArray1391[var6] & 0xFF) << 3) + (aShortArray1391[var6] >> 8 & 7)); +// aShortArray1390[var6] = (short)(((aShortArray1390[var6] & 0xFF) << 3) + (aShortArray1390[var6] >> 8 & 7)); +// } +// var7 = i; +// if(var10 != 1 && var10 != 2 && var10 != 3) { +// if(var10 == 5) { +// this.aBoolean1386 = true; +// } else if(var10 == 7) { +// this.aBoolean1382 = true; +// } +// } +// +// ++var6; +// } +// } +// +// if(parent.index != bs.length) { +// throw new RuntimeException(); +// } else { +// this.anInt1383 = var6; +// this.aShortArray1385 = new short[var6]; +// this.aShortArray1388 = new short[var6]; +// this.aShortArray1396 = new short[var6]; +// this.aShortArray1395 = new short[var6]; +// this.aShortArray1387 = new short[var6]; +// this.aByteArray1393 = new byte[var6]; +// +// for(i = 0; i < var6; ++i) { +// this.aShortArray1385[i] = aShortArray1397[i]; +// this.aShortArray1388[i] = aShortArray1394[i]; +// this.aShortArray1396[i] = aShortArray1391[i]; +// this.aShortArray1395[i] = aShortArray1390[i]; +// this.aShortArray1387[i] = aShortArray1392[i]; +// this.aByteArray1393[i] = aByteArray1389[i]; +// } +// +// } +// } +// } + AnimationHeader(byte[] bs, Class3_Sub17 skin) { + this.skins = skin; + DataBuffer buffer = new DataBuffer(bs); + DataBuffer parent = new DataBuffer(bs); + buffer.index = 2; + int size = buffer.readUnsignedByte(); + int var6 = 0; + int var7 = -1; + int var8 = -1; + parent.index = buffer.index + size; + + int i; + for(i = 0; i < size; ++i) { + int var10 = this.skins.anIntArray2466[i]; + if(var10 == 0) { + var7 = i; + } + int var11 = buffer.readUnsignedByte(); + if(var11 > 0) { + if(var10 == 0) { + var8 = i; + } + + aShortArray1397[var6] = (short)i; + short var12 = 0; + if(var10 == 3) { + var12 = 128; + } + + if((var11 & 1) == 0) { + aShortArray1394[var6] = var12; + } else { + aShortArray1394[var6] = (short)parent.getByteOrShort(); + } + + if((var11 & 2) == 0) { + aShortArray1391[var6] = var12; + } else { + aShortArray1391[var6] = (short)parent.getByteOrShort(); + } + + if((var11 & 4) == 0) { + aShortArray1390[var6] = var12; + } else { + aShortArray1390[var6] = (short)parent.getByteOrShort(); + } + + aByteArray1389[var6] = (byte)(var11 >>> 3 & 3); + if(var10 == 2) { + aShortArray1394[var6] = (short)(((aShortArray1394[var6] & 0xFF) << 3) + (aShortArray1394[var6] >> 8 & 7)); + aShortArray1391[var6] = (short)(((aShortArray1391[var6] & 0xFF) << 3) + (aShortArray1391[var6] >> 8 & 7)); + aShortArray1390[var6] = (short)(((aShortArray1390[var6] & 0xFF) << 3) + (aShortArray1390[var6] >> 8 & 7)); + } + + aShortArray1392[var6] = -1; + if(var10 != 1 && var10 != 2 && var10 != 3) { + if(var10 == 5) { + this.aBoolean1386 = true; + } else if(var10 == 7) { + this.aBoolean1382 = true; + } + } else if(var7 > var8) { + aShortArray1392[var6] = (short)var7; + var8 = var7; + } + + ++var6; + } + } + + if(parent.index == bs.length) { + this.anInt1383 = var6; + this.aShortArray1385 = new short[var6]; + this.aShortArray1388 = new short[var6]; + this.aShortArray1396 = new short[var6]; + this.aShortArray1395 = new short[var6]; + this.aShortArray1387 = new short[var6]; + this.aByteArray1393 = new byte[var6]; + + for(i = 0; i < var6; ++i) { + this.aShortArray1385[i] = aShortArray1397[i]; + this.aShortArray1388[i] = aShortArray1394[i]; + this.aShortArray1396[i] = aShortArray1391[i]; + this.aShortArray1395[i] = aShortArray1390[i]; + this.aShortArray1387[i] = aShortArray1392[i]; + this.aByteArray1393[i] = aByteArray1389[i]; + } + + } else { + throw new RuntimeException(); + } + } + + } diff --git a/Client/src/main/java/org/runite/client/AssembledMethod.java b/Client/src/main/java/org/runite/client/AssembledMethod.java new file mode 100644 index 000000000..057a4bd8f --- /dev/null +++ b/Client/src/main/java/org/runite/client/AssembledMethod.java @@ -0,0 +1,18 @@ +package org.runite.client; + +import org.rs09.client.Node; +import org.rs09.client.data.HashTable; + +final class AssembledMethod extends Node { + + // The ints are loaded in this order + int numberOfIntsToCopy; + int numberOfRSStringsToCopy; + int numberOfIntArguments; + int numberOfStringArguments; + + int[] assemblyInstructions; + int[] instructionOperands; + HashTable[] switchHashTable; + RSString[] stringInstructionOperands; +} diff --git a/Client/src/main/java/org/runite/client/AssembledMethodContainer.java b/Client/src/main/java/org/runite/client/AssembledMethodContainer.java new file mode 100644 index 000000000..4940cabbc --- /dev/null +++ b/Client/src/main/java/org/runite/client/AssembledMethodContainer.java @@ -0,0 +1,8 @@ +package org.runite.client; + +final class AssembledMethodContainer { + int[] intArguments; + RSString[] stringArguments; + AssembledMethod assembledMethod; + int currentProgramCounter = -1; +} diff --git a/Client/src/main/java/org/runite/client/AtmosphereParser.java b/Client/src/main/java/org/runite/client/AtmosphereParser.java new file mode 100644 index 000000000..9fd08d924 --- /dev/null +++ b/Client/src/main/java/org/runite/client/AtmosphereParser.java @@ -0,0 +1,124 @@ +package org.runite.client; + +import org.rs09.client.data.HashTable; + +public final class AtmosphereParser { + + static HashTable aHashTable_3679 = new HashTable(16); + static AtmosphereParser[][] aAtmosphereParserArrayArray1581 = new AtmosphereParser[13][13]; + int anInt1175; + int anInt1177; + int anInt1178; + int anInt1181; + static Class91[] aClass91Array1182 = new Class91[4]; + int anInt1184; + int anInt1185; + static Class41 aClass41_1186; + float aFloat1187; + float aFloat1189; + float aFloat1190; + static int anInt1191; + static int screenLowerY; + + static void method1428(int var0, int var2) { + try { + ItemDefinition.ram[var0] = var2; + Class3_Sub7 var3 = (Class3_Sub7) aHashTable_3679.get(var0); + if (var3 == null) { + var3 = new Class3_Sub7(TimeUtils.time() - -500L); + aHashTable_3679.put(var0, var3); + } else { + var3.aLong2295 = 500L + TimeUtils.time(); + } + + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "li.D(" + var0 + ',' + var2 + ')'); + } + } + + static Class3_Sub28_Sub17_Sub1 method1430(int var1) { + try { + Class3_Sub28_Sub17_Sub1 var2 = (Class3_Sub28_Sub17_Sub1) Unsorted.aReferenceCache_1135.get(var1); + if (var2 == null) { + byte[] var3 = CacheIndex.fontsIndex.getFile(var1, 0); + var2 = new Class3_Sub28_Sub17_Sub1(var3); + var2.method697(Sprites.nameIconsSpriteArray, null); + Unsorted.aReferenceCache_1135.put(var2, var1); + } + return var2; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "li.A(" + -28922 + ',' + var1 + ')'); + } + } + + public AtmosphereParser() { + try { + this.anInt1177 = Class92.defaultScreenColorRgb; + this.aFloat1189 = 1.2F; + this.anInt1178 = -50; + this.aFloat1187 = 1.1523438F; + this.anInt1175 = Class92.defaultRegionAmbientRGB; + this.anInt1181 = -60; + this.aFloat1190 = 0.69921875F; + this.anInt1184 = 0; + this.anInt1185 = -50; + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "li.()"); + } + } + + AtmosphereParser(DataBuffer var1) { + try { + int var2 = var1.readUnsignedByte(); + if ((var2 & 1) == 0) { + this.anInt1177 = Class92.defaultScreenColorRgb; + } else { + this.anInt1177 = var1.readInt(); + } + + if ((2 & var2) == 0) { + this.aFloat1187 = 1.1523438F; + } else { + this.aFloat1187 = (float) var1.readUnsignedShort() / 256.0F; + } + + if ((var2 & 4) == 0) { + this.aFloat1190 = 0.69921875F; + } else { + this.aFloat1190 = (float) var1.readUnsignedShort() / 256.0F; + } + + if ((var2 & 8) == 0) { + this.aFloat1189 = 1.2F; + } else { + this.aFloat1189 = (float) var1.readUnsignedShort() / 256.0F; + } + + if ((16 & var2) == 0) { + this.anInt1178 = -50; + this.anInt1185 = -50; + this.anInt1181 = -60; + } else { + this.anInt1185 = var1.readSignedShort(); + this.anInt1181 = var1.readSignedShort(); + this.anInt1178 = var1.readSignedShort(); + } + + if ((32 & var2) == 0) { + this.anInt1175 = Class92.defaultRegionAmbientRGB; + } else { + this.anInt1175 = var1.readInt(); + } + + if ((64 & var2) == 0) { + this.anInt1184 = 0; + } else { + this.anInt1184 = var1.readUnsignedShort(); + } + + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "li.(" + (var1 != null ? "{...}" : "null") + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/AudioChannel.java b/Client/src/main/java/org/runite/client/AudioChannel.java new file mode 100644 index 000000000..34af5f364 --- /dev/null +++ b/Client/src/main/java/org/runite/client/AudioChannel.java @@ -0,0 +1,439 @@ +package org.runite.client; + +import org.rs09.client.util.ArrayUtils; + +import java.awt.*; + +class AudioChannel { + + public static boolean stereo; + static int[] anIntArray1969 = new int[100]; + static int threadPriority; + static AudioThread aAudioThread_2613; + private final Class3_Sub24[] aClass3_Sub24Array1980 = new Class3_Sub24[8]; + private final Class3_Sub24[] aClass3_Sub24Array1983 = new Class3_Sub24[8]; + int[] samples; + int sampleRate; + int bufferSize; + private long aLong1972 = TimeUtils.time(); + private Class3_Sub24 aClass3_Sub24_1973; + private long aLong1979 = 0L; + private int anInt1981 = 0; + private long aLong1982 = 0L; + private boolean aBoolean1984 = true; + private int anInt1985 = 0; + private int anInt1986; + private int anInt1987 = 0; + private int anInt1988 = 0; + private int anInt1968 = 32; + + static void method2162(GameObject var0, int var1, int var2, int var3) { + TileData var4; + if (var2 < Unsorted.width1234) { + var4 = TileData.aTileDataArrayArrayArray2638[var1][var2 + 1][var3]; + if (var4 != null && var4.aClass12_2230 != null && var4.aClass12_2230.object.method1865()) { + var0.method1866(var4.aClass12_2230.object, 128, 0, 0, true); + } + } + + if (var3 < Unsorted.width1234) { + var4 = TileData.aTileDataArrayArrayArray2638[var1][var2][var3 + 1]; + if (var4 != null && var4.aClass12_2230 != null && var4.aClass12_2230.object.method1865()) { + var0.method1866(var4.aClass12_2230.object, 0, 0, 128, true); + } + } + + if (var2 < Unsorted.width1234 && var3 < TextureOperation17.height3179) { + var4 = TileData.aTileDataArrayArrayArray2638[var1][var2 + 1][var3 + 1]; + if (var4 != null && var4.aClass12_2230 != null && var4.aClass12_2230.object.method1865()) { + var0.method1866(var4.aClass12_2230.object, 128, 0, 128, true); + } + } + + if (var2 < Unsorted.width1234 && var3 > 0) { + var4 = TileData.aTileDataArrayArrayArray2638[var1][var2 + 1][var3 - 1]; + if (var4 != null && var4.aClass12_2230 != null && var4.aClass12_2230.object.method1865()) { + var0.method1866(var4.aClass12_2230.object, 128, 0, -128, true); + } + } + + } + + static AudioChannel method1195(int sampleRate, Signlink signlink, Component component, int channelID) { + try { + if (Class21.sampleRate == 0) { + throw new IllegalStateException(); + } else if (0 <= channelID && 2 > channelID) { + if (sampleRate < 256) { + sampleRate = 256; + } + + try { + AudioChannel channel = new JavaAudioChannel(); + channel.sampleRate = sampleRate; + channel.samples = new int[(!stereo ? 1 : 2) * 256]; + channel.init(component); + channel.bufferSize = (sampleRate & 0xfffffc00) + 1024; + if (channel.bufferSize > 16384) { + channel.bufferSize = 16384; + } + + channel.open(channel.bufferSize); + if (threadPriority > 0 && null == aAudioThread_2613) { + aAudioThread_2613 = new AudioThread(); + aAudioThread_2613.aClass87_350 = signlink; + signlink.startThread(threadPriority, aAudioThread_2613); + } + + if (aAudioThread_2613 != null) { + if (null != aAudioThread_2613.channels[channelID]) { + throw new IllegalArgumentException(); + } + + aAudioThread_2613.channels[channelID] = channel; + } + + return channel; + } catch (Throwable var7) { + try { + SignLinkAudioChannel signLinkAudioChannel = new SignLinkAudioChannel(signlink, channelID); + signLinkAudioChannel.samples = new int[256 * (stereo ? 2 : 1)]; + signLinkAudioChannel.sampleRate = sampleRate; + signLinkAudioChannel.init(component); + signLinkAudioChannel.bufferSize = 16384; + signLinkAudioChannel.open(signLinkAudioChannel.bufferSize); + if (threadPriority > 0 && null == aAudioThread_2613) { + aAudioThread_2613 = new AudioThread(); + aAudioThread_2613.aClass87_350 = signlink; + signlink.startThread(threadPriority, aAudioThread_2613); + } + + if (aAudioThread_2613 != null) { + if (aAudioThread_2613.channels[channelID] != null) { + throw new IllegalArgumentException(); + } + + aAudioThread_2613.channels[channelID] = signLinkAudioChannel; + } + + return signLinkAudioChannel; + } catch (Throwable var6) { + return new AudioChannel(); + } + } + } else { + throw new IllegalArgumentException(); + } + } catch (RuntimeException var8) { + throw ClientErrorException.clientError(var8, "id.D(" + sampleRate + ',' + (signlink != null ? "{...}" : "null") + ',' + (component != null ? "{...}" : "null") + ',' + channelID + ',' + 14 + ')'); + } + } + + void write() { + } + + void open(int var1) throws Exception { + } + + void flush() throws Exception { + } + + private void method2152(int[] var1) { + int var3 = 256; + if (stereo) { + var3 = 256 << 1; + } + + ArrayUtils.zero(var1, 0, var3); + this.anInt1987 -= 256; + if (this.aClass3_Sub24_1973 != null && this.anInt1987 <= 0) { + this.anInt1987 += Class21.sampleRate >> 4; + Class97.method1591(this.aClass3_Sub24_1973); + this.method2155(this.aClass3_Sub24_1973, this.aClass3_Sub24_1973.method412()); + int var4 = 0; + int var5 = 255; + + int var6; + label101: + for (var6 = 7; var5 != 0; --var6) { + int var7; + int var8; + if (var6 < 0) { + var7 = var6 & 0x3; + var8 = -(var6 >> 2); + } else { + var7 = var6; + var8 = 0; + } + + for (int var9 = var5 >>> var7 & 0x11111111; var9 != 0; var9 >>>= 4) { + if ((var9 & 0x1) != 0) { + var5 &= ~(1 << var7); + Class3_Sub24 var10 = null; + Class3_Sub24 var11 = this.aClass3_Sub24Array1980[var7]; + + while (var11 != null) { + Sound var12 = var11.aSound_2544; + if (var12 != null && var12.anInt2374 > var8) { + var5 |= 1 << var7; + var10 = var11; + var11 = var11.aClass3_Sub24_2546; + } else { + var11.aBoolean2545 = true; + int var13 = var11.method409(); + var4 += var13; + if (var12 != null) { + var12.anInt2374 += var13; + } + + if (var4 >= anInt1968) { + break label101; + } + + Class3_Sub24 var14 = var11.method411(); + if (var14 != null) { + for (int var15 = var11.anInt2543; var14 != null; var14 = var11.method414()) { + this.method2155(var14, var15 * var14.method412() >> 8); + } + } + + Class3_Sub24 var18 = var11.aClass3_Sub24_2546; + var11.aClass3_Sub24_2546 = null; + if (var10 == null) { + this.aClass3_Sub24Array1980[var7] = var18; + } else { + var10.aClass3_Sub24_2546 = var18; + } + + if (var18 == null) { + this.aClass3_Sub24Array1983[var7] = var10; + } + + var11 = var18; + } + } + } + + var7 += 4; + ++var8; + } + } + + for (var6 = 0; var6 < 8; ++var6) { + Class3_Sub24 var16 = this.aClass3_Sub24Array1980[var6]; + + Class3_Sub24 var17; + for (this.aClass3_Sub24Array1980[var6] = this.aClass3_Sub24Array1983[var6] = null; var16 != null; var16 = var17) { + var17 = var16.aClass3_Sub24_2546; + var16.aClass3_Sub24_2546 = null; + } + } + } + + if (this.anInt1987 < 0) { + this.anInt1987 = 0; + } + + if (this.aClass3_Sub24_1973 != null) { + this.aClass3_Sub24_1973.method413(var1, 0, 256); + } + + this.aLong1972 = TimeUtils.time(); + } + + final synchronized void method2153() { + try { + if (null != this.samples) { + long var2 = TimeUtils.time(); + + try { + if (0L != this.aLong1982) { + if (var2 < this.aLong1982) { + return; + } + + this.open(this.bufferSize); + this.aBoolean1984 = true; + this.aLong1982 = 0L; + } + + int var4 = this.method2157(); + if (-var4 + this.anInt1985 > this.anInt1981) { + this.anInt1981 = -var4 + this.anInt1985; + } + + int var5 = this.sampleRate - -this.anInt1986; + if (256 + var5 > 16384) { + var5 = 16128; + } + + if (this.bufferSize < var5 + 256) { + this.bufferSize += 1024; + if (this.bufferSize > 16384) { + this.bufferSize = 16384; + } + + this.close(); + var4 = 0; + this.open(this.bufferSize); + if (this.bufferSize < 256 + var5) { + var5 = -256 + this.bufferSize; + this.anInt1986 = -this.sampleRate + var5; + } + + this.aBoolean1984 = true; + } + + while (var4 < var5) { + var4 += 256; + this.method2152(this.samples); + this.write(); + } + + if (this.aLong1979 < var2) { + if (this.aBoolean1984) { + this.aBoolean1984 = false; + } else { + if (this.anInt1981 == 0 && this.anInt1988 == 0) { + this.close(); + this.aLong1982 = var2 - -2000L; + return; + } + + this.anInt1986 = Math.min(this.anInt1988, this.anInt1981); + this.anInt1988 = this.anInt1981; + } + + this.aLong1979 = 2000L + var2; + this.anInt1981 = 0; + } + + this.anInt1985 = var4; + } catch (Exception var7) { + this.close(); + this.aLong1982 = var2 + 2000L; + } + + try { + if (var2 > 500000L + this.aLong1972) { + var2 = this.aLong1972; + } + + while (var2 > this.aLong1972 + 5000L) { + this.method2161(); + this.aLong1972 += 256000 / Class21.sampleRate; + } + } catch (Exception var6) { + this.aLong1972 = var2; + } + + } + } catch (RuntimeException var8) { + throw ClientErrorException.clientError(var8, "vh.Q(" + (byte) -34 + ')'); + } + } + + final synchronized void method2154(Class3_Sub24 var2) { + this.aClass3_Sub24_1973 = var2; + } + + private void method2155(Class3_Sub24 var1, int var2) { + try { + int var4 = var2 >> 5; + Class3_Sub24 var5 = this.aClass3_Sub24Array1983[var4]; + if (null == var5) { + this.aClass3_Sub24Array1980[var4] = var1; + } else { + var5.aClass3_Sub24_2546 = var1; + } + + this.aClass3_Sub24Array1983[var4] = var1; + var1.anInt2543 = var2; + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "vh.H(" + (var1 != null ? "{...}" : "null") + ',' + var2 + ',' + (byte) -24 + ')'); + } + } + + int method2157() { + try { + return this.bufferSize; + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "vh.B()"); + } + } + + final synchronized void method2158() { + try { + this.aBoolean1984 = true; + + try { + this.flush(); + } catch (Exception var3) { + this.close(); + this.aLong1982 = TimeUtils.time() + 2000L; + } + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "vh.L(" + (byte) -78 + ')'); + } + } + + final void method2159() { + this.aBoolean1984 = true; + } + + void close() { + } + + private void method2161() { + try { + this.anInt1987 -= 256; + if (0 > this.anInt1987) { + this.anInt1987 = 0; + } + + if (null != this.aClass3_Sub24_1973) { + this.aClass3_Sub24_1973.method415(256); + } + + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "vh.K(" + 256 + ',' + 1 + ')'); + } + } + + final synchronized void method2163() { + try { + if (null != aAudioThread_2613) { + boolean var2 = true; + + for (int var3 = 0; var3 < 2; ++var3) { + if (this == aAudioThread_2613.channels[var3]) { + aAudioThread_2613.channels[var3] = null; + } + + if (null != aAudioThread_2613.channels[var3]) { + var2 = false; + } + } + + if (var2) { + aAudioThread_2613.aBoolean345 = true; + + while (aAudioThread_2613.aBoolean353) { + TimeUtils.sleep(50L); + } + + aAudioThread_2613 = null; + } + } + + this.close(); + this.samples = null; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "vh.P(" + false + ')'); + } + } + + void init(Component var1) throws Exception { + } + +} diff --git a/Client/src/main/java/org/runite/client/AudioHandler.java b/Client/src/main/java/org/runite/client/AudioHandler.java new file mode 100644 index 000000000..ba6bb71fa --- /dev/null +++ b/Client/src/main/java/org/runite/client/AudioHandler.java @@ -0,0 +1,173 @@ +package org.runite.client; + +import java.util.Objects; + +public final class AudioHandler { + + + public static int[] soundEffectDelayArray = new int[50]; + public static int musicVolume = 255; + static int currentSoundEffectCount = 0; + static int soundEffectVolume = 127; + static int currentTrack = -1; + static boolean musicEffectPlaying = false; + static int[] soundEffectVolumeArray = new int[50]; + static int[] soundEffectIDs = new int[50]; + static SynthSound[] soundEffects = new SynthSound[50]; + static int[] soundEffectCoordinates = new int[50]; + + public static void musicHandler(int var1) { + try { + if (-1 == var1 && !musicEffectPlaying) { + GameObject.method1870(); + } else if (var1 != -1 && (currentTrack != var1 || CSConfigCachefile.method1391(-1)) && musicVolume != 0 && !musicEffectPlaying) { + method2099(var1, CacheIndex.musicIndex, musicVolume); + } + currentTrack = var1; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "li.B(" + true + ',' + var1 + ')'); + } + } + + public static void soundEffectHandler(int soundEffectVolume, int soundEffectID, int soundEffectDelay) { + try { + System.out.println("Playing " + soundEffectID + " DELAY: " + soundEffectDelay + " VOLUME: " + soundEffectVolume); + if (soundEffectDelay != -1 && soundEffectVolume != 0 && currentSoundEffectCount < 50 && soundEffectID != -1) { + soundEffectVolumeArray[currentSoundEffectCount] = soundEffectVolume; + soundEffectIDs[currentSoundEffectCount] = soundEffectID; + soundEffectDelayArray[currentSoundEffectCount] = soundEffectDelay; + soundEffects[currentSoundEffectCount] = null; + soundEffectCoordinates[currentSoundEffectCount] = 0; + currentSoundEffectCount++; + } + + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "ca.C(" + soundEffectVolume + ',' + soundEffectID + ',' + soundEffectDelay + ',' + -799 + ')'); + } + } + + static void method132() { + try { + for (int var1 = 0; var1 < currentSoundEffectCount; ++var1) { + --soundEffectDelayArray[var1]; + if (soundEffectDelayArray[var1] < -10) { + --currentSoundEffectCount; + + for (int var2 = var1; var2 < currentSoundEffectCount; ++var2) { + soundEffectIDs[var2] = soundEffectIDs[var2 + 1]; + soundEffects[var2] = soundEffects[var2 + 1]; + soundEffectVolumeArray[var2] = soundEffectVolumeArray[1 + var2]; + soundEffectDelayArray[var2] = soundEffectDelayArray[1 + var2]; + soundEffectCoordinates[var2] = soundEffectCoordinates[var2 + 1]; + } + + --var1; + } else { + SynthSound var11 = soundEffects[var1]; + if (null == var11) { + var11 = SynthSound.create(CacheIndex.soundFXIndex, soundEffectIDs[var1], 0); + if (null == var11) { + continue; + } + + soundEffectDelayArray[var1] += var11.getStart(); + soundEffects[var1] = var11; + } + + if (0 > soundEffectDelayArray[var1]) { + int var3; + if (soundEffectCoordinates[var1] == 0) { + var3 = soundEffectVolume; + } else { + int var4 = (soundEffectCoordinates[var1] & 0xFF) * 128; + int var7 = soundEffectCoordinates[var1] >> 8 & 0xFF; + int var5 = soundEffectCoordinates[var1] >> 16 & 0xFF; + int var8 = -Class102.player.yAxis + 64 + 128 * var7; + if (var8 < 0) { + var8 = -var8; + } + + int var6 = -Class102.player.xAxis + 64 + var5 * 128; + if (0 > var6) { + var6 = -var6; + } + + int var9 = -128 + var6 + var8; + if (var9 > var4) { + soundEffectDelayArray[var1] = -100; + continue; + } + + if (var9 < 0) { + var9 = 0; + } + + var3 = Sprites.ambientVolume * (var4 + -var9) / var4; + } + + if (var3 > 0) { + PcmSound var12 = var11.toPCMSound().method151(Class27.resampler); + Class3_Sub24_Sub1 var13 = Class3_Sub24_Sub1.method437(var12, var3); + Objects.requireNonNull(var13).method429(soundEffectVolumeArray[var1] - 1); + Class3_Sub26.aClass3_Sub24_Sub2_2563.method457(var13); + } + + soundEffectDelayArray[var1] = -100; + } + } + } + + if (musicEffectPlaying && CSConfigCachefile.method1391(-1)) { + if (0 != musicVolume && currentTrack != -1) { + Class70.method1285(CacheIndex.musicIndex, currentTrack, musicVolume); + } + + musicEffectPlaying = false; + } else if (musicVolume != 0 && currentTrack != -1 && CSConfigCachefile.method1391((byte) -92 + 91)) { + TextureOperation12.outgoingBuffer.putOpcode(137); + TextureOperation12.outgoingBuffer.writeInt(currentTrack); + currentTrack = -1; + } + + } catch (RuntimeException var10) { + throw ClientErrorException.clientError(var10, "ed.C(" + (byte) -92 + ')'); + } + } + + public static void method2099(int var1, CacheIndex var3, int var5) { + try { + Class101.musicIndex_1423 = var3; + Class132.anInt1741 = 0; + TextureOperation8.anInt3463 = var1; + Unsorted.aBoolean2311 = false; + Unsorted.anInt154 = 1; + GraphicDefinition.anInt546 = 2; + + TextureOperation36.anInt3423 = var5; + } catch (RuntimeException var8) { + throw ClientErrorException.clientError(var8, "v.Q(" + true + ',' + var1 + ',' + 0 + ',' + (var3 != null ? "{...}" : "null") + ',' + false + ',' + var5 + ',' + 2 + ')'); + } + } + + static void method897(Class3_Sub24_Sub4 var1, CacheIndex var2, CacheIndex var3, CacheIndex var4) { + try { + Class124.soundFX3Index_1661 = var2; + Class40.soundFXIndex_679 = var4; + Class3_Sub28_Sub20.soundFX2Index_3786 = var3; + Class101.aClass3_Sub24_Sub4_1421 = var1; + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "ck.C(" + (var1 != null ? "{...}" : "null") + ',' + (var2 != null ? "{...}" : "null") + ',' + (var3 != null ? "{...}" : "null") + ',' + (var4 != null ? "{...}" : "null") + ')'); + } + } + + public static void musicEffectHandler(int var1) { + try { + if (musicVolume != 0 && var1 != -1) { + Class70.method1285(CacheIndex.music2Index, var1, musicVolume); + musicEffectPlaying = true; + } + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "wj.D(" + ',' + var1 + ',' + (byte) -1 + ')'); + } + } +} diff --git a/Client/src/main/java/org/runite/client/AudioThread.java b/Client/src/main/java/org/runite/client/AudioThread.java new file mode 100644 index 000000000..b5b1059a0 --- /dev/null +++ b/Client/src/main/java/org/runite/client/AudioThread.java @@ -0,0 +1,159 @@ +package org.runite.client; + +import java.util.Calendar; +import java.util.Date; + +public final class AudioThread implements Runnable { + + static short[][] aShortArrayArray344; + static int anInt4034 = -8 + (int) (17.0D * Math.random()); + static boolean aBoolean346; + public static int[] localNPCIndexes = new int[32768]; + static Class64 aClass64_351; + volatile boolean aBoolean345 = false; + Signlink aClass87_350; + volatile AudioChannel[] channels = new AudioChannel[2]; + volatile boolean aBoolean353 = false; + + + static boolean method888(int var0, ObjectDefinition var1, int var3, int var5, int var6) { + try { + MapSceneDefinition var7 = InterfaceWidget.c(var1.anInt1516); + if (var7.sprite == -1) { + return false; + } else { + if (var1.aBoolean1537) { + var6 += var1.anInt1478; + var6 &= 3; + } else { + var6 = 0; + } + + LDIndexedSprite var8 = var7.getSprite(var6); + if (var8 == null) { + return true; + } else { + int var9 = var1.SizeX; + int var10 = var1.SizeY; + if (1 == (1 & var6)) { + var9 = var1.SizeY; + var10 = var1.SizeX; + } + + int var11 = var8.anInt1469; + int var12 = var8.anInt1467; + if (var7.aBoolean69) { + var12 = 4 * var10; + var11 = 4 * var9; + } + + if (var7.color == 0) { + var8.method1677(var0 * 4 + 48, 48 + 4 * (-var10 + -var5 + 104), var11, var12); + } else { + var8.method1669(48 + 4 * var0, 4 * (-var10 + -var5 + 104) + 48, var11, var12, var7.color); + } + + return false; + } + } + } catch (RuntimeException var13) { + throw ClientErrorException.clientError(var13, "cj.D(" + var0 + ',' + (var1 != null ? "{...}" : "null") + ',' + false + ',' + var3 + ',' + 0 + ',' + var5 + ',' + var6 + ')'); + } + } + + static AbstractSprite[] method891(int var0) { + try { + AbstractSprite[] var1 = new AbstractSprite[Class95.anInt1338]; + if (var0 != -5) { + method894(113L); + } + + for (int var2 = 0; var2 < Class95.anInt1338; ++var2) { + int var3 = GroundItem.anIntArray2931[var2] * Unsorted.anIntArray3076[var2]; + byte[] var4 = Class163_Sub1.aByteArrayArray2987[var2]; + int[] var5 = new int[var3]; + + for (int var6 = 0; var6 < var3; ++var6) { + var5[var6] = TextureOperation38.spritePalette[Unsorted.bitwiseAnd(255, var4[var6])]; + } + + if (HDToolKit.highDetail) { + var1[var2] = new HDSprite(Class3_Sub15.anInt2426, Class133.anInt1748, Class164.anIntArray2048[var2], Unsorted.anIntArray2591[var2], GroundItem.anIntArray2931[var2], Unsorted.anIntArray3076[var2], var5); + } else { + var1[var2] = new SoftwareSprite(Class3_Sub15.anInt2426, Class133.anInt1748, Class164.anIntArray2048[var2], Unsorted.anIntArray2591[var2], GroundItem.anIntArray2931[var2], Unsorted.anIntArray3076[var2], var5); + } + } + + Class39.method1035((byte) 116); + return var1; + } catch (RuntimeException var7) { + throw ClientErrorException.clientError(var7, "cj.C(" + var0 + ')'); + } + } + + static RSString method894(long var0) { + try { + Class3_Sub28_Sub5.aCalendar3581.setTime(new Date(var0)); + int var3 = Class3_Sub28_Sub5.aCalendar3581.get(Calendar.DAY_OF_WEEK);//Day of the week + int var4 = Class3_Sub28_Sub5.aCalendar3581.get(Calendar.DATE); + int var5 = Class3_Sub28_Sub5.aCalendar3581.get(Calendar.MONTH); + int var6 = Class3_Sub28_Sub5.aCalendar3581.get(Calendar.YEAR); + int var7 = Class3_Sub28_Sub5.aCalendar3581.get(Calendar.HOUR_OF_DAY); + int var8 = Class3_Sub28_Sub5.aCalendar3581.get(Calendar.MINUTE); + int var9 = Class3_Sub28_Sub5.aCalendar3581.get(Calendar.SECOND); + return RSString.stringCombiner(new RSString[]{TextCore.DaysOfTheWeek[var3 + -1], RSString.parse(")1 "), RSString.stringAnimator(var4 / 10), RSString.stringAnimator(var4 % 10), TextCore.aString_2025, TextCore.MonthsOfTheYear[var5], TextCore.aString_2025, RSString.stringAnimator(var6), RSString.parse(" "), RSString.stringAnimator(var7 / 10), RSString.stringAnimator(var7 % 10), RSString.parse(":"), RSString.stringAnimator(var8 / 10), RSString.stringAnimator(var8 % 10), RSString.parse(":"), RSString.stringAnimator(var9 / 10), RSString.stringAnimator(var9 % 10), RSString.parse(" GMT")}); + } catch (RuntimeException var10) { + throw ClientErrorException.clientError(var10, "cj.F(" + var0 + ')'); + } + } + + static int[][] method895(int var4) { + try { + int[][] var9 = new int[256][64]; + TextureOperation34 var10 = new TextureOperation34(); + var10.anInt3062 = (int) ((float) 0.4 * 4096.0F); + var10.anInt3058 = 3; + var10.anInt3056 = 4; + var10.aBoolean3065 = false; + var10.anInt3060 = 8; + var10.postDecode(); + TextureOperation33.method180(122, 256, 64); + + for (int var11 = 0; var11 < 256; ++var11) { + var10.method186(var11, var9[var11]); + } + + return var9; + } catch (RuntimeException var12) { + throw ClientErrorException.clientError(var12, "cj.B(" + false + ',' + 3 + ',' + 64 + ',' + 256 + ',' + var4 + ',' + 4 + ',' + 8 + ',' + (float) 0.4 + ')'); + } + } + + public final void run() { + try { + this.aBoolean353 = true; + + try { + while (!this.aBoolean345) { + for (int var1 = 0; var1 < 2; ++var1) { + AudioChannel var2 = this.channels[var1]; + if (var2 != null) { + var2.method2153(); + } + } + + TimeUtils.sleep(10L); + Class81.method1400(this.aClass87_350, null, -71); + } + } catch (Exception var7) { + Class49.reportError(null, var7); + } finally { + this.aBoolean353 = false; + } + + } catch (RuntimeException var9) { + throw ClientErrorException.clientError(var9, "cj.run()"); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/BufferedDataStream.java b/Client/src/main/java/org/runite/client/BufferedDataStream.java new file mode 100644 index 000000000..3f4db6011 --- /dev/null +++ b/Client/src/main/java/org/runite/client/BufferedDataStream.java @@ -0,0 +1,1064 @@ +package org.runite.client; + +import org.rs09.SystemLogger; + +import java.util.Objects; + +public final class BufferedDataStream extends DataBuffer { + + public static BufferedDataStream incomingBuffer = new BufferedDataStream(); + static RSString[] aStringArray3802; + static int anInt872; + static int anInt2330 = 0; + static float aFloat3044; + static int anInt4037; + static int anInt1345; + static int anInt1407; + static int anInt1473; + static float aFloat1475; + static int anInt1736; + static int[] anIntArray2709 = new int[]{0, 1, 3, 7, 15, 31, 63, 127, 255, 511, 1023, 2047, 4095, 8191, 16383, 32767, 65535, 131071, 262143, 524287, 1048575, 2097151, 4194303, 8388607, 16777215, 33554431, 67108863, 134217727, 268435455, 536870911, 1073741823, Integer.MAX_VALUE, -1}; + static int anInt1971; + static int anInt3652; + private ISAACCipher isaacCipher; + static int[] anIntArray3804 = new int[256]; + static int[] anIntArray3805; + private int bitIndex; + + + static void addChatMessage(RSString var0, int type, RSString message, int var3) { + try { + MessageManager.sendGameMessage(var3, type, message, null, var0); + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "i.W(" + (var0 != null ? "{...}" : "null") + ',' + type + ',' + (message != null ? "{...}" : "null") + ',' + var3 + ')'); + } + } + + static void method806(int var1) { + try { + if (var1 >= 0) { + int var2 = Class117.anIntArray1613[var1]; + int var3 = Class27.anIntArray512[var1]; + int var4 = TextureOperation27.aShortArray3095[var1]; + if (var4 >= 2000) { + var4 -= 2000; + } + + long var6 = Unsorted.aLongArray3271[var1]; + int var5 = (int) Unsorted.aLongArray3271[var1]; + Player var8; + if (31 == var4) { + var8 = Unsorted.players[var5]; + if (null != var8) { + Class3_Sub28_Sub9.method582(Class102.player.yOffsets2755[0], 0, 1, false, 0, 2, var8.xOffsets2767[0], 1, 0, 2, var8.yOffsets2755[0], Class102.player.xOffsets2767[0]); + Class36.anInt638 = 2; + Unsorted.anInt2958 = 0; + Class70.anInt1053 = Class163_Sub1.anInt2993; + Unsorted.anInt4062 = Class38_Sub1.anInt2614; + TextureOperation12.outgoingBuffer.putOpcode(71); + TextureOperation12.outgoingBuffer.writeShort128LE(var5); + } + } + + if (var4 == 46) { + Class163_Sub2_Sub1.method2224(var6, var3, var2); + TextureOperation12.outgoingBuffer.putOpcode(247); + TextureOperation12.outgoingBuffer.writeShortLE(Texture.y1152 + var3); + TextureOperation12.outgoingBuffer.writeShort128LE(var2 + Class131.x1716); + TextureOperation12.outgoingBuffer.writeShort(Integer.MAX_VALUE & (int) (var6 >>> 32)); + } + + if (var4 == 40) { + TextureOperation12.outgoingBuffer.putOpcode(27); + TextureOperation12.outgoingBuffer.writeShort(anInt1473); + TextureOperation12.outgoingBuffer.writeIntLE2(var3); + TextureOperation12.outgoingBuffer.writeShortLE(var2); + TextureOperation12.outgoingBuffer.writeIntLE2(Class3_Sub28_Sub18.anInt3764); + TextureOperation12.outgoingBuffer.writeShort128LE(Class164.anInt2050); + TextureOperation12.outgoingBuffer.writeShort128LE(var5); + anInt2330 = 0; + Unsorted.aClass11_1933 = Unsorted.getRSInterface(var3); + KeyboardListener.anInt1918 = var2; + System.out.println(anInt1473 + ", " + var3 + ", " + var2 + ", " + Class3_Sub28_Sub18.anInt3764 + ", " + Class164.anInt2050 + ", " + var5); + } + + NPC var11; + if (var4 == 19) { + var11 = NPC.npcs[var5]; + if (null != var11) { + Class3_Sub28_Sub9.method582(Class102.player.yOffsets2755[0], 0, 1, false, 0, 2, var11.xOffsets2767[0], 1, 0, 2, var11.yOffsets2755[0], Class102.player.xOffsets2767[0]); + Class70.anInt1053 = Class163_Sub1.anInt2993; + Class36.anInt638 = 2; + Unsorted.anInt2958 = 0; + Unsorted.anInt4062 = Class38_Sub1.anInt2614; + TextureOperation12.outgoingBuffer.putOpcode(30); + TextureOperation12.outgoingBuffer.writeShort(var5); + } + } + + if (17 == var4) { + var11 = NPC.npcs[var5]; + if (var11 != null) { + Class3_Sub28_Sub9.method582(Class102.player.yOffsets2755[0], 0, 1, false, 0, 2, var11.xOffsets2767[0], 1, 0, 2, var11.yOffsets2755[0], Class102.player.xOffsets2767[0]); + Class70.anInt1053 = Class163_Sub1.anInt2993; + Unsorted.anInt2958 = 0; + Class36.anInt638 = 2; + Unsorted.anInt4062 = Class38_Sub1.anInt2614; + TextureOperation12.outgoingBuffer.putOpcode(78); + TextureOperation12.outgoingBuffer.writeShortLE(var5); + } + } + + if (var4 == 44) { + var8 = Unsorted.players[var5]; + if (null != var8) { + Class3_Sub28_Sub9.method582(Class102.player.yOffsets2755[0], 0, 1, false, 0, 2, var8.xOffsets2767[0], 1, 0, 2, var8.yOffsets2755[0], Class102.player.xOffsets2767[0]); + Class70.anInt1053 = Class163_Sub1.anInt2993; + Class36.anInt638 = 2; + Unsorted.anInt4062 = Class38_Sub1.anInt2614; + Unsorted.anInt2958 = 0; + TextureOperation12.outgoingBuffer.putOpcode(133); + TextureOperation12.outgoingBuffer.writeShortLE(var5); + } + } + + if (var4 == 58) { + TextureOperation12.outgoingBuffer.putOpcode(135); + TextureOperation12.outgoingBuffer.putShortA(var5); + TextureOperation12.outgoingBuffer.putShortA(var2); + TextureOperation12.outgoingBuffer.writeIntV2(var3); + anInt2330 = 0; + Unsorted.aClass11_1933 = Unsorted.getRSInterface(var3); + KeyboardListener.anInt1918 = var2; + } + + if (var4 == 42) { + Class163_Sub2_Sub1.method2224(var6, var3, var2); + TextureOperation12.outgoingBuffer.putOpcode(254); + TextureOperation12.outgoingBuffer.writeShortLE(var2 + Class131.x1716); + TextureOperation12.outgoingBuffer.putShortA((int) (var6 >>> 32) & Integer.MAX_VALUE); + TextureOperation12.outgoingBuffer.writeShort(var3 - -Texture.y1152); + } + + if (28 == var4) { + TextureOperation4.method264((byte) 122); + } + + if (var4 == 45) { + var11 = NPC.npcs[var5]; + if (var11 != null) { + Class3_Sub28_Sub9.method582(Class102.player.yOffsets2755[0], 0, 1, false, 0, 2, var11.xOffsets2767[0], 1, 0, 2, var11.yOffsets2755[0], Class102.player.xOffsets2767[0]); + Class70.anInt1053 = Class163_Sub1.anInt2993; + Class36.anInt638 = 2; + Unsorted.anInt2958 = 0; + Unsorted.anInt4062 = Class38_Sub1.anInt2614; + TextureOperation12.outgoingBuffer.putOpcode(239); + TextureOperation12.outgoingBuffer.writeIntLE2(anInt872); + TextureOperation12.outgoingBuffer.putShortA(RSInterface.anInt278); + TextureOperation12.outgoingBuffer.writeShort128LE(var5); + } + } + + boolean var14; + if (18 == var4) { + if (Class158.paramGameTypeID == 1) { + Class3_Sub28_Sub9.method582(Class102.player.yOffsets2755[0], 0, 1, false, 0, 2, var2, 1, 0, 2, var3, Class102.player.xOffsets2767[0]); + } else { + var14 = Class3_Sub28_Sub9.method582(Class102.player.yOffsets2755[0], 0, 0, false, 0, 2597 ^ 2599, var2, 0, 0, 2, var3, Class102.player.xOffsets2767[0]); + if (!var14) { + Class3_Sub28_Sub9.method582(Class102.player.yOffsets2755[0], 0, 1, false, 0, 2, var2, 1, 0, 2, var3, Class102.player.xOffsets2767[0]); + } + } + + Class70.anInt1053 = Class163_Sub1.anInt2993; + Unsorted.anInt2958 = 0; + Class36.anInt638 = 2; + Unsorted.anInt4062 = Class38_Sub1.anInt2614; + TextureOperation12.outgoingBuffer.putOpcode(66); + TextureOperation12.outgoingBuffer.writeShortLE(Class131.x1716 + var2); + TextureOperation12.outgoingBuffer.writeShort(var5); + TextureOperation12.outgoingBuffer.writeShort128LE(var3 - -Texture.y1152); + } + + if (var4 == 1001) { + Class163_Sub2_Sub1.method2224(var6, var3, var2); + TextureOperation12.outgoingBuffer.putOpcode(170); + TextureOperation12.outgoingBuffer.writeShort128LE(Integer.MAX_VALUE & (int) (var6 >>> 32)); + TextureOperation12.outgoingBuffer.writeShort128LE(var2 - -Class131.x1716); + TextureOperation12.outgoingBuffer.writeShort128LE(var3 - -Texture.y1152); + } + + if (var4 == 1002) { + Class36.anInt638 = 2; + Class70.anInt1053 = Class163_Sub1.anInt2993; + Unsorted.anInt4062 = Class38_Sub1.anInt2614; + Unsorted.anInt2958 = 0; + TextureOperation12.outgoingBuffer.putOpcode(92); + TextureOperation12.outgoingBuffer.writeShort128LE(var5); + } + + RSInterface var13; + if (var4 == 1006) { + var13 = Unsorted.getRSInterface(var3); + if (null != var13 && var13.itemIds[var2] >= 100000) { + addChatMessage(RSString.parse(""), 0, RSString.stringCombiner(new RSString[]{RSString.stringAnimator(var13.itemIds[var2]), TextCore.aString_3777, ItemDefinition.getItemDefinition(var5).name}), -1); + } else { + TextureOperation12.outgoingBuffer.putOpcode(92); + TextureOperation12.outgoingBuffer.writeShort128LE(var5); + } + + anInt2330 = 0; + Unsorted.aClass11_1933 = Unsorted.getRSInterface(var3); + KeyboardListener.anInt1918 = var2; + } + + if (var4 == 60) { + if (var5 == 0) { + Unsorted.method589(WorldListCountry.localPlane, var2, var3); + } else if (var5 == 1) { + if (0 < Player.rights && ObjectDefinition.aBooleanArray1490[82] && ObjectDefinition.aBooleanArray1490[81]) { + Class30.method979(Class131.x1716 + var2, Texture.y1152 + var3, WorldListCountry.localPlane); + } else if (Class3_Sub28_Sub9.method582(Class102.player.yOffsets2755[0], 0, 0, true, 0, 2, var2, 0, 0, 1, var3, Class102.player.xOffsets2767[0])) { + TextureOperation12.outgoingBuffer.writeByte(Class1.anInt56); + TextureOperation12.outgoingBuffer.writeByte(Class58.anInt916); + TextureOperation12.outgoingBuffer.writeShort(GraphicDefinition.CAMERA_DIRECTION); + TextureOperation12.outgoingBuffer.writeByte(57); + TextureOperation12.outgoingBuffer.writeByte(TextureOperation9.anInt3102); + TextureOperation12.outgoingBuffer.writeByte(Class164_Sub2.anInt3020); + TextureOperation12.outgoingBuffer.writeByte(89); + TextureOperation12.outgoingBuffer.writeShort(Class102.player.xAxis); + TextureOperation12.outgoingBuffer.writeShort(Class102.player.yAxis); + TextureOperation12.outgoingBuffer.writeByte(Class129.anInt1692); + TextureOperation12.outgoingBuffer.writeByte(63); + } + } + } + + if (1007 == var4) { + Unsorted.anInt2958 = 0; + Class36.anInt638 = 2; + Unsorted.anInt4062 = Class38_Sub1.anInt2614; + Class70.anInt1053 = Class163_Sub1.anInt2993; + var11 = NPC.npcs[var5]; + if (var11 != null) { + NPCDefinition var9 = var11.definition; + if (var9.childNPCs != null) { + var9 = var9.method1471((byte) 80); + } + + if (null != var9) { + TextureOperation12.outgoingBuffer.putOpcode(72); + TextureOperation12.outgoingBuffer.writeShort(var9.npcId); + } + } + } + + if (var4 == 47) { + if (MouseWheel.shiftDown) { + + TextureOperation12.outgoingBuffer.putOpcode(135); + TextureOperation12.outgoingBuffer.putShortA(var5); + TextureOperation12.outgoingBuffer.putShortA(var2); + TextureOperation12.outgoingBuffer.writeIntV2(var3); + anInt2330 = 0; + Unsorted.aClass11_1933 = Unsorted.getRSInterface(var3); + + + } else { + TextureOperation12.outgoingBuffer.putOpcode(156); + TextureOperation12.outgoingBuffer.writeShort128LE(var2); + TextureOperation12.outgoingBuffer.putShortA(var5); + TextureOperation12.outgoingBuffer.writeIntLE2(var3); + anInt2330 = 0; + Unsorted.aClass11_1933 = Unsorted.getRSInterface(var3); + } + KeyboardListener.anInt1918 = var2; + } + + if (var4 == 3) { + TextureOperation12.outgoingBuffer.putOpcode(253); + TextureOperation12.outgoingBuffer.writeIntLE2(anInt872); + TextureOperation12.outgoingBuffer.writeShort128LE(var2); + TextureOperation12.outgoingBuffer.writeIntLE2(var3); + TextureOperation12.outgoingBuffer.putShortA(var5); + TextureOperation12.outgoingBuffer.writeShortLE(RSInterface.anInt278); + anInt2330 = 0; + Unsorted.aClass11_1933 = Unsorted.getRSInterface(var3); + KeyboardListener.anInt1918 = var2; + } + + if (var4 == 10) { + var8 = Unsorted.players[var5]; + if (var8 != null) { + Class3_Sub28_Sub9.method582(Class102.player.yOffsets2755[0], 0, 1, false, 0, 2, var8.xOffsets2767[0], 1, 0, 2, var8.yOffsets2755[0], Class102.player.xOffsets2767[0]); + Class36.anInt638 = 2; + Unsorted.anInt4062 = Class38_Sub1.anInt2614; + Class70.anInt1053 = Class163_Sub1.anInt2993; + Unsorted.anInt2958 = 0; + TextureOperation12.outgoingBuffer.putOpcode(4); + TextureOperation12.outgoingBuffer.writeShortLE(var5); + } + } + + if (41 == var4 && TextureOperation27.aClass11_3087 == null) { + Unsorted.method78(var2, var3); + TextureOperation27.aClass11_3087 = AbstractSprite.method638(var3, var2); + Class20.method909(TextureOperation27.aClass11_3087); + } + + if (49 == var4) { + Class163_Sub2_Sub1.method2224(var6, var3, var2); + TextureOperation12.outgoingBuffer.putOpcode(84); + TextureOperation12.outgoingBuffer.writeShort128LE(Integer.MAX_VALUE & (int) (var6 >>> 32)); + TextureOperation12.outgoingBuffer.writeShort128LE(Texture.y1152 + var3); + TextureOperation12.outgoingBuffer.writeShortLE(var2 - -Class131.x1716); + } + + if (var4 == 23) { + TextureOperation12.outgoingBuffer.putOpcode(206); + TextureOperation12.outgoingBuffer.putShortA(var5);//itemId + TextureOperation12.outgoingBuffer.writeShortLE(var2);//data + TextureOperation12.outgoingBuffer.writeIntLE2(var3);//slot + anInt2330 = 0; + Unsorted.aClass11_1933 = Unsorted.getRSInterface(var3); + KeyboardListener.anInt1918 = var2; + } + + if (var4 == 14) { + Class163_Sub2_Sub1.method2224(var6, var3, var2); + TextureOperation12.outgoingBuffer.putOpcode(134); + TextureOperation12.outgoingBuffer.putShortA(Class131.x1716 + var2); + TextureOperation12.outgoingBuffer.writeShort(Class164.anInt2050); + TextureOperation12.outgoingBuffer.writeShortLE(var3 - -Texture.y1152); + TextureOperation12.outgoingBuffer.writeShort(anInt1473); + TextureOperation12.outgoingBuffer.writeIntV2(Class3_Sub28_Sub18.anInt3764); + TextureOperation12.outgoingBuffer.putShortA((int) (var6 >>> 32) & Integer.MAX_VALUE); + } + + if (var4 == 37) { + var8 = Unsorted.players[var5]; + if (var8 != null) { + Class3_Sub28_Sub9.method582(Class102.player.yOffsets2755[0], 0, 1, false, 0, 2, var8.xOffsets2767[0], 1, 0, 2, var8.yOffsets2755[0], Class102.player.xOffsets2767[0]); + Unsorted.anInt2958 = 0; + Class36.anInt638 = 2; + Unsorted.anInt4062 = Class38_Sub1.anInt2614; + Class70.anInt1053 = Class163_Sub1.anInt2993; + TextureOperation12.outgoingBuffer.putOpcode(114); + TextureOperation12.outgoingBuffer.writeShort128LE(var5); + } + } + + if (var4 == 9 || 1003 == var4) { + Unsorted.method66(Class163_Sub2_Sub1.aStringArray4016[var1], var2, var5, (byte) -19, var3); + } + + if (var4 == 5) { + if (MouseWheel.shiftDown) { + TextureOperation12.outgoingBuffer.putOpcode(135); + TextureOperation12.outgoingBuffer.putShortA(var5); + TextureOperation12.outgoingBuffer.putShortA(var2); + TextureOperation12.outgoingBuffer.writeIntV2(var3); + anInt2330 = 0; + Unsorted.aClass11_1933 = Unsorted.getRSInterface(var3); + + } else { + TextureOperation12.outgoingBuffer.putOpcode(55); + TextureOperation12.outgoingBuffer.writeShortLE(var5); + TextureOperation12.outgoingBuffer.putShortA(var2); + TextureOperation12.outgoingBuffer.writeIntV1(var3); + anInt2330 = 0; + Unsorted.aClass11_1933 = Unsorted.getRSInterface(var3); + + } + KeyboardListener.anInt1918 = var2; + } + + if (var4 == 21) { + if (Class158.paramGameTypeID == 1) { + Class3_Sub28_Sub9.method582(Class102.player.yOffsets2755[0], 0, 1, false, 0, 2597 + -2595, var2, 1, 0, 2, var3, Class102.player.xOffsets2767[0]); + } else { + var14 = Class3_Sub28_Sub9.method582(Class102.player.yOffsets2755[0], 0, 0, false, 0, 2597 + -2595, var2, 0, 0, 2, var3, Class102.player.xOffsets2767[0]); + if (!var14) { + Class3_Sub28_Sub9.method582(Class102.player.yOffsets2755[0], 0, 1, false, 0, 2597 + -2595, var2, 1, 0, 2, var3, Class102.player.xOffsets2767[0]); + } + } + + Class36.anInt638 = 2; + Class70.anInt1053 = Class163_Sub1.anInt2993; + Unsorted.anInt2958 = 0; + Unsorted.anInt4062 = Class38_Sub1.anInt2614; + TextureOperation12.outgoingBuffer.putOpcode(228); + TextureOperation12.outgoingBuffer.writeShort(var5); + TextureOperation12.outgoingBuffer.writeShortLE(Class131.x1716 + var2); + TextureOperation12.outgoingBuffer.writeShort128LE(Texture.y1152 + var3); + } + + if (var4 == 4) { + var11 = NPC.npcs[var5]; + if (var11 != null) { + Class3_Sub28_Sub9.method582(Class102.player.yOffsets2755[0], 0, 1, false, 0, 2, var11.xOffsets2767[0], 1, 0, 2, var11.yOffsets2755[0], Class102.player.xOffsets2767[0]); + Class36.anInt638 = 2; + Unsorted.anInt2958 = 0; + Unsorted.anInt4062 = Class38_Sub1.anInt2614; + Class70.anInt1053 = Class163_Sub1.anInt2993; + TextureOperation12.outgoingBuffer.putOpcode(148); + TextureOperation12.outgoingBuffer.putShortA(var5); + } + } + + if (32 == var4) { + var13 = AbstractSprite.method638(var3, var2); + if (null != var13) { + Class25.method958((byte) -126); + Class3_Sub1 var16 = Client.method44(var13); + Class145.method2074(var3, var2, var16.method101(), var16.anInt2202, var13.anInt266, var13.anInt238); + Class164_Sub1.anInt3012 = 0; + Class3_Sub28_Sub9.aString_3621 = Class53.method1174(var13, (byte) -94); + if (Class3_Sub28_Sub9.aString_3621 == null) { + Class3_Sub28_Sub9.aString_3621 = TextCore.aString_1915; + } + + if (var13.usingScripts) { + TextCore.aString_676 = RSString.stringCombiner(new RSString[]{var13.aString_277, ColorCore.ContextColor}); + } else { + TextCore.aString_676 = RSString.stringCombiner(new RSString[]{RSString.parse(""), var13.aString_243, ColorCore.ContextColor}); + } + } + + } else { + if (29 == var4) { + var8 = Unsorted.players[var5]; + if (null != var8) { + Class3_Sub28_Sub9.method582(Class102.player.yOffsets2755[0], 0, 1, false, 0, 2, var8.xOffsets2767[0], 1, 0, 2, var8.yOffsets2755[0], Class102.player.xOffsets2767[0]); + Unsorted.anInt4062 = Class38_Sub1.anInt2614; + Unsorted.anInt2958 = 0; + Class36.anInt638 = 2; + Class70.anInt1053 = Class163_Sub1.anInt2993; + TextureOperation12.outgoingBuffer.putOpcode(180); + TextureOperation12.outgoingBuffer.writeShort128LE(var5); + } + } + + if (var4 == 35) { + TextureOperation12.outgoingBuffer.putOpcode(161); + TextureOperation12.outgoingBuffer.writeIntLE2(var3); + TextureOperation12.outgoingBuffer.writeShort128LE(var5); + TextureOperation12.outgoingBuffer.writeShort128LE(var2); + anInt2330 = 0; + Unsorted.aClass11_1933 = Unsorted.getRSInterface(var3); + KeyboardListener.anInt1918 = var2; + } + + if (15 == var4) { + var8 = Unsorted.players[var5]; + if (var8 != null) { + Class3_Sub28_Sub9.method582(Class102.player.yOffsets2755[0], 0, 1, false, 0, 2, var8.xOffsets2767[0], 1, 0, 2, var8.yOffsets2755[0], Class102.player.xOffsets2767[0]); + Unsorted.anInt2958 = 0; + Class36.anInt638 = 2; + Class70.anInt1053 = Class163_Sub1.anInt2993; + Unsorted.anInt4062 = Class38_Sub1.anInt2614; + TextureOperation12.outgoingBuffer.putOpcode(195); + TextureOperation12.outgoingBuffer.putShortA(RSInterface.anInt278); + TextureOperation12.outgoingBuffer.writeIntLE2(anInt872); + TextureOperation12.outgoingBuffer.writeShort128LE(var5); + } + } + + if (34 == var4) { + if (Class158.paramGameTypeID == 1) { + Class3_Sub28_Sub9.method582(Class102.player.yOffsets2755[0], 0, 1, false, 0, 2, var2, 1, 0, 2, var3, Class102.player.xOffsets2767[0]); + } else { + var14 = Class3_Sub28_Sub9.method582(Class102.player.yOffsets2755[0], 0, 0, false, 0, 2597 ^ 2599, var2, 0, 0, 2, var3, Class102.player.xOffsets2767[0]); + if (!var14) { + Class3_Sub28_Sub9.method582(Class102.player.yOffsets2755[0], 0, 1, false, 0, 2, var2, 1, 0, 2, var3, Class102.player.xOffsets2767[0]); + } + } + + Class70.anInt1053 = Class163_Sub1.anInt2993; + Class36.anInt638 = 2; + Unsorted.anInt4062 = Class38_Sub1.anInt2614; + Unsorted.anInt2958 = 0; + TextureOperation12.outgoingBuffer.putOpcode(109); + TextureOperation12.outgoingBuffer.writeShortLE(var3 - -Texture.y1152); + TextureOperation12.outgoingBuffer.writeShort(var2 + Class131.x1716); + TextureOperation12.outgoingBuffer.writeShort128LE(var5); + } + + if (var4 == 25) { + TextureOperation12.outgoingBuffer.putOpcode(81); + TextureOperation12.outgoingBuffer.putShortA(var2); + TextureOperation12.outgoingBuffer.writeShort(var5); + TextureOperation12.outgoingBuffer.writeIntV1(var3); + anInt2330 = 0; + Unsorted.aClass11_1933 = Unsorted.getRSInterface(var3); + KeyboardListener.anInt1918 = var2; + } + + if (var4 == 2) { + var11 = NPC.npcs[var5]; + if (var11 != null) { + Class3_Sub28_Sub9.method582(Class102.player.yOffsets2755[0], 0, 1, false, 0, 2597 + -2595, var11.xOffsets2767[0], 1, 0, 2, var11.yOffsets2755[0], Class102.player.xOffsets2767[0]); + Unsorted.anInt4062 = Class38_Sub1.anInt2614; + Class36.anInt638 = 2; + Class70.anInt1053 = Class163_Sub1.anInt2993; + Unsorted.anInt2958 = 0; + TextureOperation12.outgoingBuffer.putOpcode(218); + TextureOperation12.outgoingBuffer.writeShortLE(var5); + } + } + + int var12; + if (var4 == 51) { + TextureOperation12.outgoingBuffer.putOpcode(10); + TextureOperation12.outgoingBuffer.writeInt(var3); + var13 = Unsorted.getRSInterface(var3); + if (Objects.requireNonNull(var13).childDataBuffers != null && var13.childDataBuffers[0][0] == 5) { + var12 = var13.childDataBuffers[0][1]; + if (ItemDefinition.ram[var12] != var13.anIntArray307[0]) { + ItemDefinition.ram[var12] = var13.anIntArray307[0]; + Class46.method1087(98, var12); + } + } + } + + if (var4 == 26) { + var11 = NPC.npcs[var5]; + if (var11 != null) { + Class3_Sub28_Sub9.method582(Class102.player.yOffsets2755[0], 0, 1, false, 0, 2, var11.xOffsets2767[0], 1, 0, 2, var11.yOffsets2755[0], Class102.player.xOffsets2767[0]); + Class36.anInt638 = 2; + Unsorted.anInt2958 = 0; + Unsorted.anInt4062 = Class38_Sub1.anInt2614; + Class70.anInt1053 = Class163_Sub1.anInt2993; + TextureOperation12.outgoingBuffer.putOpcode(115);//Item on NPC + TextureOperation12.outgoingBuffer.writeIntV2(Class3_Sub28_Sub18.anInt3764); + TextureOperation12.outgoingBuffer.writeShortLE(anInt1473); + TextureOperation12.outgoingBuffer.writeShortLE(var5); + TextureOperation12.outgoingBuffer.writeShort128LE(Class164.anInt2050); +// System.out.println(Class3_Sub28_Sub18.anInt3764 + ", " + Class110.anInt1473 + ", " + var5 + ", " + Class164.anInt2050); + } + } + + if (59 == var4) { + TextureOperation12.outgoingBuffer.putOpcode(10); + TextureOperation12.outgoingBuffer.writeInt(var3); + var13 = Unsorted.getRSInterface(var3); + if (Objects.requireNonNull(var13).childDataBuffers != null && var13.childDataBuffers[0][0] == 5) { + var12 = var13.childDataBuffers[0][1]; + ItemDefinition.ram[var12] = -ItemDefinition.ram[var12] + 1; + Class46.method1087(68, var12); + } + } + + if (var4 == 33) { + var14 = Class3_Sub28_Sub9.method582(Class102.player.yOffsets2755[0], 0, 0, false, 0, 2, var2, 0, 0, 2, var3, Class102.player.xOffsets2767[0]); + if (!var14) { + Class3_Sub28_Sub9.method582(Class102.player.yOffsets2755[0], 0, 1, false, 0, 2597 + -2595, var2, 1, 0, 2, var3, Class102.player.xOffsets2767[0]); + } + + Class70.anInt1053 = Class163_Sub1.anInt2993; + Unsorted.anInt2958 = 0; + Unsorted.anInt4062 = Class38_Sub1.anInt2614; + Class36.anInt638 = 2; + TextureOperation12.outgoingBuffer.putOpcode(101); + TextureOperation12.outgoingBuffer.writeShort128LE(var2 - -Class131.x1716); + TextureOperation12.outgoingBuffer.writeShortLE(anInt1473); + TextureOperation12.outgoingBuffer.writeShortLE(Class164.anInt2050); + TextureOperation12.outgoingBuffer.writeShortLE(var5); + TextureOperation12.outgoingBuffer.writeShort128LE(Texture.y1152 + var3); + TextureOperation12.outgoingBuffer.writeIntV2(Class3_Sub28_Sub18.anInt3764); + } + + if (var4 == 1004) { + Unsorted.anInt2958 = 0; + Class70.anInt1053 = Class163_Sub1.anInt2993; + Class36.anInt638 = 2; + Unsorted.anInt4062 = Class38_Sub1.anInt2614; + TextureOperation12.outgoingBuffer.putOpcode(94); + TextureOperation12.outgoingBuffer.writeShort128LE(var5); + } + + if (11 == var4) { + if (var5 == 0) { + CS2Script.anInt2440 = 1; + Unsorted.method589(WorldListCountry.localPlane, var2, var3); + } else if (1 == var5) { + TextureOperation12.outgoingBuffer.putOpcode(131); + TextureOperation12.outgoingBuffer.writeIntV2(anInt872); + TextureOperation12.outgoingBuffer.putShortA(Class131.x1716 + var2); + TextureOperation12.outgoingBuffer.writeShort128LE(RSInterface.anInt278); + TextureOperation12.outgoingBuffer.putShortA(var3 + Texture.y1152); + } + } + + if (8 == var4) { + var13 = Unsorted.getRSInterface(var3); + boolean var15 = true; + if (0 < Objects.requireNonNull(var13).anInt189) { + var15 = method715(var13); + } + + if (var15) { + TextureOperation12.outgoingBuffer.putOpcode(10); + TextureOperation12.outgoingBuffer.writeInt(var3); + } + } + + if (var4 == 1) { + var8 = Unsorted.players[var5]; + if (var8 != null) { + Class3_Sub28_Sub9.method582(Class102.player.yOffsets2755[0], 0, 1, false, 0, 2, var8.xOffsets2767[0], 1, 0, 2, var8.yOffsets2755[0], Class102.player.xOffsets2767[0]); + Unsorted.anInt2958 = 0; + Unsorted.anInt4062 = Class38_Sub1.anInt2614; + Class36.anInt638 = 2; + Class70.anInt1053 = Class163_Sub1.anInt2993; + TextureOperation12.outgoingBuffer.putOpcode(248); + TextureOperation12.outgoingBuffer.writeShort128LE(var5); + TextureOperation12.outgoingBuffer.writeShort(Class164.anInt2050); + TextureOperation12.outgoingBuffer.writeShort(anInt1473); + TextureOperation12.outgoingBuffer.writeIntV2(Class3_Sub28_Sub18.anInt3764); + } + } + + if (var4 == 7) { + TextureOperation12.outgoingBuffer.putOpcode(85); + TextureOperation12.outgoingBuffer.writeIntV1(var3); + TextureOperation12.outgoingBuffer.writeShort(var2); + TextureOperation12.outgoingBuffer.putShortA(var5); + anInt2330 = 0; + Unsorted.aClass11_1933 = Unsorted.getRSInterface(var3); + KeyboardListener.anInt1918 = var2; + } + + if (var4 == 24) { + if (Class158.paramGameTypeID == 1) { + Class3_Sub28_Sub9.method582(Class102.player.yOffsets2755[0], 0, 1, false, 0, 2597 + -2595, var2, 1, 0, 2, var3, Class102.player.xOffsets2767[0]); + } else { + var14 = Class3_Sub28_Sub9.method582(Class102.player.yOffsets2755[0], 0, 0, false, 0, 2, var2, 0, 0, 2, var3, Class102.player.xOffsets2767[0]); + if (!var14) { + Class3_Sub28_Sub9.method582(Class102.player.yOffsets2755[0], 0, 1, false, 0, 2, var2, 1, 0, 2, var3, Class102.player.xOffsets2767[0]); + } + } + + Class36.anInt638 = 2; + Unsorted.anInt4062 = Class38_Sub1.anInt2614; + Class70.anInt1053 = Class163_Sub1.anInt2993; + Unsorted.anInt2958 = 0; + TextureOperation12.outgoingBuffer.putOpcode(48); + TextureOperation12.outgoingBuffer.putShortA(var2 - -Class131.x1716); + TextureOperation12.outgoingBuffer.writeShort128LE(var5); + TextureOperation12.outgoingBuffer.writeShortLE(Texture.y1152 + var3); + } + + if (var4 == 38) { + Class163_Sub2_Sub1.method2224(var6, var3, var2); + TextureOperation12.outgoingBuffer.putOpcode(233); + TextureOperation12.outgoingBuffer.writeShort128LE(var3 + Texture.y1152); + TextureOperation12.outgoingBuffer.putShortA(Class131.x1716 + var2); + TextureOperation12.outgoingBuffer.writeShort128LE(RSInterface.anInt278); + TextureOperation12.outgoingBuffer.writeIntV1(anInt872); + TextureOperation12.outgoingBuffer.putShortA((int) (var6 >>> 32) & Integer.MAX_VALUE); + } + + if (var4 == 13) { + TextureOperation12.outgoingBuffer.putOpcode(6); + TextureOperation12.outgoingBuffer.writeInt(var3); + TextureOperation12.outgoingBuffer.putShortA(var2); + TextureOperation12.outgoingBuffer.writeShortLE(var5); + anInt2330 = 0; + Unsorted.aClass11_1933 = Unsorted.getRSInterface(var3); + KeyboardListener.anInt1918 = var2; + } + + if (57 == var4) { + var8 = Unsorted.players[var5]; + if (null != var8) { + Class3_Sub28_Sub9.method582(Class102.player.yOffsets2755[0], 0, 1, false, 0, 2, var8.xOffsets2767[0], 1, 0, 2, var8.yOffsets2755[0], Class102.player.xOffsets2767[0]); + Class36.anInt638 = 2; + Unsorted.anInt4062 = Class38_Sub1.anInt2614; + Class70.anInt1053 = Class163_Sub1.anInt2993; + Unsorted.anInt2958 = 0; + TextureOperation12.outgoingBuffer.putOpcode(175); + TextureOperation12.outgoingBuffer.putShortA(var5); + } + } + + if (var4 == 22) { + + if (MouseWheel.shiftDown) { + TextureOperation12.outgoingBuffer.putOpcode(135); + TextureOperation12.outgoingBuffer.putShortA(var5); + TextureOperation12.outgoingBuffer.putShortA(var2); + TextureOperation12.outgoingBuffer.writeIntV2(var3); + anInt2330 = 0; + Unsorted.aClass11_1933 = Unsorted.getRSInterface(var3); + KeyboardListener.anInt1918 = var2; + + } else { + + Class25.method958((byte) -86); + var13 = Unsorted.getRSInterface(var3); + Class3_Sub28_Sub18.anInt3764 = var3; + anInt1473 = var2; + Class164_Sub1.anInt3012 = 1; + Class164.anInt2050 = var5; + Class20.method909(var13); + RenderAnimationDefinition.aString_378 = RSString.stringCombiner(new RSString[]{ + ColorCore.ContextColor2, ItemDefinition.getItemDefinition(var5).name, ColorCore.ContextColor + }); + + } + } else { + if (var4 == 50) { + Class163_Sub2_Sub1.method2224(var6, var3, var2); + TextureOperation12.outgoingBuffer.putOpcode(194); + TextureOperation12.outgoingBuffer.writeShort128LE(var3 + Texture.y1152); + TextureOperation12.outgoingBuffer.writeShortLE(Class131.x1716 + var2); + TextureOperation12.outgoingBuffer.writeShort((int) (var6 >>> 32) & Integer.MAX_VALUE); + } + + if (var4 == 48) { + TextureOperation12.outgoingBuffer.putOpcode(154); + TextureOperation12.outgoingBuffer.writeShortLE(var2); + TextureOperation12.outgoingBuffer.writeIntV1(var3); + TextureOperation12.outgoingBuffer.writeShort128LE(var5); + anInt2330 = 0; + Unsorted.aClass11_1933 = Unsorted.getRSInterface(var3); + KeyboardListener.anInt1918 = var2; + } + + if (var4 == 30) { + var8 = Unsorted.players[var5]; + if (null != var8) { + Class3_Sub28_Sub9.method582(Class102.player.yOffsets2755[0], 0, 1, false, 0, 2, var8.xOffsets2767[0], 1, 0, 2, var8.yOffsets2755[0], Class102.player.xOffsets2767[0]); + Unsorted.anInt2958 = 0; + Class70.anInt1053 = Class163_Sub1.anInt2993; + Unsorted.anInt4062 = Class38_Sub1.anInt2614; + Class36.anInt638 = 2; + TextureOperation12.outgoingBuffer.putOpcode(68); + TextureOperation12.outgoingBuffer.writeShort128LE(var5); + } + } + + if (var4 == 43) { + TextureOperation12.outgoingBuffer.putOpcode(153); + TextureOperation12.outgoingBuffer.writeIntLE2(var3); + TextureOperation12.outgoingBuffer.writeShortLE(var2); + TextureOperation12.outgoingBuffer.writeShortLE(var5); + anInt2330 = 0; + Unsorted.aClass11_1933 = Unsorted.getRSInterface(var3); + KeyboardListener.anInt1918 = var2; + } + + if (var4 == 39) { + var14 = Class3_Sub28_Sub9.method582(Class102.player.yOffsets2755[0], 0, 0, false, 0, 2, var2, 0, 0, 2, var3, Class102.player.xOffsets2767[0]); + if (!var14) { + Class3_Sub28_Sub9.method582(Class102.player.yOffsets2755[0], 0, 1, false, 0, 2, var2, 1, 0, 2, var3, Class102.player.xOffsets2767[0]); + } + + Unsorted.anInt4062 = Class38_Sub1.anInt2614; + Class70.anInt1053 = Class163_Sub1.anInt2993; + Class36.anInt638 = 2; + Unsorted.anInt2958 = 0; + TextureOperation12.outgoingBuffer.putOpcode(73); + TextureOperation12.outgoingBuffer.writeIntV1(anInt872); + TextureOperation12.outgoingBuffer.writeShort(Texture.y1152 + var3); + TextureOperation12.outgoingBuffer.writeShort128LE(var5); + TextureOperation12.outgoingBuffer.writeShort128LE(var2 + Class131.x1716); + TextureOperation12.outgoingBuffer.writeShortLE(RSInterface.anInt278); + } + + if (var4 == 12) { + TextureOperation12.outgoingBuffer.putOpcode(82); + TextureOperation12.outgoingBuffer.writeShort(RSInterface.anInt278); + TextureOperation12.outgoingBuffer.writeIntV1(var3); + TextureOperation12.outgoingBuffer.writeInt(anInt872); + TextureOperation12.outgoingBuffer.writeShort128LE(var2); + } + + if (var4 == 36) { + if (var5 == 0) { + ObjectDefinition.anInt1521 = 1; + Unsorted.method589(WorldListCountry.localPlane, var2, var3); + } else if (Player.rights > 0 && ObjectDefinition.aBooleanArray1490[82] && ObjectDefinition.aBooleanArray1490[81]) { + Class30.method979(var2 + Class131.x1716, Texture.y1152 - -var3, WorldListCountry.localPlane); + } else { + TextureOperation12.outgoingBuffer.putOpcode(179); + TextureOperation12.outgoingBuffer.writeShort(var3 + Texture.y1152); + TextureOperation12.outgoingBuffer.writeShort(var2 + Class131.x1716); + } + } + + if (6 == var4) { + var8 = Unsorted.players[var5]; + if (var8 != null) { + Class3_Sub28_Sub9.method582(Class102.player.yOffsets2755[0], 0, 1, false, 0, 2, var8.xOffsets2767[0], 1, 0, 2, var8.yOffsets2755[0], Class102.player.xOffsets2767[0]); + Unsorted.anInt4062 = Class38_Sub1.anInt2614; + Unsorted.anInt2958 = 0; + Class36.anInt638 = 2; + Class70.anInt1053 = Class163_Sub1.anInt2993; + TextureOperation12.outgoingBuffer.putOpcode(106); + TextureOperation12.outgoingBuffer.writeShort(var5); + } + } + + if (var4 == 20) { + if (1 == Class158.paramGameTypeID) { + Class3_Sub28_Sub9.method582(Class102.player.yOffsets2755[0], 0, 1, false, 0, 2, var2, 1, 0, 2, var3, Class102.player.xOffsets2767[0]); + } else { + var14 = Class3_Sub28_Sub9.method582(Class102.player.yOffsets2755[0], 0, 0, false, 0, 2, var2, 0, 0, 2, var3, Class102.player.xOffsets2767[0]); + if (!var14) { + Class3_Sub28_Sub9.method582(Class102.player.yOffsets2755[0], 0, 1, false, 0, 2, var2, 1, 0, 2, var3, Class102.player.xOffsets2767[0]); + } + } + + Unsorted.anInt4062 = Class38_Sub1.anInt2614; + Unsorted.anInt2958 = 0; + Class70.anInt1053 = Class163_Sub1.anInt2993; + Class36.anInt638 = 2; + TextureOperation12.outgoingBuffer.putOpcode(33); + TextureOperation12.outgoingBuffer.writeShort(var5); + TextureOperation12.outgoingBuffer.writeShort(Class131.x1716 + var2); + TextureOperation12.outgoingBuffer.writeShortLE(Texture.y1152 + var3); + } + + if (var4 == 16) { + var11 = NPC.npcs[var5]; + if (null != var11) { + Class3_Sub28_Sub9.method582(Class102.player.yOffsets2755[0], 0, 1, false, 0, 2, var11.xOffsets2767[0], 1, 0, 2, var11.yOffsets2755[0], Class102.player.xOffsets2767[0]); + Class70.anInt1053 = Class163_Sub1.anInt2993; + Unsorted.anInt2958 = 0; + Unsorted.anInt4062 = Class38_Sub1.anInt2614; + Class36.anInt638 = 2; + TextureOperation12.outgoingBuffer.putOpcode(3); + TextureOperation12.outgoingBuffer.writeShort128LE(var5); + } + } + + if (Class164_Sub1.anInt3012 != 0) { + Class164_Sub1.anInt3012 = 0; + Class20.method909(Unsorted.getRSInterface(Class3_Sub28_Sub18.anInt3764)); + } + + if (GameObject.aBoolean1837) { + Class25.method958((byte) -36); + } + + if (Unsorted.aClass11_1933 != null && anInt2330 == 0) { + Class20.method909(Unsorted.aClass11_1933); + } + + } + } + } + } catch (RuntimeException var10) { + throw ClientErrorException.clientError(var10, "i.E(" + 2597 + ',' + var1 + ')'); + } + } + + static boolean method715(RSInterface var1) { + try { + if (205 == var1.anInt189) { + Class159.anInt2023 = 250; + return true; + } else { + return false; + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "ud.B(" + 205 + ',' + "null" + ')'); + } + } + + final void setBitAccess() { + try { + this.bitIndex = this.index * 8; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "i.R(" + ')'); + } + } + + public BufferedDataStream() { + super(5000); + } + + static int method809(int var0, int var1, int var2, int var3) { + try { + if (TextureOperation14.aBoolean3387) { + var0 = 1000000; + TextureOperation14.aBoolean3387 = false; + } + + AtmosphereParser var5 = AtmosphereParser.aAtmosphereParserArrayArray1581[var3][var1]; + float var7 = ((float) var2 * 0.1F + 0.7F) * var5.aFloat1187; + float var8 = var5.aFloat1190; + int var6 = var5.anInt1177; + int var11 = var5.anInt1184; + int var10 = var5.anInt1175; + if (!Class38.aBoolean661) { + var11 = 0; + } + + float var9 = var5.aFloat1189; + if (var6 != Class60.anInt932 || Class3_Sub17.aFloat2457 != var7 || aFloat3044 != var8 || var9 != RSInterface.aFloat246 || anInt1345 != var10 || anInt1736 != var11) { + Class3_Sub17.aFloat2457 = var7; + TextureOperation36.aFloat3435 = TextureOperation36.aFloat3424; + TextureOperation9.aFloat3105 = Class30.aFloat578; + Class60.anInt932 = var6; + anInt1971 = anInt3652; + anInt1407 = Unsorted.anInt689; + RSInterface.aFloat246 = var9; + Unsorted.anInt72 = 0; + anInt4037 = Unsorted.anInt1950; + anInt1736 = var11; + aFloat3044 = var8; + anInt1345 = var10; + aFloat1475 = Class12.aFloat319; + } + + if (65536 > Unsorted.anInt72) { + Unsorted.anInt72 += 250 * var0; + if (Unsorted.anInt72 >= 65536) { + Unsorted.anInt72 = 65536; + } + + float var15 = (float) Unsorted.anInt72 / 65536.0F; + int var13 = Unsorted.anInt72 >> 8; + int var12 = -Unsorted.anInt72 + 65536 >> 8; + anInt3652 = (-16711936 & var13 * (anInt1345 & 16711935) + (16711935 & anInt1971) * var12) + (16711680 & var12 * (anInt1971 & 65280) + (65280 & anInt1345) * var13) >> 8; + float var14 = (float) (65536 - Unsorted.anInt72) / 65536.0F; + Class30.aFloat578 = var14 * TextureOperation9.aFloat3105 + var15 * Class3_Sub17.aFloat2457; + TextureOperation36.aFloat3424 = TextureOperation36.aFloat3435 * var14 + var15 * aFloat3044; + Class12.aFloat319 = var15 * RSInterface.aFloat246 + var14 * aFloat1475; + Unsorted.anInt1950 = (16711680 & (Class60.anInt932 & 65280) * var13 + var12 * (anInt4037 & 65280)) + ((16711935 & anInt4037) * var12 - -((Class60.anInt932 & 16711935) * var13) & -16711936) >> 8; + Unsorted.anInt689 = var13 * anInt1736 + var12 * anInt1407 >> 8; + } + + Class92.setLightParams(Unsorted.anInt1950, Class30.aFloat578, TextureOperation36.aFloat3424, Class12.aFloat319); + Class92.setFogValues(anInt3652, Unsorted.anInt689); + + Class92.setLightPosition((float) Class46.anInt741, (float) TextureOperation1.anInt3274, (float) AtmosphereParser.anInt1191); + Class92.method1504(); + return anInt3652; + } catch (RuntimeException var16) { + throw ClientErrorException.clientError(var16, "i.F(" + var0 + ',' + var1 + ',' + var2 + ',' + var3 + ',' + 1 + ')'); + } + } + + static int method810(int var1) { + return 255 & var1; + } + + final void method811(byte var1, int var2, byte[] var3, int var4) { + try { + if (var1 < 16) { + addChatMessage(null, 126, null, -28); + } + + for (int var5 = 0; var5 < var4; ++var5) { + var3[var2 + var5] = (byte) (this.buffer[this.index++] + -this.isaacCipher.nextOpcode()); + } + + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "i.S(" + var1 + ',' + var2 + ',' + (var3 != null ? "{...}" : "null") + ',' + var4 + ')'); + } + } + + final int getBits(int var2) { + try { + int var3 = this.bitIndex >> 3; + int var4 = 8 + -(7 & this.bitIndex); + int var5 = 0; + this.bitIndex += var2; + while (var2 > var4) { + var5 += (anIntArray2709[var4] & this.buffer[var3++]) << -var4 + var2; + var2 -= var4; + var4 = 8; + } + + if (var2 == var4) { + var5 += this.buffer[var3] & anIntArray2709[var4]; + } else { + var5 += this.buffer[var3] >> var4 - var2 & anIntArray2709[var2]; + } + + return var5; + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "i.C(" + (byte) -11 + ',' + var2 + ')'); + } + } + + final void method814(int[] var1) { + try { + this.isaacCipher = new ISAACCipher(var1); + + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "i.T(" + (var1 != null ? "{...}" : "null") + ',' + false + ')'); + } + } + + final int method815(int var1) { + try { + + return var1 * 8 - this.bitIndex; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "i.U(" + var1 + ',' + 32666 + ')'); + } + } + + public final void putOpcode(int opcode) { + if (buffer == null || isaacCipher == null) { + SystemLogger.logInfo("Buffer/cipher null. ISAAC likely disabled or not implemented."); + return; + } + this.buffer[this.index++] = (byte) (opcode + this.isaacCipher.nextOpcode()); + } + + public final int getOpcode() { + try { + return 255 & this.buffer[this.index++] - this.isaacCipher.nextOpcode(); + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "i.P(" + 0 + ')'); + } + } + + final void setByteAccess() { + try { + this.index = (this.bitIndex + 7) / 8; + + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "i.Q(" + false + ')'); + } + } + + static void method819() { + try { + Class3_Sub31 var1 = TextureOperation23.aHashTable_3208.first(); + for (; var1 != null; var1 = TextureOperation23.aHashTable_3208.next()) { + int var2 = var1.anInt2602; + if (Unsorted.loadInterface(var2)) { + boolean var3 = true; + RSInterface[] var4 = GameObject.interfaces1834[var2]; + + int var5; + for (var5 = 0; var5 < var4.length; ++var5) { + if (var4[var5] != null) { + var3 = var4[var5].usingScripts; + break; + } + } + + if (!var3) { + var5 = (int) var1.linkableKey; + RSInterface var6 = Unsorted.getRSInterface(var5); + if (null != var6) { + Class20.method909(var6); + } + } + } + } + + } catch (RuntimeException var7) { + throw ClientErrorException.clientError(var7, "i.A(" + false + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Bzip2Context.java b/Client/src/main/java/org/runite/client/Bzip2Context.java new file mode 100644 index 000000000..8d835a05f --- /dev/null +++ b/Client/src/main/java/org/runite/client/Bzip2Context.java @@ -0,0 +1,36 @@ +package org.runite.client; + +final class Bzip2Context { + int[][] anIntArrayArray108 = new int[6][258]; + byte[] aByteArray109 = new byte[4096]; + int[][] anIntArrayArray110 = new int[6][258]; + byte aByte111; + boolean[] aBooleanArray112 = new boolean[256]; + byte[] aByteArray114 = new byte[256]; + int[][] anIntArrayArray115 = new int[6][258]; + int anInt116 = 0; + byte[] aByteArray117; + int anInt118 = 0; + int anInt121; + int[] anIntArray122 = new int[257]; + int[] anIntArray123 = new int[16]; + boolean[] aBooleanArray124 = new boolean[16]; + int anInt126; + byte[] aByteArray127; + int anInt128; + int anInt129; + byte[] aByteArray130 = new byte[18002]; + int anInt131; + int anInt133; + int[] anIntArray134 = new int[256]; + int anInt135; + int anInt137; + int[] anIntArray138 = new int[6]; + byte[] aByteArray139 = new byte[18002]; + int anInt140; + int anInt141; + int anInt142; + int anInt143; + byte[][] aByteArrayArray146 = new byte[6][258]; + int anInt147; +} diff --git a/Client/src/main/java/org/runite/client/Bzip2Decompressor.java b/Client/src/main/java/org/runite/client/Bzip2Decompressor.java new file mode 100644 index 000000000..fdb618077 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Bzip2Decompressor.java @@ -0,0 +1,554 @@ +package org.runite.client; + +public final class Bzip2Decompressor { + + private static final Bzip2Context context = new Bzip2Context(); + + + private static int method1633(int var0, Bzip2Context var1) { + while(var1.anInt128 < var0) { + var1.anInt140 = var1.anInt140 << 8 | var1.aByteArray127[var1.anInt116] & 0xFF; + var1.anInt128 += 8; + ++var1.anInt116; + ++var1.anInt147; + } + + int var3 = var1.anInt140 >> var1.anInt128 - var0 & (1 << var0) - 1; + var1.anInt128 -= var0; + return var3; + } + + private static void method1634(Bzip2Context var0) { + byte var2 = var0.aByte111; + int var3 = var0.anInt143; + int var4 = var0.anInt131; + int var5 = var0.anInt129; + int[] var6 = Class129.anIntArray1690; + int var7 = var0.anInt133; + byte[] var8 = var0.aByteArray117; + int var9 = var0.anInt118; + int var10 = var0.anInt126; + int var12 = var0.anInt121 + 1; + + label67: + while(true) { + if(var3 > 0) { + while(true) { + if(var10 == 0) { + break label67; + } + + if(var3 == 1) { + + var8[var9] = var2; + ++var9; + --var10; + break; + } + + var8[var9] = var2; + --var3; + ++var9; + --var10; + } + } + + boolean var14 = true; + + byte var1; + while(var14) { + var14 = false; + if(var4 == var12) { + var3 = 0; + break label67; + } + + var2 = (byte)var5; + var7 = var6[var7]; + var1 = (byte)(var7 & 0xFF); + var7 >>= 8; + ++var4; + if(var1 != var5) { + var5 = var1; + if(var10 == 0) { + var3 = 1; + break label67; + } + + var8[var9] = var2; + ++var9; + --var10; + var14 = true; + } else if(var4 == var12) { + if(var10 == 0) { + var3 = 1; + break label67; + } + + var8[var9] = var2; + ++var9; + --var10; + var14 = true; + } + } + + var3 = 2; + var7 = var6[var7]; + var1 = (byte)(var7 & 0xFF); + var7 >>= 8; + ++var4; + if(var4 != var12) { + if(var1 == var5) { + var3 = 3; + var7 = var6[var7]; + var1 = (byte)(var7 & 0xFF); + var7 >>= 8; + ++var4; + if(var4 != var12) { + if(var1 == var5) { + var7 = var6[var7]; + var1 = (byte)(var7 & 0xFF); + var7 >>= 8; + ++var4; + var3 = (var1 & 0xFF) + 4; + var7 = var6[var7]; + var5 = (byte)(var7 & 0xFF); + var7 >>= 8; + ++var4; + } else { + var5 = var1; + } + } + } else { + var5 = var1; + } + } + } + + var0.aByte111 = var2; + var0.anInt143 = var3; + var0.anInt131 = var4; + var0.anInt129 = var5; + Class129.anIntArray1690 = var6; + var0.anInt133 = var7; + var0.aByteArray117 = var8; + var0.anInt118 = var9; + var0.anInt126 = var10; + } + + private static void method1635(int[] var0, int[] var1, int[] var2, byte[] var3, int var4, int var5, int var6) { + int var7 = 0; + + int var8; + for(var8 = var4; var8 <= var5; ++var8) { + for(int var9 = 0; var9 < var6; ++var9) { + if(var3[var9] == var8) { + var2[var7] = var9; + ++var7; + } + } + } + + for(var8 = 0; var8 < 23; ++var8) { + var1[var8] = 0; + } + + for(var8 = 0; var8 < var6; ++var8) { + ++var1[var3[var8] + 1]; + } + + for(var8 = 1; var8 < 23; ++var8) { + var1[var8] += var1[var8 - 1]; + } + + for(var8 = 0; var8 < 23; ++var8) { + var0[var8] = 0; + } + + int var10 = 0; + + for(var8 = var4; var8 <= var5; ++var8) { + var10 += var1[var8 + 1] - var1[var8]; + var0[var8] = var10 - 1; + var10 <<= 1; + } + + for(var8 = var4 + 1; var8 <= var5; ++var8) { + var1[var8] = (var0[var8 - 1] + 1 << 1) - var1[var8]; + } + + } + + private static void method1636(Bzip2Context var0) { + var0.anInt137 = 0; + + for(int var1 = 0; var1 < 256; ++var1) { + if(var0.aBooleanArray112[var1]) { + var0.aByteArray114[var0.anInt137] = (byte)var1; + ++var0.anInt137; + } + } + + } + + private static byte method1637(Bzip2Context var0) { + return (byte)method1633(8, var0); + } + + private static void method1638(Bzip2Context var0) { + int var22; + int[] var23; + int[] var24; + int[] var25; + var0.anInt142 = 1; + if(Class129.anIntArray1690 == null) { + Class129.anIntArray1690 = new int[var0.anInt142 * 100000]; + } + + boolean var26 = true; + + while(var26) { + byte var1 = method1637(var0); + if(var1 == 23) { + return; + } + + var1 = method1637(var0); + var1 = method1637(var0); + var1 = method1637(var0); + var1 = method1637(var0); + var1 = method1637(var0); + var1 = method1637(var0); + var1 = method1637(var0); + var1 = method1637(var0); + var1 = method1637(var0); + var1 = method1639(var0); + + var0.anInt135 = 0; + var1 = method1637(var0); + var0.anInt135 = var0.anInt135 << 8 | var1 & 0xFF; + var1 = method1637(var0); + var0.anInt135 = var0.anInt135 << 8 | var1 & 0xFF; + var1 = method1637(var0); + var0.anInt135 = var0.anInt135 << 8 | var1 & 0xFF; + + int var35; + for(var35 = 0; var35 < 16; ++var35) { + var1 = method1639(var0); + var0.aBooleanArray124[var35] = var1 == 1; + } + + for(var35 = 0; var35 < 256; ++var35) { + var0.aBooleanArray112[var35] = false; + } + + int var36; + for(var35 = 0; var35 < 16; ++var35) { + if(var0.aBooleanArray124[var35]) { + for(var36 = 0; var36 < 16; ++var36) { + var1 = method1639(var0); + if(var1 == 1) { + var0.aBooleanArray112[var35 * 16 + var36] = true; + } + } + } + } + + method1636(var0); + int var38 = var0.anInt137 + 2; + int var39 = method1633(3, var0); + int var40 = method1633(15, var0); + var35 = 0; + + while(var35 < var40) { + var36 = 0; + + while(true) { + var1 = method1639(var0); + if(var1 == 0) { + var0.aByteArray139[var35] = (byte)var36; + ++var35; + break; + } + + ++var36; + } + } + + byte[] var27 = new byte[6]; + + byte var29; + for(var29 = 0; var29 < var39; var27[var29] = var29++) { + } + + for(var35 = 0; var35 < var40; ++var35) { + var29 = var0.aByteArray139[var35]; + + byte var28; + for(var28 = var27[var29]; var29 > 0; --var29) { + var27[var29] = var27[var29 - 1]; + } + + var27[0] = var28; + var0.aByteArray130[var35] = var28; + } + + int var37; + for(var37 = 0; var37 < var39; ++var37) { + int var49 = method1633(5, var0); + var35 = 0; + + while(var35 < var38) { + while(true) { + var1 = method1639(var0); + if(var1 == 0) { + var0.aByteArrayArray146[var37][var35] = (byte)var49; + ++var35; + break; + } + + var1 = method1639(var0); + if(var1 == 0) { + ++var49; + } else { + --var49; + } + } + } + } + + for(var37 = 0; var37 < var39; ++var37) { + byte var2 = 32; + byte var3 = 0; + + for(var35 = 0; var35 < var38; ++var35) { + if(var0.aByteArrayArray146[var37][var35] > var3) { + var3 = var0.aByteArrayArray146[var37][var35]; + } + + if(var0.aByteArrayArray146[var37][var35] < var2) { + var2 = var0.aByteArrayArray146[var37][var35]; + } + } + + method1635(var0.anIntArrayArray115[var37], var0.anIntArrayArray108[var37], var0.anIntArrayArray110[var37], var0.aByteArrayArray146[var37], var2, var3, var38); + var0.anIntArray138[var37] = var2; + } + + int var42 = var0.anInt137 + 1; + int var41 = -1; + byte var43; + + for(var35 = 0; var35 <= 255; ++var35) { + var0.anIntArray134[var35] = 0; + } + + int var56 = 4095; + + int var55; + int var54; + for(var55 = 15; var55 >= 0; --var55) { + for(var54 = 15; var54 >= 0; --var54) { + var0.aByteArray109[var56] = (byte)(var55 * 16 + var54); + --var56; + } + + var0.anIntArray123[var55] = var56 + 1; + } + + int var47 = 0; + byte var53; + ++var41; + var43 = 50; + var53 = var0.aByteArray130[var41]; + var22 = var0.anIntArray138[var53]; + var23 = var0.anIntArrayArray115[var53]; + var25 = var0.anIntArrayArray110[var53]; + var24 = var0.anIntArrayArray108[var53]; + + int var45 = var43 - 1; + int var51 = var22; + + int var50; + byte var52; + for(var50 = method1633(var22, var0); var50 > var23[var51]; var50 = var50 << 1 | var52) { + ++var51; + var52 = method1639(var0); + } + + int var44 = var25[var50 - var24[var51]]; + + while(var44 != var42) { + if(var44 == 0 || var44 == 1) { + int var46 = -1; + int var48 = 1; + + do { + if(var44 == 0) { + var46 += var48; + } else { + var46 += 2 * var48; + } + + var48 *= 2; + if(var45 == 0) { + ++var41; + var45 = 50; + var53 = var0.aByteArray130[var41]; + var22 = var0.anIntArray138[var53]; + var23 = var0.anIntArrayArray115[var53]; + var25 = var0.anIntArrayArray110[var53]; + var24 = var0.anIntArrayArray108[var53]; + } + + --var45; + var51 = var22; + + for(var50 = method1633(var22, var0); var50 > var23[var51]; var50 = var50 << 1 | var52) { + ++var51; + var52 = method1639(var0); + } + + var44 = var25[var50 - var24[var51]]; + } while(var44 == 0 || var44 == 1); + + ++var46; + var1 = var0.aByteArray114[var0.aByteArray109[var0.anIntArray123[0]] & 0xFF]; + + for(var0.anIntArray134[var1 & 0xFF] += var46; var46 > 0; --var46) { + Class129.anIntArray1690[var47] = var1 & 0xFF; + ++var47; + } + } else { + int var33 = var44 - 1; + int var30; + if(var33 < 16) { + var30 = var0.anIntArray123[0]; + + for(var1 = var0.aByteArray109[var30 + var33]; var33 > 3; var33 -= 4) { + int var34 = var30 + var33; + var0.aByteArray109[var34] = var0.aByteArray109[var34 - 1]; + var0.aByteArray109[var34 - 1] = var0.aByteArray109[var34 - 2]; + var0.aByteArray109[var34 - 2] = var0.aByteArray109[var34 - 3]; + var0.aByteArray109[var34 - 3] = var0.aByteArray109[var34 - 4]; + } + + while(var33 > 0) { + var0.aByteArray109[var30 + var33] = var0.aByteArray109[var30 + var33 - 1]; + --var33; + } + + var0.aByteArray109[var30] = var1; + } else { + int var31 = var33 / 16; + int var32 = var33 % 16; + var30 = var0.anIntArray123[var31] + var32; + + for(var1 = var0.aByteArray109[var30]; var30 > var0.anIntArray123[var31]; --var30) { + var0.aByteArray109[var30] = var0.aByteArray109[var30 - 1]; + } + + ++var0.anIntArray123[var31]; + + while(var31 > 0) { + --var0.anIntArray123[var31]; + var0.aByteArray109[var0.anIntArray123[var31]] = var0.aByteArray109[var0.anIntArray123[var31 - 1] + 16 - 1]; + --var31; + } + + --var0.anIntArray123[0]; + var0.aByteArray109[var0.anIntArray123[0]] = var1; + if(var0.anIntArray123[0] == 0) { + var56 = 4095; + + for(var55 = 15; var55 >= 0; --var55) { + for(var54 = 15; var54 >= 0; --var54) { + var0.aByteArray109[var56] = var0.aByteArray109[var0.anIntArray123[var55] + var54]; + --var56; + } + + var0.anIntArray123[var55] = var56 + 1; + } + } + } + + ++var0.anIntArray134[var0.aByteArray114[var1 & 0xFF] & 0xFF]; + Class129.anIntArray1690[var47] = var0.aByteArray114[var1 & 0xFF] & 0xFF; + ++var47; + if(var45 == 0) { + ++var41; + var45 = 50; + var53 = var0.aByteArray130[var41]; + var22 = var0.anIntArray138[var53]; + var23 = var0.anIntArrayArray115[var53]; + var25 = var0.anIntArrayArray110[var53]; + var24 = var0.anIntArrayArray108[var53]; + } + + --var45; + var51 = var22; + + for(var50 = method1633(var22, var0); var50 > var23[var51]; var50 = var50 << 1 | var52) { + ++var51; + var52 = method1639(var0); + } + + var44 = var25[var50 - var24[var51]]; + } + } + + var0.anInt143 = 0; + var0.aByte111 = 0; + var0.anIntArray122[0] = 0; + + for(var35 = 1; var35 <= 256; ++var35) { + var0.anIntArray122[var35] = var0.anIntArray134[var35 - 1]; + } + + for(var35 = 1; var35 <= 256; ++var35) { + var0.anIntArray122[var35] += var0.anIntArray122[var35 - 1]; + } + + for(var35 = 0; var35 < var47; ++var35) { + var1 = (byte)(Class129.anIntArray1690[var35] & 0xFF); + Class129.anIntArray1690[var0.anIntArray122[var1 & 0xFF]] |= var35 << 8; + ++var0.anIntArray122[var1 & 0xFF]; + } + + var0.anInt133 = Class129.anIntArray1690[var0.anInt135] >> 8; + var0.anInt131 = 0; + var0.anInt133 = Class129.anIntArray1690[var0.anInt133]; + var0.anInt129 = (byte)(var0.anInt133 & 0xFF); + var0.anInt133 >>= 8; + ++var0.anInt131; + var0.anInt121 = var47; + method1634(var0); + var26 = var0.anInt131 == var0.anInt121 + 1 && var0.anInt143 == 0; + } + + } + + private static byte method1639(Bzip2Context var0) { + return (byte)method1633(1, var0); + } + + public static void decompress(byte[] var0, int var1, byte[] var2) { + Bzip2Context context = Bzip2Decompressor.context; + synchronized(context) { + Bzip2Decompressor.context.aByteArray127 = var2; + Bzip2Decompressor.context.anInt116 = 9; + Bzip2Decompressor.context.aByteArray117 = var0; + Bzip2Decompressor.context.anInt118 = 0; + Bzip2Decompressor.context.anInt126 = var1; + Bzip2Decompressor.context.anInt128 = 0; + Bzip2Decompressor.context.anInt140 = 0; + Bzip2Decompressor.context.anInt147 = 0; + Bzip2Decompressor.context.anInt141 = 0; + method1638(Bzip2Decompressor.context); + var1 -= Bzip2Decompressor.context.anInt126; + Bzip2Decompressor.context.aByteArray127 = null; + Bzip2Decompressor.context.aByteArray117 = null; + } + } + +} diff --git a/Client/src/main/java/org/runite/client/CS2AsmOpcodes.java b/Client/src/main/java/org/runite/client/CS2AsmOpcodes.java new file mode 100644 index 000000000..243449815 --- /dev/null +++ b/Client/src/main/java/org/runite/client/CS2AsmOpcodes.java @@ -0,0 +1,88 @@ +package org.runite.client; + +public enum CS2AsmOpcodes { + // Copies the operand specified by the instruction to the int stack + PUSH_INT(0), + // Copies the int from ram onto the int stack specified by the operand + PUSH_INT_FROM_RAM(1), + // Copies an int from the stack onto ram, using the ram address specified by the operand + POP_INT_TO_RAM(2), + // Copies the operand specified by the instruction to the string stack + PUSH_STR(3), + // Jump to the relative location given by the operand. EG an op of 4 will jump ahead 4 instructions. + JUMP(6), + // Jumps to the relative location given by the operand IFF the last two values pushed on the int stack are NOT equal + // THIS ALSO POPS THE STACK TWICE + BRANCH_NOT_EQUAL(7), + // Jumps to the relative location given by the operand IFF the last two values on the int stack are equal + // THIS ALSO POPS THE STACK TWICE + BRANCH_EQUAL(8), + // Jumps to the relative location given by operand IFF the most recent value on the int stack > the second most recent one + // THIS ALSO POPS THE STACK TWICE + BRANCH_GREATER_THAN(9), + // See above but in reverse + BRANCH_LESS_THAN(10), + // Returns from the current method, completely analogous to returning from a method in any other programming language. + // It places you back on the previous method and resumes execution right after the call. + // IT DOES NOT TOUCH THE INT OR STRING STACK OR THE RAM. + RETURN(21), + // TODO: Opcode 25, opcode 27. I suspect these are tied together + + // See 9 and 10 + BRANCH_GREATER_OR_EQUAL(31), + BRANCH_LESS_OR_EQUAL(32), + + // Copies the int from the int args array onto the stack specified by the operand. + // eg if the operand is 2 it copies the second int arg onto the stack + PUSH_INT_FROM_ARGS(33), + // Copies an int from the stack onto the int args array. It copies it onto the argument array index specified + // by the operand. + POP_INT_TO_ARGS(34), + // See above but for the string array and string args. + PUSH_STRING_FROM_ARGS(35), + POP_STRING_TO_ARGS(36), + // TODO: Opcode 37 + + // Pops int/string from the stack without using it. Effectively throwing it away. + POP_INT(38), + POP_STRING(39), + + // Calls the method specified by the operand. The method's arguments are LOADED from the int and string stack + // If it has 4 int arguments, for instance, it will pop the int stack four times and assign these values in + // REVERSE order. That is, the first popped value becomes the LAST argument. Number of arguments are given in + // AssembledMethod.NumberOf[X]Arguments + // This effectively "resets" the program counter. It DOES NOT RESET THE INT OR STRING STACK OR THE RAM. + // Also It adds the previous method to the method stack. SEE RETURN(21) + CALL(40), + + // Opcodes 42 and 43 load and store from the VARC array, respectively. Writing to the VARC array emits and processes a component modification request, which scripts can set listeners for (e.g. to update highlights in an interface when an item quantity changes). + LOAD_VARC(42), + STORE_VARC(43), + + // allocates one of the five paged ram pages as selected by the top 16 bits of the operand. + // If the bottom 16 bits equal 105, this will be allocated as all zeroes. + // Otherwise it will be allocated with all -1s. Why?? Jagex is fucking stupid idk. + // THE NUMBER OF INTS ALLOCATED IS BASED ON THE VALUE ON INT STACK. + // POPS THE INT STACK + ALLOCATE_PAGED_RAM(44), + + // Replaces the value at the end of the stack with the value in the ram page specified by the operand + // and the page entry specified by the last value of the int stack + REPLACE_STACK_PAGED_RAM(45), + + // Copies an int from the int stack to paged ram. The page is given by the operand and the + // page entry is given by the NEXT value on the int stack. + // Thus this pops the int stack TWICE. + POP_TO_PAGED_RAM(46); + + + private final int op; + + public int getOp() { + return this.op; + } + + CS2AsmOpcodes(int op) { + this.op = op; + } +} diff --git a/Client/src/main/java/org/runite/client/CS2Methods.java b/Client/src/main/java/org/runite/client/CS2Methods.java new file mode 100644 index 000000000..dd81be358 --- /dev/null +++ b/Client/src/main/java/org/runite/client/CS2Methods.java @@ -0,0 +1,100 @@ +package org.runite.client; + +public class CS2Methods { + static QuickChat aQuickChat_1056; + + static RSString method27(RSString var0) { + try { + + int var2 = Unsorted.method1602(var0); + return var2 != -1 ? Class119.aClass131_1624.aStringArray1721[var2].method1560(RSString.parse(" "), TextCore.aString_4066) : TextCore.aString_4049; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "rc.V(" + (var0 != null ? "{...}" : "null") + ',' + true + ')'); + } + } + + static void method28() { + try { + Class143.aReferenceCache_1874.clear(); + + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "rc.Q(" + true + ')'); + } + } + + static void method852(int var1) { + try { + Class3_Sub25 var2 = (Class3_Sub25) TileData.aHashTable_2220.get(var1); + if (var2 != null) { + + for (int var3 = 0; var2.anIntArray2547.length > var3; ++var3) { + var2.anIntArray2547[var3] = -1; + var2.anIntArray2551[var3] = 0; + } + + } + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "bd.C(" + (byte) 114 + ',' + var1 + ')'); + } + } + + static void method532(int var0) { + try { + Class3_Sub25 var2 = (Class3_Sub25) TileData.aHashTable_2220.get(var0); + if (null != var2) { + var2.unlink(); + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "bc.A(" + var0 + ',' + -28236 + ')'); + } + } + + static void method2280(int var1) { + try { + + InterfaceWidget var2 = InterfaceWidget.getWidget(11, var1); + var2.a(); + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "wl.B(" + 2714 + ',' + var1 + ')'); + } + } + + /* * * * INTERFACE SPECIFIC SEPARATE CORRECTLY * * * */ + static void method225(RSInterface iface) { + RSInterface var2 = method2273(iface); + + int windowWidth; + int windowHeight; + if (var2 == null) { + windowHeight = GroundItem.canvasHeight; + windowWidth = Class23.canvasWidth; + } else { + windowHeight = var2.height; + windowWidth = var2.width; + } + + Unsorted.calculateInterfaceSize(iface, windowWidth, windowHeight, false); + Unsorted.calculateInterfacePosition(iface, windowWidth, windowHeight); + } + + //INTERFACE SPECIFIC RENAME + static RSInterface method2273(RSInterface iface) { + if (iface.parentId != -1) { + return Unsorted.getRSInterface(iface.parentId); + } + + int var3 = iface.componentHash >>> 16; + Class80 var4 = new Class80<>(TextureOperation23.aHashTable_3208); + + for (Class3_Sub31 var2 = var4.method1393(); null != var2; var2 = var4.method1392()) { + if (var2.anInt2602 == var3) { + return Unsorted.getRSInterface((int) var2.linkableKey); + } + } + + return null; + } + /* * * * END INTERFACE * * * */ + + +} diff --git a/Client/src/main/java/org/runite/client/CS2Script.java b/Client/src/main/java/org/runite/client/CS2Script.java new file mode 100644 index 000000000..15f42e1fe --- /dev/null +++ b/Client/src/main/java/org/runite/client/CS2Script.java @@ -0,0 +1,3994 @@ +package org.runite.client; + +import org.rs09.client.Linkable; +import org.rs09.client.LinkableInt; +import org.rs09.client.data.HashTable; +import org.rs09.client.data.Queue; +import org.rs09.client.data.ReferenceCache; +import org.rs09.client.filestore.resources.configs.enums.EnumDefinition; +import org.rs09.client.filestore.resources.configs.enums.EnumDefinitionProvider; +import org.rs09.client.filestore.resources.configs.structs.StructDefinitionProvider; + +import java.nio.charset.StandardCharsets; +import java.util.Calendar; +import java.util.Date; + +public final class CS2Script extends Linkable { + + public static int userCurrentWorldID = -1; + static short aShort3052 = 205; + static int anInt3101 = 0; + static int[] anIntArray3228 = new int[]{7, 8, 9, 10, 11, 12, 13, 15}; + static short aShort3241 = 1; + static int anInt1357 = 0; + static short aShort1444 = 256; + static RSInterface aClass11_1749; + static boolean aBoolean2705 = true; + static int anInt3775 = 0; + static int anInt2440 = 0; + static ReferenceCache aReferenceCache_2442 = new ReferenceCache(50); + static byte[][][] aByteArrayArrayArray2452; + RSInterface aClass11_2438; + RSString aString_2439; + int scrollbarScrollAmount; + int anInt2443; + int inputTextCode; + int interfaceButtons; + boolean aBoolean2446; + int worldSelectCursorPositionX; + Object[] arguments; + RSInterface aClass11_2449; + + static void sendRegistryRequest(int year, int country, int day, int month) { + try { + // System.out.println("CS2Script year=" + year + ", country=" + country + ", day=" + day + ", month=" + month + ", stage=" + stage + ", " + System.currentTimeMillis()); + TextureOperation12.outgoingBuffer.index = 0; + TextureOperation12.outgoingBuffer.writeByte(147);//Handshake opcode + TextureOperation12.outgoingBuffer.writeByte(day); + TextureOperation12.outgoingBuffer.writeByte(month); + TextureOperation12.outgoingBuffer.writeShort(year); + TextureOperation12.outgoingBuffer.writeShort(country); + Class132.anInt1734 = 0; + GraphicDefinition.anInt548 = 0; + Unsorted.registryStage = 1; + Unsorted.anInt1711 = -3; + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "jl.C(" + year + ',' + country + ',' + day + ',' + month + ',' + 1 + ')'); + } + } + + static void method379() { + try { + int var2 = Class146.anInt1904 * 128 - -64; + int var1 = 128 * Unsorted.anInt30 + 64; + int var3 = Scenery.sceneryPositionHash(WorldListCountry.localPlane, 1, var1, var2) - TextureOperation25.anInt3414; + if (100 <= Unsorted.anInt3631) { + NPC.anInt3995 = 64 + Unsorted.anInt30 * 128; + Class77.anInt1111 = 64 + Class146.anInt1904 * 128; + Class7.anInt2162 = Scenery.sceneryPositionHash(WorldListCountry.localPlane, 1024 + -1023, NPC.anInt3995, Class77.anInt1111) + -TextureOperation25.anInt3414; + } else { + if (NPC.anInt3995 < var1) { + NPC.anInt3995 += Class163_Sub2_Sub1.anInt4021 + Unsorted.anInt3631 * (-NPC.anInt3995 + var1) / 1000; + if (var1 < NPC.anInt3995) { + NPC.anInt3995 = var1; + } + } + + if (var3 > Class7.anInt2162) { + Class7.anInt2162 += (-Class7.anInt2162 + var3) * Unsorted.anInt3631 / 1000 + Class163_Sub2_Sub1.anInt4021; + if (Class7.anInt2162 > var3) { + Class7.anInt2162 = var3; + } + } + + if (var1 < NPC.anInt3995) { + NPC.anInt3995 -= Class163_Sub2_Sub1.anInt4021 + (NPC.anInt3995 + -var1) * Unsorted.anInt3631 / 1000; + if (NPC.anInt3995 < var1) { + NPC.anInt3995 = var1; + } + } + + if (Class77.anInt1111 < var2) { + Class77.anInt1111 += Class163_Sub2_Sub1.anInt4021 + Unsorted.anInt3631 * (var2 - Class77.anInt1111) / 1000; + if (Class77.anInt1111 > var2) { + Class77.anInt1111 = var2; + } + } + + if (var3 < Class7.anInt2162) { + Class7.anInt2162 -= (Class7.anInt2162 - var3) * Unsorted.anInt3631 / 1000 + Class163_Sub2_Sub1.anInt4021; + if (Class7.anInt2162 < var3) { + Class7.anInt2162 = var3; + } + } + + if (var2 < Class77.anInt1111) { + Class77.anInt1111 -= Class163_Sub2_Sub1.anInt4021 - -((-var2 + Class77.anInt1111) * Unsorted.anInt3631 / 1000); + if (Class77.anInt1111 < var2) { + Class77.anInt1111 = var2; + } + } + } + + var2 = Class157.anInt1996 * 128 - -64; + var1 = MouseListeningClass.anInt1923 * 128 + 64; + var3 = Scenery.sceneryPositionHash(WorldListCountry.localPlane, 1, var1, var2) + -GraphicDefinition.anInt529; + int var5 = var3 + -Class7.anInt2162; + int var6 = -Class77.anInt1111 + var2; + int var4 = -NPC.anInt3995 + var1; + int var7 = (int) Math.sqrt(var4 * var4 + var6 * var6); + int var8 = (int) (325.949D * Math.atan2(var5, var7)) & 0x7FF; + if (128 > var8) { + var8 = 128; + } + + if (var8 > 383) { + var8 = 383; + } + + int var9 = (int) (-325.949D * Math.atan2(var4, var6)) & 0x7FF; + if (var8 > Class139.anInt1823) { + Class139.anInt1823 += Class75.anInt1105 + Class163_Sub2_Sub1.anInt4014 * (-Class139.anInt1823 + var8) / 1000; + if (Class139.anInt1823 > var8) { + Class139.anInt1823 = var8; + } + } + + if (Class139.anInt1823 > var8) { + Class139.anInt1823 -= (Class139.anInt1823 - var8) * Class163_Sub2_Sub1.anInt4014 / 1000 + Class75.anInt1105; + if (var8 > Class139.anInt1823) { + Class139.anInt1823 = var8; + } + } + + int var10 = -TextureOperation28.anInt3315 + var9; + if (var10 > 1024) { + var10 -= 2048; + } + + if (-1024 > var10) { + var10 += 2048; + } + + if (var10 > 0) { + TextureOperation28.anInt3315 += var10 * Class163_Sub2_Sub1.anInt4014 / 1000 + Class75.anInt1105; + TextureOperation28.anInt3315 &= 2047; + } + + if (var10 < 0) { + TextureOperation28.anInt3315 -= Class163_Sub2_Sub1.anInt4014 * -var10 / 1000 + Class75.anInt1105; + TextureOperation28.anInt3315 &= 2047; + } + + int var11 = -TextureOperation28.anInt3315 + var9; + if (1024 < var11) { + var11 -= 2048; + } + + if (var11 < -1024) { + var11 += 2048; + } + + if (var11 < 0 && var10 > 0 || var11 > 0 && var10 < 0) { + TextureOperation28.anInt3315 = var9; + } + + } catch (RuntimeException var12) { + throw ClientErrorException.clientError(var12, "jl.B(" + 1024 + ')'); + } + } + + /* + * This is probably the MOST important function in the entire + * client. It basically runs a script, which is: + * a bunch of args, and a special integer pointing to the script entry method (script.arguments[0]) + * This integer refers to one of the game's methods which it loads from various files. (TODO Figure out how this is handled) + * + * All scripts are compiled into a pseudo assembly language. This language consists of + * a bunch of opcodes, int and string operands for each opcode, an int and string stack + * + * There is also ram (for saving variables) which persists as you go in and out of methods. + * + * Opcodes refer to instructions which are executed sequentially, except for when a branch opcode is encountered. + * opcode bound ram can be assigned to anything but can only be read from the current opcode. + * + * Opcode bound ram will often refer to a location in non-opcode bound ram as a way to access arbitrary values. + * + * + * This is my best understanding of this function. MOST of the above text is PROBABLY a lie. + * Poke around with it yourself and see what you discover - Your friendly neighborhood moth + * + */ + static void runAssembledScript(int maxIterations, CS2Script script) { + try { + Object[] aobj = script.arguments; + int j = ((Integer) aobj[0]).intValue(); + AssembledMethod currentMethod = ItemDefinition.getMethodByID(j); + // System.out.printf("Method id: %d\n", j); + if (null == currentMethod) + return; + ItemDefinition.scriptHeapCounter = 0; + int sStackCounter = 0; + int iStackCounter = 0; + int programCounter = -1; + int[] instructionOperands = currentMethod.instructionOperands; + int[] instructions = currentMethod.assemblyInstructions; + /* + * Scan method arguments. args can either be + * custom strings, custom ints, or integer opcodes (0x80000001-0x80000009) which represent + * various ints found elsewhere in the code for things like keyboard input. + * + * OPCODES 35 and 40 act on the string args + * OPCODES 33 and 40 act on the int args + * + * These arguments are tied to the specific method you are calling, just like arguments + * in a real programming language. In this case imagine this as arguments that you pass + * to the main() function of java. + */ + + ItemDefinition.intArguments = new int[currentMethod.numberOfIntsToCopy]; + ItemDefinition.stringArguments = new RSString[currentMethod.numberOfRSStringsToCopy]; + int stringArgIter = 0; + int intArgIter = 0; + for (int i2 = 1; aobj.length > i2; i2++) { + if (aobj[i2] instanceof Integer) { + int k2 = ((Integer) aobj[i2]).intValue(); + boolean printK2 = false; + if (k2 == 0x80000001) + k2 = script.worldSelectCursorPositionX; // Why does this matter? + if (k2 == 0x80000002) + k2 = script.scrollbarScrollAmount; + if (k2 == 0x80000003) + k2 = null == script.aClass11_2449 ? -1 : script.aClass11_2449.componentHash; + if (k2 == 0x80000004) + k2 = script.interfaceButtons; + if (k2 == 0x80000005) + k2 = null == script.aClass11_2449 ? -1 : script.aClass11_2449.anInt191; + if (k2 == 0x80000006) + k2 = null == script.aClass11_2438 ? -1 : script.aClass11_2438.componentHash; + if (k2 == 0x80000007) + k2 = script.aClass11_2438 != null ? script.aClass11_2438.anInt191 : -1; + if (k2 == 0x80000008) + k2 = script.inputTextCode; + if (k2 == 0x80000009) + k2 = script.anInt2443; + ItemDefinition.intArguments[intArgIter++] = k2; + continue; + } + if (!(aobj[i2] instanceof RSString)) + continue; + RSString class94 = (RSString) aobj[i2]; + if (class94.equalsString(TextCore.aString_209)) + class94 = script.aString_2439; + ItemDefinition.stringArguments[stringArgIter++] = class94; + // System.out.println("Item Definition line 168 " + class94.toString()); + } + + int j2 = 0; + label0: + do { + j2++; + if (maxIterations < j2) + throw new RuntimeException("Script exceeded max iterations"); + int opcode = instructions[++programCounter]; + // System.out.println("Instruction: " + programCounter + ". opcode is: " + opcode); + if (opcode < 100) { + if (opcode == CS2AsmOpcodes.PUSH_INT.getOp()) { + ItemDefinition.intsStack[iStackCounter++] = instructionOperands[programCounter]; + continue; + } + if (opcode == CS2AsmOpcodes.PUSH_INT_FROM_RAM.getOp()) { + int l2 = instructionOperands[programCounter]; + ItemDefinition.intsStack[iStackCounter++] = ItemDefinition.ram[l2]; + continue; + } + if (opcode == CS2AsmOpcodes.POP_INT_TO_RAM.getOp()) { + int i3 = instructionOperands[programCounter]; + AtmosphereParser.method1428(i3, ItemDefinition.intsStack[--iStackCounter]); + continue; + } + if (opcode == CS2AsmOpcodes.PUSH_STR.getOp()) { + ItemDefinition.stringsStack[sStackCounter++] = currentMethod.stringInstructionOperands[programCounter]; + continue; + } + if (opcode == CS2AsmOpcodes.JUMP.getOp()) { + programCounter += instructionOperands[programCounter]; + continue; + } + if (opcode == CS2AsmOpcodes.BRANCH_NOT_EQUAL.getOp()) { + iStackCounter -= 2; + if (ItemDefinition.intsStack[iStackCounter] != ItemDefinition.intsStack[1 + iStackCounter]) + programCounter += instructionOperands[programCounter]; + continue; + } + if (opcode == CS2AsmOpcodes.BRANCH_EQUAL.getOp()) { + iStackCounter -= 2; + if (ItemDefinition.intsStack[iStackCounter] == ItemDefinition.intsStack[iStackCounter + 1]) + programCounter += instructionOperands[programCounter]; + continue; + } + if (opcode == CS2AsmOpcodes.BRANCH_GREATER_THAN.getOp()) { + iStackCounter -= 2; + if (ItemDefinition.intsStack[iStackCounter + 1] > ItemDefinition.intsStack[iStackCounter]) + programCounter += instructionOperands[programCounter]; + continue; + } + if (opcode == CS2AsmOpcodes.BRANCH_LESS_THAN.getOp()) { + iStackCounter -= 2; + if (ItemDefinition.intsStack[iStackCounter + 1] < ItemDefinition.intsStack[iStackCounter]) + programCounter += instructionOperands[programCounter]; + continue; + } + if (opcode == CS2AsmOpcodes.RETURN.getOp()) { + if (ItemDefinition.scriptHeapCounter == 0) + return; + AssembledMethodContainer assembledMethodContainer = ItemDefinition.methodStack[--ItemDefinition.scriptHeapCounter]; + currentMethod = assembledMethodContainer.assembledMethod; + instructions = currentMethod.assemblyInstructions; + programCounter = assembledMethodContainer.currentProgramCounter; + ItemDefinition.intArguments = assembledMethodContainer.intArguments; + ItemDefinition.stringArguments = assembledMethodContainer.stringArguments; + instructionOperands = currentMethod.instructionOperands; + continue; + } + if (opcode == 25) { + int j3 = instructionOperands[programCounter]; + ItemDefinition.intsStack[iStackCounter++] = NPCDefinition.lookupVarbit(j3); + // System.out.printf("varp lookup: %s %s\n", j3, ItemDefinition.intsStack[iStackCounter-1]); + continue; + } + if (opcode == 27) { + int k3 = instructionOperands[programCounter]; + TextureOperation3.method306(k3, ItemDefinition.intsStack[--iStackCounter]); + continue; + } + if (opcode == CS2AsmOpcodes.BRANCH_GREATER_OR_EQUAL.getOp()) { + iStackCounter -= 2; + if (ItemDefinition.intsStack[1 + iStackCounter] >= ItemDefinition.intsStack[iStackCounter]) + programCounter += instructionOperands[programCounter]; + continue; + } + if (opcode == CS2AsmOpcodes.BRANCH_LESS_OR_EQUAL.getOp()) { + iStackCounter -= 2; + if (ItemDefinition.intsStack[1 + iStackCounter] <= ItemDefinition.intsStack[iStackCounter]) + programCounter += instructionOperands[programCounter]; + continue; + } + if (opcode == CS2AsmOpcodes.PUSH_INT_FROM_ARGS.getOp()) { + ItemDefinition.intsStack[iStackCounter++] = ItemDefinition.intArguments[instructionOperands[programCounter]]; + continue; + } + if (opcode == CS2AsmOpcodes.POP_INT_TO_ARGS.getOp()) { + ItemDefinition.intArguments[instructionOperands[programCounter]] = ItemDefinition.intsStack[--iStackCounter]; + continue; + } + if (opcode == CS2AsmOpcodes.PUSH_STRING_FROM_ARGS.getOp()) { + ItemDefinition.stringsStack[sStackCounter++] = ItemDefinition.stringArguments[instructionOperands[programCounter]]; + continue; + } + if (opcode == CS2AsmOpcodes.POP_STRING_TO_ARGS.getOp()) { + ItemDefinition.stringArguments[instructionOperands[programCounter]] = ItemDefinition.stringsStack[--sStackCounter]; + continue; + } + if (opcode == 37) { + int l3 = instructionOperands[programCounter]; + sStackCounter -= l3; + RSString class94_2 = Class67.method1261(sStackCounter, l3, ItemDefinition.stringsStack); + ItemDefinition.stringsStack[sStackCounter++] = class94_2; + continue; + } + if (opcode == CS2AsmOpcodes.POP_INT.getOp()) { + iStackCounter--; + continue; + } + if (opcode == CS2AsmOpcodes.POP_STRING.getOp()) { + sStackCounter--; + continue; + } + if (opcode == CS2AsmOpcodes.CALL.getOp()) { + int op = instructionOperands[programCounter]; + AssembledMethod assembledMethod_1 = ItemDefinition.getMethodByID(op); + int[] ai2 = new int[assembledMethod_1.numberOfIntsToCopy]; + RSString[] aclass94 = new RSString[assembledMethod_1.numberOfRSStringsToCopy]; + if (assembledMethod_1.numberOfIntArguments >= 0) + System.arraycopy(ItemDefinition.intsStack, (iStackCounter - assembledMethod_1.numberOfIntArguments), ai2, 0, assembledMethod_1.numberOfIntArguments); + + for (int i76 = 0; assembledMethod_1.numberOfStringArguments > i76; i76++) + aclass94[i76] = ItemDefinition.stringsStack[i76 + -assembledMethod_1.numberOfStringArguments + sStackCounter]; + + iStackCounter -= assembledMethod_1.numberOfIntArguments; + sStackCounter -= assembledMethod_1.numberOfStringArguments; + AssembledMethodContainer assembledMethodContainer_1 = new AssembledMethodContainer(); + assembledMethodContainer_1.stringArguments = ItemDefinition.stringArguments; + assembledMethodContainer_1.intArguments = ItemDefinition.intArguments; + assembledMethodContainer_1.currentProgramCounter = programCounter; + assembledMethodContainer_1.assembledMethod = currentMethod; + if (ItemDefinition.methodStack.length <= ItemDefinition.scriptHeapCounter) + throw new RuntimeException(); + currentMethod = assembledMethod_1; + programCounter = -1; + ItemDefinition.methodStack[ItemDefinition.scriptHeapCounter++] = assembledMethodContainer_1; + ItemDefinition.intArguments = ai2; + instructionOperands = currentMethod.instructionOperands; + instructions = currentMethod.assemblyInstructions; + ItemDefinition.stringArguments = aclass94; + continue; + } + if (CS2AsmOpcodes.LOAD_VARC.getOp() == opcode) { + ItemDefinition.intsStack[iStackCounter++] = NPCDefinition.varcArray[instructionOperands[programCounter]]; + continue; + } + if (opcode == CS2AsmOpcodes.STORE_VARC.getOp()) { + int j4 = instructionOperands[programCounter]; + NPCDefinition.varcArray[j4] = ItemDefinition.intsStack[--iStackCounter]; + PacketParser.method825(j4); + continue; + } + if (opcode == CS2AsmOpcodes.ALLOCATE_PAGED_RAM.getOp()) { + int k4 = instructionOperands[programCounter] >> 16; // Get upper 16 bits of operand. + int bytesWritten = ItemDefinition.intsStack[--iStackCounter]; // pop stack + int k5 = 0xffff & instructionOperands[programCounter]; // Get lower 16 bits of operand to use as byte + if (bytesWritten < 0 || bytesWritten > 5000) + throw new RuntimeException(); + ItemDefinition.pagedRamPageSize[k4] = bytesWritten; + byte byte2 = -1; + if (k5 == 105) + byte2 = 0; + for (int i = 0; i < bytesWritten; i++) { + ItemDefinition.pagedRam[k4][i] = byte2; + } + continue; + } + if (opcode == CS2AsmOpcodes.REPLACE_STACK_PAGED_RAM.getOp()) { + int l4 = instructionOperands[programCounter]; + int l5 = ItemDefinition.intsStack[--iStackCounter]; + if (l5 < 0 || l5 >= ItemDefinition.pagedRamPageSize[l4]) + throw new RuntimeException(); + ItemDefinition.intsStack[iStackCounter++] = ItemDefinition.pagedRam[l4][l5]; + continue; + } + if (opcode == CS2AsmOpcodes.POP_TO_PAGED_RAM.getOp()) { + int i5 = instructionOperands[programCounter]; + iStackCounter -= 2; + int i6 = ItemDefinition.intsStack[iStackCounter]; + if (i6 < 0 || ItemDefinition.pagedRamPageSize[i5] <= i6) + throw new RuntimeException(); + ItemDefinition.pagedRam[i5][i6] = ItemDefinition.intsStack[1 + iStackCounter]; + continue; + } + if (47 == opcode) { + RSString class94_1 = Class132.aStringArray1739[instructionOperands[programCounter]]; + if (null == class94_1) + class94_1 = TextCore.aString_2928; + ItemDefinition.stringsStack[sStackCounter++] = class94_1; + continue; + } + if (opcode == 48) { + int j5 = instructionOperands[programCounter]; + Class132.aStringArray1739[j5] = ItemDefinition.stringsStack[--sStackCounter]; + Class49.method1126(j5); + continue; + } + if (opcode == 51) { + HashTable hashTable = currentMethod.switchHashTable[instructionOperands[programCounter]]; + LinkableInt linkableInt = (LinkableInt) hashTable.get(ItemDefinition.intsStack[--iStackCounter]); + if (null != linkableInt) + programCounter += linkableInt.value; + continue; + } + } + boolean flag; + flag = 1 == instructionOperands[programCounter]; + if (opcode < 300) { + if (opcode == 100) { + iStackCounter -= 3; + int j6 = ItemDefinition.intsStack[iStackCounter]; + int i44 = ItemDefinition.intsStack[1 + iStackCounter]; + int k66 = ItemDefinition.intsStack[2 + iStackCounter]; + if (i44 == 0) + throw new RuntimeException(); + RSInterface class11_21 = Unsorted.getRSInterface(j6); + if (null == class11_21.aClass11Array262) + class11_21.aClass11Array262 = new RSInterface[k66 + 1]; + if (k66 >= class11_21.aClass11Array262.length) { + RSInterface[] aclass11 = new RSInterface[k66 + 1]; + if (class11_21.aClass11Array262.length >= 0) + System.arraycopy(class11_21.aClass11Array262, 0, aclass11, 0, class11_21.aClass11Array262.length); + + class11_21.aClass11Array262 = aclass11; + } + if (0 < k66 && class11_21.aClass11Array262[-1 + k66] == null) + throw new RuntimeException("Gap at:" + (-1 + k66)); + RSInterface class11_23 = new RSInterface(); + class11_23.usingScripts = true; + class11_23.anInt191 = k66; + class11_23.parentId = class11_23.componentHash = class11_21.componentHash; + class11_23.type = i44; + class11_21.aClass11Array262[k66] = class11_23; + if (flag) + Class164.aClass11_2055 = class11_23; + else + aClass11_1749 = class11_23; + Class20.method909(class11_21); + continue; + } + if (opcode == 101) { + RSInterface class11 = flag ? Class164.aClass11_2055 : aClass11_1749; + if (class11.anInt191 == -1) + if (!flag) + throw new RuntimeException("Tried to cc_delete static active-component!"); + else + throw new RuntimeException("Tried to .cc_delete static .active-component!"); + RSInterface class11_17 = Unsorted.getRSInterface(class11.componentHash); + class11_17.aClass11Array262[class11.anInt191] = null; + Class20.method909(class11_17); + continue; + } + if (opcode == 102) { + RSInterface class11_1 = Unsorted.getRSInterface(ItemDefinition.intsStack[--iStackCounter]); + class11_1.aClass11Array262 = null; + Class20.method909(class11_1); + continue; + } + if (opcode == 200) { + iStackCounter -= 2; + int k6 = ItemDefinition.intsStack[iStackCounter]; + int j44 = ItemDefinition.intsStack[iStackCounter - -1]; + RSInterface class11_19 = AbstractSprite.method638(k6, j44); + if (null == class11_19 || j44 == -1) { + ItemDefinition.intsStack[iStackCounter++] = 0; + } else { + ItemDefinition.intsStack[iStackCounter++] = 1; + if (!flag) + aClass11_1749 = class11_19; + else + Class164.aClass11_2055 = class11_19; + } + continue; + } + if (opcode != 201) + break; + int l6 = ItemDefinition.intsStack[--iStackCounter]; + RSInterface class11_18 = Unsorted.getRSInterface(l6); + if (null == class11_18) { + ItemDefinition.intsStack[iStackCounter++] = 0; + } else { + ItemDefinition.intsStack[iStackCounter++] = 1; + if (flag) + Class164.aClass11_2055 = class11_18; + else + aClass11_1749 = class11_18; + } + continue; + } + if (500 <= opcode) { + if (1000 <= opcode && opcode < 1100 || 2000 <= opcode && opcode < 2100) { + RSInterface class11_2; + if (opcode < 2000) { + class11_2 = flag ? Class164.aClass11_2055 : aClass11_1749; + } else { + class11_2 = Unsorted.getRSInterface(ItemDefinition.intsStack[--iStackCounter]); + opcode -= 1000; + } + if (opcode == 1000) { + iStackCounter -= 4; + class11_2.defX = ItemDefinition.intsStack[iStackCounter]; + class11_2.defY = ItemDefinition.intsStack[iStackCounter + 1]; + int l66 = ItemDefinition.intsStack[3 + iStackCounter]; + if (l66 < 0) + l66 = 0; + else if (l66 > 5) + l66 = 5; + int k44 = ItemDefinition.intsStack[iStackCounter + 2]; + if (k44 >= 0) { + if (k44 > 5) + k44 = 5; + } else { + k44 = 0; + } + class11_2.verticalPos = (byte) l66; + class11_2.horizontalPos = (byte) k44; + Class20.method909(class11_2); + CS2Methods.method225(class11_2); + if (class11_2.anInt191 == -1) + CS2Methods.method2280(class11_2.componentHash); + continue; + } + if (opcode == 1001) { + iStackCounter -= 4; + class11_2.defWidth = ItemDefinition.intsStack[iStackCounter]; + class11_2.defHeight = ItemDefinition.intsStack[1 + iStackCounter]; + class11_2.anInt184 = 0; + class11_2.anInt312 = 0; + int l44 = ItemDefinition.intsStack[iStackCounter + 2]; + int i67 = ItemDefinition.intsStack[3 + iStackCounter]; + if (i67 >= 0) { + if (i67 > 4) + i67 = 4; + } else { + i67 = 0; + } + class11_2.verticalResize = (byte) i67; + if (l44 < 0) + l44 = 0; + else if (l44 > 4) + l44 = 4; + class11_2.horizontalResize = (byte) l44; + Class20.method909(class11_2); + CS2Methods.method225(class11_2); + if (class11_2.type == 0) + Unsorted.method2104(class11_2, false, 32); + continue; + } + if (opcode == 1003) { + boolean flag3 = ItemDefinition.intsStack[--iStackCounter] == 1; + if (flag3 == (!class11_2.hidden)) { + class11_2.hidden = flag3; + Class20.method909(class11_2); + } + if (-1 == class11_2.anInt191) + Unsorted.method569(class11_2.componentHash); + continue; + } + if (opcode == 1004) { + iStackCounter -= 2; + class11_2.anInt216 = ItemDefinition.intsStack[iStackCounter]; + class11_2.anInt160 = ItemDefinition.intsStack[iStackCounter - -1]; + Class20.method909(class11_2); + CS2Methods.method225(class11_2); + if (class11_2.type == 0) + Unsorted.method2104(class11_2, false, -127); + continue; + } + if (opcode != 1005) + break; + class11_2.aBoolean219 = ItemDefinition.intsStack[--iStackCounter] == 1; + continue; + } + if ((opcode < 1100 || 1200 <= opcode) && (opcode < 2100 || 2200 <= opcode)) { + if ((opcode < 1200 || 1300 <= opcode) && (2200 > opcode || opcode >= 2300)) { + if (opcode >= 1300 && opcode < 1400 || opcode >= 2300 && opcode < 2400) { + RSInterface class11_3; + if (2000 <= opcode) { + class11_3 = Unsorted.getRSInterface(ItemDefinition.intsStack[--iStackCounter]); + opcode -= 1000; + } else { + class11_3 = flag ? Class164.aClass11_2055 : aClass11_1749; + } + if (opcode == 1300) { + int i45 = ItemDefinition.intsStack[--iStackCounter] + -1; + if (0 > i45 || i45 > 9) + sStackCounter--; + else + class11_3.method857(ItemDefinition.stringsStack[--sStackCounter], i45); + continue; + } + if (opcode == 1301) { + iStackCounter -= 2; + int j67 = ItemDefinition.intsStack[1 + iStackCounter]; + int j45 = ItemDefinition.intsStack[iStackCounter]; + class11_3.aClass11_302 = AbstractSprite.method638(j45, j67); + continue; + } + if (opcode == 1302) { + class11_3.aBoolean200 = ItemDefinition.intsStack[--iStackCounter] == 1; + continue; + } + if (opcode == 1303) { + class11_3.anInt214 = ItemDefinition.intsStack[--iStackCounter]; + continue; + } + if (opcode == 1304) { + class11_3.anInt179 = ItemDefinition.intsStack[--iStackCounter]; + continue; + } + if (1305 == opcode) { + class11_3.aString_277 = ItemDefinition.stringsStack[--sStackCounter]; + continue; + } + if (opcode == 1306) { + class11_3.aString_245 = ItemDefinition.stringsStack[--sStackCounter]; + continue; + } + if (opcode == 1307) { + class11_3.aStringArray171 = null; + continue; + } + if (opcode == 1308) { + class11_3.anInt238 = ItemDefinition.intsStack[--iStackCounter]; + class11_3.anInt266 = ItemDefinition.intsStack[--iStackCounter]; + continue; + } + if (1309 != opcode) + break; + int k45 = ItemDefinition.intsStack[--iStackCounter]; + int k67 = ItemDefinition.intsStack[--iStackCounter]; + if (k67 >= 1 && k67 <= 10) + class11_3.method854(k67 + -1, k45); + continue; + } + if ((opcode < 1400 || opcode >= 1500) && (2400 > opcode || opcode >= 2500)) { + if (1600 > opcode) { + RSInterface class11_4 = flag ? Class164.aClass11_2055 : aClass11_1749; + if (opcode == 1500) { + ItemDefinition.intsStack[iStackCounter++] = class11_4.anInt306; + continue; + } + if (opcode == 1501) { + ItemDefinition.intsStack[iStackCounter++] = class11_4.anInt210; + continue; + } + if (opcode == 1502) { + ItemDefinition.intsStack[iStackCounter++] = class11_4.width; + continue; + } + if (opcode == 1503) { + ItemDefinition.intsStack[iStackCounter++] = class11_4.height; + continue; + } + if (opcode == 1504) { + ItemDefinition.intsStack[iStackCounter++] = class11_4.hidden ? 1 : 0; + continue; + } + if (opcode != 1505) + break; + ItemDefinition.intsStack[iStackCounter++] = class11_4.parentId; + continue; + } + if (opcode < 1700) { + RSInterface class11_5 = flag ? Class164.aClass11_2055 : aClass11_1749; + if (opcode == 1600) { + ItemDefinition.intsStack[iStackCounter++] = class11_5.anInt247; + continue; + } + if (opcode == 1601) { + ItemDefinition.intsStack[iStackCounter++] = class11_5.anInt208; + continue; + } + if (opcode == 1602) { + ItemDefinition.stringsStack[sStackCounter++] = class11_5.text; + continue; + } + if (opcode == 1603) { + ItemDefinition.intsStack[iStackCounter++] = class11_5.anInt240; + continue; + } + if (opcode == 1604) { + ItemDefinition.intsStack[iStackCounter++] = class11_5.anInt252; + continue; + } + if (opcode == 1605) { + ItemDefinition.intsStack[iStackCounter++] = class11_5.anInt164; + continue; + } + if (opcode == 1606) { + ItemDefinition.intsStack[iStackCounter++] = class11_5.anInt182; + continue; + } + if (1607 == opcode) { + ItemDefinition.intsStack[iStackCounter++] = class11_5.anInt280; + continue; + } + if (opcode == 1608) { + ItemDefinition.intsStack[iStackCounter++] = class11_5.anInt308; + continue; + } + if (opcode == 1609) { + ItemDefinition.intsStack[iStackCounter++] = class11_5.anInt223; + continue; + } + if (1610 == opcode) { + ItemDefinition.intsStack[iStackCounter++] = class11_5.anInt258; + continue; + } + if (opcode == 1611) { + ItemDefinition.intsStack[iStackCounter++] = class11_5.anInt264; + continue; + } + if (opcode != 1612) + break; + ItemDefinition.intsStack[iStackCounter++] = class11_5.spriteArchiveId; + continue; + } + if (opcode >= 1800) { + if (opcode < 1900) { + RSInterface class11_6 = flag ? Class164.aClass11_2055 : aClass11_1749; + if (1800 == opcode) { + ItemDefinition.intsStack[iStackCounter++] = Client.method44(class11_6).method101(); + continue; + } + if (1801 == opcode) { + int l45 = ItemDefinition.intsStack[--iStackCounter]; + l45--; + if (null == class11_6.aStringArray171 || class11_6.aStringArray171.length <= l45 || null == class11_6.aStringArray171[l45]) + ItemDefinition.stringsStack[sStackCounter++] = TextCore.aString_2331; + else + ItemDefinition.stringsStack[sStackCounter++] = class11_6.aStringArray171[l45]; + continue; + } + if (opcode != 1802) + break; + if (null != class11_6.aString_277) + ItemDefinition.stringsStack[sStackCounter++] = class11_6.aString_277; + else + ItemDefinition.stringsStack[sStackCounter++] = TextCore.aString_2331; + continue; + } + if (2600 > opcode) { + RSInterface class11_7 = Unsorted.getRSInterface(ItemDefinition.intsStack[--iStackCounter]); + if (opcode == 2500) { + ItemDefinition.intsStack[iStackCounter++] = class11_7.anInt306; + continue; + } + if (opcode == 2501) { + ItemDefinition.intsStack[iStackCounter++] = class11_7.anInt210; + continue; + } + if (2502 == opcode) { + ItemDefinition.intsStack[iStackCounter++] = class11_7.width; + continue; + } + if (opcode == 2503) { + ItemDefinition.intsStack[iStackCounter++] = class11_7.height; + continue; + } + if (2504 == opcode) { + ItemDefinition.intsStack[iStackCounter++] = class11_7.hidden ? 1 : 0; + continue; + } + if (opcode != 2505) + break; + ItemDefinition.intsStack[iStackCounter++] = class11_7.parentId; + continue; + } + if (opcode >= 2700) { + if (2800 <= opcode) { + if (opcode >= 2900) { + if (opcode < 3200) { + if (opcode == 3100) { + RSString class94_3 = ItemDefinition.stringsStack[--sStackCounter]; + BufferedDataStream.addChatMessage(TextCore.aString_2331, 0, class94_3, -1); + continue; + } + if (opcode == 3101) { + iStackCounter -= 2; + PlayerRendering.method628(ItemDefinition.intsStack[iStackCounter - -1], ItemDefinition.intsStack[iStackCounter], Class102.player); + continue; + } + if (opcode == 3103) { + TextureOperation4.method264((byte) 87); + continue; + } + if (opcode == 3104) { + RSString class94_4 = ItemDefinition.stringsStack[--sStackCounter]; + int i46 = 0; + if (class94_4.isInteger()) + i46 = class94_4.parseInt(); + TextureOperation12.outgoingBuffer.putOpcode(23); + TextureOperation12.outgoingBuffer.writeInt(i46); + continue; + } + if (opcode == 3105) { + RSString class94_5 = ItemDefinition.stringsStack[--sStackCounter]; + TextureOperation12.outgoingBuffer.putOpcode(244); + TextureOperation12.outgoingBuffer.writeLong(class94_5.toLong()); + continue; + } + if (opcode == 3106) { + RSString class94_6 = ItemDefinition.stringsStack[--sStackCounter]; + TextureOperation12.outgoingBuffer.putOpcode(65); + TextureOperation12.outgoingBuffer.writeByte(1 + class94_6.length()); + TextureOperation12.outgoingBuffer.writeString(class94_6); + continue; + } + if (opcode == 3107) { + int i7 = ItemDefinition.intsStack[--iStackCounter]; + RSString class94_44 = ItemDefinition.stringsStack[--sStackCounter]; + Class166.method2258(i7, class94_44); + continue; + } + if (opcode == 3108) { + iStackCounter -= 3; + int j46 = ItemDefinition.intsStack[iStackCounter - -1]; + int j7 = ItemDefinition.intsStack[iStackCounter]; + int l67 = ItemDefinition.intsStack[2 + iStackCounter]; + RSInterface class11_22 = Unsorted.getRSInterface(l67); + InterfaceWidget.a(j46, j7, 115, class11_22); + continue; + } + if (opcode == 3109) { + iStackCounter -= 2; + int k7 = ItemDefinition.intsStack[iStackCounter]; + RSInterface class11_20 = flag ? Class164.aClass11_2055 : aClass11_1749; + int k46 = ItemDefinition.intsStack[1 + iStackCounter]; + InterfaceWidget.a(k46, k7, 79, class11_20); + continue; + } + if (opcode != 3110) + break; + int l7 = ItemDefinition.intsStack[--iStackCounter]; + TextureOperation12.outgoingBuffer.putOpcode(111); + TextureOperation12.outgoingBuffer.writeShort(l7); + continue; + } + if (opcode < 3300) { + if (opcode == 3200) { + iStackCounter -= 3; + AudioHandler.soundEffectHandler(ItemDefinition.intsStack[iStackCounter + 1], ItemDefinition.intsStack[iStackCounter], ItemDefinition.intsStack[iStackCounter + 2]); + continue; + } + if (opcode == 3201) { + AudioHandler.musicHandler(ItemDefinition.intsStack[--iStackCounter]); + continue; + } + if (opcode != 3202) + break; + iStackCounter -= 2; + AudioHandler.musicEffectHandler(ItemDefinition.intsStack[iStackCounter]); + continue; + } + if (opcode < 3400) { + if (opcode == 3300) { + ItemDefinition.intsStack[iStackCounter++] = Class44.anInt719; + continue; + } + if (opcode == 3301) { + iStackCounter -= 2; + int i8 = ItemDefinition.intsStack[iStackCounter]; + int l46 = ItemDefinition.intsStack[1 + iStackCounter]; + ItemDefinition.intsStack[iStackCounter++] = RSInterface.method861(i8, 89, l46); + continue; + } + if (opcode == 3302) { + iStackCounter -= 2; + int i47 = ItemDefinition.intsStack[iStackCounter + 1]; + int j8 = ItemDefinition.intsStack[iStackCounter]; + ItemDefinition.intsStack[iStackCounter++] = Class12.method872(j8, i47); + continue; + } + if (3303 == opcode) { + iStackCounter -= 2; + int j47 = ItemDefinition.intsStack[iStackCounter - -1]; + int k8 = ItemDefinition.intsStack[iStackCounter]; + ItemDefinition.intsStack[iStackCounter++] = Class167.method2268((byte) -107, k8, j47); + continue; + } + if (3304 == opcode) { + int l8 = ItemDefinition.intsStack[--iStackCounter]; + ItemDefinition.intsStack[iStackCounter++] = ConfigInventoryDefinition.retrieveConfigurationInventoryFile(l8).size; + continue; + } + if (opcode == 3305) { //Skill update listener (mostly spams health value) + int i9 = ItemDefinition.intsStack[--iStackCounter]; + ItemDefinition.intsStack[iStackCounter++] = TextureOperation17.anIntArray3185[i9]; + continue; + } + if (opcode == 3306) { //Another Skill update listener (spams 10? Possible TOTAL hp) + int j9 = ItemDefinition.intsStack[--iStackCounter]; + ItemDefinition.intsStack[iStackCounter++] = Class3_Sub20.anIntArray2480[j9]; + //System.out.printf("3306 -> %s: %s\n", j9, ItemDefinition.intsStack[iStackCounter - 1]); + continue; + } + if (3307 == opcode) { //Hover tooltip for Skill Interface, total xp for selected skill + int k9 = ItemDefinition.intsStack[--iStackCounter]; + ItemDefinition.intsStack[iStackCounter++] = Class133.anIntArray1743[k9]; + continue; + } + if (opcode == 3308) { + int l9 = WorldListCountry.localPlane; + int k47 = Class131.x1716 + (Class102.player.xAxis >> 7); + int i68 = (Class102.player.yAxis >> 7) - -Texture.y1152; + ItemDefinition.intsStack[iStackCounter++] = (l9 << 28) - (-(k47 << 14) - i68); + continue; + } + if (opcode == 3309) { + int i10 = ItemDefinition.intsStack[--iStackCounter]; + ItemDefinition.intsStack[iStackCounter++] = Unsorted.bitwiseAnd(16383, i10 >> 14); + continue; + } + if (3310 == opcode) { + int j10 = ItemDefinition.intsStack[--iStackCounter]; + ItemDefinition.intsStack[iStackCounter++] = j10 >> 28; + continue; + } + if (opcode == 3311) { + int k10 = ItemDefinition.intsStack[--iStackCounter]; + ItemDefinition.intsStack[iStackCounter++] = Unsorted.bitwiseAnd(k10, 16383); + continue; + } + if (opcode == 3312) { + ItemDefinition.intsStack[iStackCounter++] = Unsorted.isMember ? 1 : 0; + continue; + } + if (3313 == opcode) { + iStackCounter -= 2; + int l10 = 32768 + ItemDefinition.intsStack[iStackCounter]; + int l47 = ItemDefinition.intsStack[iStackCounter - -1]; + ItemDefinition.intsStack[iStackCounter++] = RSInterface.method861(l10, 118, l47); + continue; + } + if (3314 == opcode) { + iStackCounter -= 2; + int i11 = ItemDefinition.intsStack[iStackCounter] - -32768; + int i48 = ItemDefinition.intsStack[1 + iStackCounter]; + ItemDefinition.intsStack[iStackCounter++] = Class12.method872(i11, i48); + continue; + } + if (3315 == opcode) { + iStackCounter -= 2; + int j11 = 32768 + ItemDefinition.intsStack[iStackCounter]; + int j48 = ItemDefinition.intsStack[1 + iStackCounter]; + ItemDefinition.intsStack[iStackCounter++] = Class167.method2268((byte) -52, j11, j48); + continue; + } + if (opcode == 3316) { + if (Player.rights < 2) + ItemDefinition.intsStack[iStackCounter++] = 0; + else + ItemDefinition.intsStack[iStackCounter++] = Player.rights; + continue; + } + if (opcode == 3317) { + ItemDefinition.intsStack[iStackCounter++] = Class38_Sub1.anInt2617; + continue; + } + if (3318 == opcode) { + ItemDefinition.intsStack[iStackCounter++] = userCurrentWorldID; + continue; + } + if (3321 == opcode) { + ItemDefinition.intsStack[iStackCounter++] = Unsorted.anInt136; + continue; + } + if (opcode == 3322) { + ItemDefinition.intsStack[iStackCounter++] = MouseListeningClass.anInt1925; + continue; + } + if (3323 == opcode) { + if (anInt3775 >= 5 && anInt3775 <= 9) + ItemDefinition.intsStack[iStackCounter++] = 1; + else + ItemDefinition.intsStack[iStackCounter++] = 0; + continue; + } + if (opcode == 3324) { + if (anInt3775 < 5 || anInt3775 > 9) + ItemDefinition.intsStack[iStackCounter++] = 0; + else + ItemDefinition.intsStack[iStackCounter++] = anInt3775; + continue; + } + if (3325 == opcode) { + ItemDefinition.intsStack[iStackCounter++] = TextureOperation3.disableGEBoxes ? 1 : 0; + continue; + } + if (3326 == opcode) { + ItemDefinition.intsStack[iStackCounter++] = Class102.player.COMBAT_LEVEL; + continue; + } + if (3327 == opcode) { + ItemDefinition.intsStack[iStackCounter++] = Class102.player.class52.aBoolean864 ? 1 : 0; + continue; + } + if (3328 == opcode) { + ItemDefinition.intsStack[iStackCounter++] = !Class3_Sub15.aBoolean2433 || Class121.aBoolean1641 ? 0 : 1; + continue; + } + if (3329 == opcode) { + ItemDefinition.intsStack[iStackCounter++] = TextureOperation31.aBoolean3166 ? 1 : 0; + continue; + } + if (opcode == 3330) { + int k11 = ItemDefinition.intsStack[--iStackCounter]; + ItemDefinition.intsStack[iStackCounter++] = WorldListEntry.method1079(k11); + continue; + } + if (opcode == 3331) { + iStackCounter -= 2; + int k48 = ItemDefinition.intsStack[1 + iStackCounter]; + int l11 = ItemDefinition.intsStack[iStackCounter]; + ItemDefinition.intsStack[iStackCounter++] = method1643(false, l11, k48); + continue; + } + if (3332 == opcode) { + iStackCounter -= 2; + int i12 = ItemDefinition.intsStack[iStackCounter]; + int l48 = ItemDefinition.intsStack[iStackCounter + 1]; + ItemDefinition.intsStack[iStackCounter++] = method1643(true, i12, l48); + continue; + } + if (3333 == opcode) { + ItemDefinition.intsStack[iStackCounter++] = Class7.anInt2161; + continue; + } + if (3335 == opcode) { + ItemDefinition.intsStack[iStackCounter++] = Class3_Sub20.paramLanguage; + continue; + } + if (opcode == 3336) { + iStackCounter -= 4; + int i49 = ItemDefinition.intsStack[iStackCounter - -1]; + int j12 = ItemDefinition.intsStack[iStackCounter]; + j12 += i49 << 14; + int k76 = ItemDefinition.intsStack[3 + iStackCounter]; + int j68 = ItemDefinition.intsStack[2 + iStackCounter]; + j12 += j68 << 28; + j12 += k76; + ItemDefinition.intsStack[iStackCounter++] = j12; + continue; + } + if (opcode != 3337) + break; + ItemDefinition.intsStack[iStackCounter++] = Class3_Sub26.paramAffid; + continue; + } + if (opcode < 3500) { + if (opcode == 3400) { + iStackCounter -= 2; + int k12 = ItemDefinition.intsStack[iStackCounter]; + int j49 = ItemDefinition.intsStack[1 + iStackCounter]; + EnumDefinition enumDefinition_1 = EnumDefinitionProvider.provide(k12); + ItemDefinition.stringsStack[sStackCounter++] = enumDefinition_1.getString(j49); + continue; + } + if (3408 == opcode) { + iStackCounter -= 4; + int l12 = ItemDefinition.intsStack[iStackCounter]; + int k49 = ItemDefinition.intsStack[1 + iStackCounter]; + int l76 = ItemDefinition.intsStack[3 + iStackCounter]; + int k68 = ItemDefinition.intsStack[iStackCounter - -2]; + EnumDefinition enumDefinition_4 = EnumDefinitionProvider.provide(k68); + if (enumDefinition_4.getKeyType() != l12 || k49 != enumDefinition_4.getValueType()) + throw new RuntimeException("C3408-1"); + if (k49 != 115) + ItemDefinition.intsStack[iStackCounter++] = enumDefinition_4.getInt(l76); + else + ItemDefinition.stringsStack[sStackCounter++] = enumDefinition_4.getString(l76); + continue; + } + if (opcode == 3409) { + iStackCounter -= 3; + int l49 = ItemDefinition.intsStack[iStackCounter - -1]; + int l68 = ItemDefinition.intsStack[iStackCounter + 2]; + int i13 = ItemDefinition.intsStack[iStackCounter]; + if (l49 == -1) + throw new RuntimeException("C3409-2"); + EnumDefinition class3_sub28_sub13_3 = EnumDefinitionProvider.provide(l49); + if (i13 != class3_sub28_sub13_3.getValueType()) + throw new RuntimeException("C3409-1"); + ItemDefinition.intsStack[iStackCounter++] = class3_sub28_sub13_3.containsValue(l68) ? 1 : 0; + continue; + } + if (opcode == 3410) { + int j13 = ItemDefinition.intsStack[--iStackCounter]; + RSString class94_45 = ItemDefinition.stringsStack[--sStackCounter]; + if (j13 == -1) + throw new RuntimeException("C3410-2"); + EnumDefinition enumDefinition_2 = EnumDefinitionProvider.provide(j13); + if (enumDefinition_2.getValueType() != 115) + throw new RuntimeException("C3410-1"); + ItemDefinition.intsStack[iStackCounter++] = enumDefinition_2.containsValue(class94_45) ? 1 : 0; + continue; + } + if (opcode != 3411) + break; + int k13 = ItemDefinition.intsStack[--iStackCounter]; + EnumDefinition enumDefinition = EnumDefinitionProvider.provide(k13); + ItemDefinition.intsStack[iStackCounter++] = enumDefinition.getValues().size(); + continue; + } + if (3700 > opcode) { + if (3600 == opcode) { + if (anInt1357 == 0) + ItemDefinition.intsStack[iStackCounter++] = -2; + else if (anInt1357 != 1) + ItemDefinition.intsStack[iStackCounter++] = Class8.anInt104; + else + ItemDefinition.intsStack[iStackCounter++] = -1; + continue; + } + if (3601 == opcode) { + int l13 = ItemDefinition.intsStack[--iStackCounter]; + if (anInt1357 != 2 || Class8.anInt104 <= l13) + ItemDefinition.stringsStack[sStackCounter++] = TextCore.aString_2331; + else + ItemDefinition.stringsStack[sStackCounter++] = Class70.aStringArray1046[l13]; + continue; + } + if (opcode == 3602) { + int i14 = ItemDefinition.intsStack[--iStackCounter]; + if (anInt1357 != 2 || i14 >= Class8.anInt104) + ItemDefinition.intsStack[iStackCounter++] = 0; + else + ItemDefinition.intsStack[iStackCounter++] = Unsorted.anIntArray882[i14]; + continue; + } + if (opcode == 3603) { + int j14 = ItemDefinition.intsStack[--iStackCounter]; + if (2 == anInt1357 && Class8.anInt104 > j14) + ItemDefinition.intsStack[iStackCounter++] = Class57.anIntArray904[j14]; + else + ItemDefinition.intsStack[iStackCounter++] = 0; + continue; + } + if (3604 == opcode) { + int i50 = ItemDefinition.intsStack[--iStackCounter]; + RSString class94_7 = ItemDefinition.stringsStack[--sStackCounter]; + PacketParser.method1605(class94_7, i50); + continue; + } + if (opcode == 3605) { + RSString class94_8 = ItemDefinition.stringsStack[--sStackCounter]; + Class163_Sub3.method2229(class94_8.toLong()); + continue; + } + if (opcode == 3606) { + RSString class94_9 = ItemDefinition.stringsStack[--sStackCounter]; + TextureOperation7.method297(class94_9.toLong(), 1); + continue; + } + if (opcode == 3607) { + RSString class94_10 = ItemDefinition.stringsStack[--sStackCounter]; + Class81.friendsIgnoreListAlerts(class94_10.toLong()); + continue; + } + if (opcode == 3608) { + RSString class94_11 = ItemDefinition.stringsStack[--sStackCounter]; + TextureOperation30.method212(class94_11.toLong()); + continue; + } + if (opcode == 3609) { + RSString class94_12 = ItemDefinition.stringsStack[--sStackCounter]; + if (class94_12.startsWith(TextCore.aString_2323) || class94_12.startsWith(RSString.parse(""))) + class94_12 = class94_12.substring(7); + ItemDefinition.intsStack[iStackCounter++] = ItemDefinition.method1176(class94_12) ? 1 : 0; + continue; + } + if (opcode == 3610) { + int k14 = ItemDefinition.intsStack[--iStackCounter]; + if (anInt1357 == 2 && Class8.anInt104 > k14) + ItemDefinition.stringsStack[sStackCounter++] = Unsorted.aStringArray2566[k14]; + else + ItemDefinition.stringsStack[sStackCounter++] = TextCore.aString_2331; + continue; + } + if (opcode == 3611) { + if (RSInterface.aString_251 != null) + ItemDefinition.stringsStack[sStackCounter++] = RSInterface.aString_251.longToRSString(); + else + ItemDefinition.stringsStack[sStackCounter++] = TextCore.aString_2331; + continue; + } + if (opcode == 3612) { + if (null != RSInterface.aString_251) + ItemDefinition.intsStack[iStackCounter++] = Unsorted.clanSize; + else + ItemDefinition.intsStack[iStackCounter++] = 0; + continue; + } + if (opcode == 3613) { + int l14 = ItemDefinition.intsStack[--iStackCounter]; + if (RSInterface.aString_251 == null || l14 >= Unsorted.clanSize) + ItemDefinition.stringsStack[sStackCounter++] = TextCore.aString_2331; + else + ItemDefinition.stringsStack[sStackCounter++] = PacketParser.aClass3_Sub19Array3694[l14].aString_2476.longToRSString(); + continue; + } + if (opcode == 3614) { + int i15 = ItemDefinition.intsStack[--iStackCounter]; + if (RSInterface.aString_251 == null || i15 >= Unsorted.clanSize) + ItemDefinition.intsStack[iStackCounter++] = 0; + else + ItemDefinition.intsStack[iStackCounter++] = PacketParser.aClass3_Sub19Array3694[i15].anInt2478; + continue; + } + if (3615 == opcode) { + int j15 = ItemDefinition.intsStack[--iStackCounter]; + if (null == RSInterface.aString_251 || j15 >= Unsorted.clanSize) + ItemDefinition.intsStack[iStackCounter++] = 0; + else + ItemDefinition.intsStack[iStackCounter++] = PacketParser.aClass3_Sub19Array3694[j15].aByte2472; + continue; + } + if (3616 == opcode) { + ItemDefinition.intsStack[iStackCounter++] = Player.aByte3953; + continue; + } + if (opcode == 3617) { + RSString class94_13 = ItemDefinition.stringsStack[--sStackCounter]; + Class106.method1642(class94_13); + continue; + } + if (opcode == 3618) { + ItemDefinition.intsStack[iStackCounter++] = Class91.aByte1308; + continue; + } + if (opcode == 3619) { + RSString class94_14 = ItemDefinition.stringsStack[--sStackCounter]; + Class3_Sub22.method400(class94_14.toLong()); + continue; + } + if (opcode == 3620) { + Class77.method1368(); + continue; + } + if (opcode == 3621) { + if (anInt1357 == 0) + ItemDefinition.intsStack[iStackCounter++] = -1; + else + ItemDefinition.intsStack[iStackCounter++] = Class3_Sub28_Sub5.anInt3591; + continue; + } + if (3622 == opcode) { + int k15 = ItemDefinition.intsStack[--iStackCounter]; + if (anInt1357 == 0 || Class3_Sub28_Sub5.anInt3591 <= k15) + ItemDefinition.stringsStack[sStackCounter++] = TextCore.aString_2331; + else + ItemDefinition.stringsStack[sStackCounter++] = Unsorted.method1052(Class114.ignores[k15]).longToRSString(); + continue; + } + if (3623 == opcode) { + RSString class94_15 = ItemDefinition.stringsStack[--sStackCounter]; + if (class94_15.startsWith(TextCore.aString_2323) || class94_15.startsWith(RSString.parse(""))) + class94_15 = class94_15.substring(7); + ItemDefinition.intsStack[iStackCounter++] = Class3_Sub24_Sub3.method467(class94_15) ? 1 : 0; + continue; + } + if (opcode == 3624) { + int l15 = ItemDefinition.intsStack[--iStackCounter]; + if (null != PacketParser.aClass3_Sub19Array3694 && l15 < Unsorted.clanSize && PacketParser.aClass3_Sub19Array3694[l15].aString_2476.equalsStringIgnoreCase(Class102.player.displayName)) + ItemDefinition.intsStack[iStackCounter++] = 1; + else + ItemDefinition.intsStack[iStackCounter++] = 0; + continue; + } + if (opcode == 3625) { + if (Class161.aString_2035 == null) + ItemDefinition.stringsStack[sStackCounter++] = TextCore.aString_2331; + else + ItemDefinition.stringsStack[sStackCounter++] = Class161.aString_2035.longToRSString(); + continue; + } + if (3626 == opcode) { + int i16 = ItemDefinition.intsStack[--iStackCounter]; + if (RSInterface.aString_251 == null || i16 >= Unsorted.clanSize) + ItemDefinition.stringsStack[sStackCounter++] = TextCore.aString_2331; + else + ItemDefinition.stringsStack[sStackCounter++] = PacketParser.aClass3_Sub19Array3694[i16].aString_2473; + continue; + } + if (opcode == 3627) { + int j16 = ItemDefinition.intsStack[--iStackCounter]; + if (anInt1357 != 2 || 0 > j16 || Class8.anInt104 <= j16) + ItemDefinition.intsStack[iStackCounter++] = 0; + else + ItemDefinition.intsStack[iStackCounter++] = Unsorted.aBooleanArray73[j16] ? 1 : 0; + continue; + } + if (opcode == 3628) { + RSString class94_16 = ItemDefinition.stringsStack[--sStackCounter]; + if (class94_16.startsWith(TextCore.aString_2323) || class94_16.startsWith(RSString.parse(""))) + class94_16 = class94_16.substring(7); + ItemDefinition.intsStack[iStackCounter++] = PacketParser.method826(class94_16, -1); + continue; + } + if (opcode != 3629) + break; + ItemDefinition.intsStack[iStackCounter++] = Class3_Sub31.paramCountryID; + continue; + } + if (opcode < 4000) { + if (opcode == 3903) { + int k16 = ItemDefinition.intsStack[--iStackCounter]; + ItemDefinition.intsStack[iStackCounter++] = TextureOperation29.aClass133Array3393[k16].method1805(); + continue; + } + if (opcode == 3904) { + int l16 = ItemDefinition.intsStack[--iStackCounter]; + ItemDefinition.intsStack[iStackCounter++] = TextureOperation29.aClass133Array3393[l16].anInt1752; + continue; + } + if (opcode == 3905) { + int i17 = ItemDefinition.intsStack[--iStackCounter]; + ItemDefinition.intsStack[iStackCounter++] = TextureOperation29.aClass133Array3393[i17].anInt1757; + continue; + } + if (opcode == 3906) { + int j17 = ItemDefinition.intsStack[--iStackCounter]; + ItemDefinition.intsStack[iStackCounter++] = TextureOperation29.aClass133Array3393[j17].anInt1747; + continue; + } + if (opcode == 3907) { + int k17 = ItemDefinition.intsStack[--iStackCounter]; + ItemDefinition.intsStack[iStackCounter++] = TextureOperation29.aClass133Array3393[k17].anInt1746; + continue; + } + if (3908 == opcode) { + int l17 = ItemDefinition.intsStack[--iStackCounter]; + ItemDefinition.intsStack[iStackCounter++] = TextureOperation29.aClass133Array3393[l17].anInt1750; + continue; + } + if (3910 == opcode) { + int i18 = ItemDefinition.intsStack[--iStackCounter]; + int j50 = TextureOperation29.aClass133Array3393[i18].method1804(); + ItemDefinition.intsStack[iStackCounter++] = j50 == 0 ? 1 : 0; + continue; + } + if (3911 == opcode) { + int j18 = ItemDefinition.intsStack[--iStackCounter]; + int k50 = TextureOperation29.aClass133Array3393[j18].method1804(); + ItemDefinition.intsStack[iStackCounter++] = k50 != 2 ? 0 : 1; + continue; + } + if (opcode == 3912) { + int k18 = ItemDefinition.intsStack[--iStackCounter]; + int l50 = TextureOperation29.aClass133Array3393[k18].method1804(); + ItemDefinition.intsStack[iStackCounter++] = l50 == 5 ? 1 : 0; + continue; + } + if (opcode != 3913) + break; + int l18 = ItemDefinition.intsStack[--iStackCounter]; + int i51 = TextureOperation29.aClass133Array3393[l18].method1804(); + ItemDefinition.intsStack[iStackCounter++] = 1 == i51 ? 1 : 0; + continue; + } + if (opcode < 4100) { + if (opcode == 4000) { + iStackCounter -= 2; + int i19 = ItemDefinition.intsStack[iStackCounter]; + int j51 = ItemDefinition.intsStack[iStackCounter - -1]; + ItemDefinition.intsStack[iStackCounter++] = j51 + i19; + continue; + } + if (opcode == 4001) { + iStackCounter -= 2; + int j19 = ItemDefinition.intsStack[iStackCounter]; + int k51 = ItemDefinition.intsStack[1 + iStackCounter]; + ItemDefinition.intsStack[iStackCounter++] = -k51 + j19; + continue; + } + if (4002 == opcode) { + iStackCounter -= 2; + int k19 = ItemDefinition.intsStack[iStackCounter]; + int l51 = ItemDefinition.intsStack[1 + iStackCounter]; + ItemDefinition.intsStack[iStackCounter++] = l51 * k19; + continue; + } + if (4003 == opcode) { + iStackCounter -= 2; + int l19 = ItemDefinition.intsStack[iStackCounter]; + int i52 = ItemDefinition.intsStack[iStackCounter - -1]; + ItemDefinition.intsStack[iStackCounter++] = l19 / i52; + continue; + } + if (opcode == 4004) { + int i20 = ItemDefinition.intsStack[--iStackCounter]; + ItemDefinition.intsStack[iStackCounter++] = (int) ((double) i20 * Math.random()); + continue; + } + if (4005 == opcode) { + int j20 = ItemDefinition.intsStack[--iStackCounter]; + ItemDefinition.intsStack[iStackCounter++] = (int) (Math.random() * (double) (1 + j20)); + continue; + } + if (4006 == opcode) { + iStackCounter -= 5; + int k20 = ItemDefinition.intsStack[iStackCounter]; + int j52 = ItemDefinition.intsStack[iStackCounter - -1]; + int i77 = ItemDefinition.intsStack[iStackCounter - -3]; + int i69 = ItemDefinition.intsStack[2 + iStackCounter]; + int j79 = ItemDefinition.intsStack[iStackCounter + 4]; + ItemDefinition.intsStack[iStackCounter++] = ((-k20 + j52) * (j79 + -i69)) / (-i69 + i77) + k20; + continue; + } + if (opcode == 4007) { + iStackCounter -= 2; + long l20 = ItemDefinition.intsStack[iStackCounter]; + long l69 = ItemDefinition.intsStack[iStackCounter + 1]; + ItemDefinition.intsStack[iStackCounter++] = (int) ((l20 * l69) / 100L + l20); + continue; + } + if (opcode == 4008) { + iStackCounter -= 2; + int i21 = ItemDefinition.intsStack[iStackCounter]; + int k52 = ItemDefinition.intsStack[1 + iStackCounter]; + ItemDefinition.intsStack[iStackCounter++] = TextureOperation3.bitwiseOr(i21, 1 << k52); + continue; + } + if (4009 == opcode) { + iStackCounter -= 2; + int j21 = ItemDefinition.intsStack[iStackCounter]; + int l52 = ItemDefinition.intsStack[1 + iStackCounter]; + ItemDefinition.intsStack[iStackCounter++] = Unsorted.bitwiseAnd(-1 - (1 << l52), j21); + continue; + } + if (opcode == 4010) { + iStackCounter -= 2; + int k21 = ItemDefinition.intsStack[iStackCounter]; + int i53 = ItemDefinition.intsStack[iStackCounter - -1]; + ItemDefinition.intsStack[iStackCounter++] = Unsorted.bitwiseAnd(k21, 1 << i53) != 0 ? 1 : 0; + continue; + } + if (opcode == 4011) { + iStackCounter -= 2; + int j53 = ItemDefinition.intsStack[iStackCounter - -1]; + int l21 = ItemDefinition.intsStack[iStackCounter]; + ItemDefinition.intsStack[iStackCounter++] = l21 % j53; + continue; + } + if (opcode == 4012) { + iStackCounter -= 2; + int k53 = ItemDefinition.intsStack[iStackCounter + 1]; + int i22 = ItemDefinition.intsStack[iStackCounter]; + if (0 != i22) + ItemDefinition.intsStack[iStackCounter++] = (int) Math.pow(i22, k53); + else + ItemDefinition.intsStack[iStackCounter++] = 0; + continue; + } + if (opcode == 4013) { + iStackCounter -= 2; + int l53 = ItemDefinition.intsStack[iStackCounter - -1]; + int j22 = ItemDefinition.intsStack[iStackCounter]; + if (j22 == 0) { + ItemDefinition.intsStack[iStackCounter++] = 0; + } else if (l53 == 0) + ItemDefinition.intsStack[iStackCounter++] = 0x7fffffff; + else + ItemDefinition.intsStack[iStackCounter++] = (int) Math.pow(j22, 1.0D / (double) l53); + continue; + } + if (opcode == 4014) { + iStackCounter -= 2; + int i54 = ItemDefinition.intsStack[iStackCounter + 1]; + int k22 = ItemDefinition.intsStack[iStackCounter]; + ItemDefinition.intsStack[iStackCounter++] = Unsorted.bitwiseAnd(i54, k22); + continue; + } + if (opcode == 4015) { + iStackCounter -= 2; + int l22 = ItemDefinition.intsStack[iStackCounter]; + int j54 = ItemDefinition.intsStack[iStackCounter + 1]; + ItemDefinition.intsStack[iStackCounter++] = TextureOperation3.bitwiseOr(l22, j54); + continue; + } + if (opcode == 4016) { + iStackCounter -= 2; + int i23 = ItemDefinition.intsStack[iStackCounter]; + int k54 = ItemDefinition.intsStack[1 + iStackCounter]; + ItemDefinition.intsStack[iStackCounter++] = k54 <= i23 ? k54 : i23; + continue; + } + if (opcode == 4017) { + iStackCounter -= 2; + int l54 = ItemDefinition.intsStack[1 + iStackCounter]; + int j23 = ItemDefinition.intsStack[iStackCounter]; + ItemDefinition.intsStack[iStackCounter++] = j23 > l54 ? j23 : l54; + continue; + } + if (opcode != 4018) + break; + iStackCounter -= 3; + long l23 = ItemDefinition.intsStack[iStackCounter]; + long l70 = ItemDefinition.intsStack[iStackCounter + 1]; + long l79 = ItemDefinition.intsStack[2 + iStackCounter]; + ItemDefinition.intsStack[iStackCounter++] = (int) ((l23 * l79) / l70); + continue; + } + if (4200 <= opcode) { + if (opcode >= 4300) { + if (opcode < 4400) { + if (4300 != opcode) + break; + iStackCounter -= 2; + int k23 = ItemDefinition.intsStack[iStackCounter]; + int i55 = ItemDefinition.intsStack[1 + iStackCounter]; + Class3_Sub28_Sub9 class3_sub28_sub9 = LinkedList.method1210(i55); + if (!class3_sub28_sub9.method585()) + ItemDefinition.intsStack[iStackCounter++] = NPCDefinition.getNPCDefinition(k23).method1475(i55, class3_sub28_sub9.anInt3614); + else + ItemDefinition.stringsStack[sStackCounter++] = NPCDefinition.getNPCDefinition(k23).method1477(i55, class3_sub28_sub9.aString_3619); + continue; + } + if (opcode >= 4500) { + if (opcode >= 4600) { + if (opcode < 5100) { + if (opcode == 5000) { + ItemDefinition.intsStack[iStackCounter++] = anInt3101; + continue; + } + if (opcode == 5001) { + iStackCounter -= 3; + anInt3101 = ItemDefinition.intsStack[iStackCounter]; + Class24.anInt467 = ItemDefinition.intsStack[1 + iStackCounter]; + Class45.anInt734 = ItemDefinition.intsStack[2 + iStackCounter]; + TextureOperation12.outgoingBuffer.putOpcode(157); + TextureOperation12.outgoingBuffer.writeByte(anInt3101); + TextureOperation12.outgoingBuffer.writeByte(Class24.anInt467); + TextureOperation12.outgoingBuffer.writeByte(Class45.anInt734); + continue; + } + if (opcode == 5002) { + RSString class94_17 = ItemDefinition.stringsStack[--sStackCounter]; + iStackCounter -= 2; + int j55 = ItemDefinition.intsStack[iStackCounter]; + int j69 = ItemDefinition.intsStack[1 + iStackCounter]; + TextureOperation12.outgoingBuffer.putOpcode(99); + TextureOperation12.outgoingBuffer.writeLong(class94_17.toLong()); + TextureOperation12.outgoingBuffer.writeByte(j55 - 1); + TextureOperation12.outgoingBuffer.writeByte(j69); + continue; + } + if (opcode == 5003) { + RSString class94_46 = null; + int i24 = ItemDefinition.intsStack[--iStackCounter]; + if (i24 < 100) + class94_46 = LinkableRSString.aStringArray2580[i24]; + if (class94_46 == null) + class94_46 = TextCore.aString_2331; + ItemDefinition.stringsStack[sStackCounter++] = class94_46; + continue; + } + if (opcode == 5004) { + int j24 = ItemDefinition.intsStack[--iStackCounter]; + int k55 = -1; + if (j24 < 100 && null != LinkableRSString.aStringArray2580[j24]) + k55 = MessageManager.anIntArray3082[j24]; + ItemDefinition.intsStack[iStackCounter++] = k55; + continue; + } + if (opcode == 5005) { + ItemDefinition.intsStack[iStackCounter++] = Class24.anInt467; + continue; + } + if (opcode == 5008) {//Used for a lot of things involving :: || More prefixes can be added by using || and listing said added way, ie ;; can be used instead of :: + RSString class94_18 = ItemDefinition.stringsStack[--sStackCounter]; + if (class94_18.startsWith(TextCore.aString_132) || class94_18.startsWith(RSString.parse(";;"))) + ClientCommands.ClientCommands(class94_18); + else if (Player.rights != 0 || (!Class3_Sub15.aBoolean2433 || Class121.aBoolean1641) && !TextureOperation31.aBoolean3166) { + RSString class94_47 = class94_18.toLowercase(); + byte byte3 = 0; + if (class94_47.startsWith(TextCore.TextColorYellow)) { + byte3 = 0; + class94_18 = class94_18.substring(TextCore.TextColorYellow.length()); + } else if (class94_47.startsWith(TextCore.TextColorRed)) { + class94_18 = class94_18.substring(TextCore.TextColorRed.length()); + byte3 = 1; + } else if (class94_47.startsWith(TextCore.TextColorGreen)) { + class94_18 = class94_18.substring(TextCore.TextColorGreen.length()); + byte3 = 2; + } else if (class94_47.startsWith(TextCore.TextColorCyan)) { + byte3 = 3; + class94_18 = class94_18.substring(TextCore.TextColorCyan.length()); + } else if (class94_47.startsWith(TextCore.TextColorPurple)) { + class94_18 = class94_18.substring(TextCore.TextColorPurple.length()); + byte3 = 4; + } else if (class94_47.startsWith(TextCore.TextColorWhite)) { + class94_18 = class94_18.substring(TextCore.TextColorWhite.length()); + byte3 = 5; + } else if (class94_47.startsWith(TextCore.TextFlashOne)) { + byte3 = 6; + class94_18 = class94_18.substring(TextCore.TextFlashOne.length()); + } else if (class94_47.startsWith(TextCore.TextFlashTwo)) { + byte3 = 7; + class94_18 = class94_18.substring(TextCore.TextFlashTwo.length()); + } else if (class94_47.startsWith(TextCore.TextFlashThree)) { + class94_18 = class94_18.substring(TextCore.TextFlashThree.length()); + byte3 = 8; + } else if (class94_47.startsWith(TextCore.TextGlowOne)) { + byte3 = 9; + class94_18 = class94_18.substring(TextCore.TextGlowOne.length()); + } else if (class94_47.startsWith(TextCore.TextGlowTwo)) { + byte3 = 10; + class94_18 = class94_18.substring(TextCore.TextGlowTwo.length()); + } else if (class94_47.startsWith(TextCore.TextGlowThree)) { + class94_18 = class94_18.substring(TextCore.TextGlowThree.length()); + byte3 = 11; + } else if (0 != Class3_Sub20.paramLanguage) + if (class94_47.startsWith(TextCore.TextColorYellow)) { + byte3 = 0; + class94_18 = class94_18.substring(TextCore.TextColorYellow.length()); + } else if (class94_47.startsWith(TextCore.TextColorRed)) { + class94_18 = class94_18.substring(TextCore.TextColorRed.length()); + byte3 = 1; + } else if (class94_47.startsWith(TextCore.TextColorGreen)) { + class94_18 = class94_18.substring(TextCore.TextColorGreen.length()); + byte3 = 2; + } else if (class94_47.startsWith(TextCore.TextColorCyan)) { + class94_18 = class94_18.substring(TextCore.TextColorCyan.length()); + byte3 = 3; + } else if (class94_47.startsWith(TextCore.TextColorPurple)) { + class94_18 = class94_18.substring(TextCore.TextColorPurple.length()); + byte3 = 4; + } else if (class94_47.startsWith(TextCore.TextColorWhite)) { + byte3 = 5; + class94_18 = class94_18.substring(TextCore.TextColorWhite.length()); + } else if (class94_47.startsWith(TextCore.TextFlashOne)) { + class94_18 = class94_18.substring(TextCore.TextFlashOne.length()); + byte3 = 6; + } else if (class94_47.startsWith(TextCore.TextFlashTwo)) { + byte3 = 7; + class94_18 = class94_18.substring(TextCore.TextFlashTwo.length()); + } else if (class94_47.startsWith(TextCore.TextFlashThree)) { + byte3 = 8; + class94_18 = class94_18.substring(TextCore.TextFlashThree.length()); + } else if (class94_47.startsWith(TextCore.TextGlowOne)) { + byte3 = 9; + class94_18 = class94_18.substring(TextCore.TextGlowOne.length()); + } else if (class94_47.startsWith(TextCore.TextGlowTwo)) { + class94_18 = class94_18.substring(TextCore.TextGlowTwo.length()); + byte3 = 10; + } else if (class94_47.startsWith(TextCore.TextGlowThree)) { + class94_18 = class94_18.substring(TextCore.TextGlowThree.length()); + byte3 = 11; + } + byte byte4 = 0; + class94_47 = class94_18.toLowercase(); + if (class94_47.startsWith(TextCore.TextWave)) { + class94_18 = class94_18.substring(TextCore.TextWave.length()); + byte4 = 1; + } else if (class94_47.startsWith(TextCore.TextWaveTwo)) { + byte4 = 2; + class94_18 = class94_18.substring(TextCore.TextWaveTwo.length()); + } else if (class94_47.startsWith(TextCore.TextShake)) { + class94_18 = class94_18.substring(TextCore.TextShake.length()); + byte4 = 3; + } else if (class94_47.startsWith(TextCore.HasScroll)) { + byte4 = 4; + class94_18 = class94_18.substring(TextCore.HasScroll.length()); + } else if (class94_47.startsWith(TextCore.TextSlide)) { + byte4 = 5; + class94_18 = class94_18.substring(TextCore.TextSlide.length()); + } else if (0 != Class3_Sub20.paramLanguage) + if (class94_47.startsWith(TextCore.TextWave)) { + class94_18 = class94_18.substring(TextCore.TextWave.length()); + byte4 = 1; + } else if (class94_47.startsWith(TextCore.TextWaveTwo)) { + byte4 = 2; + class94_18 = class94_18.substring(TextCore.TextWaveTwo.length()); + } else if (class94_47.startsWith(TextCore.TextShake)) { + byte4 = 3; + class94_18 = class94_18.substring(TextCore.TextShake.length()); + } else if (class94_47.startsWith(TextCore.HasScroll)) { + byte4 = 4; + class94_18 = class94_18.substring(TextCore.HasScroll.length()); + } else if (class94_47.startsWith(TextCore.TextSlide)) { + class94_18 = class94_18.substring(TextCore.TextSlide.length()); + byte4 = 5; + } + TextureOperation12.outgoingBuffer.putOpcode(237); + TextureOperation12.outgoingBuffer.writeByte(0); + int k79 = TextureOperation12.outgoingBuffer.index; + TextureOperation12.outgoingBuffer.writeByte(byte3); + TextureOperation12.outgoingBuffer.writeByte(byte4); + Class85.method1423(TextureOperation12.outgoingBuffer, class94_18); + TextureOperation12.outgoingBuffer.method769(-k79 + TextureOperation12.outgoingBuffer.index); + } + continue; + } + if (opcode == 5009) { + sStackCounter -= 2; + RSString class94_48 = ItemDefinition.stringsStack[sStackCounter + 1]; + RSString class94_19 = ItemDefinition.stringsStack[sStackCounter]; + if (Player.rights != 0 || (!Class3_Sub15.aBoolean2433 || Class121.aBoolean1641) && !TextureOperation31.aBoolean3166) { + TextureOperation12.outgoingBuffer.putOpcode(201); + TextureOperation12.outgoingBuffer.writeByte(0); + int k69 = TextureOperation12.outgoingBuffer.index; + TextureOperation12.outgoingBuffer.writeLong(class94_19.toLong()); + Class85.method1423(TextureOperation12.outgoingBuffer, class94_48); + TextureOperation12.outgoingBuffer.method769(TextureOperation12.outgoingBuffer.index - k69); + } + continue; + } + if (opcode == 5010) { + int k24 = ItemDefinition.intsStack[--iStackCounter]; + RSString class94_49 = null; + if (k24 < 100) + class94_49 = MessageManager.aStringArray3226[k24]; + if (null == class94_49) + class94_49 = TextCore.aString_2331; + ItemDefinition.stringsStack[sStackCounter++] = class94_49; + continue; + } + if (opcode == 5011) { + int l24 = ItemDefinition.intsStack[--iStackCounter]; + RSString class94_50 = null; + if (l24 < 100) + class94_50 = Class163_Sub3.aStringArray3003[l24]; + if (class94_50 == null) + class94_50 = TextCore.aString_2331; + ItemDefinition.stringsStack[sStackCounter++] = class94_50; + continue; + } + if (opcode == 5012) { + int i25 = ItemDefinition.intsStack[--iStackCounter]; + int l55 = -1; + if (i25 < 100) + l55 = MessageManager.anIntArray1835[i25]; + ItemDefinition.intsStack[iStackCounter++] = l55; + continue; + } + if (opcode == 5015) { + RSString class94_20; + if (Class102.player == null || null == Class102.player.displayName) + class94_20 = Class131.username; + else + class94_20 = Class102.player.getName(); + ItemDefinition.stringsStack[sStackCounter++] = class94_20; + continue; + } + if (opcode == 5016) { + ItemDefinition.intsStack[iStackCounter++] = Class45.anInt734; + continue; + } + if (opcode == 5017) { + ItemDefinition.intsStack[iStackCounter++] = TextureOperation16.anInt3114; + continue; + } + if (5050 == opcode) { + int j25 = ItemDefinition.intsStack[--iStackCounter]; + ItemDefinition.stringsStack[sStackCounter++] = QuickChat.getQuickChatMessage(j25).quickChatMenu; + continue; + } + if (opcode == 5051) { + int k25 = ItemDefinition.intsStack[--iStackCounter]; + Class3_Sub28_Sub1 class3_sub28_sub1 = QuickChat.getQuickChatMessage(k25); + if (class3_sub28_sub1.anIntArray3534 != null) + ItemDefinition.intsStack[iStackCounter++] = class3_sub28_sub1.anIntArray3534.length; + else + ItemDefinition.intsStack[iStackCounter++] = 0; + continue; + } + if (opcode == 5052) { + iStackCounter -= 2; + int l25 = ItemDefinition.intsStack[iStackCounter]; + int i56 = ItemDefinition.intsStack[iStackCounter - -1]; + Class3_Sub28_Sub1 class3_sub28_sub1_2 = QuickChat.getQuickChatMessage(l25); + int j77 = class3_sub28_sub1_2.anIntArray3534[i56]; + ItemDefinition.intsStack[iStackCounter++] = j77; + continue; + } + if (opcode == 5053) { + int i26 = ItemDefinition.intsStack[--iStackCounter]; + Class3_Sub28_Sub1 class3_sub28_sub1_1 = QuickChat.getQuickChatMessage(i26); + if (class3_sub28_sub1_1.anIntArray3540 != null) + ItemDefinition.intsStack[iStackCounter++] = class3_sub28_sub1_1.anIntArray3540.length; + else + ItemDefinition.intsStack[iStackCounter++] = 0; + continue; + } + if (opcode == 5054) { + iStackCounter -= 2; + int j56 = ItemDefinition.intsStack[1 + iStackCounter]; + int j26 = ItemDefinition.intsStack[iStackCounter]; + ItemDefinition.intsStack[iStackCounter++] = QuickChat.getQuickChatMessage(j26).anIntArray3540[j56]; + continue; + } + if (opcode == 5055) { + int k26 = ItemDefinition.intsStack[--iStackCounter]; + ItemDefinition.stringsStack[sStackCounter++] = QuickChat.method733(k26).method554(); + continue; + } + if (opcode == 5056) { + int l26 = ItemDefinition.intsStack[--iStackCounter]; + QuickChatDefinition quickChatDefinition = QuickChat.method733(l26); + if (null != quickChatDefinition.anIntArray3567) + ItemDefinition.intsStack[iStackCounter++] = quickChatDefinition.anIntArray3567.length; + else + ItemDefinition.intsStack[iStackCounter++] = 0; + continue; + } + if (opcode == 5057) { + iStackCounter -= 2; + int k56 = ItemDefinition.intsStack[1 + iStackCounter]; + int i27 = ItemDefinition.intsStack[iStackCounter]; + ItemDefinition.intsStack[iStackCounter++] = QuickChat.method733(i27).anIntArray3567[k56]; + continue; + } + if (opcode == 5058) { + CS2Methods.aQuickChat_1056 = new QuickChat(); + CS2Methods.aQuickChat_1056.anInt149 = ItemDefinition.intsStack[--iStackCounter]; + CS2Methods.aQuickChat_1056.aQuickChatDefinition_151 = QuickChat.method733(CS2Methods.aQuickChat_1056.anInt149); + CS2Methods.aQuickChat_1056.anIntArray153 = new int[CS2Methods.aQuickChat_1056.aQuickChatDefinition_151.method552()]; + continue; + } + if (5059 == opcode) { + TextureOperation12.outgoingBuffer.putOpcode(167); + TextureOperation12.outgoingBuffer.writeByte(0); + int j27 = TextureOperation12.outgoingBuffer.index; + TextureOperation12.outgoingBuffer.writeByte(0); + TextureOperation12.outgoingBuffer.writeShort(CS2Methods.aQuickChat_1056.anInt149); + CS2Methods.aQuickChat_1056.aQuickChatDefinition_151.method545(TextureOperation12.outgoingBuffer, CS2Methods.aQuickChat_1056.anIntArray153); + TextureOperation12.outgoingBuffer.method769(-j27 + TextureOperation12.outgoingBuffer.index); + continue; + } + if (5060 == opcode) { + RSString class94_21 = ItemDefinition.stringsStack[--sStackCounter]; + TextureOperation12.outgoingBuffer.putOpcode(178); + TextureOperation12.outgoingBuffer.writeByte(0); + int l56 = TextureOperation12.outgoingBuffer.index; + TextureOperation12.outgoingBuffer.writeLong(class94_21.toLong()); + TextureOperation12.outgoingBuffer.writeShort(CS2Methods.aQuickChat_1056.anInt149); + CS2Methods.aQuickChat_1056.aQuickChatDefinition_151.method545(TextureOperation12.outgoingBuffer, CS2Methods.aQuickChat_1056.anIntArray153); + TextureOperation12.outgoingBuffer.method769(TextureOperation12.outgoingBuffer.index + -l56); + continue; + } + if (opcode == 5061) { + TextureOperation12.outgoingBuffer.putOpcode(167); + TextureOperation12.outgoingBuffer.writeByte(0); + int k27 = TextureOperation12.outgoingBuffer.index; + TextureOperation12.outgoingBuffer.writeByte(1); + TextureOperation12.outgoingBuffer.writeShort(CS2Methods.aQuickChat_1056.anInt149); + CS2Methods.aQuickChat_1056.aQuickChatDefinition_151.method545(TextureOperation12.outgoingBuffer, CS2Methods.aQuickChat_1056.anIntArray153); + TextureOperation12.outgoingBuffer.method769(-k27 + TextureOperation12.outgoingBuffer.index); + continue; + } + if (opcode == 5062) { + iStackCounter -= 2; + int i57 = ItemDefinition.intsStack[1 + iStackCounter]; + int l27 = ItemDefinition.intsStack[iStackCounter]; + ItemDefinition.intsStack[iStackCounter++] = QuickChat.getQuickChatMessage(l27).anIntArray3535[i57]; + continue; + } + if (opcode == 5063) { + iStackCounter -= 2; + int j57 = ItemDefinition.intsStack[iStackCounter - -1]; + int i28 = ItemDefinition.intsStack[iStackCounter]; + ItemDefinition.intsStack[iStackCounter++] = QuickChat.getQuickChatMessage(i28).anIntArray3533[j57]; + continue; + } + if (5064 == opcode) { + iStackCounter -= 2; + int k57 = ItemDefinition.intsStack[1 + iStackCounter]; + int j28 = ItemDefinition.intsStack[iStackCounter]; + if (k57 != -1) + ItemDefinition.intsStack[iStackCounter++] = QuickChat.getQuickChatMessage(j28).method529(k57); + else + ItemDefinition.intsStack[iStackCounter++] = -1; + continue; + } + if (opcode == 5065) { + iStackCounter -= 2; + int k28 = ItemDefinition.intsStack[iStackCounter]; + int l57 = ItemDefinition.intsStack[iStackCounter + 1]; + if (l57 != -1) + ItemDefinition.intsStack[iStackCounter++] = QuickChat.getQuickChatMessage(k28).method526(l57); + else + ItemDefinition.intsStack[iStackCounter++] = -1; + continue; + } + if (opcode == 5066) { + int l28 = ItemDefinition.intsStack[--iStackCounter]; + ItemDefinition.intsStack[iStackCounter++] = QuickChat.method733(l28).method552(); + continue; + } + if (opcode == 5067) { + iStackCounter -= 2; + int i58 = ItemDefinition.intsStack[iStackCounter + 1]; + int i29 = ItemDefinition.intsStack[iStackCounter]; + int i70 = QuickChat.method733(i29).method550(49, i58); + ItemDefinition.intsStack[iStackCounter++] = i70; + continue; + } + if (5068 == opcode) { + iStackCounter -= 2; + int j29 = ItemDefinition.intsStack[iStackCounter]; + int j58 = ItemDefinition.intsStack[1 + iStackCounter]; + CS2Methods.aQuickChat_1056.anIntArray153[j29] = j58; + continue; + } + if (opcode == 5069) { + iStackCounter -= 2; + int k29 = ItemDefinition.intsStack[iStackCounter]; + int k58 = ItemDefinition.intsStack[iStackCounter + 1]; + CS2Methods.aQuickChat_1056.anIntArray153[k29] = k58; + continue; + } + if (opcode == 5070) { + iStackCounter -= 3; + int l29 = ItemDefinition.intsStack[iStackCounter]; + int j70 = ItemDefinition.intsStack[iStackCounter - -2]; + int l58 = ItemDefinition.intsStack[iStackCounter + 1]; + QuickChatDefinition quickChatDefinition_1 = QuickChat.method733(l29); + if (0 != quickChatDefinition_1.method550(73, l58)) + throw new RuntimeException("bad command"); + ItemDefinition.intsStack[iStackCounter++] = quickChatDefinition_1.method549(j70, l58); + continue; + } + if (opcode == 5071) { + RSString class94_22 = ItemDefinition.stringsStack[--sStackCounter]; + boolean flag4 = 1 == ItemDefinition.intsStack[--iStackCounter]; + Class3_Sub28_Sub3.method541(flag4, class94_22); + ItemDefinition.intsStack[iStackCounter++] = Unsorted.anInt952; + continue; + } + if (5072 == opcode) { + if (Class99.aShortArray1398 == null || Unsorted.anInt952 <= Entity.anInt2756) + ItemDefinition.intsStack[iStackCounter++] = -1; + else + ItemDefinition.intsStack[iStackCounter++] = Unsorted.bitwiseAnd(Class99.aShortArray1398[Entity.anInt2756++], 65535); + continue; + } + if (opcode != 5073) + break; + Entity.anInt2756 = 0; + continue; + } + if (5200 > opcode) { + if (5100 == opcode) { + if (!ObjectDefinition.aBooleanArray1490[86]) + ItemDefinition.intsStack[iStackCounter++] = 0; + else + ItemDefinition.intsStack[iStackCounter++] = 1; + continue; + } + if (5101 == opcode) { + if (ObjectDefinition.aBooleanArray1490[82]) + ItemDefinition.intsStack[iStackCounter++] = 1; + else + ItemDefinition.intsStack[iStackCounter++] = 0; + continue; + } + if (5102 != opcode) + break; + if (ObjectDefinition.aBooleanArray1490[81]) + ItemDefinition.intsStack[iStackCounter++] = 1; + else + ItemDefinition.intsStack[iStackCounter++] = 0; + continue; + } + if (opcode < 5300) { + if (opcode == 5200) { + NPCDefinition.method1479(ItemDefinition.intsStack[--iStackCounter]); + continue; + } + if (5201 == opcode) { + ItemDefinition.intsStack[iStackCounter++] = Class3_Sub28_Sub8.method571(); + continue; + } + if (opcode == 5202) { + Class3_Sub24_Sub4.method503(ItemDefinition.intsStack[--iStackCounter]); + continue; + } + if (5203 == opcode) { + Unsorted.method84(ItemDefinition.stringsStack[--sStackCounter], -801); + continue; + } + if (5204 == opcode) { + ItemDefinition.stringsStack[sStackCounter - 1] = CS2Methods.method27(ItemDefinition.stringsStack[sStackCounter - 1]); + continue; + } + if (5205 == opcode) { + Class3_Sub10.method138(ItemDefinition.stringsStack[--sStackCounter]); + continue; + } + if (opcode == 5206) { + int i30 = ItemDefinition.intsStack[--iStackCounter]; + Class3_Sub28_Sub3 class3_sub28_sub3_4 = Unsorted.method884(0x3fff & i30 >> 14, (byte) 111, 0x3fff & i30); + if (class3_sub28_sub3_4 != null) + ItemDefinition.stringsStack[sStackCounter++] = class3_sub28_sub3_4.aString_3561; + else + ItemDefinition.stringsStack[sStackCounter++] = TextCore.aString_2331; + continue; + } + if (opcode == 5207) { + Class3_Sub28_Sub3 class3_sub28_sub3 = Class3_Sub15.method371(ItemDefinition.stringsStack[--sStackCounter]); + if (null != class3_sub28_sub3 && class3_sub28_sub3.aString_3554 != null) + ItemDefinition.stringsStack[sStackCounter++] = class3_sub28_sub3.aString_3554; + else + ItemDefinition.stringsStack[sStackCounter++] = TextCore.aString_2331; + continue; + } + if (5208 == opcode) { + ItemDefinition.intsStack[iStackCounter++] = Class49.anInt817; + ItemDefinition.intsStack[iStackCounter++] = Class17.anInt410; + continue; + } + if (5209 == opcode) { + ItemDefinition.intsStack[iStackCounter++] = TextureOperation37.anInt3256 + Class3_Sub28_Sub1.anInt3536; + ItemDefinition.intsStack[iStackCounter++] = Unsorted.anInt65 + -Scenery.anInt2251 + (-1 + Class108.anInt1460); + continue; + } + if (opcode == 5210) { + Class3_Sub28_Sub3 class3_sub28_sub3_1 = Unsorted.method520((byte) -82); + if (class3_sub28_sub3_1 == null) { + ItemDefinition.intsStack[iStackCounter++] = 0; + ItemDefinition.intsStack[iStackCounter++] = 0; + } else { + ItemDefinition.intsStack[iStackCounter++] = class3_sub28_sub3_1.anInt3558 * 64; + ItemDefinition.intsStack[iStackCounter++] = 64 * class3_sub28_sub3_1.anInt3556; + } + continue; + } + if (opcode == 5211) { + Class3_Sub28_Sub3 class3_sub28_sub3_2 = Unsorted.method520((byte) -121); + if (class3_sub28_sub3_2 == null) { + ItemDefinition.intsStack[iStackCounter++] = 0; + ItemDefinition.intsStack[iStackCounter++] = 0; + } else { + ItemDefinition.intsStack[iStackCounter++] = class3_sub28_sub3_2.anInt3559 - class3_sub28_sub3_2.anInt3555; + ItemDefinition.intsStack[iStackCounter++] = -class3_sub28_sub3_2.anInt3562 + class3_sub28_sub3_2.anInt3549; + } + continue; + } + if (opcode == 5212) { + int j30 = Class67.method1258((byte) -53); + int k70 = 0; + RSString class94_51; + if (j30 == -1) { + class94_51 = TextCore.aString_2331; + } else { + class94_51 = Class119.aClass131_1624.aStringArray1721[j30]; + k70 = Class119.aClass131_1624.method1791(j30, 8); + } + class94_51 = class94_51.method1560(TextCore.aString_2765, TextCore.aString_2168); + ItemDefinition.stringsStack[sStackCounter++] = class94_51; + ItemDefinition.intsStack[iStackCounter++] = k70; + continue; + } + if (opcode == 5213) { + int i71 = 0; + int k30 = TextureOperation23.method251(); + RSString class94_52; + if (k30 == -1) { + class94_52 = TextCore.aString_2331; + } else { + class94_52 = Class119.aClass131_1624.aStringArray1721[k30]; + i71 = Class119.aClass131_1624.method1791(k30, 8); + } + class94_52 = class94_52.method1560(TextCore.aString_2765, TextCore.aString_2168); + ItemDefinition.stringsStack[sStackCounter++] = class94_52; + ItemDefinition.intsStack[iStackCounter++] = i71; + continue; + } + if (opcode == 5214) { + int l30 = ItemDefinition.intsStack[--iStackCounter]; + Unsorted.method565(0x3fff & l30 >> 14, 0x3fff & l30); + continue; + } + if (opcode == 5215) { + int i31 = ItemDefinition.intsStack[--iStackCounter]; + RSString class94_53 = ItemDefinition.stringsStack[--sStackCounter]; + boolean flag10 = false; + Queue class13 = method1664(0x3fff & i31 >> 14, 0x3fff & i31); + Class3_Sub28_Sub3 class3_sub28_sub3_5 = (Class3_Sub28_Sub3) class13.getFront(); + do { + if (class3_sub28_sub3_5 == null) + break; + if (class3_sub28_sub3_5.aString_3561.equalsStringIgnoreCase(class94_53)) { + flag10 = true; + break; + } + class3_sub28_sub3_5 = (Class3_Sub28_Sub3) class13.next(); + } while (true); + if (!flag10) + ItemDefinition.intsStack[iStackCounter++] = 0; + else + ItemDefinition.intsStack[iStackCounter++] = 1; + continue; + } + if (opcode == 5216) { + int j31 = ItemDefinition.intsStack[--iStackCounter]; + TextureOperation36.method344(j31, 4); + continue; + } + if (opcode == 5217) { + int k31 = ItemDefinition.intsStack[--iStackCounter]; + if (!Class3_Sub10.method140(k31)) + ItemDefinition.intsStack[iStackCounter++] = 0; + else + ItemDefinition.intsStack[iStackCounter++] = 1; + continue; + } + if (opcode == 5218) { + Class3_Sub28_Sub3 class3_sub28_sub3_3 = Unsorted.method520((byte) -124); + if (null != class3_sub28_sub3_3) + ItemDefinition.intsStack[iStackCounter++] = class3_sub28_sub3_3.anInt3563; + else + ItemDefinition.intsStack[iStackCounter++] = -1; + continue; + } + if (opcode == 5219) { + Class21.method915(ItemDefinition.stringsStack[--sStackCounter]); + continue; + } + if (opcode != 5220) + break; + ItemDefinition.intsStack[iStackCounter++] = GroundItemLink.anInt2737 != 100 ? 0 : 1; + continue; + } + if (opcode < 5400) { + if (opcode == 5300) { + iStackCounter -= 2; + int i59 = ItemDefinition.intsStack[1 + iStackCounter]; + int l31 = ItemDefinition.intsStack[iStackCounter]; + GameObject.graphicsSettings(false, 3, l31, i59); + ItemDefinition.intsStack[iStackCounter++] = null != TextureOperation30.fullScreenFrame ? 1 : 0; + continue; + } + if (opcode == 5301) { + if (null != TextureOperation30.fullScreenFrame) + GameObject.graphicsSettings(false, Unsorted.anInt2577, -1, -1); + continue; + } + if (5302 == opcode) { + Class106[] aclass106 = Unsorted.method88(); + ItemDefinition.intsStack[iStackCounter++] = aclass106.length; + continue; + } + if (5303 == opcode) { + int i32 = ItemDefinition.intsStack[--iStackCounter]; + Class106[] aclass106_1 = Unsorted.method88(); + ItemDefinition.intsStack[iStackCounter++] = aclass106_1[i32].anInt1447; + ItemDefinition.intsStack[iStackCounter++] = aclass106_1[i32].anInt1449; + continue; + } + if (opcode == 5305) { + int j59 = Unsorted.anInt3071; + int j32 = TextureOperation.anInt2378; + int j71 = -1; + Class106[] aclass106_2 = Unsorted.method88(); + int i80 = 0; + do { + if (aclass106_2.length <= i80) + break; + Class106 class106 = aclass106_2[i80]; + if (j32 == class106.anInt1447 && class106.anInt1449 == j59) { + j71 = i80; + break; + } + i80++; + } while (true); + ItemDefinition.intsStack[iStackCounter++] = j71; + continue; + } + if (opcode == 5306) { + ItemDefinition.intsStack[iStackCounter++] = Class83.getWindowType(); + continue; + } + if (opcode == 5307) { + int k32 = ItemDefinition.intsStack[--iStackCounter]; + if (k32 < 0 || k32 > 2) + k32 = 0; + GameObject.graphicsSettings(false, k32, -1, -1); + continue; + } + if (5308 == opcode) { + ItemDefinition.intsStack[iStackCounter++] = Unsorted.anInt2577; + continue; + } + if (5309 != opcode) + break; + int l32 = ItemDefinition.intsStack[--iStackCounter]; + if (l32 < 0 || l32 > 2) + l32 = 0; + Unsorted.anInt2577 = l32; + Class119.method1730(Class38.gameSignlink); + continue; + } + if (5500 > opcode) { + if (opcode == 5400) { + sStackCounter -= 2; + RSString class94_23 = ItemDefinition.stringsStack[sStackCounter]; + RSString class94_54 = ItemDefinition.stringsStack[sStackCounter - -1]; + int k71 = ItemDefinition.intsStack[--iStackCounter]; + TextureOperation12.outgoingBuffer.putOpcode(117); + TextureOperation12.outgoingBuffer.writeByte(TextureOperation29.method326((byte) 39, class94_23) - (-TextureOperation29.method326((byte) 102, class94_54) + -1)); + TextureOperation12.outgoingBuffer.writeString(class94_23); + TextureOperation12.outgoingBuffer.writeString(class94_54); + TextureOperation12.outgoingBuffer.writeByte(k71); + continue; + } + if (opcode == 5401) { + iStackCounter -= 2; + TextureOperation38.aShortArray3455[ItemDefinition.intsStack[iStackCounter]] = (short) Class56.method1186(ItemDefinition.intsStack[iStackCounter + 1]); + CS2Methods.method28(); + Unsorted.method746((byte) -29); + Class167.method2265(); + WorldListEntry.method1076(); + Unsorted.method1093(false); + continue; + } + if (opcode == 5405) { + iStackCounter -= 2; + int i33 = ItemDefinition.intsStack[iStackCounter]; + int k59 = ItemDefinition.intsStack[1 + iStackCounter]; + if (i33 >= 0 && i33 < 2) + Class58.anIntArrayArrayArray911[i33] = new int[k59 << 1][4]; + continue; + } + if (opcode == 5406) { + iStackCounter -= 7; + int j33 = ItemDefinition.intsStack[iStackCounter]; + int l59 = ItemDefinition.intsStack[1 + iStackCounter] << 1; + int k77 = ItemDefinition.intsStack[iStackCounter - -3]; + int l71 = ItemDefinition.intsStack[2 + iStackCounter]; + int j80 = ItemDefinition.intsStack[4 + iStackCounter]; + int j82 = ItemDefinition.intsStack[6 + iStackCounter]; + int l81 = ItemDefinition.intsStack[5 + iStackCounter]; + if (j33 >= 0 && j33 < 2 && null != Class58.anIntArrayArrayArray911[j33] && l59 >= 0 && Class58.anIntArrayArrayArray911[j33].length > l59) { + Class58.anIntArrayArrayArray911[j33][l59] = (new int[]{ + (Unsorted.bitwiseAnd(0xfffc3b9, l71) >> 14) * 128, k77, 128 * Unsorted.bitwiseAnd(l71, 16383), j82 + }); + Class58.anIntArrayArrayArray911[j33][l59 + 1] = (new int[]{ + 128 * (Unsorted.bitwiseAnd(j80, 0xfffed27) >> 14), l81, 128 * Unsorted.bitwiseAnd(j80, 16383) + }); + } + continue; + } + if (opcode == 5407) { + int k33 = Class58.anIntArrayArrayArray911[ItemDefinition.intsStack[--iStackCounter]].length >> 1; + ItemDefinition.intsStack[iStackCounter++] = k33; + continue; + } + if (opcode == 5411) { + if (TextureOperation30.fullScreenFrame != null) + GameObject.graphicsSettings(false, Unsorted.anInt2577, -1, -1); + if (null == GameShell.frame) + System.exit(0); + //Class99.method1596(RSInterface.method856(), (byte) 126, false); + else + System.exit(0); + continue; + } + if (opcode == 5419) { + RSString class94_24 = TextCore.aString_2331; + if (null != Class136.aClass64_1778) { + class94_24 = Class108.method1653(Class136.aClass64_1778.anInt979); + if (Class136.aClass64_1778.anObject974 != null) { + byte[] abyte0 = null; + abyte0 = ((String) Class136.aClass64_1778.anObject974).getBytes(StandardCharsets.ISO_8859_1); + class94_24 = TextureOperation33.bufferToString(abyte0, abyte0.length, 0); + } + } + ItemDefinition.stringsStack[sStackCounter++] = class94_24; + continue; + } + if (opcode == 5420) { + ItemDefinition.intsStack[iStackCounter++] = Signlink.anInt1214 != 3 ? 0 : 1; + continue; + } + if (opcode == 5421) { + if (null != TextureOperation30.fullScreenFrame) + GameObject.graphicsSettings(false, Unsorted.anInt2577, -1, -1); + boolean flag5 = 1 == ItemDefinition.intsStack[--iStackCounter]; + RSString class94_25 = ItemDefinition.stringsStack[--sStackCounter]; + RSString class94_64 = RSString.stringCombiner(new RSString[]{ + RSInterface.method856(), class94_25 + }); + if (null == GameShell.frame && (!flag5 || Signlink.anInt1214 == 3 || !Signlink.osName.startsWith("win") || Class106.paramUserUsingInternetExplorer)) { + Class99.method1596(class94_64, (byte) 127, flag5); + } else { + Unsorted.aBoolean2154 = flag5; + TextureOperation5.aString_3295 = class94_64; + AudioThread.aClass64_351 = Class38.gameSignlink.method1452(new String(class94_64.method1568(), StandardCharsets.ISO_8859_1), true); + } + continue; + } + if (5422 == opcode) { + int i72 = ItemDefinition.intsStack[--iStackCounter]; + sStackCounter -= 2; + RSString class94_55 = ItemDefinition.stringsStack[1 + sStackCounter]; + RSString class94_26 = ItemDefinition.stringsStack[sStackCounter]; + if (class94_26.length() > 0) { + if (null == BufferedDataStream.aStringArray3802) + BufferedDataStream.aStringArray3802 = new RSString[TextureOperation19.anIntArray3218[Class158.paramGameTypeID]]; + BufferedDataStream.aStringArray3802[i72] = class94_26; + } + if (class94_55.length() > 0) { + if (Unsorted.aStringArray45 == null) + Unsorted.aStringArray45 = new RSString[TextureOperation19.anIntArray3218[Class158.paramGameTypeID]]; + Unsorted.aStringArray45[i72] = class94_55; + } + continue; + } + if (opcode == 5423) { + continue; + } + if (5424 == opcode) { + iStackCounter -= 11; + InterfaceWidget.anInt3600 = ItemDefinition.intsStack[iStackCounter]; + Unsorted.anInt963 = ItemDefinition.intsStack[iStackCounter - -1]; + MouseListeningClass.anInt1926 = ItemDefinition.intsStack[iStackCounter + 2]; + Class136.anInt1771 = ItemDefinition.intsStack[3 + iStackCounter]; + WorldListEntry.archiveID = ItemDefinition.intsStack[4 + iStackCounter]; + WorldListEntry.anInt1400 = ItemDefinition.intsStack[5 + iStackCounter]; + WorldListEntry.anInt739 = ItemDefinition.intsStack[6 + iStackCounter]; + WorldListEntry.anInt1126 = ItemDefinition.intsStack[7 + iStackCounter]; + WorldListEntry.anInt2937 = ItemDefinition.intsStack[8 + iStackCounter]; + WorldListEntry.anInt3351 = ItemDefinition.intsStack[iStackCounter + 9]; + Class154.anInt1957 = ItemDefinition.intsStack[10 + iStackCounter]; + CacheIndex.spritesIndex.retrieveSpriteFile(WorldListEntry.archiveID); + CacheIndex.spritesIndex.retrieveSpriteFile(WorldListEntry.anInt1400); + CacheIndex.spritesIndex.retrieveSpriteFile(WorldListEntry.anInt739); + CacheIndex.spritesIndex.retrieveSpriteFile(WorldListEntry.anInt1126); + CacheIndex.spritesIndex.retrieveSpriteFile(WorldListEntry.anInt2937); + Unsorted.aBoolean1951 = true; + continue; + } + if (opcode == 5425) { + InvalidateData.method165(); + Unsorted.aBoolean1951 = false; + continue; + } + if (opcode == 5426) { + Class161.anInt2027 = ItemDefinition.intsStack[--iStackCounter]; + continue; + } + if (opcode != 5427) + break; + iStackCounter -= 2; + Class99.anInt1403 = ItemDefinition.intsStack[iStackCounter]; + Class131.anInt1719 = ItemDefinition.intsStack[iStackCounter + 1]; + continue; + } + if (5600 > opcode) { + if (5500 == opcode) { + iStackCounter -= 4; + int l33 = ItemDefinition.intsStack[iStackCounter]; + int l77 = ItemDefinition.intsStack[iStackCounter - -3]; + int j72 = ItemDefinition.intsStack[iStackCounter - -2]; + int i60 = ItemDefinition.intsStack[iStackCounter + 1]; + Class3_Sub20.method390(false, j72, i60, l77, (byte) -128, -Texture.y1152 + (0x3fff & l33), ((0xffffe30 & l33) >> 14) - Class131.x1716); + continue; + } + if (opcode == 5501) { + iStackCounter -= 4; + int j60 = ItemDefinition.intsStack[1 + iStackCounter]; + int i34 = ItemDefinition.intsStack[iStackCounter]; + int i78 = ItemDefinition.intsStack[iStackCounter - -3]; + int k72 = ItemDefinition.intsStack[iStackCounter + 2]; + Class164_Sub1.method2238(j60, (0x3fff & i34) - Texture.y1152, k72, -Class131.x1716 + ((0xffff221 & i34) >> 14), i78); + continue; + } + if (opcode == 5502) { + iStackCounter -= 6; + int j34 = ItemDefinition.intsStack[iStackCounter]; + if (j34 >= 2) + throw new RuntimeException(); + NPCDefinition.anInt1252 = j34; + int k60 = ItemDefinition.intsStack[iStackCounter - -1]; + if (1 + k60 >= Class58.anIntArrayArrayArray911[NPCDefinition.anInt1252].length >> 1) + throw new RuntimeException(); + Unsorted.anInt1081 = k60; + Class163_Sub2_Sub1.anInt4020 = 0; + Class134.anInt1759 = ItemDefinition.intsStack[iStackCounter + 2]; + TextureOperation.anInt2383 = ItemDefinition.intsStack[iStackCounter + 3]; + int l72 = ItemDefinition.intsStack[iStackCounter + 4]; + if (2 <= l72) + throw new RuntimeException(); + InterfaceWidget.anInt2293 = l72; + int j78 = ItemDefinition.intsStack[5 + iStackCounter]; + if (Class58.anIntArrayArrayArray911[InterfaceWidget.anInt2293].length >> 1 <= 1 + j78) + throw new RuntimeException(); + Class39.anInt670 = j78; + Class133.anInt1753 = 3; + continue; + } + if (opcode == 5503) { + Class3_Sub28_Sub5.method560(); + continue; + } + if (5504 == opcode) { + iStackCounter -= 2; + Unsorted.anInt2309 = ItemDefinition.intsStack[iStackCounter]; + GraphicDefinition.CAMERA_DIRECTION = ItemDefinition.intsStack[iStackCounter + 1]; + if (Class133.anInt1753 == 2) { + TextureOperation28.anInt3315 = GraphicDefinition.CAMERA_DIRECTION; + Class139.anInt1823 = Unsorted.anInt2309; + } + Unsorted.clampCameraAngle(); + continue; + } + if (opcode == 5505) { + ItemDefinition.intsStack[iStackCounter++] = Unsorted.anInt2309; + continue; + } + if (5506 != opcode) + break; + ItemDefinition.intsStack[iStackCounter++] = GraphicDefinition.CAMERA_DIRECTION; + continue; + } + if (opcode >= 5700) { + if (6100 > opcode) { + if (opcode == 6001) { + int k34 = ItemDefinition.intsStack[--iStackCounter]; + if (k34 < 1) + k34 = 1; + if (k34 > 4) + k34 = 4; + Unsorted.anInt3625 = k34; + if (!HDToolKit.highDetail || !Class106.aBoolean1441) { + if (Unsorted.anInt3625 == 1) + Class51.method1137(0.9F); + if (Unsorted.anInt3625 == 2) + Class51.method1137(0.8F); + if (3 == Unsorted.anInt3625) + Class51.method1137(0.7F); + if (Unsorted.anInt3625 == 4) + Class51.method1137(0.6F); + } + if (HDToolKit.highDetail) { + TextureOperation31.method236(); + if (!Class106.aBoolean1441) + Class84.method1417(); + } + Unsorted.method746((byte) -29); + Class119.method1730(Class38.gameSignlink); + aBoolean2705 = false; + continue; + } + if (opcode == 6002) { + Class25.method957(1 == ItemDefinition.intsStack[--iStackCounter]); + Class3_Sub10.method139(66); + Class84.method1417(); + Unsorted.method792(); + Class119.method1730(Class38.gameSignlink); + aBoolean2705 = false; + continue; + } + if (opcode == 6003) { + Unsorted.aBoolean3604 = ItemDefinition.intsStack[--iStackCounter] == 1; + Unsorted.method792(); + Class119.method1730(Class38.gameSignlink); + aBoolean2705 = false; + continue; + } + if (opcode == 6005) { + KeyboardListener.aBoolean1905 = ItemDefinition.intsStack[--iStackCounter] == 1; + Class84.method1417(); + Class119.method1730(Class38.gameSignlink); + aBoolean2705 = false; + continue; + } + if (opcode == 6006) { + Class25.aBoolean488 = ItemDefinition.intsStack[--iStackCounter] == 1; + ((Class102) Class51.anInterface2_838).method1616(!Class25.aBoolean488); + Class119.method1730(Class38.gameSignlink); + aBoolean2705 = false; + continue; + } + if (opcode == 6007) { + RSInterface.aBoolean236 = ItemDefinition.intsStack[--iStackCounter] == 1; + Class119.method1730(Class38.gameSignlink); + aBoolean2705 = false; + continue; + } + if (opcode == 6008) { + WorldListEntry.aBoolean2623 = ItemDefinition.intsStack[--iStackCounter] == 1; + Class119.method1730(Class38.gameSignlink); + aBoolean2705 = false; + continue; + } + if (opcode == 6009) { + Unsorted.aBoolean3275 = ItemDefinition.intsStack[--iStackCounter] == 1; + Class119.method1730(Class38.gameSignlink); + aBoolean2705 = false; + continue; + } + if (opcode == 6010) { + Class140_Sub6.aBoolean2910 = 1 == ItemDefinition.intsStack[--iStackCounter]; + Class119.method1730(Class38.gameSignlink); + aBoolean2705 = false; + continue; + } + if (opcode == 6011) { + int l34 = ItemDefinition.intsStack[--iStackCounter]; + if (l34 < 0 || l34 > 2) + l34 = 0; + Unsorted.anInt1137 = l34; + Class119.method1730(Class38.gameSignlink); + aBoolean2705 = false; + continue; + } + if (6012 == opcode) { + if (HDToolKit.highDetail) + Unsorted.method551(0, 0); + Class106.aBoolean1441 = ItemDefinition.intsStack[--iStackCounter] == 1; + if (HDToolKit.highDetail && Class106.aBoolean1441) { + Class51.method1137(0.7F); + } else { + if (Unsorted.anInt3625 == 1) + Class51.method1137(0.9F); + if (Unsorted.anInt3625 == 2) + Class51.method1137(0.8F); + if (Unsorted.anInt3625 == 3) + Class51.method1137(0.7F); + if (Unsorted.anInt3625 == 4) + Class51.method1137(0.6F); + } + Class84.method1417(); + Class119.method1730(Class38.gameSignlink); + aBoolean2705 = false; + continue; + } + if (opcode == 6014) { + Class128.aBoolean1685 = ItemDefinition.intsStack[--iStackCounter] == 1; + if (HDToolKit.highDetail) + Class84.method1417(); + Class119.method1730(Class38.gameSignlink); + aBoolean2705 = false; + continue; + } + if (opcode == 6015) { + Class38.aBoolean661 = ItemDefinition.intsStack[--iStackCounter] == 1; + if (HDToolKit.highDetail) + TextureOperation31.method236(); + Class119.method1730(Class38.gameSignlink); + aBoolean2705 = false; + continue; + } + if (6016 == opcode) { + int i35 = ItemDefinition.intsStack[--iStackCounter]; + if (HDToolKit.highDetail) + Class3_Sub28_Sub5.forceReplaceCanvasEnable = true; + if (0 > i35 || i35 > 2) + i35 = 0; + Unsorted.anInt3671 = i35; + continue; + } + if (opcode == 6017) { + TextureOperation17.stereoSound = ItemDefinition.intsStack[--iStackCounter] == 1; + GameShell.method34(); + Class119.method1730(Class38.gameSignlink); + aBoolean2705 = false; + continue; + } + if (opcode == 6018) { + int j35 = ItemDefinition.intsStack[--iStackCounter]; + if (j35 < 0) + j35 = 0; + if (j35 > 127) + j35 = 127; + AudioHandler.soundEffectVolume = j35; + Class119.method1730(Class38.gameSignlink); + aBoolean2705 = false; + continue; + } + if (opcode == 6019) { + int k35 = ItemDefinition.intsStack[--iStackCounter]; + if (k35 < 0) + k35 = 0; + if (k35 > 255) + k35 = 255; + if (AudioHandler.musicVolume != k35) { + if (AudioHandler.musicVolume == 0 && AudioHandler.currentTrack != -1) { + Class70.method1285(CacheIndex.musicIndex, AudioHandler.currentTrack, k35); + AudioHandler.musicEffectPlaying = false; + } else if (k35 == 0) { + GameObject.method1870(); + AudioHandler.musicEffectPlaying = false; + } else { + LinkableRSString.method736(k35, 115); + } + AudioHandler.musicVolume = k35; + } + Class119.method1730(Class38.gameSignlink); + aBoolean2705 = false; + continue; + } + if (opcode == 6020) { + int l35 = ItemDefinition.intsStack[--iStackCounter]; + if (l35 < 0) + l35 = 0; + if (127 < l35) + l35 = 127; + Sprites.ambientVolume = l35; + Class119.method1730(Class38.gameSignlink); + aBoolean2705 = false; + continue; + } + if (opcode == 6021) { + Unsorted.aBoolean1084 = ItemDefinition.intsStack[--iStackCounter] == 1; + Unsorted.method792(); + continue; + } + if (opcode == 6023) { + int i36 = ItemDefinition.intsStack[--iStackCounter]; + if (0 > i36) + i36 = 0; + if (i36 > 2) + i36 = 2; + boolean flag6 = false; + if (96 > Class3_Sub24_Sub3.maxClientMemory) { + flag6 = true; + i36 = 0; + } + Class127_Sub1.method1758(i36); + Class119.method1730(Class38.gameSignlink); + aBoolean2705 = false; + ItemDefinition.intsStack[iStackCounter++] = flag6 ? 0 : 1; + continue; + } + if (opcode == 6024) { + int j36 = ItemDefinition.intsStack[--iStackCounter]; + if (j36 < 0 || 2 < j36) + j36 = 0; + Class3_Sub28_Sub9.anInt3622 = j36; + Class119.method1730(Class38.gameSignlink); + continue; + } + if (opcode != 6028) + break; + Class163_Sub3.aBoolean3004 = ItemDefinition.intsStack[--iStackCounter] != 0; + Class119.method1730(Class38.gameSignlink); + continue; + } + if (opcode < 6200) { + if (opcode == 6101) { + ItemDefinition.intsStack[iStackCounter++] = Unsorted.anInt3625; + continue; + } + if (opcode == 6102) { + ItemDefinition.intsStack[iStackCounter++] = NPC.isHighDetail(109) ? 1 : 0; + continue; + } + if (opcode == 6103) { + ItemDefinition.intsStack[iStackCounter++] = Unsorted.aBoolean3604 ? 1 : 0; + continue; + } + if (opcode == 6105) { + ItemDefinition.intsStack[iStackCounter++] = KeyboardListener.aBoolean1905 ? 1 : 0; + continue; + } + if (opcode == 6106) { + ItemDefinition.intsStack[iStackCounter++] = Class25.aBoolean488 ? 1 : 0; + continue; + } + if (opcode == 6107) { + ItemDefinition.intsStack[iStackCounter++] = RSInterface.aBoolean236 ? 1 : 0; + continue; + } + if (opcode == 6108) { + ItemDefinition.intsStack[iStackCounter++] = WorldListEntry.aBoolean2623 ? 1 : 0; + continue; + } + if (6109 == opcode) { + ItemDefinition.intsStack[iStackCounter++] = Unsorted.aBoolean3275 ? 1 : 0; + continue; + } + if (opcode == 6110) { + ItemDefinition.intsStack[iStackCounter++] = Class140_Sub6.aBoolean2910 ? 1 : 0; + continue; + } + if (opcode == 6111) { + ItemDefinition.intsStack[iStackCounter++] = Unsorted.anInt1137; + continue; + } + if (6112 == opcode) { + ItemDefinition.intsStack[iStackCounter++] = Class106.aBoolean1441 ? 1 : 0; + continue; + } + if (6114 == opcode) { + ItemDefinition.intsStack[iStackCounter++] = Class128.aBoolean1685 ? 1 : 0; + continue; + } + if (opcode == 6115) { + ItemDefinition.intsStack[iStackCounter++] = Class38.aBoolean661 ? 1 : 0; + continue; + } + if (opcode == 6116) { + ItemDefinition.intsStack[iStackCounter++] = Unsorted.anInt3671; + continue; + } + if (6117 == opcode) { + ItemDefinition.intsStack[iStackCounter++] = TextureOperation17.stereoSound ? 1 : 0; + continue; + } + if (opcode == 6118) { + ItemDefinition.intsStack[iStackCounter++] = AudioHandler.soundEffectVolume; + continue; + } + if (6119 == opcode) { + ItemDefinition.intsStack[iStackCounter++] = AudioHandler.musicVolume; + continue; + } + if (opcode == 6120) { + ItemDefinition.intsStack[iStackCounter++] = Sprites.ambientVolume; + continue; + } + if (opcode == 6121) { + if (HDToolKit.highDetail) + ItemDefinition.intsStack[iStackCounter++] = HDToolKit.supportMultisample ? 1 : 0; + else + ItemDefinition.intsStack[iStackCounter++] = 0; + continue; + } + if (opcode == 6123) { + ItemDefinition.intsStack[iStackCounter++] = Class127_Sub1.method1757(); + continue; + } + if (opcode == 6124) { + ItemDefinition.intsStack[iStackCounter++] = Class3_Sub28_Sub9.anInt3622; + continue; + } + if (opcode != 6128) + break; + ItemDefinition.intsStack[iStackCounter++] = Class163_Sub3.aBoolean3004 ? 1 : 0; + continue; + } + if (opcode >= 6300) { + if (opcode < 6400) { + if (opcode == 6300) { + ItemDefinition.intsStack[iStackCounter++] = (int) (TimeUtils.time() / 60000L); + continue; + } + if (opcode == 6301) { + ItemDefinition.intsStack[iStackCounter++] = -11745 + (int) (TimeUtils.time() / 0x5265c00L); + continue; + } + if (opcode == 6302) { + iStackCounter -= 3; + int i73 = ItemDefinition.intsStack[iStackCounter + 2]; + int l60 = ItemDefinition.intsStack[iStackCounter - -1]; + int k36 = ItemDefinition.intsStack[iStackCounter]; + Class3_Sub28_Sub9.aCalendar3616.clear(); + Class3_Sub28_Sub9.aCalendar3616.set(Calendar.HOUR_OF_DAY, 12); + Class3_Sub28_Sub9.aCalendar3616.set(i73, l60, k36); + ItemDefinition.intsStack[iStackCounter++] = -11745 + (int) (Class3_Sub28_Sub9.aCalendar3616.getTime().getTime() / 0x5265c00L); + continue; + } + if (6303 == opcode) { + Class3_Sub28_Sub9.aCalendar3616.clear(); + Class3_Sub28_Sub9.aCalendar3616.setTime(new Date(TimeUtils.time())); + ItemDefinition.intsStack[iStackCounter++] = Class3_Sub28_Sub9.aCalendar3616.get(Calendar.YEAR); + continue; + } + if (opcode != 6304) + break; + boolean flag7 = true; + int l36 = ItemDefinition.intsStack[--iStackCounter]; + if (l36 >= 0) { + if (l36 >= 1582) { + if (l36 % 4 == 0) { + if (l36 % 100 != 0) + flag7 = true; + else if (0 != l36 % 400) + flag7 = false; + } else { + flag7 = false; + } + } else { + flag7 = l36 % 4 == 0; + } + } else { + flag7 = (1 + l36) % 4 == 0; + } + ItemDefinition.intsStack[iStackCounter++] = flag7 ? 1 : 0; + continue; + } + if (opcode >= 6500) { + if (opcode < 6600) { + if (opcode == 6500) { + if (Class143.gameStage != 10 || Class163_Sub1_Sub1.adminLoginStage != 0 || 0 != LoginHandler.loginStage || 0 != Unsorted.registryStage) + ItemDefinition.intsStack[iStackCounter++] = 1; + else + ItemDefinition.intsStack[iStackCounter++] = Class121.method1735() == -1 ? 0 : 1; + continue; + } + if (opcode == 6501) { + WorldListEntry worldEntry = PositionedGraphicObject.method1953(); + if (worldEntry == null) { + ItemDefinition.intsStack[iStackCounter++] = -1; + ItemDefinition.intsStack[iStackCounter++] = 0; + ItemDefinition.stringsStack[sStackCounter++] = TextCore.aString_2331; + ItemDefinition.intsStack[iStackCounter++] = 0; + ItemDefinition.stringsStack[sStackCounter++] = TextCore.aString_2331; + ItemDefinition.intsStack[iStackCounter++] = 0; + } else { + ItemDefinition.intsStack[iStackCounter++] = worldEntry.worldId; + ItemDefinition.intsStack[iStackCounter++] = worldEntry.settings; + ItemDefinition.stringsStack[sStackCounter++] = worldEntry.activity; + WorldListCountry class26 = worldEntry.method1078(60); + ItemDefinition.intsStack[iStackCounter++] = class26.flagId; + ItemDefinition.stringsStack[sStackCounter++] = class26.name; + ItemDefinition.intsStack[iStackCounter++] = worldEntry.anInt722; + } + continue; + } + if (opcode == 6502) { + WorldListEntry class44_sub1_1 = ItemDefinition.method1107(5422); + if (null == class44_sub1_1) { + ItemDefinition.intsStack[iStackCounter++] = -1; + ItemDefinition.intsStack[iStackCounter++] = 0; + ItemDefinition.stringsStack[sStackCounter++] = TextCore.aString_2331; + ItemDefinition.intsStack[iStackCounter++] = 0; + ItemDefinition.stringsStack[sStackCounter++] = TextCore.aString_2331; + ItemDefinition.intsStack[iStackCounter++] = 0; + } else { + ItemDefinition.intsStack[iStackCounter++] = class44_sub1_1.worldId; + ItemDefinition.intsStack[iStackCounter++] = class44_sub1_1.settings; + ItemDefinition.stringsStack[sStackCounter++] = class44_sub1_1.activity; + WorldListCountry class26_1 = class44_sub1_1.method1078(70); + ItemDefinition.intsStack[iStackCounter++] = class26_1.flagId; + ItemDefinition.stringsStack[sStackCounter++] = class26_1.name; + ItemDefinition.intsStack[iStackCounter++] = class44_sub1_1.anInt722; + } + continue; + } + if (opcode == 6503) { + int i37 = ItemDefinition.intsStack[--iStackCounter]; + if (Class143.gameStage != 10 || Class163_Sub1_Sub1.adminLoginStage != 0 || LoginHandler.loginStage != 0 || Unsorted.registryStage != 0) + ItemDefinition.intsStack[iStackCounter++] = 0; + else + ItemDefinition.intsStack[iStackCounter++] = WaterfallShader.method1627(i37, (byte) -7) ? 1 : 0; + continue; + } + if (opcode == 6504) { + Unsorted.anInt2148 = ItemDefinition.intsStack[--iStackCounter]; + Class119.method1730(Class38.gameSignlink); + continue; + } + if (6505 == opcode) { + ItemDefinition.intsStack[iStackCounter++] = Unsorted.anInt2148; + continue; + } + if (opcode == 6506) { + int j37 = ItemDefinition.intsStack[--iStackCounter]; + WorldListEntry class44_sub1_2 = Class3_Sub8.getWorld(120, j37); + if (class44_sub1_2 == null) { + ItemDefinition.intsStack[iStackCounter++] = -1; + ItemDefinition.stringsStack[sStackCounter++] = TextCore.aString_2331; + ItemDefinition.intsStack[iStackCounter++] = 0; + ItemDefinition.stringsStack[sStackCounter++] = TextCore.aString_2331; + ItemDefinition.intsStack[iStackCounter++] = 0; + } else { + ItemDefinition.intsStack[iStackCounter++] = class44_sub1_2.settings; + ItemDefinition.stringsStack[sStackCounter++] = class44_sub1_2.activity; + WorldListCountry class26_2 = class44_sub1_2.method1078(-87); + ItemDefinition.intsStack[iStackCounter++] = class26_2.flagId; + ItemDefinition.stringsStack[sStackCounter++] = class26_2.name; + ItemDefinition.intsStack[iStackCounter++] = class44_sub1_2.anInt722; + } + continue; + } + if (opcode != 6507) + break; + iStackCounter -= 4; + int j73 = ItemDefinition.intsStack[iStackCounter + 2]; + int k37 = ItemDefinition.intsStack[iStackCounter]; + boolean flag11 = ItemDefinition.intsStack[iStackCounter - -3] == 1; + boolean flag8 = ItemDefinition.intsStack[1 + iStackCounter] == 1; + Class134.method1808(j73, flag8, k37, flag11); + continue; + } + if (opcode >= 6700) + break; + if (6600 == opcode) { + AudioThread.aBoolean346 = ItemDefinition.intsStack[--iStackCounter] == 1; + Class119.method1730(Class38.gameSignlink); + continue; + } + if (opcode != 6601) + break; + ItemDefinition.intsStack[iStackCounter++] = AudioThread.aBoolean346 ? 1 : 0; + continue; + } + if (6405 == opcode) { + ItemDefinition.intsStack[iStackCounter++] = Unsorted.method1088(false) ? 1 : 0; + continue; + } + if (opcode != 6406) + break; + ItemDefinition.intsStack[iStackCounter++] = Class159.method2194() ? 1 : 0; + continue; + } + if (opcode == 6200) { + iStackCounter -= 2; + aShort1444 = (short) ItemDefinition.intsStack[iStackCounter]; + if (0 >= aShort1444) + aShort1444 = 256; + aShort3052 = (short) ItemDefinition.intsStack[1 + iStackCounter]; + if (aShort3052 <= 0) + aShort3052 = 205; + continue; + } + if (opcode == 6201) { + iStackCounter -= 2; + Unsorted.aShort46 = (short) ItemDefinition.intsStack[iStackCounter]; + if (Unsorted.aShort46 <= 0) + Unsorted.aShort46 = 256; + ObjectDefinition.aShort1535 = (short) ItemDefinition.intsStack[1 + iStackCounter]; + if (ObjectDefinition.aShort1535 <= 0) + ObjectDefinition.aShort1535 = 320; + continue; + } + if (opcode == 6202) { + iStackCounter -= 4; + aShort3241 = (short) ItemDefinition.intsStack[iStackCounter]; + if (aShort3241 <= 0) + aShort3241 = 1; + PacketParser.aShort83 = (short) ItemDefinition.intsStack[1 + iStackCounter]; + if (PacketParser.aShort83 > 0) { + if (aShort3241 > PacketParser.aShort83) + PacketParser.aShort83 = aShort3241; + } else { + PacketParser.aShort83 = 32767; + } + ItemDefinition.aShort505 = (short) ItemDefinition.intsStack[2 + iStackCounter]; + if (ItemDefinition.aShort505 <= 0) + ItemDefinition.aShort505 = 1; + TextureOperation18.aShort4038 = (short) ItemDefinition.intsStack[iStackCounter - -3]; + if (TextureOperation18.aShort4038 > 0) { + if (ItemDefinition.aShort505 > TextureOperation18.aShort4038) + TextureOperation18.aShort4038 = ItemDefinition.aShort505; + } else { + TextureOperation18.aShort4038 = 32767; + } + continue; + } + if (opcode == 6203) { + Class65.method1239(Unsorted.aClass11_2091.width, 81, 0, Unsorted.aClass11_2091.height, 0, false); + ItemDefinition.intsStack[iStackCounter++] = Class96.anInt1358; + ItemDefinition.intsStack[iStackCounter++] = Unsorted.anInt31; + continue; + } + if (6204 == opcode) { + ItemDefinition.intsStack[iStackCounter++] = Unsorted.aShort46; + ItemDefinition.intsStack[iStackCounter++] = ObjectDefinition.aShort1535; + continue; + } + if (opcode != 6205) + break; + ItemDefinition.intsStack[iStackCounter++] = aShort1444; + ItemDefinition.intsStack[iStackCounter++] = aShort3052; + continue; + } + if (opcode == 5600) { + sStackCounter -= 2; + RSString class94_27 = ItemDefinition.stringsStack[sStackCounter]; + RSString class94_56 = ItemDefinition.stringsStack[sStackCounter + 1]; + int k73 = ItemDefinition.intsStack[--iStackCounter]; + if (Class143.gameStage == 10 && Class163_Sub1_Sub1.adminLoginStage == 0 && LoginHandler.loginStage == 0 && Unsorted.registryStage == 0 && Class43.worldListStage == 0) + Class131.method1793(class94_27, class94_56, k73); + continue; + } + if (opcode == 5601) { + Class110.method1681(-1); + continue; + } + if (opcode == 5602) { + if (0 == LoginHandler.loginStage) + Client.messageToDisplay = -2; + continue; + } + if (opcode == 5603) { + iStackCounter -= 4; + if (Class143.gameStage == 10 && 0 == Class163_Sub1_Sub1.adminLoginStage && LoginHandler.loginStage == 0 && Unsorted.registryStage == 0 && Class43.worldListStage == 0) + sendRegistryRequest(ItemDefinition.intsStack[iStackCounter - -2], ItemDefinition.intsStack[iStackCounter + 3], ItemDefinition.intsStack[iStackCounter], ItemDefinition.intsStack[iStackCounter + 1]); + continue; + } + if (opcode == 5604) { + sStackCounter--; + if (Class143.gameStage == 10 && Class163_Sub1_Sub1.adminLoginStage == 0 && LoginHandler.loginStage == 0 && Unsorted.registryStage == 0 && Class43.worldListStage == 0) { + Class40.method1041(ItemDefinition.stringsStack[sStackCounter].toLong(), ItemDefinition.stringsStack[sStackCounter]); + continue; + } + } + if (opcode == 5605) { + iStackCounter -= 4; + sStackCounter -= 2; + if (Class143.gameStage == 10 && 0 == Class163_Sub1_Sub1.adminLoginStage && LoginHandler.loginStage == 0 && Unsorted.registryStage == 0 && Class43.worldListStage == 0) + InterfaceWidget.a(ItemDefinition.intsStack[iStackCounter], ItemDefinition.intsStack[iStackCounter - -3], ItemDefinition.intsStack[1 + iStackCounter], ItemDefinition.stringsStack[1 + sStackCounter], ItemDefinition.stringsStack[sStackCounter].toLong(), ItemDefinition.intsStack[2 + iStackCounter], ItemDefinition.stringsStack[sStackCounter]); + continue; + } + if (opcode == 5606) { + if (Unsorted.registryStage == 0) + Unsorted.anInt1711 = -2; + continue; + } + if (opcode == 5607) { + ItemDefinition.intsStack[iStackCounter++] = Client.messageToDisplay; + continue; + } + if (opcode == 5608) { + ItemDefinition.intsStack[iStackCounter++] = TextureOperation25.anInt3413; + continue; + } + if (5609 == opcode) { + ItemDefinition.intsStack[iStackCounter++] = Unsorted.anInt1711; + continue; + } + if (opcode == 5610) { + for (int l37 = 0; l37 < 5; l37++) + ItemDefinition.stringsStack[sStackCounter++] = TextureOperation29.aStringArray3391.length <= l37 ? TextCore.aString_2331 : TextureOperation29.aStringArray3391[l37].longToRSString(); + + TextureOperation29.aStringArray3391 = null; + continue; + } + if (opcode != 5611) + break; + ItemDefinition.intsStack[iStackCounter++] = Class3_Sub26.anInt2561; + continue; + } + if (4500 != opcode) + break; + iStackCounter -= 2; + int i38 = ItemDefinition.intsStack[iStackCounter]; + int i61 = ItemDefinition.intsStack[iStackCounter - -1]; + Class3_Sub28_Sub9 class3_sub28_sub9_1 = LinkedList.method1210(i61); + if (!class3_sub28_sub9_1.method585()) + ItemDefinition.intsStack[iStackCounter++] = StructDefinitionProvider.provide(i38).getInt(i61, class3_sub28_sub9_1.anInt3614); + else + ItemDefinition.stringsStack[sStackCounter++] = StructDefinitionProvider.provide(i38).getString(i61, class3_sub28_sub9_1.aString_3619); + continue; + } + if (opcode != 4400) + break; + iStackCounter -= 2; + int j61 = ItemDefinition.intsStack[iStackCounter - -1]; + int j38 = ItemDefinition.intsStack[iStackCounter]; + Class3_Sub28_Sub9 class3_sub28_sub9_2 = LinkedList.method1210(j61); + if (!class3_sub28_sub9_2.method585()) + ItemDefinition.intsStack[iStackCounter++] = ObjectDefinition.getObjectDefinition(j38).method1691(class3_sub28_sub9_2.anInt3614, j61, (byte) 105); + else + ItemDefinition.stringsStack[sStackCounter++] = ObjectDefinition.getObjectDefinition(j38).method1698(class3_sub28_sub9_2.aString_3619, j61); + continue; + } + if (opcode == 4200) { + int k38 = ItemDefinition.intsStack[--iStackCounter]; + ItemDefinition.stringsStack[sStackCounter++] = ItemDefinition.getItemDefinition(k38).name; + continue; + } + if (opcode == 4201) { + iStackCounter -= 2; + int l38 = ItemDefinition.intsStack[iStackCounter]; + int k61 = ItemDefinition.intsStack[iStackCounter - -1]; + ItemDefinition class48_2 = ItemDefinition.getItemDefinition(l38); + if (k61 < 1 || k61 > 5 || class48_2.groundOptions[-1 + k61] == null) + ItemDefinition.stringsStack[sStackCounter++] = TextCore.aString_2331; + else + ItemDefinition.stringsStack[sStackCounter++] = class48_2.groundOptions[k61 - 1]; + continue; + } + if (opcode == 4202) { + iStackCounter -= 2; + int i39 = ItemDefinition.intsStack[iStackCounter]; + int l61 = ItemDefinition.intsStack[iStackCounter + 1]; + ItemDefinition class48_3 = ItemDefinition.getItemDefinition(i39); + if (l61 >= 1 && l61 <= 5 && null != class48_3.inventoryOptions[l61 + -1]) { + ItemDefinition.stringsStack[sStackCounter++] = class48_3.inventoryOptions[-1 + l61]; + } else { + ItemDefinition.stringsStack[sStackCounter++] = TextCore.aString_2331; + } + continue; + } + if (opcode == 4203) { + int j39 = ItemDefinition.intsStack[--iStackCounter]; + ItemDefinition.intsStack[iStackCounter++] = ItemDefinition.getItemDefinition(j39).value; + continue; + } + if (opcode == 4204) { + int k39 = ItemDefinition.intsStack[--iStackCounter]; + ItemDefinition.intsStack[iStackCounter++] = ItemDefinition.getItemDefinition(k39).stackingType == 1 ? 1 : 0; + continue; + } + if (4205 == opcode) { + int l39 = ItemDefinition.intsStack[--iStackCounter]; + ItemDefinition class48 = ItemDefinition.getItemDefinition(l39); + if (-1 == class48.anInt791 && class48.noteID >= 0) + ItemDefinition.intsStack[iStackCounter++] = class48.noteID; + else + ItemDefinition.intsStack[iStackCounter++] = l39; + continue; + } + if (opcode == 4206) { + int i40 = ItemDefinition.intsStack[--iStackCounter]; + ItemDefinition class48_1 = ItemDefinition.getItemDefinition(i40); + if (0 <= class48_1.anInt791 && class48_1.noteID >= 0) + ItemDefinition.intsStack[iStackCounter++] = class48_1.noteID; + else + ItemDefinition.intsStack[iStackCounter++] = i40; + continue; + } + if (opcode == 4207) { + int j40 = ItemDefinition.intsStack[--iStackCounter]; + ItemDefinition.intsStack[iStackCounter++] = ItemDefinition.getItemDefinition(j40).membersItem ? 1 : 0; + continue; + } + if (opcode == 4208) { + iStackCounter -= 2; + int k40 = ItemDefinition.intsStack[iStackCounter]; + int i62 = ItemDefinition.intsStack[iStackCounter - -1]; + Class3_Sub28_Sub9 class3_sub28_sub9_3 = LinkedList.method1210(i62); + if (class3_sub28_sub9_3.method585()) + ItemDefinition.stringsStack[sStackCounter++] = ItemDefinition.getItemDefinition(k40).method1105(class3_sub28_sub9_3.aString_3619, i62); + else + ItemDefinition.intsStack[iStackCounter++] = ItemDefinition.getItemDefinition(k40).method1115(class3_sub28_sub9_3.anInt3614, -119, i62); + continue; + } + if (4210 == opcode) { + RSString class94_28 = ItemDefinition.stringsStack[--sStackCounter]; + int j62 = ItemDefinition.intsStack[--iStackCounter]; + NPCDefinition.method1480(j62 == 1, class94_28); + ItemDefinition.intsStack[iStackCounter++] = Unsorted.anInt952; + continue; + } + if (opcode == 4211) { + if (null == Class99.aShortArray1398 || Entity.anInt2756 >= Unsorted.anInt952) + ItemDefinition.intsStack[iStackCounter++] = -1; + else + ItemDefinition.intsStack[iStackCounter++] = Unsorted.bitwiseAnd(Class99.aShortArray1398[Entity.anInt2756++], 65535); + continue; + } + if (4212 != opcode) + break; + Entity.anInt2756 = 0; + continue; + } + if (4100 == opcode) { + RSString class94_29 = ItemDefinition.stringsStack[--sStackCounter]; + int k62 = ItemDefinition.intsStack[--iStackCounter]; + ItemDefinition.stringsStack[sStackCounter++] = RSString.stringCombiner(new RSString[]{ + class94_29, RSString.stringAnimator(k62) + }); + continue; + } + if (opcode == 4101) { + sStackCounter -= 2; + RSString class94_57 = ItemDefinition.stringsStack[sStackCounter + 1]; + RSString class94_30 = ItemDefinition.stringsStack[sStackCounter]; + ItemDefinition.stringsStack[sStackCounter++] = RSString.stringCombiner(new RSString[]{ + class94_30, class94_57 + }); + continue; + } + if (4102 == opcode) { + RSString class94_31 = ItemDefinition.stringsStack[--sStackCounter]; + int l62 = ItemDefinition.intsStack[--iStackCounter]; + ItemDefinition.stringsStack[sStackCounter++] = RSString.stringCombiner(new RSString[]{ + class94_31, LinkedList.method1218(l62) + }); + continue; + } + if (opcode == 4103) { + RSString class94_32 = ItemDefinition.stringsStack[--sStackCounter]; + ItemDefinition.stringsStack[sStackCounter++] = class94_32.toLowercase(); + continue; + } + if (4104 == opcode) { + int l40 = ItemDefinition.intsStack[--iStackCounter]; + long l63 = 0xec44e2dc00L + (long) l40 * 0x5265c00L; + Class3_Sub28_Sub9.aCalendar3616.setTime(new Date(l63)); + int k78 = Class3_Sub28_Sub9.aCalendar3616.get(Calendar.DATE); + int k80 = Class3_Sub28_Sub9.aCalendar3616.get(Calendar.MONTH); + int i82 = Class3_Sub28_Sub9.aCalendar3616.get(Calendar.YEAR); + ItemDefinition.stringsStack[sStackCounter++] = RSString.stringCombiner(new RSString[]{ + RSString.stringAnimator(k78), TextCore.aString_1326, TextCore.MonthsOfTheYear[k80], TextCore.aString_1326, RSString.stringAnimator(i82) + }); + continue; + } + if (4105 == opcode) { + sStackCounter -= 2; + RSString class94_58 = ItemDefinition.stringsStack[sStackCounter + 1]; + RSString class94_33 = ItemDefinition.stringsStack[sStackCounter]; + if (Class102.player.class52 == null || !Class102.player.class52.aBoolean864) + ItemDefinition.stringsStack[sStackCounter++] = class94_33; + else + ItemDefinition.stringsStack[sStackCounter++] = class94_58; + continue; + } + if (opcode == 4106) { + int i41 = ItemDefinition.intsStack[--iStackCounter]; + ItemDefinition.stringsStack[sStackCounter++] = RSString.stringAnimator(i41); + continue; + } + if (opcode == 4107) { + sStackCounter -= 2; + ItemDefinition.intsStack[iStackCounter++] = ItemDefinition.stringsStack[sStackCounter].method1546(ItemDefinition.stringsStack[sStackCounter - -1]); + continue; + } + if (4108 == opcode) { + RSString class94_34 = ItemDefinition.stringsStack[--sStackCounter]; + iStackCounter -= 2; + int l73 = ItemDefinition.intsStack[iStackCounter - -1]; + int i63 = ItemDefinition.intsStack[iStackCounter]; + ItemDefinition.intsStack[iStackCounter++] = AtmosphereParser.method1430(l73).method684(class94_34, i63); + continue; + } + if (opcode == 4109) { + iStackCounter -= 2; + RSString class94_35 = ItemDefinition.stringsStack[--sStackCounter]; + int i74 = ItemDefinition.intsStack[1 + iStackCounter]; + int j63 = ItemDefinition.intsStack[iStackCounter]; + ItemDefinition.intsStack[iStackCounter++] = AtmosphereParser.method1430(i74).method680(class94_35, j63); + continue; + } + if (opcode == 4110) { + sStackCounter -= 2; + RSString class94_36 = ItemDefinition.stringsStack[sStackCounter]; + RSString class94_59 = ItemDefinition.stringsStack[sStackCounter - -1]; + if (1 == ItemDefinition.intsStack[--iStackCounter]) + ItemDefinition.stringsStack[sStackCounter++] = class94_36; + else + ItemDefinition.stringsStack[sStackCounter++] = class94_59; + continue; + } + if (4111 == opcode) { + RSString class94_37 = ItemDefinition.stringsStack[--sStackCounter]; + ItemDefinition.stringsStack[sStackCounter++] = Font.method686(class94_37); + continue; + } + if (4112 == opcode) { + RSString class94_38 = ItemDefinition.stringsStack[--sStackCounter]; + int k63 = ItemDefinition.intsStack[--iStackCounter]; + if (k63 == -1) + throw new RuntimeException("null char"); + ItemDefinition.stringsStack[sStackCounter++] = class94_38.method1548(k63); + continue; + } + if (opcode == 4113) { + int j41 = ItemDefinition.intsStack[--iStackCounter]; + ItemDefinition.intsStack[iStackCounter++] = Class164_Sub2.method2248(j41) ? 1 : 0; + continue; + } + if (opcode == 4114) { + int k41 = ItemDefinition.intsStack[--iStackCounter]; + ItemDefinition.intsStack[iStackCounter++] = Class44.method1066(k41) ? 1 : 0; + continue; + } + if (opcode == 4115) { + int l41 = ItemDefinition.intsStack[--iStackCounter]; + ItemDefinition.intsStack[iStackCounter++] = Class3_Sub24_Sub4.method487(l41, (byte) -85) ? 1 : 0; + continue; + } + if (4116 == opcode) { + int i42 = ItemDefinition.intsStack[--iStackCounter]; + ItemDefinition.intsStack[iStackCounter++] = Class3_Sub28_Sub3.method544(i42) ? 1 : 0; + continue; + } + if (opcode == 4117) { + RSString class94_39 = ItemDefinition.stringsStack[--sStackCounter]; + if (class94_39 != null) + ItemDefinition.intsStack[iStackCounter++] = class94_39.length(); + else + ItemDefinition.intsStack[iStackCounter++] = 0; + continue; + } + if (opcode == 4118) { + iStackCounter -= 2; + RSString class94_40 = ItemDefinition.stringsStack[--sStackCounter]; + int i64 = ItemDefinition.intsStack[iStackCounter]; + int j74 = ItemDefinition.intsStack[1 + iStackCounter]; + ItemDefinition.stringsStack[sStackCounter++] = class94_40.substring(i64, j74, 0); + continue; + } + if (opcode == 4119) { + RSString class94_41 = ItemDefinition.stringsStack[--sStackCounter]; + RSString class94_60 = Unsorted.emptyString(class94_41.length()); + boolean flag9 = false; + for (int l78 = 0; class94_41.length() > l78; l78++) { + int l80 = class94_41.charAt(l78, (byte) -40); + if (l80 == 60) { + flag9 = true; + continue; + } + if (l80 == 62) { + flag9 = false; + } else if (!flag9) + class94_60.appendCharacter(l80); + } + + class94_60.method1576(); + ItemDefinition.stringsStack[sStackCounter++] = class94_60; + continue; + } + if (opcode == 4120) { + iStackCounter -= 2; + RSString class94_42 = ItemDefinition.stringsStack[--sStackCounter]; + int j64 = ItemDefinition.intsStack[iStackCounter]; + int k74 = ItemDefinition.intsStack[1 + iStackCounter]; + ItemDefinition.intsStack[iStackCounter++] = class94_42.method1555(j64, k74); + continue; + } + if (opcode == 4121) { + sStackCounter -= 2; + RSString class94_43 = ItemDefinition.stringsStack[sStackCounter]; + RSString class94_61 = ItemDefinition.stringsStack[1 + sStackCounter]; + int l74 = ItemDefinition.intsStack[--iStackCounter]; + ItemDefinition.intsStack[iStackCounter++] = class94_43.method1566(class94_61, l74); + continue; + } + if (opcode == 4122) { + int j42 = ItemDefinition.intsStack[--iStackCounter]; + ItemDefinition.intsStack[iStackCounter++] = TextureOperation25.method332(2, j42); + continue; + } + if (opcode == 4123) { + int k42 = ItemDefinition.intsStack[--iStackCounter]; + ItemDefinition.intsStack[iStackCounter++] = ClientErrorException.method2287(k42, (byte) 59); + continue; + } + if (opcode != 4124) + break; + boolean flag1 = ItemDefinition.intsStack[--iStackCounter] != 0; + int k64 = ItemDefinition.intsStack[--iStackCounter]; + ItemDefinition.stringsStack[sStackCounter++] = Class3_Sub23.method407(Class3_Sub20.paramLanguage, flag1, 0, k64); + continue; + } + RSInterface class11_8 = Unsorted.getRSInterface(ItemDefinition.intsStack[--iStackCounter]); + if (opcode == 2800) { + ItemDefinition.intsStack[iStackCounter++] = Client.method44(class11_8).method101(); + continue; + } + if (opcode == 2801) { + int l64 = ItemDefinition.intsStack[--iStackCounter]; + l64--; + if (class11_8.aStringArray171 != null && class11_8.aStringArray171.length > l64 && null != class11_8.aStringArray171[l64]) + ItemDefinition.stringsStack[sStackCounter++] = class11_8.aStringArray171[l64]; + else + ItemDefinition.stringsStack[sStackCounter++] = TextCore.aString_2331; + continue; + } + if (opcode != 2802) + break; + if (class11_8.aString_277 != null) + ItemDefinition.stringsStack[sStackCounter++] = class11_8.aString_277; + else + ItemDefinition.stringsStack[sStackCounter++] = TextCore.aString_2331; + continue; + } + if (opcode == 2700) { + RSInterface class11_9 = Unsorted.getRSInterface(ItemDefinition.intsStack[--iStackCounter]); + ItemDefinition.intsStack[iStackCounter++] = class11_9.anInt192; + continue; + } + if (opcode == 2701) { + RSInterface class11_10 = Unsorted.getRSInterface(ItemDefinition.intsStack[--iStackCounter]); + if (-1 != class11_10.anInt192) + ItemDefinition.intsStack[iStackCounter++] = class11_10.anInt271; + else + ItemDefinition.intsStack[iStackCounter++] = 0; + continue; + } + if (opcode == 2702) { + int l42 = ItemDefinition.intsStack[--iStackCounter]; + Class3_Sub31 class3_sub31 = TextureOperation23.aHashTable_3208.get(l42); + if (class3_sub31 == null) + ItemDefinition.intsStack[iStackCounter++] = 0; + else + ItemDefinition.intsStack[iStackCounter++] = 1; + continue; + } + if (opcode == 2703) { + RSInterface class11_11 = Unsorted.getRSInterface(ItemDefinition.intsStack[--iStackCounter]); + if (null == class11_11.aClass11Array262) { + ItemDefinition.intsStack[iStackCounter++] = 0; + } else { + int i65 = class11_11.aClass11Array262.length; + int i75 = 0; + do { + if (class11_11.aClass11Array262.length <= i75) + break; + if (null == class11_11.aClass11Array262[i75]) { + i65 = i75; + break; + } + i75++; + } while (true); + ItemDefinition.intsStack[iStackCounter++] = i65; + } + continue; + } + if (opcode != 2704 && 2705 != opcode) + break; + iStackCounter -= 2; + int i43 = ItemDefinition.intsStack[iStackCounter]; + int j65 = ItemDefinition.intsStack[iStackCounter + 1]; + Class3_Sub31 class3_sub31_1 = TextureOperation23.aHashTable_3208.get(i43); + if (class3_sub31_1 == null || class3_sub31_1.anInt2602 != j65) + ItemDefinition.intsStack[iStackCounter++] = 0; + else + ItemDefinition.intsStack[iStackCounter++] = 1; + continue; + } + RSInterface class11_12 = Unsorted.getRSInterface(ItemDefinition.intsStack[--iStackCounter]); + if (2600 == opcode) { + ItemDefinition.intsStack[iStackCounter++] = class11_12.anInt247; + continue; + } + if (opcode == 2601) { + ItemDefinition.intsStack[iStackCounter++] = class11_12.anInt208; + continue; + } + if (opcode == 2602) { + ItemDefinition.stringsStack[sStackCounter++] = class11_12.text; + continue; + } + if (opcode == 2603) { + ItemDefinition.intsStack[iStackCounter++] = class11_12.anInt240; + continue; + } + if (opcode == 2604) { + ItemDefinition.intsStack[iStackCounter++] = class11_12.anInt252; + continue; + } + if (opcode == 2605) { + ItemDefinition.intsStack[iStackCounter++] = class11_12.anInt164; + continue; + } + if (opcode == 2606) { + ItemDefinition.intsStack[iStackCounter++] = class11_12.anInt182; + continue; + } + if (opcode == 2607) { + ItemDefinition.intsStack[iStackCounter++] = class11_12.anInt280; + continue; + } + if (2608 == opcode) { + ItemDefinition.intsStack[iStackCounter++] = class11_12.anInt308; + continue; + } + if (opcode == 2609) { + ItemDefinition.intsStack[iStackCounter++] = class11_12.anInt223; + continue; + } + if (opcode == 2610) { + ItemDefinition.intsStack[iStackCounter++] = class11_12.anInt258; + continue; + } + if (opcode == 2611) { + ItemDefinition.intsStack[iStackCounter++] = class11_12.anInt264; + continue; + } + if (2612 != opcode) + break; + ItemDefinition.intsStack[iStackCounter++] = class11_12.spriteArchiveId; + continue; + } + RSInterface class11_13 = flag ? Class164.aClass11_2055 : aClass11_1749; + if (opcode == 1700) { + ItemDefinition.intsStack[iStackCounter++] = class11_13.anInt192; + continue; + } + if (1701 == opcode) { + if (class11_13.anInt192 == -1) + ItemDefinition.intsStack[iStackCounter++] = 0; + else + ItemDefinition.intsStack[iStackCounter++] = class11_13.anInt271; + continue; + } + if (opcode != 1702) + break; + ItemDefinition.intsStack[iStackCounter++] = class11_13.anInt191; + } else { + RSInterface class11_14; + if (opcode < 2000) { + class11_14 = flag ? Class164.aClass11_2055 : aClass11_1749; + } else { + opcode -= 1000; + class11_14 = Unsorted.getRSInterface(ItemDefinition.intsStack[--iStackCounter]); + } + int[] ai3 = null; + RSString class94_62 = ItemDefinition.stringsStack[--sStackCounter]; + if (class94_62.length() > 0 && class94_62.charAt(class94_62.length() + -1, (byte) -96) == 89) { + int i79 = ItemDefinition.intsStack[--iStackCounter]; + if (i79 > 0) { + ai3 = new int[i79]; + while (i79-- > 0) + ai3[i79] = ItemDefinition.intsStack[--iStackCounter]; + } + class94_62 = class94_62.substring(0, class94_62.length() - 1, 0); + } + Object[] aobj1 = new Object[class94_62.length() - -1]; + for (int i81 = -1 + aobj1.length; 1 <= i81; i81--) + if (115 != class94_62.charAt(i81 + -1, (byte) -43)) + aobj1[i81] = new Integer(ItemDefinition.intsStack[--iStackCounter]); + else + aobj1[i81] = ItemDefinition.stringsStack[--sStackCounter]; + + int j81 = ItemDefinition.intsStack[--iStackCounter]; + if (j81 == -1) + aobj1 = null; + else + aobj1[0] = new Integer(j81); + class11_14.aBoolean195 = true; + if (1400 == opcode) + class11_14.anObjectArray165 = aobj1; + else if (opcode == 1401) + class11_14.anObjectArray180 = aobj1; + else if (opcode == 1402) { + class11_14.anObjectArray239 = aobj1; + } else if (opcode == 1403) { + class11_14.anObjectArray248 = aobj1; + } else if (opcode == 1404) { + class11_14.anObjectArray281 = aobj1; + } else if (1405 == opcode) + class11_14.anObjectArray295 = aobj1; + else if (1406 == opcode) + class11_14.anObjectArray303 = aobj1; + else if (1407 == opcode) { + class11_14.anIntArray286 = ai3; + class11_14.anObjectArray282 = aobj1; + } else if (opcode == 1408) + class11_14.anObjectArray269 = aobj1; + else if (opcode == 1409) { + class11_14.anObjectArray314 = aobj1; + } else if (1410 == opcode) { + class11_14.anObjectArray229 = aobj1; + } else if (opcode == 1411) { + class11_14.anObjectArray170 = aobj1; + } else if (opcode == 1412) + class11_14.anObjectArray276 = aobj1; + else if (opcode == 1414) { + class11_14.anIntArray175 = ai3; + class11_14.anObjectArray174 = aobj1; + } else if (1415 == opcode) { + class11_14.anIntArray274 = ai3; + class11_14.anObjectArray158 = aobj1; + } else if (1416 == opcode) + class11_14.anObjectArray203 = aobj1; + else if (1417 == opcode) { + class11_14.anObjectArray183 = aobj1; + } else if (opcode == 1418) + class11_14.anObjectArray256 = aobj1; + else if (opcode == 1419) + class11_14.anObjectArray220 = aobj1; + else if (opcode == 1420) + class11_14.anObjectArray156 = aobj1; + else if (opcode == 1421) { + class11_14.anObjectArray313 = aobj1; + } else if (1422 == opcode) + class11_14.anObjectArray315 = aobj1; + else if (1423 == opcode) { + class11_14.anObjectArray206 = aobj1; + } else if (opcode == 1424) + class11_14.anObjectArray176 = aobj1; + else if (opcode == 1425) + class11_14.anObjectArray268 = aobj1; + else if (opcode == 1426) { + class11_14.anObjectArray217 = aobj1; + } else if (1427 == opcode) { + class11_14.anObjectArray235 = aobj1; + } else if (opcode == 1428) { + class11_14.anObjectArray161 = aobj1; + class11_14.anIntArray211 = ai3; + } else if (opcode == 1429) { + class11_14.anIntArray185 = ai3; + class11_14.anObjectArray221 = aobj1; + } + } + continue; + } + RSInterface class11_15; + if (opcode < 2000) { + class11_15 = flag ? Class164.aClass11_2055 : aClass11_1749; + } else { + class11_15 = Unsorted.getRSInterface(ItemDefinition.intsStack[--iStackCounter]); + opcode -= 1000; + } + Class20.method909(class11_15); + if (opcode == 1200 || 1205 == opcode) { + iStackCounter -= 2; + int j75 = ItemDefinition.intsStack[1 + iStackCounter]; + int k65 = ItemDefinition.intsStack[iStackCounter]; + if (-1 == class11_15.anInt191) { + MouseListeningClass.method2092(class11_15.componentHash); + TextureOperation4.method265(class11_15.componentHash); + Class107.method1649(class11_15.componentHash, -101); + } + if (-1 == k65) { + class11_15.itemId = -1; + class11_15.modelType = 1; + class11_15.anInt192 = -1; + } else { + class11_15.anInt192 = k65; + class11_15.anInt271 = j75; + ItemDefinition class48_4 = ItemDefinition.getItemDefinition(k65); + class11_15.anInt280 = class48_4.anInt768; + class11_15.anInt258 = class48_4.anInt792; + class11_15.anInt182 = class48_4.modelRotation1; + class11_15.anInt264 = class48_4.anInt754; + class11_15.anInt308 = class48_4.modelRotation2; + class11_15.anInt164 = class48_4.modelZoom; + if (class11_15.anInt184 > 0) + class11_15.anInt164 = (class11_15.anInt164 * 32) / class11_15.anInt184; + else if (class11_15.defWidth > 0) + class11_15.anInt164 = (class11_15.anInt164 * 32) / class11_15.defWidth; + class11_15.aBoolean227 = 1205 != opcode; + } + continue; + } + if (opcode == 1201) { + class11_15.modelType = 2; + class11_15.itemId = ItemDefinition.intsStack[--iStackCounter]; + if (class11_15.anInt191 == -1) + Class162.method2206(class11_15.componentHash); + continue; + } + if (opcode == 1202) { + class11_15.modelType = 3; + class11_15.itemId = Class102.player.class52.method1163(); + if (class11_15.anInt191 == -1) + Class162.method2206(class11_15.componentHash); + continue; + } + if (1203 == opcode) { + class11_15.modelType = 6; + class11_15.itemId = ItemDefinition.intsStack[--iStackCounter]; + if (class11_15.anInt191 == -1) + Class162.method2206(class11_15.componentHash); + continue; + } + if (opcode != 1204) + break; + class11_15.modelType = 5; + class11_15.itemId = ItemDefinition.intsStack[--iStackCounter]; + if (class11_15.anInt191 == -1) + Class162.method2206(class11_15.componentHash); + continue; + } + RSInterface class11_16; + if (opcode < 2000) { + class11_16 = flag ? Class164.aClass11_2055 : aClass11_1749; + } else { + opcode -= 1000; + class11_16 = Unsorted.getRSInterface(ItemDefinition.intsStack[--iStackCounter]); + } + if (opcode == 1100) { + iStackCounter -= 2; + class11_16.anInt247 = ItemDefinition.intsStack[iStackCounter]; + if (class11_16.anInt240 + -class11_16.width < class11_16.anInt247) + class11_16.anInt247 = class11_16.anInt240 + -class11_16.width; + if (class11_16.anInt247 < 0) + class11_16.anInt247 = 0; + class11_16.anInt208 = ItemDefinition.intsStack[iStackCounter + 1]; + if (class11_16.anInt208 > class11_16.anInt252 + -class11_16.height) + class11_16.anInt208 = class11_16.anInt252 + -class11_16.height; + if (class11_16.anInt208 < 0) + class11_16.anInt208 = 0; + Class20.method909(class11_16); + if (-1 == class11_16.anInt191) + Class67.method1259(class11_16.componentHash); + continue; + } + if (1101 == opcode) { + class11_16.anInt218 = ItemDefinition.intsStack[--iStackCounter]; + Class20.method909(class11_16); + if (class11_16.anInt191 == -1) + Unsorted.method56(class11_16.componentHash); + continue; + } + if (opcode == 1102) { + class11_16.aBoolean226 = ItemDefinition.intsStack[--iStackCounter] == 1; + Class20.method909(class11_16); + continue; + } + if (1103 == opcode) { + class11_16.anInt223 = ItemDefinition.intsStack[--iStackCounter]; + Class20.method909(class11_16); + continue; + } + if (opcode == 1104) { + class11_16.anInt250 = ItemDefinition.intsStack[--iStackCounter]; + Class20.method909(class11_16); + continue; + } + if (opcode == 1105) { + class11_16.spriteArchiveId = ItemDefinition.intsStack[--iStackCounter]; + Class20.method909(class11_16); + continue; + } + if (1106 == opcode) { + class11_16.anInt301 = ItemDefinition.intsStack[--iStackCounter]; + Class20.method909(class11_16); + continue; + } + if (1107 == opcode) { + class11_16.aBoolean186 = ItemDefinition.intsStack[--iStackCounter] == 1; + Class20.method909(class11_16); + continue; + } + if (opcode == 1108) { + class11_16.modelType = 1; + class11_16.itemId = ItemDefinition.intsStack[--iStackCounter]; + Class20.method909(class11_16); + if (class11_16.anInt191 == -1) + Class162.method2206(class11_16.componentHash); + continue; + } + if (opcode == 1109) { + iStackCounter -= 6; + class11_16.anInt258 = ItemDefinition.intsStack[iStackCounter]; + class11_16.anInt264 = ItemDefinition.intsStack[iStackCounter + 1]; + class11_16.anInt182 = ItemDefinition.intsStack[2 + iStackCounter]; + class11_16.anInt308 = ItemDefinition.intsStack[iStackCounter - -3]; + class11_16.anInt280 = ItemDefinition.intsStack[iStackCounter - -4]; + class11_16.anInt164 = ItemDefinition.intsStack[5 + iStackCounter]; + Class20.method909(class11_16); + if (class11_16.anInt191 == -1) { + TextureOperation4.method265(class11_16.componentHash); + Class107.method1649(class11_16.componentHash, -106); + } + continue; + } + if (opcode == 1110) { + int l65 = ItemDefinition.intsStack[--iStackCounter]; + if (class11_16.animationId != l65) { + class11_16.animationId = l65; + class11_16.anInt283 = 0; + class11_16.anInt267 = 0; + class11_16.anInt260 = 1; + Class20.method909(class11_16); + } + if (class11_16.anInt191 == -1) + Class108.method1657(class11_16.componentHash); + continue; + } + if (opcode == 1111) { + class11_16.aBoolean181 = 1 == ItemDefinition.intsStack[--iStackCounter]; + Class20.method909(class11_16); + continue; + } + if (1112 == opcode) { + RSString newText = ItemDefinition.stringsStack[--sStackCounter]; + if (!newText.equalsString(class11_16.text)) { + class11_16.text = newText; + Class20.method909(class11_16); + } + if (class11_16.anInt191 == -1) + Unsorted.method1516(class11_16.componentHash, 91); + continue; + } + if (opcode == 1113) { + class11_16.anInt270 = ItemDefinition.intsStack[--iStackCounter]; + Class20.method909(class11_16); + continue; + } + if (opcode == 1114) { + iStackCounter -= 3; + class11_16.anInt194 = ItemDefinition.intsStack[iStackCounter]; + class11_16.anInt225 = ItemDefinition.intsStack[1 + iStackCounter]; + class11_16.anInt205 = ItemDefinition.intsStack[2 + iStackCounter]; + Class20.method909(class11_16); + continue; + } + if (1115 == opcode) { + class11_16.aBoolean215 = 1 == ItemDefinition.intsStack[--iStackCounter]; + Class20.method909(class11_16); + continue; + } + if (opcode == 1116) { + class11_16.anInt288 = ItemDefinition.intsStack[--iStackCounter]; + Class20.method909(class11_16); + continue; + } + if (opcode == 1117) { + class11_16.anInt287 = ItemDefinition.intsStack[--iStackCounter]; + Class20.method909(class11_16); + continue; + } + if (opcode == 1118) { + class11_16.aBoolean178 = ItemDefinition.intsStack[--iStackCounter] == 1; + Class20.method909(class11_16); + continue; + } + if (opcode == 1119) { + class11_16.aBoolean199 = ItemDefinition.intsStack[--iStackCounter] == 1; + Class20.method909(class11_16); + continue; + } + if (opcode == 1120) { + iStackCounter -= 2; + class11_16.anInt240 = ItemDefinition.intsStack[iStackCounter]; + class11_16.anInt252 = ItemDefinition.intsStack[1 + iStackCounter]; + Class20.method909(class11_16); + if (class11_16.type == 0) + Unsorted.method2104(class11_16, false, -116); + continue; + } + if (opcode == 1121) { + iStackCounter -= 2; + class11_16.aShort293 = (short) ItemDefinition.intsStack[iStackCounter]; + class11_16.aShort169 = (short) ItemDefinition.intsStack[iStackCounter + 1]; + Class20.method909(class11_16); + continue; + } + if (1122 == opcode) { + class11_16.aBoolean157 = ItemDefinition.intsStack[--iStackCounter] == 1; + Class20.method909(class11_16); + continue; + } + if (opcode != 1123) + break; + class11_16.anInt164 = ItemDefinition.intsStack[--iStackCounter]; + Class20.method909(class11_16); + if (class11_16.anInt191 == -1) + TextureOperation4.method265(class11_16.componentHash); + continue; + } + if (opcode == 403) { + iStackCounter -= 2; + int i66 = ItemDefinition.intsStack[iStackCounter + 1]; + int j43 = ItemDefinition.intsStack[iStackCounter]; + int k75 = 0; + while (Class3_Sub26.anIntArray2559.length > k75) { + if (j43 == Class3_Sub26.anIntArray2559[k75]) { + Class102.player.class52.method1164(k75, i66); + continue label0; + } + k75++; + } + k75 = 0; + do { + if (anIntArray3228.length <= k75) + continue label0; + if (anIntArray3228[k75] == j43) { + Class102.player.class52.method1164(k75, i66); + continue label0; + } + k75++; + } while (true); + } + if (404 == opcode) { + iStackCounter -= 2; + int k43 = ItemDefinition.intsStack[iStackCounter]; + int j66 = ItemDefinition.intsStack[1 + iStackCounter]; + Class102.player.class52.method1162(k43, j66); + continue; + } + if (opcode != 410) + break; + try { + boolean flag2 = 0 != ItemDefinition.intsStack[--iStackCounter]; + Class102.player.class52.method1159(flag2); + } catch (Exception e) { + e.printStackTrace(); + } + } while (true); + throw new IllegalStateException(); + } catch (Exception e) { + System.out.println("Exception in item defs " + e); + } + } + + + static Queue method1664(int var0, int var1) { + try { + Queue var3 = new Queue(); + + for (Class3_Sub28_Sub3 var4 = (Class3_Sub28_Sub3) Class134.aLinkedList_1758.startIteration(); var4 != null; var4 = (Class3_Sub28_Sub3) Class134.aLinkedList_1758.nextIteration()) { + if (var4.aBoolean3553 && var4.method537(var1, var0)) { + var3.offer(var4); + } + } + + return var3; + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "ok.B(" + var0 + ',' + var1 + ',' + (byte) -118 + ')'); + } + } + + static int method1643(boolean var1, int var2, int var3) { + try { + + Class3_Sub25 var4 = (Class3_Sub25) TileData.aHashTable_2220.get(var2); + if (null == var4) { + return 0; + } else { + int var5 = 0; + + for (int var6 = 0; var6 < var4.anIntArray2547.length; ++var6) { + if (var4.anIntArray2547[var6] >= 0 && TextureOperation39.itemDefinitionSize > var4.anIntArray2547[var6]) { + ItemDefinition var7 = ItemDefinition.getItemDefinition(var4.anIntArray2547[var6]); + if (null != var7.aHashTable_798) { + LinkableInt var8 = (LinkableInt) var7.aHashTable_798.get(var3); + if (null != var8) { + if (var1) { + var5 += var4.anIntArray2551[var6] * var8.value; + } else { + var5 += var8.value; + } + } + } + } + } + + return var5; + } + } catch (RuntimeException var9) { + throw ClientErrorException.clientError(var9, "od.B(" + 10131 + ',' + var1 + ',' + var2 + ',' + var3 + ')'); + } + } +} diff --git a/Client/src/main/java/org/runite/client/CSConfigCachefile.java b/Client/src/main/java/org/runite/client/CSConfigCachefile.java new file mode 100644 index 000000000..b07173151 --- /dev/null +++ b/Client/src/main/java/org/runite/client/CSConfigCachefile.java @@ -0,0 +1,228 @@ +package org.runite.client; + +import org.rs09.SystemLogger; + +import java.awt.event.KeyEvent; + +final class CSConfigCachefile { + + static int anInt1124 = -1; + static int anInt1127 = 0; + int lowerBound; + int upperBound; + int parentVarpIndex; + + + static void method1385(int var0, int var1) { + try { + InterfaceWidget var3 = InterfaceWidget.getWidget(6, var1); + var3.flagUpdate(); + var3.anInt3598 = var0; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "kk.E(" + var0 + ',' + var1 + ',' + (byte) -127 + ')'); + } + } + + static int method1386(KeyEvent var1) { + try { + int var2 = var1.getKeyChar(); + if (8364 == var2) { + return 128; + } else { + if (var2 <= 0 || 256 <= var2) { + var2 = -1; + } + + return var2; + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "kk.C(" + true + ',' + (var1 != null ? "{...}" : "null") + ')'); + } + } + + static void method1390(DataBuffer var0) { + try { + if (-var0.index + var0.buffer.length >= 1) { + int var2 = var0.readUnsignedByte(); + if (var2 >= 0 && var2 <= 11) { + byte var3; + if (var2 == 11) { + var3 = 33; + } else if (var2 == 10) { + var3 = 32; + } else if (var2 == 9) { + var3 = 31; + } else if (var2 == 8) { + var3 = 30; + } else if (var2 == 7) { + var3 = 29; + } else if (var2 == 6) { + var3 = 28; + } else if (var2 == 5) { + var3 = 28; + } else if (var2 == 4) { + var3 = 24; + } else if (var2 == 3) { + var3 = 23; + } else if (var2 == 2) { + var3 = 22; + } else if (1 == var2) { + var3 = 23; + } else { + var3 = 19; + } + + if (var3 <= var0.buffer.length - var0.index) { + Unsorted.anInt3625 = var0.readUnsignedByte(); + if (Unsorted.anInt3625 >= 1) { + if (Unsorted.anInt3625 > 4) { + Unsorted.anInt3625 = 4; + } + } else { + Unsorted.anInt3625 = 1; + } + + Class25.method957(1 == var0.readUnsignedByte()); + Unsorted.aBoolean3604 = var0.readUnsignedByte() == 1; + KeyboardListener.aBoolean1905 = 1 == var0.readUnsignedByte(); + Class25.aBoolean488 = 1 == var0.readUnsignedByte(); + RSInterface.aBoolean236 = var0.readUnsignedByte() == 1; + WorldListEntry.aBoolean2623 = var0.readUnsignedByte() == 1; + Unsorted.aBoolean3275 = var0.readUnsignedByte() == 1; + Class140_Sub6.aBoolean2910 = 1 == var0.readUnsignedByte(); + Unsorted.anInt1137 = var0.readUnsignedByte(); + if (2 < Unsorted.anInt1137) { + Unsorted.anInt1137 = 2; + } + + if (var2 < 2) { + Class106.aBoolean1441 = var0.readUnsignedByte() == 1; + var0.readUnsignedByte(); + } else { + Class106.aBoolean1441 = var0.readUnsignedByte() == 1; + } + + Class128.aBoolean1685 = 1 == var0.readUnsignedByte(); + Class38.aBoolean661 = var0.readUnsignedByte() == 1; + Class3_Sub28_Sub9.anInt3622 = var0.readUnsignedByte(); + if (Class3_Sub28_Sub9.anInt3622 > 2) { + Class3_Sub28_Sub9.anInt3622 = 2; + } + + Unsorted.anInt3671 = Class3_Sub28_Sub9.anInt3622; + TextureOperation17.stereoSound = var0.readUnsignedByte() == 1; + AudioHandler.soundEffectVolume = var0.readUnsignedByte(); + if (AudioHandler.soundEffectVolume > 127) { + AudioHandler.soundEffectVolume = 127; + } + + AudioHandler.musicVolume = var0.readUnsignedByte(); + Sprites.ambientVolume = var0.readUnsignedByte(); + if (Sprites.ambientVolume > 127) { + Sprites.ambientVolume = 127; + } + + if (var2 >= 1) { + TextureOperation.anInt2378 = var0.readUnsignedShort(); + Unsorted.anInt3071 = var0.readUnsignedShort(); + } + + if (var2 >= 3 && var2 < 6) { + var0.readUnsignedByte(); + } + + if (var2 >= 4) { + int var4 = var0.readUnsignedByte(); + if (Class3_Sub24_Sub3.maxClientMemory < 96) { + var4 = 0; + } + + Class127_Sub1.method1758(var4); + } + + if (var2 >= 5) { + Unsorted.anInt2148 = var0.readInt(); + } + + if (6 <= var2) { + Unsorted.anInt2577 = var0.readUnsignedByte(); + } + + if (var2 >= 7) { + Unsorted.aBoolean2146 = 1 == var0.readUnsignedByte(); + } + + if (8 <= var2) { + AudioThread.aBoolean346 = var0.readUnsignedByte() == 1; + } + + if (9 <= var2) { + Class3_Sub20.anInt2488 = var0.readUnsignedByte(); + } + + if (10 <= var2) { + Unsorted.aBoolean1080 = 0 != var0.readUnsignedByte(); + } + + if (var2 >= 11) { + Class163_Sub3.aBoolean3004 = var0.readUnsignedByte() != 0; + } + + } + } + } + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "kk.F(" + (var0 != null ? "{...}" : "null") + ',' + -1 + ')'); + } + } + + static boolean method1391(int var0) { + try { + return var0 == ~Unsorted.anInt154 && !Class101.aClass3_Sub24_Sub4_1421.method473(-128); + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "kk.A(" + var0 + ')'); + } + } + + static CSConfigCachefile getCSConfigFileFromVarbitID(int varbitID) { + try { + CSConfigCachefile cacheFile = (CSConfigCachefile) VarpHelpers.varbitLookup.get(varbitID); + if (cacheFile == null) { + byte[] fileData = Class101.csConfigFileRAM.getFile(varbitID >>> 10, varbitID & 1023); + cacheFile = new CSConfigCachefile(); + if (fileData != null) { + cacheFile.tryParseConfigFile(new DataBuffer(fileData)); + } + + VarpHelpers.varbitLookup.put(cacheFile, varbitID); + } + return cacheFile; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "jl.A(" + varbitID + ',' + (byte) 127 + ')'); + } + } + + final void tryParseConfigFile(DataBuffer fileData) { + try { + boolean end = fileData.readUnsignedByte() == 0; + while (!end) { + this.parseConfigFile(fileData); + end = fileData.readUnsignedByte() == 0; + } + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "kk.G(" + (fileData != null ? "{...}" : "null") + ',' + -111 + ')'); + } + } + + private void parseConfigFile(DataBuffer fileData) { + try { + this.parentVarpIndex = fileData.readUnsignedShort(); + this.lowerBound = fileData.readUnsignedByte(); + this.upperBound = fileData.readUnsignedByte(); + + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "kk.B(" + (fileData != null ? "{...}" : "null") + ',' + 1 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/CacheIndex.java b/Client/src/main/java/org/runite/client/CacheIndex.java new file mode 100644 index 000000000..973166518 --- /dev/null +++ b/Client/src/main/java/org/runite/client/CacheIndex.java @@ -0,0 +1,653 @@ +package org.runite.client; + +import org.rs09.client.config.GameConfig; +import org.rs09.client.filestore.ReferenceTable; +import org.rs09.client.filestore.ResourceProvider; +import org.rs09.client.filestore.compression.Container; +import org.rs09.client.util.ArrayUtils; +import org.rs09.client.util.CRC; + +import java.util.Objects; + +public final class CacheIndex { + + /** + * These Indexes listed below are mostly used for CRC checks + */ + public static CacheIndex fontsIndex; + public static CacheIndex musicIndex; + public static CacheIndex spritesIndex; + static CacheIndex skeletonsIndex; + static CacheIndex skinsIndex; + static CacheIndex configurationsIndex; + static CacheIndex interfacesIndex; + public static CacheIndex soundFXIndex; + static CacheIndex landscapesIndex; + static CacheIndex modelsIndex; + static CacheIndex texturesIndex; + static CacheIndex huffmanEncodingIndex; + static CacheIndex music2Index; + static CacheIndex interfaceScriptsIndex; + static CacheIndex soundFX2Index; + static CacheIndex soundFX3Index; + static CacheIndex objectConfigIndex; + static CacheIndex clientscriptMaskIndex; + static CacheIndex npcConfigIndex; + static CacheIndex itemConfigIndex; + static CacheIndex animationIndex; + static CacheIndex graphicFXIndex; + static CacheIndex clientScriptConfigIndex; + static CacheIndex worldmapIndex; + static CacheIndex quickchatMessagesIndex; + static CacheIndex quickchatMenusIndex; + static CacheIndex materialsIndex; + static CacheIndex particlesConfigIndex; + static CacheIndex libIndex; + /** + * + */ + + + private final boolean discardPacked; + private final boolean aBoolean1946; + private final ResourceProvider provider; + private ReferenceTable referenceTable = null; + private Object[] packed; + private Object[][] unpacked; + + public CacheIndex(ResourceProvider provider, boolean var2, boolean var3) { + this.provider = provider; + this.discardPacked = var2; + this.aBoolean1946 = var3; + } + + private static Object wrap(byte[] data) { + if (data == null) { + return null; + } + + if (data.length > 136 && !GameConfig.CACHE_DEBUG) { + try { + Class144 buffer = new Class144_Sub1(); + buffer.setBytes(data); + return buffer; + } catch (Throwable var4) { + GameConfig.CACHE_DEBUG = true; + } + } + + return data; + } + + final boolean method2113() { + try { + if (this.isReady()) { + boolean var2 = true; + + for (int var3 = 0; this.referenceTable.validArchiveIds.length > var3; ++var3) { + int var4 = this.referenceTable.validArchiveIds[var3]; + if (null == this.packed[var4]) { + this.load(var4); + if (null == this.packed[var4]) { + var2 = false; + } + } + } + + return var2; + } else { + return false; + } + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "ve.IA()"); + } + } + + private int method2114(int var1) { + if (this.isValidArchive(var1)) { + return this.packed[var1] != null ? 100 : this.provider.percentComplete(var1); + } else { + return 0; + } + } + + final void method2115(int var1, boolean var2) { + try { + if (this.isReady()) { + if (var2) { + this.referenceTable.archiveNameHash = null; + this.referenceTable.setALookupTable_949(null); + } + + this.referenceTable.setALookupTableArray962(null); + this.referenceTable.setFileNameHashes(null); + + } + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "ve.R(" + var1 + ',' + var2 + ',' + true + ')'); + } + } + + final int method2116(RSString var2) { + try { + if (this.isReady()) { + var2 = var2.toLowercase(); + int var3 = this.referenceTable.getALookupTable_949().get(var2.method1574()); + return this.method2114(var3); + } else { + return 0; + } + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "ve.P(" + 22813 + ',' + (var2 != null ? "{...}" : "null") + ')'); + } + } + + final boolean method2117(int var2) { + if (this.isValidArchive(var2)) { + if (null == this.packed[var2]) { + this.load(var2); + return null != this.packed[var2]; + } else { + return true; + } + } else { + return false; + } + } + + final int getReferenceTableCrc() { + if (this.isReady()) { + return this.referenceTable.getCrc(); + } else { + throw new IllegalStateException(""); + } + } + + public final int getArchiveForName(RSString name) { + try { + if (this.isReady()) { + name = name.toLowercase(); + int var3 = this.referenceTable.getALookupTable_949().get(name.method1574()); + return this.isValidArchive(var3) ? var3 : -1; + } else { + return -1; + } + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "ve.EA(" + (name != null ? "{...}" : "null") + ',' + (byte) -30 + ')'); + } + } + + final int method2121() { + try { + if (this.isReady()) { + + return this.referenceTable.archiveLengths.length; + } else { + return -1; + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "ve.D(" + 0 + ')'); + } + } + + private boolean isReady() { + if (this.referenceTable == null) { + this.referenceTable = this.provider.getReferenceTable(); + if (this.referenceTable == null) { + return false; + } + + this.unpacked = new Object[this.referenceTable.getArchiveAmount()][]; + this.packed = new Object[this.referenceTable.getArchiveAmount()]; + } + + return true; + } + + final byte[] method2123(RSString var2, RSString var3) { + try { + if (this.isReady()) { + var3 = var3.toLowercase(); + var2 = var2.toLowercase(); + int var4 = this.referenceTable.getALookupTable_949().get(var3.method1574()); + + if (this.isValidArchive(var4)) { + int var5 = this.referenceTable.getALookupTableArray962()[var4].get(var2.method1574()); + return this.getFile(var4, var5); + } else { + return null; + } + } else { + return null; + } + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "ve.C(" + 0 + ',' + (var2 != null ? "{...}" : "null") + ',' + (var3 != null ? "{...}" : "null") + ')'); + } + } + + final void method2124(int var1, RSString var2) { + try { + if (this.isReady()) { + var2 = var2.toLowercase(); + int var3 = this.referenceTable.getALookupTable_949().get(var2.method1574()); + this.request(var3); + } + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "ve.V(" + var1 + ',' + (var2 != null ? "{...}" : "null") + ')'); + } + } + + final boolean method2125(RSString var1, RSString var3) { + try { + if (this.isReady()) { + var3 = var3.toLowercase(); + var1 = var1.toLowercase(); + int var4 = this.referenceTable.getALookupTable_949().get(var3.method1574()); + if (this.isValidArchive(var4)) { + int var5 = this.referenceTable.getALookupTableArray962()[var4].get(var1.method1574()); + + return this.method2129((byte) 70, var5, var4); + } else { + return false; + } + } else { + return false; + } + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "ve.DA(" + (var1 != null ? "{...}" : "null") + ',' + (byte) 116 + ',' + (var3 != null ? "{...}" : "null") + ')'); + } + } + + final byte[] getFile(int archive, int file, int[] xtea) { + if (!this.isValidFile(archive, file)) { + return null; + } + + if (this.unpacked[archive] == null || this.unpacked[archive][file] == null) { + boolean loaded = this.unpack(archive, xtea); + + if (!loaded) { + this.load(archive); + loaded = this.unpack(archive, xtea); + if (!loaded) { + return null; + } + } + } + + byte[] var7 = NPC.method1985(this.unpacked[archive][file], false); + if (this.aBoolean1946) { + this.unpacked[archive][file] = null; + if (this.referenceTable.archiveLengths[archive] == 1) { + this.unpacked[archive] = null; + } + } + + return var7; + } + + final boolean method2127(RSString var2) { + try { + if (this.isReady()) { + var2 = var2.toLowercase(); + int var3 = this.referenceTable.getALookupTable_949().get(var2.method1574()); + return this.method2117(var3); + } else { + return false; + } + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "ve.O(" + (byte) -83 + ',' + (var2 != null ? "{...}" : "null") + ')'); + } + } + + final void method2128(int var2) { + try { + if (this.isValidArchive(var2)) { + if (null != this.unpacked) { + this.unpacked[var2] = null; + } + + } + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "ve.B(" + 7561 + ',' + var2 + ')'); + } + } + + final boolean method2129(byte var1, int var2, int var3) { + try { + if (this.isValidFile(var3, var2)) { + if (this.unpacked[var3] != null && null != this.unpacked[var3][var2]) { + return true; + } else if (this.packed[var3] == null) { + this.load(var3); + return this.packed[var3] != null; + } else { + return true; + } + } else { + return false; + } + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "ve.FA(" + var1 + ',' + var2 + ',' + var3 + ')'); + } + } + + private boolean isValidArchive(int archiveId) { + if (!this.isReady()) { + return false; + } + + if (archiveId >= 0 + && this.referenceTable.archiveLengths.length > archiveId + && this.referenceTable.archiveLengths[archiveId] != 0) + return true; + + if (GameConfig.CACHE_DEBUG) + throw new IllegalArgumentException(Integer.toString(archiveId)); + return false; + } + + private void request(int archive) { + this.provider.request(archive); + } + + private boolean unpack(int archive, int[] xtea) { + if (!isValidArchive(archive)) return false; + if (packed[archive] == null) return false; + + int count = this.referenceTable.archiveFileLengths[archive]; + int[] indices = this.referenceTable.validFileIds[archive]; + if (this.unpacked[archive] == null) { + this.unpacked[archive] = new Object[this.referenceTable.archiveLengths[archive]]; + } + + boolean finished = true; + Object[] objects = this.unpacked[archive]; + + for (int i = 0; i < count; ++i) { + int index; + if (indices == null) { + index = i; + } else { + index = indices[i]; + } + + if (objects[index] == null) { + finished = false; + break; + } + } + + if (finished) return true; + + byte[] decrypted; + if (xtea != null && (xtea[0] != 0 || xtea[1] != 0 || xtea[2] != 0 || xtea[3] != 0)) { + decrypted = NPC.method1985(this.packed[archive], true); + DataBuffer buffer = new DataBuffer(decrypted); + buffer.method770(xtea, buffer.buffer.length); + } else { + decrypted = NPC.method1985(this.packed[archive], false); + } + + byte[] data = new byte[0]; + try { + data = Container.INSTANCE.decode(decrypted);//Class3_Sub28_Sub13.decodeContainer(var21); + } catch (Throwable e) { + System.out.println("Tried to go into a null area"); + System.out.println("T3 - " + (xtea != null) + "," + archive + "," + Objects.requireNonNull(decrypted).length + "," + CRC.INSTANCE.crc32(decrypted, decrypted.length) + "," + CRC.INSTANCE.crc32(decrypted, decrypted.length - 2) + "," + this.referenceTable.archiveCRCs[archive] + "," + this.referenceTable.getCrc()); + //throw ClientErrorException.clientError(e, "T3 - " + (xtea != null) + "," + archive + "," + Objects.requireNonNull(decrypted).length + "," + CRC.INSTANCE.crc32(decrypted, decrypted.length) + "," + CRC.INSTANCE.crc32(decrypted, decrypted.length - 2) + "," + this.referenceTable.archiveCRCs[archive] + "," + this.referenceTable.getCrc()); + } + + if (this.discardPacked) { + this.packed[archive] = null; + } + + int start; + if (count > 1) { + start = data.length; + start--; + int blockCount = data[start] & 0xff; + start -= count * blockCount * 4; + + DataBuffer buffer = new DataBuffer(data); + buffer.index = start; + int[] var13 = new int[count]; + + int var15; + int var16; + for (int var14 = 0; blockCount > var14; ++var14) { + var15 = 0; + + for (var16 = 0; var16 < count; ++var16) { + var15 += buffer.readInt(); + + var13[var16] += var15; + } + } + + byte[][] var24 = new byte[count][]; + + for (var15 = 0; count > var15; ++var15) { + var24[var15] = new byte[var13[var15]]; + var13[var15] = 0; + } + + buffer.index = start; + var15 = 0; + + int var17; + for (var16 = 0; blockCount > var16; ++var16) { + var17 = 0; + + for (int var18 = 0; var18 < count; ++var18) { + var17 += buffer.readInt(); + ArrayUtils.arraycopy(data, var15, var24[var18], var13[var18], var17); + var15 += var17; + var13[var18] += var17; + } + } + + for (var16 = 0; var16 < count; ++var16) { + if (indices == null) { + var17 = var16; + } else { + var17 = indices[var16]; + } + + if (this.aBoolean1946) { + objects[var17] = var24[var16]; + } else { + objects[var17] = wrap(var24[var16]); + } + } + } else { + if (null == indices) { + start = 0; + } else { + start = indices[0]; + } + + if (this.aBoolean1946) { + objects[start] = data; + } else { + objects[start] = wrap(data); + } + } + return true; + } + + public final byte[] getFile(int archive, int file) { + return this.getFile(archive, file, null); + } + + private void load(int archive) { + if (this.discardPacked) { + this.packed[archive] = this.provider.get(archive); + } else { + this.packed[archive] = wrap(this.provider.get(archive)); + } + } + + final boolean method2135(RSString var1) { + try { + if (this.isReady()) { + var1 = var1.toLowercase(); + int var3 = this.referenceTable.getALookupTable_949().get(var1.method1574()); + return var3 >= 0; + } else { + return false; + } + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "ve.S(" + (var1 != null ? "{...}" : "null") + ')'); + } + } + + final int method2136(byte var1) { + try { + if (var1 > -121) { + Unsorted.anInt1950 = -3; + } + + if (this.isReady()) { + int var2 = 0; + int var3 = 0; + + int var4; + for (var4 = 0; var4 < this.packed.length; ++var4) { + if (0 < this.referenceTable.archiveFileLengths[var4]) { + var2 += 100; + var3 += this.method2114(var4); + } + } + + if (var2 == 0) { + return 100; + } else { + var4 = var3 * 100 / var2; + return var4; + } + } else { + return 0; + } + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "ve.N(" + var1 + ')'); + } + } + + final void method2137() { + try { + if (this.unpacked != null) { + for (int var2 = 0; this.unpacked.length > var2; ++var2) { + this.unpacked[var2] = null; + } + } + + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "ve.Q(" + ')'); + } + } + + final byte[] method2138(int var1) { + try { + if (!this.isReady()) { + return null; + } else if (this.referenceTable.archiveLengths.length == 1) { + return this.getFile(0, var1); + } else if (!this.isValidArchive(var1)) { + return null; + } else if (this.referenceTable.archiveLengths[var1] == 1) { + return this.getFile(var1, 0); + } else { + throw new RuntimeException(); + } + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "ve.HA(" + var1 + ',' + 0 + ')'); + } + } + + private boolean isValidFile(int archive, int file) { + if (!this.isReady()) { + return false; + } + if (0 <= archive + && file >= 0 && archive < this.referenceTable.archiveLengths.length + && this.referenceTable.archiveLengths[archive] > file) + return true; + if (GameConfig.CACHE_DEBUG) + throw new IllegalArgumentException(archive + "," + file); + return false; + } + + final byte[] method2140(int file, int archive) { + if (this.isValidFile(archive, file)) { + if (this.unpacked[archive] == null || null == this.unpacked[archive][file]) { + boolean var4 = this.unpack(archive, null); + if (!var4) { + this.load(archive); + var4 = this.unpack(archive, null); + if (!var4) { + return null; + } + } + } + + return NPC.method1985(this.unpacked[archive][file], false); + } else { + return null; + } + } + + final int[] getFileIds(int archiveId) { + try { + + if (this.isValidArchive(archiveId)) { + int[] var3 = this.referenceTable.validFileIds[archiveId]; + if (null == var3) { + var3 = new int[this.referenceTable.archiveFileLengths[archiveId]]; + + for (int var4 = 0; var3.length > var4; var3[var4] = var4++) { + } + } + + return var3; + } else { + return null; + } + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "ve.G(" + (byte) -128 + ',' + archiveId + ')'); + } + } + + final int getFileAmount(int archiveId) { + try { + if (this.isValidArchive(archiveId)) { + return this.referenceTable.archiveLengths[archiveId]; + } else { + return 0; + } + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "ve.H(" + archiveId + ')'); + } + } + + public final boolean retrieveSpriteFile(int archiveId) { + try { + if (!this.isReady()) { + return false; + } else if (this.referenceTable.archiveLengths.length == 1) { + return this.method2129((byte) 86, archiveId, 0); + } else if (this.isValidArchive(archiveId)) { + if (1 == this.referenceTable.archiveLengths[archiveId]) { + return this.method2129((byte) 109, 0, archiveId); + } else { + throw new RuntimeException(); + } + } else { + return false; + } + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "ve.A(" + 0 + ',' + archiveId + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/CacheResourceRequest.java b/Client/src/main/java/org/runite/client/CacheResourceRequest.java new file mode 100644 index 000000000..ec4dfea28 --- /dev/null +++ b/Client/src/main/java/org/runite/client/CacheResourceRequest.java @@ -0,0 +1,20 @@ +package org.runite.client; + +final class CacheResourceRequest extends ResourceRequest { + + Class41 cache; + byte[] data; + int type; + + final byte[] getData() { + if (this.waiting) { + throw new RuntimeException("Attempted to get data while request was not completed yet"); + } + return this.data; + } + + final int getCompletion() { + return this.waiting ? 0 : 100; + } + +} diff --git a/Client/src/main/java/org/runite/client/CacheResourceWorker.java b/Client/src/main/java/org/runite/client/CacheResourceWorker.java new file mode 100644 index 000000000..8fde4d47d --- /dev/null +++ b/Client/src/main/java/org/runite/client/CacheResourceWorker.java @@ -0,0 +1,124 @@ +package org.runite.client; + +import org.rs09.client.data.Queue; + +import java.util.Objects; + +final class CacheResourceWorker implements Runnable { + + private final Queue requests = new Queue<>(); + private boolean stopped = false; + private Thread thread; + public int remaining = 0; + + private void addRequest(CacheResourceRequest request) { + synchronized (this.requests) { + this.requests.offer(request); + this.remaining++; + this.requests.notifyAll(); + } + } + + public final void stop() { + this.stopped = true; + synchronized (this.requests) { + this.requests.notifyAll(); + } + + try { + this.thread.join(); + } catch (InterruptedException var4) { + } + + this.thread = null; + } + + public final void write(Class41 cache, int archive, byte[] data) { + CacheResourceRequest var5 = new CacheResourceRequest(); + var5.data = data; + var5.priority = false; + var5.nodeKey = archive; + var5.cache = cache; + var5.type = 2; + this.addRequest(var5); + } + + public final CacheResourceRequest read(Class41 cache, int archive) { + CacheResourceRequest var4 = new CacheResourceRequest(); + var4.cache = cache; + var4.type = 3; + var4.priority = false; + + var4.nodeKey = archive; + this.addRequest(var4); + return var4; + } + + public final CacheResourceRequest priorityRead(Class41 cache, int archive) { + CacheResourceRequest var4 = new CacheResourceRequest(); + var4.type = 1; + synchronized (this.requests) { + CacheResourceRequest var6 = this.requests.getFront(); + + while (var6 != null) { + if ((long) archive == var6.nodeKey && var6.cache == cache && var6.type == 2) { + var4.data = var6.data; + var4.waiting = false; + return var4; + } + + var6 = this.requests.next(); + } + } + + var4.data = cache.read(archive); + var4.waiting = false; + var4.priority = true; + return var4; + } + + public final void run() { + while (!this.stopped) { + CacheResourceRequest request; + synchronized (this.requests) { + request = this.requests.poll(); + if (request == null) { + try { + this.requests.wait(); + } catch (InterruptedException var6) { + } + continue; + } + + this.remaining--; + } + + try { + if (request.type == 2) { + request.cache.write((int) request.nodeKey, request.data.length, request.data); + } else if (request.type == 3) { + request.data = request.cache.read((int) request.nodeKey); + } + } catch (Exception var5) { + Class49.reportError(null, var5); + } + + request.waiting = false; + } + } + + public CacheResourceWorker() { + Class64 var1 = Class38.gameSignlink.startThread(5, this); + + while (Objects.requireNonNull(var1).anInt978 == 0) { + TimeUtils.sleep(10L); + } + + if (var1.anInt978 == 2) { + throw new RuntimeException(); + } else { + this.thread = (Thread) var1.anObject974; + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class1.java b/Client/src/main/java/org/runite/client/Class1.java new file mode 100644 index 000000000..e5177af6e --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class1.java @@ -0,0 +1,671 @@ +package org.runite.client; + +import org.rs09.client.data.HashTable; +import org.rs09.client.rendering.Toolkit; + +final class Class1 { + + static int[] anIntArray52 = new int[4096]; + static boolean[] aBooleanArray54; + static int screenUpperY; + static int anInt56; + static int anInt57; + static RSString aString_58; + static int[] anIntArray2642 = new int[]{1, 1, 1, 1, 4, 1, 1, 5, 6, 1, 5, 0, 7, 0, 4, 1, 7, 2, 1, 1, 6, 1, 1, 3, 6, 1, 7, 0, 0, 6, 7, 0, 1, 7, 6, 1, 1, 1, 5, 4, 3, 2, 1, 1, 0, 4, 1, 5}; + + static { + for (int var0 = 0; var0 < 4096; ++var0) { + anIntArray52[var0] = Class164_Sub2.method2246(var0); + } + + aBooleanArray54 = new boolean[8]; + anInt57 = 0; + aString_58 = RSString.parse(" )4 "); + } + + static void method69(Class36 var0) { + try { + TextureOperation16.aClass36_3112 = var0; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "a.B(" + (var0 != null ? "{...}" : "null") + ')'); + } + } + + static Class3_Sub11[] method70(float[][] var0, float[][] var1, int[][] var2, int var3, float[][] var4, byte[][] var5, int[][] var6, byte[][] var8, byte[][] var9, byte[][] var10, byte[][][] var11) { + try { + HashTable var12 = new HashTable(128); + int var13; + int var14; + int var15; + int var16; + int var21; + int var23; + int var22; + int var25; + int var24; + int var27; + int var26; + int var29; + int var28; + int var30; + int var35; + byte var33; + int var36; + int var58; + int var65; + boolean[] var79; + int var73; + int var74; + boolean[] var75; + boolean[] var81; + for (var13 = 1; var13 <= 102; ++var13) { + for (var14 = 1; var14 <= 102; ++var14) { + var15 = var9[var13][var14] & 0xFF; + var16 = 255 & var10[var13][var14]; + if (var16 != 0) { + FloorOverlayDefinition var17 = FloorOverlayDefinition.getFile(-1 + var16); + if (var17.anInt2103 == -1) { + continue; + } + + Class3_Sub11 var18 = method2052(var12, var17); + byte var19 = var8[var13][var14]; + int[] var20 = Class134.anIntArrayArray1763[var19]; + var18.anInt2342 += var20.length / 2; + ++var18.anInt2344; + if (var17.aBoolean2092 && var15 != 0) { + var18.anInt2342 += Unsorted.anIntArray3607[var19]; + } + } + + if ((var9[var13][var14] & 0xFF) != 0 || var16 != 0 && var8[var13][var14] == 0) { + var58 = 0; + int var60 = 0; + var21 = 0; + var65 = 0; + var23 = 255 & var10[var13][1 + var14]; + var25 = var10[var13][var14 - 1] & 0xFF; + var24 = var10[-1 + var13][var14] & 0xFF; + int[] var63 = new int[8]; + var22 = 0; + var27 = 255 & var10[var13 + -1][1 + var14]; + var26 = var10[var13 + 1][var14] & 0xFF; + var29 = 255 & var10[var13 + 1][-1 + var14]; + var28 = var10[var13 - 1][-1 + var14] & 0xFF; + var30 = var10[1 + var13][var14 - -1] & 0xFF; + FloorOverlayDefinition var31; + int var34; + byte var32; + if (var27 != 0 || var27 != var16) { + var31 = FloorOverlayDefinition.getFile(-1 + var27); + if (var31.aBoolean2092 && var31.anInt2103 != -1) { + var32 = var5[var13 + -1][var14 - -1]; + var33 = var8[-1 + var13][var14 + 1]; + var34 = anIntArray2642[4 * var33 - -(2 + var32 & 3)]; + var35 = anIntArray2642[(3 + var32 & 3) + 4 * var33]; + if (!TextureOperation8.aBooleanArrayArray3468[var35][1] && !TextureOperation8.aBooleanArrayArray3468[var34][0]) { + for (var36 = 0; 8 > var36; ++var36) { + if (var58 == var36) { + var63[var58++] = var27; + break; + } + + if (var63[var36] == var27) { + break; + } + } + } + } + } + + if (var28 != 0 || var28 != var16) { + var31 = FloorOverlayDefinition.getFile(-1 + var28); + if (var31.aBoolean2092 && var31.anInt2103 != -1) { + var32 = var5[-1 + var13][var14 + -1]; + var33 = var8[-1 + var13][-1 + var14]; + var34 = anIntArray2642[var33 * 4 - -(var32 & 3)]; + var35 = anIntArray2642[(var32 - -3 & 3) + var33 * 4]; + if (!TextureOperation8.aBooleanArrayArray3468[var34][1] && !TextureOperation8.aBooleanArrayArray3468[var35][0]) { + for (var36 = 0; var36 < 8; ++var36) { + if (var36 == var58) { + var63[var58++] = var28; + break; + } + + if (var28 == var63[var36]) { + break; + } + } + } + } + } + + if (var29 != 0 || var29 != var16) { + var31 = FloorOverlayDefinition.getFile(var29 - 1); + if (var31.aBoolean2092 && var31.anInt2103 != -1) { + var32 = var5[1 + var13][var14 - 1]; + var33 = var8[var13 - -1][var14 + -1]; + var35 = anIntArray2642[4 * var33 + (3 & 1 + var32)]; + var34 = anIntArray2642[var33 * 4 - -(var32 & 3)]; + if (!TextureOperation8.aBooleanArrayArray3468[var35][1] && !TextureOperation8.aBooleanArrayArray3468[var34][0]) { + for (var36 = 0; var36 < 8; ++var36) { + if (var36 == var58) { + var63[var58++] = var29; + break; + } + + if (var63[var36] == var29) { + break; + } + } + } + } + } + + if (var30 != 0 || var30 != var16) { + var31 = FloorOverlayDefinition.getFile(var30 + -1); + if (var31.aBoolean2092 && var31.anInt2103 != -1) { + var32 = var5[var13 - -1][1 + var14]; + var33 = var8[var13 + 1][1 + var14]; + var35 = anIntArray2642[4 * var33 + (var32 - -1 & 3)]; + var34 = anIntArray2642[var33 * 4 + (var32 - -2 & 3)]; + if (!TextureOperation8.aBooleanArrayArray3468[var34][1] && !TextureOperation8.aBooleanArrayArray3468[var35][0]) { + for (var36 = 0; var36 < 8; ++var36) { + if (var58 == var36) { + var63[var58++] = var30; + break; + } + + if (var63[var36] == var30) { + break; + } + } + } + } + } + + if (var23 != 0 && var23 != var16) { + var31 = FloorOverlayDefinition.getFile(-1 + var23); + if (var31.aBoolean2092 && var31.anInt2103 != -1) { + var60 = anIntArray2642[4 * var8[var13][var14 - -1] + (var5[var13][var14 - -1] - -2 & 3)]; + + for (var74 = 0; var74 < 8; ++var74) { + if (var74 == var58) { + var63[var58++] = var23; + break; + } + + if (var63[var74] == var23) { + break; + } + } + } + } + + if (0 != var24 && var24 != var16) { + var31 = FloorOverlayDefinition.getFile(var24 + -1); + if (var31.aBoolean2092 && var31.anInt2103 != -1) { + var65 = anIntArray2642[(3 & 3 + var5[var13 + -1][var14]) + var8[var13 + -1][var14] * 4]; + + for (var74 = 0; var74 < 8; ++var74) { + if (var58 == var74) { + var63[var58++] = var24; + break; + } + + if (var63[var74] == var24) { + break; + } + } + } + } + + if (var25 != 0 && var16 != var25) { + var31 = FloorOverlayDefinition.getFile(-1 + var25); + if (var31.aBoolean2092 && var31.anInt2103 != -1) { + var21 = anIntArray2642[(3 & var5[var13][var14 + -1]) + var8[var13][var14 + -1] * 4]; + + for (var74 = 0; var74 < 8; ++var74) { + if (var58 == var74) { + var63[var58++] = var25; + break; + } + + if (var25 == var63[var74]) { + break; + } + } + } + } + + if (0 != var26 && var16 != var26) { + var31 = FloorOverlayDefinition.getFile(var26 - 1); + if (var31.aBoolean2092 && var31.anInt2103 != -1) { + var22 = anIntArray2642[(3 & var5[var13 + 1][var14] + 1) + 4 * var8[1 + var13][var14]]; + + for (var74 = 0; var74 < 8; ++var74) { + if (var74 == var58) { + var63[var58++] = var26; + break; + } + + if (var63[var74] == var26) { + break; + } + } + } + } + + for (var73 = 0; var58 > var73; ++var73) { + var74 = var63[var73]; + var79 = TextureOperation8.aBooleanArrayArray3468[var74 != var24 ? 0 : var65]; + var75 = TextureOperation8.aBooleanArrayArray3468[var25 != var74 ? 0 : var21]; + boolean[] var80 = TextureOperation8.aBooleanArrayArray3468[var23 == var74 ? var60 : 0]; + var81 = TextureOperation8.aBooleanArrayArray3468[var26 == var74 ? var22 : 0]; + FloorOverlayDefinition var37 = FloorOverlayDefinition.getFile(-1 + var74); + Class3_Sub11 var38 = method2052(var12, var37); + var38.anInt2342 += 5; + var38.anInt2342 += -2 + var80.length; + var38.anInt2342 += -2 + var79.length; + var38.anInt2342 += var75.length - 2; + var38.anInt2342 += -2 + var81.length; + ++var38.anInt2344; + } + } + } + } + + Class3_Sub11 var56; + for (var56 = (Class3_Sub11) var12.first(); null != var56; var56 = (Class3_Sub11) var12.next()) { + var56.method145(); + } + + for (var13 = 1; 102 >= var13; ++var13) { + for (var14 = 1; var14 <= 102; ++var14) { + var16 = 255 & var9[var13][var14]; + var58 = 255 & var10[var13][var14]; + if ((8 & var11[var3][var13][var14]) != 0) { + var15 = 0; + } else if (2 == (var11[1][var13][var14] & 2) && var3 > 0) { + var15 = var3 + -1; + } else { + var15 = var3; + } + + if (0 != var58) { + FloorOverlayDefinition var62 = FloorOverlayDefinition.getFile(-1 + var58); + if (var62.anInt2103 == -1) { + continue; + } + + Class3_Sub11 var66 = method2052(var12, var62); + byte var67 = var8[var13][var14]; + byte var68 = var5[var13][var14]; + var22 = TextureOperation34.method190(var62.anInt2095, var62.anInt2103, (byte) -111, var6[var13][var14]); + var23 = TextureOperation34.method190(var62.anInt2095, var62.anInt2103, (byte) 65, var6[var13 + 1][var14]); + var24 = TextureOperation34.method190(var62.anInt2095, var62.anInt2103, (byte) 68, var6[1 + var13][var14 + 1]); + var25 = TextureOperation34.method190(var62.anInt2095, var62.anInt2103, (byte) -84, var6[var13][var14 - -1]); + Class29.method971(var22, var2, var1, var13, var0, var23, var68, var15, var24, var16 != 0 && var62.aBoolean2092, var67, var14, var4, var25, var66); + } + + if ((var9[var13][var14] & 0xFF) != 0 || var58 != 0 && 0 == var8[var13][var14]) { + int[] var64 = new int[8]; + var65 = 0; + int var61 = 0; + var21 = 0; + var22 = 0; + var24 = var10[var13][var14 - -1] & 0xFF; + var23 = 0; + var25 = var10[-1 + var13][var14] & 0xFF; + var27 = var10[1 + var13][var14] & 0xFF; + var26 = var10[var13][-1 + var14] & 0xFF; + var28 = 255 & var10[-1 + var13][var14 + 1]; + var29 = 255 & var10[var13 - 1][var14 - 1]; + var30 = 255 & var10[1 + var13][var14 + -1]; + var73 = var10[1 + var13][var14 + 1] & 0xFF; + FloorOverlayDefinition var76; + byte var77; + int var83; + if (0 == var28 || var28 == var58) { + var28 = 0; + } else { + var76 = FloorOverlayDefinition.getFile(-1 + var28); + if (var76.aBoolean2092 && var76.anInt2103 != -1) { + var33 = var5[var13 + -1][1 + var14]; + var77 = var8[-1 + var13][1 + var14]; + var35 = anIntArray2642[4 * var77 - -(2 + var33 & 3)]; + var36 = anIntArray2642[var77 * 4 - -(3 + var33 & 3)]; + if (TextureOperation8.aBooleanArrayArray3468[var36][1] && TextureOperation8.aBooleanArrayArray3468[var35][0]) { + var28 = 0; + } else { + for (var83 = 0; var83 < 8; ++var83) { + if (var61 == var83) { + var64[var61++] = var28; + break; + } + + if (var28 == var64[var83]) { + break; + } + } + } + } else { + var28 = 0; + } + } + + if (0 == var29 || var29 == var58) { + var29 = 0; + } else { + var76 = FloorOverlayDefinition.getFile(-1 + var29); + if (var76.aBoolean2092 && -1 != var76.anInt2103) { + var33 = var5[var13 + -1][-1 + var14]; + var77 = var8[-1 + var13][var14 + -1]; + var35 = anIntArray2642[(3 & var33) + var77 * 4]; + var36 = anIntArray2642[(var33 - -3 & 3) + 4 * var77]; + if (TextureOperation8.aBooleanArrayArray3468[var35][1] && TextureOperation8.aBooleanArrayArray3468[var36][0]) { + var29 = 0; + } else { + for (var83 = 0; 8 > var83; ++var83) { + if (var83 == var61) { + var64[var61++] = var29; + break; + } + + if (var29 == var64[var83]) { + break; + } + } + } + } else { + var29 = 0; + } + } + + if (var30 == 0 || var58 == var30) { + var30 = 0; + } else { + var76 = FloorOverlayDefinition.getFile(-1 + var30); + if (var76.aBoolean2092 && -1 != var76.anInt2103) { + var33 = var5[1 + var13][var14 - 1]; + var77 = var8[1 + var13][var14 + -1]; + var36 = anIntArray2642[(1 + var33 & 3) + 4 * var77]; + var35 = anIntArray2642[var77 * 4 + (var33 & 3)]; + if (TextureOperation8.aBooleanArrayArray3468[var36][1] && TextureOperation8.aBooleanArrayArray3468[var35][0]) { + var30 = 0; + } else { + for (var83 = 0; 8 > var83; ++var83) { + if (var61 == var83) { + var64[var61++] = var30; + break; + } + + if (var64[var83] == var30) { + break; + } + } + } + } else { + var30 = 0; + } + } + + if (var73 == 0 || var73 == var58) { + var73 = 0; + } else { + var76 = FloorOverlayDefinition.getFile(-1 + var73); + if (var76.aBoolean2092 && var76.anInt2103 != -1) { + var77 = var8[1 + var13][1 + var14]; + var33 = var5[1 + var13][var14 + 1]; + var35 = anIntArray2642[(3 & var33 - -2) + 4 * var77]; + var36 = anIntArray2642[(var33 + 1 & 3) + 4 * var77]; + if (TextureOperation8.aBooleanArrayArray3468[var35][1] && TextureOperation8.aBooleanArrayArray3468[var36][0]) { + var73 = 0; + } else { + for (var83 = 0; var83 < 8; ++var83) { + if (var61 == var83) { + var64[var61++] = var73; + break; + } + + if (var64[var83] == var73) { + break; + } + } + } + } else { + var73 = 0; + } + } + + int var78; + if (var24 != 0 && var58 != var24) { + var76 = FloorOverlayDefinition.getFile(var24 - 1); + if (var76.aBoolean2092 && -1 != var76.anInt2103) { + var65 = anIntArray2642[var8[var13][var14 - -1] * 4 + (2 + var5[var13][var14 - -1] & 3)]; + + for (var78 = 0; 8 > var78; ++var78) { + if (var61 == var78) { + var64[var61++] = var24; + break; + } + + if (var24 == var64[var78]) { + break; + } + } + } + } + + if (var25 != 0 && var58 != var25) { + var76 = FloorOverlayDefinition.getFile(var25 + -1); + if (var76.aBoolean2092 && var76.anInt2103 != -1) { + var21 = anIntArray2642[(3 & var5[var13 - 1][var14] - -3) + 4 * var8[var13 + -1][var14]]; + + for (var78 = 0; var78 < 8; ++var78) { + if (var78 == var61) { + var64[var61++] = var25; + break; + } + + if (var25 == var64[var78]) { + break; + } + } + } + } + + if (var26 != 0 && var58 != var26) { + var76 = FloorOverlayDefinition.getFile(var26 - 1); + if (var76.aBoolean2092 && -1 != var76.anInt2103) { + var22 = anIntArray2642[(var5[var13][var14 + -1] & 3) + 4 * var8[var13][-1 + var14]]; + + for (var78 = 0; var78 < 8; ++var78) { + if (var78 == var61) { + var64[var61++] = var26; + break; + } + + if (var64[var78] == var26) { + break; + } + } + } + } + + if (var27 != 0 && var27 != var58) { + var76 = FloorOverlayDefinition.getFile(var27 + -1); + if (var76.aBoolean2092 && var76.anInt2103 != -1) { + var23 = anIntArray2642[4 * var8[1 + var13][var14] - -(3 & var5[var13 + 1][var14] - -1)]; + + for (var78 = 0; var78 < 8; ++var78) { + if (var61 == var78) { + var64[var61++] = var27; + break; + } + + if (var27 == var64[var78]) { + break; + } + } + } + } + + for (var74 = 0; var61 > var74; ++var74) { + var78 = var64[var74]; + var79 = TextureOperation8.aBooleanArrayArray3468[var78 == var24 ? var65 : 0]; + var75 = TextureOperation8.aBooleanArrayArray3468[var25 == var78 ? var21 : 0]; + var81 = TextureOperation8.aBooleanArrayArray3468[var26 == var78 ? var22 : 0]; + boolean[] var84 = TextureOperation8.aBooleanArrayArray3468[var78 != var27 ? 0 : var23]; + FloorOverlayDefinition var82 = FloorOverlayDefinition.getFile(-1 + var78); + Class3_Sub11 var39 = method2052(var12, var82); + int var40 = TextureOperation34.method190(var82.anInt2095, var82.anInt2103, (byte) -76, var6[var13][var14]) << 8 | 255; + byte var44 = 6; + int var41 = 255 | TextureOperation34.method190(var82.anInt2095, var82.anInt2103, (byte) -85, var6[1 + var13][var14]) << 8; + int var42 = TextureOperation34.method190(var82.anInt2095, var82.anInt2103, (byte) 123, var6[var13 - -1][var14 - -1]) << 8 | 255; + int var43 = 255 | TextureOperation34.method190(var82.anInt2095, var82.anInt2103, (byte) 106, var6[var13][var14 - -1]) << 8; + boolean var48 = var29 != var78 && var81[0] && var75[1]; + boolean var47 = var73 != var78 && var79[0] && var84[1]; + boolean var46 = var28 != var78 && var75[0] && var79[1]; + int var85 = var44 + -2 + var79.length; + boolean var49 = var30 != var78 && var84[0] && var81[1]; + var85 += -2 + var75.length; + var85 += var81.length - 2; + var85 += -2 + var84.length; + int var50 = Class121.method1734(var43, 0.0F, var40, var41, null, var2, var13, var4, var42, (byte) -127, 0, true, var39, var1, var14, 64, var0, 64); + int[] var45 = new int[var85]; + var44 = 0; + int var51 = Class121.method1734(var43, 0.0F, var40, var41, null, var2, var13, var4, var42, (byte) -112, 0, var46, var39, var1, var14, 0, var0, 128); + int var52 = Class121.method1734(var43, 0.0F, var40, var41, null, var2, var13, var4, var42, (byte) -119, 0, var47, var39, var1, var14, 128, var0, 128); + int var53 = Class121.method1734(var43, 0.0F, var40, var41, null, var2, var13, var4, var42, (byte) -127, 0, var48, var39, var1, var14, 0, var0, 0); + int var54 = Class121.method1734(var43, 0.0F, var40, var41, null, var2, var13, var4, var42, (byte) -114, 0, var49, var39, var1, var14, 128, var0, 0); + var85 = var44 + 1; + var45[var44] = var50; + var45[var85++] = var52; + if (var79.length > 2) { + var45[var85++] = Class121.method1734(var43, 0.0F, var40, var41, null, var2, var13, var4, var42, (byte) -117, 0, var79[2], var39, var1, var14, 64, var0, 128); + } + + var45[var85++] = var51; + if (var75.length > 2) { + var45[var85++] = Class121.method1734(var43, 0.0F, var40, var41, null, var2, var13, var4, var42, (byte) -128, 0, var75[2], var39, var1, var14, 0, var0, 64); + } + + var45[var85++] = var53; + if (var81.length > 2) { + var45[var85++] = Class121.method1734(var43, 0.0F, var40, var41, null, var2, var13, var4, var42, (byte) -112, 0, var81[2], var39, var1, var14, 64, var0, 0); + } + + var45[var85++] = var54; + if (var84.length > 2) { + var45[var85++] = Class121.method1734(var43, 0.0F, var40, var41, null, var2, var13, var4, var42, (byte) -127, 0, var84[2], var39, var1, var14, 128, var0, 64); + } + + var45[var85++] = var52; + var39.method150(var15, var13, var14, var45, null, true); + } + } + } + } + + for (var56 = (Class3_Sub11) var12.first(); null != var56; var56 = (Class3_Sub11) var12.next()) { + if (var56.anInt2343 == 0) { + var56.unlink(); + } else { + var56.method148(); + } + } + + var13 = var12.size(); + Class3_Sub11[] var57 = new Class3_Sub11[var13]; + long[] var59 = new long[var13]; + var12.values(var57); + + for (var16 = 0; var16 < var13; ++var16) { + var59[var16] = var57[var16].linkableKey; + } + + PacketParser.method824(var59, var57, -27); + return var57; + } catch (RuntimeException var55) { + throw ClientErrorException.clientError(var55, "a.A(" + (var0 != null ? "{...}" : "null") + ',' + (var1 != null ? "{...}" : "null") + ',' + (var2 != null ? "{...}" : "null") + ',' + var3 + ',' + (var4 != null ? "{...}" : "null") + ',' + (var5 != null ? "{...}" : "null") + ',' + (var6 != null ? "{...}" : "null") + ',' + 0 + ',' + (var8 != null ? "{...}" : "null") + ',' + (var9 != null ? "{...}" : "null") + ',' + (var10 != null ? "{...}" : "null") + ',' + (var11 != null ? "{...}" : "null") + ')'); + } + } + + static void worldMapMinimap(int var0, int var1, int var2, int var4) { + try { + if (HDToolKit.highDetail) { + Class22.setClipping(var0, var4, var2 + var0, var1 + var4); + Toolkit.OPENGL_TOOLKIT.method934(var0, var4, var2, var1, 0); //Specific openGL call because set Clipping is not migrated + } else { + Class74.setClipping(var0, var4, var2 + var0, var4 + var1); + Toolkit.JAVA_TOOLKIT.method934(var0, var4, var2, var1, 0); //Specific JTK call because set Clipping is not migrated + } + + if (GroundItemLink.anInt2737 >= 100) { + if (null == Class36.aAbstractSprite_637 || var2 != Class36.aAbstractSprite_637.width || Class36.aAbstractSprite_637.height != var1) { + SoftwareSprite var5 = new SoftwareSprite(var2, var1); + Class74.setBuffer(var5.anIntArray4081, var2, var1); + Unsorted.method523(var2, 0, Class23.anInt455, 0, 0, Class108.anInt1460, var1, 0); + if (HDToolKit.highDetail) { + Class36.aAbstractSprite_637 = new HDSprite(var5); + } else { + Class36.aAbstractSprite_637 = var5; + } + + if (HDToolKit.highDetail) { + Toolkit.JAVA_TOOLKIT.resetBuffer(); + } else { + Unsorted.aClass158_3009.method2182(); + } + } + + Class36.aAbstractSprite_637.method635(var0, var4); + + int var6 = var1 * Class60.anInt934 / Class108.anInt1460 + var4; + int var8 = Class17.anInt410 * var1 / Class108.anInt1460; + int var15 = var0 + var2 * Class60.anInt930 / Class23.anInt455; + int var7 = var2 * Class49.anInt817 / Class23.anInt455; + int var9 = 16711680; + if (Class158.paramGameTypeID == 1) { + var9 = 16777215; + } + Toolkit.getActiveToolkit().drawRect(var15, var6, var7, var8, var9, 255); + if (AbstractSprite.anInt3704 > 0) { + int var10; + if (Class3_Sub28_Sub8.anInt3611 > 10) { + var10 = (-Class3_Sub28_Sub8.anInt3611 + 20) * 25; + } else { + var10 = 25 * Class3_Sub28_Sub8.anInt3611; + } + + for (Class3_Sub23 var11 = (Class3_Sub23) Class84.aLinkedList_1162.startIteration(); var11 != null; var11 = (Class3_Sub23) Class84.aLinkedList_1162.nextIteration()) { + if (Class8.anInt101 == var11.anInt2532) { + int var13 = var4 - -(var11.anInt2539 * var1 / Class108.anInt1460); + int var12 = var2 * var11.anInt2531 / Class23.anInt455 + var0; + Toolkit.getActiveToolkit().fillRect(var12 - 2, var13 - 2, 4, 4, 16776960, var10); + } + } + } + + } + } catch (RuntimeException var14) { + throw ClientErrorException.clientError(var14, "a.D(" + var0 + ',' + var1 + ',' + var2 + ',' + 19481 + ',' + var4 + ')'); + } + } + + static Class3_Sub11 method2052(HashTable var0, FloorOverlayDefinition var2) { + try { + long var3 = ((long) var2.anInt2095 - -1 << 16) + var2.anInt2090 + (((long) var2.anInt2100 << 56) - -((long) var2.anInt2094 << 32)); + Class3_Sub11 var5 = (Class3_Sub11) var0.get(var3); + if (null == var5) { + var5 = new Class3_Sub11(var2.anInt2095, (float) var2.anInt2090, true, false, var2.anInt2094); + var0.put(var3, var5); + } + + return var5; + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "tk.J(" + (var0 != null ? "{...}" : "null") + ',' + false + ',' + (var2 != null ? "{...}" : "null") + ')'); + } + } +} diff --git a/Client/src/main/java/org/runite/client/Class101.java b/Client/src/main/java/org/runite/client/Class101.java new file mode 100644 index 000000000..11de4cd1e --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class101.java @@ -0,0 +1,84 @@ +package org.runite.client; + +final class Class101 { + + static CacheIndex csConfigFileRAM; + static Class3_Sub24_Sub4 aClass3_Sub24_Sub4_1421; + static Class30 aClass30_1422; + static CacheIndex musicIndex_1423; + static int anInt1425 = 0; + static int[] anIntArray1426; + static int anInt1427; + static short[][] aShortArrayArray1429; + + + static void method1607(int var0, int var1, boolean var2, int[] var3, int[] var4) { + try { + if (var2) { + method1608((byte) 106); + } + + if (var1 > var0) { + int var5 = (var1 + var0) / 2; + int var6 = var0; + int var7 = var3[var5]; + var3[var5] = var3[var1]; + var3[var1] = var7; + int var8 = var4[var5]; + var4[var5] = var4[var1]; + var4[var1] = var8; + + for (int var9 = var0; var9 < var1; ++var9) { + if ((var9 & 1) + var7 < var3[var9]) { + int var10 = var3[var9]; + var3[var9] = var3[var6]; + var3[var6] = var10; + int var11 = var4[var9]; + var4[var9] = var4[var6]; + var4[var6++] = var11; + } + } + + var3[var1] = var3[var6]; + var3[var6] = var7; + var4[var1] = var4[var6]; + var4[var6] = var8; + method1607(var0, var6 - 1, var2, var3, var4); + method1607(var6 + 1, var1, var2, var3, var4); + } + + } catch (RuntimeException var12) { + throw ClientErrorException.clientError(var12, "nj.C(" + var0 + ',' + var1 + ',' + var2 + ',' + (var3 != null ? "{...}" : "null") + ',' + (var4 != null ? "{...}" : "null") + ')'); + } + } + + public static void method1608(byte var0) { + try { + CacheIndex.npcConfigIndex = null; + Class136.aLinkedList_1424 = null; + aShortArrayArray1429 = null; + anIntArray1426 = null; + aClass3_Sub24_Sub4_1421 = null; + aClass30_1422 = null; + musicIndex_1423 = null; + if (var0 != 110) { + method1607(46, 78, true, null, null); + } + + csConfigFileRAM = null; + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "nj.A(" + var0 + ')'); + } + } + + static void method1609() { + try { + Unsorted.anShaderInterfaceArray70 = null; + + Class88.method1455(); + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "nj.B(" + 90 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class102.java b/Client/src/main/java/org/runite/client/Class102.java new file mode 100644 index 000000000..65350fa8f --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class102.java @@ -0,0 +1,576 @@ +package org.runite.client; + +import org.rs09.client.data.NodeCache; + +public final class Class102 implements Interface2 { + + static int[] anIntArray2125; + static int anInt2136; + public static Player player; + private final boolean[] aBooleanArray2122; + private final CacheIndex spritesIndex_2123; + private final boolean[] aBooleanArray2124; + private final byte[] aByteArray2126; + private final CacheIndex texturesIndex_2127; + private final boolean[] aBooleanArray2128; + private final byte[] aByteArray2129; + private final boolean[] aBooleanArray2135; + private final short[] aShortArray2137; + private final byte[] aByteArray2143; + private final byte[] aByteArray2144; + private boolean aBoolean2134; + private NodeCache aClass47_2138; + private int anInt2139; + private NodeCache aClass47_2142; + + + Class102(CacheIndex var1, CacheIndex var2, CacheIndex var3, boolean var5) { + try { + this.spritesIndex_2123 = var3; + this.aBoolean2134 = var5; + this.anInt2139 = 20; + this.texturesIndex_2127 = var1; + this.aClass47_2142 = new NodeCache(this.anInt2139); + if (HDToolKit.highDetail) { + this.aClass47_2138 = new NodeCache(this.anInt2139); + } else { + this.aClass47_2138 = null; + } + + DataBuffer var6 = new DataBuffer(var2.getFile(0, 0)); + int var7 = var6.readUnsignedShort(); + this.aByteArray2143 = new byte[var7]; + this.aByteArray2129 = new byte[var7]; + this.aByteArray2126 = new byte[var7]; + this.aShortArray2137 = new short[var7]; + this.aByteArray2144 = new byte[var7]; + this.aBooleanArray2128 = new boolean[var7]; + this.aBooleanArray2122 = new boolean[var7]; + this.aBooleanArray2124 = new boolean[var7]; + boolean[] aBooleanArray2133 = new boolean[var7]; + this.aBooleanArray2135 = new boolean[var7]; + + int var8; + for (var8 = 0; var8 < var7; ++var8) { + aBooleanArray2133[var8] = 1 == var6.readUnsignedByte(); + } + + for (var8 = 0; var8 < var7; ++var8) { + if (aBooleanArray2133[var8]) { + this.aBooleanArray2124[var8] = var6.readUnsignedByte() == 1; + } + } + + for (var8 = 0; var7 > var8; ++var8) { + if (aBooleanArray2133[var8]) { + this.aBooleanArray2128[var8] = 1 == var6.readUnsignedByte(); + } + } + + for (var8 = 0; var7 > var8; ++var8) { + if (aBooleanArray2133[var8]) { + this.aBooleanArray2122[var8] = var6.readUnsignedByte() == 1; + } + } + + for (var8 = 0; var8 < var7; ++var8) { + if (aBooleanArray2133[var8]) { + this.aBooleanArray2135[var8] = var6.readUnsignedByte() == 1; + } + } + + for (var8 = 0; var7 > var8; ++var8) { + if (aBooleanArray2133[var8]) { + this.aByteArray2126[var8] = var6.readSignedByte(); + } + } + + for (var8 = 0; var7 > var8; ++var8) { + if (aBooleanArray2133[var8]) { + this.aByteArray2129[var8] = var6.readSignedByte(); + } + } + + for (var8 = 0; var8 < var7; ++var8) { + if (aBooleanArray2133[var8]) { + this.aByteArray2144[var8] = var6.readSignedByte(); + } + } + + for (var8 = 0; var7 > var8; ++var8) { + if (aBooleanArray2133[var8]) { + this.aByteArray2143[var8] = var6.readSignedByte(); + } + } + + for (var8 = 0; var7 > var8; ++var8) { + if (aBooleanArray2133[var8]) { + this.aShortArray2137[var8] = (short) var6.readUnsignedShort(); + } + } + + } catch (RuntimeException var9) { + throw ClientErrorException.clientError(var9, "nk.(" + (var1 != null ? "{...}" : "null") + ',' + (var2 != null ? "{...}" : "null") + ',' + (var3 != null ? "{...}" : "null") + ',' + 20 + ',' + var5 + ')'); + } + } + + static void method1611(int var0, boolean var1) { + try { + int var2; + NPC var3; + int var6; + int var7; + int var8; + int var9; + int var10; + for (var2 = 0; var2 < Class163.localNPCCount; ++var2) { + var3 = NPC.npcs[AudioThread.localNPCIndexes[var2]]; + if (null != var3 && var3.hasDefinitions() && var3.definition.aBoolean1263 == var1 && var3.definition.method1472()) { + int var4 = var3.getSize(); + int var5; + if (1 != var4) { + if (((1 & var4) != 0 || (127 & var3.xAxis) == 0 && 0 == (127 & var3.yAxis)) && ((var4 & 1) != 1 || (127 & var3.xAxis) == 64 && 64 == (127 & var3.yAxis))) { + var5 = var3.xAxis + -(var4 * 64) >> 7; + var6 = -(var4 * 64) + var3.yAxis >> 7; + var7 = var3.getSize() + var5; + if (var5 < 0) { + var5 = 0; + } + + if (var7 > 104) { + var7 = 104; + } + + var8 = var6 + var3.getSize(); + if (var6 < 0) { + var6 = 0; + } + + if (104 < var8) { + var8 = 104; + } + + for (var9 = var5; var9 < var7; ++var9) { + for (var10 = var6; var8 > var10; ++var10) { + ++Class163_Sub1_Sub1.anIntArrayArray4010[var9][var10]; + } + } + } + } else if ((127 & var3.xAxis) == 64 && (var3.yAxis & 127) == 64) { + var5 = var3.xAxis >> 7; + var6 = var3.yAxis >> 7; + if (var5 >= 0 && var5 < 104 && var6 >= 0 && var6 < 104) { + ++Class163_Sub1_Sub1.anIntArrayArray4010[var5][var6]; + } + } + } + } + + label200: + for (var2 = 0; Class163.localNPCCount > var2; ++var2) { + var3 = NPC.npcs[AudioThread.localNPCIndexes[var2]]; + long var15 = (long) AudioThread.localNPCIndexes[var2] << 32 | 536870912L; + if (var3 != null && var3.hasDefinitions() && !var3.definition.aBoolean1263 == !var1 && var3.definition.method1472()) { + var6 = var3.getSize(); + if (var6 != 1) { + if ((var6 & 1) == 0 && (var3.xAxis & 127) == 0 && (127 & var3.yAxis) == 0 || (var6 & 1) == 1 && (var3.xAxis & 127) == 64 && (127 & var3.yAxis) == 64) { + var7 = -(64 * var6) + var3.xAxis >> 7; + var8 = -(var6 * 64) + var3.yAxis >> 7; + var10 = var8 - -var6; + if (var8 < 0) { + var8 = 0; + } + + boolean var11 = true; + var9 = var7 + var6; + if (var10 > 104) { + var10 = 104; + } + + if (var7 < 0) { + var7 = 0; + } + + if (var9 > 104) { + var9 = 104; + } + + int var12; + int var13; + for (var12 = var7; var12 < var9; ++var12) { + for (var13 = var8; var10 > var13; ++var13) { + if (Class163_Sub1_Sub1.anIntArrayArray4010[var12][var13] <= 1) { + var11 = false; + break; + } + } + } + + if (var11) { + var12 = var7; + + while (true) { + if (var12 >= var9) { + continue label200; + } + + for (var13 = var8; var13 < var10; ++var13) { + --Class163_Sub1_Sub1.anIntArrayArray4010[var12][var13]; + } + + ++var12; + } + } + } + } else if ((127 & var3.xAxis) == 64 && (127 & var3.yAxis) == 64) { + var7 = var3.xAxis >> 7; + var8 = var3.yAxis >> 7; + if (0 > var7 || var7 >= 104 || var8 < 0 || var8 >= 104) { + continue; + } + + if (1 < Class163_Sub1_Sub1.anIntArrayArray4010[var7][var8]) { + --Class163_Sub1_Sub1.anIntArrayArray4010[var7][var8]; + continue; + } + } + + if (!var3.definition.aBoolean1270) { + var15 |= Long.MIN_VALUE; + } + + var3.anInt2831 = Scenery.sceneryPositionHash(WorldListCountry.localPlane, 1, var3.xAxis, var3.yAxis); + Class20.method907(WorldListCountry.localPlane, var3.xAxis, var3.yAxis, var3.anInt2831, -64 + 64 * var6 + 60, var3, var3.anInt2785, var15, var3.aBoolean2810); + } + } + + } catch (RuntimeException var14) { + throw ClientErrorException.clientError(var14, "nk.V(" + var0 + ',' + var1 + ')'); + } + } + + public static void method1612(int var0) { + try { + player = null; + if (var0 != -11565) { + method1614(false, null, null); + } + + anIntArray2125 = null; + Sprites.aSoftwareSpriteArray2140 = null; + AudioHandler.soundEffects = null; + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "nk.W(" + var0 + ')'); + } + } + + static void method1614(boolean var0, long[] var1, int[] var2) { + try { + Class44.method1069(var1, 0, -1 + var1.length, var2); + if (!var0) { + method1612(103); + } + + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "nk.Q(" + var0 + ',' + (var1 != null ? "{...}" : "null") + ',' + (var2 != null ? "{...}" : "null") + ')'); + } + } + + static void method1617(int var0, int var1, int var2, int var3, int var4) { + try { + if (Class57.anInt902 >= var4 && Class159.anInt2020 <= var2) { + boolean var6; + if (Class101.anInt1425 <= var1) { + if (Class3_Sub28_Sub18.anInt3765 >= var1) { + var6 = true; + } else { + var6 = false; + var1 = Class3_Sub28_Sub18.anInt3765; + } + } else { + var6 = false; + var1 = Class101.anInt1425; + } + + boolean var7; + if (var3 < Class101.anInt1425) { + var3 = Class101.anInt1425; + var7 = false; + } else if (Class3_Sub28_Sub18.anInt3765 < var3) { + var3 = Class3_Sub28_Sub18.anInt3765; + var7 = false; + } else { + var7 = true; + } + + if (Class159.anInt2020 > var4) { + var4 = Class159.anInt2020; + } else { + TextureOperation18.method282(Class38.anIntArrayArray663[var4++], var1, -66, var3, var0); + } + + if (var2 <= Class57.anInt902) { + TextureOperation18.method282(Class38.anIntArrayArray663[var2--], var1, -54, var3, var0); + } else { + var2 = Class57.anInt902; + } + + int var8; + if (var6 && var7) { + for (var8 = var4; var8 <= var2; ++var8) { + int[] var9 = Class38.anIntArrayArray663[var8]; + var9[var1] = var9[var3] = var0; + } + } else if (var6) { + for (var8 = var4; var2 >= var8; ++var8) { + Class38.anIntArrayArray663[var8][var1] = var0; + } + } else if (var7) { + for (var8 = var4; var8 <= var2; ++var8) { + Class38.anIntArrayArray663[var8][var3] = var0; + } + } + } + + } catch (RuntimeException var10) { + throw ClientErrorException.clientError(var10, "nk.R(" + var0 + ',' + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + (byte) 29 + ')'); + } + } + + final void method1610(int var2) { + try { + + for (Class3_Sub28_Sub20 var3 = (Class3_Sub28_Sub20) this.aClass47_2142.first(); null != var3; var3 = (Class3_Sub28_Sub20) this.aClass47_2142.next()) { + if (var3.aBoolean3797) { + var3.method723(var2); + var3.aBoolean3797 = false; + } + } + + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "nk.P(" + true + ',' + var2 + ')'); + } + } + + public final int[] method16(int var1, int var2) { + try { + if (var1 != 64) { + this.method12(105, -92); + } + + Class3_Sub28_Sub20 var3 = this.method1613(var2); + return null == var3 ? null : var3.method720(this.aBoolean2134 || this.aBooleanArray2122[var2], this, this.spritesIndex_2123); + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "nk.F(" + var1 + ',' + var2 + ')'); + } + } + + public final void method8(int var1, boolean var2) { + try { + Unsorted.method551(255 & this.aByteArray2143[var1], this.aByteArray2144[var1] & 0xFF); + if (var2) { + boolean var3 = false; + Class3_Sub28_Sub20 var4 = this.method1613(var1); + if (var4 != null) { + var3 = var4.method719(this.spritesIndex_2123, this, this.aBoolean2134 || this.aBooleanArray2122[var1]); + } + + if (!var3) { + Class3_Sub28_Sub18 var6 = this.method1615(var1); + var6.method712(); + } + + } + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "nk.G(" + var1 + ',' + var2 + ')'); + } + } + + private Class3_Sub28_Sub20 method1613(int var1) { + try { + + Class3_Sub28_Sub20 var3 = (Class3_Sub28_Sub20) this.aClass47_2142.get(var1); + if (null == var3) { + byte[] var4 = this.texturesIndex_2127.getFile(var1, 0); + if (null == var4) { + return null; + } else { + DataBuffer var5 = new DataBuffer(var4); + var3 = new Class3_Sub28_Sub20(var5); + this.aClass47_2142.put(var1, var3); + return var3; + } + } else { + return var3; + } + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "nk.T(" + var1 + ',' + 1 + ')'); + } + } + + public final int method9(int var1, boolean var2) { + try { + return var2 ? -63 : 255 & this.aByteArray2143[var1]; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "nk.D(" + var1 + ',' + ')'); + } + } + + public final int method18(int var1, int var2) { + try { + if (var2 != 255) { + method1612(-48); + } + + return 255 & this.aByteArray2144[var1]; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "nk.B(" + var1 + ',' + var2 + ')'); + } + } + + public final int method10(int var1, int var2) { + try { + return this.aByteArray2126[var2] & 0xFF; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "nk.C(" + var1 + ',' + var2 + ')'); + } + } + + public final boolean method7(byte var1, int var2) { + try { + if (var1 != 88) { + this.method19(-99, -37); + } + + return this.aBooleanArray2128[var2]; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "nk.M(" + var1 + ',' + var2 + ')'); + } + } + + private Class3_Sub28_Sub18 method1615(int var2) { + try { + Class3_Sub28_Sub18 var4 = (Class3_Sub28_Sub18) this.aClass47_2138.get(var2); + if (null == var4) { + var4 = new Class3_Sub28_Sub18(this.aShortArray2137[var2] & 65535); + this.aClass47_2138.put(var2, var4); + } + return var4; + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "nk.U(" + 48 + ',' + var2 + ')'); + } + } + + public final boolean method11(int var1, int var2) { + try { + if (var1 < 0) { + this.method7((byte) 68, -47); + } + + Class3_Sub28_Sub20 var3 = this.method1613(var2); + return null != var3 && var3.method722(this, this.spritesIndex_2123); + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "nk.H(" + var1 + ',' + var2 + ')'); + } + } + + final void method1616(boolean var1) { + try { + this.aBoolean2134 = var1; + this.method1618(); + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "nk.S(" + var1 + ',' + -17830 + ')'); + } + } + + public final boolean method12(int var1, int var2) { + try { + if (var2 != -65) { + method1614(false, null, null); + } + + return this.aBooleanArray2135[var1]; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "nk.I(" + var1 + ',' + var2 + ')'); + } + } + + public final int method19(int var1, int var2) { + try { + return 255 & this.aByteArray2129[var2]; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "nk.A(" + var1 + ',' + var2 + ')'); + } + } + + final void method1618() { + try { + this.aClass47_2142.clear(); + if (null != this.aClass47_2138) { + this.aClass47_2138.clear(); + } + + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "nk.O(" + 0 + ')'); + } + } + + public final int method15(int var1, int var2) { + try { + if (var2 != 65535) { + this.method11(-82, -17); + } + + return 65535 & this.aShortArray2137[var1]; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "nk.E(" + var1 + ',' + var2 + ')'); + } + } + + public final boolean method14(byte var1, int var2) { + try { + return var1 >= -97 || (this.aBoolean2134 || this.aBooleanArray2122[var2]); + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "nk.J(" + var1 + ',' + var2 + ')'); + } + } + + final void method1619(int var1) { + try { + + this.anInt2139 = var1; + this.aClass47_2142 = new NodeCache(this.anInt2139); + if (HDToolKit.highDetail) { + this.aClass47_2138 = new NodeCache(this.anInt2139); + } else { + this.aClass47_2138 = null; + } + + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "nk.N(" + var1 + ',' + -1 + ')'); + } + } + + public final boolean method17(int var1, int var2) { + try { + return this.aBooleanArray2124[var1]; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "nk.K(" + var1 + ',' + var2 + ')'); + } + } + + public final int[] method13(int var1, boolean var2, float var3) { + try { + Class3_Sub28_Sub20 var4 = this.method1613(var1); + if (null == var4) { + return null; + } else { + var4.aBoolean3797 = var2; + return var4.method718(this, var3, this.spritesIndex_2123, this.aBoolean2134 || this.aBooleanArray2122[var1]); + } + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "nk.L(" + var1 + ',' + var2 + ',' + var3 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class106.java b/Client/src/main/java/org/runite/client/Class106.java new file mode 100644 index 000000000..d6913591f --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class106.java @@ -0,0 +1,35 @@ +package org.runite.client; + +final class Class106 { + + static boolean aBoolean1441 = true; + static int rightMargin = 0; + static int anInt1446 = 0; + static boolean paramUserUsingInternetExplorer = false; + int anInt1447; + int anInt1449; + int anInt1450; + + static void method1642(RSString var1) { + try { + if (null != PacketParser.aClass3_Sub19Array3694) { + + long var3 = var1.toLong(); + int var2 = 0; + if (var3 != 0L) { + while (PacketParser.aClass3_Sub19Array3694.length > var2 && var3 != PacketParser.aClass3_Sub19Array3694[var2].linkableKey) { + ++var2; + } + + if (var2 < PacketParser.aClass3_Sub19Array3694.length && null != PacketParser.aClass3_Sub19Array3694[var2]) { + TextureOperation12.outgoingBuffer.putOpcode(162); + TextureOperation12.outgoingBuffer.writeLong(PacketParser.aClass3_Sub19Array3694[var2].linkableKey); + } + } + } + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "od.C(" + 3803 + ',' + (var1 != null ? "{...}" : "null") + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class107.java b/Client/src/main/java/org/runite/client/Class107.java new file mode 100644 index 000000000..784e30420 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class107.java @@ -0,0 +1,85 @@ +package org.runite.client; + +final class Class107 { + + static RSInterface aClass11_1453; + static CacheIndex configurationsIndex_878; + + + static void method1645(CacheIndex var0, CacheIndex var1) { + try { + KeyboardListener.spritesIndex_1916 = var1; + int var4 = (int) (21.0D * Math.random()) - 10; + configurationsIndex_878 = var0; + int var5 = (int) (21.0D * Math.random()) - 10; + configurationsIndex_878.getFileAmount(34); + int var3 = (int) (Math.random() * 21.0D) + -10; + int var6 = -20 + (int) (41.0D * Math.random()); + Class158.anInt2015 = var6 + var5; + Class46.anInt740 = var4 + var6; + Class102.anInt2136 = var6 + var3; + } catch (RuntimeException var7) { + throw ClientErrorException.clientError(var7, "og.F(" + (var0 != null ? "{...}" : "null") + ',' + (var1 != null ? "{...}" : "null") + ',' + (byte) -67 + ')'); + } + } + + static void method1647(int var1, int var2, Entity var3, int var4, int var5, int var6) { + try { + + Unsorted.method1724(var6, var2, var3.yAxis, var5, var1, var3.xAxis, (byte) -85, var4); + } catch (RuntimeException var8) { + throw ClientErrorException.clientError(var8, "og.A(" + (byte) 122 + ',' + var1 + ',' + var2 + ',' + (var3 != null ? "{...}" : "null") + ',' + var4 + ',' + var5 + ',' + var6 + ')'); + } + } + + static void method1648(CacheIndex var0) { + try { + Class101.csConfigFileRAM = var0; + + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "og.B(" + (var0 != null ? "{...}" : "null") + ',' + 255 + ')'); + } + } + + static void method1649(int var0, int var1) { + try { + if (var1 <= -65) { + InterfaceWidget var2 = InterfaceWidget.getWidget(10, var0); + var2.a(); + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "og.C(" + var0 + ',' + var1 + ')'); + } + } + +// static void method1650() { +// try { +// Class61.aReferenceCache_939.clearSoftReferences(); +// +// } catch (RuntimeException var2) { +// throw ClientErrorException.clientError(var2, "og.G(" + 21 + ')'); +// } +// } + + static int method1651(int var1, int var2) { + try { + int var3; + if (var1 > var2) { + var3 = var2; + var2 = var1; + var1 = var3; + } + + while (var1 != 0) { + var3 = var2 % var1; + var2 = var1; + var1 = var3; + } + + return var2; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "og.D(" + 19067 + ',' + var1 + ',' + var2 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class108.java b/Client/src/main/java/org/runite/client/Class108.java new file mode 100644 index 000000000..744f8aece --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class108.java @@ -0,0 +1,104 @@ +package org.runite.client; + +import java.util.Objects; + +final class Class108 { + + static int anInt1460; + + + static void method1652(int var0, int var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8) { + try { + + if (Class101.anInt1425 <= var5 && Class3_Sub28_Sub18.anInt3765 >= var5 && var0 >= Class101.anInt1425 && Class3_Sub28_Sub18.anInt3765 >= var0 && Class101.anInt1425 <= var6 && var6 <= Class3_Sub28_Sub18.anInt3765 && var1 >= Class101.anInt1425 && Class3_Sub28_Sub18.anInt3765 >= var1 && var4 >= Class159.anInt2020 && Class57.anInt902 >= var4 && Class159.anInt2020 <= var7 && Class57.anInt902 >= var7 && var2 >= Class159.anInt2020 && var2 <= Class57.anInt902 && Class159.anInt2020 <= var3 && Class57.anInt902 >= var3) { + Class3_Sub5.method114(var2, var8, var7, var6, var1, var3, var4, var0, var5); + } else { + Class95.method1583(var5, var0, var7, var8, var3, var2, var1, var6, var4); + } + + } catch (RuntimeException var11) { + throw ClientErrorException.clientError(var11, "oi.C(" + var0 + ',' + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + var5 + ',' + var6 + ',' + var7 + ',' + var8 + ',' + 0 + ')'); + } + } + + static RSString method1653(int var0) { + try { + + return RSString.stringCombiner(new RSString[]{RSString.stringAnimator(255 & var0 >> 24), TextCore.aString_4023, RSString.stringAnimator((var0 & 16712751) >> 16), TextCore.aString_4023, RSString.stringAnimator(255 & var0 >> 8), TextCore.aString_4023, RSString.stringAnimator(var0 & 0xFF)}); + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "oi.F(" + var0 + ',' + 0 + ')'); + } + } + +// static void method1654(int var0) { //Separated into method1656 + clearClientCacheMemory +// try { +// Entity.aReferenceCache_2792.clearSoftReferences(); +// } catch (RuntimeException var2) { +// throw ClientErrorException.clientError(var2, "oi.E(" + var0 + ')'); +// } +// } + + static void method1656(CacheIndex var0, byte var1) { + try { + if (!PositionedGraphicObject.aBoolean2713) { + if (HDToolKit.highDetail) { + Class22.method932(); + } else { + Class74.method1320(); + } + + Class40.aAbstractSprite_680 = Class75_Sub2.method1344(var0, Class154.anInt1966); + int var2 = GroundItem.canvasHeight; + int var3 = var2 * 956 / 503; + Objects.requireNonNull(Class40.aAbstractSprite_680).method639((Class23.canvasWidth + -var3) / 2, 0, var3, var2); + SequenceDefinition.aClass109_1856 = InterfaceWidget.a(CSConfigCachefile.anInt1124, var0); + Objects.requireNonNull(SequenceDefinition.aClass109_1856).method1667(Class23.canvasWidth / 2 + -(SequenceDefinition.aClass109_1856.width / 2), 18); + PositionedGraphicObject.aBoolean2713 = true; + if (var1 > -50) { + Entity.aReferenceCache_2792.clearSoftReferences(); + } + + } + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "oi.B(" + (var0 != null ? "{...}" : "null") + ',' + var1 + ')'); + } + } + + static void method1657(int var0) { + try { + InterfaceWidget var2 = InterfaceWidget.getWidget(5, var0); + var2.a(); + + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "oi.J(" + var0 + ',' + -903 + ')'); + } + } + + static void method1658(int[] var1, Object[] var2) { + try { + Class25.method956(var2, var1.length - 1, var1, 74, 0); + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "oi.I(" + 21 + ',' + (var1 != null ? "{...}" : "null") + ',' + (var2 != null ? "{...}" : "null") + ')'); + } + } + + static void method1659() { + try { + LinkedList.aReferenceCache_939.clear(); + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "oi.G(" + 16712751 + ')'); + } + } + + static void method1661(CacheIndex var1, CacheIndex var2) { + try { + Sprites.aBoolean337 = true; + Unsorted.modelsIndex_1043 = var2; + + Class85.objectConfigIndex_1171 = var1; + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "oi.D(" + 2 + ',' + (var1 != null ? "{...}" : "null") + ',' + (var2 != null ? "{...}" : "null") + ',' + true + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class110.java b/Client/src/main/java/org/runite/client/Class110.java new file mode 100644 index 000000000..30af6fe79 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class110.java @@ -0,0 +1,24 @@ +package org.runite.client; + + +import java.util.Objects; + +final class Class110 { + + static int anInt1472 = 0; + + + static void method1681(int var0) { + try { + if (LoginHandler.loginStage == 5) { + if (var0 != -1) { + TextCore.COMMAND_BREAK_JS5_SERVER_CONNECTION = null; + } + + LoginHandler.loginStage = 6; + } + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "p.A(" + var0 + ')'); + } + } +} diff --git a/Client/src/main/java/org/runite/client/Class113.java b/Client/src/main/java/org/runite/client/Class113.java new file mode 100644 index 000000000..f7883a3dc --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class113.java @@ -0,0 +1,38 @@ +package org.runite.client; + +final class Class113 { + + static int interfacePacketCounter = 0; + static int anInt1559; + int anInt1544; + int anInt1545; + int anInt1547; + int anInt1548; + int anInt1549; + int anInt1550; + int anInt1551; + int anInt1553; + int anInt1554; + int anInt1555; + int anInt1557; + int anInt1560; + int anInt1561; + int anInt1562; + int anInt1563; + int anInt1564; + int anInt1565; + int anInt1566; + + + static void method1702(boolean var1) { + try { + if (var1 == !Sprites.aBoolean337) { + Sprites.aBoolean337 = var1; + Class3_Sub10.method139(76); + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "pe.B(" + (byte) -124 + ',' + var1 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class114.java b/Client/src/main/java/org/runite/client/Class114.java new file mode 100644 index 000000000..e361218f9 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class114.java @@ -0,0 +1,151 @@ +package org.runite.client; + +import org.rs09.client.data.ReferenceCache; + +import java.util.Objects; + +final class Class114 { + + static ReferenceCache aReferenceCache_1569 = new ReferenceCache(200); + static long[] ignores = new long[100]; + static int[] anIntArray1578 = new int[500]; + private final int anInt1568; + private final int anInt1579; + boolean aBoolean1580 = false; + private int anInt1570 = 0; + private Class3_Sub26[] aClass3_Sub26Array1571; + private int[][] anIntArrayArray1573; + private int anInt1576 = -1; + private LinkedList aLinkedList_1577 = new LinkedList(); + + + Class114(int var1, int var2, int var3) { + try { + this.anInt1568 = var2; + this.aClass3_Sub26Array1571 = new Class3_Sub26[this.anInt1568]; + this.anInt1579 = var1; + this.anIntArrayArray1573 = new int[this.anInt1579][var3]; + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "pf.(" + var1 + ',' + var2 + ',' + var3 + ')'); + } + } + + static float[] method1705(int var0, int var1) { + try { + float var2 = Class92.method1514() + Class92.getLightingModelAmbient(); + int var3 = Class92.screenColorRgb(); + float var7 = 0.58823526F; + MouseListeningClass.aFloatArray1919[3] = 1.0F; + float var4 = (float) (var3 >> 16 & 0xFF) / 255.0F; + float var5 = (float) (('\uff1e' & var3) >> 8) / 255.0F; + MouseListeningClass.aFloatArray1919[1] = var2 * (float) Unsorted.bitwiseAnd(var0 >> 8, 255) / 255.0F * var5 * var7; + MouseListeningClass.aFloatArray1919[var1] = var2 * var7 * var4 * ((float) (Unsorted.bitwiseAnd(16754958, var0) >> 16) / 255.0F); + float var6 = (float) (var3 & 0xFF) / 255.0F; + MouseListeningClass.aFloatArray1919[2] = (float) Unsorted.bitwiseAnd(255, var0) / 255.0F * var6 * var7 * var2; + return MouseListeningClass.aFloatArray1919; + } catch (RuntimeException var8) { + throw ClientErrorException.clientError(var8, "pf.F(" + var0 + ',' + var1 + ')'); + } + } + + static AbstractSprite method1707(int var0, int var1, boolean var2, int var3, int var4) { + try { + int var7 = (!var2 ? 0 : 65536) + var1 + (var0 << 17) + (var4 << 19); + long var8 = (long) var7 * 3849834839L + 3147483667L * (long) var3; + AbstractSprite var10 = (AbstractSprite) Class67.aReferenceCache_1013.get(var8); + if (var10 == null) { + Class51.aBoolean837 = false; + var10 = AbstractSprite.constructItemSprite(var4, false, var1, var2, var0, var3, false); + if (var10 != null && !Class51.aBoolean837) { + Class67.aReferenceCache_1013.put(var10, var8); + } + + } + return var10; + } catch (RuntimeException var11) { + throw ClientErrorException.clientError(var11, "pf.B(" + var0 + ',' + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + 65536 + ')'); + } + } + + static void method1708(int var0, int var1) { + try { + InterfaceWidget var3 = InterfaceWidget.getWidget(13, var1); + var3.flagUpdate(); + var3.anInt3598 = var0; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "pf.E(" + var0 + ',' + var1 + ',' + -2553 + ')'); + } + } + + final void method1706() { + try { + for (int var2 = 0; var2 < this.anInt1579; ++var2) { + this.anIntArrayArray1573[var2] = null; + } + + this.anIntArrayArray1573 = null; + this.aClass3_Sub26Array1571 = null; + this.aLinkedList_1577.clear(); + this.aLinkedList_1577 = null; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "pf.A(" + 1127165736 + ')'); + } + } + + final int[] method1709(int var2) { + try { + + if (this.anInt1579 == this.anInt1568) { + this.aBoolean1580 = this.aClass3_Sub26Array1571[var2] == null; + this.aClass3_Sub26Array1571[var2] = Class56.aClass3_Sub26_884; + return this.anIntArrayArray1573[var2]; + } else if (this.anInt1579 == 1) { + this.aBoolean1580 = this.anInt1576 != var2; + this.anInt1576 = var2; + return this.anIntArrayArray1573[0]; + } else { + Class3_Sub26 var3 = this.aClass3_Sub26Array1571[var2]; + if (null == var3) { + this.aBoolean1580 = true; + if (this.anInt1570 < this.anInt1579) { + var3 = new Class3_Sub26(var2, this.anInt1570); + ++this.anInt1570; + } else { + Class3_Sub26 var4 = (Class3_Sub26) this.aLinkedList_1577.method1212(); + var3 = new Class3_Sub26(var2, Objects.requireNonNull(var4).anInt2555); + this.aClass3_Sub26Array1571[var4.anInt2553] = null; + var4.unlink(); + } + + this.aClass3_Sub26Array1571[var2] = var3; + } else { + this.aBoolean1580 = false; + } + + this.aLinkedList_1577.method1216(var3); + return this.anIntArrayArray1573[var3.anInt2555]; + } + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "pf.C(" + -16409 + ',' + var2 + ')'); + } + } + + final int[][] method1710(byte var1) { + try { + if (var1 <= 67) { + return null; + } else if (this.anInt1579 == this.anInt1568) { + for (int var2 = 0; this.anInt1579 > var2; ++var2) { + this.aClass3_Sub26Array1571[var2] = Class56.aClass3_Sub26_884; + } + + return this.anIntArrayArray1573; + } else { + throw new RuntimeException("Can only retrieve a full image cache"); + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "pf.H(" + var1 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class115.java b/Client/src/main/java/org/runite/client/Class115.java new file mode 100644 index 000000000..c56407881 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class115.java @@ -0,0 +1,108 @@ +package org.runite.client; + +final class Class115 { + + + static void method1713() { + try { + + while (true) { + Class3_Sub5 var1 = (Class3_Sub5) Unsorted.aLinkedList_2468.method1220(); + if (var1 == null) { + return; + } + + Entity var2; + int var3; + if (0 > var1.anInt2273) { + var3 = -var1.anInt2273 - 1; + if (Class3_Sub1.localIndex == var3) { + var2 = Class102.player; + } else { + var2 = Unsorted.players[var3]; + } + } else { + var3 = var1.anInt2273 - 1; + var2 = NPC.npcs[var3]; + } + + if (var2 != null) { + ObjectDefinition var20 = ObjectDefinition.getObjectDefinition(var1.anInt2270); + + int var4; + int var5; + if (var1.anInt2284 == 1 || var1.anInt2284 == 3) { + var5 = var20.SizeX; + var4 = var20.SizeY; + } else { + var4 = var20.SizeX; + var5 = var20.SizeY; + } + + int var7 = (var4 - -1 >> 1) + var1.anInt2271; + int var6 = (var4 >> 1) + var1.anInt2271; + int var8 = (var5 >> 1) + var1.anInt2282; + int var9 = (var5 + 1 >> 1) + var1.anInt2282; + int[][] var10 = Class44.anIntArrayArrayArray723[WorldListCountry.localPlane]; + int var11 = var10[var7][var9] + var10[var6][var9] + (var10[var6][var8] - -var10[var7][var8]) >> 2; + GameObject var12 = null; + int var13 = Class75.anIntArray1107[var1.anInt2278]; + if (var13 == 0) { + Class70 var14 = Class154.method2147(WorldListCountry.localPlane, var1.anInt2271, var1.anInt2282); + if (var14 != null) { + var12 = var14.aClass140_1049; + } + } else if (var13 == 1) { + Class19 var21 = Class44.method1068(WorldListCountry.localPlane, var1.anInt2271, var1.anInt2282); + if (null != var21) { + var12 = var21.aClass140_429; + } + } else if (2 == var13) { + Class25 var23 = Class75.method1336(WorldListCountry.localPlane, var1.anInt2271, var1.anInt2282); + if (null != var23) { + var12 = var23.aClass140_479; + } + } else if (var13 == 3) { + Class12 var24 = Unsorted.method784(WorldListCountry.localPlane, var1.anInt2271, var1.anInt2282); + if (null != var24) { + var12 = var24.object; + } + } + + if (null != var12) { + Unsorted.constructScenery(WorldListCountry.localPlane, var1.anInt2282, -96, 0, var1.anInt2271, var1.anInt2283 - -1, -1, var13, 0, var1.anInt2266 - -1); + var2.anInt2778 = var1.anInt2283 + Class44.anInt719; + var2.anInt2833 = 64 * var5 + var1.anInt2282 * 128; + var2.anInt2782 = var4 * 64 + 128 * var1.anInt2271; + var2.anObject2796 = var12; + int var22 = var1.anInt2268; + var2.anInt2812 = var11; + var2.anInt2797 = Class44.anInt719 + var1.anInt2266; + int var15 = var1.anInt2272; + int var16 = var1.anInt2277; + int var17 = var1.anInt2279; + int var18; + if (var22 > var15) { + var18 = var22; + var22 = var15; + var15 = var18; + } + + var2.anInt2818 = var1.anInt2271 + var15; + if (var17 < var16) { + var18 = var16; + var16 = var17; + var17 = var18; + } + + var2.anInt2777 = var1.anInt2282 + var16; + var2.anInt2817 = var17 + var1.anInt2282; + var2.anInt2788 = var1.anInt2271 - -var22; + } + } + } + } catch (RuntimeException var19) { + throw ClientErrorException.clientError(var19, "ph.A(" + (byte) -91 + ')'); + } + } +} diff --git a/Client/src/main/java/org/runite/client/Class117.java b/Client/src/main/java/org/runite/client/Class117.java new file mode 100644 index 000000000..62729f93b --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class117.java @@ -0,0 +1,116 @@ +package org.runite.client; + +public final class Class117 { + + static int[] anIntArray1613 = new int[500]; + + + static void method1719(int var0) { + try { + if (Class143.gameStage != var0) { + if (Class143.gameStage == 0) { + Unsorted.method1517(); + } + + if (var0 == 40) { + Class24.method951(); + } + + boolean var2 = var0 == 5 || var0 == 10 || var0 == 28; + if (40 != var0 && null != Class163_Sub2_Sub1.aClass89_4012) { + Class163_Sub2_Sub1.aClass89_4012.close(); + Class163_Sub2_Sub1.aClass89_4012 = null; + } + + if (var0 == 25 || var0 == 28) { + Class162.anInt2038 = 0; + LinkableRSString.anInt2579 = 1; + Class163_Sub2_Sub1.anInt4019 = 0; + Client.anInt2275 = 1; + Class40.anInt3293 = 0; + Unsorted.method1250(102, true); + } + + if (var0 == 25 || var0 == 10) { + Class72.method1293(); + } + + if (var0 == 5) { + Class108.method1656(CacheIndex.spritesIndex, (byte) -111); + } else { + TextureOperation23.method247((byte) -121); + } + + boolean var3 = 5 == Class143.gameStage || Class143.gameStage == 10 || Class143.gameStage == 28; + if (var3 == !var2) { + if (var2) { + AudioHandler.currentTrack = KeyboardListener.loginThemeSongArchiveID; + if (AudioHandler.musicVolume == 0) { + Unsorted.method882(); + } else { + AudioHandler.method2099(KeyboardListener.loginThemeSongArchiveID, CacheIndex.musicIndex, 255); + } + + Class58.aJs5Worker_917.sendLoginState(false); + } else { + Unsorted.method882(); + Class58.aJs5Worker_917.sendLoginState(true); + } + } + + if (HDToolKit.highDetail && (25 == var0 || var0 == 28 || var0 == 40)) { + HDToolKit.method1833(); + } + + Class143.gameStage = var0; + } + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "pl.C(" + var0 + ',' + 5 + ')'); + } + } + + static void method1720(boolean var0, int var1) { + try { + Class129.anIntArray1695 = new int[104]; + Unsorted.anIntArray1138 = new int[104]; + Class85.anInt1174 = 99; + MouseListeningClass.anIntArray1920 = new int[104]; + byte var2; + if (var0) { + var2 = 1; + } else { + var2 = 4; + } + + Unsorted.aByteArrayArrayArray1328 = new byte[var2][104][104]; + Unsorted.anIntArray2469 = new int[104]; + Class38_Sub1.anIntArrayArrayArray2609 = new int[var2][105][var1]; + Class67.aByteArrayArrayArray1014 = new byte[var2][105][105]; + Class158_Sub1.aByteArrayArrayArray1828 = new byte[var2][104][104]; + Class3_Sub31.anIntArray2606 = new int[104]; + PacketParser.aByteArrayArrayArray81 = new byte[var2][104][104]; + TextureOperation36.aByteArrayArrayArray3430 = new byte[var2][104][104]; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "pl.B(" + var0 + ',' + var1 + ')'); + } + } + + static SoftwareSprite method1722(int var0) { + try { + int var1 = GroundItem.anIntArray2931[0] * Unsorted.anIntArray3076[0]; + byte[] var2 = Class163_Sub1.aByteArrayArray2987[0]; + int[] var3 = new int[var1]; + + for (int var4 = 0; var1 > var4; ++var4) { + var3[var4] = TextureOperation38.spritePalette[Unsorted.bitwiseAnd(var2[var4], 255)]; + } + + SoftwareSprite var6 = new SoftwareSprite(Class3_Sub15.anInt2426, Class133.anInt1748, Class164.anIntArray2048[0], Unsorted.anIntArray2591[0], GroundItem.anIntArray2931[0], Unsorted.anIntArray3076[0], var3); + Class39.method1035((byte) 122); + return var0 >= -51 ? null : var6; + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "pl.A(" + var0 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class118.java b/Client/src/main/java/org/runite/client/Class118.java new file mode 100644 index 000000000..4e8ec937e --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class118.java @@ -0,0 +1,9 @@ +package org.runite.client; + +import org.rs09.client.data.reference.ObjectReference; + +public abstract class Class118 { + + public abstract ObjectReference method1725(ObjectReference var1); + +} diff --git a/Client/src/main/java/org/runite/client/Class118_Sub1.java b/Client/src/main/java/org/runite/client/Class118_Sub1.java new file mode 100644 index 000000000..73c6a1350 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class118_Sub1.java @@ -0,0 +1,11 @@ +package org.runite.client; + +import org.rs09.client.data.reference.ObjectReference; +import org.rs09.client.data.reference.SoftObjectReference; + +public final class Class118_Sub1 extends Class118 { + + public final ObjectReference method1725(ObjectReference var1) { + return new SoftObjectReference<>(var1.getValue()); + } +} diff --git a/Client/src/main/java/org/runite/client/Class119.java b/Client/src/main/java/org/runite/client/Class119.java new file mode 100644 index 000000000..dad6d7efb --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class119.java @@ -0,0 +1,99 @@ +package org.runite.client; + +import java.awt.*; + +final class Class119 { + + static Class131 aClass131_1624; + static Class33 aClass33_1626; + static CacheIndex modelsIndex_1628; + + + static void method1729() { + try { + Container var1; + if (null == TextureOperation30.fullScreenFrame) { + if (GameShell.frame == null) { + var1 = Class38.gameSignlink.gameApplet; + } else { + var1 = GameShell.frame; + } + } else { + var1 = TextureOperation30.fullScreenFrame; + } + + Unsorted.frameWidth = var1.getSize().width; + Class70.frameHeight = var1.getSize().height; + Insets var2; + if (var1 == GameShell.frame) { + var2 = GameShell.frame.getInsets(); + Class70.frameHeight -= var2.bottom + var2.top; + Unsorted.frameWidth -= var2.right + var2.left; + } + + if (Class83.getWindowType() >= 2) { + Class23.canvasWidth = Unsorted.frameWidth; + Class84.leftMargin = 0; + Class106.rightMargin = 0; + GroundItem.canvasHeight = Class70.frameHeight; + } else { + Class106.rightMargin = 0; + Class84.leftMargin = (-765 + Unsorted.frameWidth) / 2; + GroundItem.canvasHeight = 503; + Class23.canvasWidth = 765; + } + + if (HDToolKit.highDetail) { + HDToolKit.method1854(Class23.canvasWidth, GroundItem.canvasHeight); + } + + GameShell.canvas.setSize(Class23.canvasWidth, GroundItem.canvasHeight); + if (var1 == GameShell.frame) { + var2 = GameShell.frame.getInsets(); + GameShell.canvas.setLocation(var2.left + Class84.leftMargin, Class106.rightMargin + var2.top); + } else { + GameShell.canvas.setLocation(Class84.leftMargin, Class106.rightMargin); + } + + if (ConfigInventoryDefinition.anInt3655 != -1) { + Class124.method1746(true, (byte) -125); + } + + Unsorted.method1396(-1); + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "qh.C(" + true + ')'); + } + } + + static void method1730(Signlink var0) { + try { + RandomAccessFileWrapper var2 = null; + + try { + Class64 var3 = var0.method1433("runescape", 12); + + while (0 == var3.anInt978) { + TimeUtils.sleep(1L); + } + + if (var3.anInt978 == 1) { + var2 = (RandomAccessFileWrapper) var3.anObject974; + DataBuffer var4 = Class23.method939(); + var2.write(var4.buffer, var4.index, 0); + } + } catch (Exception var6) { + } + + try { + if (var2 != null) { + var2.close(); + } + } catch (Exception var5) { + } + + } catch (RuntimeException var7) { + throw ClientErrorException.clientError(var7, "qh.A(" + (var0 != null ? "{...}" : "null") + ',' + (byte) 14 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class12.java b/Client/src/main/java/org/runite/client/Class12.java new file mode 100644 index 000000000..46df87383 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class12.java @@ -0,0 +1,97 @@ +package org.runite.client; + +import org.rs09.client.util.ArrayUtils; + +public final class Class12 { + + public static CacheIndex aCacheIndex_322; + public static CacheIndex spritesIndex_323; + static float aFloat319; + GameObject object; + int anInt324; + int anInt326; + long aLong328; + boolean aBoolean329 = false; + int anInt330; + + + static void method870(int var0, byte var1, int var2, int var3, int var4, int var5) { + try { + int var6; + int var7; + for (var6 = var2; var4 + var2 >= var6; ++var6) { + for (var7 = var3; var5 + var3 >= var7; ++var7) { + if (var7 >= 0 && 104 > var7 && var6 >= 0 && 104 > var6) { + Class67.aByteArrayArrayArray1014[var0][var7][var6] = 127; + } + } + } + + for (var6 = var2; var4 + var2 > var6; ++var6) { + for (var7 = var3; var7 < var3 + var5; ++var7) { + if (var7 >= 0 && var7 < 104 && var6 >= 0 && var6 < 104) { + Class44.anIntArrayArrayArray723[var0][var7][var6] = var0 <= 0 ? 0 : Class44.anIntArrayArrayArray723[var0 + -1][var7][var6]; + } + } + } + + if (0 < var3 && var3 < 104) { + for (var6 = 1 + var2; var6 < var2 + var4; ++var6) { + if (var6 >= 0 && var6 < 104) { + Class44.anIntArrayArrayArray723[var0][var3][var6] = Class44.anIntArrayArrayArray723[var0][var3 - 1][var6]; + } + } + } + + if (var2 > 0 && var2 < 104) { + for (var6 = var3 + 1; var6 < var3 - -var5; ++var6) { + if (var6 >= 0 && 104 > var6) { + Class44.anIntArrayArrayArray723[var0][var6][var2] = Class44.anIntArrayArrayArray723[var0][var6][var2 + -1]; + } + } + } + + if (var3 >= 0 && var2 >= 0 && var3 < 104 && var2 < 104) { + if (var0 != 0) { + if (var3 > 0 && Class44.anIntArrayArrayArray723[-1 + var0][var3 + -1][var2] != Class44.anIntArrayArrayArray723[var0][-1 + var3][var2]) { + Class44.anIntArrayArrayArray723[var0][var3][var2] = Class44.anIntArrayArrayArray723[var0][-1 + var3][var2]; + } else if (0 < var2 && Class44.anIntArrayArrayArray723[-1 + var0][var3][var2 + -1] != Class44.anIntArrayArrayArray723[var0][var3][-1 + var2]) { + Class44.anIntArrayArrayArray723[var0][var3][var2] = Class44.anIntArrayArrayArray723[var0][var3][var2 - 1]; + } else if (var3 > 0 && var2 > 0 && Class44.anIntArrayArrayArray723[var0 - 1][-1 + var3][var2 - 1] != Class44.anIntArrayArrayArray723[var0][-1 + var3][var2 - 1]) { + Class44.anIntArrayArrayArray723[var0][var3][var2] = Class44.anIntArrayArrayArray723[var0][-1 + var3][var2 - 1]; + } + } else if (0 < var3 && 0 != Class44.anIntArrayArrayArray723[var0][var3 + -1][var2]) { + Class44.anIntArrayArrayArray723[var0][var3][var2] = Class44.anIntArrayArrayArray723[var0][var3 + -1][var2]; + } else if (var2 > 0 && Class44.anIntArrayArrayArray723[var0][var3][var2 - 1] != 0) { + Class44.anIntArrayArrayArray723[var0][var3][var2] = Class44.anIntArrayArrayArray723[var0][var3][var2 + -1]; + } else if (var3 > 0 && 0 < var2 && Class44.anIntArrayArrayArray723[var0][var3 - 1][var2 + -1] != 0) { + Class44.anIntArrayArrayArray723[var0][var3][var2] = Class44.anIntArrayArrayArray723[var0][var3 - 1][var2 + -1]; + } + } + + } catch (RuntimeException var8) { + throw ClientErrorException.clientError(var8, "bm.B(" + var0 + ',' + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + var5 + ')'); + } + } + + static int method872(int var1, int var2) { + try { + Class3_Sub25 var3 = (Class3_Sub25) TileData.aHashTable_2220.get(var1); + return null == var3 ? 0 : (var2 >= 0 && var2 < var3.anIntArray2551.length ? var3.anIntArray2551[var2] : 0); + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "bm.C(" + -1 + ',' + var1 + ',' + var2 + ')'); + } + } + + static byte[] method873(byte[] var1) { + try { + int var2 = var1.length; + byte[] var3 = new byte[var2]; + ArrayUtils.arraycopy(var1, 0, var3, 0, var2); + return var3; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "bm.D(" + (byte) 62 + ',' + (var1 != null ? "{...}" : "null") + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class120.java b/Client/src/main/java/org/runite/client/Class120.java new file mode 100644 index 000000000..a785de7c5 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class120.java @@ -0,0 +1,41 @@ +package org.runite.client; + +final class Class120 { + + static long[] aLongArray1631 = new long[256]; + static int[] anIntArray1638; + + static { + for (int var2 = 0; 256 > var2; ++var2) { + long var0 = var2; + + for (int var3 = 0; 8 > var3; ++var3) { + if ((1L & var0) == 1) { + var0 = var0 >>> 1 ^ -3932672073523589310L; + } else { + var0 >>>= 1; + } + } + + aLongArray1631[var2] = var0; + } + + anIntArray1638 = new int[128]; + } + + int anInt1632; + int anInt1634; + int anInt1635; + + static RSString method1732(RSInterface var0, byte var1, int var2) { + try { + if (var1 >= -8) { + anIntArray1638 = null; + } + + return !Client.method44(var0).method92(var2, (byte) -110) && var0.anObjectArray314 == null ? null : (null != var0.aStringArray171 && var0.aStringArray171.length > var2 && var0.aStringArray171[var2] != null && var0.aStringArray171[var2].trim(1).length() != 0 ? var0.aStringArray171[var2] : (!ClientCommands.commandQaOpEnabled ? null : RSString.stringCombiner(new RSString[]{RSString.parse("Hidden)2"), RSString.stringAnimator(var2)}))); + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "qj.B(" + (var0 != null ? "{...}" : "null") + ',' + var1 + ',' + var2 + ')'); + } + } +} diff --git a/Client/src/main/java/org/runite/client/Class121.java b/Client/src/main/java/org/runite/client/Class121.java new file mode 100644 index 000000000..965d0a30f --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class121.java @@ -0,0 +1,253 @@ +package org.runite.client; + +import org.rs09.client.config.GameConfig; +import org.rs09.client.net.Connection; + +import java.io.IOException; +import java.net.Socket; +import java.nio.ByteBuffer; + +final class Class121 { + + static boolean aBoolean1641 = false; + static int anInt1642 = 0; + int anInt1639 = 0; + boolean aBoolean1640 = false; + Class156 aClass156_1643; + ByteBuffer aByteBuffer1644; + int anInt1648 = 0; + + + static int method1734(int var0, float var1, int var2, int var3, int[][] var4, int[][] var5, int var6, float[][] var7, int var8, byte var9, int var10, boolean var11, Class3_Sub11 var12, float[][] var13, int var14, int var15, float[][] var16, int var17) { + try { + int var18; + if (var10 == 1) { + var18 = var15; + var15 = var17; + var17 = -var18 + 128; + } else if (var10 == 2) { + var17 = -var17 + 128; + var15 = -var15 + 128; + } else if (var10 == 3) { + var18 = var15; + var15 = 128 + -var17; + var17 = var18; + } + + float var19; + int var21; + float var20; + float var30; + if (var15 == 0 && var17 == 0) { + var19 = var16[var6][var14]; + var20 = var7[var6][var14]; + var30 = var13[var6][var14]; + var21 = var2; + } else if (var15 == 128 && var17 == 0) { + var21 = var3; + var19 = var16[var6 + 1][var14]; + var20 = var7[1 + var6][var14]; + var30 = var13[var6 + 1][var14]; + } else if (var15 == 128 && var17 == 128) { + var20 = var7[1 + var6][var14 - -1]; + var30 = var13[var6 + 1][1 + var14]; + var19 = var16[1 + var6][var14 - -1]; + var21 = var8; + } else if (var15 == 0 && var17 == 128) { + var20 = var7[var6][1 + var14]; + var19 = var16[var6][1 + var14]; + var30 = var13[var6][var14 - -1]; + var21 = var0; + } else { + var30 = var13[var6][var14]; + var19 = var16[var6][var14]; + float var23 = (float) var17 / 128.0F; + float var22 = (float) var15 / 128.0F; + var30 += (var13[var6 - -1][var14] - var30) * var22; + var19 += (-var19 + var16[var6 + 1][var14]) * var22; + float var24 = var13[var6][var14 + 1]; + float var25 = var16[var6][var14 - -1]; + var25 += (-var25 + var16[var6 + 1][var14 - -1]) * var22; + var20 = var7[var6][var14]; + var19 += var23 * (-var19 + var25); + float var26 = var7[var6][1 + var14]; + var24 += (-var24 + var13[var6 - -1][var14 + 1]) * var22; + var30 += var23 * (-var30 + var24); + var26 += (-var26 + var7[1 + var6][var14 - -1]) * var22; + var20 += (-var20 + var7[var6 - -1][var14]) * var22; + var20 += (-var20 + var26) * var23; + int var27 = TextureOperation30.method210(var15, var2, var3); + int var28 = TextureOperation30.method210(var15, var0, var8); + var21 = TextureOperation30.method210(var17, var27, var28); + } + + if (var9 > -111) { + return -54; + } else { + int var32 = var17 + (var14 << 7); + int var33 = Class3_Sub23.method408(var15, (byte) -51, var14, var5, var6, var17); + int var31 = (var6 << 7) - -var15; + return var12.method146(var31, var33, var32, var30, var19, var20, !var11 ? var21 : -256 & var21, var4 != null ? (float) (var33 + -Class3_Sub23.method408(var15, (byte) 103, var14, var4, var6, var17)) / var1 : 0.0F); + } + } catch (RuntimeException var29) { + throw ClientErrorException.clientError(var29, "ql.A(" + var0 + ',' + var1 + ',' + var2 + ',' + var3 + ',' + (var4 != null ? "{...}" : "null") + ',' + (var5 != null ? "{...}" : "null") + ',' + var6 + ',' + (var7 != null ? "{...}" : "null") + ',' + var8 + ',' + var9 + ',' + var10 + ',' + var11 + ',' + (var12 != null ? "{...}" : "null") + ',' + (var13 != null ? "{...}" : "null") + ',' + var14 + ',' + var15 + ',' + (var16 != null ? "{...}" : "null") + ',' + var17 + ')'); + } + } + + static int method1735() { + try { + try { + if (Class43.worldListStage == 0) { + if (TextureOperation25.aLong3411 > TimeUtils.time() + -5000L) { + return 0; + } + + Class3_Sub9.aClass64_2318 = Class38.gameSignlink.method1441((byte) 8, GameConfig.IP_MANAGEMENT, GameConfig.WL_PORT);//, Class123.anInt1658); + RSInterface.aLong261 = TimeUtils.time(); + Class43.worldListStage = 1; + } + + if (30000L + RSInterface.aLong261 < TimeUtils.time()) { + return method179((byte) 92, 1000); + } + + int wlUpdateStamp; + int var2; + if (1 == Class43.worldListStage) { + if (Class3_Sub9.aClass64_2318.anInt978 == 2) { + return method179((byte) 92, 1001); + } + + if (1 != Class3_Sub9.aClass64_2318.anInt978) { + return -1; + } + + Class3_Sub15.activeConnection = new Connection((Socket) Class3_Sub9.aClass64_2318.anObject974, Class38.gameSignlink); + TextureOperation12.outgoingBuffer.index = 0; + Class3_Sub9.aClass64_2318 = null; + wlUpdateStamp = 0; + if (Class30.loadedWorldList) { + wlUpdateStamp = WorldListEntry.updateStamp; + } + + TextureOperation12.outgoingBuffer.writeByte(255); + TextureOperation12.outgoingBuffer.writeInt(wlUpdateStamp); + Class3_Sub15.activeConnection.sendBytes(TextureOperation12.outgoingBuffer.buffer, TextureOperation12.outgoingBuffer.index); + if (null != WorldListEntry.aAudioChannel_2627) { + WorldListEntry.aAudioChannel_2627.method2159(); + } + + if (null != Class3_Sub21.aAudioChannel_2491) { + Class3_Sub21.aAudioChannel_2491.method2159(); + } + + var2 = Class3_Sub15.activeConnection.readByte(); + //System.out.println(var2); //Not sure what this was debugging + if (WorldListEntry.aAudioChannel_2627 != null) { + WorldListEntry.aAudioChannel_2627.method2159(); + } + + if (null != Class3_Sub21.aAudioChannel_2491) { + Class3_Sub21.aAudioChannel_2491.method2159(); + } + + if (var2 != 0) { + return method179((byte) 92, var2); + } + + Class43.worldListStage = 2; + } + + if (Class43.worldListStage == 2) { + if (2 > Class3_Sub15.activeConnection.availableBytes()) { + return -1; + } + + Unsorted.wlPacketSize = Class3_Sub15.activeConnection.readByte(); + Unsorted.wlPacketSize <<= 8; + Unsorted.wlPacketSize += Class3_Sub15.activeConnection.readByte(); + Class43.worldListStage = 3; + Class3_Sub20.wlPacketIndex = 0; + TextureOperation29.aByteArray3396 = new byte[Unsorted.wlPacketSize]; + } + + if (Class43.worldListStage == 3) { + wlUpdateStamp = Class3_Sub15.activeConnection.availableBytes(); + if (1 > wlUpdateStamp) { + return -1; + } + + if (wlUpdateStamp > -Class3_Sub20.wlPacketIndex + Unsorted.wlPacketSize) { + wlUpdateStamp = Unsorted.wlPacketSize + -Class3_Sub20.wlPacketIndex; + } + + Class3_Sub15.activeConnection.readBytes(TextureOperation29.aByteArray3396, Class3_Sub20.wlPacketIndex, wlUpdateStamp); + Class3_Sub20.wlPacketIndex += wlUpdateStamp; + if (Class3_Sub20.wlPacketIndex >= Unsorted.wlPacketSize) { + if (TextureOperation39.handleWorldListUpdate(TextureOperation29.aByteArray3396)) { + Unsorted.aClass44_Sub1Array3201 = new WorldListEntry[WorldListEntry.activeWorldListSize]; + var2 = 0; + + for (int var3 = Class53.worldListOffset; var3 <= WorldListEntry.worldListArraySize; ++var3) { + WorldListEntry var4 = Class3_Sub8.getWorld(91, var3); + if (null != var4) { + Unsorted.aClass44_Sub1Array3201[var2++] = var4; + } + //System.out.println("world = " +var4.worldId); + } + + Class3_Sub15.activeConnection.close(); + Class3_Sub15.activeConnection = null; + Unsorted.anInt1088 = 0; + Class43.worldListStage = 0; + TextureOperation29.aByteArray3396 = null; + TextureOperation25.aLong3411 = TimeUtils.time(); + return 0; + } + + return method179((byte) 92, 1002); + } + + return -1; + } + } catch (IOException var5) { + return method179((byte) 92, 1003); + } + + return -1; + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "ql.D(" + 29984 + ')'); + } + } + + static int method179(byte var0, int var1) { + try { + if (var0 == 92) { + if (null != Class3_Sub15.activeConnection) { + Class3_Sub15.activeConnection.close(); + Class3_Sub15.activeConnection = null; + } + + ++Unsorted.anInt1088; + if (Unsorted.anInt1088 > 4) { + Class43.worldListStage = 0; + Unsorted.anInt1088 = 0; + return var1; + } else { + Class43.worldListStage = 0; + if (Class123.anInt1658 == Client.anInt3773) { + Class123.anInt1658 = Class53.anInt867; + } else { + Class123.anInt1658 = Client.anInt3773; + } + + return -1; + } + } else { + return 122; + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "an.F(" + var0 + ',' + var1 + ')'); + } + } +} diff --git a/Client/src/main/java/org/runite/client/Class123.java b/Client/src/main/java/org/runite/client/Class123.java new file mode 100644 index 000000000..ac1912a35 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class123.java @@ -0,0 +1,10 @@ +package org.runite.client; + +final class Class123 { + + + static SequenceDefinition[] aClass142Array1654 = new SequenceDefinition[14]; + static boolean aBoolean1656 = false; + static int anInt1658; + +} diff --git a/Client/src/main/java/org/runite/client/Class124.java b/Client/src/main/java/org/runite/client/Class124.java new file mode 100644 index 000000000..76a4fa8f5 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class124.java @@ -0,0 +1,52 @@ +package org.runite.client; + +import org.rs09.client.data.HashTable; + +final class Class124 { + + static HashTable aHashTable_1659 = new HashTable(512); + static CacheIndex soundFX3Index_1661; + + + static void method1745() { + try { + for (int var1 = 0; var1 < 104; ++var1) { + for (int var2 = 0; 104 > var2; ++var2) { + Class163_Sub1_Sub1.anIntArrayArray4010[var1][var2] = 0; + } + } + + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "rb.B(" + 0 + ')'); + } + } + + static void method1746(boolean var0, byte var1) { + try { + if (var1 > -31) { + soundFX3Index_1661 = null; + } + + Class75_Sub4.method1352(GroundItem.canvasHeight, var0, ConfigInventoryDefinition.anInt3655, Class23.canvasWidth); + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "rb.C(" + var0 + ',' + var1 + ')'); + } + } + + static Class3_Sub28_Sub3 method1747(DataBuffer var0) { + try { + Class3_Sub28_Sub3 var2 = new Class3_Sub28_Sub3(var0.readString(), var0.readString(), var0.readUnsignedShort(), var0.readUnsignedShort(), var0.readInt(), var0.readUnsignedByte() == 1, var0.readUnsignedByte()); + int var3 = var0.readUnsignedByte(); + + for (int var4 = 0; var3 > var4; ++var4) { + var2.aLinkedList_3560.pushBack(new Class3_Sub21(var0.readUnsignedShort(), var0.readUnsignedShort(), var0.readUnsignedShort(), var0.readUnsignedShort())); + } + + var2.method538(); + return var2; + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "rb.D(" + (var0 != null ? "{...}" : "null") + ',' + true + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class125.java b/Client/src/main/java/org/runite/client/Class125.java new file mode 100644 index 000000000..9da80edde --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class125.java @@ -0,0 +1,182 @@ +package org.runite.client; + + +import javax.media.opengl.GL; +import java.nio.ByteBuffer; +import java.nio.ByteOrder; +import java.nio.FloatBuffer; + + +final class Class125 implements ShaderInterface { + + private static final float[] aFloatArray2185 = new float[4]; + private int anInt2182 = -1; + private FloatBuffer aFloatBuffer2183; + private int anInt2184; + private int anInt2186 = -1; + + + public Class125() { + if (HDToolKit.supportVertexProgram && HDToolKit.maxTextureUnits >= 2) { + int[] var1 = new int[1]; + GL var2 = HDToolKit.gl; + var2.glGenProgramsARB(1, var1, 0); + this.anInt2184 = var1[0]; + int[][] var3 = AudioThread.method895(0); + int[][] var4 = AudioThread.method895(8); + DataBuffer var5 = new DataBuffer(262144); + + for (int var6 = 0; var6 < 256; ++var6) { + int[] var7 = var3[var6]; + int[] var8 = var4[var6]; + + for (int var9 = 0; var9 < 64; ++var9) { + if (HDToolKit.aBoolean1790) { + var5.writeFloat((float) var7[var9] / 4096.0F); + var5.writeFloat((float) var8[var9] / 4096.0F); + var5.writeFloat(1.0F); + var5.writeFloat(1.0F); + } else { + var5.writeFloatLE((float) var7[var9] / 4096.0F); + var5.writeFloatLE((float) var8[var9] / 4096.0F); + var5.writeFloatLE(1.0F); + var5.writeFloatLE(1.0F); + } + } + } + + ByteBuffer var10 = ByteBuffer.allocateDirect(var5.index).order(ByteOrder.nativeOrder()); + var10.put(var5.buffer, 0, var5.index); + var10.flip(); + this.aFloatBuffer2183 = var10.asFloatBuffer().asReadOnlyBuffer(); + this.method1749(); + this.method1750(); + } + + } + + public final void method21() { + if (this.anInt2186 >= 0) { + GL var1 = HDToolKit.gl; + var1.glCallList(this.anInt2186 + 1); + } + } + + public final int method24() { + return 0; + } + + public final void method22() { + if (this.anInt2186 >= 0) { + GL var1 = HDToolKit.gl; + var1.glCallList(this.anInt2186); + var1.glActiveTexture('\u84c1'); + var1.glMatrixMode(5890); + var1.glTranslatef((float) Unsorted.anInt144, (float) Unsorted.anInt3695, (float) LinkableRSString.anInt2587); + var1.glRotatef(-((float) TextureOperation9.anInt3103 * 360.0F) / 2048.0F, 0.0F, 1.0F, 0.0F); + var1.glRotatef(-((float) GroundItem.anInt2938 * 360.0F) / 2048.0F, 1.0F, 0.0F, 0.0F); + var1.glRotatef(-180.0F, 1.0F, 0.0F, 0.0F); + var1.glMatrixMode(5888); + if (!Class88.Texture3DEnabled) { + var1.glBindTexture(3553, Class88.anIntArray1224[(int) ((float) (HDToolKit.anInt1791 * 64) * 0.0050F) % 64]); + } + + var1.glActiveTexture('\u84c0'); + if (this.anInt2182 != HDToolKit.anInt1791) { + int var2 = (HDToolKit.anInt1791 & 0xFF) * 256; + + for (int var3 = 0; var3 < 64; ++var3) { + this.aFloatBuffer2183.position(var2); + var1.glProgramLocalParameter4fvARB('\u8620', var3, this.aFloatBuffer2183); + var2 += 4; + } + + if (Class88.Texture3DEnabled) { + var1.glProgramLocalParameter4fARB('\u8620', 65, (float) HDToolKit.anInt1791 * 0.0050F, 0.0F, 0.0F, 1.0F); + } else { + var1.glProgramLocalParameter4fARB('\u8620', 65, 0.0F, 0.0F, 0.0F, 1.0F); + } + + this.anInt2182 = HDToolKit.anInt1791; + } + + } + } + + private void method1749() { + GL var1 = HDToolKit.gl; + this.anInt2186 = var1.glGenLists(2); + var1.glNewList(this.anInt2186, 4864); + var1.glActiveTexture('\u84c1'); + if (Class88.Texture3DEnabled) { + var1.glBindTexture('\u806f', Class88.anInt1228); + } + + var1.glTexEnvi(8960, '\u8571', 260); + var1.glTexEnvi(8960, '\u8572', 7681); + var1.glTexEnvi(8960, '\u8588', '\u8578'); + var1.glActiveTexture('\u84c0'); + var1.glBindProgramARB('\u8620', this.anInt2184); + var1.glEnable('\u8620'); + var1.glEndList(); + var1.glNewList(this.anInt2186 + 1, 4864); + var1.glActiveTexture('\u84c1'); + var1.glMatrixMode(5890); + var1.glLoadIdentity(); + var1.glMatrixMode(5888); + var1.glTexEnvi(8960, '\u8571', 8448); + var1.glTexEnvi(8960, '\u8572', 8448); + var1.glTexEnvi(8960, '\u8588', 5890); + var1.glDisable(Class88.Texture3DEnabled ? '\u806f' : 3553); + var1.glActiveTexture('\u84c0'); + var1.glBindProgramARB('\u8620', 0); + var1.glDisable('\u8620'); + var1.glDisable('\u8804'); + var1.glEndList(); + } + + private void method1750() { + if (this.anInt2186 >= 0) { + GL var1 = HDToolKit.gl; + int[] var2 = new int[1]; + var1.glBindProgramARB('\u8620', this.anInt2184); + var1.glProgramStringARB('\u8620', '\u8875', "!!ARBvp1.0\nATTRIB iPos = vertex.position;\nATTRIB iColour = vertex.color;\nOUTPUT oPos = result.position;\nOUTPUT oColour = result.color;\nOUTPUT oTexCoord0 = result.texcoord[0];\nOUTPUT oTexCoord1 = result.texcoord[1];\nOUTPUT oFogCoord = result.fogcoord;\nPARAM time = program.local[65];\nPARAM turbulence = program.local[64];\nPARAM lightAmbient = program.local[66]; \nPARAM pMatrix[4] = { state.matrix.projection };\nPARAM mvMatrix[4] = { state.matrix.modelview };\nPARAM ivMatrix[4] = { state.matrix.texture[1] };\nPARAM fNoise[64] = { program.local[0..63] };\nTEMP noise, clipPos, viewPos, worldPos;\nADDRESS noiseAddr;\nDP4 viewPos.x, mvMatrix[0], iPos;\nDP4 viewPos.y, mvMatrix[1], iPos;\nDP4 viewPos.z, mvMatrix[2], iPos;\nDP4 viewPos.w, mvMatrix[3], iPos;\nDP4 worldPos.x, ivMatrix[0], viewPos;\nDP4 worldPos.y, ivMatrix[1], viewPos;\nDP4 worldPos.z, ivMatrix[2], viewPos;\nDP4 worldPos.w, ivMatrix[3], viewPos;\nADD noise.x, worldPos.x, worldPos.z;SUB noise.y, worldPos.z, worldPos.x;MUL noise, noise, 0.0001220703125;\nFRC noise, noise;\nMUL noise, noise, 64;\nARL noiseAddr.x, noise.x;\nMOV noise.x, fNoise[noiseAddr.x].x;\nARL noiseAddr.x, noise.y;\nMOV noise.y, fNoise[noiseAddr.x].y;\nMUL noise, noise, turbulence.x;\nMAD oTexCoord0, worldPos.xzww, 0.0078125, noise;\nMOV oTexCoord0.w, 1;\nMUL oTexCoord1.xy, worldPos.xzww, 0.0009765625;\nMOV oTexCoord1.zw, time.xxxw;\nDP4 clipPos.x, pMatrix[0], viewPos;\nDP4 clipPos.y, pMatrix[1], viewPos;\nDP4 clipPos.z, pMatrix[2], viewPos;\nDP4 clipPos.w, pMatrix[3], viewPos;\nMUL oColour.xyz, iColour, lightAmbient;\nMOV oColour.w, 1;\nMOV oFogCoord.x, clipPos.z;\nMOV oPos, clipPos; \nEND".length(), "!!ARBvp1.0\nATTRIB iPos = vertex.position;\nATTRIB iColour = vertex.color;\nOUTPUT oPos = result.position;\nOUTPUT oColour = result.color;\nOUTPUT oTexCoord0 = result.texcoord[0];\nOUTPUT oTexCoord1 = result.texcoord[1];\nOUTPUT oFogCoord = result.fogcoord;\nPARAM time = program.local[65];\nPARAM turbulence = program.local[64];\nPARAM lightAmbient = program.local[66]; \nPARAM pMatrix[4] = { state.matrix.projection };\nPARAM mvMatrix[4] = { state.matrix.modelview };\nPARAM ivMatrix[4] = { state.matrix.texture[1] };\nPARAM fNoise[64] = { program.local[0..63] };\nTEMP noise, clipPos, viewPos, worldPos;\nADDRESS noiseAddr;\nDP4 viewPos.x, mvMatrix[0], iPos;\nDP4 viewPos.y, mvMatrix[1], iPos;\nDP4 viewPos.z, mvMatrix[2], iPos;\nDP4 viewPos.w, mvMatrix[3], iPos;\nDP4 worldPos.x, ivMatrix[0], viewPos;\nDP4 worldPos.y, ivMatrix[1], viewPos;\nDP4 worldPos.z, ivMatrix[2], viewPos;\nDP4 worldPos.w, ivMatrix[3], viewPos;\nADD noise.x, worldPos.x, worldPos.z;SUB noise.y, worldPos.z, worldPos.x;MUL noise, noise, 0.0001220703125;\nFRC noise, noise;\nMUL noise, noise, 64;\nARL noiseAddr.x, noise.x;\nMOV noise.x, fNoise[noiseAddr.x].x;\nARL noiseAddr.x, noise.y;\nMOV noise.y, fNoise[noiseAddr.x].y;\nMUL noise, noise, turbulence.x;\nMAD oTexCoord0, worldPos.xzww, 0.0078125, noise;\nMOV oTexCoord0.w, 1;\nMUL oTexCoord1.xy, worldPos.xzww, 0.0009765625;\nMOV oTexCoord1.zw, time.xxxw;\nDP4 clipPos.x, pMatrix[0], viewPos;\nDP4 clipPos.y, pMatrix[1], viewPos;\nDP4 clipPos.z, pMatrix[2], viewPos;\nDP4 clipPos.w, pMatrix[3], viewPos;\nMUL oColour.xyz, iColour, lightAmbient;\nMOV oColour.w, 1;\nMOV oFogCoord.x, clipPos.z;\nMOV oPos, clipPos; \nEND"); + var1.glGetIntegerv('\u864b', var2, 0); + if (var2[0] != -1) { + return; + } + } + + } + + public final void method23(int var1) { + if (this.anInt2186 >= 0) { + GL var2 = HDToolKit.gl; + var2.glActiveTexture('\u84c1'); + if ((var1 & 128) == 0) { + var2.glEnable(Class88.Texture3DEnabled ? '\u806f' : 3553); + } else { + var2.glDisable(Class88.Texture3DEnabled ? '\u806f' : 3553); + } + + var2.glActiveTexture('\u84c0'); + if ((var1 & 64) == 0) { + var2.glGetFloatv(2899, aFloatArray2185, 0); + var2.glProgramLocalParameter4fvARB('\u8620', 66, aFloatArray2185, 0); + } else { + var2.glProgramLocalParameter4fARB('\u8620', 66, 1.0F, 1.0F, 1.0F, 1.0F); + } + + int var3 = var1 & 3; + if (var3 == 2) { + var2.glProgramLocalParameter4fARB('\u8620', 64, 0.05F, 1.0F, 1.0F, 1.0F); + } else if (var3 == 3) { + var2.glProgramLocalParameter4fARB('\u8620', 64, 0.1F, 1.0F, 1.0F, 1.0F); + } else { + var2.glProgramLocalParameter4fARB('\u8620', 64, 0.025F, 1.0F, 1.0F, 1.0F); + } + + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class126.java b/Client/src/main/java/org/runite/client/Class126.java new file mode 100644 index 000000000..01eb662d6 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class126.java @@ -0,0 +1,33 @@ +package org.runite.client; + +import org.rs09.client.data.Queue; + +public final class Class126 { + + static int anInt1665; + static Queue aClass13_1666 = new Queue(); + public static int anInt1676 = 0; + int anInt1663; + int anInt1664; + int anInt1667; + int anInt1670; + int anInt1673; + boolean aBoolean1674; + int anInt1675; + + + Class126(int var1, int var2, int var3, int var4, int var5, int var6, boolean var7) { + try { + this.anInt1667 = var2; + this.anInt1664 = var3; + this.anInt1675 = var1; + this.anInt1673 = var6; + this.aBoolean1674 = var7; + this.anInt1663 = var4; + this.anInt1670 = var5; + } catch (RuntimeException var9) { + throw ClientErrorException.clientError(var9, "rh.(" + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + var5 + ',' + var6 + ',' + var7 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class127_Sub1.java b/Client/src/main/java/org/runite/client/Class127_Sub1.java new file mode 100644 index 000000000..8f37a5580 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class127_Sub1.java @@ -0,0 +1,46 @@ +package org.runite.client; + +import javax.media.opengl.GL; +import java.nio.FloatBuffer; + + +final class Class127_Sub1 extends LoginHandler { + + private static int anInt2682; + + + static void method1755() { + GL var0 = HDToolKit.gl; + if(var0.isExtensionAvailable("GL_ARB_point_parameters")) { + float[] var1 = new float[]{1.0F, 0.0F, 5.0E-4F}; + var0.glPointParameterfvARB('\u8129', var1, 0); + FloatBuffer var2 = FloatBuffer.allocate(1); + var0.glGetFloatv('\u8127', var2); + float var3 = var2.get(0); + if(var3 > 1024.0F) { + var3 = 1024.0F; + } + + var0.glPointParameterfARB('\u8126', 1.0F); + var0.glPointParameterfARB('\u8127', var3); + } + + if(var0.isExtensionAvailable("GL_ARB_point_sprite")) { + } + + } + + static int method1757() { + return anInt2682; + } + + static void method1758(int var0) { + anInt2682 = var0; + } + + static { + new Class128(); + anInt2682 = 2; + new DataBuffer(131056); + } +} diff --git a/Client/src/main/java/org/runite/client/Class128.java b/Client/src/main/java/org/runite/client/Class128.java new file mode 100644 index 000000000..e9a7fa5bf --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class128.java @@ -0,0 +1,174 @@ +package org.runite.client; + +import org.rs09.client.Node; +import org.rs09.client.data.ReferenceCache; + +import java.util.Arrays; + + +final class Class128 { + + static ReferenceCache aReferenceCache_1683 = new ReferenceCache(64); + static boolean aBoolean1685 = true; + + + Class128() { + try { + Node[] aClass3_Sub28Array1684 = new Node[8]; + + for (int var2 = 0; 8 > var2; ++var2) { + Node var3 = aClass3_Sub28Array1684[var2] = new Node(); + var3.previousNode = var3; + var3.nextNode = var3; + } + + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "rm.(" + 8 + ')'); + } + } + + static void method1760(int var0, int var2) { + try { + if (WorldListCountry.localPlane > 3 || WorldListCountry.localPlane < 0) { + System.err.println("Local plane " + WorldListCountry.localPlane + " is out of bounds - rendering log=" + Arrays.toString(PlayerRendering.PLAYER_RENDER_LOG) + "!"); + WorldListCountry.localPlane %= 4; + } + LinkedList var3 = Class39.groundItems[WorldListCountry.localPlane][var2][var0]; + if (var3 == null) { + ObjectDefinition.method1688(WorldListCountry.localPlane, var2, var0); + } else { + int var4 = -99999999; + GroundItemLink var5 = null; + + GroundItemLink var6; + for (var6 = (GroundItemLink) var3.startIteration(); null != var6; var6 = (GroundItemLink) var3.nextIteration()) { + ItemDefinition var7 = ItemDefinition.getItemDefinition(var6.aGroundItem_3676.itemId); + int var8 = var7.value; + if (var7.stackingType == 1) { + var8 *= 1 + var6.aGroundItem_3676.quantity; + } + + if (var4 < var8) { + var4 = var8; + var5 = var6; + } + } + + if (null == var5) { + ObjectDefinition.method1688(WorldListCountry.localPlane, var2, var0); + } else { + var3.method1216(var5); + GroundItem var12 = null; + GroundItem var14 = null; + + for (var6 = (GroundItemLink) var3.startIteration(); var6 != null; var6 = (GroundItemLink) var3.nextIteration()) { + GroundItem var9 = var6.aGroundItem_3676; + if (var5.aGroundItem_3676.itemId != var9.itemId) { + if (null == var12) { + var12 = var9; + } + + if (var12.itemId != var9.itemId && null == var14) { + var14 = var9; + } + } + } + + long var13 = 1610612736 + (var0 << 7) + var2; + TextureOperation30.method213(WorldListCountry.localPlane, var2, var0, Scenery.sceneryPositionHash(WorldListCountry.localPlane, 1, 64 + 128 * var2, 64 + var0 * 128), var5.aGroundItem_3676, var13, var12, var14); + } + } + } catch (RuntimeException var11) { + throw ClientErrorException.clientError(var11, "rm.E(" + var0 + ',' + (byte) 65 + ',' + var2 + ')'); + } + } + + static Model method1763(int var1, int var2, int var3, int var4, Model var5, int var6) { + try { + Model var9 = (Model) LinkedList.aReferenceCache_939.get(var3); + if (var9 == null) { + Model_Sub1 var10 = Model_Sub1.method2015(CacheIndex.modelsIndex, var3); + if (var10 == null) { + return null; + } + + var9 = var10.method2008(64, 768, -50, -10, -50); + LinkedList.aReferenceCache_939.put(var9, var3); + } + + int var17 = var5.method1884(); + int var11 = var5.method1883(); + int var12 = var5.method1898(); + int var13 = var5.method1872(); + var9 = var9.method1882(true, true, true); + if (var1 != 0) { + var9.method1876(var1); + } + + int var15; + if (HDToolKit.highDetail) { + Class140_Sub1_Sub1 var14 = (Class140_Sub1_Sub1) var9; + if (var6 != Scenery.sceneryPositionHash(WorldListCountry.localPlane, 1, var4 + var17, var2 + var12) || var6 != Scenery.sceneryPositionHash(WorldListCountry.localPlane, 1, var4 - -var11, var13 + var2)) { + for (var15 = 0; var14.anInt3823 > var15; ++var15) { + var14.anIntArray3845[var15] += Scenery.sceneryPositionHash(WorldListCountry.localPlane, 1, var14.anIntArray3822[var15] + var4, var14.anIntArray3848[var15] + var2) - var6; + } + + var14.aClass121_3839.aBoolean1640 = false; + var14.aClass6_3835.aBoolean98 = false; + } + } else { + Class140_Sub1_Sub2 var18 = (Class140_Sub1_Sub2) var9; + if (var6 != Scenery.sceneryPositionHash(WorldListCountry.localPlane, 1, var17 + var4, var12 + var2) || var6 != Scenery.sceneryPositionHash(WorldListCountry.localPlane, 1, var4 - -var11, var13 + var2)) { + for (var15 = 0; var18.anInt3891 > var15; ++var15) { + var18.anIntArray3883[var15] += Scenery.sceneryPositionHash(WorldListCountry.localPlane, 1, var4 + var18.anIntArray3885[var15], var18.anIntArray3895[var15] + var2) - var6; + } + + var18.aBoolean3897 = false; + } + } + + return var9; + } catch (RuntimeException var16) { + throw ClientErrorException.clientError(var16, "rm.D(" + true + ',' + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + (var5 != null ? "{...}" : "null") + ',' + var6 + ')'); + } + } + + static void method1764() { + for (int var3 = 0; var3 < Class3_Sub17.anInt2456; ++var3) { + for (int var4 = 0; var4 < Unsorted.width1234; ++var4) { + for (int var5 = 0; var5 < TextureOperation17.height3179; ++var5) { + TileData var6 = TileData.aTileDataArrayArrayArray2638[var3][var4][var5]; + if (var6 != null) { + Class70 var7 = var6.aClass70_2234; + if (var7 != null && var7.aClass140_1049.method1865()) { + TextureOperation30.method214(var7.aClass140_1049, var3, var4, var5, 1, 1); + if (var7.aClass140_1052 != null && var7.aClass140_1052.method1865()) { + TextureOperation30.method214(var7.aClass140_1052, var3, var4, var5, 1, 1); + var7.aClass140_1049.method1866(var7.aClass140_1052, 0, 0, 0, false); + var7.aClass140_1052 = var7.aClass140_1052.method1861(); + } + + var7.aClass140_1049 = var7.aClass140_1049.method1861(); + } + + for (int var8 = 0; var8 < var6.anInt2223; ++var8) { + Class25 var9 = var6.aClass25Array2221[var8]; + if (var9 != null && var9.aClass140_479.method1865()) { + TextureOperation30.method214(var9.aClass140_479, var3, var4, var5, var9.anInt495 - var9.anInt483 + 1, var9.anInt481 - var9.anInt478 + 1); + var9.aClass140_479 = var9.aClass140_479.method1861(); + } + } + + Class12 var10 = var6.aClass12_2230; + if (var10 != null && var10.object.method1865()) { + AudioChannel.method2162(var10.object, var3, var4, var5); + var10.object = var10.object.method1861(); + } + } + } + } + } + + } + +} diff --git a/Client/src/main/java/org/runite/client/Class129.java b/Client/src/main/java/org/runite/client/Class129.java new file mode 100644 index 000000000..56130df8b --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class129.java @@ -0,0 +1,387 @@ +package org.runite.client; + +import org.rs09.client.rendering.Toolkit; + +abstract class Class129 { + + static int[] anIntArray1690; + static int anInt1692 = 0; + static int[] anIntArray1693 = new int[128]; + static int[] anIntArray1695; + + + static int method1765(int var0) { + try { + return var0 >>> 7; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "s.D(" + var0 + ')'); + } + } + + static void method1768(int var0, int var2) { + try { + if (KeyboardListener.anInt1908 > 0) { + Class159.method2195(KeyboardListener.anInt1908); + KeyboardListener.anInt1908 = 0; + } + + short var3 = 256; + int var4 = 0; + int var5 = Toolkit.JAVA_TOOLKIT.width * var2; + int var6 = 0; + + for (int var7 = 1; var7 < var3 + -1; ++var7) { + int var8 = (var3 - var7) * Class3_Sub28_Sub5.anIntArray3592[var7] / var3; + if (0 > var8) { + var8 = 0; + } + + var4 += var8; + + int var9; + for (var9 = var8; var9 < 128; ++var9) { + int var11 = Toolkit.JAVA_TOOLKIT.getBuffer()[var5++ + var0]; + int var10 = Class159.anIntArray1681[var4++]; + if (var10 == 0) { + Class84.aSoftwareSprite_1381.anIntArray4081[var6++] = var11; + } else { + int var12 = 18 + var10; + if (var12 > 255) { + var12 = 255; + } + + int var13 = 256 - var10 - 18; + if (var13 > 255) { + var13 = 255; + } + + var10 = Class52.anIntArray861[var10]; + Class84.aSoftwareSprite_1381.anIntArray4081[var6++] = Unsorted.bitwiseAnd(var13 * Unsorted.bitwiseAnd(var11, 16711935) + Unsorted.bitwiseAnd(16711935, var10) * var12, -16711936) - -Unsorted.bitwiseAnd(Unsorted.bitwiseAnd(var10, 65280) * var12 - -(Unsorted.bitwiseAnd(65280, var11) * var13), 16711680) >> 8; + } + } + + for (var9 = 0; var9 < var8; ++var9) { + Class84.aSoftwareSprite_1381.anIntArray4081[var6++] = Toolkit.JAVA_TOOLKIT.getBuffer()[var0 + var5++]; + } + + var5 += Toolkit.JAVA_TOOLKIT.width + -128; + } + + if (HDToolKit.highDetail) { + Class22.method926(Class84.aSoftwareSprite_1381.anIntArray4081, var0, var2, Class84.aSoftwareSprite_1381.width, Class84.aSoftwareSprite_1381.height); + } else { + Class84.aSoftwareSprite_1381.method635(var0, var2); + } + + } catch (RuntimeException var14) { + throw ClientErrorException.clientError(var14, "s.F(" + var0 + ',' + 95 + ',' + var2 + ')'); + } + } + + static void method1769(float[][] var0, byte[][] var1, byte[][] var2, Class43[] var3, int var4, int var5, float[][] var6, byte[][] var7, byte[][] var8, int[][] var9, float[][] var11) { + try { + for (int var12 = 0; var5 > var12; ++var12) { + Class43 var13 = var3[var12]; + if (var13.anInt704 == var4) { + int var15 = 0; + Class37 var14 = new Class37(); + int var16 = -var13.anInt698 + (var13.anInt703 >> 7); + int var17 = -var13.anInt698 + (var13.anInt708 >> 7); + if (var17 < 0) { + var15 -= var17; + var17 = 0; + } + + int var18 = var13.anInt698 + (var13.anInt708 >> 7); + if (var18 > 103) { + var18 = 103; + } + + int var19; + int var21; + short var20; + int var23; + int var22; + int var25; + int var35; + boolean var32; + for (var19 = var17; var19 <= var18; ++var19) { + var20 = var13.aShortArray706[var15]; + var21 = var16 + (var20 >> 8); + var22 = -1 + var21 - -(255 & var20); + if (103 < var22) { + var22 = 103; + } + + if (var21 < 0) { + var21 = 0; + } + + for (var23 = var21; var23 <= var22; ++var23) { + int var24 = 255 & var1[var23][var19]; + var25 = 255 & var8[var23][var19]; + boolean var26 = false; + FloorOverlayDefinition var27; + int[] var29; + int[] var28; + if (0 == var24) { + if (var25 == 0) { + continue; + } + + var27 = FloorOverlayDefinition.getFile(var25 + -1); + if (var27.anInt2103 == -1) { + continue; + } + + if (var7[var23][var19] != 0) { + var28 = Class134.anIntArrayArray1763[var7[var23][var19]]; + var14.anInt651 += 3 * (-2 + (var28.length >> 1)); + var14.anInt657 += var28.length >> 1; + continue; + } + } else if (var25 != 0) { + var27 = FloorOverlayDefinition.getFile(var25 - 1); + byte var42; + if (var27.anInt2103 == -1) { + var42 = var7[var23][var19]; + if (var42 != 0) { + var29 = Class25.anIntArrayArray499[var42]; + var14.anInt651 += 3 * (-2 + (var29.length >> 1)); + var14.anInt657 += var29.length >> 1; + } + continue; + } + + var42 = var7[var23][var19]; + if (0 != var42) { + var26 = true; + } + } + + Class25 var40 = Class75.method1336(var4, var23, var19); + if (null != var40) { + int var41 = (int) (var40.aLong498 >> 14) & 63; + if (var41 == 9) { + var29 = null; + int var30 = 3 & (int) (var40.aLong498 >> 20); + boolean var31; + int var34; + short var33; + if ((1 & var30) == 0) { + var32 = var22 >= 1 + var23; + var31 = var23 + -1 >= var21; + if (!var31 && var18 >= var19 - -1) { + var33 = var13.aShortArray706[1 + var15]; + var34 = var16 + (var33 >> 8); + var35 = var34 + (255 & var33); + var31 = var34 < var23 && var23 < var35; + } + + if (!var32 && -1 + var19 >= var17) { + var33 = var13.aShortArray706[var15 + -1]; + var34 = var16 + (var33 >> 8); + var35 = var34 - -(var33 & 0xFF); + var32 = var23 > var34 && var35 > var23; + } + + } else { + var31 = var21 <= -1 + var23; + var32 = var22 >= var23 + 1; + if (!var31 && -1 + var19 >= var17) { + var33 = var13.aShortArray706[-1 + var15]; + var34 = (var33 >> 8) + var16; + var35 = var34 + (255 & var33); + var31 = var23 > var34 && var35 > var23; + } + + if (!var32 && var18 >= 1 + var19) { + var33 = var13.aShortArray706[var15 + 1]; + var34 = (var33 >> 8) + var16; + var35 = var34 - -(255 & var33); + var32 = var23 > var34 && var23 < var35; + } + + } + if (var31 && var32) { + var29 = Class134.anIntArrayArray1763[0]; + } else if (var31) { + var29 = Class134.anIntArrayArray1763[1]; + } else if (var32) { + var29 = Class134.anIntArrayArray1763[1]; + } + + if (null != var29) { + var14.anInt651 += 3 * (var29.length >> 1) - 6; + var14.anInt657 += var29.length >> 1; + } + continue; + } + } + + if (var26) { + var29 = Class25.anIntArrayArray499[var7[var23][var19]]; + var28 = Class134.anIntArrayArray1763[var7[var23][var19]]; + var14.anInt651 += (-2 + (var28.length >> 1)) * 3; + var14.anInt651 += ((var29.length >> 1) - 2) * 3; + var14.anInt657 += var28.length >> 1; + var14.anInt657 += var29.length >> 1; + } else { + var28 = Class134.anIntArrayArray1763[0]; + var14.anInt651 += (-2 + (var28.length >> 1)) * 3; + var14.anInt657 += var28.length >> 1; + } + } + + ++var15; + } + + var15 = 0; + var14.method1020(); + if (-var13.anInt698 + (var13.anInt708 >> 7) < 0) { + var15 -= -var13.anInt698 + (var13.anInt708 >> 7); + } + + for (var19 = var17; var19 <= var18; ++var19) { + var20 = var13.aShortArray706[var15]; + var21 = (var20 >> 8) + var16; + var22 = -1 + (255 & var20) + var21; + if (var22 > 103) { + var22 = 103; + } + + if (0 > var21) { + var21 = 0; + } + + for (var23 = var21; var22 >= var23; ++var23) { + int var43 = 255 & var8[var23][var19]; + var25 = 255 & var1[var23][var19]; + byte var38 = var2[var23][var19]; + boolean var39 = false; + FloorOverlayDefinition var46; + if (var25 == 0) { + if (0 == var43) { + continue; + } + + var46 = FloorOverlayDefinition.getFile(var43 - 1); + if (-1 == var46.anInt2103) { + continue; + } + + if (var7[var23][var19] != 0) { + TextureOperation18.method284(var0, var9, var23, var6, var19, Class134.anIntArrayArray1763[var7[var23][var19]], var14, (byte) -88, var13, var11, var2[var23][var19]); + continue; + } + } else if (var43 != 0) { + var46 = FloorOverlayDefinition.getFile(-1 + var43); + if (-1 == var46.anInt2103) { + TextureOperation18.method284(var0, var9, var23, var6, var19, Class25.anIntArrayArray499[var7[var23][var19]], var14, (byte) 116, var13, var11, var2[var23][var19]); + continue; + } + + byte var48 = var7[var23][var19]; + if (var48 != 0) { + var39 = true; + } + } + + Class25 var44 = Class75.method1336(var4, var23, var19); + if (null != var44) { + int var49 = (int) (var44.aLong498 >> 14) & 63; + if (9 == var49) { + int[] var45 = null; + int var47 = 3 & (int) (var44.aLong498 >> 20); + int var36; + boolean var51; + short var50; + if ((1 & var47) == 0) { + var32 = var21 <= -1 + var23; + var51 = var23 + 1 <= var22; + if (!var32 && var18 >= var19 - -1) { + var50 = var13.aShortArray706[1 + var15]; + var35 = (var50 >> 8) + var16; + var36 = (var50 & 0xFF) + var35; + var32 = var23 > var35 && var23 < var36; + } + + if (!var51 && var19 - 1 >= var17) { + var50 = var13.aShortArray706[-1 + var15]; + var35 = var16 + (var50 >> 8); + var36 = (255 & var50) + var35; + var51 = var35 < var23 && var23 < var36; + } + + if (var32 && var51) { + var45 = Class134.anIntArrayArray1763[0]; + } else if (var32) { + var45 = Class134.anIntArrayArray1763[1]; + var38 = 1; + } else if (var51) { + var45 = Class134.anIntArrayArray1763[1]; + var38 = 3; + } + } else { + var32 = var23 - 1 >= var21; + var51 = var22 >= 1 + var23; + if (!var32 && var17 <= var19 - 1) { + var50 = var13.aShortArray706[var15 - 1]; + var35 = var16 + (var50 >> 8); + var36 = (255 & var50) + var35; + var32 = var23 > var35 && var36 > var23; + } + + if (!var51 && var19 + 1 <= var18) { + var50 = var13.aShortArray706[var15 - -1]; + var35 = var16 + (var50 >> 8); + var36 = (255 & var50) + var35; + var51 = var23 > var35 && var23 < var36; + } + + if (var32 && var51) { + var45 = Class134.anIntArrayArray1763[0]; + } else if (var32) { + var38 = 0; + var45 = Class134.anIntArrayArray1763[1]; + } else if (var51) { + var45 = Class134.anIntArrayArray1763[1]; + var38 = 2; + } + } + + if (null != var45) { + TextureOperation18.method284(var0, var9, var23, var6, var19, var45, var14, (byte) 98, var13, var11, var38); + } + continue; + } + } + + if (var39) { + TextureOperation18.method284(var0, var9, var23, var6, var19, Class25.anIntArrayArray499[var7[var23][var19]], var14, (byte) 96, var13, var11, var2[var23][var19]); + TextureOperation18.method284(var0, var9, var23, var6, var19, Class134.anIntArrayArray1763[var7[var23][var19]], var14, (byte) -117, var13, var11, var2[var23][var19]); + } else { + TextureOperation18.method284(var0, var9, var23, var6, var19, Class134.anIntArrayArray1763[0], var14, (byte) 61, var13, var11, var38); + } + } + + ++var15; + } + + if (var14.anInt653 > 0 && var14.anInt655 > 0) { + var14.method1019(); + var13.aClass37_712 = var14; + } + } + } + + } catch (RuntimeException var37) { + throw ClientErrorException.clientError(var37, "s.C(" + (var0 != null ? "{...}" : "null") + ',' + (var1 != null ? "{...}" : "null") + ',' + (var2 != null ? "{...}" : "null") + ',' + (var3 != null ? "{...}" : "null") + ',' + var4 + ',' + var5 + ',' + (var6 != null ? "{...}" : "null") + ',' + (var7 != null ? "{...}" : "null") + ',' + (var8 != null ? "{...}" : "null") + ',' + (var9 != null ? "{...}" : "null") + ',' + -8771 + ',' + (var11 != null ? "{...}" : "null") + ')'); + } + } + + abstract int method1767(int var1, int var2, int var3); + + abstract void method1770(); + +} diff --git a/Client/src/main/java/org/runite/client/Class129_Sub1.java b/Client/src/main/java/org/runite/client/Class129_Sub1.java new file mode 100644 index 000000000..db7ab375b --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class129_Sub1.java @@ -0,0 +1,103 @@ +package org.runite.client; + +final class Class129_Sub1 extends Class129 { + + private long aLong2683; + private int anInt2685; + private int anInt2688; + static AbstractSprite[] aAbstractSpriteArray2690; + private int anInt2691; + private int anInt2692; + static int anInt2693 = 0; + private final long[] aLongArray2694 = new long[10]; + static int[] anIntArray2696 = new int[2]; + + + final void method1770() { + try { + int var2; + for (var2 = 0; var2 < 10; ++var2) { + this.aLongArray2694[var2] = 0L; + } + + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "lj.A(" + -124 + ')'); + } + } + + final int method1767(int var1, int var2, int var3) { + try { + if (var1 != -1) { + this.method1767(-14, 83, 10); + } + + int var5 = this.anInt2691; + int var4 = this.anInt2688; + this.anInt2688 = 300; + this.anInt2691 = 1; + this.aLong2683 = TimeUtils.time(); + if (this.aLongArray2694[this.anInt2685] == 0L) { + this.anInt2688 = var4; + this.anInt2691 = var5; + } else if (this.aLongArray2694[this.anInt2685] < this.aLong2683) { + this.anInt2688 = (int) ((long) (var3 * 2560) / (this.aLong2683 + -this.aLongArray2694[this.anInt2685])); + } + + if (this.anInt2688 < 25) { + this.anInt2688 = 25; + } + + if (256 < this.anInt2688) { + this.anInt2688 = 256; + this.anInt2691 = (int) (-((this.aLong2683 - this.aLongArray2694[this.anInt2685]) / 10L) + (long) var3); + } + + if (this.anInt2691 > var3) { + this.anInt2691 = var3; + } + + this.aLongArray2694[this.anInt2685] = this.aLong2683; + this.anInt2685 = (1 + this.anInt2685) % 10; + int var6; + if (this.anInt2691 > 1) { + for (var6 = 0; var6 < 10; ++var6) { + if (this.aLongArray2694[var6] != 0L) { + this.aLongArray2694[var6] += this.anInt2691; + } + } + } + + if (var2 > this.anInt2691) { + this.anInt2691 = var2; + } + + TimeUtils.sleep(this.anInt2691); + + for (var6 = 0; 256 > this.anInt2692; ++var6) { + this.anInt2692 += this.anInt2688; + } + + this.anInt2692 &= 255; + return var6; + } catch (RuntimeException var7) { + throw ClientErrorException.clientError(var7, "lj.B(" + var1 + ',' + var2 + ',' + var3 + ')'); + } + } + + Class129_Sub1() { + try { + this.anInt2688 = 256; + this.anInt2691 = 1; + this.anInt2692 = 0; + this.aLong2683 = TimeUtils.time(); + + for (int var1 = 0; var1 < 10; ++var1) { + this.aLongArray2694[var1] = this.aLong2683; + } + + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "lj.()"); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class129_Sub2.java b/Client/src/main/java/org/runite/client/Class129_Sub2.java new file mode 100644 index 000000000..4b9a329c0 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class129_Sub2.java @@ -0,0 +1,38 @@ +package org.runite.client; + +final class Class129_Sub2 extends Class129 { + + private long aLong2698 = System.nanoTime(); + + + final void method1770() { + this.aLong2698 = System.nanoTime(); + } + + final int method1767(int var1, int var2, int var3) { + if(var1 == -1) { + long var4 = 1000000L * (long)var2; + long var6 = this.aLong2698 - System.nanoTime(); + if(var6 < var4) { + var6 = var4; + } + + TimeUtils.sleep(var6 / 1000000L); + int var10 = 0; + + long var8; + for(var8 = System.nanoTime(); var10 < 10 && (var10 < 1 || this.aLong2698 < var8); this.aLong2698 += 1000000L * (long)var3) { + ++var10; + } + + if(var8 > this.aLong2698) { + this.aLong2698 = var8; + } + + return var10; + } else { + return 37; + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class131.java b/Client/src/main/java/org/runite/client/Class131.java new file mode 100644 index 000000000..df34750ea --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class131.java @@ -0,0 +1,131 @@ +package org.runite.client; + +import org.rs09.client.config.GameConfig; + +public final class Class131 { + + public static int x1716; + static RSString password = RSString.parse(""); + static RSString username = RSString.parse(""); + static int anInt1719 = -1; + static CacheIndex skeletonsReferenceIndex; + public short[] yArray1718; + public int anInt1720; + public RSString[] aStringArray1721; + public int[] anIntArray1725; + public short[] xArray1727; + byte[] aByteArray1730; + + Class131(int var1) { + try { + this.anInt1720 = var1; + this.aStringArray1721 = new RSString[this.anInt1720]; + this.yArray1718 = new short[this.anInt1720]; + this.anIntArray1725 = new int[this.anInt1720]; + this.aByteArray1730 = new byte[this.anInt1720]; + this.xArray1727 = new short[this.anInt1720]; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "se.(" + var1 + ')'); + } + } + + static int method1788(int var0, int var1, int var2, int var3, boolean var4) { + try { + if (var4) { + int var5 = 15 & var3; + int var7 = var5 >= 4 ? (var5 != 12 && var5 != 14 ? var1 : var0) : var2; + int var6 = var5 < 8 ? var0 : var2; + return ((var5 & 1) != 0 ? -var6 : var6) - -((2 & var5) != 0 ? -var7 : var7); + } else { + return 127; + } + } catch (RuntimeException var8) { + throw ClientErrorException.clientError(var8, "se.H(" + var0 + ',' + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ')'); + } + } + + static void method1790(int var0, int var1) { + try { + InterfaceWidget var3 = InterfaceWidget.getWidget(5, var0); + var3.flagUpdate(); + var3.anInt3598 = var1; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "se.B(" + var0 + ',' + var1 + ',' + 95 + ')'); + } + } + + static void method1793(RSString var0, RSString var1, int var2) { + try { + password = var1; + Class7.anInt2161 = var2; + username = var0; + if (username.equalsString(RSString.parse("")) || password.equalsString(RSString.parse(""))) { + Client.messageToDisplay = 3; + } else if (CS2Script.userCurrentWorldID == -1) { + Class163_Sub1_Sub1.anInt2246 = 0; + Class163_Sub1_Sub1.anInt1616 = 0; + Client.messageToDisplay = -3; + Class163_Sub1_Sub1.adminLoginStage = 1; + DataBuffer var4 = new DataBuffer(128); + var4.writeByte(10); + var4.writeShort((int) (Math.random() * 99999.0D)); + var4.writeShort(GameConfig.CLIENT_BUILD); + var4.writeLong(username.toLong()); + var4.writeInt((int) (Math.random() * 9.9999999E7D)); + var4.writeString(password); + var4.writeInt((int) (Math.random() * 9.9999999E7D)); + var4.rsaEncrypt(TextureOperation10.EXPONENT, TextureOperation31.MODULUS); + TextureOperation12.outgoingBuffer.index = 0; + TextureOperation12.outgoingBuffer.writeByte(210); + TextureOperation12.outgoingBuffer.writeByte(var4.index); + TextureOperation12.outgoingBuffer.putBytes(var4.buffer, var4.index); + } else { + Class24.method951(); + } + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "se.C(" + (var0 != null ? "{...}" : "null") + ',' + (var1 != null ? "{...}" : "null") + ',' + var2 + ',' + (byte) -38 + ')'); + } + } + + final boolean method1787(int var1) { + try { + + return (this.aByteArray1730[var1] & 8) != 0; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "se.G(" + var1 + ',' + (byte) -124 + ')'); + } + } + + public final boolean method1789(int var1, int var2) { + try { + if (var2 != 530) { + this.method1794(-111, 26); + } + + return (4 & this.aByteArray1730[var1]) != 0; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "se.A(" + var1 + ',' + var2 + ')'); + } + } + + public final int method1791(int var1, int var2) { + try { + return var2 != 8 ? 35 : this.aByteArray1730[var1] & 3; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "se.I(" + var1 + ',' + var2 + ')'); + } + } + + final boolean method1794(int var1, int var2) { + try { + if (var2 != -20138) { + method1788(122, 38, -120, -29, false); + } + + return 0 == (this.aByteArray1730[var1] & 16); + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "se.E(" + var1 + ',' + var2 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class132.java b/Client/src/main/java/org/runite/client/Class132.java new file mode 100644 index 000000000..8f3f359cd --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class132.java @@ -0,0 +1,78 @@ +package org.runite.client; + +import org.rs09.client.config.GameConfig; + +final class Class132 { + + static int anInt1734 = 0; + static RSString[] aStringArray1739 = new RSString[1000]; + static int anInt1741; + + + static void method1799(byte var0, CacheIndex var1) { + try { + TextureOperation27.configurationsIndex_3098 = var1; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "sf.C(" + var0 + ',' + (var1 != null ? "{...}" : "null") + ')'); + } + } + + static void method1801() { + try { + int var1 = FontType.bold.method682(RSString.parse(GameConfig.RCM_TITLE)); + int var2; + int var3; + for (var2 = 0; Unsorted.menuOptionCount > var2; ++var2) { + var3 = FontType.bold.method682(Unsorted.method802(var2)); + if (var3 > var1) { + var1 = var3; + } + } + var2 = 15 * Unsorted.menuOptionCount + 21; + int var4 = Class38_Sub1.anInt2612; + var1 += 8; + var3 = NPCDefinition.anInt1297 + -(var1 / 2); + if (GroundItem.canvasHeight < var4 + var2) { + var4 = GroundItem.canvasHeight + -var2; + } + + if (Class23.canvasWidth < var3 + var1) { + var3 = -var1 + Class23.canvasWidth; + } + + if (var3 < 0) { + var3 = 0; + } + + if (var4 < 0) { + var4 = 0; + } + + if (Unsorted.anInt3660 == 1) { + if (TextureOperation8.anInt3460 == NPCDefinition.anInt1297 && Class38_Sub1.anInt2612 == Unsorted.anInt2099) { + Class21.anInt3537 = Unsorted.menuOptionCount * 15 - -(!Unsorted.aBoolean1951 ? 22 : 26); + Unsorted.anInt3660 = 0; + Class21.anInt3395 = var4; + Class21.anInt1462 = var3; + Class38_Sub1.aBoolean2615 = true; + Class21.anInt3552 = var1; + } + } else if (Class163_Sub1.anInt2993 == NPCDefinition.anInt1297 && Class38_Sub1.anInt2614 == Class38_Sub1.anInt2612) { + Class21.anInt1462 = var3; + Unsorted.anInt3660 = 0; + Class21.anInt3552 = var1; + Class21.anInt3395 = var4; + Class21.anInt3537 = (Unsorted.aBoolean1951 ? 26 : 22) + Unsorted.menuOptionCount * 15; + Class38_Sub1.aBoolean2615 = true; + } else { + Unsorted.anInt2099 = Class38_Sub1.anInt2614; + TextureOperation8.anInt3460 = Class163_Sub1.anInt2993; + Unsorted.anInt3660 = 1; + } + + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "sf.D(" + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class133.java b/Client/src/main/java/org/runite/client/Class133.java new file mode 100644 index 000000000..bf026d204 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class133.java @@ -0,0 +1,60 @@ +package org.runite.client; + +final class Class133 { + + static int[] anIntArray1743 = new int[25]; + static int anInt1748; + static int anInt1753; + static int anInt1754; + static int[] inputTextCodeArray = new int[128]; + int anInt1746; + int anInt1747; + int anInt1750; + int anInt1752; + int anInt1757; + private byte aByte1742; + + + public Class133() { + } + + Class133(DataBuffer var1) { + try { + this.aByte1742 = var1.readSignedByte(); + this.anInt1752 = var1.readUnsignedShort(); + this.anInt1757 = var1.readInt(); + this.anInt1747 = var1.readInt(); + this.anInt1746 = var1.readInt(); + this.anInt1750 = var1.readInt(); + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "sg.(" + (var1 != null ? "{...}" : "null") + ')'); + } + } + + static void method1803() { + try { + Texture.aReferenceCache_1146.clearSoftReferences(); + Class159.aReferenceCache_2016.clearSoftReferences(); + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "sg.D(" + (byte) 22 + ')'); + } + } + + final int method1804() { + try { + + return this.aByte1742 & 7; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "sg.B(" + false + ')'); + } + } + + final int method1805() { + try { + return 8 != (this.aByte1742 & 8) ? 0 : 1; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "sg.C(" + (byte) -33 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class134.java b/Client/src/main/java/org/runite/client/Class134.java new file mode 100644 index 000000000..4838fa147 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class134.java @@ -0,0 +1,62 @@ +package org.runite.client; + +final class Class134 { + + static LinkedList aLinkedList_1758 = new LinkedList(); + static int anInt1759 = 0; + static int anInt1761 = -1; + static int anInt1762 = 0; + static int[][] anIntArrayArray1763 = new int[][]{{0, 128, 0, 0, 128, 0, 128, 128}, {0, 128, 0, 0, 128, 0}, {0, 0, 64, 128, 0, 128}, {128, 128, 64, 128, 128, 0}, {0, 0, 128, 0, 128, 128, 64, 128}, {0, 128, 0, 0, 128, 0, 64, 128}, {64, 128, 0, 128, 0, 0, 64, 0}, {0, 0, 64, 0, 0, 64}, {128, 0, 128, 128, 0, 128, 0, 64, 64, 0}, {0, 128, 0, 0, 32, 64, 64, 96, 128, 128}, {0, 0, 128, 0, 128, 128, 64, 96, 32, 64}, {0, 0, 128, 0, 96, 32, 32, 32}}; + static long[] aLongArray1766 = new long[32]; + + + static void method1808(int var0, boolean var1, int var3, boolean var4) { + try { + Unsorted.method1047(var0, var3, Unsorted.aClass44_Sub1Array3201.length - 1, var4, 0, var1); + + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "sh.C(" + var0 + ',' + var1 + ',' + (byte) 30 + ',' + var3 + ',' + var4 + ')'); + } + } + + static void method1809(int var0, long[] var1, int var2, int var3, Object[] var4) { + try { + if (var2 < 85) { + aLinkedList_1758 = null; + } + + if (var0 > var3) { + int var6 = var3; + int var5 = (var3 - -var0) / 2; + long var7 = var1[var5]; + var1[var5] = var1[var0]; + var1[var0] = var7; + Object var9 = var4[var5]; + var4[var5] = var4[var0]; + var4[var0] = var9; + + for (int var10 = var3; var0 > var10; ++var10) { + if (var7 + (long) (1 & var10) > var1[var10]) { + long var11 = var1[var10]; + var1[var10] = var1[var6]; + var1[var6] = var11; + Object var13 = var4[var10]; + var4[var10] = var4[var6]; + var4[var6++] = var13; + } + } + + var1[var0] = var1[var6]; + var1[var6] = var7; + var4[var0] = var4[var6]; + var4[var6] = var9; + method1809(-1 + var6, var1, 107, var3, var4); + method1809(var0, var1, 89, var6 - -1, var4); + } + + } catch (RuntimeException var14) { + throw ClientErrorException.clientError(var14, "sh.B(" + var0 + ',' + (var1 != null ? "{...}" : "null") + ',' + var2 + ',' + var3 + ',' + (var4 != null ? "{...}" : "null") + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class136.java b/Client/src/main/java/org/runite/client/Class136.java new file mode 100644 index 000000000..4e485932c --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class136.java @@ -0,0 +1,100 @@ +package org.runite.client; + +import org.rs09.client.data.ReferenceCache; + +final class Class136 { + + static LinkedList aLinkedList_1424 = new LinkedList(); + static int anInt1771; + static ReferenceCache aReferenceCache_1772 = new ReferenceCache(64); + static Class64 aClass64_1778; + static short[] aShortArray1779 = new short[256]; + LDIndexedSprite aClass109_Sub1_1770; + GameObject aClass140_1777; + + static void method1814(int var0, int var1, int var2, int var3, int var4, int var8, int var9, int var10) { + try { + int var11 = var2 - var4; + int var13 = -1; + if (AbstractSprite.anInt3704 > 0) { + if (Class3_Sub28_Sub8.anInt3611 <= 10) { + var13 = 5 * Class3_Sub28_Sub8.anInt3611; + } else { + var13 = -((-10 + Class3_Sub28_Sub8.anInt3611) * 5) + 50; + } + } + + int var12 = -var9 + var1; + int var15 = 983040 / var8; + int var16 = 983040 / var3; + + for (int var17 = -var15; var17 < var11 - -var15; ++var17) { + int var18 = - -(var17 * var8) >> 16; + int var19 = var8 * (var17 + 1) >> 16; + int var20 = -var18 + var19; + if (var20 > 0) { + int var21 = var4 + var17 >> 6; + var18 += var0; + if (var21 >= 0 && var21 <= -1 + Class44.anIntArrayArrayArray720.length) { + int[][] var22 = Class44.anIntArrayArrayArray720[var21]; + + for (int var23 = -var16; var23 < var12 - -var16; ++var23) { + int var25 = - -(var3 * (var23 - -1)) >> 16; + int var24 = var23 * var3 >> 16; + int var26 = var25 + -var24; + if (0 < var26) { + var24 += var10; + int var27 = var9 + var23 >> 6; + if (var27 >= 0 && -1 + var22.length >= var27 && null != var22[var27]) { + int var28 = (63 & var17 + var4) + (4032 & var9 + var23 << 6); + int var29 = var22[var27][var28]; + if (var29 != 0) { + ObjectDefinition var14 = ObjectDefinition.getObjectDefinition(-1 + var29); + if (!Class3_Sub24_Sub4.aBooleanArray3503[var14.MapIcon]) { + if (var13 != -1 && Class8.anInt101 == var14.MapIcon) { + Class3_Sub23 var30 = new Class3_Sub23(); + var30.anInt2531 = var18; + var30.anInt2539 = var24; + var30.anInt2532 = var14.MapIcon; + aLinkedList_1424.pushBack(var30); + } else { + GameObject.aSoftwareSpriteArray1839[var14.MapIcon].drawAt(var18 + -7, -7 + var24); + } + } + } + } + } + } + } + } + } + + for (Class3_Sub23 var32 = (Class3_Sub23) aLinkedList_1424.startIteration(); null != var32; var32 = (Class3_Sub23) aLinkedList_1424.nextIteration()) { + Class74.method1330(var32.anInt2531, var32.anInt2539, 15, var13); + Class74.method1330(var32.anInt2531, var32.anInt2539, 13, var13); + Class74.method1330(var32.anInt2531, var32.anInt2539, 11, var13); + Class74.method1330(var32.anInt2531, var32.anInt2539, 9, var13); + GameObject.aSoftwareSpriteArray1839[var32.anInt2532].drawAt(-7 + var32.anInt2531, -7 + var32.anInt2539); + } + + aLinkedList_1424.clear(); + } catch (RuntimeException var31) { + throw ClientErrorException.clientError(var31, "sm.B(" + var0 + ',' + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + 0 + ',' + 0 + ',' + 127 + ',' + var8 + ',' + var9 + ',' + var10 + ')'); + } + } + + static void method1816(int var0, int var1) { + try { + if (var1 == -7) { + Class129_Sub1.anIntArray2696 = new int[var0]; + Class159.anIntArray2021 = new int[var0]; + SequenceDefinition.anIntArray1871 = new int[var0]; + Player.anIntArray3959 = new int[var0]; + Unsorted.anIntArray686 = new int[var0]; + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "sm.C(" + var0 + ',' + var1 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class137.java b/Client/src/main/java/org/runite/client/Class137.java new file mode 100644 index 000000000..4bd9905b1 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class137.java @@ -0,0 +1,60 @@ +package org.runite.client; + +final class Class137 { + + + static int method1817() { + try { + + return !Unsorted.aBoolean1084 ? (!NPC.isHighDetail((byte) 70 ^ 28) ? 1 : (Unsorted.aBoolean3604 ? 2 : 1)) : 0; + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "tc.B(" + (byte) 70 + ')'); + } + } + + static void method1819(int var0, int var1, RSInterface var2, int var4, int var5, int var6, int var7) { + try { + + if (Class158_Sub1.aBoolean2981) { + Class19.anInt433 = 32; + } else { + Class19.anInt433 = 0; + } + + Class158_Sub1.aBoolean2981 = false; + int var8; + if (TextureOperation21.anInt3069 != 0) { + if (var4 >= var5 && var4 < var5 + 16 && var0 >= var6 && var6 - -16 > var0) { + var2.anInt208 -= 4; + Class20.method909(var2); + } else if (var4 >= var5 && 16 + var5 > var4 && var1 + (var6 - 16) <= var0 && var0 < var1 + var6) { + var2.anInt208 += 4; + Class20.method909(var2); + } else if (var5 - Class19.anInt433 <= var4 && var4 < var5 + 16 + Class19.anInt433 && var0 >= 16 + var6 && var1 + var6 - 16 > var0) { + var8 = var1 * (-32 + var1) / var7; + if (8 > var8) { + var8 = 8; + } + + int var10 = -32 + (var1 - var8); + int var9 = -(var8 / 2) + -16 + -var6 + var0; + var2.anInt208 = (-var1 + var7) * var9 / var10; + Class20.method909(var2); + Class158_Sub1.aBoolean2981 = true; + } + } + + if (Class29.anInt561 != 0) { + var8 = var2.width; + if (var4 >= -var8 + var5 && var0 >= var6 && var4 < 16 + var5 && var1 + var6 >= var0) { + var2.anInt208 += 45 * Class29.anInt561; + Class20.method909(var2); + } + } + + } catch (RuntimeException var11) { + throw ClientErrorException.clientError(var11, "tc.A(" + var0 + ',' + var1 + ',' + (var2 != null ? "{...}" : "null") + ',' + (byte) -101 + ',' + var4 + ',' + var5 + ',' + var6 + ',' + var7 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class139.java b/Client/src/main/java/org/runite/client/Class139.java new file mode 100644 index 000000000..577d8df20 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class139.java @@ -0,0 +1,11 @@ +package org.runite.client; + +final class Class139 { + + static int anInt1823; + static int screenLowerX; + static boolean aBoolean1827; + static int anInt1829 = 0; + + +} diff --git a/Client/src/main/java/org/runite/client/Class140_Sub1_Sub1.java b/Client/src/main/java/org/runite/client/Class140_Sub1_Sub1.java new file mode 100644 index 000000000..81342031e --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class140_Sub1_Sub1.java @@ -0,0 +1,3712 @@ +package org.runite.client; + + +import org.rs09.client.config.GameConfig; +import org.rs09.client.util.ArrayUtils; + +import javax.media.opengl.GL; +import java.nio.ByteBuffer; +import java.util.Objects; + +final class Class140_Sub1_Sub1 extends Model { + + private short[] aShortArray3808; + boolean aBoolean3809 = false; + private short[] aShortArray3810; + private short[] aShortArray3811; + private Class156 aClass156_3812; + private short[] aShortArray3813; + private Class121 aClass121_3814; + private Class121 aClass121_3815; + private byte[] aByteArray3816; + private Class121 aClass121_3817; + private static DataBuffer aClass3_Sub30_3818 = new DataBuffer(10000); + private short aShort3819; + private byte[] aByteArray3820; + private static long[] aLongArray3821; + int[] anIntArray3822; + int anInt3823 = 0; + private float[] aFloatArray3824; + private int[][] anIntArrayArray3825; + private short[] aShortArray3826; + private short[] aShortArray3827; + private short[] aShortArray3828; + private int[][] anIntArrayArray3829; + private short[] aShortArray3830; + private short[] aShortArray3831; + private short[] aShortArray3832; + private int anInt3833 = 0; + private static ByteBuffer aByteBuffer3834; + Class6 aClass6_3835; + private byte aByte3836 = 0; + private short[] aShortArray3837; + private int[] anIntArray3838; + Class121 aClass121_3839; + private int[] anIntArray3840; + private short[] aShortArray3841; + private static Class140_Sub1_Sub1 aClass140_Sub1_Sub1_3842 = new Class140_Sub1_Sub1(); + private Class18 aClass18_3843; + private int[] anIntArray3844; + int[] anIntArray3845; + private Class121 aClass121_3846; + private float[] aFloatArray3847; + int[] anIntArray3848; + private short aShort3849; + private static Class140_Sub1_Sub1 aClass140_Sub1_Sub1_3850 = new Class140_Sub1_Sub1(); + private byte aByte3851 = 0; + private int anInt3852 = 0; + private static Class140_Sub1_Sub1 aClass140_Sub1_Sub1_3853 = new Class140_Sub1_Sub1(); + private static Class140_Sub1_Sub1 aClass140_Sub1_Sub1_3854 = new Class140_Sub1_Sub1(); + private static Class140_Sub1_Sub1 aClass140_Sub1_Sub1_3855 = new Class140_Sub1_Sub1(); + private static Class140_Sub1_Sub1 aClass140_Sub1_Sub1_3856 = new Class140_Sub1_Sub1(); + private static int[] anIntArray3857 = new int[1]; + private static float aFloat3858; + private static int anInt3859; + private static float aFloat3860; + private static int[] anIntArray3861 = new int[1]; + private static int anInt3862; + private static float aFloat3863; + private static float aFloat3864; + private static int anInt3865; + private static float aFloat3866; + private static float aFloat3867; + private static boolean aBoolean3868 = false; + + + private static int method1901(float var0, float var1, float var2) { + float var3 = var0 < 0.0F ? -var0 : var0; + float var4 = var1 < 0.0F ? -var1 : var1; + float var5 = var2 < 0.0F ? -var2 : var2; + return var4 > var3 && var4 > var5 ? (var1 > 0.0F ? 0 : 1) : (var5 > var3 && var5 > var4 ? (var2 > 0.0F ? 2 : 3) : (var0 > 0.0F ? 4 : 5)); + } + + final Model method1882(boolean var1, boolean var2, boolean var3) { + return this.method1923(var1, var2, var3, aClass140_Sub1_Sub1_3854, aClass140_Sub1_Sub1_3853); + } + + final void animate(int var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, long var9, int var11, Class127_Sub1 var12) { + if (this.anInt3833 != 0) { + if (!this.aClass6_3835.aBoolean98) { + this.method1917(); + } + + short var13 = this.aClass6_3835.aShort93; + short var14 = this.aClass6_3835.aShort91; + short var15 = this.aClass6_3835.aShort92; + int var16 = var8 * var5 - var6 * var4 >> 16; + int var17 = var7 * var2 + var16 * var3 >> 16; + int var18 = var17 + (var13 * var3 + var15 * var2 >> 16); + if (var18 > 50) { + int var19 = var17 + (-var13 * var3 + var14 * var2 >> 16); + if (var19 < GameConfig.RENDER_DISTANCE_VALUE) { + int var20 = var8 * var4 + var6 * var5 >> 16; + int var21 = var20 + var13 << 9; + if (var21 / var18 > Class139.screenLowerX) { + int var22 = var20 - var13 << 9; + if (var22 / var18 < Class145.screenUpperX) { + int var23 = var7 * var3 - var16 * var2 >> 16; + int var24 = var23 + (var13 * var2 + var15 * var3 >> 16) << 9; + if (var24 / var18 > Class1.screenUpperY) { + int var25 = var23 + (-var13 * var2 + var14 * var3 >> 16) << 9; + if (var25 / var18 < AtmosphereParser.screenLowerY) { + int var26 = 0; + int var27 = 0; + if (var1 != 0) { + var26 = Class51.anIntArray840[var1]; + var27 = Class51.anIntArray851[var1]; + } + + if (var9 > 0L && TextureOperation36.aBoolean3094 && var19 > 0) { + int var28; + int var30; + if (var20 > 0) { + var28 = var22 / var18; + var30 = var21 / var19; + } else { + var28 = var22 / var19; + var30 = var21 / var18; + } + + int var29; + int var31; + if (var23 > 0) { + var29 = var25 / var18; + var31 = var24 / var19; + } else { + var29 = var25 / var19; + var31 = var24 / var18; + } + + if (Unsorted.anInt3642 >= var28 && Unsorted.anInt3642 <= var30 && RenderAnimationDefinition.anInt384 >= var29 && RenderAnimationDefinition.anInt384 <= var31) { + var28 = 999999; + var30 = -999999; + var29 = 999999; + var31 = -999999; + short var32 = this.aClass6_3835.aShort95; + short var33 = this.aClass6_3835.aShort94; + short var34 = this.aClass6_3835.aShort97; + short var35 = this.aClass6_3835.aShort96; + int[] var36 = new int[]{var32, var33, var32, var33, var32, var33, var32, var33}; + int[] var37 = new int[]{var34, var34, var35, var35, var34, var34, var35, var35}; + int[] var38 = new int[]{var14, var14, var14, var14, var15, var15, var15, var15}; + + int var39; + int var42; + int var43; + int var40; + int var41; + int var44; + int var45; + for (var39 = 0; var39 < 8; ++var39) { + var40 = var36[var39]; + var41 = var38[var39]; + var42 = var37[var39]; + if (var1 != 0) { + var43 = var42 * var26 + var40 * var27 >> 16; + var42 = var42 * var27 - var40 * var26 >> 16; + var40 = var43; + } + + var40 += var6; + var41 += var7; + var42 += var8; + var43 = var42 * var4 + var40 * var5 >> 16; + var42 = var42 * var5 - var40 * var4 >> 16; + var40 = var43; + var43 = var41 * var3 - var42 * var2 >> 16; + var42 = var41 * var2 + var42 * var3 >> 16; + if (var42 > 0) { + var44 = (var40 << 9) / var42; + var45 = (var43 << 9) / var42; + if (var44 < var28) { + var28 = var44; + } + + if (var44 > var30) { + var30 = var44; + } + + if (var45 < var29) { + var29 = var45; + } + + if (var45 > var31) { + var31 = var45; + } + } + } + + if (Unsorted.anInt3642 >= var28 && Unsorted.anInt3642 <= var30 && RenderAnimationDefinition.anInt384 >= var29 && RenderAnimationDefinition.anInt384 <= var31) { + if (this.aBoolean2699) { + TextureOperation38.aLongArray3448[Unsorted.anInt59++] = var9; + } else { + if (anIntArray3861.length < this.anInt3833) { + anIntArray3861 = new int[this.anInt3833]; + anIntArray3857 = new int[this.anInt3833]; + } + + var39 = 0; + + label118: + while (true) { + if (var39 >= this.anInt3823) { + var39 = 0; + + while (true) { + if (var39 >= this.anInt3852) { + break label118; + } + + short var53 = this.aShortArray3811[var39]; + short var52 = this.aShortArray3830[var39]; + short var51 = this.aShortArray3831[var39]; + if (this.method1927(Unsorted.anInt3642, RenderAnimationDefinition.anInt384, anIntArray3857[var53], anIntArray3857[var52], anIntArray3857[var51], anIntArray3861[var53], anIntArray3861[var52], anIntArray3861[var51])) { + TextureOperation38.aLongArray3448[Unsorted.anInt59++] = var9; + break label118; + } + + ++var39; + } + } + + var40 = this.anIntArray3822[var39]; + var41 = this.anIntArray3845[var39]; + var42 = this.anIntArray3848[var39]; + if (var1 != 0) { + var43 = var42 * var26 + var40 * var27 >> 16; + var42 = var42 * var27 - var40 * var26 >> 16; + var40 = var43; + } + + var40 += var6; + var41 += var7; + var42 += var8; + var43 = var42 * var4 + var40 * var5 >> 16; + var42 = var42 * var5 - var40 * var4 >> 16; + var40 = var43; + var43 = var41 * var3 - var42 * var2 >> 16; + var42 = var41 * var2 + var42 * var3 >> 16; + if (var42 < 50) { + break; + } + + var44 = (var40 << 9) / var42; + var45 = (var43 << 9) / var42; + int var46 = this.anIntArray3838[var39]; + int var47 = this.anIntArray3838[var39 + 1]; + + for (int var48 = var46; var48 < var47; ++var48) { + int var49 = this.aShortArray3828[var48] - 1; + if (var49 == -1) { + break; + } + + anIntArray3861[var49] = var44; + anIntArray3857[var49] = var45; + } + + ++var39; + } + } + } + } + } + + GL var50 = HDToolKit.gl; + var50.glPushMatrix(); + var50.glTranslatef((float) var6, (float) var7, (float) var8); + var50.glRotatef((float) var1 * 0.17578125F, 0.0F, 1.0F, 0.0F); + this.method1930(); + var50.glRotatef((float) (-var1) * 0.17578125F, 0.0F, 1.0F, 0.0F); + var50.glTranslatef((float) (-var6), (float) (-var7), (float) (-var8)); + var50.glPopMatrix(); + } + } + } + } + } + } + } + } + + final void method1902() { + if (this.aShortArray3810 == null) { + this.method1900(); + } else { + int var1; + for (var1 = 0; var1 < this.anInt3823; ++var1) { + int var2 = this.anIntArray3848[var1]; + this.anIntArray3848[var1] = this.anIntArray3822[var1]; + this.anIntArray3822[var1] = -var2; + } + + for (var1 = 0; var1 < this.anInt3833; ++var1) { + short var3 = this.aShortArray3837[var1]; + this.aShortArray3837[var1] = this.aShortArray3810[var1]; + this.aShortArray3810[var1] = (short) (-var3); + } + + this.aClass6_3835.aBoolean98 = false; + this.aClass121_3839.aBoolean1640 = false; + if (this.aClass121_3815 != null) { + this.aClass121_3815.aBoolean1640 = false; + } + + } + } + + final int method1903() { + return this.aShort3849; + } + + final void method1886(int var1) { + int var2 = Class51.anIntArray840[var1]; + int var3 = Class51.anIntArray851[var1]; + + for (int var4 = 0; var4 < this.anInt3823; ++var4) { + int var5 = this.anIntArray3845[var4] * var2 + this.anIntArray3822[var4] * var3 >> 16; + this.anIntArray3845[var4] = this.anIntArray3845[var4] * var3 - this.anIntArray3822[var4] * var2 >> 16; + this.anIntArray3822[var4] = var5; + } + + this.aClass6_3835.aBoolean98 = false; + this.aClass121_3839.aBoolean1640 = false; + } + + final int method1883() { + if (!this.aClass6_3835.aBoolean98) { + this.method1917(); + } + + return this.aClass6_3835.aShort94; + } + + final int method1872() { + if (!this.aClass6_3835.aBoolean98) { + this.method1917(); + } + + return this.aClass6_3835.aShort96; + } + + final boolean method1865() { + return this.aBoolean3809 && this.anIntArray3822 != null && this.aShortArray3810 != null; + } + + final int method1898() { + if (!this.aClass6_3835.aBoolean98) { + this.method1917(); + } + + return this.aClass6_3835.aShort97; + } + + final void method1897(int var1, int var2, int var3) { + for (int var4 = 0; var4 < this.anInt3823; ++var4) { + this.anIntArray3822[var4] += var1; + this.anIntArray3845[var4] += var2; + this.anIntArray3848[var4] += var3; + } + + this.aClass6_3835.aBoolean98 = false; + this.aClass121_3839.aBoolean1640 = false; + } + + final Model method1890(boolean var1, boolean var2, boolean var3) { + return this.method1923(var1, var2, var3, aClass140_Sub1_Sub1_3856, aClass140_Sub1_Sub1_3855); + } + + private static void method1904(int var0, int var1, int var2, int var3, int var4, int var5, float[] var6, float var7, int var8, float var9) { + var0 -= var3; + var1 -= var4; + var2 -= var5; + float var10 = (float) var0 * var6[0] + (float) var1 * var6[1] + (float) var2 * var6[2]; + float var11 = (float) var0 * var6[3] + (float) var1 * var6[4] + (float) var2 * var6[5]; + float var12 = (float) var0 * var6[6] + (float) var1 * var6[7] + (float) var2 * var6[8]; + float var13 = (float) Math.atan2(var10, var12) / 6.2831855F + 0.5F; + if (var7 != 1.0F) { + var13 *= var7; + } + + float var14 = var11 + 0.5F + var9; + float var15; + if (var8 == 1) { + var15 = var13; + var13 = -var14; + var14 = var15; + } else if (var8 == 2) { + var13 = -var13; + var14 = -var14; + } else if (var8 == 3) { + var15 = var13; + var13 = var14; + var14 = -var15; + } + + aFloat3863 = var13; + aFloat3866 = var14; + } + + final void method1866(GameObject var1, int var2, int var3, int var4, boolean var5) { + Class140_Sub1_Sub1 var6 = (Class140_Sub1_Sub1) var1; + if (this.anInt3852 != 0 && var6.anInt3852 != 0) { + int var7 = var6.anInt3823; + int[] var8 = var6.anIntArray3822; + int[] var9 = var6.anIntArray3845; + int[] var10 = var6.anIntArray3848; + short[] var11 = var6.aShortArray3810; + short[] var12 = var6.aShortArray3826; + short[] var13 = var6.aShortArray3837; + short[] var14 = var6.aShortArray3841; + short[] var15; + short[] var17; + short[] var16; + short[] var18; + if (this.aClass18_3843 == null) { + var15 = null; + var16 = null; + var17 = null; + var18 = null; + } else { + var15 = this.aClass18_3843.aShortArray417; + var16 = this.aClass18_3843.aShortArray419; + var17 = this.aClass18_3843.aShortArray418; + var18 = this.aClass18_3843.aShortArray416; + } + + short[] var19; + short[] var21; + short[] var20; + short[] var22; + if (var6.aClass18_3843 == null) { + var19 = null; + var20 = null; + var21 = null; + var22 = null; + } else { + var19 = var6.aClass18_3843.aShortArray417; + var20 = var6.aClass18_3843.aShortArray419; + var21 = var6.aClass18_3843.aShortArray418; + var22 = var6.aClass18_3843.aShortArray416; + } + + int[] var23 = var6.anIntArray3838; + short[] var24 = var6.aShortArray3828; + if (!var6.aClass6_3835.aBoolean98) { + var6.method1917(); + } + + short var25 = var6.aClass6_3835.aShort91; + short var26 = var6.aClass6_3835.aShort92; + short var27 = var6.aClass6_3835.aShort95; + short var28 = var6.aClass6_3835.aShort94; + short var29 = var6.aClass6_3835.aShort97; + short var30 = var6.aClass6_3835.aShort96; + + for (int var31 = 0; var31 < this.anInt3823; ++var31) { + int var32 = this.anIntArray3845[var31] - var3; + if (var32 >= var25 && var32 <= var26) { + int var33 = this.anIntArray3822[var31] - var2; + if (var33 >= var27 && var33 <= var28) { + int var34 = this.anIntArray3848[var31] - var4; + if (var34 >= var29 && var34 <= var30) { + int var35 = -1; + int var36 = this.anIntArray3838[var31]; + int var37 = this.anIntArray3838[var31 + 1]; + + int var38; + for (var38 = var36; var38 < var37; ++var38) { + var35 = this.aShortArray3828[var38] - 1; + if (var35 == -1 || this.aShortArray3841[var35] != 0) { + break; + } + } + + if (var35 != -1) { + for (var38 = 0; var38 < var7; ++var38) { + if (var33 == var8[var38] && var34 == var10[var38] && var32 == var9[var38]) { + int var39 = -1; + var36 = var23[var38]; + var37 = var23[var38 + 1]; + + for (int var40 = var36; var40 < var37; ++var40) { + var39 = var24[var40] - 1; + if (var39 == -1 || var14[var39] != 0) { + break; + } + } + + if (var39 != -1) { + if (var15 == null) { + this.aClass18_3843 = new Class18(); + var15 = this.aClass18_3843.aShortArray417 = Unsorted.method65(this.aShortArray3810); + var16 = this.aClass18_3843.aShortArray419 = Unsorted.method65(this.aShortArray3826); + var17 = this.aClass18_3843.aShortArray418 = Unsorted.method65(this.aShortArray3837); + var18 = this.aClass18_3843.aShortArray416 = Unsorted.method65(this.aShortArray3841); + } + + if (var19 == null) { + Class18 var47 = var6.aClass18_3843 = new Class18(); + var19 = var47.aShortArray417 = Unsorted.method65(var11); + var20 = var47.aShortArray419 = Unsorted.method65(var12); + var21 = var47.aShortArray418 = Unsorted.method65(var13); + var22 = var47.aShortArray416 = Unsorted.method65(var14); + } + + short var46 = this.aShortArray3810[var35]; + short var41 = this.aShortArray3826[var35]; + short var42 = this.aShortArray3837[var35]; + short var43 = this.aShortArray3841[var35]; + var36 = var23[var38]; + var37 = var23[var38 + 1]; + + int var44; + int var45; + for (var44 = var36; var44 < var37; ++var44) { + var45 = var24[var44] - 1; + if (var45 == -1) { + break; + } + + if (Objects.requireNonNull(var22)[var45] != 0) { + Objects.requireNonNull(var19)[var45] += var46; + Objects.requireNonNull(var20)[var45] += var41; + Objects.requireNonNull(var21)[var45] += var42; + var22[var45] += var43; + } + } + + var46 = var11[var39]; + var41 = var12[var39]; + var42 = var13[var39]; + var43 = var14[var39]; + var36 = this.anIntArray3838[var31]; + var37 = this.anIntArray3838[var31 + 1]; + + for (var44 = var36; var44 < var37; ++var44) { + var45 = this.aShortArray3828[var44] - 1; + if (var45 == -1) { + break; + } + + if (Objects.requireNonNull(var18)[var45] != 0) { + Objects.requireNonNull(var15)[var45] += var46; + Objects.requireNonNull(var16)[var45] += var41; + Objects.requireNonNull(var17)[var45] += var42; + var18[var45] += var43; + } + } + } + } + } + } + } + } + } + } + + } + } + + final void method1893(int var2, int var3, int var4, int var5, int var6, int var7) { + if (this.anInt3833 != 0) { + GL var10 = HDToolKit.gl; + var10.glPushMatrix(); + if (var4 != 0) { + var10.glRotatef((float) var4 * 0.17578125F, 1.0F, 0.0F, 0.0F); + } + + var10.glTranslatef((float) var5, (float) var6, (float) var7); + if (var2 != 0) { + var10.glRotatef((float) var2 * 0.17578125F, 0.0F, 1.0F, 0.0F); + } + + if (var3 != 0) { + var10.glRotatef((float) (-var3) * 0.17578125F, 0.0F, 0.0F, 1.0F); + } + + this.method1930(); + var10.glPopMatrix(); + } + } + + private static int method1905(int var0, short var1, int var2, byte var3) { + int var4 = Class51.anIntArray834[Class140_Sub1_Sub2.method1940(var0, var2)]; + if (var1 != -1) { + int var5 = Class51.anInterface2_838.method19(93, var1 & 65535); + int var6; + int var8; + if (var5 != 0) { + if (var2 < 0) { + var6 = 0; + } else if (var2 > 127) { + var6 = 16777215; + } else { + var6 = 131586 * var2; + } + + if (var5 == 256) { + var4 = var6; + } else { + var8 = 256 - var5; + var4 = ((var6 & 16711935) * var5 + (var4 & 16711935) * var8 & -16711936) + ((var6 & 65280) * var5 + (var4 & 65280) * var8 & 16711680) >> 8; + } + } + + var6 = Class51.anInterface2_838.method10(90, var1 & 65535); + if (var6 != 0) { + var6 += 256; + int var7 = ((var4 & 16711680) >> 16) * var6; + if (var7 > 65535) { + var7 = 65535; + } + + var8 = ((var4 & 65280) >> 8) * var6; + if (var8 > 65535) { + var8 = 65535; + } + + int var9 = (var4 & 0xFF) * var6; + if (var9 > 65535) { + var9 = 65535; + } + + var4 = (var7 << 8 & 16711680) + (var8 & 65280) + (var9 >> 8); + } + } + + return (var4 << 8) + (255 - (var3 & 0xFF)); + } + + private static float[] method1906(int var0, int var1, int var2, int var3, float var4, float var5, float var6) { + float[] var7 = new float[9]; + float[] var8 = new float[9]; + float var9 = (float) Math.cos((float) var3 * 0.024543693F); + float var10 = (float) Math.sin((float) var3 * 0.024543693F); + float var11; + var7[0] = var9; + var7[1] = 0.0F; + var7[2] = var10; + var7[3] = 0.0F; + var7[4] = 1.0F; + var7[5] = 0.0F; + var7[6] = -var10; + var7[7] = 0.0F; + var7[8] = var9; + float[] var12 = new float[9]; + float var13 = 1.0F; + float var14 = 0.0F; + var9 = (float) var1 / 32767.0F; + var10 = -((float) Math.sqrt(1.0F - var9 * var9)); + var11 = 1.0F - var9; + float var15 = (float) Math.sqrt(var0 * var0 + var2 * var2); + if (var15 == 0.0F && var9 == 0.0F) { + var8 = var7; + } else { + if (var15 != 0.0F) { + var13 = (float) (-var2) / var15; + var14 = (float) var0 / var15; + } + + var12[0] = var9 + var13 * var13 * var11; + var12[1] = var14 * var10; + var12[2] = var14 * var13 * var11; + var12[3] = -var14 * var10; + var12[4] = var9; + var12[5] = var13 * var10; + var12[6] = var13 * var14 * var11; + var12[7] = -var13 * var10; + var12[8] = var9 + var14 * var14 * var11; + var8[0] = var7[0] * var12[0] + var7[1] * var12[3] + var7[2] * var12[6]; + var8[1] = var7[0] * var12[1] + var7[1] * var12[4] + var7[2] * var12[7]; + var8[2] = var7[0] * var12[2] + var7[1] * var12[5] + var7[2] * var12[8]; + var8[3] = var7[3] * var12[0] + var7[4] * var12[3] + var7[5] * var12[6]; + var8[4] = var7[3] * var12[1] + var7[4] * var12[4] + var7[5] * var12[7]; + var8[5] = var7[3] * var12[2] + var7[4] * var12[5] + var7[5] * var12[8]; + var8[6] = var7[6] * var12[0] + var7[7] * var12[3] + var7[8] * var12[6]; + var8[7] = var7[6] * var12[1] + var7[7] * var12[4] + var7[8] * var12[7]; + var8[8] = var7[6] * var12[2] + var7[7] * var12[5] + var7[8] * var12[8]; + } + + var8[0] *= var4; + var8[1] *= var4; + var8[2] *= var4; + var8[3] *= var5; + var8[4] *= var5; + var8[5] *= var5; + var8[6] *= var6; + var8[7] *= var6; + var8[8] *= var6; + return var8; + } + + private short method1907(int var2, long var3, int var5, int var6, int var7, int var8, float var9, float var10) { + int var11 = this.anIntArray3838[var2]; + int var12 = this.anIntArray3838[var2 + 1]; + int var13 = 0; + + for (int var14 = var11; var14 < var12; ++var14) { + short var15 = this.aShortArray3828[var14]; + if (var15 == 0) { + var13 = var14; + break; + } + + if (aLongArray3821[var14] == var3) { + return (short) (var15 - 1); + } + } + + this.aShortArray3828[var13] = (short) (this.anInt3833 + 1); + aLongArray3821[var13] = var3; + this.aShortArray3810[this.anInt3833] = (short) var5; + this.aShortArray3826[this.anInt3833] = (short) var6; + this.aShortArray3837[this.anInt3833] = (short) var7; + this.aShortArray3841[this.anInt3833] = (short) var8; + this.aFloatArray3824[this.anInt3833] = var9; + this.aFloatArray3847[this.anInt3833] = var10; + return (short) (this.anInt3833++); + } + + final void method1876(int var1) { + int var2 = Class51.anIntArray840[var1]; + int var3 = Class51.anIntArray851[var1]; + + for (int var4 = 0; var4 < this.anInt3823; ++var4) { + int var5 = this.anIntArray3848[var4] * var2 + this.anIntArray3822[var4] * var3 >> 16; + this.anIntArray3848[var4] = this.anIntArray3848[var4] * var3 - this.anIntArray3822[var4] * var2 >> 16; + this.anIntArray3822[var4] = var5; + } + + this.aClass6_3835.aBoolean98 = false; + this.aClass121_3839.aBoolean1640 = false; + } + + final void method1899(int var1, int[] var2, int var3, int var4, int var5, boolean var6, int var7, int[] var8) { + int var9 = var2.length; + int var10; + int var11; + int var14; + int var15; + int var47; + if (var1 == 0) { + var3 <<= 4; + var4 <<= 4; + var5 <<= 4; + var10 = 0; + anInt3859 = 0; + anInt3865 = 0; + anInt3862 = 0; + + for (var11 = 0; var11 < var9; ++var11) { + var47 = var2[var11]; + if (var47 < this.anIntArrayArray3825.length) { + int[] var48 = this.anIntArrayArray3825[var47]; + + for (var14 = 0; var14 < var48.length; ++var14) { + var15 = var48[var14]; + if (this.aShortArray3832 == null || (var7 & this.aShortArray3832[var15]) != 0) { + anInt3859 += this.anIntArray3822[var15]; + anInt3865 += this.anIntArray3845[var15]; + anInt3862 += this.anIntArray3848[var15]; + ++var10; + } + } + } + } + + if (var10 > 0) { + anInt3859 = anInt3859 / var10 + var3; + anInt3865 = anInt3865 / var10 + var4; + anInt3862 = anInt3862 / var10 + var5; + aBoolean3868 = true; + } else { + anInt3859 = var3; + anInt3865 = var4; + anInt3862 = var5; + } + + } else { + int[] var12; + int var13; + if (var1 == 1) { + if (var8 != null) { + var10 = var8[0] * var3 + var8[1] * var4 + var8[2] * var5 + 16384 >> 15; + var11 = var8[3] * var3 + var8[4] * var4 + var8[5] * var5 + 16384 >> 15; + var47 = var8[6] * var3 + var8[7] * var4 + var8[8] * var5 + 16384 >> 15; + var3 = var10; + var4 = var11; + var5 = var47; + } + + var3 <<= 4; + var4 <<= 4; + var5 <<= 4; + + for (var10 = 0; var10 < var9; ++var10) { + var11 = var2[var10]; + if (var11 < this.anIntArrayArray3825.length) { + var12 = this.anIntArrayArray3825[var11]; + + for (var13 = 0; var13 < var12.length; ++var13) { + var14 = var12[var13]; + if (this.aShortArray3832 == null || (var7 & this.aShortArray3832[var14]) != 0) { + this.anIntArray3822[var14] += var3; + this.anIntArray3845[var14] += var4; + this.anIntArray3848[var14] += var5; + } + } + } + } + + } else { + int var17; + int var16; + int var19; + int var18; + int var21; + int var20; + int var23; + int var22; + int var24; + int var27; + int var26; + int var28; + int var30; + int var34; + int[] var35; + int var32; + int var33; + int var38; + int var39; + int var36; + int var37; + int var40; + if (var1 == 2) { + if (var8 == null) { + for (var10 = 0; var10 < var9; ++var10) { + var11 = var2[var10]; + if (var11 < this.anIntArrayArray3825.length) { + var12 = this.anIntArrayArray3825[var11]; + + for (var13 = 0; var13 < var12.length; ++var13) { + var14 = var12[var13]; + if (this.aShortArray3832 == null || (var7 & this.aShortArray3832[var14]) != 0) { + this.anIntArray3822[var14] -= anInt3859; + this.anIntArray3845[var14] -= anInt3865; + this.anIntArray3848[var14] -= anInt3862; + if (var5 != 0) { + var15 = Class51.anIntArray840[var5]; + var16 = Class51.anIntArray851[var5]; + var17 = this.anIntArray3845[var14] * var15 + this.anIntArray3822[var14] * var16 + 32767 >> 16; + this.anIntArray3845[var14] = this.anIntArray3845[var14] * var16 - this.anIntArray3822[var14] * var15 + 32767 >> 16; + this.anIntArray3822[var14] = var17; + } + + if (var3 != 0) { + var15 = Class51.anIntArray840[var3]; + var16 = Class51.anIntArray851[var3]; + var17 = this.anIntArray3845[var14] * var16 - this.anIntArray3848[var14] * var15 + 32767 >> 16; + this.anIntArray3848[var14] = this.anIntArray3845[var14] * var15 + this.anIntArray3848[var14] * var16 + 32767 >> 16; + this.anIntArray3845[var14] = var17; + } + + if (var4 != 0) { + var15 = Class51.anIntArray840[var4]; + var16 = Class51.anIntArray851[var4]; + var17 = this.anIntArray3848[var14] * var15 + this.anIntArray3822[var14] * var16 + 32767 >> 16; + this.anIntArray3848[var14] = this.anIntArray3848[var14] * var16 - this.anIntArray3822[var14] * var15 + 32767 >> 16; + this.anIntArray3822[var14] = var17; + } + + this.anIntArray3822[var14] += anInt3859; + this.anIntArray3845[var14] += anInt3865; + this.anIntArray3848[var14] += anInt3862; + } + } + } + } + + if (var6 && this.aShortArray3810 != null) { + for (var10 = 0; var10 < var9; ++var10) { + var11 = var2[var10]; + if (var11 < this.anIntArrayArray3825.length) { + var12 = this.anIntArrayArray3825[var11]; + + for (var13 = 0; var13 < var12.length; ++var13) { + var14 = var12[var13]; + if (this.aShortArray3832 == null || (var7 & this.aShortArray3832[var14]) != 0) { + var15 = this.anIntArray3838[var14]; + var16 = this.anIntArray3838[var14 + 1]; + + for (var17 = var15; var17 < var16; ++var17) { + var18 = this.aShortArray3828[var17] - 1; + if (var18 == -1) { + break; + } + + if (var5 != 0) { + var19 = Class51.anIntArray840[var5]; + var20 = Class51.anIntArray851[var5]; + var21 = this.aShortArray3826[var18] * var19 + this.aShortArray3810[var18] * var20 + 32767 >> 16; + this.aShortArray3826[var18] = (short) (this.aShortArray3826[var18] * var20 - this.aShortArray3810[var18] * var19 + 32767 >> 16); + this.aShortArray3810[var18] = (short) var21; + } + + if (var3 != 0) { + var19 = Class51.anIntArray840[var3]; + var20 = Class51.anIntArray851[var3]; + var21 = this.aShortArray3826[var18] * var20 - this.aShortArray3837[var18] * var19 + 32767 >> 16; + this.aShortArray3837[var18] = (short) (this.aShortArray3826[var18] * var19 + this.aShortArray3837[var18] * var20 + 32767 >> 16); + this.aShortArray3826[var18] = (short) var21; + } + + if (var4 != 0) { + var19 = Class51.anIntArray840[var4]; + var20 = Class51.anIntArray851[var4]; + var21 = this.aShortArray3837[var18] * var19 + this.aShortArray3810[var18] * var20 + 32767 >> 16; + this.aShortArray3837[var18] = (short) (this.aShortArray3837[var18] * var20 - this.aShortArray3810[var18] * var19 + 32767 >> 16); + this.aShortArray3810[var18] = (short) var21; + } + } + } + } + } + } + + if (this.aClass121_3815 != null) { + this.aClass121_3815.aBoolean1640 = false; + } + } + } else { + var10 = var8[9] << 4; + var11 = var8[10] << 4; + var47 = var8[11] << 4; + var13 = var8[12] << 4; + var14 = var8[13] << 4; + var15 = var8[14] << 4; + if (aBoolean3868) { + var16 = var8[0] * anInt3859 + var8[3] * anInt3865 + var8[6] * anInt3862 + 16384 >> 15; + var17 = var8[1] * anInt3859 + var8[4] * anInt3865 + var8[7] * anInt3862 + 16384 >> 15; + var18 = var8[2] * anInt3859 + var8[5] * anInt3865 + var8[8] * anInt3862 + 16384 >> 15; + var16 += var13; + var17 += var14; + var18 += var15; + anInt3859 = var16; + anInt3865 = var17; + anInt3862 = var18; + aBoolean3868 = false; + } + + int[] var49 = new int[9]; + var17 = Class51.anIntArray851[var3] >> 1; + var18 = Class51.anIntArray840[var3] >> 1; + var19 = Class51.anIntArray851[var4] >> 1; + var20 = Class51.anIntArray840[var4] >> 1; + var21 = Class51.anIntArray851[var5] >> 1; + var22 = Class51.anIntArray840[var5] >> 1; + var23 = var18 * var21 + 16384 >> 15; + var24 = var18 * var22 + 16384 >> 15; + var49[0] = var19 * var21 + var20 * var24 + 16384 >> 15; + var49[1] = -var19 * var22 + var20 * var23 + 16384 >> 15; + var49[2] = var20 * var17 + 16384 >> 15; + var49[3] = var17 * var22 + 16384 >> 15; + var49[4] = var17 * var21 + 16384 >> 15; + var49[5] = -var18; + var49[6] = -var20 * var21 + var19 * var24 + 16384 >> 15; + var49[7] = var20 * var22 + var19 * var23 + 16384 >> 15; + var49[8] = var19 * var17 + 16384 >> 15; + int var50 = var49[0] * -anInt3859 + var49[1] * -anInt3865 + var49[2] * -anInt3862 + 16384 >> 15; + var26 = var49[3] * -anInt3859 + var49[4] * -anInt3865 + var49[5] * -anInt3862 + 16384 >> 15; + var27 = var49[6] * -anInt3859 + var49[7] * -anInt3865 + var49[8] * -anInt3862 + 16384 >> 15; + var28 = var50 + anInt3859; + int var51 = var26 + anInt3865; + var30 = var27 + anInt3862; + int[] var52 = new int[9]; + + for (var32 = 0; var32 < 3; ++var32) { + for (var33 = 0; var33 < 3; ++var33) { + var34 = 0; + + for (int var53 = 0; var53 < 3; ++var53) { + var34 += var49[var32 * 3 + var53] * var8[var33 * 3 + var53]; + } + + var52[var32 * 3 + var33] = var34 + 16384 >> 15; + } + } + + var32 = var49[0] * var13 + var49[1] * var14 + var49[2] * var15 + 16384 >> 15; + var33 = var49[3] * var13 + var49[4] * var14 + var49[5] * var15 + 16384 >> 15; + var34 = var49[6] * var13 + var49[7] * var14 + var49[8] * var15 + 16384 >> 15; + var32 += var28; + var33 += var51; + var34 += var30; + var35 = new int[9]; + + for (var36 = 0; var36 < 3; ++var36) { + for (var37 = 0; var37 < 3; ++var37) { + var38 = 0; + + for (var39 = 0; var39 < 3; ++var39) { + var38 += var8[var36 * 3 + var39] * var52[var37 + var39 * 3]; + } + + var35[var36 * 3 + var37] = var38 + 16384 >> 15; + } + } + + var36 = var8[0] * var32 + var8[1] * var33 + var8[2] * var34 + 16384 >> 15; + var37 = var8[3] * var32 + var8[4] * var33 + var8[5] * var34 + 16384 >> 15; + var38 = var8[6] * var32 + var8[7] * var33 + var8[8] * var34 + 16384 >> 15; + var36 += var10; + var37 += var11; + var38 += var47; + + for (var39 = 0; var39 < var9; ++var39) { + var40 = var2[var39]; + if (var40 < this.anIntArrayArray3825.length) { + int[] var41 = this.anIntArrayArray3825[var40]; + + for (int var42 = 0; var42 < var41.length; ++var42) { + int var43 = var41[var42]; + if (this.aShortArray3832 == null || (var7 & this.aShortArray3832[var43]) != 0) { + int var44 = var35[0] * this.anIntArray3822[var43] + var35[1] * this.anIntArray3845[var43] + var35[2] * this.anIntArray3848[var43] + 16384 >> 15; + int var45 = var35[3] * this.anIntArray3822[var43] + var35[4] * this.anIntArray3845[var43] + var35[5] * this.anIntArray3848[var43] + 16384 >> 15; + int var46 = var35[6] * this.anIntArray3822[var43] + var35[7] * this.anIntArray3845[var43] + var35[8] * this.anIntArray3848[var43] + 16384 >> 15; + var44 += var36; + var45 += var37; + var46 += var38; + this.anIntArray3822[var43] = var44; + this.anIntArray3845[var43] = var45; + this.anIntArray3848[var43] = var46; + } + } + } + } + } + + } else if (var1 == 3) { + if (var8 == null) { + for (var10 = 0; var10 < var9; ++var10) { + var11 = var2[var10]; + if (var11 < this.anIntArrayArray3825.length) { + var12 = this.anIntArrayArray3825[var11]; + + for (var13 = 0; var13 < var12.length; ++var13) { + var14 = var12[var13]; + if (this.aShortArray3832 == null || (var7 & this.aShortArray3832[var14]) != 0) { + this.anIntArray3822[var14] -= anInt3859; + this.anIntArray3845[var14] -= anInt3865; + this.anIntArray3848[var14] -= anInt3862; + this.anIntArray3822[var14] = this.anIntArray3822[var14] * var3 >> 7; + this.anIntArray3845[var14] = this.anIntArray3845[var14] * var4 >> 7; + this.anIntArray3848[var14] = this.anIntArray3848[var14] * var5 >> 7; + this.anIntArray3822[var14] += anInt3859; + this.anIntArray3845[var14] += anInt3865; + this.anIntArray3848[var14] += anInt3862; + } + } + } + } + } else { + var10 = var8[9] << 4; + var11 = var8[10] << 4; + var47 = var8[11] << 4; + var13 = var8[12] << 4; + var14 = var8[13] << 4; + var15 = var8[14] << 4; + if (aBoolean3868) { + var16 = var8[0] * anInt3859 + var8[3] * anInt3865 + var8[6] * anInt3862 + 16384 >> 15; + var17 = var8[1] * anInt3859 + var8[4] * anInt3865 + var8[7] * anInt3862 + 16384 >> 15; + var18 = var8[2] * anInt3859 + var8[5] * anInt3865 + var8[8] * anInt3862 + 16384 >> 15; + var16 += var13; + var17 += var14; + var18 += var15; + anInt3859 = var16; + anInt3865 = var17; + anInt3862 = var18; + aBoolean3868 = false; + } + + var16 = var3 << 15 >> 7; + var17 = var4 << 15 >> 7; + var18 = var5 << 15 >> 7; + var19 = var16 * -anInt3859 + 16384 >> 15; + var20 = var17 * -anInt3865 + 16384 >> 15; + var21 = var18 * -anInt3862 + 16384 >> 15; + var22 = var19 + anInt3859; + var23 = var20 + anInt3865; + var24 = var21 + anInt3862; + int[] var25 = new int[]{var16 * var8[0] + 16384 >> 15, var16 * var8[3] + 16384 >> 15, var16 * var8[6] + 16384 >> 15, var17 * var8[1] + 16384 >> 15, var17 * var8[4] + 16384 >> 15, var17 * var8[7] + 16384 >> 15, var18 * var8[2] + 16384 >> 15, var18 * var8[5] + 16384 >> 15, var18 * var8[8] + 16384 >> 15}; + var26 = var16 * var13 + 16384 >> 15; + var27 = var17 * var14 + 16384 >> 15; + var28 = var18 * var15 + 16384 >> 15; + var26 += var22; + var27 += var23; + var28 += var24; + int[] var29 = new int[9]; + + int var31; + for (var30 = 0; var30 < 3; ++var30) { + for (var31 = 0; var31 < 3; ++var31) { + var32 = 0; + + for (var33 = 0; var33 < 3; ++var33) { + var32 += var8[var30 * 3 + var33] * var25[var31 + var33 * 3]; + } + + var29[var30 * 3 + var31] = var32 + 16384 >> 15; + } + } + + var30 = var8[0] * var26 + var8[1] * var27 + var8[2] * var28 + 16384 >> 15; + var31 = var8[3] * var26 + var8[4] * var27 + var8[5] * var28 + 16384 >> 15; + var32 = var8[6] * var26 + var8[7] * var27 + var8[8] * var28 + 16384 >> 15; + var30 += var10; + var31 += var11; + var32 += var47; + + for (var33 = 0; var33 < var9; ++var33) { + var34 = var2[var33]; + if (var34 < this.anIntArrayArray3825.length) { + var35 = this.anIntArrayArray3825[var34]; + + for (var36 = 0; var36 < var35.length; ++var36) { + var37 = var35[var36]; + if (this.aShortArray3832 == null || (var7 & this.aShortArray3832[var37]) != 0) { + var38 = var29[0] * this.anIntArray3822[var37] + var29[1] * this.anIntArray3845[var37] + var29[2] * this.anIntArray3848[var37] + 16384 >> 15; + var39 = var29[3] * this.anIntArray3822[var37] + var29[4] * this.anIntArray3845[var37] + var29[5] * this.anIntArray3848[var37] + 16384 >> 15; + var40 = var29[6] * this.anIntArray3822[var37] + var29[7] * this.anIntArray3845[var37] + var29[8] * this.anIntArray3848[var37] + 16384 >> 15; + var38 += var30; + var39 += var31; + var40 += var32; + this.anIntArray3822[var37] = var38; + this.anIntArray3845[var37] = var39; + this.anIntArray3848[var37] = var40; + } + } + } + } + } + + } else if (var1 == 5) { + if (this.anIntArrayArray3829 != null && this.aByteArray3816 != null) { + for (var10 = 0; var10 < var9; ++var10) { + var11 = var2[var10]; + if (var11 < this.anIntArrayArray3829.length) { + var12 = this.anIntArrayArray3829[var11]; + + for (var13 = 0; var13 < var12.length; ++var13) { + var14 = var12[var13]; + if (this.aShortArray3813 == null || (var7 & this.aShortArray3813[var14]) != 0) { + var15 = (this.aByteArray3816[var14] & 0xFF) + var3 * 8; + if (var15 < 0) { + var15 = 0; + } else if (var15 > 255) { + var15 = 255; + } + + this.aByteArray3816[var14] = (byte) var15; + } + } + + if (var12.length > 0) { + this.aClass121_3814.aBoolean1640 = false; + } + } + } + } + + } else if (var1 == 7) { + if (this.anIntArrayArray3829 != null) { + for (var10 = 0; var10 < var9; ++var10) { + var11 = var2[var10]; + if (var11 < this.anIntArrayArray3829.length) { + var12 = this.anIntArrayArray3829[var11]; + + for (var13 = 0; var13 < var12.length; ++var13) { + var14 = var12[var13]; + if (this.aShortArray3813 == null || (var7 & this.aShortArray3813[var14]) != 0) { + var15 = this.aShortArray3808[var14] & 65535; + var16 = var15 >> 10 & 63; + var17 = var15 >> 7 & 7; + var18 = var15 & 127; + var16 = var16 + var3 & 63; + var17 += var4 / 4; + if (var17 < 0) { + var17 = 0; + } else if (var17 > 7) { + var17 = 7; + } + + var18 += var5; + if (var18 < 0) { + var18 = 0; + } else if (var18 > 127) { + var18 = 127; + } + + this.aShortArray3808[var14] = (short) (var16 << 10 | var17 << 7 | var18); + } + } + + if (var12.length > 0) { + this.aClass121_3814.aBoolean1640 = false; + } + } + } + } + + } + } + } + } + + final int method1871() { + if (!this.aClass6_3835.aBoolean98) { + this.method1917(); + } + + return this.aClass6_3835.aShort91; + } + + final void method1908() { + int[] var1; + int var2; + int var3; + int var4; + if (this.anIntArray3844 != null) { + var1 = new int[256]; + var2 = 0; + + for (var3 = 0; var3 < this.anInt3823; ++var3) { + var4 = this.anIntArray3844[var3] & 0xFF; + ++var1[var4]; + if (var4 > var2) { + var2 = var4; + } + } + + this.anIntArrayArray3825 = new int[var2 + 1][]; + + for (var3 = 0; var3 <= var2; ++var3) { + this.anIntArrayArray3825[var3] = new int[var1[var3]]; + var1[var3] = 0; + } + + for (var3 = 0; var3 < this.anInt3823; this.anIntArrayArray3825[var4][var1[var4]++] = var3++) { + var4 = this.anIntArray3844[var3] & 0xFF; + } + + this.anIntArray3844 = null; + } + + if (this.aByteArray3820 != null) { + var1 = new int[256]; + var2 = 0; + + for (var3 = 0; var3 < this.anInt3852; ++var3) { + var4 = this.aByteArray3820[var3] & 0xFF; + ++var1[var4]; + if (var4 > var2) { + var2 = var4; + } + } + + this.anIntArrayArray3829 = new int[var2 + 1][]; + + for (var3 = 0; var3 <= var2; ++var3) { + this.anIntArrayArray3829[var3] = new int[var1[var3]]; + var1[var3] = 0; + } + + for (var3 = 0; var3 < this.anInt3852; this.anIntArrayArray3829[var4][var1[var4]++] = var3++) { + var4 = this.aByteArray3820[var3] & 0xFF; + } + + this.aByteArray3820 = null; + } + + } + + final void method1909(int var1) { + this.aShort3819 = (short) var1; + if (this.aClass121_3815 != null) { + this.aClass121_3815.aBoolean1640 = false; + } + + } + + private static void method1910(int var0, int var1, int var2, int var3, int var4, int var5, float[] var6, int var7, float var8) { + var0 -= var3; + var1 -= var4; + var2 -= var5; + float var9 = (float) var0 * var6[0] + (float) var1 * var6[1] + (float) var2 * var6[2]; + float var10 = (float) var0 * var6[3] + (float) var1 * var6[4] + (float) var2 * var6[5]; + float var11 = (float) var0 * var6[6] + (float) var1 * var6[7] + (float) var2 * var6[8]; + float var12 = (float) Math.sqrt(var9 * var9 + var10 * var10 + var11 * var11); + float var13 = (float) Math.atan2(var9, var11) / 6.2831855F + 0.5F; + float var14 = (float) Math.asin(var10 / var12) / 3.1415927F + 0.5F + var8; + float var15; + if (var7 == 1) { + var15 = var13; + var13 = -var14; + var14 = var15; + } else if (var7 == 2) { + var13 = -var13; + var14 = -var14; + } else if (var7 == 3) { + var15 = var13; + var13 = var14; + var14 = -var15; + } + + aFloat3867 = var13; + aFloat3860 = var14; + } + + final void method1911() { + if (this.aShortArray3810 == null) { + this.method1874(); + } else { + int var1; + for (var1 = 0; var1 < this.anInt3823; ++var1) { + this.anIntArray3822[var1] = -this.anIntArray3822[var1]; + this.anIntArray3848[var1] = -this.anIntArray3848[var1]; + } + + for (var1 = 0; var1 < this.anInt3833; ++var1) { + this.aShortArray3810[var1] = (short) (-this.aShortArray3810[var1]); + this.aShortArray3837[var1] = (short) (-this.aShortArray3837[var1]); + } + + this.aClass6_3835.aBoolean98 = false; + this.aClass121_3839.aBoolean1640 = false; + if (this.aClass121_3815 != null) { + this.aClass121_3815.aBoolean1640 = false; + } + + } + } + + final void resize(int var1, int var2, int var3) { + for (int var4 = 0; var4 < this.anInt3823; ++var4) { + this.anIntArray3822[var4] = this.anIntArray3822[var4] * var1 >> 7; + this.anIntArray3845[var4] = this.anIntArray3845[var4] * var2 >> 7; + this.anIntArray3848[var4] = this.anIntArray3848[var4] * var3 >> 7; + } + + this.aClass6_3835.aBoolean98 = false; + this.aClass121_3839.aBoolean1640 = false; + } + + final Model method1894(boolean var1, boolean var2, boolean var3) { + return this.method1923(var1, var2, var3, aClass140_Sub1_Sub1_3850, aClass140_Sub1_Sub1_3842); + } + + final void method1874() { + for (int var1 = 0; var1 < this.anInt3823; ++var1) { + this.anIntArray3822[var1] = -this.anIntArray3822[var1]; + this.anIntArray3848[var1] = -this.anIntArray3848[var1]; + } + + this.aClass6_3835.aBoolean98 = false; + this.aClass121_3839.aBoolean1640 = false; + } + + private void method1912() { + if (aClass3_Sub30_3818.buffer.length < this.anInt3833 * 12) { + aClass3_Sub30_3818 = new DataBuffer((this.anInt3833 + 100) * 12); + } else { + aClass3_Sub30_3818.index = 0; + } + + int var1; + if (HDToolKit.aBoolean1790) { + for (var1 = 0; var1 < this.anInt3852; ++var1) { + aClass3_Sub30_3818.writeInt(this.aShortArray3811[var1]); + aClass3_Sub30_3818.writeInt(this.aShortArray3830[var1]); + aClass3_Sub30_3818.writeInt(this.aShortArray3831[var1]); + } + } else { + for (var1 = 0; var1 < this.anInt3852; ++var1) { + aClass3_Sub30_3818.writeIntLE(this.aShortArray3811[var1]); + aClass3_Sub30_3818.writeIntLE(this.aShortArray3830[var1]); + aClass3_Sub30_3818.writeIntLE(this.aShortArray3831[var1]); + } + } + + if (HDToolKit.supportVertexBufferObject) { + Class156 var3 = new Class156(); + ByteBuffer var2 = ByteBuffer.wrap(aClass3_Sub30_3818.buffer, 0, aClass3_Sub30_3818.index); + var3.method2172(var2); + this.aClass121_3846.aBoolean1640 = true; + this.aClass121_3846.aByteBuffer1644 = null; + this.aClass121_3846.aClass156_1643 = var3; + } else { + ByteBuffer var4 = ByteBuffer.allocateDirect(aClass3_Sub30_3818.index); + var4.put(aClass3_Sub30_3818.buffer, 0, aClass3_Sub30_3818.index); + var4.flip(); + this.aClass121_3846.aBoolean1640 = true; + this.aClass121_3846.aByteBuffer1644 = var4; + this.aClass121_3846.aClass156_1643 = null; + } + + } + + private static void method1913(int var0, int var1, int var2, int var3, int var4, int var5, int var6, float[] var7, int var8, float var9, float var10, float var11) { + var0 -= var3; + var1 -= var4; + var2 -= var5; + float var12 = (float) var0 * var7[0] + (float) var1 * var7[1] + (float) var2 * var7[2]; + float var13 = (float) var0 * var7[3] + (float) var1 * var7[4] + (float) var2 * var7[5]; + float var14 = (float) var0 * var7[6] + (float) var1 * var7[7] + (float) var2 * var7[8]; + float var15; + float var16; + if (var6 == 0) { + var15 = var12 + var9 + 0.5F; + var16 = -var14 + var11 + 0.5F; + } else if (var6 == 1) { + var15 = var12 + var9 + 0.5F; + var16 = var14 + var11 + 0.5F; + } else if (var6 == 2) { + var15 = -var12 + var9 + 0.5F; + var16 = -var13 + var10 + 0.5F; + } else if (var6 == 3) { + var15 = var12 + var9 + 0.5F; + var16 = -var13 + var10 + 0.5F; + } else if (var6 == 4) { + var15 = var14 + var11 + 0.5F; + var16 = -var13 + var10 + 0.5F; + } else { + var15 = -var14 + var11 + 0.5F; + var16 = -var13 + var10 + 0.5F; + } + + float var17; + if (var8 == 1) { + var17 = var15; + var15 = -var16; + var16 = var17; + } else if (var8 == 2) { + var15 = -var15; + var16 = -var16; + } else if (var8 == 3) { + var17 = var15; + var15 = var16; + var16 = -var17; + } + + aFloat3864 = var15; + aFloat3858 = var16; + } + + final void method1914(int var1) { + this.aShort3849 = (short) var1; + this.aClass121_3814.aBoolean1640 = false; + } + + final boolean method1873() { + if (this.anIntArrayArray3825 == null) { + return false; + } else { + for (int var1 = 0; var1 < this.anInt3823; ++var1) { + this.anIntArray3822[var1] <<= 4; + this.anIntArray3845[var1] <<= 4; + this.anIntArray3848[var1] <<= 4; + } + + anInt3859 = 0; + anInt3865 = 0; + anInt3862 = 0; + return true; + } + } + + final void method1916(short var1, short var2) { + int var3; + for (var3 = 0; var3 < this.anInt3852; ++var3) { + if (this.aShortArray3827[var3] == var1) { + this.aShortArray3827[var3] = var2; + } + } + + var3 = 0; + int var4 = 0; + if (var1 != -1) { + var3 = Class51.anInterface2_838.method19(-125, var1 & 65535); + var4 = Class51.anInterface2_838.method10(-98, var1 & 65535); + } + + int var5 = 0; + int var6 = 0; + if (var2 != -1) { + var5 = Class51.anInterface2_838.method19(57, var2 & 65535); + var6 = Class51.anInterface2_838.method10(-114, var2 & 65535); + } + + if (var3 != var5 || var4 != var6) { + this.aClass121_3814.aBoolean1640 = false; + } + + } + + private void method1917() { + int var1 = 32767; + int var2 = 32767; + int var3 = 32767; + int var4 = -32768; + int var5 = -32768; + int var6 = -32768; + int var7 = 0; + int var8 = 0; + + for (int var9 = 0; var9 < this.anInt3823; ++var9) { + int var10 = this.anIntArray3822[var9]; + int var11 = this.anIntArray3845[var9]; + int var12 = this.anIntArray3848[var9]; + if (var10 < var1) { + var1 = var10; + } + + if (var10 > var4) { + var4 = var10; + } + + if (var11 < var2) { + var2 = var11; + } + + if (var11 > var5) { + var5 = var11; + } + + if (var12 < var3) { + var3 = var12; + } + + if (var12 > var6) { + var6 = var12; + } + + int var13 = var10 * var10 + var12 * var12; + if (var13 > var7) { + var7 = var13; + } + + var13 = var10 * var10 + var12 * var12 + var11 * var11; + if (var13 > var8) { + var8 = var13; + } + } + + this.aClass6_3835.aShort95 = (short) var1; + this.aClass6_3835.aShort94 = (short) var4; + this.aClass6_3835.aShort91 = (short) var2; + this.aClass6_3835.aShort92 = (short) var5; + this.aClass6_3835.aShort97 = (short) var3; + this.aClass6_3835.aShort96 = (short) var6; + this.aClass6_3835.aShort93 = (short) ((int) (Math.sqrt(var7) + 0.99D)); + Math.sqrt(var8); + this.aClass6_3835.aBoolean98 = true; + } + + final void method1918(short var1, short var2) { + for (int var3 = 0; var3 < this.anInt3852; ++var3) { + if (this.aShortArray3808[var3] == var1) { + this.aShortArray3808[var3] = var2; + } + } + + this.aClass121_3814.aBoolean1640 = false; + } + + final void method1919(int var1, int var2, Class140_Sub1_Sub1 var3, int[][] var4, int[][] var5, int var6, int var7, int var8) { + if (!var3.aClass6_3835.aBoolean98) { + var3.method1917(); + } + + int var9 = var6 + var3.aClass6_3835.aShort95; + int var10 = var6 + var3.aClass6_3835.aShort94; + int var11 = var8 + var3.aClass6_3835.aShort97; + int var12 = var8 + var3.aClass6_3835.aShort96; + if (var1 != 1 && var1 != 2 && var1 != 3 && var1 != 5 || var9 >= 0 && var10 + 128 >> 7 < var4.length && var11 >= 0 && var12 + 128 >> 7 < var4[0].length) { + if (var1 == 4 || var1 == 5) { + if (var5 == null) { + return; + } + + if (var9 < 0 || var10 + 128 >> 7 >= var5.length || var11 < 0 || var12 + 128 >> 7 >= var5[0].length) { + return; + } + } else { + var9 >>= 7; + var10 = var10 + 127 >> 7; + var11 >>= 7; + var12 = var12 + 127 >> 7; + if (var4[var9][var11] == var7 && var4[var10][var11] == var7 && var4[var9][var12] == var7 && var4[var10][var12] == var7) { + return; + } + } + + int var13; + int var14; + int var15; + int var17; + int var16; + int var19; + int var18; + int var21; + int var20; + int var22; + if (var1 == 1) { + for (var13 = 0; var13 < this.anInt3823; ++var13) { + var14 = this.anIntArray3822[var13] + var6; + var15 = this.anIntArray3848[var13] + var8; + var16 = var14 & 127; + var17 = var15 & 127; + var18 = var14 >> 7; + var19 = var15 >> 7; + var20 = var4[var18][var19] * (128 - var16) + var4[var18 + 1][var19] * var16 >> 7; + var21 = var4[var18][var19 + 1] * (128 - var16) + var4[var18 + 1][var19 + 1] * var16 >> 7; + var22 = var20 * (128 - var17) + var21 * var17 >> 7; + this.anIntArray3845[var13] = this.anIntArray3845[var13] + var22 - var7; + } + } else { + int var23; + int var24; + if (var1 == 2) { + short var26 = var3.aClass6_3835.aShort91; + + for (var14 = 0; var14 < this.anInt3823; ++var14) { + var15 = (this.anIntArray3845[var14] << 16) / var26; + if (var15 < var2) { + var16 = this.anIntArray3822[var14] + var6; + var17 = this.anIntArray3848[var14] + var8; + var18 = var16 & 127; + var19 = var17 & 127; + var20 = var16 >> 7; + var21 = var17 >> 7; + var22 = var4[var20][var21] * (128 - var18) + var4[var20 + 1][var21] * var18 >> 7; + var23 = var4[var20][var21 + 1] * (128 - var18) + var4[var20 + 1][var21 + 1] * var18 >> 7; + var24 = var22 * (128 - var19) + var23 * var19 >> 7; + this.anIntArray3845[var14] += (var24 - var7) * (var2 - var15) / var2; + } + } + } else if (var1 == 3) { + var13 = (var2 & 0xFF) * 4; + var14 = (var2 >> 8 & 0xFF) * 4; + this.method1895(var4, var6, var7, var8, var13, var14); + } else if (var1 == 4) { + var13 = var3.aClass6_3835.aShort92 - var3.aClass6_3835.aShort91; + + for (var14 = 0; var14 < this.anInt3823; ++var14) { + var15 = this.anIntArray3822[var14] + var6; + var16 = this.anIntArray3848[var14] + var8; + var17 = var15 & 127; + var18 = var16 & 127; + var19 = var15 >> 7; + var20 = var16 >> 7; + var21 = var5[var19][var20] * (128 - var17) + var5[var19 + 1][var20] * var17 >> 7; + var22 = var5[var19][var20 + 1] * (128 - var17) + var5[var19 + 1][var20 + 1] * var17 >> 7; + var23 = var21 * (128 - var18) + var22 * var18 >> 7; + this.anIntArray3845[var14] = this.anIntArray3845[var14] + (var23 - var7) + var13; + } + } else if (var1 == 5) { + var13 = var3.aClass6_3835.aShort92 - var3.aClass6_3835.aShort91; + + for (var14 = 0; var14 < this.anInt3823; ++var14) { + var15 = this.anIntArray3822[var14] + var6; + var16 = this.anIntArray3848[var14] + var8; + var17 = var15 & 127; + var18 = var16 & 127; + var19 = var15 >> 7; + var20 = var16 >> 7; + var21 = var4[var19][var20] * (128 - var17) + var4[var19 + 1][var20] * var17 >> 7; + var22 = var4[var19][var20 + 1] * (128 - var17) + var4[var19 + 1][var20 + 1] * var17 >> 7; + var23 = var21 * (128 - var18) + var22 * var18 >> 7; + var21 = var5[var19][var20] * (128 - var17) + var5[var19 + 1][var20] * var17 >> 7; + var22 = var5[var19][var20 + 1] * (128 - var17) + var5[var19 + 1][var20 + 1] * var17 >> 7; + var24 = var21 * (128 - var18) + var22 * var18 >> 7; + int var25 = var23 - var24; + this.anIntArray3845[var14] = ((this.anIntArray3845[var14] << 8) / var13 * var25 >> 8) - (var7 - var23); + } + } + } + + this.aClass121_3839.aBoolean1640 = false; + this.aClass6_3835.aBoolean98 = false; + } + } + + final void method1920(boolean var1, boolean var2, boolean var3, boolean var5, boolean var6, boolean var7) { + if (this.aByte3836 != 0) { + throw new IllegalArgumentException(); + } else if (this.anInt3833 != 0) { + if (var7) { + boolean var8 = !this.aClass121_3814.aBoolean1640 && (var2 || var3 && !Class106.aBoolean1441); + this.method1922(false, !this.aClass121_3839.aBoolean1640 && var1, var8, this.aClass121_3815 != null && !this.aClass121_3815.aBoolean1640 && var3, !this.aClass121_3817.aBoolean1640); + if (!this.aClass121_3846.aBoolean1640 && var5 && var2) { + this.method1912(); + } + } + + if (var1) { + if (this.aClass121_3839.aBoolean1640) { + if (!this.aClass6_3835.aBoolean98) { + this.method1917(); + } + + this.anIntArray3822 = null; + this.anIntArray3845 = null; + this.anIntArray3848 = null; + this.aShortArray3828 = null; + this.anIntArray3838 = null; + } else { + this.aByte3851 = (byte) (this.aByte3851 | 1); + } + } + + if (var2) { + if (this.aClass121_3814.aBoolean1640) { + this.aShortArray3808 = null; + this.aByteArray3816 = null; + } else { + this.aByte3851 = (byte) (this.aByte3851 | 2); + } + } + + if (var3 && Class106.aBoolean1441) { + if (this.aClass121_3815.aBoolean1640) { + this.aShortArray3810 = null; + this.aShortArray3826 = null; + this.aShortArray3837 = null; + this.aShortArray3841 = null; + } else { + this.aByte3851 = (byte) (this.aByte3851 | 4); + } + } + + if (this.aClass121_3817.aBoolean1640) { + this.aFloatArray3824 = null; + this.aFloatArray3847 = null; + } else { + this.aByte3851 = (byte) (this.aByte3851 | 8); + } + + if (var5 && var2) { + if (this.aClass121_3846.aBoolean1640 && this.aClass121_3814.aBoolean1640) { + this.aShortArray3811 = null; + this.aShortArray3830 = null; + this.aShortArray3831 = null; + } else { + this.aByte3851 = (byte) (this.aByte3851 | 16); + } + } + + if (var6) { + this.anIntArray3844 = null; + this.aByteArray3820 = null; + this.anIntArrayArray3825 = null; + this.anIntArrayArray3829 = null; + } + + } + } + + private static float[] method1921(float[] var0, int var1) { + float[] var2 = new float[var1]; + ArrayUtils.arraycopy(var0, 0, var2, 0, var1); + return var2; + } + + private void method1922(boolean var1, boolean var2, boolean var3, boolean var4, boolean var5) { + int var6 = 0; + if (var2) { + this.aClass121_3839.anInt1639 = var6; + var6 += 12; + } + + if (var3) { + this.aClass121_3814.anInt1639 = var6; + var6 += 4; + } + + if (var4) { + this.aClass121_3815.anInt1639 = var6; + var6 += 12; + } + + if (var5) { + this.aClass121_3817.anInt1639 = var6; + var6 += 8; + } + + if (var6 != 0) { + if (aClass3_Sub30_3818.buffer.length < this.anInt3833 * var6) { + aClass3_Sub30_3818 = new DataBuffer((this.anInt3833 + 100) * var6); + } else { + aClass3_Sub30_3818.index = 0; + } + + int var7; + int var8; + int var9; + int var10; + int var11; + int var12; + int var13; + if (var2) { + int var14; + if (HDToolKit.aBoolean1790) { + for (var7 = 0; var7 < this.anInt3823; ++var7) { + var8 = Float.floatToRawIntBits((float) this.anIntArray3822[var7]); + var9 = Float.floatToRawIntBits((float) this.anIntArray3845[var7]); + var10 = Float.floatToRawIntBits((float) this.anIntArray3848[var7]); + var11 = this.anIntArray3838[var7]; + var12 = this.anIntArray3838[var7 + 1]; + + for (var13 = var11; var13 < var12; ++var13) { + var14 = this.aShortArray3828[var13] - 1; + if (var14 == -1) { + break; + } + + aClass3_Sub30_3818.index = var14 * var6; + aClass3_Sub30_3818.writeInt(var8); + aClass3_Sub30_3818.writeInt(var9); + aClass3_Sub30_3818.writeInt(var10); + } + } + } else { + for (var7 = 0; var7 < this.anInt3823; ++var7) { + var8 = Float.floatToRawIntBits((float) this.anIntArray3822[var7]); + var9 = Float.floatToRawIntBits((float) this.anIntArray3845[var7]); + var10 = Float.floatToRawIntBits((float) this.anIntArray3848[var7]); + var11 = this.anIntArray3838[var7]; + var12 = this.anIntArray3838[var7 + 1]; + + for (var13 = var11; var13 < var12; ++var13) { + var14 = this.aShortArray3828[var13] - 1; + if (var14 == -1) { + break; + } + + aClass3_Sub30_3818.index = var14 * var6; + aClass3_Sub30_3818.writeIntLE(var8); + aClass3_Sub30_3818.writeIntLE(var9); + aClass3_Sub30_3818.writeIntLE(var10); + } + } + } + } + + if (var3) { + if (Class106.aBoolean1441) { + for (var7 = 0; var7 < this.anInt3852; ++var7) { + var8 = method1905(this.aShortArray3808[var7], this.aShortArray3827[var7], this.aShort3849, this.aByteArray3816[var7]); + aClass3_Sub30_3818.index = this.aClass121_3814.anInt1639 + this.aShortArray3811[var7] * var6; + aClass3_Sub30_3818.writeInt(var8); + aClass3_Sub30_3818.index = this.aClass121_3814.anInt1639 + this.aShortArray3830[var7] * var6; + aClass3_Sub30_3818.writeInt(var8); + aClass3_Sub30_3818.index = this.aClass121_3814.anInt1639 + this.aShortArray3831[var7] * var6; + aClass3_Sub30_3818.writeInt(var8); + } + } else { + var7 = (int) Class92.light0Position[0]; + var8 = (int) Class92.light0Position[1]; + var9 = (int) Class92.light0Position[2]; + var10 = (int) Math.sqrt(var7 * var7 + var8 * var8 + var9 * var9); + var11 = (int) ((float) this.aShort3849 * 1.3F); + var12 = this.aShort3819 * var10 >> 8; + + for (var13 = 0; var13 < this.anInt3852; ++var13) { + short var33 = this.aShortArray3811[var13]; + short var15 = this.aShortArray3841[var33]; + int var16; + if (var15 < 0) { + var16 = -1 - var15; + } else { + if (var15 == 0) { + var16 = var11 + (var7 * this.aShortArray3810[var33] + var8 * this.aShortArray3826[var33] + var9 * this.aShortArray3837[var33]) / (var12 + var12 / 2); + } else { + var16 = var11 + (var7 * this.aShortArray3810[var33] + var8 * this.aShortArray3826[var33] + var9 * this.aShortArray3837[var33]) / (var12 * var15); + } + + if (var16 < 0) { + var16 = 0; + } else if (var16 > 16384) { + var16 = 16384; + } + + this.aShortArray3841[var33] = (short) (-1 - var16); + } + + short var17 = this.aShortArray3830[var13]; + short var18 = this.aShortArray3841[var17]; + int var19; + if (var18 < 0) { + var19 = -1 - var18; + } else { + if (var18 == 0) { + var19 = var11 + (var7 * this.aShortArray3810[var17] + var8 * this.aShortArray3826[var17] + var9 * this.aShortArray3837[var17]) / (var12 + var12 / 2); + } else { + var19 = var11 + (var7 * this.aShortArray3810[var17] + var8 * this.aShortArray3826[var17] + var9 * this.aShortArray3837[var17]) / (var12 * var18); + } + + if (var19 < 0) { + var19 = 0; + } else if (var19 > 16384) { + var19 = 16384; + } + + this.aShortArray3841[var17] = (short) (-1 - var19); + } + + short var20 = this.aShortArray3831[var13]; + short var21 = this.aShortArray3841[var20]; + int var22; + if (var21 < 0) { + var22 = -1 - var21; + } else { + if (var21 == 0) { + var22 = var11 + (var7 * this.aShortArray3810[var20] + var8 * this.aShortArray3826[var20] + var9 * this.aShortArray3837[var20]) / (var12 + var12 / 2); + } else { + var22 = var11 + (var7 * this.aShortArray3810[var20] + var8 * this.aShortArray3826[var20] + var9 * this.aShortArray3837[var20]) / (var12 * var21); + } + + if (var22 < 0) { + var22 = 0; + } else if (var22 > 16384) { + var22 = 16384; + } + + this.aShortArray3841[var20] = (short) (-1 - var22); + } + + int var23 = method1905(this.aShortArray3808[var13], this.aShortArray3827[var13], var16, this.aByteArray3816[var13]); + int var24 = method1905(this.aShortArray3808[var13], this.aShortArray3827[var13], var19, this.aByteArray3816[var13]); + int var25 = method1905(this.aShortArray3808[var13], this.aShortArray3827[var13], var22, this.aByteArray3816[var13]); + aClass3_Sub30_3818.index = this.aClass121_3814.anInt1639 + var33 * var6; + aClass3_Sub30_3818.writeInt(var23); + aClass3_Sub30_3818.index = this.aClass121_3814.anInt1639 + var17 * var6; + aClass3_Sub30_3818.writeInt(var24); + aClass3_Sub30_3818.index = this.aClass121_3814.anInt1639 + var20 * var6; + aClass3_Sub30_3818.writeInt(var25); + } + + this.aShortArray3810 = null; + this.aShortArray3826 = null; + this.aShortArray3837 = null; + } + } + + if (var4) { + float var27 = 3.0F / (float) this.aShort3819; + float var26 = 3.0F / (float) (this.aShort3819 + this.aShort3819 / 2); + aClass3_Sub30_3818.index = this.aClass121_3815.anInt1639; + short var30; + float var32; + if (HDToolKit.aBoolean1790) { + for (var9 = 0; var9 < this.anInt3833; ++var9) { + var30 = this.aShortArray3841[var9]; + if (var30 == 0) { + aClass3_Sub30_3818.writeFloat((float) Objects.requireNonNull(this.aShortArray3810)[var9] * var26); + aClass3_Sub30_3818.writeFloat((float) this.aShortArray3826[var9] * var26); + aClass3_Sub30_3818.writeFloat((float) this.aShortArray3837[var9] * var26); + } else { + var32 = var27 / (float) var30; + aClass3_Sub30_3818.writeFloat((float) Objects.requireNonNull(this.aShortArray3810)[var9] * var32); + aClass3_Sub30_3818.writeFloat((float) this.aShortArray3826[var9] * var32); + aClass3_Sub30_3818.writeFloat((float) this.aShortArray3837[var9] * var32); + } + + aClass3_Sub30_3818.index += var6 - 12; + } + } else { + for (var9 = 0; var9 < this.anInt3833; ++var9) { + var30 = this.aShortArray3841[var9]; + if (var30 == 0) { + aClass3_Sub30_3818.writeFloatLE((float) Objects.requireNonNull(this.aShortArray3810)[var9] * var26); + aClass3_Sub30_3818.writeFloatLE((float) this.aShortArray3826[var9] * var26); + aClass3_Sub30_3818.writeFloatLE((float) this.aShortArray3837[var9] * var26); + } else { + var32 = var27 / (float) var30; + aClass3_Sub30_3818.writeFloatLE((float) Objects.requireNonNull(this.aShortArray3810)[var9] * var32); + aClass3_Sub30_3818.writeFloatLE((float) this.aShortArray3826[var9] * var32); + aClass3_Sub30_3818.writeFloatLE((float) this.aShortArray3837[var9] * var32); + } + + aClass3_Sub30_3818.index += var6 - 12; + } + } + } + + if (var5) { + aClass3_Sub30_3818.index = this.aClass121_3817.anInt1639; + if (HDToolKit.aBoolean1790) { + for (var7 = 0; var7 < this.anInt3833; ++var7) { + aClass3_Sub30_3818.writeFloat(this.aFloatArray3824[var7]); + aClass3_Sub30_3818.writeFloat(this.aFloatArray3847[var7]); + aClass3_Sub30_3818.index += var6 - 8; + } + } else { + for (var7 = 0; var7 < this.anInt3833; ++var7) { + aClass3_Sub30_3818.writeFloatLE(this.aFloatArray3824[var7]); + aClass3_Sub30_3818.writeFloatLE(this.aFloatArray3847[var7]); + aClass3_Sub30_3818.index += var6 - 8; + } + } + } + + aClass3_Sub30_3818.index = var6 * this.anInt3833; + ByteBuffer var29; + if (var1) { + if (HDToolKit.aBoolean1817) { + var29 = ByteBuffer.wrap(aClass3_Sub30_3818.buffer, 0, aClass3_Sub30_3818.index); + if (this.aClass156_3812 == null) { + this.aClass156_3812 = new Class156(true); + this.aClass156_3812.method2172(var29); + } else { + this.aClass156_3812.method2168(var29); + } + + if (var2) { + this.aClass121_3839.aBoolean1640 = true; + this.aClass121_3839.aByteBuffer1644 = null; + this.aClass121_3839.aClass156_1643 = this.aClass156_3812; + this.aClass121_3839.anInt1648 = var6; + } + + if (var3) { + this.aClass121_3814.aBoolean1640 = true; + this.aClass121_3814.aByteBuffer1644 = null; + this.aClass121_3814.aClass156_1643 = this.aClass156_3812; + this.aClass121_3814.anInt1648 = var6; + } + + if (var4) { + this.aClass121_3815.aBoolean1640 = true; + this.aClass121_3815.aByteBuffer1644 = null; + this.aClass121_3815.aClass156_1643 = this.aClass156_3812; + this.aClass121_3815.anInt1648 = var6; + } + + if (var5) { + this.aClass121_3817.aBoolean1640 = true; + this.aClass121_3817.aByteBuffer1644 = null; + this.aClass121_3817.aClass156_1643 = this.aClass156_3812; + this.aClass121_3817.anInt1648 = var6; + } + } else { + if (aByteBuffer3834 != null && aByteBuffer3834.capacity() >= aClass3_Sub30_3818.index) { + aByteBuffer3834.clear(); + } else { + aByteBuffer3834 = ByteBuffer.allocateDirect(aClass3_Sub30_3818.index + 100 * var6); + } + + aByteBuffer3834.put(aClass3_Sub30_3818.buffer, 0, aClass3_Sub30_3818.index); + aByteBuffer3834.flip(); + if (var2) { + this.aClass121_3839.aBoolean1640 = true; + this.aClass121_3839.aByteBuffer1644 = aByteBuffer3834; + this.aClass121_3839.aClass156_1643 = null; + this.aClass121_3839.anInt1648 = var6; + } + + if (var3) { + this.aClass121_3814.aBoolean1640 = true; + this.aClass121_3814.aByteBuffer1644 = aByteBuffer3834; + this.aClass121_3839.aClass156_1643 = null; + this.aClass121_3814.anInt1648 = var6; + } + + if (var4) { + this.aClass121_3815.aBoolean1640 = true; + this.aClass121_3815.aByteBuffer1644 = aByteBuffer3834; + this.aClass121_3815.aClass156_1643 = null; + this.aClass121_3815.anInt1648 = var6; + } + + if (var5) { + this.aClass121_3817.aBoolean1640 = true; + this.aClass121_3817.aByteBuffer1644 = aByteBuffer3834; + this.aClass121_3817.aClass156_1643 = null; + this.aClass121_3817.anInt1648 = var6; + } + } + } else if (HDToolKit.supportVertexBufferObject) { + Class156 var31 = new Class156(); + ByteBuffer var28 = ByteBuffer.wrap(aClass3_Sub30_3818.buffer, 0, aClass3_Sub30_3818.index); + var31.method2172(var28); + if (var2) { + this.aClass121_3839.aBoolean1640 = true; + this.aClass121_3839.aByteBuffer1644 = null; + this.aClass121_3839.aClass156_1643 = var31; + this.aClass121_3839.anInt1648 = var6; + } + + if (var3) { + this.aClass121_3814.aBoolean1640 = true; + this.aClass121_3814.aByteBuffer1644 = null; + this.aClass121_3814.aClass156_1643 = var31; + this.aClass121_3814.anInt1648 = var6; + } + + if (var4) { + this.aClass121_3815.aBoolean1640 = true; + this.aClass121_3815.aByteBuffer1644 = null; + this.aClass121_3815.aClass156_1643 = var31; + this.aClass121_3815.anInt1648 = var6; + } + + if (var5) { + this.aClass121_3817.aBoolean1640 = true; + this.aClass121_3817.aByteBuffer1644 = null; + this.aClass121_3817.aClass156_1643 = var31; + this.aClass121_3817.anInt1648 = var6; + } + } else { + var29 = ByteBuffer.allocateDirect(aClass3_Sub30_3818.index); + var29.put(aClass3_Sub30_3818.buffer, 0, aClass3_Sub30_3818.index); + var29.flip(); + if (var2) { + this.aClass121_3839.aBoolean1640 = true; + this.aClass121_3839.aByteBuffer1644 = var29; + this.aClass121_3839.aClass156_1643 = null; + this.aClass121_3839.anInt1648 = var6; + } + + if (var3) { + this.aClass121_3814.aBoolean1640 = true; + this.aClass121_3814.aByteBuffer1644 = var29; + this.aClass121_3839.aClass156_1643 = null; + this.aClass121_3814.anInt1648 = var6; + } + + if (var4) { + this.aClass121_3815.aBoolean1640 = true; + this.aClass121_3815.aByteBuffer1644 = var29; + this.aClass121_3815.aClass156_1643 = null; + this.aClass121_3815.anInt1648 = var6; + } + + if (var5) { + this.aClass121_3817.aBoolean1640 = true; + this.aClass121_3817.aByteBuffer1644 = var29; + this.aClass121_3817.aClass156_1643 = null; + this.aClass121_3817.anInt1648 = var6; + } + } + + } + } + + private Model method1923(boolean var1, boolean var2, boolean var3, Class140_Sub1_Sub1 var4, Class140_Sub1_Sub1 var5) { + var4.anInt3823 = this.anInt3823; + var4.anInt3833 = this.anInt3833; + var4.anInt3852 = this.anInt3852; + var4.aShort3849 = this.aShort3849; + var4.aShort3819 = this.aShort3819; + var4.aByte3836 = (byte) (1 | (var1 && var2 ? 0 : 2) | (var3 ? 0 : 4)); + if (var4.anIntArray3822 == null || var4.anIntArray3822.length < this.anInt3823) { + var4.anIntArray3822 = new int[this.anInt3823 + 100]; + var4.anIntArray3845 = new int[this.anInt3823 + 100]; + var4.anIntArray3848 = new int[this.anInt3823 + 100]; + } + + int var6; + for (var6 = 0; var6 < this.anInt3823; ++var6) { + var4.anIntArray3822[var6] = this.anIntArray3822[var6]; + var4.anIntArray3845[var6] = this.anIntArray3845[var6]; + var4.anIntArray3848[var6] = this.anIntArray3848[var6]; + } + + if (var4.aClass121_3839 == null) { + var4.aClass121_3839 = new Class121(); + } + + var4.aClass121_3839.aBoolean1640 = false; + if (var4.aClass6_3835 == null) { + var4.aClass6_3835 = new Class6(); + } + + var4.aClass6_3835.aBoolean98 = false; + if (var1) { + var4.aByteArray3816 = this.aByteArray3816; + } else { + if (var5.aByteArray3816 == null || var5.aByteArray3816.length < this.anInt3852) { + var5.aByteArray3816 = new byte[this.anInt3852 + 100]; + } + + var4.aByteArray3816 = var5.aByteArray3816; + + for (var6 = 0; var6 < this.anInt3852; ++var6) { + var4.aByteArray3816[var6] = this.aByteArray3816[var6]; + } + } + + if (var2) { + var4.aShortArray3808 = this.aShortArray3808; + } else { + if (var5.aShortArray3808 == null || var5.aShortArray3808.length < this.anInt3852) { + var5.aShortArray3808 = new short[this.anInt3852 + 100]; + } + + var4.aShortArray3808 = var5.aShortArray3808; + + for (var6 = 0; var6 < this.anInt3852; ++var6) { + var4.aShortArray3808[var6] = this.aShortArray3808[var6]; + } + } + + if (var1 && var2) { + var4.aClass121_3814 = this.aClass121_3814; + } else { + if (var5.aClass121_3814 == null) { + var5.aClass121_3814 = new Class121(); + } + + var4.aClass121_3814 = var5.aClass121_3814; + var4.aClass121_3814.aBoolean1640 = false; + } + + if (var3 || this.aShortArray3810 == null) { + var4.aShortArray3810 = this.aShortArray3810; + var4.aShortArray3826 = this.aShortArray3826; + var4.aShortArray3837 = this.aShortArray3837; + var4.aShortArray3841 = this.aShortArray3841; + var4.aClass121_3815 = this.aClass121_3815; + } else { + if (var5.aShortArray3810 == null || var5.aShortArray3810.length < this.anInt3833) { + var5.aShortArray3810 = new short[this.anInt3833 + 100]; + var5.aShortArray3826 = new short[this.anInt3833 + 100]; + var5.aShortArray3837 = new short[this.anInt3833 + 100]; + var5.aShortArray3841 = new short[this.anInt3833 + 100]; + } + + var4.aShortArray3810 = var5.aShortArray3810; + var4.aShortArray3826 = var5.aShortArray3826; + var4.aShortArray3837 = var5.aShortArray3837; + var4.aShortArray3841 = var5.aShortArray3841; + + for (var6 = 0; var6 < this.anInt3833; ++var6) { + var4.aShortArray3810[var6] = this.aShortArray3810[var6]; + var4.aShortArray3826[var6] = this.aShortArray3826[var6]; + var4.aShortArray3837[var6] = this.aShortArray3837[var6]; + var4.aShortArray3841[var6] = this.aShortArray3841[var6]; + } + + if (Class106.aBoolean1441) { + if (var5.aClass121_3815 == null) { + var5.aClass121_3815 = new Class121(); + } + + var4.aClass121_3815 = var5.aClass121_3815; + var4.aClass121_3815.aBoolean1640 = false; + } else { + var4.aClass121_3815 = null; + } + } + + var4.aFloatArray3824 = this.aFloatArray3824; + var4.aFloatArray3847 = this.aFloatArray3847; + var4.anIntArray3844 = this.anIntArray3844; + var4.anIntArrayArray3825 = this.anIntArrayArray3825; + var4.aShortArray3811 = this.aShortArray3811; + var4.aShortArray3830 = this.aShortArray3830; + var4.aShortArray3831 = this.aShortArray3831; + var4.aShortArray3827 = this.aShortArray3827; + var4.aByteArray3820 = this.aByteArray3820; + var4.anIntArrayArray3829 = this.anIntArrayArray3829; + var4.aClass121_3817 = this.aClass121_3817; + var4.aClass121_3846 = this.aClass121_3846; + var4.anIntArray3840 = this.anIntArray3840; + var4.aShortArray3828 = this.aShortArray3828; + var4.anIntArray3838 = this.anIntArray3838; + var4.aBoolean2699 = this.aBoolean2699; + var4.aShortArray3832 = this.aShortArray3832; + var4.aShortArray3813 = this.aShortArray3813; + return var4; + } + + final GameObject method1861() { + this.aBoolean3809 = false; + if (this.aClass18_3843 != null) { + this.aShortArray3810 = this.aClass18_3843.aShortArray417; + this.aShortArray3826 = this.aClass18_3843.aShortArray419; + this.aShortArray3837 = this.aClass18_3843.aShortArray418; + this.aShortArray3841 = this.aClass18_3843.aShortArray416; + this.aClass18_3843 = null; + } + + return this; + } + + final int method1924() { + return this.aShort3819; + } + + final void method1925() { + if (this.aShortArray3810 == null) { + this.method1885(); + } else { + int var1; + for (var1 = 0; var1 < this.anInt3823; ++var1) { + int var2 = this.anIntArray3822[var1]; + this.anIntArray3822[var1] = this.anIntArray3848[var1]; + this.anIntArray3848[var1] = -var2; + } + + for (var1 = 0; var1 < this.anInt3833; ++var1) { + short var3 = this.aShortArray3810[var1]; + this.aShortArray3810[var1] = this.aShortArray3837[var1]; + this.aShortArray3837[var1] = (short) (-var3); + } + + this.aClass6_3835.aBoolean98 = false; + this.aClass121_3839.aBoolean1640 = false; + if (this.aClass121_3815 != null) { + this.aClass121_3815.aBoolean1640 = false; + } + + } + } + + final Class140_Sub1_Sub1 method1926(boolean var1, boolean var2, boolean var3, boolean var5, boolean var6, boolean var7, boolean var8, boolean var10, boolean var11) { + Class140_Sub1_Sub1 var12 = new Class140_Sub1_Sub1(); + var12.anInt3823 = this.anInt3823; + var12.anInt3833 = this.anInt3833; + var12.anInt3852 = this.anInt3852; + if (var1) { + var12.anIntArray3822 = this.anIntArray3822; + var12.anIntArray3848 = this.anIntArray3848; + } else { + var12.anIntArray3822 = Class65.method1233(this.anIntArray3822); + var12.anIntArray3848 = Class65.method1233(this.anIntArray3848); + } + + if (var2) { + var12.anIntArray3845 = this.anIntArray3845; + } else { + var12.anIntArray3845 = Class65.method1233(this.anIntArray3845); + } + + if (var1 && var2) { + var12.aClass121_3839 = this.aClass121_3839; + var12.aClass6_3835 = this.aClass6_3835; + } else { + var12.aClass121_3839 = new Class121(); + var12.aClass6_3835 = new Class6(); + } + + if (var3) { + var12.aShortArray3808 = this.aShortArray3808; + } else { + var12.aShortArray3808 = Unsorted.method65(this.aShortArray3808); + } + + var12.aByteArray3816 = this.aByteArray3816; + + if (var3 && var5 && (var8 && var6 || Class106.aBoolean1441)) { + var12.aClass121_3814 = this.aClass121_3814; + } else { + var12.aClass121_3814 = new Class121(); + } + + if (var6) { + var12.aShortArray3810 = this.aShortArray3810; + var12.aShortArray3826 = this.aShortArray3826; + var12.aShortArray3837 = this.aShortArray3837; + var12.aShortArray3841 = this.aShortArray3841; + } else { + var12.aShortArray3810 = Unsorted.method65(this.aShortArray3810); + var12.aShortArray3826 = Unsorted.method65(this.aShortArray3826); + var12.aShortArray3837 = Unsorted.method65(this.aShortArray3837); + var12.aShortArray3841 = Unsorted.method65(this.aShortArray3841); + } + + if (Class106.aBoolean1441) { + if (var6 && var7 && var8) { + var12.aClass121_3815 = this.aClass121_3815; + } else { + var12.aClass121_3815 = new Class121(); + } + } else { + var12.aClass121_3815 = null; + } + + var12.aFloatArray3824 = this.aFloatArray3824; + var12.aFloatArray3847 = this.aFloatArray3847; + var12.aClass121_3817 = this.aClass121_3817; + + if (var10) { + var12.aShortArray3811 = this.aShortArray3811; + var12.aShortArray3830 = this.aShortArray3830; + var12.aShortArray3831 = this.aShortArray3831; + var12.aClass121_3846 = this.aClass121_3846; + } else { + var12.aShortArray3811 = Unsorted.method65(this.aShortArray3811); + var12.aShortArray3830 = Unsorted.method65(this.aShortArray3830); + var12.aShortArray3831 = Unsorted.method65(this.aShortArray3831); + var12.aClass121_3846 = new Class121(); + } + + if (var11) { + var12.aShortArray3827 = this.aShortArray3827; + } else { + var12.aShortArray3827 = Unsorted.method65(this.aShortArray3827); + } + + var12.anIntArray3844 = this.anIntArray3844; + var12.anIntArrayArray3825 = this.anIntArrayArray3825; + var12.aByteArray3820 = this.aByteArray3820; + var12.anIntArrayArray3829 = this.anIntArrayArray3829; + var12.anIntArray3840 = this.anIntArray3840; + var12.aShortArray3828 = this.aShortArray3828; + var12.anIntArray3838 = this.anIntArray3838; + var12.aShort3849 = this.aShort3849; + var12.aShort3819 = this.aShort3819; + var12.aShortArray3832 = this.aShortArray3832; + var12.aShortArray3813 = this.aShortArray3813; + return var12; + } + + final void method1885() { + for (int var1 = 0; var1 < this.anInt3823; ++var1) { + int var2 = this.anIntArray3822[var1]; + this.anIntArray3822[var1] = this.anIntArray3848[var1]; + this.anIntArray3848[var1] = -var2; + } + + this.aClass6_3835.aBoolean98 = false; + this.aClass121_3839.aBoolean1640 = false; + } + + private boolean method1927(int var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8) { + return (var2 >= var3 || var2 >= var4 || var2 >= var5) && ((var2 <= var3 || var2 <= var4 || var2 <= var5) && ((var1 >= var6 || var1 >= var7 || var1 >= var8) && (var1 <= var6 || var1 <= var7 || var1 <= var8))); + } + + private static short[] method1928(short[] var0, int var1) { + short[] var2 = new short[var1]; + ArrayUtils.arraycopy(var0, 0, var2, 0, var1); + return var2; + } + + final int method1888() { + if (!this.aClass6_3835.aBoolean98) { + this.method1917(); + } + + return this.aClass6_3835.aShort93; + } + + final void method1891(int var1, int[] var2, int var3, int var4, int var5, boolean var6) { + int var7 = var2.length; + int var8; + int var9; + int var12; + int var13; + if (var1 == 0) { + var3 <<= 4; + var4 <<= 4; + var5 <<= 4; + var8 = 0; + anInt3859 = 0; + anInt3865 = 0; + anInt3862 = 0; + + for (var9 = 0; var9 < var7; ++var9) { + int var20 = var2[var9]; + if (var20 < this.anIntArrayArray3825.length) { + int[] var21 = this.anIntArrayArray3825[var20]; + + for (var12 = 0; var12 < var21.length; ++var12) { + var13 = var21[var12]; + anInt3859 += this.anIntArray3822[var13]; + anInt3865 += this.anIntArray3845[var13]; + anInt3862 += this.anIntArray3848[var13]; + ++var8; + } + } + } + + if (var8 > 0) { + anInt3859 = anInt3859 / var8 + var3; + anInt3865 = anInt3865 / var8 + var4; + anInt3862 = anInt3862 / var8 + var5; + } else { + anInt3859 = var3; + anInt3865 = var4; + anInt3862 = var5; + } + + } else { + int[] var10; + int var11; + if (var1 == 1) { + var3 <<= 4; + var4 <<= 4; + var5 <<= 4; + + for (var8 = 0; var8 < var7; ++var8) { + var9 = var2[var8]; + if (var9 < this.anIntArrayArray3825.length) { + var10 = this.anIntArrayArray3825[var9]; + + for (var11 = 0; var11 < var10.length; ++var11) { + var12 = var10[var11]; + this.anIntArray3822[var12] += var3; + this.anIntArray3845[var12] += var4; + this.anIntArray3848[var12] += var5; + } + } + } + + } else { + int var14; + int var15; + int var16; + if (var1 == 2) { + for (var8 = 0; var8 < var7; ++var8) { + var9 = var2[var8]; + if (var9 < this.anIntArrayArray3825.length) { + var10 = this.anIntArrayArray3825[var9]; + + for (var11 = 0; var11 < var10.length; ++var11) { + var12 = var10[var11]; + this.anIntArray3822[var12] -= anInt3859; + this.anIntArray3845[var12] -= anInt3865; + this.anIntArray3848[var12] -= anInt3862; + if (var5 != 0) { + var13 = Class51.anIntArray840[var5]; + var14 = Class51.anIntArray851[var5]; + var15 = this.anIntArray3845[var12] * var13 + this.anIntArray3822[var12] * var14 + 32767 >> 16; + this.anIntArray3845[var12] = this.anIntArray3845[var12] * var14 - this.anIntArray3822[var12] * var13 + 32767 >> 16; + this.anIntArray3822[var12] = var15; + } + + if (var3 != 0) { + var13 = Class51.anIntArray840[var3]; + var14 = Class51.anIntArray851[var3]; + var15 = this.anIntArray3845[var12] * var14 - this.anIntArray3848[var12] * var13 + 32767 >> 16; + this.anIntArray3848[var12] = this.anIntArray3845[var12] * var13 + this.anIntArray3848[var12] * var14 + 32767 >> 16; + this.anIntArray3845[var12] = var15; + } + + if (var4 != 0) { + var13 = Class51.anIntArray840[var4]; + var14 = Class51.anIntArray851[var4]; + var15 = this.anIntArray3848[var12] * var13 + this.anIntArray3822[var12] * var14 + 32767 >> 16; + this.anIntArray3848[var12] = this.anIntArray3848[var12] * var14 - this.anIntArray3822[var12] * var13 + 32767 >> 16; + this.anIntArray3822[var12] = var15; + } + + this.anIntArray3822[var12] += anInt3859; + this.anIntArray3845[var12] += anInt3865; + this.anIntArray3848[var12] += anInt3862; + } + } + } + + if (var6 && this.aShortArray3810 != null) { + for (var8 = 0; var8 < var7; ++var8) { + var9 = var2[var8]; + if (var9 < this.anIntArrayArray3825.length) { + var10 = this.anIntArrayArray3825[var9]; + + for (var11 = 0; var11 < var10.length; ++var11) { + var12 = var10[var11]; + var13 = this.anIntArray3838[var12]; + var14 = this.anIntArray3838[var12 + 1]; + + for (var15 = var13; var15 < var14; ++var15) { + var16 = this.aShortArray3828[var15] - 1; + if (var16 == -1) { + break; + } + + int var17; + int var19; + int var18; + if (var5 != 0) { + var17 = Class51.anIntArray840[var5]; + var18 = Class51.anIntArray851[var5]; + var19 = this.aShortArray3826[var16] * var17 + this.aShortArray3810[var16] * var18 + 32767 >> 16; + this.aShortArray3826[var16] = (short) (this.aShortArray3826[var16] * var18 - this.aShortArray3810[var16] * var17 + 32767 >> 16); + this.aShortArray3810[var16] = (short) var19; + } + + if (var3 != 0) { + var17 = Class51.anIntArray840[var3]; + var18 = Class51.anIntArray851[var3]; + var19 = this.aShortArray3826[var16] * var18 - this.aShortArray3837[var16] * var17 + 32767 >> 16; + this.aShortArray3837[var16] = (short) (this.aShortArray3826[var16] * var17 + this.aShortArray3837[var16] * var18 + 32767 >> 16); + this.aShortArray3826[var16] = (short) var19; + } + + if (var4 != 0) { + var17 = Class51.anIntArray840[var4]; + var18 = Class51.anIntArray851[var4]; + var19 = this.aShortArray3837[var16] * var17 + this.aShortArray3810[var16] * var18 + 32767 >> 16; + this.aShortArray3837[var16] = (short) (this.aShortArray3837[var16] * var18 - this.aShortArray3810[var16] * var17 + 32767 >> 16); + this.aShortArray3810[var16] = (short) var19; + } + } + } + } + } + + if (this.aClass121_3815 != null) { + this.aClass121_3815.aBoolean1640 = false; + } + } + + } else if (var1 == 3) { + for (var8 = 0; var8 < var7; ++var8) { + var9 = var2[var8]; + if (var9 < this.anIntArrayArray3825.length) { + var10 = this.anIntArrayArray3825[var9]; + + for (var11 = 0; var11 < var10.length; ++var11) { + var12 = var10[var11]; + this.anIntArray3822[var12] -= anInt3859; + this.anIntArray3845[var12] -= anInt3865; + this.anIntArray3848[var12] -= anInt3862; + this.anIntArray3822[var12] = this.anIntArray3822[var12] * var3 >> 7; + this.anIntArray3845[var12] = this.anIntArray3845[var12] * var4 >> 7; + this.anIntArray3848[var12] = this.anIntArray3848[var12] * var5 >> 7; + this.anIntArray3822[var12] += anInt3859; + this.anIntArray3845[var12] += anInt3865; + this.anIntArray3848[var12] += anInt3862; + } + } + } + + } else if (var1 == 5) { + if (this.anIntArrayArray3829 != null && this.aByteArray3816 != null) { + for (var8 = 0; var8 < var7; ++var8) { + var9 = var2[var8]; + if (var9 < this.anIntArrayArray3829.length) { + var10 = this.anIntArrayArray3829[var9]; + + for (var11 = 0; var11 < var10.length; ++var11) { + var12 = var10[var11]; + var13 = (this.aByteArray3816[var12] & 0xFF) + var3 * 8; + if (var13 < 0) { + var13 = 0; + } else if (var13 > 255) { + var13 = 255; + } + + this.aByteArray3816[var12] = (byte) var13; + } + + if (var10.length > 0) { + this.aClass121_3814.aBoolean1640 = false; + } + } + } + } + + } else if (var1 == 7) { + if (this.anIntArrayArray3829 != null) { + for (var8 = 0; var8 < var7; ++var8) { + var9 = var2[var8]; + if (var9 < this.anIntArrayArray3829.length) { + var10 = this.anIntArrayArray3829[var9]; + + for (var11 = 0; var11 < var10.length; ++var11) { + var12 = var10[var11]; + var13 = this.aShortArray3808[var12] & 65535; + var14 = var13 >> 10 & 63; + var15 = var13 >> 7 & 7; + var16 = var13 & 127; + var14 = var14 + var3 & 63; + var15 += var4 / 4; + if (var15 < 0) { + var15 = 0; + } else if (var15 > 7) { + var15 = 7; + } + + var16 += var5; + if (var16 < 0) { + var16 = 0; + } else if (var16 > 127) { + var16 = 127; + } + + this.aShortArray3808[var12] = (short) (var14 << 10 | var15 << 7 | var16); + } + + if (var10.length > 0) { + this.aClass121_3814.aBoolean1640 = false; + } + } + } + } + + } + } + } + } + + final void method1889(int var1, int var2, int var3, int var4) { + int var5; + int var6; + if (var1 == 0) { + var5 = 0; + anInt3859 = 0; + anInt3865 = 0; + anInt3862 = 0; + + for (var6 = 0; var6 < this.anInt3823; ++var6) { + anInt3859 += this.anIntArray3822[var6]; + anInt3865 += this.anIntArray3845[var6]; + anInt3862 += this.anIntArray3848[var6]; + ++var5; + } + + if (var5 > 0) { + anInt3859 = anInt3859 / var5 + var2; + anInt3865 = anInt3865 / var5 + var3; + anInt3862 = anInt3862 / var5 + var4; + } else { + anInt3859 = var2; + anInt3865 = var3; + anInt3862 = var4; + } + + } else if (var1 == 1) { + for (var5 = 0; var5 < this.anInt3823; ++var5) { + this.anIntArray3822[var5] += var2; + this.anIntArray3845[var5] += var3; + this.anIntArray3848[var5] += var4; + } + + } else { + int var7; + int var8; + if (var1 == 2) { + for (var5 = 0; var5 < this.anInt3823; ++var5) { + this.anIntArray3822[var5] -= anInt3859; + this.anIntArray3845[var5] -= anInt3865; + this.anIntArray3848[var5] -= anInt3862; + if (var4 != 0) { + var6 = Class51.anIntArray840[var4]; + var7 = Class51.anIntArray851[var4]; + var8 = this.anIntArray3845[var5] * var6 + this.anIntArray3822[var5] * var7 + 32767 >> 16; + this.anIntArray3845[var5] = this.anIntArray3845[var5] * var7 - this.anIntArray3822[var5] * var6 + 32767 >> 16; + this.anIntArray3822[var5] = var8; + } + + if (var2 != 0) { + var6 = Class51.anIntArray840[var2]; + var7 = Class51.anIntArray851[var2]; + var8 = this.anIntArray3845[var5] * var7 - this.anIntArray3848[var5] * var6 + 32767 >> 16; + this.anIntArray3848[var5] = this.anIntArray3845[var5] * var6 + this.anIntArray3848[var5] * var7 + 32767 >> 16; + this.anIntArray3845[var5] = var8; + } + + if (var3 != 0) { + var6 = Class51.anIntArray840[var3]; + var7 = Class51.anIntArray851[var3]; + var8 = this.anIntArray3848[var5] * var6 + this.anIntArray3822[var5] * var7 + 32767 >> 16; + this.anIntArray3848[var5] = this.anIntArray3848[var5] * var7 - this.anIntArray3822[var5] * var6 + 32767 >> 16; + this.anIntArray3822[var5] = var8; + } + + this.anIntArray3822[var5] += anInt3859; + this.anIntArray3845[var5] += anInt3865; + this.anIntArray3848[var5] += anInt3862; + } + + } else if (var1 == 3) { + for (var5 = 0; var5 < this.anInt3823; ++var5) { + this.anIntArray3822[var5] -= anInt3859; + this.anIntArray3845[var5] -= anInt3865; + this.anIntArray3848[var5] -= anInt3862; + this.anIntArray3822[var5] = this.anIntArray3822[var5] * var2 / 128; + this.anIntArray3845[var5] = this.anIntArray3845[var5] * var3 / 128; + this.anIntArray3848[var5] = this.anIntArray3848[var5] * var4 / 128; + this.anIntArray3822[var5] += anInt3859; + this.anIntArray3845[var5] += anInt3865; + this.anIntArray3848[var5] += anInt3862; + } + + } else if (var1 == 5) { + for (var5 = 0; var5 < this.anInt3852; ++var5) { + var6 = (this.aByteArray3816[var5] & 0xFF) + var2 * 8; + if (var6 < 0) { + var6 = 0; + } else if (var6 > 255) { + var6 = 255; + } + + this.aByteArray3816[var5] = (byte) var6; + } + + this.aClass121_3814.aBoolean1640 = false; + } else if (var1 == 7) { + for (var5 = 0; var5 < this.anInt3852; ++var5) { + var6 = this.aShortArray3808[var5] & 65535; + var7 = var6 >> 10 & 63; + var8 = var6 >> 7 & 7; + int var9 = var6 & 127; + var7 = var7 + var2 & 63; + var8 += var3 / 4; + if (var8 < 0) { + var8 = 0; + } else if (var8 > 7) { + var8 = 7; + } + + var9 += var4; + if (var9 < 0) { + var9 = 0; + } else if (var9 > 127) { + var9 = 127; + } + + this.aShortArray3808[var5] = (short) (var7 << 10 | var8 << 7 | var9); + } + + this.aClass121_3814.aBoolean1640 = false; + } + } + } + + static void method1929() { + aClass140_Sub1_Sub1_3842 = new Class140_Sub1_Sub1(); + aClass140_Sub1_Sub1_3850 = new Class140_Sub1_Sub1(); + aClass140_Sub1_Sub1_3853 = new Class140_Sub1_Sub1(); + aClass140_Sub1_Sub1_3854 = new Class140_Sub1_Sub1(); + aClass140_Sub1_Sub1_3855 = new Class140_Sub1_Sub1(); + aClass140_Sub1_Sub1_3856 = new Class140_Sub1_Sub1(); + } + + final int method1884() { + if (!this.aClass6_3835.aBoolean98) { + this.method1917(); + } + + return this.aClass6_3835.aShort95; + } + + private void method1930() { + GL var1 = HDToolKit.gl; + if (this.anInt3852 != 0) { + if (this.aByte3836 != 0) { + this.method1922(true, !this.aClass121_3839.aBoolean1640 && (this.aByte3836 & 1) != 0, !this.aClass121_3814.aBoolean1640 && (this.aByte3836 & 2) != 0, this.aClass121_3815 != null && !this.aClass121_3815.aBoolean1640 && (this.aByte3836 & 4) != 0, false); + } + + this.method1922(false, !this.aClass121_3839.aBoolean1640, !this.aClass121_3814.aBoolean1640, this.aClass121_3815 != null && !this.aClass121_3815.aBoolean1640, !this.aClass121_3817.aBoolean1640); + if (!this.aClass121_3846.aBoolean1640) { + this.method1912(); + } + + if (this.aByte3851 != 0) { + if ((this.aByte3851 & 1) != 0) { + this.anIntArray3822 = null; + this.anIntArray3845 = null; + this.anIntArray3848 = null; + this.aShortArray3828 = null; + this.anIntArray3838 = null; + } + + if ((this.aByte3851 & 2) != 0) { + this.aShortArray3808 = null; + this.aByteArray3816 = null; + } + + if ((this.aByte3851 & 4) != 0) { + this.aShortArray3810 = null; + this.aShortArray3826 = null; + this.aShortArray3837 = null; + this.aShortArray3841 = null; + } + + if ((this.aByte3851 & 8) != 0) { + this.aFloatArray3824 = null; + this.aFloatArray3847 = null; + } + + if ((this.aByte3851 & 16) != 0) { + this.aShortArray3811 = null; + this.aShortArray3830 = null; + this.aShortArray3831 = null; + } + + this.aByte3851 = 0; + } + + Class156 var2 = null; + if (this.aClass121_3839.aClass156_1643 != null) { + this.aClass121_3839.aClass156_1643.method2169(); + var2 = this.aClass121_3839.aClass156_1643; + var1.glVertexPointer(3, 5126, this.aClass121_3839.anInt1648, this.aClass121_3839.anInt1639); + } + + if (this.aClass121_3814.aClass156_1643 != null) { + if (var2 != this.aClass121_3814.aClass156_1643) { + this.aClass121_3814.aClass156_1643.method2169(); + var2 = this.aClass121_3814.aClass156_1643; + } + + var1.glColorPointer(4, 5121, this.aClass121_3814.anInt1648, this.aClass121_3814.anInt1639); + } + + if (Class106.aBoolean1441 && this.aClass121_3815.aClass156_1643 != null) { + if (var2 != this.aClass121_3815.aClass156_1643) { + this.aClass121_3815.aClass156_1643.method2169(); + var2 = this.aClass121_3815.aClass156_1643; + } + + var1.glNormalPointer(5126, this.aClass121_3815.anInt1648, this.aClass121_3815.anInt1639); + } + + if (this.aClass121_3817.aClass156_1643 != null) { + if (var2 != this.aClass121_3817.aClass156_1643) { + this.aClass121_3817.aClass156_1643.method2169(); + } + + var1.glTexCoordPointer(2, 5126, this.aClass121_3817.anInt1648, this.aClass121_3817.anInt1639); + } + + if (this.aClass121_3846.aClass156_1643 != null) { + this.aClass121_3846.aClass156_1643.method2171(); + } + + if (this.aClass121_3839.aClass156_1643 == null || this.aClass121_3814.aClass156_1643 == null || Class106.aBoolean1441 && this.aClass121_3815.aClass156_1643 == null || this.aClass121_3817.aClass156_1643 == null) { + if (HDToolKit.supportVertexBufferObject) { + var1.glBindBufferARB('\u8892', 0); + } + + if (this.aClass121_3839.aClass156_1643 == null) { + this.aClass121_3839.aByteBuffer1644.position(this.aClass121_3839.anInt1639); + var1.glVertexPointer(3, 5126, this.aClass121_3839.anInt1648, this.aClass121_3839.aByteBuffer1644); + } + + if (this.aClass121_3814.aClass156_1643 == null) { + this.aClass121_3814.aByteBuffer1644.position(this.aClass121_3814.anInt1639); + var1.glColorPointer(4, 5121, this.aClass121_3814.anInt1648, this.aClass121_3814.aByteBuffer1644); + } + + if (Class106.aBoolean1441 && this.aClass121_3815.aClass156_1643 == null) { + this.aClass121_3815.aByteBuffer1644.position(this.aClass121_3815.anInt1639); + var1.glNormalPointer(5126, this.aClass121_3815.anInt1648, this.aClass121_3815.aByteBuffer1644); + } + + if (this.aClass121_3817.aClass156_1643 == null) { + this.aClass121_3817.aByteBuffer1644.position(this.aClass121_3817.anInt1639); + var1.glTexCoordPointer(2, 5126, this.aClass121_3817.anInt1648, this.aClass121_3817.aByteBuffer1644); + } + } + + if (this.aClass121_3846.aClass156_1643 == null && HDToolKit.supportVertexBufferObject) { + var1.glBindBufferARB('\u8893', 0); + } + + int var3 = this.anIntArray3840.length - 1; + + for (int var4 = 0; var4 < var3; ++var4) { + int var5 = this.anIntArray3840[var4]; + int var6 = this.anIntArray3840[var4 + 1]; + short var7 = this.aShortArray3827[var5]; + if (var7 == -1) { + HDToolKit.bindTexture2D(-1); + Unsorted.method551(0, 0); + } else { + Class51.anInterface2_838.method8(var7 & 65535, true); + } + + if (this.aClass121_3846.aClass156_1643 == null) { + this.aClass121_3846.aByteBuffer1644.position(var5 * 12); + var1.glDrawElements(4, (var6 - var5) * 3, 5125, this.aClass121_3846.aByteBuffer1644); + } else { + var1.glDrawElements(4, (var6 - var5) * 3, 5125, var5 * 12); + } + } + + } + } + + final void method1879() { + for (int var1 = 0; var1 < this.anInt3823; ++var1) { + this.anIntArray3822[var1] = this.anIntArray3822[var1] + 7 >> 4; + this.anIntArray3845[var1] = this.anIntArray3845[var1] + 7 >> 4; + this.anIntArray3848[var1] = this.anIntArray3848[var1] + 7 >> 4; + } + + this.aClass6_3835.aBoolean98 = false; + this.aClass121_3839.aBoolean1640 = false; + } + + final void method1931() { + int var1; + for (var1 = 0; var1 < this.anInt3823; ++var1) { + this.anIntArray3848[var1] = -this.anIntArray3848[var1]; + } + + if (this.aShortArray3837 != null) { + for (var1 = 0; var1 < this.anInt3833; ++var1) { + this.aShortArray3837[var1] = (short) (-this.aShortArray3837[var1]); + } + } + + for (var1 = 0; var1 < this.anInt3852; ++var1) { + short var2 = this.aShortArray3811[var1]; + this.aShortArray3811[var1] = this.aShortArray3831[var1]; + this.aShortArray3831[var1] = var2; + } + + this.aClass6_3835.aBoolean98 = false; + this.aClass121_3839.aBoolean1640 = false; + if (this.aClass121_3815 != null) { + this.aClass121_3815.aBoolean1640 = false; + } + + this.aClass121_3846.aBoolean1640 = false; + } + + final void method1896(int var1) { + int var2 = Class51.anIntArray840[var1]; + int var3 = Class51.anIntArray851[var1]; + + for (int var4 = 0; var4 < this.anInt3823; ++var4) { + int var5 = this.anIntArray3845[var4] * var3 - this.anIntArray3848[var4] * var2 >> 16; + this.anIntArray3848[var4] = this.anIntArray3845[var4] * var2 + this.anIntArray3848[var4] * var3 >> 16; + this.anIntArray3845[var4] = var5; + } + + this.aClass6_3835.aBoolean98 = false; + this.aClass121_3839.aBoolean1640 = false; + } + + final void method1932() { + if (this.aShortArray3810 == null) { + this.method1876(256); + } else { + int var2 = Class51.anIntArray840[256]; + int var3 = Class51.anIntArray851[256]; + + int var4; + int var5; + for (var4 = 0; var4 < this.anInt3823; ++var4) { + var5 = this.anIntArray3848[var4] * var2 + this.anIntArray3822[var4] * var3 >> 16; + this.anIntArray3848[var4] = this.anIntArray3848[var4] * var3 - this.anIntArray3822[var4] * var2 >> 16; + this.anIntArray3822[var4] = var5; + } + + for (var4 = 0; var4 < this.anInt3833; ++var4) { + var5 = this.aShortArray3837[var4] * var2 + this.aShortArray3810[var4] * var3 >> 16; + this.aShortArray3837[var4] = (short) (this.aShortArray3837[var4] * var3 - this.aShortArray3810[var4] * var2 >> 16); + this.aShortArray3810[var4] = (short) var5; + } + + this.aClass6_3835.aBoolean98 = false; + this.aClass121_3839.aBoolean1640 = false; + if (this.aClass121_3815 != null) { + this.aClass121_3815.aBoolean1640 = false; + } + + } + } + + final LDIndexedSprite method1933(LDIndexedSprite var1) { + if (this.anInt3833 == 0) { + return null; + } else { + if (!this.aClass6_3835.aBoolean98) { + this.method1917(); + } + + int var2; + int var3; + if (Class92.lightX > 0) { + var2 = this.aClass6_3835.aShort95 - (this.aClass6_3835.aShort92 * Class92.lightX >> 8) >> 3; + var3 = this.aClass6_3835.aShort94 - (this.aClass6_3835.aShort91 * Class92.lightX >> 8) >> 3; + } else { + var2 = this.aClass6_3835.aShort95 - (this.aClass6_3835.aShort91 * Class92.lightX >> 8) >> 3; + var3 = this.aClass6_3835.aShort94 - (this.aClass6_3835.aShort92 * Class92.lightX >> 8) >> 3; + } + + int var4; + int var5; + if (Class92.lightY > 0) { + var4 = this.aClass6_3835.aShort97 - (this.aClass6_3835.aShort92 * Class92.lightY >> 8) >> 3; + var5 = this.aClass6_3835.aShort96 - (this.aClass6_3835.aShort91 * Class92.lightY >> 8) >> 3; + } else { + var4 = this.aClass6_3835.aShort97 - (this.aClass6_3835.aShort91 * Class92.lightY >> 8) >> 3; + var5 = this.aClass6_3835.aShort96 - (this.aClass6_3835.aShort92 * Class92.lightY >> 8) >> 3; + } + + int var6 = var3 - var2 + 1; + int var7 = var5 - var4 + 1; + LDIndexedSprite var8; + if (var1 != null && var1.raster.length >= var6 * var7) { + var8 = var1; + var1.anInt1469 = var1.width = var6; + var1.anInt1467 = var1.height = var7; + var1.method1671(); + } else { + var8 = new LDIndexedSprite(var6, var7); + } + + var8.anInt1470 = var2; + var8.anInt1464 = var4; + if (anIntArray3861.length < this.anInt3833) { + anIntArray3861 = new int[this.anInt3833]; + anIntArray3857 = new int[this.anInt3833]; + } + + int var9 = 0; + + int var13; + int var14; + int var15; + while (var9 < this.anInt3823) { + int var10 = (this.anIntArray3822[var9] - (this.anIntArray3845[var9] * Class92.lightX >> 8) >> 3) - var2; + int var11 = (this.anIntArray3848[var9] - (this.anIntArray3845[var9] * Class92.lightY >> 8) >> 3) - var4; + int var12 = this.anIntArray3838[var9]; + var13 = this.anIntArray3838[var9 + 1]; + var14 = var12; + + while (true) { + if (var14 < var13) { + var15 = this.aShortArray3828[var14] - 1; + if (var15 != -1) { + anIntArray3861[var15] = var10; + anIntArray3857[var15] = var11; + ++var14; + continue; + } + } + + ++var9; + break; + } + } + + for (var9 = 0; var9 < this.anInt3852; ++var9) { + short var20 = this.aShortArray3811[var9]; + short var19 = this.aShortArray3830[var9]; + short var21 = this.aShortArray3831[var9]; + var13 = anIntArray3861[var20]; + var14 = anIntArray3861[var19]; + var15 = anIntArray3861[var21]; + int var16 = anIntArray3857[var20]; + int var17 = anIntArray3857[var19]; + int var18 = anIntArray3857[var21]; + if ((var13 - var14) * (var17 - var18) - (var17 - var16) * (var15 - var14) > 0) { + Class51.method1147(var8.raster, var16, var17, var18, var13, var14, var15, var6); + } + } + + return var8; + } + } + + final void method1900() { + for (int var1 = 0; var1 < this.anInt3823; ++var1) { + int var2 = this.anIntArray3848[var1]; + this.anIntArray3848[var1] = this.anIntArray3822[var1]; + this.anIntArray3822[var1] = -var2; + } + + this.aClass6_3835.aBoolean98 = false; + this.aClass121_3839.aBoolean1640 = false; + } + + private Class140_Sub1_Sub1() { + } + + Class140_Sub1_Sub1(Model_Sub1 var1, int var2, int var3, boolean var4) { + int[] var5 = new int[var1.anInt2849]; + this.anIntArray3838 = new int[var1.anInt2887 + 1]; + + for (int var6 = 0; var6 < var1.anInt2849; ++var6) { + if ((var1.aByteArray2859 == null || var1.aByteArray2859[var6] != 2) && (var1.aShortArray2858 == null || var1.aShortArray2858[var6] == -1 || !Class51.anInterface2_838.method12(var1.aShortArray2858[var6] & 65535, -65))) { + var5[this.anInt3852++] = var6; + ++this.anIntArray3838[var1.anIntArray2865[var6]]; + ++this.anIntArray3838[var1.anIntArray2878[var6]]; + ++this.anIntArray3838[var1.anIntArray2864[var6]]; + } + } + + long[] var60 = new long[this.anInt3852]; + + int var7; + int var8; + int var9; + int var62; + for (var7 = 0; var7 < this.anInt3852; ++var7) { + var8 = var5[var7]; + var9 = 0; + byte var10 = 0; + int var11 = 0; + int var12 = 0; + short var13 = -1; + if (var1.aShortArray2858 != null) { + var13 = var1.aShortArray2858[var8]; + if (var13 != -1) { + var11 = Class51.anInterface2_838.method18(var13 & 65535, 255); + var12 = Class51.anInterface2_838.method9(var13 & 65535, false); + } + } + + boolean var14 = var1.aByteArray2843 != null && var1.aByteArray2843[var8] != 0 || var13 != -1 && !Class51.anInterface2_838.method7((byte) 88, var13 & 65535); + if ((var4 || var14) && var1.aByteArray2889 != null) { + var9 += var1.aByteArray2889[var8] << 17; + } + + if (var14) { + var9 += 65536; + } + + var9 += (var11 & 0xFF) << 8; + var9 += var12 & 0xFF; + var62 = var10 + ((var13 & 65535) << 16); + var62 += var7 & 65535; + var60[var7] = ((long) var9 << 32) + (long) var62; + } + + Class102.method1614(true, var60, var5); + this.anInt3823 = var1.anInt2887; + this.anIntArray3822 = var1.anIntArray2885; + this.anIntArray3845 = var1.anIntArray2881; + this.anIntArray3848 = var1.anIntArray2892; + this.anIntArray3844 = var1.anIntArray2860; + this.aShortArray3832 = var1.aShortArray2893; + var7 = this.anInt3852 * 3; + this.aShortArray3810 = new short[var7]; + this.aShortArray3826 = new short[var7]; + this.aShortArray3837 = new short[var7]; + this.aShortArray3841 = new short[var7]; + this.aFloatArray3824 = new float[var7]; + this.aFloatArray3847 = new float[var7]; + this.aShortArray3808 = new short[this.anInt3852]; + this.aByteArray3816 = new byte[this.anInt3852]; + this.aShortArray3811 = new short[this.anInt3852]; + this.aShortArray3830 = new short[this.anInt3852]; + this.aShortArray3831 = new short[this.anInt3852]; + this.aShortArray3827 = new short[this.anInt3852]; + if (var1.anIntArray2847 != null) { + this.aByteArray3820 = new byte[this.anInt3852]; + } + + if (var1.aShortArray2855 != null) { + this.aShortArray3813 = new short[this.anInt3852]; + } + + this.aClass6_3835 = new Class6(); + this.aClass121_3839 = new Class121(); + this.aClass121_3814 = new Class121(); + if (Class106.aBoolean1441) { + this.aClass121_3815 = new Class121(); + } + + this.aClass121_3817 = new Class121(); + this.aClass121_3846 = new Class121(); + this.aShort3849 = (short) var2; + this.aShort3819 = (short) var3; + this.aShortArray3828 = new short[var7]; + aLongArray3821 = new long[var7]; + var8 = 0; + + for (var9 = 0; var9 < var1.anInt2887; ++var9) { + var62 = this.anIntArray3838[var9]; + this.anIntArray3838[var9] = var8; + var8 += var62; + } + + this.anIntArray3838[var1.anInt2887] = var8; + int[] var63 = null; + int[] var61 = null; + int[] var64 = null; + float[][] var65 = null; + int var27; + int var68; + float var79; + float var75; + float var82; + if (var1.aByteArray2866 != null) { + var68 = var1.anInt2862; + int[] var69 = new int[var68]; + int[] var15 = new int[var68]; + int[] var16 = new int[var68]; + int[] var17 = new int[var68]; + int[] var18 = new int[var68]; + int[] var19 = new int[var68]; + + int var20; + for (var20 = 0; var20 < var68; ++var20) { + var69[var20] = Integer.MAX_VALUE; + var15[var20] = -2147483647; + var16[var20] = Integer.MAX_VALUE; + var17[var20] = -2147483647; + var18[var20] = Integer.MAX_VALUE; + var19[var20] = -2147483647; + } + + for (var20 = 0; var20 < this.anInt3852; ++var20) { + int var21 = var5[var20]; + if (var1.aByteArray2866[var21] != -1) { + int var22 = var1.aByteArray2866[var21] & 0xFF; + + for (int var23 = 0; var23 < 3; ++var23) { + int var24; + if (var23 == 0) { + var24 = var1.anIntArray2865[var21]; + } else if (var23 == 1) { + var24 = var1.anIntArray2878[var21]; + } else { + var24 = var1.anIntArray2864[var21]; + } + + int var25 = var1.anIntArray2885[var24]; + int var26 = var1.anIntArray2881[var24]; + var27 = var1.anIntArray2892[var24]; + if (var25 < var69[var22]) { + var69[var22] = var25; + } + + if (var25 > var15[var22]) { + var15[var22] = var25; + } + + if (var26 < var16[var22]) { + var16[var22] = var26; + } + + if (var26 > var17[var22]) { + var17[var22] = var26; + } + + if (var27 < var18[var22]) { + var18[var22] = var27; + } + + if (var27 > var19[var22]) { + var19[var22] = var27; + } + } + } + } + + var63 = new int[var68]; + var61 = new int[var68]; + var64 = new int[var68]; + var65 = new float[var68][]; + + for (var20 = 0; var20 < var68; ++var20) { + byte var76 = var1.aByteArray2857[var20]; + if (var76 > 0) { + var63[var20] = (var69[var20] + var15[var20]) / 2; + var61[var20] = (var16[var20] + var17[var20]) / 2; + var64[var20] = (var18[var20] + var19[var20]) / 2; + if (var76 == 1) { + short var80 = var1.aShortArray2888[var20]; + if (var80 == 0) { + var75 = 1.0F; + var79 = 1.0F; + } else if (var80 > 0) { + var75 = 1.0F; + var79 = (float) var80 / 1024.0F; + } else { + var79 = 1.0F; + var75 = (float) (-var80) / 1024.0F; + } + + var82 = 64.0F / (float) (var1.aShortArray2882[var20] & 65535); + } else if (var76 == 2) { + var75 = 64.0F / (float) (var1.aShortArray2888[var20] & 65535); + var82 = 64.0F / (float) (var1.aShortArray2882[var20] & 65535); + var79 = 64.0F / (float) (var1.aShortArray2851[var20] & 65535); + } else { + var75 = (float) var1.aShortArray2888[var20] / 1024.0F; + var82 = (float) var1.aShortArray2882[var20] / 1024.0F; + var79 = (float) var1.aShortArray2851[var20] / 1024.0F; + } + + var65[var20] = method1906(var1.aShortArray2884[var20], var1.aShortArray2846[var20], var1.aShortArray2891[var20], var1.aByteArray2845[var20] & 0xFF, var75, var82, var79); + } + } + } + + short var71; + int var67; + for (var68 = 0; var68 < this.anInt3852; ++var68) { + int var70 = var5[var68]; + var67 = var1.aShortArray2870[var70] & 65535; + if (var1.aShortArray2858 == null) { + var71 = -1; + } else { + var71 = var1.aShortArray2858[var70]; + } + + int var72; + if (var1.aByteArray2866 == null) { + var72 = -1; + } else { + var72 = var1.aByteArray2866[var70]; + } + + int var74; + if (var1.aByteArray2843 == null) { + var74 = 0; + } else { + var74 = var1.aByteArray2843[var70] & 0xFF; + } + + float var73 = 0.0F; + float var78 = 0.0F; + float var77 = 0.0F; + var75 = 0.0F; + var82 = 0.0F; + var79 = 0.0F; + byte var81 = 0; + byte var83 = 0; + var27 = 0; + byte var28; + int var31; + int var87; + if (var71 != -1) { + if (var72 == -1) { + var73 = 0.0F; + var78 = 1.0F; + var77 = 1.0F; + var75 = 1.0F; + var81 = 1; + var82 = 0.0F; + var79 = 0.0F; + var83 = 2; + } else { + var72 &= 255; + var28 = var1.aByteArray2857[var72]; + int var29; + int var30; + float var38; + float var39; + float var37; + float var51; + float var50; + float var49; + float var54; + float var53; + float var52; + if (var28 == 0) { + var29 = var1.anIntArray2865[var70]; + var30 = var1.anIntArray2878[var70]; + var31 = var1.anIntArray2864[var70]; + short var32 = var1.aShortArray2884[var72]; + short var33 = var1.aShortArray2846[var72]; + short var34 = var1.aShortArray2891[var72]; + float var35 = (float) var1.anIntArray2885[var32]; + float var36 = (float) var1.anIntArray2881[var32]; + var37 = (float) var1.anIntArray2892[var32]; + var38 = (float) var1.anIntArray2885[var33] - var35; + var39 = (float) var1.anIntArray2881[var33] - var36; + float var40 = (float) var1.anIntArray2892[var33] - var37; + float var41 = (float) var1.anIntArray2885[var34] - var35; + float var42 = (float) var1.anIntArray2881[var34] - var36; + float var43 = (float) var1.anIntArray2892[var34] - var37; + float var44 = (float) var1.anIntArray2885[var29] - var35; + float var45 = (float) var1.anIntArray2881[var29] - var36; + float var46 = (float) var1.anIntArray2892[var29] - var37; + float var47 = (float) var1.anIntArray2885[var30] - var35; + float var48 = (float) var1.anIntArray2881[var30] - var36; + var49 = (float) var1.anIntArray2892[var30] - var37; + var50 = (float) var1.anIntArray2885[var31] - var35; + var51 = (float) var1.anIntArray2881[var31] - var36; + var52 = (float) var1.anIntArray2892[var31] - var37; + var53 = var39 * var43 - var40 * var42; + var54 = var40 * var41 - var38 * var43; + float var55 = var38 * var42 - var39 * var41; + float var56 = var42 * var55 - var43 * var54; + float var57 = var43 * var53 - var41 * var55; + float var58 = var41 * var54 - var42 * var53; + float var59 = 1.0F / (var56 * var38 + var57 * var39 + var58 * var40); + var73 = (var56 * var44 + var57 * var45 + var58 * var46) * var59; + var77 = (var56 * var47 + var57 * var48 + var58 * var49) * var59; + var82 = (var56 * var50 + var57 * var51 + var58 * var52) * var59; + var56 = var39 * var55 - var40 * var54; + var57 = var40 * var53 - var38 * var55; + var58 = var38 * var54 - var39 * var53; + var59 = 1.0F / (var56 * var41 + var57 * var42 + var58 * var43); + var78 = (var56 * var44 + var57 * var45 + var58 * var46) * var59; + var75 = (var56 * var47 + var57 * var48 + var58 * var49) * var59; + var79 = (var56 * var50 + var57 * var51 + var58 * var52) * var59; + } else { + var29 = var1.anIntArray2865[var70]; + var30 = var1.anIntArray2878[var70]; + var31 = var1.anIntArray2864[var70]; + int var88 = var63[var72]; + var87 = var61[var72]; + int var94 = var64[var72]; + float[] var93 = var65[var72]; + byte var90 = var1.aByteArray2867[var72]; + var37 = (float) var1.aByteArray2877[var72] / 256.0F; + if (var28 == 1) { + var38 = (float) (var1.aShortArray2851[var72] & 65535) / 1024.0F; + method1904(var1.anIntArray2885[var29], var1.anIntArray2881[var29], var1.anIntArray2892[var29], var88, var87, var94, var93, var38, var90, var37); + var73 = aFloat3863; + var78 = aFloat3866; + method1904(var1.anIntArray2885[var30], var1.anIntArray2881[var30], var1.anIntArray2892[var30], var88, var87, var94, var93, var38, var90, var37); + var77 = aFloat3863; + var75 = aFloat3866; + method1904(var1.anIntArray2885[var31], var1.anIntArray2881[var31], var1.anIntArray2892[var31], var88, var87, var94, var93, var38, var90, var37); + var82 = aFloat3863; + var79 = aFloat3866; + var39 = var38 / 2.0F; + if ((var90 & 1) == 0) { + if (var77 - var73 > var39) { + var77 -= var38; + var81 = 1; + } else if (var73 - var77 > var39) { + var77 += var38; + var81 = 2; + } + + if (var82 - var73 > var39) { + var82 -= var38; + var83 = 1; + } else if (var73 - var82 > var39) { + var82 += var38; + var83 = 2; + } + } else { + if (var75 - var78 > var39) { + var75 -= var38; + var81 = 1; + } else if (var78 - var75 > var39) { + var75 += var38; + var81 = 2; + } + + if (var79 - var78 > var39) { + var79 -= var38; + var83 = 1; + } else if (var78 - var79 > var39) { + var79 += var38; + var83 = 2; + } + } + } else if (var28 == 2) { + var38 = (float) var1.aByteArray2852[var72] / 256.0F; + var39 = (float) var1.aByteArray2869[var72] / 256.0F; + int var97 = var1.anIntArray2885[var30] - var1.anIntArray2885[var29]; + int var96 = var1.anIntArray2881[var30] - var1.anIntArray2881[var29]; + int var101 = var1.anIntArray2892[var30] - var1.anIntArray2892[var29]; + int var102 = var1.anIntArray2885[var31] - var1.anIntArray2885[var29]; + int var103 = var1.anIntArray2881[var31] - var1.anIntArray2881[var29]; + int var98 = var1.anIntArray2892[var31] - var1.anIntArray2892[var29]; + int var99 = var96 * var98 - var103 * var101; + int var100 = var101 * var102 - var98 * var97; + int var104 = var97 * var103 - var102 * var96; + var49 = 64.0F / (float) (var1.aShortArray2888[var72] & 65535); + var50 = 64.0F / (float) (var1.aShortArray2882[var72] & 65535); + var51 = 64.0F / (float) (var1.aShortArray2851[var72] & 65535); + var52 = ((float) var99 * var93[0] + (float) var100 * var93[1] + (float) var104 * var93[2]) / var49; + var53 = ((float) var99 * var93[3] + (float) var100 * var93[4] + (float) var104 * var93[5]) / var50; + var54 = ((float) var99 * var93[6] + (float) var100 * var93[7] + (float) var104 * var93[8]) / var51; + var27 = method1901(var52, var53, var54); + method1913(var1.anIntArray2885[var29], var1.anIntArray2881[var29], var1.anIntArray2892[var29], var88, var87, var94, var27, var93, var90, var37, var38, var39); + var73 = aFloat3864; + var78 = aFloat3858; + method1913(var1.anIntArray2885[var30], var1.anIntArray2881[var30], var1.anIntArray2892[var30], var88, var87, var94, var27, var93, var90, var37, var38, var39); + var77 = aFloat3864; + var75 = aFloat3858; + method1913(var1.anIntArray2885[var31], var1.anIntArray2881[var31], var1.anIntArray2892[var31], var88, var87, var94, var27, var93, var90, var37, var38, var39); + var82 = aFloat3864; + var79 = aFloat3858; + } else if (var28 == 3) { + method1910(var1.anIntArray2885[var29], var1.anIntArray2881[var29], var1.anIntArray2892[var29], var88, var87, var94, var93, var90, var37); + var73 = aFloat3867; + var78 = aFloat3860; + method1910(var1.anIntArray2885[var30], var1.anIntArray2881[var30], var1.anIntArray2892[var30], var88, var87, var94, var93, var90, var37); + var77 = aFloat3867; + var75 = aFloat3860; + method1910(var1.anIntArray2885[var31], var1.anIntArray2881[var31], var1.anIntArray2892[var31], var88, var87, var94, var93, var90, var37); + var82 = aFloat3867; + var79 = aFloat3860; + if ((var90 & 1) == 0) { + if (var77 - var73 > 0.5F) { + --var77; + var81 = 1; + } else if (var73 - var77 > 0.5F) { + ++var77; + var81 = 2; + } + + if (var82 - var73 > 0.5F) { + --var82; + var83 = 1; + } else if (var73 - var82 > 0.5F) { + ++var82; + var83 = 2; + } + } else { + if (var75 - var78 > 0.5F) { + --var75; + var81 = 1; + } else if (var78 - var75 > 0.5F) { + ++var75; + var81 = 2; + } + + if (var79 - var78 > 0.5F) { + --var79; + var83 = 1; + } else if (var78 - var79 > 0.5F) { + ++var79; + var83 = 2; + } + } + } + } + } + } + + var1.method1997(); + if (var1.aByteArray2859 == null) { + var28 = 0; + } else { + var28 = var1.aByteArray2859[var70]; + } + + if (var28 == 0) { + long var86 = (long) (var72 << 2) + ((long) (var27 << 24) + (long) (var67 << 8) + (long) var74 << 32); + var31 = var1.anIntArray2865[var70]; + Class50 var89 = var1.aClass50Array2872[var31]; + this.aShortArray3811[var68] = this.method1907(var31, var86, var89.anInt831, var89.anInt821, var89.anInt830, var89.anInt823, var73, var78); + var87 = var1.anIntArray2878[var70]; + Class50 var95 = var1.aClass50Array2872[var87]; + this.aShortArray3830[var68] = this.method1907(var87, var86 + (long) var81, var95.anInt831, var95.anInt821, var95.anInt830, var95.anInt823, var77, var75); + int var92 = var1.anIntArray2864[var70]; + Class50 var91 = var1.aClass50Array2872[var92]; + this.aShortArray3831[var68] = this.method1907(var92, var86 + (long) var83, var91.anInt831, var91.anInt821, var91.anInt830, var91.anInt823, var82, var79); + } else if (var28 == 1) { + Class120 var85 = var1.aClass120Array2886[var70]; + long var84 = (long) ((var72 << 2) + (var85.anInt1634 > 0 ? 1024 : 2048) + (var85.anInt1635 + 256 << 12) + (var85.anInt1632 + 256 << 22)) + ((long) (var27 << 24) + (long) (var67 << 8) + (long) var74 << 32); + this.aShortArray3811[var68] = this.method1907(var1.anIntArray2865[var70], var84, var85.anInt1634, var85.anInt1635, var85.anInt1632, 0, var73, var78); + this.aShortArray3830[var68] = this.method1907(var1.anIntArray2878[var70], var84 + (long) var81, var85.anInt1634, var85.anInt1635, var85.anInt1632, 0, var77, var75); + this.aShortArray3831[var68] = this.method1907(var1.anIntArray2864[var70], var84 + (long) var83, var85.anInt1634, var85.anInt1635, var85.anInt1632, 0, var82, var79); + } + + if (var1.aShortArray2858 == null) { + this.aShortArray3827[var68] = -1; + } else { + this.aShortArray3827[var68] = var1.aShortArray2858[var70]; + } + + if (this.aByteArray3820 != null) { + this.aByteArray3820[var68] = (byte) var1.anIntArray2847[var70]; + } + + this.aShortArray3808[var68] = var1.aShortArray2870[var70]; + if (var1.aByteArray2843 != null) { + this.aByteArray3816[var68] = var1.aByteArray2843[var70]; + } + + if (var1.aShortArray2855 != null) { + this.aShortArray3813[var68] = var1.aShortArray2855[var70]; + } + } + + var68 = 0; + short var66 = -10000; + + for (var67 = 0; var67 < this.anInt3852; ++var67) { + var71 = this.aShortArray3827[var67]; + if (var71 != var66) { + ++var68; + var66 = var71; + } + } + + this.anIntArray3840 = new int[var68 + 1]; + var68 = 0; + var66 = -10000; + + for (var67 = 0; var67 < this.anInt3852; ++var67) { + var71 = this.aShortArray3827[var67]; + if (var71 != var66) { + this.anIntArray3840[var68++] = var67; + var66 = var71; + } + } + + this.anIntArray3840[var68] = this.anInt3852; + aLongArray3821 = null; + this.aShortArray3810 = method1928(this.aShortArray3810, this.anInt3833); + this.aShortArray3826 = method1928(this.aShortArray3826, this.anInt3833); + this.aShortArray3837 = method1928(this.aShortArray3837, this.anInt3833); + this.aShortArray3841 = method1928(this.aShortArray3841, this.anInt3833); + this.aFloatArray3824 = method1921(this.aFloatArray3824, this.anInt3833); + this.aFloatArray3847 = method1921(this.aFloatArray3847, this.anInt3833); + } + +} diff --git a/Client/src/main/java/org/runite/client/Class140_Sub1_Sub2.java b/Client/src/main/java/org/runite/client/Class140_Sub1_Sub2.java new file mode 100644 index 000000000..057f08837 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class140_Sub1_Sub2.java @@ -0,0 +1,2542 @@ +package org.runite.client; + +final class Class140_Sub1_Sub2 extends Model { + + private short[] aShortArray3869; + private int[][] anIntArrayArray3870; + private short[] aShortArray3871; + private int[][] anIntArrayArray3872; + private short aShort3873; + private int[] anIntArray3874; + private byte aByte3875 = 0; + private int[] anIntArray3876; + private boolean aBoolean3877 = false; + private short aShort3878; + private short aShort3879; + private byte[] aByteArray3880; + private int[] anIntArray3881; + private int[] anIntArray3882; + int[] anIntArray3883; + private short aShort3884; + int[] anIntArray3885; + private short aShort3886; + private int[] anIntArray3887; + private short aShort3888; + private int anInt3889 = 0; + private int[] anIntArray3890; + int anInt3891 = 0; + private short aShort3892; + private short[] aShortArray3893; + private short aShort3894; + int[] anIntArray3895; + private int[] anIntArray3896; + boolean aBoolean3897 = false; + private int[] anIntArray3898; + private byte[] aByteArray3899; + private int anInt3900 = 0; + private int[] anIntArray3901; + private static final Class140_Sub1_Sub2 aClass140_Sub1_Sub2_3902 = new Class140_Sub1_Sub2(); + private byte[] aByteArray3903; + private static int[] anIntArray3904 = new int[1]; + private static int[] anIntArray3905 = new int[1]; + private static final Class140_Sub1_Sub2 aClass140_Sub1_Sub2_3906 = new Class140_Sub1_Sub2(); + private static byte[] aByteArray3907 = new byte[1]; + private short[] aShortArray3908; + private static int[] anIntArray3909 = new int[1]; + private static short[] aShortArray3910 = new short[1]; + private static int[] anIntArray3911 = new int[1]; + private static short[] aShortArray3912 = new short[1]; + private static int[] anIntArray3913 = new int[1]; + private static byte[] aByteArray3914 = new byte[1]; + private static final Class140_Sub1_Sub2 aClass140_Sub1_Sub2_3915 = new Class140_Sub1_Sub2(); + private static int[] anIntArray3916 = new int[1]; + private static final boolean[] aBooleanArray3917 = new boolean[4096]; + private static final int[] anIntArray3918 = new int[12]; + private static final int[] anIntArray3919 = new int[10]; + private static final int[] anIntArray3920 = new int[4096]; + private static final int[] anIntArray3921; + private static final int[] anIntArray3922 = new int[4096]; + private static int[][] anIntArrayArray3923; + private static int[] anIntArray3924; + private static final int[] anIntArray3925 = new int[10]; + private static int[][] anIntArrayArray3926; + private static boolean aBoolean3927 = false; + private static final int[] anIntArray3928; + private static int[] anIntArray3929; + private static int anInt3930 = 0; + private static int[] anIntArray3931; + private static final int[] anIntArray3932 = new int[4096]; + private static byte[] aByteArray3933 = new byte[1]; + private static int anInt3934; + private static int[] anIntArray3935; + private static final int[] anIntArray3936 = new int[10]; + private static final boolean[] aBooleanArray3937 = new boolean[4096]; + private static final int[][] anIntArrayArray3938; + private static int[] anIntArray3939; + private static int anInt3940; + private static final int[] anIntArray3941 = new int[4096]; + private static boolean aBoolean3942 = false; + private static final int[] anIntArray3943; + private static final int[] anIntArray3944 = new int[12]; + private static int anInt3945; + private static int[] anIntArray3946; + private static int[] anIntArray3947 = new int[1]; + private static final int[] anIntArray3948 = new int[4096]; + private static short[] aShortArray3949; + private static final int[] anIntArray3950; + + + private void method1934(int var1) { + if(aBooleanArray3917[var1]) { + this.method1942(var1); + } else { + int var2 = this.anIntArray3901[var1]; + int var3 = this.anIntArray3876[var1]; + int var4 = this.anIntArray3887[var1]; + Class51.aBoolean849 = aBooleanArray3937[var1]; + if(this.aByteArray3903 == null) { + Class51.anInt850 = 0; + } else { + Class51.anInt850 = this.aByteArray3903[var1] & 0xFF; + } + + if(this.aShortArray3908 != null && this.aShortArray3908[var1] != -1) { + int var5; + int var6; + int var7; + if(this.aByteArray3899 == null || this.aByteArray3899[var1] == -1) { + var5 = var2; + var6 = var3; + var7 = var4; + } else { + int var8 = this.aByteArray3899[var1] & 0xFF; + var5 = this.anIntArray3882[var8]; + var6 = this.anIntArray3890[var8]; + var7 = this.anIntArray3881[var8]; + } + + if(this.anIntArray3896[var1] == -1) { + Class51.method1138(anIntArray3932[var2], anIntArray3932[var3], anIntArray3932[var4], anIntArray3943[var2], anIntArray3943[var3], anIntArray3943[var4], this.anIntArray3898[var1], this.anIntArray3898[var1], this.anIntArray3898[var1], anIntArray3948[var5], anIntArray3948[var6], anIntArray3948[var7], anIntArray3928[var5], anIntArray3928[var6], anIntArray3928[var7], anIntArray3921[var5], anIntArray3921[var6], anIntArray3921[var7], this.aShortArray3908[var1]); + } else { + Class51.method1138(anIntArray3932[var2], anIntArray3932[var3], anIntArray3932[var4], anIntArray3943[var2], anIntArray3943[var3], anIntArray3943[var4], this.anIntArray3898[var1], this.anIntArray3874[var1], this.anIntArray3896[var1], anIntArray3948[var5], anIntArray3948[var6], anIntArray3948[var7], anIntArray3928[var5], anIntArray3928[var6], anIntArray3928[var7], anIntArray3921[var5], anIntArray3921[var6], anIntArray3921[var7], this.aShortArray3908[var1]); + } + } else if(this.anIntArray3896[var1] == -1) { + Class51.method1144(anIntArray3932[var2], anIntArray3932[var3], anIntArray3932[var4], anIntArray3943[var2], anIntArray3943[var3], anIntArray3943[var4], Class51.anIntArray834[this.anIntArray3898[var1] & 65535]); + } else { + Class51.method1154(anIntArray3932[var2], anIntArray3932[var3], anIntArray3932[var4], anIntArray3943[var2], anIntArray3943[var3], anIntArray3943[var4], this.anIntArray3898[var1] & 65535, this.anIntArray3874[var1] & 65535, this.anIntArray3896[var1] & 65535); + } + + } + } + + final void method1874() { + for(int var1 = 0; var1 < this.anInt3891; ++var1) { + this.anIntArray3885[var1] = -this.anIntArray3885[var1]; + this.anIntArray3895[var1] = -this.anIntArray3895[var1]; + } + + this.aBoolean3897 = false; + } + + static void method1935() { + aBoolean3942 = true; + anIntArray3931 = new int[4096]; + anIntArray3929 = new int[4096]; + anIntArray3946 = null; + anIntArrayArray3926 = null; + anIntArray3935 = null; + anIntArrayArray3923 = null; + } + + private void method1936() { + for(int var4 = 0; var4 < this.anInt3889; ++var4) { + short var3 = this.aShortArray3908 != null?this.aShortArray3908[var4]:-1; + if(var3 == -1) { + int var1 = this.aShortArray3869[var4] & 65535; + int var2; + if(this.anIntArray3896[var4] == -1) { + var2 = this.anIntArray3898[var4] & -131072; + this.anIntArray3898[var4] = var2 | method1940(var1, var2 >> 17); + } else if(this.anIntArray3896[var4] != -2) { + var2 = this.anIntArray3898[var4] & -131072; + this.anIntArray3898[var4] = var2 | method1940(var1, var2 >> 17); + var2 = this.anIntArray3874[var4] & -131072; + this.anIntArray3874[var4] = var2 | method1940(var1, var2 >> 17); + var2 = this.anIntArray3896[var4] & -131072; + this.anIntArray3896[var4] = var2 | method1940(var1, var2 >> 17); + } + } + } + + } + + private static int method1937(int var0) { + if(var0 < 2) { + var0 = 2; + } else if(var0 > 126) { + var0 = 126; + } + + return var0; + } + + static void method1938() { + aBoolean3942 = false; + anIntArray3931 = null; + anIntArray3929 = null; + anIntArray3946 = new int[1600]; + anIntArrayArray3926 = new int[1600][64]; + anIntArray3935 = new int[32]; + anIntArrayArray3923 = new int[32][512]; + } + + final int method1898() { + if(!this.aBoolean3897) { + this.method1947(); + } + + return this.aShort3879; + } + + final int method1871() { + if(!this.aBoolean3897) { + this.method1947(); + } + + return this.aShort3894; + } + + private Model method1939(boolean var1, boolean var2, Class140_Sub1_Sub2 var3, byte[] var4, short[] var5, int[] var6, int[] var7, int[] var8) { + var3.anInt3891 = this.anInt3891; + var3.anInt3889 = this.anInt3889; + var3.anInt3900 = this.anInt3900; + if(var3.anIntArray3885 == null || var3.anIntArray3885.length < this.anInt3891) { + var3.anIntArray3885 = new int[this.anInt3891 + 100]; + var3.anIntArray3883 = new int[this.anInt3891 + 100]; + var3.anIntArray3895 = new int[this.anInt3891 + 100]; + } + + int var9; + for(var9 = 0; var9 < this.anInt3891; ++var9) { + var3.anIntArray3885[var9] = this.anIntArray3885[var9]; + var3.anIntArray3883[var9] = this.anIntArray3883[var9]; + var3.anIntArray3895[var9] = this.anIntArray3895[var9]; + } + + if(var1) { + var3.aByteArray3903 = this.aByteArray3903; + } else { + var3.aByteArray3903 = var4; + if(this.aByteArray3903 == null) { + for(var9 = 0; var9 < this.anInt3889; ++var9) { + var3.aByteArray3903[var9] = 0; + } + } else { + for(var9 = 0; var9 < this.anInt3889; ++var9) { + var3.aByteArray3903[var9] = this.aByteArray3903[var9]; + } + } + } + + if(var2) { + var3.aShortArray3869 = this.aShortArray3869; + var3.anIntArray3898 = this.anIntArray3898; + var3.anIntArray3874 = this.anIntArray3874; + var3.anIntArray3896 = this.anIntArray3896; + } else { + var3.aShortArray3869 = var5; + var3.anIntArray3898 = var6; + var3.anIntArray3874 = var7; + var3.anIntArray3896 = var8; + + for(var9 = 0; var9 < this.anInt3889; ++var9) { + var3.aShortArray3869[var9] = this.aShortArray3869[var9]; + var3.anIntArray3898[var9] = this.anIntArray3898[var9]; + var3.anIntArray3874[var9] = this.anIntArray3874[var9]; + var3.anIntArray3896[var9] = this.anIntArray3896[var9]; + } + } + + var3.anIntArray3901 = this.anIntArray3901; + var3.anIntArray3876 = this.anIntArray3876; + var3.anIntArray3887 = this.anIntArray3887; + var3.aByteArray3880 = this.aByteArray3880; + var3.aByteArray3899 = this.aByteArray3899; + var3.aShortArray3908 = this.aShortArray3908; + var3.aByte3875 = this.aByte3875; + var3.anIntArray3882 = this.anIntArray3882; + var3.anIntArray3890 = this.anIntArray3890; + var3.anIntArray3881 = this.anIntArray3881; + var3.anIntArrayArray3870 = this.anIntArrayArray3870; + var3.anIntArrayArray3872 = this.anIntArrayArray3872; + var3.aShortArray3893 = this.aShortArray3893; + var3.aShortArray3871 = this.aShortArray3871; + var3.aBoolean2699 = this.aBoolean2699; + var3.aBoolean3897 = false; + return var3; + } + + final void method1896(int var1) { + int var2 = Class51.anIntArray840[var1]; + int var3 = Class51.anIntArray851[var1]; + + for(int var4 = 0; var4 < this.anInt3891; ++var4) { + int var5 = this.anIntArray3883[var4] * var3 - this.anIntArray3895[var4] * var2 >> 16; + this.anIntArray3895[var4] = this.anIntArray3883[var4] * var2 + this.anIntArray3895[var4] * var3 >> 16; + this.anIntArray3883[var4] = var5; + } + + this.aBoolean3897 = false; + } + + final boolean method1873() { + if(this.anIntArrayArray3870 == null) { + return false; + } else { + anInt3945 = 0; + anInt3934 = 0; + anInt3940 = 0; + return true; + } + } + + static int method1940(int var0, int var1) { + var1 = var1 * (var0 & 127) >> 7; + if(var1 < 2) { + var1 = 2; + } else if(var1 > 126) { + var1 = 126; + } + + return (var0 & '\uff80') + var1; + } + + final void method1886(int var1) { + int var2 = Class51.anIntArray840[var1]; + int var3 = Class51.anIntArray851[var1]; + + for(int var4 = 0; var4 < this.anInt3891; ++var4) { + int var5 = this.anIntArray3883[var4] * var2 + this.anIntArray3885[var4] * var3 >> 16; + this.anIntArray3883[var4] = this.anIntArray3883[var4] * var3 - this.anIntArray3885[var4] * var2 >> 16; + this.anIntArray3885[var4] = var5; + } + + this.aBoolean3897 = false; + } + + final void animate(int var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, long var9, int var11, Class127_Sub1 var12) { + if(!this.aBoolean3897) { + this.method1947(); + } + + int var15 = var8 * var5 - var6 * var4 >> 16; + int var16 = var7 * var2 + var15 * var3 >> 16; + int var13 = var16 + (this.aShort3884 * var3 + this.aShort3892 * var2 >> 16); + int var14 = var16 + (-this.aShort3884 * var3 + this.aShort3894 * var2 >> 16); + if(var13 > 50) { + if(var14 < 3500) { + int var17 = var8 * var4 + var6 * var5 >> 16; + int var18 = var17 + this.aShort3884 << 9; + if(var18 / var13 > Class139.screenLowerX) { + int var19 = var17 - this.aShort3884 << 9; + if(var19 / var13 < Class145.screenUpperX) { + int var20 = var7 * var3 - var15 * var2 >> 16; + int var21 = var20 + (this.aShort3884 * var2 + this.aShort3892 * var3 >> 16) << 9; + if(var21 / var13 > Class1.screenUpperY) { + int var22 = var20 + (-this.aShort3884 * var2 + this.aShort3894 * var3 >> 16) << 9; + if(var22 / var13 < AtmosphereParser.screenLowerY) { + boolean var23 = false; + boolean var24 = var14 <= 50; + boolean var25 = var24 || this.anInt3900 > 0; + int var26 = Class51.anInt846; + int var27 = Class51.anInt835; + int var28 = 0; + int var29 = 0; + if(var1 != 0) { + var28 = Class51.anIntArray840[var1]; + var29 = Class51.anIntArray851[var1]; + } + + boolean var30 = false; + int var31; + int var34; + int var32; + int var33; + if(var9 > 0L && TextureOperation36.aBoolean3094 && var14 > 0) { + if(var17 > 0) { + var31 = var19 / var13; + var33 = var18 / var14; + } else { + var31 = var19 / var14; + var33 = var18 / var13; + } + + if(var20 > 0) { + var32 = var22 / var13; + var34 = var21 / var14; + } else { + var32 = var22 / var14; + var34 = var21 / var13; + } + + if(Unsorted.anInt3642 >= var31 && Unsorted.anInt3642 <= var33 && RenderAnimationDefinition.anInt384 >= var32 && RenderAnimationDefinition.anInt384 <= var34) { + var31 = 999999; + var33 = -999999; + var32 = 999999; + var34 = -999999; + int[] var35 = new int[]{this.aShort3873, this.aShort3878, this.aShort3873, this.aShort3878, this.aShort3873, this.aShort3878, this.aShort3873, this.aShort3878}; + int[] var36 = new int[]{this.aShort3879, this.aShort3879, this.aShort3888, this.aShort3888, this.aShort3879, this.aShort3879, this.aShort3888, this.aShort3888}; + int[] var37 = new int[]{this.aShort3894, this.aShort3894, this.aShort3894, this.aShort3894, this.aShort3892, this.aShort3892, this.aShort3892, this.aShort3892}; + + for(int var38 = 0; var38 < 8; ++var38) { + int var39 = var35[var38]; + int var40 = var37[var38]; + int var41 = var36[var38]; + int var42; + if(var1 != 0) { + var42 = var41 * var28 + var39 * var29 >> 16; + var41 = var41 * var29 - var39 * var28 >> 16; + var39 = var42; + } + + var39 += var6; + var40 += var7; + var41 += var8; + var42 = var41 * var4 + var39 * var5 >> 16; + var41 = var41 * var5 - var39 * var4 >> 16; + var39 = var42; + var42 = var40 * var3 - var41 * var2 >> 16; + var41 = var40 * var2 + var41 * var3 >> 16; + if(var41 > 0) { + int var43 = (var39 << 9) / var41; + int var44 = (var42 << 9) / var41; + if(var43 < var31) { + var31 = var43; + } + + if(var43 > var33) { + var33 = var43; + } + + if(var44 < var32) { + var32 = var44; + } + + if(var44 > var34) { + var34 = var44; + } + } + } + + if(Unsorted.anInt3642 >= var31 && Unsorted.anInt3642 <= var33 && RenderAnimationDefinition.anInt384 >= var32 && RenderAnimationDefinition.anInt384 <= var34) { + if(this.aBoolean2699) { + TextureOperation38.aLongArray3448[Unsorted.anInt59++] = var9; + } else { + var30 = true; + } + } + } + } + + for(var31 = 0; var31 < this.anInt3891; ++var31) { + var32 = this.anIntArray3885[var31]; + var33 = this.anIntArray3883[var31]; + var34 = this.anIntArray3895[var31]; + int var46; + if(var1 != 0) { + var46 = var34 * var28 + var32 * var29 >> 16; + var34 = var34 * var29 - var32 * var28 >> 16; + var32 = var46; + } + + var32 += var6; + var33 += var7; + var34 += var8; + var46 = var34 * var4 + var32 * var5 >> 16; + var34 = var34 * var5 - var32 * var4 >> 16; + var32 = var46; + var46 = var33 * var3 - var34 * var2 >> 16; + var34 = var33 * var2 + var34 * var3 >> 16; + anIntArray3920[var31] = var34 - var16; + if(var34 >= 50) { + anIntArray3943[var31] = var26 + (var32 << 9) / var34; + anIntArray3932[var31] = var27 + (var46 << 9) / var34; + } else { + anIntArray3943[var31] = -5000; + var23 = true; + } + + if(var25) { + anIntArray3948[var31] = var32; + anIntArray3928[var31] = var46; + anIntArray3921[var31] = var34; + } + } + + try { + this.method1945(var23, var30, var9, var16 - var14, var13 - var14 + 2); + } catch (Exception var45) { + } + + } + } + } + } + } + } + } + + final Class140_Sub1_Sub2 method1941(int var1, int var2, int[][] var3, int[][] var4, int var5, int var6, int var7, boolean var8) { + if(!this.aBoolean3897) { + this.method1947(); + } + + int var9 = var5 + this.aShort3873; + int var10 = var5 + this.aShort3878; + int var11 = var7 + this.aShort3879; + int var12 = var7 + this.aShort3888; + if((var1 == 1 || var1 == 2 || var1 == 3 || var1 == 5) && (var9 < 0 || var10 + 128 >> 7 >= var3.length || var11 < 0 || var12 + 128 >> 7 >= var3[0].length)) { + return this; + } else { + if(var1 == 4 || var1 == 5) { + if(var4 == null) { + return this; + } + + if(var9 < 0 || var10 + 128 >> 7 >= var4.length || var11 < 0 || var12 + 128 >> 7 >= var4[0].length) { + return this; + } + } else { + var9 >>= 7; + var10 = var10 + 127 >> 7; + var11 >>= 7; + var12 = var12 + 127 >> 7; + if(var3[var9][var11] == var6 && var3[var10][var11] == var6 && var3[var9][var12] == var6 && var3[var10][var12] == var6) { + return this; + } + } + + Class140_Sub1_Sub2 var13; + if(var8) { + var13 = new Class140_Sub1_Sub2(); + var13.anInt3891 = this.anInt3891; + var13.anInt3889 = this.anInt3889; + var13.anInt3900 = this.anInt3900; + var13.anIntArray3901 = this.anIntArray3901; + var13.anIntArray3876 = this.anIntArray3876; + var13.anIntArray3887 = this.anIntArray3887; + var13.anIntArray3898 = this.anIntArray3898; + var13.anIntArray3874 = this.anIntArray3874; + var13.anIntArray3896 = this.anIntArray3896; + var13.aByteArray3880 = this.aByteArray3880; + var13.aByteArray3899 = this.aByteArray3899; + var13.aShortArray3908 = this.aShortArray3908; + var13.aShortArray3869 = this.aShortArray3869; + var13.aByteArray3903 = this.aByteArray3903; + var13.aByte3875 = this.aByte3875; + var13.anIntArray3882 = this.anIntArray3882; + var13.anIntArray3890 = this.anIntArray3890; + var13.anIntArray3881 = this.anIntArray3881; + var13.anIntArrayArray3870 = this.anIntArrayArray3870; + var13.anIntArrayArray3872 = this.anIntArrayArray3872; + var13.aShortArray3893 = this.aShortArray3893; + var13.aShortArray3871 = this.aShortArray3871; + var13.aBoolean2699 = this.aBoolean2699; + if(var1 == 3) { + var13.anIntArray3885 = Class65.method1233(this.anIntArray3885); + var13.anIntArray3883 = Class65.method1233(this.anIntArray3883); + var13.anIntArray3895 = Class65.method1233(this.anIntArray3895); + } else { + var13.anIntArray3885 = this.anIntArray3885; + var13.anIntArray3883 = new int[var13.anInt3891]; + var13.anIntArray3895 = this.anIntArray3895; + } + } else { + var13 = this; + } + + int var14; + int var15; + int var17; + int var16; + int var19; + int var18; + int var21; + int var20; + int var23; + int var22; + if(var1 == 1) { + for(var14 = 0; var14 < var13.anInt3891; ++var14) { + var15 = this.anIntArray3885[var14] + var5; + var16 = this.anIntArray3895[var14] + var7; + var17 = var15 & 127; + var18 = var16 & 127; + var19 = var15 >> 7; + var20 = var16 >> 7; + var21 = var3[var19][var20] * (128 - var17) + var3[var19 + 1][var20] * var17 >> 7; + var22 = var3[var19][var20 + 1] * (128 - var17) + var3[var19 + 1][var20 + 1] * var17 >> 7; + var23 = var21 * (128 - var18) + var22 * var18 >> 7; + var13.anIntArray3883[var14] = this.anIntArray3883[var14] + var23 - var6; + } + } else { + int var24; + if(var1 == 2) { + for(var14 = 0; var14 < var13.anInt3891; ++var14) { + var15 = (this.anIntArray3883[var14] << 16) / this.aShort3894; + if(var15 < var2) { + var16 = this.anIntArray3885[var14] + var5; + var17 = this.anIntArray3895[var14] + var7; + var18 = var16 & 127; + var19 = var17 & 127; + var20 = var16 >> 7; + var21 = var17 >> 7; + var22 = var3[var20][var21] * (128 - var18) + var3[var20 + 1][var21] * var18 >> 7; + var23 = var3[var20][var21 + 1] * (128 - var18) + var3[var20 + 1][var21 + 1] * var18 >> 7; + var24 = var22 * (128 - var19) + var23 * var19 >> 7; + var13.anIntArray3883[var14] = this.anIntArray3883[var14] + (var24 - var6) * (var2 - var15) / var2; + } else { + var13.anIntArray3883[var14] = this.anIntArray3883[var14]; + } + } + } else if(var1 == 3) { + var14 = (var2 & 0xFF) * 4; + var15 = (var2 >> 8 & 0xFF) * 4; + var13.method1895(var3, var5, var6, var7, var14, var15); + } else if(var1 == 4) { + var14 = this.aShort3892 - this.aShort3894; + + for(var15 = 0; var15 < this.anInt3891; ++var15) { + var16 = this.anIntArray3885[var15] + var5; + var17 = this.anIntArray3895[var15] + var7; + var18 = var16 & 127; + var19 = var17 & 127; + var20 = var16 >> 7; + var21 = var17 >> 7; + var22 = var4[var20][var21] * (128 - var18) + var4[var20 + 1][var21] * var18 >> 7; + var23 = var4[var20][var21 + 1] * (128 - var18) + var4[var20 + 1][var21 + 1] * var18 >> 7; + var24 = var22 * (128 - var19) + var23 * var19 >> 7; + var13.anIntArray3883[var15] = this.anIntArray3883[var15] + (var24 - var6) + var14; + } + } else if(var1 == 5) { + var14 = this.aShort3892 - this.aShort3894; + + for(var15 = 0; var15 < this.anInt3891; ++var15) { + var16 = this.anIntArray3885[var15] + var5; + var17 = this.anIntArray3895[var15] + var7; + var18 = var16 & 127; + var19 = var17 & 127; + var20 = var16 >> 7; + var21 = var17 >> 7; + var22 = var3[var20][var21] * (128 - var18) + var3[var20 + 1][var21] * var18 >> 7; + var23 = var3[var20][var21 + 1] * (128 - var18) + var3[var20 + 1][var21 + 1] * var18 >> 7; + var24 = var22 * (128 - var19) + var23 * var19 >> 7; + var22 = var4[var20][var21] * (128 - var18) + var4[var20 + 1][var21] * var18 >> 7; + var23 = var4[var20][var21 + 1] * (128 - var18) + var4[var20 + 1][var21 + 1] * var18 >> 7; + int var25 = var22 * (128 - var19) + var23 * var19 >> 7; + int var26 = var24 - var25; + var13.anIntArray3883[var15] = ((this.anIntArray3883[var15] << 8) / var14 * var26 >> 8) - (var6 - var24); + } + } + } + + var13.aBoolean3897 = false; + return var13; + } + } + + final void method1885() { + for(int var1 = 0; var1 < this.anInt3891; ++var1) { + int var2 = this.anIntArray3885[var1]; + this.anIntArray3885[var1] = this.anIntArray3895[var1]; + this.anIntArray3895[var1] = -var2; + } + + this.aBoolean3897 = false; + } + + final void method1893(int var2, int var3, int var4, int var5, int var6, int var7) { + try { + if(!this.aBoolean3897) { + this.method1947(); + } + + int var10 = Class51.anInt846; + int var11 = Class51.anInt835; + int var14 = Class51.anIntArray840[var2]; + int var15 = Class51.anIntArray851[var2]; + int var16 = Class51.anIntArray840[var3]; + int var17 = Class51.anIntArray851[var3]; + int var18 = Class51.anIntArray840[var4]; + int var19 = Class51.anIntArray851[var4]; + int var20 = var6 * var18 + var7 * var19 >> 16; + + for(int var21 = 0; var21 < this.anInt3891; ++var21) { + int var22 = this.anIntArray3885[var21]; + int var23 = this.anIntArray3883[var21]; + int var24 = this.anIntArray3895[var21]; + int var25; + if(var3 != 0) { + var25 = var23 * var16 + var22 * var17 >> 16; + var23 = var23 * var17 - var22 * var16 >> 16; + var22 = var25; + } + + if(var2 != 0) { + var25 = var24 * var14 + var22 * var15 >> 16; + var24 = var24 * var15 - var22 * var14 >> 16; + var22 = var25; + } + + var22 += var5; + var23 += var6; + var24 += var7; + var25 = var23 * var19 - var24 * var18 >> 16; + var24 = var23 * var18 + var24 * var19 >> 16; + anIntArray3920[var21] = var24 - var20; + anIntArray3943[var21] = var10 + (var22 << 9) / var24; + anIntArray3932[var21] = var11 + (var25 << 9) / var24; + if(this.anInt3900 > 0) { + anIntArray3948[var21] = var22; + anIntArray3928[var21] = var25; + anIntArray3921[var21] = var24; + } + } + + this.method1945(false, false, -1, this.aShort3886, this.aShort3886 << 1); + } catch (RuntimeException var26) { + } + + } + + private void method1942(int var1) { + int var2 = Class51.anInt846; + int var3 = Class51.anInt835; + int var4 = 0; + int var5 = this.anIntArray3901[var1]; + int var6 = this.anIntArray3876[var1]; + int var7 = this.anIntArray3887[var1]; + int var8 = anIntArray3921[var5]; + int var9 = anIntArray3921[var6]; + int var10 = anIntArray3921[var7]; + if(this.aByteArray3903 == null) { + Class51.anInt850 = 0; + } else { + Class51.anInt850 = this.aByteArray3903[var1] & 0xFF; + } + + int var11; + int var12; + int var13; + int var14; + if(var8 >= 50) { + anIntArray3919[var4] = anIntArray3943[var5]; + anIntArray3925[var4] = anIntArray3932[var5]; + anIntArray3936[var4++] = this.anIntArray3898[var1] & 65535; + } else { + var11 = anIntArray3948[var5]; + var12 = anIntArray3928[var5]; + var13 = this.anIntArray3898[var1] & 65535; + if(var10 >= 50) { + var14 = (50 - var8) * Class51.anIntArray841[var10 - var8]; + anIntArray3919[var4] = var2 + (var11 + ((anIntArray3948[var7] - var11) * var14 >> 16) << 9) / 50; + anIntArray3925[var4] = var3 + (var12 + ((anIntArray3928[var7] - var12) * var14 >> 16) << 9) / 50; + anIntArray3936[var4++] = var13 + (((this.anIntArray3896[var1] & 65535) - var13) * var14 >> 16); + } + + if(var9 >= 50) { + var14 = (50 - var8) * Class51.anIntArray841[var9 - var8]; + anIntArray3919[var4] = var2 + (var11 + ((anIntArray3948[var6] - var11) * var14 >> 16) << 9) / 50; + anIntArray3925[var4] = var3 + (var12 + ((anIntArray3928[var6] - var12) * var14 >> 16) << 9) / 50; + anIntArray3936[var4++] = var13 + (((this.anIntArray3874[var1] & 65535) - var13) * var14 >> 16); + } + } + + if(var9 >= 50) { + anIntArray3919[var4] = anIntArray3943[var6]; + anIntArray3925[var4] = anIntArray3932[var6]; + anIntArray3936[var4++] = this.anIntArray3874[var1] & 65535; + } else { + var11 = anIntArray3948[var6]; + var12 = anIntArray3928[var6]; + var13 = this.anIntArray3874[var1] & 65535; + if(var8 >= 50) { + var14 = (50 - var9) * Class51.anIntArray841[var8 - var9]; + anIntArray3919[var4] = var2 + (var11 + ((anIntArray3948[var5] - var11) * var14 >> 16) << 9) / 50; + anIntArray3925[var4] = var3 + (var12 + ((anIntArray3928[var5] - var12) * var14 >> 16) << 9) / 50; + anIntArray3936[var4++] = var13 + (((this.anIntArray3898[var1] & 65535) - var13) * var14 >> 16); + } + + if(var10 >= 50) { + var14 = (50 - var9) * Class51.anIntArray841[var10 - var9]; + anIntArray3919[var4] = var2 + (var11 + ((anIntArray3948[var7] - var11) * var14 >> 16) << 9) / 50; + anIntArray3925[var4] = var3 + (var12 + ((anIntArray3928[var7] - var12) * var14 >> 16) << 9) / 50; + anIntArray3936[var4++] = var13 + (((this.anIntArray3896[var1] & 65535) - var13) * var14 >> 16); + } + } + + if(var10 >= 50) { + anIntArray3919[var4] = anIntArray3943[var7]; + anIntArray3925[var4] = anIntArray3932[var7]; + anIntArray3936[var4++] = this.anIntArray3896[var1] & 65535; + } else { + var11 = anIntArray3948[var7]; + var12 = anIntArray3928[var7]; + var13 = this.anIntArray3896[var1] & 65535; + if(var9 >= 50) { + var14 = (50 - var10) * Class51.anIntArray841[var9 - var10]; + anIntArray3919[var4] = var2 + (var11 + ((anIntArray3948[var6] - var11) * var14 >> 16) << 9) / 50; + anIntArray3925[var4] = var3 + (var12 + ((anIntArray3928[var6] - var12) * var14 >> 16) << 9) / 50; + anIntArray3936[var4++] = var13 + (((this.anIntArray3874[var1] & 65535) - var13) * var14 >> 16); + } + + if(var8 >= 50) { + var14 = (50 - var10) * Class51.anIntArray841[var8 - var10]; + anIntArray3919[var4] = var2 + (var11 + ((anIntArray3948[var5] - var11) * var14 >> 16) << 9) / 50; + anIntArray3925[var4] = var3 + (var12 + ((anIntArray3928[var5] - var12) * var14 >> 16) << 9) / 50; + anIntArray3936[var4++] = var13 + (((this.anIntArray3898[var1] & 65535) - var13) * var14 >> 16); + } + } + + var11 = anIntArray3919[0]; + var12 = anIntArray3919[1]; + var13 = anIntArray3919[2]; + var14 = anIntArray3925[0]; + int var15 = anIntArray3925[1]; + int var16 = anIntArray3925[2]; + Class51.aBoolean849 = false; + int var17; + int var19; + int var18; + int var20; + if(var4 == 3) { + if(var11 < 0 || var12 < 0 || var13 < 0 || var11 > Class51.anInt847 || var12 > Class51.anInt847 || var13 > Class51.anInt847) { + Class51.aBoolean849 = true; + } + + if(this.aShortArray3908 != null && this.aShortArray3908[var1] != -1) { + if(this.aByteArray3899 == null || this.aByteArray3899[var1] == -1) { + var17 = var5; + var18 = var6; + var19 = var7; + } else { + var20 = this.aByteArray3899[var1] & 0xFF; + var17 = this.anIntArray3882[var20]; + var18 = this.anIntArray3890[var20]; + var19 = this.anIntArray3881[var20]; + } + + if(this.anIntArray3896[var1] == -1) { + Class51.method1138(var14, var15, var16, var11, var12, var13, this.anIntArray3898[var1], this.anIntArray3898[var1], this.anIntArray3898[var1], anIntArray3948[var17], anIntArray3948[var18], anIntArray3948[var19], anIntArray3928[var17], anIntArray3928[var18], anIntArray3928[var19], anIntArray3921[var17], anIntArray3921[var18], anIntArray3921[var19], this.aShortArray3908[var1]); + } else { + Class51.method1138(var14, var15, var16, var11, var12, var13, anIntArray3936[0], anIntArray3936[1], anIntArray3936[2], anIntArray3948[var17], anIntArray3948[var18], anIntArray3948[var19], anIntArray3928[var17], anIntArray3928[var18], anIntArray3928[var19], anIntArray3921[var17], anIntArray3921[var18], anIntArray3921[var19], this.aShortArray3908[var1]); + } + } else if(this.anIntArray3896[var1] == -1) { + Class51.method1144(var14, var15, var16, var11, var12, var13, Class51.anIntArray834[this.anIntArray3898[var1] & 65535]); + } else { + Class51.method1154(var14, var15, var16, var11, var12, var13, anIntArray3936[0], anIntArray3936[1], anIntArray3936[2]); + } + } + + if(var4 == 4) { + if(var11 < 0 || var12 < 0 || var13 < 0 || var11 > Class51.anInt847 || var12 > Class51.anInt847 || var13 > Class51.anInt847 || anIntArray3919[3] < 0 || anIntArray3919[3] > Class51.anInt847) { + Class51.aBoolean849 = true; + } + + if(this.aShortArray3908 != null && this.aShortArray3908[var1] != -1) { + if(this.aByteArray3899 == null || this.aByteArray3899[var1] == -1) { + var17 = var5; + var18 = var6; + var19 = var7; + } else { + var20 = this.aByteArray3899[var1] & 0xFF; + var17 = this.anIntArray3882[var20]; + var18 = this.anIntArray3890[var20]; + var19 = this.anIntArray3881[var20]; + } + + short var21 = this.aShortArray3908[var1]; + if(this.anIntArray3896[var1] == -1) { + Class51.method1138(var14, var15, var16, var11, var12, var13, this.anIntArray3898[var1], this.anIntArray3898[var1], this.anIntArray3898[var1], anIntArray3948[var17], anIntArray3948[var18], anIntArray3948[var19], anIntArray3928[var17], anIntArray3928[var18], anIntArray3928[var19], anIntArray3921[var17], anIntArray3921[var18], anIntArray3921[var19], var21); + Class51.method1138(var14, var16, anIntArray3925[3], var11, var13, anIntArray3919[3], this.anIntArray3898[var1], this.anIntArray3898[var1], this.anIntArray3898[var1], anIntArray3948[var17], anIntArray3948[var18], anIntArray3948[var19], anIntArray3928[var17], anIntArray3928[var18], anIntArray3928[var19], anIntArray3921[var17], anIntArray3921[var18], anIntArray3921[var19], var21); + } else { + Class51.method1138(var14, var15, var16, var11, var12, var13, anIntArray3936[0], anIntArray3936[1], anIntArray3936[2], anIntArray3948[var17], anIntArray3948[var18], anIntArray3948[var19], anIntArray3928[var17], anIntArray3928[var18], anIntArray3928[var19], anIntArray3921[var17], anIntArray3921[var18], anIntArray3921[var19], var21); + Class51.method1138(var14, var16, anIntArray3925[3], var11, var13, anIntArray3919[3], anIntArray3936[0], anIntArray3936[2], anIntArray3936[3], anIntArray3948[var17], anIntArray3948[var18], anIntArray3948[var19], anIntArray3928[var17], anIntArray3928[var18], anIntArray3928[var19], anIntArray3921[var17], anIntArray3921[var18], anIntArray3921[var19], var21); + } + } else if(this.anIntArray3896[var1] == -1) { + var17 = Class51.anIntArray834[this.anIntArray3898[var1] & 65535]; + Class51.method1144(var14, var15, var16, var11, var12, var13, var17); + Class51.method1144(var14, var16, anIntArray3925[3], var11, var13, anIntArray3919[3], var17); + } else { + Class51.method1154(var14, var15, var16, var11, var12, var13, anIntArray3936[0], anIntArray3936[1], anIntArray3936[2]); + Class51.method1154(var14, var16, anIntArray3925[3], var11, var13, anIntArray3919[3], anIntArray3936[0], anIntArray3936[2], anIntArray3936[3]); + } + } + + } + + final int method1872() { + if(!this.aBoolean3897) { + this.method1947(); + } + + return this.aShort3888; + } + + final void resize(int var1, int var2, int var3) { + for(int var4 = 0; var4 < this.anInt3891; ++var4) { + this.anIntArray3885[var4] = this.anIntArray3885[var4] * var1 / 128; + this.anIntArray3883[var4] = this.anIntArray3883[var4] * var2 / 128; + this.anIntArray3895[var4] = this.anIntArray3895[var4] * var3 / 128; + } + + this.aBoolean3897 = false; + } + + final Model method1882(boolean var1, boolean var2, boolean var3) { + if(!var1 && aByteArray3914.length < this.anInt3889) { + aByteArray3914 = new byte[this.anInt3889 + 100]; + } + + if(!var2 && aShortArray3912.length < this.anInt3889) { + anIntArray3913 = new int[this.anInt3889 + 100]; + anIntArray3916 = new int[this.anInt3889 + 100]; + anIntArray3911 = new int[this.anInt3889 + 100]; + aShortArray3912 = new short[this.anInt3889 + 100]; + } + + return this.method1939(var1, var2, aClass140_Sub1_Sub2_3906, aByteArray3914, aShortArray3912, anIntArray3913, anIntArray3916, anIntArray3911); + } + + final int method1888() { + if(!this.aBoolean3897) { + this.method1947(); + } + + return this.aShort3884; + } + + final Model method1943(Model var1) { + return new Class140_Sub1_Sub2(new Class140_Sub1_Sub2[]{this, (Class140_Sub1_Sub2)var1}); + } + + final int method1883() { + if(!this.aBoolean3897) { + this.method1947(); + } + + return this.aShort3878; + } + + final void method1879() { + if(this.aBoolean3877) { + this.method1936(); + this.aBoolean3877 = false; + } + + this.aBoolean3897 = false; + } + + final void method1876(int var1) { + int var2 = Class51.anIntArray840[var1]; + int var3 = Class51.anIntArray851[var1]; + + for(int var4 = 0; var4 < this.anInt3891; ++var4) { + int var5 = this.anIntArray3895[var4] * var2 + this.anIntArray3885[var4] * var3 >> 16; + this.anIntArray3895[var4] = this.anIntArray3895[var4] * var3 - this.anIntArray3885[var4] * var2 >> 16; + this.anIntArray3885[var4] = var5; + } + + this.aBoolean3897 = false; + } + + final void method1891(int var1, int[] var2, int var3, int var4, int var5, boolean var6) { + int var7 = var2.length; + int var8; + int var9; + int var12; + int var13; + if(var1 == 0) { + var8 = 0; + anInt3945 = 0; + anInt3934 = 0; + anInt3940 = 0; + + for(var9 = 0; var9 < var7; ++var9) { + int var17 = var2[var9]; + if(var17 < this.anIntArrayArray3870.length) { + int[] var18 = this.anIntArrayArray3870[var17]; + + for(var12 = 0; var12 < var18.length; ++var12) { + var13 = var18[var12]; + anInt3945 += this.anIntArray3885[var13]; + anInt3934 += this.anIntArray3883[var13]; + anInt3940 += this.anIntArray3895[var13]; + ++var8; + } + } + } + + if(var8 > 0) { + anInt3945 = anInt3945 / var8 + var3; + anInt3934 = anInt3934 / var8 + var4; + anInt3940 = anInt3940 / var8 + var5; + } else { + anInt3945 = var3; + anInt3934 = var4; + anInt3940 = var5; + } + + } else { + int[] var10; + int var11; + if(var1 == 1) { + for(var8 = 0; var8 < var7; ++var8) { + var9 = var2[var8]; + if(var9 < this.anIntArrayArray3870.length) { + var10 = this.anIntArrayArray3870[var9]; + + for(var11 = 0; var11 < var10.length; ++var11) { + var12 = var10[var11]; + this.anIntArray3885[var12] += var3; + this.anIntArray3883[var12] += var4; + this.anIntArray3895[var12] += var5; + } + } + } + + } else { + int var14; + int var15; + if(var1 == 2) { + for(var8 = 0; var8 < var7; ++var8) { + var9 = var2[var8]; + if(var9 < this.anIntArrayArray3870.length) { + var10 = this.anIntArrayArray3870[var9]; + + for(var11 = 0; var11 < var10.length; ++var11) { + var12 = var10[var11]; + this.anIntArray3885[var12] -= anInt3945; + this.anIntArray3883[var12] -= anInt3934; + this.anIntArray3895[var12] -= anInt3940; + if(var5 != 0) { + var13 = Class51.anIntArray840[var5]; + var14 = Class51.anIntArray851[var5]; + var15 = this.anIntArray3883[var12] * var13 + this.anIntArray3885[var12] * var14 + 32767 >> 16; + this.anIntArray3883[var12] = this.anIntArray3883[var12] * var14 - this.anIntArray3885[var12] * var13 + 32767 >> 16; + this.anIntArray3885[var12] = var15; + } + + if(var3 != 0) { + var13 = Class51.anIntArray840[var3]; + var14 = Class51.anIntArray851[var3]; + var15 = this.anIntArray3883[var12] * var14 - this.anIntArray3895[var12] * var13 + 32767 >> 16; + this.anIntArray3895[var12] = this.anIntArray3883[var12] * var13 + this.anIntArray3895[var12] * var14 + 32767 >> 16; + this.anIntArray3883[var12] = var15; + } + + if(var4 != 0) { + var13 = Class51.anIntArray840[var4]; + var14 = Class51.anIntArray851[var4]; + var15 = this.anIntArray3895[var12] * var13 + this.anIntArray3885[var12] * var14 + 32767 >> 16; + this.anIntArray3895[var12] = this.anIntArray3895[var12] * var14 - this.anIntArray3885[var12] * var13 + 32767 >> 16; + this.anIntArray3885[var12] = var15; + } + + this.anIntArray3885[var12] += anInt3945; + this.anIntArray3883[var12] += anInt3934; + this.anIntArray3895[var12] += anInt3940; + } + } + } + + } else if(var1 == 3) { + for(var8 = 0; var8 < var7; ++var8) { + var9 = var2[var8]; + if(var9 < this.anIntArrayArray3870.length) { + var10 = this.anIntArrayArray3870[var9]; + + for(var11 = 0; var11 < var10.length; ++var11) { + var12 = var10[var11]; + this.anIntArray3885[var12] -= anInt3945; + this.anIntArray3883[var12] -= anInt3934; + this.anIntArray3895[var12] -= anInt3940; + this.anIntArray3885[var12] = this.anIntArray3885[var12] * var3 / 128; + this.anIntArray3883[var12] = this.anIntArray3883[var12] * var4 / 128; + this.anIntArray3895[var12] = this.anIntArray3895[var12] * var5 / 128; + this.anIntArray3885[var12] += anInt3945; + this.anIntArray3883[var12] += anInt3934; + this.anIntArray3895[var12] += anInt3940; + } + } + } + + } else if(var1 == 5) { + if(this.anIntArrayArray3872 != null && this.aByteArray3903 != null) { + for(var8 = 0; var8 < var7; ++var8) { + var9 = var2[var8]; + if(var9 < this.anIntArrayArray3872.length) { + var10 = this.anIntArrayArray3872[var9]; + + for(var11 = 0; var11 < var10.length; ++var11) { + var12 = var10[var11]; + var13 = (this.aByteArray3903[var12] & 0xFF) + var3 * 8; + if(var13 < 0) { + var13 = 0; + } else if(var13 > 255) { + var13 = 255; + } + + this.aByteArray3903[var12] = (byte)var13; + } + } + } + } + + } else if(var1 == 7) { + if(this.anIntArrayArray3872 != null) { + for(var8 = 0; var8 < var7; ++var8) { + var9 = var2[var8]; + if(var9 < this.anIntArrayArray3872.length) { + var10 = this.anIntArrayArray3872[var9]; + + for(var11 = 0; var11 < var10.length; ++var11) { + var12 = var10[var11]; + var13 = this.aShortArray3869[var12] & 65535; + var14 = var13 >> 10 & 63; + var15 = var13 >> 7 & 7; + int var16 = var13 & 127; + var14 = var14 + var3 & 63; + var15 += var4; + if(var15 < 0) { + var15 = 0; + } else if(var15 > 7) { + var15 = 7; + } + + var16 += var5; + if(var16 < 0) { + var16 = 0; + } else if(var16 > 127) { + var16 = 127; + } + + this.aShortArray3869[var12] = (short)(var14 << 10 | var15 << 7 | var16); + } + + this.aBoolean3877 = true; + } + } + } + + } + } + } + } + + private boolean method1944(int var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8) { + return (var2 >= var3 || var2 >= var4 || var2 >= var5) && ((var2 <= var3 || var2 <= var4 || var2 <= var5) && ((var1 >= var6 || var1 >= var7 || var1 >= var8) && (var1 <= var6 || var1 <= var7 || var1 <= var8))); + } + + final Model method1894(boolean var1, boolean var2, boolean var3) { + if(!var1 && aByteArray3907.length < this.anInt3889) { + aByteArray3907 = new byte[this.anInt3889 + 100]; + } + + if(!var2 && aShortArray3910.length < this.anInt3889) { + anIntArray3905 = new int[this.anInt3889 + 100]; + anIntArray3909 = new int[this.anInt3889 + 100]; + anIntArray3904 = new int[this.anInt3889 + 100]; + aShortArray3910 = new short[this.anInt3889 + 100]; + } + + return this.method1939(var1, var2, aClass140_Sub1_Sub2_3902, aByteArray3907, aShortArray3910, anIntArray3905, anIntArray3909, anIntArray3904); + } + + private void method1945(boolean var1, boolean var2, long var3, int var5, int var6) { + if(var6 < 1600) { + int var8 = 0; + int var9 = 0; + int var10; + if(!aBoolean3942) { + for(var10 = 0; var10 < 1600; ++var10) { + anIntArray3946[var10] = 0; + } + + for(var10 = 0; var10 < 32; ++var10) { + anIntArray3935[var10] = 0; + } + + anInt3930 = 0; + } + + int var11; + int var12; + int var13; + int var14; + int var15; + int var17; + int var19; + int var18; + int var21; + for(var10 = 0; var10 < this.anInt3889; ++var10) { + if(this.anIntArray3896[var10] != -2) { + var11 = this.anIntArray3901[var10]; + var12 = this.anIntArray3876[var10]; + var13 = this.anIntArray3887[var10]; + var14 = anIntArray3943[var11]; + var15 = anIntArray3943[var12]; + int var16 = anIntArray3943[var13]; + if(var1 && (var14 == -5000 || var15 == -5000 || var16 == -5000)) { + var17 = anIntArray3948[var11]; + var18 = anIntArray3948[var12]; + var19 = anIntArray3948[var13]; + int var20 = anIntArray3928[var11]; + var21 = anIntArray3928[var12]; + int var22 = anIntArray3928[var13]; + int var23 = anIntArray3921[var11]; + int var24 = anIntArray3921[var12]; + int var25 = anIntArray3921[var13]; + var17 -= var18; + var19 -= var18; + var20 -= var21; + var22 -= var21; + var23 -= var24; + var25 -= var24; + int var26 = var20 * var25 - var23 * var22; + int var27 = var23 * var19 - var17 * var25; + int var28 = var17 * var22 - var20 * var19; + if(var18 * var26 + var21 * var27 + var24 * var28 > 0) { + aBooleanArray3917[var10] = true; + if(aBoolean3942) { + anIntArray3931[var8] = (anIntArray3920[var11] + anIntArray3920[var12] + anIntArray3920[var13]) / 3; + anIntArray3929[var8++] = var10; + } else { + int var29 = (anIntArray3920[var11] + anIntArray3920[var12] + anIntArray3920[var13]) / 3 + var5; + if(anIntArray3946[var29] < 64) { + anIntArrayArray3926[var29][anIntArray3946[var29]++] = var10; + } else { + int var30 = anIntArray3946[var29]; + if(var30 == 64) { + if(anInt3930 == 512) { + continue; + } + + anIntArray3946[var29] = var30 = 65 + anInt3930++; + } + + var30 -= 65; + anIntArrayArray3923[var30][anIntArray3935[var30]++] = var10; + } + } + } + } else { + if(var2 && this.method1944(Unsorted.anInt3642 + Class51.anInt846, RenderAnimationDefinition.anInt384 + Class51.anInt835, anIntArray3932[var11], anIntArray3932[var12], anIntArray3932[var13], var14, var15, var16)) { + TextureOperation38.aLongArray3448[Unsorted.anInt59++] = var3; + var2 = false; + } + + if((var14 - var15) * (anIntArray3932[var13] - anIntArray3932[var12]) - (anIntArray3932[var11] - anIntArray3932[var12]) * (var16 - var15) > 0) { + aBooleanArray3917[var10] = false; + aBooleanArray3937[var10] = var14 < 0 || var15 < 0 || var16 < 0 || var14 > Class51.anInt847 || var15 > Class51.anInt847 || var16 > Class51.anInt847; + + if(aBoolean3942) { + anIntArray3931[var8] = (anIntArray3920[var11] + anIntArray3920[var12] + anIntArray3920[var13]) / 3; + anIntArray3929[var8++] = var10; + } else { + var17 = (anIntArray3920[var11] + anIntArray3920[var12] + anIntArray3920[var13]) / 3 + var5; + if(anIntArray3946[var17] < 64) { + anIntArrayArray3926[var17][anIntArray3946[var17]++] = var10; + } else { + var18 = anIntArray3946[var17]; + if(var18 == 64) { + if(anInt3930 == 512) { + continue; + } + + anIntArray3946[var17] = var18 = 65 + anInt3930++; + } + + var18 -= 65; + anIntArrayArray3923[var18][anIntArray3935[var18]++] = var10; + } + } + } + } + } + } + + if(aBoolean3942) { + Class101.method1607(0, var8 - 1, false, anIntArray3931, anIntArray3929); + if(this.aByteArray3880 == null) { + for(var10 = 0; var10 < var8; ++var10) { + this.method1934(anIntArray3929[var10]); + } + + return; + } + + for(var10 = 0; var10 < 12; ++var10) { + anIntArray3918[var10] = 0; + anIntArray3944[var10] = 0; + } + + for(var10 = 0; var10 < var8; ++var10) { + var11 = anIntArray3929[var10]; + var12 = anIntArray3931[var10]; + byte var32 = this.aByteArray3880[var11]; + var14 = anIntArray3918[var32]++; + anIntArrayArray3938[var32][var14] = var11; + if(var32 < 10) { + anIntArray3944[var32] += var12; + } else if(var32 == 10) { + anIntArray3922[var14] = var12; + } else { + anIntArray3941[var14] = var12; + } + } + } else { + int[] var31; + if(this.aByteArray3880 == null) { + for(var10 = var6 - 1; var10 >= 0; --var10) { + var11 = anIntArray3946[var10]; + if(var11 > 0) { + var12 = var11 > 64?64:var11; + var31 = anIntArrayArray3926[var10]; + + for(var14 = 0; var14 < var12; ++var14) { + var15 = var31[var14]; + if(var15 < 65536) { + this.method1934(var31[var14]); + } + } + } + + if(var11 > 64) { + var12 = anIntArray3946[var10] - 64 - 1; + var31 = anIntArrayArray3923[var12]; + + for(var14 = 0; var14 < anIntArray3935[var12]; ++var14) { + var15 = var31[var14]; + if(var15 < 65536) { + this.method1934(var31[var14]); + } + } + } + } + + return; + } + + for(var10 = 0; var10 < 12; ++var10) { + anIntArray3918[var10] = 0; + anIntArray3944[var10] = 0; + } + + for(var10 = var6 - 1; var10 >= 0; --var10) { + var11 = anIntArray3946[var10]; + byte var33; + if(var11 > 0) { + if(var11 > 64) { + var12 = 64; + } else { + var12 = var11; + } + + var31 = anIntArrayArray3926[var10]; + + for(var14 = 0; var14 < var12; ++var14) { + var15 = var31[var14]; + if(var15 < 65536) { + var33 = this.aByteArray3880[var15]; + var17 = anIntArray3918[var33]++; + anIntArrayArray3938[var33][var17] = var15; + if(var33 < 10) { + anIntArray3944[var33] += var10; + } else if(var33 == 10) { + anIntArray3922[var17] = var10; + } else { + anIntArray3941[var17] = var10; + } + } else { + anIntArray3950[var9++] = (var15 >> 16) - 1; + } + } + } + + if(var11 > 64) { + var12 = anIntArray3946[var10] - 64 - 1; + var31 = anIntArrayArray3923[var12]; + + for(var14 = 0; var14 < anIntArray3935[var12]; ++var14) { + var15 = var31[var14]; + if(var15 < 65536) { + var33 = this.aByteArray3880[var15]; + var17 = anIntArray3918[var33]++; + anIntArrayArray3938[var33][var17] = var15; + if(var33 < 10) { + anIntArray3944[var33] += var10; + } else if(var33 == 10) { + anIntArray3922[var17] = var10; + } else { + anIntArray3941[var17] = var10; + } + } else { + anIntArray3950[var9++] = (var15 >> 16) - 1; + } + } + } + } + } + + var10 = 0; + if(anIntArray3918[1] > 0 || anIntArray3918[2] > 0) { + var10 = (anIntArray3944[1] + anIntArray3944[2]) / (anIntArray3918[1] + anIntArray3918[2]); + } + + var11 = 0; + if(anIntArray3918[3] > 0 || anIntArray3918[4] > 0) { + var11 = (anIntArray3944[3] + anIntArray3944[4]) / (anIntArray3918[3] + anIntArray3918[4]); + } + + var12 = 0; + if(anIntArray3918[6] > 0 || anIntArray3918[8] > 0) { + var12 = (anIntArray3944[6] + anIntArray3944[8]) / (anIntArray3918[6] + anIntArray3918[8]); + } + + var14 = 0; + var15 = anIntArray3918[10]; + int[] var34 = anIntArrayArray3938[10]; + int[] var35 = anIntArray3922; + if(var14 == var15) { + var15 = anIntArray3918[11]; + var34 = anIntArrayArray3938[11]; + var35 = anIntArray3941; + } + + if(var14 < var15) { + var13 = var35[var14]; + } else { + var13 = -1000; + } + + for(var18 = 0; var18 < 10; ++var18) { + while(var18 == 0 && var13 > var10) { + this.method1934(var34[var14++]); + if(var14 == var15 && var34 != anIntArrayArray3938[11]) { + var14 = 0; + var15 = anIntArray3918[11]; + var34 = anIntArrayArray3938[11]; + var35 = anIntArray3941; + } + + if(var14 < var15) { + var13 = var35[var14]; + } else { + var13 = -1000; + } + } + + while(var18 == 3 && var13 > var11) { + this.method1934(var34[var14++]); + if(var14 == var15 && var34 != anIntArrayArray3938[11]) { + var14 = 0; + var15 = anIntArray3918[11]; + var34 = anIntArrayArray3938[11]; + var35 = anIntArray3941; + } + + if(var14 < var15) { + var13 = var35[var14]; + } else { + var13 = -1000; + } + } + + while(var18 == 5 && var13 > var12) { + this.method1934(var34[var14++]); + if(var14 == var15 && var34 != anIntArrayArray3938[11]) { + var14 = 0; + var15 = anIntArray3918[11]; + var34 = anIntArrayArray3938[11]; + var35 = anIntArray3941; + } + + if(var14 < var15) { + var13 = var35[var14]; + } else { + var13 = -1000; + } + } + + var19 = anIntArray3918[var18]; + int[] var36 = anIntArrayArray3938[var18]; + + for(var21 = 0; var21 < var19; ++var21) { + this.method1934(var36[var21]); + } + } + + while(var13 != -1000) { + this.method1934(var34[var14++]); + if(var14 == var15 && var34 != anIntArrayArray3938[11]) { + var14 = 0; + var34 = anIntArrayArray3938[11]; + var15 = anIntArray3918[11]; + var35 = anIntArray3941; + } + + if(var14 < var15) { + var13 = var35[var14]; + } else { + var13 = -1000; + } + } + + } + } + + final void method1900() { + for(int var1 = 0; var1 < this.anInt3891; ++var1) { + int var2 = this.anIntArray3895[var1]; + this.anIntArray3895[var1] = this.anIntArray3885[var1]; + this.anIntArray3885[var1] = -var2; + } + + this.aBoolean3897 = false; + } + + final void method1946(int var2, int var3, int var4, int var5, int var6, int var7, int var8) { + try { + if(!this.aBoolean3897) { + this.method1947(); + } + + int var9 = Class51.anInt846; + int var10 = Class51.anInt835; + int var13 = Class51.anIntArray840[var2]; + int var14 = Class51.anIntArray851[var2]; + int var15 = Class51.anIntArray840[var3]; + int var16 = Class51.anIntArray851[var3]; + int var17 = Class51.anIntArray840[var4]; + int var18 = Class51.anIntArray851[var4]; + int var19 = var6 * var17 + var7 * var18 >> 16; + + for(int var20 = 0; var20 < this.anInt3891; ++var20) { + int var21 = this.anIntArray3885[var20]; + int var22 = this.anIntArray3883[var20]; + int var23 = this.anIntArray3895[var20]; + int var24; + if(var3 != 0) { + var24 = var22 * var15 + var21 * var16 >> 16; + var22 = var22 * var16 - var21 * var15 >> 16; + var21 = var24; + } + + if(var2 != 0) { + var24 = var23 * var13 + var21 * var14 >> 16; + var23 = var23 * var14 - var21 * var13 >> 16; + var21 = var24; + } + + var21 += var5; + var22 += var6; + var23 += var7; + var24 = var22 * var18 - var23 * var17 >> 16; + var23 = var22 * var17 + var23 * var18 >> 16; + anIntArray3920[var20] = var23 - var19; + anIntArray3943[var20] = var9 + (var21 << 9) / var8; + anIntArray3932[var20] = var10 + (var24 << 9) / var8; + if(this.anInt3900 > 0) { + anIntArray3948[var20] = var21; + anIntArray3928[var20] = var24; + anIntArray3921[var20] = var23; + } + } + + this.method1945(false, false, 0L, this.aShort3886, this.aShort3886 << 1); + } catch (RuntimeException var25) { + } + + } + + private void method1947() { + int var1 = 32767; + int var2 = 32767; + int var3 = 32767; + int var4 = -32768; + int var5 = -32768; + int var6 = -32768; + int var7 = 0; + int var8 = 0; + + for(int var9 = 0; var9 < this.anInt3891; ++var9) { + int var10 = this.anIntArray3885[var9]; + int var11 = this.anIntArray3883[var9]; + int var12 = this.anIntArray3895[var9]; + if(var10 < var1) { + var1 = var10; + } + + if(var10 > var4) { + var4 = var10; + } + + if(var11 < var2) { + var2 = var11; + } + + if(var11 > var5) { + var5 = var11; + } + + if(var12 < var3) { + var3 = var12; + } + + if(var12 > var6) { + var6 = var12; + } + + int var13 = var10 * var10 + var12 * var12; + if(var13 > var7) { + var7 = var13; + } + + var13 += var11 * var11; + if(var13 > var8) { + var8 = var13; + } + } + + this.aShort3873 = (short)var1; + this.aShort3878 = (short)var4; + this.aShort3894 = (short)var2; + this.aShort3892 = (short)var5; + this.aShort3879 = (short)var3; + this.aShort3888 = (short)var6; + this.aShort3884 = (short)((int)(Math.sqrt(var7) + 0.99D)); + this.aShort3886 = (short)((int)(Math.sqrt(var8) + 0.99D)); + this.aBoolean3897 = true; + } + + final int method1884() { + if(!this.aBoolean3897) { + this.method1947(); + } + + return this.aShort3873; + } + + final void method1899(int var1, int[] var2, int var3, int var4, int var5, boolean var6, int var7, int[] var8) { + int var9 = var2.length; + int var10; + int var11; + int var14; + int var15; + int var47; + if(var1 == 0) { + var10 = 0; + anInt3945 = 0; + anInt3934 = 0; + anInt3940 = 0; + + for(var11 = 0; var11 < var9; ++var11) { + var47 = var2[var11]; + if(var47 < this.anIntArrayArray3870.length) { + int[] var48 = this.anIntArrayArray3870[var47]; + + for(var14 = 0; var14 < var48.length; ++var14) { + var15 = var48[var14]; + if(this.aShortArray3893 == null || (var7 & this.aShortArray3893[var15]) != 0) { + anInt3945 += this.anIntArray3885[var15]; + anInt3934 += this.anIntArray3883[var15]; + anInt3940 += this.anIntArray3895[var15]; + ++var10; + } + } + } + } + + if(var10 > 0) { + anInt3945 = anInt3945 / var10 + var3; + anInt3934 = anInt3934 / var10 + var4; + anInt3940 = anInt3940 / var10 + var5; + aBoolean3927 = true; + } else { + anInt3945 = var3; + anInt3934 = var4; + anInt3940 = var5; + } + + } else { + int[] var12; + int var13; + if(var1 == 1) { + if(var8 != null) { + var10 = var8[0] * var3 + var8[1] * var4 + var8[2] * var5 + 16384 >> 15; + var11 = var8[3] * var3 + var8[4] * var4 + var8[5] * var5 + 16384 >> 15; + var47 = var8[6] * var3 + var8[7] * var4 + var8[8] * var5 + 16384 >> 15; + var3 = var10; + var4 = var11; + var5 = var47; + } + + for(var10 = 0; var10 < var9; ++var10) { + var11 = var2[var10]; + if(var11 < this.anIntArrayArray3870.length) { + var12 = this.anIntArrayArray3870[var11]; + + for(var13 = 0; var13 < var12.length; ++var13) { + var14 = var12[var13]; + if(this.aShortArray3893 == null || (var7 & this.aShortArray3893[var14]) != 0) { + this.anIntArray3885[var14] += var3; + this.anIntArray3883[var14] += var4; + this.anIntArray3895[var14] += var5; + } + } + } + } + + } else { + int var17; + int var16; + int var19; + int var18; + int var21; + int var20; + int var23; + int var22; + int var24; + int var27; + int var26; + int var28; + int var30; + int var34; + int[] var35; + int var32; + int var33; + int var38; + int var39; + int var36; + int var37; + int var40; + if(var1 == 2) { + if(var8 == null) { + for(var10 = 0; var10 < var9; ++var10) { + var11 = var2[var10]; + if(var11 < this.anIntArrayArray3870.length) { + var12 = this.anIntArrayArray3870[var11]; + + for(var13 = 0; var13 < var12.length; ++var13) { + var14 = var12[var13]; + if(this.aShortArray3893 == null || (var7 & this.aShortArray3893[var14]) != 0) { + this.anIntArray3885[var14] -= anInt3945; + this.anIntArray3883[var14] -= anInt3934; + this.anIntArray3895[var14] -= anInt3940; + if(var5 != 0) { + var15 = Class51.anIntArray840[var5]; + var16 = Class51.anIntArray851[var5]; + var17 = this.anIntArray3883[var14] * var15 + this.anIntArray3885[var14] * var16 + 32767 >> 16; + this.anIntArray3883[var14] = this.anIntArray3883[var14] * var16 - this.anIntArray3885[var14] * var15 + 32767 >> 16; + this.anIntArray3885[var14] = var17; + } + + if(var3 != 0) { + var15 = Class51.anIntArray840[var3]; + var16 = Class51.anIntArray851[var3]; + var17 = this.anIntArray3883[var14] * var16 - this.anIntArray3895[var14] * var15 + 32767 >> 16; + this.anIntArray3895[var14] = this.anIntArray3883[var14] * var15 + this.anIntArray3895[var14] * var16 + 32767 >> 16; + this.anIntArray3883[var14] = var17; + } + + if(var4 != 0) { + var15 = Class51.anIntArray840[var4]; + var16 = Class51.anIntArray851[var4]; + var17 = this.anIntArray3895[var14] * var15 + this.anIntArray3885[var14] * var16 + 32767 >> 16; + this.anIntArray3895[var14] = this.anIntArray3895[var14] * var16 - this.anIntArray3885[var14] * var15 + 32767 >> 16; + this.anIntArray3885[var14] = var17; + } + + this.anIntArray3885[var14] += anInt3945; + this.anIntArray3883[var14] += anInt3934; + this.anIntArray3895[var14] += anInt3940; + } + } + } + } + } else { + var10 = var8[9]; + var11 = var8[10]; + var47 = var8[11]; + var13 = var8[12]; + var14 = var8[13]; + var15 = var8[14]; + if(aBoolean3927) { + var16 = var8[0] * anInt3945 + var8[3] * anInt3934 + var8[6] * anInt3940 + 16384 >> 15; + var17 = var8[1] * anInt3945 + var8[4] * anInt3934 + var8[7] * anInt3940 + 16384 >> 15; + var18 = var8[2] * anInt3945 + var8[5] * anInt3934 + var8[8] * anInt3940 + 16384 >> 15; + var16 += var13; + var17 += var14; + var18 += var15; + anInt3945 = var16; + anInt3934 = var17; + anInt3940 = var18; + aBoolean3927 = false; + } + + int[] var49 = new int[9]; + var17 = Class51.anIntArray851[var3] >> 1; + var18 = Class51.anIntArray840[var3] >> 1; + var19 = Class51.anIntArray851[var4] >> 1; + var20 = Class51.anIntArray840[var4] >> 1; + var21 = Class51.anIntArray851[var5] >> 1; + var22 = Class51.anIntArray840[var5] >> 1; + var23 = var18 * var21 + 16384 >> 15; + var24 = var18 * var22 + 16384 >> 15; + var49[0] = var19 * var21 + var20 * var24 + 16384 >> 15; + var49[1] = -var19 * var22 + var20 * var23 + 16384 >> 15; + var49[2] = var20 * var17 + 16384 >> 15; + var49[3] = var17 * var22 + 16384 >> 15; + var49[4] = var17 * var21 + 16384 >> 15; + var49[5] = -var18; + var49[6] = -var20 * var21 + var19 * var24 + 16384 >> 15; + var49[7] = var20 * var22 + var19 * var23 + 16384 >> 15; + var49[8] = var19 * var17 + 16384 >> 15; + int var50 = var49[0] * -anInt3945 + var49[1] * -anInt3934 + var49[2] * -anInt3940 + 16384 >> 15; + var26 = var49[3] * -anInt3945 + var49[4] * -anInt3934 + var49[5] * -anInt3940 + 16384 >> 15; + var27 = var49[6] * -anInt3945 + var49[7] * -anInt3934 + var49[8] * -anInt3940 + 16384 >> 15; + var28 = var50 + anInt3945; + int var51 = var26 + anInt3934; + var30 = var27 + anInt3940; + int[] var52 = new int[9]; + + for(var32 = 0; var32 < 3; ++var32) { + for(var33 = 0; var33 < 3; ++var33) { + var34 = 0; + + for(int var53 = 0; var53 < 3; ++var53) { + var34 += var49[var32 * 3 + var53] * var8[var33 * 3 + var53]; + } + + var52[var32 * 3 + var33] = var34 + 16384 >> 15; + } + } + + var32 = var49[0] * var13 + var49[1] * var14 + var49[2] * var15 + 16384 >> 15; + var33 = var49[3] * var13 + var49[4] * var14 + var49[5] * var15 + 16384 >> 15; + var34 = var49[6] * var13 + var49[7] * var14 + var49[8] * var15 + 16384 >> 15; + var32 += var28; + var33 += var51; + var34 += var30; + var35 = new int[9]; + + for(var36 = 0; var36 < 3; ++var36) { + for(var37 = 0; var37 < 3; ++var37) { + var38 = 0; + + for(var39 = 0; var39 < 3; ++var39) { + var38 += var8[var36 * 3 + var39] * var52[var37 + var39 * 3]; + } + + var35[var36 * 3 + var37] = var38 + 16384 >> 15; + } + } + + var36 = var8[0] * var32 + var8[1] * var33 + var8[2] * var34 + 16384 >> 15; + var37 = var8[3] * var32 + var8[4] * var33 + var8[5] * var34 + 16384 >> 15; + var38 = var8[6] * var32 + var8[7] * var33 + var8[8] * var34 + 16384 >> 15; + var36 += var10; + var37 += var11; + var38 += var47; + + for(var39 = 0; var39 < var9; ++var39) { + var40 = var2[var39]; + if(var40 < this.anIntArrayArray3870.length) { + int[] var41 = this.anIntArrayArray3870[var40]; + + for(int var42 = 0; var42 < var41.length; ++var42) { + int var43 = var41[var42]; + if(this.aShortArray3893 == null || (var7 & this.aShortArray3893[var43]) != 0) { + int var44 = var35[0] * this.anIntArray3885[var43] + var35[1] * this.anIntArray3883[var43] + var35[2] * this.anIntArray3895[var43] + 16384 >> 15; + int var45 = var35[3] * this.anIntArray3885[var43] + var35[4] * this.anIntArray3883[var43] + var35[5] * this.anIntArray3895[var43] + 16384 >> 15; + int var46 = var35[6] * this.anIntArray3885[var43] + var35[7] * this.anIntArray3883[var43] + var35[8] * this.anIntArray3895[var43] + 16384 >> 15; + var44 += var36; + var45 += var37; + var46 += var38; + this.anIntArray3885[var43] = var44; + this.anIntArray3883[var43] = var45; + this.anIntArray3895[var43] = var46; + } + } + } + } + } + + } else if(var1 == 3) { + if(var8 == null) { + for(var10 = 0; var10 < var9; ++var10) { + var11 = var2[var10]; + if(var11 < this.anIntArrayArray3870.length) { + var12 = this.anIntArrayArray3870[var11]; + + for(var13 = 0; var13 < var12.length; ++var13) { + var14 = var12[var13]; + if(this.aShortArray3893 == null || (var7 & this.aShortArray3893[var14]) != 0) { + this.anIntArray3885[var14] -= anInt3945; + this.anIntArray3883[var14] -= anInt3934; + this.anIntArray3895[var14] -= anInt3940; + this.anIntArray3885[var14] = this.anIntArray3885[var14] * var3 / 128; + this.anIntArray3883[var14] = this.anIntArray3883[var14] * var4 / 128; + this.anIntArray3895[var14] = this.anIntArray3895[var14] * var5 / 128; + this.anIntArray3885[var14] += anInt3945; + this.anIntArray3883[var14] += anInt3934; + this.anIntArray3895[var14] += anInt3940; + } + } + } + } + } else { + var10 = var8[9]; + var11 = var8[10]; + var47 = var8[11]; + var13 = var8[12]; + var14 = var8[13]; + var15 = var8[14]; + if(aBoolean3927) { + var16 = var8[0] * anInt3945 + var8[3] * anInt3934 + var8[6] * anInt3940 + 16384 >> 15; + var17 = var8[1] * anInt3945 + var8[4] * anInt3934 + var8[7] * anInt3940 + 16384 >> 15; + var18 = var8[2] * anInt3945 + var8[5] * anInt3934 + var8[8] * anInt3940 + 16384 >> 15; + var16 += var13; + var17 += var14; + var18 += var15; + anInt3945 = var16; + anInt3934 = var17; + anInt3940 = var18; + aBoolean3927 = false; + } + + var16 = var3 << 15 >> 7; + var17 = var4 << 15 >> 7; + var18 = var5 << 15 >> 7; + var19 = var16 * -anInt3945 + 16384 >> 15; + var20 = var17 * -anInt3934 + 16384 >> 15; + var21 = var18 * -anInt3940 + 16384 >> 15; + var22 = var19 + anInt3945; + var23 = var20 + anInt3934; + var24 = var21 + anInt3940; + int[] var25 = new int[]{var16 * var8[0] + 16384 >> 15, var16 * var8[3] + 16384 >> 15, var16 * var8[6] + 16384 >> 15, var17 * var8[1] + 16384 >> 15, var17 * var8[4] + 16384 >> 15, var17 * var8[7] + 16384 >> 15, var18 * var8[2] + 16384 >> 15, var18 * var8[5] + 16384 >> 15, var18 * var8[8] + 16384 >> 15}; + var26 = var16 * var13 + 16384 >> 15; + var27 = var17 * var14 + 16384 >> 15; + var28 = var18 * var15 + 16384 >> 15; + var26 += var22; + var27 += var23; + var28 += var24; + int[] var29 = new int[9]; + + int var31; + for(var30 = 0; var30 < 3; ++var30) { + for(var31 = 0; var31 < 3; ++var31) { + var32 = 0; + + for(var33 = 0; var33 < 3; ++var33) { + var32 += var8[var30 * 3 + var33] * var25[var31 + var33 * 3]; + } + + var29[var30 * 3 + var31] = var32 + 16384 >> 15; + } + } + + var30 = var8[0] * var26 + var8[1] * var27 + var8[2] * var28 + 16384 >> 15; + var31 = var8[3] * var26 + var8[4] * var27 + var8[5] * var28 + 16384 >> 15; + var32 = var8[6] * var26 + var8[7] * var27 + var8[8] * var28 + 16384 >> 15; + var30 += var10; + var31 += var11; + var32 += var47; + + for(var33 = 0; var33 < var9; ++var33) { + var34 = var2[var33]; + if(var34 < this.anIntArrayArray3870.length) { + var35 = this.anIntArrayArray3870[var34]; + + for(var36 = 0; var36 < var35.length; ++var36) { + var37 = var35[var36]; + if(this.aShortArray3893 == null || (var7 & this.aShortArray3893[var37]) != 0) { + var38 = var29[0] * this.anIntArray3885[var37] + var29[1] * this.anIntArray3883[var37] + var29[2] * this.anIntArray3895[var37] + 16384 >> 15; + var39 = var29[3] * this.anIntArray3885[var37] + var29[4] * this.anIntArray3883[var37] + var29[5] * this.anIntArray3895[var37] + 16384 >> 15; + var40 = var29[6] * this.anIntArray3885[var37] + var29[7] * this.anIntArray3883[var37] + var29[8] * this.anIntArray3895[var37] + 16384 >> 15; + var38 += var30; + var39 += var31; + var40 += var32; + this.anIntArray3885[var37] = var38; + this.anIntArray3883[var37] = var39; + this.anIntArray3895[var37] = var40; + } + } + } + } + } + + } else if(var1 == 5) { + if(this.anIntArrayArray3872 != null && this.aByteArray3903 != null) { + for(var10 = 0; var10 < var9; ++var10) { + var11 = var2[var10]; + if(var11 < this.anIntArrayArray3872.length) { + var12 = this.anIntArrayArray3872[var11]; + + for(var13 = 0; var13 < var12.length; ++var13) { + var14 = var12[var13]; + if(this.aShortArray3871 == null || (var7 & this.aShortArray3871[var14]) != 0) { + var15 = (this.aByteArray3903[var14] & 0xFF) + var3 * 8; + if(var15 < 0) { + var15 = 0; + } else if(var15 > 255) { + var15 = 255; + } + + this.aByteArray3903[var14] = (byte)var15; + } + } + } + } + } + + } else if(var1 == 7) { + if(this.anIntArrayArray3872 != null) { + for(var10 = 0; var10 < var9; ++var10) { + var11 = var2[var10]; + if(var11 < this.anIntArrayArray3872.length) { + var12 = this.anIntArrayArray3872[var11]; + + for(var13 = 0; var13 < var12.length; ++var13) { + var14 = var12[var13]; + if(this.aShortArray3871 == null || (var7 & this.aShortArray3871[var14]) != 0) { + var15 = this.aShortArray3869[var14] & 65535; + var16 = var15 >> 10 & 63; + var17 = var15 >> 7 & 7; + var18 = var15 & 127; + var16 = var16 + var3 & 63; + var17 += var4; + if(var17 < 0) { + var17 = 0; + } else if(var17 > 7) { + var17 = 7; + } + + var18 += var5; + if(var18 < 0) { + var18 = 0; + } else if(var18 > 127) { + var18 = 127; + } + + this.aShortArray3869[var14] = (short)(var16 << 10 | var17 << 7 | var18); + } + } + + this.aBoolean3877 = true; + } + } + } + + } + } + } + } + + final void method1889(int var1, int var2, int var3, int var4) { + int var5; + int var6; + if(var1 == 0) { + var5 = 0; + anInt3945 = 0; + anInt3934 = 0; + anInt3940 = 0; + + for(var6 = 0; var6 < this.anInt3891; ++var6) { + anInt3945 += this.anIntArray3885[var6]; + anInt3934 += this.anIntArray3883[var6]; + anInt3940 += this.anIntArray3895[var6]; + ++var5; + } + + if(var5 > 0) { + anInt3945 = anInt3945 / var5 + var2; + anInt3934 = anInt3934 / var5 + var3; + anInt3940 = anInt3940 / var5 + var4; + } else { + anInt3945 = var2; + anInt3934 = var3; + anInt3940 = var4; + } + + } else if(var1 == 1) { + for(var5 = 0; var5 < this.anInt3891; ++var5) { + this.anIntArray3885[var5] += var2; + this.anIntArray3883[var5] += var3; + this.anIntArray3895[var5] += var4; + } + + } else { + int var7; + int var8; + if(var1 == 2) { + for(var5 = 0; var5 < this.anInt3891; ++var5) { + this.anIntArray3885[var5] -= anInt3945; + this.anIntArray3883[var5] -= anInt3934; + this.anIntArray3895[var5] -= anInt3940; + if(var4 != 0) { + var6 = Class51.anIntArray840[var4]; + var7 = Class51.anIntArray851[var4]; + var8 = this.anIntArray3883[var5] * var6 + this.anIntArray3885[var5] * var7 + 32767 >> 16; + this.anIntArray3883[var5] = this.anIntArray3883[var5] * var7 - this.anIntArray3885[var5] * var6 + 32767 >> 16; + this.anIntArray3885[var5] = var8; + } + + if(var2 != 0) { + var6 = Class51.anIntArray840[var2]; + var7 = Class51.anIntArray851[var2]; + var8 = this.anIntArray3883[var5] * var7 - this.anIntArray3895[var5] * var6 + 32767 >> 16; + this.anIntArray3895[var5] = this.anIntArray3883[var5] * var6 + this.anIntArray3895[var5] * var7 + 32767 >> 16; + this.anIntArray3883[var5] = var8; + } + + if(var3 != 0) { + var6 = Class51.anIntArray840[var3]; + var7 = Class51.anIntArray851[var3]; + var8 = this.anIntArray3895[var5] * var6 + this.anIntArray3885[var5] * var7 + 32767 >> 16; + this.anIntArray3895[var5] = this.anIntArray3895[var5] * var7 - this.anIntArray3885[var5] * var6 + 32767 >> 16; + this.anIntArray3885[var5] = var8; + } + + this.anIntArray3885[var5] += anInt3945; + this.anIntArray3883[var5] += anInt3934; + this.anIntArray3895[var5] += anInt3940; + } + + } else if(var1 == 3) { + for(var5 = 0; var5 < this.anInt3891; ++var5) { + this.anIntArray3885[var5] -= anInt3945; + this.anIntArray3883[var5] -= anInt3934; + this.anIntArray3895[var5] -= anInt3940; + this.anIntArray3885[var5] = this.anIntArray3885[var5] * var2 / 128; + this.anIntArray3883[var5] = this.anIntArray3883[var5] * var3 / 128; + this.anIntArray3895[var5] = this.anIntArray3895[var5] * var4 / 128; + this.anIntArray3885[var5] += anInt3945; + this.anIntArray3883[var5] += anInt3934; + this.anIntArray3895[var5] += anInt3940; + } + + } else if (var1 == 5) { + for (var5 = 0; var5 < this.anInt3889; ++var5) { + var6 = (this.aByteArray3903[var5] & 0xFF) + var2 * 8; + if (var6 < 0) { + var6 = 0; + } else if (var6 > 255) { + var6 = 255; + } + + this.aByteArray3903[var5] = (byte) var6; + } + + } else if (var1 == 7) { + for (var5 = 0; var5 < this.anInt3889; ++var5) { + var6 = this.aShortArray3869[var5] & 65535; + var7 = var6 >> 10 & 63; + var8 = var6 >> 7 & 7; + int var9 = var6 & 127; + var7 = var7 + var2 & 63; + var8 += var3; + if (var8 < 0) { + var8 = 0; + } else if (var8 > 7) { + var8 = 7; + } + + var9 += var4; + if (var9 < 0) { + var9 = 0; + } else if (var9 > 127) { + var9 = 127; + } + + this.aShortArray3869[var5] = (short) (var7 << 10 | var8 << 7 | var9); + } + + this.aBoolean3877 = true; + } + } + } + + final void method1897(int var1, int var2, int var3) { + for(int var4 = 0; var4 < this.anInt3891; ++var4) { + this.anIntArray3885[var4] += var1; + this.anIntArray3883[var4] += var2; + this.anIntArray3895[var4] += var3; + } + + this.aBoolean3897 = false; + } + + final Model method1890(boolean var1, boolean var2, boolean var3) { + if(!var1 && aByteArray3933.length < this.anInt3889) { + aByteArray3933 = new byte[this.anInt3889 + 100]; + } + + if(!var2 && aShortArray3949.length < this.anInt3889) { + anIntArray3939 = new int[this.anInt3889 + 100]; + anIntArray3947 = new int[this.anInt3889 + 100]; + anIntArray3924 = new int[this.anInt3889 + 100]; + aShortArray3949 = new short[this.anInt3889 + 100]; + } + + return this.method1939(var1, var2, aClass140_Sub1_Sub2_3915, aByteArray3933, aShortArray3949, anIntArray3939, anIntArray3947, anIntArray3924); + } + + public Class140_Sub1_Sub2() {} + + Class140_Sub1_Sub2(Model_Sub1 var1, int var2, int var3, int var4, int var5, int var6) { + var1.method1997(); + var1.method2012(); + this.anInt3891 = var1.anInt2887; + this.anIntArray3885 = var1.anIntArray2885; + this.anIntArray3883 = var1.anIntArray2881; + this.anIntArray3895 = var1.anIntArray2892; + this.anInt3889 = var1.anInt2849; + this.anIntArray3901 = var1.anIntArray2865; + this.anIntArray3876 = var1.anIntArray2878; + this.anIntArray3887 = var1.anIntArray2864; + this.aByteArray3880 = var1.aByteArray2889; + this.aByteArray3903 = var1.aByteArray2843; + this.aByte3875 = var1.aByte2848; + this.aShortArray3869 = var1.aShortArray2870; + this.anIntArrayArray3870 = var1.anIntArrayArray2890; + this.anIntArrayArray3872 = var1.anIntArrayArray2856; + this.aShortArray3871 = var1.aShortArray2855; + this.aShortArray3893 = var1.aShortArray2893; + int var7 = (int)Math.sqrt(var4 * var4 + var5 * var5 + var6 * var6); + int var8 = var3 * var7 >> 8; + this.anIntArray3898 = new int[this.anInt3889]; + this.anIntArray3874 = new int[this.anInt3889]; + this.anIntArray3896 = new int[this.anInt3889]; + int var9; + if(var1.aShortArray2858 == null) { + this.aShortArray3908 = null; + } else { + this.aShortArray3908 = new short[this.anInt3889]; + + for(var9 = 0; var9 < this.anInt3889; ++var9) { + short var10 = var1.aShortArray2858[var9]; + if(var10 != -1 && Class51.anInterface2_838.method17(var10, 77)) { + this.aShortArray3908[var9] = var10; + } else { + this.aShortArray3908[var9] = -1; + } + } + } + + if(var1.anInt2862 > 0 && var1.aByteArray2866 != null) { + int[] var16 = new int[var1.anInt2862]; + + int var17; + for(var17 = 0; var17 < this.anInt3889; ++var17) { + if(var1.aByteArray2866[var17] != -1) { + ++var16[var1.aByteArray2866[var17] & 0xFF]; + } + } + + this.anInt3900 = 0; + + for(var17 = 0; var17 < var1.anInt2862; ++var17) { + if(var16[var17] > 0 && var1.aByteArray2857[var17] == 0) { + ++this.anInt3900; + } + } + + this.anIntArray3882 = new int[this.anInt3900]; + this.anIntArray3890 = new int[this.anInt3900]; + this.anIntArray3881 = new int[this.anInt3900]; + var17 = 0; + + int var11; + for(var11 = 0; var11 < var1.anInt2862; ++var11) { + if(var16[var11] > 0 && var1.aByteArray2857[var11] == 0) { + this.anIntArray3882[var17] = var1.aShortArray2884[var11] & 65535; + this.anIntArray3890[var17] = var1.aShortArray2846[var11] & 65535; + this.anIntArray3881[var17] = var1.aShortArray2891[var11] & 65535; + var16[var11] = var17++; + } else { + var16[var11] = -1; + } + } + + this.aByteArray3899 = new byte[this.anInt3889]; + + for(var11 = 0; var11 < this.anInt3889; ++var11) { + if(var1.aByteArray2866[var11] == -1) { + this.aByteArray3899[var11] = -1; + } else { + this.aByteArray3899[var11] = (byte)var16[var1.aByteArray2866[var11] & 0xFF]; + if(this.aByteArray3899[var11] == -1 && this.aShortArray3908 != null) { + this.aShortArray3908[var11] = -1; + } + } + } + } + + for(var9 = 0; var9 < this.anInt3889; ++var9) { + byte var18; + if(var1.aByteArray2859 == null) { + var18 = 0; + } else { + var18 = var1.aByteArray2859[var9]; + } + + byte var19; + if(var1.aByteArray2843 == null) { + var19 = 0; + } else { + var19 = var1.aByteArray2843[var9]; + } + + short var12; + if(this.aShortArray3908 == null) { + var12 = -1; + } else { + var12 = this.aShortArray3908[var9]; + } + + if(var19 == -2) { + var18 = 3; + } + + if(var19 == -1) { + var18 = 2; + } + + Class50 var13; + int var14; + Class120 var20; + if(var12 == -1) { + if(var18 == 0) { + int var15 = var1.aShortArray2870[var9] & 65535; + if(var1.aClass50Array2883 == null || var1.aClass50Array2883[this.anIntArray3901[var9]] == null) { + var13 = var1.aClass50Array2872[this.anIntArray3901[var9]]; + } else { + var13 = var1.aClass50Array2883[this.anIntArray3901[var9]]; + } + + var14 = var2 + (var4 * var13.anInt831 + var5 * var13.anInt821 + var6 * var13.anInt830) / (var8 * var13.anInt823) << 17; + this.anIntArray3898[var9] = var14 | method1940(var15, var14 >> 17); + if(var1.aClass50Array2883 == null || var1.aClass50Array2883[this.anIntArray3876[var9]] == null) { + var13 = var1.aClass50Array2872[this.anIntArray3876[var9]]; + } else { + var13 = var1.aClass50Array2883[this.anIntArray3876[var9]]; + } + + var14 = var2 + (var4 * var13.anInt831 + var5 * var13.anInt821 + var6 * var13.anInt830) / (var8 * var13.anInt823) << 17; + this.anIntArray3874[var9] = var14 | method1940(var15, var14 >> 17); + if(var1.aClass50Array2883 == null || var1.aClass50Array2883[this.anIntArray3887[var9]] == null) { + var13 = var1.aClass50Array2872[this.anIntArray3887[var9]]; + } else { + var13 = var1.aClass50Array2883[this.anIntArray3887[var9]]; + } + + var14 = var2 + (var4 * var13.anInt831 + var5 * var13.anInt821 + var6 * var13.anInt830) / (var8 * var13.anInt823) << 17; + this.anIntArray3896[var9] = var14 | method1940(var15, var14 >> 17); + } else if(var18 == 1) { + var20 = var1.aClass120Array2886[var9]; + var14 = var2 + (var4 * var20.anInt1634 + var5 * var20.anInt1635 + var6 * var20.anInt1632) / (var8 + var8 / 2) << 17; + this.anIntArray3898[var9] = var14 | method1940(var1.aShortArray2870[var9] & 65535, var14 >> 17); + this.anIntArray3896[var9] = -1; + } else if(var18 == 3) { + this.anIntArray3898[var9] = 128; + this.anIntArray3896[var9] = -1; + } else { + this.anIntArray3896[var9] = -2; + } + } else if(var18 == 0) { + if(var1.aClass50Array2883 == null || var1.aClass50Array2883[this.anIntArray3901[var9]] == null) { + var13 = var1.aClass50Array2872[this.anIntArray3901[var9]]; + } else { + var13 = var1.aClass50Array2883[this.anIntArray3901[var9]]; + } + + var14 = var2 + (var4 * var13.anInt831 + var5 * var13.anInt821 + var6 * var13.anInt830) / (var8 * var13.anInt823); + this.anIntArray3898[var9] = method1937(var14); + if(var1.aClass50Array2883 == null || var1.aClass50Array2883[this.anIntArray3876[var9]] == null) { + var13 = var1.aClass50Array2872[this.anIntArray3876[var9]]; + } else { + var13 = var1.aClass50Array2883[this.anIntArray3876[var9]]; + } + + var14 = var2 + (var4 * var13.anInt831 + var5 * var13.anInt821 + var6 * var13.anInt830) / (var8 * var13.anInt823); + this.anIntArray3874[var9] = method1937(var14); + if(var1.aClass50Array2883 == null || var1.aClass50Array2883[this.anIntArray3887[var9]] == null) { + var13 = var1.aClass50Array2872[this.anIntArray3887[var9]]; + } else { + var13 = var1.aClass50Array2883[this.anIntArray3887[var9]]; + } + + var14 = var2 + (var4 * var13.anInt831 + var5 * var13.anInt821 + var6 * var13.anInt830) / (var8 * var13.anInt823); + this.anIntArray3896[var9] = method1937(var14); + } else if(var18 == 1) { + var20 = var1.aClass120Array2886[var9]; + var14 = var2 + (var4 * var20.anInt1634 + var5 * var20.anInt1635 + var6 * var20.anInt1632) / (var8 + var8 / 2); + this.anIntArray3898[var9] = method1937(var14); + this.anIntArray3896[var9] = -1; + } else { + this.anIntArray3896[var9] = -2; + } + } + + } + + private Class140_Sub1_Sub2(Class140_Sub1_Sub2[] var1) { + boolean var3 = false; + boolean var4 = false; + boolean var5 = false; + boolean var6 = false; + this.anInt3891 = 0; + this.anInt3889 = 0; + this.anInt3900 = 0; + this.aByte3875 = -1; + + int var9; + Class140_Sub1_Sub2 var10; + for(var9 = 0; var9 < 2; ++var9) { + var10 = var1[var9]; + if(var10 != null) { + this.anInt3891 += var10.anInt3891; + this.anInt3889 += var10.anInt3889; + this.anInt3900 += var10.anInt3900; + if(var10.aByteArray3880 == null) { + if(this.aByte3875 == -1) { + this.aByte3875 = var10.aByte3875; + } + + if(this.aByte3875 != var10.aByte3875) { + var3 = true; + } + } else { + var3 = true; + } + + var4 |= var10.aByteArray3903 != null; + var5 |= var10.aShortArray3908 != null; + var6 |= var10.aByteArray3899 != null; + } + } + + this.anIntArray3885 = new int[this.anInt3891]; + this.anIntArray3883 = new int[this.anInt3891]; + this.anIntArray3895 = new int[this.anInt3891]; + this.anIntArray3901 = new int[this.anInt3889]; + this.anIntArray3876 = new int[this.anInt3889]; + this.anIntArray3887 = new int[this.anInt3889]; + this.anIntArray3898 = new int[this.anInt3889]; + this.anIntArray3874 = new int[this.anInt3889]; + this.anIntArray3896 = new int[this.anInt3889]; + if(var3) { + this.aByteArray3880 = new byte[this.anInt3889]; + } + + if(var4) { + this.aByteArray3903 = new byte[this.anInt3889]; + } + + if(var5) { + this.aShortArray3908 = new short[this.anInt3889]; + } + + if(var6) { + this.aByteArray3899 = new byte[this.anInt3889]; + } + + if(this.anInt3900 > 0) { + this.anIntArray3882 = new int[this.anInt3900]; + this.anIntArray3890 = new int[this.anInt3900]; + this.anIntArray3881 = new int[this.anInt3900]; + } + + this.aShortArray3869 = new short[this.anInt3889]; + this.anInt3891 = 0; + this.anInt3889 = 0; + this.anInt3900 = 0; + + for(var9 = 0; var9 < 2; ++var9) { + var10 = var1[var9]; + if(var10 != null) { + int var11; + for(var11 = 0; var11 < var10.anInt3889; ++var11) { + this.anIntArray3901[this.anInt3889] = var10.anIntArray3901[var11] + this.anInt3891; + this.anIntArray3876[this.anInt3889] = var10.anIntArray3876[var11] + this.anInt3891; + this.anIntArray3887[this.anInt3889] = var10.anIntArray3887[var11] + this.anInt3891; + this.anIntArray3898[this.anInt3889] = var10.anIntArray3898[var11]; + this.anIntArray3874[this.anInt3889] = var10.anIntArray3874[var11]; + this.anIntArray3896[this.anInt3889] = var10.anIntArray3896[var11]; + this.aShortArray3869[this.anInt3889] = var10.aShortArray3869[var11]; + if(var3) { + if(var10.aByteArray3880 == null) { + this.aByteArray3880[this.anInt3889] = var10.aByte3875; + } else { + this.aByteArray3880[this.anInt3889] = var10.aByteArray3880[var11]; + } + } + + if(var4 && var10.aByteArray3903 != null) { + this.aByteArray3903[this.anInt3889] = var10.aByteArray3903[var11]; + } + + if(var5) { + if(var10.aShortArray3908 == null) { + this.aShortArray3908[this.anInt3889] = -1; + } else { + this.aShortArray3908[this.anInt3889] = var10.aShortArray3908[var11]; + } + } + + if(var6) { + if(var10.aByteArray3899 == null || var10.aByteArray3899[var11] == -1) { + this.aByteArray3899[this.anInt3889] = -1; + } else { + this.aByteArray3899[this.anInt3889] = (byte)(var10.aByteArray3899[var11] + this.anInt3900); + } + } + + ++this.anInt3889; + } + + for(var11 = 0; var11 < var10.anInt3900; ++var11) { + this.anIntArray3882[this.anInt3900] = var10.anIntArray3882[var11] + this.anInt3891; + this.anIntArray3890[this.anInt3900] = var10.anIntArray3890[var11] + this.anInt3891; + this.anIntArray3881[this.anInt3900] = var10.anIntArray3881[var11] + this.anInt3891; + ++this.anInt3900; + } + + for(var11 = 0; var11 < var10.anInt3891; ++var11) { + this.anIntArray3885[this.anInt3891] = var10.anIntArray3885[var11]; + this.anIntArray3883[this.anInt3891] = var10.anIntArray3883[var11]; + this.anIntArray3895[this.anInt3891] = var10.anIntArray3895[var11]; + ++this.anInt3891; + } + } + } + + } + + static { + anIntArray3946 = new int[1600]; + anIntArrayArray3926 = new int[1600][64]; + anIntArray3935 = new int[32]; + anIntArrayArray3923 = new int[32][512]; + + anIntArray3924 = new int[1]; + anIntArray3939 = new int[1]; + anIntArray3928 = new int[4096]; + aShortArray3949 = new short[1]; + anIntArray3943 = new int[4096]; + anIntArrayArray3938 = new int[12][4096]; + anIntArray3921 = new int[4096]; + anIntArray3950 = new int[8192]; + } +} diff --git a/Client/src/main/java/org/runite/client/Class140_Sub3.java b/Client/src/main/java/org/runite/client/Class140_Sub3.java new file mode 100644 index 000000000..fa468874e --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class140_Sub3.java @@ -0,0 +1,512 @@ +package org.runite.client; + + +final class Class140_Sub3 extends GameObject { + + static LDIndexedSprite aClass109_Sub1_2631 = null; + private int anInt2720 = 0; + private boolean aBoolean2721 = false; + private SequenceDefinition aClass142_2722; + private final int anInt2724; + private int anInt2725 = 0; + private int anInt2726; + private boolean aBoolean2728 = true; + private final int objectId; + private final int anInt2730; + private final int anInt2732; + private int anInt2733; + private final int type; + private final int anInt2736; + private LDIndexedSprite aClass109_Sub1_2738 = null; + private Class127_Sub1 aClass127_Sub1_2742; + static volatile int anInt2743 = 0; + static int viewportZ = 0; + private int anInt2746; + private int anInt2748 = 0; + private int anInt2749; + private int anInt2750 = -1; + private int anInt2752 = -1; + + + static Model method1957(int var0, boolean var1, SequenceDefinition var2, int var3, int var4, int var5, int var6, int var7, Model var8, int var9, int var10, int var11, int var12) { + try { + long var14 = ((long) var4 << 48) + (var7 + ((long) var0 << 16) - -((long) var12 << 24)) + ((long) var6 << 32); + Model var16 = (Model) Class158_Sub1.aReferenceCache_2982.get(var14); + int var21; + int var23; + int var25; + int var24; + int var28; + if (var16 == null) { + byte var17; + if (1 == var7) { + var17 = 9; + } else if (var7 == 2) { + var17 = 12; + } else if (var7 == 3) { + var17 = 15; + } else if (4 == var7) { + var17 = 18; + } else { + var17 = 21; + } + + int[] var19 = new int[]{64, 96, 128}; + byte var18 = 3; + Model_Sub1 var20 = new Model_Sub1(1 + var18 * var17, -var17 + var17 * var18 * 2); + var21 = var20.method2014(0, 0); + int[][] var22 = new int[var18][var17]; + + for (var23 = 0; var18 > var23; ++var23) { + var24 = var19[var23]; + var25 = var19[var23]; + + for (int var26 = 0; var26 < var17; ++var26) { + int var27 = (var26 << 11) / var17; + int var29 = var5 - -(Class51.anIntArray851[var27] * var25) >> 16; + var28 = var3 + Class51.anIntArray840[var27] * var24 >> 16; + var22[var23][var26] = var20.method2014(var28, var29); + } + } + + for (var23 = 0; var23 < var18; ++var23) { + var24 = (256 * var23 - -128) / var18; + var25 = 256 + -var24; + byte var38 = (byte) (var12 * var24 + var0 * var25 >> 8); + short var39 = (short) (((var6 & 127) * var25 + (127 & var4) * var24 & 32512) + (var25 * (var6 & 896) + var24 * (var4 & 896) & 229376) + (var24 * (var4 & '\ufc00') + ('\ufc00' & var6) * var25 & 16515072) >> 8); + + for (var28 = 0; var28 < var17; ++var28) { + if (var23 == 0) { + var20.method2005(var21, var22[0][(1 + var28) % var17], var22[0][var28], var39, var38); + } else { + var20.method2005(var22[var23 - 1][var28], var22[var23 + -1][(var28 + 1) % var17], var22[var23][(var28 - -1) % var17], var39, var38); + var20.method2005(var22[-1 + var23][var28], var22[var23][(1 + var28) % var17], var22[var23][var28], var39, var38); + } + } + } + + var16 = var20.method2008(64, 768, -50, -10, -50); + Class158_Sub1.aReferenceCache_2982.put(var16, var14); + } + + int var32 = var7 * 64 + -1; + int var33 = -var32; + int var31 = -var32; + int var34 = var32; + int var35 = var8.method1884(); + Class3_Sub28_Sub5 var40 = null; + var23 = var8.method1883(); + var24 = var8.method1898(); + var25 = var8.method1872(); + if (var2 != null) { + var10 = var2.frames[var10]; + int frame = var10 >> 16; + // System.out.println(var2.animId + " Roar " + (var10 >> 16) + ", " + (var10 & 65535) + ", " + Arrays.toString(var2.frames)); + var40 = Class3_Sub9.method133(frame); //NPC render animating + var10 &= 65535; + } + + var21 = var32; + if (var1) { + if (1664 < var9 || 384 > var9) { + var31 -= 128; + } + + if (var9 > 1152 && var9 < 1920) { + var34 = var32 + 128; + } + + if (640 < var9 && var9 < 1408) { + var21 = var32 + 128; + } + + if (var9 > 128 && var9 < 896) { + var33 -= 128; + } + } + + if (var21 < var25) { + var25 = var21; + } + + if (var33 > var35) { + var35 = var33; + } + + if (var24 < var31) { + var24 = var31; + } + + if (var34 < var23) { + var23 = var34; + } + + if (null == var40) { + var16 = var16.method1882(true, true, true); + var16.resize((var23 + -var35) / 2, 128, (var25 - var24) / 2); + var16.method1897((var35 + var23) / 2, 0, (var24 - -var25) / 2); + } else { + var16 = var16.method1882(!var40.method559(var10), !var40.method561(var10, (byte) 115), true); + var16.resize((var23 + -var35) / 2, 128, (var25 + -var24) / 2); + var16.method1897((var35 + var23) / 2, 0, (var24 + var25) / 2); + var16.method1877(var40, var10); + } + + if (var9 != 0) { + var16.method1876(var9); + } + + if (HDToolKit.highDetail) { + Class140_Sub1_Sub1 var36 = (Class140_Sub1_Sub1) var16; + if (var11 != Scenery.sceneryPositionHash(WorldListCountry.localPlane, (byte) -49 ^ -50, var3 - -var35, var24 + var5) || var11 != Scenery.sceneryPositionHash(WorldListCountry.localPlane, 1, var23 + var3, var5 - -var25)) { + for (var28 = 0; var28 < var36.anInt3823; ++var28) { + var36.anIntArray3845[var28] += -var11 + Scenery.sceneryPositionHash(WorldListCountry.localPlane, Unsorted.bitwiseXOR((byte) -49, -50), var36.anIntArray3822[var28] - -var3, var5 + var36.anIntArray3848[var28]); + } + + var36.aClass6_3835.aBoolean98 = false; + var36.aClass121_3839.aBoolean1640 = false; + } + } else { + Class140_Sub1_Sub2 var37 = (Class140_Sub1_Sub2) var16; + if (var11 != Scenery.sceneryPositionHash(WorldListCountry.localPlane, 1, var3 - -var35, var5 - -var24) || var11 != Scenery.sceneryPositionHash(WorldListCountry.localPlane, 1, var3 + var23, var5 - -var25)) { + for (var28 = 0; var28 < var37.anInt3891; ++var28) { + var37.anIntArray3883[var28] += -var11 + Scenery.sceneryPositionHash(WorldListCountry.localPlane, 1, var3 + var37.anIntArray3885[var28], var5 + var37.anIntArray3895[var28]); + } + + var37.aBoolean3897 = false; + } + } + + return var16; + } catch (RuntimeException var30) { + throw ClientErrorException.clientError(var30, "dc.E(" + var0 + ',' + var1 + ',' + (var2 != null ? "{...}" : "null") + ',' + var3 + ',' + var4 + ',' + var5 + ',' + var6 + ',' + var7 + ',' + (var8 != null ? "{...}" : "null") + ',' + var9 + ',' + var10 + ',' + var11 + ',' + var12 + ',' + (byte) -49 + ')'); + } + } + + final void method1867(int var1, int var2, int var3, int var4, int var5) { + try { + if (HDToolKit.highDetail) { + this.method1962(true); + } else { + this.method1961(var5, var4); + } + + } catch (RuntimeException var7) { + throw ClientErrorException.clientError(var7, "dc.IB(" + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + var5 + ')'); + } + } + + static void method1959(boolean var3) { + try { + AudioChannel.threadPriority = 2; + AudioChannel.stereo = var3; + Class21.sampleRate = 22050; + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "dc.D(" + 256 + ',' + 2 + ',' + 22050 + ',' + var3 + ')'); + } + } + + final void animate(int var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, long var9, int var11, Class127_Sub1 var12) { + try { + GameObject var13 = this.method1963(); + if (null != var13) { + var13.animate(var1, var2, var3, var4, var5, var6, var7, var8, var9, var11, this.aClass127_Sub1_2742); + } + } catch (RuntimeException var14) { + throw ClientErrorException.clientError(var14, "dc.IA(" + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + var5 + ',' + var6 + ',' + var7 + ',' + var8 + ',' + var9 + ',' + var11 + ',' + (var12 != null ? "{...}" : "null") + ')'); + } + } + + final void method1960() { + try { + if (this.aClass109_Sub1_2738 != null) { + Class141.method2047(this.aClass109_Sub1_2738, this.anInt2725, this.anInt2720, this.anInt2748); + } + + this.anInt2750 = -1; + this.anInt2752 = -1; + this.aClass109_Sub1_2738 = null; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "dc.F(" + -1 + ')'); + } + } + + protected final void finalize() { + } + + private void method1961(int var1, int var2) { + try { + if (this.aClass142_2722 != null) { + int var4 = Class44.anInt719 - this.anInt2749; + if (var4 > 100 && this.aClass142_2722.anInt1865 > 0) { + int var5; + for (var5 = this.aClass142_2722.frames.length - this.aClass142_2722.anInt1865; var5 > this.anInt2726 && var4 > this.aClass142_2722.duration[this.anInt2726]; ++this.anInt2726) { + var4 -= this.aClass142_2722.duration[this.anInt2726]; + } + + if (var5 <= this.anInt2726) { + int var6 = 0; + + for (int var7 = var5; var7 < this.aClass142_2722.frames.length; ++var7) { + var6 += this.aClass142_2722.duration[var7]; + } + + var4 %= var6; + } + + this.anInt2733 = 1 + this.anInt2726; + if (this.anInt2733 >= this.aClass142_2722.frames.length) { + this.anInt2733 -= this.aClass142_2722.anInt1865; + if (this.anInt2733 < 0 || this.aClass142_2722.frames.length <= this.anInt2733) { + this.anInt2733 = -1; + } + } + } + + while (this.aClass142_2722.duration[this.anInt2726] < var4) { + Unsorted.method1470(var1, this.aClass142_2722, var2, false, this.anInt2726); + var4 -= this.aClass142_2722.duration[this.anInt2726]; + ++this.anInt2726; + if (this.anInt2726 >= this.aClass142_2722.frames.length) { + this.anInt2726 -= this.aClass142_2722.anInt1865; + if (0 > this.anInt2726 || this.anInt2726 >= this.aClass142_2722.frames.length) { + this.aClass142_2722 = null; + break; + } + } + + this.anInt2733 = this.anInt2726 - -1; + if (this.anInt2733 >= this.aClass142_2722.frames.length) { + this.anInt2733 -= this.aClass142_2722.anInt1865; + if (this.anInt2733 < 0 || this.aClass142_2722.frames.length <= this.anInt2733) { + this.anInt2733 = -1; + } + } + } + + this.anInt2746 = var4; + this.anInt2749 = -var4 + Class44.anInt719; + } + + } catch (RuntimeException var8) { + throw ClientErrorException.clientError(var8, "dc.A(" + var1 + ',' + var2 + ',' + -101 + ')'); + } + } + + private GameObject method1962(boolean var1) { + try { + boolean var3 = Class58.anIntArrayArrayArray914 != Class44.anIntArrayArrayArray723; + ObjectDefinition var4 = ObjectDefinition.getObjectDefinition(this.objectId); + int var5 = var4.animationId; + if (null != var4.ChildrenIds) { + var4 = var4.method1685(0); + } + + if (null == var4) { + if (HDToolKit.highDetail && !var3) { + this.method1960(); + } + + return null; + } else { + int var6; + if (Class158.paramGameTypeID != 0 && this.aBoolean2721 && (null == this.aClass142_2722 || var4.animationId != this.aClass142_2722.animId)) { + var6 = var4.animationId; + if (var4.animationId == -1) { + var6 = var5; + } + + if (var6 == -1) { + this.aClass142_2722 = null; + } else { + this.aClass142_2722 = SequenceDefinition.getAnimationDefinition(var6); + } + + if (null != this.aClass142_2722) { + if (var4.aBoolean1492 && -1 != this.aClass142_2722.anInt1865) { + this.anInt2726 = (int) (Math.random() * (double) this.aClass142_2722.frames.length); + this.anInt2749 -= (int) (Math.random() * (double) this.aClass142_2722.duration[this.anInt2726]); + } else { + this.anInt2726 = 0; + this.anInt2749 = Class44.anInt719 + -1; + } + } + } + + var6 = this.anInt2724 & 3; + int var7; + int var8; + if (var6 == 1 || var6 == 3) { + var8 = var4.SizeX; + var7 = var4.SizeY; + } else { + var7 = var4.SizeX; + var8 = var4.SizeY; + } + + int var10 = this.anInt2736 - -(1 + var7 >> 1); + int var9 = (var7 >> 1) + this.anInt2736; + int var11 = (var8 >> 1) + this.anInt2730; + int var12 = (var8 - -1 >> 1) + this.anInt2730; + this.method1961(128 * var11, var9 * 128); + boolean var13 = !var3 && var4.aBoolean1503 && (var4.objectId != this.anInt2750 || (this.anInt2752 != this.anInt2726 || this.aClass142_2722 != null && (this.aClass142_2722.aBoolean1872 || ClientCommands.tweeningEnabled) && this.anInt2733 != this.anInt2726) && Unsorted.anInt1137 >= 2); + if (var1 && !var13) { + return null; + } else { + int[][] var14 = Class44.anIntArrayArrayArray723[this.anInt2732]; + int var15 = var14[var10][var12] + var14[var9][var12] + var14[var9][var11] + var14[var10][var11] >> 2; + int var16 = (var7 << 6) + (this.anInt2736 << 7); + int var17 = (var8 << 6) + (this.anInt2730 << 7); + int[][] var18 = null; + if (var3) { + var18 = Class58.anIntArrayArrayArray914[0]; + } else if (this.anInt2732 < 3) { + var18 = Class44.anIntArrayArrayArray723[1 + this.anInt2732]; + } + + if (HDToolKit.highDetail && var13) { + Class141.method2047(this.aClass109_Sub1_2738, this.anInt2725, this.anInt2720, this.anInt2748); + } + + boolean var19 = null == this.aClass109_Sub1_2738; + Class136 var20; + if (this.aClass142_2722 == null) { + var20 = var4.method1696(this.anInt2724, var16, var14, this.type, var15, var18, false, var19 ? aClass109_Sub1_2631 : this.aClass109_Sub1_2738, (byte) -128, var13, var17); + } else { + var20 = var4.method1697(var17, var16, !var19 ? this.aClass109_Sub1_2738 : aClass109_Sub1_2631, var15, this.aClass142_2722, this.anInt2724, var14, var13, this.anInt2726, -2 ^ -8310, var18, this.anInt2733, this.type, this.anInt2746); + } + + if (null == var20) { + return null; + } else { + if (HDToolKit.highDetail && var13) { + if (var19) { + aClass109_Sub1_2631 = var20.aClass109_Sub1_1770; + } + + int var21 = 0; + if (this.anInt2732 != 0) { + int[][] var22 = Class44.anIntArrayArrayArray723[0]; + var21 = var15 - (var22[var10][var11] + var22[var9][var11] - (-var22[var9][var12] - var22[var10][var12]) >> 2); + } + + LDIndexedSprite var24 = var20.aClass109_Sub1_1770; + if (this.aBoolean2728 && Class141.method2049(var24, var16, var21, var17)) { + this.aBoolean2728 = false; + } + + if (!this.aBoolean2728) { + Class141.method2051(var24, var16, var21, var17); + this.aClass109_Sub1_2738 = var24; + this.anInt2748 = var17; + if (var19) { + aClass109_Sub1_2631 = null; + } + + this.anInt2720 = var21; + this.anInt2725 = var16; + } + + this.anInt2750 = var4.objectId; + this.anInt2752 = this.anInt2726; + } + + return var20.aClass140_1777; + } + } + } + } catch (RuntimeException var23) { + throw ClientErrorException.clientError(var23, "dc.H(" + var1 + ',' + -2 + ')'); + } + } + + final GameObject method1963() { + try { + return this.method1962(false); + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "dc.C(" + 3 + ')'); + } + } + + final int method1871() { + return -32768; + } + + Class140_Sub3(int objectId, int type, int var3, int var4, int var5, int var6, int animationId, boolean var8, GameObject var9) { + try { + this.anInt2732 = var4; + this.anInt2724 = var3; + this.anInt2736 = var5; + this.type = type; + this.objectId = objectId; + this.anInt2730 = var6; + ObjectDefinition var10; + if (HDToolKit.highDetail && null != var9) { + if (var9 instanceof Class140_Sub3) { + ((Class140_Sub3) var9).method1960(); + } else { + var10 = ObjectDefinition.getObjectDefinition(this.objectId); + if (var10.ChildrenIds != null) { + var10 = var10.method1685(0); + } + + if (null != var10) { + Scenery.method840(var10, (byte) -76, 0, this.anInt2724, 0, this.type, this.anInt2736, this.anInt2730, this.anInt2732); + } + } + } + + if (-1 != animationId) { + this.aClass142_2722 = SequenceDefinition.getAnimationDefinition(animationId); + this.anInt2726 = 0; + if (1 >= this.aClass142_2722.frames.length) { + this.anInt2733 = 0; + } else { + this.anInt2733 = 1; + } + + this.anInt2746 = 1; + this.anInt2749 = -1 + Class44.anInt719; + if (this.aClass142_2722.delayType == 0 && null != var9 && var9 instanceof Class140_Sub3) { + Class140_Sub3 var12 = (Class140_Sub3) var9; + if (this.aClass142_2722 == var12.aClass142_2722) { + this.anInt2726 = var12.anInt2726; + this.anInt2749 = var12.anInt2749; + this.anInt2746 = var12.anInt2746; + this.anInt2733 = var12.anInt2733; + return; + } + } + + if (var8 && this.aClass142_2722.anInt1865 != -1) { + this.anInt2726 = (int) (Math.random() * (double) this.aClass142_2722.frames.length); + this.anInt2733 = this.anInt2726 - -1; + if (this.aClass142_2722.frames.length <= this.anInt2733) { + this.anInt2733 -= this.aClass142_2722.anInt1865; + if (this.anInt2733 < 0 || this.aClass142_2722.frames.length <= this.anInt2733) { + this.anInt2733 = -1; + } + } + + this.anInt2746 = 1 - -((int) (Math.random() * (double) this.aClass142_2722.duration[this.anInt2726])); + this.anInt2749 = -this.anInt2746 + Class44.anInt719; + } + } + + if (HDToolKit.highDetail && var9 != null) { + this.method1962(true); + } + + if (var9 == null) { + var10 = ObjectDefinition.getObjectDefinition(this.objectId); + if (null != var10.ChildrenIds) { + this.aBoolean2721 = true; + } + } + + } catch (RuntimeException var11) { + throw ClientErrorException.clientError(var11, "dc.(" + objectId + ',' + type + ',' + var3 + ',' + var4 + ',' + var5 + ',' + var6 + ',' + animationId + ',' + var8 + ',' + (var9 != null ? "{...}" : "null") + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class140_Sub6.java b/Client/src/main/java/org/runite/client/Class140_Sub6.java new file mode 100644 index 000000000..327453225 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class140_Sub6.java @@ -0,0 +1,257 @@ +package org.runite.client; + +final class Class140_Sub6 extends GameObject { + + static int accRegistryPort; + private double aDouble2895; + private int anInt2896 = 0; + private final int anInt2897; + private int anInt2898 = -1; + int anInt2899; + double aDouble2900; + private final int anInt2902; + int anInt2903; + private boolean aBoolean2904; + static int anInt2905 = 0; + int anInt2907; + private double aDouble2908; + private Class127_Sub1 aClass127_Sub1_2909; + static boolean aBoolean2910 = true; + private final int anInt2911; + private int anInt2912 = -32768; + private double aDouble2913; + double aDouble2914; + private final int anInt2915; + private final int anInt2916; + private int anInt2917; + private double aDouble2918; + int entityIndex; + double aDouble2920; + private double aDouble2921; + private int anInt2922 = 0; + private final SequenceDefinition aClass142_2923; + int anInt2924; + int anInt2925; + static volatile long aLong2926 = 0L; + private final int anInt2927; + + + static void method2020(int var0, ObjectDefinition var1, int var3, int var4) { + try { + Class3_Sub9 var5 = (Class3_Sub9) Unsorted.aLinkedList_78.startIteration(); + + while(null != var5) { + if(var4 == var5.anInt2314 && 128 * var0 == var5.anInt2326 && var5.anInt2308 == 128 * var3 && var5.aClass111_2320.objectId == var1.objectId) { + if(null != var5.aClass3_Sub24_Sub1_2312) { + Class3_Sub26.aClass3_Sub24_Sub2_2563.method461(var5.aClass3_Sub24_Sub1_2312); + var5.aClass3_Sub24_Sub1_2312 = null; + } + + if(var5.aClass3_Sub24_Sub1_2315 != null) { + Class3_Sub26.aClass3_Sub24_Sub2_2563.method461(var5.aClass3_Sub24_Sub1_2315); + var5.aClass3_Sub24_Sub1_2315 = null; + } + + var5.unlink(); + return; + } + + var5 = (Class3_Sub9) Unsorted.aLinkedList_78.nextIteration(); + } + + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "ra.E(" + var0 + ',' + (var1 != null?"{...}":"null") + ',' + (byte) -73 + ',' + var3 + ',' + var4 + ')'); + } + } + + static boolean method2021(byte var0, int var1) { + try { + if(var0 > -63) { + anInt2905 = 66; + } + + return var1 == (-var1 & var1); + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "ra.H(" + var0 + ',' + var1 + ')'); + } + } + + final void method1867(int var1, int var2, int var3, int var4, int var5) {} + + private Model method2022() { + try { + GraphicDefinition var2 = GraphicDefinition.getGraphicDefinition(this.anInt2915); + Model var3 = var2.method966(this.anInt2898, this.anInt2922, this.anInt2896); + if(null == var3) { + return null; + } else { + var3.method1896(this.anInt2917); + return var3; + } + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "ra.G(" + -126 + ')'); + } + } + + final void method2023(int var2) { + try { + this.aDouble2920 += this.aDouble2895 * (double)var2; + this.aDouble2900 += this.aDouble2918 * (double)var2; + this.aBoolean2904 = true; + if(this.anInt2927 == -1) { + this.aDouble2914 += this.aDouble2913 * (double)var2; + } else { + this.aDouble2914 += (double)var2 * this.aDouble2908 * 0.5D * (double)var2 + (double)var2 * this.aDouble2913; + this.aDouble2913 += this.aDouble2908 * (double)var2; + } + + this.anInt2924 = 1024 + (int)(325.949D * Math.atan2(this.aDouble2895, this.aDouble2918)) & 0x7FF; + this.anInt2917 = 2047 & (int)(325.949D * Math.atan2(this.aDouble2913, this.aDouble2921)); + + if(this.aClass142_2923 != null) { + this.anInt2896 += var2; + + while(this.anInt2896 > this.aClass142_2923.duration[this.anInt2922]) { + this.anInt2896 -= this.aClass142_2923.duration[this.anInt2922]; + ++this.anInt2922; + if(this.aClass142_2923.frames.length <= this.anInt2922) { + this.anInt2922 -= this.aClass142_2923.anInt1865; + if(this.anInt2922 < 0 || this.aClass142_2923.frames.length <= this.anInt2922) { + this.anInt2922 = 0; + } + } + + this.anInt2898 = this.anInt2922 + 1; + if(this.aClass142_2923.frames.length <= this.anInt2898) { + this.anInt2898 -= this.aClass142_2923.anInt1865; + if(this.anInt2898 < 0 || this.aClass142_2923.frames.length <= this.anInt2898) { + this.anInt2898 = -1; + } + } + } + } + + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "ra.D(" + (byte) -59 + ',' + var2 + ')'); + } + } + + final void method2024(int var1, int var3, int var4, int var5) { + try { + double var6; + if(!this.aBoolean2904) { + double var8 = -this.anInt2916 + var1; + var6 = -this.anInt2902 + var5; + double var10 = Math.sqrt(var6 * var6 + var8 * var8); + this.aDouble2914 = this.anInt2911; + this.aDouble2900 = var8 * (double)this.anInt2897 / var10 + (double)this.anInt2916; + this.aDouble2920 = (double)this.anInt2897 * var6 / var10 + (double)this.anInt2902; + } + + var6 = -var3 + 1 + this.anInt2899; + this.aDouble2918 = ((double)var1 - this.aDouble2900) / var6; + this.aDouble2895 = (-this.aDouble2920 + (double)var5) / var6; + this.aDouble2921 = Math.sqrt(this.aDouble2918 * this.aDouble2918 + this.aDouble2895 * this.aDouble2895); + if(this.anInt2927 == -1) { + this.aDouble2913 = (-this.aDouble2914 + (double)var4) / var6; + } else { + if(!this.aBoolean2904) { + this.aDouble2913 = -this.aDouble2921 * Math.tan((double)this.anInt2927 * 0.02454369D); + } + + this.aDouble2908 = 2.0D * ((double)var4 - this.aDouble2914 - this.aDouble2913 * var6) / (var6 * var6); + } + + } catch (RuntimeException var12) { + throw ClientErrorException.clientError(var12, "ra.J(" + var1 + ',' + 1 + ',' + var3 + ',' + var4 + ',' + var5 + ')'); + } + } + + final void animate(int var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, long var9, int var11, Class127_Sub1 var12) { + try { + Model var13 = this.method2022(); + if(null != var13) { + var13.animate(var1, var2, var3, var4, var5, var6, var7, var8, var9, var11, this.aClass127_Sub1_2909); + this.anInt2912 = var13.method1871(); + } + } catch (RuntimeException var14) { + throw ClientErrorException.clientError(var14, "ra.IA(" + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + var5 + ',' + var6 + ',' + var7 + ',' + var8 + ',' + var9 + ',' + var11 + ',' + (var12 != null?"{...}":"null") + ')'); + } + } + + final int method1871() { + try { + return this.anInt2912; + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "ra.MA()"); + } + } + + static void method2026(int interfaceHash, int amount, int itemId) { + try { + InterfaceWidget var4 = InterfaceWidget.getWidget(9, interfaceHash); + var4.flagUpdate(); + var4.anInt3598 = itemId; + var4.anInt3597 = amount; + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "ra.I(" + (byte) 122 + ',' + interfaceHash + ',' + amount + ',' + itemId + ')'); + } + } + + static AbstractSprite[] getSprites(int archiveId, CacheIndex var3) { + try { + // System.out.println(archiveId); + return !Class75_Sub4.method1351(var3, 0, archiveId)?null: Class75_Sub3.method1347(-26802); + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "ra.B(" + 0 + ',' + (byte) 11 + ',' + archiveId + ',' + (var3 != null?"{...}":"null") + ')'); + } + } + + static int method2028(int var0, int var1) { + try { + int var4; + for(var4 = 1; 1 < var0; var0 >>= 1) { + if(0 != (1 & var0)) { + var4 *= var1; + } + + var1 *= var1; + } + + if(var0 == 1) { + return var4 * var1; + } else { + return var4; + } + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "ra.A(" + var0 + ',' + var1 + ',' + -122 + ')'); + } + } + + Class140_Sub6(int var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9, int var10, int var11) { + try { + this.anInt2899 = var7; + this.anInt2902 = var3; + this.entityIndex = var10; + this.anInt2915 = var1; + this.anInt2907 = var2; + this.anInt2927 = var8; + this.anInt2916 = var4; + this.aBoolean2904 = false; + this.anInt2903 = var11; + this.anInt2897 = var9; + this.anInt2925 = var6; + this.anInt2911 = var5; + int var12 = GraphicDefinition.getGraphicDefinition(this.anInt2915).anInt542; + if(var12 == -1) { + this.aClass142_2923 = null; + } else { + this.aClass142_2923 = SequenceDefinition.getAnimationDefinition(var12); + } + + } catch (RuntimeException var13) { + throw ClientErrorException.clientError(var13, "ra.(" + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + var5 + ',' + var6 + ',' + var7 + ',' + var8 + ',' + var9 + ',' + var10 + ',' + var11 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class141.java b/Client/src/main/java/org/runite/client/Class141.java new file mode 100644 index 000000000..a3b2a0f1b --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class141.java @@ -0,0 +1,453 @@ +package org.runite.client; + + +import javax.media.opengl.GL; + +final class Class141 { + + static LDIndexedSprite aClass109_Sub1_1840; + static Class169[][] aClass169ArrayArray1841; + static LDIndexedSprite[] aClass109_Sub1Array1843; + private static int anInt1842; + private static int anInt1844; + + + private static void method2034(LDIndexedSprite var0, LDIndexedSprite var1, int var2, int var3) { + var2 += var0.anInt1470; + var3 += var0.anInt1464; + int var4 = var2 + var3 * var1.width; + int var5 = 0; + int var6 = var0.height; + int var7 = var0.width; + int var8 = var1.width - var7; + int var9 = 0; + int var10; + if (var3 <= 0) { + var10 = 1 - var3; + var6 -= var10; + var5 += var10 * var7; + var4 += var10 * var1.width; + var3 = 1; + } + + if (var3 + var6 >= var1.height) { + var10 = var3 + var6 + 1 - var1.height; + var6 -= var10; + } + + if (var2 <= 0) { + var10 = 1 - var2; + var7 -= var10; + var5 += var10; + var4 += var10; + var9 += var10; + var8 += var10; + var2 = 1; + } + + if (var2 + var7 >= var1.width) { + var10 = var2 + var7 + 1 - var1.width; + var7 -= var10; + var9 += var10; + var8 += var10; + } + + if (var7 > 0 && var6 > 0) { + method2044(var1.raster, var0.raster, var5, var4, var7, var6, var8, var9); + method2036(var2, var3, var7, var6); + } + } + + private static void method2035(byte[] var0, byte[] var1, int var2, int var3, int var4, int var5, int var6, int var7) { + int var8 = -(var4 >> 2); + var4 = -(var4 & 3); + + for (int var9 = -var5; var9 < 0; ++var9) { + int var10; + int var10001; + for (var10 = var8; var10 < 0; ++var10) { + var10001 = var3++; + var0[var10001] -= var1[var2++]; + var10001 = var3++; + var0[var10001] -= var1[var2++]; + var10001 = var3++; + var0[var10001] -= var1[var2++]; + var10001 = var3++; + var0[var10001] -= var1[var2++]; + } + + for (var10 = var4; var10 < 0; ++var10) { + var10001 = var3++; + var0[var10001] -= var1[var2++]; + } + + var3 += var6; + var2 += var7; + } + + } + + private static void method2036(int var0, int var1, int var2, int var3) { + int var4 = var0 - 1 >> 7; + int var5 = var0 - 1 + var2 - 1 >> 7; + int var6 = var1 - 1 >> 7; + int var7 = var1 - 1 + var3 - 1 >> 7; + + for (int var8 = var4; var8 <= var5; ++var8) { + for (int var9 = var6; var9 <= var7; ++var9) { + aClass169ArrayArray1841[var8][var9].aBoolean2106 = true; + } + } + + } + + static void method2037(int var0, int var1, boolean var2, boolean var3, int var4, int var5, int var6, int var7, int var8, int var9) { + if (!var2 || !var3) { + if (!var2 || var0 != 1) { + if (!var3 || var0 != 0) { + int var10 = var4 << 7; + int var11 = var6 + var7 + var8 + var9 >> 2; + int var12 = var5 << 7; + int var13 = var10 - (var11 * Class92.lightX >> 8) >> 3; + int var14 = var12 - (var11 * Class92.lightY >> 8) >> 3; + if (var0 != 0 && var0 != 1 && (var2 || var3)) { + method2050(aClass109_Sub1Array1843[var0], aClass109_Sub1_1840, var13 + 1, var14 + 1, var1, var2); + } else { + method2034(aClass109_Sub1Array1843[1], aClass109_Sub1_1840, var13 + 1, var14 + 1); + } + } + } + } + } + + static void method2038(int var0, int var1, int var2, boolean[][] var4) { + GL var6 = HDToolKit.gl; + HDToolKit.method1856(1); + HDToolKit.method1847(1); + HDToolKit.method1823(); + HDToolKit.method1837(false); + Unsorted.method551(0, 0); + var6.glDepthMask(false); + + for (int var7 = 0; var7 < anInt1844; ++var7) { + int var8 = 0; + + while (var8 < anInt1842) { + int var9 = var7 * 8; + + while (true) { + if (var9 < var7 * 8 + 8) { + label42: + { + if (var9 - var0 >= -var2 && var9 - var0 <= var2) { + for (int var10 = var8 * 8; var10 < var8 * 8 + 8; ++var10) { + if (var10 - var1 >= -var2 && var10 - var1 <= var2 && var4[var9 - var0 + var2][var10 - var1 + var2]) { + Class169 var11 = aClass169ArrayArray1841[var7][var8]; + if (var11.aBoolean2106) { + var11.method2282(aClass109_Sub1_1840, var7, var8); + var11.aBoolean2106 = false; + } + + var6.glPushMatrix(); + var6.glTranslatef((float) (var7 * 1024), 0.0F, (float) (var8 * 1024)); + var11.method2284(); + var6.glPopMatrix(); + break label42; + } + } + } + + ++var9; + continue; + } + } + + ++var8; + break; + } + } + } + + var6.glEnableClientState('\u8076'); + var6.glDepthMask(true); + HDToolKit.method1846(); + } + + private static boolean method2039(byte[] var0, int var1, int var2, int var3, int var4, int var5) { + int var6 = var2 % var5; + int var7; + if (var6 == 0) { + var7 = 0; + } else { + var7 = var5 - var6; + } + + int var8 = -((var3 + var5 - 1) / var5); + int var9 = -((var2 + var5 - 1) / var5); + + for (int var10 = var8; var10 < 0; ++var10) { + for (int var11 = var9; var11 < 0; ++var11) { + if (var0[var1] == 0) { + return true; + } + + var1 += var5; + } + + var1 -= var7; + if (var0[var1 - 1] == 0) { + return true; + } + + var1 += var4; + } + + return false; + } + + private static boolean method2040(LDIndexedSprite var0, LDIndexedSprite var1, int var2, int var3) { + var2 += var0.anInt1470; + var3 += var0.anInt1464; + int var4 = var2 + var3 * var1.width; + int var5 = var0.height; + int var6 = var0.width; + int var7 = var1.width - var6; + int var8; + if (var3 <= 0) { + var8 = 1 - var3; + var5 -= var8; + var4 += var8 * var1.width; + var3 = 1; + } + + if (var3 + var5 >= var1.height) { + var8 = var3 + var5 + 1 - var1.height; + var5 -= var8; + } + + if (var2 <= 0) { + var8 = 1 - var2; + var6 -= var8; + var4 += var8; + var7 += var8; + var2 = 1; + } + + if (var2 + var6 >= var1.width) { + var8 = var2 + var6 + 1 - var1.width; + var6 -= var8; + var7 += var8; + } + + if (var6 > 0 && var5 > 0) { + byte var9 = 8; + var7 += (var9 - 1) * var1.width; + method2036(var2, var3, var6, var5); + return method2039(var1.raster, var4, var6, var5, var7, var9); + } else { + return false; + } + } + + static void method2041() { + anInt1844 = 104 + 7 >> 3; + anInt1842 = 104 + 7 >> 3; + aClass109_Sub1_1840 = new LDIndexedSprite(anInt1844 * 128 + 2, anInt1842 * 128 + 2); + aClass169ArrayArray1841 = new Class169[anInt1844][anInt1842]; + + for (int var2 = 0; var2 < anInt1844; ++var2) { + for (int var3 = 0; var3 < anInt1842; ++var3) { + aClass169ArrayArray1841[var2][var3] = new Class169(); + } + } + + } + + private static void method2042(LDIndexedSprite var0, LDIndexedSprite var1, int var2, int var3) { + var2 += var0.anInt1470; + var3 += var0.anInt1464; + int var4 = var2 + var3 * var1.width; + int var5 = 0; + int var6 = var0.height; + int var7 = var0.width; + int var8 = var1.width - var7; + int var9 = 0; + int var10; + if (var3 <= 0) { + var10 = 1 - var3; + var6 -= var10; + var5 += var10 * var7; + var4 += var10 * var1.width; + var3 = 1; + } + + if (var3 + var6 >= var1.height) { + var10 = var3 + var6 + 1 - var1.height; + var6 -= var10; + } + + if (var2 <= 0) { + var10 = 1 - var2; + var7 -= var10; + var5 += var10; + var4 += var10; + var9 += var10; + var8 += var10; + var2 = 1; + } + + if (var2 + var7 >= var1.width) { + var10 = var2 + var7 + 1 - var1.width; + var7 -= var10; + var9 += var10; + var8 += var10; + } + + if (var7 > 0 && var6 > 0) { + method2035(var1.raster, var0.raster, var5, var4, var7, var6, var8, var9); + method2036(var2, var3, var7, var6); + } + } + + static void method2043() { + aClass109_Sub1_1840 = null; + aClass109_Sub1Array1843 = null; + aClass169ArrayArray1841 = null; + } + + private static void method2044(byte[] var0, byte[] var1, int var2, int var3, int var4, int var5, int var6, int var7) { + int var8 = -(var4 >> 2); + var4 = -(var4 & 3); + + for (int var9 = -var5; var9 < 0; ++var9) { + int var10; + int var10001; + for (var10 = var8; var10 < 0; ++var10) { + var10001 = var3++; + var0[var10001] += var1[var2++]; + var10001 = var3++; + var0[var10001] += var1[var2++]; + var10001 = var3++; + var0[var10001] += var1[var2++]; + var10001 = var3++; + var0[var10001] += var1[var2++]; + } + + for (var10 = var4; var10 < 0; ++var10) { + var10001 = var3++; + var0[var10001] += var1[var2++]; + } + + var3 += var6; + var2 += var7; + } + + } + + private static void method2046(byte[] var0, byte[] var1, int var2, int var3, int var4, int var5, int var6) { + for (int var7 = -16; var7 < 0; ++var7) { + for (int var8 = -4; var8 < 0; ++var8) { + int var10001 = var3++; + var0[var10001] = (byte) (var0[var10001] + (1 - var1[var2])); + var2 += var5; + var10001 = var3++; + var0[var10001] = (byte) (var0[var10001] + (1 - var1[var2])); + var2 += var5; + var10001 = var3++; + var0[var10001] = (byte) (var0[var10001] + (1 - var1[var2])); + var2 += var5; + var10001 = var3++; + var0[var10001] = (byte) (var0[var10001] + (1 - var1[var2])); + var2 += var5; + } + + var3 += var4; + var2 += var6; + } + + } + + static void method2047(LDIndexedSprite var0, int var1, int var2, int var3) { + if (var0 != null) { + int var4 = var1 - (var2 * Class92.lightX >> 8) >> 3; + int var5 = var3 - (var2 * Class92.lightY >> 8) >> 3; + method2042(var0, aClass109_Sub1_1840, var4 + 1, var5 + 1); + } + } + + private static void method2048(byte[] var0, byte[] var1, int var2, int var3, int var4, int var5, int var6) { + for (int var7 = -16; var7 < 0; ++var7) { + for (int var8 = -4; var8 < 0; ++var8) { + int var10001 = var3++; + var0[var10001] += var1[var2]; + var2 += var5; + var10001 = var3++; + var0[var10001] += var1[var2]; + var2 += var5; + var10001 = var3++; + var0[var10001] += var1[var2]; + var2 += var5; + var10001 = var3++; + var0[var10001] += var1[var2]; + var2 += var5; + } + + var3 += var4; + var2 += var6; + } + + } + + static boolean method2049(LDIndexedSprite var0, int var1, int var2, int var3) { + if (var0 == null) { + return false; + } else { + int var4 = var1 - (var2 * Class92.lightX >> 8) >> 3; + int var5 = var3 - (var2 * Class92.lightY >> 8) >> 3; + return method2040(var0, aClass109_Sub1_1840, var4 + 1, var5 + 1); + } + } + + private static void method2050(LDIndexedSprite var0, LDIndexedSprite var1, int var2, int var3, int var4, boolean var5) { + if (var2 > 0 && var3 > 0 && var2 + 16 < var1.width && var3 + 16 < var1.height) { + int var6 = var2 + var3 * var1.width; + int var7 = var1.width - 16; + short var8; + byte var9; + int var10; + if (var4 == 0) { + var8 = 240; + var9 = 1; + var10 = -var9 * 16 - 16; + } else if (var4 == 1) { + var8 = 255; + var9 = -16; + var10 = -var9 * 16 - 1; + } else if (var4 == 2) { + var8 = 15; + var9 = -1; + var10 = -var9 * 16 + 16; + } else { + var8 = 0; + var9 = 16; + var10 = -var9 * 16 + 1; + } + + if (var5) { + method2046(var1.raster, var0.raster, var8, var6, var7, var9, var10); + } else { + method2048(var1.raster, var0.raster, var8, var6, var7, var9, var10); + } + + method2036(var2, var3, 16, 16); + } + } + + static void method2051(LDIndexedSprite var0, int var1, int var2, int var3) { + if (var0 != null) { + int var4 = var1 - (var2 * Class92.lightX >> 8) >> 3; + int var5 = var3 - (var2 * Class92.lightY >> 8) >> 3; + method2034(var0, aClass109_Sub1_1840, var4 + 1, var5 + 1); + } + } +} diff --git a/Client/src/main/java/org/runite/client/Class143.java b/Client/src/main/java/org/runite/client/Class143.java new file mode 100644 index 000000000..6dd8b7ee5 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class143.java @@ -0,0 +1,43 @@ +package org.runite.client; + +import org.rs09.client.data.ReferenceCache; + +public final class Class143 { + + public static int gameStage = 0; + static ReferenceCache aReferenceCache_1874 = new ReferenceCache(50); + + static void method2062(int var0, int var1, int var3, int var4, int var5, int var6, int var7) { + try { + int var12 = Class40.method1040(Class57.anInt902, var6, Class159.anInt2020); + int var13 = Class40.method1040(Class57.anInt902, var3, Class159.anInt2020); + int var14 = Class40.method1040(Class3_Sub28_Sub18.anInt3765, var7, Class101.anInt1425); + int var15 = Class40.method1040(Class3_Sub28_Sub18.anInt3765, var0, Class101.anInt1425); + int var8 = Class40.method1040(Class57.anInt902, var4 + var6, Class159.anInt2020); + int var9 = Class40.method1040(Class57.anInt902, -var4 + var3, Class159.anInt2020); + + int var16; + for (var16 = var12; var8 > var16; ++var16) { + TextureOperation18.method282(Class38.anIntArrayArray663[var16], var14, 97, var15, var5); + } + + for (var16 = var13; var9 < var16; --var16) { + TextureOperation18.method282(Class38.anIntArrayArray663[var16], var14, 94, var15, var5); + } + + int var10 = Class40.method1040(Class3_Sub28_Sub18.anInt3765, var4 + var7, Class101.anInt1425); + int var11 = Class40.method1040(Class3_Sub28_Sub18.anInt3765, -var4 + var0, Class101.anInt1425); + + for (var16 = var8; var9 >= var16; ++var16) { + int[] var17 = Class38.anIntArrayArray663[var16]; + TextureOperation18.method282(var17, var14, 105, var10, var5); + TextureOperation18.method282(var17, var10, 111, var11, var1); + TextureOperation18.method282(var17, var11, 109, var15, var5); + } + + } catch (RuntimeException var18) { + throw ClientErrorException.clientError(var18, "tl.B(" + var0 + ',' + var1 + ',' + -89 + ',' + var3 + ',' + var4 + ',' + var5 + ',' + var6 + ',' + var7 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class144.java b/Client/src/main/java/org/runite/client/Class144.java new file mode 100644 index 000000000..cd026dde4 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class144.java @@ -0,0 +1,9 @@ +package org.runite.client; + +abstract class Class144 { + + abstract byte[] getBytes(); + + abstract void setBytes(byte[] var2); + +} diff --git a/Client/src/main/java/org/runite/client/Class144_Sub1.java b/Client/src/main/java/org/runite/client/Class144_Sub1.java new file mode 100644 index 000000000..94b59518b --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class144_Sub1.java @@ -0,0 +1,22 @@ +package org.runite.client; + +import java.nio.ByteBuffer; + +final class Class144_Sub1 extends Class144 { + + private ByteBuffer wrapped; + + final void setBytes(byte[] bytes) { + this.wrapped = ByteBuffer.allocateDirect(bytes.length); + this.wrapped.position(0); + this.wrapped.put(bytes); + } + + final byte[] getBytes() { + byte[] bytes = new byte[this.wrapped.capacity()]; + this.wrapped.position(0); + this.wrapped.get(bytes); + return bytes; + } + +} diff --git a/Client/src/main/java/org/runite/client/Class145.java b/Client/src/main/java/org/runite/client/Class145.java new file mode 100644 index 000000000..2c1330a45 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class145.java @@ -0,0 +1,825 @@ +package org.runite.client; + +final class Class145 { + + static int[] anIntArray2338 = new int[]{160, 192, 80, 96, 0, 144, 80, 48, 160}; + static int anInt3072 = -1; + static int anInt3153; + static int[] anIntArray3171 = new int[]{0, 4, 4, 8, 0, 0, 8, 0, 0}; + static int anInt3340; + static int anInt2697; + static Class113[] aClass113Array1895; + static int screenUpperX; + int animationId; + int anInt1891; + int anInt1893; + int anInt1894; + int anInt1897; + int anInt1900; + + static void method2072(int var0, int var1, int var2, int var3, int var4, int var5) { + try { + if (Class101.anInt1425 <= var1 && Class3_Sub28_Sub18.anInt3765 >= var3 && var2 >= Class159.anInt2020 && var4 <= Class57.anInt902) { + if (var5 == 1) { + Class77.method1367(var0, var3, var2, (byte) 34, var4, var1); + } else { + method1665(-2 + -19617, var3, var2, var0, var4, var5, var1); + } + } else if (1 == var5) { + Class102.method1617(var0, var1, var4, var3, var2); + } else { + TextureOperation33.method184(var4, var5, var3, var1, var0, var2); + } + + } catch (RuntimeException var8) { + throw ClientErrorException.clientError(var8, "ub.F(" + var0 + ',' + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + var5 + ',' + -2 + ')'); + } + } + + static void method2073(TileData var0, boolean var1) { + Class163_Sub1.aLinkedList_2990.pushBack(var0); + + while (true) { + TileData var2 = (TileData) Class163_Sub1.aLinkedList_2990.method1220(); + if (var2 == null) { + return; + } + + if (var2.aBoolean2225) { + int var3 = var2.anInt2239; + int var4 = var2.anInt2231; + int var5 = var2.anInt2244; + int var6 = var2.anInt2238; + TileData[][] var7 = TileData.aTileDataArrayArrayArray2638[var5]; + float var8 = 0.0F; + int var9; + int var10; + int var11; + int var12; + if (HDToolKit.highDetail) { + if (Unsorted.anIntArrayArrayArray3605 == Class44.anIntArrayArrayArray723) { + var9 = TextureOperation16.anIntArrayArray3115[var3][var4]; + var10 = var9 & 16777215; + if (var10 != Unsorted.anInt1244) { + Unsorted.anInt1244 = var10; + Class3_Sub28_Sub2.method535((byte) 56, var10); + Class92.method1512(Class72.method1297()); + } + + var11 = var9 >>> 24 << 3; + if (var11 != anInt3072) { + anInt3072 = var11; + Class3_Sub21.method394(var11, 121); + } + + var12 = Class58.anIntArrayArrayArray914[0][var3][var4] + Class58.anIntArrayArrayArray914[0][var3 + 1][var4] + Class58.anIntArrayArrayArray914[0][var3][var4 + 1] + Class58.anIntArrayArrayArray914[0][var3 + 1][var4 + 1] >> 2; + Unsorted.method551(-var12, 3); + var8 = 201.5F; + } else { + var8 = 201.5F - 50.0F * (float) (var6 + 1); + } + HDToolKit.method1832(var8); + } + + int var14; + int var15; + int var17; + int var16; + int var18; + TileData var21; + Class70 var23; + boolean var22; + Class25 var25; + TileData var35; + if (var2.aBoolean2222) { + if (var1) { + if (var5 > 0) { + var21 = TileData.aTileDataArrayArrayArray2638[var5 - 1][var3][var4]; + if (var21 != null && var21.aBoolean2225) { + continue; + } + } + + if (var3 <= Class97.anInt1375 && var3 > Class163_Sub1_Sub1.anInt4006) { + var21 = var7[var3 - 1][var4]; + if (var21 != null && var21.aBoolean2225 && (var21.aBoolean2222 || (var2.anInt2228 & 1) == 0)) { + continue; + } + } + + if (var3 >= Class97.anInt1375 && var3 < Unsorted.anInt67 - 1) { + var21 = var7[var3 + 1][var4]; + if (var21 != null && var21.aBoolean2225 && (var21.aBoolean2222 || (var2.anInt2228 & 4) == 0)) { + continue; + } + } + + if (var4 <= anInt3340 && var4 > Unsorted.anInt3603) { + var21 = var7[var3][var4 - 1]; + if (var21 != null && var21.aBoolean2225 && (var21.aBoolean2222 || (var2.anInt2228 & 8) == 0)) { + continue; + } + } + + if (var4 >= anInt3340 && var4 < Class126.anInt1665 - 1) { + var21 = var7[var3][var4 + 1]; + if (var21 != null && var21.aBoolean2225 && (var21.aBoolean2222 || (var2.anInt2228 & 2) == 0)) { + continue; + } + } + } else { + var1 = true; + } + + var2.aBoolean2222 = false; + if (var2.aClass3_Sub2_2235 != null) { + var21 = var2.aClass3_Sub2_2235; + if (HDToolKit.highDetail) { + HDToolKit.method1832(201.5F - 50.0F * (float) (var21.anInt2238 + 1)); + } + + if (var21.aClass126_2240 != null) { + TextureOperation19.method259(var21.aClass126_2240, 0, Class60.anInt936, Unsorted.anInt1037, TextureOperation25.anInt3417, anInt3153, var3, var4, Class8.method846(0, var3, var4)); + } else if (var21.aClass35_2226 != null) { + Class3_Sub21.method395(var21.aClass35_2226, Class60.anInt936, Unsorted.anInt1037, TextureOperation25.anInt3417, anInt3153, var3, var4, Class8.method846(0, var3, var4)); + } + + var23 = var21.aClass70_2234; + if (var23 != null) { + if (HDToolKit.highDetail) { + if ((var23.anInt1055 & var2.anInt2241) == 0) { + Class68.method1268(anInt2697, Unsorted.anInt3657, TextureOperation13.anInt3363, var5, var3, var4); + } else { + Class68.method1263(var23.anInt1055, anInt2697, Unsorted.anInt3657, TextureOperation13.anInt3363, var6, var3, var4); + } + } + + var23.aClass140_1049.animate(0, Class60.anInt936, Unsorted.anInt1037, TextureOperation25.anInt3417, anInt3153, var23.anInt1054 - anInt2697, var23.anInt1057 - Unsorted.anInt3657, var23.anInt1045 - TextureOperation13.anInt3363, var23.aLong1048, var5, null); + } + + for (var11 = 0; var11 < var21.anInt2223; ++var11) { + var25 = var21.aClass25Array2221[var11]; + if (var25 != null) { + if (HDToolKit.highDetail) { + Class68.method1268(anInt2697, Unsorted.anInt3657, TextureOperation13.anInt3363, var5, var3, var4); + } + + var25.aClass140_479.animate(var25.anInt496, Class60.anInt936, Unsorted.anInt1037, TextureOperation25.anInt3417, anInt3153, var25.anInt482 - anInt2697, var25.anInt489 - Unsorted.anInt3657, var25.anInt484 - TextureOperation13.anInt3363, var25.aLong498, var5, null); + } + } + + if (HDToolKit.highDetail) { + HDToolKit.method1832(var8); + } + } + + var22 = false; + if (var2.aClass126_2240 != null) { + if (Class8.method846(var6, var3, var4)) { + TextureOperation19.method259(var2.aClass126_2240, var6, Class60.anInt936, Unsorted.anInt1037, TextureOperation25.anInt3417, anInt3153, var3, var4, true); + } else { + var22 = true; + if (var2.aClass126_2240.anInt1664 != 12345678 || TextureOperation37.aBoolean3261 && var5 <= Class91.anInt1302) { + TextureOperation19.method259(var2.aClass126_2240, var6, Class60.anInt936, Unsorted.anInt1037, TextureOperation25.anInt3417, anInt3153, var3, var4, false); + } + } + } else if (var2.aClass35_2226 != null) { + if (Class8.method846(var6, var3, var4)) { + Class3_Sub21.method395(var2.aClass35_2226, Class60.anInt936, Unsorted.anInt1037, TextureOperation25.anInt3417, anInt3153, var3, var4, true); + } else { + var22 = true; + Class3_Sub21.method395(var2.aClass35_2226, Class60.anInt936, Unsorted.anInt1037, TextureOperation25.anInt3417, anInt3153, var3, var4, false); + } + } + + if (var22) { + Class12 var24 = var2.aClass12_2230; + if (var24 != null && (var24.aLong328 & 2147483648L) != 0L) { + if (HDToolKit.highDetail && var24.aBoolean329) { + HDToolKit.method1832(var8 + 50.0F - 1.5F); + } + + if (HDToolKit.highDetail) { + Class68.method1268(anInt2697, Unsorted.anInt3657, TextureOperation13.anInt3363, var5, var3, var4); + } + + var24.object.animate(0, Class60.anInt936, Unsorted.anInt1037, TextureOperation25.anInt3417, anInt3153, var24.anInt324 - anInt2697, var24.anInt326 - Unsorted.anInt3657, var24.anInt330 - TextureOperation13.anInt3363, var24.aLong328, var5, null); + if (HDToolKit.highDetail && var24.aBoolean329) { + HDToolKit.method1832(var8); + } + } + } + + var10 = 0; + var11 = 0; + Class70 var26 = var2.aClass70_2234; + Class19 var13 = var2.aClass19_2233; + if (var26 != null || var13 != null) { + if (Class97.anInt1375 == var3) { + ++var10; + } else if (Class97.anInt1375 < var3) { + var10 += 2; + } + + if (anInt3340 == var4) { + var10 += 3; + } else if (anInt3340 > var4) { + var10 += 6; + } + + var11 = NPC.anIntArray3997[var10]; + var2.anInt2241 = TextureOperation35.anIntArray3321[var10]; + } + + if (var26 != null) { + if ((var26.anInt1055 & anIntArray2338[var10]) == 0) { + var2.anInt2227 = 0; + } else if (var26.anInt1055 == 16) { + var2.anInt2227 = 3; + var2.anInt2229 = Unsorted.anIntArray2470[var10]; + var2.anInt2232 = 3 - var2.anInt2229; + } else if (var26.anInt1055 == 32) { + var2.anInt2227 = 6; + var2.anInt2229 = GroundItem.anIntArray2933[var10]; + var2.anInt2232 = 6 - var2.anInt2229; + } else if (var26.anInt1055 == 64) { + var2.anInt2227 = 12; + var2.anInt2229 = anIntArray3171[var10]; + var2.anInt2232 = 12 - var2.anInt2229; + } else { + var2.anInt2227 = 9; + var2.anInt2229 = TextureOperation18.anIntArray4035[var10]; + var2.anInt2232 = 9 - var2.anInt2229; + } + + if ((var26.anInt1055 & var11) != 0 && Class164_Sub1.method2239(var6, var3, var4, var26.anInt1055)) { + if (HDToolKit.highDetail) { + Class68.method1268(anInt2697, Unsorted.anInt3657, TextureOperation13.anInt3363, var5, var3, var4); + } + + var26.aClass140_1049.animate(0, Class60.anInt936, Unsorted.anInt1037, TextureOperation25.anInt3417, anInt3153, var26.anInt1054 - anInt2697, var26.anInt1057 - Unsorted.anInt3657, var26.anInt1045 - TextureOperation13.anInt3363, var26.aLong1048, var5, null); + } + + if ((var26.anInt1059 & var11) != 0 && Class164_Sub1.method2239(var6, var3, var4, var26.anInt1059)) { + if (HDToolKit.highDetail) { + Class68.method1268(anInt2697, Unsorted.anInt3657, TextureOperation13.anInt3363, var5, var3, var4); + } + + var26.aClass140_1052.animate(0, Class60.anInt936, Unsorted.anInt1037, TextureOperation25.anInt3417, anInt3153, var26.anInt1054 - anInt2697, var26.anInt1057 - Unsorted.anInt3657, var26.anInt1045 - TextureOperation13.anInt3363, var26.aLong1048, var5, null); + } + } + + if (var13 != null && Class166.method2256(var6, var3, var4, var13.aClass140_429.method1871())) { + if (HDToolKit.highDetail) { + HDToolKit.method1832(var8 - 0.5F); + } + + if ((var13.anInt432 & var11) != 0) { + if (HDToolKit.highDetail) { + Class68.method1268(anInt2697, Unsorted.anInt3657, TextureOperation13.anInt3363, var5, var3, var4); + } + + var13.aClass140_429.animate(0, Class60.anInt936, Unsorted.anInt1037, TextureOperation25.anInt3417, anInt3153, var13.anInt424 - anInt2697 + var13.anInt430, var13.anInt425 - Unsorted.anInt3657, var13.anInt427 - TextureOperation13.anInt3363 + var13.anInt426, var13.aLong428, var5, null); + } else if (var13.anInt432 == 256) { + var14 = var13.anInt424 - anInt2697; + var15 = var13.anInt425 - Unsorted.anInt3657; + var16 = var13.anInt427 - TextureOperation13.anInt3363; + var17 = var13.anInt420; + if (var17 == 1 || var17 == 2) { + var18 = -var14; + } else { + var18 = var14; + } + + int var19; + if (var17 == 2 || var17 == 3) { + var19 = -var16; + } else { + var19 = var16; + } + + if (var19 < var18) { + if (HDToolKit.highDetail) { + Class68.method1268(anInt2697, Unsorted.anInt3657, TextureOperation13.anInt3363, var5, var3, var4); + } + + var13.aClass140_429.animate(0, Class60.anInt936, Unsorted.anInt1037, TextureOperation25.anInt3417, anInt3153, var14 + var13.anInt430, var15, var16 + var13.anInt426, var13.aLong428, var5, null); + } else if (var13.aClass140_423 != null) { + if (HDToolKit.highDetail) { + Class68.method1268(anInt2697, Unsorted.anInt3657, TextureOperation13.anInt3363, var5, var3, var4); + } + + var13.aClass140_423.animate(0, Class60.anInt936, Unsorted.anInt1037, TextureOperation25.anInt3417, anInt3153, var14, var15, var16, var13.aLong428, var5, null); + } + } + + if (HDToolKit.highDetail) { + HDToolKit.method1832(var8); + } + } + + if (var22) { + Class12 var30 = var2.aClass12_2230; + if (var30 != null && (var30.aLong328 & 2147483648L) == 0L) { + if (HDToolKit.highDetail && var30.aBoolean329) { + HDToolKit.method1832(var8 + 50.0F - 1.5F); + } + + if (HDToolKit.highDetail) { + Class68.method1268(anInt2697, Unsorted.anInt3657, TextureOperation13.anInt3363, var5, var3, var4); + } + + var30.object.animate(0, Class60.anInt936, Unsorted.anInt1037, TextureOperation25.anInt3417, anInt3153, var30.anInt324 - anInt2697, var30.anInt326 - Unsorted.anInt3657, var30.anInt330 - TextureOperation13.anInt3363, var30.aLong328, var5, null); + if (HDToolKit.highDetail && var30.aBoolean329) { + HDToolKit.method1832(var8); + } + } + + Class72 var28 = var2.aClass72_2245; + if (var28 != null && var28.anInt1077 == 0) { + if (HDToolKit.highDetail) { + Class68.method1268(anInt2697, Unsorted.anInt3657, TextureOperation13.anInt3363, var5, var3, var4); + } + + if (var28.aClass140_1067 != null) { + var28.aClass140_1067.animate(0, Class60.anInt936, Unsorted.anInt1037, TextureOperation25.anInt3417, anInt3153, var28.anInt1078 - anInt2697, var28.anInt1068 - Unsorted.anInt3657, var28.anInt1075 - TextureOperation13.anInt3363, var28.aLong1079, var5, null); + } + + if (var28.aClass140_1069 != null) { + var28.aClass140_1069.animate(0, Class60.anInt936, Unsorted.anInt1037, TextureOperation25.anInt3417, anInt3153, var28.anInt1078 - anInt2697, var28.anInt1068 - Unsorted.anInt3657, var28.anInt1075 - TextureOperation13.anInt3363, var28.aLong1079, var5, null); + } + + if (var28.aClass140_1073 != null) { + var28.aClass140_1073.animate(0, Class60.anInt936, Unsorted.anInt1037, TextureOperation25.anInt3417, anInt3153, var28.anInt1078 - anInt2697, var28.anInt1068 - Unsorted.anInt3657, var28.anInt1075 - TextureOperation13.anInt3363, var28.aLong1079, var5, null); + } + } + } + + var14 = var2.anInt2228; + if (var14 != 0) { + if (var3 < Class97.anInt1375 && (var14 & 4) != 0) { + var35 = var7[var3 + 1][var4]; + if (var35 != null && var35.aBoolean2225) { + Class163_Sub1.aLinkedList_2990.pushBack(var35); + } + } + + if (var4 < anInt3340 && (var14 & 2) != 0) { + var35 = var7[var3][var4 + 1]; + if (var35 != null && var35.aBoolean2225) { + Class163_Sub1.aLinkedList_2990.pushBack(var35); + } + } + + if (var3 > Class97.anInt1375 && (var14 & 1) != 0) { + var35 = var7[var3 - 1][var4]; + if (var35 != null && var35.aBoolean2225) { + Class163_Sub1.aLinkedList_2990.pushBack(var35); + } + } + + if (var4 > anInt3340 && (var14 & 8) != 0) { + var35 = var7[var3][var4 - 1]; + if (var35 != null && var35.aBoolean2225) { + Class163_Sub1.aLinkedList_2990.pushBack(var35); + } + } + } + } + + int var27; + if (var2.anInt2227 != 0) { + var22 = true; + + for (var10 = 0; var10 < var2.anInt2223; ++var10) { + if (var2.aClass25Array2221[var10].anInt490 != Class3_Sub28_Sub1.anInt3539 && (var2.anIntArray2237[var10] & var2.anInt2227) == var2.anInt2229) { + var22 = false; + break; + } + } + + if (var22) { + var23 = var2.aClass70_2234; + if (Class164_Sub1.method2239(var6, var3, var4, var23.anInt1055)) { + if (HDToolKit.highDetail) { + label736: + { + if ((var23.aLong1048 & 1032192L) == 16384L) { + var11 = var23.anInt1054 - anInt2697; + var12 = var23.anInt1045 - TextureOperation13.anInt3363; + var27 = (int) (var23.aLong1048 >> 20 & 3L); + if (var27 == 0) { + var11 -= 64; + var12 += 64; + if (var12 < var11 && var3 > 0 && var4 < TextureOperation17.height3179 - 1) { + Class68.method1268(anInt2697, Unsorted.anInt3657, TextureOperation13.anInt3363, var5, var3 - 1, var4 + 1); + break label736; + } + } else if (var27 == 1) { + var11 += 64; + var12 += 64; + if (var12 < -var11 && var3 < Unsorted.width1234 - 1 && var4 < TextureOperation17.height3179 - 1) { + Class68.method1268(anInt2697, Unsorted.anInt3657, TextureOperation13.anInt3363, var5, var3 + 1, var4 + 1); + break label736; + } + } else if (var27 == 2) { + var11 += 64; + var12 -= 64; + if (var12 > var11 && var3 < Unsorted.width1234 - 1 && var4 > 0) { + Class68.method1268(anInt2697, Unsorted.anInt3657, TextureOperation13.anInt3363, var5, var3 + 1, var4 - 1); + break label736; + } + } else { + var11 -= 64; + var12 -= 64; + if (var12 > -var11 && var3 > 0 && var4 > 0) { + Class68.method1268(anInt2697, Unsorted.anInt3657, TextureOperation13.anInt3363, var5, var3 - 1, var4 - 1); + break label736; + } + } + } + + Class68.method1268(anInt2697, Unsorted.anInt3657, TextureOperation13.anInt3363, var5, var3, var4); + } + } + + var23.aClass140_1049.animate(0, Class60.anInt936, Unsorted.anInt1037, TextureOperation25.anInt3417, anInt3153, var23.anInt1054 - anInt2697, var23.anInt1057 - Unsorted.anInt3657, var23.anInt1045 - TextureOperation13.anInt3363, var23.aLong1048, var5, null); + } + + var2.anInt2227 = 0; + } + } + + if (var2.aBoolean2236) { + try { + var9 = var2.anInt2223; + var2.aBoolean2236 = false; + var10 = 0; + + label712: + for (var11 = 0; var11 < var9; ++var11) { + var25 = var2.aClass25Array2221[var11]; + if (var25.anInt490 != Class3_Sub28_Sub1.anInt3539) { + for (var27 = var25.anInt483; var27 <= var25.anInt495; ++var27) { + for (var14 = var25.anInt478; var14 <= var25.anInt481; ++var14) { + var35 = var7[var27][var14]; + if (var35.aBoolean2222) { + var2.aBoolean2236 = true; + continue label712; + } + + if (var35.anInt2227 != 0) { + var16 = 0; + if (var27 > var25.anInt483) { + ++var16; + } + + if (var27 < var25.anInt495) { + var16 += 4; + } + + if (var14 > var25.anInt478) { + var16 += 8; + } + + if (var14 < var25.anInt481) { + var16 += 2; + } + + if ((var16 & var35.anInt2227) == var2.anInt2232) { + var2.aBoolean2236 = true; + continue label712; + } + } + } + } + + Unsorted.aClass25Array4060[var10++] = var25; + var27 = Class97.anInt1375 - var25.anInt483; + var14 = var25.anInt495 - Class97.anInt1375; + if (var14 > var27) { + var27 = var14; + } + + var15 = anInt3340 - var25.anInt478; + var16 = var25.anInt481 - anInt3340; + if (var16 > var15) { + var25.anInt487 = var27 + var16; + } else { + var25.anInt487 = var27 + var15; + } + } + } + + while (var10 > 0) { + var11 = -50; + var12 = -1; + + for (var27 = 0; var27 < var10; ++var27) { + Class25 var34 = Unsorted.aClass25Array4060[var27]; + if (var34.anInt490 != Class3_Sub28_Sub1.anInt3539) { + if (var34.anInt487 > var11) { + var11 = var34.anInt487; + var12 = var27; + } else if (var34.anInt487 == var11) { + var15 = var34.anInt482 - anInt2697; + var16 = var34.anInt484 - TextureOperation13.anInt3363; + var17 = Unsorted.aClass25Array4060[var12].anInt482 - anInt2697; + var18 = Unsorted.aClass25Array4060[var12].anInt484 - TextureOperation13.anInt3363; + if (var15 * var15 + var16 * var16 > var17 * var17 + var18 * var18) { + var12 = var27; + } + } + } + } + + if (var12 == -1) { + break; + } + + Class25 var32 = Unsorted.aClass25Array4060[var12]; + var32.anInt490 = Class3_Sub28_Sub1.anInt3539; + if (!TextureOperation1.method222(var6, var32.anInt483, var32.anInt495, var32.anInt478, var32.anInt481, var32.aClass140_479.method1871())) { + if (HDToolKit.highDetail) { + if ((var32.aLong498 & 1032192L) == 147456L) { + Class68.method1268(anInt2697, Unsorted.anInt3657, TextureOperation13.anInt3363, var5, var3, var4); + var14 = var32.anInt482 - anInt2697; + var15 = var32.anInt484 - TextureOperation13.anInt3363; + var16 = (int) (var32.aLong498 >> 20 & 3L); + if (var16 != 1 && var16 != 3) { + if (var15 > var14) { + Class68.method1272(var5, var3, var4 - 1, var3 + 1, var4); + } else { + Class68.method1272(var5, var3, var4 + 1, var3 - 1, var4); + } + } else if (var15 > -var14) { + Class68.method1272(var5, var3, var4 - 1, var3 - 1, var4); + } else { + Class68.method1272(var5, var3, var4 + 1, var3 + 1, var4); + } + } else { + Class68.method1266(anInt2697, Unsorted.anInt3657, TextureOperation13.anInt3363, var5, var32.anInt483, var32.anInt478, var32.anInt495, var32.anInt481); + } + } + + var32.aClass140_479.animate(var32.anInt496, Class60.anInt936, Unsorted.anInt1037, TextureOperation25.anInt3417, anInt3153, var32.anInt482 - anInt2697, var32.anInt489 - Unsorted.anInt3657, var32.anInt484 - TextureOperation13.anInt3363, var32.aLong498, var5, null); + } + + for (var14 = var32.anInt483; var14 <= var32.anInt495; ++var14) { + for (var15 = var32.anInt478; var15 <= var32.anInt481; ++var15) { + TileData var37 = var7[var14][var15]; + if (var37.anInt2227 != 0) { + Class163_Sub1.aLinkedList_2990.pushBack(var37); + } else if ((var14 != var3 || var15 != var4) && var37.aBoolean2225) { + Class163_Sub1.aLinkedList_2990.pushBack(var37); + } + } + } + } + + if (var2.aBoolean2236) { + continue; + } + } catch (Exception var20) { + var2.aBoolean2236 = false; + } + } + + if (var2.aBoolean2225 && var2.anInt2227 == 0) { + if (var3 <= Class97.anInt1375 && var3 > Class163_Sub1_Sub1.anInt4006) { + var21 = var7[var3 - 1][var4]; + if (var21 != null && var21.aBoolean2225) { + continue; + } + } + + if (var3 >= Class97.anInt1375 && var3 < Unsorted.anInt67 - 1) { + var21 = var7[var3 + 1][var4]; + if (var21 != null && var21.aBoolean2225) { + continue; + } + } + + if (var4 <= anInt3340 && var4 > Unsorted.anInt3603) { + var21 = var7[var3][var4 - 1]; + if (var21 != null && var21.aBoolean2225) { + continue; + } + } + + if (var4 >= anInt3340 && var4 < Class126.anInt1665 - 1) { + var21 = var7[var3][var4 + 1]; + if (var21 != null && var21.aBoolean2225) { + continue; + } + } + + var2.aBoolean2225 = false; + --Class146.anInt3; + Class72 var29 = var2.aClass72_2245; + if (var29 != null && var29.anInt1077 != 0) { + if (HDToolKit.highDetail) { + Class68.method1268(anInt2697, Unsorted.anInt3657, TextureOperation13.anInt3363, var5, var3, var4); + } + + if (var29.aClass140_1067 != null) { + var29.aClass140_1067.animate(0, Class60.anInt936, Unsorted.anInt1037, TextureOperation25.anInt3417, anInt3153, var29.anInt1078 - anInt2697, var29.anInt1068 - Unsorted.anInt3657 - var29.anInt1077, var29.anInt1075 - TextureOperation13.anInt3363, var29.aLong1079, var5, null); + } + + if (var29.aClass140_1069 != null) { + var29.aClass140_1069.animate(0, Class60.anInt936, Unsorted.anInt1037, TextureOperation25.anInt3417, anInt3153, var29.anInt1078 - anInt2697, var29.anInt1068 - Unsorted.anInt3657 - var29.anInt1077, var29.anInt1075 - TextureOperation13.anInt3363, var29.aLong1079, var5, null); + } + + if (var29.aClass140_1073 != null) { + var29.aClass140_1073.animate(0, Class60.anInt936, Unsorted.anInt1037, TextureOperation25.anInt3417, anInt3153, var29.anInt1078 - anInt2697, var29.anInt1068 - Unsorted.anInt3657 - var29.anInt1077, var29.anInt1075 - TextureOperation13.anInt3363, var29.aLong1079, var5, null); + } + } + + if (var2.anInt2241 != 0) { + Class19 var36 = var2.aClass19_2233; + if (var36 != null && Class166.method2256(var6, var3, var4, var36.aClass140_429.method1871())) { + if ((var36.anInt432 & var2.anInt2241) != 0) { + if (HDToolKit.highDetail) { + Class68.method1268(anInt2697, Unsorted.anInt3657, TextureOperation13.anInt3363, var5, var3, var4); + } + + var36.aClass140_429.animate(0, Class60.anInt936, Unsorted.anInt1037, TextureOperation25.anInt3417, anInt3153, var36.anInt424 - anInt2697 + var36.anInt430, var36.anInt425 - Unsorted.anInt3657, var36.anInt427 - TextureOperation13.anInt3363 + var36.anInt426, var36.aLong428, var5, null); + } else if (var36.anInt432 == 256) { + var11 = var36.anInt424 - anInt2697; + var12 = var36.anInt425 - Unsorted.anInt3657; + var27 = var36.anInt427 - TextureOperation13.anInt3363; + var14 = var36.anInt420; + if (var14 == 1 || var14 == 2) { + var15 = -var11; + } else { + var15 = var11; + } + + if (var14 == 2 || var14 == 3) { + var16 = -var27; + } else { + var16 = var27; + } + + if (var16 >= var15) { + if (HDToolKit.highDetail) { + Class68.method1268(anInt2697, Unsorted.anInt3657, TextureOperation13.anInt3363, var5, var3, var4); + } + + var36.aClass140_429.animate(0, Class60.anInt936, Unsorted.anInt1037, TextureOperation25.anInt3417, anInt3153, var11 + var36.anInt430, var12, var27 + var36.anInt426, var36.aLong428, var5, null); + } else if (var36.aClass140_423 != null) { + if (HDToolKit.highDetail) { + Class68.method1268(anInt2697, Unsorted.anInt3657, TextureOperation13.anInt3363, var5, var3, var4); + } + + var36.aClass140_423.animate(0, Class60.anInt936, Unsorted.anInt1037, TextureOperation25.anInt3417, anInt3153, var11, var12, var27, var36.aLong428, var5, null); + } + } + } + + Class70 var31 = var2.aClass70_2234; + if (var31 != null) { + if ((var31.anInt1059 & var2.anInt2241) != 0 && Class164_Sub1.method2239(var6, var3, var4, var31.anInt1059)) { + if (HDToolKit.highDetail) { + Class68.method1263(var31.anInt1059, anInt2697, Unsorted.anInt3657, TextureOperation13.anInt3363, var6, var3, var4); + } + + var31.aClass140_1052.animate(0, Class60.anInt936, Unsorted.anInt1037, TextureOperation25.anInt3417, anInt3153, var31.anInt1054 - anInt2697, var31.anInt1057 - Unsorted.anInt3657, var31.anInt1045 - TextureOperation13.anInt3363, var31.aLong1048, var5, null); + } + + if ((var31.anInt1055 & var2.anInt2241) != 0 && Class164_Sub1.method2239(var6, var3, var4, var31.anInt1055)) { + if (HDToolKit.highDetail) { + Class68.method1263(var31.anInt1055, anInt2697, Unsorted.anInt3657, TextureOperation13.anInt3363, var6, var3, var4); + } + + var31.aClass140_1049.animate(0, Class60.anInt936, Unsorted.anInt1037, TextureOperation25.anInt3417, anInt3153, var31.anInt1054 - anInt2697, var31.anInt1057 - Unsorted.anInt3657, var31.anInt1045 - TextureOperation13.anInt3363, var31.aLong1048, var5, null); + } + } + } + + TileData var33; + if (var5 < Class3_Sub17.anInt2456 - 1) { + var33 = TileData.aTileDataArrayArrayArray2638[var5 + 1][var3][var4]; + if (var33 != null && var33.aBoolean2225) { + Class163_Sub1.aLinkedList_2990.pushBack(var33); + } + } + + if (var3 < Class97.anInt1375) { + var33 = var7[var3 + 1][var4]; + if (var33 != null && var33.aBoolean2225) { + Class163_Sub1.aLinkedList_2990.pushBack(var33); + } + } + + if (var4 < anInt3340) { + var33 = var7[var3][var4 + 1]; + if (var33 != null && var33.aBoolean2225) { + Class163_Sub1.aLinkedList_2990.pushBack(var33); + } + } + + if (var3 > Class97.anInt1375) { + var33 = var7[var3 - 1][var4]; + if (var33 != null && var33.aBoolean2225) { + Class163_Sub1.aLinkedList_2990.pushBack(var33); + } + } + + if (var4 > anInt3340) { + var33 = var7[var3][var4 - 1]; + if (var33 != null && var33.aBoolean2225) { + Class163_Sub1.aLinkedList_2990.pushBack(var33); + } + } + } + } + } + } + + static void method2074(int var0, int var1, int var2, int var3, int var4, int var6) { + try { + RSInterface var7 = AbstractSprite.method638(var0, var1); + if (null != var7 && null != var7.anObjectArray203) { + CS2Script var8 = new CS2Script(); + var8.aClass11_2449 = var7; + var8.arguments = var7.anObjectArray203; + Class43.method1065(var8); + } + + RSInterface.anInt278 = var1; + Unsorted.anInt1038 = var3; + BufferedDataStream.anInt872 = var0; + Class164.anInt2051 = var2; + GameObject.aBoolean1837 = true; + Unsorted.anInt1887 = var4; + Class3_Sub28_Sub5.anInt3590 = var6; + Class20.method909(var7); + } catch (RuntimeException var9) { + throw ClientErrorException.clientError(var9, "ub.C(" + var0 + ',' + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + -120 + ',' + var6 + ')'); + } + } + + static Class29 method2076(int var1) { + try { + Class29 var2 = (Class29) Class136.aReferenceCache_1772.get(var1); + if (var2 == null) { + byte[] var3 = TextureOperation20.configurationsIndex_3154.getFile(16, var1); + { + var2 = new Class29(); + if (null != var3) { + var2.method970(new DataBuffer(var3)); + } + + Class136.aReferenceCache_1772.put(var2, var1); + return var2; + } + } else { + return var2; + } + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "ub.D(" + var1 + ')'); + } + } + + static void method2077() { + try { + Class3_Sub31.aReferenceCache_2604.clear(); + Class27.aReferenceCache_511.clear(); + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "ub.B(" + true + ')'); + } + } + + static void method1665(int var0, int var1, int var2, int var3, int var4, int var5, int var6) { + try { + int var7 = var5 + var2; + int var8 = -var5 + var4; + if (var0 != -19619) { + method1665(-17, 11, -118, -38, 115, -2, 113); + } + + int var9 = var5 + var6; + + int var11; + for (var11 = var2; var7 > var11; ++var11) { + TextureOperation18.method282(Class38.anIntArrayArray663[var11], var6, -91, var1, var3); + } + + for (var11 = var4; var8 < var11; --var11) { + TextureOperation18.method282(Class38.anIntArrayArray663[var11], var6, -113, var1, var3); + } + + int var10 = -var5 + var1; + + for (var11 = var7; var11 <= var8; ++var11) { + int[] var12 = Class38.anIntArrayArray663[var11]; + TextureOperation18.method282(var12, var6, -111, var9, var3); + TextureOperation18.method282(var12, var10, -124, var1, var3); + } + + } catch (RuntimeException var13) { + throw ClientErrorException.clientError(var13, "ok.A(" + var0 + ',' + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + var5 + ',' + var6 + ')'); + } + } +} diff --git a/Client/src/main/java/org/runite/client/Class146.java b/Client/src/main/java/org/runite/client/Class146.java new file mode 100644 index 000000000..027bcce0c --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class146.java @@ -0,0 +1,274 @@ +package org.runite.client; + + +import javax.media.opengl.GL; +import java.awt.*; + + +abstract class Class146 { + + static int anInt1901 = 2; + static int[][][] anIntArrayArrayArray1903; + static int anInt1904; + static int anInt3 = 0; + + static void updateInterfacePacketCounter(int packetCounter) { + try { + Class113.interfacePacketCounter = packetCounter + 1 & 65535; + RenderAnimationDefinition.aBoolean402 = true; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "uc.D(" + packetCounter + ',' + (byte) -25 + ')'); + } + } + + static int method2080(int var0) { + try { + var0 = (-715827883 & var0 >>> 1) + (1431655765 & var0); + var0 = ((-858993460 & var0) >>> 2) + (var0 & 858993459); + var0 = 252645135 & (var0 >>> 4) + var0; + var0 += var0 >>> 8; + var0 += var0 >>> 16; + return 255 & var0; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "uc.E(" + var0 + ',' + -125 + ')'); + } + } + + static void method2083(int var0, int var1, int var2, byte[][][] var3, int var4, byte var5, int var6, int var7) { + ++Class3_Sub28_Sub1.anInt3539; + anInt3 = 0; + int var8 = var6 - 16; + int var9 = var6 + 16; + int var10 = var7 - 16; + int var11 = var7 + 16; + + int var14; + int var15; + int var29; + for (int var12 = TextureOperation22.anInt3419; var12 < Class3_Sub17.anInt2456; ++var12) { + TileData[][] var13 = TileData.aTileDataArrayArrayArray2638[var12]; + + for (var14 = Class163_Sub1_Sub1.anInt4006; var14 < Unsorted.anInt67; ++var14) { + for (var15 = Unsorted.anInt3603; var15 < Class126.anInt1665; ++var15) { + TileData var16 = var13[var14][var15]; + if (var16 != null) { + if (Class23.aBooleanArrayArray457[var14 - Class97.anInt1375 + TextureOperation8.renderDistanceTiles][var15 - Class145.anInt3340 + TextureOperation8.renderDistanceTiles] && (var3 == null || var12 < var4 || var3[var12][var14][var15] != var5)) { + var16.aBoolean2222 = true; + var16.aBoolean2225 = true; + var16.aBoolean2236 = var16.anInt2223 > 0; + + ++anInt3; + } else { + var16.aBoolean2222 = false; + var16.aBoolean2225 = false; + var16.anInt2227 = 0; + if (var14 >= var8 && var14 <= var9 && var15 >= var10 && var15 <= var11) { + if (var16.aClass70_2234 != null) { + Class70 var17 = var16.aClass70_2234; + var17.aClass140_1049.method1867(0, var12, var17.anInt1057, var17.anInt1054, var17.anInt1045); + if (var17.aClass140_1052 != null) { + var17.aClass140_1052.method1867(0, var12, var17.anInt1057, var17.anInt1054, var17.anInt1045); + } + } + + if (var16.aClass19_2233 != null) { + Class19 var31 = var16.aClass19_2233; + var31.aClass140_429.method1867(var31.anInt420, var12, var31.anInt425, var31.anInt424, var31.anInt427); + if (var31.aClass140_423 != null) { + var31.aClass140_423.method1867(var31.anInt420, var12, var31.anInt425, var31.anInt424, var31.anInt427); + } + } + + if (var16.aClass12_2230 != null) { + Class12 var30 = var16.aClass12_2230; + var30.object.method1867(0, var12, var30.anInt326, var30.anInt324, var30.anInt330); + } + + if (var16.aClass25Array2221 != null) { + for (var29 = 0; var29 < var16.anInt2223; ++var29) { + Class25 var18 = var16.aClass25Array2221[var29]; + var18.aClass140_479.method1867(var18.anInt496, var12, var18.anInt489, var18.anInt482, var18.anInt484); + } + } + } + } + } + } + } + } + + boolean var22 = Class44.anIntArrayArrayArray723 == Unsorted.anIntArrayArrayArray3605; + if (HDToolKit.highDetail) { + GL var24 = HDToolKit.gl; + var24.glPushMatrix(); + var24.glTranslatef((float) (-var0), (float) (-var1), (float) (-var2)); + if (var22) { + Class3_Sub22.method403(); + Unsorted.method551(-1, 3); + TextureOperation23.aBoolean3207 = true; + WaterShader.method2254(); + Unsorted.anInt1244 = -1; + Class145.anInt3072 = -1; + + for (var14 = 0; var14 < Class3_Sub23.aClass3_Sub11ArrayArray2542[0].length; ++var14) { + Class3_Sub11 var28 = Class3_Sub23.aClass3_Sub11ArrayArray2542[0][var14]; + float var26 = 251.5F - (var28.aBoolean2364 ? 1.0F : 0.5F); + if (var28.anInt2355 != Unsorted.anInt1244) { + Unsorted.anInt1244 = var28.anInt2355; + Class3_Sub28_Sub2.method535((byte) 56, var28.anInt2355); + Class92.method1512(Class72.method1297()); + } + + var28.method149(TileData.aTileDataArrayArrayArray2638, var26, false); + } + + WaterShader.method2253(); + } else { + for (var14 = TextureOperation22.anInt3419; var14 < Class3_Sub17.anInt2456; ++var14) { + for (var15 = 0; var15 < Class3_Sub23.aClass3_Sub11ArrayArray2542[var14].length; ++var15) { + Class3_Sub11 var25 = Class3_Sub23.aClass3_Sub11ArrayArray2542[var14][var15]; + float var33 = 201.5F - 50.0F * (float) var14 - (var25.aBoolean2364 ? 1.0F : 0.5F); + if (var25.anInt2351 != -1 && Class51.anInterface2_838.method18(var25.anInt2351, 255) == 4 && Class128.aBoolean1685) { + Class3_Sub28_Sub2.method535((byte) 56, var25.anInt2355); + } + + var25.method149(TileData.aTileDataArrayArrayArray2638, var33, false); + } + + if (var14 == 0 && Unsorted.anInt1137 > 0) { + HDToolKit.method1832(101.5F); + Class141.method2038(Class97.anInt1375, Class145.anInt3340, TextureOperation8.renderDistanceTiles, Class23.aBooleanArrayArray457); + } + } + + Class68.method1277(TileData.aTileDataArrayArrayArray2638); + } + + var24.glPopMatrix(); + } + + int var19; + TileData var21; + int var20; + int var23; + TileData[][] var27; + int var34; + int var32; + for (var23 = TextureOperation22.anInt3419; var23 < Class3_Sub17.anInt2456; ++var23) { + var27 = TileData.aTileDataArrayArrayArray2638[var23]; + + for (var15 = -TextureOperation8.renderDistanceTiles; var15 <= 0; ++var15) { + var32 = Class97.anInt1375 + var15; + var29 = Class97.anInt1375 - var15; + if (var32 >= Class163_Sub1_Sub1.anInt4006 || var29 < Unsorted.anInt67) { + for (var34 = -TextureOperation8.renderDistanceTiles; var34 <= 0; ++var34) { + var19 = Class145.anInt3340 + var34; + var20 = Class145.anInt3340 - var34; + if (var32 >= Class163_Sub1_Sub1.anInt4006) { + if (var19 >= Unsorted.anInt3603) { + var21 = var27[var32][var19]; + if (var21 != null && var21.aBoolean2222) { + Class145.method2073(var21, true); + } + } + + if (var20 < Class126.anInt1665) { + var21 = var27[var32][var20]; + if (var21 != null && var21.aBoolean2222) { + Class145.method2073(var21, true); + } + } + } + + if (var29 < Unsorted.anInt67) { + if (var19 >= Unsorted.anInt3603) { + var21 = var27[var29][var19]; + if (var21 != null && var21.aBoolean2222) { + Class145.method2073(var21, true); + } + } + + if (var20 < Class126.anInt1665) { + var21 = var27[var29][var20]; + if (var21 != null && var21.aBoolean2222) { + Class145.method2073(var21, true); + } + } + } + + if (anInt3 == 0) { + if (!var22) { + TextureOperation37.aBoolean3261 = false; + } + + return; + } + } + } + } + } + + for (var23 = TextureOperation22.anInt3419; var23 < Class3_Sub17.anInt2456; ++var23) { + var27 = TileData.aTileDataArrayArrayArray2638[var23]; + + for (var15 = -TextureOperation8.renderDistanceTiles; var15 <= 0; ++var15) { + var32 = Class97.anInt1375 + var15; + var29 = Class97.anInt1375 - var15; + if (var32 >= Class163_Sub1_Sub1.anInt4006 || var29 < Unsorted.anInt67) { + for (var34 = -TextureOperation8.renderDistanceTiles; var34 <= 0; ++var34) { + var19 = Class145.anInt3340 + var34; + var20 = Class145.anInt3340 - var34; + if (var32 >= Class163_Sub1_Sub1.anInt4006) { + if (var19 >= Unsorted.anInt3603) { + var21 = var27[var32][var19]; + if (var21 != null && var21.aBoolean2222) { + Class145.method2073(var21, false); + } + } + + if (var20 < Class126.anInt1665) { + var21 = var27[var32][var20]; + if (var21 != null && var21.aBoolean2222) { + Class145.method2073(var21, false); + } + } + } + + if (var29 < Unsorted.anInt67) { + if (var19 >= Unsorted.anInt3603) { + var21 = var27[var29][var19]; + if (var21 != null && var21.aBoolean2222) { + Class145.method2073(var21, false); + } + } + + if (var20 < Class126.anInt1665) { + var21 = var27[var29][var20]; + if (var21 != null && var21.aBoolean2222) { + Class145.method2073(var21, false); + } + } + } + + if (anInt3 == 0) { + if (!var22) { + TextureOperation37.aBoolean3261 = false; + } + + return; + } + } + } + } + } + + TextureOperation37.aBoolean3261 = false; + } + + abstract int method2078(); + + abstract void method2082(Component var2); + + abstract void method2084(Component var1, int var2); + +} diff --git a/Client/src/main/java/org/runite/client/Class147.java b/Client/src/main/java/org/runite/client/Class147.java new file mode 100644 index 000000000..dd355b9a8 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class147.java @@ -0,0 +1,25 @@ +package org.runite.client; + +final class Class147 implements ShaderInterface { + + public final void method22() { + if (Class106.aBoolean1441) { + HDToolKit.method1837(false); + } + + } + + public final int method24() { + return 0; + } + + public final void method23(int var1) { + } + + public final void method21() { + if (Class106.aBoolean1441) { + HDToolKit.method1837(true); + } + + } +} diff --git a/Client/src/main/java/org/runite/client/Class150.java b/Client/src/main/java/org/runite/client/Class150.java new file mode 100644 index 000000000..920068cb2 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class150.java @@ -0,0 +1,33 @@ +package org.runite.client; + +final class Class150 { + + int anInt1928; + int[] anIntArray1929; + int[] anIntArray1930; + int anInt1931; + + + Class150() { + Class3_Sub14.method368(16); + this.anInt1931 = Class3_Sub14.method364() != 0 ? Class3_Sub14.method368(4) + 1 : 1; + if (Class3_Sub14.method364() != 0) { + Class3_Sub14.method368(8); + } + + Class3_Sub14.method368(2); + if (this.anInt1931 > 1) { + this.anInt1928 = Class3_Sub14.method368(4); + } + + this.anIntArray1929 = new int[this.anInt1931]; + this.anIntArray1930 = new int[this.anInt1931]; + + for (int var1 = 0; var1 < this.anInt1931; ++var1) { + Class3_Sub14.method368(8); + this.anIntArray1929[var1] = Class3_Sub14.method368(8); + this.anIntArray1930[var1] = Class3_Sub14.method368(8); + } + + } +} diff --git a/Client/src/main/java/org/runite/client/Class151_Sub1.java b/Client/src/main/java/org/runite/client/Class151_Sub1.java new file mode 100644 index 000000000..9419fcb9c --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class151_Sub1.java @@ -0,0 +1,549 @@ +package org.runite.client; + +import org.rs09.client.Linkable; +import org.rs09.client.filestore.ReferenceTable; +import org.rs09.client.filestore.ResourceProvider; +import org.rs09.client.data.HashTable; + +import java.util.Objects; + +final class Class151_Sub1 extends ResourceProvider { + + private final Class41 aClass41_2943; + private ReferenceTable table; + private final HashTable aHashTable_2946 = new HashTable<>(16); + private final int anInt2947; + private int anInt2948 = 0; + private byte[] aByteArray2949; + private ResourceRequest aResourceRequest_2950; + private final Js5Worker aJs5Worker_2953; + Class41 aClass41_2954; + private final int anInt2955; + private final CacheResourceWorker cacheResourceWorker; + private final int anInt2957; + private boolean aBoolean2962; + private final LinkedList aLinkedList_2963 = new LinkedList(); + private int anInt2964 = 0; + private boolean aBoolean2965; + private LinkedList aLinkedList_2966; + private long aLong2967 = 0L; + private final boolean aBoolean2968; + + + public final void request(int var1) { + try { + if (null != this.aClass41_2954) { + Linkable var3; + for (var3 = this.aLinkedList_2963.startIteration(); null != var3; var3 = this.aLinkedList_2963.nextIteration()) { + if ((long) var1 == var3.linkableKey) { + return; + } + } + var3 = new Linkable(); + var3.linkableKey = var1; + this.aLinkedList_2963.pushBack(var3); + } + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "bg.H(" + var1 + ',' + 127 + ')'); + } + } + + public final ReferenceTable getReferenceTable() { + if (this.table == null) { + if (null == this.aResourceRequest_2950) { + if (this.aJs5Worker_2953.priorityRequestsFull()) { + return null; + } + + this.aResourceRequest_2950 = this.aJs5Worker_2953.request(255, this.anInt2957, (byte) 0, true); + } + + if (this.aResourceRequest_2950.waiting) { + return null; + } else { + byte[] var2 = this.aResourceRequest_2950.getData(); + if (this.aResourceRequest_2950 instanceof CacheResourceRequest) { + try { + if (var2 == null) { + throw new RuntimeException(); + } + + this.table = new ReferenceTable(var2, this.anInt2955); + if (this.table.getRevision() != this.anInt2947) { + throw new RuntimeException(); + } + } catch (RuntimeException var4) { + this.table = null; + if (this.aJs5Worker_2953.priorityRequestsFull()) { + this.aResourceRequest_2950 = null; + } else { + this.aResourceRequest_2950 = this.aJs5Worker_2953.request(255, this.anInt2957, (byte) 0, true); + } + + return null; + } + } else { + try { + if (var2 == null) { + throw new RuntimeException(); + } + + this.table = new ReferenceTable(var2, this.anInt2955); + } catch (RuntimeException var5) { + this.aJs5Worker_2953.closeWithError(); + this.table = null; + if (this.aJs5Worker_2953.priorityRequestsFull()) { + this.aResourceRequest_2950 = null; + } else { + this.aResourceRequest_2950 = this.aJs5Worker_2953.request(255, this.anInt2957, (byte) 0, true); + } + + return null; + } + + if (this.aClass41_2943 != null) { + this.cacheResourceWorker.write(this.aClass41_2943, this.anInt2957, var2); + } + } + + if (null != this.aClass41_2954) { + this.aByteArray2949 = new byte[this.table.getArchiveAmount()]; + this.anInt2948 = 0; + } + + this.aResourceRequest_2950 = null; + return this.table; + } + } else { + return this.table; + } + } + + final void method2101() { + try { + if (this.aClass41_2954 != null) { + this.aBoolean2965 = true; + if (this.aLinkedList_2966 == null) { + this.aLinkedList_2966 = new LinkedList(); + } + + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "bg.A(" + true + ')'); + } + } + + final int method2102() { + try { + + return this.anInt2948; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "bg.I(" + 0 + ')'); + } + } + + final int method2106() { + try { + if (null == this.table) { + return 0; + } else if (this.aBoolean2962) { + Linkable var2 = this.aLinkedList_2966.startIteration(); + if (null == var2) { + return 0; + } else { + + return (int) var2.linkableKey; + } + } else { + return this.table.getValidArchiveAmount(); + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "bg.O(" + 1 + ')'); + } + } + + final void method2107() { + try { + if (null != this.aLinkedList_2966) { + if (this.getReferenceTable() == null) { + return; + } + + boolean var2; + Linkable var3; + int var4; + if (this.aBoolean2962) { + var2 = true; + + for (var3 = this.aLinkedList_2966.startIteration(); null != var3; var3 = this.aLinkedList_2966.nextIteration()) { + var4 = (int) var3.linkableKey; + if (this.aByteArray2949[var4] == 0) { + this.method2109(1, var4, 51); + } + + if (this.aByteArray2949[var4] == 0) { + var2 = false; + } else { + var3.unlink(); + } + } + + while (this.table.archiveFileLengths.length > this.anInt2964) { + if (this.table.archiveFileLengths[this.anInt2964] != 0) { + if (this.cacheResourceWorker.remaining >= 250) { + var2 = false; + break; + } + + if (0 == this.aByteArray2949[this.anInt2964]) { + this.method2109(1, this.anInt2964, 99); + } + + if (this.aByteArray2949[this.anInt2964] == 0) { + var2 = false; + var3 = new Linkable(); + var3.linkableKey = this.anInt2964; + this.aLinkedList_2966.pushBack(var3); + } + + } + ++this.anInt2964; + } + + if (var2) { + this.aBoolean2962 = false; + this.anInt2964 = 0; + } + } else if (this.aBoolean2965) { + var2 = true; + + for (var3 = this.aLinkedList_2966.startIteration(); var3 != null; var3 = this.aLinkedList_2966.nextIteration()) { + var4 = (int) var3.linkableKey; + if (this.aByteArray2949[var4] != 1) { + this.method2109(2, var4, 96); + } + + if (this.aByteArray2949[var4] == 1) { + var3.unlink(); + } else { + var2 = false; + } + } + + while (this.anInt2964 < this.table.archiveFileLengths.length) { + if (this.table.archiveFileLengths[this.anInt2964] == 0) { + ++this.anInt2964; + } else { + if (this.aJs5Worker_2953.normalRequestsFull()) { + var2 = false; + break; + } + + if (1 != this.aByteArray2949[this.anInt2964]) { + this.method2109(2, this.anInt2964, 47); + } + + if (this.aByteArray2949[this.anInt2964] != 1) { + var3 = new Linkable(); + var3.linkableKey = this.anInt2964; + this.aLinkedList_2966.pushBack(var3); + var2 = false; + } + + ++this.anInt2964; + } + } + + if (var2) { + this.anInt2964 = 0; + this.aBoolean2965 = false; + } + } else { + this.aLinkedList_2966 = null; + } + } + + if (this.aBoolean2968 && this.aLong2967 <= TimeUtils.time()) { + for (ResourceRequest var6 = this.aHashTable_2946.first(); var6 != null; var6 = this.aHashTable_2946.next()) { + if (!var6.waiting) { + if (var6.aBoolean3635) { + if (!var6.priority) { + throw new RuntimeException(); + } + + var6.unlink(); + } else { + var6.aBoolean3635 = true; + } + } + } + + this.aLong2967 = 1000L + TimeUtils.time(); + } + + } catch (RuntimeException var5) { + var5.printStackTrace(); + throw ClientErrorException.clientError(var5, "bg.J(" + true + ')'); + } + } + + public final int percentComplete(int var1) { + ResourceRequest var3 = this.aHashTable_2946.get(var1); + return null != var3 ? var3.getCompletion() : 0; + } + + final int method2108() { + try { + if (this.table == null) { + return 0; + } else { + + return this.table.getValidArchiveAmount(); + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "bg.M(" + (byte) 1 + ')'); + } + } + + private ResourceRequest method2109(int var1, int archiveIndex, int var3) { + try { + ResourceRequest var4 = this.aHashTable_2946.get(archiveIndex); + if (null != var4 && var1 == 0 && !var4.priority && var4.waiting) { + var4.unlink(); + var4 = null; + } + + if (null == var4) { + if (0 == var1) { + if (null == this.aClass41_2954 || this.aByteArray2949[archiveIndex] == -1) { + if (this.aJs5Worker_2953.priorityRequestsFull()) { + return null; + } + + var4 = this.aJs5Worker_2953.request(this.anInt2957, archiveIndex, (byte) 2, true); + } else { + var4 = this.cacheResourceWorker.priorityRead(this.aClass41_2954, archiveIndex); + } + } else if (1 == var1) { + if (this.aClass41_2954 == null) { + throw new RuntimeException(); + } + + var4 = this.cacheResourceWorker.read(this.aClass41_2954, archiveIndex); + } else { + if (var1 != 2) { + throw new RuntimeException(); + } + + if (this.aClass41_2954 == null) { + throw new RuntimeException(); + } + + if (this.aByteArray2949[archiveIndex] != -1) { + throw new RuntimeException(); + } + + if (this.aJs5Worker_2953.normalRequestsFull()) { + return null; + } + + var4 = this.aJs5Worker_2953.request(this.anInt2957, archiveIndex, (byte) 2, false); + } + + this.aHashTable_2946.put(archiveIndex, var4); + } + + if (Objects.requireNonNull(var4).waiting) { + return null; + } else { + byte[] var5 = var4.getData(); + int expectedCRC; + Js5ResourceRequest var12; + if (var4 instanceof CacheResourceRequest) { + try { + if (var5 != null && var5.length > 2) { + TextureOperation24.CRC32.reset(); + TextureOperation24.CRC32.update(var5, 0, -2 + var5.length); + expectedCRC = (int) TextureOperation24.CRC32.getValue(); + if (this.table.archiveCRCs[archiveIndex] == expectedCRC) { + int var8 = (var5[-2 + var5.length] << 8 & 65280) - -(255 & var5[-1 + var5.length]); + if ((65535 & this.table.archiveRevisions[archiveIndex]) == var8) { + if (1 != this.aByteArray2949[archiveIndex]) { + + ++this.anInt2948; + this.aByteArray2949[archiveIndex] = 1; + } + + if (!var4.priority) { + var4.unlink(); + } + + return var4; + } else { + System.err.println("CRC mismatch - [entry=" + this.table.archiveRevisions[archiveIndex] + ", pass=" + var8 + "]!"); + throw new RuntimeException(); + } + } else { + System.err.println("CRC mismatch - [entry=" + this.table.archiveCRCs[archiveIndex] + ", pass=" + expectedCRC + "]!"); + throw new RuntimeException(); + } + } else { +// if(1 != this.aByteArray2949[var2]) { +// ++this.anInt2948; +// this.aByteArray2949[var2] = 1; +// } +// if(!((Class3_Sub28_Sub10)var4).aBoolean3628) { +// ((Class3_Sub28_Sub10)var4).method86(-1024); +// } + +// return null; + throw new RuntimeException("Missing CRC for request " + ((archiveIndex >> 16) & 0xFF) + ", " + (archiveIndex & 0xFFFF)); + } + } catch (Exception var9) { +// var9.printStackTrace(); + this.aByteArray2949[archiveIndex] = -1; + var4.unlink(); + if (var4.priority && !this.aJs5Worker_2953.priorityRequestsFull()) { + var12 = this.aJs5Worker_2953.request(this.anInt2957, archiveIndex, (byte) 2, true); + this.aHashTable_2946.put(archiveIndex, var12); + } + + return null; + } + } else { + try { + if (null == var5 || var5.length <= 2) { + System.err.println("Invalid CRC?"); + throw new RuntimeException(); + } + + TextureOperation24.CRC32.reset(); + TextureOperation24.CRC32.update(var5, 0, var5.length - 2); + expectedCRC = (int) TextureOperation24.CRC32.getValue(); + if (expectedCRC != this.table.archiveCRCs[archiveIndex]) { + TextureOperation24.CRC32.reset(); + TextureOperation24.CRC32.update(var5, 0, var5.length - 4); + expectedCRC = (int) TextureOperation24.CRC32.getValue(); + + if (expectedCRC != this.table.archiveCRCs[archiveIndex]) { + throw new RuntimeException("CRC mismatch - [found=" + this.table.archiveCRCs[archiveIndex] + ", expected=" + expectedCRC + "]!"); + } + } + + this.aJs5Worker_2953.errors = 0; + this.aJs5Worker_2953.status = 0; + } catch (RuntimeException var10) { + var10.printStackTrace(); + this.aJs5Worker_2953.closeWithError(); + var4.unlink(); + if (var4.priority && !this.aJs5Worker_2953.priorityRequestsFull()) { + var12 = this.aJs5Worker_2953.request(this.anInt2957, archiveIndex, (byte) 2, true); + this.aHashTable_2946.put(archiveIndex, var12); + } + + return null; + } + + var5[var5.length + -2] = (byte) (this.table.archiveRevisions[archiveIndex] >>> 8); + var5[var5.length - 1] = (byte) this.table.archiveRevisions[archiveIndex]; + if (null != this.aClass41_2954) { + this.cacheResourceWorker.write(this.aClass41_2954, archiveIndex, var5); + if (1 != this.aByteArray2949[archiveIndex]) { + ++this.anInt2948; + this.aByteArray2949[archiveIndex] = 1; + } + } + + if (!var4.priority) { + var4.unlink(); + } + + return var4; + } + } + } catch (RuntimeException var11) { +// var11.printStackTrace(); + throw ClientErrorException.clientError(var11, "bg.C(" + var1 + ',' + archiveIndex + ',' + var3 + ')'); + } + } + + final void method2110() { + try { + if (this.aLinkedList_2966 != null) { + if (null != this.getReferenceTable()) { + for (Linkable var2 = this.aLinkedList_2963.startIteration(); null != var2; var2 = this.aLinkedList_2963.nextIteration()) { + int var3 = (int) var2.linkableKey; + if (0 <= var3 && this.table.getArchiveAmount() > var3 && this.table.archiveFileLengths[var3] != 0) { + if (this.aByteArray2949[var3] == 0) { + this.method2109(1, var3, 80); + } + + if (-1 == this.aByteArray2949[var3]) { + this.method2109(2, var3, 78); + } + + if (this.aByteArray2949[var3] == 1) { + var2.unlink(); + } + } else { + var2.unlink(); + } + } + + } + } + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "bg.D(" + 0 + ')'); + } + } + + final int method2111() { + try { + return null != this.getReferenceTable() ? 100 : (null == this.aResourceRequest_2950 ? 0 : this.aResourceRequest_2950.getCompletion()); + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "bg.E(" + -61 + ')'); + } + } + + public final byte[] get(int var1) { + try { + ResourceRequest var3 = this.method2109(0, var1, 103); + if (var3 == null) { + return null; + } else { + byte[] var4 = var3.getData(); + var3.unlink(); + return var4; + } + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "bg.K(" + var1 + ',' + 0 + ')'); + } + } + + Class151_Sub1(int var1, Class41 var2, Class41 var3, Js5Worker var4, CacheResourceWorker var5, int var6, int var7) { + try { + this.anInt2957 = var1; + this.aClass41_2954 = var2; + if (this.aClass41_2954 == null) { + this.aBoolean2962 = false; + } else { + this.aBoolean2962 = true; + this.aLinkedList_2966 = new LinkedList(); + } + + this.cacheResourceWorker = var5; + this.anInt2955 = var6; + this.aBoolean2968 = true; + this.aClass41_2943 = var3; + this.aJs5Worker_2953 = var4; + this.anInt2947 = var7; + if (null != this.aClass41_2943) { + this.aResourceRequest_2950 = this.cacheResourceWorker.priorityRead(this.aClass41_2943, this.anInt2957); + } + + } catch (RuntimeException var10) { + throw ClientErrorException.clientError(var10, "bg.(" + var1 + ',' + (var2 != null ? "{...}" : "null") + ',' + (var3 != null ? "{...}" : "null") + ',' + (var4 != null ? "{...}" : "null") + ',' + (var5 != null ? "{...}" : "null") + ',' + var6 + ',' + var7 + ',' + true + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class152.java b/Client/src/main/java/org/runite/client/Class152.java new file mode 100644 index 000000000..b1c28e61d --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class152.java @@ -0,0 +1,95 @@ +package org.runite.client; +/* Class152 - Decompiled by JODE + * Visit http://jode.sourceforge.net/ + */ + +final class Class152 { + private final int anInt1937; + private final int anInt1938; + private final int anInt1939 = Class3_Sub14.method368(16); + private final int anInt1940; + private final int anInt1941; + private final int[] anIntArray1942; + private final int anInt1943; + + Class152() { + anInt1938 = Class3_Sub14.method368(24); + anInt1940 = Class3_Sub14.method368(24); + anInt1941 = Class3_Sub14.method368(24) + 1; + anInt1943 = Class3_Sub14.method368(6) + 1; + anInt1937 = Class3_Sub14.method368(8); + int[] is = new int[anInt1943]; + for (int i = 0; i < anInt1943; i++) { + int i_0_ = 0; + int i_1_ = Class3_Sub14.method368(3); + boolean bool = Class3_Sub14.method364() != 0; + if (bool) + i_0_ = Class3_Sub14.method368(5); + is[i] = i_0_ << 3 | i_1_; + } + anIntArray1942 = new int[anInt1943 * 8]; + for (int i = 0; i < anInt1943 * 8; i++) + anIntArray1942[i] = ((is[i >> 3] & 1 << (i & 0x7)) != 0 + ? Class3_Sub14.method368(8) : -1); + } + + final void method2112(float[] fs, int i, boolean bool) { + for (int i_2_ = 0; i_2_ < i; i_2_++) + fs[i_2_] = 0.0F; + if (!bool) { + int i_3_ = (Class3_Sub14.aClass71Array2406[anInt1937] + .anInt1063); + int i_4_ = anInt1940 - anInt1938; + int i_5_ = i_4_ / anInt1941; + int[] is = new int[i_5_]; + for (int i_6_ = 0; i_6_ < 8; i_6_++) { + int i_7_ = 0; + while (i_7_ < i_5_) { + if (i_6_ == 0) { + int i_8_ = Class3_Sub14.aClass71Array2406 + [anInt1937].method1290(); + for (int i_9_ = i_3_ - 1; i_9_ >= 0; i_9_--) { + if (i_7_ + i_9_ < i_5_) + is[i_7_ + i_9_] = i_8_ % anInt1943; + i_8_ /= anInt1943; + } + } + for (int i_10_ = 0; i_10_ < i_3_; i_10_++) { + int i_11_ = is[i_7_]; + int i_12_ = anIntArray1942[i_11_ * 8 + i_6_]; + if (i_12_ >= 0) { + int i_13_ = anInt1938 + i_7_ * anInt1941; + Class71 class71 + = Class3_Sub14.aClass71Array2406[i_12_]; + if (anInt1939 == 0) { + int i_14_ = (anInt1941 + / class71.anInt1063); + for (int i_15_ = 0; i_15_ < i_14_; i_15_++) { + float[] fs_16_ = class71.method1288(); + for (int i_17_ = 0; + i_17_ < class71.anInt1063; + i_17_++) + fs[i_13_ + i_15_ + i_17_ * i_14_] + += fs_16_[i_17_]; + } + } else { + int i_18_ = 0; + while (i_18_ < anInt1941) { + float[] fs_19_ = class71.method1288(); + for (int i_20_ = 0; + i_20_ < class71.anInt1063; + i_20_++) { + fs[i_13_ + i_18_] += fs_19_[i_20_]; + i_18_++; + } + } + } + } + if (++i_7_ >= i_5_) + break; + } + } + } + } + } +} diff --git a/Client/src/main/java/org/runite/client/Class154.java b/Client/src/main/java/org/runite/client/Class154.java new file mode 100644 index 000000000..e6b7e2dd3 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class154.java @@ -0,0 +1,52 @@ +package org.runite.client; + +import org.rs09.client.data.ReferenceCache; + +final class Class154 { + + static int anInt1957; + static int[] anIntArray1960 = new int[14]; + static ReferenceCache aReferenceCache_1964 = new ReferenceCache(5); + static int anInt1966 = -1; + + static void method2146(int var0, int var1, int var2, int var3, GameObject var4, GameObject var5, int var6, int var7, long var8) { + if (var4 != null || var5 != null) { + Class70 var10 = new Class70(); + var10.aLong1048 = var8; + var10.anInt1054 = var1 * 128 + 64; + var10.anInt1045 = var2 * 128 + 64; + var10.anInt1057 = var3; + var10.aClass140_1049 = var4; + var10.aClass140_1052 = var5; + var10.anInt1055 = var6; + var10.anInt1059 = var7; + + for (int var11 = var0; var11 >= 0; --var11) { + if (TileData.aTileDataArrayArrayArray2638[var11][var1][var2] == null) { + TileData.aTileDataArrayArrayArray2638[var11][var1][var2] = new TileData(var11, var1, var2); + } + } + + TileData.aTileDataArrayArrayArray2638[var0][var1][var2].aClass70_2234 = var10; + } + } + + static Class70 method2147(int var0, int var1, int var2) { + TileData var3 = TileData.aTileDataArrayArrayArray2638[var0][var1][var2]; + return var3 == null ? null : var3.aClass70_2234; + } + + static RSString method2148(int var0) { + try { + if (999999999 <= var0) { + + return TextCore.aString_1687; + } else { + return RSString.stringAnimator(var0); + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "vf.C(" + var0 + ',' + (byte) -78 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class156.java b/Client/src/main/java/org/runite/client/Class156.java new file mode 100644 index 000000000..e5be52c0d --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class156.java @@ -0,0 +1,77 @@ +package org.runite.client; + + +import javax.media.opengl.GL; +import java.nio.ByteBuffer; + + +final class Class156 { + + private final int anInt1992; + private final boolean aBoolean1994; + private int anInt1991; + private int anInt1993; + + + public Class156() { + this(false); + } + + Class156(boolean var1) { + this.anInt1991 = -1; + this.anInt1993 = 0; + GL var2 = HDToolKit.gl; + int[] var3 = new int[1]; + var2.glGenBuffersARB(1, var3, 0); + this.aBoolean1994 = var1; + this.anInt1991 = var3[0]; + this.anInt1992 = Class31.anInt582; + } + + final void method2168(ByteBuffer var1) { + if (var1.limit() <= this.anInt1993) { + GL var2 = HDToolKit.gl; + var2.glBindBufferARB('\u8892', this.anInt1991); + var2.glBufferSubDataARB('\u8892', 0, var1.limit(), var1); + } else { + this.method2172(var1); + } + + } + + protected final void finalize() throws Throwable { + if (this.anInt1991 != -1) { + Class31.method989(this.anInt1991, this.anInt1993, this.anInt1992); + this.anInt1991 = -1; + this.anInt1993 = 0; + } + + super.finalize(); + } + + final void method2169() { + GL var1 = HDToolKit.gl; + var1.glBindBufferARB('\u8892', this.anInt1991); + } + + final void method2170(ByteBuffer var1) { + GL var2 = HDToolKit.gl; + var2.glBindBufferARB('\u8893', this.anInt1991); + var2.glBufferDataARB('\u8893', var1.limit(), var1, this.aBoolean1994 ? '\u88e0' : '\u88e4'); + Class31.anInt585 += var1.limit() - this.anInt1993; + this.anInt1993 = var1.limit(); + } + + final void method2171() { + GL var1 = HDToolKit.gl; + var1.glBindBufferARB('\u8893', this.anInt1991); + } + + final void method2172(ByteBuffer var1) { + GL var2 = HDToolKit.gl; + var2.glBindBufferARB('\u8892', this.anInt1991); + var2.glBufferDataARB('\u8892', var1.limit(), var1, this.aBoolean1994 ? '\u88e0' : '\u88e4'); + Class31.anInt585 += var1.limit() - this.anInt1993; + this.anInt1993 = var1.limit(); + } +} diff --git a/Client/src/main/java/org/runite/client/Class157.java b/Client/src/main/java/org/runite/client/Class157.java new file mode 100644 index 000000000..6f3a50ccb --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class157.java @@ -0,0 +1,161 @@ +package org.runite.client; + +final class Class157 { + + + static int anInt1996; + static Class3_Sub28_Sub17_Sub1 aClass3_Sub28_Sub17_Sub1_2000; + private int anInt1997; + private int[][] anIntArrayArray1999; + private int anInt2001; + + Class157(int var1, int var2) { + try { + if (var2 != var1) { + int var3 = Class107.method1651(var2, var1); + var2 /= var3; + this.anInt2001 = var2; + var1 /= var3; + this.anIntArrayArray1999 = new int[var1][14]; + this.anInt1997 = var1; + + for (int var4 = 0; var4 < var1; ++var4) { + int[] var5 = this.anIntArrayArray1999[var4]; + double var6 = (double) var4 / (double) var1 + 6.0D; + double var10 = (double) var2 / (double) var1; + int var8 = (int) Math.floor(-7.0D + var6 + 1.0D); + int var9 = (int) Math.ceil(7.0D + var6); + if (var8 < 0) { + var8 = 0; + } + + if (var9 > 14) { + var9 = 14; + } + + while (var8 < var9) { + double var12 = ((double) var8 - var6) * 3.141592653589793D; + double var14 = var10; + if (-1.0E-4D > var12 || var12 > 1.0E-4D) { + var14 = var10 * (Math.sin(var12) / var12); + } + + var14 *= 0.54D + 0.46D * Math.cos(((double) var8 - var6) * 0.2243994752564138D); + var5[var8] = (int) Math.floor(65536.0D * var14 + 0.5D); + ++var8; + } + } + + } + } catch (RuntimeException var16) { + throw ClientErrorException.clientError(var16, "vj.(" + var1 + ',' + var2 + ')'); + } + } + + static SoftwareSprite[] method2176(int var0, CacheIndex var1) { + try { + //System.out.println("Class 157 " + var2); + if (Class75_Sub4.method1351(var1, 0, var0)) { + return method851(); + } else { + return null; + } + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "vj.A(" + 0 + ',' + var0 + ',' + (var1 != null ? "{...}" : "null") + ')'); + } + } + + static SoftwareSprite[] method851() { + try { + SoftwareSprite[] var1 = new SoftwareSprite[Class95.anInt1338]; + + for (int var2 = 0; Class95.anInt1338 > var2; ++var2) { + int var3 = Unsorted.anIntArray3076[var2] * GroundItem.anIntArray2931[var2]; + byte[] var4 = Class163_Sub1.aByteArrayArray2987[var2]; + int[] var5 = new int[var3]; + + for (int var6 = 0; var3 > var6; ++var6) { + var5[var6] = TextureOperation38.spritePalette[Unsorted.bitwiseAnd(255, var4[var6])]; + } + + var1[var2] = new SoftwareSprite(Class3_Sub15.anInt2426, Class133.anInt1748, Class164.anIntArray2048[var2], Unsorted.anIntArray2591[var2], GroundItem.anIntArray2931[var2], Unsorted.anIntArray3076[var2], var5); + } + + Class39.method1035((byte) 113); + return var1; + } catch (RuntimeException var7) { + throw ClientErrorException.clientError(var7, "bd.B(" + true + ')'); + } + } + + final byte[] method2173(byte[] var1) { + try { + if (null != this.anIntArrayArray1999) { + int var4 = 14 + (int) ((long) var1.length * (long) this.anInt2001 / (long) this.anInt1997); + int[] var5 = new int[var4]; + int var6 = 0; + int var7 = 0; + + int var8; + for (var8 = 0; var1.length > var8; ++var8) { + int[] var10 = this.anIntArrayArray1999[var7]; + byte var9 = var1[var8]; + + int var11; + for (var11 = 0; var11 < 14; ++var11) { + var5[var6 - -var11] += var10[var11] * var9; + } + + var7 += this.anInt2001; + var11 = var7 / this.anInt1997; + var6 += var11; + var7 -= var11 * this.anInt1997; + } + + var1 = new byte[var4]; + + for (var8 = 0; var4 > var8; ++var8) { + int var13 = var5[var8] - -32768 >> 16; + if (var13 >= -128) { + if (127 >= var13) { + var1[var8] = (byte) var13; + } else { + var1[var8] = 127; + } + } else { + var1[var8] = -128; + } + } + } + + return var1; + } catch (RuntimeException var12) { + throw ClientErrorException.clientError(var12, "vj.E(" + (var1 != null ? "{...}" : "null") + ',' + (byte) -105 + ')'); + } + } + + final int method2177(int var1) { + try { + if (null != this.anIntArrayArray1999) { + var1 = (int) ((long) this.anInt2001 * (long) var1 / (long) this.anInt1997); + } + + return var1; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "vj.C(" + var1 + ',' + (byte) 90 + ')'); + } + } + + final int method2178(int var2) { + try { + if (null != this.anIntArrayArray1999) { + var2 = (int) ((long) this.anInt2001 * (long) var2 / (long) this.anInt1997) + 6; + } + + return var2; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "vj.D(" + false + ',' + var2 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class158.java b/Client/src/main/java/org/runite/client/Class158.java new file mode 100644 index 000000000..53117222c --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class158.java @@ -0,0 +1,93 @@ +package org.runite.client; + +import java.awt.*; + +public abstract class Class158 { + + static int[] anIntArray2004 = new int[]{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, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 73, 74, 76, 78, 83, 84, 85, 86, 91, 92, 93, 94, 95, 97, 103, 104, 105, 106, 107, 108, 113, 114, 115, 116, 118, 119, 120, 121, 122, 123, 124, 125, 133, 134, 136, 138, 143, 144, 145, 146, 151, 152, 153, 154, 155, 157, 163, 164, 165, 166, 168, 169, 174, 175, 176, 177, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 97, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 157, 215, 216, 117, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 66, 66, 66, 66, 66, 66, 65, 75, 79, 79, 79, 79, 87, 87, 87, 87, 77, 96, 98, 98, 98, 98, 98, 250, 251, 109, 109, 109, 109, 117, 252, 167, 126, 126, 126, 126, 126, 126, 125, 135, 139, 139, 139, 139, 147, 147, 147, 147, 137, 156, 158, 158, 158, 158, 158, 253, 254, 170, 170, 170, 170, 178, 255, 178}; + static byte[][][] aByteArrayArrayArray2008; + static int anInt2010 = -16 + (int) (33.0D * Math.random()); + static int paramGameTypeID = 0; + static int anInt2015; + int[] anIntArray2007; + Image anImage2009; + int anInt2011; + int anInt2012; + + static void method2180(CacheIndex var0, CacheIndex var1) { + Unsorted.modelsIndex_4048 = var0; + TextureOperation19.graphicFXIndex_3214 = var1; + } + + static void method2183(int parent, boolean notifyScripts, int parentWidth, int parentHeight, RSInterface[] ifaces) { + int var6 = 0; + for (; ifaces.length > var6; ++var6) { + RSInterface inface = ifaces[var6]; + if (inface != null && inface.parentId == parent) { + Unsorted.calculateInterfaceSize(inface, parentWidth, parentHeight, notifyScripts); + Unsorted.calculateInterfacePosition(inface, parentWidth, parentHeight); + if (inface.anInt247 > inface.anInt240 - inface.width) { + inface.anInt247 = inface.anInt240 - inface.width; + } + + if (inface.anInt208 > -inface.height + inface.anInt252) { + inface.anInt208 = inface.anInt252 - inface.height; + } + + if (inface.anInt208 < 0) { + inface.anInt208 = 0; + } + + if (inface.anInt247 < 0) { + inface.anInt247 = 0; + } + + if (inface.type == 0) { + Unsorted.method2104(inface, notifyScripts, 235 + -343); + } + } + } + } + + static void method2186(Class25 var0) { + for (int var1 = var0.anInt483; var1 <= var0.anInt495; ++var1) { + for (int var2 = var0.anInt478; var2 <= var0.anInt481; ++var2) { + TileData var3 = TileData.aTileDataArrayArrayArray2638[var0.anInt493][var1][var2]; + if (var3 != null) { + int var4; + for (var4 = 0; var4 < var3.anInt2223; ++var4) { + if (var3.aClass25Array2221[var4] == var0) { + --var3.anInt2223; + + for (int var5 = var4; var5 < var3.anInt2223; ++var5) { + var3.aClass25Array2221[var5] = var3.aClass25Array2221[var5 + 1]; + var3.anIntArray2237[var5] = var3.anIntArray2237[var5 + 1]; + } + + var3.aClass25Array2221[var3.anInt2223] = null; + break; + } + } + + var3.anInt2228 = 0; + + for (var4 = 0; var4 < var3.anInt2223; ++var4) { + var3.anInt2228 |= var3.anIntArray2237[var4]; + } + } + } + } + + } + + public abstract void method2179(Graphics var3); + + final void method2182() { + Class74.setBuffer(this.anIntArray2007, this.anInt2012, this.anInt2011); + } + + abstract void drawGraphics(int var1, int var2, int var4, Graphics var5, int var6); + + abstract void method2185(int var1, int var3, Component var4); + +} diff --git a/Client/src/main/java/org/runite/client/Class158_Sub1.java b/Client/src/main/java/org/runite/client/Class158_Sub1.java new file mode 100644 index 000000000..cd93b7401 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class158_Sub1.java @@ -0,0 +1,341 @@ +package org.runite.client; + +import org.rs09.client.data.ReferenceCache; + +import java.awt.*; +import java.awt.image.*; + +final class Class158_Sub1 extends Class158 implements ImageProducer, ImageObserver { + + static RSString[] aStringArray2977 = new RSString[5]; + static int anInt3158 = -8 + (int) (17.0D * Math.random()); + static int anInt1463 = -16 + (int) (Math.random() * 33.0D); + static byte[][][] aByteArrayArrayArray1828; + private ImageConsumer anImageConsumer2978; + private ColorModel aColorModel2979; + static Class3_Sub1 aClass3_Sub1_2980 = new Class3_Sub1(0, -1); + static boolean aBoolean2981 = false; + static ReferenceCache aReferenceCache_2982 = new ReferenceCache(32); + + + public final synchronized void addConsumer(ImageConsumer var1) { + try { + this.anImageConsumer2978 = var1; + var1.setDimensions(this.anInt2012, this.anInt2011); + var1.setProperties(null); + var1.setColorModel(this.aColorModel2979); + var1.setHints(14); + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "di.addConsumer(" + (var1 != null ? "{...}" : "null") + ')'); + } + } + + private synchronized void method2188(int var1, int var2, int var3, int var5) { + try { + if (null != this.anImageConsumer2978) { + this.anImageConsumer2978.setPixels(var3, var5, var1, var2, this.aColorModel2979, this.anIntArray2007, var5 * this.anInt2012 + var3, this.anInt2012); + this.anImageConsumer2978.imageComplete(2); + + } + } catch (RuntimeException var7) { + throw ClientErrorException.clientError(var7, "di.N(" + var1 + ',' + var2 + ',' + var3 + ',' + (byte) -124 + ',' + var5 + ')'); + } + } + + public final synchronized void removeConsumer(ImageConsumer var1) { + try { + if (this.anImageConsumer2978 == var1) { + this.anImageConsumer2978 = null; + } + + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "di.removeConsumer(" + (var1 != null ? "{...}" : "null") + ')'); + } + } + + final void drawGraphics(int var1, int var2, int var4, Graphics var5, int var6) { + try { + this.method2188(var1, var4, var2, var6); + Shape var7 = var5.getClip(); + var5.clipRect(var2, var6, var1, var4); + var5.drawImage(this.anImage2009, 0, 0, this); + var5.setClip(var7); + } catch (RuntimeException var8) { + throw ClientErrorException.clientError(var8, "di.E(" + var1 + ',' + var2 + ',' + 6260 + ',' + var4 + ',' + (var5 != null ? "{...}" : "null") + ',' + var6 + ')'); + } + } + + public final void startProduction(ImageConsumer var1) { + try { + this.addConsumer(var1); + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "di.startProduction(" + (var1 != null ? "{...}" : "null") + ')'); + } + } + + private synchronized void method2190() { + try { + if (this.anImageConsumer2978 != null) { + this.anImageConsumer2978.setPixels(0, 0, this.anInt2012, this.anInt2011, this.aColorModel2979, this.anIntArray2007, 0, this.anInt2012); + this.anImageConsumer2978.imageComplete(2); + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "di.L(" + 19661184 + ')'); + } + } + + public final synchronized boolean isConsumer(ImageConsumer var1) { + try { + return this.anImageConsumer2978 == var1; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "di.isConsumer(" + (var1 != null ? "{...}" : "null") + ')'); + } + } + + static boolean method2191(int var0, int var1, int var2, int var4, int var5, int var6, int var7, boolean var8, int var9, int var10, int var11) { + try { + int var12; + int var13; + for (var12 = 0; var12 < 104; ++var12) { + for (var13 = 0; var13 < 104; ++var13) { + Class84.anIntArrayArray1160[var12][var13] = 0; + Class97.anIntArrayArray1373[var12][var13] = 99999999; + } + } + + var12 = var2; + Class84.anIntArrayArray1160[var2][var10] = 99; + var13 = var10; + Class97.anIntArrayArray1373[var2][var10] = 0; + byte var14 = 0; + boolean var16 = false; + int var15 = 0; + TextureOperation38.anIntArray3456[var14] = var2; + int var27 = var14 + 1; + Class45.anIntArray729[var14] = var10; + int[][] var17 = AtmosphereParser.aClass91Array1182[WorldListCountry.localPlane].anIntArrayArray1304; + + int var18; + while (var15 != var27) { + var13 = Class45.anIntArray729[var15]; + var12 = TextureOperation38.anIntArray3456[var15]; + var15 = 4095 & var15 + 1; + if (var12 == var0 && var13 == var4) { + var16 = true; + break; + } + + if (var9 != 0) { + if ((var9 < 5 || 10 == var9) && AtmosphereParser.aClass91Array1182[WorldListCountry.localPlane].method1488(var4, var12, var13, var0, var9 + -1, 1, var7)) { + var16 = true; + break; + } + + if (var9 < 10 && AtmosphereParser.aClass91Array1182[WorldListCountry.localPlane].method1492(var4, -1 + var9, var0, var13, 1, var7, var12, 95)) { + var16 = true; + break; + } + } + + if (var11 != 0 && 0 != var6 && AtmosphereParser.aClass91Array1182[WorldListCountry.localPlane].method1498(var0, var13, var12, 1, var11, var1, var4, var6)) { + var16 = true; + break; + } + + var18 = 1 + Class97.anIntArrayArray1373[var12][var13]; + if (0 < var12 && Class84.anIntArrayArray1160[var12 + -1][var13] == 0 && (19661064 & var17[var12 + -1][var13]) == 0) { + TextureOperation38.anIntArray3456[var27] = -1 + var12; + Class45.anIntArray729[var27] = var13; + var27 = var27 - -1 & 4095; + Class84.anIntArrayArray1160[-1 + var12][var13] = 2; + Class97.anIntArrayArray1373[-1 + var12][var13] = var18; + } + + if (103 > var12 && Class84.anIntArrayArray1160[var12 + 1][var13] == 0 && (var17[var12 + 1][var13] & 19661184) == 0) { + TextureOperation38.anIntArray3456[var27] = var12 - -1; + Class45.anIntArray729[var27] = var13; + var27 = 1 + var27 & 4095; + Class84.anIntArrayArray1160[var12 - -1][var13] = 8; + Class97.anIntArrayArray1373[1 + var12][var13] = var18; + } + + if (var13 > 0 && Class84.anIntArrayArray1160[var12][var13 - 1] == 0 && (19661058 & var17[var12][-1 + var13]) == 0) { + TextureOperation38.anIntArray3456[var27] = var12; + Class45.anIntArray729[var27] = -1 + var13; + Class84.anIntArrayArray1160[var12][var13 - 1] = 1; + var27 = var27 + 1 & 4095; + Class97.anIntArrayArray1373[var12][-1 + var13] = var18; + } + + if (103 > var13 && Class84.anIntArrayArray1160[var12][1 + var13] == 0 && (19661088 & var17[var12][var13 + 1]) == 0) { + TextureOperation38.anIntArray3456[var27] = var12; + Class45.anIntArray729[var27] = var13 - -1; + var27 = 1 + var27 & 4095; + Class84.anIntArrayArray1160[var12][1 + var13] = 4; + Class97.anIntArrayArray1373[var12][var13 - -1] = var18; + } + + if (var12 > 0 && var13 > 0 && Class84.anIntArrayArray1160[-1 + var12][var13 - 1] == 0 && (var17[var12 - 1][-1 + var13] & 19661070) == 0 && (19661064 & var17[var12 - 1][var13]) == 0 && (19661058 & var17[var12][-1 + var13]) == 0) { + TextureOperation38.anIntArray3456[var27] = -1 + var12; + Class45.anIntArray729[var27] = var13 + -1; + var27 = 1 + var27 & 4095; + Class84.anIntArrayArray1160[-1 + var12][-1 + var13] = 3; + Class97.anIntArrayArray1373[var12 - 1][var13 + -1] = var18; + } + + if (var12 < 103 && 0 < var13 && Class84.anIntArrayArray1160[var12 - -1][var13 - 1] == 0 && 0 == (19661187 & var17[var12 - -1][-1 + var13]) && (19661184 & var17[var12 - -1][var13]) == 0 && (19661058 & var17[var12][-1 + var13]) == 0) { + TextureOperation38.anIntArray3456[var27] = var12 + 1; + Class45.anIntArray729[var27] = -1 + var13; + var27 = 4095 & var27 + 1; + Class84.anIntArrayArray1160[1 + var12][var13 + -1] = 9; + Class97.anIntArrayArray1373[var12 - -1][-1 + var13] = var18; + } + + if (0 < var12 && var13 < 103 && 0 == Class84.anIntArrayArray1160[var12 + -1][var13 + 1] && 0 == (19661112 & var17[var12 + -1][1 + var13]) && 0 == (var17[var12 + -1][var13] & 19661064) && (19661088 & var17[var12][1 + var13]) == 0) { + TextureOperation38.anIntArray3456[var27] = var12 - 1; + Class45.anIntArray729[var27] = 1 + var13; + Class84.anIntArrayArray1160[-1 + var12][var13 - -1] = 6; + var27 = 4095 & 1 + var27; + Class97.anIntArrayArray1373[-1 + var12][1 + var13] = var18; + } + + if (var12 < 103 && var13 < 103 && Class84.anIntArrayArray1160[var12 - -1][1 + var13] == 0 && (19661280 & var17[1 + var12][var13 + 1]) == 0 && (var17[1 + var12][var13] & 19661184) == 0 && (19661088 & var17[var12][var13 - -1]) == 0) { + TextureOperation38.anIntArray3456[var27] = var12 + 1; + Class45.anIntArray729[var27] = var13 - -1; + Class84.anIntArrayArray1160[var12 + 1][1 + var13] = 12; + var27 = var27 - -1 & 4095; + Class97.anIntArrayArray1373[1 + var12][var13 - -1] = var18; + } + } + + Class129.anInt1692 = 0; + int var19; + if (!var16) { + if (!var8) { + return false; + } + + var18 = 1000; + var19 = 100; + byte var20 = 10; + + for (int var21 = var0 + -var20; var20 + var0 >= var21; ++var21) { + for (int var22 = var4 + -var20; var4 - -var20 >= var22; ++var22) { + if (var21 >= 0 && var22 >= 0 && 104 > var21 && var22 < 104 && 100 > Class97.anIntArrayArray1373[var21][var22]) { + int var24 = 0; + if (var4 > var22) { + var24 = var4 + -var22; + } else if (var6 + var4 - 1 < var22) { + var24 = 1 + (-var4 - var6) + var22; + } + + int var23 = 0; + if (var0 <= var21) { + if (-1 + var11 + var0 < var21) { + var23 = 1 - var11 - (var0 - var21); + } + } else { + var23 = var0 + -var21; + } + + int var25 = var24 * var24 + var23 * var23; + if (var18 > var25 || var18 == var25 && Class97.anIntArrayArray1373[var21][var22] < var19) { + var13 = var22; + var18 = var25; + var12 = var21; + var19 = Class97.anIntArrayArray1373[var21][var22]; + } + } + } + } + + if (var18 == 1000) { + return false; + } + + if (var2 == var12 && var10 == var13) { + return false; + } + + Class129.anInt1692 = 1; + } + + byte var28 = 0; + TextureOperation38.anIntArray3456[var28] = var12; + var15 = var28 + 1; + Class45.anIntArray729[var28] = var13; + + for (var18 = var19 = Class84.anIntArrayArray1160[var12][var13]; var2 != var12 || var13 != var10; var18 = Class84.anIntArrayArray1160[var12][var13]) { + if (var19 != var18) { + var19 = var18; + TextureOperation38.anIntArray3456[var15] = var12; + Class45.anIntArray729[var15++] = var13; + } + + if ((var18 & 2) == 0) { + if (0 != (8 & var18)) { + --var12; + } + } else { + ++var12; + } + + if ((1 & var18) == 0) { + if (0 != (4 & var18)) { + --var13; + } + } else { + ++var13; + } + } + + if (var15 > 0) { + TextureOperation7.method299(100, var15, var5); + return true; + } else return var5 != 1; + } catch (RuntimeException var26) { + throw ClientErrorException.clientError(var26, "di.J(" + var0 + ',' + var1 + ',' + var2 + ',' + -1001 + ',' + var4 + ',' + var5 + ',' + var6 + ',' + var7 + ',' + var8 + ',' + var9 + ',' + var10 + ',' + var11 + ')'); + } + } + + public final void method2179(Graphics var3) { + try { + this.method2190(); + var3.drawImage(this.anImage2009, 0, 0, this); + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "di.C(" + 0 + ',' + 0 + ',' + (var3 != null ? "{...}" : "null") + ',' + 0 + ')'); + } + } + + final void method2185(int var1, int var3, Component var4) { + try { + this.anInt2011 = var1; + this.anIntArray2007 = new int[var3 * var1 + 1]; + this.anInt2012 = var3; + this.aColorModel2979 = new DirectColorModel(32, 16711680, 65280, 255); + this.anImage2009 = var4.createImage(this); + this.method2190(); + var4.prepareImage(this.anImage2009, this); + this.method2190(); + var4.prepareImage(this.anImage2009, this); + this.method2190(); + var4.prepareImage(this.anImage2009, this); + this.method2182(); + + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "di.F(" + var1 + ',' + false + ',' + var3 + ',' + (var4 != null ? "{...}" : "null") + ')'); + } + } + + public final boolean imageUpdate(Image var1, int var2, int var3, int var4, int var5, int var6) { + try { + return true; + } catch (RuntimeException var8) { + throw ClientErrorException.clientError(var8, "di.imageUpdate(" + (var1 != null ? "{...}" : "null") + ',' + var2 + ',' + var3 + ',' + var4 + ',' + var5 + ',' + var6 + ')'); + } + } + + public final void requestTopDownLeftRightResend(ImageConsumer var1) { + } + +} diff --git a/Client/src/main/java/org/runite/client/Class158_Sub2.java b/Client/src/main/java/org/runite/client/Class158_Sub2.java new file mode 100644 index 000000000..3bc58415a --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class158_Sub2.java @@ -0,0 +1,34 @@ +package org.runite.client; + +import java.awt.*; +import java.awt.image.*; +import java.util.Hashtable; + +public final class Class158_Sub2 extends Class158 { + + private Component aComponent2983; + + + public final void method2179(Graphics var3) { + var3.drawImage(this.anImage2009, 0, 0, this.aComponent2983); + } + + final void method2185(int var1, int var3, Component var4) { + this.anIntArray2007 = new int[var3 * var1 + 1]; + this.anInt2011 = var1; + this.anInt2012 = var3; + DataBufferInt var5 = new DataBufferInt(this.anIntArray2007, this.anIntArray2007.length); + DirectColorModel var6 = new DirectColorModel(32, 16711680, 65280, 255); + WritableRaster var7 = Raster.createWritableRaster(var6.createCompatibleSampleModel(this.anInt2012, this.anInt2011), var5, null); + this.anImage2009 = new BufferedImage(var6, var7, false, new Hashtable<>()); + this.aComponent2983 = var4; + this.method2182(); + } + + final void drawGraphics(int width, int x, int height, Graphics var5, int y) { + Shape var7 = var5.getClip(); + var5.clipRect(x, y, width, height); + var5.drawImage(this.anImage2009, 0, 0, this.aComponent2983); + var5.setClip(var7); + } +} diff --git a/Client/src/main/java/org/runite/client/Class159.java b/Client/src/main/java/org/runite/client/Class159.java new file mode 100644 index 000000000..22a6a02a5 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class159.java @@ -0,0 +1,157 @@ +package org.runite.client; + +import org.rs09.client.data.ReferenceCache; + +public final class Class159 { + + static ReferenceCache aReferenceCache_2016 = new ReferenceCache(100); + static int[] anIntArray2017 = new int[]{1, 2, 4, 8}; + static int anInt2020 = 0; + static int[] anIntArray2021 = new int[2]; + public static int localPlayerCount = 0; + static int anInt2023 = 0; + static int anInt2024 = 0; + static int[] anIntArray1681; + static int anInt1740 = 0; + + + static Class12 method2193(int var0, int var1, int var2) { + TileData var3 = TileData.aTileDataArrayArrayArray2638[var0][var1][var2]; + if (var3 == null) { + return null; + } else { + Class12 var4 = var3.aClass12_2230; + var3.aClass12_2230 = null; + return var4; + } + } + + static boolean method2194() { + try { + if (Unsorted.paramJavaScriptEnabled) { + try { + return !(Boolean) RSString.parse("showingVideoAd").method1577(Class38.gameSignlink.gameApplet); + } catch (Throwable var2) { + } + } + + return true; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "vl.B(" + 255 + ')'); + } + } + + static void method2195(int var0) { + try { + short var2 = 256; + if (var0 > var2) { + var0 = var2; + } + + if (var0 > 10) { + var0 = 10; + } + + Class72.anInt1071 += var0 * 128; + int var3; + if (Class161.anIntArray2026.length < Class72.anInt1071) { + Class72.anInt1071 -= Class161.anIntArray2026.length; + var3 = (int) (12.0D * Math.random()); + TextureOperation30.method215((byte) -119, Class163_Sub2_Sub1.aClass109_Sub1Array4027[var3]); + } + + var3 = 0; + int var5 = (var2 + -var0) * 128; + int var4 = 128 * var0; + + int var6; + int var7; + for (var6 = 0; var6 < var5; ++var6) { + var7 = anIntArray1681[var3 - -var4] - var0 * Class161.anIntArray2026[-1 + Class161.anIntArray2026.length & Class72.anInt1071 + var3] / 6; + if (0 > var7) { + var7 = 0; + } + + anIntArray1681[var3++] = var7; + } + + int var8; + int var9; + for (var6 = var2 + -var0; var2 > var6; ++var6) { + var7 = var6 * 128; + + for (var8 = 0; 128 > var8; ++var8) { + var9 = (int) (100.0D * Math.random()); + if (var9 < 50 && var8 > 10 && var8 < 118) { + anIntArray1681[var8 + var7] = 255; + } else { + anIntArray1681[var8 + var7] = 0; + } + } + } + + for (var6 = 0; var2 + -var0 > var6; ++var6) { + Class3_Sub28_Sub5.anIntArray3592[var6] = Class3_Sub28_Sub5.anIntArray3592[var6 - -var0]; + } + + for (var6 = var2 - var0; var2 > var6; ++var6) { + Class3_Sub28_Sub5.anIntArray3592[var6] = (int) (Math.sin((double) Class1.anInt57 / 14.0D) * 16.0D + 14.0D * Math.sin((double) Class1.anInt57 / 15.0D) + 12.0D * Math.sin((double) Class1.anInt57 / 16.0D)); + ++Class1.anInt57; + } + + anInt1740 += var0; + var6 = (var0 - -(1 & Class44.anInt719)) / 2; + if (var6 > 0) { + for (var7 = 0; anInt1740 > var7; ++var7) { + var8 = 2 + (int) (124.0D * Math.random()); + var9 = (int) (128.0D * Math.random()) + 128; + anIntArray1681[var8 - -(var9 << 7)] = 192; + } + + anInt1740 = 0; + + int var10; + for (var7 = 0; var7 < var2; ++var7) { + var9 = var7 * 128; + var8 = 0; + + for (var10 = -var6; var10 < 128; ++var10) { + if (128 > var6 + var10) { + var8 += anIntArray1681[var9 + (var10 - -var6)]; + } + + if (-1 + -var6 + var10 >= 0) { + var8 -= anIntArray1681[-var6 + -1 + var10 + var9]; + } + + if (0 <= var10) { + BufferedDataStream.anIntArray3805[var10 + var9] = var8 / (1 + var6 * 2); + } + } + } + + for (var7 = 0; 128 > var7; ++var7) { + var8 = 0; + + for (var9 = -var6; var2 > var9; ++var9) { + var10 = var9 * 128; + if (var2 > var9 + var6) { + var8 += BufferedDataStream.anIntArray3805[var6 * 128 + (var7 - -var10)]; + } + + if (0 <= var9 - var6 - 1) { + var8 -= BufferedDataStream.anIntArray3805[-((1 + var6) * 128) + (var7 - -var10)]; + } + + if (var9 >= 0) { + anIntArray1681[var10 + var7] = var8 / (var6 * 2 - -1); + } + } + } + } + + } catch (RuntimeException var11) { + throw ClientErrorException.clientError(var11, "vl.E(" + var0 + ',' + 0 + ')'); + } + } +} diff --git a/Client/src/main/java/org/runite/client/Class160.java b/Client/src/main/java/org/runite/client/Class160.java new file mode 100644 index 000000000..c49e5a987 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class160.java @@ -0,0 +1,235 @@ +package org.runite.client; + + +import javax.media.opengl.GL; +import java.nio.ByteBuffer; + + +final class Class160 implements ShaderInterface { + + private int anInt2187 = -1; + private boolean aBoolean2188 = false; + private int[] anIntArray2189 = null; + + + public Class160() { + if (HDToolKit.supportTextureCubeMap && HDToolKit.maxTextureUnits >= 2) { + this.method2199(); + GL var1 = HDToolKit.gl; + var1.glBindTexture('\u8513', this.anIntArray2189[0]); + var1.glTexParameteri('\u8513', 10241, 9729); + var1.glTexParameteri('\u8513', 10240, 9729); + var1.glTexParameteri('\u8513', '\u8072', '\u812f'); + var1.glTexParameteri('\u8513', 10242, '\u812f'); + var1.glTexParameteri('\u8513', 10243, '\u812f'); + var1.glBindTexture('\u8513', this.anIntArray2189[1]); + var1.glTexParameteri('\u8513', 10241, 9729); + var1.glTexParameteri('\u8513', 10240, 9729); + var1.glTexParameteri('\u8513', '\u8072', '\u812f'); + var1.glTexParameteri('\u8513', 10242, '\u812f'); + var1.glTexParameteri('\u8513', 10243, '\u812f'); + var1.glBindTexture('\u8513', this.anIntArray2189[2]); + var1.glTexParameteri('\u8513', 10241, 9729); + var1.glTexParameteri('\u8513', 10240, 9729); + var1.glTexParameteri('\u8513', '\u8072', '\u812f'); + var1.glTexParameteri('\u8513', 10242, '\u812f'); + var1.glTexParameteri('\u8513', 10243, '\u812f'); + this.aBoolean2188 = HDToolKit.maxTextureUnits < 3; + } + + this.method2198(); + } + + private void method2198() { + GL var1 = HDToolKit.gl; + this.anInt2187 = var1.glGenLists(2); + var1.glNewList(this.anInt2187, 4864); + if (this.anIntArray2189 == null) { + var1.glTexEnvi(8960, '\u8588', '\u8577'); + } else { + var1.glActiveTexture('\u84c1'); + var1.glTexGeni(8192, 9472, '\u8511'); + var1.glTexGeni(8193, 9472, '\u8511'); + var1.glTexGeni(8194, 9472, '\u8511'); + var1.glEnable(3168); + var1.glEnable(3169); + var1.glEnable(3170); + var1.glEnable('\u8513'); + var1.glMatrixMode(5890); + var1.glLoadIdentity(); + var1.glRotatef(22.5F, 1.0F, 0.0F, 0.0F); + var1.glMatrixMode(5888); + if (this.aBoolean2188) { + var1.glTexEnvi(8960, '\u8571', 260); + var1.glTexEnvi(8960, '\u8590', 770); + var1.glTexEnvi(8960, '\u8572', 7681); + var1.glTexEnvi(8960, '\u8588', '\u8577'); + } else { + var1.glTexEnvi(8960, '\u8571', 7681); + var1.glTexEnvi(8960, '\u8580', '\u8578'); + var1.glTexEnvi(8960, '\u8572', 8448); + var1.glActiveTexture('\u84c2'); + var1.glTexEnvi(8960, 8704, '\u8570'); + var1.glTexEnvi(8960, '\u8571', 260); + var1.glTexEnvi(8960, '\u8580', '\u8578'); + var1.glTexEnvi(8960, '\u8581', '\u8578'); + var1.glTexEnvi(8960, '\u8591', 770); + var1.glTexEnvi(8960, '\u8572', 7681); + var1.glTexEnvi(8960, '\u8588', '\u8577'); + var1.glBindTexture(3553, HDToolKit.anInt1810); + var1.glEnable(3553); + } + + var1.glActiveTexture('\u84c0'); + } + + var1.glEndList(); + var1.glNewList(this.anInt2187 + 1, 4864); + if (this.anIntArray2189 == null) { + var1.glTexEnvi(8960, '\u8588', 5890); + } else { + var1.glActiveTexture('\u84c1'); + var1.glDisable(3168); + var1.glDisable(3169); + var1.glDisable(3170); + var1.glDisable('\u8513'); + var1.glMatrixMode(5890); + var1.glLoadIdentity(); + var1.glMatrixMode(5888); + if (this.aBoolean2188) { + var1.glTexEnvi(8960, '\u8571', 8448); + var1.glTexEnvi(8960, '\u8590', 768); + var1.glTexEnvi(8960, '\u8572', 8448); + var1.glTexEnvi(8960, '\u8588', 5890); + } else { + var1.glTexEnvi(8960, '\u8571', 8448); + var1.glTexEnvi(8960, '\u8580', 5890); + var1.glActiveTexture('\u84c2'); + var1.glTexEnvi(8960, 8704, 8448); + var1.glTexEnvi(8960, '\u8571', 8448); + var1.glTexEnvi(8960, '\u8580', 5890); + var1.glTexEnvi(8960, '\u8591', 768); + var1.glTexEnvi(8960, '\u8572', 8448); + var1.glTexEnvi(8960, '\u8588', 5890); + var1.glDisable(3553); + } + + var1.glActiveTexture('\u84c0'); + } + + var1.glEndList(); + } + + public final void method21() { + GL var1 = HDToolKit.gl; + if (Class106.aBoolean1441) { + var1.glCallList(this.anInt2187 + 1); + } else { + var1.glTexEnvi(8960, '\u8588', 5890); + } + + } + + public final int method24() { + return 4; + } + + public final void method22() { + GL var1 = HDToolKit.gl; + HDToolKit.method1847(1); + if (Class106.aBoolean1441) { + var1.glCallList(this.anInt2187); + } else { + var1.glTexEnvi(8960, '\u8588', '\u8577'); + } + + } + + public final void method23(int var1) { + GL var2 = HDToolKit.gl; + if (Class106.aBoolean1441 && this.anIntArray2189 != null) { + var2.glActiveTexture('\u84c1'); + var2.glBindTexture('\u8513', this.anIntArray2189[var1 - 1]); + var2.glActiveTexture('\u84c0'); + } + + } + + private void method2199() { + GL var8 = HDToolKit.gl; + if (this.anIntArray2189 == null) { + this.anIntArray2189 = new int[3]; + var8.glGenTextures(3, this.anIntArray2189, 0); + } + + short var9 = 4096; + byte[] var10 = new byte[var9]; + byte[] var11 = new byte[var9]; + byte[] var12 = new byte[var9]; + + for (int var13 = 0; var13 < 6; ++var13) { + int var14 = 0; + + for (int var15 = 0; var15 < 64; ++var15) { + for (int var16 = 0; var16 < 64; ++var16) { + float var5 = 2.0F * (float) var16 / 64.0F - 1.0F; + float var6 = 2.0F * (float) var15 / 64.0F - 1.0F; + float var7 = (float) (1.0D / Math.sqrt(var5 * var5 + 1.0F + var6 * var6)); + var5 *= var7; + var6 *= var7; + float var4; + if (var13 == 0) { + var4 = -var5; + } else if (var13 == 1) { + var4 = var5; + } else if (var13 == 2) { + var4 = var6; + } else if (var13 == 3) { + var4 = -var6; + } else if (var13 == 4) { + var4 = var7; + } else { + var4 = -var7; + } + + int var1; + int var2; + int var3; + if (var4 > 0.0F) { + var1 = (int) (Math.pow(var4, 96.0D) * 255.0D); + var2 = (int) (Math.pow(var4, 36.0D) * 255.0D); + var3 = (int) (Math.pow(var4, 12.0D) * 255.0D); + } else { + var3 = 0; + var2 = 0; + var1 = 0; + } + + if (HDToolKit.maxTextureUnits < 3) { + var1 /= 5; + var2 /= 5; + var3 /= 5; + } else { + var1 /= 2; + var2 /= 2; + var3 /= 2; + } + + var11[var14] = (byte) var1; + var12[var14] = (byte) var2; + var10[var14] = (byte) var3; + ++var14; + } + } + + var8.glBindTexture('\u8513', this.anIntArray2189[0]); + var8.glTexImage2D('\u8515' + var13, 0, 6406, 64, 64, 0, 6406, 5121, ByteBuffer.wrap(var11)); + var8.glBindTexture('\u8513', this.anIntArray2189[1]); + var8.glTexImage2D('\u8515' + var13, 0, 6406, 64, 64, 0, 6406, 5121, ByteBuffer.wrap(var12)); + var8.glBindTexture('\u8513', this.anIntArray2189[2]); + var8.glTexImage2D('\u8515' + var13, 0, 6406, 64, 64, 0, 6406, 5121, ByteBuffer.wrap(var10)); + Class31.anInt580 += var9 * 3; + } + + } +} diff --git a/Client/src/main/java/org/runite/client/Class161.java b/Client/src/main/java/org/runite/client/Class161.java new file mode 100644 index 000000000..59080b90f --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class161.java @@ -0,0 +1,151 @@ +package org.runite.client; + +public final class Class161 { + + static int[] anIntArray2026; + static int anInt2027 = -1; + public static int anInt2028 = 0; + static Class33 aClass33_2034; + static RSString aString_2035 = null; + + static void method2200(int var0, int var1, int var2, int var3, int var4, int var5, int var6, int var7) { + try { + int var8 = 0; + int var9 = var6; + int var10 = 0; + int var11 = var4 + -var7; + int var13 = var4 * var4; + int var12 = var6 + -var7; + int var14 = var6 * var6; + int var16 = var12 * var12; + int var17 = var14 << 1; + int var18 = var13 << 1; + int var19 = var16 << 1; + int var15 = var11 * var11; + int var20 = var15 << 1; + int var21 = var6 << 1; + int var22 = var12 << 1; + int var24 = -((-1 + var21) * var18) + var14; + int var25 = var15 * (-var22 + 1) - -var19; + int var23 = (-var21 + 1) * var13 + var17; + int var27 = var13 << 2; + int var26 = -(var20 * (var22 - 1)) + var16; + int var29 = var15 << 2; + int var28 = var14 << 2; + int var30 = var16 << 2; + int var32 = (-3 + var21) * var18; + int var31 = var17 * 3; + int var34 = (-3 + var22) * var20; + int var33 = var19 * 3; + int var35 = var28; + int var37 = var30; + int var38 = (-1 + var12) * var29; + if (var5 < 73) { + method2200(108, -88, 76, -36, -95, -64, -84, 85); + } + + int var36 = (-1 + var6) * var27; + int[] var39 = Class38.anIntArrayArray663[var2]; + TextureOperation18.method282(var39, -var4 + var1, -87, -var11 + var1, var3); + TextureOperation18.method282(var39, -var11 + var1, -66, var1 - -var11, var0); + TextureOperation18.method282(var39, var1 - -var11, -68, var4 + var1, var3); + + while (var9 > 0) { + if (var23 < 0) { + while (0 > var23) { + var24 += var35; + var23 += var31; + ++var8; + var35 += var28; + var31 += var28; + } + } + + if (var24 < 0) { + var23 += var31; + ++var8; + var31 += var28; + var24 += var35; + var35 += var28; + } + + boolean var40 = var9 <= var12; + if (var40) { + if (var25 < 0) { + while (var25 < 0) { + var25 += var33; + var33 += var30; + ++var10; + var26 += var37; + var37 += var30; + } + } + + if (0 > var26) { + var25 += var33; + ++var10; + var33 += var30; + var26 += var37; + var37 += var30; + } + + var26 += -var34; + var34 -= var29; + var25 += -var38; + var38 -= var29; + } + + var23 += -var36; + var24 += -var32; + var32 -= var27; + --var9; + int var41 = var2 - var9; + int var43 = var8 + var1; + var36 -= var27; + int var42 = var9 + var2; + int var44 = -var8 + var1; + if (var40) { + int var45 = var1 + var10; + int var46 = -var10 + var1; + TextureOperation18.method282(Class38.anIntArrayArray663[var41], var44, -93, var46, var3); + TextureOperation18.method282(Class38.anIntArrayArray663[var41], var46, 121, var45, var0); + TextureOperation18.method282(Class38.anIntArrayArray663[var41], var45, -47, var43, var3); + TextureOperation18.method282(Class38.anIntArrayArray663[var42], var44, 124, var46, var3); + TextureOperation18.method282(Class38.anIntArrayArray663[var42], var46, -73, var45, var0); + TextureOperation18.method282(Class38.anIntArrayArray663[var42], var45, 111, var43, var3); + } else { + TextureOperation18.method282(Class38.anIntArrayArray663[var41], var44, 96, var43, var3); + TextureOperation18.method282(Class38.anIntArrayArray663[var42], var44, 124, var43, var3); + } + } + + } catch (RuntimeException var47) { + throw ClientErrorException.clientError(var47, "wb.A(" + var0 + ',' + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + var5 + ',' + var6 + ',' + var7 + ')'); + } + } + + static int method2201(WorldListEntry var0, int var1, int var2, WorldListEntry var3, boolean var4) { + try { + if (var1 == 1) { + int var5 = var0.anInt722; + int var6 = var3.anInt722; + if (!var4) { + if (-1 == var6) { + var6 = 2001; + } + + if (var5 == -1) { + var5 = 2001; + } + } + + return -var6 + var5; + } else { + return 2 == var1 ? var0.method1078(102).name.method1546(var3.method1078(-119).name) : (var1 == 3 ? (var0.activity.equalsString(RSString.parse(")2")) ? (var3.activity.equalsString(RSString.parse(")2")) ? 0 : (var4 ? -1 : 1)) : (var3.activity.equalsString(RSString.parse(")2")) ? (var4 ? 1 : -1) : var0.activity.method1546(var3.activity))) : (var2 <= 67 ? 36 : (var1 == 4 ? (!var0.isLootShare() ? (!var3.isLootShare() ? 0 : -1) : (var3.isLootShare() ? 0 : 1)) : (var1 == 5 ? (var0.isQuickchat() ? (!var3.isQuickchat() ? 1 : 0) : (var3.isQuickchat() ? -1 : 0)) : (var1 != 6 ? (7 == var1 ? (var0.isMembers() ? (var3.isMembers() ? 0 : 1) : (var3.isMembers() ? -1 : 0)) : -var3.worldId + var0.worldId) : (var0.isPVP() ? (!var3.isPVP() ? 1 : 0) : (var3.isPVP() ? -1 : 0))))))); + } + } catch (RuntimeException var7) { + throw ClientErrorException.clientError(var7, "wb.C(" + (var0 != null ? "{...}" : "null") + ',' + var1 + ',' + var2 + ',' + (var3 != null ? "{...}" : "null") + ',' + var4 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class162.java b/Client/src/main/java/org/runite/client/Class162.java new file mode 100644 index 000000000..d180ed7c1 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class162.java @@ -0,0 +1,52 @@ +package org.runite.client; + +final class Class162 { + + static int anInt2036; + static int anInt2038 = 0; + + + static void method2203(Player var0) { + try { + Class3_Sub9 var2 = (Class3_Sub9) Unsorted.aHashTable_4046.get(var0.displayName.toLong()); + + if (null != var2) { + if (var2.aClass3_Sub24_Sub1_2312 != null) { + Class3_Sub26.aClass3_Sub24_Sub2_2563.method461(var2.aClass3_Sub24_Sub1_2312); + var2.aClass3_Sub24_Sub1_2312 = null; + } + + var2.unlink(); + } + + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "wc.B(" + (var0 != null ? "{...}" : "null") + ',' + 8 + ')'); + } + } + + static void method2204(DataBuffer var0) { + try { + if (null != Unsorted.aClass30_1039) { + try { + Unsorted.aClass30_1039.method984(-117, 0L); + Unsorted.aClass30_1039.method983(var0.buffer, var0.index, -903171152, 24); + } catch (Exception var3) { + } + } + + var0.index += 24; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "wc.E(" + "null" + ',' + 120 + ')'); + } + } + + static void method2206(int var1) { + try { + InterfaceWidget var2 = InterfaceWidget.getWidget(4, var1); + var2.a(); + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "wc.A(" + true + ',' + var1 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class163.java b/Client/src/main/java/org/runite/client/Class163.java new file mode 100644 index 000000000..3d9a32fe3 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class163.java @@ -0,0 +1,15 @@ +package org.runite.client; + +import org.rs09.SystemLogger; +import org.rs09.client.data.NodeCache; + +import java.util.Objects; + +public class Class163 { + + static NodeCache aClass47_2041 = new NodeCache(64); + static int[] anIntArray2043 = new int[]{8, 11, 4, 6, 9, 7, 10, 0}; + public static int localNPCCount = 0; + + +} diff --git a/Client/src/main/java/org/runite/client/Class163_Sub1.java b/Client/src/main/java/org/runite/client/Class163_Sub1.java new file mode 100644 index 000000000..638565354 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class163_Sub1.java @@ -0,0 +1,133 @@ +package org.runite.client; +import org.rs09.client.data.ReferenceCache; + +import java.io.IOException; +import java.util.Objects; + +public class Class163_Sub1 extends Class163 { + + public static ReferenceCache aReferenceCache_2984 = new ReferenceCache(2); + static long[] aLongArray2986 = new long[32]; + static byte[][] aByteArrayArray2987; + static int anInt2989 = 0; + static LinkedList aLinkedList_2990 = new LinkedList(); + static int anInt2993 = 0; + + + static void ping(boolean var1) { + try { + Class58.method1194(); + if(30 == Class143.gameStage || Class143.gameStage == 25) { + ++TextureOperation18.anInt4032; + if(TextureOperation18.anInt4032 >= 50 || var1) { + TextureOperation18.anInt4032 = 0; + if(!Class3_Sub28_Sub18.aBoolean3769 && Class3_Sub15.activeConnection != null) { + TextureOperation12.outgoingBuffer.putOpcode(93); + try { + Class3_Sub15.activeConnection.sendBytes(TextureOperation12.outgoingBuffer.buffer, TextureOperation12.outgoingBuffer.index); + TextureOperation12.outgoingBuffer.index = 0; + } catch (IOException var3) { + Class3_Sub28_Sub18.aBoolean3769 = true; + } + } + + Class58.method1194(); + } + } + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "ah.B(" + (byte) -90 + ',' + var1 + ')'); + } + } + + static void method2211() { + try { + if(null == Class67.aClass11_1017) { + if(null == Class56.aClass11_886) { + int var1 = Unsorted.anInt3644; + int var3; + int var4; + if(Class38_Sub1.aBoolean2615) { + int var11; + if(var1 != 1) { + var3 = Unsorted.anInt1709; + var11 = Class126.anInt1676; + if(Class21.anInt1462 - 10 > var11 || Class21.anInt3552 + (Class21.anInt1462 - -10) < var11 || var3 < -10 + Class21.anInt3395 || Class21.anInt3537 + (Class21.anInt3395 - -10) < var3) { + Class38_Sub1.aBoolean2615 = false; + Class21.method1340(Class21.anInt1462, Class21.anInt3552, Class21.anInt3395, Class21.anInt3537); + } + } + + if(var1 == 1) { + var11 = Class21.anInt1462; + var3 = Class21.anInt3395; + var4 = Class21.anInt3552; + int var12 = anInt2993; + int var13 = Class38_Sub1.anInt2614; + int var7 = -1; + + for(int var8 = 0; var8 < Unsorted.menuOptionCount; ++var8) { + int var9; + if(Unsorted.aBoolean1951) { + var9 = 15 * (Unsorted.menuOptionCount + -1 + -var8) + 35 + var3; + } else { + var9 = 15 * (-var8 + (Unsorted.menuOptionCount - 1)) + var3 + 31; + } + + if(var11 < var12 && var12 < var11 - -var4 && var9 + -13 < var13 && var13 < 3 + var9) { + var7 = var8; + } + } + + if(var7 != -1) { + BufferedDataStream.method806(var7); + } + + Class38_Sub1.aBoolean2615 = false; + Class21.method1340(Class21.anInt1462, Class21.anInt3552, Class21.anInt3395, Class21.anInt3537); + } + } else { + if(var1 == 1 && 0 < Unsorted.menuOptionCount) { + short var2 = TextureOperation27.aShortArray3095[-1 + Unsorted.menuOptionCount]; + if(var2 == 25 || var2 == 23 || 48 == var2 || var2 == 7 || 13 == var2 || var2 == 47 || var2 == 5 || var2 == 43 || var2 == 35 || var2 == 58 || var2 == 22 || var2 == 1006) { + var3 = Class117.anIntArray1613[-1 + Unsorted.menuOptionCount]; + var4 = Class27.anIntArray512[Unsorted.menuOptionCount + -1]; + RSInterface var5 = Unsorted.getRSInterface(var4); + Class3_Sub1 var6 = Client.method44(Objects.requireNonNull(var5)); + if(var6.method100() || var6.method93()) { + Class40.anInt677 = 0; + Class72.aBoolean1074 = false; + if(Class67.aClass11_1017 != null) { + Class20.method909(Class67.aClass11_1017); + } + + Class67.aClass11_1017 = Unsorted.getRSInterface(var4); + Class129_Sub1.anInt2693 = anInt2993; + Unsorted.anInt40 = Class38_Sub1.anInt2614; + PacketParser.anInt86 = var3; + Class20.method909(Class67.aClass11_1017); + return; + } + } + } + + if(var1 == 1 && (Unsorted.anInt998 == 1 && 2 < Unsorted.menuOptionCount || TextureOperation8.method353(Unsorted.menuOptionCount + -1, 0))) { + var1 = 2; + } + + if(var1 == 2 && Unsorted.menuOptionCount > 0 || Unsorted.anInt3660 == 1) { + Class132.method1801(); + } + + if(1 == var1 && Unsorted.menuOptionCount > 0 || Unsorted.anInt3660 == 2) { + TextureOperation9.method203(100); + } + } + + } + } + } catch (RuntimeException var10) { + throw ClientErrorException.clientError(var10, "ah.A(" + -48 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class163_Sub1_Sub1.java b/Client/src/main/java/org/runite/client/Class163_Sub1_Sub1.java new file mode 100644 index 000000000..9e130e187 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class163_Sub1_Sub1.java @@ -0,0 +1,169 @@ +package org.runite.client; + +import org.rs09.client.net.Connection; + +import java.awt.Component; +import java.io.IOException; +import java.net.Socket; +import java.util.Objects; + +public final class Class163_Sub1_Sub1 extends Class163_Sub1 { + + static byte[] aByteArray4005 = new byte[]{(byte) 95, (byte) 97, (byte) 98, (byte) 99, (byte) 100, (byte) 101, (byte) 102, (byte) 103, (byte) 104, (byte) 105, (byte) 106, (byte) 107, (byte) 108, (byte) 109, (byte) 110, (byte) 111, (byte) 112, (byte) 113, (byte) 114, (byte) 115, (byte) 116, (byte) 117, (byte) 118, (byte) 119, (byte) 120, (byte) 121, (byte) 122, (byte) 48, (byte) 49, (byte) 50, (byte) 51, (byte) 52, (byte) 53, (byte) 54, (byte) 55, (byte) 56, (byte) 57}; + static int anInt4006; + public static boolean[] aBooleanArray4008 = new boolean[100]; + static int[] anIntArray4009 = new int[5]; + static int[][] anIntArrayArray4010 = new int[104][104]; + static int anInt2246 = 0; + public static int adminLoginStage = 0; + static int anInt1616 = 0; + + static void method2214() { + try { + + if (NPC.isHighDetail(90) || WorldListCountry.localPlane == Class140_Sub3.viewportZ) { + if (Class58.anInt909 != WorldListCountry.localPlane && Class3_Sub19.method385(WorldListCountry.localPlane)) { + Class58.anInt909 = WorldListCountry.localPlane; + Unsorted.method792(); + } + + } else { + Unsorted.method1301(WorldListCountry.localPlane, Class3_Sub7.viewportY, Unsorted.viewportX, Class102.player.yOffsets2755[0], false, Class102.player.xOffsets2767[0]); + } + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "ch.E(" + 0 + ')'); + } + } + + static void method2215(Component var0) { + try { + var0.removeKeyListener(TextureOperation33.aClass148_3049); + var0.removeFocusListener(TextureOperation33.aClass148_3049); + KeyboardListener.anInt2384 = -1; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "ch.G(" + (var0 != null ? "{...}" : "null") + ',' + -9320 + ')'); + } + } + + static void method2216() { + try { + + if (adminLoginStage != 0) { + try { + if (1500 < ++anInt2246) { + if (null != Class3_Sub15.activeConnection) { + Class3_Sub15.activeConnection.close(); + Class3_Sub15.activeConnection = null; + } + + if (1 <= anInt1616) { + Client.messageToDisplay = -5; + adminLoginStage = 0; + return; + } + + anInt2246 = 0; + ++anInt1616; + adminLoginStage = 1; + if (Class123.anInt1658 == Client.anInt3773) { + Class123.anInt1658 = Class53.anInt867; + } else { + Class123.anInt1658 = Client.anInt3773; + } + } + + if (adminLoginStage == 1) { + Class3_Sub9.aClass64_2318 = Class38.gameSignlink.method1441((byte) 8, ClientErrorException.worldListHost, Class123.anInt1658); + adminLoginStage = 2; + } + + int var1; + if (adminLoginStage == 2) { + if (Objects.requireNonNull(Class3_Sub9.aClass64_2318).anInt978 == 2) { + throw new IOException(); + } + + if (1 != Class3_Sub9.aClass64_2318.anInt978) { + return; + } + + Class3_Sub15.activeConnection = new Connection((Socket) Class3_Sub9.aClass64_2318.anObject974, Class38.gameSignlink); + Class3_Sub9.aClass64_2318 = null; + Class3_Sub15.activeConnection.sendBytes(TextureOperation12.outgoingBuffer.buffer, TextureOperation12.outgoingBuffer.index); + if (WorldListEntry.aAudioChannel_2627 != null) { + WorldListEntry.aAudioChannel_2627.method2159(); + } + if (null != Class3_Sub21.aAudioChannel_2491) { + Class3_Sub21.aAudioChannel_2491.method2159(); + } + + var1 = Class3_Sub15.activeConnection.readByte(); + if (WorldListEntry.aAudioChannel_2627 != null) { + WorldListEntry.aAudioChannel_2627.method2159(); + } + + if (Class3_Sub21.aAudioChannel_2491 != null) { + Class3_Sub21.aAudioChannel_2491.method2159(); + } + + if (var1 != 101) { + Client.messageToDisplay = var1; + adminLoginStage = 0; + Class3_Sub15.activeConnection.close(); + Class3_Sub15.activeConnection = null; + return; + } + + adminLoginStage = 3; + } + + if (adminLoginStage == 3) { + if (Class3_Sub15.activeConnection.availableBytes() < 2) { + return; + } + + var1 = Class3_Sub15.activeConnection.readByte() << 8 | Class3_Sub15.activeConnection.readByte(); + WaterfallShader.method1627(var1, (byte) -16); + if (CS2Script.userCurrentWorldID == -1) { + adminLoginStage = 0; + Client.messageToDisplay = 6; + Class3_Sub15.activeConnection.close(); + Class3_Sub15.activeConnection = null; + return; + } + + adminLoginStage = 0; + Class3_Sub15.activeConnection.close(); + Class3_Sub15.activeConnection = null; + Class24.method951(); + return; + } + } catch (IOException var2) { + if (null != Class3_Sub15.activeConnection) { + Class3_Sub15.activeConnection.close(); + Class3_Sub15.activeConnection = null; + } + + if (anInt1616 < 1) { + if (Class123.anInt1658 == Client.anInt3773) { + Class123.anInt1658 = Class53.anInt867; + } else { + Class123.anInt1658 = Client.anInt3773; + } + + adminLoginStage = 1; + anInt2246 = 0; + ++anInt1616; + } else { + Client.messageToDisplay = -4; + adminLoginStage = 0; + } + } + + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "ch.D(" + (byte) 81 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class163_Sub2.java b/Client/src/main/java/org/runite/client/Class163_Sub2.java new file mode 100644 index 000000000..ff548188c --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class163_Sub2.java @@ -0,0 +1,24 @@ +package org.runite.client; + +class Class163_Sub2 extends Class163 { + + static RSString paramSettings = null; + static Class30[] aClass30Array2998 = new Class30[29]; //TODO + + + static Class25 method2217(int var0, int var1, int var2) { + TileData var3 = TileData.aTileDataArrayArrayArray2638[var0][var1][var2]; + if (var3 != null) { + for (int var4 = 0; var4 < var3.anInt2223; ++var4) { + Class25 var5 = var3.aClass25Array2221[var4]; + if ((var5.aLong498 >> 29 & 3L) == 2L && var5.anInt483 == var1 && var5.anInt478 == var2) { + Class158.method2186(var5); + return var5; + } + } + + } + return null; + } + +} diff --git a/Client/src/main/java/org/runite/client/Class163_Sub2_Sub1.java b/Client/src/main/java/org/runite/client/Class163_Sub2_Sub1.java new file mode 100644 index 000000000..e828fea72 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class163_Sub2_Sub1.java @@ -0,0 +1,274 @@ +package org.runite.client; +import org.rs09.client.net.Connection; +import org.rs09.client.data.ReferenceCache; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InvalidClassException; +import java.io.ObjectInputStream; +import java.io.OptionalDataException; +import java.io.StreamCorruptedException; +import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; + +final class Class163_Sub2_Sub1 extends Class163_Sub2 { + + static Connection aClass89_4012; + static int anInt4014; + static ReferenceCache aReferenceCache_4015 = new ReferenceCache(64); + static RSString[] aStringArray4016 = new RSString[500]; + static long[] aLongArray4017 = new long[100]; + static boolean paramObjectTagEnabled = false; + static int anInt4019 = 0; + static int anInt4020 = 0; + static int anInt4021; + static int[] anIntArray4025 = new int[32]; + static int anInt4026 = 0; + static LDIndexedSprite[] aClass109_Sub1Array4027; + + + static void method2220() { + try { + Entity.aReferenceCache_2792.clear(); + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "t.H(" + 0 + ')'); + } + } + + static void method2221(int var0, int var1, int var2, int var4, int var5, int var6) { + try { + int var8 = 0; + + for(Class96[] var7 = ClientErrorException.aClass96Array2114; var8 < var7.length; ++var8) { + Class96 var9 = var7[var8]; + if(null != var9 && var9.anInt1360 == 2) { + Unsorted.method1724(var0 >> 1, var5, (-Texture.y1152 + var9.anInt1347 << 7) - -var9.anInt1350, var9.anInt1353 * 2, var2 >> 1, var9.anInt1346 + (var9.anInt1356 + -Class131.x1716 << 7), (byte)-114, var4); + if(-1 < Class32.anInt590 && Class44.anInt719 % 20 < 10) { + Class166.aAbstractSpriteArray2072[var9.anInt1351].drawAt(-12 + var1 + Class32.anInt590, -28 + var6 - -Texture.anInt2208); + } + } + } + + } catch (RuntimeException var10) { + throw ClientErrorException.clientError(var10, "t.E(" + var0 + ',' + var1 + ',' + var2 + ',' + true + ',' + var4 + ',' + var5 + ',' + var6 + ')'); + } + } + + static void method2223(boolean var0, byte var1) { + try { + byte var3; + byte[][] var4; + if(HDToolKit.highDetail && var0) { + var4 = Class40.aByteArrayArray3057; + var3 = 1; + } else { + var3 = 4; + var4 = Class3_Sub22.aByteArrayArray2521; + } + + for(int var5 = 0; var5 < var3; ++var5) { + Class58.method1194(); + + for(int var6 = 0; var6 < 13; ++var6) { + for(int var7 = 0; var7 < 13; ++var7) { + int var8 = ObjectDefinition.rawChunkData[var5][var6][var7]; + if(var8 != -1) { + int var9 = var8 >> 24 & 3; + if(!var0 || var9 == 0) { + int var10 = (6 & var8) >> 1; + int var11 = var8 >> 14 & 1023; + int var12 = 2047 & var8 >> 3; + int var13 = var12 / 8 + (var11 / 8 << 8); + + for(int var14 = 0; Class3_Sub24_Sub3.regionIds.length > var14; ++var14) { + if(var13 == Class3_Sub24_Sub3.regionIds[var14] && var4[var14] != null) { + TextureOperation13.parseObjectMapping(AtmosphereParser.aClass91Array1182, var5, var4[var14], var9, var10, 8 * var6, var7 * 8, var0, (var11 & 7) * 8, 8 * (7 & var12)); + break; + } + } + } + } + } + } + } + + } catch (RuntimeException var15) { + throw ClientErrorException.clientError(var15, "t.J(" + var0 + ',' + var1 + ')'); + } + } + + static void method2224(long var1, int var3, int var4) { + try { + int var5 = (int)var1 >> 14 & 31; + + int var6 = (int)var1 >> 20 & 3; + int var7 = (int)(var1 >>> 32) & Integer.MAX_VALUE; + if (var5 == 10 || var5 == 11 || var5 == 22) { + ObjectDefinition var8 = ObjectDefinition.getObjectDefinition(var7); + int var9; + int var10; + if(var6 == 0 || var6 == 2) { + var10 = var8.SizeY; + var9 = var8.SizeX; + } else { + var10 = var8.SizeX; + var9 = var8.SizeY; + } + + int var11 = var8.WalkingFlag; + if(var6 != 0) { + var11 = (var11 << var6 & 15) - -(var11 >> -var6 + 4); + } + + Class3_Sub28_Sub9.method582(Class102.player.yOffsets2755[0], 0, var10, true, var11, 2, var4, var9, 0, 2, var3, Class102.player.xOffsets2767[0]); + } else { + Class3_Sub28_Sub9.method582(Class102.player.yOffsets2755[0], var6, 0, true, 0, 2, var4, 0, 1 + var5, 2, var3, Class102.player.xOffsets2767[0]); + } + + Unsorted.anInt4062 = Class38_Sub1.anInt2614; + Unsorted.anInt2958 = 0; + Class36.anInt638 = 2; + Class70.anInt1053 = Class163_Sub1.anInt2993; + } catch (RuntimeException var12) { + throw ClientErrorException.clientError(var12, "t.D(" + (byte) 39 + ',' + var1 + ',' + var3 + ',' + var4 + ')'); + } + } + + static void method2226(BufferedDataStream var0, int var1, int var2) { + try { + if(var2 > -109) { + method2226(null, 67, 54); + } + + while(true) { + Class3_Sub8 var3 = (Class3_Sub8)Class3_Sub26.aLinkedList_2557.startIteration(); + if(var3 == null) { + return; + } + + boolean var4 = false; + + int var5; + for(var5 = 0; var3.anInt2296 > var5; ++var5) { + if(var3.aClass64Array2303[var5] != null) { + if(var3.aClass64Array2303[var5].anInt978 == 2) { + var3.anIntArray2300[var5] = -5; + } + + if(var3.aClass64Array2303[var5].anInt978 == 0) { + var4 = true; + } + } + + if(null != var3.aClass64Array2298[var5]) { + if(var3.aClass64Array2298[var5].anInt978 == 2) { + var3.anIntArray2300[var5] = -6; + } + + if(var3.aClass64Array2298[var5].anInt978 == 0) { + var4 = true; + } + } + } + + if(var4) { + return; + } + + var0.putOpcode(var1); + var0.writeByte(0); + var5 = var0.index; + var0.writeInt(var3.anInt2305); + + for(int var6 = 0; var6 < var3.anInt2296; ++var6) { + if(var3.anIntArray2300[var6] == 0) { + try { + int var7 = var3.anIntArray2301[var6]; + Field var8; + int var9; + if(var7 == 0) { + var8 = (Field)var3.aClass64Array2303[var6].anObject974; + var9 = var8.getInt(null); + var0.writeByte(0); + var0.writeInt(var9); + } else if (var7 == 1) { + var8 = (Field) var3.aClass64Array2303[var6].anObject974; + var8.setInt(null, var3.anIntArray2299[var6]); + var0.writeByte(0); + } else if (2 == var7) { + var8 = (Field) var3.aClass64Array2303[var6].anObject974; + var9 = var8.getModifiers(); + var0.writeByte(0); + var0.writeInt(var9); + } + + Method var26; + if(3 == var7) { + var26 = (Method)var3.aClass64Array2298[var6].anObject974; + byte[][] var27 = var3.aByteArrayArrayArray2302[var6]; + Object[] var10 = new Object[var27.length]; + + for(int var11 = 0; var11 < var27.length; ++var11) { + ObjectInputStream var12 = new ObjectInputStream(new ByteArrayInputStream(var27[var11])); + var10[var11] = var12.readObject(); + } + + Object var28 = var26.invoke(null, var10); + if(var28 == null) { + var0.writeByte(0); + } else if(var28 instanceof Number) { + var0.writeByte(1); + var0.writeLong(((Number)var28).longValue()); + } else if (var28 instanceof RSString) { + var0.writeByte(2); + var0.writeString((RSString) var28); + } else { + var0.writeByte(4); + } + } else if(var7 == 4) { + var26 = (Method)var3.aClass64Array2298[var6].anObject974; + var9 = var26.getModifiers(); + var0.writeByte(0); + var0.writeInt(var9); + } + } catch (ClassNotFoundException var13) { + var0.writeByte(-10); + } catch (InvalidClassException var14) { + var0.writeByte(-11); + } catch (StreamCorruptedException var15) { + var0.writeByte(-12); + } catch (OptionalDataException var16) { + var0.writeByte(-13); + } catch (IllegalAccessException var17) { + var0.writeByte(-14); + } catch (IllegalArgumentException var18) { + var0.writeByte(-15); + } catch (InvocationTargetException var19) { + var0.writeByte(-16); + } catch (SecurityException var20) { + var0.writeByte(-17); + } catch (IOException var21) { + var0.writeByte(-18); + } catch (NullPointerException var22) { + var0.writeByte(-19); + } catch (Exception var23) { + var0.writeByte(-20); + } catch (Throwable var24) { + var0.writeByte(-21); + } + } else { + var0.writeByte(var3.anIntArray2300[var6]); + } + } + + var0.writeCRC(var5); + var0.method769(var0.index - var5); + var3.unlink(); + } + } catch (RuntimeException var25) { + throw ClientErrorException.clientError(var25, "t.I(" + (var0 != null?"{...}":"null") + ',' + var1 + ',' + var2 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class163_Sub3.java b/Client/src/main/java/org/runite/client/Class163_Sub3.java new file mode 100644 index 000000000..f45380388 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class163_Sub3.java @@ -0,0 +1,58 @@ +package org.runite.client; + +import java.util.Objects; + +final class Class163_Sub3 extends Class163 { + + static int[] anIntArray2999; + static RSString[] aStringArray3003 = new RSString[100]; + static boolean aBoolean3004 = true; + static byte[][] aByteArrayArray3005; + static int[] anIntArray3007 = new int[]{-1, -1, 1, 1}; + + + static void method2229(long var0) { + try { + if (var0 != 0) { + if ((100 > Class8.anInt104 || TextureOperation3.disableGEBoxes) && Class8.anInt104 < 200) { + RSString var3 = Objects.requireNonNull(Unsorted.method1052(var0)).longToRSString(); + + int var4; + for (var4 = 0; Class8.anInt104 > var4; ++var4) { + if (var0 == Class50.aLongArray826[var4]) { + BufferedDataStream.addChatMessage(RSString.parse(""), 0, RSString.stringCombiner(new RSString[]{var3, TextCore.HasFriendsAlready}), -1); + return; + } + } + + for (var4 = 0; var4 < Class3_Sub28_Sub5.anInt3591; ++var4) { + if (Class114.ignores[var4] == var0) { + BufferedDataStream.addChatMessage(RSString.parse(""), 0, RSString.stringCombiner(new RSString[]{TextCore.HasPleaseRemove, var3, TextCore.HasIgnoreToFriends}), -1); + return; + } + } + + if (var3.equalsString(Class102.player.displayName)) { + BufferedDataStream.addChatMessage(RSString.parse(""), 0, TextCore.HasOnOwnFriendsList, -1); + } else { + Class70.aStringArray1046[Class8.anInt104] = var3; + Class50.aLongArray826[Class8.anInt104] = var0; + Unsorted.anIntArray882[Class8.anInt104] = 0; + Unsorted.aStringArray2566[Class8.anInt104] = RSString.parse(""); + Class57.anIntArray904[Class8.anInt104] = 0; + Unsorted.aBooleanArray73[Class8.anInt104] = false; + ++Class8.anInt104; + Class110.anInt1472 = PacketParser.anInt3213; + TextureOperation12.outgoingBuffer.putOpcode(120); + TextureOperation12.outgoingBuffer.writeLong(var0); + } + } else { + BufferedDataStream.addChatMessage(RSString.parse(""), 0, TextCore.HasFriendsListFull, -1); + } + } + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "fb.C(" + var0 + ',' + (byte) -91 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class164.java b/Client/src/main/java/org/runite/client/Class164.java new file mode 100644 index 000000000..edb6926f5 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class164.java @@ -0,0 +1,190 @@ +package org.runite.client; + +import java.util.Random; + +abstract class Class164 { + + static int[] anIntArray2048; + static int anInt2050; + static int anInt2051; + static RSInterface aClass11_2055; + static Model_Sub1[] aClass140_Sub5Array2058 = new Model_Sub1[4]; + private final short[] aShortArray2047 = new short[512]; + private final int anInt2054; + private final int anInt2056; + private final int anInt2057; + private final int anInt2060; + int anInt2062; + private short[] aShortArray2049; + + + Class164(int var1, int var3, int var4) { + try { + this.anInt2056 = var4; + this.anInt2062 = 5; + this.anInt2054 = var1; + this.anInt2060 = 2; + this.anInt2057 = var3; + this.method2232(); + this.method2236(-190126388); + } catch (RuntimeException var7) { + throw ClientErrorException.clientError(var7, "wf.(" + var1 + ',' + 5 + ',' + var3 + ',' + var4 + ',' + 2 + ')'); + } + } + + final void method2230(int var1) { + try { + int[] var39 = new int[64]; + int[] var40 = new int[64]; + int[] var41 = new int[64]; + + int var42; + for (var42 = 0; var42 < 64; ++var42) { + var39[var42] = (var42 << 12) / 64; + } + + if (var1 > -68) { + this.method2236(64); + } + + for (var42 = 0; var42 < 64; ++var42) { + var40[var42] = (var42 << 12) / 64; + } + + for (var42 = 0; var42 < 64; ++var42) { + var41[var42] = (var42 << 12) / 64; + } + + this.method2233(); + + for (int var37 = 0; var37 < 64; ++var37) { + for (int var36 = 0; var36 < 64; ++var36) { + for (int var35 = 0; var35 < 64; ++var35) { + for (int var38 = 0; var38 < this.anInt2062; ++var38) { + var42 = this.aShortArray2049[var38] << 12; + int var8 = this.anInt2057 * var42 >> 12; + int var7 = var42 * var41[var37] >> 12; + int var9 = var42 * this.anInt2056 >> 12; + var7 *= this.anInt2060; + int var10 = var42 * this.anInt2060 >> 12; + int var5 = var39[var35] * var42 >> 12; + var5 *= this.anInt2057; + int var11 = var5 >> 12; + var5 &= 4095; + int var15 = var7 >> 12; + int var20 = var5 + -4096; + int var12 = var11 + 1; + int var16 = var15 - -1; + int var6 = var40[var36] * var42 >> 12; + int var17 = Class1.anIntArray52[var5]; + var6 *= this.anInt2056; + var15 &= 255; + var11 &= 255; + if (var10 <= var16) { + var16 = 0; + } else { + var16 &= 255; + } + + int var13 = var6 >> 12; + short var23 = this.aShortArray2047[var15]; + short var24 = this.aShortArray2047[var16]; + int var14 = var13 + 1; + if (var9 > var14) { + var14 &= 255; + } else { + var14 = 0; + } + + var6 &= 4095; + short var28 = this.aShortArray2047[var14 - -var24]; + var7 &= 4095; + var13 &= 255; + int var19 = Class1.anIntArray52[var7]; + short var27 = this.aShortArray2047[var13 + var24]; + short var25 = this.aShortArray2047[var23 + var13]; + if (var8 <= var12) { + var12 = 0; + } else { + var12 &= 255; + } + + int var21 = -4096 + var6; + int var18 = Class1.anIntArray52[var6]; + int var22 = var7 - 4096; + short var26 = this.aShortArray2047[var23 + var14]; + int var29 = Class131.method1788(var5, var7, var6, this.aShortArray2047[var25 + var11], true); + int var30 = Class131.method1788(var20, var7, var6, this.aShortArray2047[var12 - -var25], true); + int var31 = var29 - -(var17 * (var30 - var29) >> 12); + var29 = Class131.method1788(var5, var7, var21, this.aShortArray2047[var26 + var11], true); + var30 = Class131.method1788(var20, var7, var21, this.aShortArray2047[var12 + var26], true); + int var32 = var29 + (var17 * (-var29 + var30) >> 12); + int var33 = ((-var31 + var32) * var18 >> 12) + var31; + var29 = Class131.method1788(var5, var22, var6, this.aShortArray2047[var11 + var27], true); + var30 = Class131.method1788(var20, var22, var6, this.aShortArray2047[var12 + var27], true); + var31 = (var17 * (var30 + -var29) >> 12) + var29; + var29 = Class131.method1788(var5, var22, var21, this.aShortArray2047[var11 - -var28], true); + var30 = Class131.method1788(var20, var22, var21, this.aShortArray2047[var12 + var28], true); + var32 = var29 + ((-var29 + var30) * var17 >> 12); + int var34 = var31 - -((var32 + -var31) * var18 >> 12); + this.method2237(((-var33 + var34) * var19 >> 12) + var33, var38); + } + + this.method2231((byte) -92); + } + } + } + + } catch (RuntimeException var43) { + throw ClientErrorException.clientError(var43, "wf.M(" + var1 + ',' + 64 + ',' + 64 + ',' + 64 + ')'); + } + } + + abstract void method2231(byte var1); + + private void method2232() { + try { + this.aShortArray2049 = new short[this.anInt2062]; + int var2 = 0; + + while (var2 < this.anInt2062) { + this.aShortArray2049[var2] = (short) ((int) Math.pow(2.0D, var2)); + ++var2; + } + + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "wf.L(" + (byte) -60 + ')'); + } + } + + abstract void method2233(); + + private void method2236(int var1) { + try { + Random var2 = new Random(this.anInt2054); + + int var3; + for (var3 = 0; var3 < 255; ++var3) { + this.aShortArray2047[var3] = (short) var3; + } + + if (var1 != -190126388) { + anInt2051 = -58; + } + + for (var3 = 0; var3 < 255; ++var3) { + int var4 = -var3 + 255; + int var5 = TextureOperation.method1603((byte) -120, var4, var2); + short var6 = this.aShortArray2047[var5]; + this.aShortArray2047[var5] = this.aShortArray2047[var4]; + this.aShortArray2047[var4] = this.aShortArray2047[256 + var4] = var6; + } + + } catch (RuntimeException var7) { + throw ClientErrorException.clientError(var7, "wf.N(" + var1 + ')'); + } + } + + abstract void method2237(int var1, int var2); + +} diff --git a/Client/src/main/java/org/runite/client/Class164_Sub1.java b/Client/src/main/java/org/runite/client/Class164_Sub1.java new file mode 100644 index 000000000..42e6f0705 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class164_Sub1.java @@ -0,0 +1,274 @@ +package org.runite.client; + +class Class164_Sub1 extends Class164 { + + private int anInt3010; + static int anInt3012 = 0; + private final int[] anIntArray3014; + private byte[] aByteArray3015; + private int anInt3016; + + + final void method2237(int var1, int var2) { + try { + this.anInt3010 += var1 * this.anIntArray3014[var2] >> 12; + + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "vd.H(" + var1 + ',' + var2 + ',' + -20975 + ')'); + } + } + + static void method2238(int var0, int var1, int var2, int var3, int var5) { + try { + Class75.anInt1105 = var2; + Class157.anInt1996 = var1; + Class163_Sub2_Sub1.anInt4014 = var5; + MouseListeningClass.anInt1923 = var3; + GraphicDefinition.anInt529 = var0; + + if(Class163_Sub2_Sub1.anInt4014 >= 100) { + int var6 = 64 + 128 * MouseListeningClass.anInt1923; + int var7 = 64 + Class157.anInt1996 * 128; + int var8 = Scenery.sceneryPositionHash(WorldListCountry.localPlane, 1, var6, var7) - GraphicDefinition.anInt529; + int var10 = var8 + -Class7.anInt2162; + int var9 = var6 + -NPC.anInt3995; + int var11 = -Class77.anInt1111 + var7; + int var12 = (int)Math.sqrt(var11 * var11 + var9 * var9); + Class139.anInt1823 = 2047 & (int)(Math.atan2(var10, var12) * 325.949D); + TextureOperation28.anInt3315 = 2047 & (int)(Math.atan2(var9, var11) * -325.949D); + if(128 > Class139.anInt1823) { + Class139.anInt1823 = 128; + } + + if(383 < Class139.anInt1823) { + Class139.anInt1823 = 383; + } + } + + Class133.anInt1753 = 2; + } catch (RuntimeException var13) { + throw ClientErrorException.clientError(var13, "vd.F(" + var0 + ',' + var1 + ',' + var2 + ',' + var3 + ',' + (byte) -21 + ',' + var5 + ')'); + } + } + + static boolean method2239(int var0, int var1, int var2, int var3) { + if(Class8.method846(var0, var1, var2)) { + int var4 = var1 << 7; + int var5 = var2 << 7; + int var6 = Class44.anIntArrayArrayArray723[var0][var1][var2] - 1; + int var7 = var6 - 120; + int var8 = var6 - 230; + int var9 = var6 - 238; + if(var3 < 16) { + if(var3 == 1) { + if(var4 > Class145.anInt2697) { + if(!TextureOperation10.method349(var4, var6, var5)) { + return true; + } + + if(!TextureOperation10.method349(var4, var6, var5 + 128)) { + return true; + } + } + + if(var0 > 0) { + if(!TextureOperation10.method349(var4, var7, var5)) { + return true; + } + + if(!TextureOperation10.method349(var4, var7, var5 + 128)) { + return true; + } + } + + if(!TextureOperation10.method349(var4, var8, var5)) { + return true; + } + + return !TextureOperation10.method349(var4, var8, var5 + 128); + } + + if(var3 == 2) { + if(var5 < TextureOperation13.anInt3363) { + if(!TextureOperation10.method349(var4, var6, var5 + 128)) { + return true; + } + + if(!TextureOperation10.method349(var4 + 128, var6, var5 + 128)) { + return true; + } + } + + if(var0 > 0) { + if(!TextureOperation10.method349(var4, var7, var5 + 128)) { + return true; + } + + if(!TextureOperation10.method349(var4 + 128, var7, var5 + 128)) { + return true; + } + } + + if(!TextureOperation10.method349(var4, var8, var5 + 128)) { + return true; + } + + return !TextureOperation10.method349(var4 + 128, var8, var5 + 128); + } + + if(var3 == 4) { + if(var4 < Class145.anInt2697) { + if(!TextureOperation10.method349(var4 + 128, var6, var5)) { + return true; + } + + if(!TextureOperation10.method349(var4 + 128, var6, var5 + 128)) { + return true; + } + } + + if(var0 > 0) { + if(!TextureOperation10.method349(var4 + 128, var7, var5)) { + return true; + } + + if(!TextureOperation10.method349(var4 + 128, var7, var5 + 128)) { + return true; + } + } + + if(!TextureOperation10.method349(var4 + 128, var8, var5)) { + return true; + } + + return !TextureOperation10.method349(var4 + 128, var8, var5 + 128); + } + + if(var3 == 8) { + if(var5 > TextureOperation13.anInt3363) { + if(!TextureOperation10.method349(var4, var6, var5)) { + return true; + } + + if(!TextureOperation10.method349(var4 + 128, var6, var5)) { + return true; + } + } + + if(var0 > 0) { + if(!TextureOperation10.method349(var4, var7, var5)) { + return true; + } + + if(!TextureOperation10.method349(var4 + 128, var7, var5)) { + return true; + } + } + + if(!TextureOperation10.method349(var4, var8, var5)) { + return true; + } + + return !TextureOperation10.method349(var4 + 128, var8, var5); + } + } + + return !TextureOperation10.method349(var4 + 64, var9, var5 + 64) || (var3 == 16 ? !TextureOperation10.method349(var4, var8, var5 + 128) : (var3 == 32 ? !TextureOperation10.method349(var4 + 128, var8, var5 + 128) : (var3 == 64 ? !TextureOperation10.method349(var4 + 128, var8, var5) : (var3 == 128 && !TextureOperation10.method349(var4, var8, var5))))); + } else { + return true; + } + } + + static void method2241(byte var0, boolean var1) { + try { + Class3_Sub9 var3; + for(var3 = (Class3_Sub9) Unsorted.aLinkedList_78.startIteration(); var3 != null; var3 = (Class3_Sub9) Unsorted.aLinkedList_78.nextIteration()) { + if(null != var3.aClass3_Sub24_Sub1_2312) { + Class3_Sub26.aClass3_Sub24_Sub2_2563.method461(var3.aClass3_Sub24_Sub1_2312); + var3.aClass3_Sub24_Sub1_2312 = null; + } + + if(var3.aClass3_Sub24_Sub1_2315 != null) { + Class3_Sub26.aClass3_Sub24_Sub2_2563.method461(var3.aClass3_Sub24_Sub1_2315); + var3.aClass3_Sub24_Sub1_2315 = null; + } + + var3.unlink(); + } + + if(var1) { + for(var3 = (Class3_Sub9) Unsorted.aLinkedList_1242.startIteration(); null != var3; var3 = (Class3_Sub9) Unsorted.aLinkedList_1242.nextIteration()) { + if(null != var3.aClass3_Sub24_Sub1_2312) { + Class3_Sub26.aClass3_Sub24_Sub2_2563.method461(var3.aClass3_Sub24_Sub1_2312); + var3.aClass3_Sub24_Sub1_2312 = null; + } + + var3.unlink(); + } + + for(var3 = (Class3_Sub9) Unsorted.aHashTable_4046.first(); null != var3; var3 = (Class3_Sub9) Unsorted.aHashTable_4046.next()) { + if(null != var3.aClass3_Sub24_Sub1_2312) { + Class3_Sub26.aClass3_Sub24_Sub2_2563.method461(var3.aClass3_Sub24_Sub1_2312); + var3.aClass3_Sub24_Sub1_2312 = null; + } + + var3.unlink(); + } + } + + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "vd.G(" + var0 + ',' + var1 + ')'); + } + } + + final void method2233() { + try { + this.anInt3016 = 0; + this.anInt3010 = 0; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "vd.C(" + -949697716 + ')'); + } + } + + Class164_Sub1() { + super(12, 16, 2); + + try { + this.anIntArray3014 = new int[this.anInt2062]; + + for(int var7 = 0; var7 < this.anInt2062; ++var7) { + this.anIntArray3014[var7] = (short)((int)(Math.pow((float) 0.45, var7) * 4096.0D)); + } + + } catch (RuntimeException var8) { + throw ClientErrorException.clientError(var8, "vd.(" + 12 + ',' + 5 + ',' + 16 + ',' + 2 + ',' + 2 + ',' + (float) 0.45 + ')'); + } + } + + void method2242(int var1, byte var2) { + try { + this.aByteArray3015[this.anInt3016++] = (byte)(127 + (Unsorted.bitwiseAnd(var2, 255) >> 1)); + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "vd.B(" + var1 + ',' + var2 + ')'); + } + } + + final void method2231(byte var1) { + try { + this.anInt3010 = Math.abs(this.anInt3010); + if(var1 != -92) { + this.method2231((byte)-112); + } + + if(this.anInt3010 >= 4096) { + this.anInt3010 = 4095; + } + + this.method2242(this.anInt3016++, (byte)(this.anInt3010 >> 4)); + this.anInt3010 = 0; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "vd.A(" + var1 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class164_Sub1_Sub1.java b/Client/src/main/java/org/runite/client/Class164_Sub1_Sub1.java new file mode 100644 index 000000000..b8541f9ef --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class164_Sub1_Sub1.java @@ -0,0 +1,24 @@ +package org.runite.client; + +final class Class164_Sub1_Sub1 extends Class164_Sub1 { + + private byte[] aByteArray4028; + + + final void method2242(int var1, byte var2) { + int var3 = var1 * 2; + var2 = (byte)(127 + ((var2 & 0xFF) >> 1)); + this.aByteArray4028[var3++] = var2; + this.aByteArray4028[var3] = var2; + } + + public Class164_Sub1_Sub1() { + super(); + } + + final byte[] method2243() { + this.aByteArray4028 = new byte[64 * 64 * 64 * 2]; + this.method2230(-95); + return this.aByteArray4028; + } +} diff --git a/Client/src/main/java/org/runite/client/Class164_Sub2.java b/Client/src/main/java/org/runite/client/Class164_Sub2.java new file mode 100644 index 000000000..6f6c443d6 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class164_Sub2.java @@ -0,0 +1,298 @@ +package org.runite.client; + +import org.rs09.client.Linkable; + +import java.util.Objects; + +public class Class164_Sub2 extends Class164 { + + private int anInt3018; + static Class33 aClass33_3019; + public static int anInt3020 = 0; + private final int anInt3021; + private final int anInt3022; + private int anInt3024; + private byte[] aByteArray3025; + private final int anInt3026; + static byte[][] aByteArrayArray3027; + private int anInt3028; + private int anInt3029; + + + void method2244(int var1, byte var2) { + try { + this.aByteArray3025[var1] = var2; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "we.G(" + var1 + ',' + var2 + ')'); + } + } + + final void method2231(byte var1) { + try { + this.anInt3018 = this.anInt3021; + this.anInt3029 >>= 4; + if(0 > this.anInt3029) { + this.anInt3029 = 0; + } else if(255 < this.anInt3029) { + this.anInt3029 = 255; + } + + this.method2244(this.anInt3028++, (byte)this.anInt3029); + if(var1 == -92) { + this.anInt3029 = 0; + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "we.A(" + var1 + ')'); + } + } + + Class164_Sub2() { + super(8, 8, 8); + try { + this.anInt3022 = (int)(4096.0F * (float) 3.0); + this.anInt3026 = (int)((float) 0.55 * 4096.0F); + this.anInt3018 = this.anInt3021 = (int)(Math.pow(0.5D, -(float) 0.1) * 4096.0D); + } catch (RuntimeException var10) { + throw ClientErrorException.clientError(var10, "we.(" + 8 + ',' + 5 + ',' + 8 + ',' + 8 + ',' + 2 + ',' + (float) 0.1 + ',' + (float) 0.55 + ',' + (float) 3.0 + ')'); + } + } + + static int method2246(int var1) { + try { + int var2 = var1 * (var1 * var1 >> 12) >> 12; + + int var3 = 6 * var1 - '\uf000'; + int var4 = (var1 * var3 >> 12) + '\ua000'; + return var2 * var4 >> 12; + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "we.E(" + (byte) 83 + ',' + var1 + ')'); + } + } + + static int method2247(byte var0, int var1, RSInterface var2) { + try { + if(var2.childDataBuffers != null && var2.childDataBuffers.length > var1) { + try { + int[] var4 = var2.childDataBuffers[var1]; + byte var7 = 0; + int var5 = 0; + int var6 = 0; + + while(true) { + int var9 = 0; + int var8 = var4[var6++]; + byte var10 = 0; + if(var8 == 0) { + return var5; + } + + if(15 == var8) { + var10 = 1; + } + + if(16 == var8) { + var10 = 2; + } + + if(var8 == 1) { + var9 = TextureOperation17.anIntArray3185[var4[var6++]]; + } + + if(var8 == 17) { + var10 = 3; + } + + if(var8 == 2) { + var9 = Class3_Sub20.anIntArray2480[var4[var6++]]; + } + + if(var8 == 3) { + var9 = Class133.anIntArray1743[var4[var6++]]; + } + + int var11; + RSInterface var12; + int var13; + int var14; + if(var8 == 4) { + var11 = var4[var6++] << 16; + var11 += var4[var6++]; + var12 = Unsorted.getRSInterface(var11); + var13 = var4[var6++]; + if(-1 != var13 && (!ItemDefinition.getItemDefinition(var13).membersItem || Unsorted.isMember)) { + for(var14 = 0; var14 < Objects.requireNonNull(var12).itemAmounts.length; ++var14) { + if(1 + var13 == var12.itemAmounts[var14]) { + var9 += var12.itemIds[var14]; + } + } + } + } + + if(var8 == 5) { + var9 = ItemDefinition.ram[var4[var6++]]; + } + + if(6 == var8) { + System.out.println(ItemDefinition.anIntArray781[-1 + Class3_Sub20.anIntArray2480[var4[var6++]]]); + var9 = ItemDefinition.anIntArray781[-1 + Class3_Sub20.anIntArray2480[var4[var6++]]]; + } + + if(var8 == 7) { + var9 = 100 * ItemDefinition.ram[var4[var6++]] / '\ub71b'; + } + + if(var8 == 8) { + var9 = Class102.player.COMBAT_LEVEL; + } + + if(9 == var8) { + for(var11 = 0; var11 < 25; ++var11) { + if(Class3_Sub23.aBooleanArray2538[var11]) { + var9 += Class3_Sub20.anIntArray2480[var11]; + } + } + } + + if(var8 == 10) { + var11 = var4[var6++] << 16; + var11 += var4[var6++]; + var12 = Unsorted.getRSInterface(var11); + var13 = var4[var6++]; + if(var13 != -1 && (!ItemDefinition.getItemDefinition(var13).membersItem || Unsorted.isMember)) { + for(var14 = 0; var14 < Objects.requireNonNull(var12).itemAmounts.length; ++var14) { + if(1 + var13 == var12.itemAmounts[var14]) { + var9 = 999999999; + break; + } + } + } + } + + if(var8 == 11) { + var9 = Unsorted.anInt136; + } + + if(12 == var8) { + var9 = MouseListeningClass.anInt1925; + } + + if(var8 == 13) { + var11 = ItemDefinition.ram[var4[var6++]]; + int var17 = var4[var6++]; + var9 = (1 << var17 & var11) == 0 ?0:1; + } + + if(var8 == 14) { + var11 = var4[var6++]; + var9 = NPCDefinition.lookupVarbit(var11); + } + + if(var8 == 18) { + var9 = (Class102.player.xAxis >> 7) - -Class131.x1716; + } + + if(var8 == 19) { + var9 = (Class102.player.yAxis >> 7) - -Texture.y1152; + } + + if(var8 == 20) { + var9 = var4[var6++]; + } + + if(0 == var10) { + if(0 == var7) { + var5 += var9; + } + + if(var7 == 1) { + var5 -= var9; + } + + if(2 == var7 && var9 != 0) { + var5 /= var9; + } + + if(var7 == 3) { + var5 *= var9; + } + + var7 = 0; + } else { + var7 = var10; + } + } + } catch (Exception var15) { + return -1; + } + } else { + return -2; + } + } catch (RuntimeException var16) { + throw ClientErrorException.clientError(var16, "we.D(" + var0 + ',' + var1 + ',' + "null" + ')'); + } + } + + static boolean method2248(int var1) { + try { + + return 32 <= var1 && var1 <= 126 || (var1 >= 160 && 255 >= var1 || (var1 == 128 || var1 == 140 || var1 == 151 || var1 == 156 || var1 == 159)); + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "we.B(" + -157 + ',' + var1 + ')'); + } + } + + static void method2249(int var1) { + try { + Linkable var2 = Class124.aHashTable_1659.first(); + + for(; var2 != null; var2 = Class124.aHashTable_1659.next()) { + if((long) var1 == (65535L & var2.linkableKey >> 48)) { + var2.unlink(); + } + } + + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "we.F(" + (byte) 83 + ',' + var1 + ')'); + } + } + + final void method2237(int var1, int var2) { + try { + int anInt3023; + if(0 == var2) { + this.anInt3024 = -(var1 >= 0 ?var1:-var1) + this.anInt3026; + this.anInt3024 = this.anInt3024 * this.anInt3024 >> 12; + this.anInt3029 = this.anInt3024; + } else { + anInt3023 = this.anInt3022 * this.anInt3024 >> 12; + if(anInt3023 >= 0) { + if(anInt3023 > 4096) { + anInt3023 = 4096; + } + } else { + anInt3023 = 0; + } + + this.anInt3024 = -(var1 >= 0 ?var1:-var1) + this.anInt3026; + this.anInt3024 = this.anInt3024 * this.anInt3024 >> 12; + this.anInt3024 = this.anInt3024 * anInt3023 >> 12; + this.anInt3029 += this.anInt3018 * this.anInt3024 >> 12; + this.anInt3018 = this.anInt3021 * this.anInt3018 >> 12; + } + + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "we.H(" + var1 + ',' + var2 + ',' + -20975 + ')'); + } + } + + final void method2233() { + try { + this.anInt3028 = 0; + this.anInt3029 = 0; + + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "we.C(" + -949697716 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class164_Sub2_Sub1.java b/Client/src/main/java/org/runite/client/Class164_Sub2_Sub1.java new file mode 100644 index 000000000..132e752be --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class164_Sub2_Sub1.java @@ -0,0 +1,24 @@ +package org.runite.client; + +final class Class164_Sub2_Sub1 extends Class164_Sub2 { + + private byte[] aByteArray4029; + + + public Class164_Sub2_Sub1() { + super(); + } + + final byte[] method2250() { + this.aByteArray4029 = new byte[64 * 64 * 64 * 2]; + this.method2230(-98); + return this.aByteArray4029; + } + + final void method2244(int var1, byte var2) { + int var3 = var1 * 2; + int var4 = var2 & 0xFF; + this.aByteArray4029[var3++] = (byte)(3 * var4 >> 5); + this.aByteArray4029[var3] = (byte)(var4 >> 2); + } +} diff --git a/Client/src/main/java/org/runite/client/Class166.java b/Client/src/main/java/org/runite/client/Class166.java new file mode 100644 index 000000000..9a0e5e2d7 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class166.java @@ -0,0 +1,94 @@ +package org.runite.client; + +final class Class166 { + + static TileData[][][] aTileDataArrayArrayArray2065; + static Class3_Sub28_Sub5[] aClass3_Sub28_Sub5Array2070 = new Class3_Sub28_Sub5[14]; + static AbstractSprite[] aAbstractSpriteArray2072; + static int[] anIntArray2073 = new int[5]; + static int anInt2079 = 0; + int anInt2063; + byte[] aByteArray2064; + int anInt2066; + int anInt2067; + int anInt2069; + int anInt2071; + byte[] aByteArray2076; + int anInt2077; + int anInt2078; + + static boolean method2256(int var0, int var1, int var2, int var3) { + if (Class8.method846(var0, var1, var2)) { + int var4 = var1 << 7; + int var5 = var2 << 7; + return !TextureOperation10.method349(var4 + 1, Class44.anIntArrayArrayArray723[var0][var1][var2] + var3, var5 + 1) || !TextureOperation10.method349(var4 + 128 - 1, Class44.anIntArrayArrayArray723[var0][var1 + 1][var2] + var3, var5 + 1) || !TextureOperation10.method349(var4 + 128 - 1, Class44.anIntArrayArrayArray723[var0][var1 + 1][var2 + 1] + var3, var5 + 128 - 1) || !TextureOperation10.method349(var4 + 1, Class44.anIntArrayArrayArray723[var0][var1][var2 + 1] + var3, var5 + 128 - 1); + } else { + return true; + } + } + + static void method2257() { + try { + + Class163_Sub2_Sub1.aReferenceCache_4015.clear(); + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "wh.F(" + 96 + ')'); + } + } + + static void method2258(int var0, RSString var2) { + try { + RSString var3 = var2.method1579().longToRSString(); + boolean var4 = false; + + for (int var5 = 0; Class159.localPlayerCount > var5; ++var5) { + Player var6 = Unsorted.players[Class56.localPlayerIndexes[var5]]; + if (null != var6 && null != var6.displayName && var6.displayName.equalsStringIgnoreCase(var3)) { + var4 = true; + Class3_Sub28_Sub9.method582(Class102.player.yOffsets2755[0], 0, 1, false, 0, 2, var6.xOffsets2767[0], 1, 0, 2, var6.yOffsets2755[0], Class102.player.xOffsets2767[0]); + if (1 == var0) { + TextureOperation12.outgoingBuffer.putOpcode(68); + TextureOperation12.outgoingBuffer.writeShort128LE(Class56.localPlayerIndexes[var5]); + } else if (4 == var0) { + TextureOperation12.outgoingBuffer.putOpcode(180); + TextureOperation12.outgoingBuffer.writeShort128LE(Class56.localPlayerIndexes[var5]); + } else if (5 == var0) { + TextureOperation12.outgoingBuffer.putOpcode(4); + TextureOperation12.outgoingBuffer.writeShortLE(Class56.localPlayerIndexes[var5]); + } else if (var0 == 6) { + TextureOperation12.outgoingBuffer.putOpcode(133); + TextureOperation12.outgoingBuffer.writeShortLE(Class56.localPlayerIndexes[var5]); + } else if (var0 == 7) { + TextureOperation12.outgoingBuffer.putOpcode(114); + TextureOperation12.outgoingBuffer.writeShort128LE(Class56.localPlayerIndexes[var5]); + } + break; + } + } + + if (!var4) { + BufferedDataStream.addChatMessage(RSString.parse(""), 0, RSString.stringCombiner(new RSString[]{TextCore.HasUnableFind, var3}), -1); + } + + } catch (RuntimeException var7) { + throw ClientErrorException.clientError(var7, "wh.D(" + var0 + ',' + 0 + ',' + (var2 != null ? "{...}" : "null") + ')'); + } + } + + static AbstractIndexedSprite method2259() { + try { + Object var1; + if (HDToolKit.highDetail) { + var1 = new HDIndexedSprite(Class3_Sub15.anInt2426, Class133.anInt1748, Class164.anIntArray2048[0], Unsorted.anIntArray2591[0], GroundItem.anIntArray2931[0], Unsorted.anIntArray3076[0], Class163_Sub1.aByteArrayArray2987[0], TextureOperation38.spritePalette); + } else { + var1 = new LDIndexedSprite(Class3_Sub15.anInt2426, Class133.anInt1748, Class164.anIntArray2048[0], Unsorted.anIntArray2591[0], GroundItem.anIntArray2931[0], Unsorted.anIntArray3076[0], Class163_Sub1.aByteArrayArray2987[0], TextureOperation38.spritePalette); + } + + Class39.method1035((byte) 116); + return (AbstractIndexedSprite) var1; + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "wh.A(" + (byte) -40 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class167.java b/Client/src/main/java/org/runite/client/Class167.java new file mode 100644 index 000000000..43cd63a43 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class167.java @@ -0,0 +1,208 @@ +package org.runite.client; + +public final class Class167 { + + public static RSString aString_2083 = null; + static int anInt2087 = 0; + + + static void method2263(int var0, int var1, int var2, int var3, int var4, int var5, int var6) { + Class113 var7 = new Class113(); + var7.anInt1553 = var1 / 128; + var7.anInt1547 = var2 / 128; + var7.anInt1563 = var3 / 128; + var7.anInt1566 = var4 / 128; + var7.anInt1554 = var0; + var7.anInt1562 = var1; + var7.anInt1545 = var2; + var7.anInt1560 = var3; + var7.anInt1550 = var4; + var7.anInt1544 = var5; + var7.anInt1548 = var6; + Class3_Sub28_Sub8.aClass113Array3610[Scenery.anInt2249++] = var7; + } + + static void method2264(boolean var0) { + if (var0) { + TileData.aTileDataArrayArrayArray2638 = Class166.aTileDataArrayArrayArray2065; + Class44.anIntArrayArrayArray723 = Unsorted.anIntArrayArrayArray3605; + Class3_Sub23.aClass3_Sub11ArrayArray2542 = TextureOperation32.aClass3_Sub11ArrayArray3346; + } else { + TileData.aTileDataArrayArrayArray2638 = Unsorted.aTileDataArrayArrayArray4070; + Class44.anIntArrayArrayArray723 = Class58.anIntArrayArrayArray914; + Class3_Sub23.aClass3_Sub11ArrayArray2542 = Client.aClass3_Sub11ArrayArray2199; + } + + Class3_Sub17.anInt2456 = TileData.aTileDataArrayArrayArray2638.length; + } + + static void method2265() { + try { + CS2Script.aReferenceCache_2442.clear(); + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "wj.B(" + 0 + ')'); + } + } + + static void method2267(int var0, int var1, boolean var2, DataBuffer var3, int var4, int var5, byte var6, int var7, int var8) { + try { + int var9; + if (var5 >= 0 && var5 < 104 && var4 >= 0 && var4 < 104) { + if (!var2) { + Unsorted.sceneryTypeMaskGrid[var8][var5][var4] = 0; + } + + while (true) { + var9 = var3.readUnsignedByte(); + if (var9 == 0) { + if (var2) { + Class44.anIntArrayArrayArray723[0][var5][var4] = Class58.anIntArrayArrayArray914[0][var5][var4]; + } else if (var8 == 0) { + Class44.anIntArrayArrayArray723[0][var5][var4] = 8 * -Class32.method993(var4 + 556238 + var1, var0 + var5 + 932731); + } else { + Class44.anIntArrayArrayArray723[var8][var5][var4] = -240 + Class44.anIntArrayArrayArray723[var8 - 1][var5][var4]; + } + break; + } + + if (var9 == 1) { + int var10 = var3.readUnsignedByte(); + if (var2) { + Class44.anIntArrayArrayArray723[0][var5][var4] = Class58.anIntArrayArrayArray914[0][var5][var4] - -(var10 * 8); + } else { + if (var10 == 1) { + var10 = 0; + } + + if (var8 == 0) { + Class44.anIntArrayArrayArray723[0][var5][var4] = 8 * -var10; + } else { + Class44.anIntArrayArrayArray723[var8][var5][var4] = -(var10 * 8) + Class44.anIntArrayArrayArray723[-1 + var8][var5][var4]; + } + } + break; + } + + if (49 >= var9) { + Class158_Sub1.aByteArrayArrayArray1828[var8][var5][var4] = var3.readSignedByte(); + Unsorted.aByteArrayArrayArray1328[var8][var5][var4] = (byte) ((-2 + var9) / 4); + PacketParser.aByteArrayArrayArray81[var8][var5][var4] = (byte) Unsorted.bitwiseAnd(-2 + var9 + var7, 3); + } else if (var9 > 81) { + TextureOperation36.aByteArrayArrayArray3430[var8][var5][var4] = (byte) (-81 + var9); + } else if (!var2) { + Unsorted.sceneryTypeMaskGrid[var8][var5][var4] = (byte) (var9 - 49); + } + } + } else { + while (true) { + var9 = var3.readUnsignedByte(); + if (var9 == 0) { + break; + } + + if (var9 == 1) { + var3.readUnsignedByte(); + break; + } + + if (var9 <= 49) { + var3.readUnsignedByte(); + } + } + } + + if (var6 < 58) { + anInt2087 = 87; + } + + } catch (RuntimeException var11) { + throw ClientErrorException.clientError(var11, "wj.A(" + var0 + ',' + var1 + ',' + var2 + ',' + (var3 != null ? "{...}" : "null") + ',' + var4 + ',' + var5 + ',' + var6 + ',' + var7 + ',' + var8 + ')'); + } + } + + static int method2268(byte var0, int var1, int var2) { + try { + Class3_Sub25 var3 = (Class3_Sub25) TileData.aHashTable_2220.get(var1); + if (var3 == null) { + return 0; + } else if (var2 == -1) { + return 0; + } else { + int var4 = 0; + + for (int var5 = 0; var3.anIntArray2551.length > var5; ++var5) { + if (var3.anIntArray2547[var5] == var2) { + var4 += var3.anIntArray2551[var5]; + } + } + return var4; + } + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "wj.H(" + var0 + ',' + var1 + ',' + var2 + ')'); + } + } + + static void method2269(byte var0) { + try { + if (null != Class3_Sub15.activeConnection) { + Class3_Sub15.activeConnection.close(); + Class3_Sub15.activeConnection = null; + } + + TextureOperation13.method313((byte) 110); + Class32.method995(); + + int var1; + for (var1 = 0; var1 < 4; ++var1) { + AtmosphereParser.aClass91Array1182[var1].method1496(); + } + + Unsorted.method1250(62, false); + System.gc(); + Unsorted.method882(); + AudioHandler.musicEffectPlaying = false; + AudioHandler.currentTrack = -1; + Class164_Sub1.method2241((byte) -77, true); + LinkableRSString.isDynamicSceneGraph = false; + Texture.y1152 = 0; + Unsorted.viewportX = 0; + Class3_Sub7.viewportY = 0; + Class131.x1716 = 0; + + for (var1 = 0; ClientErrorException.aClass96Array2114.length > var1; ++var1) { + ClientErrorException.aClass96Array2114[var1] = null; + } + + Class159.localPlayerCount = 0; + Class163.localNPCCount = 0; + if (var0 != 46) { + method2269((byte) 43); + } + + for (var1 = 0; var1 < 2048; ++var1) { + Unsorted.players[var1] = null; + Class65.aClass3_Sub30Array986[var1] = null; + } + + for (var1 = 0; var1 < 32768; ++var1) { + NPC.npcs[var1] = null; + } + + for (var1 = 0; 4 > var1; ++var1) { + for (int var2 = 0; var2 < 104; ++var2) { + for (int var3 = 0; var3 < 104; ++var3) { + Class39.groundItems[var1][var2][var3] = null; + } + } + } + + Class3_Sub28_Sub5.method560(); + Class113.interfacePacketCounter = 0; + TextureOperation6.method176(var0 + -161); + TextureOperation1.method219(true); + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "wj.C(" + var0 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class169.java b/Client/src/main/java/org/runite/client/Class169.java new file mode 100644 index 000000000..2df447ffa --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class169.java @@ -0,0 +1,192 @@ +package org.runite.client; + + +import javax.media.opengl.GL; +import java.nio.ByteBuffer; +import java.nio.ByteOrder; + +final class Class169 { + + private static final byte[] aByteArray2111 = new byte[16384]; + private final int anInt2108; + boolean aBoolean2106 = true; + private Class156 aClass156_2105; + private ByteBuffer aByteBuffer2107; + private ByteBuffer aByteBuffer2109; + private Class156 aClass156_2110; + private int anInt2112 = -1; + + + public Class169() { + GL var1 = HDToolKit.gl; + int[] var2 = new int[1]; + var1.glGenTextures(1, var2, 0); + this.anInt2108 = var2[0]; + Class31.anInt580 += 16384; + HDToolKit.bindTexture2D(this.anInt2108); + var1.glTexParameteri(3553, 10241, 9729); + var1.glTexParameteri(3553, 10240, 9729); + var1.glTexParameteri(3553, 10242, '\u812f'); + var1.glTexParameteri(3553, 10243, '\u812f'); + } + + final void method2281(int[][] var1, int var2, int var3) { + DataBuffer var4 = new DataBuffer(1620); + + int var6; + for (int var5 = 0; var5 <= 8; ++var5) { + for (var6 = 0; var6 <= 8; ++var6) { + if (HDToolKit.aBoolean1790) { + var4.writeFloat((float) var6 / 8.0F); + var4.writeFloat((float) var5 / 8.0F); + var4.writeFloat((float) (var6 * 128)); + var4.writeFloat((float) var1[var6 + var2][var5 + var3]); + var4.writeFloat((float) (var5 * 128)); + } else { + var4.writeFloatLE((float) var6 / 8.0F); + var4.writeFloatLE((float) var5 / 8.0F); + var4.writeFloatLE((float) (var6 * 128)); + var4.writeFloatLE((float) var1[var6 + var2][var5 + var3]); + var4.writeFloatLE((float) (var5 * 128)); + } + } + } + + if (HDToolKit.supportVertexBufferObject) { + ByteBuffer var9 = ByteBuffer.wrap(var4.buffer, 0, var4.index); + this.aClass156_2110 = new Class156(); + this.aClass156_2110.method2172(var9); + } else { + this.aByteBuffer2109 = ByteBuffer.allocateDirect(var4.index).order(ByteOrder.nativeOrder()); + this.aByteBuffer2109.put(var4.buffer, 0, var4.index); + this.aByteBuffer2109.flip(); + } + + DataBuffer var8 = new DataBuffer(1536); + + for (var6 = 0; var6 < 8; ++var6) { + for (int var7 = 0; var7 < 8; ++var7) { + if (HDToolKit.aBoolean1790) { + var8.writeInt(var7 + (var6 + 1) * 9); + var8.writeInt(var7 + var6 * 9); + var8.writeInt(var7 + 1 + var6 * 9); + var8.writeInt(var7 + (var6 + 1) * 9); + var8.writeInt(var7 + 1 + var6 * 9); + var8.writeInt(var7 + 1 + (var6 + 1) * 9); + } else { + var8.writeIntLE(var7 + (var6 + 1) * 9); + var8.writeIntLE(var7 + var6 * 9); + var8.writeIntLE(var7 + 1 + var6 * 9); + var8.writeIntLE(var7 + (var6 + 1) * 9); + var8.writeIntLE(var7 + 1 + var6 * 9); + var8.writeIntLE(var7 + 1 + (var6 + 1) * 9); + } + } + } + + if (HDToolKit.supportVertexBufferObject) { + ByteBuffer var10 = ByteBuffer.wrap(var8.buffer, 0, var8.index); + this.aClass156_2105 = new Class156(); + this.aClass156_2105.method2170(var10); + } else { + this.aByteBuffer2107 = ByteBuffer.allocateDirect(var8.index).order(ByteOrder.nativeOrder()); + this.aByteBuffer2107.put(var8.buffer, 0, var8.index); + this.aByteBuffer2107.flip(); + } + + } + + final void method2282(LDIndexedSprite var1, int var2, int var3) { + byte[] var4 = var1.raster; + int var5 = var1.width; + int var6 = var2 * 128 + 1 + (var3 * 128 + 1) * var5; + int var7 = 0; + + int var8; + int var9; + for (var8 = -128; var8 < 0; ++var8) { + var7 = (var7 << 8) - var7; + + for (var9 = -128; var9 < 0; ++var9) { + if (var4[var6++] != 0) { + ++var7; + } + } + + var6 += var5 - 128; + } + + if (var7 != this.anInt2112) { + this.anInt2112 = var7; + var6 = var2 * 128 + 1 + (var3 * 128 + 1) * var5; + var8 = 0; + + for (var9 = -128; var9 < 0; ++var9) { + for (int var10 = -128; var10 < 0; ++var10) { + if (var4[var6] == 0) { + int var11 = 0; + if (var4[var6 - 1] != 0) { + ++var11; + } + + if (var4[var6 + 1] != 0) { + ++var11; + } + + if (var4[var6 - var5] != 0) { + ++var11; + } + + if (var4[var6 + var5] != 0) { + ++var11; + } + + aByteArray2111[var8++] = (byte) (17 * var11); + } else { + aByteArray2111[var8++] = 68; + } + + ++var6; + } + + var6 += var5 - 128; + } + + GL var12 = HDToolKit.gl; + ByteBuffer var13 = ByteBuffer.wrap(aByteArray2111); + var13.limit(16384); + HDToolKit.bindTexture2D(this.anInt2108); + var12.glTexImage2D(3553, 0, 6406, 128, 128, 0, 6406, 5121, var13); + + } + } + + final void method2284() { + GL var1 = HDToolKit.gl; + HDToolKit.bindTexture2D(this.anInt2108); + if (this.aClass156_2110 == null) { + if (HDToolKit.supportVertexBufferObject) { + var1.glBindBufferARB('\u8892', 0); + } + + var1.glInterleavedArrays(10791, 20, this.aByteBuffer2109); + } else { + this.aClass156_2110.method2169(); + var1.glInterleavedArrays(10791, 20, 0L); + } + HDToolKit.aBoolean1798 = false; + + if (this.aClass156_2105 == null) { + if (HDToolKit.supportVertexBufferObject) { + var1.glBindBufferARB('\u8893', 0); + } + + var1.glDrawElements(4, 384, 5125, this.aByteBuffer2107); + } else { + this.aClass156_2105.method2171(); + var1.glDrawElements(4, 384, 5125, 0L); + } + + } + +} diff --git a/Client/src/main/java/org/runite/client/Class17.java b/Client/src/main/java/org/runite/client/Class17.java new file mode 100644 index 000000000..8b5d00b6b --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class17.java @@ -0,0 +1,213 @@ +package org.runite.client; + +final class Class17 { + + static Interface2 anInterface2_408; + static int anInt410; + static Class64 aClass64_413; + + static void method904(int var0, Entity var1) { + try { + if (var1.anInt2779 != 0) { + RenderAnimationDefinition var2 = var1.getRenderAnimationType(); + int var4; + int var5; + if (var1.anInt2772 != -1 && 32768 > var1.anInt2772) { + NPC var3 = NPC.npcs[var1.anInt2772]; + if (var3 != null) { + var5 = -var3.yAxis + var1.yAxis; + var4 = -var3.xAxis + var1.xAxis; + if (0 != var4 || 0 != var5) { + var1.anInt2806 = (int) (Math.atan2(var4, var5) * 325.949D) & 0x7FF; + } + } + } + + int var6; + int var9; + if (var1.anInt2772 >= 32768) { + var9 = -32768 + var1.anInt2772; + if (Class3_Sub1.localIndex == var9) { + var9 = 2047; + } + + Player var10 = Unsorted.players[var9]; + if (null != var10) { + var6 = -var10.yAxis + var1.yAxis; + var5 = -var10.xAxis + var1.xAxis; + if (var5 != 0 || var6 != 0) { + var1.anInt2806 = (int) (Math.atan2(var5, var6) * 325.949D) & 0x7FF; + } + } + } + + if ((0 != var1.anInt2786 || 0 != var1.anInt2762) && (var1.anInt2816 == 0 || var1.anInt2824 > 0)) { + var9 = var1.xAxis + -((-Class131.x1716 + (var1.anInt2786 - Class131.x1716)) * 64); + var4 = -((-Texture.y1152 + (var1.anInt2762 - Texture.y1152)) * 64) + var1.yAxis; + if (var9 != 0 || var4 != 0) { + var1.anInt2806 = (int) (Math.atan2(var9, var4) * 325.949D) & 0x7FF; + } + + var1.anInt2762 = 0; + var1.anInt2786 = 0; + } + + var9 = var1.anInt2806 - var1.anInt2785 & 0x7FF; + if (var9 == 0) { + var1.anInt2789 = 0; + var1.anInt2821 = 0; + } else if (var2.yaw_acceleration == 0) { + ++var1.anInt2789; + boolean var11; + if (var9 > 1024) { + var1.anInt2785 -= var1.anInt2779; + var11 = true; + if (var1.anInt2779 > var9 || var9 > -var1.anInt2779 + 2048) { + var1.anInt2785 = var1.anInt2806; + var11 = false; + } + + if (var1.anInt2764 == var2.stand_animation && (25 < var1.anInt2789 || var11)) { + if (var2.standing_ccw_turn == -1) { + var1.anInt2764 = var2.walk_animation; + } else { + var1.anInt2764 = var2.standing_ccw_turn; + } + } + } else { + var11 = true; + var1.anInt2785 += var1.anInt2779; + if (var1.anInt2779 > var9 || 2048 - var1.anInt2779 < var9) { + var11 = false; + var1.anInt2785 = var1.anInt2806; + } + + if (var2.stand_animation == var1.anInt2764 && (25 < var1.anInt2789 || var11)) { + if (-1 == var2.standing_cw_turn) { + var1.anInt2764 = var2.walk_animation; + } else { + var1.anInt2764 = var2.standing_cw_turn; + } + } + } + + var1.anInt2785 &= 2047; + } else { + if (var1.anInt2764 == var2.stand_animation && 25 < var1.anInt2789) { + if (var2.standing_cw_turn == -1) { + var1.anInt2764 = var2.walk_animation; + } else { + var1.anInt2764 = var2.standing_cw_turn; + } + } + + var4 = var1.anInt2806 << 5; + if (var1.anInt2808 != var4) { + var1.anInt2791 = 0; + var1.anInt2808 = var4; + var5 = -var1.anInt2780 + var4 & 65535; + var6 = var1.anInt2821 * var1.anInt2821 / (var2.yaw_acceleration * 2); + int var7; + if (var1.anInt2821 > 0 && var6 <= var5 && -var6 + var5 < 32768) { + var1.anInt2803 = var5 / 2; + var1.aBoolean2769 = true; + var7 = var2.yaw_max_speed * var2.yaw_max_speed / (var2.yaw_acceleration * 2); + if (32767 < var7) { + var7 = 32767; + } + + if (var7 < var1.anInt2803) { + var1.anInt2803 = -var7 + var5; + } + } else if (0 > var1.anInt2821 && var6 <= -var5 + 65536 && 65536 + -var5 + -var6 < 32768) { + var1.anInt2803 = (-var5 + 65536) / 2; + var1.aBoolean2769 = true; + var7 = var2.yaw_max_speed * var2.yaw_max_speed / (var2.yaw_acceleration * 2); + if (var7 > 32767) { + var7 = 32767; + } + + if (var7 < var1.anInt2803) { + var1.anInt2803 = 65536 - (var5 + var7); + } + } else { + var1.aBoolean2769 = false; + } + } + + if (var1.anInt2821 == 0) { + var5 = -var1.anInt2780 + var1.anInt2808 & 65535; + if (var5 < var2.yaw_acceleration) { + var1.anInt2780 = var1.anInt2808; + } else { + var1.anInt2791 = 0; + var6 = var2.yaw_max_speed * var2.yaw_max_speed / (2 * var2.yaw_acceleration); + var1.aBoolean2769 = true; + if (32767 < var6) { + var6 = 32767; + } + + if (var5 >= 32768) { + var1.anInt2821 = -var2.yaw_acceleration; + var1.anInt2803 = (65536 - var5) / 2; + if (var1.anInt2803 > var6) { + var1.anInt2803 = 65536 - (var5 + var6); + } + } else { + var1.anInt2821 = var2.yaw_acceleration; + var1.anInt2803 = var5 / 2; + if (var1.anInt2803 > var6) { + var1.anInt2803 = -var6 + var5; + } + } + } + } else if (var1.anInt2821 <= 0) { + if (var1.anInt2803 <= var1.anInt2791) { + var1.aBoolean2769 = false; + } + + if (!var1.aBoolean2769) { + var1.anInt2821 += var2.yaw_acceleration; + if (0 < var1.anInt2821) { + var1.anInt2821 = 0; + } + } else if (var1.anInt2821 > -var2.yaw_max_speed) { + var1.anInt2821 -= var2.yaw_acceleration; + } + } else { + if (var1.anInt2791 >= var1.anInt2803) { + var1.aBoolean2769 = false; + } + + if (!var1.aBoolean2769) { + var1.anInt2821 -= var2.yaw_acceleration; + if (var1.anInt2821 < 0) { + var1.anInt2821 = 0; + } + } else if (var1.anInt2821 < var2.yaw_max_speed) { + var1.anInt2821 += var2.yaw_acceleration; + } + } + + var1.anInt2780 += var1.anInt2821; + var1.anInt2780 &= 65535; + if (0 >= var1.anInt2821) { + var1.anInt2791 -= var1.anInt2821; + } else { + var1.anInt2791 += var1.anInt2821; + } + + var1.anInt2785 = var1.anInt2780 >> 5; + } + + if (var0 != 65536) { + method904(-93, null); + } + + } + } catch (RuntimeException var8) { + throw ClientErrorException.clientError(var8, "cm.A(" + var0 + ',' + (var1 != null ? "{...}" : "null") + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class18.java b/Client/src/main/java/org/runite/client/Class18.java new file mode 100644 index 000000000..d3d72409f --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class18.java @@ -0,0 +1,11 @@ +package org.runite.client; + +final class Class18 { + + short[] aShortArray416; + short[] aShortArray417; + short[] aShortArray418; + short[] aShortArray419; + + +} diff --git a/Client/src/main/java/org/runite/client/Class19.java b/Client/src/main/java/org/runite/client/Class19.java new file mode 100644 index 000000000..142519f09 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class19.java @@ -0,0 +1,18 @@ +package org.runite.client; + +final class Class19 { + + static int anInt433 = 0; + int anInt420; + GameObject aClass140_423; + int anInt424; + int anInt425; + int anInt426; + int anInt427; + long aLong428 = 0L; + GameObject aClass140_429; + int anInt430; + int anInt432; + + +} diff --git a/Client/src/main/java/org/runite/client/Class20.java b/Client/src/main/java/org/runite/client/Class20.java new file mode 100644 index 000000000..178b43fd9 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class20.java @@ -0,0 +1,48 @@ +package org.runite.client; + +final class Class20 { + + static short[][] aShortArrayArray435 = new short[][]{{(short) 6554, (short) 115, (short) 10304, (short) 28, (short) 5702, (short) 7756, (short) 5681, (short) 4510, (short) -31835, (short) 22437, (short) 2859, (short) -11339, (short) 16, (short) 5157, (short) 10446, (short) 3658, (short) -27314, (short) -21965, (short) 472, (short) 580, (short) 784, (short) 21966, (short) 28950, (short) -15697, (short) -14002}, {(short) 9104, (short) 10275, (short) 7595, (short) 3610, (short) 7975, (short) 8526, (short) 918, (short) -26734, (short) 24466, (short) 10145, (short) -6882, (short) 5027, (short) 1457, (short) 16565, (short) -30545, (short) 25486, (short) 24, (short) 5392, (short) 10429, (short) 3673, (short) -27335, (short) -21957, (short) 192, (short) 687, (short) 412, (short) 21821, (short) 28835, (short) -15460, (short) -14019}, new short[0], new short[0], new short[0]}; + static RSInterface aClass11_439; + + + static void method907(int var0, int var1, int var2, int var3, int var4, GameObject var5, int var6, long var7, boolean var9) { + if (var5 == null) { + } else { + int var10 = var1 - var4; + int var11 = var2 - var4; + int var12 = var1 + var4; + int var13 = var2 + var4; + if (var9) { + if (var6 > 640 && var6 < 1408) { + var13 += 128; + } + + if (var6 > 1152 && var6 < 1920) { + var12 += 128; + } + + if (var6 > 1664 || var6 < 384) { + var11 -= 128; + } + + if (var6 > 128 && var6 < 896) { + var10 -= 128; + } + } + + var10 /= 128; + var11 /= 128; + var12 /= 128; + var13 /= 128; + Scenery.method1189(var0, var10, var11, var12 - var10 + 1, var13 - var11 + 1, var1, var2, var3, var5, var6, true, var7); + } + } + + static void method909(RSInterface iface) { + if (Class3_Sub23.anInt2535 == iface.anInt204) { + Unsorted.aBooleanArray3674[iface.anInt292] = true; + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class21.java b/Client/src/main/java/org/runite/client/Class21.java new file mode 100644 index 000000000..6271e4f7d --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class21.java @@ -0,0 +1,169 @@ +package org.runite.client; + +import org.rs09.client.config.GameConfig; + + +public final class Class21 { + + static boolean aBoolean440 = false; + static int[] maskUpdateIndexes = new int[2048]; + static int sampleRate; + public static int anInt3537; + public static int anInt3552; + public static int anInt3395; + public static int anInt1462; + + + static void method912() { + try { + TextureOperation12.outgoingBuffer.index = 0; + Class7.anInt2166 = -1; + Class38_Sub1.aBoolean2615 = false; + Unsorted.incomingPacketLength = 0; + Class65.anInt987 = 0; + Unsorted.menuOptionCount = 0; + LinkableRSString.anInt2582 = -1; + Class161.anInt2028 = 0; + Class38_Sub1.anInt2617 = 0; + Class24.anInt469 = -1; + BufferedDataStream.incomingBuffer.index = 0; + AbstractSprite.anInt3699 = 0; + Unsorted.incomingOpcode = -1; + + int var1; + for (var1 = 0; Unsorted.players.length > var1; ++var1) { + if (null != Unsorted.players[var1]) { + Unsorted.players[var1].anInt2772 = -1; + } + } + + for (var1 = 0; NPC.npcs.length > var1; ++var1) { + if (NPC.npcs[var1] != null) { + NPC.npcs[var1].anInt2772 = -1; + } + } + + Class3_Sub28_Sub9.method580((byte) 80); + Class133.anInt1753 = 1; + Class117.method1719(30); + + for (var1 = 0; var1 < 100; ++var1) { + Unsorted.aBooleanArray3674[var1] = true; + } + + TextureOperation9.method204(); + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "dh.F(" + false + ')'); + } + } + + static Class118 method913() { + try { + try { + return (Class118) Class.forName(GameConfig.PACKAGE_NAME + ".Class118_Sub1").newInstance(); + } catch (Throwable var2) { + return null; + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "dh.C(" + ')'); + } + } + + static void method914(int interfaceId, int interfaceHash, int walkable) { + try { + Class3_Sub31 var4 = new Class3_Sub31(); + var4.anInt2603 = walkable; + var4.anInt2602 = interfaceId; + TextureOperation23.aHashTable_3208.put(interfaceHash, var4); + TextureOperation20.method232(interfaceId); + RSInterface var5 = Unsorted.getRSInterface(interfaceHash); + if (var5 == null) { + System.out.println("Invalid interface opened - [window=" + (interfaceHash >> 16) + ", child=" + (interfaceHash & 0xFF) + ", id=" + interfaceId + "]"); + } else { + Class20.method909(var5); + } + + if (null != TextureOperation27.aClass11_3087) { + Class20.method909(TextureOperation27.aClass11_3087); + TextureOperation27.aClass11_3087 = null; + } + + int var6 = Unsorted.menuOptionCount; + + int var7; + for (var7 = 0; var6 > var7; ++var7) { + if (Unsorted.method73(TextureOperation27.aShortArray3095[var7])) { + Class3_Sub25.method509(var7); + } + } + + if (1 == Unsorted.menuOptionCount) { + Class38_Sub1.aBoolean2615 = false; + method1340(anInt1462, anInt3552, anInt3395, anInt3537); + } else { + method1340(anInt1462, anInt3552, anInt3395, anInt3537); + var7 = FontType.bold.method682(RSString.parse(GameConfig.RCM_TITLE)); + + for (int var8 = 0; Unsorted.menuOptionCount > var8; ++var8) { + int var9 = FontType.bold.method682(Unsorted.method802(var8)); + if (var7 < var9) { + var7 = var9; + } + } + + anInt3552 = 8 + var7; + anInt3537 = 15 * Unsorted.menuOptionCount + (!Unsorted.aBoolean1951 ? 22 : 26); + } + + if (var5 != null) { + Unsorted.method2104(var5, false, 55); + } + + TextureOperation24.method226(interfaceId); + if (ConfigInventoryDefinition.anInt3655 != -1) { + Class3_Sub8.method124(6422 ^ 6509, 1, ConfigInventoryDefinition.anInt3655); + } + + } catch (RuntimeException var10) { + throw ClientErrorException.clientError(var10, "dh.D(" + 6422 + ',' + interfaceId + ',' + interfaceHash + ',' + walkable + ')'); + } + } + + static void method915(RSString var0) { + try { + int var2 = Class3_Sub28_Sub8.method576(var0); + if (-1 != var2) { + Unsorted.method565(Class119.aClass131_1624.xArray1727[var2], Class119.aClass131_1624.yArray1718[var2]); + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "dh.A(" + (var0 != null ? "{...}" : "null") + ',' + -1 + ')'); + } + } + + static Class146 method916() { + try { + + try { + return (Class146) Class.forName(GameConfig.PACKAGE_NAME + ".MouseWheel").newInstance(); + } catch (Throwable var2) { + return null; + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "dh.E(" + (byte) 15 + ')'); + } + } + + public static void method1340(int var0, int var1, int var3, int var4) { + try { + + for (int var5 = 0; var5 < Class3_Sub28_Sub3.anInt3557; ++var5) { + if (var0 < Class3_Sub28_Sub18.anIntArray3768[var5] + AudioChannel.anIntArray1969[var5] && AudioChannel.anIntArray1969[var5] < var1 + var0 && Entity.anIntArray2794[var5] + Player.anIntArray3954[var5] > var3 && Player.anIntArray3954[var5] < var3 - -var4) { + Unsorted.aBooleanArray3674[var5] = true; + } + } + + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "kf.I(" + var0 + ',' + var1 + ',' + (byte) -40 + ',' + var3 + ',' + var4 + ')'); + } + } +} diff --git a/Client/src/main/java/org/runite/client/Class22.java b/Client/src/main/java/org/runite/client/Class22.java new file mode 100644 index 000000000..50408ac2e --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class22.java @@ -0,0 +1,196 @@ +package org.runite.client; + +import org.rs09.client.rendering.opengl.enums.GLBeginMode; + +import javax.media.opengl.GL; +import java.nio.IntBuffer; + +public final class Class22 { + + static HDSprite aHDSprite_447 = null; + static int anInt448 = 0; + static int anInt449 = 0; + static int anInt451 = 0; + private static int anInt450 = 0; + + public static void method921() { + aHDSprite_447 = null; + } + + public static void resetClipping() { + anInt449 = 0; + anInt448 = 0; + anInt450 = HDToolKit.viewWidth; + anInt451 = HDToolKit.viewHeight; + GL var0 = HDToolKit.gl; + var0.glDisable(3089); + method921(); + } + + static void method926(int[] var0, int var1, int var2, int var3, int var4) { + HDToolKit.method1835(); + GL var5 = HDToolKit.gl; + var5.glRasterPos2i(var1, HDToolKit.viewHeight - var2); + var5.glPixelZoom(1.0F, -1.0F); + var5.glDisable(3042); + var5.glDisable(3008); + var5.glDrawPixels(var3, var4, '\u80e1', HDToolKit.aBoolean1790 ? '\u8367' : 5121, IntBuffer.wrap(var0)); + var5.glEnable(3008); + var5.glEnable(3042); + var5.glPixelZoom(1.0F, 1.0F); + } + + static void method928(int var0, int var1, int var2, int var3, int var4, int var5) { + HDToolKit.method1835(); + float var6 = (float) var0 + 0.3F; + float var7 = var6 + (float) (var2 - 1); + float var8 = (float) HDToolKit.viewHeight - ((float) var1 + 0.3F); + float var9 = var8 - (float) (var3 - 1); + GL var10 = HDToolKit.gl; + var10.glBegin(GLBeginMode.LINE_LOOP); + var10.glColor4ub((byte) (var4 >> 16), (byte) (var4 >> 8), (byte) var4, var5 > 255 ? -1 : (byte) var5); + var10.glVertex2f(var6, var8); + var10.glVertex2f(var6, var9); + var10.glVertex2f(var7, var9); + var10.glVertex2f(var7, var8); + var10.glEnd(); + } + + static void method929(int var0, int var1, int var2, int var3, int var4, int var5) { + int var6 = var2 - var0; + int var7 = var3 - var1; + int var8 = var6 >= 0 ? var6 : -var6; + int var9 = var7 >= 0 ? var7 : -var7; + int var10 = var8; + if (var8 < var9) { + var10 = var9; + } + + if (var10 != 0) { + int var11 = (var6 << 16) / var10; + int var12 = (var7 << 16) / var10; + if (var12 <= var11) { + var11 = -var11; + } else { + var12 = -var12; + } + + int var13 = var5 * var12 >> 17; + int var14 = var5 * var12 + 1 >> 17; + int var15 = var5 * var11 >> 17; + int var16 = var5 * var11 + 1 >> 17; + int var17 = var0 + var13; + int var18 = var0 - var14; + int var19 = var0 + var6 - var14; + int var20 = var0 + var6 + var13; + int var21 = var1 + var15; + int var22 = var1 - var16; + int var23 = var1 + var7 - var16; + int var24 = var1 + var7 + var15; + HDToolKit.method1835(); + GL var25 = HDToolKit.gl; + var25.glColor3ub((byte) (var4 >> 16), (byte) (var4 >> 8), (byte) var4); + var25.glBegin(GLBeginMode.TRIANGLE_FAN); + if (var12 <= var11) { + var25.glVertex2f((float) var20, (float) (HDToolKit.viewHeight - var24)); + var25.glVertex2f((float) var19, (float) (HDToolKit.viewHeight - var23)); + var25.glVertex2f((float) var18, (float) (HDToolKit.viewHeight - var22)); + var25.glVertex2f((float) var17, (float) (HDToolKit.viewHeight - var21)); + } else { + var25.glVertex2f((float) var17, (float) (HDToolKit.viewHeight - var21)); + var25.glVertex2f((float) var18, (float) (HDToolKit.viewHeight - var22)); + var25.glVertex2f((float) var19, (float) (HDToolKit.viewHeight - var23)); + var25.glVertex2f((float) var20, (float) (HDToolKit.viewHeight - var24)); + } + + var25.glEnd(); + } + } + + static void method931(int var0, int var1, int var2, int var3) { + if (anInt449 < var0) { + anInt449 = var0; + } + + if (anInt448 < var1) { + anInt448 = var1; + } + + if (anInt450 > var2) { + anInt450 = var2; + } + + if (anInt451 > var3) { + anInt451 = var3; + } + + GL var4 = HDToolKit.gl; + var4.glEnable(3089); + if (anInt449 <= anInt450 && anInt448 <= anInt451) { + var4.glScissor(anInt449, HDToolKit.viewHeight - anInt451, anInt450 - anInt449, anInt451 - anInt448); + } else { + var4.glScissor(0, 0, 0, 0); + } + + method921(); + } + + static void method932() { + HDToolKit.gl.glClear(16640); + } + + static void method933(int var0, int var1, int var2, int var3, int var4) { + HDToolKit.method1835(); + float var5 = (float) var0 + 0.3F; + float var6 = (float) var2 + 0.3F; + float var7 = (float) HDToolKit.viewHeight - ((float) var1 + 0.3F); + float var8 = (float) HDToolKit.viewHeight - ((float) var3 + 0.3F); + GL var9 = HDToolKit.gl; + var9.glBegin(GLBeginMode.LINE_LOOP); + var9.glColor3ub((byte) (var4 >> 16), (byte) (var4 >> 8), (byte) var4); + var9.glVertex2f(var5, var7); + var9.glVertex2f(var6, var8); + var9.glEnd(); + } + + public static void setClipping(int left, int top, int right, int bottom) { + if (left < 0) { + left = 0; + } + + if (top < 0) { + top = 0; + } + + if (right > HDToolKit.viewWidth) { + right = HDToolKit.viewWidth; + } + + if (bottom > HDToolKit.viewHeight) { + bottom = HDToolKit.viewHeight; + } + + anInt449 = left; + anInt448 = top; + anInt450 = right; + anInt451 = bottom; + GL var4 = HDToolKit.gl; + var4.glEnable(3089); + if (anInt449 <= anInt450 && anInt448 <= anInt451) { + var4.glScissor(anInt449, HDToolKit.viewHeight - anInt451, anInt450 - anInt449, anInt451 - anInt448); + } else { + var4.glScissor(0, 0, 0, 0); + } + + method921(); + } + + public static void method936(HDSprite var0) { + if (var0.height == anInt451 - anInt448) { + aHDSprite_447 = var0; + } else { + throw new IllegalArgumentException(); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class23.java b/Client/src/main/java/org/runite/client/Class23.java new file mode 100644 index 000000000..b0d161cd4 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class23.java @@ -0,0 +1,74 @@ +package org.runite.client; + +public final class Class23 { + + public static int canvasWidth; + static int anInt453 = 0; + static int anInt455; + static boolean[][] aBooleanArrayArray457; + + + static void method938(int var0, int var1, int var2, int var3, int var4, int var5, int var7, int var8) { + try { + int var9 = var2 - var7; + int var10 = var3 - var8; + int var11 = (-var1 + var0 << 16) / var9; + int var12 = (-var5 + var4 << 16) / var10; + Class136.method1814(var1, var3, var2, var12, var7, var11, var8, var5); + } catch (RuntimeException var13) { + throw ClientErrorException.clientError(var13, "dl.B(" + var0 + ',' + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + var5 + ',' + 1 + ',' + var7 + ',' + var8 + ')'); + } + } + + static DataBuffer method939() { + try { + DataBuffer var1 = new DataBuffer(34); + var1.writeByte(11); + var1.writeByte(Unsorted.anInt3625); + var1.writeByte(!Unsorted.aBoolean3665 ? 0 : 1); + var1.writeByte(Unsorted.aBoolean3604 ? 1 : 0); + var1.writeByte(KeyboardListener.aBoolean1905 ? 1 : 0); + var1.writeByte(Class25.aBoolean488 ? 1 : 0); + var1.writeByte(!RSInterface.aBoolean236 ? 0 : 1); + var1.writeByte(!WorldListEntry.aBoolean2623 ? 0 : 1); + var1.writeByte(Unsorted.aBoolean3275 ? 1 : 0); + var1.writeByte(!Class140_Sub6.aBoolean2910 ? 0 : 1); + var1.writeByte(Unsorted.anInt1137); + var1.writeByte(!Class106.aBoolean1441 ? 0 : 1); + var1.writeByte(Class128.aBoolean1685 ? 1 : 0); + var1.writeByte(Class38.aBoolean661 ? 1 : 0); + var1.writeByte(Class3_Sub28_Sub9.anInt3622); + var1.writeByte(!TextureOperation17.stereoSound ? 0 : 1); + var1.writeByte(AudioHandler.soundEffectVolume); + var1.writeByte(AudioHandler.musicVolume); + var1.writeByte(Sprites.ambientVolume); + var1.writeShort(TextureOperation.anInt2378); + var1.writeShort(Unsorted.anInt3071); + var1.writeByte(Class127_Sub1.method1757()); + var1.writeInt(Unsorted.anInt2148); + var1.writeByte(Unsorted.anInt2577); + var1.writeByte(Unsorted.aBoolean2146 ? 1 : 0); + var1.writeByte(!AudioThread.aBoolean346 ? 0 : 1); + var1.writeByte(Class3_Sub20.anInt2488); + var1.writeByte(Unsorted.aBoolean1080 ? 1 : 0); + var1.writeByte(Class163_Sub3.aBoolean3004 ? 1 : 0); + return var1; + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "dl.C(" + (byte) -116 + ')'); + } + } + + static void method940(int var0, int var1) { + try { + if (var0 >= 101) { + MouseListeningClass var2 = Unsorted.aClass149_4047; + synchronized (var2) { + Unsorted.anInt4045 = var1; + } + } + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "dl.D(" + var0 + ',' + var1 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class24.java b/Client/src/main/java/org/runite/client/Class24.java new file mode 100644 index 000000000..a34f0d71f --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class24.java @@ -0,0 +1,357 @@ +package org.runite.client; + +import java.util.Objects; +import java.util.Random; + +public final class Class24 { + + public static int anInt469 = 0; + static Random aRandom3088 = new Random(); + static int anInt467 = 0; + static int anInt472 = 0; + static CacheIndex modelsIndex_152; + private final int[] anIntArray475 = new int[]{-1, -1, -1, -1, -1}; + int anInt466 = -1; + boolean aBoolean476 = false; + private short[] aShortArray460; + private short[] aShortArray464; + private short[] aShortArray470; + private short[] aShortArray471; + private int[] anIntArray474; + + static boolean isValidObjectMapping(byte var0, int var1, int var2, byte[] var3) { + try { + boolean var5 = true; + int var7 = -1; + DataBuffer buffer = new DataBuffer(var3); + + if (buffer.buffer.length == 0) { +// System.out.println("No object mapping found!"); + return true; + } + while (true) { + if (buffer.index == buffer.buffer.length) { + return true; + } + int var8 = buffer.method773(); + if (0 == var8) { + return var5; + } + + int var9 = 0; + var7 += var8; + boolean var10 = false; + + while (true) { + int var11; + if (var10) { + var11 = buffer.getSmart(); + if (var11 == 0) { + break; + } + + buffer.readUnsignedByte(); + } else { + if (buffer.index == buffer.buffer.length) { + break; + } + var11 = buffer.getSmart(); + if (0 == var11) { + break; + } + + var9 += var11 + -1; + int var12 = 63 & var9; + int var13 = (4088 & var9) >> 6; + int var16 = var2 + var12; + int var15 = var1 + var13; + int var14 = buffer.readUnsignedByte() >> 2; + if (var15 > 0 && var16 > 0 && 103 > var15 && 103 > var16) { + ObjectDefinition var17 = ObjectDefinition.getObjectDefinition(var7); + if (var14 != 22 || KeyboardListener.aBoolean1905 || 0 != var17.SecondInt || var17.ClipType == 1 || var17.aBoolean1483) { + var10 = true; + if (!var17.hasModels()) { + var5 = false; + ++Class162.anInt2038; + } + } + } + } + } + } + } catch (RuntimeException var18) { + throw ClientErrorException.clientError(var18, "dm.A(" + var0 + ',' + var1 + ',' + var2 + ',' + (var3 != null ? "{...}" : "null") + ')'); + } + } + + static void method949(int var0, int var2, int var3, int var4) { + try { + int var6 = 0; + TextureOperation18.method282(Class38.anIntArrayArray663[var4], -var2 + var0, 100, var0 - -var2, var3); + int var8 = -var2; + int var7 = var2; + int var9 = -1; + + while (var7 > var6) { + ++var6; + var9 += 2; + var8 += var9; + if (var8 >= 0) { + --var7; + var8 -= var7 << 1; + int[] var10 = Class38.anIntArrayArray663[var4 - -var7]; + int[] var11 = Class38.anIntArrayArray663[var4 - var7]; + int var12 = var0 - -var6; + int var13 = -var6 + var0; + TextureOperation18.method282(var10, var13, 115, var12, var3); + TextureOperation18.method282(var11, var13, 114, var12, var3); + } + + int var16 = var7 + var0; + int var15 = -var7 + var0; + int[] var17 = Class38.anIntArrayArray663[var4 - -var6]; + int[] var18 = Class38.anIntArrayArray663[-var6 + var4]; + TextureOperation18.method282(var17, var15, -61, var16, var3); + TextureOperation18.method282(var18, var15, -93, var16, var3); + } + + } catch (RuntimeException var14) { + throw ClientErrorException.clientError(var14, "dm.I(" + var0 + ',' + (byte) 118 + ',' + var2 + ',' + var3 + ',' + var4 + ')'); + } + } + + static void method950(RSInterface var0, int var1, int var2, int var3) { + try { + if (2 <= Unsorted.menuOptionCount || Class164_Sub1.anInt3012 != 0 || GameObject.aBoolean1837) { + RSString var4 = method531(); + if (var0 == null) { + int var5 = FontType.bold.method683(var4, 4 + var3, var2 - -15, aRandom3088, Class38_Sub1.anInt2618); + Class21.method1340(4 + var3, FontType.bold.method682(var4) + var5, var2, 15); + } else { + Font var7 = var0.method868(Sprites.nameIconsSpriteArray); + if (null == var7) { + var7 = FontType.bold; + } + + var7.method702(var4, var3, var2, var0.width, var0.height, var0.anInt218, var0.anInt287, var0.anInt194, var0.anInt225, aRandom3088, Class38_Sub1.anInt2618, Player.anIntArray3951); + Class21.method1340(Player.anIntArray3951[0], Player.anIntArray3951[2], Player.anIntArray3951[1], Player.anIntArray3951[3]); + } + + } + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "dm.D(" + (var0 != null ? "{...}" : "null") + ',' + var1 + ',' + var2 + ',' + var3 + ')'); + } + } + + static void method951() { + try { + Class3_Sub28_Sub18.aBoolean3769 = false; + TextureOperation25.anInt3413 = 0; + Client.messageToDisplay = -3; + Class50.anInt820 = 0; + LoginHandler.loginStage = 1; + Class166.anInt2079 = 0; + Class3_Sub26.anInt2561 = -1; + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "dm.G(" + 0 + ')'); + } + } + + static RSString method531() { + RSString var1; + if (Class164_Sub1.anInt3012 == 1 && Unsorted.menuOptionCount < 2) { + var1 = RSString.stringCombiner(new RSString[]{TextCore.HasUse, TextCore.Spacer, RenderAnimationDefinition.aString_378, TextCore.aString_1724}); + } else if (GameObject.aBoolean1837 && 2 > Unsorted.menuOptionCount) { + var1 = RSString.stringCombiner(new RSString[]{Class3_Sub28_Sub9.aString_3621, TextCore.Spacer, TextCore.aString_676, TextCore.aString_1724}); + + } else if (ClientCommands.shiftClickEnabled && ObjectDefinition.aBooleanArray1490[81] && Unsorted.menuOptionCount > 2 && !ObjectDefinition.aBooleanArray1490[82]) { + for (Class3_Sub28_Sub1.counter = 2; Class3_Sub28_Sub1.counter < Unsorted.menuOptionCount; Class3_Sub28_Sub1.counter++) { + RSString option = (Unsorted.method802(Unsorted.menuOptionCount - Class3_Sub28_Sub1.counter)); + if (option.toString().contains("Drop") || option.toString().contains("Release")) { + ClientCommands.canDrop = true; + Class3_Sub28_Sub1.dropAction = Class3_Sub28_Sub1.counter; + break; + } else { + ClientCommands.canDrop = false; + } + } + if (ClientCommands.canDrop) { + var1 = Unsorted.method802(Unsorted.menuOptionCount - Class3_Sub28_Sub1.dropAction); + } else { + var1 = Unsorted.method802(Unsorted.menuOptionCount - 1); + } + } else { + var1 = Unsorted.method802(Unsorted.menuOptionCount - 1); + } + + if (Unsorted.menuOptionCount > 2) { + var1 = RSString.stringCombiner(new RSString[]{var1, Class1.aString_58, RSString.stringAnimator(Unsorted.menuOptionCount - 2), TextCore.HasMoreOptions}); + } + return var1; + } + + final Model_Sub1 method941() { + try { + int var3 = 0; + Model_Sub1[] var2 = new Model_Sub1[5]; + + for (int var4 = 0; var4 < 5; ++var4) { + if (this.anIntArray475[var4] != -1) { + var2[var3++] = Model_Sub1.method2015(modelsIndex_152, this.anIntArray475[var4]); + } + } + + Model_Sub1 var7 = new Model_Sub1(var2, var3); + int var5; + if (this.aShortArray464 != null) { + for (var5 = 0; this.aShortArray464.length > var5; ++var5) { + var7.method2016(this.aShortArray464[var5], this.aShortArray460[var5]); + } + } + + if (null != this.aShortArray471) { + for (var5 = 0; var5 < this.aShortArray471.length; ++var5) { + var7.method1998(this.aShortArray471[var5], this.aShortArray470[var5]); + } + } + + return var7; + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "dm.F(" + true + ')'); + } + } + + final boolean method942() { + try { + if (null == this.anIntArray474) { + return true; + } else { + boolean var2 = true; + + for (int var3 = 0; this.anIntArray474.length > var3; ++var3) { + if (!modelsIndex_152.method2129((byte) -90, 0, this.anIntArray474[var3])) { + var2 = false; + } + } + + return var2; + } + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "dm.J(" + 101 + ')'); + } + } + + private void method946(DataBuffer var2, int var3) { + try { + + if (var3 == 1) { + this.anInt466 = var2.readUnsignedByte(); + } else { + int var4; + int var5; + if (var3 == 2) { + var4 = var2.readUnsignedByte(); + this.anIntArray474 = new int[var4]; + + for (var5 = 0; var4 > var5; ++var5) { + this.anIntArray474[var5] = var2.readUnsignedShort(); + } + } else if (var3 == 3) { + this.aBoolean476 = true; + } else if (var3 == 40) { + var4 = var2.readUnsignedByte(); + this.aShortArray460 = new short[var4]; + this.aShortArray464 = new short[var4]; + + for (var5 = 0; var5 < var4; ++var5) { + this.aShortArray464[var5] = (short) var2.readUnsignedShort(); + this.aShortArray460[var5] = (short) var2.readUnsignedShort(); + } + } else if (var3 == 41) { + var4 = var2.readUnsignedByte(); + this.aShortArray471 = new short[var4]; + this.aShortArray470 = new short[var4]; + + for (var5 = 0; var5 < var4; ++var5) { + this.aShortArray471[var5] = (short) var2.readUnsignedShort(); + this.aShortArray470[var5] = (short) var2.readUnsignedShort(); + } + } else if (var3 >= 60 && var3 < 70) { + this.anIntArray475[-60 + var3] = var2.readUnsignedShort(); + } + } + + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "dm.K(" + (byte) -84 + ',' + (var2 != null ? "{...}" : "null") + ',' + var3 + ')'); + } + } + + final Model_Sub1 method947() { + try { + if (this.anIntArray474 == null) { + return null; + } else { + Model_Sub1[] var2 = new Model_Sub1[this.anIntArray474.length]; + + for (int var3 = 0; this.anIntArray474.length > var3; ++var3) { + var2[var3] = Model_Sub1.method2015(modelsIndex_152, this.anIntArray474[var3]); + } + Model_Sub1 var7; + if (var2.length == 1) { + var7 = var2[0]; + } else { + var7 = new Model_Sub1(var2, var2.length); + } + + int var5; + if (null != this.aShortArray464) { + for (var5 = 0; var5 < this.aShortArray464.length; ++var5) { + Objects.requireNonNull(var7).method2016(this.aShortArray464[var5], this.aShortArray460[var5]); + } + } + + if (this.aShortArray471 != null) { + for (var5 = 0; this.aShortArray471.length > var5; ++var5) { + Objects.requireNonNull(var7).method1998(this.aShortArray471[var5], this.aShortArray470[var5]); + } + } + + return var7; + } + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "dm.H(" + (byte) -26 + ')'); + } + } + + final boolean method948() { + try { + boolean var2 = true; + + for (int var3 = 0; var3 < 5; ++var3) { + if (-1 != this.anIntArray475[var3] && !modelsIndex_152.method2129((byte) 95, 0, this.anIntArray475[var3])) { + var2 = false; + } + } + + return !var2; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "dm.B(" + 18991 + ')'); + } + } + + final void method952(DataBuffer var2) { + try { + while (true) { + int var3 = var2.readUnsignedByte(); + if (0 == var3) { + return; + } + + this.method946(var2, var3); + } + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "dm.L(" + -31957 + ',' + (var2 != null ? "{...}" : "null") + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class25.java b/Client/src/main/java/org/runite/client/Class25.java new file mode 100644 index 000000000..2e9bbe55b --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class25.java @@ -0,0 +1,125 @@ +package org.runite.client; + +import org.rs09.client.data.NodeCache; + +final class Class25 { + + static NodeCache aClass47_480 = new NodeCache(16); + static boolean aBoolean488 = true; + static int anInt491 = 0; + static int anInt497; + static int[][] anIntArrayArray499 = new int[][]{new int[0], {128, 0, 128, 128, 0, 128}, {0, 0, 128, 0, 128, 128, 64, 128}, {0, 128, 0, 0, 128, 0, 64, 128}, {0, 0, 64, 128, 0, 128}, {128, 128, 64, 128, 128, 0}, {64, 0, 128, 0, 128, 128, 64, 128}, {128, 0, 128, 128, 0, 128, 0, 64, 64, 0}, {0, 0, 64, 0, 0, 64}, {0, 0, 128, 0, 128, 128, 64, 96, 32, 64}, {0, 128, 0, 0, 32, 64, 64, 96, 128, 128}, {0, 128, 0, 0, 32, 32, 96, 32, 128, 0, 128, 128}}; + int anInt478; + GameObject aClass140_479; + int anInt481; + int anInt482; + int anInt483; + int anInt484; + int anInt487; + int anInt489; + int anInt490; + int anInt493; + int anInt495; + int anInt496; + long aLong498 = 0L; + + static void method955(int[][] var0, boolean var1, int var2, Class3_Sub11 var3, int[] var4, int var5, int var6, int var7, boolean var8, float[][] var9, boolean var10, int var11, float[][] var12, int var13, int var14, int var15, boolean var16, int[][] var17, float[][] var18, byte var19, int var20, boolean[] var21) { + try { + int var22 = (var2 << 8) + (var1 ? 255 : 0); + int var24 = (!var8 ? 0 : 255) + (var15 << 8); + int[] var26 = new int[var4.length / var11]; + int var25 = (var10 ? 255 : 0) + (var14 << 8); + int var23 = (var20 << 8) + (!var16 ? 0 : 255); + + for (int var27 = 0; var26.length > var27; ++var27) { + int var28 = var4[var27 + var27]; + int[][] var30 = null != var0 && var21 != null && var21[var27] ? var0 : var17; + int var29 = var4[var27 + var27 - -1]; + var26[var27] = Class121.method1734(var25, (float) var13, var22, var23, var0, var30, var7, var18, var24, (byte) -116, var19, false, var3, var9, var5, var28, var12, var29); + } + + var3.method150(var6, var7, var5, var26, null, false); + } catch (RuntimeException var31) { + throw ClientErrorException.clientError(var31, "ec.F(" + (var0 != null ? "{...}" : "null") + ',' + var1 + ',' + var2 + ',' + (var3 != null ? "{...}" : "null") + ',' + (var4 != null ? "{...}" : "null") + ',' + var5 + ',' + var6 + ',' + var7 + ',' + var8 + ',' + (var9 != null ? "{...}" : "null") + ',' + var10 + ',' + var11 + ',' + (var12 != null ? "{...}" : "null") + ',' + var13 + ',' + var14 + ',' + var15 + ',' + var16 + ',' + (var17 != null ? "{...}" : "null") + ',' + (var18 != null ? "{...}" : "null") + ',' + var19 + ',' + var20 + ',' + (var21 != null ? "{...}" : "null") + ')'); + } + } + + static void method956(Object[] var0, int var1, int[] var2, int var3, int var4) { + try { + if (var4 < var1) { + int var5 = (var4 + var1) / 2; + int var7 = var2[var5]; + int var6 = var4; + var2[var5] = var2[var1]; + var2[var1] = var7; + Object var8 = var0[var5]; + var0[var5] = var0[var1]; + var0[var1] = var8; + + for (int var9 = var4; var1 > var9; ++var9) { + if (var2[var9] < (var9 & 1) + var7) { + int var10 = var2[var9]; + var2[var9] = var2[var6]; + var2[var6] = var10; + Object var11 = var0[var9]; + var0[var9] = var0[var6]; + var0[var6++] = var11; + } + } + + var2[var1] = var2[var6]; + var2[var6] = var7; + var0[var1] = var0[var6]; + var0[var6] = var8; + method956(var0, var6 - 1, var2, 47, var4); + method956(var0, var1, var2, 100, 1 + var6); + } + + if (var3 < 16) { + method955(null, true, 94, null, null, -50, -107, -51, false, null, true, 73, null, -92, -7, -23, true, null, null, (byte) 52, 41, null); + } + + } catch (RuntimeException var12) { + throw ClientErrorException.clientError(var12, "ec.G(" + (var0 != null ? "{...}" : "null") + ',' + var1 + ',' + (var2 != null ? "{...}" : "null") + ',' + var3 + ',' + var4 + ')'); + } + } + + static void method957(boolean var1) { + try { + Unsorted.aBoolean3665 = var1; + Unsorted.aBoolean742 = !NPC.isHighDetail(42); + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "ec.C(" + 96 + ',' + var1 + ')'); + } + } + + static void method958(byte var0) { + try { + if (GameObject.aBoolean1837) { + RSInterface var1 = AbstractSprite.method638(BufferedDataStream.anInt872, RSInterface.anInt278); + if (null != var1 && var1.anObjectArray303 != null) { + CS2Script var3 = new CS2Script(); + var3.arguments = var1.anObjectArray303; + var3.aClass11_2449 = var1; + Class43.method1065(var3); + } + + GameObject.aBoolean1837 = false; + Class3_Sub28_Sub5.anInt3590 = -1; + Class20.method909(var1); + } + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "ec.E(" + var0 + ')'); + } + } + + static void method959() { + try { + VarpHelpers.varbitLookup.clear(); + + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "ec.B(" + 0 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class27.java b/Client/src/main/java/org/runite/client/Class27.java new file mode 100644 index 000000000..8a22a1a27 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class27.java @@ -0,0 +1,25 @@ +package org.runite.client; + +import org.rs09.client.data.ReferenceCache; + +final class Class27 { + + static int[] anIntArray510 = new int[]{768, 1024, 1280, 512, 1536, 256, 0, 1792}; + static ReferenceCache aReferenceCache_511 = new ReferenceCache(30); + static int[] anIntArray512 = new int[500]; + static int anInt515 = -1; + static int anInt517 = 0; + static SoftwareSprite aSoftwareSprite_518; + static Class157 resampler; + + static RSInterface aClass11_526 = null; + + static int method961() { + try { + return Class23.anInt453 == 0 ? 0 : Unsorted.anShaderInterfaceArray70[Class23.anInt453].method24(); + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "ef.B(" + 1536 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class29.java b/Client/src/main/java/org/runite/client/Class29.java new file mode 100644 index 000000000..06f5c2138 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class29.java @@ -0,0 +1,189 @@ +package org.runite.client; + +final class Class29 { + + static boolean aBoolean554 = false; + static CacheIndex npcConfigIndex_557; + static int[][][] anIntArrayArrayArray558; + static int anInt561 = 0; + int anInt556 = 0; + + static void method968(int var0) { + try { + int[] var1 = new int[TextureOperation39.itemDefinitionSize]; + int var2 = 0; + + int var3; + for (var3 = 0; TextureOperation39.itemDefinitionSize > var3; ++var3) { + ItemDefinition var4 = ItemDefinition.getItemDefinition(var3); + if (var4.maleEquip1 >= 0 || var4.anInt761 >= 0) { + var1[var2++] = var3; + } + } + + Class75_Sub4.anIntArray2664 = new int[var2]; + + + for (var3 = 0; var3 < var2; ++var3) { + Class75_Sub4.anIntArray2664[var3] = var1[var3]; + } + + if (var0 != 128) { + method968(19); + } + + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "eh.A(" + var0 + ')'); + } + } + + static void method971(int var0, int[][] var1, float[][] var2, int var3, float[][] var4, int var5, byte var6, int var7, int var8, boolean var10, byte var11, int var12, float[][] var13, int var14, Class3_Sub11 var15) { + try { + int var16 = 255 + (var0 << 8); + int var17 = (var5 << 8) - -255; + int var18 = (var8 << 8) - -255; + int var19 = (var14 << 8) - -255; + int[] var20 = Class134.anIntArrayArray1763[var11]; + int[] var22 = new int[var20.length >> 1]; + + int var23; + for (var23 = 0; var23 < var22.length; ++var23) { + var22[var23] = Class121.method1734(var19, 0.0F, var16, var17, null, var1, var3, var13, var18, (byte) -125, var6, false, var15, var2, var12, var20[var23 + var23], var4, var20[var23 + var23 + 1]); + } + + int[] var21 = null; + if (var10) { + int var24; + if (1 == var11) { + var23 = Class121.method1734(var19, 0.0F, var16, var17, null, var1, var3, var13, var18, (byte) -122, var6, true, var15, var2, var12, 64, var4, 128); + var24 = Class121.method1734(var19, 0.0F, var16, var17, null, var1, var3, var13, var18, (byte) -114, var6, true, var15, var2, var12, 128, var4, 64); + var21 = new int[]{var24, var23, var22[2], var23, var22[0], var22[2]}; + } else if (2 == var11) { + var21 = new int[6]; + var23 = Class121.method1734(var19, 0.0F, var16, var17, null, var1, var3, var13, var18, (byte) -121, var6, true, var15, var2, var12, 128, var4, 128); + var24 = Class121.method1734(var19, 0.0F, var16, var17, null, var1, var3, var13, var18, (byte) -128, var6, true, var15, var2, var12, 64, var4, 0); + var21[2] = var23; + var21[0] = var22[0]; + var21[5] = var22[0]; + var21[3] = var23; + var21[1] = var24; + var21[4] = var22[1]; + } else if (var11 == 3) { + var21 = new int[6]; + var23 = Class121.method1734(var19, 0.0F, var16, var17, null, var1, var3, var13, var18, (byte) -114, var6, true, var15, var2, var12, 0, var4, 128); + var24 = Class121.method1734(var19, 0.0F, var16, var17, null, var1, var3, var13, var18, (byte) -115, var6, true, var15, var2, var12, 64, var4, 0); + var21[4] = var24; + var21[1] = var22[1]; + var21[0] = var22[2]; + var21[3] = var23; + var21[2] = var23; + var21[5] = var22[2]; + } else if (var11 == 4) { + var21 = new int[3]; + var23 = Class121.method1734(var19, 0.0F, var16, var17, null, var1, var3, var13, var18, (byte) -115, var6, true, var15, var2, var12, 0, var4, 128); + var21[0] = var22[3]; + var21[2] = var22[0]; + var21[1] = var23; + } else if (var11 == 5) { + var21 = new int[3]; + var23 = Class121.method1734(var19, 0.0F, var16, var17, null, var1, var3, var13, var18, (byte) -112, var6, true, var15, var2, var12, 128, var4, 128); + var21[1] = var23; + var21[0] = var22[2]; + var21[2] = var22[3]; + } else if (var11 == 6) { + var21 = new int[6]; + var23 = Class121.method1734(var19, 0.0F, var16, var17, null, var1, var3, var13, var18, (byte) -123, var6, true, var15, var2, var12, 128, var4, 0); + var24 = Class121.method1734(var19, 0.0F, var16, var17, null, var1, var3, var13, var18, (byte) -115, var6, true, var15, var2, var12, 128, var4, 128); + var21[1] = var23; + var21[0] = var22[3]; + var21[2] = var24; + var21[4] = var22[0]; + var21[3] = var24; + var21[5] = var22[3]; + } else if (var11 == 7) { + var21 = new int[6]; + var23 = Class121.method1734(var19, 0.0F, var16, var17, null, var1, var3, var13, var18, (byte) -126, var6, true, var15, var2, var12, 0, var4, 128); + var24 = Class121.method1734(var19, 0.0F, var16, var17, null, var1, var3, var13, var18, (byte) -117, var6, true, var15, var2, var12, 128, var4, 0); + var21[3] = var23; + var21[2] = var23; + var21[0] = var22[1]; + var21[4] = var22[2]; + var21[1] = var24; + var21[5] = var22[1]; + } else if (var11 == 8) { + var21 = new int[3]; + var23 = Class121.method1734(var19, 0.0F, var16, var17, null, var1, var3, var13, var18, (byte) -117, var6, true, var15, var2, var12, 0, var4, 0); + var21[2] = var22[4]; + var21[0] = var22[3]; + var21[1] = var23; + } else if (var11 == 9) { + var23 = Class121.method1734(var19, 0.0F, var16, var17, null, var1, var3, var13, var18, (byte) -118, var6, true, var15, var2, var12, 128, var4, 64); + var24 = Class121.method1734(var19, 0.0F, var16, var17, null, var1, var3, var13, var18, (byte) -121, var6, true, var15, var2, var12, 96, var4, 32); + int var25 = Class121.method1734(var19, 0.0F, var16, var17, null, var1, var3, var13, var18, (byte) -120, var6, true, var15, var2, var12, 64, var4, 0); + var21 = new int[]{var24, var23, var22[4], var24, var22[4], var22[3], var24, var22[3], var22[2], var24, var22[2], var22[1], var24, var22[1], var25}; + } else if (10 == var11) { + var21 = new int[9]; + var23 = Class121.method1734(var19, 0.0F, var16, var17, null, var1, var3, var13, var18, (byte) -120, var6, true, var15, var2, var12, 0, var4, 128); + var21[0] = var22[2]; + var21[8] = var22[0]; + var21[1] = var23; + var21[4] = var23; + var21[2] = var22[3]; + var21[7] = var23; + var21[3] = var22[3]; + var21[5] = var22[4]; + var21[6] = var22[4]; + } else if (var11 == 11) { + var21 = new int[12]; + var23 = Class121.method1734(var19, 0.0F, var16, var17, null, var1, var3, var13, var18, (byte) -119, var6, true, var15, var2, var12, 0, var4, 64); + var24 = Class121.method1734(var19, 0.0F, var16, var17, null, var1, var3, var13, var18, (byte) -121, var6, true, var15, var2, var12, 128, var4, 64); + var21[5] = var23; + var21[1] = var23; + var21[8] = var23; + var21[0] = var22[3]; + var21[2] = var22[0]; + var21[11] = var24; + var21[6] = var22[2]; + var21[7] = var24; + var21[10] = var22[1]; + var21[3] = var22[3]; + var21[4] = var22[2]; + var21[9] = var22[2]; + } + } + + var15.method150(var7, var3, var12, var22, var21, false); + } catch (RuntimeException var26) { + throw ClientErrorException.clientError(var26, "eh.C(" + var0 + ',' + (var1 != null ? "{...}" : "null") + ',' + (var2 != null ? "{...}" : "null") + ',' + var3 + ',' + (var4 != null ? "{...}" : "null") + ',' + var5 + ',' + var6 + ',' + var7 + ',' + var8 + ',' + (byte) 88 + ',' + var10 + ',' + var11 + ',' + var12 + ',' + (var13 != null ? "{...}" : "null") + ',' + var14 + ',' + (var15 != null ? "{...}" : "null") + ')'); + } + } + + final void method970(DataBuffer var2) { + try { + while (true) { + int var3 = var2.readUnsignedByte(); + if (0 == var3) { + + return; + } + + this.method972(var2, var3); + } + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "eh.B(" + -20638 + ',' + (var2 != null ? "{...}" : "null") + ')'); + } + } + + private void method972(DataBuffer var1, int var3) { + try { + + if (var3 == 5) { + this.anInt556 = var1.readUnsignedShort(); + } + + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "eh.F(" + (var1 != null ? "{...}" : "null") + ',' + (byte) -117 + ',' + var3 + ')'); + } + } + +} \ No newline at end of file diff --git a/Client/src/main/java/org/runite/client/Class30.java b/Client/src/main/java/org/runite/client/Class30.java new file mode 100644 index 000000000..9bd5d4aad --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class30.java @@ -0,0 +1,363 @@ +package org.runite.client; + +import org.rs09.client.util.ArrayUtils; + +import java.io.EOFException; +import java.io.File; +import java.io.IOException; + +final class Class30 { + + static int[] anIntArray574 = new int[14]; + static float aFloat578; + static boolean loadedWorldList = false; + private final byte[] aByteArray564; + private final byte[] aByteArray572; + private final RandomAccessFileWrapper aRandomAccessFileWrapper_573; + private long aLong563; + private int anInt566 = 0; + private long aLong568; + private long aLong569; + private long aLong570; + private long aLong571 = -1L; + private int anInt575; + private long aLong576 = -1L; + + + Class30(RandomAccessFileWrapper var1, int var2) throws IOException { + try { + this.aRandomAccessFileWrapper_573 = var1; + this.aLong568 = this.aLong563 = var1.getLength(); + this.aByteArray572 = new byte[0]; + this.aByteArray564 = new byte[var2]; + this.aLong569 = 0L; + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "en.(" + (var1 != null ? "{...}" : "null") + ',' + var2 + ',' + 0 + ')'); + } + } + + static void method979(int var0, int var1, int var2) { + try { + RSString var4 = RSString.stringCombiner(new RSString[]{TextCore.aString_853, RSString.stringAnimator(var2), RSString.parse(")1"), RSString.stringAnimator(var0 >> 6), RSString.parse(")1"), RSString.stringAnimator(var1 >> 6), RSString.parse(")1"), RSString.stringAnimator(var0 & 63), RSString.parse(")1"), RSString.stringAnimator(63 & var1)}); + + ClientCommands.ClientCommands(var4); + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "en.I(" + var0 + ',' + var1 + ',' + var2 + ',' + (byte) -4 + ')'); + } + } + + private void method975(byte var1) throws IOException { + try { + if (-1L != this.aLong571) { + if (this.aLong571 != this.aLong570) { + this.aRandomAccessFileWrapper_573.seek(this.aLong571); + this.aLong570 = this.aLong571; + } + + this.aRandomAccessFileWrapper_573.write(this.aByteArray572, this.anInt566, 0); + long var3 = -1L; + if (this.aLong571 >= this.aLong576 && this.aLong571 < this.aLong576 + (long) this.anInt575) { + var3 = this.aLong571; + } else if (this.aLong571 <= this.aLong576 && this.aLong571 - -((long) this.anInt566) > this.aLong576) { + var3 = this.aLong576; + } + + this.aLong570 += this.anInt566; + if (this.aLong563 < this.aLong570) { + this.aLong563 = this.aLong570; + } + + long var5 = -1L; + if (this.aLong576 < this.aLong571 - -((long) this.anInt566) && (long) this.anInt575 + this.aLong576 >= (long) this.anInt566 + this.aLong571) { + var5 = this.aLong571 - -((long) this.anInt566); + } else if (this.aLong571 < this.aLong576 - -((long) this.anInt575) && (long) this.anInt566 + this.aLong571 >= (long) this.anInt575 + this.aLong576) { + var5 = (long) this.anInt575 + this.aLong576; + } + + if (-1L < var3 && var3 < var5) { + int var7 = (int) (-var3 + var5); + ArrayUtils.arraycopy(this.aByteArray572, (int) (var3 - this.aLong571), this.aByteArray564, (int) (var3 + -this.aLong576), var7); + } + + this.anInt566 = 0; + this.aLong571 = -1L; + } + + } catch (RuntimeException var8) { + throw ClientErrorException.clientError(var8, "en.C(" + var1 + ')'); + } + } + + final long method976(int var1) { + try { + if (var1 != 0) { + this.method976(19); + } + + return this.aLong568; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "en.J(" + var1 + ')'); + } + } + + private File method977() { + try { + + return this.aRandomAccessFileWrapper_573.getPath(); + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "en.D(" + 281669816 + ')'); + } + } + + final void method978(int var1, byte[] var2, int var3) throws IOException { + try { + try { + if (var1 - -var3 > var2.length) { + throw new ArrayIndexOutOfBoundsException(var3 + var1 - var2.length); + } + + if (-1L != this.aLong571 && this.aLong569 >= this.aLong571 && (long) this.anInt566 + this.aLong571 >= (long) var3 + this.aLong569) { + ArrayUtils.arraycopy(this.aByteArray572, (int) (-this.aLong571 + this.aLong569), var2, var1, var3); + this.aLong569 += var3; + return; + } + + long var5 = this.aLong569; + int var8 = var3; + int var9; + if (this.aLong576 <= this.aLong569 && this.aLong576 + (long) this.anInt575 > this.aLong569) { + var9 = (int) ((long) this.anInt575 - this.aLong569 + this.aLong576); + if (var3 < var9) { + var9 = var3; + } + + ArrayUtils.arraycopy(this.aByteArray564, (int) (this.aLong569 - this.aLong576), var2, var1, var9); + var1 += var9; + var3 -= var9; + this.aLong569 += var9; + } + + if (var3 > this.aByteArray564.length) { + this.aRandomAccessFileWrapper_573.seek(this.aLong569); + + for (this.aLong570 = this.aLong569; 0 < var3; this.aLong569 += var9) { + var9 = this.aRandomAccessFileWrapper_573.read(var2, var1, var3, 0); + if (var9 == -1) { + break; + } + + this.aLong570 += var9; + var3 -= var9; + var1 += var9; + } + } else if (var3 > 0) { + this.method981(); + var9 = var3; + if (var3 > this.anInt575) { + var9 = this.anInt575; + } + + ArrayUtils.arraycopy(this.aByteArray564, 0, var2, var1, var9); + var3 -= var9; + var1 += var9; + this.aLong569 += var9; + } + + if (-1L != this.aLong571) { + if (this.aLong569 < this.aLong571 && var3 > 0) { + var9 = (int) (-this.aLong569 + this.aLong571) + var1; + if (var9 > var1 - -var3) { + var9 = var1 + var3; + } + + while (var1 < var9) { + var2[var1++] = 0; + ++this.aLong569; + --var3; + } + } + + long var16 = -1L; + long var11 = -1L; + if ((long) this.anInt566 + this.aLong571 > var5 && (long) var8 + var5 >= (long) this.anInt566 + this.aLong571) { + var11 = (long) this.anInt566 + this.aLong571; + } else if ((long) var8 + var5 > this.aLong571 && (long) var8 + var5 <= (long) this.anInt566 + this.aLong571) { + var11 = (long) var8 + var5; + } + + if (this.aLong571 >= var5 && this.aLong571 < var5 - -((long) var8)) { + var16 = this.aLong571; + } else if (this.aLong571 <= var5 && var5 < (long) this.anInt566 + this.aLong571) { + var16 = var5; + } + + if (-1L < var16 && var11 > var16) { + int var13 = (int) (var11 + -var16); + ArrayUtils.arraycopy(this.aByteArray572, (int) (var16 + -this.aLong571), var2, (int) (var16 + -var5) + var1, var13); + if (this.aLong569 < var11) { + var3 = (int) ((long) var3 - (-this.aLong569 + var11)); + this.aLong569 = var11; + } + } + } + } catch (IOException var14) { + this.aLong570 = -1L; + throw var14; + } + + if (0 < var3) { + throw new EOFException(); + } + } catch (RuntimeException var15) { + throw ClientErrorException.clientError(var15, "en.F(" + var1 + ',' + (var2 != null ? "{...}" : "null") + ',' + var3 + ',' + 0 + ')'); + } + } + + final void method980() throws IOException { + try { + this.method975((byte) -75); + this.aRandomAccessFileWrapper_573.close(); + + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "en.K(" + false + ')'); + } + } + + private void method981() throws IOException { + try { + this.anInt575 = 0; + + if (this.aLong570 != this.aLong569) { + this.aRandomAccessFileWrapper_573.seek(this.aLong569); + this.aLong570 = this.aLong569; + } + + int var3; + for (this.aLong576 = this.aLong569; this.aByteArray564.length > this.anInt575; this.anInt575 += var3) { + int var2 = this.aByteArray564.length + -this.anInt575; + if (var2 > 200000000) { + var2 = 200000000; + } + + var3 = this.aRandomAccessFileWrapper_573.read(this.aByteArray564, this.anInt575, var2, 0); + if (var3 == -1) { + break; + } + + this.aLong570 += var3; + } + + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "en.A(" + 4393 + ')'); + } + } + + final void method982(byte[] var2) throws IOException { + try { + + this.method978(0, var2, var2.length); + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "en.B(" + false + ',' + (var2 != null ? "{...}" : "null") + ')'); + } + } + + final void method983(byte[] var1, int var2, int var3, int var4) throws IOException { + try { + try { + if ((long) var4 + this.aLong569 > this.aLong568) { + this.aLong568 = (long) var4 + this.aLong569; + } + + if (this.aLong571 != -1 && (this.aLong571 > this.aLong569 || (long) this.anInt566 + this.aLong571 < this.aLong569)) { + this.method975((byte) 124); + } + + if (this.aLong571 != -1 && (long) this.aByteArray572.length + this.aLong571 < (long) var4 + this.aLong569) { + int var5 = (int) ((long) this.aByteArray572.length - this.aLong569 + this.aLong571); + var4 -= var5; + ArrayUtils.arraycopy(var1, var2, this.aByteArray572, (int) (this.aLong569 + -this.aLong571), var5); + this.aLong569 += var5; + this.anInt566 = this.aByteArray572.length; + this.method975((byte) 93); + var2 += var5; + } + + if (var4 > this.aByteArray572.length) { + if (this.aLong570 != this.aLong569) { + this.aRandomAccessFileWrapper_573.seek(this.aLong569); + this.aLong570 = this.aLong569; + } + + this.aRandomAccessFileWrapper_573.write(var1, var4, var2); + long var12 = -1L; + if (this.aLong576 <= this.aLong569 && this.aLong569 < (long) this.anInt575 + this.aLong576) { + var12 = this.aLong569; + } else if (this.aLong576 >= this.aLong569 && this.aLong576 < (long) var4 + this.aLong569) { + var12 = this.aLong576; + } + + this.aLong570 += var4; + long var7 = -1L; + if (this.aLong563 < this.aLong570) { + this.aLong563 = this.aLong570; + } + + if (this.aLong569 + (long) var4 > this.aLong576 && this.aLong576 - -((long) this.anInt575) >= this.aLong569 - -((long) var4)) { + var7 = (long) var4 + this.aLong569; + } else if (this.aLong569 < this.aLong576 + (long) this.anInt575 && this.aLong569 + (long) var4 >= (long) this.anInt575 + this.aLong576) { + var7 = (long) this.anInt575 + this.aLong576; + } + + if (var12 > -1 && var7 > var12) { + int var9 = (int) (-var12 + var7); + ArrayUtils.arraycopy(var1, (int) (-this.aLong569 + var12 + (long) var2), this.aByteArray564, (int) (-this.aLong576 + var12), var9); + } + + this.aLong569 += var4; + return; + } + + if (0 < var4) { + if (this.aLong571 == -1L) { + this.aLong571 = this.aLong569; + } + + ArrayUtils.arraycopy(var1, var2, this.aByteArray572, (int) (this.aLong569 + -this.aLong571), var4); + this.aLong569 += var4; + if (-this.aLong571 + this.aLong569 > (long) this.anInt566) { + this.anInt566 = (int) (-this.aLong571 + this.aLong569); + } + + return; + } + } catch (IOException var10) { + this.aLong570 = -1L; + throw var10; + } + + if (var3 != -903171152) { + this.aLong563 = -28L; + } + + } catch (RuntimeException var11) { + throw ClientErrorException.clientError(var11, "en.H(" + (var1 != null ? "{...}" : "null") + ',' + var2 + ',' + var3 + ',' + var4 + ')'); + } + } + + final void method984(int var1, long var2) throws IOException { + try { + if (var2 >= 0L) { + this.aLong569 = var2; + if (var1 > -6) { + this.aLong569 = 89L; + } + + } else { + throw new IOException("Invalid seek to " + var2 + " in file " + this.method977()); + } + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "en.E(" + var1 + ',' + var2 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class31.java b/Client/src/main/java/org/runite/client/Class31.java new file mode 100644 index 000000000..6f391cebd --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class31.java @@ -0,0 +1,130 @@ +package org.runite.client; + + +import org.rs09.client.LinkableInt; + +import javax.media.opengl.GL; + + +final class Class31 { + + private static final LinkedList A_LINKED_LIST___581 = new LinkedList(); + private static final LinkedList A_LINKED_LIST___586 = new LinkedList(); + private static final LinkedList A_LINKED_LIST___587 = new LinkedList(); + private static final LinkedList A_LINKED_LIST___588 = new LinkedList(); + private static final int[] anIntArray589 = new int[1000]; + static int anInt580 = 0; + static int anInt582 = 0; + static int memory2D = 0; + static int anInt585 = 0; + private static long aLong583 = 0L; + + static synchronized void method985(int var0, int var1, int var2) { + if (var2 == anInt582) { + LinkableInt var3 = new LinkableInt(var1); + var3.linkableKey = var0; + A_LINKED_LIST___587.pushBack(var3); + } + } + + static synchronized void method986(int var0, int var1) { + if (var1 == anInt582) { + LinkableInt var2 = new LinkableInt(); + var2.linkableKey = var0; + A_LINKED_LIST___588.pushBack(var2); + } + } + + static synchronized void method988() { + ++anInt582; + A_LINKED_LIST___581.clear(); + A_LINKED_LIST___586.clear(); + A_LINKED_LIST___587.clear(); + A_LINKED_LIST___588.clear(); + anInt585 = 0; + memory2D = 0; + anInt580 = 0; + } + + static synchronized void method989(int var0, int var1, int var2) { + if (var2 == anInt582) { + LinkableInt var3 = new LinkableInt(var1); + var3.linkableKey = var0; + A_LINKED_LIST___581.pushBack(var3); + } + } + + static synchronized void method990() { + GL var0 = HDToolKit.gl; + int var1 = 0; + + while (true) { + LinkableInt var2 = (LinkableInt) A_LINKED_LIST___581.method1220(); + if (var2 == null) { + if (var1 > 0) { + var0.glDeleteBuffersARB(var1, anIntArray589, 0); + var1 = 0; + } + + while (true) { + var2 = (LinkableInt) A_LINKED_LIST___586.method1220(); + if (var2 == null) { + while (true) { + var2 = (LinkableInt) A_LINKED_LIST___587.method1220(); + if (var2 == null) { + if (var1 > 0) { + var0.glDeleteTextures(var1, anIntArray589, 0); + } + + while (true) { + var2 = (LinkableInt) A_LINKED_LIST___588.method1220(); + if (var2 == null) { + if (anInt585 + memory2D + anInt580 > 100663296 && TimeUtils.time() > aLong583 + 60000L) { + System.gc(); + aLong583 = TimeUtils.time(); + } + + return; + } + + int var3 = (int) var2.linkableKey; + var0.glDeleteLists(var3, 1); + } + } + + anIntArray589[var1++] = (int) var2.linkableKey; + anInt580 -= var2.value; + if (var1 == 1000) { + var0.glDeleteTextures(var1, anIntArray589, 0); + var1 = 0; + } + } + } + + anIntArray589[var1++] = (int) var2.linkableKey; + memory2D -= var2.value; + if (var1 == 1000) { + var0.glDeleteTextures(var1, anIntArray589, 0); + var1 = 0; + } + } + } + + anIntArray589[var1++] = (int) var2.linkableKey; + anInt585 -= var2.value; + if (var1 == 1000) { + var0.glDeleteBuffersARB(var1, anIntArray589, 0); + var1 = 0; + } + } + } + + static synchronized void method991(int var0, int var1, int var2) { + if (var2 == anInt582) { + LinkableInt var3 = new LinkableInt(var1); + var3.linkableKey = var0; + A_LINKED_LIST___586.pushBack(var3); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class32.java b/Client/src/main/java/org/runite/client/Class32.java new file mode 100644 index 000000000..9095bbe9f --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class32.java @@ -0,0 +1,115 @@ +package org.runite.client; + +final class Class32 { + + static int anInt590 = -1; + static int anInt1744 = 0; + + + static RSString method992(DataBuffer var0) { + try { + + return GroundItem.method2033(var0); + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "fc.C(" + (var0 != null ? "{...}" : "null") + ',' + 29488 + ')'); + } + } + + static int method993(int var0, int var2) { + try { + int var3 = -128 + (Class65.method1234(4, var2 + '\ub135', var0 - -91923) + (Class65.method1234(2, var2 + 10294, '\u93bd' + var0) + -128 >> 1) - -(Class65.method1234(1, var2, var0) + -128 >> 2)); + var3 = 35 + (int) (0.3D * (double) var3); + if (var3 >= 10) { + if (var3 > 60) { + var3 = 60; + } + } else { + var3 = 10; + } + + return var3; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "fc.B(" + var0 + ',' + 125 + ',' + var2 + ')'); + } + } + + static void method995() { + int var0; + int var1; + int var2; + if (Unsorted.aTileDataArrayArrayArray4070 != null) { + for (var0 = 0; var0 < Unsorted.aTileDataArrayArrayArray4070.length; ++var0) { + for (var1 = 0; var1 < Unsorted.width1234; ++var1) { + for (var2 = 0; var2 < TextureOperation17.height3179; ++var2) { + Unsorted.aTileDataArrayArrayArray4070[var0][var1][var2] = null; + } + } + } + } + + Client.aClass3_Sub11ArrayArray2199 = null; + if (Class166.aTileDataArrayArrayArray2065 != null) { + for (var0 = 0; var0 < Class166.aTileDataArrayArrayArray2065.length; ++var0) { + for (var1 = 0; var1 < Unsorted.width1234; ++var1) { + for (var2 = 0; var2 < TextureOperation17.height3179; ++var2) { + Class166.aTileDataArrayArrayArray2065[var0][var1][var2] = null; + } + } + } + } + + TextureOperation32.aClass3_Sub11ArrayArray3346 = null; + Scenery.anInt2249 = 0; + if (Class3_Sub28_Sub8.aClass113Array3610 != null) { + } + + if (SequenceDefinition.aClass25Array1868 != null) { + for (var0 = 0; var0 < Unsorted.anInt3070; ++var0) { + SequenceDefinition.aClass25Array1868[var0] = null; + } + + Unsorted.anInt3070 = 0; + } + + if (Unsorted.aClass25Array4060 != null) { + for (var0 = 0; var0 < Unsorted.aClass25Array4060.length; ++var0) { + Unsorted.aClass25Array4060[var0] = null; + } + } + + } + + static void method996() { + try { + + KeyboardListener var1 = TextureOperation33.aClass148_3049; + synchronized (var1) { + Class3_Sub28_Sub9.anInt3620 = Class134.anInt1762; + ++TextureOperation29.anInt3398; + int var2; + if (KeyboardListener.anInt2384 < 0) { + for (var2 = 0; var2 < 112; ++var2) { + ObjectDefinition.aBooleanArray1490[var2] = false; + } + + KeyboardListener.anInt2384 = anInt1744; + } else { + while (KeyboardListener.anInt2384 != anInt1744) { + var2 = Unsorted.anIntArray2952[anInt1744]; + anInt1744 = 127 & 1 + anInt1744; + if (0 <= var2) { + ObjectDefinition.aBooleanArray1490[var2] = true; + } else { + ObjectDefinition.aBooleanArray1490[~var2] = false; + } + } + } + + Class134.anInt1762 = Class25.anInt491; + } + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "fc.E(" + -43 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class33.java b/Client/src/main/java/org/runite/client/Class33.java new file mode 100644 index 000000000..8df327484 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class33.java @@ -0,0 +1,355 @@ +package org.runite.client; + +import org.rs09.client.rendering.Toolkit; + +import java.awt.Font; +import java.awt.*; +import java.awt.image.PixelGrabber; + +final class Class33 { + + private static final String aString597 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!\"??$%^&*()-_=+[{]};:'@#~,<.>/?\\| " + '\u00c4' + '\u00cb' + '\u00cf' + '\u00d6' + '\u00dc' + '\u00e4' + '\u00eb' + '\u00ef' + '\u00f6' + '\u00fc' + '\u00ff' + '\u00df' + '\u00c1' + '\u00c0' + '\u00c9' + '\u00c8' + '\u00cd' + '\u00cc' + '\u00d3' + '\u00d2' + '\u00da' + '\u00d9' + '\u00e1' + '\u00e0' + '\u00e9' + '\u00e8' + '\u00ed' + '\u00ec' + '\u00f3' + '\u00f2' + '\u00fa' + '\u00f9' + '\u00c2' + '\u00ca' + '\u00ce' + '\u00d4' + '\u00db' + '\u00e2' + '\u00ea' + '\u00ee' + '\u00f4' + '\u00fb' + '\u00c6' + '\u00e6'; + private static final int anInt598 = aString597.length(); + private static final int[] anIntArray599 = new int[256]; + + static { + for (int var0 = 0; var0 < 256; ++var0) { + int var1 = aString597.indexOf(var0); + if (var1 == -1) { + var1 = 74; + } + + anIntArray599[var0] = var1 * 9; + } + + } + + private byte[] aByteArray594 = new byte[100000]; + private boolean aBoolean595; + private int anInt596; + + Class33(int fontSize, Component var3) { + this.anInt596 = anInt598 * 9; + this.aBoolean595 = false; + Font var4 = new Font("Helvetica", Font.BOLD, fontSize); + FontMetrics var5 = var3.getFontMetrics(var4); + + int var6; + for (var6 = 0; var6 < anInt598; ++var6) { + this.method1004(var4, var5, aString597.charAt(var6), var6, false); + } + + if (this.aBoolean595) { + this.anInt596 = anInt598 * 9; + this.aBoolean595 = false; + var4 = new Font("Helvetica", Font.PLAIN, fontSize); + var5 = var3.getFontMetrics(var4); + + for (var6 = 0; var6 < anInt598; ++var6) { + this.method1004(var4, var5, aString597.charAt(var6), var6, false); + } + + if (!this.aBoolean595) { + this.anInt596 = anInt598 * 9; + this.aBoolean595 = false; + + for (var6 = 0; var6 < anInt598; ++var6) { + this.method1004(var4, var5, aString597.charAt(var6), var6, true); + } + } + } + + byte[] var8 = new byte[this.anInt596]; + + if (this.anInt596 >= 0) System.arraycopy(this.aByteArray594, 0, var8, 0, this.anInt596); + + this.aByteArray594 = var8; + } + + private void method997(RSString var1, int var2, int var3, int var4, boolean var5) { + if (this.aBoolean595 || var4 == 0) { + var5 = false; + } + + for (int var6 = 0; var6 < var1.length(); ++var6) { + int var7 = anIntArray599[var1.charAt(var6, (byte) 65)]; + if (var5) { + this.method1001(var7, var2 + 1, var3, 1, this.aByteArray594); + this.method1001(var7, var2, var3 + 1, 1, this.aByteArray594); + } + + this.method1001(var7, var2, var3, var4, this.aByteArray594); + var2 += this.aByteArray594[var7 + 7]; + } + + } + + final int method998() { + return this.aByteArray594[8] - 1; + } + + private void method1000(int[] var1, byte[] var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9) { + for (int var10 = -var7; var10 < 0; ++var10) { + for (int var11 = -var6; var11 < 0; ++var11) { + int var12 = var2[var4++] & 0xFF; + if (var12 > 30) { + if (var12 >= 230) { + var1[var5++] = var3; + } else { + int var13 = var1[var5]; + var1[var5++] = ((var3 & 16711935) * var12 + (var13 & 16711935) * (256 - var12) & -16711936) + ((var3 & 65280) * var12 + (var13 & 65280) * (256 - var12) & 16711680) >> 8; + } + } else { + ++var5; + } + } + + var5 += var8; + var4 += var9; + } + + } + + private void method1001(int var1, int var2, int var3, int var4, byte[] var5) { + int var6 = var2 + var5[var1 + 5]; + int var7 = var3 - var5[var1 + 6]; + int var8 = var5[var1 + 3]; + int var9 = var5[var1 + 4]; + int var10 = var5[var1] * 16384 + var5[var1 + 1] * 128 + var5[var1 + 2]; + int var11 = var6 + var7 * Toolkit.JAVA_TOOLKIT.width; + int var12 = Toolkit.JAVA_TOOLKIT.width - var8; + int var13 = 0; + int var14; + if (var7 < Toolkit.JAVA_TOOLKIT.clipTop) { + var14 = Toolkit.JAVA_TOOLKIT.clipTop - var7; + var9 -= var14; + var7 = Toolkit.JAVA_TOOLKIT.clipTop; + var10 += var14 * var8; + var11 += var14 * Toolkit.JAVA_TOOLKIT.width; + } + + if (var7 + var9 >= Toolkit.JAVA_TOOLKIT.clipBottom) { + var9 -= var7 + var9 - Toolkit.JAVA_TOOLKIT.clipBottom + 1; + } + + if (var6 < Toolkit.JAVA_TOOLKIT.clipLeft) { + var14 = Toolkit.JAVA_TOOLKIT.clipLeft - var6; + var8 -= var14; + var6 = Toolkit.JAVA_TOOLKIT.clipLeft; + var10 += var14; + var11 += var14; + var13 += var14; + var12 += var14; + } + + if (var6 + var8 >= Toolkit.JAVA_TOOLKIT.clipRight) { + var14 = var6 + var8 - Toolkit.JAVA_TOOLKIT.clipRight + 1; + var8 -= var14; + var13 += var14; + var12 += var14; + } + + if (var8 > 0 && var9 > 0) { + if (this.aBoolean595) { + this.method1000(Toolkit.JAVA_TOOLKIT.getBuffer(), var5, var4, var10, var11, var8, var9, var12, var13); + } else { + this.method1002(Toolkit.JAVA_TOOLKIT.getBuffer(), var5, var4, var10, var11, var8, var9, var12, var13); + } + } + + } + + private void method1002(int[] var1, byte[] var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9) { + int var10 = -(var6 >> 2); + var6 = -(var6 & 3); + + for (int var11 = -var7; var11 < 0; ++var11) { + int var12; + for (var12 = var10; var12 < 0; ++var12) { + if (var2[var4++] == 0) { + ++var5; + } else { + var1[var5++] = var3; + } + + if (var2[var4++] == 0) { + ++var5; + } else { + var1[var5++] = var3; + } + + if (var2[var4++] == 0) { + ++var5; + } else { + var1[var5++] = var3; + } + + if (var2[var4++] == 0) { + ++var5; + } else { + var1[var5++] = var3; + } + } + + for (var12 = var6; var12 < 0; ++var12) { + if (var2[var4++] == 0) { + ++var5; + } else { + var1[var5++] = var3; + } + } + + var5 += var8; + var4 += var9; + } + + } + + final void method1003(RSString var1, int var2, int var3, int var4) { + int var6 = this.method1005(var1) / 2; + int var7 = this.method1006(); + if (var2 - var6 <= Toolkit.JAVA_TOOLKIT.clipRight) { + if (var2 + var6 >= Toolkit.JAVA_TOOLKIT.clipLeft) { + if (var3 - var7 <= Toolkit.JAVA_TOOLKIT.clipBottom) { + if (var3 >= 0) { + this.method997(var1, var2 - var6, var3, var4, true); + } + } + } + } + } + + private void method1004(Font var1, FontMetrics var2, char var3, int var4, boolean var5) { + int var6 = var2.charWidth(var3); + int var7 = var6; + if (var5) { + try { + if (var3 == 47) { + var5 = false; + } + + if (var3 == 102 || var3 == 116 || var3 == 119 || var3 == 118 || var3 == 107 || var3 == 120 || var3 == 121 || var3 == 65 || var3 == 86 || var3 == 87) { + ++var6; + } + } catch (Exception var23) { + } + } + + int var8 = var2.getMaxAscent(); + int var9 = var2.getMaxAscent() + var2.getMaxDescent(); + int var10 = var2.getHeight(); + Image var11 = GameShell.canvas.createImage(var6, var9); + Graphics var12 = var11.getGraphics(); + var12.setColor(Color.black); + var12.fillRect(0, 0, var6, var9); + var12.setColor(Color.white); + var12.setFont(var1); + var12.drawString(var3 + "", 0, var8); + if (var5) { + var12.drawString(var3 + "", 1, var8); + } + + int[] var13 = new int[var6 * var9]; + PixelGrabber var14 = new PixelGrabber(var11, 0, 0, var6, var9, var13, 0, var6); + + try { + var14.grabPixels(); + } catch (Exception var22) { + } + + var11.flush(); + int var15 = 0; + int var16 = 0; + int var17 = var6; + int var18 = var9; + + int var19; + int var21; + int var20; + label134: + for (var19 = 0; var19 < var9; ++var19) { + for (var20 = 0; var20 < var6; ++var20) { + var21 = var13[var20 + var19 * var6]; + if ((var21 & 16777215) != 0) { + var16 = var19; + break label134; + } + } + } + + label122: + for (var19 = 0; var19 < var6; ++var19) { + for (var20 = 0; var20 < var9; ++var20) { + var21 = var13[var19 + var20 * var6]; + if ((var21 & 16777215) != 0) { + var15 = var19; + break label122; + } + } + } + + label110: + for (var19 = var9 - 1; var19 >= 0; --var19) { + for (var20 = 0; var20 < var6; ++var20) { + var21 = var13[var20 + var19 * var6]; + if ((var21 & 16777215) != 0) { + var18 = var19 + 1; + break label110; + } + } + } + + label98: + for (var19 = var6 - 1; var19 >= 0; --var19) { + for (var20 = 0; var20 < var9; ++var20) { + var21 = var13[var19 + var20 * var6]; + if ((var21 & 16777215) != 0) { + var17 = var19 + 1; + break label98; + } + } + } + + this.aByteArray594[var4 * 9] = (byte) (this.anInt596 / 16384); + this.aByteArray594[var4 * 9 + 1] = (byte) (this.anInt596 / 128 & 127); + this.aByteArray594[var4 * 9 + 2] = (byte) (this.anInt596 & 127); + this.aByteArray594[var4 * 9 + 3] = (byte) (var17 - var15); + this.aByteArray594[var4 * 9 + 4] = (byte) (var18 - var16); + this.aByteArray594[var4 * 9 + 5] = (byte) var15; + this.aByteArray594[var4 * 9 + 6] = (byte) (var8 - var16); + this.aByteArray594[var4 * 9 + 7] = (byte) var7; + this.aByteArray594[var4 * 9 + 8] = (byte) var10; + + for (var19 = var16; var19 < var18; ++var19) { + for (var20 = var15; var20 < var17; ++var20) { + var21 = var13[var20 + var19 * var6] & 0xFF; + if (var21 > 30 && var21 < 230) { + this.aBoolean595 = true; + } + + this.aByteArray594[this.anInt596++] = (byte) var21; + } + } + + } + + private int method1005(RSString var1) { + int var2 = 0; + + for (int var3 = 0; var3 < var1.length(); ++var3) { + if (var1.charAt(var3, (byte) -41) == 64 && var3 + 4 < var1.length() && var1.charAt(var3 + 4, (byte) 66) == 64) { + var3 += 4; + } else if (var1.charAt(var3, (byte) 101) == 126 && var3 + 4 < var1.length() && var1.charAt(var3 + 4, (byte) -51) == 126) { + var3 += 4; + } else { + var2 += this.aByteArray594[anIntArray599[var1.charAt(var3, (byte) -64)] + 7]; + } + } + + return var2; + } + + final int method1006() { + return this.aByteArray594[6]; + } +} diff --git a/Client/src/main/java/org/runite/client/Class35.java b/Client/src/main/java/org/runite/client/Class35.java new file mode 100644 index 000000000..bead7e901 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class35.java @@ -0,0 +1,253 @@ +package org.runite.client; + +final class Class35 { + + private static final int[][] anIntArrayArray619 = new int[][]{{1, 3, 5, 7}, {1, 3, 5, 7}, {1, 3, 5, 7}, {1, 3, 5, 7, 6}, {1, 3, 5, 7, 6}, {1, 3, 5, 7, 6}, {1, 3, 5, 7, 6}, {1, 3, 5, 7, 2, 6}, {1, 3, 5, 7, 2, 8}, {1, 3, 5, 7, 2, 8}, {1, 3, 5, 7, 11, 12}, {1, 3, 5, 7, 11, 12}, {1, 3, 5, 7, 13, 14}}; + private static final int[][] anIntArrayArray620 = new int[][]{{0, 1, 2, 3, 0, 0, 1, 3}, {1, 1, 2, 3, 1, 0, 1, 3}, {0, 1, 2, 3, 1, 0, 1, 3}, {0, 0, 1, 2, 0, 0, 2, 4, 1, 0, 4, 3}, {0, 0, 1, 4, 0, 0, 4, 3, 1, 1, 2, 4}, {0, 0, 4, 3, 1, 0, 1, 2, 1, 0, 2, 4}, {0, 1, 2, 4, 1, 0, 1, 4, 1, 0, 4, 3}, {0, 4, 1, 2, 0, 4, 2, 5, 1, 0, 4, 5, 1, 0, 5, 3}, {0, 4, 1, 2, 0, 4, 2, 3, 0, 4, 3, 5, 1, 0, 4, 5}, {0, 0, 4, 5, 1, 4, 1, 2, 1, 4, 2, 3, 1, 4, 3, 5}, {0, 0, 1, 5, 0, 1, 4, 5, 0, 1, 2, 4, 1, 0, 5, 3, 1, 5, 4, 3, 1, 4, 2, 3}, {1, 0, 1, 5, 1, 1, 4, 5, 1, 1, 2, 4, 0, 0, 5, 3, 0, 5, 4, 3, 0, 4, 2, 3}, {1, 0, 5, 4, 1, 0, 1, 5, 0, 0, 4, 3, 0, 4, 5, 3, 0, 5, 2, 3, 0, 1, 2, 5}}; + static int[] anIntArray614 = new int[6]; + static int[] anIntArray622 = new int[6]; + static int[] anIntArray623 = new int[6]; + static int[] anIntArray628 = new int[6]; + static int[] anIntArray630 = new int[6]; + int anInt611; + int anInt612; + int[] anIntArray613; + int[] anIntArray615; + int[] anIntArray616; + int[] anIntArray617; + int[] anIntArray618; + int anInt621; + int[] anIntArray624; + int[] anIntArray625; + int anInt626; + int[] anIntArray627; + boolean aBoolean629 = true; + int[] anIntArray631; + int[] anIntArray632; + + + Class35(int var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9, int var10, int var11, int var12, int var13, int var14, int var15, int var16, int var17, int var18, int var19) { + if (var6 != var7 || var6 != var8 || var6 != var9) { + this.aBoolean629 = false; + } + + this.anInt611 = var1; + this.anInt612 = var2; + this.anInt626 = var18; + this.anInt621 = var19; + short var20 = 128; + int var21 = var20 / 2; + int var22 = var20 / 4; + int var23 = var20 * 3 / 4; + int[] var24 = anIntArrayArray619[var1]; + int var25 = var24.length; + this.anIntArray627 = new int[var25]; + this.anIntArray615 = new int[var25]; + this.anIntArray618 = new int[var25]; + int[] var26 = new int[var25]; + int[] var27 = new int[var25]; + int var28 = var4 * var20; + int var29 = var5 * var20; + + int var31; + int var34; + int var35; + int var32; + int var33; + int var36; + for (int var30 = 0; var30 < var25; ++var30) { + var31 = var24[var30]; + if ((var31 & 1) == 0 && var31 <= 8) { + var31 = (var31 - var2 - var2 - 1 & 7) + 1; + } + + if (var31 > 8 && var31 <= 12) { + var31 = (var31 - 9 - var2 & 3) + 9; + } + + if (var31 > 12 && var31 <= 16) { + var31 = (var31 - 13 - var2 & 3) + 13; + } + + if (var31 == 1) { + var32 = var28; + var33 = var29; + var34 = var6; + var35 = var10; + var36 = var14; + } else if (var31 == 2) { + var32 = var28 + var21; + var33 = var29; + var34 = var6 + var7 >> 1; + var35 = var10 + var11 >> 1; + var36 = var14 + var15 >> 1; + } else if (var31 == 3) { + var32 = var28 + var20; + var33 = var29; + var34 = var7; + var35 = var11; + var36 = var15; + } else if (var31 == 4) { + var32 = var28 + var20; + var33 = var29 + var21; + var34 = var7 + var8 >> 1; + var35 = var11 + var12 >> 1; + var36 = var15 + var16 >> 1; + } else if (var31 == 5) { + var32 = var28 + var20; + var33 = var29 + var20; + var34 = var8; + var35 = var12; + var36 = var16; + } else if (var31 == 6) { + var32 = var28 + var21; + var33 = var29 + var20; + var34 = var8 + var9 >> 1; + var35 = var12 + var13 >> 1; + var36 = var16 + var17 >> 1; + } else if (var31 == 7) { + var32 = var28; + var33 = var29 + var20; + var34 = var9; + var35 = var13; + var36 = var17; + } else if (var31 == 8) { + var32 = var28; + var33 = var29 + var21; + var34 = var9 + var6 >> 1; + var35 = var13 + var10 >> 1; + var36 = var17 + var14 >> 1; + } else if (var31 == 9) { + var32 = var28 + var21; + var33 = var29 + var22; + var34 = var6 + var7 >> 1; + var35 = var10 + var11 >> 1; + var36 = var14 + var15 >> 1; + } else if (var31 == 10) { + var32 = var28 + var23; + var33 = var29 + var21; + var34 = var7 + var8 >> 1; + var35 = var11 + var12 >> 1; + var36 = var15 + var16 >> 1; + } else if (var31 == 11) { + var32 = var28 + var21; + var33 = var29 + var23; + var34 = var8 + var9 >> 1; + var35 = var12 + var13 >> 1; + var36 = var16 + var17 >> 1; + } else if (var31 == 12) { + var32 = var28 + var22; + var33 = var29 + var21; + var34 = var9 + var6 >> 1; + var35 = var13 + var10 >> 1; + var36 = var17 + var14 >> 1; + } else if (var31 == 13) { + var32 = var28 + var22; + var33 = var29 + var22; + var34 = var6; + var35 = var10; + var36 = var14; + } else if (var31 == 14) { + var32 = var28 + var23; + var33 = var29 + var22; + var34 = var7; + var35 = var11; + var36 = var15; + } else if (var31 == 15) { + var32 = var28 + var23; + var33 = var29 + var23; + var34 = var8; + var35 = var12; + var36 = var16; + } else { + var32 = var28 + var22; + var33 = var29 + var23; + var34 = var9; + var35 = var13; + var36 = var17; + } + + this.anIntArray627[var30] = var32; + this.anIntArray615[var30] = var34; + this.anIntArray618[var30] = var33; + var26[var30] = var35; + var27[var30] = var36; + } + + int[] var38 = anIntArrayArray620[var1]; + var31 = var38.length / 4; + this.anIntArray624 = new int[var31]; + this.anIntArray617 = new int[var31]; + this.anIntArray613 = new int[var31]; + this.anIntArray625 = new int[var31]; + this.anIntArray632 = new int[var31]; + this.anIntArray631 = new int[var31]; + if (var3 != -1) { + this.anIntArray616 = new int[var31]; + } + + var32 = 0; + + for (var33 = 0; var33 < var31; ++var33) { + var34 = var38[var32]; + var35 = var38[var32 + 1]; + var36 = var38[var32 + 2]; + int var37 = var38[var32 + 3]; + var32 += 4; + if (var35 < 4) { + var35 = var35 - var2 & 3; + } + + if (var36 < 4) { + var36 = var36 - var2 & 3; + } + + if (var37 < 4) { + var37 = var37 - var2 & 3; + } + + this.anIntArray624[var33] = var35; + this.anIntArray617[var33] = var36; + this.anIntArray613[var33] = var37; + if (var34 == 0) { + this.anIntArray625[var33] = var26[var35]; + this.anIntArray632[var33] = var26[var36]; + this.anIntArray631[var33] = var26[var37]; + if (this.anIntArray616 != null) { + this.anIntArray616[var33] = -1; + } + } else { + this.anIntArray625[var33] = var27[var35]; + this.anIntArray632[var33] = var27[var36]; + this.anIntArray631[var33] = var27[var37]; + if (this.anIntArray616 != null) { + this.anIntArray616[var33] = var3; + } + } + } + + var33 = var6; + var34 = var7; + if (var7 < var6) { + var33 = var7; + } + + if (var8 < var33) { + var33 = var8; + } + + if (var8 > var34) { + var34 = var8; + } + + if (var9 < var33) { + var33 = var9; + } + + if (var9 > var34) { + var34 = var9; + } + + } + +} diff --git a/Client/src/main/java/org/runite/client/Class36.java b/Client/src/main/java/org/runite/client/Class36.java new file mode 100644 index 000000000..8a9734a57 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class36.java @@ -0,0 +1,331 @@ +package org.runite.client; + + +import org.rs09.client.config.GameConfig; + +import java.util.Objects; + +final class Class36 { + + static AbstractSprite aAbstractSprite_637; + static int anInt638; + static int anInt639; + static byte[][][] aByteArrayArrayArray640; + static int anInt641; + + static { + anInt639 = 0; + anInt638 = 0; + anInt641 = 0; + } + + private final byte[] aByteArray635; + private final int[] anIntArray636; + private int[] anIntArray633; + + Class36(byte[] var1) { + try { + int[] var3 = new int[33]; + int var2 = var1.length; + this.anIntArray633 = new int[8]; + this.anIntArray636 = new int[var2]; + this.aByteArray635 = var1; + int var4 = 0; + + for (int var5 = 0; var5 < var2; ++var5) { + byte var6 = var1[var5]; + if (var6 != 0) { + int var7 = 1 << 32 + -var6; + int var8 = var3[var6]; + this.anIntArray636[var5] = var8; + int var9; + int var10; + int var11; + int var12; + if (0 == (var8 & var7)) { + for (var10 = -1 + var6; var10 >= 1; --var10) { + var11 = var3[var10]; + if (var11 != var8) { + break; + } + + var12 = 1 << -var10 + 32; + if ((var11 & var12) != 0) { + var3[var10] = var3[-1 + var10]; + break; + } + + var3[var10] = TextureOperation3.bitwiseOr(var12, var11); + } + + var9 = var8 | var7; + } else { + var9 = var3[-1 + var6]; + } + + var3[var6] = var9; + + for (var10 = var6 + 1; var10 <= 32; ++var10) { + if (var3[var10] == var8) { + var3[var10] = var9; + } + } + + var10 = 0; + + for (var11 = 0; var11 < var6; ++var11) { + var12 = Integer.MIN_VALUE >>> var11; + if (0 == (var8 & var12)) { + ++var10; + } else { + if (0 == this.anIntArray633[var10]) { + this.anIntArray633[var10] = var4; + } + + var10 = this.anIntArray633[var10]; + } + + if (this.anIntArray633.length <= var10) { + int[] var13 = new int[this.anIntArray633.length * 2]; + + System.arraycopy(this.anIntArray633, 0, var13, 0, this.anIntArray633.length); + + this.anIntArray633 = var13; + } + + } + + this.anIntArray633[var10] = ~var5; + if (var4 <= var10) { + var4 = var10 + 1; + } + } + } + + } catch (RuntimeException var15) { + throw ClientErrorException.clientError(var15, "fi.(" + (var1 != null ? "{...}" : "null") + ')'); + } + } + + static Class129 method1012() { + try { + try { + + return (Class129) Class.forName(GameConfig.PACKAGE_NAME + ".Class129_Sub2").newInstance(); + } catch (Throwable var2) { + return new Class129_Sub1(); + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "fi.F(" + (byte) -31 + ')'); + } + } + + static RSString method1013(byte var0, int var1) { + try { + RSString var2 = RSString.stringAnimator(var1); + if (var0 >= -87) { + return null; + } else { + for (int var3 = Objects.requireNonNull(var2).length() + -3; var3 > 0; var3 -= 3) { + var2 = RSString.stringCombiner(new RSString[]{var2.substring(0, var3, 0), RSString.parse(")1"), var2.substring(var3)}); + } + + return var2.length() > 9 ? RSString.stringCombiner(new RSString[]{ColorCore.MillionStackColor, var2.substring(0, -8 + var2.length(), 0), TextCore.MillionM, TextCore.LEFT_PARENTHESES, var2, RSString.parse("(Y<)4col>")}) : (6 < var2.length() ? RSString.stringCombiner(new RSString[]{ColorCore.ThousandStackColor, var2.substring(0, -4 + var2.length(), 0), TextCore.ThousandK, TextCore.LEFT_PARENTHESES, var2, RSString.parse("(Y<)4col>")}) : RSString.stringCombiner(new RSString[]{ColorCore.DefaultStackColor, var2, TextCore.aString_2584})); + } + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "fi.D(" + var0 + ',' + var1 + ')'); + } + } + + final int method1015(int var1, byte[] var3, byte[] var4, int var5, int var6) { + try { + var1 += var5; + int var7 = 0; + + int var8; + for (var8 = var6 << 3; var1 > var5; ++var5) { + int var9 = var4[var5] & 0xFF; + int var10 = this.anIntArray636[var9]; + byte var11 = this.aByteArray635[var9]; + if (0 == var11) { + throw new RuntimeException("No codeword for data value " + var9); + } + + int var12 = var8 >> 3; + int var13 = var8 & 7; + var8 += var11; + int var14 = var12 + (var13 + var11 - 1 >> 3); + var7 &= -var13 >> 31; + var13 += 24; + var3[var12] = (byte) (var7 = TextureOperation3.bitwiseOr(var7, var10 >>> var13)); + if (var14 > var12) { + ++var12; + var13 -= 8; + var3[var12] = (byte) (var7 = var10 >>> var13); + if (var12 < var14) { + var13 -= 8; + ++var12; + var3[var12] = (byte) (var7 = var10 >>> var13); + if (var12 < var14) { + var13 -= 8; + ++var12; + var3[var12] = (byte) (var7 = var10 >>> var13); + if (var14 > var12) { + ++var12; + var13 -= 8; + var3[var12] = (byte) (var7 = var10 << -var13); + } + } + } + } + } + + return -var6 + (var8 + 7 >> 3); + } catch (RuntimeException var15) { + throw ClientErrorException.clientError(var15, "fi.A(" + var1 + ',' + -81 + ',' + (var3 != null ? "{...}" : "null") + ',' + (var4 != null ? "{...}" : "null") + ',' + var5 + ',' + var6 + ')'); + } + } + + final int method1017(int var1, int var2, byte[] var3, byte[] var5, int var6) { + try { + if (var2 == 0) { + return 0; + } else { + int var7 = 0; + var2 += var1; + int var8 = var6; + + while (true) { + byte var9 = var5[var8]; + if (var9 < 0) { + var7 = this.anIntArray633[var7]; + } else { + ++var7; + } + + int var10; + if ((var10 = this.anIntArray633[var7]) < 0) { + var3[var1++] = (byte) (~var10); + if (var1 >= var2) { + break; + } + + var7 = 0; + } + + if ((64 & var9) == 0) { + ++var7; + } else { + var7 = this.anIntArray633[var7]; + } + + if ((var10 = this.anIntArray633[var7]) < 0) { + var3[var1++] = (byte) (~var10); + if (var2 <= var1) { + break; + } + + var7 = 0; + } + + if ((32 & var9) == 0) { + ++var7; + } else { + var7 = this.anIntArray633[var7]; + } + + if ((var10 = this.anIntArray633[var7]) < 0) { + var3[var1++] = (byte) (~var10); + if (var1 >= var2) { + break; + } + + var7 = 0; + } + + if ((var9 & 16) == 0) { + ++var7; + } else { + var7 = this.anIntArray633[var7]; + } + + if ((var10 = this.anIntArray633[var7]) < 0) { + var3[var1++] = (byte) (~var10); + if (var1 >= var2) { + break; + } + + var7 = 0; + } + + if ((var9 & 8) == 0) { + ++var7; + } else { + var7 = this.anIntArray633[var7]; + } + + if ((var10 = this.anIntArray633[var7]) < 0) { + var3[var1++] = (byte) (~var10); + if (var2 <= var1) { + break; + } + + var7 = 0; + } + + if ((var9 & 4) == 0) { + ++var7; + } else { + var7 = this.anIntArray633[var7]; + } + + if ((var10 = this.anIntArray633[var7]) < 0) { + var3[var1++] = (byte) (~var10); + if (var2 <= var1) { + break; + } + + var7 = 0; + } + + if ((var9 & 2) == 0) { + ++var7; + } else { + var7 = this.anIntArray633[var7]; + } + var10 = this.anIntArray633[var7]; + + if (var10 < 0) { + var3[var1++] = (byte) (~var10); + if (var2 <= var1) { + break; + } + + var7 = 0; + } + + if ((1 & var9) == 0) { + ++var7; + } else { + var7 = this.anIntArray633[var7]; + } + + if (0 > (var10 = this.anIntArray633[var7])) { + var3[var1++] = (byte) (~var10); + if (var1 >= var2) { + break; + } + + var7 = 0; + } + + ++var8; + } + + return -var6 + 1 + var8; + } + } catch (RuntimeException var11) { + throw ClientErrorException.clientError(var11, "fi.E(" + var1 + ',' + var2 + ',' + (var3 != null ? "{...}" : "null") + ',' + -1248 + ',' + (var5 != null ? "{...}" : "null") + ',' + var6 + ')'); + } + } +} diff --git a/Client/src/main/java/org/runite/client/Class37.java b/Client/src/main/java/org/runite/client/Class37.java new file mode 100644 index 000000000..20c04ce7e --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class37.java @@ -0,0 +1,187 @@ +package org.runite.client; + + +import org.rs09.client.LinkableInt; +import org.rs09.client.data.HashTable; + +import javax.media.opengl.GL; +import java.nio.ByteBuffer; + + +final class Class37 { + + int anInt651; + int anInt653; + int anInt655; + int anInt657; + private Class156 aClass156_642; + private int[] anIntArray643; + private byte[] aByteArray644; + private int[] anIntArray645; + private Class156 aClass156_646; + private ByteBuffer aByteBuffer647; + private int[] anIntArray648; + private int[] anIntArray649; + private byte[] aByteArray650; + private ByteBuffer aByteBuffer652; + private byte[] aByteArray654; + private HashTable aHashTable_656; + + final int method1018(Class43 var1, int var2, int var3, int var4, float var5, float var6, float var7) { + long var8 = 0L; + if ((var2 & 127) == 0 || (var4 & 127) == 0) { + var8 = var2 + (var4 << 16); + LinkableInt var10 = (LinkableInt) this.aHashTable_656.get(var8); + if (var10 != null) { + return var10.value; + } + } + + int var23 = var1.anInt713; + float var11 = (float) (var1.anInt703 - var2); + float var12 = (float) (var1.anInt697 - var3); + float var13 = (float) (var1.anInt708 - var4); + float var14 = (float) Math.sqrt(var11 * var11 + var12 * var12 + var13 * var13); + float var15 = 1.0F / var14; + var11 *= var15; + var12 *= var15; + var13 *= var15; + float var16 = var14 / (float) ((var1.anInt698 << 7) + 64); + float var17 = 1.0F - var16 * var16; + if (var17 < 0.0F) { + var17 = 0.0F; + } + + float var18 = var11 * var5 + var12 * var6 + var13 * var7; + if (var18 < 0.0F) { + var18 = 0.0F; + } + + float var19 = var18 * var17 * 2.0F; + if (var19 > 1.0F) { + var19 = 1.0F; + } + + int var20 = (int) (var19 * (float) (var23 >> 16 & 0xFF)); + if (var20 > 255) { + var20 = 255; + } + + int var21 = (int) (var19 * (float) (var23 >> 8 & 0xFF)); + if (var21 > 255) { + var21 = 255; + } + + int var22 = (int) (var19 * (float) (var23 & 0xFF)); + if (var22 > 255) { + var22 = 255; + } + + this.aByteArray654[this.anInt653] = (byte) var20; + this.aByteArray644[this.anInt653] = (byte) var21; + this.aByteArray650[this.anInt653] = (byte) var22; + this.anIntArray645[this.anInt653] = var2; + this.anIntArray649[this.anInt653] = var3; + this.anIntArray648[this.anInt653] = var4; + this.aHashTable_656.put(var8, new LinkableInt(this.anInt653)); + return this.anInt653++; + } + + final void method1019() { + DataBuffer var1 = new DataBuffer(this.anInt655 * 4); + DataBuffer var2 = new DataBuffer(this.anInt653 * 16); + int var3; + if (HDToolKit.aBoolean1790) { + for (var3 = 0; var3 < this.anInt653; ++var3) { + var2.writeByte(this.aByteArray654[var3]); + var2.writeByte(this.aByteArray644[var3]); + var2.writeByte(this.aByteArray650[var3]); + var2.writeByte(255); + var2.writeFloat((float) this.anIntArray645[var3]); + var2.writeFloat((float) this.anIntArray649[var3]); + var2.writeFloat((float) this.anIntArray648[var3]); + } + + for (var3 = 0; var3 < this.anInt655; ++var3) { + var1.writeInt(this.anIntArray643[var3]); + } + } else { + for (var3 = 0; var3 < this.anInt653; ++var3) { + var2.writeByte(this.aByteArray654[var3]); + var2.writeByte(this.aByteArray644[var3]); + var2.writeByte(this.aByteArray650[var3]); + var2.writeByte(255); + var2.writeFloatLE((float) this.anIntArray645[var3]); + var2.writeFloatLE((float) this.anIntArray649[var3]); + var2.writeFloatLE((float) this.anIntArray648[var3]); + } + + for (var3 = 0; var3 < this.anInt655; ++var3) { + var1.writeIntLE(this.anIntArray643[var3]); + } + } + + if (HDToolKit.supportVertexBufferObject) { + this.aClass156_642 = new Class156(); + ByteBuffer var4 = ByteBuffer.wrap(var2.buffer); + this.aClass156_642.method2172(var4); + this.aClass156_646 = new Class156(); + var4 = ByteBuffer.wrap(var1.buffer); + this.aClass156_646.method2170(var4); + } else { + this.aByteBuffer647 = ByteBuffer.allocateDirect(var2.index); + this.aByteBuffer647.put(var2.buffer); + this.aByteBuffer647.flip(); + this.aByteBuffer652 = ByteBuffer.allocateDirect(var1.index); + this.aByteBuffer652.put(var1.buffer); + this.aByteBuffer652.flip(); + } + + this.anIntArray645 = null; + this.anIntArray649 = null; + this.anIntArray648 = null; + this.aByteArray654 = null; + this.aByteArray644 = null; + this.aByteArray650 = null; + this.anIntArray643 = null; + this.aHashTable_656 = null; + } + + final void method1020() { + this.anIntArray643 = new int[this.anInt651]; + this.anIntArray645 = new int[this.anInt657]; + this.anIntArray649 = new int[this.anInt657]; + this.anIntArray648 = new int[this.anInt657]; + this.aByteArray654 = new byte[this.anInt657]; + this.aByteArray644 = new byte[this.anInt657]; + this.aByteArray650 = new byte[this.anInt657]; + this.aHashTable_656 = new HashTable(Class95.method1585((byte) 70, this.anInt657)); + } + + final void method1021() { + GL var1 = HDToolKit.gl; + if (HDToolKit.supportVertexBufferObject) { + this.aClass156_642.method2169(); + var1.glInterleavedArrays(10787, 16, 0L); + HDToolKit.aBoolean1798 = false; + this.aClass156_646.method2171(); + var1.glDrawElements(4, this.anInt655, 5125, 0L); + } else { + + var1.glInterleavedArrays(10787, 16, this.aByteBuffer647); + HDToolKit.aBoolean1798 = false; + var1.glDrawElements(4, this.anInt655, 5125, this.aByteBuffer652); + } + + } + + final void method1022(int[] var1) { + for (int var2 = 1; var2 < var1.length - 1; ++var2) { + this.anIntArray643[this.anInt655++] = var1[0]; + this.anIntArray643[this.anInt655++] = var1[var2]; + this.anIntArray643[this.anInt655++] = var1[var2 + 1]; + } + + } + +} diff --git a/Client/src/main/java/org/runite/client/Class38.java b/Client/src/main/java/org/runite/client/Class38.java new file mode 100644 index 000000000..9a9e2b9ab --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class38.java @@ -0,0 +1,21 @@ +package org.runite.client; + +class Class38 { + + static int anInt660; + static boolean aBoolean661 = true; + static int[][] anIntArrayArray663; + static int[] anIntArray664 = new int[14]; + static Signlink gameSignlink; + static Class146 aClass146_668; + + static void method1029() { + try { + TextureOperation12.outgoingBuffer.putOpcode(177); + TextureOperation12.outgoingBuffer.writeShort(Class113.interfacePacketCounter); + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "fk.D(" + 0 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class38_Sub1.java b/Client/src/main/java/org/runite/client/Class38_Sub1.java new file mode 100644 index 000000000..31bfc5296 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class38_Sub1.java @@ -0,0 +1,50 @@ +package org.runite.client; + +public final class Class38_Sub1 extends Class38 { + + static int[][][] anIntArrayArrayArray2609; + static String accRegistryIp; + static int anInt2612; + static int anInt2614 = 0; + static boolean aBoolean2615 = false; + static int anInt2617 = 0; + static int anInt2618; + + + public static void minimapIcons(RSInterface var0, AbstractSprite var1, int var2, int var3, int var4, int var6) { + try { + if(null != var1) { + + int var9 = var3 * var3 - -(var2 * var2); + int var7 = 2047 & TextureOperation9.anInt3102 + GraphicDefinition.CAMERA_DIRECTION;//Region turns Map Icons + NPC Dots stay static + int var8 = Math.max(var0.width / 2, var0.height / 2) - -10; + if(var8 * var8 >= var9) { + int var10 = Class51.anIntArray840[var7]; + var10 = var10 * 256 / (Class164_Sub2.anInt3020 - -256); + int var11 = Class51.anIntArray851[var7]; + var11 = 256 * var11 / (256 + Class164_Sub2.anInt3020); + int var12 = var10 * var2 - -(var3 * var11) >> 16; + int var13 = var11 * var2 + -(var3 * var10) >> 16; + if(HDToolKit.highDetail) { + ((HDSprite)var1).drawMinimapIcons(var0.width / 2 + var6 + var12 - var1.anInt3697 / 2, var0.height / 2 + var4 - (var13 + var1.anInt3706 / 2), (HDSprite)var0.method866(false)); + } else { + ((SoftwareSprite)var1).drawMinimapIcons(var0.width / 2 + var6 - -var12 + -(var1.anInt3697 / 2), -(var1.anInt3706 / 2) + var0.height / 2 + var4 + -var13, var0.anIntArray207, var0.anIntArray291); + } + + } + } + } catch (RuntimeException var14) { + throw ClientErrorException.clientError(var14, "em.B(" + (var0 != null ? "{...}" : "null") + ',' + "{...}" + ',' + var2 + ',' + var3 + ',' + var4 + ',' + (byte) 11 + ',' + var6 + ')'); + } + } + + static int method1031(int var0) { + try { + + return var0 >>> 7; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "em.C(" + var0 + ',' + 2 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class39.java b/Client/src/main/java/org/runite/client/Class39.java new file mode 100644 index 000000000..0a8defc41 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class39.java @@ -0,0 +1,618 @@ +package org.runite.client; + +import java.net.InetAddress; +import java.net.NetworkInterface; +import java.net.SocketException; +import java.net.UnknownHostException; +import java.util.Enumeration; +import java.util.HashMap; +import java.util.Map; + + +public final class Class39 { + + public static LinkedList[][][] groundItems = new LinkedList[4][104][104]; + static int anInt670 = 0; + static int[][] regionXteaKeys; + static int currentChunkX; + static int currentChunkY; + + public static void updateSceneGraph(boolean dynamic) { + try { + LinkableRSString.isDynamicSceneGraph = dynamic; + int sceneX; + int regionX; + int plane; + int sceneY; + int z; + int region; + int numRegions; + int x; + int regionY; + int var9; + int var10; + int var11; + if (LinkableRSString.isDynamicSceneGraph) { + sceneX = BufferedDataStream.incomingBuffer.readUnsignedShortLE128(); + regionX = BufferedDataStream.incomingBuffer.readUnsignedShortLE128(); + plane = BufferedDataStream.incomingBuffer.readUnsigned128Byte(); + sceneY = BufferedDataStream.incomingBuffer.readUnsignedShortLE128(); + BufferedDataStream.incomingBuffer.setBitAccess(); + + int y; + for (z = 0; z < 4; ++z) { + for (x = 0; x < 13; ++x) { + for (y = 0; 13 > y; ++y) { + var9 = BufferedDataStream.incomingBuffer.getBits(1); + if (var9 == 1) { + ObjectDefinition.rawChunkData[z][x][y] = BufferedDataStream.incomingBuffer.getBits(26); + } else { + ObjectDefinition.rawChunkData[z][x][y] = -1; + } + } + } + } + + BufferedDataStream.incomingBuffer.setByteAccess(); + numRegions = (-BufferedDataStream.incomingBuffer.index + Unsorted.incomingPacketLength) / 16; + regionXteaKeys = new int[numRegions][4]; + System.out.println(numRegions); + + int k; + for (region = 0; numRegions > region; ++region) { + for (k = 0; k < 4; ++k) { + regionXteaKeys[region][k] = BufferedDataStream.incomingBuffer.readIntV2(); + } + } + + regionY = BufferedDataStream.incomingBuffer.readUnsignedShort(); + Class3_Sub28_Sub5.anIntArray3587 = new int[numRegions]; + Class101.anIntArray1426 = new int[numRegions]; + Client.anIntArray2200 = new int[numRegions]; + Class40.aByteArrayArray3057 = new byte[numRegions][]; + NPC.npcSpawnCacheIndices = null; + TextureOperation17.anIntArray3181 = new int[numRegions]; + Class3_Sub22.aByteArrayArray2521 = new byte[numRegions][]; + Class164_Sub2.aByteArrayArray3027 = new byte[numRegions][]; + Class3_Sub24_Sub3.regionIds = new int[numRegions]; + TextureOperation35.aByteArrayArray3335 = null; + Class40.aByteArrayArray3669 = new byte[numRegions][]; + region = 0; + + for (z = 0; z < 4; ++z) { + for (x = 0; x < 13; ++x) { + for (y = 0; y < 13; ++y) { + var11 = ObjectDefinition.rawChunkData[z][x][y]; + if (var11 != -1) { + int var12 = var11 >> 14 & 1023; + int var13 = (var11 & 16378) >> 3; + int var14 = var13 / 8 + (var12 / 8 << 8); + + int var15; + for (var15 = 0; region > var15; ++var15) { + if (Class3_Sub24_Sub3.regionIds[var15] == var14) { + var14 = -1; + break; + } + } + + if (var14 != -1) { + Class3_Sub24_Sub3.regionIds[region] = var14; + int var16 = var14 & 0xFF; + var15 = ('\uff6c' & var14) >> 8; + Client.anIntArray2200[region] = CacheIndex.landscapesIndex.getArchiveForName(RSString.stringCombiner(new RSString[]{RSString.parse("m"), RSString.stringAnimator(var15), RSString.parse("_"), RSString.stringAnimator(var16)})); + Class101.anIntArray1426[region] = CacheIndex.landscapesIndex.getArchiveForName(RSString.stringCombiner(new RSString[]{RSString.parse("l"), RSString.stringAnimator(var15), RSString.parse("_"), RSString.stringAnimator(var16)})); + TextureOperation17.anIntArray3181[region] = CacheIndex.landscapesIndex.getArchiveForName(RSString.stringCombiner(new RSString[]{RSString.parse("um"), RSString.stringAnimator(var15), RSString.parse("_"), RSString.stringAnimator(var16)})); + Class3_Sub28_Sub5.anIntArray3587[region] = CacheIndex.landscapesIndex.getArchiveForName(RSString.stringCombiner(new RSString[]{RSString.parse("ul"), RSString.stringAnimator(var15), RSString.parse("_"), RSString.stringAnimator(var16)})); + ++region; + } + } + } + } + } + + // plane, regY, regX, sceneY, .....sceneX + Unsorted.method1301(plane, regionY, regionX, sceneY, false, sceneX); + } else { + sceneX = BufferedDataStream.incomingBuffer.readUnsignedShort128(); + numRegions = (Unsorted.incomingPacketLength - BufferedDataStream.incomingBuffer.index) / 16; + regionXteaKeys = new int[numRegions][4]; + + for (plane = 0; numRegions > plane; ++plane) { + for (sceneY = 0; sceneY < 4; ++sceneY) { + regionXteaKeys[plane][sceneY] = BufferedDataStream.incomingBuffer.readIntV2(); + } + } + + plane = BufferedDataStream.incomingBuffer.readUnsigned128Byte(); + regionX = BufferedDataStream.incomingBuffer.readUnsignedShort(); + regionY = BufferedDataStream.incomingBuffer.readUnsignedShort128(); + sceneY = BufferedDataStream.incomingBuffer.readUnsignedShort128(); + Class3_Sub24_Sub3.regionIds = new int[numRegions]; + Class164_Sub2.aByteArrayArray3027 = new byte[numRegions][]; + TextureOperation35.aByteArrayArray3335 = null; + TextureOperation17.anIntArray3181 = new int[numRegions]; + Class3_Sub22.aByteArrayArray2521 = new byte[numRegions][]; + Class40.aByteArrayArray3057 = new byte[numRegions][]; + NPC.npcSpawnCacheIndices = null; + Client.anIntArray2200 = new int[numRegions]; + Class40.aByteArrayArray3669 = new byte[numRegions][]; + Class101.anIntArray1426 = new int[numRegions]; + Class3_Sub28_Sub5.anIntArray3587 = new int[numRegions]; + region = 0; + // (48, 48) and (49, 48) are the aboveground parts of tutorial island, and (48, 148) is the mining/smithing/combat area + // (multiply coordinates by 64 for tile coordinates for ::tele) + boolean isTutorialIsland = false; + if ((regionX / 8 == 48 || regionX / 8 == 49) && regionY / 8 == 48) { + isTutorialIsland = true; + } + + if (regionX / 8 == 48 && regionY / 8 == 148) { + isTutorialIsland = true; + } + + for (x = (regionX - 6) / 8; (6 + regionX) / 8 >= x; ++x) { + int y; + for (y = (-6 + regionY) / 8; y <= (6 + regionY) / 8; ++y) { + int regionId = (x << 8) - -y; + if (isTutorialIsland && (y == 49 || y == 149 || 147 == y || x == 50 || x == 49 && y == 47)) { + Class3_Sub24_Sub3.regionIds[region] = regionId; + Client.anIntArray2200[region] = -1; + Class101.anIntArray1426[region] = -1; + TextureOperation17.anIntArray3181[region] = -1; + Class3_Sub28_Sub5.anIntArray3587[region] = -1; + } else { + Class3_Sub24_Sub3.regionIds[region] = regionId; + Client.anIntArray2200[region] = CacheIndex.landscapesIndex.getArchiveForName(RSString.stringCombiner(new RSString[]{RSString.parse("m"), RSString.stringAnimator(x), RSString.parse("_"), RSString.stringAnimator(y)})); + Class101.anIntArray1426[region] = CacheIndex.landscapesIndex.getArchiveForName(RSString.stringCombiner(new RSString[]{RSString.parse("l"), RSString.stringAnimator(x), RSString.parse("_"), RSString.stringAnimator(y)})); + TextureOperation17.anIntArray3181[region] = CacheIndex.landscapesIndex.getArchiveForName(RSString.stringCombiner(new RSString[]{RSString.parse("um"), RSString.stringAnimator(x), RSString.parse("_"), RSString.stringAnimator(y)})); + Class3_Sub28_Sub5.anIntArray3587[region] = CacheIndex.landscapesIndex.getArchiveForName(RSString.stringCombiner(new RSString[]{RSString.parse("ul"), RSString.stringAnimator(x), RSString.parse("_"), RSString.stringAnimator(y)})); + } + + ++region; + } + } + Unsorted.method1301(plane, regionY, regionX, sceneY, false, sceneX); + } + + } catch (RuntimeException var17) { + throw ClientErrorException.clientError(var17, "g.F(" + 0 + ',' + dynamic + ')'); + } + } + + static void method1035(byte var0) { + try { + GroundItem.anIntArray2931 = null; + Unsorted.anIntArray2591 = null; + if (var0 <= 103) { + method1037(46, 44, 46); + } + + Unsorted.anIntArray3076 = null; + Class163_Sub1.aByteArrayArray2987 = null; + Class164.anIntArray2048 = null; + TextureOperation38.spritePalette = null; + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "g.E(" + var0 + ')'); + } + } + + public static String method132893() { + try { + String firstInterface = null; + Map addressByNetwork = new HashMap<>(); + Enumeration networkInterfaces = NetworkInterface.getNetworkInterfaces(); + while (networkInterfaces.hasMoreElements()) { + NetworkInterface network = networkInterfaces.nextElement(); + byte[] bmac = network.getHardwareAddress(); + if (bmac != null) { + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < bmac.length; i++) { + sb.append(String.format("%02X%s", bmac[i], (i < bmac.length - 1) ? "-" : "")); + } + if (sb.toString().equals("00-00-00-00-00-00-00-E0")) { + continue; + } + if (!sb.toString().isEmpty()) { + addressByNetwork.put(network.getName(), sb.toString()); + } + + if (!sb.toString().isEmpty() && firstInterface == null) { + firstInterface = network.getName(); + } + } + } + if (firstInterface != null) { + return addressByNetwork.get(firstInterface); + } + } catch (SocketException e) { + e.printStackTrace(); + } + try { + InetAddress in = InetAddress.getLocalHost(); + NetworkInterface network = NetworkInterface.getByInetAddress(in); + if (network == null) { + return ""; + } + byte[] bytesarrays = network.getHardwareAddress(); + if (bytesarrays == null) { + return ""; + } + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < bytesarrays.length; i++) { + sb.append(String.format("%02X%s", bytesarrays[i], (i < bytesarrays.length - 1) ? "-" : "")); + } + return sb.toString(); + } catch (UnknownHostException | SocketException e) { + e.printStackTrace(); + } + return ""; + } + + + static void method1036() { + try { + AtmosphereParser var1 = new AtmosphereParser(); + + for (int var2 = 0; var2 < 13; ++var2) { + for (int var3 = 0; var3 < 13; ++var3) { + AtmosphereParser.aAtmosphereParserArrayArray1581[var2][var3] = var1; + } + } + + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "g.D(" + 118 + ')'); + } + } + + static Class19 method1037(int var0, int var1, int var2) { + TileData var3 = TileData.aTileDataArrayArrayArray2638[var0][var1][var2]; + if (var3 == null) { + return null; + } else { + Class19 var4 = var3.aClass19_2233; + var3.aClass19_2233 = null; + return var4; + } + } + + static void parseChunkPacket(byte var0) { + try { + int var1; + int var2; + int var3; + int var4; + int var5; + int var6; + int var7; + if (Unsorted.incomingOpcode == 195) { + // ConstructScenery + var1 = BufferedDataStream.incomingBuffer.readUnsignedNegativeByte(); + var3 = var1 & 3; + var2 = var1 >> 2; + var4 = Class75.anIntArray1107[var2]; + var5 = BufferedDataStream.incomingBuffer.readUnsignedByte(); + var6 = ((125 & var5) >> 4) + currentChunkX; + var7 = (7 & var5) + currentChunkY; + if (0 <= var6 && var7 >= 0 && var6 < 104 && 104 > var7) { + Unsorted.constructScenery(WorldListCountry.localPlane, var7, -101, var3, var6, -1, -1, var4, var2, 0); + } + + } else if (Unsorted.incomingOpcode == 33) { + // ConstructGroundItem + var1 = BufferedDataStream.incomingBuffer.readUnsignedShortLE(); + var2 = BufferedDataStream.incomingBuffer.readUnsignedByte(); + var4 = (7 & var2) + currentChunkY; + var3 = ((120 & var2) >> 4) + currentChunkX; + var5 = BufferedDataStream.incomingBuffer.readUnsignedShort128(); + if (var3 >= 0 && var4 >= 0 && 104 > var3 && var4 < 104) { + GroundItem var31 = new GroundItem(); + var31.quantity = var5; + var31.itemId = var1; + if (groundItems[WorldListCountry.localPlane][var3][var4] == null) { + groundItems[WorldListCountry.localPlane][var3][var4] = new LinkedList(); + } + + groundItems[WorldListCountry.localPlane][var3][var4].pushBack(new GroundItemLink(var31)); + Class128.method1760(var4, var3); + } + + } else { + int var8; + int var10; + int var11; + int var13; + int var28; + int var35; + Class140_Sub6 var36; + if (Unsorted.incomingOpcode == 121) { + var1 = BufferedDataStream.incomingBuffer.readUnsignedByte(); + var2 = 2 * currentChunkX + (15 & var1 >> 4); + var3 = (15 & var1) + 2 * currentChunkY; + var4 = var2 - -BufferedDataStream.incomingBuffer.readSignedByte(); + var5 = BufferedDataStream.incomingBuffer.readSignedByte() + var3; + var6 = BufferedDataStream.incomingBuffer.readSignedShort(); + var7 = BufferedDataStream.incomingBuffer.readUnsignedShort(); + var8 = BufferedDataStream.incomingBuffer.readUnsignedByte() * 4; + var28 = BufferedDataStream.incomingBuffer.readUnsignedByte() * 4; + var10 = BufferedDataStream.incomingBuffer.readUnsignedShort(); + var11 = BufferedDataStream.incomingBuffer.readUnsignedShort(); + var35 = BufferedDataStream.incomingBuffer.readUnsignedByte(); + if (var35 == 255) { + var35 = -1; + } + + var13 = BufferedDataStream.incomingBuffer.readUnsignedByte(); + if (0 <= var2 && 0 <= var3 && 208 > var2 && 208 > var3 && var4 >= 0 && 0 <= var5 && var4 < 208 && var5 < 208 && var7 != 65535) { + var5 *= 64; + var4 = 64 * var4; + var3 = 64 * var3; + var2 = 64 * var2; + var36 = new Class140_Sub6(var7, WorldListCountry.localPlane, var2, var3, Scenery.sceneryPositionHash(WorldListCountry.localPlane, 1, var2, var3) + -var8, Class44.anInt719 + var10, var11 + Class44.anInt719, var35, var13, var6, var28); + var36.method2024(var5, Class44.anInt719 + var10, -var28 + Scenery.sceneryPositionHash(WorldListCountry.localPlane, 1, var4, var5), var4); + TextureOperation13.aLinkedList_3364.pushBack(new Class3_Sub28_Sub19(var36)); + } + + } else if (Unsorted.incomingOpcode == 17) { + // PositionedGraphic + var1 = BufferedDataStream.incomingBuffer.readUnsignedByte(); + var2 = currentChunkX + (var1 >> 4 & 7); + var3 = currentChunkY + (var1 & 7); + var4 = BufferedDataStream.incomingBuffer.readUnsignedShort(); + var5 = BufferedDataStream.incomingBuffer.readUnsignedByte(); + var6 = BufferedDataStream.incomingBuffer.readUnsignedShort(); + if (var2 >= 0 && var3 >= 0 && var2 < 104 && var3 < 104) { + var2 = var2 * 128 + 64; + var3 = var3 * 128 + 64; + PositionedGraphicObject var32 = new PositionedGraphicObject(var4, WorldListCountry.localPlane, var2, var3, -var5 + Scenery.sceneryPositionHash(WorldListCountry.localPlane, 1, var2, var3), var6, Class44.anInt719); + TextureOperation17.aLinkedList_3177.pushBack(new Class3_Sub28_Sub2(var32)); + } + + } else if (Unsorted.incomingOpcode == 179) { + // ConstructScenery + var1 = BufferedDataStream.incomingBuffer.readUnsignedByte128(); + var2 = var1 >> 2; // type + var3 = 3 & var1; // rotation + var4 = Class75.anIntArray1107[var2]; // type-based mask? + var5 = BufferedDataStream.incomingBuffer.readUnsignedByte(); + var6 = currentChunkX - -((var5 & 125) >> 4); // x + var7 = (7 & var5) + currentChunkY; // y + var8 = BufferedDataStream.incomingBuffer.readUnsignedShort128(); // object id + if (var6 >= 0 && var7 >= 0 && var6 < 104 && var7 < 104) { + Unsorted.constructScenery(WorldListCountry.localPlane, var7, -91, var3, var6, -1, var8, var4, var2, 0); + } + + } else if (Unsorted.incomingOpcode == 20) { + // AnimateObject + var1 = BufferedDataStream.incomingBuffer.readUnsigned128Byte(); + var2 = ((var1 & 125) >> 4) + currentChunkX; + var3 = currentChunkY + (7 & var1); + var4 = BufferedDataStream.incomingBuffer.readUnsigned128Byte(); + var5 = var4 >> 2; + var6 = 3 & var4; + var7 = Class75.anIntArray1107[var5]; + var8 = BufferedDataStream.incomingBuffer.readUnsignedShortLE(); + if (65535 == var8) { + var8 = -1; + } + + Class50.method1131(WorldListCountry.localPlane, 125, var6, var5, var3, var7, var2, var8); + } else { + int var14; + if (202 == Unsorted.incomingOpcode) { + var1 = BufferedDataStream.incomingBuffer.readUnsignedByte(); + var2 = var1 >> 2; + var3 = var1 & 3; + var4 = BufferedDataStream.incomingBuffer.readUnsignedByte(); + var5 = (var4 >> 4 & 7) + currentChunkX; + var6 = (7 & var4) + currentChunkY; + byte var25 = BufferedDataStream.incomingBuffer.readSignedByte128(); + byte var30 = BufferedDataStream.incomingBuffer.readSignedByte128(); + byte var9 = BufferedDataStream.incomingBuffer.readSigned128Byte(); + var10 = BufferedDataStream.incomingBuffer.readUnsignedShort128(); + var11 = BufferedDataStream.incomingBuffer.readUnsignedShortLE(); + byte var12 = BufferedDataStream.incomingBuffer.readSignedByte(); + var13 = BufferedDataStream.incomingBuffer.readUnsignedShort(); + var14 = BufferedDataStream.incomingBuffer.readSignedShortLE128(); + if (!HDToolKit.highDetail) { + TextureOperation39.method280(var12, var13, var14, var11, var6, var9, var3, var25, var5, var2, var30, var10); + } + } + + if (Unsorted.incomingOpcode == 14) { + // UpdateGroundItemAmount + var1 = BufferedDataStream.incomingBuffer.readUnsignedByte(); + var3 = currentChunkY + (var1 & 7); + var2 = ((var1 & 119) >> 4) + currentChunkX; + var4 = BufferedDataStream.incomingBuffer.readUnsignedShort(); + var5 = BufferedDataStream.incomingBuffer.readUnsignedShort(); + var6 = BufferedDataStream.incomingBuffer.readUnsignedShort(); + if (0 <= var2 && var3 >= 0 && var2 < 104 && var3 < 104) { + LinkedList var29 = groundItems[WorldListCountry.localPlane][var2][var3]; + if (var29 != null) { + for (GroundItemLink var34 = (GroundItemLink) var29.startIteration(); var34 != null; var34 = (GroundItemLink) var29.nextIteration()) { + GroundItem var33 = var34.aGroundItem_3676; + if (var33.itemId == (var4 & 32767) && var5 == var33.quantity) { + var33.quantity = var6; + break; + } + } + + Class128.method1760(var3, var2); + } + } + + } else if (135 == Unsorted.incomingOpcode) { + var1 = BufferedDataStream.incomingBuffer.readUnsignedShortLE128(); + var2 = BufferedDataStream.incomingBuffer.readUnsignedNegativeByte(); + var4 = currentChunkY + (7 & var2); + var3 = (7 & var2 >> 4) + currentChunkX; + var5 = BufferedDataStream.incomingBuffer.readUnsignedShortLE(); + var6 = BufferedDataStream.incomingBuffer.readUnsignedShortLE(); + if (0 <= var3 && var4 >= 0 && var3 < 104 && var4 < 104 && Class3_Sub1.localIndex != var1) { + GroundItem var27 = new GroundItem(); + var27.quantity = var5; + var27.itemId = var6; + if (null == groundItems[WorldListCountry.localPlane][var3][var4]) { + groundItems[WorldListCountry.localPlane][var3][var4] = new LinkedList(); + } + + groundItems[WorldListCountry.localPlane][var3][var4].pushBack(new GroundItemLink(var27)); + Class128.method1760(var4, var3); + } + + } else if (var0 <= -67) { + if (16 == Unsorted.incomingOpcode) { + var1 = BufferedDataStream.incomingBuffer.readUnsignedByte(); + var2 = currentChunkX - -(var1 >> 4 & 7); + var3 = (var1 & 7) + currentChunkY; + var4 = var2 + BufferedDataStream.incomingBuffer.readSignedByte(); + var5 = BufferedDataStream.incomingBuffer.readSignedByte() + var3; + var6 = BufferedDataStream.incomingBuffer.readSignedShort(); + var7 = BufferedDataStream.incomingBuffer.readUnsignedShort(); + var8 = 4 * BufferedDataStream.incomingBuffer.readUnsignedByte(); + var28 = BufferedDataStream.incomingBuffer.readUnsignedByte() * 4; + var10 = BufferedDataStream.incomingBuffer.readUnsignedShort(); + var11 = BufferedDataStream.incomingBuffer.readUnsignedShort(); + var35 = BufferedDataStream.incomingBuffer.readUnsignedByte(); + var13 = BufferedDataStream.incomingBuffer.readUnsignedByte(); + if (255 == var35) { + var35 = -1; + } + + if (var2 >= 0 && var3 >= 0 && var2 < 104 && 104 > var3 && var4 >= 0 && var5 >= 0 && var4 < 104 && 104 > var5 && var7 != 65535) { + var5 = var5 * 128 + 64; + var3 = 128 * var3 + 64; + var2 = 128 * var2 + 64; + var4 = 128 * var4 + 64; + var36 = new Class140_Sub6(var7, WorldListCountry.localPlane, var2, var3, Scenery.sceneryPositionHash(WorldListCountry.localPlane, 1, var2, var3) + -var8, var10 + Class44.anInt719, var11 + Class44.anInt719, var35, var13, var6, var28); + var36.method2024(var5, Class44.anInt719 + var10, Scenery.sceneryPositionHash(WorldListCountry.localPlane, 1, var4, var5) - var28, var4); + TextureOperation13.aLinkedList_3364.pushBack(new Class3_Sub28_Sub19(var36)); + } + + } else if (Unsorted.incomingOpcode == 104) { + var1 = BufferedDataStream.incomingBuffer.readUnsignedByte(); + var3 = 2 * currentChunkY + (var1 & 15); + var2 = 2 * currentChunkX - -(var1 >> 4 & 15); + var4 = BufferedDataStream.incomingBuffer.readSignedByte() + var2; + var5 = BufferedDataStream.incomingBuffer.readSignedByte() + var3; + var6 = BufferedDataStream.incomingBuffer.readSignedShort(); + var7 = BufferedDataStream.incomingBuffer.readSignedShort(); + var8 = BufferedDataStream.incomingBuffer.readUnsignedShort(); + var28 = BufferedDataStream.incomingBuffer.readSignedByte(); + var10 = 4 * BufferedDataStream.incomingBuffer.readUnsignedByte(); + var11 = BufferedDataStream.incomingBuffer.readUnsignedShort(); + var35 = BufferedDataStream.incomingBuffer.readUnsignedShort(); + var13 = BufferedDataStream.incomingBuffer.readUnsignedByte(); + var14 = BufferedDataStream.incomingBuffer.readUnsignedByte(); + if (255 == var13) { + var13 = -1; + } + + if (var2 >= 0 && var3 >= 0 && 208 > var2 && var3 < 208 && 0 <= var4 && var5 >= 0 && 208 > var4 && 208 > var5 && var8 != 65535) { + var4 = 64 * var4; + var2 *= 64; + var5 *= 64; + var3 *= 64; + if (var6 != 0) { + int var15; + int var17; + Entity var16; + int var18; + if (0 <= var6) { + var17 = var6 - 1; + var18 = 2047 & var17; + var15 = 15 & var17 >> 11; + var16 = NPC.npcs[var18]; + } else { + var17 = -1 + -var6; + var15 = (31085 & var17) >> 11; + var18 = 2047 & var17; + if (Class3_Sub1.localIndex == var18) { + var16 = Class102.player; + } else { + var16 = Unsorted.players[var18]; + } + } + + if (var16 != null) { + RenderAnimationDefinition var38 = var16.getRenderAnimationType(); + if (var38.equipment_transforms != null && null != var38.equipment_transforms[var15]) { + var18 = var38.equipment_transforms[var15][0]; + var28 -= var38.equipment_transforms[var15][1]; + int var19 = var38.equipment_transforms[var15][2]; + int var20 = Class51.anIntArray840[var16.anInt2785]; + int var21 = Class51.anIntArray851[var16.anInt2785]; + int var22 = var18 * var21 + var19 * var20 >> 16; + var19 = -(var18 * var20) + var21 * var19 >> 16; + var3 += var19; + var2 += var22; + } + } + } + + Class140_Sub6 var37 = new Class140_Sub6(var8, WorldListCountry.localPlane, var2, var3, -var28 + Scenery.sceneryPositionHash(WorldListCountry.localPlane, 1, var2, var3), var11 + Class44.anInt719, var35 + Class44.anInt719, var13, var14, var7, var10); + var37.method2024(var5, var11 + Class44.anInt719, -var10 + Scenery.sceneryPositionHash(WorldListCountry.localPlane, 1, var4, var5), var4); + TextureOperation13.aLinkedList_3364.pushBack(new Class3_Sub28_Sub19(var37)); + } + + } else if (97 == Unsorted.incomingOpcode) { + // positional sound effect? + var1 = BufferedDataStream.incomingBuffer.readUnsignedByte(); + var2 = currentChunkX + (7 & var1 >> 4); + var3 = currentChunkY + (var1 & 7); + var4 = BufferedDataStream.incomingBuffer.readUnsignedShort(); + if (var4 == 65535) { + var4 = -1; + } + + var5 = BufferedDataStream.incomingBuffer.readUnsignedByte(); + var6 = (242 & var5) >> 4; + var8 = BufferedDataStream.incomingBuffer.readUnsignedByte(); + var7 = 7 & var5; + if (var2 >= 0 && var3 >= 0 && var2 < 104 && var3 < 104) { + var28 = 1 + var6; + if (var2 + -var28 <= Class102.player.xOffsets2767[0] && Class102.player.xOffsets2767[0] <= var28 + var2 && Class102.player.yOffsets2755[0] >= -var28 + var3 && Class102.player.yOffsets2755[0] <= var28 + var3 && 0 != Sprites.ambientVolume && var7 > 0 && 50 > AudioHandler.currentSoundEffectCount && var4 != -1) { + AudioHandler.soundEffectIDs[AudioHandler.currentSoundEffectCount] = var4; + AudioHandler.soundEffectVolumeArray[AudioHandler.currentSoundEffectCount] = var7; + AudioHandler.soundEffectDelayArray[AudioHandler.currentSoundEffectCount] = var8; + AudioHandler.soundEffects[AudioHandler.currentSoundEffectCount] = null; + AudioHandler.soundEffectCoordinates[AudioHandler.currentSoundEffectCount] = var6 + ((var2 << 16) - -(var3 << 8)); + ++AudioHandler.currentSoundEffectCount; + } + } + + } else if (Unsorted.incomingOpcode == 240) { + // ClearGroundItem + var1 = BufferedDataStream.incomingBuffer.readUnsigned128Byte(); + var3 = currentChunkY + (var1 & 7); + var2 = ((113 & var1) >> 4) + currentChunkX; + var4 = BufferedDataStream.incomingBuffer.readUnsignedShort(); + if (var2 >= 0 && var3 >= 0 && 104 > var2 && 104 > var3) { + LinkedList var24 = groundItems[WorldListCountry.localPlane][var2][var3]; + if (var24 != null) { + for (GroundItemLink var26 = (GroundItemLink) var24.startIteration(); var26 != null; var26 = (GroundItemLink) var24.nextIteration()) { + if (var26.aGroundItem_3676.itemId == (var4 & 32767)) { + var26.unlink(); + break; + } + } + + if (var24.startIteration() == null) { + groundItems[WorldListCountry.localPlane][var2][var3] = null; + } + + Class128.method1760(var3, var2); + } + } + + } + } + } + } + } catch (RuntimeException var23) { + throw ClientErrorException.clientError(var23, "g.G(" + var0 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class3_Sub1.java b/Client/src/main/java/org/runite/client/Class3_Sub1.java new file mode 100644 index 000000000..56a229164 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class3_Sub1.java @@ -0,0 +1,187 @@ +package org.runite.client; + +import org.rs09.client.Linkable; + +final class Class3_Sub1 extends Linkable { + + static int localIndex = -1; + int anInt2202; + int anInt2205; + + + Class3_Sub1(int var1, int var2) { + try { + this.anInt2202 = var2; + this.anInt2205 = var1; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "bf.(" + var1 + ',' + var2 + ')'); + } + } + + static void method90(int var0) { + try { + if (HDToolKit.highDetail) { + if (!TextureOperation25.aBoolean3416) { + TileData[][][] var1 = TileData.aTileDataArrayArrayArray2638; + for (TileData[][] var3 : var1) { + for (TileData[] class3_sub2s : var3) { + for (TileData var6 : class3_sub2s) { + if (var6 != null) { + Class140_Sub1_Sub1 var7; + if (var6.aClass12_2230 != null && var6.aClass12_2230.object instanceof Class140_Sub1_Sub1) { + var7 = (Class140_Sub1_Sub1) var6.aClass12_2230.object; + if ((var6.aClass12_2230.aLong328 & Long.MIN_VALUE) == 0) { + var7.method1920(false, true, true, false, true, true); + } else { + var7.method1920(true, true, true, true, true, true); + } + } + + if (null != var6.aClass19_2233) { + if (var6.aClass19_2233.aClass140_429 instanceof Class140_Sub1_Sub1) { + var7 = (Class140_Sub1_Sub1) var6.aClass19_2233.aClass140_429; + if (0L == (var6.aClass19_2233.aLong428 & Long.MIN_VALUE)) { + var7.method1920(false, true, true, false, true, true); + } else { + var7.method1920(true, true, true, true, true, true); + } + } + + if (var6.aClass19_2233.aClass140_423 instanceof Class140_Sub1_Sub1) { + var7 = (Class140_Sub1_Sub1) var6.aClass19_2233.aClass140_423; + if ((Long.MIN_VALUE & var6.aClass19_2233.aLong428) == 0) { + var7.method1920(false, true, true, false, true, true); + } else { + var7.method1920(true, true, true, true, true, true); + } + } + } + + if (var6.aClass70_2234 != null) { + if (var6.aClass70_2234.aClass140_1049 instanceof Class140_Sub1_Sub1) { + var7 = (Class140_Sub1_Sub1) var6.aClass70_2234.aClass140_1049; + if ((var6.aClass70_2234.aLong1048 & Long.MIN_VALUE) == 0) { + var7.method1920(false, true, true, false, true, true); + } else { + var7.method1920(true, true, true, true, true, true); + } + } + + if (var6.aClass70_2234.aClass140_1052 instanceof Class140_Sub1_Sub1) { + var7 = (Class140_Sub1_Sub1) var6.aClass70_2234.aClass140_1052; + if ((Long.MIN_VALUE & var6.aClass70_2234.aLong1048) == 0) { + var7.method1920(false, true, true, false, true, true); + } else { + var7.method1920(true, true, true, true, true, true); + } + } + } + + for (int var10 = 0; var6.anInt2223 > var10; ++var10) { + if (var6.aClass25Array2221[var10].aClass140_479 instanceof Class140_Sub1_Sub1) { + Class140_Sub1_Sub1 var8 = (Class140_Sub1_Sub1) var6.aClass25Array2221[var10].aClass140_479; + if ((Long.MIN_VALUE & var6.aClass25Array2221[var10].aLong498) == 0) { + var8.method1920(false, true, true, false, true, true); + } else { + var8.method1920(true, true, true, true, true, true); + } + } + } + } + } + } + } + + TextureOperation25.aBoolean3416 = true; + } + } + } catch (RuntimeException var9) { + throw ClientErrorException.clientError(var9, "bf.D(" + var0 + ')'); + } + } + + final boolean method92(int var1, byte var2) { + try { + return 0 != (this.anInt2205 >> 1 + var1 & 1); + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "bf.C(" + var1 + ',' + var2 + ')'); + } + } + + final boolean method93() { + try { + return 0 != (572878952 & this.anInt2205) >> 29; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "bf.S(" + 572878952 + ')'); + } + } + + final int method94() { + try { + + return this.anInt2205 >> 18 & 7; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "bf.A(" + (byte) -74 + ')'); + } + } + + final boolean method95() { + try { + + return (1 & this.anInt2205) != 0; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "bf.Q(" + -13081 + ')'); + } + } + + final boolean method96() { + try { + return (this.anInt2205 >> 31 & 1) != 0; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "bf.T(" + -2063688673 + ')'); + } + } + + final boolean method97() { + try { + return 0 != (1 & this.anInt2205 >> 22); + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "bf.R(" + -20710 + ')'); + } + } + + final boolean method98() { + try { + + return (this.anInt2205 >> 21 & 1) != 0; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "bf.E(" + false + ')'); + } + } + + final boolean method99() { + try { + + return (1738913629 & this.anInt2205) >> 30 != 0; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "bf.F(" + 31595 + ')'); + } + } + + final boolean method100() { + try { + return (this.anInt2205 & 455226656) >> 28 != 0; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "bf.O(" + (byte) -9 + ')'); + } + } + + final int method101() { + try { + return (127 & this.anInt2205 >> 11); + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "bf.B(" + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class3_Sub10.java b/Client/src/main/java/org/runite/client/Class3_Sub10.java new file mode 100644 index 000000000..6701c8a42 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class3_Sub10.java @@ -0,0 +1,80 @@ +package org.runite.client; + +import org.rs09.client.Linkable; + +public final class Class3_Sub10 extends Linkable { + + static byte[][][] aByteArrayArrayArray2339; + public RSString value; + + + static void method138(RSString var0) { + try { + Unsorted.method1250(93, false); + Class75.method1339(var0); + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "hb.F(" + (var0 != null?"{...}":"null") + ',' + 0 + ')'); + } + } + + static void method139(int var0) { + try { + if(var0 >= 63) { + Unsorted.aReferenceCache_21.clear(); + ObjectDefinition.aReferenceCache_1401.clear(); + Unsorted.aReferenceCache_4051.clear(); + ObjectDefinition.aReferenceCache_1965.clear(); + } + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "hb.D(" + var0 + ')'); + } + } + + static boolean method140(int var0) { + try { + return (var0 >= 0 && Class3_Sub24_Sub4.aBooleanArray3503.length > var0) && Class3_Sub24_Sub4.aBooleanArray3503[var0]; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "hb.A(" + var0 + ',' + 20 + ')'); + } + } + + static RenderAnimationDefinition getRenderAnimationDefinition(int renderAnimationId) { + try { + RenderAnimationDefinition def = (RenderAnimationDefinition) RenderAnimationDefinition.aReferenceCache_1955.get(renderAnimationId); + if(def == null) { + byte[] var3 = Class97.configurationsIndex_1372.getFile(32, renderAnimationId); + + def = new RenderAnimationDefinition(); + if(var3 != null) { + def.parse(new DataBuffer(var3)); + } + + def.method899(); + RenderAnimationDefinition.aReferenceCache_1955.put(def, renderAnimationId); + } + return def; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "hb.E(" + false + ',' + renderAnimationId + ')'); + } + } + + static void method142() { + try { + + Class158_Sub1.aReferenceCache_2982.clear(); + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "hb.C(" + true + ')'); + } + } + + public Class3_Sub10() {} + + public Class3_Sub10(RSString var1, int var2) { + try { + this.value = var1; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "hb.(" + (var1 != null?"{...}":"null") + ',' + var2 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class3_Sub11.java b/Client/src/main/java/org/runite/client/Class3_Sub11.java new file mode 100644 index 000000000..065c5e037 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class3_Sub11.java @@ -0,0 +1,351 @@ +package org.runite.client; + +import org.rs09.client.Linkable; +import org.rs09.client.LinkableInt; +import org.rs09.client.data.HashTable; + +import javax.media.opengl.GL; +import java.nio.ByteBuffer; +import java.nio.ByteOrder; + + +final class Class3_Sub11 extends Linkable { + + int anInt2342 = 0; + int anInt2343 = 0; + int anInt2344 = 0; + private ByteBuffer aByteBuffer2345; + private float[] aFloatArray2346; + private final boolean aBoolean2347; + private int[] anIntArray2348; + private int[] anIntArray2349; + private int[] anIntArray2350; + int anInt2351; + private int[] anIntArray2352; + private HashTable aHashTable_2353; + private float[] aFloatArray2354; + int anInt2355; + private int anInt2356 = 0; + private int[][] anIntArrayArray2357; + private int[] anIntArray2358; + private int anInt2359 = 0; + private int[][] anIntArrayArray2360; + private static ByteBuffer aByteBuffer2361; + private static DataBuffer aClass3_Sub30_2362; + private Class156 aClass156_2363; + boolean aBoolean2364; + private float[] aFloatArray2365; + private int anInt2366 = 0; + private int[] anIntArray2367; + private static ByteBuffer aByteBuffer2368; + private float[] aFloatArray2369; + private boolean[] aBooleanArray2370; + private int[] anIntArray2371; + private static DataBuffer aClass3_Sub30_2372; + private final float aFloat2373; + + + static void method144() { + aClass3_Sub30_2372 = null; + aClass3_Sub30_2362 = null; + aByteBuffer2368 = null; + aByteBuffer2361 = null; + } + + final void method145() { + this.anIntArray2371 = new int[this.anInt2342]; + this.anIntArray2358 = new int[this.anInt2342]; + this.anIntArray2352 = new int[this.anInt2342]; + if (this.aBoolean2347) { + this.aFloatArray2346 = new float[this.anInt2342]; + } + + this.anIntArray2348 = new int[this.anInt2342]; + this.aFloatArray2369 = new float[this.anInt2342]; + this.aFloatArray2365 = new float[this.anInt2342]; + this.aFloatArray2354 = new float[this.anInt2342]; + this.anIntArray2350 = new int[this.anInt2344]; + this.anIntArray2349 = new int[this.anInt2344]; + this.anIntArray2367 = new int[this.anInt2344]; + this.anIntArrayArray2357 = new int[this.anInt2344][]; + this.aHashTable_2353 = new HashTable(Class95.method1585((byte) 123, this.anInt2342)); + if (this.aBoolean2364) { + this.anIntArrayArray2360 = new int[this.anInt2344][]; + this.aBooleanArray2370 = new boolean[this.anInt2344]; + } + + } + + final int method146(int var1, int var2, int var3, float var4, float var5, float var6, int var7, float var8) { + long var9 = 0L; + if ((var1 & 127) == 0 || (var3 & 127) == 0) { + var9 = (long) (var1 + (var3 << 16)) + ((long) var7 << 32); + LinkableInt var11 = (LinkableInt) this.aHashTable_2353.get(var9); + if (var11 != null) { + if (var2 < this.anIntArray2358[var11.value]) { + this.anIntArray2358[var11.value] = var2; + } + + return var11.value; + } + } + + this.anIntArray2371[this.anInt2343] = var1; + this.anIntArray2358[this.anInt2343] = var2; + this.anIntArray2352[this.anInt2343] = var3; + if (this.aBoolean2347) { + this.aFloatArray2346[this.anInt2343] = var8; + } + + this.aFloatArray2369[this.anInt2343] = var4; + this.aFloatArray2365[this.anInt2343] = var5; + this.aFloatArray2354[this.anInt2343] = var6; + this.anIntArray2348[this.anInt2343] = var7; + if (var9 != 0L) { + this.aHashTable_2353.put(var9, new LinkableInt(this.anInt2343)); + } + + return this.anInt2343++; + } + + final void method148() { + DataBuffer var1 = new DataBuffer((this.aBoolean2347 ? 40 : 36) * this.anInt2343); + + for (int var2 = 0; var2 < this.anInt2343; ++var2) { + if (HDToolKit.aBoolean1790) { + var1.writeFloat((float) this.anIntArray2371[var2]); + var1.writeFloat((float) this.anIntArray2358[var2]); + var1.writeFloat((float) this.anIntArray2352[var2]); + var1.writeInt(this.anIntArray2348[var2]); + var1.writeFloat(this.aFloatArray2369[var2]); + var1.writeFloat(this.aFloatArray2365[var2]); + var1.writeFloat(this.aFloatArray2354[var2]); + var1.writeFloat((float) this.anIntArray2371[var2] / this.aFloat2373); + var1.writeFloat((float) this.anIntArray2352[var2] / this.aFloat2373); + if (this.aBoolean2347) { + var1.writeFloat(this.aFloatArray2346[var2]); + } + } else { + var1.writeFloatLE((float) this.anIntArray2371[var2]); + var1.writeFloatLE((float) this.anIntArray2358[var2]); + var1.writeFloatLE((float) this.anIntArray2352[var2]); + var1.writeInt(this.anIntArray2348[var2]); + var1.writeFloatLE(this.aFloatArray2369[var2]); + var1.writeFloatLE(this.aFloatArray2365[var2]); + var1.writeFloatLE(this.aFloatArray2354[var2]); + var1.writeFloatLE((float) this.anIntArray2371[var2] / this.aFloat2373); + var1.writeFloatLE((float) this.anIntArray2352[var2] / this.aFloat2373); + if (this.aBoolean2347) { + var1.writeFloatLE(this.aFloatArray2346[var2]); + } + } + } + + if (HDToolKit.supportVertexBufferObject) { + ByteBuffer var3 = ByteBuffer.wrap(var1.buffer, 0, var1.index); + this.aClass156_2363 = new Class156(); + this.aClass156_2363.method2172(var3); + } else { + this.aByteBuffer2345 = ByteBuffer.allocateDirect(var1.index).order(ByteOrder.nativeOrder()); + this.aByteBuffer2345.put(var1.buffer, 0, var1.index); + this.aByteBuffer2345.flip(); + } + + this.anIntArray2371 = null; + this.anIntArray2358 = null; + this.anIntArray2352 = null; + this.anIntArray2348 = null; + this.aFloatArray2369 = null; + this.aFloatArray2365 = null; + this.aFloatArray2354 = null; + this.aHashTable_2353 = null; + this.aFloatArray2346 = null; + } + + final void method149(TileData[][][] var1, float var2, boolean var3) { + if (aClass3_Sub30_2372 != null && aClass3_Sub30_2372.buffer.length >= this.anInt2359 * 4) { + aClass3_Sub30_2372.index = 0; + } else { + aClass3_Sub30_2372 = new DataBuffer(this.anInt2359 * 4); + } + + if (aClass3_Sub30_2362 != null && aClass3_Sub30_2362.buffer.length >= this.anInt2356 * 4) { + aClass3_Sub30_2362.index = 0; + } else { + aClass3_Sub30_2362 = new DataBuffer(this.anInt2356 * 4); + } + + int var4; + TileData var5; + DataBuffer var6; + int[] var7; + int[] var8; + int var9; + int var12; + if (HDToolKit.aBoolean1790) { + for (var4 = 0; var4 < this.anInt2366; ++var4) { + var5 = var1[this.anIntArray2367[var4]][this.anIntArray2350[var4]][this.anIntArray2349[var4]]; + if (var5 != null && var5.aBoolean2222) { + var7 = this.anIntArrayArray2357[var4]; + if (this.aBoolean2364) { + var8 = this.anIntArrayArray2360[var4]; + if (var8 != null) { + for (var9 = 0; var9 < var8.length; ++var9) { + aClass3_Sub30_2362.writeInt(var8[var9]); + } + } + + var6 = this.aBooleanArray2370[var4] ? aClass3_Sub30_2362 : aClass3_Sub30_2372; + } else { + var6 = aClass3_Sub30_2372; + } + + for (var12 = 1; var12 < var7.length - 1; ++var12) { + var6.writeInt(var7[0]); + var6.writeInt(var7[var12]); + var6.writeInt(var7[var12 + 1]); + } + } + } + } else { + for (var4 = 0; var4 < this.anInt2366; ++var4) { + var5 = var1[this.anIntArray2367[var4]][this.anIntArray2350[var4]][this.anIntArray2349[var4]]; + if (var5 != null && var5.aBoolean2222) { + var7 = this.anIntArrayArray2357[var4]; + if (this.aBoolean2364) { + var8 = this.anIntArrayArray2360[var4]; + if (var8 != null) { + for (var9 = 0; var9 < var8.length; ++var9) { + aClass3_Sub30_2362.writeIntLE(var8[var9]); + } + } + + var6 = this.aBooleanArray2370[var4] ? aClass3_Sub30_2362 : aClass3_Sub30_2372; + } else { + var6 = aClass3_Sub30_2372; + } + + for (var12 = 1; var12 < var7.length - 1; ++var12) { + var6.writeIntLE(var7[0]); + var6.writeIntLE(var7[var12]); + var6.writeIntLE(var7[var12 + 1]); + } + } + } + } + + if (aClass3_Sub30_2372.index != 0 || aClass3_Sub30_2362.index != 0) { + GL var10 = HDToolKit.gl; + if (this.anInt2351 == -1 || var3) { + HDToolKit.bindTexture2D(-1); + Unsorted.method551(0, 0); + } else { + Class51.anInterface2_838.method8(this.anInt2351, true); + } + + int var11 = this.aBoolean2347 ? 40 : 36; + if (this.aClass156_2363 == null) { + if (HDToolKit.supportVertexBufferObject) { + var10.glBindBufferARB('\u8892', 0); + } + + this.aByteBuffer2345.position(0); + var10.glVertexPointer(3, 5126, var11, this.aByteBuffer2345); + this.aByteBuffer2345.position(12); + var10.glColorPointer(4, 5121, var11, this.aByteBuffer2345); + if (Class106.aBoolean1441) { + this.aByteBuffer2345.position(16); + var10.glNormalPointer(5126, var11, this.aByteBuffer2345); + } + + this.aByteBuffer2345.position(28); + var10.glTexCoordPointer(2, 5126, var11, this.aByteBuffer2345); + if (this.aBoolean2347) { + var10.glClientActiveTexture(WaterShader.method2252()); + this.aByteBuffer2345.position(36); + var10.glTexCoordPointer(1, 5126, var11, this.aByteBuffer2345); + var10.glClientActiveTexture('\u84c0'); + } + } else { + this.aClass156_2363.method2169(); + var10.glVertexPointer(3, 5126, var11, 0L); + var10.glColorPointer(4, 5121, var11, 12L); + if (Class106.aBoolean1441) { + var10.glNormalPointer(5126, var11, 16L); + } + + var10.glTexCoordPointer(2, 5126, var11, 28L); + if (this.aBoolean2347) { + var10.glClientActiveTexture(WaterShader.method2252()); + var10.glTexCoordPointer(1, 5126, var11, 36L); + var10.glClientActiveTexture('\u84c0'); + } + } + + if (HDToolKit.supportVertexBufferObject) { + var10.glBindBufferARB('\u8893', 0); + } + + if (aClass3_Sub30_2372.index != 0) { + if (aByteBuffer2368 != null && aByteBuffer2368.capacity() >= aClass3_Sub30_2372.index) { + aByteBuffer2368.clear(); + } else { + aByteBuffer2368 = ByteBuffer.allocateDirect(aClass3_Sub30_2372.index).order(ByteOrder.nativeOrder()); + } + + aByteBuffer2368.put(aClass3_Sub30_2372.buffer, 0, aClass3_Sub30_2372.index); + aByteBuffer2368.flip(); + HDToolKit.method1832(var2); + var10.glDrawElements(4, aClass3_Sub30_2372.index / 4, 5125, aByteBuffer2368); + } + + if (aClass3_Sub30_2362.index != 0) { + if (aByteBuffer2361 != null && aByteBuffer2361.capacity() >= aClass3_Sub30_2362.index) { + aByteBuffer2361.clear(); + } else { + aByteBuffer2361 = ByteBuffer.allocateDirect(aClass3_Sub30_2362.index).order(ByteOrder.nativeOrder()); + } + + aByteBuffer2361.put(aClass3_Sub30_2362.buffer, 0, aClass3_Sub30_2362.index); + aByteBuffer2361.flip(); + HDToolKit.method1832(var2 - 100.0F); + HDToolKit.depthBufferWritingDisabled(); + var10.glDrawElements(4, aClass3_Sub30_2362.index / 4, 5125, aByteBuffer2361); + HDToolKit.method1830(); + } + + } + } + + final void method150(int var1, int var2, int var3, int[] var4, int[] var5, boolean var6) { + if (this.aBoolean2364) { + this.anIntArrayArray2360[this.anInt2366] = var5; + this.aBooleanArray2370[this.anInt2366] = var6; + if (var5 != null) { + this.anInt2356 += var5.length; + } + + if (var6) { + this.anInt2356 += 3 * (var4.length - 2); + } else { + this.anInt2359 += 3 * (var4.length - 2); + } + } else { + this.anInt2359 += 3 * (var4.length - 2); + } + + this.anIntArray2367[this.anInt2366] = var1; + this.anIntArray2350[this.anInt2366] = var2; + this.anIntArray2349[this.anInt2366] = var3; + this.anIntArrayArray2357[this.anInt2366] = var4; + this.anInt2366++; + } + + Class3_Sub11(int var1, float var2, boolean var3, boolean var4, int var5) { + this.anInt2351 = var1; + this.aFloat2373 = var2; + this.aBoolean2364 = var3; + this.aBoolean2347 = var4; + this.anInt2355 = var5; + } +} diff --git a/Client/src/main/java/org/runite/client/Class3_Sub14.java b/Client/src/main/java/org/runite/client/Class3_Sub14.java new file mode 100644 index 000000000..c006505b0 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class3_Sub14.java @@ -0,0 +1,551 @@ +package org.runite.client; + +import org.rs09.client.Linkable; + +final class Class3_Sub14 extends Linkable { + + private static float[] aFloatArray2387; + private static float[] aFloatArray2388; + private int anInt2389; + private int anInt2390; + private static int[] anIntArray2391; + private static Class152[] aClass152Array2392; + private static boolean[] aBooleanArray2393; + private float[] aFloatArray2394; + private boolean aBoolean2395; + private static int anInt2396; + private int anInt2397; + private static Class150[] aClass150Array2398; + private static float[] aFloatArray2399; + private static float[] aFloatArray2400; + private int anInt2401; + private static int anInt2402; + private static float[] aFloatArray2403; + private static int anInt2404; + private static boolean aBoolean2405 = false; + static Class71[] aClass71Array2406; + private static Class59[] aClass59Array2407; + private int anInt2408; + private static int[] anIntArray2409; + private byte[][] aByteArrayArray2410; + private boolean aBoolean2411; + private int anInt2412; + private static float[] aFloatArray2413; + private static int anInt2414; + private byte[] aByteArray2415; + private static float[] aFloatArray2416; + private static byte[] aByteArray2417; + private int anInt2418; + private int anInt2419; + private static int[] anIntArray2420; + + + static float method358(int var0) { + int var1 = var0 & 2097151; + int var2 = var0 & Integer.MIN_VALUE; + int var3 = (var0 & 2145386496) >> 21; + if(var2 != 0) { + var1 = -var1; + } + + return (float)((double)var1 * Math.pow(2.0D, var3 - 788)); + } + + final PcmSound method359(int[] var1) { + if(var1 != null && var1[0] <= 0) { + return null; + } else { + if(this.aByteArray2415 == null) { + this.anInt2389 = 0; + this.aFloatArray2394 = new float[anInt2396]; + this.aByteArray2415 = new byte[this.anInt2390]; + this.anInt2419 = 0; + this.anInt2418 = 0; + } + + for(; this.anInt2418 < this.aByteArrayArray2410.length; ++this.anInt2418) { + if(var1 != null && var1[0] <= 0) { + return null; + } + + float[] var2 = this.method366(this.anInt2418); + if(var2 != null) { + int var3 = this.anInt2419; + int var4 = var2.length; + if(var4 > this.anInt2390 - var3) { + var4 = this.anInt2390 - var3; + } + + for(int var5 = 0; var5 < var4; ++var5) { + int var6 = (int)(128.0F + var2[var5] * 128.0F); + if((var6 & -256) != 0) { + var6 = ~var6 >> 31; + } + + this.aByteArray2415[var3++] = (byte)(var6 - 128); + } + + if(var1 != null) { + var1[0] -= var3 - this.anInt2419; + } + + this.anInt2419 = var3; + } + } + + this.aFloatArray2394 = null; + byte[] var7 = this.aByteArray2415; + this.aByteArray2415 = null; + return new PcmSound(this.anInt2408, var7, this.anInt2397, this.anInt2401, this.aBoolean2395); + } + } + + private void method360(byte[] var1) { + DataBuffer var2 = new DataBuffer(var1); + this.anInt2408 = var2.readInt(); + this.anInt2390 = var2.readInt(); + this.anInt2397 = var2.readInt(); + this.anInt2401 = var2.readInt(); + if(this.anInt2401 < 0) { + this.anInt2401 = ~this.anInt2401; + this.aBoolean2395 = true; + } + + int var3 = var2.readInt(); + this.aByteArrayArray2410 = new byte[var3][]; + + for(int var4 = 0; var4 < var3; ++var4) { + int var5 = 0; + + int var6; + do { + var6 = var2.readUnsignedByte(); + var5 += var6; + } while(var6 >= 255); + + byte[] var7 = new byte[var5]; + var2.readBytes(var7, var5); + this.aByteArrayArray2410[var4] = var7; + } + + } + + private static boolean method362(CacheIndex var0) { + if(!aBoolean2405) { + byte[] var1 = var0.getFile(0, 0); + if(var1 == null) { + return false; + } + + method367(var1); + aBoolean2405 = true; + } + + return true; + } + + static Class3_Sub14 method363(CacheIndex var0, int var1, int var2) { + if(method362(var0)) { + byte[] var3 = var0.getFile(var1, var2); + return var3 == null?null:new Class3_Sub14(var3); + } else { + var0.method2129((byte)95, var2, var1); + return null; + } + } + + static int method364() { + int var0 = aByteArray2417[anInt2404] >> anInt2414 & 1; + ++anInt2414; + anInt2404 += anInt2414 >> 3; + anInt2414 &= 7; + return var0; + } + + private static void method365(byte[] var0) { + aByteArray2417 = var0; + anInt2404 = 0; + anInt2414 = 0; + } + + private float[] method366(int var1) { + method365(this.aByteArrayArray2410[var1]); + method364(); + int var2 = method368(Class3_Sub26.method513(anIntArray2420.length - 1)); + boolean var3 = aBooleanArray2393[var2]; + int var4 = var3?anInt2396:anInt2402; + boolean var5 = false; + boolean var6 = false; + if(var3) { + var5 = method364() != 0; + var6 = method364() != 0; + } + + int var7 = var4 >> 1; + int var8; + int var9; + int var10; + if(var3 && !var5) { + var8 = (var4 >> 2) - (anInt2402 >> 2); + var9 = (var4 >> 2) + (anInt2402 >> 2); + var10 = anInt2402 >> 1; + } else { + var8 = 0; + var9 = var7; + var10 = var4 >> 1; + } + + int var11; + int var12; + int var13; + if(var3 && !var6) { + var11 = var4 - (var4 >> 2) - (anInt2402 >> 2); + var12 = var4 - (var4 >> 2) + (anInt2402 >> 2); + var13 = anInt2402 >> 1; + } else { + var11 = var7; + var12 = var4; + var13 = var4 >> 1; + } + + Class150 var14 = aClass150Array2398[anIntArray2420[var2]]; + int var16 = var14.anInt1928; + int var17 = var14.anIntArray1929[var16]; + boolean var15 = !aClass59Array2407[var17].method1205(); + + for(var17 = 0; var17 < var14.anInt1931; ++var17) { + Class152 var18 = aClass152Array2392[var14.anIntArray1930[var17]]; + float[] var19 = aFloatArray2403; + var18.method2112(var19, var4 >> 1, var15); + } + + int var44; + if(!var15) { + var17 = var14.anInt1928; + var44 = var14.anIntArray1929[var17]; + aClass59Array2407[var44].method1202(aFloatArray2403, var4 >> 1); + } + + int var41; + if(var15) { + for(var17 = var4 >> 1; var17 < var4; ++var17) { + aFloatArray2403[var17] = 0.0F; + } + } else { + var17 = var4 >> 1; + var44 = var4 >> 2; + var41 = var4 >> 3; + float[] var20 = aFloatArray2403; + + int var21; + for(var21 = 0; var21 < var17; ++var21) { + var20[var21] *= 0.5F; + } + + for(var21 = var17; var21 < var4; ++var21) { + var20[var21] = -var20[var4 - var21 - 1]; + } + + float[] var46 = var3?aFloatArray2399:aFloatArray2400; + float[] var22 = var3?aFloatArray2387:aFloatArray2413; + float[] var23 = var3?aFloatArray2388:aFloatArray2416; + int[] var24 = var3?anIntArray2409:anIntArray2391; + + int var25; + float var27; + float var26; + float var29; + float var28; + for(var25 = 0; var25 < var44; ++var25) { + var26 = var20[4 * var25] - var20[var4 - 4 * var25 - 1]; + var27 = var20[4 * var25 + 2] - var20[var4 - 4 * var25 - 3]; + var28 = var46[2 * var25]; + var29 = var46[2 * var25 + 1]; + var20[var4 - 4 * var25 - 1] = var26 * var28 - var27 * var29; + var20[var4 - 4 * var25 - 3] = var26 * var29 + var27 * var28; + } + + float var31; + float var30; + for(var25 = 0; var25 < var41; ++var25) { + var26 = var20[var17 + 3 + 4 * var25]; + var27 = var20[var17 + 1 + 4 * var25]; + var28 = var20[4 * var25 + 3]; + var29 = var20[4 * var25 + 1]; + var20[var17 + 3 + 4 * var25] = var26 + var28; + var20[var17 + 1 + 4 * var25] = var27 + var29; + var30 = var46[var17 - 4 - 4 * var25]; + var31 = var46[var17 - 3 - 4 * var25]; + var20[4 * var25 + 3] = (var26 - var28) * var30 - (var27 - var29) * var31; + var20[4 * var25 + 1] = (var27 - var29) * var30 + (var26 - var28) * var31; + } + + var25 = Class3_Sub26.method513(var4 - 1); + + int var47; + int var49; + int var48; + int var52; + for(var49 = 0; var49 < var25 - 3; ++var49) { + var47 = var4 >> var49 + 2; + var48 = 8 << var49; + + for(var52 = 0; var52 < 2 << var49; ++var52) { + int var50 = var4 - var47 * 2 * var52; + int var51 = var4 - var47 * (2 * var52 + 1); + + for(int var32 = 0; var32 < var4 >> var49 + 4; ++var32) { + int var33 = 4 * var32; + float var34 = var20[var50 - 1 - var33]; + float var35 = var20[var50 - 3 - var33]; + float var36 = var20[var51 - 1 - var33]; + float var37 = var20[var51 - 3 - var33]; + var20[var50 - 1 - var33] = var34 + var36; + var20[var50 - 3 - var33] = var35 + var37; + float var38 = var46[var32 * var48]; + float var39 = var46[var32 * var48 + 1]; + var20[var51 - 1 - var33] = (var34 - var36) * var38 - (var35 - var37) * var39; + var20[var51 - 3 - var33] = (var35 - var37) * var38 + (var34 - var36) * var39; + } + } + } + + for(var49 = 1; var49 < var41 - 1; ++var49) { + var47 = var24[var49]; + if(var49 < var47) { + var48 = 8 * var49; + var52 = 8 * var47; + var30 = var20[var48 + 1]; + var20[var48 + 1] = var20[var52 + 1]; + var20[var52 + 1] = var30; + var30 = var20[var48 + 3]; + var20[var48 + 3] = var20[var52 + 3]; + var20[var52 + 3] = var30; + var30 = var20[var48 + 5]; + var20[var48 + 5] = var20[var52 + 5]; + var20[var52 + 5] = var30; + var30 = var20[var48 + 7]; + var20[var48 + 7] = var20[var52 + 7]; + var20[var52 + 7] = var30; + } + } + + for(var49 = 0; var49 < var17; ++var49) { + var20[var49] = var20[2 * var49 + 1]; + } + + for(var49 = 0; var49 < var41; ++var49) { + var20[var4 - 1 - 2 * var49] = var20[4 * var49]; + var20[var4 - 2 - 2 * var49] = var20[4 * var49 + 1]; + var20[var4 - var44 - 1 - 2 * var49] = var20[4 * var49 + 2]; + var20[var4 - var44 - 2 - 2 * var49] = var20[4 * var49 + 3]; + } + + for(var49 = 0; var49 < var41; ++var49) { + var27 = var23[2 * var49]; + var28 = var23[2 * var49 + 1]; + var29 = var20[var17 + 2 * var49]; + var30 = var20[var17 + 2 * var49 + 1]; + var31 = var20[var4 - 2 - 2 * var49]; + float var54 = var20[var4 - 1 - 2 * var49]; + float var53 = var28 * (var29 - var31) + var27 * (var30 + var54); + var20[var17 + 2 * var49] = (var29 + var31 + var53) * 0.5F; + var20[var4 - 2 - 2 * var49] = (var29 + var31 - var53) * 0.5F; + var53 = var28 * (var30 + var54) - var27 * (var29 - var31); + var20[var17 + 2 * var49 + 1] = (var30 - var54 + var53) * 0.5F; + var20[var4 - 1 - 2 * var49] = (-var30 + var54 + var53) * 0.5F; + } + + for(var49 = 0; var49 < var44; ++var49) { + var20[var49] = var20[2 * var49 + var17] * var22[2 * var49] + var20[2 * var49 + 1 + var17] * var22[2 * var49 + 1]; + var20[var17 - 1 - var49] = var20[2 * var49 + var17] * var22[2 * var49 + 1] - var20[2 * var49 + 1 + var17] * var22[2 * var49]; + } + + for(var49 = 0; var49 < var44; ++var49) { + var20[var4 - var44 + var49] = -var20[var49]; + } + + for(var49 = 0; var49 < var44; ++var49) { + var20[var49] = var20[var44 + var49]; + } + + for(var49 = 0; var49 < var44; ++var49) { + var20[var44 + var49] = -var20[var44 - var49 - 1]; + } + + for(var49 = 0; var49 < var44; ++var49) { + var20[var17 + var49] = var20[var4 - var49 - 1]; + } + + for(var49 = var8; var49 < var9; ++var49) { + var27 = (float)Math.sin(((double)(var49 - var8) + 0.5D) / (double)var10 * 0.5D * 3.141592653589793D); + aFloatArray2403[var49] *= (float)Math.sin(1.5707963267948966D * (double)var27 * (double)var27); + } + + for(var49 = var11; var49 < var12; ++var49) { + var27 = (float)Math.sin(((double)(var49 - var11) + 0.5D) / (double)var13 * 0.5D * 3.141592653589793D + 1.5707963267948966D); + aFloatArray2403[var49] *= (float)Math.sin(1.5707963267948966D * (double)var27 * (double)var27); + } + } + + float[] var42 = null; + if(this.anInt2389 > 0) { + var44 = this.anInt2389 + var4 >> 2; + var42 = new float[var44]; + int var45; + if(!this.aBoolean2411) { + for(var41 = 0; var41 < this.anInt2412; ++var41) { + var45 = (this.anInt2389 >> 1) + var41; + var42[var41] += this.aFloatArray2394[var45]; + } + } + + if(!var15) { + for(var41 = var8; var41 < var4 >> 1; ++var41) { + var45 = var42.length - (var4 >> 1) + var41; + var42[var45] += aFloatArray2403[var41]; + } + } + } + + float[] var43 = this.aFloatArray2394; + this.aFloatArray2394 = aFloatArray2403; + aFloatArray2403 = var43; + this.anInt2389 = var4; + this.anInt2412 = var12 - (var4 >> 1); + this.aBoolean2411 = var15; + return var42; + } + + private static void method367(byte[] var0) { + method365(var0); + anInt2402 = 1 << method368(4); + anInt2396 = 1 << method368(4); + aFloatArray2403 = new float[anInt2396]; + + int var1; + int var2; + int var3; + int var4; + int var5; + for(var1 = 0; var1 < 2; ++var1) { + var2 = var1 != 0?anInt2396:anInt2402; + var3 = var2 >> 1; + var4 = var2 >> 2; + var5 = var2 >> 3; + float[] var6 = new float[var3]; + + for(int var7 = 0; var7 < var4; ++var7) { + var6[2 * var7] = (float)Math.cos((double)(4 * var7) * 3.141592653589793D / (double)var2); + var6[2 * var7 + 1] = -((float)Math.sin((double)(4 * var7) * 3.141592653589793D / (double)var2)); + } + + float[] var13 = new float[var3]; + + for(int var8 = 0; var8 < var4; ++var8) { + var13[2 * var8] = (float)Math.cos((double)(2 * var8 + 1) * 3.141592653589793D / (double)(2 * var2)); + var13[2 * var8 + 1] = (float)Math.sin((double)(2 * var8 + 1) * 3.141592653589793D / (double)(2 * var2)); + } + + float[] var14 = new float[var4]; + + for(int var9 = 0; var9 < var5; ++var9) { + var14[2 * var9] = (float)Math.cos((double)(4 * var9 + 2) * 3.141592653589793D / (double)var2); + var14[2 * var9 + 1] = -((float)Math.sin((double)(4 * var9 + 2) * 3.141592653589793D / (double)var2)); + } + + int[] var15 = new int[var5]; + int var10 = Class3_Sub26.method513(var5 - 1); + + for(int var11 = 0; var11 < var5; ++var11) { + var15[var11] = Class3_Sub28_Sub3.method540(var10, var11); + } + + if(var1 == 0) { + aFloatArray2400 = var6; + aFloatArray2413 = var13; + aFloatArray2416 = var14; + anIntArray2391 = var15; + } else { + aFloatArray2399 = var6; + aFloatArray2387 = var13; + aFloatArray2388 = var14; + anIntArray2409 = var15; + } + } + + var1 = method368(8) + 1; + aClass71Array2406 = new Class71[var1]; + + for(var2 = 0; var2 < var1; ++var2) { + aClass71Array2406[var2] = new Class71(); + } + + var2 = method368(6) + 1; + + for(var3 = 0; var3 < var2; ++var3) { + method368(16); + } + + var2 = method368(6) + 1; + aClass59Array2407 = new Class59[var2]; + + for(var3 = 0; var3 < var2; ++var3) { + aClass59Array2407[var3] = new Class59(); + } + + var3 = method368(6) + 1; + aClass152Array2392 = new Class152[var3]; + + for(var4 = 0; var4 < var3; ++var4) { + aClass152Array2392[var4] = new Class152(); + } + + var4 = method368(6) + 1; + aClass150Array2398 = new Class150[var4]; + + for(var5 = 0; var5 < var4; ++var5) { + aClass150Array2398[var5] = new Class150(); + } + + var5 = method368(6) + 1; + aBooleanArray2393 = new boolean[var5]; + anIntArray2420 = new int[var5]; + + for(int var12 = 0; var12 < var5; ++var12) { + aBooleanArray2393[var12] = method364() != 0; + method368(16); + method368(16); + anIntArray2420[var12] = method368(8); + } + + } + + static int method368(int var0) { + int var1 = 0; + + int var2; + int var3; + for(var2 = 0; var0 >= 8 - anInt2414; var0 -= var3) { + var3 = 8 - anInt2414; + int var4 = (1 << var3) - 1; + var1 += (aByteArray2417[anInt2404] >> anInt2414 & var4) << var2; + anInt2414 = 0; + ++anInt2404; + var2 += var3; + } + + if(var0 > 0) { + var3 = (1 << var0) - 1; + var1 += (aByteArray2417[anInt2404] >> anInt2414 & var3) << var2; + anInt2414 += var0; + } + + return var1; + } + + private Class3_Sub14(byte[] var1) { + this.method360(var1); + } + +} diff --git a/Client/src/main/java/org/runite/client/Class3_Sub15.java b/Client/src/main/java/org/runite/client/Class3_Sub15.java new file mode 100644 index 000000000..54a1a008a --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class3_Sub15.java @@ -0,0 +1,587 @@ +package org.runite.client; + +import org.rs09.client.Linkable; +import org.rs09.client.data.ReferenceCache; +import org.rs09.client.net.Connection; + +public final class Class3_Sub15 extends Linkable { + + static int anInt2421 = -1; + byte[] aByteArray2422; + private int[] anIntArray2423; + int anInt2424; + byte[] aByteArray2425; + static int anInt2426; + static boolean aBoolean2427 = false; + static ReferenceCache aReferenceCache_2428 = new ReferenceCache(50); + public static Connection activeConnection; + byte[] aByteArray2430; + PcmSound[] aPcmSoundArray2431; + static boolean aBoolean2433 = false; + short[] aShortArray2434; + Class166[] aClass166Array2435; + + + final void method369() { + try { + this.anIntArray2423 = null; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "jk.A(" + (byte) -124 + ')'); + } + } + + static void method370() { + try { + //int var1 = -125 / ((0 - var0) / 59); + RenderAnimationDefinition.aReferenceCache_1955.clear(); + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "jk.B(" + (byte) -73 + ')'); + } + } + + static Class3_Sub28_Sub3 method371(RSString var1) { + try { + + for (Class3_Sub28_Sub3 var2 = (Class3_Sub28_Sub3) Class134.aLinkedList_1758.startIteration(); var2 != null; var2 = (Class3_Sub28_Sub3) Class134.aLinkedList_1758.nextIteration()) { + if (var2.aString_3561.equalsString(var1)) { + return var2; + } + } + + return null; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "jk.C(" + 2 + ',' + (var1 != null ? "{...}" : "null") + ')'); + } + } + + final boolean method373(int[] var2, Class83 var3, byte[] var4) { + try { + int var6 = 0; + PcmSound var7 = null; + boolean var5 = true; + + for (int var8 = 0; var8 < 128; ++var8) { + if (null == var4 || var4[var8] != 0) { + int var9 = this.anIntArray2423[var8]; + if (var9 != 0) { + if (var6 != var9) { + var6 = var9--; + if ((var9 & 1) == 0) { + var7 = var3.method1413(var9 >> 2, var2); + } else { + var7 = var3.method1416(var9 >> 2, var2); + } + + if (var7 == null) { + var5 = false; + } + } + + if (null != var7) { + this.aPcmSoundArray2431[var8] = var7; + this.anIntArray2423[var8] = 0; + } + } + } + } + + return var5; + } catch (RuntimeException var10) { + throw ClientErrorException.clientError(var10, "jk.E(" + 17904 + ',' + (var2 != null ? "{...}" : "null") + ',' + (var3 != null ? "{...}" : "null") + ',' + (var4 != null ? "{...}" : "null") + ')'); + } + } + + static void method374(int var0, boolean var1, byte[] var2, int var3, Class91[] var5) { + try { + DataBuffer var6 = new DataBuffer(var2); + int objectId = -1; + + while (var6.buffer.length > 0) { + int var8 = var6.method773(); + if (0 == var8) { + + return; + } + + objectId += var8; + int data = 0; + + while (true) { + int var10 = var6.getSmart(); + if (var10 == 0) { + break; + } + + data += var10 - 1; + int var11 = data & 63; + int var13 = data >> 12; + int var12 = data >> 6 & 63; + int var14 = var6.readUnsignedByte(); + int var15 = var14 >> 2; + int var16 = var14 & 3; + int var17 = var0 + var12; + int var18 = var11 + var3; + if (var17 > 0 && var18 > 0 && var17 < 103 && var18 < 103) { + Class91 var19 = null; + if (!var1) { + int var20 = var13; + if ((2 & Unsorted.sceneryTypeMaskGrid[1][var17][var18]) == 2) { + var20 = var13 - 1; + } + + if (0 <= (var20 %= 4)) { + var19 = var5[var20]; + } + } + + Scenery.method1683(var13 % 4, !var1, var13, var1, var19, objectId, var15, var17, var18, var16); + } + } + } + } catch (RuntimeException var21) { + throw ClientErrorException.clientError(var21, "jk.F(" + var0 + ',' + var1 + ',' + (var2 != null ? "{...}" : "null") + ',' + var3 + ',' + 0 + ',' + (var5 != null ? "{...}" : "null") + ')'); + } + } + + public Class3_Sub15() { + } + + Class3_Sub15(byte[] var1) { + try { + this.aShortArray2434 = new short[128]; + this.aByteArray2430 = new byte[128]; + this.aPcmSoundArray2431 = new PcmSound[128]; + this.aByteArray2422 = new byte[128]; + this.aClass166Array2435 = new Class166[128]; + this.anIntArray2423 = new int[128]; + int var3 = 0; + this.aByteArray2425 = new byte[128]; + + DataBuffer buffer; + for (buffer = new DataBuffer(var1); buffer.buffer[var3 + buffer.index] != 0; ++var3) { + } + + byte[] var4 = new byte[var3]; + + int var5; + for (var5 = 0; var3 > var5; ++var5) { + var4[var5] = buffer.readSignedByte(); + } + + ++buffer.index; + ++var3; + var5 = buffer.index; + buffer.index += var3; + + int var6; + for (var6 = 0; 0 != buffer.buffer[buffer.index + var6]; ++var6) { + } + + byte[] var7 = new byte[var6]; + + int var8; + for (var8 = 0; var6 > var8; ++var8) { + var7[var8] = buffer.readSignedByte(); + } + + ++buffer.index; + ++var6; + int var9 = 0; + var8 = buffer.index; + + for (buffer.index += var6; buffer.buffer[var9 + buffer.index] != 0; ++var9) { + } + + byte[] var10 = new byte[var9]; + + for (int var11 = 0; var9 > var11; ++var11) { + var10[var11] = buffer.readSignedByte(); + } + + ++buffer.index; + ++var9; + byte[] var37 = new byte[var9]; + int var12; + int var14; + if (var9 <= 1) { + var12 = var9; + } else { + var12 = 2; + var37[1] = 1; + int var13 = 1; + + for (var14 = 2; var14 < var9; ++var14) { + int var15 = buffer.readUnsignedByte(); + if (0 == var15) { + var13 = var12++; + } else { + if (var15 <= var13) { + --var15; + } + + var13 = var15; + } + + var37[var14] = (byte) var13; + } + } + + Class166[] var38 = new Class166[var12]; + + Class166 var41; + for (var14 = 0; var14 < var38.length; ++var14) { + var41 = var38[var14] = new Class166(); + int var16 = buffer.readUnsignedByte(); + if (0 < var16) { + var41.aByteArray2064 = new byte[2 * var16]; + } + + var16 = buffer.readUnsignedByte(); + if (var16 > 0) { + var41.aByteArray2076 = new byte[var16 * 2 + 2]; + var41.aByteArray2076[1] = 64; + } + } + + var14 = buffer.readUnsignedByte(); + byte[] var40 = var14 > 0 ? new byte[var14 * 2] : null; + var14 = buffer.readUnsignedByte(); + byte[] var39 = var14 > 0 ? new byte[var14 * 2] : null; + + int var17; + for (var17 = 0; buffer.buffer[var17 + buffer.index] != 0; ++var17) { + } + + byte[] var18 = new byte[var17]; + + int var19; + for (var19 = 0; var19 < var17; ++var19) { + var18[var19] = buffer.readSignedByte(); + } + + ++buffer.index; + ++var17; + var19 = 0; + + int var20; + for (var20 = 0; var20 < 128; ++var20) { + var19 += buffer.readUnsignedByte(); + this.aShortArray2434[var20] = (short) var19; + } + + var19 = 0; + + for (var20 = 0; var20 < 128; ++var20) { + var19 += buffer.readUnsignedByte(); + this.aShortArray2434[var20] = (short) (this.aShortArray2434[var20] + (var19 << 8)); + } + + var20 = 0; + int var21 = 0; + int var22 = 0; + + int var23; + for (var23 = 0; var23 < 128; ++var23) { + if (var20 == 0) { + if (var21 < var18.length) { + var20 = var18[var21++]; + } else { + var20 = -1; + } + + var22 = buffer.method741(); + } + + this.aShortArray2434[var23] = (short) (this.aShortArray2434[var23] + Unsorted.bitwiseAnd(32768, -1 + var22 << 14)); + this.anIntArray2423[var23] = var22; + --var20; + } + + var20 = 0; + var23 = 0; + var21 = 0; + + int var24; + for (var24 = 0; var24 < 128; ++var24) { + if (this.anIntArray2423[var24] != 0) { + if (var20 == 0) { + var23 = buffer.buffer[var5++] + -1; + if (var4.length > var21) { + var20 = var4[var21++]; + } else { + var20 = -1; + } + } + + --var20; + this.aByteArray2425[var24] = (byte) var23; + } + } + + var20 = 0; + var21 = 0; + var24 = 0; + + for (int var25 = 0; var25 < 128; ++var25) { + if (this.anIntArray2423[var25] != 0) { + if (0 == var20) { + var24 = buffer.buffer[var8++] - -16 << 2; + if (var7.length > var21) { + var20 = var7[var21++]; + } else { + var20 = -1; + } + } + + --var20; + this.aByteArray2422[var25] = (byte) var24; + } + } + + var21 = 0; + var20 = 0; + Class166 var43 = null; + + int var26; + for (var26 = 0; var26 < 128; ++var26) { + if (this.anIntArray2423[var26] != 0) { + if (var20 == 0) { + var43 = var38[var37[var21]]; + if (var21 >= var10.length) { + var20 = -1; + } else { + var20 = var10[var21++]; + } + } + + this.aClass166Array2435[var26] = var43; + --var20; + } + } + + var20 = 0; + var21 = 0; + var26 = 0; + + int var27; + for (var27 = 0; var27 < 128; ++var27) { + if (var20 == 0) { + if (var18.length > var21) { + var20 = var18[var21++]; + } else { + var20 = -1; + } + + if (this.anIntArray2423[var27] > 0) { + var26 = buffer.readUnsignedByte() + 1; + } + } + + --var20; + this.aByteArray2430[var27] = (byte) var26; + } + + this.anInt2424 = buffer.readUnsignedByte() + 1; + + int var29; + Class166 var28; + for (var27 = 0; var27 < var12; ++var27) { + var28 = var38[var27]; + if (var28.aByteArray2064 != null) { + for (var29 = 1; var29 < var28.aByteArray2064.length; var29 += 2) { + var28.aByteArray2064[var29] = buffer.readSignedByte(); + } + } + + if (var28.aByteArray2076 != null) { + for (var29 = 3; var29 < var28.aByteArray2076.length + -2; var29 += 2) { + var28.aByteArray2076[var29] = buffer.readSignedByte(); + } + } + } + + if (null != var40) { + for (var27 = 1; var40.length > var27; var27 += 2) { + var40[var27] = buffer.readSignedByte(); + } + } + + if (null != var39) { + for (var27 = 1; var27 < var39.length; var27 += 2) { + var39[var27] = buffer.readSignedByte(); + } + } + + for (var27 = 0; var27 < var12; ++var27) { + var28 = var38[var27]; + if (null != var28.aByteArray2076) { + var19 = 0; + + for (var29 = 2; var28.aByteArray2076.length > var29; var29 += 2) { + var19 -= -1 + -buffer.readUnsignedByte(); + var28.aByteArray2076[var29] = (byte) var19; + } + } + } + + for (var27 = 0; var12 > var27; ++var27) { + var28 = var38[var27]; + if (null != var28.aByteArray2064) { + var19 = 0; + + for (var29 = 2; var28.aByteArray2064.length > var29; var29 += 2) { + var19 = var19 - -1 - -buffer.readUnsignedByte(); + var28.aByteArray2064[var29] = (byte) var19; + } + } + } + + byte var30; + int var34; + int var32; + int var33; + int var44; + byte var48; + if (null != var40) { + var19 = buffer.readUnsignedByte(); + var40[0] = (byte) var19; + + for (var27 = 2; var40.length > var27; var27 += 2) { + var19 = 1 + (var19 - -buffer.readUnsignedByte()); + var40[var27] = (byte) var19; + } + + var48 = var40[0]; + byte var46 = var40[1]; + + for (var29 = 0; var29 < var48; ++var29) { + this.aByteArray2430[var29] = (byte) (32 + var46 * this.aByteArray2430[var29] >> 6); + } + + for (var29 = 2; var29 < var40.length; var48 = var30) { + var30 = var40[var29]; + byte var31 = var40[1 + var29]; + var29 += 2; + var32 = (var30 - var48) * var46 + (var30 - var48) / 2; + + for (var33 = var48; var30 > var33; ++var33) { + var34 = TextureOperation14.method319(var32, -125, -var48 + var30); + var32 += var31 + -var46; + this.aByteArray2430[var33] = (byte) (var34 * this.aByteArray2430[var33] - -32 >> 6); + } + + var46 = var31; + } + + for (var44 = var48; var44 < 128; ++var44) { + this.aByteArray2430[var44] = (byte) (32 + this.aByteArray2430[var44] * var46 >> 6); + } + } + + if (null != var39) { + var19 = buffer.readUnsignedByte(); + var39[0] = (byte) var19; + + for (var27 = 2; var27 < var39.length; var27 += 2) { + var19 = 1 + (var19 - -buffer.readUnsignedByte()); + var39[var27] = (byte) var19; + } + + var48 = var39[0]; + int var47 = var39[1] << 1; + + for (var29 = 0; var29 < var48; ++var29) { + var44 = var47 + (255 & this.aByteArray2422[var29]); + if (var44 < 0) { + var44 = 0; + } + + if (128 < var44) { + var44 = 128; + } + + this.aByteArray2422[var29] = (byte) var44; + } + + int var45; + for (var29 = 2; var39.length > var29; var47 = var45) { + var30 = var39[var29]; + var32 = (-var48 + var30) * var47 - -((var30 - var48) / 2); + var45 = var39[1 + var29] << 1; + var29 += 2; + + for (var33 = var48; var30 > var33; ++var33) { + var34 = TextureOperation14.method319(var32, -116, -var48 + var30); + var32 += -var47 + var45; + int var35 = var34 + (this.aByteArray2422[var33] & 0xFF); + if (var35 < 0) { + var35 = 0; + } + + if (var35 > 128) { + var35 = 128; + } + + this.aByteArray2422[var33] = (byte) var35; + } + + var48 = var30; + } + + for (var44 = var48; var44 < 128; ++var44) { + var45 = (255 & this.aByteArray2422[var44]) + var47; + if (var45 < 0) { + var45 = 0; + } + + if (128 < var45) { + var45 = 128; + } + + this.aByteArray2422[var44] = (byte) var45; + } + } + + for (var27 = 0; var12 > var27; ++var27) { + var38[var27].anInt2078 = buffer.readUnsignedByte(); + } + + for (var27 = 0; var27 < var12; ++var27) { + var28 = var38[var27]; + if (null != var28.aByteArray2064) { + var28.anInt2067 = buffer.readUnsignedByte(); + } + + if (null != var28.aByteArray2076) { + var28.anInt2071 = buffer.readUnsignedByte(); + } + + if (var28.anInt2078 > 0) { + var28.anInt2063 = buffer.readUnsignedByte(); + } + } + + for (var27 = 0; var12 > var27; ++var27) { + var38[var27].anInt2077 = buffer.readUnsignedByte(); + } + + for (var27 = 0; var12 > var27; ++var27) { + var28 = var38[var27]; + if (var28.anInt2077 > 0) { + var28.anInt2066 = buffer.readUnsignedByte(); + } + } + + for (var27 = 0; var27 < var12; ++var27) { + var28 = var38[var27]; + if (var28.anInt2066 > 0) { + var28.anInt2069 = buffer.readUnsignedByte(); + } + } + + } catch (RuntimeException var36) { + throw ClientErrorException.clientError(var36, "jk.(" + (var1 != null ? "{...}" : "null") + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class3_Sub17.java b/Client/src/main/java/org/runite/client/Class3_Sub17.java new file mode 100644 index 000000000..da3ccee03 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class3_Sub17.java @@ -0,0 +1,133 @@ +package org.runite.client; + +import org.rs09.client.Linkable; + +public final class Class3_Sub17 extends Linkable { + + int anInt2454; + int[] anIntArray2455; + static int anInt2456; + static float aFloat2457; + int[][] anIntArrayArray2460; + int anInt2462; + boolean[] aBooleanArray2463; + + private static RSString aString_2465 = RSString.parse(""); + int[] anIntArray2466; + + static void method381() { + try { + if(ConfigInventoryDefinition.anInt3655 != -1) { + Class52.method1160(-120, ConfigInventoryDefinition.anInt3655); + } + + for(int var1 = 0; var1 < Class3_Sub28_Sub3.anInt3557; ++var1) { + if(Unsorted.aBooleanArray3674[var1]) { + Class163_Sub1_Sub1.aBooleanArray4008[var1] = true; + } + + Unsorted.aBooleanArray1712[var1] = Unsorted.aBooleanArray3674[var1]; + Unsorted.aBooleanArray3674[var1] = false; + } + + Class53.anInt865 = -1; + Class99.aClass11_1402 = null; + Class3_Sub23.anInt2535 = Class44.anInt719; + if(HDToolKit.highDetail) { + Unsorted.aBoolean47 = true; + } + + Unsorted.anInt2567 = -1; + + if(ConfigInventoryDefinition.anInt3655 != -1) { + Class3_Sub28_Sub3.anInt3557 = 0; + Class8.method841(); + } + + if(HDToolKit.highDetail) { + Class22.resetClipping(); + } else { + Class74.resetClipping(); + } + + Class106.anInt1446 = 0; + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "jm.A(" + ')'); + } + } + + Class3_Sub17(int var1, byte[] var2) { + try { + this.anInt2454 = var1; + DataBuffer var3 = new DataBuffer(var2); + this.anInt2462 = var3.readUnsignedByte(); + this.anIntArrayArray2460 = new int[this.anInt2462][]; + this.anIntArray2466 = new int[this.anInt2462]; + this.aBooleanArray2463 = new boolean[this.anInt2462]; + this.anIntArray2455 = new int[this.anInt2462]; + + int var4; + for(var4 = 0; this.anInt2462 > var4; ++var4) { + this.anIntArray2466[var4] = var3.readUnsignedByte(); + } + + for(var4 = 0; var4 < this.anInt2462; ++var4) { + this.aBooleanArray2463[var4] = var3.readUnsignedByte() == 1; + } + + for(var4 = 0; var4 < this.anInt2462; ++var4) { + this.anIntArray2455[var4] = var3.readUnsignedShort(); + } + + for(var4 = 0; var4 < this.anInt2462; ++var4) { + this.anIntArrayArray2460[var4] = new int[var3.readUnsignedByte()]; + } + + for(var4 = 0; this.anInt2462 > var4; ++var4) { + for(int var5 = 0; this.anIntArrayArray2460[var4].length > var5; ++var5) { + this.anIntArrayArray2460[var4][var5] = var3.readUnsignedByte(); + } + } + + } catch (RuntimeException var6) { + loadNewHeader(var1, var2); +// var6.printStackTrace(); +// throw Class44.method1067(var6, "jm.(" + var1 + ',' + (var2 != null?"{...}":"null") + ')'); + } + } + + private void loadNewHeader(int var1, byte[] var2) { + this.anInt2454 = var1; + System.out.println("Loaded new header!"); + DataBuffer var3 = new DataBuffer(var2); + this.anInt2462 = var3.readUnsignedByte(); + this.anIntArrayArray2460 = new int[this.anInt2462][]; + this.anIntArray2466 = new int[this.anInt2462]; + this.aBooleanArray2463 = new boolean[this.anInt2462]; + this.anIntArray2455 = new int[this.anInt2462]; + + int var4; + for(var4 = 0; this.anInt2462 > var4; ++var4) { + this.anIntArray2466[var4] = var3.readUnsignedByte(); + } + +// for(var4 = 0; ~this.anInt2462 < ~var4; ++var4) { +// this.aBooleanArray2463[var4] = ~var3.getByte((byte)-35) == -2; +// } +// +// for(var4 = 0; var4 < this.anInt2462; ++var4) { +//// this.anIntArray2455[var4] = var3.getShort(1); +// } + + for(var4 = 0; var4 < this.anInt2462; ++var4) { + this.anIntArrayArray2460[var4] = new int[var3.readUnsignedByte()]; + } + + for(var4 = 0; this.anInt2462 > var4; ++var4) { + for(int var5 = 0; this.anIntArrayArray2460[var4].length > var5; ++var5) { + this.anIntArrayArray2460[var4][var5] = var3.readUnsignedByte(); + } + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class3_Sub19.java b/Client/src/main/java/org/runite/client/Class3_Sub19.java new file mode 100644 index 000000000..fdc4b853e --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class3_Sub19.java @@ -0,0 +1,175 @@ +package org.runite.client; + +import org.rs09.client.Linkable; +import org.rs09.client.rendering.Toolkit; + +public final class Class3_Sub19 extends Linkable { + + public static int[] anIntArray3693 = new int[1000]; + byte aByte2472; + RSString aString_2473; + static int anInt2475 = 0; + RSString aString_2476; + int anInt2478; + + + static Class75_Sub2 method384(DataBuffer var0) { + try { + + return new Class75_Sub2(var0.readSignedShort(), var0.readSignedShort(), var0.readSignedShort(), var0.readSignedShort(), var0.readMedium(), var0.readMedium(), var0.readUnsignedByte()); + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "kl.C(" + (var0 != null ? "{...}" : "null") + ',' + (byte) 80 + ')'); + } + } + + static boolean method385(int var1) { + try { + byte var3 = 0; + int var5; + int var6; + int var7; + int var8; + if (null == Class27.aSoftwareSprite_518) { + if (HDToolKit.highDetail || null == Class49.aAbstractSprite_812) { + Class27.aSoftwareSprite_518 = new SoftwareSprite(512, 512); + } else { + Class27.aSoftwareSprite_518 = (SoftwareSprite) Class49.aAbstractSprite_812; + } + + int[] var4 = Class27.aSoftwareSprite_518.anIntArray4081; + var5 = var4.length; + + for (var6 = 0; var5 > var6; ++var6) { + var4[var6] = 1; + } + + for (var6 = var3 + 1; -1 + -var3 + 104 > var6; ++var6) { + var7 = 4 * 512 * (var3 + 103 + -var6) + 24628; + + for (var8 = 1; 104 + -1 > var8; ++var8) { + if ((Unsorted.sceneryTypeMaskGrid[var1][var8][var6] & 24) == 0) { + Unsorted.method1469(var4, var7, 512, var1, var8, var6); + } + + if (var1 < 3 && 0 != (Unsorted.sceneryTypeMaskGrid[1 + var1][var8][var6] & 8)) { + Unsorted.method1469(var4, var7, 512, var1 + 1, var8, var6); + } + + var7 += 4; + } + } + + MouseListeningClass.anInt1924 = 0; + + for (var6 = 0; 104 > var6; ++var6) { + for (var7 = 0; 104 > var7; ++var7) { + long var20 = Scenery.lookupTypeMask3(WorldListCountry.localPlane, var6, var7 - -var3); + if (var20 != 0) { + ObjectDefinition var10 = ObjectDefinition.getObjectDefinition((int) (var20 >>> 32) & Integer.MAX_VALUE); + int var11 = var10.MapIcon; + int var12; + if (null != var10.ChildrenIds) { + for (var12 = 0; var12 < var10.ChildrenIds.length; ++var12) { + if (-1 != var10.ChildrenIds[var12]) { + ObjectDefinition var13 = ObjectDefinition.getObjectDefinition(var10.ChildrenIds[var12]); + if (0 <= var13.MapIcon) { + var11 = var13.MapIcon; + break; + } + } + } + } + + if (var11 >= 0) { + int var21 = var3 + var7; + var12 = var6; + if (22 != var11 && var11 != 29 && 34 != var11 && var11 != 36 && 46 != var11 && var11 != 47 && var11 != 48) { + int[][] var14 = AtmosphereParser.aClass91Array1182[WorldListCountry.localPlane].anIntArrayArray1304; + + for (int var15 = 0; var15 < 10; ++var15) { + int var16 = (int) (Math.random() * 4.0D); + if (var16 == 0 && var12 > 0 && var12 > var6 - 3 && (var14[var12 - 1][var21] & 19661064) == 0) { + --var12; + } + + if (var16 == 1 && var12 < 103 && var12 < 3 + var6 && (var14[var12 - -1][var21] & 19661184) == 0) { + ++var12; + } + + if (2 == var16 && var21 > 0 && var21 > -3 + var7 && 0 == (var14[var12][-1 + var21] & 19661058)) { + --var21; + } + + if (3 == var16 && var21 < 103 && var7 - -3 > var21 && 0 == (19661088 & var14[var12][1 + var21])) { + ++var21; + } + } + } + + anIntArray3693[MouseListeningClass.anInt1924] = var10.objectId; + Class84.anIntArray1163[MouseListeningClass.anInt1924] = var12; + Unsorted.anIntArray4050[MouseListeningClass.anInt1924] = var21 + -var3; + ++MouseListeningClass.anInt1924; + } + } + } + } + } + + Class27.aSoftwareSprite_518.method658(); + int var18 = (238 + (int) (20.0D * Math.random()) - 10 << 8) + (-10 + (int) (Math.random() * 20.0D) + 238 << 16) + (228 - -((int) (20.0D * Math.random()))); + var5 = (int) (Math.random() * 20.0D) + 238 + -10 << 16; + + for (var6 = 1; var6 < 103; ++var6) { + for (var7 = 1; 103 > var7; ++var7) { + if (0 == (Unsorted.sceneryTypeMaskGrid[var1][var7][var6 - -var3] & 24) && !Unsorted.method1529(var3, var7, var18, var6, var5, var1)) { + if (HDToolKit.highDetail) { + Toolkit.JAVA_TOOLKIT.resetBuffer(); + } else { + Unsorted.aClass158_3009.method2182(); + } + + return false; + } + + if (var1 < 3 && (Unsorted.sceneryTypeMaskGrid[1 + var1][var7][var6 + var3] & 8) != 0 && !Unsorted.method1529(var3, var7, var18, var6, var5, 1 + var1)) { + if (HDToolKit.highDetail) { + Toolkit.JAVA_TOOLKIT.resetBuffer(); + } else { + Unsorted.aClass158_3009.method2182(); + } + + return false; + } + } + } + + if (HDToolKit.highDetail) { + int[] var19 = Class27.aSoftwareSprite_518.anIntArray4081; + var7 = var19.length; + + for (var8 = 0; var7 > var8; ++var8) { + if (var19[var8] == 0) { + var19[var8] = 1; + } + } + + Class49.aAbstractSprite_812 = new HDSprite(Class27.aSoftwareSprite_518); + } else { + Class49.aAbstractSprite_812 = Class27.aSoftwareSprite_518; + } + + if (HDToolKit.highDetail) { + Toolkit.JAVA_TOOLKIT.resetBuffer(); + } else { + Unsorted.aClass158_3009.method2182(); + } + + Class27.aSoftwareSprite_518 = null; + return true; + } catch (RuntimeException var17) { + throw ClientErrorException.clientError(var17, "kl.B(" + 0 + ',' + var1 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class3_Sub20.java b/Client/src/main/java/org/runite/client/Class3_Sub20.java new file mode 100644 index 000000000..84a8e6dfe --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class3_Sub20.java @@ -0,0 +1,124 @@ +package org.runite.client; + +import org.rs09.client.Linkable; +import org.rs09.client.data.NodeCache; + +final class Class3_Sub20 extends Linkable { + + static int[] anIntArray2480 = new int[25]; + static RSString aString_3220; + static NodeCache aClass47_3801 = new NodeCache(4); + + int anInt2483; + static int wlPacketIndex = 0; + static int paramLanguage = 0; + static int anInt2487; + static int anInt2488 = 0; + int anInt2489; + + static void method388(byte var0) { + try { + //int var1 = 44 / ((-2 - var0) / 52); + if (aString_3220 != null) { + Class3_Sub10.method138(aString_3220); + aString_3220 = null; + } + + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "lb.A(" + var0 + ')'); + } + } + + static void method389() { + try { + Class32.method995(); + Class49.aAbstractSprite_812 = null; + Class58.anInt909 = -1; + TextureOperation13.method313((byte) 55); + aClass47_3801.clear(); + ObjectDefinition.aClass136_1413 = new Class136(); + ((Class102) Class51.anInterface2_838).method1618(); + Class68.anInt1032 = 0; + Class68.aClass43Array1021 = new Class43[255]; + Class140_Sub1_Sub1.method1929(); + Class141.method2043(); + Class65.method1240(); + Unsorted.method1250(17, false); + TextureOperation23.method247((byte) 51); + + for (int var1 = 0; 2048 > var1; ++var1) { + Player var2 = Unsorted.players[var1]; + if (null != var2) { + var2.anObject2796 = null; + } + } + + if (HDToolKit.highDetail) { + Class141.method2041(); + Class127_Sub1.method1755(); + } + + Class3_Sub28_Sub9.method581(CacheIndex.fontsIndex, CacheIndex.spritesIndex); + Sprites.method887(CacheIndex.spritesIndex); + Class3_Sub26.aAbstractSprite_2560 = null; + WorldListEntry.aAbstractSprite_3099 = null; + Class50.aAbstractSprite_824 = null; + WorldListEntry.aAbstractSprite_1339 = null; + WorldListEntry.aAbstractSprite_1457 = null; + if (Class143.gameStage == 5) { + Class108.method1656(CacheIndex.spritesIndex, (byte) -60); + } + + if (10 == Class143.gameStage) { + TextureOperation1.method219(false); + } + + if (Class143.gameStage == 30) { + Class117.method1719(25); + } + + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "lb.C(" + false + ')'); + } + } + + static void method390(boolean var0, int var1, int var2, int var3, byte var4, int var5, int var6) { + try { + Unsorted.anInt3631 = var3; + TextureOperation25.anInt3414 = var2; + Unsorted.anInt30 = var6; + Class163_Sub2_Sub1.anInt4021 = var1; + Class146.anInt1904 = var5; + if (var0 && Unsorted.anInt3631 >= 100) { + NPC.anInt3995 = 128 * Unsorted.anInt30 + 64; + Class77.anInt1111 = 128 * Class146.anInt1904 + 64; + Class7.anInt2162 = Scenery.sceneryPositionHash(WorldListCountry.localPlane, 1, NPC.anInt3995, Class77.anInt1111) + -TextureOperation25.anInt3414; + } + + // int var7 = 76 % ((-79 - var4) / 35); + Class133.anInt1753 = 2; + } catch (RuntimeException var8) { + throw ClientErrorException.clientError(var8, "lb.D(" + ',' + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + var5 + ',' + var6 + ')'); + } + } + + Class3_Sub20(int var1, int var2) { + try { + this.anInt2483 = var2; + this.anInt2489 = var1; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "lb.(" + var1 + ',' + var2 + ')'); + } + } + + static void method392(CacheIndex skinsIndex, CacheIndex animationIndex, CacheIndex skeletonsIndex) { + try { + Class7.skinsReferenceIndex = skinsIndex; + SequenceDefinition.animationReferenceIndex = animationIndex; + Class131.skeletonsReferenceIndex = skeletonsIndex; + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "lb.E(" + (skinsIndex != null ? "{...}" : "null") + ',' + (animationIndex != null ? "{...}" : "null") + ',' + -77 + ',' + (skeletonsIndex != null ? "{...}" : "null") + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class3_Sub21.java b/Client/src/main/java/org/runite/client/Class3_Sub21.java new file mode 100644 index 000000000..ce1e09355 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class3_Sub21.java @@ -0,0 +1,136 @@ +package org.runite.client; + +import org.rs09.client.Linkable; + +final class Class3_Sub21 extends Linkable { + + static AudioChannel aAudioChannel_2491; + int anInt2492; + static volatile int anInt2493 = -1; + int anInt2494; + int anInt2495; + int anInt2497; + + + final boolean method393(int var2, int var3) { + try { + + return var3 >= this.anInt2492 && var3 <= this.anInt2495 && this.anInt2494 <= var2 && var2 <= this.anInt2497; + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "lh.D(" + (byte) -45 + ',' + var2 + ',' + var3 + ')'); + } + } + + static void method394(int var0, int var1) { + try { + WaterShader.anInt3285 = var0; + Unsorted.method383(-32584, 3); + Unsorted.method383(-32584, 4); + if(var1 <= 83) { + method395(null, -43, -61, -51, 101, -106, -58, true); + } + + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "lh.E(" + var0 + ',' + var1 + ')'); + } + } + + static void method395(Class35 var0, int var1, int var2, int var3, int var4, int var5, int var6, boolean var7) { + int var8 = var0.anIntArray627.length; + + int var9; + int var10; + int var11; + int var12; + int var13; + for(var9 = 0; var9 < var8; ++var9) { + var10 = var0.anIntArray627[var9] - Class145.anInt2697; + var11 = var0.anIntArray615[var9] - Unsorted.anInt3657; + var12 = var0.anIntArray618[var9] - TextureOperation13.anInt3363; + var13 = var12 * var3 + var10 * var4 >> 16; + var12 = var12 * var4 - var10 * var3 >> 16; + var10 = var13; + var13 = var11 * var2 - var12 * var1 >> 16; + var12 = var11 * var1 + var12 * var2 >> 16; + if(var12 < 50) { + return; + } + + if(var0.anIntArray616 != null) { + Class35.anIntArray614[var9] = var10; + Class35.anIntArray630[var9] = var13; + Class35.anIntArray628[var9] = var12; + } + + Class35.anIntArray623[var9] = Class51.anInt846 + (var10 << 9) / var12; + Class35.anIntArray622[var9] = Class51.anInt835 + (var13 << 9) / var12; + } + + Class51.anInt850 = 0; + var8 = var0.anIntArray624.length; + + for(var9 = 0; var9 < var8; ++var9) { + var10 = var0.anIntArray624[var9]; + var11 = var0.anIntArray617[var9]; + var12 = var0.anIntArray613[var9]; + var13 = Class35.anIntArray623[var10]; + int var14 = Class35.anIntArray623[var11]; + int var15 = Class35.anIntArray623[var12]; + int var16 = Class35.anIntArray622[var10]; + int var17 = Class35.anIntArray622[var11]; + int var18 = Class35.anIntArray622[var12]; + if((var13 - var14) * (var18 - var17) - (var16 - var17) * (var15 - var14) > 0) { + if(TextureOperation37.aBoolean3261 && TextureOperation34.method185(Class49.anInt819 + Class51.anInt846, TextureOperation18.anInt4039 + Class51.anInt835, var16, var17, var18, var13, var14, var15)) { + Class27.anInt515 = var5; + Unsorted.anInt999 = var6; + } + + if(!HDToolKit.highDetail && !var7) { + Class51.aBoolean849 = var13 < 0 || var14 < 0 || var15 < 0 || var13 > Class51.anInt847 || var14 > Class51.anInt847 || var15 > Class51.anInt847; + + if(var0.anIntArray616 != null && var0.anIntArray616[var9] != -1) { + if(Unsorted.aBoolean3275) { + if(var0.aBoolean629) { + Class51.method1135(var16, var17, var18, var13, var14, var15, var0.anIntArray625[var9], var0.anIntArray632[var9], var0.anIntArray631[var9], Class35.anIntArray614[0], Class35.anIntArray614[1], Class35.anIntArray614[3], Class35.anIntArray630[0], Class35.anIntArray630[1], Class35.anIntArray630[3], Class35.anIntArray628[0], Class35.anIntArray628[1], Class35.anIntArray628[3], var0.anIntArray616[var9]); + } else { + Class51.method1135(var16, var17, var18, var13, var14, var15, var0.anIntArray625[var9], var0.anIntArray632[var9], var0.anIntArray631[var9], Class35.anIntArray614[var10], Class35.anIntArray614[var11], Class35.anIntArray614[var12], Class35.anIntArray630[var10], Class35.anIntArray630[var11], Class35.anIntArray630[var12], Class35.anIntArray628[var10], Class35.anIntArray628[var11], Class35.anIntArray628[var12], var0.anIntArray616[var9]); + } + } else { + int var19 = Class51.anInterface2_838.method15(var0.anIntArray616[var9], 65535); + Class51.method1154(var16, var17, var18, var13, var14, var15, LoginHandler.method1753(var19, var0.anIntArray625[var9]), LoginHandler.method1753(var19, var0.anIntArray632[var9]), LoginHandler.method1753(var19, var0.anIntArray631[var9])); + } + } else if(var0.anIntArray625[var9] != 12345678) { + Class51.method1154(var16, var17, var18, var13, var14, var15, var0.anIntArray625[var9], var0.anIntArray632[var9], var0.anIntArray631[var9]); + } + } + } + } + + } + + static void method397(byte var0) { + try { + Class114.aReferenceCache_1569.clear(); + Class3_Sub15.aReferenceCache_2428.clear(); + if(var0 != -41) { + method394(14, 52); + } + + Unsorted.aReferenceCache_743.clear(); + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "lh.C(" + var0 + ')'); + } + } + + Class3_Sub21(int var1, int var2, int var3, int var4) { + try { + this.anInt2497 = var4; + this.anInt2494 = var2; + this.anInt2495 = var3; + this.anInt2492 = var1; + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "lh.(" + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class3_Sub22.java b/Client/src/main/java/org/runite/client/Class3_Sub22.java new file mode 100644 index 000000000..75463cff1 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class3_Sub22.java @@ -0,0 +1,196 @@ +package org.runite.client; + + + +import org.rs09.client.Linkable; +import org.rs09.client.config.GameConfig; + +import javax.media.opengl.GL; + + +final class Class3_Sub22 extends Linkable { + + static int anInt2500; + int anInt2501; + int anInt2502; + int anInt2503; + Class166 aClass166_2504; + static Class49 aClass49_2505 = new Class49(); + int anInt2506; + Class3_Sub24_Sub1 aClass3_Sub24_Sub1_2507; + int anInt2508; + PcmSound aPcmSound_2509; + int anInt2510; + int anInt2511; + int anInt2512; + int anInt2513; + int anInt2514; + int anInt2515; + int anInt2516; + int anInt2517; + int anInt2519; + int anInt2520; + static byte[][] aByteArrayArray2521; + int anInt2522; + int anInt2523; + Class3_Sub15 aClass3_Sub15_2527; + + + static void method398(int var0, int var1, int var2, int var3, int var4, byte[][][] var5, int[] var6, int[] var7, int[] var8, int[] var9, int[] var10, int var11, byte var12, int var13, int var14) { + if(var0 < 0) { + var0 = 0; + } else if(var0 >= Unsorted.width1234 * 128) { + var0 = Unsorted.width1234 * 128 - 1; + } + + if(var2 < 0) { + var2 = 0; + } else if(var2 >= TextureOperation17.height3179 * 128) { + var2 = TextureOperation17.height3179 * 128 - 1; + } + + Class60.anInt936 = Class51.anIntArray840[var3]; + Unsorted.anInt1037 = Class51.anIntArray851[var3]; + TextureOperation25.anInt3417 = Class51.anIntArray840[var4]; + Class145.anInt3153 = Class51.anIntArray851[var4]; + Class145.anInt2697 = var0; + Unsorted.anInt3657 = var1; + TextureOperation13.anInt3363 = var2; + Class97.anInt1375 = var0 / 128; + Class145.anInt3340 = var2 / 128; + Class163_Sub1_Sub1.anInt4006 = Class97.anInt1375 - TextureOperation8.renderDistanceTiles; + if(Class163_Sub1_Sub1.anInt4006 < 0) { + Class163_Sub1_Sub1.anInt4006 = 0; + } + + Unsorted.anInt3603 = Class145.anInt3340 - TextureOperation8.renderDistanceTiles; + if(Unsorted.anInt3603 < 0) { + Unsorted.anInt3603 = 0; + } + + Unsorted.anInt67 = Class97.anInt1375 + TextureOperation8.renderDistanceTiles; + if(Unsorted.anInt67 > Unsorted.width1234) { + Unsorted.anInt67 = Unsorted.width1234; + } + + Class126.anInt1665 = Class145.anInt3340 + TextureOperation8.renderDistanceTiles; + if(Class126.anInt1665 > TextureOperation17.height3179) { + Class126.anInt1665 = TextureOperation17.height3179; + } + + short var15; + if(HDToolKit.highDetail) { + var15 = (short) GameConfig.RENDER_DISTANCE_VALUE; + } else { + var15 = 3500; + } + + int var17; + int var16; + for(var16 = 0; var16 < TextureOperation8.renderDistanceTiles + TextureOperation8.renderDistanceTiles + 2; ++var16) { + for(var17 = 0; var17 < TextureOperation8.renderDistanceTiles + TextureOperation8.renderDistanceTiles + 2; ++var17) { + int var18 = (var16 - TextureOperation8.renderDistanceTiles << 7) - (Class145.anInt2697 & 127); + int var19 = (var17 - TextureOperation8.renderDistanceTiles << 7) - (TextureOperation13.anInt3363 & 127); + int var20 = Class97.anInt1375 - TextureOperation8.renderDistanceTiles + var16; + int var21 = Class145.anInt3340 - TextureOperation8.renderDistanceTiles + var17; + if(var20 >= 0 && var21 >= 0 && var20 < Unsorted.width1234 && var21 < TextureOperation17.height3179) { + int var22; + if(Unsorted.anIntArrayArrayArray3605 == null) { + var22 = Class58.anIntArrayArrayArray914[0][var20][var21] - Unsorted.anInt3657 + 128; + } else { + var22 = Unsorted.anIntArrayArrayArray3605[0][var20][var21] - Unsorted.anInt3657 + 128; + } + + int var23 = Class58.anIntArrayArrayArray914[3][var20][var21] - Unsorted.anInt3657 - 1000; + Class49.aBooleanArrayArray814[var16][var17] = Class91.method1495(var18, var23, var22, var19, var15); + } else { + Class49.aBooleanArrayArray814[var16][var17] = false; + } + } + } + + for(var16 = 0; var16 < TextureOperation8.renderDistanceTiles + TextureOperation8.renderDistanceTiles + 1; ++var16) { + for(var17 = 0; var17 < TextureOperation8.renderDistanceTiles + TextureOperation8.renderDistanceTiles + 1; ++var17) { + Class23.aBooleanArrayArray457[var16][var17] = Class49.aBooleanArrayArray814[var16][var17] || Class49.aBooleanArrayArray814[var16 + 1][var17] || Class49.aBooleanArrayArray814[var16][var17 + 1] || Class49.aBooleanArrayArray814[var16 + 1][var17 + 1]; + } + } + + Class72.anIntArray3045 = var6; + Unsorted.anIntArray1083 = var7; + Class52.anIntArray859 = var8; + Class75_Sub4.anIntArray2663 = var9; + Unsorted.anIntArray39 = var10; + Class72.method1294(); + if(Class166.aTileDataArrayArrayArray2065 != null) { + Class167.method2264(true); + Class146.method2083(var0, var1, var2, null, 0, (byte)0, var13, var14); + if(HDToolKit.highDetail) { + TextureOperation23.aBoolean3207 = false; + Unsorted.method551(0, 0); + Class92.method1512(null); + Class68.method1265(); + } + + Class167.method2264(false); + } + + Class146.method2083(var0, var1, var2, var5, var11, var12, var13, var14); + } + + static void method400(long var0) { + try { + if((long) 0 != var0) { + TextureOperation12.outgoingBuffer.putOpcode(104); + TextureOperation12.outgoingBuffer.writeLong(var0); + } + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "mf.F(" + var0 + ',' + 0 + ')'); + } + } + + final void method401() { + try { + this.aClass166_2504 = null; + this.aPcmSound_2509 = null; + this.aClass3_Sub24_Sub1_2507 = null; + this.aClass3_Sub15_2527 = null; + + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "mf.A(" + 221 + ')'); + } + } + + static void method403() { + GL var0 = HDToolKit.gl; + var0.glDisableClientState('\u8076'); + HDToolKit.method1837(false); + var0.glDisable(2929); + var0.glPushAttrib(128); + var0.glFogf(2915, 3072.0F); + HDToolKit.depthBufferWritingDisabled(); + + for(int var1 = 0; var1 < Client.aClass3_Sub11ArrayArray2199[0].length; ++var1) { + Class3_Sub11 var2 = Client.aClass3_Sub11ArrayArray2199[0][var1]; + if(var2.anInt2351 >= 0 && Class51.anInterface2_838.method18(var2.anInt2351, 255) == 4) { + var0.glColor4fv(Class114.method1705(var2.anInt2355, 0), 0); + float var3 = 201.5F - (var2.aBoolean2364?1.0F:0.5F); + var2.method149(TileData.aTileDataArrayArrayArray2638, var3, true); + } + } + + var0.glEnableClientState('\u8076'); + HDToolKit.method1846(); + var0.glEnable(2929); + var0.glPopAttrib(); + HDToolKit.method1830(); + } + + static Class75_Sub4 method404(DataBuffer var1) { + try { + return new Class75_Sub4(var1.readSignedShort(), var1.readSignedShort(), var1.readSignedShort(), var1.readSignedShort(), var1.readMedium(), var1.readMedium(), var1.readUnsignedByte()); + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "mf.C(" + (byte) -110 + ',' + (var1 != null?"{...}":"null") + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class3_Sub23.java b/Client/src/main/java/org/runite/client/Class3_Sub23.java new file mode 100644 index 000000000..40704d072 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class3_Sub23.java @@ -0,0 +1,93 @@ +package org.runite.client; + +import org.rs09.client.Linkable; +import org.rs09.client.rendering.Toolkit; + +import java.util.Objects; + +public final class Class3_Sub23 extends Linkable { + + static RSString aString_3080 = Class95.method1586(); + int anInt2531; + int anInt2532; + public static int[] anIntArray2533; + static int anInt2535 = -2; + static CacheIndex configurationsIndex_2536; + static int anInt2537 = 0; + static boolean[] aBooleanArray2538 = new boolean[]{true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false}; + int anInt2539; + static Class3_Sub11[][] aClass3_Sub11ArrayArray2542; + + + static RSString method407(int var0, boolean var1, int var2, long var3) { + try { + RSString var6 = Unsorted.emptyString(0); + if (var3 < 0) { + var3 = -var3; + Objects.requireNonNull(var6).append(RSString.parse(")2")); + } + + RSString var8 = TextCore.aString_1880; + RSString var7 = TextCore.aString_341; + if (var0 == 1) { + var8 = TextCore.aString_341; + var7 = TextCore.aString_1880; + } + + if (var0 == 2) { + var7 = TextCore.aString_1880; + var8 = aString_3080; + } + + if (var0 == 3) { + var8 = TextCore.aString_341; + var7 = TextCore.aString_1880; + } + + RSString var10 = Unsorted.emptyString(0); + + int var11; + for (var11 = 0; var2 > var11; ++var11) { + Objects.requireNonNull(var10).append(RSString.stringAnimator((int) (var3 % 10L))); + var3 /= 10L; + } + + var11 = 0; + RSString var9; + if (var3 == 0L) { + var9 = RSString.parse("0"); + } else { + RSString var12; + for (var12 = Unsorted.emptyString(0); var3 > 0L; var3 /= 10L) { + if (var1 && var11 != 0 && var11 % 3 == 0) { + var12.append(var8); + } + + Objects.requireNonNull(var12).append(RSString.stringAnimator((int) (var3 % 10L))); + ++var11; + } + + var9 = var12; + } + + if (Objects.requireNonNull(var10).length() > 0) { + var10.append(var7); + } + + return RSString.stringCombiner(new RSString[]{var6, Objects.requireNonNull(var9).method1544(true), var10.method1544(true)}); + } catch (RuntimeException var13) { + throw ClientErrorException.clientError(var13, "oj.C(" + var0 + ',' + var1 + ',' + var2 + ',' + var3 + ',' + 2 + ')'); + } + } + + static int method408(int var0, byte var1, int var2, int[][] var3, int var4, int var5) { + try { + int var6 = var0 * var3[1 + var4][var2] + (128 - var0) * var3[var4][var2] >> 7; + int var7 = var3[var4][1 + var2] * (-var0 + 128) + var3[var4 - -1][var2 - -1] * var0 >> 7; + return var6 * (128 + -var5) - -(var5 * var7) >> 7; + } catch (RuntimeException var9) { + throw ClientErrorException.clientError(var9, "oj.A(" + var0 + ',' + var1 + ',' + var2 + ',' + (var3 != null ? "{...}" : "null") + ',' + var4 + ',' + var5 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class3_Sub24.java b/Client/src/main/java/org/runite/client/Class3_Sub24.java new file mode 100644 index 000000000..b1bc8d500 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class3_Sub24.java @@ -0,0 +1,35 @@ +package org.runite.client; + +import org.rs09.client.Linkable; + +abstract class Class3_Sub24 extends Linkable { + + int anInt2543; + Sound aSound_2544; + volatile boolean aBoolean2545 = true; + Class3_Sub24 aClass3_Sub24_2546; + + + abstract int method409(); + + final void method410(int[] var1, int var2, int var3) { + if(this.aBoolean2545) { + this.method413(var1, var2, var3); + } else { + this.method415(var3); + } + + } + + abstract Class3_Sub24 method411(); + + int method412() { + return 255; + } + + abstract void method413(int[] var1, int var2, int var3); + + abstract Class3_Sub24 method414(); + + abstract void method415(int var1); +} diff --git a/Client/src/main/java/org/runite/client/Class3_Sub24_Sub1.java b/Client/src/main/java/org/runite/client/Class3_Sub24_Sub1.java new file mode 100644 index 000000000..993c8a198 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class3_Sub24_Sub1.java @@ -0,0 +1,1443 @@ +package org.runite.client; + +final class Class3_Sub24_Sub1 extends Class3_Sub24 { + + private int anInt3470; + private int anInt3471; + private int anInt3472; + private final int anInt3473; + private int anInt3474; + private int anInt3475; + private int anInt3476; + private final boolean aBoolean3477; + private int anInt3478; + private int anInt3479; + private int anInt3480; + private int anInt3481; + private final int anInt3482; + private int anInt3483; + private int anInt3484; + + + final synchronized void method413(int[] var1, int var2, int var3) { + if(this.anInt3471 == 0 && this.anInt3480 == 0) { + this.method415(var3); + } else { + PcmSound var4 = (PcmSound)this.aSound_2544; + int var5 = this.anInt3473 << 8; + int var6 = this.anInt3482 << 8; + int var7 = var4.samples.length << 8; + int var8 = var6 - var5; + if(var8 <= 0) { + this.anInt3479 = 0; + } + + int var9 = var2; + var3 += var2; + if(this.anInt3474 < 0) { + if(this.anInt3470 <= 0) { + this.method439(); + this.unlink(); + return; + } + + this.anInt3474 = 0; + } + + if(this.anInt3474 >= var7) { + if(this.anInt3470 >= 0) { + this.method439(); + this.unlink(); + return; + } + + this.anInt3474 = var7 - 1; + } + + if(this.anInt3479 < 0) { + if(this.aBoolean3477) { + if(this.anInt3470 < 0) { + var9 = this.method436(var1, var2, var5, var3, var4.samples[this.anInt3473]); + if(this.anInt3474 >= var5) { + return; + } + + this.anInt3474 = var5 + var5 - 1 - this.anInt3474; + this.anInt3470 = -this.anInt3470; + } + + while(true) { + var9 = this.method418(var1, var9, var6, var3, var4.samples[this.anInt3482 - 1]); + if(this.anInt3474 < var6) { + return; + } + + this.anInt3474 = var6 + var6 - 1 - this.anInt3474; + this.anInt3470 = -this.anInt3470; + var9 = this.method436(var1, var9, var5, var3, var4.samples[this.anInt3473]); + if(this.anInt3474 >= var5) { + return; + } + + this.anInt3474 = var5 + var5 - 1 - this.anInt3474; + this.anInt3470 = -this.anInt3470; + } + } else if(this.anInt3470 < 0) { + while(true) { + var9 = this.method436(var1, var9, var5, var3, var4.samples[this.anInt3482 - 1]); + if(this.anInt3474 >= var5) { + return; + } + + this.anInt3474 = var6 - 1 - (var6 - 1 - this.anInt3474) % var8; + } + } else { + while(true) { + var9 = this.method418(var1, var9, var6, var3, var4.samples[this.anInt3473]); + if(this.anInt3474 < var6) { + return; + } + + this.anInt3474 = var5 + (this.anInt3474 - var5) % var8; + } + } + } else { + if(this.anInt3479 > 0) { + if(this.aBoolean3477) { + label134: { + if(this.anInt3470 < 0) { + var9 = this.method436(var1, var2, var5, var3, var4.samples[this.anInt3473]); + if(this.anInt3474 >= var5) { + return; + } + + this.anInt3474 = var5 + var5 - 1 - this.anInt3474; + this.anInt3470 = -this.anInt3470; + if(--this.anInt3479 == 0) { + break label134; + } + } + + do { + var9 = this.method418(var1, var9, var6, var3, var4.samples[this.anInt3482 - 1]); + if(this.anInt3474 < var6) { + return; + } + + this.anInt3474 = var6 + var6 - 1 - this.anInt3474; + this.anInt3470 = -this.anInt3470; + if(--this.anInt3479 == 0) { + break; + } + + var9 = this.method436(var1, var9, var5, var3, var4.samples[this.anInt3473]); + if(this.anInt3474 >= var5) { + return; + } + + this.anInt3474 = var5 + var5 - 1 - this.anInt3474; + this.anInt3470 = -this.anInt3470; + } while(--this.anInt3479 != 0); + } + } else { + int var10; + if(this.anInt3470 < 0) { + while(true) { + var9 = this.method436(var1, var9, var5, var3, var4.samples[this.anInt3482 - 1]); + if(this.anInt3474 >= var5) { + return; + } + + var10 = (var6 - 1 - this.anInt3474) / var8; + if(var10 >= this.anInt3479) { + this.anInt3474 += var8 * this.anInt3479; + this.anInt3479 = 0; + break; + } + + this.anInt3474 += var8 * var10; + this.anInt3479 -= var10; + } + } else { + while(true) { + var9 = this.method418(var1, var9, var6, var3, var4.samples[this.anInt3473]); + if(this.anInt3474 < var6) { + return; + } + + var10 = (this.anInt3474 - var5) / var8; + if(var10 >= this.anInt3479) { + this.anInt3474 -= var8 * this.anInt3479; + this.anInt3479 = 0; + break; + } + + this.anInt3474 -= var8 * var10; + this.anInt3479 -= var10; + } + } + } + } + + if(this.anInt3470 < 0) { + this.method436(var1, var9, 0, var3, 0); + if(this.anInt3474 < 0) { + this.anInt3474 = -1; + this.method439(); + this.unlink(); + } + } else { + this.method418(var1, var9, var7, var3, 0); + if(this.anInt3474 >= var7) { + this.anInt3474 = var7; + this.method439(); + this.unlink(); + } + } + + } + } + } + + private boolean method416() { + int var1 = this.anInt3471; + int var2; + int var3; + if(var1 == Integer.MIN_VALUE) { + var3 = 0; + var2 = 0; + var1 = 0; + } else { + var2 = method452(var1, this.anInt3478); + var3 = method454(var1, this.anInt3478); + } + + if(this.anInt3476 == var1 && this.anInt3484 == var2 && this.anInt3481 == var3) { + if(this.anInt3471 == Integer.MIN_VALUE) { + this.anInt3471 = 0; + this.anInt3476 = this.anInt3484 = this.anInt3481 = 0; + this.unlink(); + return false; + } else { + this.method449(); + return true; + } + } else { + if(this.anInt3476 < var1) { + this.anInt3472 = 1; + this.anInt3480 = var1 - this.anInt3476; + } else if(this.anInt3476 > var1) { + this.anInt3472 = -1; + this.anInt3480 = this.anInt3476 - var1; + } else { + this.anInt3472 = 0; + } + + if(this.anInt3484 < var2) { + this.anInt3475 = 1; + if(this.anInt3480 == 0 || this.anInt3480 > var2 - this.anInt3484) { + this.anInt3480 = var2 - this.anInt3484; + } + } else if(this.anInt3484 > var2) { + this.anInt3475 = -1; + if(this.anInt3480 == 0 || this.anInt3480 > this.anInt3484 - var2) { + this.anInt3480 = this.anInt3484 - var2; + } + } else { + this.anInt3475 = 0; + } + + if(this.anInt3481 < var3) { + this.anInt3483 = 1; + if(this.anInt3480 == 0 || this.anInt3480 > var3 - this.anInt3481) { + this.anInt3480 = var3 - this.anInt3481; + } + } else if(this.anInt3481 > var3) { + this.anInt3483 = -1; + if(this.anInt3480 == 0 || this.anInt3480 > this.anInt3481 - var3) { + this.anInt3480 = this.anInt3481 - var3; + } + } else { + this.anInt3483 = 0; + } + + return true; + } + } + + final synchronized void method417(int var1) { + if(var1 == 0) { + this.method430(); + this.unlink(); + } else if(this.anInt3484 == 0 && this.anInt3481 == 0) { + this.anInt3480 = 0; + this.anInt3471 = 0; + this.anInt3476 = 0; + this.unlink(); + } else { + int var2 = -this.anInt3476; + if(this.anInt3476 > var2) { + var2 = this.anInt3476; + } + + if(-this.anInt3484 > var2) { + var2 = -this.anInt3484; + } + + if(this.anInt3484 > var2) { + var2 = this.anInt3484; + } + + if(-this.anInt3481 > var2) { + var2 = -this.anInt3481; + } + + if(this.anInt3481 > var2) { + var2 = this.anInt3481; + } + + if(var1 > var2) { + var1 = var2; + } + + this.anInt3480 = var1; + this.anInt3471 = Integer.MIN_VALUE; + this.anInt3472 = -this.anInt3476 / var1; + this.anInt3475 = -this.anInt3484 / var1; + this.anInt3483 = -this.anInt3481 / var1; + } + } + + private int method418(int[] var1, int var2, int var3, int var4, int var5) { + while(true) { + if(this.anInt3480 > 0) { + int var6 = var2 + this.anInt3480; + if(var6 > var4) { + var6 = var4; + } + + this.anInt3480 += var2; + if(this.anInt3470 == 256 && (this.anInt3474 & 0xFF) == 0) { + if(AudioChannel.stereo) { + var2 = method426(((PcmSound)this.aSound_2544).samples, var1, this.anInt3474, var2, this.anInt3484, this.anInt3481, this.anInt3475, this.anInt3483, var6, var3, this); + } else { + var2 = method428(((PcmSound)this.aSound_2544).samples, var1, this.anInt3474, var2, this.anInt3476, this.anInt3472, var6, var3, this); + } + } else if(AudioChannel.stereo) { + var2 = method421(((PcmSound)this.aSound_2544).samples, var1, this.anInt3474, var2, this.anInt3484, this.anInt3481, this.anInt3475, this.anInt3483, var6, var3, this, this.anInt3470, var5); + } else { + var2 = method422(((PcmSound)this.aSound_2544).samples, var1, this.anInt3474, var2, this.anInt3476, this.anInt3472, var6, var3, this, this.anInt3470, var5); + } + + this.anInt3480 -= var2; + if(this.anInt3480 != 0) { + return var2; + } + + if(this.method416()) { + continue; + } + + return var4; + } + + if(this.anInt3470 == 256 && (this.anInt3474 & 0xFF) == 0) { + if(AudioChannel.stereo) { + return method420(((PcmSound)this.aSound_2544).samples, var1, this.anInt3474, var2, this.anInt3484, this.anInt3481, var4, var3, this); + } + + return method424(((PcmSound)this.aSound_2544).samples, var1, this.anInt3474, var2, this.anInt3476, var4, var3, this); + } + + if(AudioChannel.stereo) { + return method433(((PcmSound)this.aSound_2544).samples, var1, this.anInt3474, var2, this.anInt3484, this.anInt3481, var4, var3, this, this.anInt3470, var5); + } + + return method455(((PcmSound)this.aSound_2544).samples, var1, this.anInt3474, var2, this.anInt3476, var4, var3, this, this.anInt3470, var5); + } + } + + final synchronized void method419(int var1) { + this.method441(var1 << 6, this.method451()); + } + + final int method412() { + int var1 = this.anInt3476 * 3 >> 6; + var1 = (var1 ^ var1 >> 31) + (var1 >>> 31); + if(this.anInt3479 == 0) { + var1 -= var1 * this.anInt3474 / (((PcmSound)this.aSound_2544).samples.length << 8); + } else if(this.anInt3479 >= 0) { + var1 -= var1 * this.anInt3473 / ((PcmSound)this.aSound_2544).samples.length; + } + + return var1 > 255?255:var1; + } + + private static int method420(byte[] var1, int[] var2, int var3, int var4, int var5, int var6, int var8, int var9, Class3_Sub24_Sub1 var10) { + var3 >>= 8; + var9 >>= 8; + var5 <<= 2; + var6 <<= 2; + int var7; + if((var7 = var4 + var9 - var3) > var8) { + var7 = var8; + } + + var4 <<= 1; + var7 <<= 1; + + byte var11; + int var10001; + for(var7 -= 6; var4 < var7; var2[var10001] += var11 * var6) { + var11 = var1[var3++]; + var10001 = var4++; + var2[var10001] += var11 * var5; + var10001 = var4++; + var2[var10001] += var11 * var6; + var11 = var1[var3++]; + var10001 = var4++; + var2[var10001] += var11 * var5; + var10001 = var4++; + var2[var10001] += var11 * var6; + var11 = var1[var3++]; + var10001 = var4++; + var2[var10001] += var11 * var5; + var10001 = var4++; + var2[var10001] += var11 * var6; + var11 = var1[var3++]; + var10001 = var4++; + var2[var10001] += var11 * var5; + var10001 = var4++; + } + + for(var7 += 6; var4 < var7; var2[var10001] += var11 * var6) { + var11 = var1[var3++]; + var10001 = var4++; + var2[var10001] += var11 * var5; + var10001 = var4++; + } + + var10.anInt3474 = var3 << 8; + return var4 >> 1; + } + + private static int method421(byte[] var2, int[] var3, int var4, int var5, int var6, int var7, int var8, int var9, int var11, int var12, Class3_Sub24_Sub1 var13, int var14, int var15) { + var13.anInt3476 -= var13.anInt3472 * var5; + int var10; + if(var14 == 0 || (var10 = var5 + (var12 - var4 + var14 - 257) / var14) > var11) { + var10 = var11; + } + + var5 <<= 1; + + int var10001; + byte var16; + int var1; + int var0; + for(var10 <<= 1; var5 < var10; var4 += var14) { + var1 = var4 >> 8; + var16 = var2[var1]; + var0 = (var16 << 8) + (var2[var1 + 1] - var16) * (var4 & 0xFF); + var10001 = var5++; + var3[var10001] += var0 * var6 >> 6; + var6 += var8; + var10001 = var5++; + var3[var10001] += var0 * var7 >> 6; + var7 += var9; + } + + if(var14 == 0 || (var10 = (var5 >> 1) + (var12 - var4 + var14 - 1) / var14) > var11) { + var10 = var11; + } + + var10 <<= 1; + + for(var1 = var15; var5 < var10; var4 += var14) { + var16 = var2[var4 >> 8]; + var0 = (var16 << 8) + (var1 - var16) * (var4 & 0xFF); + var10001 = var5++; + var3[var10001] += var0 * var6 >> 6; + var6 += var8; + var10001 = var5++; + var3[var10001] += var0 * var7 >> 6; + var7 += var9; + } + + var5 >>= 1; + var13.anInt3476 += var13.anInt3472 * var5; + var13.anInt3484 = var6; + var13.anInt3481 = var7; + var13.anInt3474 = var4; + return var5; + } + + final int method409() { + return this.anInt3471 == 0 && this.anInt3480 == 0?0:1; + } + + private static int method422(byte[] var2, int[] var3, int var4, int var5, int var6, int var7, int var9, int var10, Class3_Sub24_Sub1 var11, int var12, int var13) { + var11.anInt3484 -= var11.anInt3475 * var5; + var11.anInt3481 -= var11.anInt3483 * var5; + int var8; + if(var12 == 0 || (var8 = var5 + (var10 - var4 + var12 - 257) / var12) > var9) { + var8 = var9; + } + + int var10001; + byte var14; + int var1; + while(var5 < var8) { + var1 = var4 >> 8; + var14 = var2[var1]; + var10001 = var5++; + var3[var10001] += ((var14 << 8) + (var2[var1 + 1] - var14) * (var4 & 0xFF)) * var6 >> 6; + var6 += var7; + var4 += var12; + } + + if(var12 == 0 || (var8 = var5 + (var10 - var4 + var12 - 1) / var12) > var9) { + var8 = var9; + } + + for(var1 = var13; var5 < var8; var4 += var12) { + var14 = var2[var4 >> 8]; + var10001 = var5++; + var3[var10001] += ((var14 << 8) + (var1 - var14) * (var4 & 0xFF)) * var6 >> 6; + var6 += var7; + } + + var11.anInt3484 += var11.anInt3475 * var5; + var11.anInt3481 += var11.anInt3483 * var5; + var11.anInt3476 = var6; + var11.anInt3474 = var4; + return var5; + } + + private static int method423(byte[] var2, int[] var3, int var4, int var5, int var6, int var8, int var9, Class3_Sub24_Sub1 var10, int var11, int var12) { + int var7; + if(var11 == 0 || (var7 = var5 + (var9 + 256 - var4 + var11) / var11) > var8) { + var7 = var8; + } + + int var10001; + int var1; + while(var5 < var7) { + var1 = var4 >> 8; + byte var13 = var2[var1 - 1]; + var10001 = var5++; + var3[var10001] += ((var13 << 8) + (var2[var1] - var13) * (var4 & 0xFF)) * var6 >> 6; + var4 += var11; + } + + if(var11 == 0 || (var7 = var5 + (var9 - var4 + var11) / var11) > var8) { + var7 = var8; + } + + for(var1 = var11; var5 < var7; var4 += var1) { + var10001 = var5++; + var3[var10001] += ((var12 << 8) + (var2[var4 >> 8] - var12) * (var4 & 0xFF)) * var6 >> 6; + } + + var10.anInt3474 = var4; + return var5; + } + + private static int method424(byte[] var0, int[] var1, int var2, int var3, int var4, int var6, int var7, Class3_Sub24_Sub1 var8) { + var2 >>= 8; + var7 >>= 8; + var4 <<= 2; + int var5; + if((var5 = var3 + var7 - var2) > var6) { + var5 = var6; + } + + int var10001; + for(var5 -= 3; var3 < var5; var1[var10001] += var0[var2++] * var4) { + var10001 = var3++; + var1[var10001] += var0[var2++] * var4; + var10001 = var3++; + var1[var10001] += var0[var2++] * var4; + var10001 = var3++; + var1[var10001] += var0[var2++] * var4; + var10001 = var3++; + } + + for(var5 += 3; var3 < var5; var1[var10001] += var0[var2++] * var4) { + var10001 = var3++; + } + + var8.anInt3474 = var2 << 8; + return var3; + } + + final synchronized int method425() { + return this.anInt3471 == Integer.MIN_VALUE?0:this.anInt3471; + } + + private static int method426(byte[] var1, int[] var2, int var3, int var4, int var5, int var6, int var7, int var8, int var10, int var11, Class3_Sub24_Sub1 var12) { + var3 >>= 8; + var11 >>= 8; + var5 <<= 2; + var6 <<= 2; + var7 <<= 2; + var8 <<= 2; + int var9; + if((var9 = var4 + var11 - var3) > var10) { + var9 = var10; + } + + var12.anInt3476 += var12.anInt3472 * (var9 - var4); + var4 <<= 1; + var9 <<= 1; + + int var10001; + byte var13; + for(var9 -= 6; var4 < var9; var6 += var8) { + var13 = var1[var3++]; + var10001 = var4++; + var2[var10001] += var13 * var5; + var5 += var7; + var10001 = var4++; + var2[var10001] += var13 * var6; + var6 += var8; + var13 = var1[var3++]; + var10001 = var4++; + var2[var10001] += var13 * var5; + var5 += var7; + var10001 = var4++; + var2[var10001] += var13 * var6; + var6 += var8; + var13 = var1[var3++]; + var10001 = var4++; + var2[var10001] += var13 * var5; + var5 += var7; + var10001 = var4++; + var2[var10001] += var13 * var6; + var6 += var8; + var13 = var1[var3++]; + var10001 = var4++; + var2[var10001] += var13 * var5; + var5 += var7; + var10001 = var4++; + var2[var10001] += var13 * var6; + } + + for(var9 += 6; var4 < var9; var6 += var8) { + var13 = var1[var3++]; + var10001 = var4++; + var2[var10001] += var13 * var5; + var5 += var7; + var10001 = var4++; + var2[var10001] += var13 * var6; + } + + var12.anInt3484 = var5 >> 2; + var12.anInt3481 = var6 >> 2; + var12.anInt3474 = var3 << 8; + return var4 >> 1; + } + + private static int method427(byte[] var0, int[] var1, int var2, int var3, int var4, int var5, int var7, int var8, Class3_Sub24_Sub1 var9) { + var2 >>= 8; + var8 >>= 8; + var4 <<= 2; + var5 <<= 2; + int var6; + if((var6 = var3 + var2 - (var8 - 1)) > var7) { + var6 = var7; + } + + var9.anInt3484 += var9.anInt3475 * (var6 - var3); + var9.anInt3481 += var9.anInt3483 * (var6 - var3); + + int var10001; + for(var6 -= 3; var3 < var6; var4 += var5) { + var10001 = var3++; + var1[var10001] += var0[var2--] * var4; + var4 += var5; + var10001 = var3++; + var1[var10001] += var0[var2--] * var4; + var4 += var5; + var10001 = var3++; + var1[var10001] += var0[var2--] * var4; + var4 += var5; + var10001 = var3++; + var1[var10001] += var0[var2--] * var4; + } + + for(var6 += 3; var3 < var6; var4 += var5) { + var10001 = var3++; + var1[var10001] += var0[var2--] * var4; + } + + var9.anInt3476 = var4 >> 2; + var9.anInt3474 = var2 << 8; + return var3; + } + + private static int method428(byte[] var0, int[] var1, int var2, int var3, int var4, int var5, int var7, int var8, Class3_Sub24_Sub1 var9) { + var2 >>= 8; + var8 >>= 8; + var4 <<= 2; + var5 <<= 2; + int var6; + if((var6 = var3 + var8 - var2) > var7) { + var6 = var7; + } + + var9.anInt3484 += var9.anInt3475 * (var6 - var3); + var9.anInt3481 += var9.anInt3483 * (var6 - var3); + + int var10001; + for(var6 -= 3; var3 < var6; var4 += var5) { + var10001 = var3++; + var1[var10001] += var0[var2++] * var4; + var4 += var5; + var10001 = var3++; + var1[var10001] += var0[var2++] * var4; + var4 += var5; + var10001 = var3++; + var1[var10001] += var0[var2++] * var4; + var4 += var5; + var10001 = var3++; + var1[var10001] += var0[var2++] * var4; + } + + for(var6 += 3; var3 < var6; var4 += var5) { + var10001 = var3++; + var1[var10001] += var0[var2++] * var4; + } + + var9.anInt3476 = var4 >> 2; + var9.anInt3474 = var2 << 8; + return var3; + } + + final synchronized void method415(int var1) { + if(this.anInt3480 > 0) { + if(var1 >= this.anInt3480) { + if(this.anInt3471 == Integer.MIN_VALUE) { + this.anInt3471 = 0; + this.anInt3476 = this.anInt3484 = this.anInt3481 = 0; + this.unlink(); + var1 = this.anInt3480; + } + + this.anInt3480 = 0; + this.method449(); + } else { + this.anInt3476 += this.anInt3472 * var1; + this.anInt3484 += this.anInt3475 * var1; + this.anInt3481 += this.anInt3483 * var1; + this.anInt3480 -= var1; + } + } + + PcmSound var2 = (PcmSound)this.aSound_2544; + int var3 = this.anInt3473 << 8; + int var4 = this.anInt3482 << 8; + int var5 = var2.samples.length << 8; + int var6 = var4 - var3; + if(var6 <= 0) { + this.anInt3479 = 0; + } + + if(this.anInt3474 < 0) { + if(this.anInt3470 <= 0) { + this.method439(); + this.unlink(); + return; + } + + this.anInt3474 = 0; + } + + if(this.anInt3474 >= var5) { + if(this.anInt3470 >= 0) { + this.method439(); + this.unlink(); + return; + } + + this.anInt3474 = var5 - 1; + } + + this.anInt3474 += this.anInt3470 * var1; + if(this.anInt3479 < 0) { + if(this.aBoolean3477) { + if(this.anInt3470 < 0) { + if(this.anInt3474 >= var3) { + return; + } + + this.anInt3474 = var3 + var3 - 1 - this.anInt3474; + this.anInt3470 = -this.anInt3470; + } + + while(this.anInt3474 >= var4) { + this.anInt3474 = var4 + var4 - 1 - this.anInt3474; + this.anInt3470 = -this.anInt3470; + if(this.anInt3474 >= var3) { + return; + } + + this.anInt3474 = var3 + var3 - 1 - this.anInt3474; + this.anInt3470 = -this.anInt3470; + } + + } else if (this.anInt3470 < 0) { + if (this.anInt3474 >= var3) { + return; + } + + this.anInt3474 = var4 - 1 - (var4 - 1 - this.anInt3474) % var6; + } else { + if (this.anInt3474 < var4) { + return; + } + + this.anInt3474 = var3 + (this.anInt3474 - var3) % var6; + } + } else { + if(this.anInt3479 > 0) { + if(this.aBoolean3477) { + label122: { + if(this.anInt3470 < 0) { + if(this.anInt3474 >= var3) { + return; + } + + this.anInt3474 = var3 + var3 - 1 - this.anInt3474; + this.anInt3470 = -this.anInt3470; + if(--this.anInt3479 == 0) { + break label122; + } + } + + do { + if(this.anInt3474 < var4) { + return; + } + + this.anInt3474 = var4 + var4 - 1 - this.anInt3474; + this.anInt3470 = -this.anInt3470; + if(--this.anInt3479 == 0) { + break; + } + + if(this.anInt3474 >= var3) { + return; + } + + this.anInt3474 = var3 + var3 - 1 - this.anInt3474; + this.anInt3470 = -this.anInt3470; + } while(--this.anInt3479 != 0); + } + } else { + label132: { + int var7; + if(this.anInt3470 < 0) { + if(this.anInt3474 >= var3) { + return; + } + + var7 = (var4 - 1 - this.anInt3474) / var6; + if(var7 >= this.anInt3479) { + this.anInt3474 += var6 * this.anInt3479; + this.anInt3479 = 0; + break label132; + } + + this.anInt3474 += var6 * var7; + } else { + if(this.anInt3474 < var4) { + return; + } + + var7 = (this.anInt3474 - var3) / var6; + if(var7 >= this.anInt3479) { + this.anInt3474 -= var6 * this.anInt3479; + this.anInt3479 = 0; + break label132; + } + + this.anInt3474 -= var6 * var7; + } + this.anInt3479 -= var7; + + return; + } + } + } + + if(this.anInt3470 < 0) { + if(this.anInt3474 < 0) { + this.anInt3474 = -1; + this.method439(); + this.unlink(); + } + } else if(this.anInt3474 >= var5) { + this.anInt3474 = var5; + this.method439(); + this.unlink(); + } + + } + } + + final synchronized void method429(int var1) { + this.anInt3479 = var1; + } + + private synchronized void method430() { + this.method441(0, this.method451()); + } + + final synchronized void method431(int var1, int var2) { + this.method450(var1, var2, this.method451()); + } + + static Class3_Sub24_Sub1 method432(PcmSound var0, int var1, int var2, int var3) { + return var0.samples != null && var0.samples.length != 0?new Class3_Sub24_Sub1(var0, var1, var2, var3):null; + } + + final Class3_Sub24 method411() { + return null; + } + + private static int method433(byte[] var2, int[] var3, int var4, int var5, int var6, int var7, int var9, int var10, Class3_Sub24_Sub1 var11, int var12, int var13) { + int var8; + if(var12 == 0 || (var8 = var5 + (var10 - var4 + var12 - 257) / var12) > var9) { + var8 = var9; + } + + var5 <<= 1; + + int var10001; + byte var14; + int var1; + int var0; + for(var8 <<= 1; var5 < var8; var4 += var12) { + var1 = var4 >> 8; + var14 = var2[var1]; + var0 = (var14 << 8) + (var2[var1 + 1] - var14) * (var4 & 0xFF); + var10001 = var5++; + var3[var10001] += var0 * var6 >> 6; + var10001 = var5++; + var3[var10001] += var0 * var7 >> 6; + } + + if(var12 == 0 || (var8 = (var5 >> 1) + (var10 - var4 + var12 - 1) / var12) > var9) { + var8 = var9; + } + + var8 <<= 1; + + for(var1 = var13; var5 < var8; var4 += var12) { + var14 = var2[var4 >> 8]; + var0 = (var14 << 8) + (var1 - var14) * (var4 & 0xFF); + var10001 = var5++; + var3[var10001] += var0 * var6 >> 6; + var10001 = var5++; + var3[var10001] += var0 * var7 >> 6; + } + + var11.anInt3474 = var4; + return var5 >> 1; + } + + final synchronized void method434(int var1) { + int var2 = ((PcmSound)this.aSound_2544).samples.length << 8; + if(var1 < -1) { + var1 = -1; + } + + if(var1 > var2) { + var1 = var2; + } + + this.anInt3474 = var1; + } + + private static int method435(byte[] var1, int[] var2, int var3, int var4, int var5, int var6, int var7, int var8, int var10, int var11, Class3_Sub24_Sub1 var12) { + var3 >>= 8; + var11 >>= 8; + var5 <<= 2; + var6 <<= 2; + var7 <<= 2; + var8 <<= 2; + int var9; + if((var9 = var4 + var3 - (var11 - 1)) > var10) { + var9 = var10; + } + + var12.anInt3476 += var12.anInt3472 * (var9 - var4); + var4 <<= 1; + var9 <<= 1; + + int var10001; + byte var13; + for(var9 -= 6; var4 < var9; var6 += var8) { + var13 = var1[var3--]; + var10001 = var4++; + var2[var10001] += var13 * var5; + var5 += var7; + var10001 = var4++; + var2[var10001] += var13 * var6; + var6 += var8; + var13 = var1[var3--]; + var10001 = var4++; + var2[var10001] += var13 * var5; + var5 += var7; + var10001 = var4++; + var2[var10001] += var13 * var6; + var6 += var8; + var13 = var1[var3--]; + var10001 = var4++; + var2[var10001] += var13 * var5; + var5 += var7; + var10001 = var4++; + var2[var10001] += var13 * var6; + var6 += var8; + var13 = var1[var3--]; + var10001 = var4++; + var2[var10001] += var13 * var5; + var5 += var7; + var10001 = var4++; + var2[var10001] += var13 * var6; + } + + for(var9 += 6; var4 < var9; var6 += var8) { + var13 = var1[var3--]; + var10001 = var4++; + var2[var10001] += var13 * var5; + var5 += var7; + var10001 = var4++; + var2[var10001] += var13 * var6; + } + + var12.anInt3484 = var5 >> 2; + var12.anInt3481 = var6 >> 2; + var12.anInt3474 = var3 << 8; + return var4 >> 1; + } + + private int method436(int[] var1, int var2, int var3, int var4, int var5) { + while(true) { + if(this.anInt3480 > 0) { + int var6 = var2 + this.anInt3480; + if(var6 > var4) { + var6 = var4; + } + + this.anInt3480 += var2; + if(this.anInt3470 == -256 && (this.anInt3474 & 0xFF) == 0) { + if(AudioChannel.stereo) { + var2 = method435(((PcmSound)this.aSound_2544).samples, var1, this.anInt3474, var2, this.anInt3484, this.anInt3481, this.anInt3475, this.anInt3483, var6, var3, this); + } else { + var2 = method427(((PcmSound)this.aSound_2544).samples, var1, this.anInt3474, var2, this.anInt3476, this.anInt3472, var6, var3, this); + } + } else if(AudioChannel.stereo) { + var2 = method440(((PcmSound)this.aSound_2544).samples, var1, this.anInt3474, var2, this.anInt3484, this.anInt3481, this.anInt3475, this.anInt3483, var6, var3, this, this.anInt3470, var5); + } else { + var2 = method448(((PcmSound)this.aSound_2544).samples, var1, this.anInt3474, var2, this.anInt3476, this.anInt3472, var6, var3, this, this.anInt3470, var5); + } + + this.anInt3480 -= var2; + if(this.anInt3480 != 0) { + return var2; + } + + if(this.method416()) { + continue; + } + + return var4; + } + + if(this.anInt3470 == -256 && (this.anInt3474 & 0xFF) == 0) { + if(AudioChannel.stereo) { + return method447(((PcmSound)this.aSound_2544).samples, var1, this.anInt3474, var2, this.anInt3484, this.anInt3481, var4, var3, this); + } + + return method446(((PcmSound)this.aSound_2544).samples, var1, this.anInt3474, var2, this.anInt3476, var4, var3, this); + } + + if(AudioChannel.stereo) { + return method453(((PcmSound)this.aSound_2544).samples, var1, this.anInt3474, var2, this.anInt3484, this.anInt3481, var4, var3, this, this.anInt3470, var5); + } + + return method423(((PcmSound)this.aSound_2544).samples, var1, this.anInt3474, var2, this.anInt3476, var4, var3, this, this.anInt3470, var5); + } + } + + static Class3_Sub24_Sub1 method437(PcmSound var0, int var2) { + return var0.samples != null && var0.samples.length != 0?new Class3_Sub24_Sub1(var0, (int)((long)var0.frequency * 256L * (long) 100 / (long)(100 * Class21.sampleRate)), var2 << 6):null; + } + + final synchronized int method438() { + return this.anInt3470 < 0?-this.anInt3470:this.anInt3470; + } + + private void method439() { + if(this.anInt3480 != 0) { + if(this.anInt3471 == Integer.MIN_VALUE) { + this.anInt3471 = 0; + } + + this.anInt3480 = 0; + this.method449(); + } + + } + + private static int method440(byte[] var2, int[] var3, int var4, int var5, int var6, int var7, int var8, int var9, int var11, int var12, Class3_Sub24_Sub1 var13, int var14, int var15) { + var13.anInt3476 -= var13.anInt3472 * var5; + int var10; + if(var14 == 0 || (var10 = var5 + (var12 + 256 - var4 + var14) / var14) > var11) { + var10 = var11; + } + + var5 <<= 1; + + int var10001; + int var1; + int var0; + for(var10 <<= 1; var5 < var10; var4 += var14) { + var1 = var4 >> 8; + byte var16 = var2[var1 - 1]; + var0 = (var16 << 8) + (var2[var1] - var16) * (var4 & 0xFF); + var10001 = var5++; + var3[var10001] += var0 * var6 >> 6; + var6 += var8; + var10001 = var5++; + var3[var10001] += var0 * var7 >> 6; + var7 += var9; + } + + if(var14 == 0 || (var10 = (var5 >> 1) + (var12 - var4 + var14) / var14) > var11) { + var10 = var11; + } + + var10 <<= 1; + + for(var1 = var15; var5 < var10; var4 += var14) { + var0 = (var1 << 8) + (var2[var4 >> 8] - var1) * (var4 & 0xFF); + var10001 = var5++; + var3[var10001] += var0 * var6 >> 6; + var6 += var8; + var10001 = var5++; + var3[var10001] += var0 * var7 >> 6; + var7 += var9; + } + + var5 >>= 1; + var13.anInt3476 += var13.anInt3472 * var5; + var13.anInt3484 = var6; + var13.anInt3481 = var7; + var13.anInt3474 = var4; + return var5; + } + + private synchronized void method441(int var1, int var2) { + this.anInt3471 = var1; + this.anInt3478 = var2; + this.anInt3480 = 0; + this.method449(); + } + + final synchronized void method442() { + this.anInt3470 = (this.anInt3470 ^ this.anInt3470 >> 31) + (this.anInt3470 >>> 31); + this.anInt3470 = -this.anInt3470; + + } + + final synchronized void method443(int var1) { + if(this.anInt3470 < 0) { + this.anInt3470 = -var1; + } else { + this.anInt3470 = var1; + } + + } + + final boolean method444() { + return this.anInt3474 < 0 || this.anInt3474 >= ((PcmSound)this.aSound_2544).samples.length << 8; + } + + final boolean method445() { + return this.anInt3480 != 0; + } + + private static int method446(byte[] var0, int[] var1, int var2, int var3, int var4, int var6, int var7, Class3_Sub24_Sub1 var8) { + var2 >>= 8; + var7 >>= 8; + var4 <<= 2; + int var5; + if((var5 = var3 + var2 - (var7 - 1)) > var6) { + var5 = var6; + } + + int var10001; + for(var5 -= 3; var3 < var5; var1[var10001] += var0[var2--] * var4) { + var10001 = var3++; + var1[var10001] += var0[var2--] * var4; + var10001 = var3++; + var1[var10001] += var0[var2--] * var4; + var10001 = var3++; + var1[var10001] += var0[var2--] * var4; + var10001 = var3++; + } + + for(var5 += 3; var3 < var5; var1[var10001] += var0[var2--] * var4) { + var10001 = var3++; + } + + var8.anInt3474 = var2 << 8; + return var3; + } + + private static int method447(byte[] var1, int[] var2, int var3, int var4, int var5, int var6, int var8, int var9, Class3_Sub24_Sub1 var10) { + var3 >>= 8; + var9 >>= 8; + var5 <<= 2; + var6 <<= 2; + int var7; + if((var7 = var4 + var3 - (var9 - 1)) > var8) { + var7 = var8; + } + + var4 <<= 1; + var7 <<= 1; + + byte var11; + int var10001; + for(var7 -= 6; var4 < var7; var2[var10001] += var11 * var6) { + var11 = var1[var3--]; + var10001 = var4++; + var2[var10001] += var11 * var5; + var10001 = var4++; + var2[var10001] += var11 * var6; + var11 = var1[var3--]; + var10001 = var4++; + var2[var10001] += var11 * var5; + var10001 = var4++; + var2[var10001] += var11 * var6; + var11 = var1[var3--]; + var10001 = var4++; + var2[var10001] += var11 * var5; + var10001 = var4++; + var2[var10001] += var11 * var6; + var11 = var1[var3--]; + var10001 = var4++; + var2[var10001] += var11 * var5; + var10001 = var4++; + } + + for(var7 += 6; var4 < var7; var2[var10001] += var11 * var6) { + var11 = var1[var3--]; + var10001 = var4++; + var2[var10001] += var11 * var5; + var10001 = var4++; + } + + var10.anInt3474 = var3 << 8; + return var4 >> 1; + } + + private static int method448(byte[] var2, int[] var3, int var4, int var5, int var6, int var7, int var9, int var10, Class3_Sub24_Sub1 var11, int var12, int var13) { + var11.anInt3484 -= var11.anInt3475 * var5; + var11.anInt3481 -= var11.anInt3483 * var5; + int var8; + if(var12 == 0 || (var8 = var5 + (var10 + 256 - var4 + var12) / var12) > var9) { + var8 = var9; + } + + int var10001; + int var1; + while(var5 < var8) { + var1 = var4 >> 8; + byte var14 = var2[var1 - 1]; + var10001 = var5++; + var3[var10001] += ((var14 << 8) + (var2[var1] - var14) * (var4 & 0xFF)) * var6 >> 6; + var6 += var7; + var4 += var12; + } + + if(var12 == 0 || (var8 = var5 + (var10 - var4 + var12) / var12) > var9) { + var8 = var9; + } + + for(var1 = var12; var5 < var8; var4 += var1) { + var10001 = var5++; + var3[var10001] += ((var13 << 8) + (var2[var4 >> 8] - var13) * (var4 & 0xFF)) * var6 >> 6; + var6 += var7; + } + + var11.anInt3484 += var11.anInt3475 * var5; + var11.anInt3481 += var11.anInt3483 * var5; + var11.anInt3476 = var6; + var11.anInt3474 = var4; + return var5; + } + + private void method449() { + this.anInt3476 = this.anInt3471; + this.anInt3484 = method452(this.anInt3471, this.anInt3478); + this.anInt3481 = method454(this.anInt3471, this.anInt3478); + } + + final synchronized void method450(int var1, int var2, int var3) { + if(var1 == 0) { + this.method441(var2, var3); + } else { + int var4 = method452(var2, var3); + int var5 = method454(var2, var3); + if(this.anInt3484 == var4 && this.anInt3481 == var5) { + this.anInt3480 = 0; + } else { + int var6 = var2 - this.anInt3476; + if(this.anInt3476 - var2 > var6) { + var6 = this.anInt3476 - var2; + } + + if(var4 - this.anInt3484 > var6) { + var6 = var4 - this.anInt3484; + } + + if(this.anInt3484 - var4 > var6) { + var6 = this.anInt3484 - var4; + } + + if(var5 - this.anInt3481 > var6) { + var6 = var5 - this.anInt3481; + } + + if(this.anInt3481 - var5 > var6) { + var6 = this.anInt3481 - var5; + } + + if(var1 > var6) { + var1 = var6; + } + + this.anInt3480 = var1; + this.anInt3471 = var2; + this.anInt3478 = var3; + this.anInt3472 = (var2 - this.anInt3476) / var1; + this.anInt3475 = (var4 - this.anInt3484) / var1; + this.anInt3483 = (var5 - this.anInt3481) / var1; + } + } + } + + final synchronized int method451() { + return this.anInt3478 < 0?-1:this.anInt3478; + } + + private static int method452(int var0, int var1) { + return var1 < 0?var0:(int)((double)var0 * Math.sqrt((double)(16384 - var1) * 1.220703125E-4D) + 0.5D); + } + + private static int method453(byte[] var2, int[] var3, int var4, int var5, int var6, int var7, int var9, int var10, Class3_Sub24_Sub1 var11, int var12, int var13) { + int var8; + if(var12 == 0 || (var8 = var5 + (var10 + 256 - var4 + var12) / var12) > var9) { + var8 = var9; + } + + var5 <<= 1; + + int var10001; + int var1; + int var0; + for(var8 <<= 1; var5 < var8; var4 += var12) { + var1 = var4 >> 8; + byte var14 = var2[var1 - 1]; + var0 = (var14 << 8) + (var2[var1] - var14) * (var4 & 0xFF); + var10001 = var5++; + var3[var10001] += var0 * var6 >> 6; + var10001 = var5++; + var3[var10001] += var0 * var7 >> 6; + } + + if(var12 == 0 || (var8 = (var5 >> 1) + (var10 - var4 + var12) / var12) > var9) { + var8 = var9; + } + + var8 <<= 1; + + for(var1 = var13; var5 < var8; var4 += var12) { + var0 = (var1 << 8) + (var2[var4 >> 8] - var1) * (var4 & 0xFF); + var10001 = var5++; + var3[var10001] += var0 * var6 >> 6; + var10001 = var5++; + var3[var10001] += var0 * var7 >> 6; + } + + var11.anInt3474 = var4; + return var5 >> 1; + } + + private Class3_Sub24_Sub1(PcmSound var1, int var2, int var3) { + this.aSound_2544 = var1; + this.anInt3473 = var1.anInt3033; + this.anInt3482 = var1.anInt3032; + this.aBoolean3477 = var1.aBoolean3031; + this.anInt3470 = var2; + this.anInt3471 = var3; + this.anInt3478 = 8192; + this.anInt3474 = 0; + this.method449(); + } + + final Class3_Sub24 method414() { + return null; + } + + private static int method454(int var0, int var1) { + return var1 < 0?-var0:(int)((double)var0 * Math.sqrt((double)var1 * 1.220703125E-4D) + 0.5D); + } + + private Class3_Sub24_Sub1(PcmSound var1, int var2, int var3, int var4) { + this.aSound_2544 = var1; + this.anInt3473 = var1.anInt3033; + this.anInt3482 = var1.anInt3032; + this.aBoolean3477 = var1.aBoolean3031; + this.anInt3470 = var2; + this.anInt3471 = var3; + this.anInt3478 = var4; + this.anInt3474 = 0; + this.method449(); + } + + private static int method455(byte[] var2, int[] var3, int var4, int var5, int var6, int var8, int var9, Class3_Sub24_Sub1 var10, int var11, int var12) { + int var7; + if(var11 == 0 || (var7 = var5 + (var9 - var4 + var11 - 257) / var11) > var8) { + var7 = var8; + } + + int var10001; + byte var13; + int var1; + while(var5 < var7) { + var1 = var4 >> 8; + var13 = var2[var1]; + var10001 = var5++; + var3[var10001] += ((var13 << 8) + (var2[var1 + 1] - var13) * (var4 & 0xFF)) * var6 >> 6; + var4 += var11; + } + + if(var11 == 0 || (var7 = var5 + (var9 - var4 + var11 - 1) / var11) > var8) { + var7 = var8; + } + + for(var1 = var12; var5 < var7; var4 += var11) { + var13 = var2[var4 >> 8]; + var10001 = var5++; + var3[var10001] += ((var13 << 8) + (var1 - var13) * (var4 & 0xFF)) * var6 >> 6; + } + + var10.anInt3474 = var4; + return var5; + } +} diff --git a/Client/src/main/java/org/runite/client/Class3_Sub24_Sub2.java b/Client/src/main/java/org/runite/client/Class3_Sub24_Sub2.java new file mode 100644 index 000000000..984731139 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class3_Sub24_Sub2.java @@ -0,0 +1,164 @@ +package org.runite.client; + +import org.rs09.client.Linkable; + +import java.util.Objects; + +final class Class3_Sub24_Sub2 extends Class3_Sub24 { + + private final LinkedList aLinkedList_3485 = new LinkedList(); + private final LinkedList aLinkedList_3486 = new LinkedList(); + private int anInt3487 = 0; + private int anInt3488 = -1; + + static void method1662(Linkable var0, Linkable var1) { + try { + if(null != var0.previous) { + var0.unlink(); + } + + var0.next = var1; + var0.previous = var1.previous; + var0.previous.next = var0; + var0.next.previous = var0; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "ok.C(" + (var0 != null?"{...}":"null") + ',' + (var1 != null?"{...}":"null") + ',' + -16 + ')'); + } + } + + + private void method456(Class3_Sub3 var1) { + var1.unlink(); + var1.method106(); + Linkable var2 = this.aLinkedList_3486.head.next; + if(var2 == this.aLinkedList_3486.head) { + this.anInt3488 = -1; + } else { + this.anInt3488 = ((Class3_Sub3)var2).anInt2247; + } + + } + + final synchronized void method457(Class3_Sub24 var1) { + this.aLinkedList_3485.method1216(var1); + } + + final synchronized void method413(int[] var1, int var2, int var3) { + do { + if(this.anInt3488 < 0) { + this.method460(var1, var2, var3); + return; + } + + if(this.anInt3487 + var3 < this.anInt3488) { + this.anInt3487 += var3; + this.method460(var1, var2, var3); + return; + } + + int var4 = this.anInt3488 - this.anInt3487; + this.method460(var1, var2, var4); + var2 += var4; + var3 -= var4; + this.anInt3487 += var4; + this.method458(); + Class3_Sub3 var5 = (Class3_Sub3)this.aLinkedList_3486.startIteration(); + synchronized(Objects.requireNonNull(var5)) { + int var7 = var5.method105(this); + if(var7 < 0) { + var5.anInt2247 = 0; + this.method456(var5); + } else { + var5.anInt2247 = var7; + this.method462(var5.next, var5); + } + } + } while(var3 != 0); + + } + + private void method458() { + if(this.anInt3487 > 0) { + for(Class3_Sub3 var1 = (Class3_Sub3)this.aLinkedList_3486.startIteration(); var1 != null; var1 = (Class3_Sub3)this.aLinkedList_3486.nextIteration()) { + var1.anInt2247 -= this.anInt3487; + } + + this.anInt3488 -= this.anInt3487; + this.anInt3487 = 0; + } + + } + + final Class3_Sub24 method411() { + return (Class3_Sub24)this.aLinkedList_3485.startIteration(); + } + + private void method459(int var1) { + for(Class3_Sub24 var2 = (Class3_Sub24)this.aLinkedList_3485.startIteration(); var2 != null; var2 = (Class3_Sub24)this.aLinkedList_3485.nextIteration()) { + var2.method415(var1); + } + + } + + private void method460(int[] var1, int var2, int var3) { + for(Class3_Sub24 var4 = (Class3_Sub24)this.aLinkedList_3485.startIteration(); var4 != null; var4 = (Class3_Sub24)this.aLinkedList_3485.nextIteration()) { + var4.method410(var1, var2, var3); + } + + } + + final synchronized void method461(Class3_Sub24 var1) { + var1.unlink(); + } + + final int method409() { + return 0; + } + + final synchronized void method415(int var1) { + do { + if(this.anInt3488 < 0) { + this.method459(var1); + return; + } + + if(this.anInt3487 + var1 < this.anInt3488) { + this.anInt3487 += var1; + this.method459(var1); + return; + } + + int var2 = this.anInt3488 - this.anInt3487; + this.method459(var2); + var1 -= var2; + this.anInt3487 += var2; + this.method458(); + Class3_Sub3 var3 = (Class3_Sub3)this.aLinkedList_3486.startIteration(); + synchronized(Objects.requireNonNull(var3)) { + int var5 = var3.method105(this); + if(var5 < 0) { + var3.anInt2247 = 0; + this.method456(var3); + } else { + var3.anInt2247 = var5; + this.method462(var3.next, var3); + } + } + } while(var1 != 0); + + } + + final Class3_Sub24 method414() { + return (Class3_Sub24)this.aLinkedList_3485.nextIteration(); + } + + private void method462(Linkable var1, Class3_Sub3 var2) { + while(var1 != this.aLinkedList_3486.head && ((Class3_Sub3)var1).anInt2247 <= var2.anInt2247) { + var1 = var1.next; + } + + method1662(var2, var1); + this.anInt3488 = ((Class3_Sub3)this.aLinkedList_3486.head.next).anInt2247; + } + +} diff --git a/Client/src/main/java/org/runite/client/Class3_Sub24_Sub3.java b/Client/src/main/java/org/runite/client/Class3_Sub24_Sub3.java new file mode 100644 index 000000000..6a9bcace6 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class3_Sub24_Sub3.java @@ -0,0 +1,227 @@ +package org.runite.client; + +import java.util.Objects; + +final class Class3_Sub24_Sub3 extends Class3_Sub24 { + + LinkedList aLinkedList_3489 = new LinkedList(); + static int[] anIntArray3491 = new int[]{0, -1, 0, 1}; + static int maxClientMemory = 64; + private final Class3_Sub24_Sub4 aClass3_Sub24_Sub4_3493; + static int[] regionIds; + Class3_Sub24_Sub2 aClass3_Sub24_Sub2_3495 = new Class3_Sub24_Sub2(); + + + final Class3_Sub24 method414() { + try { + Class3_Sub22 var1; + do { + var1 = (Class3_Sub22)this.aLinkedList_3489.nextIteration(); + if(null == var1) { + return null; + } + } while(var1.aClass3_Sub24_Sub1_2507 == null); + + return var1.aClass3_Sub24_Sub1_2507; + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "te.B()"); + } + } + + final Class3_Sub24 method411() { + try { + Class3_Sub22 var1 = (Class3_Sub22)this.aLinkedList_3489.startIteration(); + return null != var1?(null != var1.aClass3_Sub24_Sub1_2507?var1.aClass3_Sub24_Sub1_2507:this.method414()):null; + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "te.Q()"); + } + } + + private void method464(Class3_Sub22 var1, int var3) { + try { + if((this.aClass3_Sub24_Sub4_3493.anIntArray3518[var1.anInt2514] & 4) != 0 && var1.anInt2506 < 0) { + int var4 = this.aClass3_Sub24_Sub4_3493.anIntArray3509[var1.anInt2514] / Class21.sampleRate; + int var5 = (var4 + 1048575 + -var1.anInt2516) / var4; + var1.anInt2516 = 1048575 & var4 * var3 + var1.anInt2516; + if(var5 <= var3) { + if(0 == this.aClass3_Sub24_Sub4_3493.anIntArray3519[var1.anInt2514]) { + var1.aClass3_Sub24_Sub1_2507 = Class3_Sub24_Sub1.method432(var1.aPcmSound_2509, var1.aClass3_Sub24_Sub1_2507.method438(), var1.aClass3_Sub24_Sub1_2507.method425(), var1.aClass3_Sub24_Sub1_2507.method451()); + } else { + var1.aClass3_Sub24_Sub1_2507 = Class3_Sub24_Sub1.method432(var1.aPcmSound_2509, var1.aClass3_Sub24_Sub1_2507.method438(), 0, var1.aClass3_Sub24_Sub1_2507.method451()); + this.aClass3_Sub24_Sub4_3493.method501(var1, var1.aClass3_Sub15_2527.aShortArray2434[var1.anInt2520] < 0, (byte)-101); + } + + if(var1.aClass3_Sub15_2527.aShortArray2434[var1.anInt2520] < 0) { + Objects.requireNonNull(var1.aClass3_Sub24_Sub1_2507).method429(-1); + } + + var3 = var1.anInt2516 / var4; + } + } + + Objects.requireNonNull(var1.aClass3_Sub24_Sub1_2507).method415(var3); + + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "te.P(" + (var1 != null?"{...}":"null") + ',' + 7 + ',' + var3 + ')'); + } + } + + final int method409() { + try { + return 0; + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "te.D()"); + } + } + + static boolean method467(RSString var0) { + try { + if (var0 != null) { + for (int var2 = 0; var2 < Class3_Sub28_Sub5.anInt3591; ++var2) { + if (var0.equalsStringIgnoreCase(TextureOperation7.aStringArray3341[var2])) { + return true; + } + } + + } + return false; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "te.A(" + "{...}" + ',' + 0 + ')'); + } + } + + static void method468() { + try { + Class88.method1456(); + Unsorted.anShaderInterfaceArray70 = new ShaderInterface[7]; + Unsorted.anShaderInterfaceArray70[1] = new Class160(); + Unsorted.anShaderInterfaceArray70[2] = new Class125(); + Unsorted.anShaderInterfaceArray70[3] = new WaterShader(); + Unsorted.anShaderInterfaceArray70[4] = new WaterMovementShader(); + Unsorted.anShaderInterfaceArray70[5] = new WaterfallShader(); + Unsorted.anShaderInterfaceArray70[6] = new Class147(); + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "te.T(" + ')'); + } + } + + final void method415(int var1) { + try { + this.aClass3_Sub24_Sub2_3495.method415(var1); + + for(Class3_Sub22 var3 = (Class3_Sub22)this.aLinkedList_3489.startIteration(); var3 != null; var3 = (Class3_Sub22)this.aLinkedList_3489.nextIteration()) { + if(this.aClass3_Sub24_Sub4_3493.method504(var3, 121)) { + int var2 = var1; + + while(true) { + if(var2 > var3.anInt2512) { + this.method464(var3, var3.anInt2512); + var2 -= var3.anInt2512; + if(this.aClass3_Sub24_Sub4_3493.method492(var2, 0, var3, null)) { + continue; + } + break; + } + + this.method464(var3, var2); + var3.anInt2512 -= var2; + break; + } + } + } + + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "te.R(" + var1 + ')'); + } + } + + final void method413(int[] var1, int var2, int var3) { + try { + this.aClass3_Sub24_Sub2_3495.method413(var1, var2, var3); + + for(Class3_Sub22 var6 = (Class3_Sub22)this.aLinkedList_3489.startIteration(); var6 != null; var6 = (Class3_Sub22)this.aLinkedList_3489.nextIteration()) { + if(this.aClass3_Sub24_Sub4_3493.method504(var6, 126)) { + int var5 = var3; + int var4 = var2; + + while(true) { + if(var5 > var6.anInt2512) { + this.method469(var1, var6, var4, var6.anInt2512, var5 + var4); + var5 -= var6.anInt2512; + var4 += var6.anInt2512; + if(this.aClass3_Sub24_Sub4_3493.method492(var5, var4, var6, var1)) { + continue; + } + break; + } + + this.method469(var1, var6, var4, var5, var4 + var5); + var6.anInt2512 -= var5; + break; + } + } + } + + } catch (RuntimeException var7) { + throw ClientErrorException.clientError(var7, "te.E(" + (var1 != null?"{...}":"null") + ',' + var2 + ',' + var3 + ')'); + } + } + + private void method469(int[] var1, Class3_Sub22 var2, int var3, int var4, int var5) { + try { + if((4 & this.aClass3_Sub24_Sub4_3493.anIntArray3518[var2.anInt2514]) != 0 && var2.anInt2506 < 0) { + int var7 = this.aClass3_Sub24_Sub4_3493.anIntArray3509[var2.anInt2514] / Class21.sampleRate; + + while(true) { + int var8 = (-var2.anInt2516 + 1048575 + var7) / var7; + if(var4 < var8) { + var2.anInt2516 += var4 * var7; + break; + } + + var4 -= var8; + var2.aClass3_Sub24_Sub1_2507.method413(var1, var3, var8); + int var9 = Class21.sampleRate / 100; + Class3_Sub24_Sub1 var11 = var2.aClass3_Sub24_Sub1_2507; + int var10 = 262144 / var7; + if(var10 < var9) { + var9 = var10; + } + + var2.anInt2516 += var7 * var8 + -1048576; + if(this.aClass3_Sub24_Sub4_3493.anIntArray3519[var2.anInt2514] == 0) { + var2.aClass3_Sub24_Sub1_2507 = Class3_Sub24_Sub1.method432(var2.aPcmSound_2509, var11.method438(), var11.method425(), var11.method451()); + } else { + var2.aClass3_Sub24_Sub1_2507 = Class3_Sub24_Sub1.method432(var2.aPcmSound_2509, var11.method438(), 0, var11.method451()); + this.aClass3_Sub24_Sub4_3493.method501(var2, var2.aClass3_Sub15_2527.aShortArray2434[var2.anInt2520] < 0, (byte)-88); + var2.aClass3_Sub24_Sub1_2507.method431(var9, var11.method425()); + } + + if(var2.aClass3_Sub15_2527.aShortArray2434[var2.anInt2520] < 0) { + Objects.requireNonNull(var2.aClass3_Sub24_Sub1_2507).method429(-1); + } + + var3 += var8; + var11.method417(var9); + var11.method413(var1, var3, var5 + -var3); + if(var11.method445()) { + this.aClass3_Sub24_Sub2_3495.method457(var11); + } + } + } + + var2.aClass3_Sub24_Sub1_2507.method413(var1, var3, var4); + } catch (RuntimeException var12) { + throw ClientErrorException.clientError(var12, "te.S(" + (var1 != null?"{...}":"null") + ',' + (var2 != null?"{...}":"null") + ',' + var3 + ',' + var4 + ',' + var5 + ',' + (byte) 4 + ')'); + } + } + + Class3_Sub24_Sub3(Class3_Sub24_Sub4 var1) { + try { + this.aClass3_Sub24_Sub4_3493 = var1; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "te.(" + (var1 != null?"{...}":"null") + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class3_Sub24_Sub4.java b/Client/src/main/java/org/runite/client/Class3_Sub24_Sub4.java new file mode 100644 index 000000000..5d53b6804 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class3_Sub24_Sub4.java @@ -0,0 +1,1303 @@ +package org.runite.client; + +import org.rs09.client.config.GameConfig; +import org.rs09.client.data.HashTable; + +import java.util.Objects; + +final class Class3_Sub24_Sub4 extends Class3_Sub24 { + + private final int[] anIntArray3497 = new int[16]; + private final int[] anIntArray3498 = new int[16]; + private final int[] anIntArray3499 = new int[16]; + private final int[] anIntArray3500 = new int[16]; + private final int[] anIntArray3501 = new int[16]; + private final int[] anIntArray3502 = new int[16]; + static boolean[] aBooleanArray3503; + private final int[] anIntArray3504 = new int[16]; + private final Class78 aClass78_3505 = new Class78(); + private final int[] anIntArray3506 = new int[16]; + private final HashTable aHashTable_3508; + int[] anIntArray3509 = new int[16]; + private final int[] anIntArray3510 = new int[16]; + private final int anInt3511 = 1000000; + private final Class3_Sub22[][] aClass3_Sub22ArrayArray3512 = new Class3_Sub22[16][128]; + private final Class3_Sub22[][] aClass3_Sub22ArrayArray3513 = new Class3_Sub22[16][128]; + private final int[] anIntArray3514 = new int[16]; + private final int[] anIntArray3515 = new int[16]; + private final int[] anIntArray3516 = new int[16]; + int[] anIntArray3518 = new int[16]; + int[] anIntArray3519 = new int[16]; + private int[] anIntArray3520 = new int[16]; + private int anInt3521 = 256; + private boolean aBoolean3522; + private long aLong3523; + private int anInt3524; + private int anInt3525; + private long aLong3526; + private Class3_Sub24_Sub3 aClass3_Sub24_Sub3_3527 = new Class3_Sub24_Sub3(this); + private Class3_Sub27 aClass3_Sub27_3528; + + static void pushRightClickMenuAction(int var0, long nounId, byte var3, RSString noun, int mouseX, short var6, RSString verb, int mouseY) { + try { + if(var3 > -23) { + pushRightClickMenuAction(-45, 37L, (byte)-37, null, -16, (short)110, null, -75); + } + + if(!Class38_Sub1.aBoolean2615) { + if(Unsorted.menuOptionCount < 500) { + GroundItem.aStringArray2935[Unsorted.menuOptionCount] = verb; + Class163_Sub2_Sub1.aStringArray4016[Unsorted.menuOptionCount] = noun; + Class114.anIntArray1578[Unsorted.menuOptionCount] = var0 == -1 ?Class3_Sub28_Sub5.anInt3590:var0; + TextureOperation27.aShortArray3095[Unsorted.menuOptionCount] = var6; + Unsorted.aLongArray3271[Unsorted.menuOptionCount] = nounId; + Class117.anIntArray1613[Unsorted.menuOptionCount] = mouseX; + Class27.anIntArray512[Unsorted.menuOptionCount] = mouseY; + ++Unsorted.menuOptionCount; + } + + } + } catch (RuntimeException var10) { + throw ClientErrorException.clientError(var10, "hj.C(" + var0 + ',' + nounId + ',' + var3 + ',' + (noun != null?"{...}":"null") + ',' + mouseX + ',' + var6 + ',' + (verb != null?"{...}":"null") + ',' + mouseY + ')'); + } + } + + final synchronized boolean method470(Class3_Sub27 var1, CacheIndex var3, Class83 var4) { + try { + var1.method516(); + boolean var6 = true; + int[] var7; + var7 = new int[]{22050}; + for(Class3_Sub6 var9 = (Class3_Sub6)var1.aHashTable_2564.first(); var9 != null; var9 = (Class3_Sub6)var1.aHashTable_2564.next()) { + int var10 = (int)var9.linkableKey; + Class3_Sub15 var11 = (Class3_Sub15)this.aHashTable_3508.get(var10); + if(null == var11) { + var11 = Unsorted.method1245(var3, var10); + if(null == var11) { + var6 = false; + continue; + } + + this.aHashTable_3508.put(var10, var11); + } + + if(!var11.method373(var7, var4, var9.aByteArray2289)) { + var6 = false; + } + } + + if(var6) { + var1.method515(); + } + + return var6; + } catch (RuntimeException var12) { + throw ClientErrorException.clientError(var12, "va.DB(" + (var1 != null?"{...}":"null") + ',' + -122 + ',' + (var3 != null?"{...}":"null") + ',' + (var4 != null?"{...}":"null") + ',' + 22050 + ')'); + } + } + + final synchronized void method471() { + try { + for(Class3_Sub15 var2 = (Class3_Sub15)this.aHashTable_3508.first(); var2 != null; var2 = (Class3_Sub15)this.aHashTable_3508.next()) { + var2.method369(); + } + + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "va.AB(" + (byte) 53 + ')'); + } + } + + private void method472() { + try { + this.anIntArray3501[9] = 128; + this.anIntArray3506[9] = Unsorted.bitwiseAnd(128, -128); + this.method484(128, 9); + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "va.SA(" + 128 + ',' + 9 + ',' + 85 + ')'); + } + } + + final synchronized boolean method473(int var1) { + try { + if(var1 >= -121) { + this.anIntArray3509 = null; + } + + return this.aClass78_3505.method1373(); + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "va.VA(" + var1 + ')'); + } + } + + private synchronized void method475(boolean var1, Class3_Sub27 var2, boolean var3) { + try { + this.method507(var3); + this.aClass78_3505.method1380(var2.aByteArray2565); + this.aBoolean3522 = var1; + this.aLong3526 = 0L; + int var5 = this.aClass78_3505.method1374(); + + for(int var6 = 0; var6 < var5; ++var6) { + this.aClass78_3505.method1376(var6); + this.aClass78_3505.method1377(var6); + this.aClass78_3505.method1381(var6); + } + + this.anInt3525 = this.aClass78_3505.method1382(); + this.anInt3524 = this.aClass78_3505.anIntArray1114[this.anInt3525]; + this.aLong3523 = this.aClass78_3505.method1370(this.anInt3524); + } catch (RuntimeException var7) { + throw ClientErrorException.clientError(var7, "va.PA(" + var1 + ',' + (var2 != null?"{...}":"null") + ',' + var3 + ',' + (byte) -52 + ')'); + } + } + + private void method476(int var1, int var2) { + try { + this.anIntArray3499[var1] = var2; + + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "va.P(" + var1 + ',' + var2 + ',' + 0 + ')'); + } + } + + static void method477(int var0, int var2, RSInterface var3) { + try { + + if(var3.anInt318 == 1) { + pushRightClickMenuAction(-1, 0L, (byte)-78, RSString.parse(""), 0, (short)8, var3.aString_289, var3.componentHash); + } + + RSString var4; + if(var3.anInt318 == 2 && !GameObject.aBoolean1837) { + var4 = Class53.method1174(var3, (byte)-31); + if(null != var4) { + pushRightClickMenuAction(-1, 0L, (byte)-120, RSString.stringCombiner(new RSString[]{RSString.parse(""), var3.aString_243}), -1, (short)32, var4, var3.componentHash); + } + } + + if(var3.anInt318 == 3) { + pushRightClickMenuAction(-1, 0L, (byte)-59, RSString.parse(""), 0, (short)28, TextCore.HasClose, var3.componentHash); + } + + if(var3.anInt318 == 4) { + pushRightClickMenuAction(-1, 0L, (byte)-71, RSString.parse(""), 0, (short)59, var3.aString_289, var3.componentHash); + } + + if(var3.anInt318 == 5) { + pushRightClickMenuAction(-1, 0L, (byte)-92, RSString.parse(""), 0, (short)51, var3.aString_289, var3.componentHash); + } + + if(var3.anInt318 == 6 && TextureOperation27.aClass11_3087 == null) { + pushRightClickMenuAction(-1, 0L, (byte)-100, RSString.parse(""), -1, (short)41, var3.aString_289, var3.componentHash); + } + + int var5; + int var15; + if(var3.type == 2) { + var15 = 0; + + for(var5 = 0; var3.defHeight > var5; ++var5) { + for(int var6 = 0; var6 < var3.defWidth; ++var6) { + int var7 = (32 - -var3.anInt285) * var6; + int var8 = (32 + var3.anInt290) * var5; + if(var15 < 20) { + var8 += var3.anIntArray300[var15]; + var7 += var3.anIntArray272[var15]; + } + + if(var7 <= var2 && var0 >= var8 && 32 + var7 > var2 && var0 < var8 + 32) { + Class99.aClass11_1402 = var3; + TextureOperation20.anInt2701 = var15; + if(var3.itemAmounts[var15] > 0) { + Class3_Sub1 var9 = Client.method44(var3); + ItemDefinition var10 = ItemDefinition.getItemDefinition(var3.itemAmounts[var15] + -1); + if(1 == Class164_Sub1.anInt3012 && var9.method99()) { + if(var3.componentHash != Class3_Sub28_Sub18.anInt3764 || var15 != BufferedDataStream.anInt1473) { + pushRightClickMenuAction(-1, var10.itemId, (byte)-91, RSString.stringCombiner(new RSString[]{RenderAnimationDefinition.aString_378, ColorCore.BankItemColor, var10.name}), var15, (short)40, TextCore.HasUse, var3.componentHash); + } + } else if(GameObject.aBoolean1837 && var9.method99()) { + Class3_Sub28_Sub9 var18 = Unsorted.anInt1038 != -1 ? LinkedList.method1210(Unsorted.anInt1038):null; + if(0 != (16 & Class164.anInt2051) && (var18 == null || var18.anInt3614 != var10.method1115(var18.anInt3614, 103, Unsorted.anInt1038))) { + pushRightClickMenuAction(Unsorted.anInt1887, var10.itemId, (byte)-89, RSString.stringCombiner(new RSString[]{TextCore.aString_676, ColorCore.BankItemColor, var10.name}), var15, (short)3, Class3_Sub28_Sub9.aString_3621, var3.componentHash); + } + } else { + RSString[] inventoryOptions = var10.inventoryOptions; + if(Class123.aBoolean1656) { + inventoryOptions = Class3_Sub31.optionsArrayStringConstructor(inventoryOptions); + } + + int var12; + byte var13; + if(var9.method99()) { + for(var12 = 4; var12 >= 3; --var12) { + if(null != inventoryOptions && null != inventoryOptions[var12]) { + if(var12 == 3) { + var13 = 35; + } else { + var13 = 58; + } + pushRightClickMenuAction(-1, var10.itemId, (byte)-65, RSString.stringCombiner(new RSString[]{ColorCore.ItemBackpackColor, var10.name}), var15, var13, inventoryOptions[var12], var3.componentHash); + } + } + } + + if(var9.method96()) { + pushRightClickMenuAction(Class99.anInt1403, var10.itemId, (byte)-96, RSString.stringCombiner(new RSString[]{ColorCore.ItemBackpackColor, var10.name}), var15, (short)22, TextCore.HasUse, var3.componentHash); + } + + if(var9.method99()) { + for(var12 = 2; 0 <= var12; --var12) { + if(inventoryOptions[var12] != null) { + var13 = 0; + if(var12 == 0) { + var13 = 47; + } + + if(var12 == 1) { + var13 = 5; + } + + if(2 == var12) { + var13 = 43; + } + + pushRightClickMenuAction(-1, var10.itemId, (byte)-82, RSString.stringCombiner(new RSString[]{ColorCore.ItemBackpackColor, var10.name}), var15, var13, inventoryOptions[var12], var3.componentHash); + } + } + } + + inventoryOptions = var3.options; + if(Class123.aBoolean1656) { + inventoryOptions = Class3_Sub31.optionsArrayStringConstructor(inventoryOptions); + } + + if(inventoryOptions != null) { + for(var12 = 4; var12 >= 0; --var12) { + if(null != inventoryOptions[var12]) { + var13 = 0; + if(0 == var12) { + var13 = 25; + } + + if(var12 == 1) { + var13 = 23; + } + + if(var12 == 2) { + var13 = 48; + } + + if(3 == var12) { + var13 = 7; + } + + if(var12 == 4) { + var13 = 13; + } + + pushRightClickMenuAction(-1, var10.itemId, (byte)-51, RSString.stringCombiner(new RSString[]{ColorCore.ItemBackpackColor, var10.name}), var15, var13, inventoryOptions[var12], var3.componentHash); + } + } + } + if (GameConfig.ITEM_DEBUG_ENABLED) { + pushRightClickMenuAction(Class131.anInt1719, var10.itemId, (byte) -98, RSString.stringCombiner(new RSString[]{ColorCore.ItemBackpackColor, var10.name}), var15, (short) 1006, RSString.parse("Examine" + "
" + " ID: (X" + var10.itemId + "(Y"), var3.componentHash); + } else { + pushRightClickMenuAction(Class131.anInt1719, var10.itemId, (byte) -98, RSString.stringCombiner(new RSString[]{ColorCore.ItemBackpackColor, var10.name}), var15, (short) 1006, TextCore.HasExamine, var3.componentHash); + } + } + } + } + + ++var15; + } + } + } + + if(var3.usingScripts) { + if(GameObject.aBoolean1837) { + if(Client.method44(var3).method97() && (32 & Class164.anInt2051) != 0) { + pushRightClickMenuAction(Unsorted.anInt1887, 0L, (byte)-113, RSString.stringCombiner(new RSString[]{ + TextCore.aString_676, TextCore.aString_3703, var3.aString_277 + }), var3.anInt191, (short)12, Class3_Sub28_Sub9.aString_3621, var3.componentHash); + } + } else { + for(var15 = 9; var15 >= 5; --var15) { + RSString var16 = Class120.method1732(var3, (byte)-71, var15); + if(null != var16) { + pushRightClickMenuAction(TextureOperation6.method173((byte)126, var15, var3), var15 + 1, (byte)-85, var3.aString_277, var3.anInt191, (short)1003, var16, var3.componentHash); + } + } + + var4 = Class53.method1174(var3, (byte)-101); + if(var4 != null) { + pushRightClickMenuAction(-1, 0L, (byte)-116, var3.aString_277, var3.anInt191, (short)32, var4, var3.componentHash); + } + + for(var5 = 4; var5 >= 0; --var5) { + RSString var17 = Class120.method1732(var3, (byte)-65, var5); + if(var17 != null) { + pushRightClickMenuAction(TextureOperation6.method173((byte)53, var5, var3), var5 - -1, (byte)-48, var3.aString_277, var3.anInt191, (short)9, var17, var3.componentHash); + } + } + + if(Client.method44(var3).method95()) { + pushRightClickMenuAction(-1, 0L, (byte)-74, RSString.parse(""), var3.anInt191, (short)41, TextCore.HasContinue, var3.componentHash); + } + } + } + + } catch (RuntimeException var14) { + throw ClientErrorException.clientError(var14, "va.JA(" + var0 + ',' + true + ',' + var2 + ',' + (var3 != null?"{...}":"null") + ')'); + } + } + + final synchronized int method409() { + try { + return 0; + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "va.D()"); + } + } + + private void method478(int var1, int var3) { + try { + + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "va.QA(" + var1 + ',' + false + ',' + var3 + ')'); + } + } + + final synchronized void method479() { + try { + this.method472(); + + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "va.HA(" + (byte) 98 + ',' + 9 + ',' + 128 + ')'); + } + } + + private void method480(int var2) { + try { + if(0 <= var2) { + this.anIntArray3497[var2] = 12800; + this.anIntArray3498[var2] = 8192; + this.anIntArray3514[var2] = 16383; + this.anIntArray3499[var2] = 8192; + this.anIntArray3502[var2] = 0; + this.anIntArray3510[var2] = 8192; + this.method502(var2, 8388489 ^ -8388490); + this.method497(var2, -128); + this.anIntArray3518[var2] = 0; + this.anIntArray3500[var2] = 32767; + this.anIntArray3504[var2] = 256; + this.anIntArray3519[var2] = 0; + this.method482((byte)-125, var2, 8192); + } else { + for(var2 = 0; var2 < 16; ++var2) { + this.method480(var2); + } + + } + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "va.V(" + 8388489 + ',' + var2 + ')'); + } + } + + private void method481(byte var1, int var2) { + try { + + for(Class3_Sub22 var4 = (Class3_Sub22)this.aClass3_Sub24_Sub3_3527.aLinkedList_3489.startIteration(); null != var4; var4 = (Class3_Sub22)this.aClass3_Sub24_Sub3_3527.aLinkedList_3489.nextIteration()) { + if(var2 < 0 || var4.anInt2514 == var2) { + if(null != var4.aClass3_Sub24_Sub1_2507) { + var4.aClass3_Sub24_Sub1_2507.method417(Class21.sampleRate / 100); + if(var4.aClass3_Sub24_Sub1_2507.method445()) { + this.aClass3_Sub24_Sub3_3527.aClass3_Sub24_Sub2_3495.method457(var4.aClass3_Sub24_Sub1_2507); + } + + var4.method401(); + } + + if(0 > var4.anInt2506) { + this.aClass3_Sub22ArrayArray3512[var4.anInt2514][var4.anInt2520] = null; + } + + var4.unlink(); + } + } + + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "va.NA(" + var1 + ',' + var2 + ')'); + } + } + + private void method482(byte var1, int var2, int var3) { + try { + this.anIntArray3520[var2] = var3; + this.anIntArray3509[var2] = (int)(0.5D + 2097152.0D * Math.pow(2.0D, 5.4931640625E-4D * (double)var3)); + if(var1 > -53) { + this.method505((byte)114); + } + + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "va.EA(" + var1 + ',' + var2 + ',' + var3 + ')'); + } + } + + private synchronized void method483() { + try { + for(int var4 = 0; 16 > var4; ++var4) { + this.anIntArray3516[var4] = 256; + } + + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "va.O(" + -1 + ',' + -48 + ',' + 256 + ')'); + } + } + + private void method484(int var2, int var3) { + try { + if(this.anIntArray3515[var3] != var2) { + this.anIntArray3515[var3] = var2; + + for(int var4 = 0; var4 < 128; ++var4) { + this.aClass3_Sub22ArrayArray3513[var3][var4] = null; + } + } + + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "va.FB(" + 0 + ',' + var2 + ',' + var3 + ')'); + } + } + + final synchronized void method485() { + try { + for(Class3_Sub15 var2 = (Class3_Sub15)this.aHashTable_3508.first(); var2 != null; var2 = (Class3_Sub15)this.aHashTable_3508.next()) { + var2.unlink(); + } + + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "va.DA(" + -110 + ')'); + } + } + + private void method486(int var1, int var2, int var4) { + try { + this.method493((byte)-123, var4, 64, var2); + if((2 & this.anIntArray3518[var2]) != 0) { + for(Class3_Sub22 var5 = (Class3_Sub22)this.aClass3_Sub24_Sub3_3527.aLinkedList_3489.method1212(); var5 != null; var5 = (Class3_Sub22)this.aClass3_Sub24_Sub3_3527.aLinkedList_3489.method1219(98)) { + if(var5.anInt2514 == var2 && var5.anInt2506 < 0) { + this.aClass3_Sub22ArrayArray3512[var2][var5.anInt2520] = null; + this.aClass3_Sub22ArrayArray3512[var2][var4] = var5; + int var6 = var5.anInt2510 - -(var5.anInt2502 * var5.anInt2522 >> 12); + var5.anInt2502 = 4096; + var5.anInt2510 += -var5.anInt2520 + var4 << 8; + var5.anInt2522 = -var5.anInt2510 + var6; + var5.anInt2520 = var4; + return; + } + } + } + + Class3_Sub15 var11 = (Class3_Sub15)this.aHashTable_3508.get(this.anIntArray3515[var2]); + if(var11 != null) { + PcmSound var12 = var11.aPcmSoundArray2431[var4]; + if(var12 != null) { + Class3_Sub22 var7 = new Class3_Sub22(); + var7.aPcmSound_2509 = var12; + var7.aClass3_Sub15_2527 = var11; + var7.anInt2514 = var2; + var7.aClass166_2504 = var11.aClass166Array2435[var4]; + var7.anInt2517 = var11.aByteArray2425[var4]; + var7.anInt2520 = var4; + var7.anInt2513 = var11.aByteArray2430[var4] * var1 * var1 * var11.anInt2424 - -1024 >> 11; + var7.anInt2503 = var11.aByteArray2422[var4] & 0xFF; + var7.anInt2510 = -(32767 & var11.aShortArray2434[var4]) + (var4 << 8); + var7.anInt2506 = -1; + var7.anInt2511 = 0; + var7.anInt2519 = 0; + var7.anInt2523 = 0; + var7.anInt2501 = 0; + if(this.anIntArray3519[var2] == 0) { + var7.aClass3_Sub24_Sub1_2507 = Class3_Sub24_Sub1.method432(var12, this.method498(var7), this.method508(var7), this.method496(var7)); + } else { + var7.aClass3_Sub24_Sub1_2507 = Class3_Sub24_Sub1.method432(var12, this.method498(var7), 0, this.method496(var7)); + this.method501(var7, var11.aShortArray2434[var4] < 0, (byte)-114); + } + + if(0 > var11.aShortArray2434[var4]) { + Objects.requireNonNull(var7.aClass3_Sub24_Sub1_2507).method429(-1); + } + + if(var7.anInt2517 >= 0) { + Class3_Sub22 var9 = this.aClass3_Sub22ArrayArray3513[var2][var7.anInt2517]; + if(null != var9 && var9.anInt2506 < 0) { + this.aClass3_Sub22ArrayArray3512[var2][var9.anInt2520] = null; + var9.anInt2506 = 0; + } + + this.aClass3_Sub22ArrayArray3513[var2][var7.anInt2517] = var7; + } + + this.aClass3_Sub24_Sub3_3527.aLinkedList_3489.pushBack(var7); + this.aClass3_Sub22ArrayArray3512[var2][var4] = var7; + } + } + } catch (RuntimeException var10) { + throw ClientErrorException.clientError(var10, "va.U(" + var1 + ',' + var2 + ',' + 71 + ',' + var4 + ')'); + } + } + + static boolean method487(int var0, byte var1) { + try { + if(var1 != -85) { + AudioChannel.threadPriority = 56; + } + + return 97 <= var0 && var0 <= 122 || var0 >= 65 && var0 <= 90; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "va.EB(" + var0 + ',' + var1 + ')'); + } + } + + private void method488(int var2) { + try { + int var3 = 240 & var2; + int var4; + int var5; + int var6; + if(var3 == 128) { + var4 = 15 & var2; + var6 = (8353073 & var2) >> 16; + var5 = (32634 & var2) >> 8; + this.method493((byte)-95, var5, var6, var4); + } else if(144 == var3) { + var5 = 127 & var2 >> 8; + var4 = var2 & 15; + var6 = 127 & var2 >> 16; + if(var6 > 0) { + this.method486(var6, var4, var5); + } else { + this.method493((byte)-122, var5, 64, var4); + } + + } else if(160 == var3) { + var4 = var2 & 15; + var5 = 127 & var2 >> 8; + var6 = 127 & var2 >> 16; + this.method495(var6, var5, var4); + } else if(var3 == 176) { + var5 = (32630 & var2) >> 8; + var4 = var2 & 15; + var6 = (8388489 & var2) >> 16; + if(var5 == 0) { + this.anIntArray3506[var4] = (var6 << 14) + Unsorted.bitwiseAnd(-2080769, this.anIntArray3506[var4]); + } + + if(var5 == 32) { + this.anIntArray3506[var4] = Unsorted.bitwiseAnd(-16257, this.anIntArray3506[var4]) + (var6 << 7); + } + + if(var5 == 1) { + this.anIntArray3502[var4] = (var6 << 7) + Unsorted.bitwiseAnd(this.anIntArray3502[var4], -16257); + } + + if(33 == var5) { + this.anIntArray3502[var4] = Unsorted.bitwiseAnd(-128, this.anIntArray3502[var4]) - -var6; + } + + if(var5 == 5) { + this.anIntArray3510[var4] = Unsorted.bitwiseAnd(this.anIntArray3510[var4], -16257) + (var6 << 7); + } + + if(var5 == 37) { + this.anIntArray3510[var4] = var6 + Unsorted.bitwiseAnd(this.anIntArray3510[var4], -128); + } + + if(var5 == 7) { + this.anIntArray3497[var4] = (var6 << 7) + Unsorted.bitwiseAnd(this.anIntArray3497[var4], -16257); + } + + if(var5 == 39) { + this.anIntArray3497[var4] = Unsorted.bitwiseAnd(this.anIntArray3497[var4], -128) + var6; + } + + if(var5 == 10) { + this.anIntArray3498[var4] = Unsorted.bitwiseAnd(-16257, this.anIntArray3498[var4]) - -(var6 << 7); + } + + if(var5 == 42) { + this.anIntArray3498[var4] = var6 + Unsorted.bitwiseAnd(-128, this.anIntArray3498[var4]); + } + + if(var5 == 11) { + this.anIntArray3514[var4] = Unsorted.bitwiseAnd(this.anIntArray3514[var4], -16257) + (var6 << 7); + } + + if(var5 == 43) { + this.anIntArray3514[var4] = var6 + Unsorted.bitwiseAnd(-128, this.anIntArray3514[var4]); + } + + if(var5 == 64) { + if(64 <= var6) { + this.anIntArray3518[var4] = TextureOperation3.bitwiseOr(this.anIntArray3518[var4], 1); + } else { + this.anIntArray3518[var4] = Unsorted.bitwiseAnd(this.anIntArray3518[var4], -2); + } + } + + if(var5 == 65) { + if(var6 < 64) { + this.method502(var4, (byte) 56 ^ -57); + this.anIntArray3518[var4] = Unsorted.bitwiseAnd(this.anIntArray3518[var4], -3); + } else { + this.anIntArray3518[var4] = TextureOperation3.bitwiseOr(this.anIntArray3518[var4], 2); + } + } + + if(var5 == 99) { + this.anIntArray3500[var4] = (var6 << 7) + Unsorted.bitwiseAnd(this.anIntArray3500[var4], 127); + } + + if(var5 == 98) { + this.anIntArray3500[var4] = Unsorted.bitwiseAnd(this.anIntArray3500[var4], 16256) - -var6; + } + + if(var5 == 101) { + this.anIntArray3500[var4] = (var6 << 7) + Unsorted.bitwiseAnd(127, this.anIntArray3500[var4]) + 16384; + } + + if(var5 == 100) { + this.anIntArray3500[var4] = var6 + Unsorted.bitwiseAnd(16256, this.anIntArray3500[var4]) + 16384; + } + + if(var5 == 120) { + this.method481((byte)-50, var4); + } + + if(var5 == 121) { + this.method480(var4); + } + + if(123 == var5) { + this.method489(-32323, var4); + } + + int var7; + if(6 == var5) { + var7 = this.anIntArray3500[var4]; + if(var7 == 16384) { + this.anIntArray3504[var4] = Unsorted.bitwiseAnd(this.anIntArray3504[var4], -16257) + (var6 << 7); + } + } + + if(var5 == 38) { + var7 = this.anIntArray3500[var4]; + if(var7 == 16384) { + this.anIntArray3504[var4] = Unsorted.bitwiseAnd(this.anIntArray3504[var4], -128) + var6; + } + } + + if(var5 == 16) { + this.anIntArray3519[var4] = Unsorted.bitwiseAnd(this.anIntArray3519[var4], -16257) - -(var6 << 7); + } + + if(var5 == 48) { + this.anIntArray3519[var4] = Unsorted.bitwiseAnd(this.anIntArray3519[var4], -128) - -var6; + } + + if(var5 == 81) { + if(var6 >= 64) { + this.anIntArray3518[var4] = TextureOperation3.bitwiseOr(this.anIntArray3518[var4], 4); + } else { + this.method497(var4, -102); + this.anIntArray3518[var4] = Unsorted.bitwiseAnd(this.anIntArray3518[var4], -5); + } + } + + if(var5 == 17) { + this.method482((byte)-117, var4, (var6 << 7) + (this.anIntArray3520[var4] & -16257)); + } + + if(var5 == 49) { + this.method482((byte)-61, var4, (this.anIntArray3520[var4] & -128) + var6); + } + + } else if (var3 == 192) { + var5 = var2 >> 8 & 127; + var4 = 15 & var2; + this.method484(this.anIntArray3506[var4] - -var5, var4); + } else if (var3 == 208) { + var4 = 15 & var2; + var5 = (var2 & 32549) >> 8; + this.method478(var4, var5); + } else if (var3 == 224) { + var4 = 15 & var2; + var5 = (var2 >> 9 & 16256) + ((32702 & var2) >> 8); + this.method476(var4, var5); + } else { + var3 = var2 & 0xFF; + if (255 == var3) { + this.method500(true, (byte) -40); + } + } + } catch (RuntimeException var8) { + throw ClientErrorException.clientError(var8, "va.W(" + (byte) 56 + ',' + var2 + ')'); + } + } + + private void method489(int var1, int var2) { + try { + for(Class3_Sub22 var3 = (Class3_Sub22)this.aClass3_Sub24_Sub3_3527.aLinkedList_3489.startIteration(); var3 != null; var3 = (Class3_Sub22)this.aClass3_Sub24_Sub3_3527.aLinkedList_3489.nextIteration()) { + if((var2 < 0 || var3.anInt2514 == var2) && var3.anInt2506 < 0) { + this.aClass3_Sub22ArrayArray3512[var3.anInt2514][var3.anInt2520] = null; + var3.anInt2506 = 0; + } + } + + if(var1 != -32323) { + this.anInt3525 = -99; + } + + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "va.AA(" + var1 + ',' + var2 + ')'); + } + } + + final synchronized void method490(boolean var1, Class3_Sub27 var2) { + try { + this.method475(var1, var2, true); + + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "va.TA(" + var1 + ',' + (var2 != null?"{...}":"null") + ',' + 17774 + ')'); + } + } + + final synchronized void method413(int[] var1, int var2, int var3) { + try { + if(this.aClass78_3505.method1373()) { + int var4 = this.aClass78_3505.anInt1116 * this.anInt3511 / Class21.sampleRate; + + while(true) { + long var5 = this.aLong3526 - -((long)var3 * (long)var4); + if(this.aLong3523 + -var5 < 0) { + int var7 = (int)((-1L + this.aLong3523 - this.aLong3526 + (long)var4) / (long)var4); + this.aLong3526 += (long)var4 * (long)var7; + this.aClass3_Sub24_Sub3_3527.method413(var1, var2, var7); + var3 -= var7; + var2 += var7; + this.method494(100); + if(this.aClass78_3505.method1373()) { + continue; + } + break; + } + + this.aLong3526 = var5; + break; + } + } + + this.aClass3_Sub24_Sub3_3527.method413(var1, var2, var3); + } catch (RuntimeException var8) { + throw ClientErrorException.clientError(var8, "va.E(" + (var1 != null?"{...}":"null") + ',' + var2 + ',' + var3 + ')'); + } + } + + final boolean method492(int var1, int var2, Class3_Sub22 var3, int[] var5) { + try { + var3.anInt2512 = Class21.sampleRate / 100; + if(var3.anInt2506 >= 0 && (var3.aClass3_Sub24_Sub1_2507 == null || var3.aClass3_Sub24_Sub1_2507.method444())) { + var3.method401(); + var3.unlink(); + if(var3.anInt2517 > 0 && var3 == this.aClass3_Sub22ArrayArray3513[var3.anInt2514][var3.anInt2517]) { + this.aClass3_Sub22ArrayArray3513[var3.anInt2514][var3.anInt2517] = null; + } + + return false; + } else { + int var6 = var3.anInt2502; + + if(var6 > 0) { + var6 -= (int)(0.5D + Math.pow(2.0D, (double)this.anIntArray3510[var3.anInt2514] * 4.921259842519685E-4D) * 16.0D); + if(var6 < 0) { + var6 = 0; + } + + var3.anInt2502 = var6; + } + + var3.aClass3_Sub24_Sub1_2507.method443(this.method498(var3)); + Class166 var7 = var3.aClass166_2504; + var3.anInt2508 += var7.anInt2077; + ++var3.anInt2515; + double var9 = (double)((var3.anInt2520 - 60 << 8) + (var3.anInt2502 * var3.anInt2522 >> 12)) * 5.086263020833333E-6D; + boolean var8 = false; + if(var7.anInt2078 > 0) { + if(var7.anInt2063 > 0) { + var3.anInt2523 += (int)(Math.pow(2.0D, var9 * (double)var7.anInt2063) * 128.0D + 0.5D); + } else { + var3.anInt2523 += 128; + } + + if(var3.anInt2523 * var7.anInt2078 >= 819200) { + var8 = true; + } + } + + if(var7.aByteArray2064 != null) { + if(var7.anInt2067 <= 0) { + var3.anInt2511 += 128; + } else { + var3.anInt2511 += (int)(0.5D + Math.pow(2.0D, (double)var7.anInt2067 * var9) * 128.0D); + } + + while(var7.aByteArray2064.length - 2 > var3.anInt2501 && var3.anInt2511 > (65280 & var7.aByteArray2064[var3.anInt2501 - -2] << 8)) { + var3.anInt2501 += 2; + } + + if(var3.anInt2501 == -2 + var7.aByteArray2064.length && var7.aByteArray2064[1 + var3.anInt2501] == 0) { + var8 = true; + } + } + + if(var3.anInt2506 >= 0 && null != var7.aByteArray2076 && (1 & this.anIntArray3518[var3.anInt2514]) == 0 && (0 > var3.anInt2517 || this.aClass3_Sub22ArrayArray3513[var3.anInt2514][var3.anInt2517] != var3)) { + if(var7.anInt2071 > 0) { + var3.anInt2506 += (int)(Math.pow(2.0D, (double)var7.anInt2071 * var9) * 128.0D + 0.5D); + } else { + var3.anInt2506 += 128; + } + + while(var3.anInt2519 < -2 + var7.aByteArray2076.length && var3.anInt2506 > (255 & var7.aByteArray2076[2 + var3.anInt2519]) << 8) { + var3.anInt2519 += 2; + } + + if(-2 + var7.aByteArray2076.length == var3.anInt2519) { + var8 = true; + } + } + + if(var8) { + var3.aClass3_Sub24_Sub1_2507.method417(var3.anInt2512); + if(null == var5) { + var3.aClass3_Sub24_Sub1_2507.method415(var1); + } else { + var3.aClass3_Sub24_Sub1_2507.method413(var5, var2, var1); + } + + if(var3.aClass3_Sub24_Sub1_2507.method445()) { + this.aClass3_Sub24_Sub3_3527.aClass3_Sub24_Sub2_3495.method457(var3.aClass3_Sub24_Sub1_2507); + } + + var3.method401(); + if(var3.anInt2506 >= 0) { + var3.unlink(); + if(var3.anInt2517 > 0 && this.aClass3_Sub22ArrayArray3513[var3.anInt2514][var3.anInt2517] == var3) { + this.aClass3_Sub22ArrayArray3513[var3.anInt2514][var3.anInt2517] = null; + } + } + + return false; + } else { + var3.aClass3_Sub24_Sub1_2507.method450(var3.anInt2512, this.method508(var3), this.method496(var3)); + return true; + } + } + } catch (RuntimeException var11) { + throw ClientErrorException.clientError(var11, "va.BA(" + var1 + ',' + var2 + ',' + (var3 != null?"{...}":"null") + ',' + (byte) 14 + ',' + (var5 != null?"{...}":"null") + ')'); + } + } + + final synchronized Class3_Sub24 method411() { + try { + return this.aClass3_Sub24_Sub3_3527; + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "va.Q()"); + } + } + + private void method493(byte var1, int var2, int var3, int var4) { + try { + Class3_Sub22 var5 = this.aClass3_Sub22ArrayArray3512[var4][var2]; + if(null != var5) { + if(var1 > -92) { + this.aClass3_Sub24_Sub3_3527 = null; + } + + this.aClass3_Sub22ArrayArray3512[var4][var2] = null; + if((2 & this.anIntArray3518[var4]) == 0) { + var5.anInt2506 = 0; + } else { + for(Class3_Sub22 var6 = (Class3_Sub22) Objects.requireNonNull(this.aClass3_Sub24_Sub3_3527).aLinkedList_3489.startIteration(); null != var6; var6 = (Class3_Sub22)this.aClass3_Sub24_Sub3_3527.aLinkedList_3489.nextIteration()) { + if(var5.anInt2514 == var6.anInt2514 && var6.anInt2506 < 0 && var6 != var5) { + var5.anInt2506 = 0; + break; + } + } + } + + } + } catch (RuntimeException var7) { + throw ClientErrorException.clientError(var7, "va.CB(" + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ')'); + } + } + + private void method494(int var1) { + try { + int var2 = this.anInt3525; + int var3 = this.anInt3524; + if(var1 <= 54) { + this.method505((byte)124); + } + + long var4 = this.aLong3523; + if(this.aClass3_Sub27_3528 != null && 0 == var3) { + this.method475(this.aBoolean3522, this.aClass3_Sub27_3528, false); + this.method494(71); + } else { + while(this.anInt3524 == var3) { + while(var3 == this.aClass78_3505.anIntArray1114[var2]) { + this.aClass78_3505.method1376(var2); + int var6 = this.aClass78_3505.method1375(var2); + if(1 == var6) { + this.aClass78_3505.method1384(); + this.aClass78_3505.method1381(var2); + if(this.aClass78_3505.method1371()) { + if(this.aClass3_Sub27_3528 != null) { + this.method490(this.aBoolean3522, this.aClass3_Sub27_3528); + this.method494(126); + return; + } + + if(!this.aBoolean3522 || var3 == 0) { + this.method500(true, (byte)-40); + this.aClass78_3505.method1383(); + return; + } + + this.aClass78_3505.method1372(var4); + } + break; + } + + if((var6 & 128) != 0) { + this.method488(var6); + } + + this.aClass78_3505.method1377(var2); + this.aClass78_3505.method1381(var2); + } + + var2 = this.aClass78_3505.method1382(); + var3 = this.aClass78_3505.anIntArray1114[var2]; + var4 = this.aClass78_3505.method1370(var3); + } + + this.anInt3525 = var2; + this.aLong3523 = var4; + this.anInt3524 = var3; + if(this.aClass3_Sub27_3528 != null && var3 > 0) { + this.anInt3525 = -1; + this.anInt3524 = 0; + this.aLong3523 = this.aClass78_3505.method1370(this.anInt3524); + } + + } + } catch (RuntimeException var7) { + throw ClientErrorException.clientError(var7, "va.GB(" + var1 + ')'); + } + } + + private void method495(int var1, int var2, int var4) { + try { + + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "va.GA(" + var1 + ',' + var2 + ',' + 17387 + ',' + var4 + ')'); + } + } + + private int method496(Class3_Sub22 var2) { + try { + int var3 = this.anIntArray3498[var2.anInt2514]; + + return var3 < 8192 ?32 + var2.anInt2503 * var3 >> 6 :16384 - ((128 + -var2.anInt2503) * (16384 + -var3) + 32 >> 6); + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "va.BB(" + 0 + ',' + (var2 != null?"{...}":"null") + ')'); + } + } + + final synchronized void method415(int var1) { + try { + if(this.aClass78_3505.method1373()) { + int var2 = this.aClass78_3505.anInt1116 * this.anInt3511 / Class21.sampleRate; + + while(true) { + long var3 = this.aLong3526 - -((long)var1 * (long)var2); + if(this.aLong3523 + -var3 < 0) { + int var5 = (int)(((long)var2 + (-this.aLong3526 + this.aLong3523 - 1L)) / (long)var2); + var1 -= var5; + this.aLong3526 += (long)var5 * (long)var2; + this.aClass3_Sub24_Sub3_3527.method415(var5); + this.method494(64); + if(this.aClass78_3505.method1373()) { + continue; + } + break; + } + + this.aLong3526 = var3; + break; + } + } + + this.aClass3_Sub24_Sub3_3527.method415(var1); + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "va.R(" + var1 + ')'); + } + } + + private void method497(int var1, int var2) { + try { + if(0 != (4 & this.anIntArray3518[var1])) { + for(Class3_Sub22 var4 = (Class3_Sub22)this.aClass3_Sub24_Sub3_3527.aLinkedList_3489.startIteration(); null != var4; var4 = (Class3_Sub22)this.aClass3_Sub24_Sub3_3527.aLinkedList_3489.nextIteration()) { + if(var1 == var4.anInt2514) { + var4.anInt2516 = 0; + } + } + } + + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "va.A(" + var1 + ',' + var2 + ')'); + } + } + + private int method498(Class3_Sub22 var2) { + try { + Class166 var4 = var2.aClass166_2504; + int var3 = (var2.anInt2522 * var2.anInt2502 >> 12) + var2.anInt2510; + var3 += this.anIntArray3504[var2.anInt2514] * (-8192 + this.anIntArray3499[var2.anInt2514]) >> 12; + int var5; + if(var4.anInt2077 > 0 && (var4.anInt2066 > 0 || this.anIntArray3502[var2.anInt2514] > 0)) { + var5 = var4.anInt2066 << 2; + int var6 = var4.anInt2069 << 1; + if(var2.anInt2515 < var6) { + var5 = var2.anInt2515 * var5 / var6; + } + + var5 += this.anIntArray3502[var2.anInt2514] >> 7; + double var7 = Math.sin(0.01227184630308513D * (double)(511 & var2.anInt2508)); + var3 += (int)((double)var5 * var7); + } + + var5 = (int)(0.5D + (double)(256 * var2.aPcmSound_2509.frequency) * Math.pow(2.0D, (double)var3 * 3.255208333333333E-4D) / (double)Class21.sampleRate); + + return var5 >= 1?var5:1; + } catch (RuntimeException var9) { + throw ClientErrorException.clientError(var9, "va.OA(" + (byte) 85 + ',' + (var2 != null?"{...}":"null") + ')'); + } + } + + final int method499() { + try { + + return this.anInt3521; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "va.IA(" + false + ')'); + } + } + + private void method500(boolean var1, byte var2) { + try { + if(var1) { + this.method481((byte)91, -1); + } else { + this.method489(var2 + -32283, -1); + } + + this.method480(-1); + if(var2 == -40) { + int var3; + for(var3 = 0; 16 > var3; ++var3) { + this.anIntArray3515[var3] = this.anIntArray3501[var3]; + } + + for(var3 = 0; var3 < 16; ++var3) { + this.anIntArray3506[var3] = Unsorted.bitwiseAnd(-128, this.anIntArray3501[var3]); + } + + } + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "va.F(" + var1 + ',' + var2 + ')'); + } + } + + final void method501(Class3_Sub22 var1, boolean var2, byte var3) { + try { + int var4 = var1.aPcmSound_2509.samples.length; + int var5; + if(var2 && var1.aPcmSound_2509.aBoolean3031) { + int var6 = var4 + (var4 - var1.aPcmSound_2509.anInt3033); + var4 <<= 8; + var5 = (int)((long)var6 * (long)this.anIntArray3519[var1.anInt2514] >> 6); + if(var4 <= var5) { + var1.aClass3_Sub24_Sub1_2507.method442(); + var5 = -1 + (var4 - -var4) + -var5; + } + } else { + var5 = (int)((long)var4 * (long)this.anIntArray3519[var1.anInt2514] >> 6); + } + + var1.aClass3_Sub24_Sub1_2507.method434(var5); + if(var3 >= -70) { + this.aLong3523 = 47L; + } + + } catch (RuntimeException var7) { + throw ClientErrorException.clientError(var7, "va.CA(" + (var1 != null?"{...}":"null") + ',' + var2 + ',' + var3 + ')'); + } + } + + private void method502(int var1, int var2) { + try { + if(var2 != ~(this.anIntArray3518[var1] & 2)) { + for(Class3_Sub22 var3 = (Class3_Sub22)this.aClass3_Sub24_Sub3_3527.aLinkedList_3489.startIteration(); var3 != null; var3 = (Class3_Sub22)this.aClass3_Sub24_Sub3_3527.aLinkedList_3489.nextIteration()) { + if(var3.anInt2514 == var1 && this.aClass3_Sub22ArrayArray3512[var1][var3.anInt2520] == null && var3.anInt2506 < 0) { + var3.anInt2506 = 0; + } + } + } + + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "va.T(" + var1 + ',' + var2 + ')'); + } + } + + static void method503(int var1) { + try { + Class8.anInt101 = var1; + Class3_Sub28_Sub8.anInt3611 = 20; + AbstractSprite.anInt3704 = 3; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "va.FA(" + (byte) -53 + ',' + var1 + ')'); + } + } + + final boolean method504(Class3_Sub22 var1, int var2) { + try { + if(var1.aClass3_Sub24_Sub1_2507 == null) { + if(var1.anInt2506 >= 0) { + var1.unlink(); + if(var1.anInt2517 > 0 && this.aClass3_Sub22ArrayArray3513[var1.anInt2514][var1.anInt2517] == var1) { + this.aClass3_Sub22ArrayArray3513[var1.anInt2514][var1.anInt2517] = null; + } + } + + return false; + } else { + return true; + } + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "va.WA(" + (var1 != null?"{...}":"null") + ',' + var2 + ')'); + } + } + + final synchronized void method505(byte var1) { + try { + this.method507(true); + if(var1 > -125) { + this.anIntArray3520 = null; + } + + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "va.RA(" + var1 + ')'); + } + } + + final synchronized void method506(int var2) { + try { + this.anInt3521 = var2; + + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "va.LA(" + 128 + ',' + var2 + ')'); + } + } + + private synchronized void method507(boolean var1) { + try { + this.aClass78_3505.method1383(); + this.aClass3_Sub27_3528 = null; + this.method500(var1, (byte)-40); + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "va.MA(" + var1 + ',' + (byte) -68 + ')'); + } + } + + private int method508(Class3_Sub22 var2) { + try { + + if(this.anIntArray3516[var2.anInt2514] == 0) { + return 0; + } else { + Class166 var3 = var2.aClass166_2504; + int var4 = 4096 + this.anIntArray3497[var2.anInt2514] * this.anIntArray3514[var2.anInt2514] >> 13; + var4 = 16384 + var4 * var4 >> 15; + var4 = 16384 + var2.anInt2513 * var4 >> 15; + var4 = 128 + var4 * this.anInt3521 >> 8; + var4 = this.anIntArray3516[var2.anInt2514] * var4 + 128 >> 8; + if(0 < var3.anInt2078) { + var4 = (int)(0.5D + Math.pow(0.5D, (double)var2.anInt2523 * 1.953125E-5D * (double)var3.anInt2078) * (double)var4); + } + + int var5; + int var6; + int var7; + int var8; + if(null != var3.aByteArray2064) { + var5 = var2.anInt2511; + var6 = var3.aByteArray2064[1 + var2.anInt2501]; + if(var3.aByteArray2064.length - 2 > var2.anInt2501) { + var8 = (var3.aByteArray2064[2 + var2.anInt2501] & 0xFF) << 8; + var7 = 65280 & var3.aByteArray2064[var2.anInt2501] << 8; + var6 += (var3.aByteArray2064[3 + var2.anInt2501] + -var6) * (var5 - var7) / (var8 + -var7); + } + + var4 = 32 + var6 * var4 >> 6; + } + + if(var2.anInt2506 > 0 && null != var3.aByteArray2076) { + var5 = var2.anInt2506; + var6 = var3.aByteArray2076[1 + var2.anInt2519]; + if(-2 + var3.aByteArray2076.length > var2.anInt2519) { + var7 = 65280 & var3.aByteArray2076[var2.anInt2519] << 8; + var8 = (var3.aByteArray2076[var2.anInt2519 + 2] & 0xFF) << 8; + var6 += (var5 - var7) * (-var6 + var3.aByteArray2076[3 + var2.anInt2519]) / (-var7 + var8); + } + + var4 = 32 + var4 * var6 >> 6; + } + + return var4; + } + } catch (RuntimeException var9) { + throw ClientErrorException.clientError(var9, "va.UA(" + (byte) 36 + ',' + (var2 != null?"{...}":"null") + ')'); + } + } + + final synchronized Class3_Sub24 method414() { + try { + return null; + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "va.B()"); + } + } + + public Class3_Sub24_Sub4() { + try { + this.aHashTable_3508 = new HashTable(128); + this.method483(); + this.method500(true, (byte)-40); + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "va.()"); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class3_Sub25.java b/Client/src/main/java/org/runite/client/Class3_Sub25.java new file mode 100644 index 000000000..3ee3f5309 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class3_Sub25.java @@ -0,0 +1,31 @@ +package org.runite.client; + +import org.rs09.client.Linkable; +import org.rs09.client.util.ArrayUtils; + +final class Class3_Sub25 extends Linkable { + + int[] anIntArray2547 = new int[]{-1}; + static short[] aShortArray2548; + int[] anIntArray2551 = new int[]{0}; + static Class129 aClass129_2552; + + + static void method509(int var1) { + try { + --Unsorted.menuOptionCount; + if(Unsorted.menuOptionCount != var1) { + ArrayUtils.arraycopy(GroundItem.aStringArray2935, var1 + 1, GroundItem.aStringArray2935, var1, -var1 + Unsorted.menuOptionCount); + ArrayUtils.arraycopy(Class163_Sub2_Sub1.aStringArray4016, 1 + var1, Class163_Sub2_Sub1.aStringArray4016, var1, Unsorted.menuOptionCount - var1); + ArrayUtils.arraycopy(Class114.anIntArray1578, 1 + var1, Class114.anIntArray1578, var1, -var1 + Unsorted.menuOptionCount); + ArrayUtils.arraycopy(TextureOperation27.aShortArray3095, 1 + var1, TextureOperation27.aShortArray3095, var1, Unsorted.menuOptionCount + -var1); + ArrayUtils.arraycopy(Unsorted.aLongArray3271, 1 + var1, Unsorted.aLongArray3271, var1, -var1 + Unsorted.menuOptionCount); + ArrayUtils.arraycopy(Class117.anIntArray1613, var1 + 1, Class117.anIntArray1613, var1, -var1 + Unsorted.menuOptionCount); + ArrayUtils.arraycopy(Class27.anIntArray512, 1 + var1, Class27.anIntArray512, var1, Unsorted.menuOptionCount + -var1); + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "qe.A(" + 1 + ',' + var1 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class3_Sub26.java b/Client/src/main/java/org/runite/client/Class3_Sub26.java new file mode 100644 index 000000000..2c7e2c76e --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class3_Sub26.java @@ -0,0 +1,82 @@ +package org.runite.client; + +import org.rs09.client.Linkable; + +final class Class3_Sub26 extends Linkable { + + int anInt2553; + static int paramAffid = 0; + int anInt2555; + static int anInt2556 = 0; + static LinkedList aLinkedList_2557 = new LinkedList(); + static int[] anIntArray2559 = new int[]{0, 1, 2, 3, 4, 5, 6, 14}; + static AbstractSprite aAbstractSprite_2560; + static int anInt2561 = -1; + static Class3_Sub24_Sub2 aClass3_Sub24_Sub2_2563; + + + static void method512() { + try { + Unsorted.aReferenceCache_4043.clear(); + CS2Script.aReferenceCache_2442.clear(); + Class154.aReferenceCache_1964.clear(); + + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "qi.D(" + (byte) -108 + ')'); + } + } + + static int method513(int var0) { + try { + int var2 = 0; + if(var0 < 0 || var0 >= 65536) { + var2 += 16; + var0 >>>= 16; + } + + if(var0 >= 256) { + var2 += 8; + var0 >>>= 8; + } + + if(var0 >= 16) { + var2 += 4; + var0 >>>= 4; + } + + if(4 <= var0) { + var0 >>>= 2; + var2 += 2; + } + + if(var0 >= 1) { + var0 >>>= 1; + ++var2; + } + + return var0 + var2; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "qi.B(" + var0 + ',' + 4 + ')'); + } + } + + Class3_Sub26(int var1, int var2) { + try { + this.anInt2555 = var2; + this.anInt2553 = var1; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "qi.(" + var1 + ',' + var2 + ')'); + } + } + + static int method514(int var0, int var1, int var3) { + try { + var0 &= 3; + + return var0 == 0 ?var1:(1 == var0?var3:(2 != var0?-var3 + 1023:1023 + -var1)); + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "qi.C(" + var0 + ',' + var1 + ',' + (byte) -83 + ',' + var3 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class3_Sub27.java b/Client/src/main/java/org/runite/client/Class3_Sub27.java new file mode 100644 index 000000000..bdf1f6098 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class3_Sub27.java @@ -0,0 +1,410 @@ +package org.runite.client; + +import org.rs09.client.Linkable; +import org.rs09.client.data.HashTable; + +final class Class3_Sub27 extends Linkable { + + HashTable aHashTable_2564; + byte[] aByteArray2565; + + + final void method515() { + this.aHashTable_2564 = null; + } + + final void method516() { + if (this.aHashTable_2564 == null) { + this.aHashTable_2564 = new HashTable(16); + int[] var1 = new int[16]; + int[] var2 = new int[16]; + var1[9] = var2[9] = 128; + Class78 var3 = new Class78(this.aByteArray2565); + int var4 = var3.method1374(); + + int var5; + for (var5 = 0; var5 < var4; ++var5) { + var3.method1376(var5); + var3.method1377(var5); + var3.method1381(var5); + } + + while (true) { + var5 = var3.method1382(); + int var6 = var3.anIntArray1114[var5]; + + while (var3.anIntArray1114[var5] == var6) { + var3.method1376(var5); + int var7 = var3.method1375(var5); + if (var7 == 1) { + var3.method1384(); + var3.method1381(var5); + if (var3.method1371()) { + return; + } + break; + } + + int var8 = var7 & 240; + int var9; + int var10; + int var11; + if (var8 == 176) { + var9 = var7 & 15; + var10 = var7 >> 8 & 127; + var11 = var7 >> 16 & 127; + if (var10 == 0) { + var1[var9] = (var1[var9] & -2080769) + (var11 << 14); + } + + if (var10 == 32) { + var1[var9] = (var1[var9] & -16257) + (var11 << 7); + } + } + + if (var8 == 192) { + var9 = var7 & 15; + var10 = var7 >> 8 & 127; + var2[var9] = var1[var9] + var10; + } + + if (var8 == 144) { + var9 = var7 & 15; + var10 = var7 >> 8 & 127; + var11 = var7 >> 16 & 127; + if (var11 > 0) { + int var12 = var2[var9]; + Class3_Sub6 var13 = (Class3_Sub6) this.aHashTable_2564.get(var12); + if (var13 == null) { + var13 = new Class3_Sub6(new byte[128]); + this.aHashTable_2564.put(var12, var13); + } + + var13.aByteArray2289[var10] = 1; + } + } + + var3.method1377(var5); + var3.method1381(var5); + } + } + } + } + + static Class3_Sub27 method517(CacheIndex var0, int var1, int var2) { + byte[] var3 = var0.getFile(var1, var2); + return var3 == null ? null : new Class3_Sub27(new DataBuffer(var3)); + } + + private Class3_Sub27(DataBuffer buffer) { + buffer.index = buffer.buffer.length - 3; + int var2 = buffer.readUnsignedByte(); + int var3 = buffer.readUnsignedShort(); + int var4 = 14 + var2 * 10; + buffer.index = 0; + int var5 = 0; + int var6 = 0; + int var7 = 0; + int var8 = 0; + int var9 = 0; + int var10 = 0; + int var11 = 0; + int var12 = 0; + int var13 = 0; + + int var14; + int var15; + while (var13 < var2) { + var14 = -1; + + while (true) { + var15 = buffer.readUnsignedByte(); + if (var15 != var14) { + ++var4; + } + + var14 = var15 & 15; + if (var15 == 7) { + ++var13; + break; + } + + if (var15 == 23) { + ++var5; + } else if (var14 == 0) { + ++var7; + } else if (var14 == 1) { + ++var8; + } else if (var14 == 2) { + ++var6; + } else if (var14 == 3) { + ++var9; + } else if (var14 == 4) { + ++var10; + } else if (var14 == 5) { + ++var11; + } else { + if (var14 != 6) { + throw new RuntimeException(); + } + + ++var12; + } + } + } + + var4 += 5 * var5; + var4 += 2 * (var7 + var8 + var6 + var9 + var11); + var4 += var10 + var12; + var13 = buffer.index; + var14 = var2 + var5 + var6 + var7 + var8 + var9 + var10 + var11 + var12; + + for (var15 = 0; var15 < var14; ++var15) { + buffer.method741(); + } + + var4 += buffer.index - var13; + var15 = buffer.index; + int var16 = 0; + int var17 = 0; + int var18 = 0; + int var19 = 0; + int var20 = 0; + int var21 = 0; + int var22 = 0; + int var23 = 0; + int var24 = 0; + int var25 = 0; + int var26 = 0; + int var27 = 0; + int var28 = 0; + + int var29; + for (var29 = 0; var29 < var6; ++var29) { + var28 = var28 + buffer.readUnsignedByte() & 127; + if (var28 == 0 || var28 == 32) { + ++var12; + } else if (var28 == 1) { + ++var16; + } else if (var28 == 33) { + ++var17; + } else if (var28 == 7) { + ++var18; + } else if (var28 == 39) { + ++var19; + } else if (var28 == 10) { + ++var20; + } else if (var28 == 42) { + ++var21; + } else if (var28 == 99) { + ++var22; + } else if (var28 == 98) { + ++var23; + } else if (var28 == 101) { + ++var24; + } else if (var28 == 100) { + ++var25; + } else if (var28 != 64 && var28 != 65 && var28 != 120 && var28 != 121 && var28 != 123) { + ++var27; + } else { + ++var26; + } + } + + var29 = 0; + int var30 = buffer.index; + buffer.index += var26; + int var31 = buffer.index; + buffer.index += var11; + int var32 = buffer.index; + buffer.index += var10; + int var33 = buffer.index; + buffer.index += var9; + int var34 = buffer.index; + buffer.index += var16; + int var35 = buffer.index; + buffer.index += var18; + int var36 = buffer.index; + buffer.index += var20; + int var37 = buffer.index; + buffer.index += var7 + var8 + var11; + int var38 = buffer.index; + buffer.index += var7; + int var39 = buffer.index; + buffer.index += var27; + int var40 = buffer.index; + buffer.index += var8; + int var41 = buffer.index; + buffer.index += var17; + int var42 = buffer.index; + buffer.index += var19; + int var43 = buffer.index; + buffer.index += var21; + int var44 = buffer.index; + buffer.index += var12; + int var45 = buffer.index; + buffer.index += var9; + int var46 = buffer.index; + buffer.index += var22; + int var47 = buffer.index; + buffer.index += var23; + int var48 = buffer.index; + buffer.index += var24; + int var49 = buffer.index; + buffer.index += var25; + int var50 = buffer.index; + buffer.index += var5 * 3; + this.aByteArray2565 = new byte[var4]; + DataBuffer var51 = new DataBuffer(this.aByteArray2565); + var51.writeInt(1297377380); + var51.writeInt(6); + var51.writeShort(var2 > 1 ? 1 : 0); + var51.writeShort(var2); + var51.writeShort(var3); + buffer.index = var13; + int var52 = 0; + int var53 = 0; + int var54 = 0; + int var55 = 0; + int var56 = 0; + int var57 = 0; + int var58 = 0; + int[] var59 = new int[128]; + var28 = 0; + int var60 = 0; + + while (var60 < var2) { + var51.writeInt(1297379947); + var51.index += 4; + int var61 = var51.index; + int var62 = -1; + + while (true) { + int var63 = buffer.method741(); + var51.method771(var63); + int var64 = buffer.buffer[var29++] & 0xFF; + boolean var65 = var64 != var62; + var62 = var64 & 15; + if (var64 == 7) { + if (var65) { + var51.writeByte(255); + } + + var51.writeByte(47); + var51.writeByte(0); + var51.method742(var51.index - var61); + ++var60; + break; + } + + if (var64 == 23) { + if (var65) { + var51.writeByte(255); + } + + var51.writeByte(81); + var51.writeByte(3); + var51.writeByte(buffer.buffer[var50++]); + var51.writeByte(buffer.buffer[var50++]); + var51.writeByte(buffer.buffer[var50++]); + } else { + var52 ^= var64 >> 4; + if (var62 == 0) { + if (var65) { + var51.writeByte(144 + var52); + } + + var53 += buffer.buffer[var37++]; + var54 += buffer.buffer[var38++]; + var51.writeByte(var53 & 127); + var51.writeByte(var54 & 127); + } else if (var62 == 1) { + if (var65) { + var51.writeByte(128 + var52); + } + + var53 += buffer.buffer[var37++]; + var55 += buffer.buffer[var40++]; + var51.writeByte(var53 & 127); + var51.writeByte(var55 & 127); + } else if (var62 == 2) { + if (var65) { + var51.writeByte(176 + var52); + } + + var28 = var28 + buffer.buffer[var15++] & 127; + var51.writeByte(var28); + byte var66; + if (var28 == 0 || var28 == 32) { + var66 = buffer.buffer[var44++]; + } else if (var28 == 1) { + var66 = buffer.buffer[var34++]; + } else if (var28 == 33) { + var66 = buffer.buffer[var41++]; + } else if (var28 == 7) { + var66 = buffer.buffer[var35++]; + } else if (var28 == 39) { + var66 = buffer.buffer[var42++]; + } else if (var28 == 10) { + var66 = buffer.buffer[var36++]; + } else if (var28 == 42) { + var66 = buffer.buffer[var43++]; + } else if (var28 == 99) { + var66 = buffer.buffer[var46++]; + } else if (var28 == 98) { + var66 = buffer.buffer[var47++]; + } else if (var28 == 101) { + var66 = buffer.buffer[var48++]; + } else if (var28 == 100) { + var66 = buffer.buffer[var49++]; + } else if (var28 != 64 && var28 != 65 && var28 != 120 && var28 != 121 && var28 != 123) { + var66 = buffer.buffer[var39++]; + } else { + var66 = buffer.buffer[var30++]; + } + + int var67 = var66 + var59[var28]; + var59[var28] = var67; + var51.writeByte(var67 & 127); + } else if (var62 == 3) { + if (var65) { + var51.writeByte(224 + var52); + } + + var56 += buffer.buffer[var45++]; + var56 += buffer.buffer[var33++] << 7; + var51.writeByte(var56 & 127); + var51.writeByte(var56 >> 7 & 127); + } else if (var62 == 4) { + if (var65) { + var51.writeByte(208 + var52); + } + + var57 += buffer.buffer[var32++]; + var51.writeByte(var57 & 127); + } else if (var62 == 5) { + if (var65) { + var51.writeByte(160 + var52); + } + + var53 += buffer.buffer[var37++]; + var58 += buffer.buffer[var31++]; + var51.writeByte(var53 & 127); + var51.writeByte(var58 & 127); + } else { + if (var62 != 6) { + throw new RuntimeException(); + } + + if (var65) { + var51.writeByte(192 + var52); + } + + var51.writeByte(buffer.buffer[var44++]); + } + } + } + } + + } +} diff --git a/Client/src/main/java/org/runite/client/Class3_Sub28_Sub1.java b/Client/src/main/java/org/runite/client/Class3_Sub28_Sub1.java new file mode 100644 index 000000000..8fe67446d --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class3_Sub28_Sub1.java @@ -0,0 +1,124 @@ +package org.runite.client; + +import org.rs09.client.Node; + +import java.awt.*; + +public final class Class3_Sub28_Sub1 extends Node { + + static boolean aBoolean3531 = false; + static Class3_Sub20 aClass3_Sub20_3532 = new Class3_Sub20(0, 0); + int[] anIntArray3533; + int[] anIntArray3534; + int[] anIntArray3535; + static int anInt3536; + RSString quickChatMenu; + static int anInt3539; + static int dropAction; + static int counter; + int[] anIntArray3540; + + + final void method525() { + try { + int var2; + if (null != this.anIntArray3540) { + for (var2 = 0; var2 < this.anIntArray3540.length; ++var2) { + this.anIntArray3540[var2] = TextureOperation3.bitwiseOr(this.anIntArray3540[var2], 32768); + } + } + + if (null != this.anIntArray3534) { + for (var2 = 0; this.anIntArray3534.length > var2; ++var2) { + this.anIntArray3534[var2] = TextureOperation3.bitwiseOr(this.anIntArray3534[var2], 32768); + } + } + + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "bc.O(" + -85 + ')'); + } + } + + final int method526(int var1) { + try { + if (this.anIntArray3540 != null) { + for (int var3 = 0; this.anIntArray3540.length > var3; ++var3) { + if (var1 == this.anIntArray3533[var3]) { + return this.anIntArray3540[var3]; + } + } + + } + return -1; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "bc.Q(" + var1 + ',' + 0 + ')'); + } + } + + private void method527(DataBuffer buffer, int var3) { + try { + + if (var3 == 1) { + this.quickChatMenu = buffer.readString(); + } else { + int var4; + int var5; + if (var3 == 2) { + var4 = buffer.readUnsignedByte(); + this.anIntArray3534 = new int[var4]; + this.anIntArray3535 = new int[var4]; + + for (var5 = 0; var5 < var4; ++var5) { + this.anIntArray3534[var5] = buffer.readUnsignedShort(); + this.anIntArray3535[var5] = TextureOperation29.method322(buffer.readSignedByte()); + } + } else if (var3 == 3) { + var4 = buffer.readUnsignedByte(); + this.anIntArray3540 = new int[var4]; + this.anIntArray3533 = new int[var4]; + + for (var5 = 0; var5 < var4; ++var5) { + this.anIntArray3540[var5] = buffer.readUnsignedShort(); + this.anIntArray3533[var5] = TextureOperation29.method322(buffer.readSignedByte()); + } + } + } + + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "bc.E(" + (buffer != null ? "{...}" : "null") + ',' + 0 + ',' + var3 + ')'); + } + } + + final int method529(int var2) { + try { + if (null != this.anIntArray3534) { + for (int var4 = 0; this.anIntArray3534.length > var4; ++var4) { + if (var2 == this.anIntArray3535[var4]) { + return this.anIntArray3534[var4]; + } + } + + } + return -1; + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "bc.P(" + (byte) 50 + ',' + var2 + ')'); + } + } + + final void method530(DataBuffer buffer) { + try { + + while (true) { + int opcode = buffer.readUnsignedByte(); + if (opcode == 0) { + return; + } + + this.method527(buffer, opcode); + } + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "bc.D(" + (buffer != null ? "{...}" : "null") + ',' + (byte) 116 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class3_Sub28_Sub16_Sub1_Sub1.java b/Client/src/main/java/org/runite/client/Class3_Sub28_Sub16_Sub1_Sub1.java new file mode 100644 index 000000000..0463f204a --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class3_Sub28_Sub16_Sub1_Sub1.java @@ -0,0 +1,57 @@ +package org.runite.client; + + + + +import javax.media.opengl.GL; +import java.nio.ByteBuffer; + + +public final class Class3_Sub28_Sub16_Sub1_Sub1 extends HDSprite { + + final void method650(int[] var1) { + this.anInt4075 = Class95.method1585((byte)111, this.width); + this.anInt4079 = Class95.method1585((byte)76, this.height); + byte[] var2 = new byte[this.anInt4075 * this.anInt4079 * 4]; + int var3 = 0; + int var4 = 0; + int var5 = (this.anInt4075 - this.width) * 4; + + for(int var6 = 0; var6 < this.height; ++var6) { + for(int var7 = 0; var7 < this.width; ++var7) { + int var8 = var1[var4++]; + if(var8 == 0) { + var3 += 4; + } else { + var2[var3++] = (byte)(var8 >> 16); + var2[var3++] = (byte)(var8 >> 8); + var2[var3++] = (byte)var8; + var2[var3++] = (byte)(var8 >> 24); + } + } + + var3 += var5; + } + + ByteBuffer var9 = ByteBuffer.wrap(var2); + GL var10 = HDToolKit.gl; + if(this.anInt4077 == -1) { + int[] var11 = new int[1]; + var10.glGenTextures(1, var11, 0); + this.anInt4077 = var11[0]; + } + + HDToolKit.bindTexture2D(this.anInt4077); + var10.glTexImage2D(3553, 0, 6408, this.anInt4075, this.anInt4079, 0, 6408, 5121, var9); + Class31.memory2D += var9.limit() - this.anInt4074; + this.anInt4074 = var9.limit(); + } + + Class3_Sub28_Sub16_Sub1_Sub1(int var1, int var2, int var3, int var4, int var5, int var6, int[] var7) { + super(var1, var2, var3, var4, var5, var6, var7); + } + + public Class3_Sub28_Sub16_Sub1_Sub1(SoftwareSprite var1) { + super(var1); + } +} diff --git a/Client/src/main/java/org/runite/client/Class3_Sub28_Sub16_Sub2_Sub1.java b/Client/src/main/java/org/runite/client/Class3_Sub28_Sub16_Sub2_Sub1.java new file mode 100644 index 000000000..886a2141a --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class3_Sub28_Sub16_Sub2_Sub1.java @@ -0,0 +1,986 @@ +package org.runite.client; + +import org.rs09.client.rendering.Toolkit; + +public final class Class3_Sub28_Sub16_Sub2_Sub1 extends SoftwareSprite { + + final void method660(int var1, int var2, double var7) { + try { + int var10 = -20 / 2; + int var11 = -20 / 2; + int var12 = (int)(Math.sin(var7) * 65536.0D); + int var13 = (int)(Math.cos(var7) * 65536.0D); + var12 = var12 * 256 >> 8; + var13 = var13 * 256 >> 8; + int var14 = (15 << 16) + var11 * var12 + var10 * var13; + int var15 = (15 << 16) + (var11 * var13 - var10 * var12); + int var16 = var1 + var2 * Toolkit.JAVA_TOOLKIT.width; + + for(var2 = 0; var2 < 20; ++var2) { + int var17 = var16; + int var18 = var14; + int var19 = var15; + + for(var1 = -20; var1 < 0; ++var1) { + int var20 = this.anIntArray4081[(var18 >> 16) + (var19 >> 16) * this.width]; + int var21 = Toolkit.JAVA_TOOLKIT.getBuffer()[var17]; + int var22 = var20 >>> 24; + int var23 = 256 - var22; + Toolkit.JAVA_TOOLKIT.getBuffer()[var17++] = ((var20 & 16711935) * var22 + (var21 & 16711935) * var23 & -16711936) + ((var20 & 65280) * var22 + (var21 & 65280) * var23 & 16711680) >>> 8; + var18 += var13; + var19 -= var12; + } + + var14 += var12; + var15 += var13; + var16 += Toolkit.JAVA_TOOLKIT.width; + } + } catch (Exception var24) { + } + + } + + public final void drawAt(int var1, int var2) { + var1 += this.anInt3701; + var2 += this.anInt3698; + int var3 = var1 + var2 * Toolkit.JAVA_TOOLKIT.width; + int var4 = 0; + int var5 = this.height; + int var6 = this.width; + int var7 = Toolkit.JAVA_TOOLKIT.width - var6; + int var8 = 0; + int var9; + if(var2 < Toolkit.JAVA_TOOLKIT.clipTop) { + var9 = Toolkit.JAVA_TOOLKIT.clipTop - var2; + var5 -= var9; + var2 = Toolkit.JAVA_TOOLKIT.clipTop; + var4 += var9 * var6; + var3 += var9 * Toolkit.JAVA_TOOLKIT.width; + } + + if(var2 + var5 > Toolkit.JAVA_TOOLKIT.clipBottom) { + var5 -= var2 + var5 - Toolkit.JAVA_TOOLKIT.clipBottom; + } + + if(var1 < Toolkit.JAVA_TOOLKIT.clipLeft) { + var9 = Toolkit.JAVA_TOOLKIT.clipLeft - var1; + var6 -= var9; + var1 = Toolkit.JAVA_TOOLKIT.clipLeft; + var4 += var9; + var3 += var9; + var8 += var9; + var7 += var9; + } + + if(var1 + var6 > Toolkit.JAVA_TOOLKIT.clipRight) { + var9 = var1 + var6 - Toolkit.JAVA_TOOLKIT.clipRight; + var6 -= var9; + var8 += var9; + var7 += var9; + } + + if(var6 > 0 && var5 > 0) { + method673(Toolkit.JAVA_TOOLKIT.getBuffer(), this.anIntArray4081, var4, var3, var6, var5, var7, var8); + } + } + + final void method635(int var1, int var2) { + var1 += this.anInt3701; + var2 += this.anInt3698; + int var3 = var1 + var2 * Toolkit.JAVA_TOOLKIT.width; + int var4 = 0; + int var5 = this.height; + int var6 = this.width; + int var7 = Toolkit.JAVA_TOOLKIT.width - var6; + int var8 = 0; + int var9; + if(var2 < Toolkit.JAVA_TOOLKIT.clipTop) { + var9 = Toolkit.JAVA_TOOLKIT.clipTop - var2; + var5 -= var9; + var2 = Toolkit.JAVA_TOOLKIT.clipTop; + var4 += var9 * var6; + var3 += var9 * Toolkit.JAVA_TOOLKIT.width; + } + + if(var2 + var5 > Toolkit.JAVA_TOOLKIT.clipBottom) { + var5 -= var2 + var5 - Toolkit.JAVA_TOOLKIT.clipBottom; + } + + if(var1 < Toolkit.JAVA_TOOLKIT.clipLeft) { + var9 = Toolkit.JAVA_TOOLKIT.clipLeft - var1; + var6 -= var9; + var1 = Toolkit.JAVA_TOOLKIT.clipLeft; + var4 += var9; + var3 += var9; + var8 += var9; + var7 += var9; + } + + if(var1 + var6 > Toolkit.JAVA_TOOLKIT.clipRight) { + var9 = var1 + var6 - Toolkit.JAVA_TOOLKIT.clipRight; + var6 -= var9; + var8 += var9; + var7 += var9; + } + + if(var6 > 0 && var5 > 0) { + method673(Toolkit.JAVA_TOOLKIT.getBuffer(), this.anIntArray4081, var4, var3, var6, var5, var7, var8); + } + } + + private static void method671(int[] var0, int[] var1, int var3, int var4, int var5, int var6, int var7, int var8, int var9, int var10, int var11, int var12) { + int var13 = var3; + + for(int var14 = -var8; var14 < 0; ++var14) { + int var15 = (var4 >> 16) * var11; + + for(int var16 = -var7; var16 < 0; ++var16) { + int var17 = var1[(var3 >> 16) + var15]; + int var18 = var0[var5]; + int var19 = (var17 >>> 24) * var12 >> 8; + int var20 = 256 - var19; + var0[var5++] = ((var17 & 16711935) * var19 + (var18 & 16711935) * var20 & -16711936) + ((var17 & 65280) * var19 + (var18 & 65280) * var20 & 16711680) >>> 8; + var3 += var9; + } + + var4 += var10; + var3 = var13; + var5 += var6; + } + + } + + final void method636(int var1, int var2, int var3, int var4, int var5, int var6) { + if(var6 != 0) { + var1 -= this.anInt3701 << 4; + var2 -= this.anInt3698 << 4; + double var7 = (double)(var5 & 65535) * 9.587379924285257E-5D; + int var9 = (int)Math.floor(Math.sin(var7) * (double)var6 + 0.5D); + int var10 = (int)Math.floor(Math.cos(var7) * (double)var6 + 0.5D); + int var11 = -var1 * var10 + -var2 * var9; + int var12 = -(-var1) * var9 + -var2 * var10; + int var13 = ((this.width << 4) - var1) * var10 + -var2 * var9; + int var14 = -((this.width << 4) - var1) * var9 + -var2 * var10; + int var15 = -var1 * var10 + ((this.height << 4) - var2) * var9; + int var16 = -(-var1) * var9 + ((this.height << 4) - var2) * var10; + int var17 = ((this.width << 4) - var1) * var10 + ((this.height << 4) - var2) * var9; + int var18 = -((this.width << 4) - var1) * var9 + ((this.height << 4) - var2) * var10; + int var19; + int var20; + if(var11 < var13) { + var19 = var11; + var20 = var13; + } else { + var19 = var13; + var20 = var11; + } + + if(var15 < var19) { + var19 = var15; + } + + if(var17 < var19) { + var19 = var17; + } + + if(var15 > var20) { + var20 = var15; + } + + if(var17 > var20) { + var20 = var17; + } + + int var21; + int var22; + if(var12 < var14) { + var21 = var12; + var22 = var14; + } else { + var21 = var14; + var22 = var12; + } + + if(var16 < var21) { + var21 = var16; + } + + if(var18 < var21) { + var21 = var18; + } + + if(var16 > var22) { + var22 = var16; + } + + if(var18 > var22) { + var22 = var18; + } + + var19 >>= 12; + var20 = var20 + 4095 >> 12; + var21 >>= 12; + var22 = var22 + 4095 >> 12; + var19 += var3; + var20 += var3; + var21 += var4; + var22 += var4; + var19 >>= 4; + var20 = var20 + 15 >> 4; + var21 >>= 4; + var22 = var22 + 15 >> 4; + if(var19 < Toolkit.JAVA_TOOLKIT.clipLeft) { + var19 = Toolkit.JAVA_TOOLKIT.clipLeft; + } + + if(var20 > Toolkit.JAVA_TOOLKIT.clipRight) { + var20 = Toolkit.JAVA_TOOLKIT.clipRight; + } + + if(var21 < Toolkit.JAVA_TOOLKIT.clipTop) { + var21 = Toolkit.JAVA_TOOLKIT.clipTop; + } + + if(var22 > Toolkit.JAVA_TOOLKIT.clipBottom) { + var22 = Toolkit.JAVA_TOOLKIT.clipBottom; + } + + var20 = var19 - var20; + if(var20 < 0) { + var22 = var21 - var22; + if(var22 < 0) { + int var23 = var21 * Toolkit.JAVA_TOOLKIT.width + var19; + double var24 = 1.6777216E7D / (double)var6; + int var26 = (int)Math.floor(Math.sin(var7) * var24 + 0.5D); + int var27 = (int)Math.floor(Math.cos(var7) * var24 + 0.5D); + int var28 = (var19 << 4) + 8 - var3; + int var29 = (var21 << 4) + 8 - var4; + int var30 = (var1 << 8) - (var29 * var26 >> 4); + int var31 = (var2 << 8) + (var29 * var27 >> 4); + int var34; + int var35; + int var32; + int var33; + int var38; + int var39; + int var36; + int var37; + int var40; + int var41; + if(var27 == 0) { + if(var26 == 0) { + for(var33 = var22; var33 < 0; var23 += Toolkit.JAVA_TOOLKIT.width) { + var34 = var23; + var35 = var30; + var36 = var31; + var37 = var20; + if(var30 >= 0 && var31 >= 0 && var30 - (this.width << 12) < 0 && var31 - (this.height << 12) < 0) { + while(var37 < 0) { + var38 = this.anIntArray4081[(var36 >> 12) * this.width + (var35 >> 12)]; + var39 = Toolkit.JAVA_TOOLKIT.getBuffer()[var34]; + var40 = var38 >>> 24; + var41 = 256 - var40; + Toolkit.JAVA_TOOLKIT.getBuffer()[var34++] = ((var38 & 16711935) * var40 + (var39 & 16711935) * var41 & -16711936) + ((var38 & 65280) * var40 + (var39 & 65280) * var41 & 16711680) >>> 8; + ++var37; + } + } + + ++var33; + } + } else if(var26 < 0) { + for(var33 = var22; var33 < 0; var23 += Toolkit.JAVA_TOOLKIT.width) { + var34 = var23; + var35 = var30; + var36 = var31 + (var28 * var26 >> 4); + var37 = var20; + if(var30 >= 0 && var30 - (this.width << 12) < 0) { + if((var32 = var36 - (this.height << 12)) >= 0) { + var32 = (var26 - var32) / var26; + var37 = var20 + var32; + var36 += var26 * var32; + var34 = var23 + var32; + } + + if((var32 = (var36 - var26) / var26) > var37) { + var37 = var32; + } + + while(var37 < 0) { + var38 = this.anIntArray4081[(var36 >> 12) * this.width + (var35 >> 12)]; + var39 = Toolkit.JAVA_TOOLKIT.getBuffer()[var34]; + var40 = var38 >>> 24; + var41 = 256 - var40; + Toolkit.JAVA_TOOLKIT.getBuffer()[var34++] = ((var38 & 16711935) * var40 + (var39 & 16711935) * var41 & -16711936) + ((var38 & 65280) * var40 + (var39 & 65280) * var41 & 16711680) >>> 8; + var36 += var26; + ++var37; + } + } + + ++var33; + var30 -= var26; + } + } else { + for(var33 = var22; var33 < 0; var23 += Toolkit.JAVA_TOOLKIT.width) { + var34 = var23; + var35 = var30; + var36 = var31 + (var28 * var26 >> 4); + var37 = var20; + if(var30 >= 0 && var30 - (this.width << 12) < 0) { + if(var36 < 0) { + var32 = (var26 - 1 - var36) / var26; + var37 = var20 + var32; + var36 += var26 * var32; + var34 = var23 + var32; + } + + if((var32 = (1 + var36 - (this.height << 12) - var26) / var26) > var37) { + var37 = var32; + } + + while(var37 < 0) { + var38 = this.anIntArray4081[(var36 >> 12) * this.width + (var35 >> 12)]; + var39 = Toolkit.JAVA_TOOLKIT.getBuffer()[var34]; + var40 = var38 >>> 24; + var41 = 256 - var40; + Toolkit.JAVA_TOOLKIT.getBuffer()[var34++] = ((var38 & 16711935) * var40 + (var39 & 16711935) * var41 & -16711936) + ((var38 & 65280) * var40 + (var39 & 65280) * var41 & 16711680) >>> 8; + var36 += var26; + ++var37; + } + } + + ++var33; + var30 -= var26; + } + } + } else if(var27 < 0) { + if(var26 == 0) { + for(var33 = var22; var33 < 0; var23 += Toolkit.JAVA_TOOLKIT.width) { + var34 = var23; + var35 = var30 + (var28 * var27 >> 4); + var36 = var31; + var37 = var20; + if(var31 >= 0 && var31 - (this.height << 12) < 0) { + if((var32 = var35 - (this.width << 12)) >= 0) { + var32 = (var27 - var32) / var27; + var37 = var20 + var32; + var35 += var27 * var32; + var34 = var23 + var32; + } + + if((var32 = (var35 - var27) / var27) > var37) { + var37 = var32; + } + + while(var37 < 0) { + var38 = this.anIntArray4081[(var36 >> 12) * this.width + (var35 >> 12)]; + var39 = Toolkit.JAVA_TOOLKIT.getBuffer()[var34]; + var40 = var38 >>> 24; + var41 = 256 - var40; + Toolkit.JAVA_TOOLKIT.getBuffer()[var34++] = ((var38 & 16711935) * var40 + (var39 & 16711935) * var41 & -16711936) + ((var38 & 65280) * var40 + (var39 & 65280) * var41 & 16711680) >>> 8; + var35 += var27; + ++var37; + } + } + + ++var33; + var31 += var27; + } + } else if(var26 < 0) { + for(var33 = var22; var33 < 0; var23 += Toolkit.JAVA_TOOLKIT.width) { + var34 = var23; + var35 = var30 + (var28 * var27 >> 4); + var36 = var31 + (var28 * var26 >> 4); + var37 = var20; + if((var32 = var35 - (this.width << 12)) >= 0) { + var32 = (var27 - var32) / var27; + var37 = var20 + var32; + var35 += var27 * var32; + var36 += var26 * var32; + var34 = var23 + var32; + } + + if((var32 = (var35 - var27) / var27) > var37) { + var37 = var32; + } + + if((var32 = var36 - (this.height << 12)) >= 0) { + var32 = (var26 - var32) / var26; + var37 += var32; + var35 += var27 * var32; + var36 += var26 * var32; + var34 += var32; + } + + if((var32 = (var36 - var26) / var26) > var37) { + var37 = var32; + } + + while(var37 < 0) { + var38 = this.anIntArray4081[(var36 >> 12) * this.width + (var35 >> 12)]; + var39 = Toolkit.JAVA_TOOLKIT.getBuffer()[var34]; + var40 = var38 >>> 24; + var41 = 256 - var40; + Toolkit.JAVA_TOOLKIT.getBuffer()[var34++] = ((var38 & 16711935) * var40 + (var39 & 16711935) * var41 & -16711936) + ((var38 & 65280) * var40 + (var39 & 65280) * var41 & 16711680) >>> 8; + var35 += var27; + var36 += var26; + ++var37; + } + + ++var33; + var30 -= var26; + var31 += var27; + } + } else { + for(var33 = var22; var33 < 0; var23 += Toolkit.JAVA_TOOLKIT.width) { + var34 = var23; + var35 = var30 + (var28 * var27 >> 4); + var36 = var31 + (var28 * var26 >> 4); + var37 = var20; + if((var32 = var35 - (this.width << 12)) >= 0) { + var32 = (var27 - var32) / var27; + var37 = var20 + var32; + var35 += var27 * var32; + var36 += var26 * var32; + var34 = var23 + var32; + } + + if((var32 = (var35 - var27) / var27) > var37) { + var37 = var32; + } + + if(var36 < 0) { + var32 = (var26 - 1 - var36) / var26; + var37 += var32; + var35 += var27 * var32; + var36 += var26 * var32; + var34 += var32; + } + + if((var32 = (1 + var36 - (this.height << 12) - var26) / var26) > var37) { + var37 = var32; + } + + while(var37 < 0) { + var38 = this.anIntArray4081[(var36 >> 12) * this.width + (var35 >> 12)]; + var39 = Toolkit.JAVA_TOOLKIT.getBuffer()[var34]; + var40 = var38 >>> 24; + var41 = 256 - var40; + Toolkit.JAVA_TOOLKIT.getBuffer()[var34++] = ((var38 & 16711935) * var40 + (var39 & 16711935) * var41 & -16711936) + ((var38 & 65280) * var40 + (var39 & 65280) * var41 & 16711680) >>> 8; + var35 += var27; + var36 += var26; + ++var37; + } + + ++var33; + var30 -= var26; + var31 += var27; + } + } + } else if(var26 == 0) { + for(var33 = var22; var33 < 0; var23 += Toolkit.JAVA_TOOLKIT.width) { + var34 = var23; + var35 = var30 + (var28 * var27 >> 4); + var36 = var31; + var37 = var20; + if(var31 >= 0 && var31 - (this.height << 12) < 0) { + if(var35 < 0) { + var32 = (var27 - 1 - var35) / var27; + var37 = var20 + var32; + var35 += var27 * var32; + var34 = var23 + var32; + } + + if((var32 = (1 + var35 - (this.width << 12) - var27) / var27) > var37) { + var37 = var32; + } + + while(var37 < 0) { + var38 = this.anIntArray4081[(var36 >> 12) * this.width + (var35 >> 12)]; + var39 = Toolkit.JAVA_TOOLKIT.getBuffer()[var34]; + var40 = var38 >>> 24; + var41 = 256 - var40; + Toolkit.JAVA_TOOLKIT.getBuffer()[var34++] = ((var38 & 16711935) * var40 + (var39 & 16711935) * var41 & -16711936) + ((var38 & 65280) * var40 + (var39 & 65280) * var41 & 16711680) >>> 8; + var35 += var27; + ++var37; + } + } + + ++var33; + var31 += var27; + } + } else if(var26 < 0) { + for(var33 = var22; var33 < 0; var23 += Toolkit.JAVA_TOOLKIT.width) { + var34 = var23; + var35 = var30 + (var28 * var27 >> 4); + var36 = var31 + (var28 * var26 >> 4); + var37 = var20; + if(var35 < 0) { + var32 = (var27 - 1 - var35) / var27; + var37 = var20 + var32; + var35 += var27 * var32; + var36 += var26 * var32; + var34 = var23 + var32; + } + + if((var32 = (1 + var35 - (this.width << 12) - var27) / var27) > var37) { + var37 = var32; + } + + if((var32 = var36 - (this.height << 12)) >= 0) { + var32 = (var26 - var32) / var26; + var37 += var32; + var35 += var27 * var32; + var36 += var26 * var32; + var34 += var32; + } + + if((var32 = (var36 - var26) / var26) > var37) { + var37 = var32; + } + + while(var37 < 0) { + var38 = this.anIntArray4081[(var36 >> 12) * this.width + (var35 >> 12)]; + var39 = Toolkit.JAVA_TOOLKIT.getBuffer()[var34]; + var40 = var38 >>> 24; + var41 = 256 - var40; + Toolkit.JAVA_TOOLKIT.getBuffer()[var34++] = ((var38 & 16711935) * var40 + (var39 & 16711935) * var41 & -16711936) + ((var38 & 65280) * var40 + (var39 & 65280) * var41 & 16711680) >>> 8; + var35 += var27; + var36 += var26; + ++var37; + } + + ++var33; + var30 -= var26; + var31 += var27; + } + } else { + for(var33 = var22; var33 < 0; var23 += Toolkit.JAVA_TOOLKIT.width) { + var34 = var23; + var35 = var30 + (var28 * var27 >> 4); + var36 = var31 + (var28 * var26 >> 4); + var37 = var20; + if(var35 < 0) { + var32 = (var27 - 1 - var35) / var27; + var37 = var20 + var32; + var35 += var27 * var32; + var36 += var26 * var32; + var34 = var23 + var32; + } + + if((var32 = (1 + var35 - (this.width << 12) - var27) / var27) > var37) { + var37 = var32; + } + + if(var36 < 0) { + var32 = (var26 - 1 - var36) / var26; + var37 += var32; + var35 += var27 * var32; + var36 += var26 * var32; + var34 += var32; + } + + if((var32 = (1 + var36 - (this.height << 12) - var26) / var26) > var37) { + var37 = var32; + } + + while(var37 < 0) { + var38 = this.anIntArray4081[(var36 >> 12) * this.width + (var35 >> 12)]; + var39 = Toolkit.JAVA_TOOLKIT.getBuffer()[var34]; + var40 = var38 >>> 24; + var41 = 256 - var40; + Toolkit.JAVA_TOOLKIT.getBuffer()[var34++] = ((var38 & 16711935) * var40 + (var39 & 16711935) * var41 & -16711936) + ((var38 & 65280) * var40 + (var39 & 65280) * var41 & 16711680) >>> 8; + var35 += var27; + var36 += var26; + ++var37; + } + + ++var33; + var30 -= var26; + var31 += var27; + } + } + + } + } + } + } + + public final void drawMinimapRegion(int var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, int[] var9, int[] var10) { + try { + int var11 = -var3 / 2; + int var12 = -var4 / 2; + int var13 = (int)(Math.sin((double)var7 / 326.11D) * 65536.0D); + int var14 = (int)(Math.cos((double)var7 / 326.11D) * 65536.0D); + var13 = var13 * var8 >> 8; + var14 = var14 * var8 >> 8; + int var15 = (var5 << 16) + var12 * var13 + var11 * var14; + int var16 = (var6 << 16) + (var12 * var14 - var11 * var13); + int var17 = var1 + var2 * Toolkit.JAVA_TOOLKIT.width; + + for(var2 = 0; var2 < var4; ++var2) { + int var18 = var9[var2]; + int var19 = var17 + var18; + int var20 = var15 + var14 * var18; + int var21 = var16 - var13 * var18; + + for(var1 = -var10[var2]; var1 < 0; ++var1) { + int var22 = this.anIntArray4081[(var20 >> 16) + (var21 >> 16) * this.width]; + int var23 = Toolkit.JAVA_TOOLKIT.getBuffer()[var19]; + int var24 = var22 >>> 24; + int var25 = 256 - var24; + Toolkit.JAVA_TOOLKIT.getBuffer()[var19++] = ((var22 & 16711935) * var24 + (var23 & 16711935) * var25 & -16711936) + ((var22 & 65280) * var24 + (var23 & 65280) * var25 & 16711680) >>> 8; + var20 += var14; + var21 -= var13; + } + + var15 += var13; + var16 += var14; + var17 += Toolkit.JAVA_TOOLKIT.width; + } + } catch (Exception var26) { + } + + } + + public final void method667(int var1, int var2, int var3, int var4, int var5, int var6, int var7, int[] var9, int[] var10) { + try { + int var11 = -var3 / 2; + int var12 = -var4 / 2; + int var13 = (int)(Math.sin((double)var7 / 326.11D) * 65536.0D); + int var14 = (int)(Math.cos((double)var7 / 326.11D) * 65536.0D); + var13 = var13 * 256 >> 8; + var14 = var14 * 256 >> 8; + int var15 = (var5 << 16) + var12 * var13 + var11 * var14; + int var16 = (var6 << 16) + (var12 * var14 - var11 * var13); + int var17 = var1 + var2 * Toolkit.JAVA_TOOLKIT.width; + + for(var2 = 0; var2 < var4; ++var2) { + int var18 = var9[var2]; + int var19 = var17 + var18; + int var20 = var15 + var14 * var18; + int var21 = var16 - var13 * var18; + + for(var1 = -var10[var2]; var1 < 0; ++var1) { + int var22 = this.anIntArray4081[(var20 >> 16) + (var21 >> 16) * this.width]; + int var23 = Toolkit.JAVA_TOOLKIT.getBuffer()[var19]; + int var24 = var22 >>> 24; + int var25 = 256 - var24; + Toolkit.JAVA_TOOLKIT.getBuffer()[var19++] = ((var22 & 16711935) * var24 + (var23 & 16711935) * var25 & -16711936) + ((var22 & 65280) * var24 + (var23 & 65280) * var25 & 16711680) >>> 8; + var20 += var14; + var21 -= var13; + } + + var15 += var13; + var16 += var14; + var17 += Toolkit.JAVA_TOOLKIT.width; + } + } catch (Exception var26) { + } + + } + + final void method642(int var1, int var2, int var3, int var4, int var5) { + if(var3 > 0 && var4 > 0) { + int var6 = this.width; + int var7 = this.height; + int var8 = 0; + int var9 = 0; + int var10 = this.anInt3697; + int var11 = this.anInt3706; + int var12 = (var10 << 16) / var3; + int var13 = (var11 << 16) / var4; + int var14; + if(this.anInt3701 > 0) { + var14 = ((this.anInt3701 << 16) + var12 - 1) / var12; + var1 += var14; + var8 += var14 * var12 - (this.anInt3701 << 16); + } + + if(this.anInt3698 > 0) { + var14 = ((this.anInt3698 << 16) + var13 - 1) / var13; + var2 += var14; + var9 += var14 * var13 - (this.anInt3698 << 16); + } + + if(var6 < var10) { + var3 = ((var6 << 16) - var8 + var12 - 1) / var12; + } + + if(var7 < var11) { + var4 = ((var7 << 16) - var9 + var13 - 1) / var13; + } + + var14 = var1 + var2 * Toolkit.JAVA_TOOLKIT.width; + int var15 = Toolkit.JAVA_TOOLKIT.width - var3; + if(var2 + var4 > Toolkit.JAVA_TOOLKIT.clipBottom) { + var4 -= var2 + var4 - Toolkit.JAVA_TOOLKIT.clipBottom; + } + + int var16; + if(var2 < Toolkit.JAVA_TOOLKIT.clipTop) { + var16 = Toolkit.JAVA_TOOLKIT.clipTop - var2; + var4 -= var16; + var14 += var16 * Toolkit.JAVA_TOOLKIT.width; + var9 += var13 * var16; + } + + if(var1 + var3 > Toolkit.JAVA_TOOLKIT.clipRight) { + var16 = var1 + var3 - Toolkit.JAVA_TOOLKIT.clipRight; + var3 -= var16; + var15 += var16; + } + + if(var1 < Toolkit.JAVA_TOOLKIT.clipLeft) { + var16 = Toolkit.JAVA_TOOLKIT.clipLeft - var1; + var3 -= var16; + var14 += var16; + var8 += var12 * var16; + var15 += var16; + } + + method671(Toolkit.JAVA_TOOLKIT.getBuffer(), this.anIntArray4081, var8, var9, var14, var15, var3, var4, var12, var13, var6, var5); + } + } + + Class3_Sub28_Sub16_Sub2_Sub1(int var1, int var2, int var3, int var4, int var5, int var6, int[] var7) { + super(var1, var2, var3, var4, var5, var6, var7); + } + + private static void method672(int[] var0, int[] var1, int var3, int var4, int var5, int var6, int var7, int var8) { + int var9 = -var5; + + for(int var10 = -var6; var10 < 0; ++var10) { + for(int var11 = var9; var11 < 0; ++var11) { + int var2 = var1[var3--]; + int var12 = var2 >>> 24; + if(var12 == 0) { + ++var4; + } else { + int var13 = 256 - var12; + int var14 = var0[var4]; + var0[var4++] = ((var2 & 16711935) * var12 + (var14 & 16711935) * var13 & -16711936) + ((var2 & 65280) * var12 + (var14 & 65280) * var13 & 16711680) >>> 8; + } + } + + var4 += var7; + var3 += var8; + } + + } + + public final void method639(int var1, int var2, int var3, int var4) { + if(var3 > 0 && var4 > 0) { + int var5 = this.width; + int var6 = this.height; + int var7 = 0; + int var8 = 0; + int var9 = this.anInt3697; + int var10 = this.anInt3706; + int var11 = (var9 << 16) / var3; + int var12 = (var10 << 16) / var4; + int var13; + if(this.anInt3701 > 0) { + var13 = ((this.anInt3701 << 16) + var11 - 1) / var11; + var1 += var13; + var7 += var13 * var11 - (this.anInt3701 << 16); + } + + if(this.anInt3698 > 0) { + var13 = ((this.anInt3698 << 16) + var12 - 1) / var12; + var2 += var13; + var8 += var13 * var12 - (this.anInt3698 << 16); + } + + if(var5 < var9) { + var3 = ((var5 << 16) - var7 + var11 - 1) / var11; + } + + if(var6 < var10) { + var4 = ((var6 << 16) - var8 + var12 - 1) / var12; + } + + var13 = var1 + var2 * Toolkit.JAVA_TOOLKIT.width; + int var14 = Toolkit.JAVA_TOOLKIT.width - var3; + if(var2 + var4 > Toolkit.JAVA_TOOLKIT.clipBottom) { + var4 -= var2 + var4 - Toolkit.JAVA_TOOLKIT.clipBottom; + } + + int var15; + if(var2 < Toolkit.JAVA_TOOLKIT.clipTop) { + var15 = Toolkit.JAVA_TOOLKIT.clipTop - var2; + var4 -= var15; + var13 += var15 * Toolkit.JAVA_TOOLKIT.width; + var8 += var12 * var15; + } + + if(var1 + var3 > Toolkit.JAVA_TOOLKIT.clipRight) { + var15 = var1 + var3 - Toolkit.JAVA_TOOLKIT.clipRight; + var3 -= var15; + var14 += var15; + } + + if(var1 < Toolkit.JAVA_TOOLKIT.clipLeft) { + var15 = Toolkit.JAVA_TOOLKIT.clipLeft - var1; + var3 -= var15; + var13 += var15; + var7 += var11 * var15; + var14 += var15; + } + + method675(Toolkit.JAVA_TOOLKIT.getBuffer(), this.anIntArray4081, var7, var8, var13, var14, var3, var4, var11, var12, var5); + } + } + + final void method641(int var1, int var2) { + var1 += this.anInt3697 - this.width - this.anInt3701; + var2 += this.anInt3698; + int var3 = var1 + var2 * Toolkit.JAVA_TOOLKIT.width; + int var4 = this.width - 1; + int var5 = this.height; + int var6 = this.width; + int var7 = Toolkit.JAVA_TOOLKIT.width - var6; + int var8 = var6 + var6; + int var9; + if(var2 < Toolkit.JAVA_TOOLKIT.clipTop) { + var9 = Toolkit.JAVA_TOOLKIT.clipTop - var2; + var5 -= var9; + var2 = Toolkit.JAVA_TOOLKIT.clipTop; + var4 += var9 * var6; + var3 += var9 * Toolkit.JAVA_TOOLKIT.width; + } + + if(var2 + var5 > Toolkit.JAVA_TOOLKIT.clipBottom) { + var5 -= var2 + var5 - Toolkit.JAVA_TOOLKIT.clipBottom; + } + + if(var1 < Toolkit.JAVA_TOOLKIT.clipLeft) { + var9 = Toolkit.JAVA_TOOLKIT.clipLeft - var1; + var6 -= var9; + var1 = Toolkit.JAVA_TOOLKIT.clipLeft; + var4 -= var9; + var3 += var9; + var8 -= var9; + var7 += var9; + } + + if(var1 + var6 > Toolkit.JAVA_TOOLKIT.clipRight) { + var9 = var1 + var6 - Toolkit.JAVA_TOOLKIT.clipRight; + var6 -= var9; + var8 -= var9; + var7 += var9; + } + + if(var6 > 0 && var5 > 0) { + method672(Toolkit.JAVA_TOOLKIT.getBuffer(), this.anIntArray4081, var4, var3, var6, var5, var7, var8); + } + } + + final void method637(int var1, int var2, int var3) { + var1 += this.anInt3701; + var2 += this.anInt3698; + int var4 = var1 + var2 * Toolkit.JAVA_TOOLKIT.width; + int var5 = 0; + int var6 = this.height; + int var7 = this.width; + int var8 = Toolkit.JAVA_TOOLKIT.width - var7; + int var9 = 0; + int var10; + if(var2 < Toolkit.JAVA_TOOLKIT.clipTop) { + var10 = Toolkit.JAVA_TOOLKIT.clipTop - var2; + var6 -= var10; + var2 = Toolkit.JAVA_TOOLKIT.clipTop; + var5 += var10 * var7; + var4 += var10 * Toolkit.JAVA_TOOLKIT.width; + } + + if(var2 + var6 > Toolkit.JAVA_TOOLKIT.clipBottom) { + var6 -= var2 + var6 - Toolkit.JAVA_TOOLKIT.clipBottom; + } + + if(var1 < Toolkit.JAVA_TOOLKIT.clipLeft) { + var10 = Toolkit.JAVA_TOOLKIT.clipLeft - var1; + var7 -= var10; + var1 = Toolkit.JAVA_TOOLKIT.clipLeft; + var5 += var10; + var4 += var10; + var9 += var10; + var8 += var10; + } + + if(var1 + var7 > Toolkit.JAVA_TOOLKIT.clipRight) { + var10 = var1 + var7 - Toolkit.JAVA_TOOLKIT.clipRight; + var7 -= var10; + var9 += var10; + var8 += var10; + } + + if(var7 > 0 && var6 > 0) { + method674(Toolkit.JAVA_TOOLKIT.getBuffer(), this.anIntArray4081, var5, var4, var7, var6, var8, var9, var3); + } + } + + private static void method673(int[] var0, int[] var1, int var3, int var4, int var5, int var6, int var7, int var8) { + int var9 = -var5; + + for(int var10 = -var6; var10 < 0; ++var10) { + for(int var11 = var9; var11 < 0; ++var11) { + int var2 = var1[var3++]; + int var12 = var2 >>> 24; + if(var12 == 0) { + ++var4; + } else { + int var13 = 256 - var12; + int var14 = var0[var4]; + var0[var4++] = ((var2 & 16711935) * var12 + (var14 & 16711935) * var13 & -16711936) + ((var2 & 65280) * var12 + (var14 & 65280) * var13 & 16711680) >>> 8; + } + } + + var4 += var7; + var3 += var8; + } + + } + + private static void method674(int[] var0, int[] var1, int var3, int var4, int var5, int var6, int var7, int var8, int var9) { + for(int var10 = -var6; var10 < 0; ++var10) { + for(int var11 = -var5; var11 < 0; ++var11) { + int var12 = (var1[var3] >>> 24) * var9 >> 8; + int var13 = 256 - var12; + int var14 = var1[var3++]; + int var15 = var0[var4]; + var0[var4++] = ((var14 & 16711935) * var12 + (var15 & 16711935) * var13 & -16711936) + ((var14 & 65280) * var12 + (var15 & 65280) * var13 & 16711680) >>> 8; + } + + var4 += var7; + var3 += var8; + } + + } + + private static void method675(int[] var0, int[] var1, int var3, int var4, int var5, int var6, int var7, int var8, int var9, int var10, int var11) { + int var12 = var3; + + for(int var13 = -var8; var13 < 0; ++var13) { + int var14 = (var4 >> 16) * var11; + + for(int var15 = -var7; var15 < 0; ++var15) { + int var2 = var1[(var3 >> 16) + var14]; + int var16 = var2 >>> 24; + if(var16 == 0) { + ++var5; + } else { + int var17 = 256 - var16; + int var18 = var0[var5]; + var0[var5++] = ((var2 & 16711935) * var16 + (var18 & 16711935) * var17 & -16711936) + ((var2 & 65280) * var16 + (var18 & 65280) * var17 & 16711680) >>> 8; + } + + var3 += var9; + } + + var4 += var10; + var3 = var12; + var5 += var6; + } + + } +} diff --git a/Client/src/main/java/org/runite/client/Class3_Sub28_Sub17_Sub1.java b/Client/src/main/java/org/runite/client/Class3_Sub28_Sub17_Sub1.java new file mode 100644 index 000000000..2ae7f75c0 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class3_Sub28_Sub17_Sub1.java @@ -0,0 +1,221 @@ +package org.runite.client; + +import org.rs09.client.rendering.Toolkit; + +public final class Class3_Sub28_Sub17_Sub1 extends Font { + + private byte[][] aByteArrayArray4082 = new byte[256][]; + + + Class3_Sub28_Sub17_Sub1(byte[] var1) { + super(var1); + } + + private static void method704(int[] var0, byte[] var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8) { + int var9 = -(var5 >> 2); + var5 = -(var5 & 3); + + for(int var10 = -var6; var10 < 0; ++var10) { + int var11; + for(var11 = var9; var11 < 0; ++var11) { + if(var1[var3++] == 0) { + ++var4; + } else { + var0[var4++] = var2; + } + + if(var1[var3++] == 0) { + ++var4; + } else { + var0[var4++] = var2; + } + + if(var1[var3++] == 0) { + ++var4; + } else { + var0[var4++] = var2; + } + + if(var1[var3++] == 0) { + ++var4; + } else { + var0[var4++] = var2; + } + } + + for(var11 = var5; var11 < 0; ++var11) { + if(var1[var3++] == 0) { + ++var4; + } else { + var0[var4++] = var2; + } + } + + var4 += var7; + var3 += var8; + } + + } + + private static void method705(byte[] var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9, int var10, int[] var11, int[] var12) { + int var13 = var2 - Toolkit.JAVA_TOOLKIT.clipLeft; + int var14 = var3 - Toolkit.JAVA_TOOLKIT.clipTop; + + for(int var15 = var14; var15 < var14 + var5; ++var15) { + int var16 = var11[var15]; + int var17 = var12[var15]; + int var18 = var4; + int var19; + if(var13 > var16) { + var19 = var13 - var16; + if(var19 >= var17) { + var7 += var4 + var10; + var8 += var4 + var9; + continue; + } + + var17 -= var19; + } else { + var19 = var16 - var13; + if(var19 >= var4) { + var7 += var4 + var10; + var8 += var4 + var9; + continue; + } + + var7 += var19; + var18 = var4 - var19; + var8 += var19; + } + + var19 = 0; + if(var18 < var17) { + var17 = var18; + } else { + var19 = var18 - var17; + } + + for(int var20 = -var17; var20 < 0; ++var20) { + if(var1[var7++] == 0) { + ++var8; + } else { + Toolkit.JAVA_TOOLKIT.getBuffer()[var8++] = var6; + } + } + + var7 += var19 + var10; + var8 += var19 + var9; + } + + } + + private static void method706(int[] var0, byte[] var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9) { + var2 = ((var2 & 16711935) * var9 & -16711936) + ((var2 & 65280) * var9 & 16711680) >> 8; + var9 = 256 - var9; + + for(int var10 = -var6; var10 < 0; ++var10) { + for(int var11 = -var5; var11 < 0; ++var11) { + if(var1[var3++] == 0) { + ++var4; + } else { + int var12 = var0[var4]; + var0[var4++] = (((var12 & 16711935) * var9 & -16711936) + ((var12 & 65280) * var9 & 16711680) >> 8) + var2; + } + } + + var4 += var7; + var3 += var8; + } + + } + + final void method679(int var1, int var2, int var3, int var4, int var5, int var6, int var7) { + int var9 = var2 + var3 * Toolkit.JAVA_TOOLKIT.width; + int var10 = Toolkit.JAVA_TOOLKIT.width - var4; + int var11 = 0; + int var12 = 0; + int var13; + if(var3 < Toolkit.JAVA_TOOLKIT.clipTop) { + var13 = Toolkit.JAVA_TOOLKIT.clipTop - var3; + var5 -= var13; + var3 = Toolkit.JAVA_TOOLKIT.clipTop; + var12 += var13 * var4; + var9 += var13 * Toolkit.JAVA_TOOLKIT.width; + } + + if(var3 + var5 > Toolkit.JAVA_TOOLKIT.clipBottom) { + var5 -= var3 + var5 - Toolkit.JAVA_TOOLKIT.clipBottom; + } + + if(var2 < Toolkit.JAVA_TOOLKIT.clipLeft) { + var13 = Toolkit.JAVA_TOOLKIT.clipLeft - var2; + var4 -= var13; + var2 = Toolkit.JAVA_TOOLKIT.clipLeft; + var12 += var13; + var9 += var13; + var11 += var13; + var10 += var13; + } + + if(var2 + var4 > Toolkit.JAVA_TOOLKIT.clipRight) { + var13 = var2 + var4 - Toolkit.JAVA_TOOLKIT.clipRight; + var4 -= var13; + var11 += var13; + var10 += var13; + } + + if(var4 > 0 && var5 > 0) { + method706(Toolkit.JAVA_TOOLKIT.getBuffer(), this.aByteArrayArray4082[var1], var6, var12, var9, var4, var5, var10, var11, var7); + } + } + + Class3_Sub28_Sub17_Sub1(byte[] var1, int[] var2, int[] var3, int[] var4, int[] var5, byte[][] var6) { + super(var1, var2, var3, var4, var5); + this.aByteArrayArray4082 = var6; + } + + final void method678(int var1, int var2, int var3, int var4, int var5, int var6) { + int var8 = var2 + var3 * Toolkit.JAVA_TOOLKIT.width; + int var9 = Toolkit.JAVA_TOOLKIT.width - var4; + int var10 = 0; + int var11 = 0; + int var12; + if(var3 < Toolkit.JAVA_TOOLKIT.clipTop) { + var12 = Toolkit.JAVA_TOOLKIT.clipTop - var3; + var5 -= var12; + var3 = Toolkit.JAVA_TOOLKIT.clipTop; + var11 += var12 * var4; + var8 += var12 * Toolkit.JAVA_TOOLKIT.width; + } + + if(var3 + var5 > Toolkit.JAVA_TOOLKIT.clipBottom) { + var5 -= var3 + var5 - Toolkit.JAVA_TOOLKIT.clipBottom; + } + + if(var2 < Toolkit.JAVA_TOOLKIT.clipLeft) { + var12 = Toolkit.JAVA_TOOLKIT.clipLeft - var2; + var4 -= var12; + var2 = Toolkit.JAVA_TOOLKIT.clipLeft; + var11 += var12; + var8 += var12; + var10 += var12; + var9 += var12; + } + + if(var2 + var4 > Toolkit.JAVA_TOOLKIT.clipRight) { + var12 = var2 + var4 - Toolkit.JAVA_TOOLKIT.clipRight; + var4 -= var12; + var10 += var12; + var9 += var12; + } + + if(var4 > 0 && var5 > 0) { + if(Class74.anIntArray1097 == null) { + method704(Toolkit.JAVA_TOOLKIT.getBuffer(), this.aByteArrayArray4082[var1], var6, var11, var8, var4, var5, var9, var10); + } else { + method705(this.aByteArrayArray4082[var1], var2, var3, var4, var5, var6, var11, var8, var9, var10, Class74.anIntArray1097, Class74.anIntArray1098); + } + + } + } +} diff --git a/Client/src/main/java/org/runite/client/Class3_Sub28_Sub17_Sub2.java b/Client/src/main/java/org/runite/client/Class3_Sub28_Sub17_Sub2.java new file mode 100644 index 000000000..31f79b0e4 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class3_Sub28_Sub17_Sub2.java @@ -0,0 +1,196 @@ +package org.runite.client; + + + + +import org.rs09.client.rendering.opengl.enums.GLBeginMode; + + +import javax.media.opengl.GL; +import java.nio.ByteBuffer; + +public final class Class3_Sub28_Sub17_Sub2 extends Font { + + private int anInt4083 = 0; + private int anInt4084 = -1; + private int[] anIntArray4085; + private int anInt4086; + private int anInt4087; + + + protected final void finalize() throws Throwable { + if(this.anInt4084 != -1) { + Class31.method991(this.anInt4084, this.anInt4083, this.anInt4086); + this.anInt4084 = -1; + this.anInt4083 = 0; + } + + if(this.anIntArray4085 != null) { + for(int var1 = 0; var1 < this.anIntArray4085.length; ++var1) { + Class31.method986(this.anIntArray4085[var1], this.anInt4086); + } + + this.anIntArray4085 = null; + } + + super.finalize(); + } + + final void method678(int var1, int var2, int var3, int var4, int var5, int var6) { + GL var8; + if(Class22.aHDSprite_447 == null) { + HDToolKit.method1824(); + var8 = HDToolKit.gl; + HDToolKit.bindTexture2D(this.anInt4084); + var8.glColor3ub((byte)(var6 >> 16), (byte)(var6 >> 8), (byte)var6); + var8.glTranslatef((float)var2, (float)(HDToolKit.viewHeight - var3), 0.0F); + var8.glCallList(this.anIntArray4085[var1]); + } else { + HDToolKit.method1824(); + var8 = HDToolKit.gl; + var8.glColor3ub((byte)(var6 >> 16), (byte)(var6 >> 8), (byte)var6); + var8.glTranslatef((float)var2, (float)(HDToolKit.viewHeight - var3), 0.0F); + float var9 = (float)(var1 % 16) / 16.0F; + float var10 = (float)(var1 / 16) / 16.0F; + float var11 = var9 + (float)this.anIntArray3709[var1] / (float)this.anInt4087; + float var12 = var10 + (float)this.anIntArray3721[var1] / (float)this.anInt4087; + HDToolKit.bindTexture2D(this.anInt4084); + HDSprite var13 = Class22.aHDSprite_447; + var8.glActiveTexture('\u84c1'); + var8.glEnable(3553); + var8.glBindTexture(3553, var13.anInt4077); + var8.glTexEnvi(8960, '\u8571', 7681); + var8.glTexEnvi(8960, '\u8580', '\u8578'); + float var14 = (float)(var2 - Class22.anInt449) / (float)var13.anInt4075; + float var15 = (float)(var3 - Class22.anInt448) / (float)var13.anInt4079; + float var16 = (float)(var2 + var4 - Class22.anInt449) / (float)var13.anInt4075; + float var17 = (float)(var3 + var5 - Class22.anInt448) / (float)var13.anInt4079; + var8.glBegin(GLBeginMode.TRIANGLE_FAN); + var8.glMultiTexCoord2f('\u84c1', var16, var15); + var8.glTexCoord2f(var11, var10); + var8.glVertex2f((float)this.anIntArray3709[var1], 0.0F); + var8.glMultiTexCoord2f('\u84c1', var14, var15); + var8.glTexCoord2f(var9, var10); + var8.glVertex2f(0.0F, 0.0F); + var8.glMultiTexCoord2f('\u84c1', var14, var17); + var8.glTexCoord2f(var9, var12); + var8.glVertex2f(0.0F, (float)(-this.anIntArray3721[var1])); + var8.glMultiTexCoord2f('\u84c1', var16, var17); + var8.glTexCoord2f(var11, var12); + var8.glVertex2f((float)this.anIntArray3709[var1], (float)(-this.anIntArray3721[var1])); + var8.glEnd(); + var8.glTexEnvi(8960, '\u8571', 8448); + var8.glTexEnvi(8960, '\u8580', 5890); + var8.glDisable(3553); + var8.glActiveTexture('\u84c0'); + } + var8.glLoadIdentity(); + + } + + final void method679(int var1, int var2, int var3, int var4, int var5, int var6, int var7) { + HDToolKit.method1824(); + GL var9 = HDToolKit.gl; + HDToolKit.bindTexture2D(this.anInt4084); + var9.glColor4ub((byte)(var6 >> 16), (byte)(var6 >> 8), (byte)var6, var7 > 255?-1:(byte)var7); + var9.glTranslatef((float)var2, (float)(HDToolKit.viewHeight - var3), 0.0F); + var9.glCallList(this.anIntArray4085[var1]); + var9.glLoadIdentity(); + } + + private void method707() { + if(this.anIntArray4085 == null) { + this.anIntArray4085 = new int[256]; + GL var1 = HDToolKit.gl; + + for(int var2 = 0; var2 < 256; ++var2) { + float var3 = (float)(var2 % 16) / 16.0F; + float var4 = (float)(var2 / 16) / 16.0F; + float var5 = var3 + (float)this.anIntArray3709[var2] / (float)this.anInt4087; + float var6 = var4 + (float)this.anIntArray3721[var2] / (float)this.anInt4087; + this.anIntArray4085[var2] = var1.glGenLists(1); + var1.glNewList(this.anIntArray4085[var2], 4864); + var1.glBegin(GLBeginMode.TRIANGLE_FAN); + var1.glTexCoord2f(var5, var4); + var1.glVertex2f((float)this.anIntArray3709[var2], 0.0F); + var1.glTexCoord2f(var3, var4); + var1.glVertex2f(0.0F, 0.0F); + var1.glTexCoord2f(var3, var6); + var1.glVertex2f(0.0F, (float)(-this.anIntArray3721[var2])); + var1.glTexCoord2f(var5, var6); + var1.glVertex2f((float)this.anIntArray3709[var2], (float)(-this.anIntArray3721[var2])); + var1.glEnd(); + var1.glEndList(); + } + + this.anInt4086 = Class31.anInt582; + } + } + + Class3_Sub28_Sub17_Sub2(byte[] var1, int[] var2, int[] var3, int[] var4, int[] var5, byte[][] var6) { + super(var1, var2, var3, var4, var5); + this.method708(var6); + this.method707(); + } + + private void method708(byte[][] var1) { + if(this.anInt4084 == -1) { + this.anInt4087 = 0; + + int var2; + for(var2 = 0; var2 < 256; ++var2) { + if(this.anIntArray3721[var2] > this.anInt4087) { + this.anInt4087 = this.anIntArray3721[var2]; + } + + if(this.anIntArray3709[var2] > this.anInt4087) { + this.anInt4087 = this.anIntArray3709[var2]; + } + } + + this.anInt4087 *= 16; + this.anInt4087 = Class95.method1585((byte)104, this.anInt4087); + var2 = this.anInt4087 / 16; + byte[] var3 = new byte[this.anInt4087 * this.anInt4087 * 2]; + + for(int var4 = 0; var4 < 256; ++var4) { + int var5 = var4 % 16 * var2; + int var6 = var4 / 16 * var2; + int var7 = (var6 * this.anInt4087 + var5) * 2; + int var8 = 0; + int var9 = this.anIntArray3721[var4]; + int var10 = this.anIntArray3709[var4]; + byte[] var11 = var1[var4]; + + for(int var12 = 0; var12 < var9; ++var12) { + for(int var13 = 0; var13 < var10; ++var13) { + if(var11[var8++] == 0) { + var7 += 2; + } else { + var3[var7++] = -1; + var3[var7++] = -1; + } + } + + var7 += (this.anInt4087 - var10) * 2; + } + } + + ByteBuffer var14 = ByteBuffer.wrap(var3); + GL var15 = HDToolKit.gl; + if(this.anInt4084 == -1) { + int[] var16 = new int[1]; + var15.glGenTextures(1, var16, 0); + this.anInt4084 = var16[0]; + this.anInt4086 = Class31.anInt582; + } + + HDToolKit.bindTexture2D(this.anInt4084); + var15.glTexImage2D(3553, 0, 6410, this.anInt4087, this.anInt4087, 0, 6410, 5121, var14); + Class31.memory2D += var14.limit() - this.anInt4083; + this.anInt4083 = var14.limit(); + var15.glTexParameteri(3553, 10241, 9728); + var15.glTexParameteri(3553, 10240, 9728); + } + } +} diff --git a/Client/src/main/java/org/runite/client/Class3_Sub28_Sub18.java b/Client/src/main/java/org/runite/client/Class3_Sub28_Sub18.java new file mode 100644 index 000000000..1ba8c6f1b --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class3_Sub28_Sub18.java @@ -0,0 +1,110 @@ +package org.runite.client; + + + +import org.rs09.client.Node; + + +import javax.media.opengl.GL; +import java.lang.reflect.Method; +import java.nio.ByteBuffer; + +final class Class3_Sub28_Sub18 extends Node { + + private int anInt3759; + private final int anInt3760; + static int anInt3764; + static int anInt3765 = 100; + private int anInt3767 = 0; + static int[] anIntArray3768 = new int[100]; + static boolean aBoolean3769 = false; + + + protected final void finalize() throws Throwable { + try { + if(this.anInt3759 != -1) { + Class31.method985(this.anInt3759, this.anInt3767, this.anInt3760); + this.anInt3759 = -1; + this.anInt3767 = 0; + } + + super.finalize(); + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "sd.finalize()"); + } + } + + static void method709(int var0, int var1) { + TileData var2 = TileData.aTileDataArrayArrayArray2638[0][var0][var1]; + + for(int var3 = 0; var3 < 3; ++var3) { + TileData var4 = TileData.aTileDataArrayArrayArray2638[var3][var0][var1] = TileData.aTileDataArrayArrayArray2638[var3 + 1][var0][var1]; + if(var4 != null) { + --var4.anInt2244; + + for(int var5 = 0; var5 < var4.anInt2223; ++var5) { + Class25 var6 = var4.aClass25Array2221[var5]; + if((var6.aLong498 >> 29 & 3L) == 2L && var6.anInt483 == var0 && var6.anInt478 == var1) { + --var6.anInt493; + } + } + } + } + + if(TileData.aTileDataArrayArrayArray2638[0][var0][var1] == null) { + TileData.aTileDataArrayArrayArray2638[0][var0][var1] = new TileData(0, var0, var1); + } + + TileData.aTileDataArrayArrayArray2638[0][var0][var1].aClass3_Sub2_2235 = var2; + TileData.aTileDataArrayArrayArray2638[3][var0][var1] = null; + } + +// static void method710() { +// try { +// Class44.aReferenceCache_725.clearSoftReferences(); +// } catch (RuntimeException var2) { +// throw ClientErrorException.clientError(var2, "sd.C(" + (byte) 126 + ')'); +// } +// } + + final void method712() { + try { + int var2 = Class27.method961(); + if((1 & var2) == 0) { + HDToolKit.bindTexture2D(this.anInt3759); + } + + if(0 == (var2 & 2)) { + HDToolKit.method1856(0); + } + + if((var2 & 4) == 0) { + HDToolKit.method1847(0); + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "sd.E(" + (byte) 6 + ')'); + } + } + + Class3_Sub28_Sub18(int var1) { + try { + GL var2 = HDToolKit.gl; + int[] var3 = new int[1]; + var2.glGenTextures(1, var3, 0); + this.anInt3759 = var3[0]; + this.anInt3760 = Class31.anInt582; + HDToolKit.bindTexture2D(this.anInt3759); + int var4 = Class51.anIntArray834[var1]; + byte[] var5 = new byte[]{(byte)(var4 >> 16), (byte)(var4 >> 8), (byte)var4, (byte)-1}; + ByteBuffer var6 = ByteBuffer.wrap(var5); + var2.glTexImage2D(3553, 0, 6408, 1, 1, 0, 6408, 5121, var6); + var2.glTexParameteri(3553, 10241, 9729); + var2.glTexParameteri(3553, 10240, 9729); + Class31.anInt580 += var6.limit() - this.anInt3767; + this.anInt3767 = var6.limit(); + } catch (RuntimeException var7) { + throw ClientErrorException.clientError(var7, "sd.(" + var1 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class3_Sub28_Sub19.java b/Client/src/main/java/org/runite/client/Class3_Sub28_Sub19.java new file mode 100644 index 000000000..a220abc7c --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class3_Sub28_Sub19.java @@ -0,0 +1,18 @@ +package org.runite.client; + +import org.rs09.client.Node; + +final class Class3_Sub28_Sub19 extends Node { + + Class140_Sub6 aClass140_Sub6_3778; + + + Class3_Sub28_Sub19(Class140_Sub6 var1) { + try { + this.aClass140_Sub6_3778 = var1; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "ud.(" + (var1 != null?"{...}":"null") + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class3_Sub28_Sub2.java b/Client/src/main/java/org/runite/client/Class3_Sub28_Sub2.java new file mode 100644 index 000000000..4df0e6969 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class3_Sub28_Sub2.java @@ -0,0 +1,42 @@ +package org.runite.client; + +import org.rs09.client.Node; + +final class Class3_Sub28_Sub2 extends Node { + + PositionedGraphicObject aPositionedGraphicObject_3545; + + static void method535(byte var0, int var1) { + try { + Unsorted.aFloatArray1934[0] = (float) Unsorted.bitwiseAnd(255, var1 >> 16) / 255.0F; + Unsorted.aFloatArray1934[1] = (float) Unsorted.bitwiseAnd(var1 >> 8, 255) / 255.0F; + Unsorted.aFloatArray1934[2] = (float) Unsorted.bitwiseAnd(255, var1) / 255.0F; + Unsorted.method383(-32584, 3); + Unsorted.method383(-32584, 4); + if(var0 != 56) { + method535((byte)127, 99); + } + + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "bk.A(" + var0 + ',' + var1 + ')'); + } + } + + static Class75_Sub3 method536(DataBuffer var1) { + try { + + return new Class75_Sub3(var1.readSignedShort(), var1.readSignedShort(), var1.readSignedShort(), var1.readSignedShort(), var1.readSignedShort(), var1.readSignedShort(), var1.readSignedShort(), var1.readSignedShort(), var1.readMedium(), var1.readUnsignedByte()); + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "bk.C(" + (byte) 54 + ',' + (var1 != null?"{...}":"null") + ')'); + } + } + + Class3_Sub28_Sub2(PositionedGraphicObject var1) { + try { + this.aPositionedGraphicObject_3545 = var1; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "bk.(" + (var1 != null?"{...}":"null") + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class3_Sub28_Sub20.java b/Client/src/main/java/org/runite/client/Class3_Sub28_Sub20.java new file mode 100644 index 000000000..08696bfc8 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class3_Sub28_Sub20.java @@ -0,0 +1,446 @@ +package org.runite.client; + + + +import org.rs09.client.Node; + +import javax.media.opengl.GL; +import javax.media.opengl.glu.GLU; +import java.nio.ByteBuffer; + +final class Class3_Sub28_Sub20 extends Node { + + private final boolean aBoolean3781; + private float aFloat3782; + private final int anInt3783; + private final int anInt3784; + static CacheIndex soundFX2Index_3786; + private final boolean aBoolean3787; + private final int anInt3788; + private final boolean aBoolean3789; + private final Texture aTexture_3790; + private int anInt3791; + private int[] anIntArray3793; + static Class118 aClass118_3794 = Class21.method913(); + private int anInt3795 = -1; + private int anInt3796 = 0; + boolean aBoolean3797 = false; + private final int anInt3799; + private final boolean aBoolean3800; + + + final int[] method718(Interface2 var1, float var3, CacheIndex var4, boolean var5) { + try { + if(null == this.anIntArray3793 || this.aFloat3782 != var3) { + if(!this.aTexture_3790.method1408(var1, var4)) { + return null; + } + + int var6 = !var5?128:64; + this.anIntArray3793 = this.aTexture_3790.method1404(var6, this.aBoolean3800, var6, var3, var4, var1, true); + this.aFloat3782 = var3; + if(this.aBoolean3789) { + int[] var7 = new int[var6]; + int[] var10 = new int[var6 * var6]; + int[] var8 = new int[var6]; + int[] var9 = new int[var6]; + int var14; + int var13 = var14 = var6; + int var19 = var6 * var6; + int var18 = -1 + var6; + int var17 = var6 - 1; + + int var11; + int var20; + for(var20 = 2; var20 >= 0; --var20) { + for(var11 = var17; var11 >= 0; --var11) { + --var14; + int var12 = this.anIntArray3793[var14]; + var7[var11] += Unsorted.bitwiseAnd(var12, 16726965) >> 16; + var8[var11] += Unsorted.bitwiseAnd(65394, var12) >> 8; + var9[var11] += Unsorted.bitwiseAnd(var12, 255); + } + + if(var14 == 0) { + var14 = var19; + } + } + + int var25 = var19; + + for(int var31 = var18; var31 >= 0; --var31) { + int var30 = 0; + int var29 = 0; + int var28 = 0; + int var26 = 1; + int var27 = 1; + + for(var11 = 2; var11 >= 0; --var11) { + --var27; + var30 += var8[var27]; + var29 += var9[var27]; + var28 += var7[var27]; + if(var27 == 0) { + var27 = var6; + } + } + + for(var11 = var17; var11 >= 0; --var11) { + --var26; + int var21 = var30 / 9; + int var22 = var29 / 9; + --var27; + var20 = var28 / 9; + --var25; + var10[var25] = TextureOperation3.bitwiseOr(var22, TextureOperation3.bitwiseOr(var20 << 16, var21 << 8)); + var28 += var7[var27] + -var7[var26]; + var29 += var9[var27] - var9[var26]; + var30 += -var8[var26] + var8[var27]; + if(var26 == 0) { + var26 = var6; + } + + if(var27 == 0) { + var27 = var6; + } + } + + for(var11 = var17; var11 >= 0; --var11) { + --var13; + int var23 = this.anIntArray3793[var13]; + --var14; + int var24 = this.anIntArray3793[var14]; + var7[var11] += (Unsorted.bitwiseAnd(var24, 16729186) >> 16) + -Unsorted.bitwiseAnd(var23 >> 16, 255); + var8[var11] += (Unsorted.bitwiseAnd(65419, var24) >> 8) + -Unsorted.bitwiseAnd(255, var23 >> 8); + var9[var11] += -Unsorted.bitwiseAnd(var23, 255) + Unsorted.bitwiseAnd(255, var24); + } + + if(0 == var13) { + var13 = var19; + } + + if(0 == var14) { + var14 = var19; + } + } + + this.anIntArray3793 = var10; + } + } + + return this.anIntArray3793; + } catch (RuntimeException var32) { + throw ClientErrorException.clientError(var32, "uh.D(" + (var1 != null?"{...}":"null") + ',' + 0 + ',' + var3 + ',' + (var4 != null?"{...}":"null") + ',' + var5 + ')'); + } + } + + final boolean method719(CacheIndex var1, Interface2 var2, boolean var4) { + try { + if(this.aTexture_3790.method1408(var2, var1)) { + GL var5 = HDToolKit.gl; + int var6 = !var4?128:64; + int var7 = Class27.method961(); + if((1 & var7) == 0) { + if(this.anInt3795 == -1) { + int[] var8 = new int[1]; + var5.glGenTextures(1, var8, 0); + this.anInt3791 = Class31.anInt582; + this.anInt3795 = var8[0]; + HDToolKit.bindTexture2D(this.anInt3795); + ByteBuffer var9 = ByteBuffer.wrap(this.aTexture_3790.method1407(var6, var6, this.aBoolean3800, var2, var1)); + if(2 == this.anInt3788) { + GLU var14 = new GLU(); + var14.gluBuild2DMipmaps(3553, 6408, var6, var6, 6408, 5121, var9); + var5.glTexParameteri(3553, 10241, 9987); + var5.glTexParameteri(3553, 10240, 9729); + Class31.anInt580 += 4 * var9.limit() / 3 - this.anInt3796; + this.anInt3796 = var9.limit() * 4 / 3; + } else if (this.anInt3788 == 1) { + int var10 = 0; + + while (true) { + var5.glTexImage2D(3553, var10++, 6408, var6, var6, 0, 6408, 5121, var9); + var6 >>= 1; + if (0 == var6) { + var5.glTexParameteri(3553, 10241, 9987); + var5.glTexParameteri(3553, 10240, 9729); + Class31.anInt580 += var9.limit() * 4 / 3 - this.anInt3796; + this.anInt3796 = 4 * var9.limit() / 3; + break; + } + + var9 = ByteBuffer.wrap(this.aTexture_3790.method1407(var6, var6, this.aBoolean3800, var2, var1)); + } + } else { + var5.glTexImage2D(3553, 0, 6408, var6, var6, 0, 6408, 5121, var9); + var5.glTexParameteri(3553, 10241, 9729); + var5.glTexParameteri(3553, 10240, 9729); + Class31.anInt580 += var9.limit() - this.anInt3796; + this.anInt3796 = var9.limit(); + } + + var5.glTexParameteri(3553, 10242, !this.aBoolean3787?'\u812f':10497); + var5.glTexParameteri(3553, 10243, this.aBoolean3781?10497:'\u812f'); + } else { + HDToolKit.bindTexture2D(this.anInt3795); + } + } + + if((2 & var7) == 0) { + HDToolKit.method1856(this.anInt3784); + } + + if((4 & var7) == 0) { + HDToolKit.method1847(0); + } + + if((var7 & 8) == 0) { + if(this.anInt3799 == 0 && 0 == this.anInt3783) { + HDToolKit.method1823(); + } else { + float var12 = (float)(this.anInt3799 * HDToolKit.anInt1791) / (float)var6; + float var13 = (float)(this.anInt3783 * HDToolKit.anInt1791) / (float)var6; + HDToolKit.method1843(var13, var12); + } + } + + return true; + } else { + return false; + } + } catch (RuntimeException var11) { + throw ClientErrorException.clientError(var11, "uh.F(" + (var1 != null?"{...}":"null") + ',' + (var2 != null?"{...}":"null") + ',' + 579100487 + ',' + var4 + ')'); + } + } + + final int[] method720(boolean var2, Interface2 var3, CacheIndex var4) { + try { + + if(this.aTexture_3790.method1408(var3, var4)) { + int var5 = !var2?128:64; + return this.aTexture_3790.method1404(var5, this.aBoolean3800, var5, 1.0D, var4, var3, false); + } else { + return null; + } + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "uh.O(" + false + ',' + var2 + ',' + (var3 != null?"{...}":"null") + ',' + (var4 != null?"{...}":"null") + ')'); + } + } + + final boolean method722(Interface2 var2, CacheIndex var3) { + try { + return this.aTexture_3790.method1408(var2, var3); + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "uh.P(" + -5 + ',' + (var2 != null?"{...}":"null") + ',' + (var3 != null?"{...}":"null") + ')'); + } + } + + final void method723(int var1) { + try { + + if(this.anIntArray3793 != null) { + if(0 != this.anInt3799 || this.anInt3783 != 0) { + if(null == Class3_Sub23.anIntArray2533 || this.anIntArray3793.length > Class3_Sub23.anIntArray2533.length) { + Class3_Sub23.anIntArray2533 = new int[this.anIntArray3793.length]; + } + + int var5 = var1 * this.anInt3783; + int var3 = this.anIntArray3793.length == 4096 ?64:128; + int var4 = this.anIntArray3793.length; + int var6 = var3 + -1; + int var7 = this.anInt3799 * var1 * var3; + int var8 = -1 + var4; + + for(int var9 = 0; var4 > var9; var9 += var3) { + int var10 = var7 + var9 & var8; + + for(int var11 = 0; var3 > var11; ++var11) { + int var13 = (var6 & var11 - -var5) + var10; + int var12 = var11 + var9; + Class3_Sub23.anIntArray2533[var12] = this.anIntArray3793[var13]; + } + } + + int[] var15 = this.anIntArray3793; + this.anIntArray3793 = Class3_Sub23.anIntArray2533; + Class3_Sub23.anIntArray2533 = var15; + } + + } + } catch (RuntimeException var14) { + throw ClientErrorException.clientError(var14, "uh.E(" + var1 + ',' + (byte) -120 + ')'); + } + } + + protected final void finalize() throws Throwable { + try { + if(this.anInt3795 != -1) { + Class31.method985(this.anInt3795, this.anInt3796, this.anInt3791); + this.anInt3796 = 0; + this.anInt3795 = -1; + } + + super.finalize(); + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "uh.finalize()"); + } + } + + static void method725() { + try { + if(Class137.method1817() == 2) { + byte var2 = (byte)(255 & CSConfigCachefile.anInt1127 + -4); + int var3 = CSConfigCachefile.anInt1127 % 104; + + int var4; + int var5; + for(var4 = 0; var4 < 4; ++var4) { + for(var5 = 0; 104 > var5; ++var5) { + Class158.aByteArrayArrayArray2008[var4][var3][var5] = var2; + } + } + + if(WorldListCountry.localPlane != 3) { + for(var4 = 0; var4 < 2; ++var4) { + Unsorted.anIntArray686[var4] = -1000000; + Class129_Sub1.anIntArray2696[var4] = 1000000; + Class159.anIntArray2021[var4] = 0; + SequenceDefinition.anIntArray1871[var4] = 1000000; + Player.anIntArray3959[var4] = 0; + } + + if(1 == Class133.anInt1753) { + if((4 & Unsorted.sceneryTypeMaskGrid[WorldListCountry.localPlane][Class102.player.xAxis >> 7][Class102.player.yAxis >> 7]) != 0) { + GroundItem.method2031((byte)-85, false, Class102.player.xAxis >> 7, Class102.player.yAxis >> 7, TileData.aTileDataArrayArrayArray2638, 0); + } + + if(Class139.anInt1823 < 310) { + int var7 = Class102.player.yAxis >> 7; + var5 = Class77.anInt1111 >> 7; + int var9; + if(var5 < var7) { + var9 = var7 - var5; + } else { + var9 = -var7 + var5; + } + + var4 = NPC.anInt3995 >> 7; + int var6 = Class102.player.xAxis >> 7; + int var8; + if(var4 < var6) { + var8 = -var4 + var6; + } else { + var8 = -var6 + var4; + } + + int var10; + int var11; + if(var8 > var9) { + var11 = 32768; + var10 = var9 * 65536 / var8; + + while(var6 != var4) { + if(var6 <= var4) { + --var4; + } else { + ++var4; + } + + if((Unsorted.sceneryTypeMaskGrid[WorldListCountry.localPlane][var4][var5] & 4) != 0) { + GroundItem.method2031((byte)-29, false, var4, var5, TileData.aTileDataArrayArrayArray2638, 1); + break; + } + + var11 += var10; + if(var11 >= 65536) { + if(var5 >= var7) { + if(var7 < var5) { + --var5; + } + } else { + ++var5; + } + + var11 -= 65536; + if((4 & Unsorted.sceneryTypeMaskGrid[WorldListCountry.localPlane][var4][var5]) != 0) { + GroundItem.method2031((byte)-120, false, var4, var5, TileData.aTileDataArrayArrayArray2638, 1); + break; + } + } + } + } else { + var11 = 32768; + var10 = 65536 * var8 / var9; + + while(var7 != var5) { + if(var5 < var7) { + ++var5; + } else { + --var5; + } + + if((4 & Unsorted.sceneryTypeMaskGrid[WorldListCountry.localPlane][var4][var5]) != 0) { + GroundItem.method2031((byte)-13, false, var4, var5, TileData.aTileDataArrayArrayArray2638, 1); + break; + } + + var11 += var10; + if(var11 >= 65536) { + if(var6 > var4) { + ++var4; + } else if(var6 < var4) { + --var4; + } + + var11 -= 65536; + if((4 & Unsorted.sceneryTypeMaskGrid[WorldListCountry.localPlane][var4][var5]) != 0) { + GroundItem.method2031((byte)-37, false, var4, var5, TileData.aTileDataArrayArrayArray2638, 1); + break; + } + } + } + } + } + } else { + var4 = Scenery.sceneryPositionHash(WorldListCountry.localPlane, 1, NPC.anInt3995, Class77.anInt1111); + if(800 > var4 + -Class7.anInt2162 && (4 & Unsorted.sceneryTypeMaskGrid[WorldListCountry.localPlane][NPC.anInt3995 >> 7][Class77.anInt1111 >> 7]) != 0) { + GroundItem.method2031((byte)-107, false, NPC.anInt3995 >> 7, Class77.anInt1111 >> 7, TileData.aTileDataArrayArrayArray2638, 1); + } + } + + } + } + } catch (RuntimeException var12) { + throw ClientErrorException.clientError(var12, "uh.A(" + -118 + ')'); + } + } + + Class3_Sub28_Sub20(DataBuffer var1) { + try { + this.aTexture_3790 = new Texture(var1); + this.aBoolean3789 = var1.readUnsignedByte() == 1; + this.aBoolean3800 = 1 == var1.readUnsignedByte(); + this.aBoolean3787 = var1.readUnsignedByte() == 1; + this.aBoolean3781 = var1.readUnsignedByte() == 1; + int var2 = 3 & var1.readUnsignedByte(); + this.anInt3783 = var1.readSignedByte(); + this.anInt3799 = var1.readSignedByte(); + int var3 = var1.readUnsignedByte(); + var1.readUnsignedByte(); + if(var2 == 1) { + this.anInt3784 = 2; + } else if(var2 == 2) { + this.anInt3784 = 3; + } else if(var2 == 3) { + this.anInt3784 = 4; + } else { + this.anInt3784 = 0; + } + + this.anInt3788 = (var3 & 240) >> 4; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "uh.(" + (var1 != null?"{...}":"null") + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class3_Sub28_Sub3.java b/Client/src/main/java/org/runite/client/Class3_Sub28_Sub3.java new file mode 100644 index 000000000..46bc41390 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class3_Sub28_Sub3.java @@ -0,0 +1,171 @@ +package org.runite.client; + +import org.rs09.client.Node; + +final class Class3_Sub28_Sub3 extends Node { + + int anInt3549 = 0; + int anInt3550; + static RSInterface aClass11_3551; + boolean aBoolean3553; + RSString aString_3554; + int anInt3555 = 12800; + int anInt3556; + static int anInt3557 = 0; + int anInt3558; + int anInt3559 = 0; + LinkedList aLinkedList_3560; + RSString aString_3561; + int anInt3562 = 12800; + int anInt3563; + static int anInt3564 = 0; + + + final boolean method537(int var1, int var3) { + try { + if(var3 >= this.anInt3555 && var3 <= this.anInt3559 && var1 >= this.anInt3562 && var1 <= this.anInt3549) { + for(Class3_Sub21 var4 = (Class3_Sub21)this.aLinkedList_3560.startIteration(); var4 != null; var4 = (Class3_Sub21)this.aLinkedList_3560.nextIteration()) { + if(var4.method393(var1, var3)) { + return true; + } + } + + } + return false; + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "bn.B(" + var1 + ',' + (byte) 97 + ',' + var3 + ')'); + } + } + + final void method538() { + try { + this.anInt3562 = 12800; + this.anInt3559 = 0; + + this.anInt3549 = 0; + this.anInt3555 = 12800; + + for(Class3_Sub21 var2 = (Class3_Sub21)this.aLinkedList_3560.startIteration(); null != var2; var2 = (Class3_Sub21)this.aLinkedList_3560.nextIteration()) { + if(this.anInt3562 > var2.anInt2494) { + this.anInt3562 = var2.anInt2494; + } + + if(this.anInt3555 > var2.anInt2492) { + this.anInt3555 = var2.anInt2492; + } + + if(var2.anInt2495 > this.anInt3559) { + this.anInt3559 = var2.anInt2495; + } + + if(this.anInt3549 < var2.anInt2497) { + this.anInt3549 = var2.anInt2497; + } + } + + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "bn.F(" + (byte) 103 + ')'); + } + } + + static int method540(int var0, int var2) { + try { + int var3; + for(var3 = 0; var0 > 0; --var0) { + var3 = var3 << 1 | 1 & var2; + var2 >>>= 1; + } + + return var3; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "bn.P(" + var0 + ',' + -14314 + ',' + var2 + ')'); + } + } + + static void method541(boolean var1, RSString var2) { + try { + var2 = var2.toLowercase(); + int var4 = 0; + short[] var3 = new short[16]; + int var6 = !var1?0:32768; + int var7 = (!var1? QuickChat.anInt1156: QuickChat.anInt377) + var6; + + for(int var8 = var6; var8 < var7; ++var8) { + QuickChatDefinition var9 = QuickChat.method733(var8); + if(var9.aBoolean3568 && var9.method554().toLowercase().indexOf(var2, 112) != -1) { + if(var4 >= 50) { + Unsorted.anInt952 = -1; + Class99.aShortArray1398 = null; + return; + } + + if(var4 >= var3.length) { + short[] var10 = new short[2 * var3.length]; + + System.arraycopy(var3, 0, var10, 0, var4); + + var3 = var10; + } + + var3[var4++] = (short)var8; + } + } + + Class99.aShortArray1398 = var3; + Unsorted.anInt952 = var4; + Entity.anInt2756 = 0; + RSString[] var13 = new RSString[Unsorted.anInt952]; + + for(int var14 = 0; Unsorted.anInt952 > var14; ++var14) { + var13[var14] = QuickChat.method733(var3[var14]).method554(); + } + + TextureOperation3.method307(var13, Class99.aShortArray1398, 100); + } catch (RuntimeException var12) { + throw ClientErrorException.clientError(var12, "bn.C(" + (byte) 123 + ',' + var1 + ',' + (var2 != null?"{...}":"null") + ')'); + } + } + + static int method543(int var0, int var1, byte var2) { + try { + if(var2 > -71) { + return -52; + } else { + int var3 = NPC.method1984(var0 + -1, 38, -1 + var1) - -NPC.method1984(1 + var0, 38, -1 + var1) - (-NPC.method1984(-1 + var0, 38, var1 - -1) + -NPC.method1984(var0 + 1, 38, var1 - -1)); + int var4 = NPC.method1984(var0 + -1, 38, var1) + NPC.method1984(var0 + 1, 38, var1) + (NPC.method1984(var0, 38, -1 + var1) - -NPC.method1984(var0, 38, 1 + var1)); + int var5 = NPC.method1984(var0, 38, var1); + return var4 / 8 + var3 / 16 - -(var5 / 4); + } + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "bn.A(" + var0 + ',' + var1 + ',' + var2 + ')'); + } + } + + static boolean method544(int var1) { + try { + return var1 >= 48 && 57 >= var1; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "bn.E(" + -49 + ',' + var1 + ')'); + } + } + + Class3_Sub28_Sub3(RSString var1, RSString var2, int var3, int var4, int var5, boolean var6, int var7) { + try { + this.anInt3556 = var4; + this.anInt3550 = var5; + this.aBoolean3553 = var6; + this.aString_3561 = var1; + this.aString_3554 = var2; + this.anInt3563 = var7; + this.anInt3558 = var3; + if(this.anInt3563 == 255) { + this.anInt3563 = 0; + } + + this.aLinkedList_3560 = new LinkedList(); + } catch (RuntimeException var9) { + throw ClientErrorException.clientError(var9, "bn.(" + (var1 != null?"{...}":"null") + ',' + (var2 != null?"{...}":"null") + ',' + var3 + ',' + var4 + ',' + var5 + ',' + var6 + ',' + var7 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class3_Sub28_Sub5.java b/Client/src/main/java/org/runite/client/Class3_Sub28_Sub5.java new file mode 100644 index 000000000..fa65bf2c3 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class3_Sub28_Sub5.java @@ -0,0 +1,281 @@ +package org.runite.client; +import org.rs09.client.Node; +import java.util.Calendar; +import java.util.Objects; +import java.util.TimeZone; + +final class Class3_Sub28_Sub5 extends Node { + + static CacheIndex configurationsIndex_3580; + static Calendar aCalendar3581 = Calendar.getInstance(TimeZone.getTimeZone("GMT")); + static int[] anIntArray3587; + AnimationHeader[] animations; + static int anInt3589; + static int anInt3590 = -1; + static int anInt3591 = 0; + static int[] anIntArray3592 = new int[256]; + static volatile boolean forceReplaceCanvasEnable = false; + + + static void method556(int var0, int var1, int var2, byte var3, int var4, int var5) { + try { + if(var3 < -93) { + int var8 = var2 * var2; + int var6 = 0; + int var7 = var1; + int var11 = var8 << 1; + int var9 = var1 * var1; + int var12 = var1 << 1; + int var10 = var9 << 1; + int var13 = var8 * (-var12 + 1) + var10; + int var14 = -(var11 * (-1 + var12)) + var9; + int var16 = var9 << 2; + int var17 = var10 * ((var6 << 1) + 3); + int var15 = var8 << 2; + int var18 = ((var1 << 1) - 3) * var11; + int var19 = var16 * (1 + var6); + int var21; + int var22; + if(var5 >= Class159.anInt2020 && Class57.anInt902 >= var5) { + var21 = Class40.method1040(Class3_Sub28_Sub18.anInt3765, var2 + var4, Class101.anInt1425); + var22 = Class40.method1040(Class3_Sub28_Sub18.anInt3765, -var2 + var4, Class101.anInt1425); + TextureOperation18.method282(Class38.anIntArrayArray663[var5], var22, 91, var21, var0); + } + + for(int var20 = var15 * (-1 + var1); 0 < var7; var20 -= var15) { + --var7; + if(var13 < 0) { + while(0 > var13) { + ++var6; + var13 += var17; + var14 += var19; + var19 += var16; + var17 += var16; + } + } + + var21 = var5 - var7; + if(var14 < 0) { + var14 += var19; + var13 += var17; + var17 += var16; + var19 += var16; + ++var6; + } + + var14 += -var18; + var18 -= var15; + var13 += -var20; + var22 = var7 + var5; + if(var22 >= Class159.anInt2020 && var21 <= Class57.anInt902) { + int var23 = Class40.method1040(Class3_Sub28_Sub18.anInt3765, var6 + var4, Class101.anInt1425); + int var24 = Class40.method1040(Class3_Sub28_Sub18.anInt3765, -var6 + var4, Class101.anInt1425); + if(var21 >= Class159.anInt2020) { + TextureOperation18.method282(Class38.anIntArrayArray663[var21], var24, 121, var23, var0); + } + + if(var22 <= Class57.anInt902) { + TextureOperation18.method282(Class38.anIntArrayArray663[var22], var24, -110, var23, var0); + } + } + } + + } + } catch (RuntimeException var25) { + throw ClientErrorException.clientError(var25, "cl.C(" + var0 + ',' + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + var5 + ')'); + } + } + + final boolean method559(int var2) { + try { + return this.animations[var2].aBoolean1386; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "cl.D(" + 1317095745 + ',' + var2 + ')'); + } + } + + static void method560() { + try { + for(int var1 = 0; var1 < 5; ++var1) { + WaterfallShader.aBooleanArray2169[var1] = false; + } + + Class75.anInt1105 = 0; + Class163_Sub2_Sub1.anInt4014 = 0; + NPCDefinition.anInt1252 = -1; + InterfaceWidget.anInt2293 = -1; + Class133.anInt1753 = 1; + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "cl.A(" + -21556 + ')'); + } + } + + +// public static void decodeNew(int file) { +// try { +// ByteBuffer buffer = buffers[file]; +// +// if (buffer != null) { +// +// buffer.position(1); +// +// int skin_id = buffer.getShort() & 0xFFFF; +// +// if (skin_id == 0) { +// return; +// } +// +// Skins skin = new Skins(0, SignLink.cache.read(1, skin_id).getData()); +// +// ByteBuffer parent = ByteBuffer.wrap(buffer.array()); +// +// parent.position(3);//skip the first 3 bytes, like the 666 client does. +// +// int children = parent.get() & 0xFF; +// +// Animation[] headers = new Animation[children]; +// +// ByteBuffer child = ByteBuffer.wrap(parent.array()); +// child.position(parent.position() + children); +// +// +// int vertice_amt = 0; +// int unflagged_vertex = -1; +// int flagged_vertex = -1; +// +// for (int i = 0; i < children; i++) { +// +// Animation animation = headers[i] = new Animation(); +// +// int type = skin.anIntArray646[i]; +// +// if (type == 0) { +// unflagged_vertex = i; +// } +// +// int flags = child.get() & 0xFF; +// +// if (flags <= 0) { +// continue; +// } +// +// if (type == 0) { +// flagged_vertex = i; +// } +// +// vertex_offset_copy[vertice_amt] = i; +// +// int static_frame = type == 3 || type == 10 ? 128 : 0; +// +// x_buff_copy[vertice_amt] = (flags & 0x1) != 0 ? BufferUtils.getUnsignedSmart(child) : static_frame; +// y_buff_copy[vertice_amt] = (flags & 0x2) != 0 ? BufferUtils.getUnsignedSmart(child) : static_frame; +// z_buff_copy[vertice_amt] = (flags & 0x4) != 0 ? BufferUtils.getUnsignedSmart(child) : static_frame; +// +// xyz_flag_copy[vertice_amt] = (byte) (flags >>> 3 & 0x3); +// +// if (type == 2 || type == 9) { +// x_buff_copy[vertice_amt] = x_buff_copy[vertice_amt] << 2 & 0x3fff; +// y_buff_copy[vertice_amt] = y_buff_copy[vertice_amt] << 2 & 0x3fff; +// z_buff_copy[vertice_amt] = z_buff_copy[vertice_amt] << 2 & 0x3fff; +// } +// +// if (type == 1 || type == 2 || type == 3 && (unflagged_vertex > flagged_vertex)) { +// skin_vertices[vertice_amt] = unflagged_vertex; +// flagged_vertex = unflagged_vertex; +// } else { +// skin_vertices[vertice_amt] = -1; +// } +// +// if (type == 5) { +// animation.aBoolean688 = true; +// } else if (type == 7) { +// animation.aBoolean684 = true; +// } else if (type == 8 || type == 9 || type == 10) { +// animation.aBoolean681 = true; +// } +// +// vertice_amt++; +// } +// +// //resize arrays and copy into them. +// +// for (Animation animation : headers) { +// animation.vertices = vertice_amt; +// animation.xBuffer = new int[vertice_amt]; +// animation.yBuffer = new int[vertice_amt]; +// animation.zBuffer = new int[vertice_amt]; +// animation.skinVertices = new int[vertice_amt]; +// animation.xyzFlags = new int[vertice_amt]; +// animation.vertexOffsets = new int[vertice_amt]; +// +// for (int vextex = 0; vextex < vertice_amt; vextex++) { +// animation.xBuffer[vextex] = x_buff_copy[vextex]; +// animation.yBuffer[vextex] = y_buff_copy[vextex]; +// animation.zBuffer[vextex] = z_buff_copy[vextex]; +// animation.skinVertices[vextex] = skin_vertices[vextex]; +// animation.xyzFlags[vextex] = xyz_flag_copy[vextex]; +// animation.vertexOffsets[vextex] = vertex_offset_copy[vextex]; +// } +// } +// cache[file] = headers; +// } else { +// System.out.println("[Animation] Unrecognized skeleton file request."); +// } +// } catch (Exception exception) { +// exception.printStackTrace(); +// } +// } + + //Animation header + Class3_Sub28_Sub5(CacheIndex cacheIndex0, CacheIndex var2, int frame) { + try { + LinkedList var5 = new LinkedList(); + int size = cacheIndex0.getFileAmount(frame); + this.animations = new AnimationHeader[size]; + int[] fileIds = cacheIndex0.getFileIds(frame); + int var8 = 0; + + while(Objects.requireNonNull(fileIds).length > var8) { + byte[] var9 = cacheIndex0.getFile(frame, fileIds[var8]); + int skinId = 255 & var9[1] | (var9[0] & 0xFF) << 8; + Class3_Sub17 var12 = (Class3_Sub17) var5.startIteration(); + Class3_Sub17 skin = null; + + while(true) { + if(var12 != null) { + if(var12.anInt2454 != skinId) { + var12 = (Class3_Sub17)var5.nextIteration(); + continue; + } + + skin = var12; + } + + if(null == skin) { + byte[] var13; + var13 = var2.method2140(0, skinId); + + skin = new Class3_Sub17(skinId, var13); + var5.pushBack(skin); + } + + this.animations[fileIds[var8]] = new AnimationHeader(var9, skin); + ++var8; + break; + } + } + + } catch (RuntimeException var14) { + throw ClientErrorException.clientError(var14, "cl.(" + (cacheIndex0 != null?"{...}":"null") + ',' + (var2 != null?"{...}":"null") + ',' + frame + ',' + false + ')'); + } + } + + final boolean method561(int var1, byte var2) { + try { + return var2 < 114 || this.animations[var1].aBoolean1382; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "cl.F(" + var1 + ',' + var2 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class3_Sub28_Sub8.java b/Client/src/main/java/org/runite/client/Class3_Sub28_Sub8.java new file mode 100644 index 000000000..110c21141 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class3_Sub28_Sub8.java @@ -0,0 +1,100 @@ +package org.runite.client; + +import org.rs09.client.Node; + +final class Class3_Sub28_Sub8 extends Node { + + static Class113[] aClass113Array3610; + static int anInt3611; + byte[] aByteArray3612; + + static int method571() { + try { + return (double) NPC.aFloat3979 == 3.0D ?37: (double) NPC.aFloat3979 == 4.0D ?50: 6.0D != (double) NPC.aFloat3979 ? (double) NPC.aFloat3979 == 8.0D ?100:200 :75; + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "hc.E(" + -109 + ')'); + } + } + + static void method574(NPC var0) { + try { + for(Class3_Sub9 var2 = (Class3_Sub9) Unsorted.aLinkedList_1242.startIteration(); var2 != null; var2 = (Class3_Sub9) Unsorted.aLinkedList_1242.nextIteration()) { + if(var0 == var2.aEntity_Sub2_2324) { + if(var2.aClass3_Sub24_Sub1_2312 != null) { + Class3_Sub26.aClass3_Sub24_Sub2_2563.method461(var2.aClass3_Sub24_Sub1_2312); + var2.aClass3_Sub24_Sub1_2312 = null; + } + + var2.unlink(); + return; + } + } + + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "hc.D(" + (var0 != null?"{...}":"null") + ',' + false + ')'); + } + } + + static void method575(CacheIndex var0, int var1) { + try { + if(var1 != -1) { + method575(null, -38); + } + + Class3_Sub23.configurationsIndex_2536 = var0; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "hc.C(" + (var0 != null?"{...}":"null") + ',' + var1 + ')'); + } + } + + static int method576(RSString var0) { + try { + if(Class119.aClass131_1624 == null || var0.length() == 0) { + return -1; + } else { + for (int var2 = 0; var2 < Class119.aClass131_1624.anInt1720; ++var2) { + if (Class119.aClass131_1624.aStringArray1721[var2].method1560(RSString.parse(" "), TextCore.aString_4066).equalsString(var0)) { + return var2; + } + } + + return -1; + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "hc.F(" + (var0 != null?"{...}":"null") + ',' + false + ')'); + } + } + + Class3_Sub28_Sub8(byte[] var1) { + try { + this.aByteArray3612 = var1; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "hc.(" + (var1 != null?"{...}":"null") + ')'); + } + } + + static void method577(int var0, int var1, int var2, int var3, GameObject var4, GameObject var5, int var6, int var7, int var8, int var9, long var10) { + if(var4 != null) { + Class19 var12 = new Class19(); + var12.aLong428 = var10; + var12.anInt424 = var1 * 128 + 64; + var12.anInt427 = var2 * 128 + 64; + var12.anInt425 = var3; + var12.aClass140_429 = var4; + var12.aClass140_423 = var5; + var12.anInt432 = var6; + var12.anInt420 = var7; + var12.anInt430 = var8; + var12.anInt426 = var9; + + for(int var13 = var0; var13 >= 0; --var13) { + if(TileData.aTileDataArrayArrayArray2638[var13][var1][var2] == null) { + TileData.aTileDataArrayArrayArray2638[var13][var1][var2] = new TileData(var13, var1, var2); + } + } + + TileData.aTileDataArrayArrayArray2638[var0][var1][var2].aClass19_2233 = var12; + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class3_Sub28_Sub9.java b/Client/src/main/java/org/runite/client/Class3_Sub28_Sub9.java new file mode 100644 index 000000000..bd272f642 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class3_Sub28_Sub9.java @@ -0,0 +1,127 @@ +package org.runite.client; +import org.rs09.client.Node; +import org.rs09.client.data.HashTable; + +import java.util.Calendar; + +final class Class3_Sub28_Sub9 extends Node { + + int anInt3614; + static Calendar aCalendar3616 = Calendar.getInstance(); + private int anInt3617; + RSString aString_3619; + static int anInt3620 = 0; + static RSString aString_3621 = null; + static int anInt3622 = 0; + static int anInt3623 = 0; + static int anInt3624; + + + static SoftwareSprite method578() { + try { + int var1 = Unsorted.anIntArray3076[0] * GroundItem.anIntArray2931[0]; + byte[] var2 = Class163_Sub1.aByteArrayArray2987[0]; + + Object var3; + if(Class45.aBooleanArray3272[0]) { + byte[] var4 = Class163_Sub3.aByteArrayArray3005[0]; + int[] var5 = new int[var1]; + + for(int var6 = 0; var6 < var1; ++var6) { + var5[var6] = TextureOperation3.bitwiseOr(Unsorted.bitwiseAnd(var4[var6] << 24, -16777216), TextureOperation38.spritePalette[Unsorted.bitwiseAnd(255, var2[var6])]); + } + + var3 = new Class3_Sub28_Sub16_Sub2_Sub1(Class3_Sub15.anInt2426, Class133.anInt1748, Class164.anIntArray2048[0], Unsorted.anIntArray2591[0], GroundItem.anIntArray2931[0], Unsorted.anIntArray3076[0], var5); + } else { + int[] var8 = new int[var1]; + + for(int var9 = 0; var9 < var1; ++var9) { + var8[var9] = TextureOperation38.spritePalette[Unsorted.bitwiseAnd(var2[var9], 255)]; + } + + var3 = new SoftwareSprite(Class3_Sub15.anInt2426, Class133.anInt1748, Class164.anIntArray2048[0], Unsorted.anIntArray2591[0], GroundItem.anIntArray2931[0], Unsorted.anIntArray3076[0], var8); + } + + Class39.method1035((byte)127); + return (SoftwareSprite)var3; + } catch (RuntimeException var7) { + throw ClientErrorException.clientError(var7, "hn.P(" + 115 + ')'); + } + } + + private void method579(int var1, DataBuffer var2) { + try { + if(var1 == 1) { + this.anInt3617 = var2.readUnsignedByte(); + } else if (var1 == 2) { + this.anInt3614 = var2.readInt(); + } else if (var1 == 5) { + this.aString_3619 = var2.readString(); + } + + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "hn.A(" + var1 + ',' + (var2 != null?"{...}":"null") + ',' + 0 + ')'); + } + } + + static void method580(byte var0) { + try { + if(var0 != 80) { + method582(88, 85, -8, true, 72, 12, 29, 96, 6, 57, -13, 15); + } + + TileData.aHashTable_2220 = new HashTable(32); + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "hn.B(" + var0 + ')'); + } + } + + static void method581(CacheIndex var0, CacheIndex var2) { + try { + FontType.smallFont = Unsorted.method1300(Sprites.p11FullSpriteArchive, var2, var0); + if(HDToolKit.highDetail) { + Class157.aClass3_Sub28_Sub17_Sub1_2000 = Class70.method1287(Sprites.p11FullSpriteArchive, var0, var2); + } else { + Class157.aClass3_Sub28_Sub17_Sub1_2000 = (Class3_Sub28_Sub17_Sub1) FontType.smallFont; + } + + FontType.plainFont = Unsorted.method1300(Sprites.p12FullSpriteArchive, var2, var0); + FontType.bold = Unsorted.method1300(Sprites.b12FullSpriteArchive, var2, var0); + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "hn.D(" + (var0 != null?"{...}":"null") + ',' + 0 + ',' + (var2 != null?"{...}":"null") + ')'); + } + } + + static boolean method582(int var0, int var1, int var2, boolean var3, int var4, int var5, int var6, int var7, int var8, int var9, int var10, int var11) { + try { + return Class102.player.getSize() != var5?(Class102.player.getSize() <= 2?Class158_Sub1.method2191(var6, var4, var11, var10, var9, var2, var1, var3, var8, var0, var7):Class52.method1166(var10, var7, var9, var1, Class102.player.getSize(), var6, var8, var4, var11, var2, var3, var0)): Unsorted.method76(var7, var8, var4, var0, var10, var3, var2, var1, var6, var9, var11); + } catch (RuntimeException var13) { + throw ClientErrorException.clientError(var13, "hn.O(" + var0 + ',' + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + var5 + ',' + var6 + ',' + var7 + ',' + var8 + ',' + var9 + ',' + var10 + ',' + var11 + ')'); + } + } + + final void method583(DataBuffer var2) { + try { + while(true) { + int var3 = var2.readUnsignedByte(); + if(var3 == 0) { + return; + } + + this.method579(var3, var2); + } + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "hn.C(" + 207 + ',' + (var2 != null?"{...}":"null") + ')'); + } + } + + final boolean method585() { + try { + + return this.anInt3617 == 115; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "hn.E(" + 0 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class3_Sub3.java b/Client/src/main/java/org/runite/client/Class3_Sub3.java new file mode 100644 index 000000000..efc87112b --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class3_Sub3.java @@ -0,0 +1,13 @@ +package org.runite.client; + +import org.rs09.client.Linkable; + +abstract class Class3_Sub3 extends Linkable { + + int anInt2247; + + + abstract int method105(Class3_Sub24_Sub2 var1); + + abstract void method106(); +} diff --git a/Client/src/main/java/org/runite/client/Class3_Sub31.java b/Client/src/main/java/org/runite/client/Class3_Sub31.java new file mode 100644 index 000000000..bbe3d6303 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class3_Sub31.java @@ -0,0 +1,32 @@ +package org.runite.client; + +import org.rs09.client.Linkable; +import org.rs09.client.data.ReferenceCache; + +final class Class3_Sub31 extends Linkable { + + int anInt2602; + int anInt2603; + static ReferenceCache aReferenceCache_2604 = new ReferenceCache(64); + static int[] anIntArray2606; + static int paramCountryID; + + static RSString[] optionsArrayStringConstructor(RSString[] var1) { + try { + RSString[] var2 = new RSString[5]; + + for(int var3 = 0; var3 < 5; ++var3) { + var2[var3] = RSString.stringCombiner(new RSString[]{ + RSString.stringAnimator(var3), TextCore.aString_3577}); + if(var1 != null && null != var1[var3]) { + var2[var3] = RSString.stringCombiner(new RSString[]{var2[var3], var1[var3]}); + } + } + + return var2; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "wk.A(" + 19406 + ',' + (var1 != null?"{...}":"null") + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class3_Sub5.java b/Client/src/main/java/org/runite/client/Class3_Sub5.java new file mode 100644 index 000000000..79dede766 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class3_Sub5.java @@ -0,0 +1,394 @@ +package org.runite.client; + +import org.rs09.SystemLogger; +import org.rs09.client.Linkable; + +final class Class3_Sub5 extends Linkable { + + int anInt2266; + + int anInt2268; + int anInt2270; + int anInt2271; + int anInt2272; + int anInt2273; + int anInt2277; + int anInt2278; + int anInt2279; + int anInt2282; + int anInt2283; + int anInt2284; + + static void method111(byte var0, int var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8) { + try { + if (var0 < -47) { + for (int var9 = 0; var9 < Class119.aClass131_1624.anInt1720; ++var9) { + if (Class119.aClass131_1624.method1787(var9)) { + int var10 = -TextureOperation37.anInt3256 + Class119.aClass131_1624.xArray1727[var9]; + int var11 = Unsorted.anInt65 - (Class119.aClass131_1624.yArray1718[var9] - -1 - Class108.anInt1460); + int var12 = var1 + (-var1 + var4) * (var10 - var3) / (-var3 + var7); + int var14 = Class119.aClass131_1624.method1791(var9, 8); + int var13 = (var8 + -var2) * (var11 - var6) / (var5 + -var6) + var2; + int var15 = 16777215; + Class33 var16 = null; + if (var14 == 0) { + if ((double) Class44.aFloat727 == 3.0D) { + var16 = Class164_Sub2.aClass33_3019; + } + + if (4.0D == (double) Class44.aFloat727) { + var16 = Unsorted.aClass33_1238; + } + + if ((double) Class44.aFloat727 == 6.0D) { + var16 = Class99.aClass33_1399; + } + + if ((double) Class44.aFloat727 >= 8.0D) { + var16 = Class75_Sub2.aClass33_2637; + } + } + + if (var14 == 1) { + if (3.0D == (double) Class44.aFloat727) { + var16 = Class99.aClass33_1399; + } + + if ((double) Class44.aFloat727 == 4.0D) { + var16 = Class75_Sub2.aClass33_2637; + } + + if ((double) Class44.aFloat727 == 6.0D) { + var16 = Class119.aClass33_1626; + } + + if (8.0D <= (double) Class44.aFloat727) { + var16 = Class75_Sub2.aClass33_2648; + } + } + + if (var14 == 2) { + if ((double) Class44.aFloat727 == 3.0D) { + var16 = Class119.aClass33_1626; + } + + var15 = 16755200; + if ((double) Class44.aFloat727 == 4.0D) { + var16 = Class75_Sub2.aClass33_2648; + } + + if (6.0D == (double) Class44.aFloat727) { + var16 = Class161.aClass33_2034; + } + + if ((double) Class44.aFloat727 >= 8.0D) { + var16 = Class91.aClass33_1305; + } + } + + if (Class119.aClass131_1624.anIntArray1725[var9] != -1) { + var15 = Class119.aClass131_1624.anIntArray1725[var9]; + } + + if (null != var16) { + int var17 = FontType.smallFont.method691(Class119.aClass131_1624.aStringArray1721[var9], null, Class158_Sub1.aStringArray2977); + var13 -= var16.method998() * (var17 + -1) / 2; + var13 += var16.method1006() / 2; + + for (int var18 = 0; var18 < var17; ++var18) { + RSString var19 = Class158_Sub1.aStringArray2977[var18]; + if (-1 + var17 > var18) { + var19.method1553(-4 + var19.length()); + } + + var16.method1003(var19, var12, var13, var15); + var13 += var16.method998(); + } + } + } + } + + } + } catch (RuntimeException var20) { + throw ClientErrorException.clientError(var20, "cn.B(" + var0 + ',' + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + var5 + ',' + var6 + ',' + var7 + ',' + var8 + ')'); + } + } + + static void method112(byte var0) { + try { + if (null == Class158.aByteArrayArrayArray2008) { + Class158.aByteArrayArrayArray2008 = new byte[4][104][104]; + } + + for (int var2 = 0; var2 < 4; ++var2) { + for (int var3 = 0; var3 < 104; ++var3) { + for (int var4 = 0; 104 > var4; ++var4) { + Class158.aByteArrayArrayArray2008[var2][var3][var4] = var0; + } + } + } + + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "cn.A(" + var0 + ',' + (byte) 55 + ')'); + } + } + + static void method114(int var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9) { + try { + + if (var8 == var9 && var3 == var7 && var5 == var4 && var1 == var6) { + GameObject.method1869((byte) 84, var2, var6, var7, var5, var9); + } else { + int var11 = var7; + int var10 = var9; + int var12 = var9 * 3; + int var13 = 3 * var7; + int var14 = var8 * 3; + int var15 = var3 * 3; + int var16 = var4 * 3; + int var17 = var1 * 3; + int var18 = var5 + -var16 + var14 + -var9; + int var19 = -var7 + var6 - (var17 + -var15); + int var20 = var12 + -var14 + -var14 + var16; + int var21 = var13 + -var15 + var17 + -var15; + int var22 = -var12 + var14; + int var23 = var15 + -var13; + + for (int var24 = 128; var24 <= 4096; var24 += 128) { + int var25 = var24 * var24 >> 12; + int var26 = var24 * var25 >> 12; + int var28 = var19 * var26; + int var29 = var25 * var20; + int var27 = var18 * var26; + int var30 = var25 * var21; + int var31 = var22 * var24; + int var32 = var23 * var24; + int var33 = (var31 + (var27 - -var29) >> 12) + var9; + int var34 = var7 + (var32 + var28 + var30 >> 12); + GameObject.method1869((byte) -119, var2, var34, var11, var33, var10); + var10 = var33; + var11 = var34; + } + } + + } catch (RuntimeException var35) { + throw ClientErrorException.clientError(var35, "cn.O(" + 3 + ',' + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + var5 + ',' + var6 + ',' + var7 + ',' + var8 + ',' + var9 + ')'); + } + } + + static int method115(boolean var0) { + try { + long var2 = TimeUtils.time(); + + for (Class3_Sub7 var4 = !var0 ? (Class3_Sub7) AtmosphereParser.aHashTable_3679.next() : (Class3_Sub7) AtmosphereParser.aHashTable_3679.first(); var4 != null; var4 = (Class3_Sub7) AtmosphereParser.aHashTable_3679.next()) { + if ((4611686018427387903L & var4.aLong2295) < var2) { + if ((4611686018427387904L & var4.aLong2295) != 0) { + int var5 = (int) var4.linkableKey; + ItemDefinition.ram[var5] = Class57.varpArray[var5]; + SystemLogger.logVerbose("Reading value " + Class57.varpArray[var5] + " from varp " + var5); + var4.unlink(); + return var5; + } + + var4.unlink(); + } + } + + return -1; + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "cn.F(" + var0 + ',' + -1 + ')'); + } + } + + static void method116(boolean var0) { + try { + int var2 = Class159.localPlayerCount; + if (Class65.anInt987 == Class102.player.xAxis >> 7 && Class45.anInt733 == Class102.player.yAxis >> 7) { + Class65.anInt987 = 0; + } + + if (var0) { + var2 = 1; + } + + int var3; + Player var4; + int var7; + int var8; + int var9; + int var10; + int var11; + for (var3 = 0; var3 < var2; ++var3) { + if (var0) { + var4 = Class102.player; + } else { + var4 = Unsorted.players[Class56.localPlayerIndexes[var3]]; + } + + if (null != var4 && var4.hasDefinitions()) { + int var5 = var4.getSize(); + int var6; + if (var5 == 1) { + if ((127 & var4.xAxis) == 64 && 64 == (127 & var4.yAxis)) { + var6 = var4.xAxis >> 7; + var7 = var4.yAxis >> 7; + if (var6 >= 0 && var6 < 104 && var7 >= 0 && var7 < 104) { + ++Class163_Sub1_Sub1.anIntArrayArray4010[var6][var7]; + } + } + } else if (((1 & var5) != 0 || (var4.xAxis & 127) == 0 && (127 & var4.yAxis) == 0) && ((1 & var5) != 1 || (var4.xAxis & 127) == 64 && (127 & var4.yAxis) == 64)) { + var6 = var4.xAxis + -(var5 * 64) >> 7; + var7 = var4.yAxis + -(var5 * 64) >> 7; + var8 = var4.getSize() + var6; + if (104 < var8) { + var8 = 104; + } + + if (var6 < 0) { + var6 = 0; + } + + var9 = var7 + var4.getSize(); + if (var7 < 0) { + var7 = 0; + } + + if (var9 > 104) { + var9 = 104; + } + + for (var10 = var6; var8 > var10; ++var10) { + for (var11 = var7; var11 < var9; ++var11) { + ++Class163_Sub1_Sub1.anIntArrayArray4010[var10][var11]; + } + } + } + } + } + + label226: + for (var3 = 0; var3 < var2; ++var3) { + long var16; + if (var0) { + var4 = Class102.player; + var16 = 8791798054912L; + } else { + var4 = Unsorted.players[Class56.localPlayerIndexes[var3]]; + var16 = (long) Class56.localPlayerIndexes[var3] << 32; + } + + if (var4 != null && var4.hasDefinitions()) { + var4.aBoolean3968 = (RSInterface.aBoolean236 && Class159.localPlayerCount > 200 || 50 < Class159.localPlayerCount) && !var0 && var4.anInt2764 == var4.getRenderAnimationType().stand_animation; + + var7 = var4.getSize(); + if (var7 == 1) { + if (64 == (127 & var4.xAxis) && (127 & var4.yAxis) == 64) { + var8 = var4.xAxis >> 7; + var9 = var4.yAxis >> 7; + if (var8 < 0 || var8 >= 104 || var9 < 0 || 104 <= var9) { + continue; + } + + if (Class163_Sub1_Sub1.anIntArrayArray4010[var8][var9] > 1) { + --Class163_Sub1_Sub1.anIntArrayArray4010[var8][var9]; + continue; + } + } + } else if ((1 & var7) == 0 && (127 & var4.xAxis) == 0 && (var4.yAxis & 127) == 0 || 1 == (1 & var7) && (127 & var4.xAxis) == 64 && (var4.yAxis & 127) == 0) { + var8 = var4.xAxis + -(64 * var7) >> 7; + var10 = var7 + var8; + var9 = -(var7 * 64) + var4.yAxis >> 7; + if (var10 > 104) { + var10 = 104; + } + + if (0 > var8) { + var8 = 0; + } + + var11 = var7 + var9; + if (var9 < 0) { + var9 = 0; + } + + boolean var12 = true; + if (var11 > 104) { + var11 = 104; + } + + int var13; + int var14; + for (var13 = var8; var10 > var13; ++var13) { + for (var14 = var9; var14 < var11; ++var14) { + if (Class163_Sub1_Sub1.anIntArrayArray4010[var13][var14] <= 1) { + var12 = false; + break; + } + } + } + + if (var12) { + var13 = var8; + + while (true) { + if (var10 <= var13) { + continue label226; + } + + for (var14 = var9; var14 < var11; ++var14) { + --Class163_Sub1_Sub1.anIntArrayArray4010[var13][var14]; + } + + ++var13; + } + } + } + + if (null != var4.anObject2796 && var4.anInt2797 <= Class44.anInt719 && Class44.anInt719 < var4.anInt2778) { + var4.aBoolean3968 = false; + var4.anInt2831 = Scenery.sceneryPositionHash(WorldListCountry.localPlane, 1, var4.xAxis, var4.yAxis); + TextureOperation28.method292(WorldListCountry.localPlane, var4.xAxis, var4.yAxis, var4.anInt2831, var4, var4.anInt2785, var16, var4.anInt2788, var4.anInt2777, var4.anInt2818, var4.anInt2817); + } else { + var4.anInt2831 = Scenery.sceneryPositionHash(WorldListCountry.localPlane, 1, var4.xAxis, var4.yAxis); + Class20.method907(WorldListCountry.localPlane, var4.xAxis, var4.yAxis, var4.anInt2831, 64 * (var7 - 1) + 60, var4, var4.anInt2785, var16, var4.aBoolean2810); + } + } + } + + } catch (RuntimeException var15) { + throw ClientErrorException.clientError(var15, "cn.C(" + var0 + ',' + 670232012 + ')'); + } + } + + static void method117() { + try { + if (0 > Class3_Sub28_Sub1.anInt3536) { + TextureOperation13.anInt3362 = -1; + Class3_Sub28_Sub1.anInt3536 = 0; + Texture.anInt1150 = -1; + } + + if (Class23.anInt455 < Class3_Sub28_Sub1.anInt3536) { + TextureOperation13.anInt3362 = -1; + Class3_Sub28_Sub1.anInt3536 = Class23.anInt455; + Texture.anInt1150 = -1; + } + + if (Scenery.anInt2251 < 0) { + Texture.anInt1150 = -1; + TextureOperation13.anInt3362 = -1; + Scenery.anInt2251 = 0; + } + + if (Class108.anInt1460 < Scenery.anInt2251) { + Scenery.anInt2251 = Class108.anInt1460; + TextureOperation13.anInt3362 = -1; + Texture.anInt1150 = -1; + } + + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "cn.E(" + (byte) 87 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class3_Sub6.java b/Client/src/main/java/org/runite/client/Class3_Sub6.java new file mode 100644 index 000000000..da647c14f --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class3_Sub6.java @@ -0,0 +1,32 @@ +package org.runite.client; + +import org.rs09.client.Linkable; + +final class Class3_Sub6 extends Linkable { + + + static byte[][] softReferenceTestArray; + static int[] expectedMinimumValues = new int[32]; + static int anInt2291; + + static { + int accumulator = 2; + + for (int i = 0; i < 32; ++i) { + expectedMinimumValues[i] = -1 + accumulator; + accumulator += accumulator; + } + + anInt2291 = 1; + } + + byte[] aByteArray2289; + + Class3_Sub6(byte[] var1) { + try { + this.aByteArray2289 = var1; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "ea.(" + (var1 != null ? "{...}" : "null") + ')'); + } + } +} diff --git a/Client/src/main/java/org/runite/client/Class3_Sub7.java b/Client/src/main/java/org/runite/client/Class3_Sub7.java new file mode 100644 index 000000000..c8e0228cb --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class3_Sub7.java @@ -0,0 +1,63 @@ +package org.runite.client; + +import org.rs09.client.Linkable; + +final class Class3_Sub7 extends Linkable { + + static int[] anIntArray2292 = new int[1000]; + static int viewportY; + long aLong2295; + + + static int method121(int var0, int var1, int var2, int var3, int var4, int var6) { + try { + if ((var2 & 1) == 1) { + int var7 = var4; + var4 = var3; + var3 = var7; + } + + var1 &= 3; + return 0 != var1 ? (var1 != 1 ? (var1 != 2 ? -var0 + 7 + 1 + -var3 : -var6 + (7 - (var4 + -1))) : var0) : var6; + } catch (RuntimeException var8) { + throw ClientErrorException.clientError(var8, "eb.A(" + var0 + ',' + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + 1 + ',' + var6 + ')'); + } + } + + static void method122(int var0) { + try { + GameObject.interfaces1834 = new RSInterface[Unsorted.interfacesIndex_3361.method2121()][]; + Unsorted.aBooleanArray1703 = new boolean[Unsorted.interfacesIndex_3361.method2121()]; + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "eb.D(" + var0 + ')'); + } + } + + static RSString itemStackColor(int var0, int var1) { + try { + if (100000 > var1) { + return RSString.stringCombiner(new RSString[]{ColorCore.DefaultStackColor, RSString.stringAnimator(var1), TextCore.aString_1076}); + } else { + if (var0 != 1000) { + itemStackColor(-54, 54); + } + + return var1 >= 10000000 ? RSString.stringCombiner(new RSString[]{ColorCore.MillionStackColor, RSString.stringAnimator(var1 / 1000000), TextCore.MillionM, TextCore.aString_1076}) : RSString.stringCombiner(new RSString[]{ColorCore.ThousandStackColor, RSString.stringAnimator(var1 / 1000), TextCore.ThousandK, TextCore.aString_1076}); + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "eb.C(" + var0 + ',' + var1 + ')'); + } + } + + public Class3_Sub7() { + } + + Class3_Sub7(long var1) { + try { + this.aLong2295 = var1; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "eb.(" + var1 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class3_Sub8.java b/Client/src/main/java/org/runite/client/Class3_Sub8.java new file mode 100644 index 000000000..7ba7c9dcb --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class3_Sub8.java @@ -0,0 +1,131 @@ +package org.runite.client; + +import org.rs09.client.Linkable; +import org.rs09.client.config.GameConfig; + + +import java.util.Objects; + +final class Class3_Sub8 extends Linkable { + + int anInt2296; + Class64[] aClass64Array2298; + int[] anIntArray2299; + int[] anIntArray2300; + int[] anIntArray2301; + byte[][][] aByteArrayArrayArray2302; + Class64[] aClass64Array2303; + int anInt2305; + + + static void method124(int var0, int var1, int var2) { + try { + if(var0 <= 23) { + TextCore.aString_2306 = null; + } + + if(Unsorted.loadInterface(var2)) { + Unsorted.method75(GameObject.interfaces1834[var2], var1); + } + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "ed.A(" + var0 + ',' + var1 + ',' + var2 + ')'); + } + } + + static void method126(boolean var0, int var1, int var2, int var3, int var4) { + try { + if(!var0) { + if(Class101.anInt1425 <= var4 && var4 <= Class3_Sub28_Sub18.anInt3765) { + var2 = Class40.method1040(Class57.anInt902, var2, Class159.anInt2020); + var1 = Class40.method1040(Class57.anInt902, var1, Class159.anInt2020); + TextureOperation15.method244(var2, var4, var1, var3); + } + + } + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "ed.F(" + ',' + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ')'); + } + } + + static void method127(short[] var0, int var1, RSString[] var2, int var4) { + try { + if(var4 < var1) { + int var6 = var4; + int var5 = (var4 - -var1) / 2; + RSString var7 = var2[var5]; + var2[var5] = var2[var1]; + var2[var1] = var7; + short var8 = var0[var5]; + var0[var5] = var0[var1]; + var0[var1] = var8; + + for(int var9 = var4; var9 < var1; ++var9) { + if(var7 == null || null != var2[var9] && var2[var9].method1559(var7) < (var9 & 1)) { + RSString var10 = var2[var9]; + var2[var9] = var2[var6]; + var2[var6] = var10; + short var11 = var0[var9]; + var0[var9] = var0[var6]; + var0[var6++] = var11; + } + } + + var2[var1] = var2[var6]; + var2[var6] = var7; + var0[var1] = var0[var6]; + var0[var6] = var8; + method127(var0, -1 + var6, var2, var4); + method127(var0, var1, var2, var6 - -1); + } + + } catch (RuntimeException var12) { + throw ClientErrorException.clientError(var12, "ed.E(" + (var0 != null?"{...}":"null") + ',' + var1 + ',' + (var2 != null?"{...}":"null") + ',' + -909 + ',' + var4 + ')'); + } + } + + static void method128() { + try { + Class44.aReferenceCache_725.clear(); + + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "ed.O(" + 2 + ')'); + } + } + + static int method129(int var0, int var2, int var3) { + try { + + if(var0 <= 243) { + if(var0 > 217) { + var2 >>= 3; + } else if(var0 <= 192) { + if(179 < var0) { + var2 >>= 1; + } + } else { + var2 >>= 2; + } + } else { + var2 >>= 4; + } + + return (var0 >> 1) + (var2 >> 5 << 7) + (var3 >> 2 << 10); + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "ed.D(" + var0 + ',' + 2 + ',' + var2 + ',' + var3 + ')'); + } + } + + static WorldListEntry getWorld(int var0, int index) { + try { + if(Class30.loadedWorldList && Class53.worldListOffset <= index && WorldListEntry.worldListArraySize >= index) { + GameConfig.WORLD = index; + return WorldListEntry.worldList[index - Class53.worldListOffset]; + } else { + return null; + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "ed.P(" + var0 + ',' + index + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class3_Sub9.java b/Client/src/main/java/org/runite/client/Class3_Sub9.java new file mode 100644 index 000000000..7d712a37f --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class3_Sub9.java @@ -0,0 +1,150 @@ +package org.runite.client; + +import org.rs09.client.Linkable; + +final class Class3_Sub9 extends Linkable { + + int anInt2307; + int anInt2308; + int anInt2310; + Class3_Sub24_Sub1 aClass3_Sub24_Sub1_2312; + int anInt2314; + Class3_Sub24_Sub1 aClass3_Sub24_Sub1_2315; + int anInt2316; + static Class64 aClass64_2318; + ObjectDefinition aClass111_2320; + int anInt2321; + int anInt2322 = 0; + NPC aEntity_Sub2_2324; + int anInt2325; + int anInt2326; + Player aEntity_Sub1_2327; + int anInt2328; + boolean aBoolean2329; + int anInt2332; + int[] anIntArray2333; + + + static Class3_Sub28_Sub5 method133(int var0) { + try { + Class3_Sub28_Sub5 var2 = (Class3_Sub28_Sub5) Class159.aReferenceCache_2016.get(var0); + if (var2 == null) { + var2 = Unsorted.method1089(Class131.skeletonsReferenceIndex, Class7.skinsReferenceIndex, var0); + if (null != var2) { + Class159.aReferenceCache_2016.put(var2, var0); + } + + } + return var2; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "fl.B(" + var0 + ',' + 0 + ')'); + } + } + + final void method134() { + try { + int var2 = this.anInt2332; + if (null != this.aClass111_2320) { + ObjectDefinition var3 = this.aClass111_2320.method1685(0); + if (var3 == null) { + this.anInt2332 = -1; + this.anIntArray2333 = null; + this.anInt2325 = 0; + this.anInt2328 = 0; + this.anInt2310 = 0; + } else { + this.anInt2325 = var3.anInt1515; + this.anInt2332 = var3.anInt1512; + this.anInt2310 = var3.anInt1518; + this.anInt2328 = var3.anInt1484 * 128; + this.anIntArray2333 = var3.anIntArray1539; + } + } else if (this.aEntity_Sub2_2324 == null) { + if (null != this.aEntity_Sub1_2327) { + this.anInt2332 = Class81.method1398(this.aEntity_Sub1_2327); + this.anInt2328 = 128 * this.aEntity_Sub1_2327.anInt3969; + } + } else { + int var6 = Class70.method1232(this.aEntity_Sub2_2324); + if (var2 != var6) { + NPCDefinition var4 = this.aEntity_Sub2_2324.definition; + this.anInt2332 = var6; + if (var4.childNPCs != null) { + var4 = var4.method1471((byte) -87); + } + + if (var4 == null) { + this.anInt2328 = 0; + } else { + this.anInt2328 = var4.anInt1291 * 128; + } + } + } + + if (this.anInt2332 != var2 && this.aClass3_Sub24_Sub1_2312 != null) { + Class3_Sub26.aClass3_Sub24_Sub2_2563.method461(this.aClass3_Sub24_Sub1_2312); + this.aClass3_Sub24_Sub1_2312 = null; + } + + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "fl.A(" + 1 + ')'); + } + } + + static void method135(int var0, int var1, int var2, int var4, int var5) { + try { + TextureOperation18.method282(Class38.anIntArrayArray663[var0], var1 - var2, -76, var2 + var1, var5); + int var6 = 0; + int var8 = var2 * var2; + int var9 = var4 * var4; + int var7 = var4; + int var10 = var9 << 1; + int var11 = var8 << 1; + int var12 = var4 << 1; + int var13 = var10 + (1 + -var12) * var8; + int var14 = var9 - var11 * (var12 - 1); + int var15 = var8 << 2; + + int var16 = var9 << 2; + int var17 = var10 * (3 + (var6 << 1)); + int var18 = var11 * ((var4 << 1) + -3); + int var19 = (1 + var6) * var16; + int var20 = var15 * (var4 - 1); + + while (var7 > 0) { + --var7; + int var22 = var7 + var0; + int var21 = var0 - var7; + if (var13 < 0) { + while (var13 < 0) { + ++var6; + var13 += var17; + var14 += var19; + var19 += var16; + var17 += var16; + } + } + + if (var14 < 0) { + var13 += var17; + var17 += var16; + var14 += var19; + ++var6; + var19 += var16; + } + + int var23 = var6 + var1; + var14 += -var18; + var18 -= var15; + var13 += -var20; + int var24 = var1 + -var6; + var20 -= var15; + TextureOperation18.method282(Class38.anIntArrayArray663[var21], var24, -110, var23, var5); + TextureOperation18.method282(Class38.anIntArrayArray663[var22], var24, 112, var23, var5); + } + + } catch (RuntimeException var25) { + throw ClientErrorException.clientError(var25, "fl.C(" + var0 + ',' + var1 + ',' + var2 + ',' + -111 + ',' + var4 + ',' + var5 + ')'); + } + } +} diff --git a/Client/src/main/java/org/runite/client/Class40.java b/Client/src/main/java/org/runite/client/Class40.java new file mode 100644 index 000000000..f6cb395c5 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class40.java @@ -0,0 +1,979 @@ +package org.runite.client; + +import org.rs09.client.config.GameConfig; +import org.runite.client.drawcalls.LoadingBox; + +public final class Class40 { + + static RSString aString_672 = RSString.parse("null"); + static int[] anIntArray675 = new int[]{16, 32, 64, 128}; + static int anInt677 = 0; + static CacheIndex soundFXIndex_679; + public static AbstractSprite aAbstractSprite_680; + static byte[][] aByteArrayArray3669; + static byte[][] aByteArrayArray3057; + static int anInt3293 = 0; + + + static int method1040(int var0, int var1, int var3) { + try { + return var1 < var3 ? var3 : var1 > var0 ? var0 : var1; + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "gd.C(" + var0 + ',' + var1 + ',' + (byte) 0 + ',' + var3 + ')'); + } + } + + static void method1041(long var0, RSString name) { + try { + // System.out.println("Class 40 " + var0 + ", " + var2 + ", " + name.toString()); + TextureOperation12.outgoingBuffer.index = 0; + TextureOperation12.outgoingBuffer.writeByte(186); + TextureOperation12.outgoingBuffer.writeString(name); + // Class3_Sub13_Sub1.outgoingBuffer.putLong(var0, var2 + -2037463204); + Unsorted.registryStage = 1; + Class132.anInt1734 = 0; + GraphicDefinition.anInt548 = 0; + Unsorted.anInt1711 = -3; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "gd.D(" + var0 + ',' + -28236 + ')'); + } + } + + static SoftwareSprite method1043(int var0, CacheIndex var1, int archiveId) { + try { + // System.out.println("Class 40 " + archiveId); + return Class75_Sub4.method1351(var1, var0, archiveId) ? Class117.method1722(-53) : null; + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "gd.G(" + var0 + ',' + (var1 != null ? "{...}" : "null") + ',' + -3178 + ',' + archiveId + ')'); + } + } + + static void method1045() { + try { + + Class128.aReferenceCache_1683.clear(); + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "gd.B(" + -19761 + ')'); + } + } + + static void method1046() { + try { + Class163_Sub1.ping(false); + anInt3293 = 0; + boolean var1 = true; + + int var2; + for (var2 = 0; Class164_Sub2.aByteArrayArray3027.length > var2; ++var2) { + if (Client.anIntArray2200[var2] != -1 && null == Class164_Sub2.aByteArrayArray3027[var2]) { + Class164_Sub2.aByteArrayArray3027[var2] = CacheIndex.landscapesIndex.getFile(Client.anIntArray2200[var2], 0); + if (Class164_Sub2.aByteArrayArray3027[var2] == null) { + ++anInt3293; + var1 = false; + } + } + + if (-1 != Class101.anIntArray1426[var2] && null == Class3_Sub22.aByteArrayArray2521[var2]) { + Class3_Sub22.aByteArrayArray2521[var2] = CacheIndex.landscapesIndex.getFile(Class101.anIntArray1426[var2], 0, Class39.regionXteaKeys[var2]); + if (null == Class3_Sub22.aByteArrayArray2521[var2]) { + var1 = false; + ++anInt3293; + } + } + + if (HDToolKit.highDetail) { + if (TextureOperation17.anIntArray3181[var2] != -1 && aByteArrayArray3669[var2] == null) { + aByteArrayArray3669[var2] = CacheIndex.landscapesIndex.getFile(TextureOperation17.anIntArray3181[var2], 0); + if (null == aByteArrayArray3669[var2]) { + var1 = false; + ++anInt3293; + } + } + + if (Class3_Sub28_Sub5.anIntArray3587[var2] != -1 && null == aByteArrayArray3057[var2]) { + aByteArrayArray3057[var2] = CacheIndex.landscapesIndex.getFile(Class3_Sub28_Sub5.anIntArray3587[var2], 0); + if (null == aByteArrayArray3057[var2]) { + ++anInt3293; + var1 = false; + } + } + } + + if (null != NPC.npcSpawnCacheIndices && null == TextureOperation35.aByteArrayArray3335[var2] && NPC.npcSpawnCacheIndices[var2] != -1) { + TextureOperation35.aByteArrayArray3335[var2] = CacheIndex.landscapesIndex.getFile(NPC.npcSpawnCacheIndices[var2], 0, Class39.regionXteaKeys[var2]); + if (TextureOperation35.aByteArrayArray3335[var2] == null) { + ++anInt3293; + var1 = false; + } + } + } + + if (TextureOperation22.aClass131_3421 == null) { + if (null != TextureOperation37.aClass3_Sub28_Sub3_3264 && CacheIndex.worldmapIndex.method2135(RSString.stringCombiner(new RSString[]{TextureOperation37.aClass3_Sub28_Sub3_3264.aString_3561, TextCore.HasPlayerLabels}))) { + if (CacheIndex.worldmapIndex.method2127(RSString.stringCombiner(new RSString[]{TextureOperation37.aClass3_Sub28_Sub3_3264.aString_3561, TextCore.HasPlayerLabels}))) { + TextureOperation22.aClass131_3421 = Class81.getWorldMapArchive(RSString.stringCombiner(new RSString[]{TextureOperation37.aClass3_Sub28_Sub3_3264.aString_3561, TextCore.HasPlayerLabels}), CacheIndex.worldmapIndex); + } else { + var1 = false; + ++anInt3293; + } + } else { + TextureOperation22.aClass131_3421 = new Class131(0); + } + } + + if (var1) { + Class162.anInt2038 = 0; + var1 = true; + + int var4; + int var5; + for (var2 = 0; var2 < Class164_Sub2.aByteArrayArray3027.length; ++var2) { + byte[] var3 = Class3_Sub22.aByteArrayArray2521[var2]; + if (null != var3) { + var5 = -Texture.y1152 + (Class3_Sub24_Sub3.regionIds[var2] & 0xFF) * 64; + var4 = -Class131.x1716 + (Class3_Sub24_Sub3.regionIds[var2] >> 8) * 64; + if (LinkableRSString.isDynamicSceneGraph) { + var5 = 10; + var4 = 10; + } + + var1 &= Class24.isValidObjectMapping((byte) -97, var4, var5, var3); + } + + if (HDToolKit.highDetail) { + var3 = aByteArrayArray3057[var2]; + if (null != var3) { + var4 = -Class131.x1716 + 64 * (Class3_Sub24_Sub3.regionIds[var2] >> 8); + var5 = -Texture.y1152 + 64 * (Class3_Sub24_Sub3.regionIds[var2] & 0xFF); + if (LinkableRSString.isDynamicSceneGraph) { + var5 = 10; + var4 = 10; + } + + var1 &= Class24.isValidObjectMapping((byte) -74, var4, var5, var3); + } + } + } + + if (var1) { + if (Class163_Sub2_Sub1.anInt4019 != 0) { + LoadingBox.draw(true, RSString.stringCombiner(new RSString[]{TextCore.LoadingPleaseWait2, TextCore.aString_2707})); + } + + Class58.method1194(); + TextureOperation13.method313((byte) 58); + boolean var11 = false; + int var12; + if (HDToolKit.highDetail && Class128.aBoolean1685) { + for (var12 = 0; var12 < Class164_Sub2.aByteArrayArray3027.length; ++var12) { + if (null != aByteArrayArray3057[var12] || aByteArrayArray3669[var12] != null) { + var11 = true; + break; + } + } + } + + Scenery.initializeScene(HDToolKit.highDetail ? GameConfig.RENDER_DISTANCE_TILE_VALUE : 25, var11); + + for (var12 = 0; 4 > var12; ++var12) { + AtmosphereParser.aClass91Array1182[var12].method1496(); + } + + for (var12 = 0; var12 < 4; ++var12) { + for (var4 = 0; var4 < 104; ++var4) { + for (var5 = 0; var5 < 104; ++var5) { + Unsorted.sceneryTypeMaskGrid[var12][var4][var5] = 0; + } + } + } + + Class164_Sub1.method2241((byte) -115, false); + if (HDToolKit.highDetail) { + Class141.aClass109_Sub1_1840.method1671(); + + for (var12 = 0; var12 < 13; ++var12) { + for (var4 = 0; var4 < 13; ++var4) { + Class141.aClass169ArrayArray1841[var12][var4].aBoolean2106 = true; + } + } + } + + if (HDToolKit.highDetail) { + Class68.method1279(); + } + + if (HDToolKit.highDetail) { + Class39.method1036(); + } + + Class58.method1194(); + System.gc(); + Class163_Sub1.ping(true); + Class117.method1720(false, 105); + if (!LinkableRSString.isDynamicSceneGraph) { + Unsorted.method1091(false, -93); + Class163_Sub1.ping(true); + if (HDToolKit.highDetail) { + var12 = Class102.player.xOffsets2767[0] >> 3; + var4 = Class102.player.yOffsets2755[0] >> 3; + TextureOperation1.method220(var4, var12); + } + + TextureOperation26.method198(false); + if (null != TextureOperation35.aByteArrayArray3335) { + TextureOperation37.displayNPCOnLoginRegion(); + } + } + + if (LinkableRSString.isDynamicSceneGraph) { + Class49.method1121(false, (byte) 98); + Class163_Sub1.ping(true); + if (HDToolKit.highDetail) { + var12 = Class102.player.xOffsets2767[0] >> 3; + var4 = Class102.player.yOffsets2755[0] >> 3; + TextureOperation1.method220(var4, var12); + } + + Class163_Sub2_Sub1.method2223(false, (byte) -121); + } + + TextureOperation13.method313((byte) 90); + Class163_Sub1.ping(true); + method2189(AtmosphereParser.aClass91Array1182, false, 66); + if (HDToolKit.highDetail) { + Class68.method1270(); + } + + Class163_Sub1.ping(true); + var12 = Class85.anInt1174; + if (var12 > WorldListCountry.localPlane) { + var12 = WorldListCountry.localPlane; + } + + if (WorldListCountry.localPlane + -1 > var12) { + } + + if (NPC.isHighDetail(39)) { + Class85.method1425(0); + } else { + Class85.method1425(Class85.anInt1174); + } + + Class56.method1188(); + if (HDToolKit.highDetail && var11) { + Class167.method2264(true); + Class117.method1720(true, 105); + if (!LinkableRSString.isDynamicSceneGraph) { + Unsorted.method1091(true, -121); + Class163_Sub1.ping(true); + TextureOperation26.method198(true); + } + + if (LinkableRSString.isDynamicSceneGraph) { + Class49.method1121(true, (byte) 56); + Class163_Sub1.ping(true); + Class163_Sub2_Sub1.method2223(true, (byte) -105); + } + + TextureOperation13.method313((byte) 102); + Class163_Sub1.ping(true); + method2189(AtmosphereParser.aClass91Array1182, true, 112); + Class163_Sub1.ping(true); + Class56.method1188(); + Class167.method2264(false); + } + + if (HDToolKit.highDetail) { + for (var4 = 0; var4 < 13; ++var4) { + for (var5 = 0; var5 < 13; ++var5) { + Class141.aClass169ArrayArray1841[var4][var5].method2281(Class44.anIntArrayArrayArray723[0], var4 * 8, var5 * 8); + } + } + } + + for (var4 = 0; var4 < 104; ++var4) { + for (var5 = 0; 104 > var5; ++var5) { + Class128.method1760(var5, var4); + } + } + + Unsorted.method792(); + Class58.method1194(); + method318(); + TextureOperation13.method313((byte) 100); + TextureOperation25.aBoolean3416 = false; + if (GameShell.frame != null && null != Class3_Sub15.activeConnection && 25 == Class143.gameStage) { + TextureOperation12.outgoingBuffer.putOpcode(20); + TextureOperation12.outgoingBuffer.writeInt(1057001181); + } + + if (!LinkableRSString.isDynamicSceneGraph) { + int var7 = (Class3_Sub7.viewportY + 6) / 8; + int var6 = (Class3_Sub7.viewportY - 6) / 8; + var4 = (Unsorted.viewportX - 6) / 8; + var5 = (Unsorted.viewportX - -6) / 8; + + for (int var8 = var4 - 1; var5 - -1 >= var8; ++var8) { + for (int var9 = -1 + var6; var7 - -1 >= var9; ++var9) { + if (var4 > var8 || var8 > var5 || var6 > var9 || var9 > var7) { + CacheIndex.landscapesIndex.method2124(-124, RSString.stringCombiner(new RSString[]{RSString.parse("m"), RSString.stringAnimator(var8), RSString.parse("_"), RSString.stringAnimator(var9)})); + CacheIndex.landscapesIndex.method2124(-123, RSString.stringCombiner(new RSString[]{RSString.parse("l"), RSString.stringAnimator(var8), RSString.parse("_"), RSString.stringAnimator(var9)})); + } + } + } + } + + if (Class143.gameStage == 28) { + Class117.method1719(10); + } else { + Class117.method1719(30); + if (null != Class3_Sub15.activeConnection) { + TextureOperation12.outgoingBuffer.putOpcode(110); + } + } + + Class3_Sub20.method388((byte) 116); + Class58.method1194(); + Class75_Sub4.method1355(); + } else { + Class163_Sub2_Sub1.anInt4019 = 2; + } + } else { + Class163_Sub2_Sub1.anInt4019 = 1; + } + } catch (RuntimeException var10) { + throw ClientErrorException.clientError(var10, "gd.F(" + -117 + ')'); + } + } + + static void method318() { + try { + Scenery var1 = (Scenery) Scenery.sceneryList.startIteration(); + + for (; null != var1; var1 = (Scenery) Scenery.sceneryList.nextIteration()) { + if (var1.anInt2259 == -1) { + var1.anInt2261 = 0; + Scenery.method1798(56, var1); + } else { + var1.unlink(); + } + } + + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "rl.B(" + 7759444 + ')'); + } + } + + static void method2189(Class91[] var0, boolean var1, int var2) { + try { + int var4; + int var5; + if (!var1) { + for (var4 = 0; var4 < 4; ++var4) { + for (var5 = 0; var5 < 104; ++var5) { + for (int var6 = 0; var6 < 104; ++var6) { + if ((1 & Unsorted.sceneryTypeMaskGrid[var4][var5][var6]) == 1) { + int var7 = var4; + if ((2 & Unsorted.sceneryTypeMaskGrid[1][var5][var6]) == 2) { + var7 = var4 - 1; + } + + if (var7 >= 0) { + var0[var7].method1497(var6, var5); + } + } + } + } + } + + Class158_Sub1.anInt1463 += (int) (Math.random() * 5.0D) - 2; + if (Class158_Sub1.anInt1463 < -16) { + Class158_Sub1.anInt1463 = -16; + } + + if (Class158_Sub1.anInt1463 > 16) { + Class158_Sub1.anInt1463 = 16; + } + + Class158_Sub1.anInt3158 += (int) (Math.random() * 5.0D) - 2; + if (-8 > Class158_Sub1.anInt3158) { + Class158_Sub1.anInt3158 = -8; + } + + if (Class158_Sub1.anInt3158 > 8) { + Class158_Sub1.anInt3158 = 8; + } + } + + byte var3; + if (var1) { + var3 = 1; + } else { + var3 = 4; + } + + var4 = Class158_Sub1.anInt3158 >> 2 << 10; + int[][] var34 = new int[104][104]; + int[][] var35 = new int[104][104]; + var5 = Class158_Sub1.anInt1463 >> 1; + + int var8; + int var10; + int var11; + int var13; + int var14; + int var15; + int var16; + int var19; + int var18; + int var20; + int var37; + int var44; + for (var8 = 0; var3 > var8; ++var8) { + byte[][] var9 = Class67.aByteArrayArrayArray1014[var8]; + int var21; + int var23; + int var22; + int var24; + if (HDToolKit.highDetail) { + if (Class106.aBoolean1441) { + for (var10 = 1; var10 < 103; ++var10) { + for (var11 = 1; var11 < 103; ++var11) { + var13 = (var9[1 + var11][var10] >> 3) + (var9[-1 + var11][var10] >> 2) - -(var9[var11][-1 + var10] >> 2) - -(var9[var11][1 + var10] >> 3) - -(var9[var11][var10] >> 1); + byte var12 = 74; + var35[var11][var10] = -var13 + var12; + } + } + } else { + var10 = (int) Class92.light0Position[0]; + var11 = (int) Class92.light0Position[1]; + var37 = (int) Class92.light0Position[2]; + var13 = (int) Math.sqrt(var11 * var11 + (var10 * var10 - -(var37 * var37))); + var14 = 1024 * var13 >> 8; + + for (var15 = 1; var15 < 103; ++var15) { + for (var16 = 1; var16 < 103; ++var16) { + byte var17 = 96; + var18 = Class44.anIntArrayArrayArray723[var8][var16 - -1][var15] - Class44.anIntArrayArrayArray723[var8][-1 + var16][var15]; + var19 = Class44.anIntArrayArrayArray723[var8][var16][var15 + 1] - Class44.anIntArrayArrayArray723[var8][var16][-1 + var15]; + var20 = (int) Math.sqrt(var18 * var18 + 65536 + var19 * var19); + var21 = (var18 << 8) / var20; + var24 = (var9[var16][1 + var15] >> 3) + (var9[var16][var15 - 1] >> 2) + ((var9[var16 - 1][var15] >> 2) + (var9[var16 + 1][var15] >> 3) - -(var9[var16][var15] >> 1)); + var22 = -65536 / var20; + var23 = (var19 << 8) / var20; + var44 = var17 + (var37 * var23 + (var10 * var21 - -(var22 * var11))) / var14; + var35[var16][var15] = var44 + -((int) ((float) var24 * 1.7F)); + } + } + } + } else { + var10 = (int) Math.sqrt(5100.0D); + var11 = 768 * var10 >> 8; + + for (var37 = 1; var37 < 103; ++var37) { + for (var13 = 1; 103 > var13; ++var13) { + var16 = -Class44.anIntArrayArrayArray723[var8][var13][-1 + var37] + Class44.anIntArrayArrayArray723[var8][var13][var37 + 1]; + byte var41 = 74; + var15 = -Class44.anIntArrayArrayArray723[var8][var13 + -1][var37] + Class44.anIntArrayArrayArray723[var8][var13 - -1][var37]; + var44 = (int) Math.sqrt(var15 * var15 - -65536 - -(var16 * var16)); + var20 = (var16 << 8) / var44; + var19 = -65536 / var44; + var18 = (var15 << 8) / var44; + var21 = (var9[var13][var37] >> 1) + (var9[var13][-1 + var37] >> 2) + (var9[var13 - -1][var37] >> 3) + ((var9[var13 - 1][var37] >> 2) - -(var9[var13][var37 + 1] >> 3)); + var14 = var41 + (var20 * -50 + var18 * -50 - -(var19 * -10)) / var11; + var35[var13][var37] = var14 - var21; + } + } + } + + for (var10 = 0; 104 > var10; ++var10) { + Class129.anIntArray1695[var10] = 0; + Unsorted.anIntArray1138[var10] = 0; + Class3_Sub31.anIntArray2606[var10] = 0; + MouseListeningClass.anIntArray1920[var10] = 0; + Unsorted.anIntArray2469[var10] = 0; + } + + for (var10 = -5; var10 < 104; ++var10) { + for (var11 = 0; 104 > var11; ++var11) { + var37 = var10 - -5; + if (var37 < 104) { + var13 = 255 & TextureOperation36.aByteArrayArrayArray3430[var8][var37][var11]; + if (var13 > 0) { + FloorUnderlayDefinition var39 = FloorUnderlayDefinition.method629(-1 + var13); + Class129.anIntArray1695[var11] += var39.anInt1408; + Unsorted.anIntArray1138[var11] += var39.anInt1406; + Class3_Sub31.anIntArray2606[var11] += var39.anInt1417; + MouseListeningClass.anIntArray1920[var11] += var39.anInt1418; + ++Unsorted.anIntArray2469[var11]; + } + } + + var13 = -5 + var10; + if (0 <= var13) { + var14 = 255 & TextureOperation36.aByteArrayArrayArray3430[var8][var13][var11]; + if (var14 > 0) { + FloorUnderlayDefinition var42 = FloorUnderlayDefinition.method629(-1 + var14); + Class129.anIntArray1695[var11] -= var42.anInt1408; + Unsorted.anIntArray1138[var11] -= var42.anInt1406; + Class3_Sub31.anIntArray2606[var11] -= var42.anInt1417; + MouseListeningClass.anIntArray1920[var11] -= var42.anInt1418; + --Unsorted.anIntArray2469[var11]; + } + } + } + + if (var10 >= 0) { + var11 = 0; + var13 = 0; + var37 = 0; + var14 = 0; + var15 = 0; + + for (var16 = -5; var16 < 104; ++var16) { + var44 = var16 - -5; + if (104 > var44) { + var37 += Unsorted.anIntArray1138[var44]; + var15 += Unsorted.anIntArray2469[var44]; + var11 += Class129.anIntArray1695[var44]; + var14 += MouseListeningClass.anIntArray1920[var44]; + var13 += Class3_Sub31.anIntArray2606[var44]; + } + + var18 = var16 + -5; + if (var18 >= 0) { + var37 -= Unsorted.anIntArray1138[var18]; + var14 -= MouseListeningClass.anIntArray1920[var18]; + var11 -= Class129.anIntArray1695[var18]; + var15 -= Unsorted.anIntArray2469[var18]; + var13 -= Class3_Sub31.anIntArray2606[var18]; + } + + if (0 <= var16 && var15 > 0 && var14 != 0) { + var34[var10][var16] = Class3_Sub8.method129(var13 / var15, var37 / var15, 256 * var11 / var14); + } + } + } + } + + for (var10 = 1; var10 < 103; ++var10) { + label754: + for (var11 = 1; var11 < 103; ++var11) { + if (var1 || NPC.isHighDetail(66) || (2 & Unsorted.sceneryTypeMaskGrid[0][var10][var11]) != 0 || (16 & Unsorted.sceneryTypeMaskGrid[var8][var10][var11]) == 0 && PacketParser.method823(var11, var10, -87, var8) == Class140_Sub3.viewportZ) { + if (var8 < Class85.anInt1174) { + Class85.anInt1174 = var8; + } + + var37 = 255 & TextureOperation36.aByteArrayArrayArray3430[var8][var10][var11]; + var13 = Class158_Sub1.aByteArrayArrayArray1828[var8][var10][var11] & 0xFF; + if (0 < var37 || var13 > 0) { + var15 = Class44.anIntArrayArrayArray723[var8][var10 + 1][var11]; + var14 = Class44.anIntArrayArrayArray723[var8][var10][var11]; + var44 = Class44.anIntArrayArrayArray723[var8][var10][1 + var11]; + var16 = Class44.anIntArrayArrayArray723[var8][1 + var10][var11 + 1]; + if (0 < var8) { + boolean var47 = true; + if (var37 == 0 && Unsorted.aByteArrayArrayArray1328[var8][var10][var11] != 0) { + var47 = false; + } + + if (var13 > 0 && !FloorOverlayDefinition.getFile(var13 + -1).aBoolean2102) { + var47 = false; + } + + if (var47 && var14 == var15 && var16 == var14 && var14 == var44) { + Class38_Sub1.anIntArrayArrayArray2609[var8][var10][var11] = TextureOperation3.bitwiseOr(Class38_Sub1.anIntArrayArrayArray2609[var8][var10][var11], 4); + } + } + + if (var37 <= 0) { + var18 = -1; + var19 = 0; + } else { + var18 = var34[var10][var11]; + var20 = (var18 & 127) + var5; + if (var20 >= 0) { + if (var20 > 127) { + var20 = 127; + } + } else { + var20 = 0; + } + + var21 = (896 & var18) + (var18 + var4 & '\ufc00') + var20; + var19 = Class51.anIntArray834[Unsorted.method1100(96, var21)]; + } + + var20 = var35[var10][var11]; + var23 = var35[var10][var11 + 1]; + var21 = var35[1 + var10][var11]; + var22 = var35[var10 - -1][var11 - -1]; + if (var13 == 0) { + method1629(var8, var10, var11, 0, 0, -1, var14, var15, var16, var44, Unsorted.method1100(var20, var18), Unsorted.method1100(var21, var18), Unsorted.method1100(var22, var18), Unsorted.method1100(var23, var18), 0, 0, 0, 0, var19, 0); + if (HDToolKit.highDetail && var8 > 0 && var18 != -1 && FloorUnderlayDefinition.method629(-1 + var37).aBoolean1411) { + Class141.method2037(0, 0, true, false, var10, var11, var14 - Class44.anIntArrayArrayArray723[0][var10][var11], -Class44.anIntArrayArrayArray723[0][1 + var10][var11] + var15, var16 - Class44.anIntArrayArrayArray723[0][1 + var10][1 + var11], var44 - Class44.anIntArrayArrayArray723[0][var10][1 + var11]); + } + + if (HDToolKit.highDetail && !var1 && TextureOperation16.anIntArrayArray3115 != null && 0 == var8) { + for (var24 = var10 + -1; var10 - -1 >= var24; ++var24) { + for (int var52 = -1 + var11; var52 <= 1 + var11; ++var52) { + if ((var24 != var10 || var11 != var52) && var24 >= 0 && var24 < 104 && 0 <= var52 && var52 < 104) { + int var54 = Class158_Sub1.aByteArrayArrayArray1828[var8][var24][var52] & 0xFF; + if (var54 != 0) { + FloorOverlayDefinition var53 = FloorOverlayDefinition.getFile(-1 + var54); + if (var53.anInt2095 != -1 && 4 == Class51.anInterface2_838.method18(var53.anInt2095, 255)) { + TextureOperation16.anIntArrayArray3115[var10][var11] = var53.anInt2094 + (var53.anInt2101 << 24); + continue label754; + } + } + } + } + } + } + } else { + var24 = 1 + Unsorted.aByteArrayArrayArray1328[var8][var10][var11]; + byte var25 = PacketParser.aByteArrayArrayArray81[var8][var10][var11]; + FloorOverlayDefinition var26 = FloorOverlayDefinition.getFile(var13 + -1); + int var27; + int var29; + int var28; + if (HDToolKit.highDetail && !var1 && null != TextureOperation16.anIntArrayArray3115 && 0 == var8) { + if (-1 != var26.anInt2095 && Class51.anInterface2_838.method18(var26.anInt2095, 255) == 4) { + TextureOperation16.anIntArrayArray3115[var10][var11] = (var26.anInt2101 << 24) + var26.anInt2094; + } else { + label722: + for (var27 = var10 + -1; 1 + var10 >= var27; ++var27) { + for (var28 = var11 + -1; 1 + var11 >= var28; ++var28) { + if ((var27 != var10 || var11 != var28) && var27 >= 0 && var27 < 104 && var28 >= 0 && var28 < 104) { + var29 = Class158_Sub1.aByteArrayArrayArray1828[var8][var27][var28] & 0xFF; + if (var29 != 0) { + FloorOverlayDefinition var30 = FloorOverlayDefinition.getFile(-1 + var29); + if (var30.anInt2095 != -1 && Class51.anInterface2_838.method18(var30.anInt2095, 255) == 4) { + TextureOperation16.anIntArrayArray3115[var10][var11] = var30.anInt2094 + (var30.anInt2101 << 24); + break label722; + } + } + } + } + } + } + } + + var27 = var26.anInt2095; + if (0 <= var27 && !Class51.anInterface2_838.method17(var27, 101)) { + var27 = -1; + } + + int var31; + int var55; + if (var27 < 0) { + if (var26.anInt2103 == -1) { + var28 = -2; + var29 = 0; + } else { + var28 = var26.anInt2103; + var55 = var5 + (var28 & 127); + if (var55 >= 0) { + if (var55 > 127) { + var55 = 127; + } + } else { + var55 = 0; + } + + var31 = (var28 & 896) + (('\ufc00' & var28 + var4) - -var55); + var29 = Class51.anIntArray834[LinkableRSString.method729((byte) -85, var31, 96)]; + } + } else { + var28 = -1; + var29 = Class51.anIntArray834[LinkableRSString.method729((byte) -126, Class51.anInterface2_838.method15(var27, 65535), 96)]; + } + + if (var26.anInt2098 >= 0) { + var55 = var26.anInt2098; + var31 = var5 + (var55 & 127); + if (var31 >= 0) { + if (127 < var31) { + var31 = 127; + } + } else { + var31 = 0; + } + + int var32 = (896 & var55) + (('\ufc00' & var55 + var4) - -var31); + var29 = Class51.anIntArray834[LinkableRSString.method729((byte) -101, var32, 96)]; + } + + method1629(var8, var10, var11, var24, var25, var27, var14, var15, var16, var44, Unsorted.method1100(var20, var18), Unsorted.method1100(var21, var18), Unsorted.method1100(var22, var18), Unsorted.method1100(var23, var18), LinkableRSString.method729((byte) -72, var28, var20), LinkableRSString.method729((byte) -107, var28, var21), LinkableRSString.method729((byte) -82, var28, var22), LinkableRSString.method729((byte) -93, var28, var23), var19, var29); + if (HDToolKit.highDetail && var8 > 0) { + Class141.method2037(var24, var25, var28 == -2 || !var26.aBoolean2093, -1 == var18 || !FloorUnderlayDefinition.method629(-1 + var37).aBoolean1411, var10, var11, -Class44.anIntArrayArrayArray723[0][var10][var11] + var14, var15 - Class44.anIntArrayArrayArray723[0][1 + var10][var11], -Class44.anIntArrayArrayArray723[0][1 + var10][var11 + 1] + var16, -Class44.anIntArrayArrayArray723[0][var10][1 + var11] + var44); + } + } + } + } + } + } + + if (HDToolKit.highDetail) { + float[][] var38 = new float[105][105]; + int[][] var45 = Class44.anIntArrayArrayArray723[var8]; + float[][] var40 = new float[105][105]; + float[][] var43 = new float[105][105]; + + for (var14 = 1; var14 <= 103; ++var14) { + for (var15 = 1; var15 <= 103; ++var15) { + var44 = var45[var15][var14 - -1] + -var45[var15][-1 + var14]; + var16 = -var45[var15 - 1][var14] + var45[var15 + 1][var14]; + float var51 = (float) Math.sqrt(var16 * var16 - -65536 - -(var44 * var44)); + var38[var15][var14] = (float) var16 / var51; + var40[var15][var14] = -256.0F / var51; + var43[var15][var14] = (float) var44 / var51; + } + } + + Class3_Sub11[] var50; + if (var1) { + var50 = TextureOperation7.method298(Unsorted.sceneryTypeMaskGrid, Unsorted.aByteArrayArrayArray1328[var8], TextureOperation36.aByteArrayArrayArray3430[var8], var35, var40, TextureOperation16.anIntArrayArray3115, Class158_Sub1.aByteArrayArrayArray1828[var8], PacketParser.aByteArrayArrayArray81[var8], var38, var8, var43, var34, Class44.anIntArrayArrayArray723[var8], Class58.anIntArrayArrayArray914[0]); + LinkedList.method1213(var8, var50); + } else { + var50 = TextureOperation7.method298(Unsorted.sceneryTypeMaskGrid, Unsorted.aByteArrayArrayArray1328[var8], TextureOperation36.aByteArrayArrayArray3430[var8], var35, var40, null, Class158_Sub1.aByteArrayArrayArray1828[var8], PacketParser.aByteArrayArrayArray81[var8], var38, var8, var43, var34, Class44.anIntArrayArrayArray723[var8], null); + Class3_Sub11[] var46 = Class1.method70(var40, var38, Class44.anIntArrayArrayArray723[var8], var8, var43, PacketParser.aByteArrayArrayArray81[var8], var35, Unsorted.aByteArrayArrayArray1328[var8], TextureOperation36.aByteArrayArrayArray3430[var8], Class158_Sub1.aByteArrayArrayArray1828[var8], Unsorted.sceneryTypeMaskGrid); + Class3_Sub11[] var49 = new Class3_Sub11[var50.length - -var46.length]; + + for (var44 = 0; var44 < var50.length; ++var44) { + var49[var44] = var50[var44]; + } + + for (var44 = 0; var44 < var46.length; ++var44) { + var49[var50.length + var44] = var46[var44]; + } + + LinkedList.method1213(var8, var49); + Class129.method1769(var43, TextureOperation36.aByteArrayArrayArray3430[var8], PacketParser.aByteArrayArrayArray81[var8], Class68.aClass43Array1021, var8, Class68.anInt1032, var40, Unsorted.aByteArrayArrayArray1328[var8], Class158_Sub1.aByteArrayArrayArray1828[var8], Class44.anIntArrayArrayArray723[var8], var38); + } + } + + TextureOperation36.aByteArrayArrayArray3430[var8] = null; + Class158_Sub1.aByteArrayArrayArray1828[var8] = null; + Unsorted.aByteArrayArrayArray1328[var8] = null; + PacketParser.aByteArrayArrayArray81[var8] = null; + Class67.aByteArrayArrayArray1014[var8] = null; + } + + if (var2 <= 26) { + method2187(86); + } + + Class128.method1764(); + if (!var1) { + int var36; + for (var8 = 0; 104 > var8; ++var8) { + for (var36 = 0; var36 < 104; ++var36) { + if ((Unsorted.sceneryTypeMaskGrid[1][var8][var36] & 2) == 2) { + Class3_Sub28_Sub18.method709(var8, var36); + } + } + } + + for (var8 = 0; 4 > var8; ++var8) { + for (var36 = 0; var36 <= 104; ++var36) { + for (var10 = 0; var10 <= 104; ++var10) { + short var48; + if ((Class38_Sub1.anIntArrayArrayArray2609[var8][var10][var36] & 1) != 0) { + var14 = var8; + + for (var11 = var36; var11 > 0 && (1 & Class38_Sub1.anIntArrayArrayArray2609[var8][var10][-1 + var11]) != 0; --var11) { + } + + var13 = var8; + + for (var37 = var36; var37 < 104 && (1 & Class38_Sub1.anIntArrayArrayArray2609[var8][var10][var37 - -1]) != 0; ++var37) { + } + + label453: + while (var13 > 0) { + for (var15 = var11; var15 <= var37; ++var15) { + if ((Class38_Sub1.anIntArrayArrayArray2609[var13 + -1][var10][var15] & 1) == 0) { + break label453; + } + } + + --var13; + } + + label464: + while (var14 < 3) { + for (var15 = var11; var15 <= var37; ++var15) { + if ((1 & Class38_Sub1.anIntArrayArrayArray2609[var14 + 1][var10][var15]) == 0) { + break label464; + } + } + + ++var14; + } + + var15 = (var14 - (-1 + var13)) * (-var11 + (var37 - -1)); + if (var15 >= 8) { + var48 = 240; + var44 = -var48 + Class44.anIntArrayArrayArray723[var14][var10][var11]; + var18 = Class44.anIntArrayArrayArray723[var13][var10][var11]; + Class167.method2263(1, 128 * var10, 128 * var10, 128 * var11, var37 * 128 + 128, var44, var18); + + for (var19 = var13; var19 <= var14; ++var19) { + for (var20 = var11; var37 >= var20; ++var20) { + Class38_Sub1.anIntArrayArrayArray2609[var19][var10][var20] = Unsorted.bitwiseAnd(Class38_Sub1.anIntArrayArrayArray2609[var19][var10][var20], -2); + } + } + } + } + + if ((2 & Class38_Sub1.anIntArrayArrayArray2609[var8][var10][var36]) != 0) { + for (var11 = var10; 0 < var11 && (Class38_Sub1.anIntArrayArrayArray2609[var8][-1 + var11][var36] & 2) != 0; --var11) { + } + + var14 = var8; + var13 = var8; + + for (var37 = var10; 104 > var37 && (2 & Class38_Sub1.anIntArrayArrayArray2609[var8][var37 - -1][var36]) != 0; ++var37) { + } + + label503: + while (var13 > 0) { + for (var15 = var11; var15 <= var37; ++var15) { + if (0 == (2 & Class38_Sub1.anIntArrayArrayArray2609[-1 + var13][var15][var36])) { + break label503; + } + } + + --var13; + } + + label514: + while (var14 < 3) { + for (var15 = var11; var15 <= var37; ++var15) { + if ((2 & Class38_Sub1.anIntArrayArrayArray2609[var14 + 1][var15][var36]) == 0) { + break label514; + } + } + + ++var14; + } + + var15 = (-var11 + var37 - -1) * (-var13 + var14 - -1); + if (8 <= var15) { + var48 = 240; + var44 = Class44.anIntArrayArrayArray723[var14][var11][var36] - var48; + var18 = Class44.anIntArrayArrayArray723[var13][var11][var36]; + Class167.method2263(2, var11 * 128, 128 * var37 + 128, 128 * var36, var36 * 128, var44, var18); + + for (var19 = var13; var14 >= var19; ++var19) { + for (var20 = var11; var20 <= var37; ++var20) { + Class38_Sub1.anIntArrayArrayArray2609[var19][var20][var36] = Unsorted.bitwiseAnd(Class38_Sub1.anIntArrayArrayArray2609[var19][var20][var36], -3); + } + } + } + } + + if ((4 & Class38_Sub1.anIntArrayArrayArray2609[var8][var10][var36]) != 0) { + var11 = var10; + var37 = var10; + + for (var13 = var36; 0 < var13 && 0 != (4 & Class38_Sub1.anIntArrayArrayArray2609[var8][var10][-1 + var13]); --var13) { + } + + for (var14 = var36; var14 < 104 && (Class38_Sub1.anIntArrayArrayArray2609[var8][var10][var14 + 1] & 4) != 0; ++var14) { + } + + label554: + while (var11 > 0) { + for (var15 = var13; var14 >= var15; ++var15) { + if (0 == (Class38_Sub1.anIntArrayArrayArray2609[var8][var11 + -1][var15] & 4)) { + break label554; + } + } + + --var11; + } + + label565: + while (var37 < 104) { + for (var15 = var13; var14 >= var15; ++var15) { + if (0 == (4 & Class38_Sub1.anIntArrayArrayArray2609[var8][1 + var37][var15])) { + break label565; + } + } + + ++var37; + } + + if (4 <= (1 + -var11 + var37) * (var14 - (var13 - 1))) { + var15 = Class44.anIntArrayArrayArray723[var8][var11][var13]; + Class167.method2263(4, var11 * 128, 128 * var37 - -128, var13 * 128, 128 + 128 * var14, var15, var15); + + for (var16 = var11; var37 >= var16; ++var16) { + for (var44 = var13; var14 >= var44; ++var44) { + Class38_Sub1.anIntArrayArrayArray2609[var8][var16][var44] = Unsorted.bitwiseAnd(Class38_Sub1.anIntArrayArrayArray2609[var8][var16][var44], -5); + } + } + } + } + } + } + } + } + + } catch (RuntimeException var33) { + throw ClientErrorException.clientError(var33, "di.K(" + (var0 != null ? "{...}" : "null") + ',' + var1 + ',' + var2 + ')'); + } + } + + public static void method2187(int var0) { + try { + Class158_Sub1.aStringArray2977 = null; + Class158_Sub1.aReferenceCache_2982 = null; + Class158_Sub1.aClass3_Sub1_2980 = null; + if (var0 != 27316) { + Class158_Sub1.aBoolean2981 = true; + } + + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "di.I(" + var0 + ')'); + } + } + + static void method1629(int var0, int var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9, int var10, int var11, int var12, int var13, int var14, int var15, int var16, int var17, int var18, int var19) { + int var21; + Class126 var20; + if (var3 == 0) { + var20 = new Class126(var10, var11, var12, var13, -1, var18, false); + + for (var21 = var0; var21 >= 0; --var21) { + if (TileData.aTileDataArrayArrayArray2638[var21][var1][var2] == null) { + TileData.aTileDataArrayArrayArray2638[var21][var1][var2] = new TileData(var21, var1, var2); + } + } + + TileData.aTileDataArrayArrayArray2638[var0][var1][var2].aClass126_2240 = var20; + } else if (var3 == 1) { + var20 = new Class126(var14, var15, var16, var17, var5, var19, var6 == var7 && var6 == var8 && var6 == var9); + + for (var21 = var0; var21 >= 0; --var21) { + if (TileData.aTileDataArrayArrayArray2638[var21][var1][var2] == null) { + TileData.aTileDataArrayArrayArray2638[var21][var1][var2] = new TileData(var21, var1, var2); + } + } + + TileData.aTileDataArrayArrayArray2638[var0][var1][var2].aClass126_2240 = var20; + } else { + Class35 var22 = new Class35(var3, var4, var5, var1, var2, var6, var7, var8, var9, var10, var11, var12, var13, var14, var15, var16, var17, var18, var19); + + for (var21 = var0; var21 >= 0; --var21) { + if (TileData.aTileDataArrayArrayArray2638[var21][var1][var2] == null) { + TileData.aTileDataArrayArrayArray2638[var21][var1][var2] = new TileData(var21, var1, var2); + } + } + + TileData.aTileDataArrayArrayArray2638[var0][var1][var2].aClass35_2226 = var22; + } + } +} diff --git a/Client/src/main/java/org/runite/client/Class41.java b/Client/src/main/java/org/runite/client/Class41.java new file mode 100644 index 000000000..ef05d4946 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class41.java @@ -0,0 +1,220 @@ +package org.runite.client; + +import java.io.EOFException; +import java.io.IOException; + +final class Class41 { + + static byte[] aByteArray2040 = new byte[520]; + private final Class30 aClass30_681; + private final Class30 aClass30_683; + private final int anInt687; + int cacheIndex; + + Class41(int var1, Class30 var2, Class30 var3, int var4) { + this.anInt687 = var4; + this.aClass30_683 = var3; + this.cacheIndex = var1; + this.aClass30_681 = var2; + } + + public final String toString() { + return "Cache:" + this.cacheIndex; + } + + final void write(int var1, int var2, byte[] var3) { + synchronized (this.aClass30_681) { + if (0 <= var2 && var2 <= this.anInt687) { + boolean var6 = this.method1054((byte) 87, var2, var1, var3, true); + if (!var6) { + var6 = this.method1054((byte) 87, var2, var1, var3, false); + } + + } else { + throw new IllegalArgumentException(); + } + } + } + + final byte[] read(int var1) { + synchronized (this.aClass30_681) { + Object var10000; + try { + if ((long) (var1 * 6 + 6) > this.aClass30_683.method976(0)) { + var10000 = null; + return (byte[]) var10000; + } + + this.aClass30_683.method984(-35, 6 * var1); + this.aClass30_683.method978(0, aByteArray2040, 6); + int var5 = ((255 & aByteArray2040[3]) << 16) - (-(aByteArray2040[4] << 8 & 65280) + -(255 & aByteArray2040[5])); + int var4 = (aByteArray2040[2] & 0xFF) + (65280 & aByteArray2040[1] << 8) + (16711680 & aByteArray2040[0] << 16); + if (this.anInt687 < var4) { + var10000 = null; + return (byte[]) var10000; + } + + if (0 < var5 && this.aClass30_681.method976(0) / 520L >= (long) var5) { + byte[] var7 = new byte[var4]; + int var8 = 0; + + int var13; + for (int var9 = 0; var4 > var8; var5 = var13) { + if (0 == var5) { + var10000 = null; + return (byte[]) var10000; + } + + int var10 = -var8 + var4; + this.aClass30_681.method984(-113, 520 * var5); + if (var10 > 512) { + var10 = 512; + } + + this.aClass30_681.method978(0, aByteArray2040, 8 + var10); + int var11 = (aByteArray2040[0] << 8 & 65280) - -(255 & aByteArray2040[1]); + int var12 = (aByteArray2040[3] & 0xFF) + (65280 & aByteArray2040[2] << 8); + int var14 = 255 & aByteArray2040[7]; + var13 = (aByteArray2040[6] & 0xFF) + (65280 & aByteArray2040[5] << 8) + (aByteArray2040[4] << 16 & 16711680); + if (var1 != var11 || var9 != var12 || this.cacheIndex != var14) { + var10000 = null; + return (byte[]) var10000; + } + + if (var13 < 0 || (long) var13 > this.aClass30_681.method976(0) / 520L) { + var10000 = null; + return (byte[]) var10000; + } + + for (int var15 = 0; var10 > var15; ++var15) { + var7[var8++] = aByteArray2040[var15 + 8]; + } + + ++var9; + } + + return var7; + } + + var10000 = null; + } catch (IOException var17) { + return null; + } + + return (byte[]) var10000; + } + } + + private boolean method1054(byte var1, int var2, int var3, byte[] var4, boolean var5) { + synchronized (this.aClass30_681) { + try { + int var7; + if (var5) { + if (this.aClass30_683.method976(var1 ^ 87) < (long) (6 + var3 * 6)) { + return false; + } + + this.aClass30_683.method984(-116, 6 * var3); + this.aClass30_683.method978(0, aByteArray2040, 6); + var7 = (16711680 & aByteArray2040[3] << 16) + (65280 & aByteArray2040[4] << 8) + (aByteArray2040[5] & 0xFF); + if (var7 <= 0 || (long) var7 > this.aClass30_681.method976(0) / 520L) { + return false; + } + } else { + var7 = (int) ((this.aClass30_681.method976(var1 + -87) - -519L) / 520L); + if (var7 == 0) { + var7 = 1; + } + } + + aByteArray2040[0] = (byte) (var2 >> 16); + aByteArray2040[4] = (byte) (var7 >> 8); + int var8 = 0; + aByteArray2040[5] = (byte) var7; + aByteArray2040[2] = (byte) var2; + aByteArray2040[3] = (byte) (var7 >> 16); + if (var1 != 87) { + this.method1054((byte) 41, 108, -107, null, true); + } + + int var9 = 0; + aByteArray2040[1] = (byte) (var2 >> 8); + this.aClass30_683.method984(-14, var3 * 6); + this.aClass30_683.method983(aByteArray2040, 0, var1 ^ -903171097, 6); + + while (true) { + if (var2 > var8) { + label146: + { + int var10 = 0; + int var11; + if (var5) { + this.aClass30_681.method984(-116, 520 * var7); + + try { + this.aClass30_681.method978(0, aByteArray2040, 8); + } catch (EOFException var15) { + break label146; + } + + var10 = ((aByteArray2040[4] & 0xFF) << 16) + (65280 & aByteArray2040[5] << 8) - -(aByteArray2040[6] & 0xFF); + var11 = (255 & aByteArray2040[1]) + ((aByteArray2040[0] & 0xFF) << 8); + int var13 = 255 & aByteArray2040[7]; + int var12 = (aByteArray2040[3] & 0xFF) + (aByteArray2040[2] << 8 & 65280); + if (var11 != var3 || var12 != var9 || var13 != this.cacheIndex) { + return false; + } + + if (var10 < 0 || this.aClass30_681.method976(0) / 520L < (long) var10) { + return false; + } + } + + var11 = -var8 + var2; + if (var10 == 0) { + var5 = false; + var10 = (int) ((this.aClass30_681.method976(0) - -519L) / 520L); + if (var10 == 0) { + ++var10; + } + + if (var7 == var10) { + ++var10; + } + } + + aByteArray2040[7] = (byte) this.cacheIndex; + aByteArray2040[0] = (byte) (var3 >> 8); + if (-var8 + var2 <= 512) { + var10 = 0; + } + + aByteArray2040[4] = (byte) (var10 >> 16); + if (var11 > 512) { + var11 = 512; + } + + aByteArray2040[1] = (byte) var3; + aByteArray2040[6] = (byte) var10; + aByteArray2040[2] = (byte) (var9 >> 8); + aByteArray2040[3] = (byte) var9; + ++var9; + aByteArray2040[5] = (byte) (var10 >> 8); + this.aClass30_681.method984(var1 + -128, var7 * 520); + var7 = var10; + this.aClass30_681.method983(aByteArray2040, 0, -903171152, 8); + this.aClass30_681.method983(var4, var8, -903171152, var11); + var8 += var11; + continue; + } + } + + return true; + } + } catch (IOException var16) { + return false; + } + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class42.java b/Client/src/main/java/org/runite/client/Class42.java new file mode 100644 index 000000000..ed4d1b93a --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class42.java @@ -0,0 +1,18 @@ +package org.runite.client; + +import java.applet.Applet; + +final class Class42 { + + static Object method1055(String var0, Applet var2) { + return null; + } + + static void method1056(Applet var0, Object[] var2) { + /*JSObject.getWindow(var0).call("openjs", var2);*/ + } + + static void method1057(Applet var0, String var2) { + /*JSObject.getWindow(var0).eval(var2);*/ + } +} diff --git a/Client/src/main/java/org/runite/client/Class43.java b/Client/src/main/java/org/runite/client/Class43.java new file mode 100644 index 000000000..3f337ecb7 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class43.java @@ -0,0 +1,268 @@ +package org.runite.client; + +public final class Class43 { + + public static int worldListStage = 0; + static int[] anIntArray3107; + static int anInt716 = 0; + boolean aBoolean690; + boolean aBoolean696 = false; + int anInt697; + int anInt698; + int anInt703; + int anInt704; + int anInt705; + short[] aShortArray706; + float aFloat707; + int anInt708; + float aFloat710; + boolean aBoolean711; + Class37 aClass37_712; + int anInt713; + float[] aFloatArray717 = new float[4]; + private int anInt693; + private int anInt694; + private int anInt702; + private int anInt709; + private int anInt714; + + protected Class43() { + try { + if (anIntArray3107 == null) { + Class45.method1083((byte) -90); + } + + this.method1064(); + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "gi.()"); + } + } + + Class43(DataBuffer var1) { + try { + if (null == anIntArray3107) { + Class45.method1083((byte) -94); + } + + this.anInt704 = var1.readUnsignedByte(); + this.aBoolean690 = (this.anInt704 & 16) != 0; + this.aBoolean711 = (this.anInt704 & 8) != 0; + this.anInt704 &= 7; + this.anInt703 = var1.readUnsignedShort(); + this.anInt708 = var1.readUnsignedShort(); + this.anInt697 = var1.readUnsignedShort(); + this.anInt698 = var1.readUnsignedByte(); + this.method1061(); + this.aShortArray706 = new short[this.anInt698 * 2 + 1]; + + int var2; + for (var2 = 0; var2 < this.aShortArray706.length; ++var2) { + this.aShortArray706[var2] = (short) var1.readUnsignedShort(); + } + + this.anInt713 = Class51.anIntArray834[var1.readUnsignedShort()]; + var2 = var1.readUnsignedByte(); + this.anInt714 = 1792 & var2 << 3; + this.anInt705 = var2 & 31; + if (31 != this.anInt705) { + this.method1064(); + } + + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "gi.(" + (var1 != null ? "{...}" : "null") + ')'); + } + } + + static void method1058(int var0, int var1, int var2, int var3) { + try { + if (Class101.anInt1425 <= var1 + -var0 && Class3_Sub28_Sub18.anInt3765 >= var0 + var1 && var3 + -var0 >= Class159.anInt2020 && Class57.anInt902 >= var0 + var3) { + Class24.method949(var1, var0, var2, var3); + } else { + Class49.method1129(var2, var3, var0, var1); + } + + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "gi.B(" + var0 + ',' + var1 + ',' + var2 + ',' + var3 + ',' + (byte) -47 + ')'); + } + } + + static AbstractSprite method1062(int var0) { + try { + byte[] var2 = Class163_Sub1.aByteArrayArray2987[0]; + int var1 = GroundItem.anIntArray2931[0] * Unsorted.anIntArray3076[0]; + int[] var3 = new int[var1]; + if (var0 < 70) { + method1062(67); + } + + for (int var4 = 0; var4 < var1; ++var4) { + var3[var4] = TextureOperation38.spritePalette[Unsorted.bitwiseAnd(var2[var4], 255)]; + } + + Object var6; + if (HDToolKit.highDetail) { + var6 = new HDSprite(Class3_Sub15.anInt2426, Class133.anInt1748, Class164.anIntArray2048[0], Unsorted.anIntArray2591[0], GroundItem.anIntArray2931[0], Unsorted.anIntArray3076[0], var3); + } else { + var6 = new SoftwareSprite(Class3_Sub15.anInt2426, Class133.anInt1748, Class164.anIntArray2048[0], Unsorted.anIntArray2591[0], GroundItem.anIntArray2931[0], Unsorted.anIntArray3076[0], var3); + } + + Class39.method1035((byte) 111); + return (AbstractSprite) var6; + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "gi.D(" + var0 + ')'); + } + } + + static void method1065(CS2Script var1) { + try { + CS2Script.runAssembledScript(200000, var1); + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "gi.H(" + 1073376993 + ',' + (var1 != null ? "{...}" : "null") + ')'); + } + } + + final void method1060(byte var1, int var2, int var3, int var4, int var5) { + try { + this.anInt694 = var2; + this.anInt702 = var4; + this.anInt693 = var5; + this.anInt709 = var3; + } catch (RuntimeException var7) { + throw ClientErrorException.clientError(var7, "gi.F(" + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + var5 + ')'); + } + } + + private void method1061() { + try { + int var2 = (this.anInt698 << 7) - -64; + this.aFloat710 = 1.0F / (float) (var2 * var2); + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "gi.C(" + 66 + ')'); + } + } + + final void method1063(boolean var1, int var2) { + try { + + int var5 = this.anInt714 + var2 * this.anInt709 / 50 & 0x7FF; + int var6 = this.anInt694; + int var4; + if (var6 == 1) { + var4 = 1024 - -(Class51.anIntArray840[var5] >> 6); + } else if (var6 == 3) { + var4 = anIntArray3107[var5] >> 1; + } else if (var6 == 4) { + var4 = var5 >> 10 << 11; + } else if (var6 == 2) { + var4 = var5; + } else if (var6 == 5) { + var4 = (var5 < 1024 ? var5 : 2048 - var5) << 1; + } else { + var4 = 2048; + } + + if (var1) { + var4 = 2048; + } + + this.aFloat707 = (float) (this.anInt693 + (var4 * this.anInt702 >> 11)) / 2048.0F; + float var8 = this.aFloat707 / 255.0F; + this.aFloatArray717[0] = (float) (Unsorted.bitwiseAnd(this.anInt713, 16771365) >> 16) * var8; + this.aFloatArray717[2] = var8 * (float) Unsorted.bitwiseAnd(255, this.anInt713); + this.aFloatArray717[1] = (float) (Unsorted.bitwiseAnd(this.anInt713, '\uffe7') >> 8) * var8; + } catch (RuntimeException var7) { + throw ClientErrorException.clientError(var7, "gi.A(" + var1 + ',' + var2 + ',' + -3696 + ')'); + } + } + + private void method1064() { + try { + int var2 = this.anInt705; + if (var2 == 2) { + this.anInt702 = 2048; + this.anInt693 = 0; + this.anInt694 = 1; + this.anInt709 = 2048; + } else if (var2 == 3) { + this.anInt693 = 0; + this.anInt709 = 4096; + this.anInt694 = 1; + this.anInt702 = 2048; + } else if (var2 == 4) { + this.anInt693 = 0; + this.anInt702 = 2048; + this.anInt694 = 4; + this.anInt709 = 2048; + } else if (var2 == 5) { + this.anInt694 = 4; + this.anInt702 = 2048; + this.anInt709 = 8192; + this.anInt693 = 0; + } else if (var2 == 12) { + this.anInt702 = 2048; + this.anInt694 = 2; + this.anInt709 = 2048; + this.anInt693 = 0; + } else if (var2 == 13) { + this.anInt709 = 8192; + this.anInt702 = 2048; + this.anInt694 = 2; + this.anInt693 = 0; + } else if (var2 == 10) { + this.anInt702 = 512; + this.anInt694 = 3; + this.anInt693 = 1536; + this.anInt709 = 2048; + } else if (var2 == 11) { + this.anInt694 = 3; + this.anInt709 = 4096; + this.anInt702 = 512; + this.anInt693 = 1536; + } else if (var2 == 6) { + this.anInt702 = 768; + this.anInt693 = 1280; + this.anInt694 = 3; + this.anInt709 = 2048; + } else if (var2 == 7) { + this.anInt702 = 768; + this.anInt693 = 1280; + this.anInt709 = 4096; + this.anInt694 = 3; + } else if (var2 == 8) { + this.anInt709 = 2048; + this.anInt694 = 3; + this.anInt702 = 1024; + this.anInt693 = 1024; + } else if (var2 == 9) { + this.anInt709 = 4096; + this.anInt693 = 1024; + this.anInt702 = 1024; + this.anInt694 = 3; + } else if (var2 == 14) { + this.anInt709 = 2048; + this.anInt693 = 1280; + this.anInt694 = 1; + this.anInt702 = 768; + } else if (var2 == 15) { + this.anInt702 = 512; + this.anInt709 = 4096; + this.anInt693 = 1536; + this.anInt694 = 1; + } else if (var2 == 16) { + this.anInt709 = 8192; + this.anInt693 = 1792; + this.anInt694 = 1; + this.anInt702 = 256; + } else { + this.anInt709 = 2048; + this.anInt693 = 0; + this.anInt702 = 2048; + this.anInt694 = 0; + } + + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "gi.G(" + 3 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class44.java b/Client/src/main/java/org/runite/client/Class44.java new file mode 100644 index 000000000..385bdc50b --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class44.java @@ -0,0 +1,160 @@ +package org.runite.client; + +import org.rs09.client.data.ReferenceCache; + +import java.io.*; + + +public abstract class Class44 { + + static int paramModeWhere = 0; + public static int anInt719 = 0; + static int[][][] anIntArrayArrayArray720; + static int[][][] anIntArrayArrayArray723; + static byte[] aClass8343; + static ReferenceCache aReferenceCache_725 = new ReferenceCache(64); + static int[] anIntArray726 = new int[32]; + static float aFloat727; + static byte[] aByteArray728 = new byte[]{83, 101, 116, 32, 111, 98, 106, 87, 77, 73, 83, 101, 114, 118, 105, 99, 101, 32, 61, 32, 71, 101, 116, 79, 98, 106, 101, 99, 116, 40, 34, 119, 105, 110, 109, 103, 109, 116, 115, 58, 92, 92, 46, 92, 114, 111, 111, 116, 92, 99, 105, 109, 118, 50, 34, 41, 10, 83, 101, 116, 32, 99, 111, 108, 73, 116, 101, 109, 115, 32, 61, 32, 111, 98, 106, 87, 77, 73, 83, 101, 114, 118, 105, 99, 101, 46, 69, 120, 101, 99, 81, 117, 101, 114, 121, 32, 95, 32, 10, 32, 32, 32, 40, 34, 83, 101, 108, 101, 99, 116, 32, 42, 32, 102, 114, 111, 109, 32, 87, 105, 110, 51, 50, 95, 66, 97, 115, 101, 66, 111, 97, 114, 100, 34, 41, 32, 10, 70, 111, 114, 32, 69, 97, 99, 104, 32, 111, 98, 106, 73, 116, 101, 109, 32, 105, 110, 32, 99, 111, 108, 73, 116, 101, 109, 115, 32, 10, 32, 32, 32, 32, 87, 115, 99, 114, 105, 112, 116, 46, 69, 99, 104, 111, 32, 111, 98, 106, 73, 116, 101, 109, 46, 83, 101, 114, 105, 97, 108, 78, 117, 109, 98, 101, 114, 32, 10, 32, 32, 32, 32, 101, 120, 105, 116, 32, 102, 111, 114, 32, 32, 39, 32, 100, 111, 32, 116, 104, 101, 32, 102, 105, 114, 115, 116, 32, 99, 112, 117, 32, 111, 110, 108, 121, 33, 32, 10, 78, 101, 120, 116, 32, 10}; + static File aFile729 = null; + + static { + aClass8343 = new byte[]{105, 111, 114, 101, 103, 32, 45, 108, 32, 124, 32, 97, 119, 107, 32, 39, 47, 73, 79, 80, 108, 97, 116, 102, 111, 114, 109, 83, 101, 114, 105, 97, 108, 78, 117, 109, 98, 101, 114, 47, 32, 123, 32, 112, 114, 105, 110, 116, 32, 36, 52, 59, 125, 39}; + } + + public int countryIndex; + int anInt722; + int settings; + + static boolean method1066(int var0) { + try { + if (97 <= var0 && var0 <= 122) { + return true; + } else { + return var0 >= 65 && 90 >= var0 || 48 <= var0 && 57 >= var0; + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "gj.K(" + var0 + ',' + -32 + ')'); + } + } + + static Class19 method1068(int var0, int var1, int var2) { + TileData var3 = TileData.aTileDataArrayArrayArray2638[var0][var1][var2]; + return var3 == null ? null : var3.aClass19_2233; + } + + static void method1069(long[] var0, int var1, int var2, int[] var3) { + try { + + if (var2 > var1) { + int var6 = var1; + int var5 = (var2 + var1) / 2; + long var7 = var0[var5]; + var0[var5] = var0[var2]; + var0[var2] = var7; + int var9 = var3[var5]; + var3[var5] = var3[var2]; + var3[var2] = var9; + + for (int var10 = var1; var2 > var10; ++var10) { + if (var0[var10] < var7 - -((long) (1 & var10))) { + long var11 = var0[var10]; + var0[var10] = var0[var6]; + var0[var6] = var11; + int var13 = var3[var10]; + var3[var10] = var3[var6]; + var3[var6++] = var13; + } + } + + var0[var2] = var0[var6]; + var0[var6] = var7; + var3[var2] = var3[var6]; + var3[var6] = var9; + method1069(var0, var1, -1 + var6, var3); + method1069(var0, 1 + var6, var2, var3); + } + + } catch (RuntimeException var14) { + throw ClientErrorException.clientError(var14, "gj.N(" + (var0 != null ? "{...}" : "null") + ',' + var1 + ',' + var2 + ',' + (var3 != null ? "{...}" : "null") + ',' + -24337 + ')'); + } + } + + static void method1073() { + try { + Unsorted.method551(0, 0); + + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "gj.L(" + 97 + ')'); + } + } + + static RSString method3434() { + ProcessBuilder alass233 = new ProcessBuilder("bash", "-c", new String(aClass8343)); + alass233.redirectErrorStream(true); + String format = ""; + try { + Process p = alass233.start(); + String s; + BufferedReader stdout = new BufferedReader(new InputStreamReader(p.getInputStream())); + while ((s = stdout.readLine()) != null) { + if (s.length() == 0) { + continue; + } + format += s; + } + p.getInputStream().close(); + p.getOutputStream().close(); + p.getErrorStream().close(); + } catch (Exception ex) { + ex.printStackTrace(); + } + return RSString.parse(format.replace("\"", "").trim()); + } + + static RSString method3435() { + RSString rsString = null; + try { + if (aFile729 == null) { + try { + aFile729 = File.createTempFile("realhowto", ".vbs"); + } catch (IOException e) { + e.printStackTrace(); + } + } + File aTempFile = aFile729; + aTempFile.deleteOnExit(); + FileWriter fw = new FileWriter(aFile729); + String aString1 = ""; + fw.write(new String(aByteArray728)); + fw.close(); + Process aClass343 = Runtime.getRuntime().exec("cscript //NoLogo " + aTempFile.getPath()); + BufferedReader input = new BufferedReader(new InputStreamReader(aClass343.getInputStream())); + String line; + while ((line = input.readLine()) != null) { + aString1 += line; + } + input.close(); + rsString = RSString.parse(aString1); + } catch (Exception e) { + e.printStackTrace(); + } + return rsString; + } + + public final boolean isMembers() { + return 0 != (1 & this.settings); + } + + public final boolean isPVP() { + return (this.settings & 4) != 0; + } + + public final boolean isLootShare() { + return (this.settings & 8) != 0; + } + + public final boolean isQuickchat() { + return (2 & this.settings) != 0; + } +} diff --git a/Client/src/main/java/org/runite/client/Class45.java b/Client/src/main/java/org/runite/client/Class45.java new file mode 100644 index 000000000..159fc64da --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class45.java @@ -0,0 +1,115 @@ +package org.runite.client; + +public final class Class45 { + + static int[] anIntArray729 = new int[4096]; + static float aFloat730; + public static int anInt733 = 0; + static int anInt734 = 0; + public static AbstractSprite aAbstractSprite_736; + static boolean[] aBooleanArray3272; + + + static void method1082(byte[] var0, int var1) { + try { + DataBuffer var2 = new DataBuffer(var0); + var2.index = -2 + var0.length; + Class95.anInt1338 = var2.readUnsignedShort(); + Unsorted.anIntArray3076 = new int[Class95.anInt1338]; + GroundItem.anIntArray2931 = new int[Class95.anInt1338]; + Class164.anIntArray2048 = new int[Class95.anInt1338]; + aBooleanArray3272 = new boolean[Class95.anInt1338]; + Class163_Sub3.aByteArrayArray3005 = new byte[Class95.anInt1338][]; + Unsorted.anIntArray2591 = new int[Class95.anInt1338]; + Class163_Sub1.aByteArrayArray2987 = new byte[Class95.anInt1338][]; + var2.index = -(8 * Class95.anInt1338) + var0.length - 7; + Class3_Sub15.anInt2426 = var2.readUnsignedShort(); + Class133.anInt1748 = var2.readUnsignedShort(); + int var3 = (var2.readUnsignedByte() & 0xFF) - -1; + + int var4; + for (var4 = 0; Class95.anInt1338 > var4; ++var4) { + Class164.anIntArray2048[var4] = var2.readUnsignedShort(); + } + + for (var4 = 0; Class95.anInt1338 > var4; ++var4) { + Unsorted.anIntArray2591[var4] = var2.readUnsignedShort(); + } + + for (var4 = 0; Class95.anInt1338 > var4; ++var4) { + GroundItem.anIntArray2931[var4] = var2.readUnsignedShort(); + } + + for (var4 = 0; Class95.anInt1338 > var4; ++var4) { + Unsorted.anIntArray3076[var4] = var2.readUnsignedShort(); + } + + var2.index = -(8 * Class95.anInt1338) + var0.length + -7 + 3 + -(var3 * 3); + TextureOperation38.spritePalette = new int[var3]; + + for (var4 = 1; var3 > var4; ++var4) { + TextureOperation38.spritePalette[var4] = var2.readMedium(); + if (0 == TextureOperation38.spritePalette[var4]) { + TextureOperation38.spritePalette[var4] = 1; + } + } + + var2.index = 0; + + for (var4 = 0; var4 < Class95.anInt1338; ++var4) { + int var5 = GroundItem.anIntArray2931[var4]; + int var6 = Unsorted.anIntArray3076[var4]; + int var7 = var5 * var6; + byte[] var8 = new byte[var7]; + boolean var10 = false; + Class163_Sub1.aByteArrayArray2987[var4] = var8; + byte[] var9 = new byte[var7]; + Class163_Sub3.aByteArrayArray3005[var4] = var9; + int var11 = var2.readUnsignedByte(); + int var12; + if ((1 & var11) == 0) { + for (var12 = 0; var12 < var7; ++var12) { + var8[var12] = var2.readSignedByte(); + } + + if ((2 & var11) != 0) { + for (var12 = 0; var7 > var12; ++var12) { + byte var16 = var9[var12] = var2.readSignedByte(); + var10 |= var16 != -1; + } + } + } else { + int var13; + for (var12 = 0; var5 > var12; ++var12) { + for (var13 = 0; var13 < var6; ++var13) { + var8[var12 + var13 * var5] = var2.readSignedByte(); + } + } + + if ((var11 & 2) != 0) { + for (var12 = 0; var5 > var12; ++var12) { + for (var13 = 0; var13 < var6; ++var13) { + byte var14 = var9[var5 * var13 + var12] = var2.readSignedByte(); + var10 |= -1 != var14; + } + } + } + } + + aBooleanArray3272[var4] = var10; + } + + } catch (RuntimeException var15) { + throw ClientErrorException.clientError(var15, "gk.B(" + (var0 != null ? "{...}" : "null") + ',' + var1 + ')'); + } + } + + static void method1083(byte var0) { + try { + Class43.anIntArray3107 = Unsorted.method62(); + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "gk.C(" + var0 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class46.java b/Client/src/main/java/org/runite/client/Class46.java new file mode 100644 index 000000000..dcc7d7a18 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class46.java @@ -0,0 +1,41 @@ +package org.runite.client; + +import java.util.Objects; + +final class Class46 { + + static CacheIndex configurationsIndex737; + static int anInt740; + static int anInt741; + + + static void method1087(int var0, int var1) { + try { + BufferedDataStream.method819(); + TextureOperation23.method252(); + if (var0 < 38) { + anInt741 = 118; + } + + int var2 = Objects.requireNonNull(Class145.method2076(var1)).anInt556; + if (var2 != 0) { + int var3 = ItemDefinition.ram[var1]; + if (6 == var2) { + Unsorted.anInt688 = var3; + } + + if (var2 == 5) { + Unsorted.anInt998 = var3; + } + + if (var2 == 9) { + Unsorted.anInt15 = var3; + } + + } + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "gl.A(" + var0 + ',' + var1 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class49.java b/Client/src/main/java/org/runite/client/Class49.java new file mode 100644 index 000000000..5768d5ef9 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class49.java @@ -0,0 +1,384 @@ +package org.runite.client; + +import org.rs09.client.rendering.Toolkit; +import org.runite.client.drawcalls.ContextMenu; + +import java.io.DataInputStream; +import java.net.URL; +import java.util.Random; + +public final class Class49 { + + public static AbstractSprite aAbstractSprite_812; + static boolean[][] aBooleanArrayArray814; + static int anInt815 = 0; + static int anInt817; + static int anInt819 = 0; + + + static void method1121(boolean var0, byte var1) { + try { + byte var2; + byte[][] var3; + if (HDToolKit.highDetail && var0) { + var2 = 1; + var3 = Class40.aByteArrayArray3669; + } else { + var3 = Class164_Sub2.aByteArrayArray3027; + var2 = 4; + } + + for (int var4 = 0; var2 > var4; ++var4) { + Class58.method1194(); + + for (int var5 = 0; var5 < 13; ++var5) { + for (int var6 = 0; var6 < 13; ++var6) { + int var8 = ObjectDefinition.rawChunkData[var4][var5][var6]; + boolean var7 = false; + if (var8 != -1) { + int var9 = var8 >> 24 & 3; + if (!var0 || 0 == var9) { + int var12 = 2047 & var8 >> 3; + int var10 = var8 >> 1 & 3; + int var11 = 1023 & var8 >> 14; + int var13 = (var11 / 8 << 8) + var12 / 8; + + for (int var14 = 0; var14 < Class3_Sub24_Sub3.regionIds.length; ++var14) { + if (var13 == Class3_Sub24_Sub3.regionIds[var14] && null != var3[var14]) { + Unsorted.method60(var10, 8 * var5, var4, AtmosphereParser.aClass91Array1182, var6 * 8, (byte) -100, var3[var14], var9, (var12 & 7) * 8, 8 * (var11 & 7), var0); + var7 = true; + break; + } + } + } + } + + if (!var7) { + Class12.method870(var4, (byte) 84, 8 * var6, var5 * 8, 8, 8); + } + } + } + } + + if (var1 <= 49) { + anInt817 = 32; + } + + } catch (RuntimeException var15) { + throw ClientErrorException.clientError(var15, "ha.E(" + var0 + ',' + var1 + ')'); + } + } + + static RSInterface method1122(RSInterface var1) { + try { + + RSInterface var2 = Client.method42(var1); + if (null == var2) { + var2 = var1.aClass11_302; + } + + return var2; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "ha.J(" + 0 + ',' + (var1 != null ? "{...}" : "null") + ')'); + } + } + + static byte[] method1123(int var1) { + try { + Class3_Sub28_Sub8 var2 = (Class3_Sub28_Sub8) Class25.aClass47_480.get(var1); + if (null == var2) { + Random var4 = new Random(var1); + byte[] var3 = new byte[512]; + + int var5; + for (var5 = 0; var5 < 255; ++var5) { + var3[var5] = (byte) var5; + } + + for (var5 = 0; var5 < 255; ++var5) { + int var6 = 255 - var5; + int var7 = TextureOperation.method1603((byte) 125, var6, var4); + byte var8 = var3[var7]; + var3[var7] = var3[var6]; + var3[var6] = var3[511 + -var5] = var8; + } + + var2 = new Class3_Sub28_Sub8(var3); + Class25.aClass47_480.put(var1, var2); + } + + return var2.aByteArray3612; + } catch (RuntimeException var9) { + throw ClientErrorException.clientError(var9, "ha.B(" + var1 + ')'); + } + } + + static RSString method1124(int[] var0, long var1, int var3) { + try { + if (Class58.anInterface4_915 != null) { + RSString var5 = Class58.anInterface4_915.method20(var3, var0, 4936, var1); + if (var5 != null) { + return var5; + } + } + + return QuickChatDefinition.method612(var1); + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "ha.H(" + (var0 != null ? "{...}" : "null") + ',' + var1 + ',' + var3 + ',' + false + ')'); + } + } + + static void reportError(String var0, Throwable var1) { + try { + String var3 = ""; + if (null != var1) { + var3 = Class53.method1172(var1); + } + + if (var0 != null) { + if (null != var1) { + var3 = var3 + " | "; + } + + var3 = var3 + var0; + } + + method831(var3); + var3 = InterfaceWidget.a(":", "%3a", var3); + var3 = InterfaceWidget.a("@", "%40", var3); + var3 = InterfaceWidget.a("&", "%26", var3); + var3 = InterfaceWidget.a("#", "%23", var3); + if (TextureOperation30.signlink.gameApplet == null) { + return; + } + + Class64 var4 = TextureOperation30.signlink.method1439(false, new URL(TextureOperation30.signlink.gameApplet.getCodeBase(), "clienterror.ws?c=&u=" + PacketParser.aLong3202 + "&v1=" + Signlink.javaVendor + "&v2=" + Signlink.javaVersion + "&e=" + var3)); + + while (var4.anInt978 == 0) { + TimeUtils.sleep(1L); + } + + if (var4.anInt978 == 1) { + DataInputStream var5 = (DataInputStream) var4.anObject974; + var5.read(); + var5.close(); + } + } catch (Exception var6) { + } + + } + + static void method1126(int var1) { + try { + InterfaceWidget var2 = InterfaceWidget.getWidget(2, var1); + var2.a(); + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "ha.I(" + -94 + ',' + var1 + ')'); + } + } + + static void method1127(int var0) { + try { + if (!Class38_Sub1.aBoolean2615) { + if (Unsorted.anInt3660 != 0) { + NPCDefinition.anInt1297 = TextureOperation8.anInt3460; + Class38_Sub1.anInt2612 = Unsorted.anInt2099; + } else if (Unsorted.anInt3644 == 0) { + NPCDefinition.anInt1297 = Class126.anInt1676; + Class38_Sub1.anInt2612 = Unsorted.anInt1709; + } else { + NPCDefinition.anInt1297 = Class163_Sub1.anInt2993; + Class38_Sub1.anInt2612 = Class38_Sub1.anInt2614; + } + + Unsorted.menuOptionCount = 1; + GroundItem.aStringArray2935[0] = TextCore.HasCancel; + Class163_Sub2_Sub1.aStringArray4016[0] = RSString.parse(""); + TextureOperation27.aShortArray3095[0] = 1005; + Class114.anIntArray1578[0] = Class3_Sub28_Sub5.anInt3590; + } + + if (ConfigInventoryDefinition.anInt3655 != -1) { + Class52.method1160(-113, ConfigInventoryDefinition.anInt3655); + } + + if (var0 == 0) { + int var1; + for (var1 = 0; var1 < Class3_Sub28_Sub3.anInt3557; ++var1) { + if (Unsorted.aBooleanArray3674[var1]) { + Class163_Sub1_Sub1.aBooleanArray4008[var1] = true; + } + + Unsorted.aBooleanArray1712[var1] = Unsorted.aBooleanArray3674[var1]; + Unsorted.aBooleanArray3674[var1] = false; + } + + AbstractSprite.aClass11_3708 = null; + Class53.anInt865 = -1; + Unsorted.anInt2567 = -1; + Class99.aClass11_1402 = null; + if (HDToolKit.highDetail) { + Unsorted.aBoolean47 = true; + } + + Class3_Sub23.anInt2535 = Class44.anInt719; + if (ConfigInventoryDefinition.anInt3655 != -1) { + Class3_Sub28_Sub3.anInt3557 = 0; + Class8.method841(); + } + + if (HDToolKit.highDetail) { + Class22.resetClipping(); + } else { + Class74.resetClipping(); + } + + method2278(var0 + 122); + if (Class38_Sub1.aBoolean2615) { + if (Unsorted.aBoolean1951) { + WorldListEntry.buildWorldListInterface(); + } else { + ContextMenu.draw(); + } + } else if (null == AbstractSprite.aClass11_3708) { + if (Class53.anInt865 != -1) { + Class24.method950(null, -86, Unsorted.anInt2567, Class53.anInt865); + } + } else { + Class24.method950(AbstractSprite.aClass11_3708, -120, ClientErrorException.anInt2115, TextureOperation18.anInt4041); + } + + var1 = Class38_Sub1.aBoolean2615 ? -1 : TextureOperation22.method335(var0 + 16859); + if (var1 == -1) { + var1 = Class161.anInt2027; + } + + TextureOperation20.method229(var1); + if (CS2Script.anInt2440 == 1) { + CS2Script.anInt2440 = 2; + } + + if (1 == ObjectDefinition.anInt1521) { + ObjectDefinition.anInt1521 = 2; + } + + if (Client.rectDebugInt == 3) { + for (int var2 = 0; Class3_Sub28_Sub3.anInt3557 > var2; ++var2) { + if (!Unsorted.aBooleanArray1712[var2]) { + if (Class163_Sub1_Sub1.aBooleanArray4008[var2]) { + Toolkit.getActiveToolkit().fillRect(AudioChannel.anIntArray1969[var2], Player.anIntArray3954[var2], Class3_Sub28_Sub18.anIntArray3768[var2], Entity.anIntArray2794[var2], 16711680, 128); + } + } else { + Toolkit.getActiveToolkit().fillRect(AudioChannel.anIntArray1969[var2], Player.anIntArray3954[var2], Class3_Sub28_Sub18.anIntArray3768[var2], Entity.anIntArray2794[var2], 16711935, 128); + } + } + } + + LinkedList.method1214(Class106.anInt1446, Class102.player.xAxis, Class102.player.yAxis, WorldListCountry.localPlane); + Class106.anInt1446 = 0; + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "ha.G(" + var0 + ')'); + } + } + + static void method1129(int var0, int var1, int var2, int var4) { + try { + int var5 = 0; + int var6 = var2; + int var7 = -var2; + int var8 = -1; + int var9 = Class40.method1040(Class3_Sub28_Sub18.anInt3765, var2 + var4, Class101.anInt1425); + int var10 = Class40.method1040(Class3_Sub28_Sub18.anInt3765, var4 - var2, Class101.anInt1425); + TextureOperation18.method282(Class38.anIntArrayArray663[var1], var10, -98, var9, var0); + + while (var6 > var5) { + var8 += 2; + var7 += var8; + int var11; + int var12; + int var13; + int var14; + if (var7 > 0) { + --var6; + var11 = -var6 + var1; + var7 -= var6 << 1; + var12 = var1 + var6; + if (var12 >= Class159.anInt2020 && var11 <= Class57.anInt902) { + var13 = Class40.method1040(Class3_Sub28_Sub18.anInt3765, var4 - -var5, Class101.anInt1425); + var14 = Class40.method1040(Class3_Sub28_Sub18.anInt3765, -var5 + var4, Class101.anInt1425); + if (Class57.anInt902 >= var12) { + TextureOperation18.method282(Class38.anIntArrayArray663[var12], var14, 111, var13, var0); + } + + if (Class159.anInt2020 <= var11) { + TextureOperation18.method282(Class38.anIntArrayArray663[var11], var14, -84, var13, var0); + } + } + } + + ++var5; + var11 = -var5 + var1; + var12 = var5 + var1; + if (var12 >= Class159.anInt2020 && var11 <= Class57.anInt902) { + var13 = Class40.method1040(Class3_Sub28_Sub18.anInt3765, var4 - -var6, Class101.anInt1425); + var14 = Class40.method1040(Class3_Sub28_Sub18.anInt3765, -var6 + var4, Class101.anInt1425); + if (var12 <= Class57.anInt902) { + TextureOperation18.method282(Class38.anIntArrayArray663[var12], var14, 90, var13, var0); + } + + if (var11 >= Class159.anInt2020) { + TextureOperation18.method282(Class38.anIntArrayArray663[var11], var14, -103, var13, var0); + } + } + } + + } catch (RuntimeException var15) { + throw ClientErrorException.clientError(var15, "ha.A(" + var0 + ',' + var1 + ',' + var2 + ',' + 0 + ',' + var4 + ')'); + } + } + + static void method831(String var1) { + System.out.println("Error: " + InterfaceWidget.a("%0a", "\n", var1)); + } + + static void method2278(int var0) { + try { + boolean var1 = false; + + while (!var1) { + var1 = true; + + for (int var2 = 0; -1 + Unsorted.menuOptionCount > var2; ++var2) { + if (TextureOperation27.aShortArray3095[var2] < 1000 && TextureOperation27.aShortArray3095[1 + var2] > 1000) { + RSString var3 = Class163_Sub2_Sub1.aStringArray4016[var2]; + var1 = false; + Class163_Sub2_Sub1.aStringArray4016[var2] = Class163_Sub2_Sub1.aStringArray4016[1 + var2]; + Class163_Sub2_Sub1.aStringArray4016[1 + var2] = var3; + RSString var4 = GroundItem.aStringArray2935[var2]; + GroundItem.aStringArray2935[var2] = GroundItem.aStringArray2935[var2 + 1]; + GroundItem.aStringArray2935[var2 - -1] = var4; + int var5 = Class117.anIntArray1613[var2]; + Class117.anIntArray1613[var2] = Class117.anIntArray1613[1 + var2]; + Class117.anIntArray1613[var2 + 1] = var5; + var5 = Class27.anIntArray512[var2]; + Class27.anIntArray512[var2] = Class27.anIntArray512[var2 + 1]; + Class27.anIntArray512[1 + var2] = var5; + var5 = Class114.anIntArray1578[var2]; + Class114.anIntArray1578[var2] = Class114.anIntArray1578[1 + var2]; + Class114.anIntArray1578[var2 - -1] = var5; + short var6 = TextureOperation27.aShortArray3095[var2]; + TextureOperation27.aShortArray3095[var2] = TextureOperation27.aShortArray3095[1 + var2]; + TextureOperation27.aShortArray3095[var2 + 1] = var6; + long var7 = Unsorted.aLongArray3271[var2]; + Unsorted.aLongArray3271[var2] = Unsorted.aLongArray3271[var2 + 1]; + Unsorted.aLongArray3271[var2 - -1] = var7; + } + } + } + + } catch (RuntimeException var9) { + throw ClientErrorException.clientError(var9, "wl.D(" + var0 + ')'); + } + } +} diff --git a/Client/src/main/java/org/runite/client/Class50.java b/Client/src/main/java/org/runite/client/Class50.java new file mode 100644 index 000000000..6eb5c7419 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class50.java @@ -0,0 +1,102 @@ +package org.runite.client; + +public final class Class50 { + + static int anInt820 = 0; + static AbstractSprite aAbstractSprite_824; + public static long[] aLongArray826 = new long[200]; + static int anInt828 = 0; + int anInt821; + int anInt823; + int anInt830; + int anInt831; + + + public Class50() { + } + + Class50(Class50 var1) { + try { + this.anInt823 = var1.anInt823; + this.anInt831 = var1.anInt831; + this.anInt821 = var1.anInt821; + this.anInt830 = var1.anInt830; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "hd.(" + "null" + ')'); + } + } + + static void method1131(int var0, int var1, int var2, int var3, int var4, int var5, int var6, int var7) { + try { + if (var6 >= 0 && 0 <= var4 && var6 < 103 && 103 > var4) { + int var9; + if (var5 == 0) { + Class70 var8 = Class154.method2147(var0, var6, var4); + if (var8 != null) { + var9 = Integer.MAX_VALUE & (int) (var8.aLong1048 >>> 32); + if (var3 == 2) { + var8.aClass140_1049 = new Class140_Sub3(var9, 2, 4 + var2, var0, var6, var4, var7, false, var8.aClass140_1049); + var8.aClass140_1052 = new Class140_Sub3(var9, 2, 3 & 1 + var2, var0, var6, var4, var7, false, var8.aClass140_1052); + } else { + var8.aClass140_1049 = new Class140_Sub3(var9, var3, var2, var0, var6, var4, var7, false, var8.aClass140_1049); + } + } + } + + if (var5 == 1) { + Class19 var12 = Class44.method1068(var0, var6, var4); + if (null != var12) { + var9 = (int) (var12.aLong428 >>> 32) & Integer.MAX_VALUE; + if (var3 == 4 || var3 == 5) { + var12.aClass140_429 = new Class140_Sub3(var9, 4, var2, var0, var6, var4, var7, false, var12.aClass140_429); + } else if (var3 == 6) { + var12.aClass140_429 = new Class140_Sub3(var9, 4, var2 - -4, var0, var6, var4, var7, false, var12.aClass140_429); + } else if (7 == var3) { + var12.aClass140_429 = new Class140_Sub3(var9, 4, (var2 - -2 & 3) - -4, var0, var6, var4, var7, false, var12.aClass140_429); + } else if (var3 == 8) { + var12.aClass140_429 = new Class140_Sub3(var9, 4, 4 + var2, var0, var6, var4, var7, false, var12.aClass140_429); + var12.aClass140_423 = new Class140_Sub3(var9, 4, (2 + var2 & 3) + 4, var0, var6, var4, var7, false, var12.aClass140_423); + } + } + } + + if (var5 == 2) { + if (var3 == 11) { + var3 = 10; + } + + Class25 var11 = Class75.method1336(var0, var6, var4); + if (var11 != null) { + var11.aClass140_479 = new Class140_Sub3((int) (var11.aLong498 >>> 32) & Integer.MAX_VALUE, var3, var2, var0, var6, var4, var7, false, var11.aClass140_479); + } + } + + if (var5 == 3) { + Class12 var13 = Unsorted.method784(var0, var6, var4); + if (null != var13) { + var13.object = new Class140_Sub3(Integer.MAX_VALUE & (int) (var13.aLong328 >>> 32), 22, var2, var0, var6, var4, var7, false, var13.object); + } + } + } + + if (var1 <= 104) { + method1132(-79); + } + + } catch (RuntimeException var10) { + throw ClientErrorException.clientError(var10, "hd.B(" + var0 + ',' + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + var5 + ',' + var6 + ',' + var7 + ')'); + } + } + + static void method1132(int var0) { + try { + if (var0 != 103) { + method1132(14); + } + + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "hd.A(" + var0 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class51.java b/Client/src/main/java/org/runite/client/Class51.java new file mode 100644 index 000000000..7d343bd27 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class51.java @@ -0,0 +1,3740 @@ +package org.runite.client; + +import org.rs09.client.rendering.Toolkit; + +public final class Class51 { + + private static final int[] anIntArray839 = new int[512]; + static int[] anIntArray834 = new int[65536]; + static int anInt835; + static boolean aBoolean837 = false; + static Interface2 anInterface2_838; + public static int[] anIntArray840 = new int[2048]; + static int[] anIntArray841 = new int[2048]; + static boolean aBoolean843 = true; + static int anInt846; + static int anInt847; + static boolean aBoolean849 = false; + static int anInt850 = 0; + public static int[] anIntArray851 = new int[2048]; + private static int[] anIntArray836 = new int[1024]; + private static boolean aBoolean842 = false; + private static int anInt844; + private static boolean aBoolean845 = false; + private static float aFloat848 = 1.0F; + + static { + int var0; + for (var0 = 1; var0 < 512; ++var0) { + anIntArray839[var0] = 32768 / var0; + } + + for (var0 = 1; var0 < 2048; ++var0) { + anIntArray841[var0] = 65536 / var0; + } + + for (var0 = 0; var0 < 2048; ++var0) { + anIntArray840[var0] = (int) (65536.0D * Math.sin((double) var0 * 0.0030679615D)); + anIntArray851[var0] = (int) (65536.0D * Math.cos((double) var0 * 0.0030679615D)); + } + + } + + static void method1134() { + method1151(Toolkit.JAVA_TOOLKIT.clipLeft, Toolkit.JAVA_TOOLKIT.clipTop, Toolkit.JAVA_TOOLKIT.clipRight, Toolkit.JAVA_TOOLKIT.clipBottom); + } + + static void method1135(int var0, int var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9, int var10, int var11, int var12, int var13, int var14, int var15, int var16, int var17, int var18) { + int[] var19 = anInterface2_838.method13(var18, true, aFloat848); + int var20; + if (var19 == null) { + var20 = anInterface2_838.method15(var18, 65535); + method1154(var0, var1, var2, var3, var4, var5, method1136(var20, var6), method1136(var20, var7), method1136(var20, var8)); + } else { + aBoolean845 = anInterface2_838.method14((byte) -106, var18); + aBoolean842 = anInterface2_838.method7((byte) 88, var18); + var20 = var4 - var3; + int var21 = var1 - var0; + int var22 = var5 - var3; + int var23 = var2 - var0; + int var24 = var7 - var6; + int var25 = var8 - var6; + int var26 = 0; + if (var1 != var0) { + var26 = (var4 - var3 << 16) / (var1 - var0); + } + + int var27 = 0; + if (var2 != var1) { + var27 = (var5 - var4 << 16) / (var2 - var1); + } + + int var28 = 0; + if (var2 != var0) { + var28 = (var3 - var5 << 16) / (var0 - var2); + } + + int var29 = var20 * var23 - var22 * var21; + if (var29 != 0) { + int var30 = (var24 * var23 - var25 * var21 << 9) / var29; + int var31 = (var25 * var20 - var24 * var22 << 9) / var29; + var10 = var9 - var10; + var13 = var12 - var13; + var16 = var15 - var16; + var11 -= var9; + var14 -= var12; + var17 -= var15; + int var32 = var11 * var12 - var14 * var9 << 14; + int var33 = var14 * var15 - var17 * var12 << 5; + int var34 = var17 * var9 - var11 * var15 << 5; + int var35 = var10 * var12 - var13 * var9 << 14; + int var36 = var13 * var15 - var16 * var12 << 5; + int var37 = var16 * var9 - var10 * var15 << 5; + int var38 = var13 * var11 - var10 * var14 << 14; + int var39 = var16 * var14 - var13 * var17 << 5; + int var40 = var10 * var17 - var16 * var11 << 5; + int var41; + if (var0 <= var1 && var0 <= var2) { + if (var0 < anInt844) { + if (var1 > anInt844) { + var1 = anInt844; + } + + if (var2 > anInt844) { + var2 = anInt844; + } + + var6 = (var6 << 9) - var30 * var3 + var30; + if (var1 < var2) { + var5 = var3 <<= 16; + if (var0 < 0) { + var5 -= var28 * var0; + var3 -= var26 * var0; + var6 -= var31 * var0; + var0 = 0; + } + + var4 <<= 16; + if (var1 < 0) { + var4 -= var27 * var1; + var1 = 0; + } + + var41 = var0 - anInt835; + var32 += var34 * var41; + var35 += var37 * var41; + var38 += var40 * var41; + if ((var0 == var1 || var28 >= var26) && (var0 != var1 || var28 <= var27)) { + var2 -= var1; + var1 -= var0; + var0 = anIntArray836[var0]; + + while (true) { + --var1; + if (var1 < 0) { + while (true) { + --var2; + if (var2 < 0) { + return; + } + + method1143(Toolkit.JAVA_TOOLKIT.getBuffer(), var19, var0, var4 >> 16, var5 >> 16, var6, var30, var32, var35, var38, var33, var36, var39); + var5 += var28; + var4 += var27; + var6 += var31; + var0 += Toolkit.JAVA_TOOLKIT.width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + + method1143(Toolkit.JAVA_TOOLKIT.getBuffer(), var19, var0, var3 >> 16, var5 >> 16, var6, var30, var32, var35, var38, var33, var36, var39); + var5 += var28; + var3 += var26; + var6 += var31; + var0 += Toolkit.JAVA_TOOLKIT.width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } else { + var2 -= var1; + var1 -= var0; + var0 = anIntArray836[var0]; + + while (true) { + --var1; + if (var1 < 0) { + while (true) { + --var2; + if (var2 < 0) { + return; + } + + method1143(Toolkit.JAVA_TOOLKIT.getBuffer(), var19, var0, var5 >> 16, var4 >> 16, var6, var30, var32, var35, var38, var33, var36, var39); + var5 += var28; + var4 += var27; + var6 += var31; + var0 += Toolkit.JAVA_TOOLKIT.width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + + method1143(Toolkit.JAVA_TOOLKIT.getBuffer(), var19, var0, var5 >> 16, var3 >> 16, var6, var30, var32, var35, var38, var33, var36, var39); + var5 += var28; + var3 += var26; + var6 += var31; + var0 += Toolkit.JAVA_TOOLKIT.width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + } else { + var4 = var3 <<= 16; + if (var0 < 0) { + var4 -= var28 * var0; + var3 -= var26 * var0; + var6 -= var31 * var0; + var0 = 0; + } + + var5 <<= 16; + if (var2 < 0) { + var5 -= var27 * var2; + var2 = 0; + } + + var41 = var0 - anInt835; + var32 += var34 * var41; + var35 += var37 * var41; + var38 += var40 * var41; + if ((var0 == var2 || var28 >= var26) && (var0 != var2 || var27 <= var26)) { + var1 -= var2; + var2 -= var0; + var0 = anIntArray836[var0]; + + while (true) { + --var2; + if (var2 < 0) { + while (true) { + --var1; + if (var1 < 0) { + return; + } + + method1143(Toolkit.JAVA_TOOLKIT.getBuffer(), var19, var0, var3 >> 16, var5 >> 16, var6, var30, var32, var35, var38, var33, var36, var39); + var5 += var27; + var3 += var26; + var6 += var31; + var0 += Toolkit.JAVA_TOOLKIT.width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + + method1143(Toolkit.JAVA_TOOLKIT.getBuffer(), var19, var0, var3 >> 16, var4 >> 16, var6, var30, var32, var35, var38, var33, var36, var39); + var4 += var28; + var3 += var26; + var6 += var31; + var0 += Toolkit.JAVA_TOOLKIT.width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } else { + var1 -= var2; + var2 -= var0; + var0 = anIntArray836[var0]; + + while (true) { + --var2; + if (var2 < 0) { + while (true) { + --var1; + if (var1 < 0) { + return; + } + + method1143(Toolkit.JAVA_TOOLKIT.getBuffer(), var19, var0, var5 >> 16, var3 >> 16, var6, var30, var32, var35, var38, var33, var36, var39); + var5 += var27; + var3 += var26; + var6 += var31; + var0 += Toolkit.JAVA_TOOLKIT.width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + + method1143(Toolkit.JAVA_TOOLKIT.getBuffer(), var19, var0, var4 >> 16, var3 >> 16, var6, var30, var32, var35, var38, var33, var36, var39); + var4 += var28; + var3 += var26; + var6 += var31; + var0 += Toolkit.JAVA_TOOLKIT.width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + } + } + } else if (var1 <= var2) { + if (var1 < anInt844) { + if (var2 > anInt844) { + var2 = anInt844; + } + + if (var0 > anInt844) { + var0 = anInt844; + } + + var7 = (var7 << 9) - var30 * var4 + var30; + if (var2 < var0) { + var3 = var4 <<= 16; + if (var1 < 0) { + var3 -= var26 * var1; + var4 -= var27 * var1; + var7 -= var31 * var1; + var1 = 0; + } + + var5 <<= 16; + if (var2 < 0) { + var5 -= var28 * var2; + var2 = 0; + } + + var41 = var1 - anInt835; + var32 += var34 * var41; + var35 += var37 * var41; + var38 += var40 * var41; + if ((var1 == var2 || var26 >= var27) && (var1 != var2 || var26 <= var28)) { + var0 -= var2; + var2 -= var1; + var1 = anIntArray836[var1]; + + while (true) { + --var2; + if (var2 < 0) { + while (true) { + --var0; + if (var0 < 0) { + return; + } + + method1143(Toolkit.JAVA_TOOLKIT.getBuffer(), var19, var1, var5 >> 16, var3 >> 16, var7, var30, var32, var35, var38, var33, var36, var39); + var3 += var26; + var5 += var28; + var7 += var31; + var1 += Toolkit.JAVA_TOOLKIT.width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + + method1143(Toolkit.JAVA_TOOLKIT.getBuffer(), var19, var1, var4 >> 16, var3 >> 16, var7, var30, var32, var35, var38, var33, var36, var39); + var3 += var26; + var4 += var27; + var7 += var31; + var1 += Toolkit.JAVA_TOOLKIT.width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } else { + var0 -= var2; + var2 -= var1; + var1 = anIntArray836[var1]; + + while (true) { + --var2; + if (var2 < 0) { + while (true) { + --var0; + if (var0 < 0) { + return; + } + + method1143(Toolkit.JAVA_TOOLKIT.getBuffer(), var19, var1, var3 >> 16, var5 >> 16, var7, var30, var32, var35, var38, var33, var36, var39); + var3 += var26; + var5 += var28; + var7 += var31; + var1 += Toolkit.JAVA_TOOLKIT.width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + + method1143(Toolkit.JAVA_TOOLKIT.getBuffer(), var19, var1, var3 >> 16, var4 >> 16, var7, var30, var32, var35, var38, var33, var36, var39); + var3 += var26; + var4 += var27; + var7 += var31; + var1 += Toolkit.JAVA_TOOLKIT.width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + } else { + var5 = var4 <<= 16; + if (var1 < 0) { + var5 -= var26 * var1; + var4 -= var27 * var1; + var7 -= var31 * var1; + var1 = 0; + } + + var3 <<= 16; + if (var0 < 0) { + var3 -= var28 * var0; + var0 = 0; + } + + var41 = var1 - anInt835; + var32 += var34 * var41; + var35 += var37 * var41; + var38 += var40 * var41; + if (var26 < var27) { + var2 -= var0; + var0 -= var1; + var1 = anIntArray836[var1]; + + while (true) { + --var0; + if (var0 < 0) { + while (true) { + --var2; + if (var2 < 0) { + return; + } + + method1143(Toolkit.JAVA_TOOLKIT.getBuffer(), var19, var1, var3 >> 16, var4 >> 16, var7, var30, var32, var35, var38, var33, var36, var39); + var3 += var28; + var4 += var27; + var7 += var31; + var1 += Toolkit.JAVA_TOOLKIT.width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + + method1143(Toolkit.JAVA_TOOLKIT.getBuffer(), var19, var1, var5 >> 16, var4 >> 16, var7, var30, var32, var35, var38, var33, var36, var39); + var5 += var26; + var4 += var27; + var7 += var31; + var1 += Toolkit.JAVA_TOOLKIT.width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } else { + var2 -= var0; + var0 -= var1; + var1 = anIntArray836[var1]; + + while (true) { + --var0; + if (var0 < 0) { + while (true) { + --var2; + if (var2 < 0) { + return; + } + + method1143(Toolkit.JAVA_TOOLKIT.getBuffer(), var19, var1, var4 >> 16, var3 >> 16, var7, var30, var32, var35, var38, var33, var36, var39); + var3 += var28; + var4 += var27; + var7 += var31; + var1 += Toolkit.JAVA_TOOLKIT.width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + + method1143(Toolkit.JAVA_TOOLKIT.getBuffer(), var19, var1, var4 >> 16, var5 >> 16, var7, var30, var32, var35, var38, var33, var36, var39); + var5 += var26; + var4 += var27; + var7 += var31; + var1 += Toolkit.JAVA_TOOLKIT.width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + } + } + } else if (var2 < anInt844) { + if (var0 > anInt844) { + var0 = anInt844; + } + + if (var1 > anInt844) { + var1 = anInt844; + } + + var8 = (var8 << 9) - var30 * var5 + var30; + if (var0 < var1) { + var4 = var5 <<= 16; + if (var2 < 0) { + var4 -= var27 * var2; + var5 -= var28 * var2; + var8 -= var31 * var2; + var2 = 0; + } + + var3 <<= 16; + if (var0 < 0) { + var3 -= var26 * var0; + var0 = 0; + } + + var41 = var2 - anInt835; + var32 += var34 * var41; + var35 += var37 * var41; + var38 += var40 * var41; + if (var27 < var28) { + var1 -= var0; + var0 -= var2; + var2 = anIntArray836[var2]; + + while (true) { + --var0; + if (var0 < 0) { + while (true) { + --var1; + if (var1 < 0) { + return; + } + + method1143(Toolkit.JAVA_TOOLKIT.getBuffer(), var19, var2, var4 >> 16, var3 >> 16, var8, var30, var32, var35, var38, var33, var36, var39); + var4 += var27; + var3 += var26; + var8 += var31; + var2 += Toolkit.JAVA_TOOLKIT.width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + + method1143(Toolkit.JAVA_TOOLKIT.getBuffer(), var19, var2, var4 >> 16, var5 >> 16, var8, var30, var32, var35, var38, var33, var36, var39); + var4 += var27; + var5 += var28; + var8 += var31; + var2 += Toolkit.JAVA_TOOLKIT.width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } else { + var1 -= var0; + var0 -= var2; + var2 = anIntArray836[var2]; + + while (true) { + --var0; + if (var0 < 0) { + while (true) { + --var1; + if (var1 < 0) { + return; + } + + method1143(Toolkit.JAVA_TOOLKIT.getBuffer(), var19, var2, var3 >> 16, var4 >> 16, var8, var30, var32, var35, var38, var33, var36, var39); + var4 += var27; + var3 += var26; + var8 += var31; + var2 += Toolkit.JAVA_TOOLKIT.width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + + method1143(Toolkit.JAVA_TOOLKIT.getBuffer(), var19, var2, var5 >> 16, var4 >> 16, var8, var30, var32, var35, var38, var33, var36, var39); + var4 += var27; + var5 += var28; + var8 += var31; + var2 += Toolkit.JAVA_TOOLKIT.width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + } else { + var3 = var5 <<= 16; + if (var2 < 0) { + var3 -= var27 * var2; + var5 -= var28 * var2; + var8 -= var31 * var2; + var2 = 0; + } + + var4 <<= 16; + if (var1 < 0) { + var4 -= var26 * var1; + var1 = 0; + } + + var41 = var2 - anInt835; + var32 += var34 * var41; + var35 += var37 * var41; + var38 += var40 * var41; + if (var27 < var28) { + var0 -= var1; + var1 -= var2; + var2 = anIntArray836[var2]; + + while (true) { + --var1; + if (var1 < 0) { + while (true) { + --var0; + if (var0 < 0) { + return; + } + + method1143(Toolkit.JAVA_TOOLKIT.getBuffer(), var19, var2, var4 >> 16, var5 >> 16, var8, var30, var32, var35, var38, var33, var36, var39); + var4 += var26; + var5 += var28; + var8 += var31; + var2 += Toolkit.JAVA_TOOLKIT.width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + + method1143(Toolkit.JAVA_TOOLKIT.getBuffer(), var19, var2, var3 >> 16, var5 >> 16, var8, var30, var32, var35, var38, var33, var36, var39); + var3 += var27; + var5 += var28; + var8 += var31; + var2 += Toolkit.JAVA_TOOLKIT.width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } else { + var0 -= var1; + var1 -= var2; + var2 = anIntArray836[var2]; + + while (true) { + --var1; + if (var1 < 0) { + while (true) { + --var0; + if (var0 < 0) { + return; + } + + method1143(Toolkit.JAVA_TOOLKIT.getBuffer(), var19, var2, var5 >> 16, var4 >> 16, var8, var30, var32, var35, var38, var33, var36, var39); + var4 += var26; + var5 += var28; + var8 += var31; + var2 += Toolkit.JAVA_TOOLKIT.width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + + method1143(Toolkit.JAVA_TOOLKIT.getBuffer(), var19, var2, var5 >> 16, var3 >> 16, var8, var30, var32, var35, var38, var33, var36, var39); + var3 += var27; + var5 += var28; + var8 += var31; + var2 += Toolkit.JAVA_TOOLKIT.width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + } + } + } + } + } + + private static int method1136(int var0, int var1) { + var1 = var1 * (var0 & 127) >> 7; + if (var1 < 2) { + var1 = 2; + } else if (var1 > 126) { + var1 = 126; + } + + return (var0 & '\uff80') + var1; + } + + static void method1137(float var0) { + method1152(var0); + method1150(); + } + + static void method1138(int var0, int var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9, int var10, int var11, int var12, int var13, int var14, int var15, int var16, int var17, int var18) { + int[] var19 = anInterface2_838.method13(var18, true, aFloat848); + int var20; + if (var19 != null && anInt850 <= 10) { + aBoolean845 = anInterface2_838.method14((byte) -115, var18); + aBoolean842 = anInterface2_838.method7((byte) 88, var18); + var20 = var4 - var3; + int var21 = var1 - var0; + int var22 = var5 - var3; + int var23 = var2 - var0; + int var24 = var7 - var6; + int var25 = var8 - var6; + int var26 = 0; + if (var1 != var0) { + var26 = (var4 - var3 << 16) / (var1 - var0); + } + + int var27 = 0; + if (var2 != var1) { + var27 = (var5 - var4 << 16) / (var2 - var1); + } + + int var28 = 0; + if (var2 != var0) { + var28 = (var3 - var5 << 16) / (var0 - var2); + } + + int var29 = var20 * var23 - var22 * var21; + if (var29 != 0) { + int var30 = (var24 * var23 - var25 * var21 << 9) / var29; + int var31 = (var25 * var20 - var24 * var22 << 9) / var29; + var10 = var9 - var10; + var13 = var12 - var13; + var16 = var15 - var16; + var11 -= var9; + var14 -= var12; + var17 -= var15; + int var32 = var11 * var12 - var14 * var9 << 14; + int var33 = var14 * var15 - var17 * var12 << 8; + int var34 = var17 * var9 - var11 * var15 << 5; + int var35 = var10 * var12 - var13 * var9 << 14; + int var36 = var13 * var15 - var16 * var12 << 8; + int var37 = var16 * var9 - var10 * var15 << 5; + int var38 = var13 * var11 - var10 * var14 << 14; + int var39 = var16 * var14 - var13 * var17 << 8; + int var40 = var10 * var17 - var16 * var11 << 5; + int var41; + if (var0 <= var1 && var0 <= var2) { + if (var0 < anInt844) { + if (var1 > anInt844) { + var1 = anInt844; + } + + if (var2 > anInt844) { + var2 = anInt844; + } + + var6 = (var6 << 9) - var30 * var3 + var30; + if (var1 < var2) { + var5 = var3 <<= 16; + if (var0 < 0) { + var5 -= var28 * var0; + var3 -= var26 * var0; + var6 -= var31 * var0; + var0 = 0; + } + + var4 <<= 16; + if (var1 < 0) { + var4 -= var27 * var1; + var1 = 0; + } + + var41 = var0 - anInt835; + var32 += var34 * var41; + var35 += var37 * var41; + var38 += var40 * var41; + if ((var0 == var1 || var28 >= var26) && (var0 != var1 || var28 <= var27)) { + var2 -= var1; + var1 -= var0; + var0 = anIntArray836[var0]; + + while (true) { + --var1; + if (var1 < 0) { + while (true) { + --var2; + if (var2 < 0) { + return; + } + + method1142(Toolkit.JAVA_TOOLKIT.getBuffer(), var19, var0, var4 >> 16, var5 >> 16, var6, var30, var32, var35, var38, var33, var36, var39); + var5 += var28; + var4 += var27; + var6 += var31; + var0 += Toolkit.JAVA_TOOLKIT.width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + + method1142(Toolkit.JAVA_TOOLKIT.getBuffer(), var19, var0, var3 >> 16, var5 >> 16, var6, var30, var32, var35, var38, var33, var36, var39); + var5 += var28; + var3 += var26; + var6 += var31; + var0 += Toolkit.JAVA_TOOLKIT.width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } else { + var2 -= var1; + var1 -= var0; + var0 = anIntArray836[var0]; + + while (true) { + --var1; + if (var1 < 0) { + while (true) { + --var2; + if (var2 < 0) { + return; + } + + method1142(Toolkit.JAVA_TOOLKIT.getBuffer(), var19, var0, var5 >> 16, var4 >> 16, var6, var30, var32, var35, var38, var33, var36, var39); + var5 += var28; + var4 += var27; + var6 += var31; + var0 += Toolkit.JAVA_TOOLKIT.width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + + method1142(Toolkit.JAVA_TOOLKIT.getBuffer(), var19, var0, var5 >> 16, var3 >> 16, var6, var30, var32, var35, var38, var33, var36, var39); + var5 += var28; + var3 += var26; + var6 += var31; + var0 += Toolkit.JAVA_TOOLKIT.width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + } else { + var4 = var3 <<= 16; + if (var0 < 0) { + var4 -= var28 * var0; + var3 -= var26 * var0; + var6 -= var31 * var0; + var0 = 0; + } + + var5 <<= 16; + if (var2 < 0) { + var5 -= var27 * var2; + var2 = 0; + } + + var41 = var0 - anInt835; + var32 += var34 * var41; + var35 += var37 * var41; + var38 += var40 * var41; + if ((var0 == var2 || var28 >= var26) && (var0 != var2 || var27 <= var26)) { + var1 -= var2; + var2 -= var0; + var0 = anIntArray836[var0]; + + while (true) { + --var2; + if (var2 < 0) { + while (true) { + --var1; + if (var1 < 0) { + return; + } + + method1142(Toolkit.JAVA_TOOLKIT.getBuffer(), var19, var0, var3 >> 16, var5 >> 16, var6, var30, var32, var35, var38, var33, var36, var39); + var5 += var27; + var3 += var26; + var6 += var31; + var0 += Toolkit.JAVA_TOOLKIT.width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + + method1142(Toolkit.JAVA_TOOLKIT.getBuffer(), var19, var0, var3 >> 16, var4 >> 16, var6, var30, var32, var35, var38, var33, var36, var39); + var4 += var28; + var3 += var26; + var6 += var31; + var0 += Toolkit.JAVA_TOOLKIT.width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } else { + var1 -= var2; + var2 -= var0; + var0 = anIntArray836[var0]; + + while (true) { + --var2; + if (var2 < 0) { + while (true) { + --var1; + if (var1 < 0) { + return; + } + + method1142(Toolkit.JAVA_TOOLKIT.getBuffer(), var19, var0, var5 >> 16, var3 >> 16, var6, var30, var32, var35, var38, var33, var36, var39); + var5 += var27; + var3 += var26; + var6 += var31; + var0 += Toolkit.JAVA_TOOLKIT.width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + + method1142(Toolkit.JAVA_TOOLKIT.getBuffer(), var19, var0, var4 >> 16, var3 >> 16, var6, var30, var32, var35, var38, var33, var36, var39); + var4 += var28; + var3 += var26; + var6 += var31; + var0 += Toolkit.JAVA_TOOLKIT.width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + } + } + } else if (var1 <= var2) { + if (var1 < anInt844) { + if (var2 > anInt844) { + var2 = anInt844; + } + + if (var0 > anInt844) { + var0 = anInt844; + } + + var7 = (var7 << 9) - var30 * var4 + var30; + if (var2 < var0) { + var3 = var4 <<= 16; + if (var1 < 0) { + var3 -= var26 * var1; + var4 -= var27 * var1; + var7 -= var31 * var1; + var1 = 0; + } + + var5 <<= 16; + if (var2 < 0) { + var5 -= var28 * var2; + var2 = 0; + } + + var41 = var1 - anInt835; + var32 += var34 * var41; + var35 += var37 * var41; + var38 += var40 * var41; + if ((var1 == var2 || var26 >= var27) && (var1 != var2 || var26 <= var28)) { + var0 -= var2; + var2 -= var1; + var1 = anIntArray836[var1]; + + while (true) { + --var2; + if (var2 < 0) { + while (true) { + --var0; + if (var0 < 0) { + return; + } + + method1142(Toolkit.JAVA_TOOLKIT.getBuffer(), var19, var1, var5 >> 16, var3 >> 16, var7, var30, var32, var35, var38, var33, var36, var39); + var3 += var26; + var5 += var28; + var7 += var31; + var1 += Toolkit.JAVA_TOOLKIT.width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + + method1142(Toolkit.JAVA_TOOLKIT.getBuffer(), var19, var1, var4 >> 16, var3 >> 16, var7, var30, var32, var35, var38, var33, var36, var39); + var3 += var26; + var4 += var27; + var7 += var31; + var1 += Toolkit.JAVA_TOOLKIT.width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } else { + var0 -= var2; + var2 -= var1; + var1 = anIntArray836[var1]; + + while (true) { + --var2; + if (var2 < 0) { + while (true) { + --var0; + if (var0 < 0) { + return; + } + + method1142(Toolkit.JAVA_TOOLKIT.getBuffer(), var19, var1, var3 >> 16, var5 >> 16, var7, var30, var32, var35, var38, var33, var36, var39); + var3 += var26; + var5 += var28; + var7 += var31; + var1 += Toolkit.JAVA_TOOLKIT.width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + + method1142(Toolkit.JAVA_TOOLKIT.getBuffer(), var19, var1, var3 >> 16, var4 >> 16, var7, var30, var32, var35, var38, var33, var36, var39); + var3 += var26; + var4 += var27; + var7 += var31; + var1 += Toolkit.JAVA_TOOLKIT.width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + } else { + var5 = var4 <<= 16; + if (var1 < 0) { + var5 -= var26 * var1; + var4 -= var27 * var1; + var7 -= var31 * var1; + var1 = 0; + } + + var3 <<= 16; + if (var0 < 0) { + var3 -= var28 * var0; + var0 = 0; + } + + var41 = var1 - anInt835; + var32 += var34 * var41; + var35 += var37 * var41; + var38 += var40 * var41; + if (var26 < var27) { + var2 -= var0; + var0 -= var1; + var1 = anIntArray836[var1]; + + while (true) { + --var0; + if (var0 < 0) { + while (true) { + --var2; + if (var2 < 0) { + return; + } + + method1142(Toolkit.JAVA_TOOLKIT.getBuffer(), var19, var1, var3 >> 16, var4 >> 16, var7, var30, var32, var35, var38, var33, var36, var39); + var3 += var28; + var4 += var27; + var7 += var31; + var1 += Toolkit.JAVA_TOOLKIT.width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + + method1142(Toolkit.JAVA_TOOLKIT.getBuffer(), var19, var1, var5 >> 16, var4 >> 16, var7, var30, var32, var35, var38, var33, var36, var39); + var5 += var26; + var4 += var27; + var7 += var31; + var1 += Toolkit.JAVA_TOOLKIT.width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } else { + var2 -= var0; + var0 -= var1; + var1 = anIntArray836[var1]; + + while (true) { + --var0; + if (var0 < 0) { + while (true) { + --var2; + if (var2 < 0) { + return; + } + + method1142(Toolkit.JAVA_TOOLKIT.getBuffer(), var19, var1, var4 >> 16, var3 >> 16, var7, var30, var32, var35, var38, var33, var36, var39); + var3 += var28; + var4 += var27; + var7 += var31; + var1 += Toolkit.JAVA_TOOLKIT.width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + + method1142(Toolkit.JAVA_TOOLKIT.getBuffer(), var19, var1, var4 >> 16, var5 >> 16, var7, var30, var32, var35, var38, var33, var36, var39); + var5 += var26; + var4 += var27; + var7 += var31; + var1 += Toolkit.JAVA_TOOLKIT.width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + } + } + } else if (var2 < anInt844) { + if (var0 > anInt844) { + var0 = anInt844; + } + + if (var1 > anInt844) { + var1 = anInt844; + } + + var8 = (var8 << 9) - var30 * var5 + var30; + if (var0 < var1) { + var4 = var5 <<= 16; + if (var2 < 0) { + var4 -= var27 * var2; + var5 -= var28 * var2; + var8 -= var31 * var2; + var2 = 0; + } + + var3 <<= 16; + if (var0 < 0) { + var3 -= var26 * var0; + var0 = 0; + } + + var41 = var2 - anInt835; + var32 += var34 * var41; + var35 += var37 * var41; + var38 += var40 * var41; + if (var27 < var28) { + var1 -= var0; + var0 -= var2; + var2 = anIntArray836[var2]; + + while (true) { + --var0; + if (var0 < 0) { + while (true) { + --var1; + if (var1 < 0) { + return; + } + + method1142(Toolkit.JAVA_TOOLKIT.getBuffer(), var19, var2, var4 >> 16, var3 >> 16, var8, var30, var32, var35, var38, var33, var36, var39); + var4 += var27; + var3 += var26; + var8 += var31; + var2 += Toolkit.JAVA_TOOLKIT.width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + + method1142(Toolkit.JAVA_TOOLKIT.getBuffer(), var19, var2, var4 >> 16, var5 >> 16, var8, var30, var32, var35, var38, var33, var36, var39); + var4 += var27; + var5 += var28; + var8 += var31; + var2 += Toolkit.JAVA_TOOLKIT.width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } else { + var1 -= var0; + var0 -= var2; + var2 = anIntArray836[var2]; + + while (true) { + --var0; + if (var0 < 0) { + while (true) { + --var1; + if (var1 < 0) { + return; + } + + method1142(Toolkit.JAVA_TOOLKIT.getBuffer(), var19, var2, var3 >> 16, var4 >> 16, var8, var30, var32, var35, var38, var33, var36, var39); + var4 += var27; + var3 += var26; + var8 += var31; + var2 += Toolkit.JAVA_TOOLKIT.width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + + method1142(Toolkit.JAVA_TOOLKIT.getBuffer(), var19, var2, var5 >> 16, var4 >> 16, var8, var30, var32, var35, var38, var33, var36, var39); + var4 += var27; + var5 += var28; + var8 += var31; + var2 += Toolkit.JAVA_TOOLKIT.width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + } else { + var3 = var5 <<= 16; + if (var2 < 0) { + var3 -= var27 * var2; + var5 -= var28 * var2; + var8 -= var31 * var2; + var2 = 0; + } + + var4 <<= 16; + if (var1 < 0) { + var4 -= var26 * var1; + var1 = 0; + } + + var41 = var2 - anInt835; + var32 += var34 * var41; + var35 += var37 * var41; + var38 += var40 * var41; + if (var27 < var28) { + var0 -= var1; + var1 -= var2; + var2 = anIntArray836[var2]; + + while (true) { + --var1; + if (var1 < 0) { + while (true) { + --var0; + if (var0 < 0) { + return; + } + + method1142(Toolkit.JAVA_TOOLKIT.getBuffer(), var19, var2, var4 >> 16, var5 >> 16, var8, var30, var32, var35, var38, var33, var36, var39); + var4 += var26; + var5 += var28; + var8 += var31; + var2 += Toolkit.JAVA_TOOLKIT.width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + + method1142(Toolkit.JAVA_TOOLKIT.getBuffer(), var19, var2, var3 >> 16, var5 >> 16, var8, var30, var32, var35, var38, var33, var36, var39); + var3 += var27; + var5 += var28; + var8 += var31; + var2 += Toolkit.JAVA_TOOLKIT.width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } else { + var0 -= var1; + var1 -= var2; + var2 = anIntArray836[var2]; + + while (true) { + --var1; + if (var1 < 0) { + while (true) { + --var0; + if (var0 < 0) { + return; + } + + method1142(Toolkit.JAVA_TOOLKIT.getBuffer(), var19, var2, var5 >> 16, var4 >> 16, var8, var30, var32, var35, var38, var33, var36, var39); + var4 += var26; + var5 += var28; + var8 += var31; + var2 += Toolkit.JAVA_TOOLKIT.width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + + method1142(Toolkit.JAVA_TOOLKIT.getBuffer(), var19, var2, var5 >> 16, var3 >> 16, var8, var30, var32, var35, var38, var33, var36, var39); + var3 += var27; + var5 += var28; + var8 += var31; + var2 += Toolkit.JAVA_TOOLKIT.width; + var32 += var34; + var35 += var37; + var38 += var40; + } + } + } + } + } + } else { + var20 = anInterface2_838.method15(var18, 65535); + aBoolean837 = true; + method1154(var0, var1, var2, var3, var4, var5, method1136(var20, var6), method1136(var20, var7), method1136(var20, var8)); + } + } + + static int method1139() { + return anIntArray836[0] % Toolkit.JAVA_TOOLKIT.width; + } + + static void method1140(Interface2 var0) { + anInterface2_838 = var0; + } + + static void method1141() { + anInt846 = anInt847 / 2; + anInt835 = anInt844 / 2; + Class139.screenLowerX = -anInt846; + Class145.screenUpperX = anInt847 - anInt846; + Class1.screenUpperY = -anInt835; + AtmosphereParser.screenLowerY = anInt844 - anInt835; + } + + private static void method1142(int[] var0, int[] var1, int var4, int var5, int var6, int var7, int var8, int var9, int var10, int var11, int var12, int var13, int var14) { + if (aBoolean849) { + if (var6 > anInt847) { + var6 = anInt847; + } + + if (var5 < 0) { + var5 = 0; + } + } + + if (var5 < var6) { + var4 += var5; + var7 += var8 * var5; + int var17 = var6 - var5; + int var15; + int var16; + int var19; + int var18; + int var21; + int var20; + int var23; + int var22; + int var3; + int var2; + if (aBoolean845) { + var23 = var5 - anInt846; + var9 += (var12 >> 3) * var23; + var10 += (var13 >> 3) * var23; + var11 += (var14 >> 3) * var23; + var22 = var11 >> 12; + if (var22 == 0) { + var18 = 0; + var19 = 0; + } else { + var18 = var9 / var22; + var19 = var10 / var22; + } + + var9 += var12; + var10 += var13; + var11 += var14; + var22 = var11 >> 12; + if (var22 == 0) { + var20 = 0; + var21 = 0; + } else { + var20 = var9 / var22; + var21 = var10 / var22; + } + + var2 = (var18 << 20) + var19; + var16 = (var20 - var18 >> 3 << 20) + (var21 - var19 >> 3); + var17 >>= 3; + var8 <<= 3; + var15 = var7 >> 8; + if (aBoolean842) { + if (var17 > 0) { + do { + var3 = var1[(var2 & 4032) + (var2 >>> 26)]; + var0[var4++] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + var2 += var16; + var3 = var1[(var2 & 4032) + (var2 >>> 26)]; + var0[var4++] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + var2 += var16; + var3 = var1[(var2 & 4032) + (var2 >>> 26)]; + var0[var4++] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + var2 += var16; + var3 = var1[(var2 & 4032) + (var2 >>> 26)]; + var0[var4++] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + var2 += var16; + var3 = var1[(var2 & 4032) + (var2 >>> 26)]; + var0[var4++] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + var2 += var16; + var3 = var1[(var2 & 4032) + (var2 >>> 26)]; + var0[var4++] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + var2 += var16; + var3 = var1[(var2 & 4032) + (var2 >>> 26)]; + var0[var4++] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + var2 += var16; + var3 = var1[(var2 & 4032) + (var2 >>> 26)]; + var0[var4++] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + var18 = var20; + var19 = var21; + var9 += var12; + var10 += var13; + var11 += var14; + var22 = var11 >> 12; + if (var22 == 0) { + var20 = 0; + var21 = 0; + } else { + var20 = var9 / var22; + var21 = var10 / var22; + } + + var2 = (var18 << 20) + var19; + var16 = (var20 - var18 >> 3 << 20) + (var21 - var19 >> 3); + var7 += var8; + var15 = var7 >> 8; + --var17; + } while (var17 > 0); + } + + var17 = var6 - var5 & 7; + if (var17 > 0) { + do { + var3 = var1[(var2 & 4032) + (var2 >>> 26)]; + var0[var4++] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + var2 += var16; + --var17; + } while (var17 > 0); + } + } else { + if (var17 > 0) { + do { + if ((var3 = var1[(var2 & 4032) + (var2 >>> 26)]) != 0) { + var0[var4] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + } + + ++var4; + var2 += var16; + if ((var3 = var1[(var2 & 4032) + (var2 >>> 26)]) != 0) { + var0[var4] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + } + + ++var4; + var2 += var16; + if ((var3 = var1[(var2 & 4032) + (var2 >>> 26)]) != 0) { + var0[var4] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + } + + ++var4; + var2 += var16; + if ((var3 = var1[(var2 & 4032) + (var2 >>> 26)]) != 0) { + var0[var4] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + } + + ++var4; + var2 += var16; + if ((var3 = var1[(var2 & 4032) + (var2 >>> 26)]) != 0) { + var0[var4] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + } + + ++var4; + var2 += var16; + if ((var3 = var1[(var2 & 4032) + (var2 >>> 26)]) != 0) { + var0[var4] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + } + + ++var4; + var2 += var16; + if ((var3 = var1[(var2 & 4032) + (var2 >>> 26)]) != 0) { + var0[var4] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + } + + ++var4; + var2 += var16; + if ((var3 = var1[(var2 & 4032) + (var2 >>> 26)]) != 0) { + var0[var4] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + } + + ++var4; + var18 = var20; + var19 = var21; + var9 += var12; + var10 += var13; + var11 += var14; + var22 = var11 >> 12; + if (var22 == 0) { + var20 = 0; + var21 = 0; + } else { + var20 = var9 / var22; + var21 = var10 / var22; + } + + var2 = (var18 << 20) + var19; + var16 = (var20 - var18 >> 3 << 20) + (var21 - var19 >> 3); + var7 += var8; + var15 = var7 >> 8; + --var17; + } while (var17 > 0); + } + + var17 = var6 - var5 & 7; + if (var17 > 0) { + do { + if ((var3 = var1[(var2 & 4032) + (var2 >>> 26)]) != 0) { + var0[var4] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + } + + ++var4; + var2 += var16; + --var17; + } while (var17 > 0); + } + } + } else { + var23 = var5 - anInt846; + var9 += (var12 >> 3) * var23; + var10 += (var13 >> 3) * var23; + var11 += (var14 >> 3) * var23; + var22 = var11 >> 14; + if (var22 == 0) { + var18 = 0; + var19 = 0; + } else { + var18 = var9 / var22; + var19 = var10 / var22; + } + + var9 += var12; + var10 += var13; + var11 += var14; + var22 = var11 >> 14; + if (var22 == 0) { + var20 = 0; + var21 = 0; + } else { + var20 = var9 / var22; + var21 = var10 / var22; + } + + var2 = (var18 << 18) + var19; + var16 = (var20 - var18 >> 3 << 18) + (var21 - var19 >> 3); + var17 >>= 3; + var8 <<= 3; + var15 = var7 >> 8; + if (aBoolean842) { + if (var17 > 0) { + do { + var3 = var1[(var2 & 16256) + (var2 >>> 25)]; + var0[var4++] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + var2 += var16; + var3 = var1[(var2 & 16256) + (var2 >>> 25)]; + var0[var4++] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + var2 += var16; + var3 = var1[(var2 & 16256) + (var2 >>> 25)]; + var0[var4++] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + var2 += var16; + var3 = var1[(var2 & 16256) + (var2 >>> 25)]; + var0[var4++] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + var2 += var16; + var3 = var1[(var2 & 16256) + (var2 >>> 25)]; + var0[var4++] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + var2 += var16; + var3 = var1[(var2 & 16256) + (var2 >>> 25)]; + var0[var4++] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + var2 += var16; + var3 = var1[(var2 & 16256) + (var2 >>> 25)]; + var0[var4++] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + var2 += var16; + var3 = var1[(var2 & 16256) + (var2 >>> 25)]; + var0[var4++] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + var18 = var20; + var19 = var21; + var9 += var12; + var10 += var13; + var11 += var14; + var22 = var11 >> 14; + if (var22 == 0) { + var20 = 0; + var21 = 0; + } else { + var20 = var9 / var22; + var21 = var10 / var22; + } + + var2 = (var18 << 18) + var19; + var16 = (var20 - var18 >> 3 << 18) + (var21 - var19 >> 3); + var7 += var8; + var15 = var7 >> 8; + --var17; + } while (var17 > 0); + } + + var17 = var6 - var5 & 7; + if (var17 > 0) { + do { + var3 = var1[(var2 & 16256) + (var2 >>> 25)]; + var0[var4++] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + var2 += var16; + --var17; + } while (var17 > 0); + } + } else { + if (var17 > 0) { + do { + if ((var3 = var1[(var2 & 16256) + (var2 >>> 25)]) != 0) { + var0[var4] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + } + + ++var4; + var2 += var16; + if ((var3 = var1[(var2 & 16256) + (var2 >>> 25)]) != 0) { + var0[var4] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + } + + ++var4; + var2 += var16; + if ((var3 = var1[(var2 & 16256) + (var2 >>> 25)]) != 0) { + var0[var4] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + } + + ++var4; + var2 += var16; + if ((var3 = var1[(var2 & 16256) + (var2 >>> 25)]) != 0) { + var0[var4] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + } + + ++var4; + var2 += var16; + if ((var3 = var1[(var2 & 16256) + (var2 >>> 25)]) != 0) { + var0[var4] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + } + + ++var4; + var2 += var16; + if ((var3 = var1[(var2 & 16256) + (var2 >>> 25)]) != 0) { + var0[var4] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + } + + ++var4; + var2 += var16; + if ((var3 = var1[(var2 & 16256) + (var2 >>> 25)]) != 0) { + var0[var4] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + } + + ++var4; + var2 += var16; + if ((var3 = var1[(var2 & 16256) + (var2 >>> 25)]) != 0) { + var0[var4] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + } + + ++var4; + var18 = var20; + var19 = var21; + var9 += var12; + var10 += var13; + var11 += var14; + var22 = var11 >> 14; + if (var22 == 0) { + var20 = 0; + var21 = 0; + } else { + var20 = var9 / var22; + var21 = var10 / var22; + } + + var2 = (var18 << 18) + var19; + var16 = (var20 - var18 >> 3 << 18) + (var21 - var19 >> 3); + var7 += var8; + var15 = var7 >> 8; + --var17; + } while (var17 > 0); + } + + var17 = var6 - var5 & 7; + if (var17 > 0) { + do { + if ((var3 = var1[(var2 & 16256) + (var2 >>> 25)]) != 0) { + var0[var4] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + } + + ++var4; + var2 += var16; + --var17; + } while (var17 > 0); + } + } + } + + } + } + + private static void method1143(int[] var0, int[] var1, int var4, int var5, int var6, int var7, int var8, int var9, int var10, int var11, int var12, int var13, int var14) { + if (aBoolean849) { + if (var6 > anInt847) { + var6 = anInt847; + } + + if (var5 < 0) { + var5 = 0; + } + } + + if (var5 < var6) { + var4 += var5; + var7 += var8 * var5; + int var17 = var6 - var5; + int var15; + int var16; + int var19; + int var18; + int var21; + int var20; + int var23; + int var22; + int var3; + int var2; + if (aBoolean845) { + var23 = var5 - anInt846; + var9 += var12 * var23; + var10 += var13 * var23; + var11 += var14 * var23; + var22 = var11 >> 12; + if (var22 == 0) { + var18 = 0; + var19 = 0; + } else { + var18 = var9 / var22; + var19 = var10 / var22; + } + + var9 += var12 * var17; + var10 += var13 * var17; + var11 += var14 * var17; + var22 = var11 >> 12; + if (var22 == 0) { + var20 = 0; + var21 = 0; + } else { + var20 = var9 / var22; + var21 = var10 / var22; + } + + var2 = (var18 << 20) + var19; + var16 = ((var20 - var18) / var17 << 20) + (var21 - var19) / var17; + var17 >>= 3; + var8 <<= 3; + var15 = var7 >> 8; + if (aBoolean842) { + if (var17 > 0) { + do { + var3 = var1[(var2 & 4032) + (var2 >>> 26)]; + var0[var4++] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + var2 += var16; + var3 = var1[(var2 & 4032) + (var2 >>> 26)]; + var0[var4++] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + var2 += var16; + var3 = var1[(var2 & 4032) + (var2 >>> 26)]; + var0[var4++] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + var2 += var16; + var3 = var1[(var2 & 4032) + (var2 >>> 26)]; + var0[var4++] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + var2 += var16; + var3 = var1[(var2 & 4032) + (var2 >>> 26)]; + var0[var4++] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + var2 += var16; + var3 = var1[(var2 & 4032) + (var2 >>> 26)]; + var0[var4++] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + var2 += var16; + var3 = var1[(var2 & 4032) + (var2 >>> 26)]; + var0[var4++] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + var2 += var16; + var3 = var1[(var2 & 4032) + (var2 >>> 26)]; + var0[var4++] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + var2 += var16; + var7 += var8; + var15 = var7 >> 8; + --var17; + } while (var17 > 0); + } + + var17 = var6 - var5 & 7; + if (var17 > 0) { + do { + var3 = var1[(var2 & 4032) + (var2 >>> 26)]; + var0[var4++] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + var2 += var16; + --var17; + } while (var17 > 0); + } + } else { + if (var17 > 0) { + do { + if ((var3 = var1[(var2 & 4032) + (var2 >>> 26)]) != 0) { + var0[var4] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + } + + ++var4; + var2 += var16; + if ((var3 = var1[(var2 & 4032) + (var2 >>> 26)]) != 0) { + var0[var4] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + } + + ++var4; + var2 += var16; + if ((var3 = var1[(var2 & 4032) + (var2 >>> 26)]) != 0) { + var0[var4] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + } + + ++var4; + var2 += var16; + if ((var3 = var1[(var2 & 4032) + (var2 >>> 26)]) != 0) { + var0[var4] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + } + + ++var4; + var2 += var16; + if ((var3 = var1[(var2 & 4032) + (var2 >>> 26)]) != 0) { + var0[var4] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + } + + ++var4; + var2 += var16; + if ((var3 = var1[(var2 & 4032) + (var2 >>> 26)]) != 0) { + var0[var4] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + } + + ++var4; + var2 += var16; + if ((var3 = var1[(var2 & 4032) + (var2 >>> 26)]) != 0) { + var0[var4] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + } + + ++var4; + var2 += var16; + if ((var3 = var1[(var2 & 4032) + (var2 >>> 26)]) != 0) { + var0[var4] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + } + + ++var4; + var2 += var16; + var7 += var8; + var15 = var7 >> 8; + --var17; + } while (var17 > 0); + } + + var17 = var6 - var5 & 7; + if (var17 > 0) { + do { + if ((var3 = var1[(var2 & 4032) + (var2 >>> 26)]) != 0) { + var0[var4] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + } + + ++var4; + var2 += var16; + --var17; + } while (var17 > 0); + } + } + } else { + var23 = var5 - anInt846; + var9 += var12 * var23; + var10 += var13 * var23; + var11 += var14 * var23; + var22 = var11 >> 14; + if (var22 == 0) { + var18 = 0; + var19 = 0; + } else { + var18 = var9 / var22; + var19 = var10 / var22; + } + + var9 += var12 * var17; + var10 += var13 * var17; + var11 += var14 * var17; + var22 = var11 >> 14; + if (var22 == 0) { + var20 = 0; + var21 = 0; + } else { + var20 = var9 / var22; + var21 = var10 / var22; + } + + var2 = (var18 << 18) + var19; + var16 = ((var20 - var18) / var17 << 18) + (var21 - var19) / var17; + var17 >>= 3; + var8 <<= 3; + var15 = var7 >> 8; + if (aBoolean842) { + if (var17 > 0) { + do { + var3 = var1[(var2 & 16256) + (var2 >>> 25)]; + var0[var4++] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + var2 += var16; + var3 = var1[(var2 & 16256) + (var2 >>> 25)]; + var0[var4++] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + var2 += var16; + var3 = var1[(var2 & 16256) + (var2 >>> 25)]; + var0[var4++] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + var2 += var16; + var3 = var1[(var2 & 16256) + (var2 >>> 25)]; + var0[var4++] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + var2 += var16; + var3 = var1[(var2 & 16256) + (var2 >>> 25)]; + var0[var4++] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + var2 += var16; + var3 = var1[(var2 & 16256) + (var2 >>> 25)]; + var0[var4++] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + var2 += var16; + var3 = var1[(var2 & 16256) + (var2 >>> 25)]; + var0[var4++] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + var2 += var16; + var3 = var1[(var2 & 16256) + (var2 >>> 25)]; + var0[var4++] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + var2 += var16; + var7 += var8; + var15 = var7 >> 8; + --var17; + } while (var17 > 0); + } + + var17 = var6 - var5 & 7; + if (var17 > 0) { + do { + var3 = var1[(var2 & 16256) + (var2 >>> 25)]; + var0[var4++] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + var2 += var16; + --var17; + } while (var17 > 0); + } + } else { + if (var17 > 0) { + do { + if ((var3 = var1[(var2 & 16256) + (var2 >>> 25)]) != 0) { + var0[var4] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + } + + ++var4; + var2 += var16; + if ((var3 = var1[(var2 & 16256) + (var2 >>> 25)]) != 0) { + var0[var4] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + } + + ++var4; + var2 += var16; + if ((var3 = var1[(var2 & 16256) + (var2 >>> 25)]) != 0) { + var0[var4] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + } + + ++var4; + var2 += var16; + if ((var3 = var1[(var2 & 16256) + (var2 >>> 25)]) != 0) { + var0[var4] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + } + + ++var4; + var2 += var16; + if ((var3 = var1[(var2 & 16256) + (var2 >>> 25)]) != 0) { + var0[var4] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + } + + ++var4; + var2 += var16; + if ((var3 = var1[(var2 & 16256) + (var2 >>> 25)]) != 0) { + var0[var4] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + } + + ++var4; + var2 += var16; + if ((var3 = var1[(var2 & 16256) + (var2 >>> 25)]) != 0) { + var0[var4] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + } + + ++var4; + var2 += var16; + if ((var3 = var1[(var2 & 16256) + (var2 >>> 25)]) != 0) { + var0[var4] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + } + + ++var4; + var2 += var16; + var7 += var8; + var15 = var7 >> 8; + --var17; + } while (var17 > 0); + } + + var17 = var6 - var5 & 7; + if (var17 > 0) { + do { + if ((var3 = var1[(var2 & 16256) + (var2 >>> 25)]) != 0) { + var0[var4] = ((var3 & 16711935) * var15 & -16711936) + ((var3 & 65280) * var15 & 16711680) >> 8; + } + + ++var4; + var2 += var16; + --var17; + } while (var17 > 0); + } + } + } + + } + } + + static void method1144(int var0, int var1, int var2, int var3, int var4, int var5, int var6) { + int var7 = 0; + if (var1 != var0) { + var7 = (var4 - var3 << 16) / (var1 - var0); + } + + int var8 = 0; + if (var2 != var1) { + var8 = (var5 - var4 << 16) / (var2 - var1); + } + + int var9 = 0; + if (var2 != var0) { + var9 = (var3 - var5 << 16) / (var0 - var2); + } + + if (var0 <= var1 && var0 <= var2) { + if (var0 < anInt844) { + if (var1 > anInt844) { + var1 = anInt844; + } + + if (var2 > anInt844) { + var2 = anInt844; + } + + if (var1 < var2) { + var5 = var3 <<= 16; + if (var0 < 0) { + var5 -= var9 * var0; + var3 -= var7 * var0; + var0 = 0; + } + + var4 <<= 16; + if (var1 < 0) { + var4 -= var8 * var1; + var1 = 0; + } + + if ((var0 == var1 || var9 >= var7) && (var0 != var1 || var9 <= var8)) { + var2 -= var1; + var1 -= var0; + var0 = anIntArray836[var0]; + + while (true) { + --var1; + if (var1 < 0) { + while (true) { + --var2; + if (var2 < 0) { + return; + } + + method1149(Toolkit.JAVA_TOOLKIT.getBuffer(), var0, var6, var4 >> 16, var5 >> 16); + var5 += var9; + var4 += var8; + var0 += Toolkit.JAVA_TOOLKIT.width; + } + } + + method1149(Toolkit.JAVA_TOOLKIT.getBuffer(), var0, var6, var3 >> 16, var5 >> 16); + var5 += var9; + var3 += var7; + var0 += Toolkit.JAVA_TOOLKIT.width; + } + } else { + var2 -= var1; + var1 -= var0; + var0 = anIntArray836[var0]; + + while (true) { + --var1; + if (var1 < 0) { + while (true) { + --var2; + if (var2 < 0) { + return; + } + + method1149(Toolkit.JAVA_TOOLKIT.getBuffer(), var0, var6, var5 >> 16, var4 >> 16); + var5 += var9; + var4 += var8; + var0 += Toolkit.JAVA_TOOLKIT.width; + } + } + + method1149(Toolkit.JAVA_TOOLKIT.getBuffer(), var0, var6, var5 >> 16, var3 >> 16); + var5 += var9; + var3 += var7; + var0 += Toolkit.JAVA_TOOLKIT.width; + } + } + } else { + var4 = var3 <<= 16; + if (var0 < 0) { + var4 -= var9 * var0; + var3 -= var7 * var0; + var0 = 0; + } + + var5 <<= 16; + if (var2 < 0) { + var5 -= var8 * var2; + var2 = 0; + } + + if ((var0 == var2 || var9 >= var7) && (var0 != var2 || var8 <= var7)) { + var1 -= var2; + var2 -= var0; + var0 = anIntArray836[var0]; + + while (true) { + --var2; + if (var2 < 0) { + while (true) { + --var1; + if (var1 < 0) { + return; + } + + method1149(Toolkit.JAVA_TOOLKIT.getBuffer(), var0, var6, var3 >> 16, var5 >> 16); + var5 += var8; + var3 += var7; + var0 += Toolkit.JAVA_TOOLKIT.width; + } + } + + method1149(Toolkit.JAVA_TOOLKIT.getBuffer(), var0, var6, var3 >> 16, var4 >> 16); + var4 += var9; + var3 += var7; + var0 += Toolkit.JAVA_TOOLKIT.width; + } + } else { + var1 -= var2; + var2 -= var0; + var0 = anIntArray836[var0]; + + while (true) { + --var2; + if (var2 < 0) { + while (true) { + --var1; + if (var1 < 0) { + return; + } + + method1149(Toolkit.JAVA_TOOLKIT.getBuffer(), var0, var6, var5 >> 16, var3 >> 16); + var5 += var8; + var3 += var7; + var0 += Toolkit.JAVA_TOOLKIT.width; + } + } + + method1149(Toolkit.JAVA_TOOLKIT.getBuffer(), var0, var6, var4 >> 16, var3 >> 16); + var4 += var9; + var3 += var7; + var0 += Toolkit.JAVA_TOOLKIT.width; + } + } + } + } + } else if (var1 <= var2) { + if (var1 < anInt844) { + if (var2 > anInt844) { + var2 = anInt844; + } + + if (var0 > anInt844) { + var0 = anInt844; + } + + if (var2 < var0) { + var3 = var4 <<= 16; + if (var1 < 0) { + var3 -= var7 * var1; + var4 -= var8 * var1; + var1 = 0; + } + + var5 <<= 16; + if (var2 < 0) { + var5 -= var9 * var2; + var2 = 0; + } + + if ((var1 == var2 || var7 >= var8) && (var1 != var2 || var7 <= var9)) { + var0 -= var2; + var2 -= var1; + var1 = anIntArray836[var1]; + + while (true) { + --var2; + if (var2 < 0) { + while (true) { + --var0; + if (var0 < 0) { + return; + } + + method1149(Toolkit.JAVA_TOOLKIT.getBuffer(), var1, var6, var5 >> 16, var3 >> 16); + var3 += var7; + var5 += var9; + var1 += Toolkit.JAVA_TOOLKIT.width; + } + } + + method1149(Toolkit.JAVA_TOOLKIT.getBuffer(), var1, var6, var4 >> 16, var3 >> 16); + var3 += var7; + var4 += var8; + var1 += Toolkit.JAVA_TOOLKIT.width; + } + } else { + var0 -= var2; + var2 -= var1; + var1 = anIntArray836[var1]; + + while (true) { + --var2; + if (var2 < 0) { + while (true) { + --var0; + if (var0 < 0) { + return; + } + + method1149(Toolkit.JAVA_TOOLKIT.getBuffer(), var1, var6, var3 >> 16, var5 >> 16); + var3 += var7; + var5 += var9; + var1 += Toolkit.JAVA_TOOLKIT.width; + } + } + + method1149(Toolkit.JAVA_TOOLKIT.getBuffer(), var1, var6, var3 >> 16, var4 >> 16); + var3 += var7; + var4 += var8; + var1 += Toolkit.JAVA_TOOLKIT.width; + } + } + } else { + var5 = var4 <<= 16; + if (var1 < 0) { + var5 -= var7 * var1; + var4 -= var8 * var1; + var1 = 0; + } + + var3 <<= 16; + if (var0 < 0) { + var3 -= var9 * var0; + var0 = 0; + } + + if (var7 < var8) { + var2 -= var0; + var0 -= var1; + var1 = anIntArray836[var1]; + + while (true) { + --var0; + if (var0 < 0) { + while (true) { + --var2; + if (var2 < 0) { + return; + } + + method1149(Toolkit.JAVA_TOOLKIT.getBuffer(), var1, var6, var3 >> 16, var4 >> 16); + var3 += var9; + var4 += var8; + var1 += Toolkit.JAVA_TOOLKIT.width; + } + } + + method1149(Toolkit.JAVA_TOOLKIT.getBuffer(), var1, var6, var5 >> 16, var4 >> 16); + var5 += var7; + var4 += var8; + var1 += Toolkit.JAVA_TOOLKIT.width; + } + } else { + var2 -= var0; + var0 -= var1; + var1 = anIntArray836[var1]; + + while (true) { + --var0; + if (var0 < 0) { + while (true) { + --var2; + if (var2 < 0) { + return; + } + + method1149(Toolkit.JAVA_TOOLKIT.getBuffer(), var1, var6, var4 >> 16, var3 >> 16); + var3 += var9; + var4 += var8; + var1 += Toolkit.JAVA_TOOLKIT.width; + } + } + + method1149(Toolkit.JAVA_TOOLKIT.getBuffer(), var1, var6, var4 >> 16, var5 >> 16); + var5 += var7; + var4 += var8; + var1 += Toolkit.JAVA_TOOLKIT.width; + } + } + } + } + } else if (var2 < anInt844) { + if (var0 > anInt844) { + var0 = anInt844; + } + + if (var1 > anInt844) { + var1 = anInt844; + } + + if (var0 < var1) { + var4 = var5 <<= 16; + if (var2 < 0) { + var4 -= var8 * var2; + var5 -= var9 * var2; + var2 = 0; + } + + var3 <<= 16; + if (var0 < 0) { + var3 -= var7 * var0; + var0 = 0; + } + + if (var8 < var9) { + var1 -= var0; + var0 -= var2; + var2 = anIntArray836[var2]; + + while (true) { + --var0; + if (var0 < 0) { + while (true) { + --var1; + if (var1 < 0) { + return; + } + + method1149(Toolkit.JAVA_TOOLKIT.getBuffer(), var2, var6, var4 >> 16, var3 >> 16); + var4 += var8; + var3 += var7; + var2 += Toolkit.JAVA_TOOLKIT.width; + } + } + + method1149(Toolkit.JAVA_TOOLKIT.getBuffer(), var2, var6, var4 >> 16, var5 >> 16); + var4 += var8; + var5 += var9; + var2 += Toolkit.JAVA_TOOLKIT.width; + } + } else { + var1 -= var0; + var0 -= var2; + var2 = anIntArray836[var2]; + + while (true) { + --var0; + if (var0 < 0) { + while (true) { + --var1; + if (var1 < 0) { + return; + } + + method1149(Toolkit.JAVA_TOOLKIT.getBuffer(), var2, var6, var3 >> 16, var4 >> 16); + var4 += var8; + var3 += var7; + var2 += Toolkit.JAVA_TOOLKIT.width; + } + } + + method1149(Toolkit.JAVA_TOOLKIT.getBuffer(), var2, var6, var5 >> 16, var4 >> 16); + var4 += var8; + var5 += var9; + var2 += Toolkit.JAVA_TOOLKIT.width; + } + } + } else { + var3 = var5 <<= 16; + if (var2 < 0) { + var3 -= var8 * var2; + var5 -= var9 * var2; + var2 = 0; + } + + var4 <<= 16; + if (var1 < 0) { + var4 -= var7 * var1; + var1 = 0; + } + + if (var8 < var9) { + var0 -= var1; + var1 -= var2; + var2 = anIntArray836[var2]; + + while (true) { + --var1; + if (var1 < 0) { + while (true) { + --var0; + if (var0 < 0) { + return; + } + + method1149(Toolkit.JAVA_TOOLKIT.getBuffer(), var2, var6, var4 >> 16, var5 >> 16); + var4 += var7; + var5 += var9; + var2 += Toolkit.JAVA_TOOLKIT.width; + } + } + + method1149(Toolkit.JAVA_TOOLKIT.getBuffer(), var2, var6, var3 >> 16, var5 >> 16); + var3 += var8; + var5 += var9; + var2 += Toolkit.JAVA_TOOLKIT.width; + } + } else { + var0 -= var1; + var1 -= var2; + var2 = anIntArray836[var2]; + + while (true) { + --var1; + if (var1 < 0) { + while (true) { + --var0; + if (var0 < 0) { + return; + } + + method1149(Toolkit.JAVA_TOOLKIT.getBuffer(), var2, var6, var5 >> 16, var4 >> 16); + var4 += var7; + var5 += var9; + var2 += Toolkit.JAVA_TOOLKIT.width; + } + } + + method1149(Toolkit.JAVA_TOOLKIT.getBuffer(), var2, var6, var5 >> 16, var3 >> 16); + var3 += var8; + var5 += var9; + var2 += Toolkit.JAVA_TOOLKIT.width; + } + } + } + } + } + + static void method1145(int var0, int var1) { + int var2 = anIntArray836[0]; + int var3 = var2 / Toolkit.JAVA_TOOLKIT.width; + int var4 = var2 - var3 * Toolkit.JAVA_TOOLKIT.width; + anInt846 = var0 - var4; + anInt835 = var1 - var3; + Class139.screenLowerX = -anInt846; + Class145.screenUpperX = anInt847 - anInt846; + Class1.screenUpperY = -anInt835; + AtmosphereParser.screenLowerY = anInt844 - anInt835; + } + + private static void method1146(int[] var0, int var1, int var4, int var5, int var6, int var7) { + if (aBoolean849) { + if (var5 > anInt847) { + var5 = anInt847; + } + + if (var4 < 0) { + var4 = 0; + } + } + + if (var4 < var5) { + var1 += var4; + var6 += var7 * var4; + int var8; + int var9; + int var10; + int var3; + int var2; + if (aBoolean843) { + var3 = var5 - var4 >> 2; + var7 <<= 2; + if (anInt850 == 0) { + if (var3 > 0) { + do { + var2 = anIntArray834[var6 >> 8]; + var6 += var7; + var0[var1++] = var2; + var0[var1++] = var2; + var0[var1++] = var2; + var0[var1++] = var2; + --var3; + } while (var3 > 0); + } + + var3 = var5 - var4 & 3; + if (var3 > 0) { + var2 = anIntArray834[var6 >> 8]; + + do { + var0[var1++] = var2; + --var3; + } while (var3 > 0); + } + } else { + var8 = anInt850; + var9 = 256 - anInt850; + if (var3 > 0) { + do { + var2 = anIntArray834[var6 >> 8]; + var6 += var7; + var2 = ((var2 & 16711935) * var9 >> 8 & 16711935) + ((var2 & 65280) * var9 >> 8 & 65280); + var10 = var0[var1]; + var0[var1++] = var2 + ((var10 & 16711935) * var8 >> 8 & 16711935) + ((var10 & 65280) * var8 >> 8 & 65280); + var10 = var0[var1]; + var0[var1++] = var2 + ((var10 & 16711935) * var8 >> 8 & 16711935) + ((var10 & 65280) * var8 >> 8 & 65280); + var10 = var0[var1]; + var0[var1++] = var2 + ((var10 & 16711935) * var8 >> 8 & 16711935) + ((var10 & 65280) * var8 >> 8 & 65280); + var10 = var0[var1]; + var0[var1++] = var2 + ((var10 & 16711935) * var8 >> 8 & 16711935) + ((var10 & 65280) * var8 >> 8 & 65280); + --var3; + } while (var3 > 0); + } + + var3 = var5 - var4 & 3; + if (var3 > 0) { + var2 = anIntArray834[var6 >> 8]; + var2 = ((var2 & 16711935) * var9 >> 8 & 16711935) + ((var2 & 65280) * var9 >> 8 & 65280); + + do { + var10 = var0[var1]; + var0[var1++] = var2 + ((var10 & 16711935) * var8 >> 8 & 16711935) + ((var10 & 65280) * var8 >> 8 & 65280); + --var3; + } while (var3 > 0); + } + } + + } else { + var3 = var5 - var4; + if (anInt850 == 0) { + do { + var0[var1++] = anIntArray834[var6 >> 8]; + var6 += var7; + --var3; + } while (var3 > 0); + } else { + var8 = anInt850; + var9 = 256 - anInt850; + + do { + var2 = anIntArray834[var6 >> 8]; + var6 += var7; + var2 = ((var2 & 16711935) * var9 >> 8 & 16711935) + ((var2 & 65280) * var9 >> 8 & 65280); + var10 = var0[var1]; + var0[var1++] = var2 + ((var10 & 16711935) * var8 >> 8 & 16711935) + ((var10 & 65280) * var8 >> 8 & 65280); + --var3; + } while (var3 > 0); + } + + } + } + } + + static void method1147(byte[] var0, int var1, int var2, int var3, int var4, int var5, int var6, int var7) { + int var8 = 0; + if (var2 != var1) { + var8 = (var5 - var4 << 16) / (var2 - var1); + } + + int var9 = 0; + if (var3 != var2) { + var9 = (var6 - var5 << 16) / (var3 - var2); + } + + int var10 = 0; + if (var3 != var1) { + var10 = (var4 - var6 << 16) / (var1 - var3); + } + + if (var1 <= var2 && var1 <= var3) { + if (var2 < var3) { + var6 = var4 <<= 16; + if (var1 < 0) { + var6 -= var10 * var1; + var4 -= var8 * var1; + var1 = 0; + } + + var5 <<= 16; + if (var2 < 0) { + var5 -= var9 * var2; + var2 = 0; + } + + if ((var1 == var2 || var10 >= var8) && (var1 != var2 || var10 <= var9)) { + var3 -= var2; + var2 -= var1; + var1 *= var7; + + while (true) { + --var2; + if (var2 < 0) { + while (true) { + --var3; + if (var3 < 0) { + return; + } + + method1156(var0, var1, var5 >> 16, var6 >> 16); + var6 += var10; + var5 += var9; + var1 += var7; + } + } + + method1156(var0, var1, var4 >> 16, var6 >> 16); + var6 += var10; + var4 += var8; + var1 += var7; + } + } else { + var3 -= var2; + var2 -= var1; + var1 *= var7; + + while (true) { + --var2; + if (var2 < 0) { + while (true) { + --var3; + if (var3 < 0) { + return; + } + + method1156(var0, var1, var6 >> 16, var5 >> 16); + var6 += var10; + var5 += var9; + var1 += var7; + } + } + + method1156(var0, var1, var6 >> 16, var4 >> 16); + var6 += var10; + var4 += var8; + var1 += var7; + } + } + } else { + var5 = var4 <<= 16; + if (var1 < 0) { + var5 -= var10 * var1; + var4 -= var8 * var1; + var1 = 0; + } + + var6 <<= 16; + if (var3 < 0) { + var6 -= var9 * var3; + var3 = 0; + } + + if ((var1 == var3 || var10 >= var8) && (var1 != var3 || var9 <= var8)) { + var2 -= var3; + var3 -= var1; + var1 *= var7; + + while (true) { + --var3; + if (var3 < 0) { + while (true) { + --var2; + if (var2 < 0) { + return; + } + + method1156(var0, var1, var4 >> 16, var6 >> 16); + var6 += var9; + var4 += var8; + var1 += var7; + } + } + + method1156(var0, var1, var4 >> 16, var5 >> 16); + var5 += var10; + var4 += var8; + var1 += var7; + } + } else { + var2 -= var3; + var3 -= var1; + var1 *= var7; + + while (true) { + --var3; + if (var3 < 0) { + while (true) { + --var2; + if (var2 < 0) { + return; + } + + method1156(var0, var1, var6 >> 16, var4 >> 16); + var6 += var9; + var4 += var8; + var1 += var7; + } + } + + method1156(var0, var1, var5 >> 16, var4 >> 16); + var5 += var10; + var4 += var8; + var1 += var7; + } + } + } + } else if (var2 <= var3) { + if (var3 < var1) { + var4 = var5 <<= 16; + if (var2 < 0) { + var4 -= var8 * var2; + var5 -= var9 * var2; + var2 = 0; + } + + var6 <<= 16; + if (var3 < 0) { + var6 -= var10 * var3; + var3 = 0; + } + + if ((var2 == var3 || var8 >= var9) && (var2 != var3 || var8 <= var10)) { + var1 -= var3; + var3 -= var2; + var2 *= var7; + + while (true) { + --var3; + if (var3 < 0) { + while (true) { + --var1; + if (var1 < 0) { + return; + } + + method1156(var0, var2, var6 >> 16, var4 >> 16); + var4 += var8; + var6 += var10; + var2 += var7; + } + } + + method1156(var0, var2, var5 >> 16, var4 >> 16); + var4 += var8; + var5 += var9; + var2 += var7; + } + } else { + var1 -= var3; + var3 -= var2; + var2 *= var7; + + while (true) { + --var3; + if (var3 < 0) { + while (true) { + --var1; + if (var1 < 0) { + return; + } + + method1156(var0, var2, var4 >> 16, var6 >> 16); + var4 += var8; + var6 += var10; + var2 += var7; + } + } + + method1156(var0, var2, var4 >> 16, var5 >> 16); + var4 += var8; + var5 += var9; + var2 += var7; + } + } + } else { + var6 = var5 <<= 16; + if (var2 < 0) { + var6 -= var8 * var2; + var5 -= var9 * var2; + var2 = 0; + } + + var4 <<= 16; + if (var1 < 0) { + var4 -= var10 * var1; + var1 = 0; + } + + if (var8 < var9) { + var3 -= var1; + var1 -= var2; + var2 *= var7; + + while (true) { + --var1; + if (var1 < 0) { + while (true) { + --var3; + if (var3 < 0) { + return; + } + + method1156(var0, var2, var4 >> 16, var5 >> 16); + var4 += var10; + var5 += var9; + var2 += var7; + } + } + + method1156(var0, var2, var6 >> 16, var5 >> 16); + var6 += var8; + var5 += var9; + var2 += var7; + } + } else { + var3 -= var1; + var1 -= var2; + var2 *= var7; + + while (true) { + --var1; + if (var1 < 0) { + while (true) { + --var3; + if (var3 < 0) { + return; + } + + method1156(var0, var2, var5 >> 16, var4 >> 16); + var4 += var10; + var5 += var9; + var2 += var7; + } + } + + method1156(var0, var2, var5 >> 16, var6 >> 16); + var6 += var8; + var5 += var9; + var2 += var7; + } + } + } + } else if (var1 < var2) { + var5 = var6 <<= 16; + if (var3 < 0) { + var5 -= var9 * var3; + var6 -= var10 * var3; + var3 = 0; + } + + var4 <<= 16; + if (var1 < 0) { + var4 -= var8 * var1; + var1 = 0; + } + + if (var9 < var10) { + var2 -= var1; + var1 -= var3; + var3 *= var7; + + while (true) { + --var1; + if (var1 < 0) { + while (true) { + --var2; + if (var2 < 0) { + return; + } + + method1156(var0, var3, var5 >> 16, var4 >> 16); + var5 += var9; + var4 += var8; + var3 += var7; + } + } + + method1156(var0, var3, var5 >> 16, var6 >> 16); + var5 += var9; + var6 += var10; + var3 += var7; + } + } else { + var2 -= var1; + var1 -= var3; + var3 *= var7; + + while (true) { + --var1; + if (var1 < 0) { + while (true) { + --var2; + if (var2 < 0) { + return; + } + + method1156(var0, var3, var4 >> 16, var5 >> 16); + var5 += var9; + var4 += var8; + var3 += var7; + } + } + + method1156(var0, var3, var6 >> 16, var5 >> 16); + var5 += var9; + var6 += var10; + var3 += var7; + } + } + } else { + var4 = var6 <<= 16; + if (var3 < 0) { + var4 -= var9 * var3; + var6 -= var10 * var3; + var3 = 0; + } + + var5 <<= 16; + if (var2 < 0) { + var5 -= var8 * var2; + var2 = 0; + } + + if (var9 < var10) { + var1 -= var2; + var2 -= var3; + var3 *= var7; + + while (true) { + --var2; + if (var2 < 0) { + while (true) { + --var1; + if (var1 < 0) { + return; + } + + method1156(var0, var3, var5 >> 16, var6 >> 16); + var5 += var8; + var6 += var10; + var3 += var7; + } + } + + method1156(var0, var3, var4 >> 16, var6 >> 16); + var4 += var9; + var6 += var10; + var3 += var7; + } + } else { + var1 -= var2; + var2 -= var3; + var3 *= var7; + + while (true) { + --var2; + if (var2 < 0) { + while (true) { + --var1; + if (var1 < 0) { + return; + } + + method1156(var0, var3, var6 >> 16, var5 >> 16); + var5 += var8; + var6 += var10; + var3 += var7; + } + } + + method1156(var0, var3, var6 >> 16, var4 >> 16); + var4 += var9; + var6 += var10; + var3 += var7; + } + } + } + } + + static void method1148(int var0, int var1, int var2) { + aBoolean849 = var0 < 0 || var0 > anInt847 || var1 < 0 || var1 > anInt847 || var2 < 0 || var2 > anInt847; + } + + private static void method1149(int[] var0, int var1, int var2, int var4, int var5) { + if (aBoolean849) { + if (var5 > anInt847) { + var5 = anInt847; + } + + if (var4 < 0) { + var4 = 0; + } + } + + if (var4 < var5) { + var1 += var4; + int var3 = var5 - var4 >> 2; + if (anInt850 == 0) { + while (true) { + --var3; + if (var3 < 0) { + var3 = var5 - var4 & 3; + + while (true) { + --var3; + if (var3 < 0) { + return; + } + + var0[var1++] = var2; + } + } + + var0[var1++] = var2; + var0[var1++] = var2; + var0[var1++] = var2; + var0[var1++] = var2; + } + } else if (anInt850 == 254) { + while (true) { + --var3; + if (var3 < 0) { + var3 = var5 - var4 & 3; + + while (true) { + --var3; + if (var3 < 0) { + return; + } + + var0[var1++] = var0[var1]; + } + } + + var0[var1++] = var0[var1]; + var0[var1++] = var0[var1]; + var0[var1++] = var0[var1]; + var0[var1++] = var0[var1]; + } + } else { + int var6 = anInt850; + int var7 = 256 - anInt850; + var2 = ((var2 & 16711935) * var7 >> 8 & 16711935) + ((var2 & 65280) * var7 >> 8 & 65280); + + while (true) { + --var3; + int var8; + if (var3 < 0) { + var3 = var5 - var4 & 3; + + while (true) { + --var3; + if (var3 < 0) { + return; + } + + var8 = var0[var1]; + var0[var1++] = var2 + ((var8 & 16711935) * var6 >> 8 & 16711935) + ((var8 & 65280) * var6 >> 8 & 65280); + } + } + + var8 = var0[var1]; + var0[var1++] = var2 + ((var8 & 16711935) * var6 >> 8 & 16711935) + ((var8 & 65280) * var6 >> 8 & 65280); + var8 = var0[var1]; + var0[var1++] = var2 + ((var8 & 16711935) * var6 >> 8 & 16711935) + ((var8 & 65280) * var6 >> 8 & 65280); + var8 = var0[var1]; + var0[var1++] = var2 + ((var8 & 16711935) * var6 >> 8 & 16711935) + ((var8 & 65280) * var6 >> 8 & 65280); + var8 = var0[var1]; + var0[var1++] = var2 + ((var8 & 16711935) * var6 >> 8 & 16711935) + ((var8 & 65280) * var6 >> 8 & 65280); + } + } + } + } + + private static void method1150() { + int var2 = 0; + + for (int var3 = 0; var3 < 512; ++var3) { + double var4 = (double) (var3 >> 3) / 64.0D + 0.0078125D; + double var6 = (double) (var3 & 7) / 8.0D + 0.0625D; + + for (int var8 = 0; var8 < 128; ++var8) { + double var9 = (double) var8 / 128.0D; + double var11 = var9; + double var13 = var9; + double var15 = var9; + if (var6 != 0.0D) { + double var17; + if (var9 < 0.5D) { + var17 = var9 * (1.0D + var6); + } else { + var17 = var9 + var6 - var9 * var6; + } + + double var19 = 2.0D * var9 - var17; + double var21 = var4 + 0.3333333333333333D; + if (var21 > 1.0D) { + --var21; + } + + double var25 = var4 - 0.3333333333333333D; + if (var25 < 0.0D) { + ++var25; + } + + if (6.0D * var21 < 1.0D) { + var11 = var19 + (var17 - var19) * 6.0D * var21; + } else if (2.0D * var21 < 1.0D) { + var11 = var17; + } else if (3.0D * var21 < 2.0D) { + var11 = var19 + (var17 - var19) * (0.6666666666666666D - var21) * 6.0D; + } else { + var11 = var19; + } + + if (6.0D * var4 < 1.0D) { + var13 = var19 + (var17 - var19) * 6.0D * var4; + } else if (2.0D * var4 < 1.0D) { + var13 = var17; + } else if (3.0D * var4 < 2.0D) { + var13 = var19 + (var17 - var19) * (0.6666666666666666D - var4) * 6.0D; + } else { + var13 = var19; + } + + if (6.0D * var25 < 1.0D) { + var15 = var19 + (var17 - var19) * 6.0D * var25; + } else if (2.0D * var25 < 1.0D) { + var15 = var17; + } else if (3.0D * var25 < 2.0D) { + var15 = var19 + (var17 - var19) * (0.6666666666666666D - var25) * 6.0D; + } else { + var15 = var19; + } + } + + var11 = Math.pow(var11, aFloat848); + var13 = Math.pow(var13, aFloat848); + var15 = Math.pow(var15, aFloat848); + int var27 = (int) (var11 * 256.0D); + int var18 = (int) (var13 * 256.0D); + int var28 = (int) (var15 * 256.0D); + int var20 = (var27 << 16) + (var18 << 8) + var28; + if (var20 == 0) { + var20 = 1; + } + + anIntArray834[var2++] = var20; + } + } + + } + + private static void method1151(int var0, int var1, int var2, int var3) { + anInt847 = var2 - var0; + anInt844 = var3 - var1; + method1141(); + if (anIntArray836.length < anInt844) { + anIntArray836 = new int[Class95.method1585((byte) 95, anInt844)]; + } + + int var4 = var1 * Toolkit.JAVA_TOOLKIT.width + var0; + + for (int var5 = 0; var5 < anInt844; ++var5) { + anIntArray836[var5] = var4; + var4 += Toolkit.JAVA_TOOLKIT.width; + } + + } + + private static void method1152(float var0) { + aFloat848 = var0; + aFloat848 = (float) ((double) aFloat848 + (Math.random() * 0.03D - 0.015D)); + } + + static int method1153() { + return anIntArray836[0] / Toolkit.JAVA_TOOLKIT.width; + } + + static void method1154(int var0, int var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8) { + int var9 = var4 - var3; + int var10 = var1 - var0; + int var11 = var5 - var3; + int var12 = var2 - var0; + int var13 = var7 - var6; + int var14 = var8 - var6; + int var15; + if (var2 == var1) { + var15 = 0; + } else { + var15 = (var5 - var4 << 16) / (var2 - var1); + } + + int var16; + if (var1 == var0) { + var16 = 0; + } else { + var16 = (var9 << 16) / var10; + } + + int var17; + if (var2 == var0) { + var17 = 0; + } else { + var17 = (var11 << 16) / var12; + } + + int var18 = var9 * var12 - var11 * var10; + if (var18 != 0) { + int var19 = (var13 * var12 - var14 * var10 << 8) / var18; + int var20 = (var14 * var9 - var13 * var11 << 8) / var18; + if (var0 <= var1 && var0 <= var2) { + if (var0 < anInt844) { + if (var1 > anInt844) { + var1 = anInt844; + } + + if (var2 > anInt844) { + var2 = anInt844; + } + + var6 = (var6 << 8) - var19 * var3 + var19; + if (var1 < var2) { + var5 = var3 <<= 16; + if (var0 < 0) { + var5 -= var17 * var0; + var3 -= var16 * var0; + var6 -= var20 * var0; + var0 = 0; + } + + var4 <<= 16; + if (var1 < 0) { + var4 -= var15 * var1; + var1 = 0; + } + + if ((var0 == var1 || var17 >= var16) && (var0 != var1 || var17 <= var15)) { + var2 -= var1; + var1 -= var0; + var0 = anIntArray836[var0]; + + while (true) { + --var1; + if (var1 < 0) { + while (true) { + --var2; + if (var2 < 0) { + return; + } + + method1146(Toolkit.JAVA_TOOLKIT.getBuffer(), var0, var4 >> 16, var5 >> 16, var6, var19); + var5 += var17; + var4 += var15; + var6 += var20; + var0 += Toolkit.JAVA_TOOLKIT.width; + } + } + + method1146(Toolkit.JAVA_TOOLKIT.getBuffer(), var0, var3 >> 16, var5 >> 16, var6, var19); + var5 += var17; + var3 += var16; + var6 += var20; + var0 += Toolkit.JAVA_TOOLKIT.width; + } + } else { + var2 -= var1; + var1 -= var0; + var0 = anIntArray836[var0]; + + while (true) { + --var1; + if (var1 < 0) { + while (true) { + --var2; + if (var2 < 0) { + return; + } + + method1146(Toolkit.JAVA_TOOLKIT.getBuffer(), var0, var5 >> 16, var4 >> 16, var6, var19); + var5 += var17; + var4 += var15; + var6 += var20; + var0 += Toolkit.JAVA_TOOLKIT.width; + } + } + + method1146(Toolkit.JAVA_TOOLKIT.getBuffer(), var0, var5 >> 16, var3 >> 16, var6, var19); + var5 += var17; + var3 += var16; + var6 += var20; + var0 += Toolkit.JAVA_TOOLKIT.width; + } + } + } else { + var4 = var3 <<= 16; + if (var0 < 0) { + var4 -= var17 * var0; + var3 -= var16 * var0; + var6 -= var20 * var0; + var0 = 0; + } + + var5 <<= 16; + if (var2 < 0) { + var5 -= var15 * var2; + var2 = 0; + } + + if ((var0 == var2 || var17 >= var16) && (var0 != var2 || var15 <= var16)) { + var1 -= var2; + var2 -= var0; + var0 = anIntArray836[var0]; + + while (true) { + --var2; + if (var2 < 0) { + while (true) { + --var1; + if (var1 < 0) { + return; + } + + method1146(Toolkit.JAVA_TOOLKIT.getBuffer(), var0, var3 >> 16, var5 >> 16, var6, var19); + var5 += var15; + var3 += var16; + var6 += var20; + var0 += Toolkit.JAVA_TOOLKIT.width; + } + } + + method1146(Toolkit.JAVA_TOOLKIT.getBuffer(), var0, var3 >> 16, var4 >> 16, var6, var19); + var4 += var17; + var3 += var16; + var6 += var20; + var0 += Toolkit.JAVA_TOOLKIT.width; + } + } else { + var1 -= var2; + var2 -= var0; + var0 = anIntArray836[var0]; + + while (true) { + --var2; + if (var2 < 0) { + while (true) { + --var1; + if (var1 < 0) { + return; + } + + method1146(Toolkit.JAVA_TOOLKIT.getBuffer(), var0, var5 >> 16, var3 >> 16, var6, var19); + var5 += var15; + var3 += var16; + var6 += var20; + var0 += Toolkit.JAVA_TOOLKIT.width; + } + } + + method1146(Toolkit.JAVA_TOOLKIT.getBuffer(), var0, var4 >> 16, var3 >> 16, var6, var19); + var4 += var17; + var3 += var16; + var6 += var20; + var0 += Toolkit.JAVA_TOOLKIT.width; + } + } + } + } + } else if (var1 <= var2) { + if (var1 < anInt844) { + if (var2 > anInt844) { + var2 = anInt844; + } + + if (var0 > anInt844) { + var0 = anInt844; + } + + var7 = (var7 << 8) - var19 * var4 + var19; + if (var2 < var0) { + var3 = var4 <<= 16; + if (var1 < 0) { + var3 -= var16 * var1; + var4 -= var15 * var1; + var7 -= var20 * var1; + var1 = 0; + } + + var5 <<= 16; + if (var2 < 0) { + var5 -= var17 * var2; + var2 = 0; + } + + if ((var1 == var2 || var16 >= var15) && (var1 != var2 || var16 <= var17)) { + var0 -= var2; + var2 -= var1; + var1 = anIntArray836[var1]; + + while (true) { + --var2; + if (var2 < 0) { + while (true) { + --var0; + if (var0 < 0) { + return; + } + + method1146(Toolkit.JAVA_TOOLKIT.getBuffer(), var1, var5 >> 16, var3 >> 16, var7, var19); + var3 += var16; + var5 += var17; + var7 += var20; + var1 += Toolkit.JAVA_TOOLKIT.width; + } + } + + method1146(Toolkit.JAVA_TOOLKIT.getBuffer(), var1, var4 >> 16, var3 >> 16, var7, var19); + var3 += var16; + var4 += var15; + var7 += var20; + var1 += Toolkit.JAVA_TOOLKIT.width; + } + } else { + var0 -= var2; + var2 -= var1; + var1 = anIntArray836[var1]; + + while (true) { + --var2; + if (var2 < 0) { + while (true) { + --var0; + if (var0 < 0) { + return; + } + + method1146(Toolkit.JAVA_TOOLKIT.getBuffer(), var1, var3 >> 16, var5 >> 16, var7, var19); + var3 += var16; + var5 += var17; + var7 += var20; + var1 += Toolkit.JAVA_TOOLKIT.width; + } + } + + method1146(Toolkit.JAVA_TOOLKIT.getBuffer(), var1, var3 >> 16, var4 >> 16, var7, var19); + var3 += var16; + var4 += var15; + var7 += var20; + var1 += Toolkit.JAVA_TOOLKIT.width; + } + } + } else { + var5 = var4 <<= 16; + if (var1 < 0) { + var5 -= var16 * var1; + var4 -= var15 * var1; + var7 -= var20 * var1; + var1 = 0; + } + + var3 <<= 16; + if (var0 < 0) { + var3 -= var17 * var0; + var0 = 0; + } + + if (var16 < var15) { + var2 -= var0; + var0 -= var1; + var1 = anIntArray836[var1]; + + while (true) { + --var0; + if (var0 < 0) { + while (true) { + --var2; + if (var2 < 0) { + return; + } + + method1146(Toolkit.JAVA_TOOLKIT.getBuffer(), var1, var3 >> 16, var4 >> 16, var7, var19); + var3 += var17; + var4 += var15; + var7 += var20; + var1 += Toolkit.JAVA_TOOLKIT.width; + } + } + + method1146(Toolkit.JAVA_TOOLKIT.getBuffer(), var1, var5 >> 16, var4 >> 16, var7, var19); + var5 += var16; + var4 += var15; + var7 += var20; + var1 += Toolkit.JAVA_TOOLKIT.width; + } + } else { + var2 -= var0; + var0 -= var1; + var1 = anIntArray836[var1]; + + while (true) { + --var0; + if (var0 < 0) { + while (true) { + --var2; + if (var2 < 0) { + return; + } + + method1146(Toolkit.JAVA_TOOLKIT.getBuffer(), var1, var4 >> 16, var3 >> 16, var7, var19); + var3 += var17; + var4 += var15; + var7 += var20; + var1 += Toolkit.JAVA_TOOLKIT.width; + } + } + + method1146(Toolkit.JAVA_TOOLKIT.getBuffer(), var1, var4 >> 16, var5 >> 16, var7, var19); + var5 += var16; + var4 += var15; + var7 += var20; + var1 += Toolkit.JAVA_TOOLKIT.width; + } + } + } + } + } else if (var2 < anInt844) { + if (var0 > anInt844) { + var0 = anInt844; + } + + if (var1 > anInt844) { + var1 = anInt844; + } + + var8 = (var8 << 8) - var19 * var5 + var19; + if (var0 < var1) { + var4 = var5 <<= 16; + if (var2 < 0) { + var4 -= var15 * var2; + var5 -= var17 * var2; + var8 -= var20 * var2; + var2 = 0; + } + + var3 <<= 16; + if (var0 < 0) { + var3 -= var16 * var0; + var0 = 0; + } + + if (var15 < var17) { + var1 -= var0; + var0 -= var2; + var2 = anIntArray836[var2]; + + while (true) { + --var0; + if (var0 < 0) { + while (true) { + --var1; + if (var1 < 0) { + return; + } + + method1146(Toolkit.JAVA_TOOLKIT.getBuffer(), var2, var4 >> 16, var3 >> 16, var8, var19); + var4 += var15; + var3 += var16; + var8 += var20; + var2 += Toolkit.JAVA_TOOLKIT.width; + } + } + + method1146(Toolkit.JAVA_TOOLKIT.getBuffer(), var2, var4 >> 16, var5 >> 16, var8, var19); + var4 += var15; + var5 += var17; + var8 += var20; + var2 += Toolkit.JAVA_TOOLKIT.width; + } + } else { + var1 -= var0; + var0 -= var2; + var2 = anIntArray836[var2]; + + while (true) { + --var0; + if (var0 < 0) { + while (true) { + --var1; + if (var1 < 0) { + return; + } + + method1146(Toolkit.JAVA_TOOLKIT.getBuffer(), var2, var3 >> 16, var4 >> 16, var8, var19); + var4 += var15; + var3 += var16; + var8 += var20; + var2 += Toolkit.JAVA_TOOLKIT.width; + } + } + + method1146(Toolkit.JAVA_TOOLKIT.getBuffer(), var2, var5 >> 16, var4 >> 16, var8, var19); + var4 += var15; + var5 += var17; + var8 += var20; + var2 += Toolkit.JAVA_TOOLKIT.width; + } + } + } else { + var3 = var5 <<= 16; + if (var2 < 0) { + var3 -= var15 * var2; + var5 -= var17 * var2; + var8 -= var20 * var2; + var2 = 0; + } + + var4 <<= 16; + if (var1 < 0) { + var4 -= var16 * var1; + var1 = 0; + } + + if (var15 < var17) { + var0 -= var1; + var1 -= var2; + var2 = anIntArray836[var2]; + + while (true) { + --var1; + if (var1 < 0) { + while (true) { + --var0; + if (var0 < 0) { + return; + } + + method1146(Toolkit.JAVA_TOOLKIT.getBuffer(), var2, var4 >> 16, var5 >> 16, var8, var19); + var4 += var16; + var5 += var17; + var8 += var20; + var2 += Toolkit.JAVA_TOOLKIT.width; + } + } + + method1146(Toolkit.JAVA_TOOLKIT.getBuffer(), var2, var3 >> 16, var5 >> 16, var8, var19); + var3 += var15; + var5 += var17; + var8 += var20; + var2 += Toolkit.JAVA_TOOLKIT.width; + } + } else { + var0 -= var1; + var1 -= var2; + var2 = anIntArray836[var2]; + + while (true) { + --var1; + if (var1 < 0) { + while (true) { + --var0; + if (var0 < 0) { + return; + } + + method1146(Toolkit.JAVA_TOOLKIT.getBuffer(), var2, var5 >> 16, var4 >> 16, var8, var19); + var4 += var16; + var5 += var17; + var8 += var20; + var2 += Toolkit.JAVA_TOOLKIT.width; + } + } + + method1146(Toolkit.JAVA_TOOLKIT.getBuffer(), var2, var5 >> 16, var3 >> 16, var8, var19); + var3 += var15; + var5 += var17; + var8 += var20; + var2 += Toolkit.JAVA_TOOLKIT.width; + } + } + } + } + } + } + + private static void method1156(byte[] var0, int var1, int var3, int var4) { + if (var3 < var4) { + var1 += var3; + int var2 = var4 - var3 >> 2; + + while (true) { + --var2; + if (var2 < 0) { + var2 = var4 - var3 & 3; + + while (true) { + --var2; + if (var2 < 0) { + return; + } + + var0[var1++] = 1; + } + } + + var0[var1++] = 1; + var0[var1++] = 1; + var0[var1++] = 1; + var0[var1++] = 1; + } + } + } +} diff --git a/Client/src/main/java/org/runite/client/Class52.java b/Client/src/main/java/org/runite/client/Class52.java new file mode 100644 index 000000000..8b02a1c84 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class52.java @@ -0,0 +1,904 @@ +package org.runite.client; + +import java.util.Objects; + +final class Class52 { + + static int[] anIntArray1833 = new int[14]; + static int[] anIntArray3139 = new int[14]; + static int[] anIntArray1679 = new int[14]; + static int[] anIntArray859; + static int[] anIntArray861; + int pnpcId; + boolean aBoolean864; + private long aLong855; + private int[] lookInfo; + private int renderAnim; + private long aLong860; + private int[] anIntArray862; + private int[][] anIntArrayArray863; + + static void method1160(int var0, int var1) { + try { + if (Unsorted.loadInterface(var1)) { + if (var0 > -100) { + method1168(52); + } + + Class67.method1260(23206, -1, GameObject.interfaces1834[var1]); + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "hh.B(" + var0 + ',' + var1 + ')'); + } + } + + static boolean method1166(int var0, int var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9, int var10, boolean var11, int var12) { + try { + int var13; + int var14; + for (var13 = 0; var13 < 104; ++var13) { + for (var14 = 0; var14 < 104; ++var14) { + Class84.anIntArrayArray1160[var13][var14] = 0; + Class97.anIntArrayArray1373[var13][var14] = 99999999; + } + } + + var13 = var9; + var14 = var12; + Class84.anIntArrayArray1160[var9][var12] = 99; + Class97.anIntArrayArray1373[var9][var12] = 0; + byte var15 = 0; + TextureOperation38.anIntArray3456[var15] = var9; + int var28 = var15 + 1; + Class45.anIntArray729[var15] = var12; + int var16 = 0; + boolean var17 = false; + int[][] var18 = AtmosphereParser.aClass91Array1182[WorldListCountry.localPlane].anIntArrayArray1304; + + int var19; + int var20; + label410: + while (var28 != var16) { + var13 = TextureOperation38.anIntArray3456[var16]; + var14 = Class45.anIntArray729[var16]; + var16 = 1 + var16 & 4095; + if (var13 == var6 && var0 == var14) { + var17 = true; + break; + } + + if (0 != var7) { + if ((var7 < 5 || 10 == var7) && AtmosphereParser.aClass91Array1182[WorldListCountry.localPlane].method1488(var0, var13, var14, var6, var7 + -1, var5, var4)) { + var17 = true; + break; + } + + if (var7 < 10 && AtmosphereParser.aClass91Array1182[WorldListCountry.localPlane].method1492(var0, -1 + var7, var6, var14, var5, var4, var13, 95)) { + var17 = true; + break; + } + } + + if (var2 != 0 && var10 != 0 && AtmosphereParser.aClass91Array1182[WorldListCountry.localPlane].method1498(var6, var14, var13, var5, var2, var8, var0, var10)) { + var17 = true; + break; + } + + var19 = 1 + Class97.anIntArrayArray1373[var13][var14]; + if (var13 > 0 && Class84.anIntArrayArray1160[-1 + var13][var14] == 0 && (var18[var13 + -1][var14] & 19661070) == 0 && 0 == (19661112 & var18[-1 + var13][-1 + var5 + var14])) { + var20 = 1; + + while (true) { + if (-1 + var5 <= var20) { + TextureOperation38.anIntArray3456[var28] = -1 + var13; + Class45.anIntArray729[var28] = var14; + Class84.anIntArrayArray1160[-1 + var13][var14] = 2; + var28 = 4095 & 1 + var28; + Class97.anIntArrayArray1373[var13 + -1][var14] = var19; + break; + } + + if ((19661118 & var18[-1 + var13][var14 + var20]) != 0) { + break; + } + + ++var20; + } + } + + if (var13 < 102 && Class84.anIntArrayArray1160[1 + var13][var14] == 0 && (19661187 & var18[var13 + var5][var14]) == 0 && (19661280 & var18[var5 + var13][var14 + var5 + -1]) == 0) { + var20 = 1; + + while (true) { + if (var20 >= -1 + var5) { + TextureOperation38.anIntArray3456[var28] = var13 + 1; + Class45.anIntArray729[var28] = var14; + Class84.anIntArrayArray1160[var13 + 1][var14] = 8; + Class97.anIntArrayArray1373[var13 + 1][var14] = var19; + var28 = 4095 & var28 - -1; + break; + } + + if ((var18[var5 + var13][var14 + var20] & 19661283) != 0) { + break; + } + + ++var20; + } + } + + if (var14 > 0 && 0 == Class84.anIntArrayArray1160[var13][-1 + var14] && (19661070 & var18[var13][-1 + var14]) == 0 && 0 == (19661187 & var18[-1 + var5 + var13][var14 + -1])) { + var20 = 1; + + while (true) { + if (-1 + var5 <= var20) { + TextureOperation38.anIntArray3456[var28] = var13; + Class45.anIntArray729[var28] = -1 + var14; + Class84.anIntArrayArray1160[var13][-1 + var14] = 1; + var28 = 4095 & 1 + var28; + Class97.anIntArrayArray1373[var13][-1 + var14] = var19; + break; + } + + if ((var18[var13 + var20][var14 + -1] & 19661199) != 0) { + break; + } + + ++var20; + } + } + + if (102 > var14 && Class84.anIntArrayArray1160[var13][1 + var14] == 0 && (var18[var13][var14 + var5] & 19661112) == 0 && (19661280 & var18[-1 + var13 + var5][var5 + var14]) == 0) { + var20 = 1; + + while (true) { + if (var20 >= (var5 - 1)) { + TextureOperation38.anIntArray3456[var28] = var13; + Class45.anIntArray729[var28] = var14 + 1; + Class84.anIntArrayArray1160[var13][1 + var14] = 4; + Class97.anIntArrayArray1373[var13][1 + var14] = var19; + var28 = 4095 & var28 + 1; + break; + } + + if ((19661304 & var18[var13 - -var20][var5 + var14]) != 0) { + break; + } + + ++var20; + } + } + + if (var13 > 0 && var14 > 0 && Class84.anIntArrayArray1160[var13 + -1][var14 + -1] == 0 && (var18[var13 + -1][-1 + var5 + -1 + var14] & 19661112) == 0 && 0 == (19661070 & var18[-1 + var13][var14 - 1]) && (var18[var5 + -1 + (var13 - 1)][-1 + var14] & 19661187) == 0) { + var20 = 1; + + while (true) { + if (var5 - 1 <= var20) { + TextureOperation38.anIntArray3456[var28] = var13 - 1; + Class45.anIntArray729[var28] = -1 + var14; + var28 = 4095 & var28 + 1; + Class84.anIntArrayArray1160[var13 + -1][-1 + var14] = 3; + Class97.anIntArrayArray1373[-1 + var13][var14 + -1] = var19; + break; + } + + if ((var18[var13 - 1][var14 - 1 + var20] & 19661118) != 0 || 0 != (19661199 & var18[var20 + -1 + var13][-1 + var14])) { + break; + } + + ++var20; + } + } + + if (102 > var13 && var14 > 0 && Class84.anIntArrayArray1160[1 + var13][-1 + var14] == 0 && (19661070 & var18[1 + var13][-1 + var14]) == 0 && (var18[var5 + var13][-1 + var14] & 19661187) == 0 && (var18[var13 - -var5][-1 + var14 + var5 + -1] & 19661280) == 0) { + var20 = 1; + + while (true) { + if ((-1 + var5) <= var20) { + TextureOperation38.anIntArray3456[var28] = 1 + var13; + Class45.anIntArray729[var28] = -1 + var14; + var28 = 1 + var28 & 4095; + Class84.anIntArrayArray1160[var13 - -1][-1 + var14] = 9; + Class97.anIntArrayArray1373[1 + var13][-1 + var14] = var19; + break; + } + + if ((19661283 & var18[var13 + var5][var14 - (1 + -var20)]) != 0 || (19661199 & var18[var20 + (var13 - -1)][-1 + var14]) != 0) { + break; + } + + ++var20; + } + } + + if (var13 > 0 && 102 > var14 && Class84.anIntArrayArray1160[-1 + var13][var14 - -1] == 0 && 0 == (19661070 & var18[var13 - 1][1 + var14]) && (19661112 & var18[-1 + var13][var14 + var5]) == 0 && 0 == (19661280 & var18[var13][var14 + var5])) { + var20 = 1; + + while (true) { + if (-1 + var5 <= var20) { + TextureOperation38.anIntArray3456[var28] = var13 - 1; + Class45.anIntArray729[var28] = var14 + 1; + var28 = 4095 & var28 - -1; + Class84.anIntArrayArray1160[-1 + var13][1 + var14] = 6; + Class97.anIntArrayArray1373[-1 + var13][1 + var14] = var19; + break; + } + + if ((var18[var13 - 1][var14 - -1 - -var20] & 19661118) != 0 || (var18[var20 + -1 + var13][var5 + var14] & 19661304) != 0) { + break; + } + + ++var20; + } + } + + if (var13 < 102 && var14 < 102 && Class84.anIntArrayArray1160[var13 - -1][1 + var14] == 0 && 0 == (19661112 & var18[var13 + 1][var14 + var5]) && 0 == (var18[var13 - -var5][var14 + var5] & 19661280) && ~(19661187 & var18[var5 + var13][1 + var14]) == -1) { + for (var20 = 1; var20 < -1 + var5; ++var20) { + if ((var18[var20 + var13 - -1][var14 - -var5] & 19661304) != 0 || 0 != (var18[var5 + var13][var20 + (var14 - -1)] & 19661283)) { + continue label410; + } + } + + TextureOperation38.anIntArray3456[var28] = 1 + var13; + Class45.anIntArray729[var28] = var14 - -1; + Class84.anIntArrayArray1160[1 + var13][1 + var14] = 12; + Class97.anIntArrayArray1373[1 + var13][1 + var14] = var19; + var28 = 1 + var28 & 4095; + } + } + + Class129.anInt1692 = 0; + if (!var17) { + if (!var11) { + return false; + } + + var19 = 1000; + var20 = 100; + byte var21 = 10; + + for (int var22 = var6 - var21; var22 <= var21 + var6; ++var22) { + for (int var23 = -var21 + var0; (var0 + var21) >= var23; ++var23) { + if (var22 >= 0 && var23 >= 0 && var22 < 104 && var23 < 104 && Class97.anIntArrayArray1373[var22][var23] < 100) { + int var24 = 0; + if (var22 < var6) { + var24 = -var22 + var6; + } else if (var22 > (var6 - (-var2 - -1))) { + var24 = -var2 + -var6 - -1 + var22; + } + + int var25 = 0; + if (var0 > var23) { + var25 = -var23 + var0; + } else if (var23 > (var0 + var10 - 1)) { + var25 = var23 + 1 + -var0 + -var10; + } + + int var26 = var24 * var24 + var25 * var25; + if (var19 > var26 || var26 == var19 && Class97.anIntArrayArray1373[var22][var23] < var20) { + var20 = Class97.anIntArrayArray1373[var22][var23]; + var13 = var22; + var19 = var26; + var14 = var23; + } + } + } + } + + if (var19 == 1000) { + return false; + } + + if (var9 == var13 && var12 == var14) { + return false; + } + + Class129.anInt1692 = 1; + } + + byte var29 = 0; + TextureOperation38.anIntArray3456[var29] = var13; + var16 = var29 + 1; + Class45.anIntArray729[var29] = var14; + + for (var19 = var20 = Class84.anIntArrayArray1160[var13][var14]; var9 != var13 || var14 != var12; var19 = Class84.anIntArrayArray1160[var13][var14]) { + if (var19 != var20) { + TextureOperation38.anIntArray3456[var16] = var13; + var20 = var19; + Class45.anIntArray729[var16++] = var14; + } + + if ((2 & var19) == 0) { + if (0 != (8 & var19)) { + --var13; + } + } else { + ++var13; + } + + if ((var19 & 1) != 0) { + ++var14; + } else if ((var19 & 4) != 0) { + --var14; + } + } + + if (0 >= var16) { + return var3 != 1; + } else { + TextureOperation7.method299(93, var16, var3); + return true; + } + } catch (RuntimeException var27) { + throw ClientErrorException.clientError(var27, "hh.C(" + var0 + ',' + (byte) 34 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + var5 + ',' + var6 + ',' + var7 + ',' + var8 + ',' + var9 + ',' + var10 + ',' + var11 + ',' + var12 + ')'); + } + } + + public static void method1168(int var0) { + try { + TextCore.aString_853 = null; + TextCore.aString_852 = null; + if (var0 == 8160) { + anIntArray859 = null; + TextCore.COMMAND_LOWRES_GRAPHICS = null; + anIntArray861 = null; + } + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "hh.H(" + var0 + ')'); + } + } + + final Model method1157(int var1, int var2, int var3, int var4, SequenceDefinition var5, int var6, int var7) { + try { + + long var9 = (long) var3 | ((long) var7 << 16) | (long) var2 << 32; + Model var11 = (Model) Unsorted.aReferenceCache_1131.get(var9); + if (null == var11) { + Model_Sub1[] var12 = new Model_Sub1[3]; + int var13 = 0; + if (TextureOperation20.method231(var3).method948() || TextureOperation20.method231(var7).method948() || TextureOperation20.method231(var2).method948()) { + return null; + } + + Model_Sub1 var14 = TextureOperation20.method231(var3).method941(); + var12[var13++] = var14; + + var14 = TextureOperation20.method231(var7).method941(); + var12[var13++] = var14; + + var14 = TextureOperation20.method231(var2).method941(); + var12[var13++] = var14; + + var14 = new Model_Sub1(var12, var13); + + for (int var15 = 0; var15 < 5; ++var15) { + if (AudioThread.aShortArrayArray344[var15].length > this.anIntArray862[var15]) { + var14.method2016(Class3_Sub25.aShortArray2548[var15], AudioThread.aShortArrayArray344[var15][this.anIntArray862[var15]]); + } + + if (this.anIntArray862[var15] < Class101.aShortArrayArray1429[var15].length) { + var14.method2016(Class91.aShortArray1311[var15], Class101.aShortArrayArray1429[var15][this.anIntArray862[var15]]); + } + } + + var11 = var14.method2008(64, 768, -50, -10, -50); + Unsorted.aReferenceCache_1131.put(var11, var9); + } + + if (null != var5) { + var11 = var5.method2055(var11, (byte) -86, var1, var4, var6); + } + + return var11; + } catch (RuntimeException var16) { + throw ClientErrorException.clientError(var16, "hh.J(" + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + (var5 != null ? "{...}" : "null") + ',' + var6 + ',' + var7 + ',' + -2012759707 + ')'); + } + } + + private void method1158() { + try { + long var2 = this.aLong860; + this.aLong860 = -1L; + long[] var4 = Class120.aLongArray1631; + this.aLong860 = var4[(int) (255L & ((long) (this.renderAnim >> 8) ^ this.aLong860))] ^ this.aLong860 >>> 8; + this.aLong860 = var4[(int) (255L & (this.aLong860 ^ (long) this.renderAnim))] ^ this.aLong860 >>> 8; + + int var5; + for (var5 = 0; 12 > var5; ++var5) { + this.aLong860 = this.aLong860 >>> 8 ^ var4[(int) ((this.aLong860 ^ (long) (this.lookInfo[var5] >> 24)) & 255L)]; + this.aLong860 = this.aLong860 >>> 8 ^ var4[(int) (255L & (this.aLong860 ^ (long) (this.lookInfo[var5] >> 16)))]; + this.aLong860 = var4[(int) (255L & ((long) (this.lookInfo[var5] >> 8) ^ this.aLong860))] ^ this.aLong860 >>> 8; + this.aLong860 = this.aLong860 >>> 8 ^ var4[(int) ((this.aLong860 ^ (long) this.lookInfo[var5]) & 255L)]; + } + + for (var5 = 0; var5 < 5; ++var5) { + this.aLong860 = var4[(int) (((long) this.anIntArray862[var5] ^ this.aLong860) & 255L)] ^ this.aLong860 >>> 8; + } + + this.aLong860 = var4[(int) (((long) (this.aBoolean864 ? 1 : 0) ^ this.aLong860) & 255L)] ^ this.aLong860 >>> 8; + if (var2 != 0 && this.aLong860 != var2) { + KeyboardListener.aReferenceCache_1911.remove(var2); + } + + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "hh.K(" + 459557008 + ')'); + } + } + + final void method1159(boolean var1) { + try { + this.aBoolean864 = var1; + this.method1158(); + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "hh.A(" + var1 + ',' + true + ')'); + } + } + + final void method1161(int[] var1, int var2, boolean var3, int[] look, int render) { + try { + if (render != this.renderAnim) { + this.renderAnim = render; + this.anIntArrayArray863 = null; + } + + if (null == look) { + look = new int[12]; + + for (int var7 = 0; var7 < 8; ++var7) { + for (int var8 = 0; Class25.anInt497 > var8; ++var8) { + Class24 var9 = TextureOperation20.method231(var8); + if (!var9.aBoolean476 && ((var3 ? CS2Script.anIntArray3228[var7] : Class3_Sub26.anIntArray2559[var7]) == var9.anInt466)) { + look[Class163.anIntArray2043[var7]] = TextureOperation3.bitwiseOr(Integer.MIN_VALUE, var8); + break; + } + } + } + } + + this.pnpcId = var2; + this.aBoolean864 = var3; + this.anIntArray862 = var1; + this.lookInfo = look; + this.method1158(); + } catch (RuntimeException var10) { + throw ClientErrorException.clientError(var10, "hh.G(" + (var1 != null ? "{...}" : "null") + ',' + var2 + ',' + var3 + ',' + 0 + ',' + "{...}" + ',' + render + ')'); + } + } + + final void method1162(int var1, int var3) { + try { + this.anIntArray862[var1] = var3; + this.method1158(); + + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "hh.L(" + var1 + ',' + false + ',' + var3 + ')'); + } + } + + final int method1163() { + try { + + return this.pnpcId != -1 ? 305419896 + NPCDefinition.getNPCDefinition(this.pnpcId).npcId : (this.lookInfo[8] << 10) + ((this.anIntArray862[0] << 25) - -(this.anIntArray862[4] << 20)) - (-(this.lookInfo[0] << 15) - ((this.lookInfo[11] << 5) + this.lookInfo[1])); + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "hh.E(" + -24861 + ')'); + } + } + + final void method1164(int var1, int var2) { + try { + int var4 = Class163.anIntArray2043[var1]; + if (this.lookInfo[var4] != 0) { + TextureOperation20.method231(var2); + this.lookInfo[var4] = TextureOperation3.bitwiseOr(var2, Integer.MIN_VALUE); + this.method1158(); + } + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "hh.I(" + var1 + ',' + var2 + ',' + 0 + ')'); + } + } + + final Model method1165(Class145[] var1, int var2, SequenceDefinition var3, SequenceDefinition var4, int var5, int var6, int var7, int var8, int var10, int var11) { + try { + if (this.pnpcId == -1) { + int[] var15 = this.lookInfo; + long var13 = this.aLong860; + if (var4 != null && (var4.leftHandItem >= 0 || var4.rightHandItem >= 0)) { + var15 = new int[12]; + + System.arraycopy(this.lookInfo, 0, var15, 0, 12); + + if (var4.leftHandItem >= 0) { + if (var4.leftHandItem == 65535) { + var13 ^= -4294967296L; + var15[5] = 0; + } else { + var15[5] = TextureOperation3.bitwiseOr(1073741824, var4.leftHandItem); + var13 ^= (long) var15[5] << 32; + } + } + + if (var4.rightHandItem >= 0) { + if (var4.rightHandItem == 65535) { + var15[3] = 0; + var13 ^= 4294967295L; + } else { + var15[3] = TextureOperation3.bitwiseOr(1073741824, var4.rightHandItem); + var13 ^= var15[3]; + } + } + } + + Model var37 = (Model) KeyboardListener.aReferenceCache_1911.get(var13); + boolean var17; + int var23; + int var22; + int var25; + int var24; + int frame; + int var29; + int var28; + int var34; + int var32; + int var33; + int var45; + if (var37 == null) { + var17 = false; + + int var19; + for (int var18 = 0; var18 < 12; ++var18) { + var19 = var15[var18]; + if ((var19 & 1073741824) != 0) { + if (!ItemDefinition.getItemDefinition(1073741823 & var19).method1108(this.aBoolean864)) { + var17 = true; + } + } else if ((var19 < 0) && !TextureOperation20.method231(1073741823 & var19).method942()) { + var17 = true; + } + } + + if (var17) { + if (this.aLong855 != -1L) { + var37 = (Model) KeyboardListener.aReferenceCache_1911.get(this.aLong855); + } + + if (null == var37) { + return null; + } + } + + if (null == var37) { + Model_Sub1[] var39 = new Model_Sub1[12]; + + int var20; + for (var19 = 0; var19 < 12; ++var19) { + var20 = var15[var19]; + Model_Sub1 var21; + if ((var20 & 1073741824) == 0) { + if (var20 < 0) { + var21 = TextureOperation20.method231(var20 & 1073741823).method947(); + if (null != var21) { + var39[var19] = var21; + } + } + } else { + var21 = ItemDefinition.getItemDefinition(var20 & 1073741823).method1117(this.aBoolean864); + if (null != var21) { + var39[var19] = var21; + } + } + } + + RenderAnimationDefinition var40 = null; + if (this.renderAnim != -1) { + var40 = Class3_Sub10.getRenderAnimationDefinition(this.renderAnim); + } + + if (var40 != null && null != var40.equipment_transforms) { + for (var20 = 0; var20 < var40.equipment_transforms.length; ++var20) { + if (null != var40.equipment_transforms[var20] && null != var39[var20]) { + var45 = var40.equipment_transforms[var20][0]; + var22 = var40.equipment_transforms[var20][1]; + var23 = var40.equipment_transforms[var20][2]; + var25 = var40.equipment_transforms[var20][4]; + var24 = var40.equipment_transforms[var20][3]; + frame = var40.equipment_transforms[var20][5]; + if (null == this.anIntArrayArray863) { + this.anIntArrayArray863 = new int[var40.equipment_transforms.length][]; + } + + if (this.anIntArrayArray863[var20] == null) { + int[] var27 = this.anIntArrayArray863[var20] = new int[15]; + if (var24 == 0 && var25 == 0 && frame == 0) { + var27[12] = -var45; + var27[13] = -var22; + var27[0] = var27[4] = var27[8] = 32768; + var27[14] = -var23; + } else { + var28 = Class51.anIntArray851[var24] >> 1; + var29 = Class51.anIntArray840[var24] >> 1; + int var30 = Class51.anIntArray851[var25] >> 1; + int var31 = Class51.anIntArray840[var25] >> 1; + var32 = Class51.anIntArray851[frame] >> 1; + var33 = Class51.anIntArray840[frame] >> 1; + var27[4] = var28 * var32 + 16384 >> 15; + var27[5] = -var29; + var27[3] = 16384 + var33 * var28 >> 15; + var27[2] = 16384 + var28 * var31 >> 15; + var27[8] = var30 * var28 - -16384 >> 15; + int var35 = 16384 + var33 * var29 >> 15; + var27[0] = var31 * var35 + var32 * var30 - -16384 >> 15; + var27[14] = 16384 + var27[8] * -var23 + -var22 * var27[5] + var27[2] * -var45 >> 15; + var27[6] = var30 * var35 + (var32 * -var31 - -16384) >> 15; + var34 = 16384 + var32 * var29 >> 15; + var27[7] = 16384 + -var33 * -var31 + var34 * var30 >> 15; + var27[1] = var31 * var34 + (var30 * -var33 - -16384) >> 15; + var27[12] = -var22 * var27[3] + var27[0] * -var45 + -var23 * var27[6] - -16384 >> 15; + var27[13] = 16384 + -var22 * var27[4] + var27[1] * -var45 + -var23 * var27[7] >> 15; + } + + var27[9] = var45; + var27[11] = var23; + var27[10] = var22; + } + + if (0 != var24 || var25 != 0 || frame != 0) { + var39[var20].method2013(var24, var25, frame); + } + + if (var45 != 0 || 0 != var22 || 0 != var23) { + var39[var20].method2001(var45, var22, var23); + } + } + } + } + + Model_Sub1 var43 = new Model_Sub1(var39, var39.length); + + for (var45 = 0; 5 > var45; ++var45) { + if (AudioThread.aShortArrayArray344[var45].length > this.anIntArray862[var45]) { + var43.method2016(Class3_Sub25.aShortArray2548[var45], AudioThread.aShortArrayArray344[var45][this.anIntArray862[var45]]); + } + + if (Class101.aShortArrayArray1429[var45].length > this.anIntArray862[var45]) { + var43.method2016(Class91.aShortArray1311[var45], Class101.aShortArrayArray1429[var45][this.anIntArray862[var45]]); + } + } + + var37 = var43.method2008(64, 850, -30, -50, -30); + if (HDToolKit.highDetail) { + ((Class140_Sub1_Sub1) var37).method1920(false, false, true, false, false, true); + } + + KeyboardListener.aReferenceCache_1911.put(var37, var13); + this.aLong855 = var13; + } + } + + var17 = false; + boolean var38 = false; + var45 = var1 != null ? var1.length : 0; + boolean var42 = false; + boolean var44 = false; + + int var47; + for (var22 = 0; var22 < var45; ++var22) { + if (Objects.requireNonNull(var1)[var22] != null) { + SequenceDefinition var41 = SequenceDefinition.getAnimationDefinition(var1[var22].animationId); + if (var41.frames != null) { + var17 = true; + Class123.aClass142Array1654[var22] = var41; + var24 = var1[var22].anInt1893; + var25 = var1[var22].anInt1891; + frame = var41.frames[var24]; + Class166.aClass3_Sub28_Sub5Array2070[var22] = Class3_Sub9.method133(frame >>> 16); + frame &= 65535; + anIntArray1833[var22] = frame; + if (Class166.aClass3_Sub28_Sub5Array2070[var22] != null) { + var42 |= Class166.aClass3_Sub28_Sub5Array2070[var22].method561(frame, (byte) 119); + var38 |= Class166.aClass3_Sub28_Sub5Array2070[var22].method559(frame); + var44 |= var41.aBoolean1848; + } + + if ((var41.aBoolean1846 || ClientCommands.tweeningEnabled) && var25 != -1 && var25 < var41.frames.length) { + Class154.anIntArray1960[var22] = var41.duration[var24]; + anIntArray3139[var22] = var1[var22].anInt1897; + var47 = var41.frames[var25]; + Class75.aClass3_Sub28_Sub5Array1103[var22] = Class3_Sub9.method133(var47 >>> 16); + var47 &= 65535; + anIntArray1679[var22] = var47; + if (null != Class75.aClass3_Sub28_Sub5Array1103[var22]) { + var42 |= Class75.aClass3_Sub28_Sub5Array1103[var22].method561(var47, (byte) 117); + var38 |= Class75.aClass3_Sub28_Sub5Array1103[var22].method559(var47); + } + } else { + Class154.anIntArray1960[var22] = 0; + anIntArray3139[var22] = 0; + Class75.aClass3_Sub28_Sub5Array1103[var22] = null; + anIntArray1679[var22] = -1; + } + } + } + } + + if (!var17 && null == var4 && null == var3) { + return var37; + } else { + var22 = -1; + var23 = -1; + var24 = 0; + Class3_Sub28_Sub5 var48 = null; + Class3_Sub28_Sub5 var46 = null; + if (null != var4) { + var22 = var4.frames[var10]; + var47 = var22 >>> 16; + var46 = Class3_Sub9.method133(var47); + var22 &= 65535; + if (var46 != null) { + var42 |= var46.method561(var22, (byte) 124); + var38 |= var46.method559(var22); + var44 |= var4.aBoolean1848; + } + + if ((var4.aBoolean1846 || ClientCommands.tweeningEnabled) && var2 != -1 && var4.frames.length > var2) { + var23 = var4.frames[var2]; + var28 = var23 >>> 16; + var23 &= 65535; + var24 = var4.duration[var10]; + if (var28 == var47) { + var48 = var46; + } else { + var48 = Class3_Sub9.method133(var23 >>> 16); + } + + if (null != var48) { + var42 |= var48.method561(var23, (byte) 122); + var38 |= var48.method559(var23); + } + } + } + + var47 = -1; + var28 = -1; + Class3_Sub28_Sub5 var49 = null; + Class3_Sub28_Sub5 var50 = null; + var29 = 0; + if (var3 != null) { + var47 = var3.frames[var11]; + var32 = var47 >>> 16; + var47 &= 65535; + var49 = Class3_Sub9.method133(var32); + if (null != var49) { + var42 |= var49.method561(var47, (byte) 123); + var38 |= var49.method559(var47); + var44 |= var3.aBoolean1848; + } + + if ((var3.aBoolean1846 || ClientCommands.tweeningEnabled) && var6 != -1 && var3.frames.length > var6) { + var29 = var3.duration[var11]; + var28 = var3.frames[var6]; + var33 = var28 >>> 16; + var28 &= 65535; + if (var33 == var32) { + var50 = var49; + } else { + var50 = Class3_Sub9.method133(var28 >>> 16); + } + + if (null != var50) { + var42 |= var50.method561(var28, (byte) 122); + var38 |= var50.method559(var28); + } + } + } + + Model var51 = var37.method1894(!var38, !var42, !var44); + var33 = 0; + + for (var34 = 1; var33 < var45; var34 <<= 1) { + if (Class166.aClass3_Sub28_Sub5Array2070[var33] != null) { + var51.method1887(Class166.aClass3_Sub28_Sub5Array2070[var33], anIntArray1833[var33], Class75.aClass3_Sub28_Sub5Array1103[var33], anIntArray1679[var33], anIntArray3139[var33] + -1, Class154.anIntArray1960[var33], var34, Class123.aClass142Array1654[var33].aBoolean1848, this.anIntArrayArray863[var33]); + } + + ++var33; + } + + if (null != var46 && null != var49) { + var51.method1892(var46, var22, var48, var23, var8 - 1, var24, var49, var47, var50, var28, var5 + -1, var29, var4.aBooleanArray1855, var4.aBoolean1848 | var3.aBoolean1848); + } else if (var46 == null) { + if (null != var49) { + var51.method1880(var49, var47, var50, var28, var5 - 1, var29, var3.aBoolean1848); + } + } else { + var51.method1880(var46, var22, var48, var23, var8 + -1, var24, var4.aBoolean1848); + } + + for (var33 = 0; var33 < var45; ++var33) { + Class166.aClass3_Sub28_Sub5Array2070[var33] = null; + Class75.aClass3_Sub28_Sub5Array1103[var33] = null; + Class123.aClass142Array1654[var33] = null; + } + + return var51; + } + } else { + return NPCDefinition.getNPCDefinition(this.pnpcId).method1476(var1, var6, (byte) -128, var11, var2, var8, var10, var3, var5, var4); + } + } catch (RuntimeException var36) { + throw ClientErrorException.clientError(var36, "hh.D(" + (var1 != null ? "{...}" : "null") + ',' + var2 + ',' + (var3 != null ? "{...}" : "null") + ',' + (var4 != null ? "{...}" : "null") + ',' + var5 + ',' + var6 + ',' + var7 + ',' + var8 + ',' + true + ',' + var10 + ',' + var11 + ')'); + } + } + + final Model method1167(int var1, SequenceDefinition var3, int var4, int var5) { + try { + if (this.pnpcId == -1) { + Model var6 = (Model) Unsorted.aReferenceCache_1131.get(this.aLong860); + + if (var6 == null) { + boolean var7 = false; + + int var9; + for (int var8 = 0; var8 < 12; ++var8) { + var9 = this.lookInfo[var8]; + if (0 == (1073741824 & var9)) { + if (var9 < 0 && TextureOperation20.method231(var9 & 1073741823).method948()) { + var7 = true; + } + } else if (!ItemDefinition.getItemDefinition(1073741823 & var9).method1102(this.aBoolean864)) { + var7 = true; + } + } + + if (var7) { + return null; + } + + Model_Sub1[] var14 = new Model_Sub1[12]; + var9 = 0; + + int var11; + for (int var10 = 0; var10 < 12; ++var10) { + var11 = this.lookInfo[var10]; + Model_Sub1 var12; + if ((1073741824 & var11) == 0) { + if (0 != (Integer.MIN_VALUE & var11)) { + var12 = TextureOperation20.method231(1073741823 & var11).method941(); + var14[var9++] = var12; + } + } else { + var12 = ItemDefinition.getItemDefinition(var11 & 1073741823).method1116(this.aBoolean864); + if (var12 != null) { + var14[var9++] = var12; + } + } + } + + Model_Sub1 var15 = new Model_Sub1(var14, var9); + + for (var11 = 0; var11 < 5; ++var11) { + if (this.anIntArray862[var11] < AudioThread.aShortArrayArray344[var11].length) { + var15.method2016(Class3_Sub25.aShortArray2548[var11], AudioThread.aShortArrayArray344[var11][this.anIntArray862[var11]]); + } + + if (Class101.aShortArrayArray1429[var11].length > this.anIntArray862[var11]) { + var15.method2016(Class91.aShortArray1311[var11], Class101.aShortArrayArray1429[var11][this.anIntArray862[var11]]); + } + } + + var6 = var15.method2008(64, 768, -50, -10, -50); + Unsorted.aReferenceCache_1131.put(var6, this.aLong860); + } + + if (var3 != null) { + var6 = var3.method2055(var6, (byte) 120, var5, var1, var4); + } + + return var6; + } else { + return NPCDefinition.getNPCDefinition(this.pnpcId).getChatModel(var3, var1, var5, -109, var4); + } + } catch (RuntimeException var13) { + throw ClientErrorException.clientError(var13, "hh.F(" + var1 + ',' + (byte) 127 + ',' + (var3 != null ? "{...}" : "null") + ',' + var4 + ',' + var5 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class53.java b/Client/src/main/java/org/runite/client/Class53.java new file mode 100644 index 000000000..dc1116d07 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class53.java @@ -0,0 +1,108 @@ +package org.runite.client; + + +import java.io.*; + +public final class Class53 { + + static int anInt865 = -1; + static long aLong866 = 0L; + static int anInt867; + static int worldListOffset; + + + static int method1170(int var1) { + return var1 >>> 8; + } + + public static void method1171(int var0, int var1, int var2, int var3, int var4, RSInterface var5) { + try { + int var7 = var3 * var3 + var4 * var4; + if (var7 <= 360000) { + int var8 = Math.min(var5.width / 2, var5.height / 2); + + if (var8 * var8 >= var7) { + Class38_Sub1.minimapIcons(var5, Class129_Sub1.aAbstractSpriteArray2690[var0], var4, var3, var1, var2); + } else { + var8 -= 10; + int var9 = 2047 & TextureOperation9.anInt3102 + GraphicDefinition.CAMERA_DIRECTION; + int var11 = Class51.anIntArray851[var9]; + int var10 = Class51.anIntArray840[var9]; + var10 = var10 * 256 / (256 + Class164_Sub2.anInt3020); + var11 = var11 * 256 / (Class164_Sub2.anInt3020 + 256); + int var12 = var4 * var10 - -(var11 * var3) >> 16; + int var13 = -(var10 * var3) + var4 * var11 >> 16; + double var14 = Math.atan2(var12, var13); + int var16 = (int) (Math.sin(var14) * (double) var8); + int var17 = (int) (Math.cos(var14) * (double) var8); + if (HDToolKit.highDetail) { + ((HDSprite) TextureOperation8.aAbstractSpriteArray3458[var0]).method648(240, 240, (var5.width / 2 + var2 + var16) * 16, 16 * (-var17 + var5.height / 2 + var1), (int) (10430.378D * var14)); + } else { + ((SoftwareSprite) TextureOperation8.aAbstractSpriteArray3458[var0]).method660(-10 + var16 + var5.width / 2 + var2, -10 + var5.height / 2 + var1 + -var17, var14); + } + } + + } + } catch (RuntimeException var18) { + throw ClientErrorException.clientError(var18, "hi.D(" + var0 + ',' + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + (var5 != null ? "{...}" : "null") + ',' + false + ')'); + } + } + + static String method1172(Throwable var1) throws IOException { + String var2; + if (var1 instanceof ClientErrorException) { + ClientErrorException var3 = (ClientErrorException) var1; + var1 = var3.aThrowable2118; + var2 = var3.aString2117 + " | "; + } else { + var2 = ""; + } + + StringWriter var13 = new StringWriter(); + PrintWriter var4 = new PrintWriter(var13); + var1.printStackTrace(var4); + var4.close(); + String var5 = var13.toString(); + BufferedReader var6 = new BufferedReader(new StringReader(var5)); + String var7 = var6.readLine(); + + while (true) { + String var8 = var6.readLine(); + if (var8 == null) { + var2 = var2 + "| " + var7; + return var2; + } + + int var9 = var8.indexOf(40); + int var10 = var8.indexOf(41, 1 + var9); + String var11; + if (var9 == -1) { + var11 = var8; + } else { + var11 = var8.substring(0, var9); + } + + var11 = var11.trim(); + var11 = var11.substring(1 + var11.lastIndexOf(32)); + var11 = var11.substring(var11.lastIndexOf(9) + 1); + var2 = var2 + var11; + if (-1 != var9 && var10 != -1) { + int var12 = var8.indexOf(".java:", var9); + if (var12 >= 0) { + var2 = var2 + var8.substring(5 + var12, var10); + } + } + + var2 = var2 + ' '; + } + } + + static RSString method1174(RSInterface var0, byte var1) { + try { + return Client.method44(var0).method101() != 0 ? (null != var0.aString_245 && var0.aString_245.trim(1).length() != 0 ? var0.aString_245 : (ClientCommands.commandQaOpEnabled ? TextCore.aString_2116 : null)) : null; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "hi.F(" + (var0 != null ? "{...}" : "null") + ',' + var1 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class56.java b/Client/src/main/java/org/runite/client/Class56.java new file mode 100644 index 000000000..2c244fb74 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class56.java @@ -0,0 +1,115 @@ +package org.runite.client; + +import org.rs09.client.data.NodeCache; + +public final class Class56 { + + static Class3_Sub26 aClass3_Sub26_884 = new Class3_Sub26(0, 0); + static NodeCache aClass47_885 = new NodeCache(128); + static RSInterface aClass11_886 = null; + public static int[] localPlayerIndexes = new int[2048]; + static Class106[] aClass106Array890; + + static int anInt893 = 0; + + static int method1186(int var1) { + try { + double var2 = (double) (255 & var1 >> 16) / 256.0D; + double var4 = (double) (255 & var1 >> 8) / 256.0D; + double var12 = 0.0D; + double var6 = (double) (255 & var1) / 256.0D; + double var8 = var2; + double var14 = 0; + double var10 = var2; + if (var2 > var4) { + var8 = var4; + } + + if (var6 < var8) { + var8 = var6; + } + + if (var4 > var2) { + var10 = var4; + } + + if (var6 > var10) { + var10 = var6; + } + + double var16 = (var8 + var10) / 2.0D; + if (var8 != var10) { + if (0.5D > var16) { + var14 = (-var8 + var10) / (var8 + var10); + } + + if (var16 >= 0.5D) { + var14 = (-var8 + var10) / (2.0D - var10 - var8); + } + + if (var10 == var2) { + var12 = (var4 - var6) / (-var8 + var10); + } else if (var4 == var10) { + var12 = 2.0D + (-var2 + var6) / (var10 - var8); + } else if (var10 == var6) { + var12 = 4.0D + (-var4 + var2) / (-var8 + var10); + } + } + + int var19 = (int) (var14 * 256.0D); + int var20 = (int) (256.0D * var16); + var12 /= 6.0D; + if (0 > var20) { + var20 = 0; + } else if (var20 > 255) { + var20 = 255; + } + + int var18 = (int) (var12 * 256.0D); + if (var19 >= 0) { + if (var19 > 255) { + var19 = 255; + } + } else { + var19 = 0; + } + + if (var20 <= 243) { + if (var20 <= 217) { + if (var20 > 192) { + var19 >>= 2; + } else if (var20 > 179) { + var19 >>= 1; + } + } else { + var19 >>= 3; + } + } else { + var19 >>= 4; + } + + return (var18 >> 2 << 10) + (var19 >> 5 << 7) + (var20 >> 1); + } catch (RuntimeException var21) { + throw ClientErrorException.clientError(var21, "ib.A(" + 0 + ',' + var1 + ')'); + } + } + + static void method1188() { + try { + MouseListeningClass.anIntArray1920 = null; + Class38_Sub1.anIntArrayArrayArray2609 = null; + Unsorted.anIntArray2469 = null; + Unsorted.aByteArrayArrayArray1328 = null; + PacketParser.aByteArrayArrayArray81 = null; + Class67.aByteArrayArrayArray1014 = null; + Class158_Sub1.aByteArrayArrayArray1828 = null; + TextureOperation36.aByteArrayArrayArray3430 = null; + Unsorted.anIntArray1138 = null; + Class129.anIntArray1695 = null; + Class3_Sub31.anIntArray2606 = null; + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "ib.D(" + -113 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class57.java b/Client/src/main/java/org/runite/client/Class57.java new file mode 100644 index 000000000..823184a8b --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class57.java @@ -0,0 +1,47 @@ +package org.runite.client; + +public final class Class57 { + + public static AbstractSprite aAbstractSprite_895; + static int[] varpArray = new int[3500]; + static int anInt902 = 100; + static int[] anIntArray904 = new int[200]; + int anInt896 = 0; + int anInt899 = 2048; + int anInt907 = 0; + int anInt908 = 2048; + + + final void method1190(DataBuffer var2, int var3) { + try { + while (true) { + int var4 = var2.readUnsignedByte(); + if (var4 == 0) { + return; + } + + this.method1191(var4, var2, var3); + } + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "ic.A(" + 2 + ',' + (var2 != null ? "{...}" : "null") + ',' + var3 + ')'); + } + } + + private void method1191(int var1, DataBuffer var2, int var3) { + try { + if (1 == var1) { + this.anInt896 = var2.readUnsignedByte(); + } else if (var1 == 2) { + this.anInt908 = var2.readUnsignedShort(); + } else if (var1 == 3) { + this.anInt899 = var2.readUnsignedShort(); + } else if (4 == var1) { + this.anInt907 = var2.readSignedShort(); + } + + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "ic.C(" + var1 + ',' + (var2 != null ? "{...}" : "null") + ',' + var3 + ',' + true + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class58.java b/Client/src/main/java/org/runite/client/Class58.java new file mode 100644 index 000000000..a3a705b6a --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class58.java @@ -0,0 +1,52 @@ +package org.runite.client; + + +import java.awt.*; + +public final class Class58 { + + static int anInt909 = -1; + static int[][][] anIntArrayArrayArray911 = new int[2][][]; + static int[][][] anIntArrayArrayArray914; + static Interface4 anInterface4_915 = null; + static int anInt916; + static Js5Worker aJs5Worker_917; + + + public static void method1194() { + try { + if (null != Class3_Sub21.aAudioChannel_2491) { + Class3_Sub21.aAudioChannel_2491.method2153(); + } + + if (null != WorldListEntry.aAudioChannel_2627) { + WorldListEntry.aAudioChannel_2627.method2153(); + } + + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "id.A(" + -16385 + ')'); + } + } + + static void method1196(int var3, int var4) { + try { + Class3_Sub28_Sub18.anInt3765 = var4; + + Class101.anInt1425 = 0; + Class159.anInt2020 = 0; + Class57.anInt902 = var3; + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "id.B(" + 0 + ',' + 0 + ',' + (byte) 111 + ',' + var3 + ',' + var4 + ')'); + } + } + + static void method1197(CacheIndex var0) { + try { + + Class46.configurationsIndex737 = var0; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "id.E(" + (var0 != null ? "{...}" : "null") + ',' + (byte) 69 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class59.java b/Client/src/main/java/org/runite/client/Class59.java new file mode 100644 index 000000000..a5e00f02a --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class59.java @@ -0,0 +1,284 @@ +package org.runite.client; + +final class Class59 { + + private static final int[] anIntArray928 = new int[]{256, 128, 86, 64}; + private static final float[] aFloatArray929 = new float[]{1.0649863E-7F, 1.1341951E-7F, 1.2079015E-7F, 1.2863978E-7F, 1.369995E-7F, 1.459025E-7F, 1.5538409E-7F, 1.6548181E-7F, 1.7623574E-7F, 1.8768856E-7F, 1.998856E-7F, 2.128753E-7F, 2.2670913E-7F, 2.4144197E-7F, 2.5713223E-7F, 2.7384212E-7F, 2.9163792E-7F, 3.1059022E-7F, 3.307741E-7F, 3.5226967E-7F, 3.7516213E-7F, 3.995423E-7F, 4.255068E-7F, 4.5315863E-7F, 4.8260745E-7F, 5.1397E-7F, 5.4737063E-7F, 5.829419E-7F, 6.208247E-7F, 6.611694E-7F, 7.041359E-7F, 7.4989464E-7F, 7.98627E-7F, 8.505263E-7F, 9.057983E-7F, 9.646621E-7F, 1.0273513E-6F, 1.0941144E-6F, 1.1652161E-6F, 1.2409384E-6F, 1.3215816E-6F, 1.4074654E-6F, 1.4989305E-6F, 1.5963394E-6F, 1.7000785E-6F, 1.8105592E-6F, 1.9282195E-6F, 2.053526E-6F, 2.1869757E-6F, 2.3290977E-6F, 2.4804558E-6F, 2.6416496E-6F, 2.813319E-6F, 2.9961443E-6F, 3.1908505E-6F, 3.39821E-6F, 3.619045E-6F, 3.8542307E-6F, 4.1047006E-6F, 4.371447E-6F, 4.6555283E-6F, 4.958071E-6F, 5.280274E-6F, 5.623416E-6F, 5.988857E-6F, 6.3780467E-6F, 6.7925284E-6F, 7.2339453E-6F, 7.704048E-6F, 8.2047E-6F, 8.737888E-6F, 9.305725E-6F, 9.910464E-6F, 1.0554501E-5F, 1.1240392E-5F, 1.1970856E-5F, 1.2748789E-5F, 1.3577278E-5F, 1.4459606E-5F, 1.5399271E-5F, 1.6400005E-5F, 1.7465769E-5F, 1.8600793E-5F, 1.9809577E-5F, 2.1096914E-5F, 2.2467912E-5F, 2.3928002E-5F, 2.5482977E-5F, 2.7139005E-5F, 2.890265E-5F, 3.078091E-5F, 3.2781227E-5F, 3.4911533E-5F, 3.718028E-5F, 3.9596467E-5F, 4.2169668E-5F, 4.491009E-5F, 4.7828602E-5F, 5.0936775E-5F, 5.424693E-5F, 5.7772202E-5F, 6.152657E-5F, 6.552491E-5F, 6.9783084E-5F, 7.4317984E-5F, 7.914758E-5F, 8.429104E-5F, 8.976875E-5F, 9.560242E-5F, 1.0181521E-4F, 1.0843174E-4F, 1.1547824E-4F, 1.2298267E-4F, 1.3097477E-4F, 1.3948625E-4F, 1.4855085E-4F, 1.5820454E-4F, 1.6848555E-4F, 1.7943469E-4F, 1.9109536E-4F, 2.0351382E-4F, 2.167393E-4F, 2.3082423E-4F, 2.4582449E-4F, 2.6179955E-4F, 2.7881275E-4F, 2.9693157E-4F, 3.1622787E-4F, 3.3677815E-4F, 3.5866388E-4F, 3.8197188E-4F, 4.0679457E-4F, 4.3323037E-4F, 4.613841E-4F, 4.913675E-4F, 5.2329927E-4F, 5.573062E-4F, 5.935231E-4F, 6.320936E-4F, 6.731706E-4F, 7.16917E-4F, 7.635063E-4F, 8.1312325E-4F, 8.6596457E-4F, 9.2223985E-4F, 9.821722E-4F, 0.0010459992F, 0.0011139743F, 0.0011863665F, 0.0012634633F, 0.0013455702F, 0.0014330129F, 0.0015261382F, 0.0016253153F, 0.0017309374F, 0.0018434235F, 0.0019632196F, 0.0020908006F, 0.0022266726F, 0.0023713743F, 0.0025254795F, 0.0026895993F, 0.0028643848F, 0.0030505287F, 0.003248769F, 0.0034598925F, 0.0036847359F, 0.0039241905F, 0.0041792067F, 0.004450795F, 0.004740033F, 0.005048067F, 0.0053761187F, 0.005725489F, 0.0060975635F, 0.0064938175F, 0.0069158226F, 0.0073652514F, 0.007843887F, 0.008353627F, 0.008896492F, 0.009474637F, 0.010090352F, 0.01074608F, 0.011444421F, 0.012188144F, 0.012980198F, 0.013823725F, 0.014722068F, 0.015678791F, 0.016697686F, 0.017782796F, 0.018938422F, 0.020169148F, 0.021479854F, 0.022875736F, 0.02436233F, 0.025945531F, 0.027631618F, 0.029427277F, 0.031339627F, 0.03337625F, 0.035545226F, 0.037855156F, 0.0403152F, 0.042935107F, 0.045725275F, 0.048696756F, 0.05186135F, 0.05523159F, 0.05882085F, 0.062643364F, 0.06671428F, 0.07104975F, 0.075666964F, 0.08058423F, 0.08582105F, 0.09139818F, 0.097337745F, 0.1036633F, 0.11039993F, 0.11757434F, 0.12521498F, 0.13335215F, 0.14201812F, 0.15124726F, 0.16107617F, 0.1715438F, 0.18269168F, 0.19456401F, 0.20720787F, 0.22067343F, 0.23501402F, 0.25028655F, 0.26655158F, 0.28387362F, 0.3023213F, 0.32196787F, 0.34289113F, 0.36517414F, 0.3889052F, 0.41417846F, 0.44109413F, 0.4697589F, 0.50028646F, 0.53279793F, 0.5674221F, 0.6042964F, 0.64356697F, 0.6853896F, 0.72993004F, 0.777365F, 0.8278826F, 0.88168305F, 0.9389798F, 1.0F}; + private static boolean[] aBooleanArray919; + private static int[] anIntArray925; + private static int[] anIntArray927; + private final int[] anIntArray918; + private final int[][] anIntArrayArray920; + private final int[] anIntArray921; + private final int[] anIntArray922; + private final int anInt923; + private final int[] anIntArray924; + private final int[] anIntArray926; + + + Class59() { + int var1 = Class3_Sub14.method368(16); + if (var1 == 1) { + int var2 = Class3_Sub14.method368(5); + int var3 = 0; + this.anIntArray922 = new int[var2]; + + int var4; + int var5; + for (var4 = 0; var4 < var2; ++var4) { + var5 = Class3_Sub14.method368(4); + this.anIntArray922[var4] = var5; + if (var5 >= var3) { + var3 = var5 + 1; + } + } + + this.anIntArray926 = new int[var3]; + this.anIntArray924 = new int[var3]; + this.anIntArray918 = new int[var3]; + this.anIntArrayArray920 = new int[var3][]; + + int var7; + for (var4 = 0; var4 < var3; ++var4) { + this.anIntArray926[var4] = Class3_Sub14.method368(3) + 1; + var5 = this.anIntArray924[var4] = Class3_Sub14.method368(2); + if (var5 != 0) { + this.anIntArray918[var4] = Class3_Sub14.method368(8); + } + + var5 = 1 << var5; + int[] var6 = new int[var5]; + this.anIntArrayArray920[var4] = var6; + + for (var7 = 0; var7 < var5; ++var7) { + var6[var7] = Class3_Sub14.method368(8) - 1; + } + } + + this.anInt923 = Class3_Sub14.method368(2) + 1; + var4 = Class3_Sub14.method368(4); + var5 = 2; + + int var9; + for (var9 = 0; var9 < var2; ++var9) { + var5 += this.anIntArray926[this.anIntArray922[var9]]; + } + + this.anIntArray921 = new int[var5]; + this.anIntArray921[0] = 0; + this.anIntArray921[1] = 1 << var4; + var5 = 2; + + for (var9 = 0; var9 < var2; ++var9) { + var7 = this.anIntArray922[var9]; + + for (int var8 = 0; var8 < this.anIntArray926[var7]; ++var8) { + this.anIntArray921[var5++] = Class3_Sub14.method368(var4); + } + } + + if (anIntArray925 == null || anIntArray925.length < var5) { + anIntArray925 = new int[var5]; + anIntArray927 = new int[var5]; + aBooleanArray919 = new boolean[var5]; + } + + } else { + throw new RuntimeException(); + } + } + + private static int method1201(int[] var0, int var1) { + int var2 = var0[var1]; + int var3 = -1; + int var4 = Integer.MIN_VALUE; + + for (int var5 = 0; var5 < var1; ++var5) { + int var6 = var0[var5]; + if (var6 < var2 && var6 > var4) { + var3 = var5; + var4 = var6; + } + } + + return var3; + } + + private static int method1203(int[] var0, int var1) { + int var2 = var0[var1]; + int var3 = -1; + int var4 = Integer.MAX_VALUE; + + for (int var5 = 0; var5 < var1; ++var5) { + int var6 = var0[var5]; + if (var6 > var2 && var6 < var4) { + var3 = var5; + var4 = var6; + } + } + + return var3; + } + + private void method1198(int var1, int var2, int var3, int var4, float[] var5, int var6) { + int var7 = var4 - var2; + int var8 = var3 - var1; + int var9 = var7 < 0 ? -var7 : var7; + int var10 = var7 / var8; + int var11 = var2; + int var12 = 0; + int var13 = var7 < 0 ? var10 - 1 : var10 + 1; + var9 -= (var10 < 0 ? -var10 : var10) * var8; + var5[var1] *= aFloatArray929[var2]; + if (var3 > var6) { + var3 = var6; + } + + for (int var14 = var1 + 1; var14 < var3; ++var14) { + var12 += var9; + if (var12 >= var8) { + var12 -= var8; + var11 += var13; + } else { + var11 += var10; + } + + var5[var14] *= aFloatArray929[var11]; + } + + } + + private void method1199(int var1, int var2) { + if (var1 < var2) { + int var3 = var1; + int var4 = anIntArray925[var1]; + int var5 = anIntArray927[var1]; + boolean var6 = aBooleanArray919[var1]; + + for (int var7 = var1 + 1; var7 <= var2; ++var7) { + int var8 = anIntArray925[var7]; + if (var8 < var4) { + anIntArray925[var3] = var8; + anIntArray927[var3] = anIntArray927[var7]; + aBooleanArray919[var3] = aBooleanArray919[var7]; + ++var3; + anIntArray925[var7] = anIntArray925[var3]; + anIntArray927[var7] = anIntArray927[var3]; + aBooleanArray919[var7] = aBooleanArray919[var3]; + } + } + + anIntArray925[var3] = var4; + anIntArray927[var3] = var5; + aBooleanArray919[var3] = var6; + this.method1199(var1, var3 - 1); + this.method1199(var3 + 1, var2); + } + } + + private int method1200(int var1, int var2, int var3, int var4, int var5) { + int var6 = var4 - var2; + int var7 = var3 - var1; + int var8 = var6 < 0 ? -var6 : var6; + int var9 = var8 * (var5 - var1); + int var10 = var9 / var7; + return var6 < 0 ? var2 - var10 : var2 + var10; + } + + final void method1202(float[] var1, int var2) { + int var3 = this.anIntArray921.length; + int var4 = anIntArray928[this.anInt923 - 1]; + aBooleanArray919[0] = aBooleanArray919[1] = true; + + int var5; + int var6; + int var7; + int var8; + int var9; + for (var5 = 2; var5 < var3; ++var5) { + var6 = method1201(anIntArray925, var5); + var7 = method1203(anIntArray925, var5); + var8 = this.method1200(anIntArray925[var6], anIntArray927[var6], anIntArray925[var7], anIntArray927[var7], anIntArray925[var5]); + var9 = anIntArray927[var5]; + int var10 = var4 - var8; + int var12 = (var10 < var8 ? var10 : var8) << 1; + if (var9 == 0) { + aBooleanArray919[var5] = false; + anIntArray927[var5] = var8; + } else { + aBooleanArray919[var6] = aBooleanArray919[var7] = true; + aBooleanArray919[var5] = true; + if (var9 >= var12) { + anIntArray927[var5] = var10 > var8 ? var9 - var8 + var8 : var8 - var9 + var10 - 1; + } else { + anIntArray927[var5] = (var9 & 1) != 0 ? var8 - (var9 + 1) / 2 : var8 + var9 / 2; + } + } + } + + this.method1199(0, var3 - 1); + var5 = 0; + var6 = anIntArray927[0] * this.anInt923; + + for (var7 = 1; var7 < var3; ++var7) { + if (aBooleanArray919[var7]) { + var8 = anIntArray925[var7]; + var9 = anIntArray927[var7] * this.anInt923; + this.method1198(var5, var6, var8, var9, var1, var2); + if (var8 >= var2) { + return; + } + + var5 = var8; + var6 = var9; + } + } + + float var13 = aFloatArray929[var6]; + + for (var8 = var5; var8 < var2; ++var8) { + var1[var8] *= var13; + } + + } + + final boolean method1205() { + boolean var1 = Class3_Sub14.method364() != 0; + if (var1) { + int var2 = this.anIntArray921.length; + + int var3; + for (var3 = 0; var3 < var2; ++var3) { + anIntArray925[var3] = this.anIntArray921[var3]; + } + + var3 = anIntArray928[this.anInt923 - 1]; + int var4 = Class3_Sub26.method513(var3 - 1); + anIntArray927[0] = Class3_Sub14.method368(var4); + anIntArray927[1] = Class3_Sub14.method368(var4); + int var5 = 2; + + for (int var6 = 0; var6 < this.anIntArray922.length; ++var6) { + int var7 = this.anIntArray922[var6]; + int var8 = this.anIntArray926[var7]; + int var9 = this.anIntArray924[var7]; + int var10 = (1 << var9) - 1; + int var11 = 0; + if (var9 > 0) { + var11 = Class3_Sub14.aClass71Array2406[this.anIntArray918[var7]].method1290(); + } + + for (int var12 = 0; var12 < var8; ++var12) { + int var13 = this.anIntArrayArray920[var7][var11 & var10]; + var11 >>>= var9; + anIntArray927[var5++] = var13 >= 0 ? Class3_Sub14.aClass71Array2406[var13].method1290() : 0; + } + } + + return true; + } else { + return false; + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class6.java b/Client/src/main/java/org/runite/client/Class6.java new file mode 100644 index 000000000..80d97a1ca --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class6.java @@ -0,0 +1,15 @@ +package org.runite.client; + +final class Class6 { + + short aShort91; + short aShort92; + short aShort93; + short aShort94; + short aShort95; + short aShort96; + short aShort97; + boolean aBoolean98 = false; + + +} diff --git a/Client/src/main/java/org/runite/client/Class60.java b/Client/src/main/java/org/runite/client/Class60.java new file mode 100644 index 000000000..a34fae564 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class60.java @@ -0,0 +1,41 @@ +package org.runite.client; + +final class Class60 { + + static int anInt930; + static int anInt932; + static int anInt934; + static int anInt936; + + static void method1208(byte var0, int var1) { + try { + if (-1 != var1) { + if (Unsorted.aBooleanArray1703[var1]) { + Unsorted.interfacesIndex_3361.method2128(var1); + if (null != GameObject.interfaces1834[var1]) { + boolean var2 = true; + + for (int var3 = 0; GameObject.interfaces1834[var1].length > var3; ++var3) { + if (GameObject.interfaces1834[var1][var3] != null) { + if (GameObject.interfaces1834[var1][var3].type == 2) { + var2 = false; + } else { + GameObject.interfaces1834[var1][var3] = null; + } + } + } + + if (var2) { + GameObject.interfaces1834[var1] = null; + } + + Unsorted.aBooleanArray1703[var1] = false; + } + } + } + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "ig.B(" + var0 + ',' + var1 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class64.java b/Client/src/main/java/org/runite/client/Class64.java new file mode 100644 index 000000000..74d937275 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class64.java @@ -0,0 +1,14 @@ +package org.runite.client; + +public class Class64 { + + public volatile Object anObject974; + public volatile int anInt978 = 0; + public int anInt979; + int anInt975; + Class64 aClass64_976; + Object anObject977; + int anInt980; + + +} diff --git a/Client/src/main/java/org/runite/client/Class65.java b/Client/src/main/java/org/runite/client/Class65.java new file mode 100644 index 000000000..c48b5e19e --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class65.java @@ -0,0 +1,179 @@ +package org.runite.client; + +import org.rs09.client.rendering.Toolkit; +import org.rs09.client.util.ArrayUtils; + +public final class Class65 { + + static LinkedList aLinkedList_983 = new LinkedList(); + static DataBuffer[] aClass3_Sub30Array986 = new DataBuffer[2048]; + public static int anInt987 = 0; + static int anInt991 = -1; + static AbstractSprite[] aAbstractSpriteArray1825; + + + static int[] method1233(int[] var0) { + try { + if (null == var0) { + return null; + } else { + int[] var2 = new int[var0.length]; + ArrayUtils.arraycopy(var0, 0, var2, 0, var0.length); + return var2; + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "ja.H(" + "{...}" + ',' + 2 + ')'); + } + } + + static int method1234(int var0, int var1, int var2) { + try { + int var4 = var1 / var0; + int var6 = var2 / var0; + int var7 = var2 & var0 - 1; + int var5 = -1 + var0 & var1; + int var8 = Class3_Sub28_Sub3.method543(var4, var6, (byte) -82); + int var9 = Class3_Sub28_Sub3.method543(var4 + 1, var6, (byte) -104); + int var10 = Class3_Sub28_Sub3.method543(var4, 1 + var6, (byte) -100); + int var11 = Class3_Sub28_Sub3.method543(1 + var4, var6 + 1, (byte) -109); + int var12 = TextureOperation39.method275(var8, var9, var5, var0); + int var13 = TextureOperation39.method275(var10, var11, var5, var0); + return TextureOperation39.method275(var12, var13, var7, var0); + } catch (RuntimeException var14) { + throw ClientErrorException.clientError(var14, "ja.G(" + var0 + ',' + var1 + ',' + var2 + ',' + 512 + ')'); + } + } + + static void method1235(int var0, int var1, int var2, int var3) { + try { + if (Class36.anInt638 == 1) { + aAbstractSpriteArray1825[Unsorted.anInt2958 / 100].drawAt(-8 + Class70.anInt1053, -8 + Unsorted.anInt4062); + } + + if (Class36.anInt638 == 2) { + aAbstractSpriteArray1825[4 + Unsorted.anInt2958 / 100].drawAt(Class70.anInt1053 + -8, -8 + Unsorted.anInt4062); + } + + TextureOperation10.method347(); + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "ja.A(" + var0 + ',' + var1 + ',' + var2 + ',' + var3 + ',' + (byte) -121 + ')'); + } + } + + static void method1237(int var0) { + try { + WorldListEntry.anInt2626 = 1000 / var0; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "ja.D(" + var0 + ',' + 1000 + ')'); + } + } + + static void method1239(int var0, int var1, int var2, int var3, int var4, boolean var5) { + try { + if (var0 < 1) { + var0 = 1; + } + + if (1 > var3) { + var3 = 1; + } + + if (HDToolKit.highDetail) { + int var6 = var3 + -334; + if (0 <= var6) { + if (var6 > 100) { + var6 = 100; + } + } else { + var6 = 0; + } + + int var7 = var6 * (CS2Script.aShort3052 + -CS2Script.aShort1444) / 100 + CS2Script.aShort1444; + if (CS2Script.aShort3241 <= var7) { + if (PacketParser.aShort83 < var7) { + var7 = PacketParser.aShort83; + } + } else { + var7 = CS2Script.aShort3241; + } + + int var8 = var7 * var3 * 512 / (var0 * 334); + int var9; + int var10; + short var12; + if (var8 >= ItemDefinition.aShort505) { + if (var8 > TextureOperation18.aShort4038) { + var12 = TextureOperation18.aShort4038; + var7 = var12 * var0 * 334 / (var3 * 512); + if (var7 < CS2Script.aShort3241) { + var7 = CS2Script.aShort3241; + var9 = var12 * var0 * 334 / (512 * var7); + var10 = (-var9 + var3) / 2; + if (var5) { + Class22.resetClipping(); + Toolkit.OPENGL_TOOLKIT.method934(var4, var2, var0, var10, 0); //NOTE we are not checking if the user is in SD or HD here. + Toolkit.OPENGL_TOOLKIT.method934(var4, var2 + (var3 - var10), var0, var10, 0);//Class22 will ALWAYS be HD + } + + var3 -= var10 * 2; + var2 += var10; + } + } + } else { + var12 = ItemDefinition.aShort505; + var7 = 334 * var0 * var12 / (512 * var3); + if (PacketParser.aShort83 < var7) { + var7 = PacketParser.aShort83; + var9 = 512 * var3 * var7 / (334 * var12); + var10 = (var0 - var9) / 2; + if (var5) { + Class22.resetClipping(); + Toolkit.OPENGL_TOOLKIT.method934(var4, var2, var10, var3, 0); //NOTE we are not checking if the user is in SD or HD here. + Toolkit.OPENGL_TOOLKIT.method934(var0 + (var4 - var10), var2, var10, var3, 0);//Class22 will ALWAYS be HD + } + + var4 += var10; + var0 -= 2 * var10; + } + } + + Unsorted.anInt1705 = var7 * var3 / 334; + } + + Class96.anInt1358 = (short) var0; + Unsorted.anInt31 = (short) var3; + Class3_Sub28_Sub3.anInt3564 = var2; + Class163_Sub1.anInt2989 = var4; + } catch (RuntimeException var11) { + throw ClientErrorException.clientError(var11, "ja.C(" + var0 + ',' + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + var5 + ')'); + } + } + + static void method1240() { + try { + FontType.plainFont = null; + Class75_Sub3.aAbstractSpriteArray2656 = null; + aAbstractSpriteArray1825 = null; + Sprites.nameIconsSpriteArray = null; + Class157.aClass3_Sub28_Sub17_Sub1_2000 = null; + Sprites.aSoftwareSpriteArray2140 = null; + Entity.aAbstractSpriteArray2839 = null; + Class129_Sub1.aAbstractSpriteArray2690 = null; + NPC.aAbstractSpriteArray3977 = null; + FontType.bold = null; + Class57.aAbstractSprite_895 = null; + Unsorted.minimapDotSprites = null; + FontType.smallFont = null; + Class45.aAbstractSprite_736 = null; + Unsorted.aAbstractSpriteArray996 = null; + TextureOperation8.aAbstractSpriteArray3458 = null; + Class166.aAbstractSpriteArray2072 = null; + TextureOperation2.aAbstractSpriteArray3373 = null; + GameObject.aClass109Array1831 = null; + + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "ja.E(" + false + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class67.java b/Client/src/main/java/org/runite/client/Class67.java new file mode 100644 index 000000000..163ed8694 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class67.java @@ -0,0 +1,171 @@ +package org.runite.client; + +import org.rs09.client.data.ReferenceCache; +import org.rs09.client.util.ArrayUtils; + +final class Class67 implements Runnable { + + static ReferenceCache aReferenceCache_1013 = new ReferenceCache(100); + static byte[][][] aByteArrayArrayArray1014; + static RSInterface aClass11_1017; + boolean aBoolean1015 = true; + Object anObject1016 = new Object(); + int anInt1018 = 0; + int[] anIntArray1019 = new int[500]; + int[] anIntArray1020 = new int[500]; + + static int method1258(byte var0) { + try { + TextureOperation23.anInt1780 = 0; + if (var0 != -53) { + method1258((byte) -35); + } + + return TextureOperation23.method251(); + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "jd.D(" + var0 + ')'); + } + } + + static void method1259(int var0) { + try { + InterfaceWidget var2 = InterfaceWidget.getWidget(12, var0); + var2.a(); + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "jd.A(" + var0 + ',' + (byte) 109 + ')'); + } + } + + static void method1260(int var0, int var1, RSInterface[] var2) { + try { + for (int var3 = 0; var3 < var2.length; ++var3) { + RSInterface var4 = var2[var3]; + if (null != var4 && var1 == var4.parentId && (!var4.usingScripts || !Client.method51(var4))) { + if (var4.type == 0) { + if (!var4.usingScripts && Client.method51(var4) && var4 != Class107.aClass11_1453) { + continue; + } + + method1260(var0, var4.componentHash, var2); + if (var4.aClass11Array262 != null) { + method1260(23206, var4.componentHash, var4.aClass11Array262); + } + + Class3_Sub31 var5 = TextureOperation23.aHashTable_3208.get(var4.componentHash); + if (var5 != null) { + Class52.method1160(-111, var5.anInt2602); + } + } + + if (var4.type == 6) { + int var6; + if (var4.animationId != -1 || var4.secondAnimationId != -1) { + boolean var9 = Unsorted.method609(var4, var0 + -23173); + if (var9) { + var6 = var4.secondAnimationId; + } else { + var6 = var4.animationId; + } + + if (var6 != -1) { + SequenceDefinition var7 = SequenceDefinition.getAnimationDefinition(var6); + for (var4.anInt267 += Class106.anInt1446; var7.duration[var4.anInt283] < var4.anInt267; Class20.method909(var4)) { + var4.anInt267 -= var7.duration[var4.anInt283]; + ++var4.anInt283; + if (var7.frames.length <= var4.anInt283) { + var4.anInt283 -= var7.anInt1865; + if (var4.anInt283 < 0 || var7.frames.length <= var4.anInt283) { + var4.anInt283 = 0; + } + } + + var4.anInt260 = var4.anInt283 + 1; + if (var7.frames.length <= var4.anInt260) { + var4.anInt260 -= var7.anInt1865; + if (var4.anInt260 < 0 || var7.frames.length <= var4.anInt260) { + var4.anInt260 = -1; + } + } + } + } + } + + if (0 != var4.anInt237 && !var4.usingScripts) { + int var10 = var4.anInt237 >> 16; + var10 *= Class106.anInt1446; + var6 = var4.anInt237 << 16 >> 16; + var4.anInt182 = 2047 & var10 + var4.anInt182; + var6 *= Class106.anInt1446; + var4.anInt308 = var4.anInt308 - -var6 & 0x7FF; + Class20.method909(var4); + } + } + } + } + } catch (RuntimeException var8) { + throw ClientErrorException.clientError(var8, "jd.E(" + var0 + ',' + var1 + ',' + (var2 != null ? "{...}" : "null") + ')'); + } + } + + static RSString method1261(int var0, int var1, RSString[] var2) { + try { + int var4 = 0; + + for (int var5 = 0; var1 > var5; ++var5) { + if (null == var2[var0 - -var5]) { + var2[var5 + var0] = TextCore.aString_3339; + } + + var4 += var2[var5 + var0].length; + } + + byte[] var10 = new byte[var4]; + int var6 = 0; + + for (int var7 = 0; var1 > var7; ++var7) { + RSString var8 = var2[var7 + var0]; + ArrayUtils.arraycopy(var8.buffer, 0, var10, var6, var8.length); + var6 += var8.length; + } + + RSString var11 = new RSString(); + var11.length = var4; + + var11.buffer = var10; + return var11; + } catch (RuntimeException var9) { + throw ClientErrorException.clientError(var9, "jd.C(" + var0 + ',' + var1 + ',' + (var2 != null ? "{...}" : "null") + ',' + 2774 + ')'); + } + } + + static int method1262(int var0, int var1) { + try { + if (var0 < 20) { + method1262(15, 87); + } + + return var1 & 127; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "jd.F(" + var0 + ',' + var1 + ')'); + } + } + + public final void run() { + try { + for (; this.aBoolean1015; TimeUtils.sleep(50L)) { + Object var1 = this.anObject1016; + synchronized (var1) { + if (this.anInt1018 < 500) { + this.anIntArray1020[this.anInt1018] = Class126.anInt1676; + this.anIntArray1019[this.anInt1018] = Unsorted.anInt1709; + ++this.anInt1018; + } + } + } + + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "jd.run()"); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class68.java b/Client/src/main/java/org/runite/client/Class68.java new file mode 100644 index 000000000..fd0d404b1 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class68.java @@ -0,0 +1,489 @@ +package org.runite.client; + + +import javax.media.opengl.GL; + +final class Class68 { + + private static final float[] aFloatArray1022 = new float[]{0.0F, 0.0F, 0.0F, 1.0F}; + static Class43[] aClass43Array1021; + static int anInt1032 = 0; + private static int[] anIntArray1023; + private static int anInt1024; + private static int anInt1025; + private static boolean[] aBooleanArray1026; + private static int[][][] anIntArrayArrayArray1027; + private static int[] anIntArray1028; + private static int anInt1029; + private static int anInt1030; + private static int anInt1031; + private static boolean[] aBooleanArray1033; + private static int anInt1034; + private static int anInt1035; + private static int anInt1036; + + + static void method1263(int var0, int var1, int var2, int var3, int var4, int var5, int var6) { + if (Class106.aBoolean1441) { + if (var0 == 1 && var5 > 0) { + method1268(var1, var2, var3, var4, var5 - 1, var6); + } else if (var0 == 4 && var5 < anInt1036 - 1) { + method1268(var1, var2, var3, var4, var5 + 1, var6); + } else if (var0 == 8 && var6 > 0) { + method1268(var1, var2, var3, var4, var5, var6 - 1); + } else if (var0 == 2 && var6 < anInt1035 - 1) { + method1268(var1, var2, var3, var4, var5, var6 + 1); + } else if (var0 == 16 && var5 > 0 && var6 < anInt1035 - 1) { + method1268(var1, var2, var3, var4, var5 - 1, var6 + 1); + } else if (var0 == 32 && var5 < anInt1036 - 1 && var6 < anInt1035 - 1) { + method1268(var1, var2, var3, var4, var5 + 1, var6 + 1); + } else if (var0 == 128 && var5 > 0 && var6 > 0) { + method1268(var1, var2, var3, var4, var5 - 1, var6 - 1); + } else if (var0 == 64 && var5 < anInt1036 - 1 && var6 > 0) { + method1268(var1, var2, var3, var4, var5 + 1, var6 - 1); + } + } + } + + static void method1264(Class43 var0) { + if (anInt1032 >= 255) { + System.out.println("Number of lights added exceeds maximum!"); + } else { + aClass43Array1021[anInt1032++] = var0; + } + } + + static void method1265() { + for (int var0 = 0; var0 < 4; ++var0) { + anIntArray1028[var0] = -1; + method1271(var0); + } + + } + + static void method1266(int var0, int var1, int var2, int var3, int var4, int var5, int var6, int var7) { + if (Class106.aBoolean1441) { + if (anInt1029 != var3 || anInt1031 != var4 || anInt1024 != var5 || anInt1034 != var6 || anInt1025 != var7) { + int var8; + for (var8 = 0; var8 < 4; ++var8) { + aBooleanArray1033[var8] = false; + } + + var8 = 0; + int var9 = 0; + + int var10; + int var11; + label105: + for (var10 = var4; var10 <= var6; ++var10) { + for (var11 = var5; var11 <= var7; ++var11) { + int var12 = anIntArrayArrayArray1027[var3][var10][var11]; + + label101: + while (var12 != 0) { + int var13 = (var12 & 0xFF) - 1; + var12 >>>= 8; + + int var14; + for (var14 = 0; var14 < var9; ++var14) { + if (var13 == anIntArray1023[var14]) { + continue label101; + } + } + + for (var14 = 0; var14 < 4; ++var14) { + if (var13 == anIntArray1028[var14]) { + if (!aBooleanArray1033[var14]) { + aBooleanArray1033[var14] = true; + ++var8; + if (var8 == 4) { + break label105; + } + } + continue label101; + } + } + + anIntArray1023[var9++] = var13; + ++var8; + if (var8 == 4) { + break label105; + } + } + } + } + + var10 = 0; + + while (var10 < var9) { + var11 = 0; + + while (true) { + if (var11 < 4) { + if (aBooleanArray1033[var11]) { + ++var11; + continue; + } + + anIntArray1028[var11] = anIntArray1023[var10]; + aBooleanArray1033[var11] = true; + method1278(var11, aClass43Array1021[anIntArray1023[var10]], var0, var1, var2); + } + + ++var10; + break; + } + } + + for (var10 = 0; var10 < 4; ++var10) { + if (!aBooleanArray1033[var10]) { + anIntArray1028[var10] = -1; + method1271(var10); + } + } + + anInt1029 = var3; + anInt1031 = var4; + anInt1024 = var5; + anInt1034 = var6; + anInt1025 = var7; + } + } + } + + static void method1267() { + anInt1030 = 4; + anInt1036 = 104; + anInt1035 = 104; + anIntArrayArrayArray1027 = new int[anInt1030][anInt1036][anInt1035]; + } + + static void method1268(int var0, int var1, int var2, int var3, int var4, int var5) { + if (Class106.aBoolean1441) { + if (anInt1029 != var3 || anInt1031 != var4 || anInt1024 != var5 || anInt1034 != var4 || anInt1025 != var5) { + int var6; + for (var6 = 0; var6 < 4; ++var6) { + aBooleanArray1033[var6] = false; + } + + var6 = 0; + int var7 = anIntArrayArrayArray1027[var3][var4][var5]; + + int var8; + int var9; + label71: + while (var7 != 0) { + var8 = (var7 & 0xFF) - 1; + var7 >>>= 8; + + for (var9 = 0; var9 < 4; ++var9) { + if (var8 == anIntArray1028[var9]) { + aBooleanArray1033[var9] = true; + continue label71; + } + } + + anIntArray1023[var6++] = var8; + } + + var8 = 0; + + while (var8 < var6) { + var9 = 0; + + while (true) { + if (var9 < 4) { + if (aBooleanArray1033[var9]) { + ++var9; + continue; + } + + anIntArray1028[var9] = anIntArray1023[var8]; + aBooleanArray1033[var9] = true; + method1278(var9, aClass43Array1021[anIntArray1023[var8]], var0, var1, var2); + } + + ++var8; + break; + } + } + + for (var8 = 0; var8 < 4; ++var8) { + if (!aBooleanArray1033[var8]) { + anIntArray1028[var8] = -1; + method1271(var8); + } + } + + anInt1029 = var3; + anInt1031 = var4; + anInt1024 = var5; + anInt1034 = var4; + anInt1025 = var5; + } + } + } + + static void method1269(int var0, boolean var1) { + for (int var2 = 0; var2 < anInt1032; ++var2) { + aClass43Array1021[var2].method1063(var1, var0); + } + + anInt1029 = -1; + anInt1031 = -1; + anInt1024 = -1; + anInt1034 = -1; + anInt1025 = -1; + } + + static void method1270() { + for (int var0 = 0; var0 < anInt1032; ++var0) { + Class43 var1 = aClass43Array1021[var0]; + int var2 = var1.anInt704; + if (var1.aBoolean690) { + var2 = 0; + } + + int var3 = var1.anInt704; + if (var1.aBoolean711) { + var3 = 3; + } + + for (int var4 = var2; var4 <= var3; ++var4) { + int var5 = 0; + int var6 = (var1.anInt708 >> 7) - var1.anInt698; + if (var6 < 0) { + var5 -= var6; + var6 = 0; + } + + int var7 = (var1.anInt708 >> 7) + var1.anInt698; + if (var7 > anInt1035 - 1) { + var7 = anInt1035 - 1; + } + + for (int var8 = var6; var8 <= var7; ++var8) { + short var9 = var1.aShortArray706[var5++]; + int var10 = (var1.anInt703 >> 7) - var1.anInt698 + (var9 >> 8); + int var11 = var10 + (var9 & 0xFF) - 1; + if (var10 < 0) { + var10 = 0; + } + + if (var11 > anInt1036 - 1) { + var11 = anInt1036 - 1; + } + + for (int var12 = var10; var12 <= var11; ++var12) { + int var13 = anIntArrayArrayArray1027[var4][var12][var8]; + if ((var13 & 0xFF) == 0) { + anIntArrayArrayArray1027[var4][var12][var8] = var13 | var0 + 1; + } else if ((var13 & 65280) == 0) { + anIntArrayArrayArray1027[var4][var12][var8] = var13 | var0 + 1 << 8; + } else if ((var13 & 16711680) == 0) { + anIntArrayArrayArray1027[var4][var12][var8] = var13 | var0 + 1 << 16; + } else if ((var13 & -16777216) == 0) { + anIntArrayArrayArray1027[var4][var12][var8] = var13 | var0 + 1 << 24; + } + } + } + } + } + + } + + private static void method1271(int var0) { + if (aBooleanArray1026[var0]) { + aBooleanArray1026[var0] = false; + int var1 = var0 + 16384 + 4; + GL var2 = HDToolKit.gl; + var2.glDisable(var1); + } + } + + static void method1272(int var0, int var1, int var2, int var3, int var4) { + if (Class106.aBoolean1441) { + label44: + for (int var5 = 0; var5 < 4; ++var5) { + if (anIntArray1028[var5] != -1) { + int var6 = anIntArrayArrayArray1027[var0][var1][var2]; + + int var7; + while (var6 != 0) { + var7 = (var6 & 0xFF) - 1; + var6 >>>= 8; + if (var7 == anIntArray1028[var5]) { + continue label44; + } + } + + var6 = anIntArrayArrayArray1027[var0][var3][var4]; + + while (var6 != 0) { + var7 = (var6 & 0xFF) - 1; + var6 >>>= 8; + if (var7 == anIntArray1028[var5]) { + continue label44; + } + } + } + + anIntArray1028[var5] = -1; + method1271(var5); + } + + } + } + + static void method1273() { + aClass43Array1021 = null; + anIntArray1028 = null; + aBooleanArray1026 = null; + anIntArray1023 = null; + aBooleanArray1033 = null; + anIntArrayArrayArray1027 = null; + } + + static void method1275() { + GL var0 = HDToolKit.gl; + + int var1; + for (var1 = 0; var1 < 4; ++var1) { + int var2 = 16388 + var1; + var0.glLightfv(var2, 4608, new float[]{0.0F, 0.0F, 0.0F, 1.0F}, 0); + var0.glLightf(var2, 4616, 0.0F); + var0.glLightf(var2, 4615, 0.0F); + } + + for (var1 = 0; var1 < 4; ++var1) { + anIntArray1028[var1] = -1; + method1271(var1); + } + + } + + static void method1276() { + aClass43Array1021 = new Class43[255]; + anIntArray1028 = new int[4]; + aBooleanArray1026 = new boolean[4]; + anIntArray1023 = new int[4]; + aBooleanArray1033 = new boolean[4]; + anIntArrayArrayArray1027 = new int[anInt1030][anInt1036][anInt1035]; + } + + static void method1277(TileData[][][] var2) { + if (Class106.aBoolean1441) { + GL var3 = HDToolKit.gl; + Unsorted.method551(0, 0); + HDToolKit.method1856(0); + HDToolKit.method1823(); + HDToolKit.bindTexture2D(HDToolKit.anInt1810); + var3.glDepthMask(false); + HDToolKit.method1837(false); + var3.glBlendFunc(774, 1); + var3.glFogfv(2918, new float[]{0.0F, 0.0F, 0.0F, 0.0F}, 0); + var3.glTexEnvi(8960, '\u8580', '\u8576'); + var3.glTexEnvi(8960, '\u8590', 770); + + label69: + for (int var4 = 0; var4 < anInt1032; ++var4) { + Class43 var5 = aClass43Array1021[var4]; + int var6 = var5.anInt704; + if (var5.aBoolean696) { + --var6; + } + + if (var5.aClass37_712 != null) { + int var7 = 0; + int var8 = (var5.anInt708 >> 7) - var5.anInt698; + int var9 = (var5.anInt708 >> 7) + var5.anInt698; + if (var9 >= Class126.anInt1665) { + var9 = Class126.anInt1665 - 1; + } + + if (var8 < Unsorted.anInt3603) { + var7 += Unsorted.anInt3603 - var8; + var8 = Unsorted.anInt3603; + } + + int var10 = var8; + + while (var10 <= var9) { + short var11 = var5.aShortArray706[var7++]; + int var12 = (var5.anInt703 >> 7) - var5.anInt698 + (var11 >> 8); + int var13 = var12 + (var11 & 0xFF) - 1; + if (var12 < Class163_Sub1_Sub1.anInt4006) { + var12 = Class163_Sub1_Sub1.anInt4006; + } + + if (var13 >= Unsorted.anInt67) { + var13 = Unsorted.anInt67 - 1; + } + + int var14 = var12; + + while (true) { + if (var14 <= var13) { + TileData var15 = null; + if (var6 >= 0) { + var15 = var2[var6][var14][var10]; + } + + if (var6 >= 0 && (var15 == null || !var15.aBoolean2222)) { + ++var14; + continue; + } + + HDToolKit.method1832(201.5F - (float) var5.anInt704 * 50.0F - 1.5F); + var3.glTexEnvfv(8960, 8705, new float[]{0.0F, 0.0F, 0.0F, var5.aFloat707}, 0); + var5.aClass37_712.method1021(); + continue label69; + } + + ++var10; + break; + } + } + } + } + + var3.glTexEnvi(8960, '\u8580', 5890); + var3.glTexEnvi(8960, '\u8590', 768); + var3.glBlendFunc(770, 771); + var3.glDepthMask(true); + var3.glFogfv(2918, Class92.fogColor, 0); + var3.glEnableClientState('\u8078'); + HDToolKit.method1846(); + } + } + + private static void method1278(int var0, Class43 var1, int var2, int var3, int var4) { + int var5 = var0 + 16384 + 4; + GL var6 = HDToolKit.gl; + if (!aBooleanArray1026[var0]) { + var6.glEnable(var5); + aBooleanArray1026[var0] = true; + } + + var6.glLightf(var5, 4617, var1.aFloat710); + var6.glLightfv(var5, 4609, var1.aFloatArray717, 0); + aFloatArray1022[0] = (float) (var1.anInt703 - var2); + aFloatArray1022[1] = (float) (var1.anInt697 - var3); + aFloatArray1022[2] = (float) (var1.anInt708 - var4); + var6.glLightfv(var5, 4611, aFloatArray1022, 0); + } + + static void method1279() { + anInt1032 = 0; + + for (int var0 = 0; var0 < anInt1030; ++var0) { + for (int var1 = 0; var1 < anInt1036; ++var1) { + for (int var2 = 0; var2 < anInt1035; ++var2) { + anIntArrayArrayArray1027[var0][var1][var2] = 0; + } + } + } + + } + +} diff --git a/Client/src/main/java/org/runite/client/Class7.java b/Client/src/main/java/org/runite/client/Class7.java new file mode 100644 index 000000000..90d2b2496 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class7.java @@ -0,0 +1,31 @@ +package org.runite.client; + +import org.rs09.client.filestore.resources.configs.enums.EnumDefinition; +import org.rs09.client.filestore.resources.configs.enums.EnumDefinitionProvider; + +public final class Class7 implements Interface4 { + + public static int anInt2166 = 0; + static CacheIndex skinsReferenceIndex; + static int anInt2161 = -1; + static int anInt2162; + static short[] aShortArray2167 = new short[]{(short) 30, (short) 6, (short) 31, (short) 29, (short) 10, (short) 44, (short) 37, (short) 57}; + + + public final RSString method20(int var1, int[] var2, int var3, long var4) { + try { + if (var1 == 0) { + EnumDefinition var6 = EnumDefinitionProvider.provide(var2[0]); + return var6.getString((int) var4); + } else if (var1 == 1 || var1 == 10) { + ItemDefinition var8 = ItemDefinition.getItemDefinition((int) var4); + return var8.name; + } else { + return var1 != 6 && var1 != 7 && 11 != var1 ? (var3 != 4936 ? null : null) : EnumDefinitionProvider.provide(var2[0]).getString((int) var4); + } + } catch (RuntimeException var7) { + throw ClientErrorException.clientError(var7, "af.A(" + var1 + ',' + (var2 != null ? "{...}" : "null") + ',' + var3 + ',' + var4 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class70.java b/Client/src/main/java/org/runite/client/Class70.java new file mode 100644 index 000000000..6d4106da2 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class70.java @@ -0,0 +1,138 @@ +package org.runite.client; + +final class Class70 { + + static RSString[] aStringArray1046 = new RSString[200]; + static int frameHeight; + static double aDouble1050 = -1.0D; + static int anInt1053 = 0; + int anInt1045; + long aLong1048 = 0L; + GameObject aClass140_1049; + GameObject aClass140_1052; + int anInt1054; + int anInt1055; + int anInt1057; + int anInt1059; + + + static void method1285(CacheIndex var0, int var2, int var5) { + try { + Class101.musicIndex_1423 = var0; + Unsorted.anInt154 = 1; + TextureOperation36.anInt3423 = var5; + Class132.anInt1741 = 0; + TextureOperation8.anInt3463 = var2; + Unsorted.aBoolean2311 = false; + + GraphicDefinition.anInt546 = 10000; + } catch (RuntimeException var7) { + throw ClientErrorException.clientError(var7, "jh.D(" + (var0 != null ? "{...}" : "null") + ',' + false + ',' + var2 + ',' + 0 + ',' + false + ',' + var5 + ')'); + } + } + + static void method1286(int var0, ObjectDefinition var2, int var3, NPC var4, int var5, int var6, Player var7) { + try { + + Class3_Sub9 var8 = new Class3_Sub9(); + var8.anInt2308 = var0 * 128; + var8.anInt2326 = 128 * var5; + var8.anInt2314 = var6; + if (null != var2) { + var8.anIntArray2333 = var2.anIntArray1539; + var8.anInt2328 = var2.anInt1484 * 128; + var8.anInt2325 = var2.anInt1515; + var8.aClass111_2320 = var2; + var8.anInt2332 = var2.anInt1512; + var8.anInt2310 = var2.anInt1518; + int var9 = var2.SizeX; + int var10 = var2.SizeY; + if (var3 == 1 || 3 == var3) { + var9 = var2.SizeY; + var10 = var2.SizeX; + } + + var8.anInt2307 = (var10 + var0) * 128; + var8.anInt2321 = (var5 + var9) * 128; + if (var2.ChildrenIds != null) { + var8.aBoolean2329 = true; + var8.method134(); + } + + if (null != var8.anIntArray2333) { + var8.anInt2316 = var8.anInt2310 - -((int) (Math.random() * (double) (-var8.anInt2310 + var8.anInt2325))); + } + + Unsorted.aLinkedList_78.pushBack(var8); + } else if (null != var4) { + var8.aEntity_Sub2_2324 = var4; + NPCDefinition var12 = var4.definition; + if (null != var12.childNPCs) { + var8.aBoolean2329 = true; + var12 = var12.method1471((byte) -112); + } + + if (var12 != null) { + var8.anInt2307 = 128 * (var12.size + var0); + var8.anInt2321 = 128 * (var5 - -var12.size); + var8.anInt2332 = method1232(var4); + var8.anInt2328 = 128 * var12.anInt1291; + } + + Unsorted.aLinkedList_1242.pushBack(var8); + } else if (null != var7) { + var8.aEntity_Sub1_2327 = var7; + var8.anInt2321 = (var7.getSize() + var5) * 128; + var8.anInt2307 = 128 * (var7.getSize() + var0); + var8.anInt2332 = Class81.method1398(var7); + var8.anInt2328 = 128 * var7.anInt3969; + Unsorted.aHashTable_4046.put(var7.displayName.toLong(), var8); + } + + } catch (RuntimeException var11) { + throw ClientErrorException.clientError(var11, "jh.C(" + var0 + ',' + false + ',' + (var2 != null ? "{...}" : "null") + ',' + var3 + ',' + (var4 != null ? "{...}" : "null") + ',' + var5 + ',' + var6 + ',' + (var7 != null ? "{...}" : "null") + ')'); + } + } + + static Class3_Sub28_Sub17_Sub1 method1287(int var0, CacheIndex var2, CacheIndex var3) { + try { + // System.out.println("Class 70 " + var0); + if (Class75_Sub4.method1351(var3, 0, var0)) { + + return TextureOperation.method163(var2.getFile(var0, 0)); + } else { + return null; + } + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "jh.B(" + var0 + ',' + 0 + ',' + (var2 != null ? "{...}" : "null") + ',' + (var3 != null ? "{...}" : "null") + ',' + -1 + ')'); + } + } + + static int method1232(NPC var0) { + try { + NPCDefinition var2 = var0.definition; + if (null != var2.childNPCs) { + var2 = var2.method1471((byte) -108); + if (var2 == null) { + return -1; + } + } + + int var3 = var2.anInt1293; + RenderAnimationDefinition var4 = var0.getRenderAnimationType(); + if (var0.anInt2764 == var4.stand_animation) { + var3 = var2.anInt1262; + } else if (var4.run_anim != var0.anInt2764 && var4.run_follow_full_turn_anim != var0.anInt2764 && var0.anInt2764 != var4.run_follow_cw_turn_anim && var0.anInt2764 != var4.run_follow_ccw_turn_anim) { + if (var0.anInt2764 == var4.slow_walk_anim || var0.anInt2764 == var4.slow_walk_follow_full_turn_anim || var4.slow_walk_follow_cw_turn_anim == var0.anInt2764 || var4.slow_walk_follow_ccw_turn_anim == var0.anInt2764) { + var3 = var2.anInt1290; + } + } else { + var3 = var2.anInt1276; + } + + return var3; + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "ij.B(" + (var0 != null ? "{...}" : "null") + ',' + -1 + ')'); + } + } +} diff --git a/Client/src/main/java/org/runite/client/Class71.java b/Client/src/main/java/org/runite/client/Class71.java new file mode 100644 index 000000000..455183210 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class71.java @@ -0,0 +1,215 @@ +package org.runite.client; + +final class Class71 { + + private final int[] anIntArray1061; + private final int anInt1065; + int anInt1063; + private float[][] aFloatArrayArray1062; + private int[] anIntArray1066; + + + Class71() { + Class3_Sub14.method368(24); + this.anInt1063 = Class3_Sub14.method368(16); + this.anInt1065 = Class3_Sub14.method368(24); + this.anIntArray1061 = new int[this.anInt1065]; + boolean var1 = Class3_Sub14.method364() != 0; + int var2; + int var3; + int var5; + if (var1) { + var2 = 0; + + for (var3 = Class3_Sub14.method368(5) + 1; var2 < this.anInt1065; ++var3) { + int var4 = Class3_Sub14.method368(Class3_Sub26.method513(this.anInt1065 - var2)); + + for (var5 = 0; var5 < var4; ++var5) { + this.anIntArray1061[var2++] = var3; + } + } + } else { + boolean var14 = Class3_Sub14.method364() != 0; + + for (var3 = 0; var3 < this.anInt1065; ++var3) { + if (var14 && Class3_Sub14.method364() == 0) { + this.anIntArray1061[var3] = 0; + } else { + this.anIntArray1061[var3] = Class3_Sub14.method368(5) + 1; + } + } + } + + this.method1289(); + var2 = Class3_Sub14.method368(4); + if (var2 > 0) { + float var16 = Class3_Sub14.method358(Class3_Sub14.method368(32)); + float var15 = Class3_Sub14.method358(Class3_Sub14.method368(32)); + var5 = Class3_Sub14.method368(4) + 1; + boolean var6 = Class3_Sub14.method364() != 0; + int var7; + if (var2 == 1) { + var7 = method1291(this.anInt1065, this.anInt1063); + } else { + var7 = this.anInt1065 * this.anInt1063; + } + + int[] anIntArray1064 = new int[var7]; + + int var8; + for (var8 = 0; var8 < var7; ++var8) { + anIntArray1064[var8] = Class3_Sub14.method368(var5); + } + + this.aFloatArrayArray1062 = new float[this.anInt1065][this.anInt1063]; + float var9; + int var10; + int var11; + if (var2 == 1) { + for (var8 = 0; var8 < this.anInt1065; ++var8) { + var9 = 0.0F; + var10 = 1; + + for (var11 = 0; var11 < this.anInt1063; ++var11) { + int var12 = var8 / var10 % var7; + float var13 = (float) anIntArray1064[var12] * var15 + var16 + var9; + this.aFloatArrayArray1062[var8][var11] = var13; + if (var6) { + var9 = var13; + } + + var10 *= var7; + } + } + } else { + for (var8 = 0; var8 < this.anInt1065; ++var8) { + var9 = 0.0F; + var10 = var8 * this.anInt1063; + + for (var11 = 0; var11 < this.anInt1063; ++var11) { + float var17 = (float) anIntArray1064[var10] * var15 + var16 + var9; + this.aFloatArrayArray1062[var8][var11] = var17; + if (var6) { + var9 = var17; + } + + ++var10; + } + } + } + } + + } + + private static int method1291(int var0, int var1) { + int var2; + for (var2 = (int) Math.pow(var0, 1.0D / (double) var1) + 1; Class140_Sub6.method2028(var1, var2) > var0; --var2) { + } + + return var2; + } + + final float[] method1288() { + return this.aFloatArrayArray1062[this.method1290()]; + } + + private void method1289() { + int[] var1 = new int[this.anInt1065]; + int[] var2 = new int[33]; + + int var3; + int var4; + int var5; + int var6; + int var7; + int var8; + int var10; + for (var3 = 0; var3 < this.anInt1065; ++var3) { + var4 = this.anIntArray1061[var3]; + if (var4 != 0) { + var5 = 1 << 32 - var4; + var6 = var2[var4]; + var1[var3] = var6; + int var9; + if ((var6 & var5) == 0) { + var7 = var6 | var5; + + for (var8 = var4 - 1; var8 >= 1; --var8) { + var9 = var2[var8]; + if (var9 != var6) { + break; + } + + var10 = 1 << 32 - var8; + if ((var9 & var10) != 0) { + var2[var8] = var2[var8 - 1]; + break; + } + + var2[var8] = var9 | var10; + } + } else { + var7 = var2[var4 - 1]; + } + + var2[var4] = var7; + + for (var8 = var4 + 1; var8 <= 32; ++var8) { + var9 = var2[var8]; + if (var9 == var6) { + var2[var8] = var7; + } + } + } + } + + this.anIntArray1066 = new int[8]; + int var11 = 0; + + for (var3 = 0; var3 < this.anInt1065; ++var3) { + var4 = this.anIntArray1061[var3]; + if (var4 != 0) { + var5 = var1[var3]; + var6 = 0; + + for (var7 = 0; var7 < var4; ++var7) { + var8 = Integer.MIN_VALUE >>> var7; + if ((var5 & var8) == 0) { + ++var6; + } else { + if (this.anIntArray1066[var6] == 0) { + this.anIntArray1066[var6] = var11; + } + + var6 = this.anIntArray1066[var6]; + } + + if (var6 >= this.anIntArray1066.length) { + int[] var12 = new int[this.anIntArray1066.length * 2]; + + for (var10 = 0; var10 < this.anIntArray1066.length; ++var10) { + var12[var10] = this.anIntArray1066[var10]; + } + + this.anIntArray1066 = var12; + } + + } + + this.anIntArray1066[var6] = ~var3; + if (var6 >= var11) { + var11 = var6 + 1; + } + } + } + + } + + final int method1290() { + int var1; + for (var1 = 0; this.anIntArray1066[var1] >= 0; var1 = Class3_Sub14.method364() != 0 ? this.anIntArray1066[var1] : var1 + 1) { + } + + return ~this.anIntArray1066[var1]; + } +} diff --git a/Client/src/main/java/org/runite/client/Class72.java b/Client/src/main/java/org/runite/client/Class72.java new file mode 100644 index 000000000..cdcc69d2a --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class72.java @@ -0,0 +1,205 @@ +package org.runite.client; + +final class Class72 { + + static int[] anIntArray3045; + static int anInt1672 = 0; + static int anInt1071 = 0; + static boolean aBoolean1074 = false; + GameObject aClass140_1067; + int anInt1068; + GameObject aClass140_1069; + GameObject aClass140_1073; + int anInt1075; + int anInt1077; + int anInt1078; + long aLong1079; + + + static void method1293() { + try { + if (!Client.paramAdvertisementSuppressed && Class44.paramModeWhere != 2) { + try { + TextCore.aString_38.method1577(Client.clientInstance); + } catch (Throwable var2) { + } + + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "jj.G(" + true + ')'); + } + } + + static void method1294() { + anInt1672 = 0; + + label188: + for (int var0 = 0; var0 < Scenery.anInt2249; ++var0) { + Class113 var1 = Class3_Sub28_Sub8.aClass113Array3610[var0]; + int var2; + if (anIntArray3045 != null) { + for (var2 = 0; var2 < anIntArray3045.length; ++var2) { + if (anIntArray3045[var2] != -1000000 && (var1.anInt1544 <= anIntArray3045[var2] || var1.anInt1548 <= anIntArray3045[var2]) && (var1.anInt1562 <= Class52.anIntArray859[var2] || var1.anInt1545 <= Class52.anIntArray859[var2]) && (var1.anInt1562 >= Unsorted.anIntArray1083[var2] || var1.anInt1545 >= Unsorted.anIntArray1083[var2]) && (var1.anInt1560 <= Class75_Sub4.anIntArray2663[var2] || var1.anInt1550 <= Class75_Sub4.anIntArray2663[var2]) && (var1.anInt1560 >= Unsorted.anIntArray39[var2] || var1.anInt1550 >= Unsorted.anIntArray39[var2])) { + continue label188; + } + } + } + + int var3; + int var4; + boolean var5; + int var6; + if (var1.anInt1554 == 1) { + var2 = var1.anInt1553 - Class97.anInt1375 + TextureOperation8.renderDistanceTiles; + if (var2 >= 0 && var2 <= TextureOperation8.renderDistanceTiles + TextureOperation8.renderDistanceTiles) { + var3 = var1.anInt1563 - Class145.anInt3340 + TextureOperation8.renderDistanceTiles; + if (var3 < 0) { + var3 = 0; + } + + var4 = var1.anInt1566 - Class145.anInt3340 + TextureOperation8.renderDistanceTiles; + if (var4 > TextureOperation8.renderDistanceTiles + TextureOperation8.renderDistanceTiles) { + var4 = TextureOperation8.renderDistanceTiles + TextureOperation8.renderDistanceTiles; + } + + var5 = false; + + while (var3 <= var4) { + if (Class23.aBooleanArrayArray457[var2][var3++]) { + var5 = true; + break; + } + } + + if (var5) { + var6 = Class145.anInt2697 - var1.anInt1562; + if (var6 > 32) { + var1.anInt1564 = 1; + } else { + if (var6 >= -32) { + continue; + } + + var1.anInt1564 = 2; + var6 = -var6; + } + + var1.anInt1555 = (var1.anInt1560 - TextureOperation13.anInt3363 << 8) / var6; + var1.anInt1551 = (var1.anInt1550 - TextureOperation13.anInt3363 << 8) / var6; + var1.anInt1561 = (var1.anInt1544 - Unsorted.anInt3657 << 8) / var6; + var1.anInt1565 = (var1.anInt1548 - Unsorted.anInt3657 << 8) / var6; + Class145.aClass113Array1895[anInt1672++] = var1; + } + } + } else if (var1.anInt1554 == 2) { + var2 = var1.anInt1563 - Class145.anInt3340 + TextureOperation8.renderDistanceTiles; + if (var2 >= 0 && var2 <= TextureOperation8.renderDistanceTiles + TextureOperation8.renderDistanceTiles) { + var3 = var1.anInt1553 - Class97.anInt1375 + TextureOperation8.renderDistanceTiles; + if (var3 < 0) { + var3 = 0; + } + + var4 = var1.anInt1547 - Class97.anInt1375 + TextureOperation8.renderDistanceTiles; + if (var4 > TextureOperation8.renderDistanceTiles + TextureOperation8.renderDistanceTiles) { + var4 = TextureOperation8.renderDistanceTiles + TextureOperation8.renderDistanceTiles; + } + + var5 = false; + + while (var3 <= var4) { + if (Class23.aBooleanArrayArray457[var3++][var2]) { + var5 = true; + break; + } + } + + if (var5) { + var6 = TextureOperation13.anInt3363 - var1.anInt1560; + if (var6 > 32) { + var1.anInt1564 = 3; + } else { + if (var6 >= -32) { + continue; + } + + var1.anInt1564 = 4; + var6 = -var6; + } + + var1.anInt1549 = (var1.anInt1562 - Class145.anInt2697 << 8) / var6; + var1.anInt1557 = (var1.anInt1545 - Class145.anInt2697 << 8) / var6; + var1.anInt1561 = (var1.anInt1544 - Unsorted.anInt3657 << 8) / var6; + var1.anInt1565 = (var1.anInt1548 - Unsorted.anInt3657 << 8) / var6; + Class145.aClass113Array1895[anInt1672++] = var1; + } + } + } else if (var1.anInt1554 == 4) { + var2 = var1.anInt1544 - Unsorted.anInt3657; + if (var2 > 128) { + var3 = var1.anInt1563 - Class145.anInt3340 + TextureOperation8.renderDistanceTiles; + if (var3 < 0) { + var3 = 0; + } + + var4 = var1.anInt1566 - Class145.anInt3340 + TextureOperation8.renderDistanceTiles; + if (var4 > TextureOperation8.renderDistanceTiles + TextureOperation8.renderDistanceTiles) { + var4 = TextureOperation8.renderDistanceTiles + TextureOperation8.renderDistanceTiles; + } + + if (var3 <= var4) { + int var10 = var1.anInt1553 - Class97.anInt1375 + TextureOperation8.renderDistanceTiles; + if (var10 < 0) { + var10 = 0; + } + + var6 = var1.anInt1547 - Class97.anInt1375 + TextureOperation8.renderDistanceTiles; + if (var6 > TextureOperation8.renderDistanceTiles + TextureOperation8.renderDistanceTiles) { + var6 = TextureOperation8.renderDistanceTiles + TextureOperation8.renderDistanceTiles; + } + + boolean var7 = false; + + label114: + for (int var8 = var10; var8 <= var6; ++var8) { + for (int var9 = var3; var9 <= var4; ++var9) { + if (Class23.aBooleanArrayArray457[var8][var9]) { + var7 = true; + break label114; + } + } + } + + if (var7) { + var1.anInt1564 = 5; + var1.anInt1549 = (var1.anInt1562 - Class145.anInt2697 << 8) / var2; + var1.anInt1557 = (var1.anInt1545 - Class145.anInt2697 << 8) / var2; + var1.anInt1555 = (var1.anInt1560 - TextureOperation13.anInt3363 << 8) / var2; + var1.anInt1551 = (var1.anInt1550 - TextureOperation13.anInt3363 << 8) / var2; + Class145.aClass113Array1895[anInt1672++] = var1; + } + } + } + } + } + + } + + static float[] method1297() { + try { + float var1 = Class92.method1514() + Class92.getLightingModelAmbient(); + int var2 = Class92.screenColorRgb(); + float var3 = (float) (255 & var2 >> 16) / 255.0F; + MouseListeningClass.aFloatArray1919[3] = 1.0F; + float var4 = (float) (('\uff59' & var2) >> 8) / 255.0F; + float var6 = 0.58823526F; + float var5 = (float) (255 & var2) / 255.0F; + MouseListeningClass.aFloatArray1919[2] = Unsorted.aFloatArray1934[2] * var5 * var6 * var1; + MouseListeningClass.aFloatArray1919[0] = Unsorted.aFloatArray1934[0] * var3 * var6 * var1; + MouseListeningClass.aFloatArray1919[1] = var1 * var6 * var4 * Unsorted.aFloatArray1934[1]; + return MouseListeningClass.aFloatArray1919; + } catch (RuntimeException var7) { + throw ClientErrorException.clientError(var7, "jj.A(" + (byte) -50 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class74.java b/Client/src/main/java/org/runite/client/Class74.java new file mode 100644 index 000000000..7b2fe1080 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class74.java @@ -0,0 +1,538 @@ +package org.runite.client; + +import org.rs09.client.rendering.Toolkit; +import org.rs09.client.rendering.java.JavaToolkit; + +// TODO LDToolkit +public final class Class74 { + + static int[] anIntArray1097; + static int[] anIntArray1098; + + static JavaToolkit toolkit = Toolkit.JAVA_TOOLKIT; + + @Deprecated + private static int[] getBuffer() { + return Toolkit.JAVA_TOOLKIT.getBuffer(); + } + + public static void method1310() { + anIntArray1097 = null; + anIntArray1098 = null; + } + + private static void method1313(int var0, int var1) { + if (var0 >= Toolkit.JAVA_TOOLKIT.clipLeft && var1 >= Toolkit.JAVA_TOOLKIT.clipTop && var0 < Toolkit.JAVA_TOOLKIT.clipRight && var1 < Toolkit.JAVA_TOOLKIT.clipBottom) { + getBuffer()[var0 + var1 * Toolkit.JAVA_TOOLKIT.width] = 16776960; + } + } + + public static void method1314(int[] var0, int[] var1) { + if (var0.length == Toolkit.JAVA_TOOLKIT.clipBottom - Toolkit.JAVA_TOOLKIT.clipTop && var1.length == Toolkit.JAVA_TOOLKIT.clipBottom - Toolkit.JAVA_TOOLKIT.clipTop) { + anIntArray1097 = var0; + anIntArray1098 = var1; + } else { + throw new IllegalArgumentException(); + } + } + + static void method1315(int var0, int var1, int var2, int var3, int var4, int var5) { + method1321(var0, var1, var2, var4, var5); + method1321(var0, var1 + var3 - 1, var2, var4, var5); + if (var3 >= 3) { + method1327(var0, var1 + 1, var3 - 2, var4, var5); + method1327(var0 + var2 - 1, var1 + 1, var3 - 2, var4, var5); + } + + } + + public static void setClipping(int[] var0) { + Toolkit.JAVA_TOOLKIT.clipLeft = var0[0]; + Toolkit.JAVA_TOOLKIT.clipTop = var0[1]; + Toolkit.JAVA_TOOLKIT.clipRight = var0[2]; + Toolkit.JAVA_TOOLKIT.clipBottom = var0[3]; + method1310(); + } + + static void setBuffer(int[] buffer, int width, int height) { + Toolkit.JAVA_TOOLKIT.setBuffer(buffer); + Toolkit.JAVA_TOOLKIT.width = width; + Toolkit.JAVA_TOOLKIT.height = height; + setClipping(0, 0, width, height); + } + + static void method1320() { + int var0 = 0; + + int var1; + for (var1 = Toolkit.JAVA_TOOLKIT.width * Toolkit.JAVA_TOOLKIT.height - 7; var0 < var1; getBuffer()[var0++] = 0) { + getBuffer()[var0++] = 0; + getBuffer()[var0++] = 0; + getBuffer()[var0++] = 0; + getBuffer()[var0++] = 0; + getBuffer()[var0++] = 0; + getBuffer()[var0++] = 0; + getBuffer()[var0++] = 0; + } + + for (var1 += 7; var0 < var1; getBuffer()[var0++] = 0) { + } + + } + + private static void method1321(int var0, int var1, int var2, int var3, int var4) { + if (var1 >= Toolkit.JAVA_TOOLKIT.clipTop && var1 < Toolkit.JAVA_TOOLKIT.clipBottom) { + if (var0 < Toolkit.JAVA_TOOLKIT.clipLeft) { + var2 -= Toolkit.JAVA_TOOLKIT.clipLeft - var0; + var0 = Toolkit.JAVA_TOOLKIT.clipLeft; + } + + if (var0 + var2 > Toolkit.JAVA_TOOLKIT.clipRight) { + var2 = Toolkit.JAVA_TOOLKIT.clipRight - var0; + } + + int var5 = 256 - var4; + int var6 = (var3 >> 16 & 0xFF) * var4; + int var7 = (var3 >> 8 & 0xFF) * var4; + int var8 = (var3 & 0xFF) * var4; + int var12 = var0 + var1 * Toolkit.JAVA_TOOLKIT.width; + + for (int var13 = 0; var13 < var2; ++var13) { + int var9 = (getBuffer()[var12] >> 16 & 0xFF) * var5; + int var10 = (getBuffer()[var12] >> 8 & 0xFF) * var5; + int var11 = (getBuffer()[var12] & 0xFF) * var5; + int var14 = (var6 + var9 >> 8 << 16) + (var7 + var10 >> 8 << 8) + (var8 + var11 >> 8); + getBuffer()[var12++] = var14; + } + + } + } + + static void method1322(int var0, int var1, int var2, int var3, int var4, int var5) { + int var6 = var2 - var0; + int var7 = var3 - var1; + int var8 = var6 >= 0 ? var6 : -var6; + int var9 = var7 >= 0 ? var7 : -var7; + int var10 = var8; + if (var8 < var9) { + var10 = var9; + } + + if (var10 != 0) { + int var11 = (var6 << 16) / var10; + int var12 = (var7 << 16) / var10; + if (var12 <= var11) { + var11 = -var11; + } else { + var12 = -var12; + } + + int var13 = var5 * var12 >> 17; + int var14 = var5 * var12 + 1 >> 17; + int var15 = var5 * var11 >> 17; + int var16 = var5 * var11 + 1 >> 17; + var0 -= Class51.method1139(); + var1 -= Class51.method1153(); + int var17 = var0 + var13; + int var18 = var0 - var14; + int var19 = var0 + var6 - var14; + int var20 = var0 + var6 + var13; + int var21 = var1 + var15; + int var22 = var1 - var16; + int var23 = var1 + var7 - var16; + int var24 = var1 + var7 + var15; + Class51.method1148(var17, var18, var19); + Class51.method1144(var21, var22, var23, var17, var18, var19, var4); + Class51.method1148(var17, var19, var20); + Class51.method1144(var21, var23, var24, var17, var19, var20, var4); + } + } + + public static void setClipping(int left, int top, int right, int bottom) { + if (left < 0) { + left = 0; + } + + if (top < 0) { + top = 0; + } + + if (right > Toolkit.JAVA_TOOLKIT.width) { + right = Toolkit.JAVA_TOOLKIT.width; + } + + if (bottom > Toolkit.JAVA_TOOLKIT.height) { + bottom = Toolkit.JAVA_TOOLKIT.height; + } + + Toolkit.JAVA_TOOLKIT.clipLeft = left; + Toolkit.JAVA_TOOLKIT.clipTop = top; + Toolkit.JAVA_TOOLKIT.clipRight = right; + Toolkit.JAVA_TOOLKIT.clipBottom = bottom; + method1310(); + } + + static void method1325(int[] var0) { + var0[0] = Toolkit.JAVA_TOOLKIT.clipLeft; + var0[1] = Toolkit.JAVA_TOOLKIT.clipTop; + var0[2] = Toolkit.JAVA_TOOLKIT.clipRight; + var0[3] = Toolkit.JAVA_TOOLKIT.clipBottom; + } + + static void method1326(int var0, int var1, int var2, int var3) { + if (Toolkit.JAVA_TOOLKIT.clipLeft < var0) { + Toolkit.JAVA_TOOLKIT.clipLeft = var0; + } + + if (Toolkit.JAVA_TOOLKIT.clipTop < var1) { + Toolkit.JAVA_TOOLKIT.clipTop = var1; + } + + if (Toolkit.JAVA_TOOLKIT.clipRight > var2) { + Toolkit.JAVA_TOOLKIT.clipRight = var2; + } + + if (Toolkit.JAVA_TOOLKIT.clipBottom > var3) { + Toolkit.JAVA_TOOLKIT.clipBottom = var3; + } + + method1310(); + } + + private static void method1327(int var0, int var1, int var2, int var3, int var4) { + if (var0 >= Toolkit.JAVA_TOOLKIT.clipLeft && var0 < Toolkit.JAVA_TOOLKIT.clipRight) { + if (var1 < Toolkit.JAVA_TOOLKIT.clipTop) { + var2 -= Toolkit.JAVA_TOOLKIT.clipTop - var1; + var1 = Toolkit.JAVA_TOOLKIT.clipTop; + } + + if (var1 + var2 > Toolkit.JAVA_TOOLKIT.clipBottom) { + var2 = Toolkit.JAVA_TOOLKIT.clipBottom - var1; + } + + int var5 = 256 - var4; + int var6 = (var3 >> 16 & 0xFF) * var4; + int var7 = (var3 >> 8 & 0xFF) * var4; + int var8 = (var3 & 0xFF) * var4; + int var12 = var0 + var1 * Toolkit.JAVA_TOOLKIT.width; + + for (int var13 = 0; var13 < var2; ++var13) { + int var9 = (getBuffer()[var12] >> 16 & 0xFF) * var5; + int var10 = (getBuffer()[var12] >> 8 & 0xFF) * var5; + int var11 = (getBuffer()[var12] & 0xFF) * var5; + int var14 = (var6 + var9 >> 8 << 16) + (var7 + var10 >> 8 << 8) + (var8 + var11 >> 8); + getBuffer()[var12] = var14; + var12 += Toolkit.JAVA_TOOLKIT.width; + } + + } + } + + static void method1328(int var0, int var1, int var2, int var3, int var4) { + var2 -= var0; + var3 -= var1; + if (var3 == 0) { + if (var2 >= 0) { + Toolkit.JAVA_TOOLKIT.drawHorizontalLine(var0, var1, var2 + 1, var4); + } else { + Toolkit.JAVA_TOOLKIT.drawHorizontalLine(var0 + var2, var1, -var2 + 1, var4); + } + + } else if (var2 == 0) { + if (var3 >= 0) { + Toolkit.JAVA_TOOLKIT.drawVerticalLine(var0, var1, var3 + 1, var4); + } else { + Toolkit.JAVA_TOOLKIT.drawVerticalLine(var0, var1 + var3, -var3 + 1, var4); + } + + } else { + if (var2 + var3 < 0) { + var0 += var2; + var2 = -var2; + var1 += var3; + var3 = -var3; + } + + int var5; + int var6; + if (var2 > var3) { + var1 <<= 16; + var1 += 32768; + var3 <<= 16; + var5 = (int) Math.floor((double) var3 / (double) var2 + 0.5D); + var2 += var0; + if (var0 < Toolkit.JAVA_TOOLKIT.clipLeft) { + var1 += var5 * (Toolkit.JAVA_TOOLKIT.clipLeft - var0); + var0 = Toolkit.JAVA_TOOLKIT.clipLeft; + } + + if (var2 >= Toolkit.JAVA_TOOLKIT.clipRight) { + var2 = Toolkit.JAVA_TOOLKIT.clipRight - 1; + } + + while (var0 <= var2) { + var6 = var1 >> 16; + if (var6 >= Toolkit.JAVA_TOOLKIT.clipTop && var6 < Toolkit.JAVA_TOOLKIT.clipBottom) { + getBuffer()[var0 + var6 * Toolkit.JAVA_TOOLKIT.width] = var4; + } + + var1 += var5; + ++var0; + } + } else { + var0 <<= 16; + var0 += 32768; + var2 <<= 16; + var5 = (int) Math.floor((double) var2 / (double) var3 + 0.5D); + var3 += var1; + if (var1 < Toolkit.JAVA_TOOLKIT.clipTop) { + var0 += var5 * (Toolkit.JAVA_TOOLKIT.clipTop - var1); + var1 = Toolkit.JAVA_TOOLKIT.clipTop; + } + + if (var3 >= Toolkit.JAVA_TOOLKIT.clipBottom) { + var3 = Toolkit.JAVA_TOOLKIT.clipBottom - 1; + } + + while (var1 <= var3) { + var6 = var0 >> 16; + if (var6 >= Toolkit.JAVA_TOOLKIT.clipLeft && var6 < Toolkit.JAVA_TOOLKIT.clipRight) { + getBuffer()[var6 + var1 * Toolkit.JAVA_TOOLKIT.width] = var4; + } + + var0 += var5; + ++var1; + } + } + + } + } + + private static void method1329(int var0, int var1, int var2) { + if (var2 == 0) { + method1313(var0, var1); + } else { + if (var2 < 0) { + var2 = -var2; + } + + int var4 = var1 - var2; + if (var4 < Toolkit.JAVA_TOOLKIT.clipTop) { + var4 = Toolkit.JAVA_TOOLKIT.clipTop; + } + + int var5 = var1 + var2 + 1; + if (var5 > Toolkit.JAVA_TOOLKIT.clipBottom) { + var5 = Toolkit.JAVA_TOOLKIT.clipBottom; + } + + int var6 = var4; + int var7 = var2 * var2; + int var8 = 0; + int var9 = var1 - var4; + int var10 = var9 * var9; + int var11 = var10 - var9; + if (var1 > var5) { + var1 = var5; + } + + int var12; + int var13; + int var14; + int var15; + while (var6 < var1) { + while (var11 <= var7 || var10 <= var7) { + var10 += var8 + var8; + var11 += var8++ + var8; + } + + var12 = var0 - var8 + 1; + if (var12 < Toolkit.JAVA_TOOLKIT.clipLeft) { + var12 = Toolkit.JAVA_TOOLKIT.clipLeft; + } + + var13 = var0 + var8; + if (var13 > Toolkit.JAVA_TOOLKIT.clipRight) { + var13 = Toolkit.JAVA_TOOLKIT.clipRight; + } + + var14 = var12 + var6 * Toolkit.JAVA_TOOLKIT.width; + + for (var15 = var12; var15 < var13; ++var15) { + getBuffer()[var14++] = 16776960; + } + + ++var6; + var10 -= var9-- + var9; + var11 -= var9 + var9; + } + + var8 = var2; + var9 = var6 - var1; + var11 = var9 * var9 + var7; + var10 = var11 - var2; + + for (var11 -= var9; var6 < var5; var10 += var9++ + var9) { + while (var11 > var7 && var10 > var7) { + var11 -= var8-- + var8; + var10 -= var8 + var8; + } + + var12 = var0 - var8; + if (var12 < Toolkit.JAVA_TOOLKIT.clipLeft) { + var12 = Toolkit.JAVA_TOOLKIT.clipLeft; + } + + var13 = var0 + var8; + if (var13 > Toolkit.JAVA_TOOLKIT.clipRight - 1) { + var13 = Toolkit.JAVA_TOOLKIT.clipRight - 1; + } + + var14 = var12 + var6 * Toolkit.JAVA_TOOLKIT.width; + + for (var15 = var12; var15 <= var13; ++var15) { + getBuffer()[var14++] = 16776960; + } + + ++var6; + var11 += var9 + var9; + } + + } + } + + static void method1330(int var0, int var1, int var2, int var4) { + if (var4 != 0) { + if (var4 == 256) { + method1329(var0, var1, var2); + } else { + if (var2 < 0) { + var2 = -var2; + } + + int var5 = 256 - var4; + int var6 = (16776960 >> 16 & 0xFF) * var4; + int var7 = (16776960 >> 8 & 0xFF) * var4; + int var8 = 0; + int var12 = var1 - var2; + if (var12 < Toolkit.JAVA_TOOLKIT.clipTop) { + var12 = Toolkit.JAVA_TOOLKIT.clipTop; + } + + int var13 = var1 + var2 + 1; + if (var13 > Toolkit.JAVA_TOOLKIT.clipBottom) { + var13 = Toolkit.JAVA_TOOLKIT.clipBottom; + } + + int var14 = var12; + int var15 = var2 * var2; + int var16 = 0; + int var17 = var1 - var12; + int var18 = var17 * var17; + int var19 = var18 - var17; + if (var1 > var13) { + var1 = var13; + } + + int var9; + int var10; + int var11; + int var21; + int var20; + int var23; + int var22; + int var24; + while (var14 < var1) { + while (var19 <= var15 || var18 <= var15) { + var18 += var16 + var16; + var19 += var16++ + var16; + } + + var20 = var0 - var16 + 1; + if (var20 < Toolkit.JAVA_TOOLKIT.clipLeft) { + var20 = Toolkit.JAVA_TOOLKIT.clipLeft; + } + + var21 = var0 + var16; + if (var21 > Toolkit.JAVA_TOOLKIT.clipRight) { + var21 = Toolkit.JAVA_TOOLKIT.clipRight; + } + + var22 = var20 + var14 * Toolkit.JAVA_TOOLKIT.width; + + for (var23 = var20; var23 < var21; ++var23) { + var9 = (getBuffer()[var22] >> 16 & 0xFF) * var5; + var10 = (getBuffer()[var22] >> 8 & 0xFF) * var5; + var11 = (getBuffer()[var22] & 0xFF) * var5; + var24 = (var6 + var9 >> 8 << 16) + (var7 + var10 >> 8 << 8) + (var8 + var11 >> 8); + getBuffer()[var22++] = var24; + } + + ++var14; + var18 -= var17-- + var17; + var19 -= var17 + var17; + } + + var16 = var2; + var17 = -var17; + var19 = var17 * var17 + var15; + var18 = var19 - var2; + + for (var19 -= var17; var14 < var13; var18 += var17++ + var17) { + while (var19 > var15 && var18 > var15) { + var19 -= var16-- + var16; + var18 -= var16 + var16; + } + + var20 = var0 - var16; + if (var20 < Toolkit.JAVA_TOOLKIT.clipLeft) { + var20 = Toolkit.JAVA_TOOLKIT.clipLeft; + } + + var21 = var0 + var16; + if (var21 > Toolkit.JAVA_TOOLKIT.clipRight - 1) { + var21 = Toolkit.JAVA_TOOLKIT.clipRight - 1; + } + + var22 = var20 + var14 * Toolkit.JAVA_TOOLKIT.width; + + for (var23 = var20; var23 <= var21; ++var23) { + var9 = (getBuffer()[var22] >> 16 & 0xFF) * var5; + var10 = (getBuffer()[var22] >> 8 & 0xFF) * var5; + var11 = (getBuffer()[var22] & 0xFF) * var5; + var24 = (var6 + var9 >> 8 << 16) + (var7 + var10 >> 8 << 8) + (var8 + var11 >> 8); + getBuffer()[var22++] = var24; + } + + ++var14; + var19 += var17 + var17; + } + + } + } + } + + public static void resetClipping() { + Toolkit.JAVA_TOOLKIT.clipLeft = 0; + Toolkit.JAVA_TOOLKIT.clipTop = 0; + Toolkit.JAVA_TOOLKIT.clipRight = Toolkit.JAVA_TOOLKIT.width; + Toolkit.JAVA_TOOLKIT.clipBottom = Toolkit.JAVA_TOOLKIT.height; + method1310(); + } + + public static void method1332(int var0, int var1, int[] var3, int[] var4) { + int var5 = var0 + var1 * Toolkit.JAVA_TOOLKIT.width; + + for (var1 = 0; var1 < var3.length; ++var1) { + int var6 = var5 + var3[var1]; + + for (var0 = -var4[var1]; var0 < 0; ++var0) { + getBuffer()[var6++] = 0; + } + + var5 += Toolkit.JAVA_TOOLKIT.width; + } + + } + +} diff --git a/Client/src/main/java/org/runite/client/Class75.java b/Client/src/main/java/org/runite/client/Class75.java new file mode 100644 index 000000000..2a0ec7e05 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class75.java @@ -0,0 +1,60 @@ +package org.runite.client; + +abstract class Class75 { + + static long aLong1102 = 0L; + static Class3_Sub28_Sub5[] aClass3_Sub28_Sub5Array1103 = new Class3_Sub28_Sub5[14]; + static int anInt1105; + static int[] anIntArray1107 = new int[]{0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3}; + static int anInt1108 = 0; + static int anInt1109 = 0; + int anInt1101; + int anInt1104; + int anInt1106; + + + Class75(int var1, int var2, int var3) { + try { + this.anInt1104 = var2; + this.anInt1106 = var3; + this.anInt1101 = var1; + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "kf.(" + var1 + ',' + var2 + ',' + var3 + ')'); + } + } + + static Class25 method1336(int var0, int var1, int var2) { + TileData var3 = TileData.aTileDataArrayArrayArray2638[var0][var1][var2]; + if (var3 != null) { + for (int var4 = 0; var4 < var3.anInt2223; ++var4) { + Class25 var5 = var3.aClass25Array2221[var4]; + if ((var5.aLong498 >> 29 & 3L) == 2L && var5.anInt483 == var1 && var5.anInt478 == var2) { + return var5; + } + } + + } + return null; + } + + static void method1339(RSString var0) { + try { + for (Class3_Sub28_Sub3 var2 = (Class3_Sub28_Sub3) Class134.aLinkedList_1758.startIteration(); var2 != null; var2 = (Class3_Sub28_Sub3) Class134.aLinkedList_1758.nextIteration()) { + if (var2.aString_3561.equalsString(var0)) { + Unsorted.aClass3_Sub28_Sub3_2600 = var2; + return; + } + } + + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "kf.G(" + (var0 != null ? "{...}" : "null") + ',' + 0 + ')'); + } + } + + abstract void method1335(int var1, int var2, int var3); + + abstract void method1337(int var1, boolean var2, int var3); + + abstract void method1341(int var2, int var3); + +} diff --git a/Client/src/main/java/org/runite/client/Class75_Sub1.java b/Client/src/main/java/org/runite/client/Class75_Sub1.java new file mode 100644 index 000000000..195086310 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class75_Sub1.java @@ -0,0 +1,115 @@ +package org.runite.client; + +final class Class75_Sub1 extends Class75 { + + private final int anInt2629; + private final int anInt2630; + private final int anInt2632; + private final int anInt2635; + + + final void method1335(int var1, int var2, int var3) { + try { + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "ci.D(" + var1 + ',' + var2 + ',' + var3 + ')'); + } + } + + final void method1341(int var2, int var3) { + try { + + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "ci.A(" + 2 + ',' + var2 + ',' + var3 + ')'); + } + } + + static void method1342(int[] var0, int[] var1, Player var2, int[] var4) { + try { + int var5 = 0; + + while(var1.length > var5) { + int var6 = var1[var5]; + int var7 = var4[var5]; + int var8 = var0[var5]; + + for(int var9 = 0; var7 != 0 && var2.aClass145Array2809.length > var9; var7 >>>= 1) { + if((1 & var7) != 0) { + if(var6 == -1) { + var2.aClass145Array2809[var9] = null; + } else { + SequenceDefinition var10 = SequenceDefinition.getAnimationDefinition(var6); + int var11 = var10.delayType; + Class145 var12 = var2.aClass145Array2809[var9]; + if(var12 != null) { + if(var12.animationId == var6) { + if(var11 == 0) { + var12 = var2.aClass145Array2809[var9] = null; + } else if (1 == var11) { + var12.anInt1894 = 0; + var12.anInt1891 = 1; + var12.anInt1893 = 0; + var12.anInt1900 = var8; + var12.anInt1897 = 0; + Unsorted.method1470(var2.yAxis, var10, var2.xAxis, var2 == Class102.player, 0); + } else if (var11 == 2) { + var12.anInt1894 = 0; + } + } else if(var10.forcedPriority >= SequenceDefinition.getAnimationDefinition(var12.animationId).forcedPriority) { + var12 = var2.aClass145Array2809[var9] = null; + } + } + + if(null == var12) { + var12 = var2.aClass145Array2809[var9] = new Class145(); + var12.animationId = var6; + var12.anInt1891 = 1; + var12.anInt1897 = 0; + var12.anInt1900 = var8; + var12.anInt1893 = 0; + var12.anInt1894 = 0; + Unsorted.method1470(var2.yAxis, var10, var2.xAxis, var2 == Class102.player, 0); + } + } + } + + ++var9; + } + + ++var5; + } + + } catch (RuntimeException var13) { + throw ClientErrorException.clientError(var13, "ci.B(" + (var0 != null?"{...}":"null") + ',' + (var1 != null?"{...}":"null") + ',' + (var2 != null?"{...}":"null") + ',' + (byte) -113 + ',' + (var4 != null?"{...}":"null") + ')'); + } + } + + final void method1337(int var1, boolean var2, int var3) { + try { + int var4 = var3 * this.anInt2629 >> 12; + if(!var2) { + this.method1335(67, -82, -112); + } + + int var5 = this.anInt2635 * var3 >> 12; + int var6 = var1 * this.anInt2630 >> 12; + int var7 = var1 * this.anInt2632 >> 12; + TextureOperation25.method330(this.anInt1104, -111, var7, var4, var6, var5); + } catch (RuntimeException var8) { + throw ClientErrorException.clientError(var8, "ci.E(" + var1 + ',' + var2 + ',' + var3 + ')'); + } + } + + Class75_Sub1(int var1, int var2, int var3, int var4, int var5, int var6) { + super(-1, var5, var6); + + try { + this.anInt2632 = var4; + this.anInt2630 = var2; + this.anInt2629 = var1; + this.anInt2635 = var3; + } catch (RuntimeException var8) { + throw ClientErrorException.clientError(var8, "ci.(" + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + var5 + ',' + var6 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class75_Sub2.java b/Client/src/main/java/org/runite/client/Class75_Sub2.java new file mode 100644 index 000000000..34dde228e --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class75_Sub2.java @@ -0,0 +1,74 @@ +package org.runite.client; + +final class Class75_Sub2 extends Class75 { + + private final int anInt2636; + static Class33 aClass33_2637; + static int[] anIntArray2639; + private int anInt2644; + private final int anInt2646; + private final int anInt2647; + static Class33 aClass33_2648; + + + final void method1341(int var2, int var3) { + try { + int var4 = this.anInt2646 * var2 >> 12; + int var5 = var2 * this.anInt2636 >> 12; + int var6 = this.anInt2644 * var3 >> 12; + int var7 = this.anInt2647 * var3 >> 12; + Class95.method1584(this.anInt1101, var7, var4, var6, var5); + } catch (RuntimeException var8) { + throw ClientErrorException.clientError(var8, "kc.A(" + 2 + ',' + var2 + ',' + var3 + ')'); + } + } + + static AbstractSprite method1344(CacheIndex var0, int var1) { + try { + return !GroundItem.method2029((byte)-121, var0, var1)?null:Class43.method1062(99); + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "kc.C(" + (var0 != null?"{...}":"null") + ',' + var1 + ')'); + } + } + + final void method1337(int var1, boolean var2, int var3) { + try { + if (!var2) { + this.method1337(-7, false, 66); + } + + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "kc.E(" + var1 + ',' + ',' + var3 + ')'); + } + } + + final void method1335(int var1, int var2, int var3) { + try { + int var4 = var2 * this.anInt2646 >> 12; + if(var3 != 4898) { + this.anInt2644 = -39; + } + + int var7 = this.anInt2647 * var1 >> 12; + int var6 = this.anInt2644 * var1 >> 12; + int var5 = this.anInt2636 * var2 >> 12; + TextureOperation24.method223(this.anInt1106, var4, var6, var7, this.anInt1104, this.anInt1101, var5); + } catch (RuntimeException var8) { + throw ClientErrorException.clientError(var8, "kc.D(" + var1 + ',' + var2 + ',' + var3 + ')'); + } + } + + Class75_Sub2(int var1, int var2, int var3, int var4, int var5, int var6, int var7) { + super(var5, var6, var7); + + try { + this.anInt2647 = var4; + this.anInt2646 = var1; + this.anInt2644 = var2; + this.anInt2636 = var3; + } catch (RuntimeException var9) { + throw ClientErrorException.clientError(var9, "kc.(" + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + var5 + ',' + var6 + ',' + var7 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class75_Sub3.java b/Client/src/main/java/org/runite/client/Class75_Sub3.java new file mode 100644 index 000000000..677d9db97 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class75_Sub3.java @@ -0,0 +1,153 @@ +package org.runite.client; + +final class Class75_Sub3 extends Class75 { + + private final int anInt2649; + private final int anInt2650; + private final int anInt2652; + private final int anInt2654; + private int anInt2655; + static AbstractSprite[] aAbstractSpriteArray2656; + private final int anInt2657; + static int anInt2658; + private final int anInt2659; + private final int anInt2661; + + final void method1337(int var1, boolean var2, int var3) { + try { + int var4 = var3 * this.anInt2654 >> 12; + int var6 = var3 * this.anInt2661 >> 12; + int var7 = this.anInt2649 * var1 >> 12; + int var5 = this.anInt2657 * var1 >> 12; + int var8 = this.anInt2655 * var3 >> 12; + int var9 = var1 * this.anInt2652 >> 12; + int var10 = this.anInt2659 * var3 >> 12; + int var11 = var1 * this.anInt2650 >> 12; + Class108.method1652(var6, var10, var9, var11, var5, var4, var8, var7, this.anInt1104); + } catch (RuntimeException var12) { + throw ClientErrorException.clientError(var12, "re.E(" + var1 + ',' + var2 + ',' + var3 + ')'); + } + } + + static void sweepClientStartupReferenceCache() { + try { + Class163_Sub2_Sub1.aReferenceCache_4015.sweep(5); + Class44.aReferenceCache_725.sweep(5); + Entity.aReferenceCache_2792.sweep(5); + Unsorted.aReferenceCache_21.sweep(5); + ObjectDefinition.aReferenceCache_1401.sweep(5); + Unsorted.aReferenceCache_4051.sweep(5); + ObjectDefinition.aReferenceCache_1965.sweep(5); + Unsorted.aReferenceCache_4043.sweep(5); + CS2Script.aReferenceCache_2442.sweep(5); + Class154.aReferenceCache_1964.sweep(5); + QuickChatDefinition.aReferenceCache_3572.sweep(5); + Class143.aReferenceCache_1874.sweep(5); + Class67.aReferenceCache_1013.sweep(5); + Texture.aReferenceCache_1146.sweep(5); + Class159.aReferenceCache_2016.sweep(5); + VarpHelpers.varbitLookup.sweep(5); + Class136.aReferenceCache_1772.sweep(5); + RenderAnimationDefinition.aReferenceCache_1955.sweep(5); + TextureOperation25.aReferenceCache_3412.sweep(5); + TextureOperation2.aReferenceCache_3369.sweep(5); + Class128.aReferenceCache_1683.sweep(5); + Unsorted.aReferenceCache_684.sweep(5); + Class163_Sub1.aReferenceCache_2984.sweep(5); + KeyboardListener.aReferenceCache_1911.sweep(5); + Unsorted.aReferenceCache_1131.sweep(5); + Class114.aReferenceCache_1569.sweep(50); + Class3_Sub15.aReferenceCache_2428.sweep(50); + Unsorted.aReferenceCache_743.sweep(50); + LinkedList.aReferenceCache_939.sweep(5); + Class158_Sub1.aReferenceCache_2982.sweep(5); + TextureOperation1.aReferenceCache_3130.sweep(5); + Unsorted.aReferenceCache_1135.sweep(5); + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "re.K(" + 26211 + ')'); + } + } + + final void method1341(int var2, int var3) { + try { + + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "re.A(" + 2 + ',' + var2 + ',' + var3 + ')'); + } + } + + final void method1335(int var1, int var2, int var3) { + try { + if(var3 != 4898) { + this.anInt2655 = -64; + } + + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "re.D(" + var1 + ',' + var2 + ',' + var3 + ')'); + } + } + + Class75_Sub3(int var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9, int var10) { + super(-1, var9, var10); + + try { + this.anInt2657 = var2; + this.anInt2659 = var7; + this.anInt2655 = var5; + this.anInt2654 = var1; + this.anInt2650 = var8; + this.anInt2652 = var6; + this.anInt2649 = var4; + this.anInt2661 = var3; + } catch (RuntimeException var12) { + throw ClientErrorException.clientError(var12, "re.(" + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + var5 + ',' + var6 + ',' + var7 + ',' + var8 + ',' + var9 + ',' + var10 + ')'); + } + } + + static AbstractSprite[] method1347(int var0) { + try { + if(var0 == -26802) { + AbstractSprite[] var1 = new AbstractSprite[Class95.anInt1338]; + + for(int var2 = 0; Class95.anInt1338 > var2; ++var2) { + byte[] var4 = Class163_Sub1.aByteArrayArray2987[var2]; + int var3 = Unsorted.anIntArray3076[var2] * GroundItem.anIntArray2931[var2]; + if(Class45.aBooleanArray3272[var2]) { + int[] var6 = new int[var3]; + byte[] var5 = Class163_Sub3.aByteArrayArray3005[var2]; + + for(int var7 = 0; var3 > var7; ++var7) { + var6[var7] = TextureOperation3.bitwiseOr(TextureOperation38.spritePalette[Unsorted.bitwiseAnd(var4[var7], 255)], Unsorted.bitwiseAnd(-16777216, var5[var7] << 24)); + } + + if(HDToolKit.highDetail) { + var1[var2] = new Class3_Sub28_Sub16_Sub1_Sub1(Class3_Sub15.anInt2426, Class133.anInt1748, Class164.anIntArray2048[var2], Unsorted.anIntArray2591[var2], GroundItem.anIntArray2931[var2], Unsorted.anIntArray3076[var2], var6); + } else { + var1[var2] = new Class3_Sub28_Sub16_Sub2_Sub1(Class3_Sub15.anInt2426, Class133.anInt1748, Class164.anIntArray2048[var2], Unsorted.anIntArray2591[var2], GroundItem.anIntArray2931[var2], Unsorted.anIntArray3076[var2], var6); + } + } else { + int[] var9 = new int[var3]; + + for(int var10 = 0; var3 > var10; ++var10) { + var9[var10] = TextureOperation38.spritePalette[Unsorted.bitwiseAnd(var4[var10], 255)]; + } + + if(HDToolKit.highDetail) { + var1[var2] = new HDSprite(Class3_Sub15.anInt2426, Class133.anInt1748, Class164.anIntArray2048[var2], Unsorted.anIntArray2591[var2], GroundItem.anIntArray2931[var2], Unsorted.anIntArray3076[var2], var9); + } else { + var1[var2] = new SoftwareSprite(Class3_Sub15.anInt2426, Class133.anInt1748, Class164.anIntArray2048[var2], Unsorted.anIntArray2591[var2], GroundItem.anIntArray2931[var2], Unsorted.anIntArray3076[var2], var9); + } + } + } + + Class39.method1035((byte)106); + return var1; + } else { + return null; + } + } catch (RuntimeException var8) { + throw ClientErrorException.clientError(var8, "re.B(" + var0 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class75_Sub4.java b/Client/src/main/java/org/runite/client/Class75_Sub4.java new file mode 100644 index 000000000..b2e02ad93 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class75_Sub4.java @@ -0,0 +1,145 @@ +package org.runite.client; + +import java.util.Objects; + +public final class Class75_Sub4 extends Class75 { + + static int[] anIntArray2663; + static int[] anIntArray2664; + private final int anInt2666; + public static int[] incomingPacketSizes = new int[]{-1, 0, 8, 0, 2, 0, 0, 0, 0, 12, 0, 1, 0, 3, 7, 0, 15, 6, 0, 0, 4, 7, -2, -1, 2, 0, 2, 8, 0, 0, 0, 0, -2, 5, 0, 0, 8, 3, 6, 0, 0, 0, -1, 0, -1, 0, 0, 6, -2, 0, 12, 0, 0, 0, -1, -2, 10, 0, 0, 0, 3, 0, -1, 0, 0, 5, 6, 0, 0, 8, -1, -1, 0, 8, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 6, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 5, 0, 0, -2, 0, 0, 0, 0, 0, 12, 2, 0, -2, -2, 20, 0, 0, 10, 0, 15, 0, -1, 0, 8, -2, 0, 0, 0, 8, 0, 12, 0, 0, 7, 0, 0, 0, 0, 0, -1, -1, 0, 4, 5, 0, 0, 0, 6, 0, 0, 0, 0, 8, 9, 0, 0, 0, 2, -1, 0, -2, 0, 4, 14, 0, 0, 0, 24, 0, -2, 5, 0, 0, 0, 10, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 2, 1, 0, 0, 2, -1, 1, 0, 0, 0, 0, 14, 0, 0, 0, 0, 10, 5, 0, 0, 0, 0, 0, -2, 0, 0, 9, 0, 0, 8, 0, 0, 0, 0, -2, 6, 0, 0, 0, -2, 0, 3, 0, 1, 7, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 3, 0, 0}; + private final int anInt2669; + static int anInt2670 = 0; + private final int anInt2671; + private final int anInt2672; + + + final void method1337(int var1, boolean var2, int var3) { + try { + int var5 = var3 * this.anInt2666 >> 12; + int var7 = this.anInt2669 * var1 >> 12; + int var4 = this.anInt2671 * var3 >> 12; + int var6 = this.anInt2672 * var1 >> 12; + if(var2) { + Class145.method2072(this.anInt1104, var4, var6, var5, var7, this.anInt1106); + } + } catch (RuntimeException var8) { + throw ClientErrorException.clientError(var8, "ta.E(" + var1 + ',' + ',' + var3 + ')'); + } + } + + Class75_Sub4(int var1, int var2, int var3, int var4, int var5, int var6, int var7) { + super(var5, var6, var7); + + try { + this.anInt2672 = var2; + this.anInt2666 = var3; + this.anInt2671 = var1; + this.anInt2669 = var4; + } catch (RuntimeException var9) { + throw ClientErrorException.clientError(var9, "ta.(" + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + var5 + ',' + var6 + ',' + var7 + ')'); + } + } + + final void method1341(int var2, int var3) { + try { + int var4 = this.anInt2671 * var2 >> 12; + int var5 = var2 * this.anInt2666 >> 12; + int var6 = var3 * this.anInt2672 >> 12; + int var7 = var3 * this.anInt2669 >> 12; + LinkableRSString.method730(var4, this.anInt1101, var7, var5, var6); + + } catch (RuntimeException var8) { + throw ClientErrorException.clientError(var8, "ta.A(" + 2 + ',' + var2 + ',' + var3 + ')'); + } + } + + static boolean method1351(CacheIndex var0, int var1, int archiveId) { + try { + byte[] var4 = var0.getFile(archiveId, var1); + if(var4 == null) { + return false; + } else { + Class45.method1082(var4, 98); + return true; + } + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "ta.N(" + (var0 != null?"{...}":"null") + ',' + var1 + ',' + archiveId + ',' + -30901 + ')'); + } + } + + final void method1335(int var1, int var2, int var3) { + try { + if(var3 == 4898) { + int var4 = var2 * this.anInt2671 >> 12; + int var6 = this.anInt2672 * var1 >> 12; + int var5 = var2 * this.anInt2666 >> 12; + int var7 = this.anInt2669 * var1 >> 12; + TextureOperation21.method194(this.anInt1106, var7, this.anInt1101, this.anInt1104, var6, var5, var4); + } + } catch (RuntimeException var8) { + throw ClientErrorException.clientError(var8, "ta.D(" + var1 + ',' + var2 + ',' + var3 + ')'); + } + } + + static void method1352(int var0, boolean var1, int var3, int var4) { + try { + if(Unsorted.loadInterface(var3)) { + Class158.method2183(-1, var1, var4, var0, GameObject.interfaces1834[var3]); + } + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "ta.K(" + var0 + ',' + var1 + ',' + -1 + ',' + var3 + ',' + var4 + ')'); + } + } + + static void method1353(SoftwareSprite[] var0, CacheIndex var2) { + try { + GroundItemLink.worldmapIndex_3210 = var2; + GameObject.aSoftwareSpriteArray1839 = var0; + Class3_Sub24_Sub4.aBooleanArray3503 = new boolean[GameObject.aSoftwareSpriteArray1839.length]; + Class134.aLinkedList_1758.clear(); + int var3 = GroundItemLink.worldmapIndex_3210.getArchiveForName(TextCore.aString_2304); + int[] var4 = GroundItemLink.worldmapIndex_3210.getFileIds(var3); + + for(int var5 = 0; var5 < Objects.requireNonNull(var4).length; ++var5) { + Class134.aLinkedList_1758.pushBack(Class124.method1747(new DataBuffer(GroundItemLink.worldmapIndex_3210.getFile(var3, var4[var5])))); + } + + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "ta.B(" + (var0 != null?"{...}":"null") + ',' + -11931 + ',' + (var2 != null?"{...}":"null") + ')'); + } + } + + static void method1354(int var0, int var1, int var3, int var4) { + try { + if(var4 >= Class159.anInt2020 && var4 <= Class57.anInt902) { + var0 = Class40.method1040(Class3_Sub28_Sub18.anInt3765, var0, Class101.anInt1425); + var3 = Class40.method1040(Class3_Sub28_Sub18.anInt3765, var3, Class101.anInt1425); + TextureOperation14.method320(var1, var4, var3, (byte)-123, var0); + } + + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "ta.L(" + var0 + ',' + var1 + ',' + true + ',' + var3 + ',' + var4 + ')'); + } + } + + static void method1355() { + try { + Class3_Sub25.aClass129_2552.method1770(); + + int var1; + for(var1 = 0; var1 < 32; ++var1) { + Class163_Sub1.aLongArray2986[var1] = 0L; + } + + for(var1 = 0; var1 < 32; ++var1) { + Class134.aLongArray1766[var1] = 0L; + } + + Class133.anInt1754 = 0; + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "ta.O(" + true + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class77.java b/Client/src/main/java/org/runite/client/Class77.java new file mode 100644 index 000000000..cd14b950d --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class77.java @@ -0,0 +1,44 @@ +package org.runite.client; + +final class Class77 { + + static int anInt1111; + + + static LDIndexedSprite method1364() { + try { + LDIndexedSprite var1 = new LDIndexedSprite(Class3_Sub15.anInt2426, Class133.anInt1748, Class164.anIntArray2048[0], Unsorted.anIntArray2591[0], GroundItem.anIntArray2931[0], Unsorted.anIntArray3076[0], Class163_Sub1.aByteArrayArray2987[0], TextureOperation38.spritePalette); + + Class39.method1035((byte) 127); + return var1; + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "kh.B(" + (byte) 82 + ')'); + } + } + + static void method1367(int var0, int var1, int var2, byte var3, int var4, int var5) { + try { + TextureOperation18.method282(Class38.anIntArrayArray663[var2++], var5, 92, var1, var0); + TextureOperation18.method282(Class38.anIntArrayArray663[var4--], var5, 97, var1, var0); + if (var3 >= 23) { + for (int var6 = var2; var4 >= var6; ++var6) { + int[] var7 = Class38.anIntArrayArray663[var6]; + var7[var5] = var7[var1] = var0; + } + + } + } catch (RuntimeException var8) { + throw ClientErrorException.clientError(var8, "kh.A(" + var0 + ',' + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + var5 + ')'); + } + } + + static void method1368() { + try { + TextureOperation12.outgoingBuffer.putOpcode(104); + TextureOperation12.outgoingBuffer.writeLong(0L); + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "kh.D(" + -90 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class78.java b/Client/src/main/java/org/runite/client/Class78.java new file mode 100644 index 000000000..38429cfb3 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class78.java @@ -0,0 +1,199 @@ +package org.runite.client; + +final class Class78 { + + private static final byte[] aByteArray1117 = new byte[]{(byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 2, (byte) 0, (byte) 1, (byte) 2, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0}; + private final DataBuffer aClass3_Sub30_1113 = new DataBuffer(null); + int[] anIntArray1114; + int anInt1116; + private int[] anIntArray1115; + private int[] anIntArray1118; + private long aLong1119; + private int[] anIntArray1120; + private int anInt1121; + + + public Class78() { + } + + Class78(byte[] var1) { + this.method1380(var1); + } + + final long method1370(int var1) { + return this.aLong1119 + (long) var1 * (long) this.anInt1121; + } + + final boolean method1371() { + int var1 = this.anIntArray1115.length; + + for (int var2 = 0; var2 < var1; ++var2) { + if (this.anIntArray1115[var2] >= 0) { + return false; + } + } + + return true; + } + + final void method1372(long var1) { + this.aLong1119 = var1; + int var3 = this.anIntArray1115.length; + + for (int var4 = 0; var4 < var3; ++var4) { + this.anIntArray1114[var4] = 0; + this.anIntArray1120[var4] = 0; + this.aClass3_Sub30_1113.index = this.anIntArray1118[var4]; + this.method1377(var4); + this.anIntArray1115[var4] = this.aClass3_Sub30_1113.index; + } + + } + + final boolean method1373() { + return this.aClass3_Sub30_1113.buffer != null; + } + + final int method1374() { + return this.anIntArray1115.length; + } + + final int method1375(int var1) { + return this.method1379(var1); + } + + final void method1376(int var1) { + this.aClass3_Sub30_1113.index = this.anIntArray1115[var1]; + } + + final void method1377(int var1) { + int var2 = this.aClass3_Sub30_1113.method741(); + this.anIntArray1114[var1] += var2; + } + + private int method1378(int var1, int var2) { + int var4; + if (var2 == 255) { + int var7 = this.aClass3_Sub30_1113.readUnsignedByte(); + var4 = this.aClass3_Sub30_1113.method741(); + if (var7 == 47) { + this.aClass3_Sub30_1113.index += var4; + return 1; + } else if (var7 == 81) { + int var5 = this.aClass3_Sub30_1113.readMedium(); + var4 -= 3; + int var6 = this.anIntArray1114[var1]; + this.aLong1119 += (long) var6 * (long) (this.anInt1121 - var5); + this.anInt1121 = var5; + this.aClass3_Sub30_1113.index += var4; + return 2; + } else { + this.aClass3_Sub30_1113.index += var4; + return 3; + } + } else { + byte var3 = aByteArray1117[var2 - 128]; + var4 = var2; + if (var3 >= 1) { + var4 = var2 | this.aClass3_Sub30_1113.readUnsignedByte() << 8; + } + + if (var3 >= 2) { + var4 |= this.aClass3_Sub30_1113.readUnsignedByte() << 16; + } + + return var4; + } + } + + private int method1379(int var1) { + byte var2 = this.aClass3_Sub30_1113.buffer[this.aClass3_Sub30_1113.index]; + int var5; + if (var2 < 0) { + var5 = var2 & 0xFF; + this.anIntArray1120[var1] = var5; + ++this.aClass3_Sub30_1113.index; + } else { + var5 = this.anIntArray1120[var1]; + } + + if (var5 == 240 || var5 == 247) { + int var3 = this.aClass3_Sub30_1113.method741(); + if (var5 == 247 && var3 > 0) { + int var4 = this.aClass3_Sub30_1113.buffer[this.aClass3_Sub30_1113.index] & 0xFF; + if (var4 >= 241 && var4 <= 243 || var4 == 246 || var4 == 248 || var4 >= 250 && var4 <= 252 || var4 == 254) { + ++this.aClass3_Sub30_1113.index; + this.anIntArray1120[var1] = var4; + return this.method1378(var1, var4); + } + } + + this.aClass3_Sub30_1113.index += var3; + return 0; + } else { + return this.method1378(var1, var5); + } + } + + final void method1380(byte[] var1) { + this.aClass3_Sub30_1113.buffer = var1; + this.aClass3_Sub30_1113.index = 10; + int var2 = this.aClass3_Sub30_1113.readUnsignedShort(); + this.anInt1116 = this.aClass3_Sub30_1113.readUnsignedShort(); + this.anInt1121 = 500000; + this.anIntArray1118 = new int[var2]; + + int var3; + int var5; + for (var3 = 0; var3 < var2; this.aClass3_Sub30_1113.index += var5) { + int var4 = this.aClass3_Sub30_1113.readInt(); + var5 = this.aClass3_Sub30_1113.readInt(); + if (var4 == 1297379947) { + this.anIntArray1118[var3] = this.aClass3_Sub30_1113.index; + ++var3; + } + } + + this.aLong1119 = 0L; + this.anIntArray1115 = new int[var2]; + + for (var3 = 0; var3 < var2; ++var3) { + this.anIntArray1115[var3] = this.anIntArray1118[var3]; + } + + this.anIntArray1114 = new int[var2]; + this.anIntArray1120 = new int[var2]; + } + + final void method1381(int var1) { + this.anIntArray1115[var1] = this.aClass3_Sub30_1113.index; + } + + final int method1382() { + int var1 = this.anIntArray1115.length; + int var2 = -1; + int var3 = Integer.MAX_VALUE; + + for (int var4 = 0; var4 < var1; ++var4) { + if (this.anIntArray1115[var4] >= 0 && this.anIntArray1114[var4] < var3) { + var2 = var4; + var3 = this.anIntArray1114[var4]; + } + } + + return var2; + } + + final void method1383() { + this.aClass3_Sub30_1113.buffer = null; + this.anIntArray1118 = null; + this.anIntArray1115 = null; + this.anIntArray1114 = null; + this.anIntArray1120 = null; + } + + final void method1384() { + this.aClass3_Sub30_1113.index = -1; + } + +} diff --git a/Client/src/main/java/org/runite/client/Class8.java b/Client/src/main/java/org/runite/client/Class8.java new file mode 100644 index 000000000..29db35374 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class8.java @@ -0,0 +1,206 @@ +package org.runite.client; + +import java.util.Objects; + +public final class Class8 { + + static RSInterface[] aClass11Array1836; + static int anInt101; + public static int anInt104 = 0; + static CacheIndex configurationReferenceCache; + private final Js5Worker aJs5Worker_102; + private final CacheResourceWorker aCacheResourceWorker_103; + private DataBuffer aClass3_Sub30_99; + private Js5ResourceRequest aJs5ResourceRequest_100; + private Class151_Sub1[] aClass151_Sub1Array107; + + + Class8(Js5Worker var1, CacheResourceWorker var2) { + try { + this.aCacheResourceWorker_103 = var2; + this.aJs5Worker_102 = var1; + if (!this.aJs5Worker_102.priorityRequestsFull()) { + this.aJs5ResourceRequest_100 = this.aJs5Worker_102.request(255, 255, (byte) 0, true); + } + + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "al.(" + (var1 != null ? "{...}" : "null") + ',' + (var2 != null ? "{...}" : "null") + ')'); + } + } + + static void method841() { + try { + aClass11Array1836 = null; + TextureOperation12.method171(-101, ConfigInventoryDefinition.anInt3655, 0, Class23.canvasWidth, 0, -1, GroundItem.canvasHeight, 0, 0); + if (aClass11Array1836 != null) { + Unsorted.method1095(0, Unsorted.anInt1082, Unsorted.anInt3602, aClass11Array1836, Class23.canvasWidth, -1412584499, 0, GroundItem.canvasHeight, (byte) 73, PacketParser.aClass11_88.anInt292); + aClass11Array1836 = null; + } + + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "al.G(" + true + ')'); + } + } + + static CacheIndex getCacheIndex(boolean var0, boolean var1, boolean var2, int var3) { + try { + Class41 var5 = null; + if (null != Class101.aClass30_1422) { + var5 = new Class41(var3, Class101.aClass30_1422, Class163_Sub2.aClass30Array2998[var3], 1000000); + } + + Unsorted.aClass151_Sub1Array2601[var3] = Unsorted.aClass8_1936.method839(var3, AtmosphereParser.aClass41_1186, var5); + if (var1) { + Unsorted.aClass151_Sub1Array2601[var3].method2101(); + } + return new CacheIndex(Unsorted.aClass151_Sub1Array2601[var3], var0, var2); + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "al.B(" + var0 + ',' + var1 + ',' + var2 + ',' + var3 + ',' + true + ')'); + } + } + + static Class75_Sub1 method843(int var0, DataBuffer var1) { + try { + return var0 != -5232 ? null : new Class75_Sub1(var1.readSignedShort(), var1.readSignedShort(), var1.readSignedShort(), var1.readSignedShort(), var1.readMedium(), var1.readUnsignedByte()); + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "al.D(" + var0 + ',' + (var1 != null ? "{...}" : "null") + ')'); + } + } + + static void method844(byte var0) { + try { + if (var0 != -9) { + TextCore.aString_106 = null; + } + + if (null == TextureOperation23.anIntArray3212 || null == Class75_Sub2.anIntArray2639) { + TextureOperation23.anIntArray3212 = new int[256]; + Class75_Sub2.anIntArray2639 = new int[256]; + + for (int var1 = 0; 256 > var1; ++var1) { + double var2 = (double) var1 / 255.0D * 6.283185307179586D; + TextureOperation23.anIntArray3212[var1] = (int) (Math.sin(var2) * 4096.0D); + Class75_Sub2.anIntArray2639[var1] = (int) (4096.0D * Math.cos(var2)); + } + } + + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "al.C(" + var0 + ')'); + } + } + + static void method845(boolean var0) { + try { + if (var0 == !Class139.aBoolean1827) { + Class139.aBoolean1827 = var0; + + WaterfallShader.method1626((byte) -126); + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "al.H(" + var0 + ',' + 255 + ')'); + } + } + + static boolean method846(int var0, int var1, int var2) { + int var3 = Class81.anIntArrayArrayArray1142[var0][var1][var2]; + if (var3 == -Class3_Sub28_Sub1.anInt3539) { + return false; + } else if (var3 == Class3_Sub28_Sub1.anInt3539) { + return true; + } else { + int var4 = var1 << 7; + int var5 = var2 << 7; + if (TextureOperation10.method349(var4 + 1, Class44.anIntArrayArrayArray723[var0][var1][var2], var5 + 1) && TextureOperation10.method349(var4 + 128 - 1, Class44.anIntArrayArrayArray723[var0][var1 + 1][var2], var5 + 1) && TextureOperation10.method349(var4 + 128 - 1, Class44.anIntArrayArrayArray723[var0][var1 + 1][var2 + 1], var5 + 128 - 1) && TextureOperation10.method349(var4 + 1, Class44.anIntArrayArrayArray723[var0][var1][var2 + 1], var5 + 128 - 1)) { + Class81.anIntArrayArrayArray1142[var0][var1][var2] = Class3_Sub28_Sub1.anInt3539; + return true; + } else { + Class81.anIntArrayArrayArray1142[var0][var1][var2] = -Class3_Sub28_Sub1.anInt3539; + return false; + } + } + } + + final boolean method837() { + try { + if (null == this.aClass3_Sub30_99) { + + if (this.aJs5ResourceRequest_100 == null) { + if (this.aJs5Worker_102.priorityRequestsFull()) { + return false; + } + + this.aJs5ResourceRequest_100 = this.aJs5Worker_102.request(255, 255, (byte) 0, true); + } + + if (this.aJs5ResourceRequest_100.waiting) { + return false; + } else { + this.aClass3_Sub30_99 = new DataBuffer(this.aJs5ResourceRequest_100.getData()); + this.aClass151_Sub1Array107 = new Class151_Sub1[(this.aClass3_Sub30_99.buffer.length + -5) / 8]; + return true; + } + } else { + return true; + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "al.J(" + 255 + ')'); + } + } + + final void method838() { + try { + if (null != this.aClass151_Sub1Array107) { + int var2; + for (var2 = 0; var2 < this.aClass151_Sub1Array107.length; ++var2) { + if (this.aClass151_Sub1Array107[var2] != null) { + this.aClass151_Sub1Array107[var2].method2110(); + } + } + + for (var2 = 0; this.aClass151_Sub1Array107.length > var2; ++var2) { + if (this.aClass151_Sub1Array107[var2] != null) { + this.aClass151_Sub1Array107[var2].method2107(); + } + } + + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "al.E(" + (byte) -70 + ')'); + } + } + + private Class151_Sub1 method839(int var2, Class41 var3, Class41 var4) { + try { + + return this.method847(var4, var2, var3); + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "al.L(" + -1824885439 + ',' + var2 + ',' + (var3 != null ? "{...}" : "null") + ',' + (var4 != null ? "{...}" : "null") + ')'); + } + } + + private Class151_Sub1 method847(Class41 var1, int var3, Class41 var5) { + try { + if (null == this.aClass3_Sub30_99) { + throw new RuntimeException(); + } else { + this.aClass3_Sub30_99.index = 5 + var3 * 8; + if (this.aClass3_Sub30_99.buffer.length > this.aClass3_Sub30_99.index) { + if (null == this.aClass151_Sub1Array107[var3]) { + int var6 = this.aClass3_Sub30_99.readInt(); + int var7 = this.aClass3_Sub30_99.readInt(); + Class151_Sub1 var8 = new Class151_Sub1(var3, var1, var5, this.aJs5Worker_102, this.aCacheResourceWorker_103, var6, var7); + this.aClass151_Sub1Array107[var3] = var8; + return var8; + } else { + return this.aClass151_Sub1Array107[var3]; + } + } else { + throw new RuntimeException(); + } + } + } catch (RuntimeException var9) { + throw ClientErrorException.clientError(var9, "al.A(" + (var1 != null ? "{...}" : "null") + ',' + -125 + ',' + var3 + ',' + true + ',' + (var5 != null ? "{...}" : "null") + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class80.java b/Client/src/main/java/org/runite/client/Class80.java new file mode 100644 index 000000000..69e4d93ce --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class80.java @@ -0,0 +1,40 @@ +package org.runite.client; + +import org.rs09.client.Linkable; +import org.rs09.client.data.HashTable; + +final class Class80 { + + private final HashTable table; + private Linkable aClass3_1130; + private int anInt1132 = 0; + + Class80(HashTable var1) { + this.table = var1; + } + + @SuppressWarnings("unchecked") + final T method1392() { + Linkable var2; + if (this.anInt1132 > 0 && this.table.getBuckets()[this.anInt1132 + -1] != this.aClass3_1130) { + var2 = this.aClass3_1130; + } else { + do { + if (this.anInt1132 >= this.table.getCapacity()) { + return null; + } + + var2 = this.table.getBuckets()[this.anInt1132++].next; + } while (var2 == this.table.getBuckets()[-1 + this.anInt1132]); + + } + this.aClass3_1130 = var2.next; + return (T) var2; + } + + final T method1393() { + this.anInt1132 = 0; + return this.method1392(); + } + +} diff --git a/Client/src/main/java/org/runite/client/Class81.java b/Client/src/main/java/org/runite/client/Class81.java new file mode 100644 index 000000000..9ae020c04 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class81.java @@ -0,0 +1,171 @@ +package org.runite.client; + +import org.rs09.client.data.Queue; + +import java.awt.event.ActionEvent; +import java.io.IOException; +import java.util.Objects; + +final class Class81 { + + static Queue aClass13_1139 = new Queue(); + static int[][][] anIntArrayArrayArray1142; + + + static void putRandomDataFile(DataBuffer var0, boolean var1) { + try { + if (!var1) { + anIntArrayArrayArray1142 = null; + } + + byte[] var2 = new byte[24]; + if (null != Unsorted.aClass30_1039) { + try { + Unsorted.aClass30_1039.method984(-41, 0L); + Unsorted.aClass30_1039.method982(var2); + + int var3; + for (var3 = 0; var3 < 24 && var2[var3] == 0; ++var3) { + } + + if (var3 >= 24) { + throw new IOException(); + } + } catch (Exception var5) { + for (int var4 = 0; 24 > var4; ++var4) { + var2[var4] = -1; + } + } + } + + var0.putBytes(var2, 24); + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "la.G(" + (var0 != null ? "{...}" : "null") + ',' + var1 + ')'); + } + } + + static int method1398(Player var1) { + try { + + int var2 = var1.anInt3963; + RenderAnimationDefinition var3 = var1.getRenderAnimationType(); + if (var1.anInt2764 == var3.stand_animation) { + var2 = var1.anInt3952; + } else if (var3.run_anim != var1.anInt2764 && var1.anInt2764 != var3.run_follow_full_turn_anim && var1.anInt2764 != var3.run_follow_cw_turn_anim && var3.run_follow_ccw_turn_anim != var1.anInt2764) { + if (var3.slow_walk_anim == var1.anInt2764 || var3.slow_walk_follow_full_turn_anim == var1.anInt2764 || var1.anInt2764 == var3.slow_walk_follow_cw_turn_anim || var3.slow_walk_follow_ccw_turn_anim == var1.anInt2764) { + var2 = var1.anInt3966; + } + } else { + var2 = var1.anInt3973; + } + + return var2; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "la.A(" + 0 + ',' + (var1 != null ? "{...}" : "null") + ')'); + } + } + + static void friendsIgnoreListAlerts(long var1) { + try { + if (var1 != 0L) { + if (Class3_Sub28_Sub5.anInt3591 < 100) { + RSString var4 = Objects.requireNonNull(Unsorted.method1052(var1)).longToRSString(); + + int var5; + for (var5 = 0; var5 < Class3_Sub28_Sub5.anInt3591; ++var5) { + if (Class114.ignores[var5] == var1) { + BufferedDataStream.addChatMessage(RSString.parse(""), 0, RSString.stringCombiner(new RSString[]{var4, TextCore.HasIgnoreAlready}), -1); + return; + } + } + + for (var5 = 0; Class8.anInt104 > var5; ++var5) { + if (var1 == Class50.aLongArray826[var5]) { + BufferedDataStream.addChatMessage(RSString.parse(""), 0, RSString.stringCombiner(new RSString[]{TextCore.HasPleaseRemove, var4, TextCore.HasFriendsToIgnore}), -1); + return; + } + } + + if (var4.equalsString(Class102.player.displayName)) { + BufferedDataStream.addChatMessage(RSString.parse(""), 0, TextCore.HasOnOwnIgnoreList, -1); + } else { + Class114.ignores[Class3_Sub28_Sub5.anInt3591] = var1; + TextureOperation7.aStringArray3341[Class3_Sub28_Sub5.anInt3591++] = Unsorted.method1052(var1); + Class110.anInt1472 = PacketParser.anInt3213; + TextureOperation12.outgoingBuffer.putOpcode(34); + TextureOperation12.outgoingBuffer.writeLong(var1); + } + } else { + BufferedDataStream.addChatMessage(RSString.parse(""), 0, TextCore.HasIgnoreListFull, -1); + } + } + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "la.B(" + 32 + ',' + var1 + ')'); + } + } + + static void method1400(Signlink var0, Object var1, int var2) { + try { + if (var2 >= -29) { + anIntArrayArrayArray1142 = null; + } + + if (null != var0.systemEventQueue) { + for (int var3 = 0; var3 < 50 && null != var0.systemEventQueue.peekEvent(); ++var3) { + TimeUtils.sleep(1L); + } + + if (var1 != null) { + var0.systemEventQueue.postEvent(new ActionEvent(var1, 1001, "dummy")); + } + + } + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "la.E(" + (var0 != null ? "{...}" : "null") + ',' + (var1 != null ? "{...}" : "null") + ',' + var2 + ')'); + } + } + + static Class57 method1401(int var1) { + try { + Class57 var2 = (Class57) Class128.aReferenceCache_1683.get(var1); + if (var2 == null) { + byte[] var3 = Class46.configurationsIndex737.getFile(31, var1); + var2 = new Class57(); + if (var3 != null) { + var2.method1190(new DataBuffer(var3), var1); + } + + Class128.aReferenceCache_1683.put(var2, var1); + } + return var2; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "la.D(" + 1001 + ',' + var1 + ')'); + } + } + + static Class131 getWorldMapArchive(RSString var1, CacheIndex var2) { + try { + int var3 = var2.getArchiveForName(var1); + if (var3 == -1) { + return new Class131(0); + } else { + int[] var4 = var2.getFileIds(var3); + Class131 var5 = new Class131(Objects.requireNonNull(var4).length); + + for (int var6 = 0; var5.anInt1720 > var6; ++var6) { + DataBuffer var7 = new DataBuffer(var2.getFile(var3, var4[var6])); + var5.aStringArray1721[var6] = var7.readString(); + var5.aByteArray1730[var6] = var7.readSignedByte(); + var5.xArray1727[var6] = (short) var7.readUnsignedShort(); + var5.yArray1718[var6] = (short) var7.readUnsignedShort(); + var5.anIntArray1725[var6] = var7.readInt(); + } + + return var5; + } + } catch (RuntimeException var8) { + throw ClientErrorException.clientError(var8, "la.C(" + (var1 != null ? "{...}" : "null") + ',' + (var2 != null ? "{...}" : "null") + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class83.java b/Client/src/main/java/org/runite/client/Class83.java new file mode 100644 index 000000000..f00f89c8f --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class83.java @@ -0,0 +1,1056 @@ +package org.runite.client; + +import org.rs09.client.data.HashTable; +import org.rs09.client.rendering.Toolkit; + +public final class Class83 { + + static int[] anIntArray1161; + private final CacheIndex soundFXIndex_1153; + private final HashTable aHashTable_1155 = new HashTable(256); + private final CacheIndex soundFX2Index_1157; + private final HashTable aHashTable_1159 = new HashTable(256); + + + Class83(CacheIndex var1, CacheIndex var2) { + try { + this.soundFXIndex_1153 = var1; + this.soundFX2Index_1157 = var2; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "le.(" + (var1 != null ? "{...}" : "null") + ',' + (var2 != null ? "{...}" : "null") + ')'); + } + } + + static void method1410(int var0, int var2, int var3, int var4, int var5, int var6, int var7, int var8) { + try { + int var11 = var4 - var6; + int var12 = -var3 + var2; + if (Class23.anInt455 > var4) { + ++var11; + } + + if (Class108.anInt1460 > var2) { + ++var12; + } + + int var13; + int var14; + int var15; + int var17; + int var16; + int var19; + int var21; + int var20; + int var22; + int var25; + int var24; + int var26; + int var28; + int var31; + int var30; + int var32; + int var33; + int[][] var41; + for (var13 = 0; var13 < var11; ++var13) { + var14 = var13 * var8 >> 16; + var15 = (var13 + 1) * var8 >> 16; + var16 = -var14 + var15; + if (var16 > 0) { + var17 = var13 - -var6 >> 6; + if (0 <= var17 && var17 <= Class146.anIntArrayArrayArray1903.length + -1) { + var14 += var5; + var41 = Class146.anIntArrayArrayArray1903[var17]; + byte[][] var45 = RenderAnimationDefinition.aByteArrayArrayArray383[var17]; + byte[][] var42 = Class3_Sub10.aByteArrayArrayArray2339[var17]; + byte[][] var23 = Class36.aByteArrayArrayArray640[var17]; + byte[][] var43 = CS2Script.aByteArrayArrayArray2452[var17]; + var15 += var5; + byte[][] var46 = TextureOperation29.aByteArrayArrayArray3390[var17]; + + for (var24 = 0; var12 > var24; ++var24) { + var25 = var7 * var24 >> 16; + var26 = - -((1 + var24) * var7) >> 16; + int var27 = -var25 + var26; + if (var27 > 0) { + var26 += var0; + var28 = var3 + var24 >> 6; + int var29 = 63 & var3 + var24; + var25 += var0; + var30 = var13 + var6 & 63; + var31 = (var29 << 6) + var30; + if (0 <= var28 && var41.length + -1 >= var28 && null != var41[var28]) { + var32 = var41[var28][var31]; + } else { + if (Unsorted.aClass3_Sub28_Sub3_2600.anInt3550 == -1) { + if ((var6 + var13 & 4) == (4 & var24 + var3)) { + var32 = anIntArray1161[1 + TextureOperation26.anInt3081]; + } else { + var32 = 4936552; + } + } else { + var32 = Unsorted.aClass3_Sub28_Sub3_2600.anInt3550; + } + + if (var28 < 0 || var28 > var41.length + -1) { + if (var32 == 0) { + var32 = 1; + } + + Toolkit.JAVA_TOOLKIT.method934(var14, var25, var16, var27, var32); + continue; + } + } + + var33 = var45[var28] == null ? 0 : anIntArray1161[var45[var28][var31] & 0xFF]; + if (var32 == 0) { + var32 = 1; + } + + int var34 = var46[var28] != null ? anIntArray1161[255 & var46[var28][var31]] : 0; + int var36; + if (var33 == 0 && var34 == 0) { + Toolkit.JAVA_TOOLKIT.method934(var14, var25, var16, var27, var32); + } else { + byte var35; + if (0 != var33) { + if (var33 == -1) { + var33 = 1; + } + + var35 = var42[var28] != null ? var42[var28][var31] : 0; + var36 = var35 & 252; + if (var36 != 0 && var16 > 1 && var27 > 1) { + method2272(Toolkit.JAVA_TOOLKIT.getBuffer(), var33, var14, var35 & 3, var32, var36 >> 2, var27, var16, var25, true); + } else { + Toolkit.JAVA_TOOLKIT.method934(var14, var25, var16, var27, var33);//Remember! If it's a SPECIFIC JAVA_TOOLKIT CALL THERE IS A REASON + } + } + + if (var34 != 0) { + if (var34 == -1) { + var34 = var32; + } + + var35 = var43[var28][var31]; + var36 = 252 & var35; + if (var36 == 0 || var16 <= 1 || 1 >= var27) { + Toolkit.JAVA_TOOLKIT.method934(var14, var25, var16, var27, var34);//Remember! If it's a SPECIFIC JAVA_TOOLKIT CALL THERE IS A REASON + } + + method2272(Toolkit.JAVA_TOOLKIT.getBuffer(), var34, var14, var35 & 3, 0, var36 >> 2, var27, var16, var25, var33 == 0); + } + } + + if (var23[var28] != null) { + int var49 = var23[var28][var31] & 0xFF; + if (var49 != 0) { + if (1 == var16) { + var36 = var14; + } else { + var36 = var15 - 1; + } + + int var37; + if (1 == var27) { + var37 = var25; + } else { + var37 = -1 + var26; + } + + int var38 = 13421772; + if (5 <= var49 && 8 >= var49 || var49 >= 13 && 16 >= var49 || 21 <= var49 && var49 <= 24 || var49 == 27 || 28 == var49) { + var38 = 13369344; + var49 -= 4; + } + + if (1 == var49) { + Toolkit.JAVA_TOOLKIT.drawVerticalLine(var14, var25, var27, var38); +// Class74.drawVerticalLine(var14, var25, var27, var38); + } else if (2 == var49) { + Toolkit.JAVA_TOOLKIT.drawHorizontalLine(var14, var25, var16, var38); +// Class74.drawHorizontalLine(var14, var25, var16, var38); + } else if (3 == var49) { + Toolkit.JAVA_TOOLKIT.drawVerticalLine(var36, var25, var27, var38); +// Class74.drawVerticalLine(var36, var25, var27, var38); + } else if (var49 == 4) { + Toolkit.JAVA_TOOLKIT.drawHorizontalLine(var14, var37, var16, var38); +// Class74.drawHorizontalLine(var14, var37, var16, var38); + } else if (var49 == 9) { + Toolkit.JAVA_TOOLKIT.drawVerticalLine(var14, var25, var27, 16777215); + Toolkit.JAVA_TOOLKIT.drawHorizontalLine(var14, var25, var16, var38); +// Class74.drawVerticalLine(var14, var25, var27, 16777215); +// Class74.drawHorizontalLine(var14, var25, var16, var38); + } else if (var49 == 10) { + Toolkit.JAVA_TOOLKIT.drawVerticalLine(var36, var25, var27, 16777215); + Toolkit.JAVA_TOOLKIT.drawHorizontalLine(var14, var25, var16, var38); +// Class74.drawVerticalLine(var36, var25, var27, 16777215); +// Class74.drawHorizontalLine(var14, var25, var16, var38); + } else if (var49 == 11) { + Toolkit.JAVA_TOOLKIT.drawVerticalLine(var36, var25, var27, 16777215); + Toolkit.JAVA_TOOLKIT.drawHorizontalLine(var14, var37, var16, var38); +// Class74.drawVerticalLine(var36, var25, var27, 16777215); +// Class74.drawHorizontalLine(var14, var37, var16, var38); + } else if (var49 == 12) { + Toolkit.JAVA_TOOLKIT.drawVerticalLine(var14, var25, var27, 16777215); + Toolkit.JAVA_TOOLKIT.drawHorizontalLine(var14, var37, var16, var38); +// Class74.drawVerticalLine(var14, var25, var27, 16777215); +// Class74.drawHorizontalLine(var14, var37, var16, var38); + } else if (var49 == 17) { + Toolkit.JAVA_TOOLKIT.drawHorizontalLine(var14, var25, 1, var38); +// Class74.drawHorizontalLine(var14, var25, 1, var38); + } else if (var49 == 18) { + Toolkit.JAVA_TOOLKIT.drawHorizontalLine(var36, var25, 1, var38); +// Class74.drawHorizontalLine(var36, var25, 1, var38); + } else if (var49 == 19) { + Toolkit.JAVA_TOOLKIT.drawHorizontalLine(var36, var37, 1, var38); +// Class74.drawHorizontalLine(var36, var37, 1, var38); + } else if (var49 == 20) { + Toolkit.JAVA_TOOLKIT.drawHorizontalLine(var14, var37, 1, var38); +// Class74.drawHorizontalLine(var14, var37, 1, var38); + } else { + int var39; + if (25 == var49) { + for (var39 = 0; var27 > var39; ++var39) { + Toolkit.JAVA_TOOLKIT.drawHorizontalLine(var39 + var14, -var39 + var37, 1, var38); +// Class74.drawHorizontalLine(var39 + var14, -var39 + var37, 1, var38); + } + } else if (26 == var49) { + for (var39 = 0; var39 < var27; ++var39) { + Toolkit.JAVA_TOOLKIT.drawHorizontalLine(var39 + var14, var25 + var39, 1, var38); +// Class74.drawHorizontalLine(var39 + var14, var25 + var39, 1, var38); + } + } + } + } + } + } + } + } else { + var14 += var5; + + for (int var18 = 0; var18 < var12; ++var18) { + if (-1 != Unsorted.aClass3_Sub28_Sub3_2600.anInt3550) { + var19 = Unsorted.aClass3_Sub28_Sub3_2600.anInt3550; + } else if ((var13 - -var6 & 4) == (4 & var18 + var3)) { + var19 = anIntArray1161[1 + TextureOperation26.anInt3081]; + } else { + var19 = 4936552; + } + + if (var19 == 0) { + var19 = 1; + } + + var20 = (var7 * var18 >> 16) + var0; + var21 = var0 + ((var18 + 1) * var7 >> 16); + var22 = var21 + -var20; + Toolkit.JAVA_TOOLKIT.method934(var14, var20, var16, var22, var19); +// Class74.method934(var14, var20, var16, var22, var19); + } + + } + } + } + + for (var13 = -2; 2 + var11 > var13; ++var13) { + var14 = - -(var13 * var8) >> 16; + var15 = var8 * (var13 + 1) >> 16; + var16 = -var14 + var15; + if (var16 > 0) { + var14 += var5; + var17 = var6 + var13 >> 6; + if (var17 >= 0 && Class29.anIntArrayArrayArray558.length + -1 >= var17) { + var41 = Class29.anIntArrayArrayArray558[var17]; + + for (var19 = -2; var12 - -2 > var19; ++var19) { + var20 = - -(var19 * var7) >> 16; + var21 = - -((var19 + 1) * var7) >> 16; + var22 = var21 + -var20; + if (var22 > 0) { + var20 += var0; + int var44 = var19 - -var3 >> 6; + if (var44 >= 0 && var44 <= -1 + var41.length) { + var24 = ((63 & var3 + var19) << 6) - -(var13 - -var6 & 63); + if (null != var41[var44]) { + var25 = var41[var44][var24]; + var26 = 16383 & var25; + if (var26 != 0) { + var28 = ('\ud228' & var25) >> 14; + MapSceneDefinition var47 = InterfaceWidget.c(-1 + var26); + LDIndexedSprite var48 = var47.getSprite(var28); + if (var48 != null) { + var31 = var22 * var48.height / 4; + var30 = var16 * var48.width / 4; + if (var47.aBoolean69) { + var32 = var25 >> 16 & 15; + var33 = (16103184 & var25) >> 20; + if ((1 & var28) == 1) { + var28 = var32; + var32 = var33; + var33 = var28; + } + + var30 = var16 * var32; + var31 = var22 * var33; + } + + if (var30 != 0 && var31 != 0) { + if (var47.color == 0) { + var48.method1677(var14, -var31 + var20 - -var22, var30, var31); + } else { + var48.method1669(var14, var20 - (var31 - var22), var30, var31, var47.color); + } + } + } + } + } + } + } + } + } + } + } + + } catch (RuntimeException var40) { + throw ClientErrorException.clientError(var40, "le.C(" + var0 + ',' + 0 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + var5 + ',' + var6 + ',' + var7 + ',' + var8 + ',' + 0 + ',' + -12541 + ')'); + } + } + + public static int getWindowType() { + try { + if (TextureOperation30.fullScreenFrame == null) { + if (HDToolKit.highDetail && Class3_Sub15.aBoolean2427) { + return 2; + } else { + return HDToolKit.highDetail ? 1 : 0; + } + } else { + return 3; + } + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "le.D(" + ')'); + } + } + + static void method2272(int[] var0, int var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, boolean var9) { + try { + int var11 = var2; + if (var2 < Toolkit.JAVA_TOOLKIT.clipRight) { + if (Toolkit.JAVA_TOOLKIT.clipLeft > var2) { + var11 = Toolkit.JAVA_TOOLKIT.clipLeft; + } + + int var12 = var7 + var2; + if (Toolkit.JAVA_TOOLKIT.clipLeft < var12) { + if (Toolkit.JAVA_TOOLKIT.clipRight < var12) { + var12 = Toolkit.JAVA_TOOLKIT.clipRight; + } + + int var13 = var8; + if (var8 < Toolkit.JAVA_TOOLKIT.clipBottom) { + int var14 = var8 + var6; + if (Toolkit.JAVA_TOOLKIT.clipTop > var8) { + var13 = Toolkit.JAVA_TOOLKIT.clipTop; + } + + if (var14 > Toolkit.JAVA_TOOLKIT.clipTop) { + int var15 = var11 + Toolkit.JAVA_TOOLKIT.width * var13; + if (var5 == 9) { + var3 = 3 & var3 - -1; + var5 = 1; + } + + int var16 = -var12 + var11 + Toolkit.JAVA_TOOLKIT.width; + var13 -= var8; + int var20 = var6 + -var13; + if (Toolkit.JAVA_TOOLKIT.clipBottom < var14) { + var14 = Toolkit.JAVA_TOOLKIT.clipBottom; + } + + if (var5 == 10) { + var3 = var3 - -3 & 3; + var5 = 1; + } + + var11 -= var2; + int var18 = -var11 + var7; + if (11 == var5) { + var3 = 3 & var3 + 3; + var5 = 8; + } + + var12 -= var2; + int var17 = var7 + -var12; + var14 -= var8; + int var19 = var6 - var14; + int var21; + int var22; + if (var5 != 1) { + if (2 == var5) { + if (var3 == 0) { + for (var21 = var20 + -1; var19 <= var21; --var21) { + for (var22 = var11; var12 > var22; ++var22) { + if (var22 <= var21 >> 1) { + var0[var15] = var1; + } else if (var9) { + var0[var15] = var4; + } + + ++var15; + } + + var15 += var16; + } + + } else if (1 == var3) { + for (var21 = var13; var14 > var21; ++var21) { + for (var22 = var11; var22 < var12; ++var22) { + if (0 <= var15 && var0.length > var15) { + if (var22 >= var21 << 1) { + var0[var15] = var1; + } else if (var9) { + var0[var15] = var4; + } + + ++var15; + } else { + ++var15; + } + } + + var15 += var16; + } + + } else if (var3 == 2) { + for (var21 = var13; var21 < var14; ++var21) { + for (var22 = var18 + -1; var17 <= var22; --var22) { + if (var21 >> 1 >= var22) { + var0[var15] = var1; + } else if (var9) { + var0[var15] = var4; + } + + ++var15; + } + + var15 += var16; + } + + } else if (3 == var3) { + for (var21 = var20 + -1; var19 <= var21; --var21) { + for (var22 = -1 + var18; var17 <= var22; --var22) { + if (var21 << 1 > var22) { + if (var9) { + var0[var15] = var4; + } + } else { + var0[var15] = var1; + } + + ++var15; + } + + var15 += var16; + } + + } + } else if (var5 != 3) { + if (var5 != 4) { + if (var5 != 5) { + if (var5 == 6) { + if (var3 == 0) { + for (var21 = var13; var14 > var21; ++var21) { + for (var22 = var11; var12 > var22; ++var22) { + if (var22 > var7 / 2) { + if (var9) { + var0[var15] = var4; + } + } else { + var0[var15] = var1; + } + + ++var15; + } + + var15 += var16; + } + + return; + } + + if (var3 == 1) { + for (var21 = var13; var14 > var21; ++var21) { + for (var22 = var11; var12 > var22; ++var22) { + if (var21 > var6 / 2) { + if (var9) { + var0[var15] = var4; + } + } else { + var0[var15] = var1; + } + + ++var15; + } + + var15 += var16; + } + + return; + } + + if (2 == var3) { + for (var21 = var13; var14 > var21; ++var21) { + for (var22 = var11; var22 < var12; ++var22) { + if (var22 >= var7 / 2) { + var0[var15] = var1; + } else if (var9) { + var0[var15] = var4; + } + + ++var15; + } + + var15 += var16; + } + + return; + } + + if (var3 == 3) { + for (var21 = var13; var14 > var21; ++var21) { + for (var22 = var11; var12 > var22; ++var22) { + if (var6 / 2 > var21) { + if (var9) { + var0[var15] = var4; + } + } else { + var0[var15] = var1; + } + + ++var15; + } + + var15 += var16; + } + + return; + } + } + + if (7 == var5) { + if (0 == var3) { + for (var21 = var13; var21 < var14; ++var21) { + for (var22 = var11; var22 < var12; ++var22) { + if (var22 <= var21 + -(var6 / 2)) { + var0[var15] = var1; + } else if (var9) { + var0[var15] = var4; + } + + ++var15; + } + + var15 += var16; + } + + return; + } + + if (var3 == 1) { + for (var21 = var20 + -1; var21 >= var19; --var21) { + for (var22 = var11; var12 > var22; ++var22) { + if (var22 > -(var6 / 2) + var21) { + if (var9) { + var0[var15] = var4; + } + } else { + var0[var15] = var1; + } + + ++var15; + } + + var15 += var16; + } + + return; + } + + if (var3 == 2) { + for (var21 = var20 + -1; var21 >= var19; --var21) { + for (var22 = -1 + var18; var22 >= var17; --var22) { + if (var22 > var21 + -(var6 / 2)) { + if (var9) { + var0[var15] = var4; + } + } else { + var0[var15] = var1; + } + + ++var15; + } + + var15 += var16; + } + + return; + } + + if (3 == var3) { + for (var21 = var13; var14 > var21; ++var21) { + for (var22 = -1 + var18; var17 <= var22; --var22) { + if (var21 + -(var6 / 2) >= var22) { + var0[var15] = var1; + } else if (var9) { + var0[var15] = var4; + } + + ++var15; + } + + var15 += var16; + } + + return; + } + } + + if (var5 == 8) { + if (0 == var3) { + for (var21 = var13; var14 > var21; ++var21) { + for (var22 = var11; var22 < var12; ++var22) { + if (-(var6 / 2) + var21 <= var22) { + var0[var15] = var1; + } else if (var9) { + var0[var15] = var4; + } + + ++var15; + } + + var15 += var16; + } + + return; + } + + if (var3 == 1) { + for (var21 = -1 + var20; var21 >= var19; --var21) { + for (var22 = var11; var22 < var12; ++var22) { + if (-(var6 / 2) + var21 > var22) { + if (var9) { + var0[var15] = var4; + } + } else { + var0[var15] = var1; + } + + ++var15; + } + + var15 += var16; + } + + return; + } + + if (var3 == 2) { + for (var21 = var20 - 1; var19 <= var21; --var21) { + for (var22 = -1 + var18; var22 >= var17; --var22) { + if (var21 - var6 / 2 > var22) { + if (var9) { + var0[var15] = var4; + } + } else { + var0[var15] = var1; + } + + ++var15; + } + + var15 += var16; + } + + return; + } + + if (var3 == 3) { + for (var21 = var13; var21 < var14; ++var21) { + for (var22 = -1 + var18; var17 <= var22; --var22) { + if (var21 + -(var6 / 2) > var22) { + if (var9) { + var0[var15] = var4; + } + } else { + var0[var15] = var1; + } + + ++var15; + } + + var15 += var16; + } + + return; + } + } + + } else if (0 == var3) { + for (var21 = var20 + -1; var21 >= var19; --var21) { + for (var22 = -1 + var18; var22 >= var17; --var22) { + if (var21 >> 1 <= var22) { + var0[var15] = var1; + } else if (var9) { + var0[var15] = var4; + } + + ++var15; + } + + var15 += var16; + } + + } else if (1 == var3) { + for (var21 = -1 + var20; var21 >= var19; --var21) { + for (var22 = var11; var22 < var12; ++var22) { + if (var22 > var21 << 1) { + if (var9) { + var0[var15] = var4; + } + } else { + var0[var15] = var1; + } + + ++var15; + } + + var15 += var16; + } + + } else if (var3 == 2) { + for (var21 = var13; var14 > var21; ++var21) { + for (var22 = var11; var22 < var12; ++var22) { + if (var21 >> 1 > var22) { + if (var9) { + var0[var15] = var4; + } + } else { + var0[var15] = var1; + } + + ++var15; + } + + var15 += var16; + } + + } else if (var3 == 3) { + for (var21 = var13; var21 < var14; ++var21) { + for (var22 = var18 + -1; var17 <= var22; --var22) { + if (var21 << 1 >= var22) { + var0[var15] = var1; + } else if (var9) { + var0[var15] = var4; + } + + ++var15; + } + + var15 += var16; + } + + } + } else if (var3 == 0) { + for (var21 = var20 + -1; var21 >= var19; --var21) { + for (var22 = var11; var12 > var22; ++var22) { + if (var22 < var21 >> 1) { + if (var9) { + var0[var15] = var4; + } + } else { + var0[var15] = var1; + } + + ++var15; + } + + var15 += var16; + } + + } else if (1 == var3) { + for (var21 = var13; var21 < var14; ++var21) { + for (var22 = var11; var22 < var12; ++var22) { + if (var22 <= var21 << 1) { + var0[var15] = var1; + } else if (var9) { + var0[var15] = var4; + } + + ++var15; + } + + var15 += var16; + } + + } else if (2 == var3) { + for (var21 = var13; var21 < var14; ++var21) { + for (var22 = var18 + -1; var22 >= var17; --var22) { + if (var21 >> 1 <= var22) { + var0[var15] = var1; + } else if (var9) { + var0[var15] = var4; + } + + ++var15; + } + + var15 += var16; + } + + } else if (var3 == 3) { + for (var21 = -1 + var20; var21 >= var19; --var21) { + for (var22 = -1 + var18; var22 >= var17; --var22) { + if (var22 <= var21 << 1) { + var0[var15] = var1; + } else if (var9) { + var0[var15] = var4; + } + + ++var15; + } + + var15 += var16; + } + + } + } else if (var3 == 0) { + for (var21 = var20 - 1; var21 >= var19; --var21) { + for (var22 = -1 + var18; var17 <= var22; --var22) { + if (var22 <= var21 >> 1) { + var0[var15] = var1; + } else if (var9) { + var0[var15] = var4; + } + + ++var15; + } + + var15 += var16; + } + + } else if (var3 == 1) { + for (var21 = -1 + var20; var19 <= var21; --var21) { + for (var22 = var11; var12 > var22; ++var22) { + if (var22 >= var21 << 1) { + var0[var15] = var1; + } else if (var9) { + var0[var15] = var4; + } + + ++var15; + } + + var15 += var16; + } + + } else if (2 == var3) { + for (var21 = var13; var21 < var14; ++var21) { + for (var22 = var11; var12 > var22; ++var22) { + if (var21 >> 1 >= var22) { + var0[var15] = var1; + } else if (var9) { + var0[var15] = var4; + } + + ++var15; + } + + var15 += var16; + } + + } else if (3 == var3) { + for (var21 = var13; var21 < var14; ++var21) { + for (var22 = var18 - 1; var17 <= var22; --var22) { + if (var22 < var21 << 1) { + if (var9) { + var0[var15] = var4; + } + } else { + var0[var15] = var1; + } + + ++var15; + } + + var15 += var16; + } + + } + } else if (var3 == 0) { + for (var21 = var13; var21 < var14; ++var21) { + for (var22 = var11; var22 < var12; ++var22) { + if (var21 >= var22) { + var0[var15] = var1; + } else if (var9) { + var0[var15] = var4; + } + + ++var15; + } + + var15 += var16; + } + + } else if (1 == var3) { + for (var21 = var20 + -1; var21 >= var19; --var21) { + for (var22 = var11; var22 < var12; ++var22) { + if (var21 >= var22) { + var0[var15] = var1; + } else if (var9) { + var0[var15] = var4; + } + + ++var15; + } + + var15 += var16; + } + + } else if (2 == var3) { + for (var21 = var13; var21 < var14; ++var21) { + for (var22 = var11; var12 > var22; ++var22) { + if (var22 >= var21) { + var0[var15] = var1; + } else if (var9) { + var0[var15] = var4; + } + + ++var15; + } + + var15 += var16; + } + + } else if (var3 == 3) { + for (var21 = var20 + -1; var19 <= var21; --var21) { + for (var22 = var11; var12 > var22; ++var22) { + if (var22 < var21) { + if (var9) { + var0[var15] = var4; + } + } else { + var0[var15] = var1; + } + + ++var15; + } + + var15 += var16; + } + + } + } + } + } + } + } catch (RuntimeException var23) { + throw ClientErrorException.clientError(var23, "wl.C(" + "null" + ',' + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + var5 + ',' + var6 + ',' + var7 + ',' + var8 + ',' + var9 + ',' + (byte) 21 + ')'); + } + } + + private PcmSound method1412(int[] var1, int var3, int var4) { + try { + int var5 = var4 ^ (var3 >>> 12 | var3 << 4 & '\ufff3'); + var5 |= var3 << 16; + long var6 = var5; + PcmSound var8 = (PcmSound) this.aHashTable_1159.get(var6); + if (var8 != null) { + return var8; + } else if (null != var1 && var1[0] <= 0) { + return null; + } else { + SynthSound var9 = SynthSound.create(this.soundFXIndex_1153, var3, var4); + if (null == var9) { + return null; + } else { + var8 = var9.toPCMSound(); + this.aHashTable_1159.put(var6, var8); + if (var1 != null) { + var1[0] -= var8.samples.length; + } + + return var8; + } + } + } catch (RuntimeException var10) { + throw ClientErrorException.clientError(var10, "le.B(" + (var1 != null ? "{...}" : "null") + ',' + 31947 + ',' + var3 + ',' + var4 + ')'); + } + } + + final PcmSound method1413(int var1, int[] var3) { + try { + if (1 == this.soundFXIndex_1153.method2121()) { + return this.method1412(var3, 0, var1); + } else if (this.soundFXIndex_1153.getFileAmount(var1) == 1) { + return this.method1412(var3, var1, 0); + } else { + + throw new RuntimeException(); + } + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "le.A(" + var1 + ',' + 33 + ',' + (var3 != null ? "{...}" : "null") + ')'); + } + } + + private PcmSound method1415(int var1, int[] var2, int var3) { + try { + int var5 = var3 ^ (var1 >>> 12 | '\ufff3' & var1 << 4); + var5 |= var1 << 16; + long var6 = (long) var5 ^ 4294967296L; + PcmSound var8 = (PcmSound) this.aHashTable_1159.get(var6); + if (null != var8) { + return var8; + } else if (var2 != null && var2[0] <= 0) { + return null; + } else { + Class3_Sub14 var9 = (Class3_Sub14) this.aHashTable_1155.get(var6); + if (null == var9) { + var9 = Class3_Sub14.method363(this.soundFX2Index_1157, var1, var3); + if (null == var9) { + return null; + } + + this.aHashTable_1155.put(var6, var9); + } + + var8 = var9.method359(var2); + if (null == var8) { + return null; + } else { + var9.unlink(); + this.aHashTable_1159.put(var6, var8); + + return var8; + } + } + } catch (RuntimeException var10) { + // var10.printStackTrace(); + throw ClientErrorException.clientError(var10, "le.F(" + var1 + ',' + (var2 != null ? "{...}" : "null") + ',' + var3 + ',' + (byte) 11 + ')'); + } + } + + final PcmSound method1416(int var2, int[] var3) { + try { + if (this.soundFX2Index_1157.method2121() == 1) { + return this.method1415(0, var3, var2); + } else if (this.soundFX2Index_1157.getFileAmount(var2) == 1) { + return this.method1415(var2, var3, 0); + } else { + throw new RuntimeException(); + } + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "le.G(" + 10089 + ',' + var2 + ',' + (var3 != null ? "{...}" : "null") + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class84.java b/Client/src/main/java/org/runite/client/Class84.java new file mode 100644 index 000000000..b219c3192 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class84.java @@ -0,0 +1,89 @@ +package org.runite.client; + +public final class Class84 { + + static int[][] anIntArrayArray1160 = new int[104][104]; + static LinkedList aLinkedList_1162 = new LinkedList(); + public static int[] anIntArray1163 = new int[1000]; + static int leftMargin = 0; + static SoftwareSprite aSoftwareSprite_1381; + static int[] anIntArray1729 = new int[]{12543016, 15504954, 15914854, 16773818}; + + static void method1417() { + try { + if (Class143.gameStage == 10 && HDToolKit.highDetail) { + Class117.method1719(28); + } + + if (Class143.gameStage == 30) { + Class117.method1719(25); + } + + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "lf.D(" + ')'); + } + } + + static void method1418(CacheIndex var1) { + try { + Class163_Sub2_Sub1.aClass109_Sub1Array4027 = Unsorted.method619((byte) 65, NPC.anInt4001, var1); + Class52.anIntArray861 = new int[256]; + + int var2; + for (var2 = 0; var2 < 3; ++var2) { + int var4 = (anIntArray1729[1 + var2] & 16711680) >> 16; + float var3 = (float) ((anIntArray1729[var2] & 16711680) >> 16); + float var6 = (float) (anIntArray1729[var2] >> 8 & 0xFF); + float var9 = (float) (anIntArray1729[var2] & 0xFF); + float var5 = ((float) var4 - var3) / 64.0F; + int var7 = (anIntArray1729[var2 + 1] & 65280) >> 8; + float var8 = (-var6 + (float) var7) / 64.0F; + int var10 = anIntArray1729[var2 + 1] & 0xFF; + float var11 = ((float) var10 - var9) / 64.0F; + + for (int var12 = 0; var12 < 64; ++var12) { + Class52.anIntArray861[var12 + 64 * var2] = TextureOperation3.bitwiseOr((int) var9, TextureOperation3.bitwiseOr((int) var6 << 8, (int) var3 << 16)); + var6 += var8; + var9 += var11; + var3 += var5; + } + } + + for (var2 = 192; var2 < 255; ++var2) { + Class52.anIntArray861[var2] = anIntArray1729[3]; + } + + Class161.anIntArray2026 = new int[32768]; + Unsorted.anIntArray49 = new int[32768]; + TextureOperation30.method215((byte) -89, null); + BufferedDataStream.anIntArray3805 = new int[32768]; + Class159.anIntArray1681 = new int[32768]; + aSoftwareSprite_1381 = new SoftwareSprite(128, 254); + } catch (RuntimeException var13) { + throw ClientErrorException.clientError(var13, "lf.E(" + -110 + ',' + (var1 != null ? "{...}" : "null") + ')'); + } + } + + static void method1420(int var0, int var1, int var2, int var3) { + try { + InterfaceWidget var5 = InterfaceWidget.getWidget(10, var0); + var5.flagUpdate(); + var5.anInt3597 = var2; + var5.anInt3598 = var3; + var5.anInt3596 = var1; + + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "lf.C(" + var0 + ',' + var1 + ',' + var2 + ',' + var3 + ',' + (byte) -85 + ')'); + } + } + + static int method1421() { + try { + + return ((TextureOperation17.stereoSound ? 1 : 0) << 19) + (((Class38.aBoolean661 ? 1 : 0) << 16) + ((!Class128.aBoolean1685 ? 0 : 1) << 15) + ((!Class106.aBoolean1441 ? 0 : 1) << 13) + ((Class140_Sub6.aBoolean2910 ? 1 : 0) << 10) + ((Unsorted.aBoolean3275 ? 1 : 0) << 9) + ((RSInterface.aBoolean236 ? 1 : 0) << 7) + ((!Class25.aBoolean488 ? 0 : 1) << 6) + ((KeyboardListener.aBoolean1905 ? 1 : 0) << 5) + (((!Unsorted.aBoolean3665 ? 0 : 1) << 3) + (Unsorted.anInt3625 & 7) - (-((!Unsorted.aBoolean3604 ? 0 : 1) << 4) + -((WorldListEntry.aBoolean2623 ? 1 : 0) << 8)) - (-(Unsorted.anInt1137 << 11 & 6144) + -((AudioHandler.soundEffectVolume == 0 ? 0 : 1) << 20) - (((AudioHandler.musicVolume != 0 ? 1 : 0) << 21) + ((Sprites.ambientVolume == 0 ? 0 : 1) << 22)))) - -(Class127_Sub1.method1757() << 23)); + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "lf.F(" + -2 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class85.java b/Client/src/main/java/org/runite/client/Class85.java new file mode 100644 index 000000000..44c22b930 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class85.java @@ -0,0 +1,42 @@ +package org.runite.client; + +final class Class85 { + + static boolean aBoolean1167 = false; + static CacheIndex objectConfigIndex_1171; + static int anInt1174 = 99; + + + static void method1423(DataBuffer var1, RSString var2) { + try { + byte[] var4 = var2.method1568(); + var1.method768(var4.length); + var1.index += TextureOperation16.aClass36_3112.method1015(var4.length, var1.buffer, var4, 0, var1.index); + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "lg.A(" + false + ',' + (var1 != null ? "{...}" : "null") + ',' + (var2 != null ? "{...}" : "null") + ')'); + } + } + + static AbstractIndexedSprite[] method1424(CacheIndex var0, int var3) { + try { + + return Class75_Sub4.method1351(var0, 0, var3) ? TextureOperation36.method343() : null; + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "lg.C(" + (var0 != null ? "{...}" : "null") + ',' + (byte) -12 + ',' + 0 + ',' + var3 + ')'); + } + } + + static void method1425(int var0) { + TextureOperation22.anInt3419 = var0; + + for (int var1 = 0; var1 < Unsorted.width1234; ++var1) { + for (int var2 = 0; var2 < TextureOperation17.height3179; ++var2) { + if (TileData.aTileDataArrayArrayArray2638[var0][var1][var2] == null) { + TileData.aTileDataArrayArrayArray2638[var0][var1][var2] = new TileData(var0, var1, var2); + } + } + } + + } + +} diff --git a/Client/src/main/java/org/runite/client/Class88.java b/Client/src/main/java/org/runite/client/Class88.java new file mode 100644 index 000000000..fcdb8c62c --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class88.java @@ -0,0 +1,137 @@ +package org.runite.client; + + +import javax.media.opengl.GL; +import java.nio.ByteBuffer; + + +final class Class88 { + + static int[] anIntArray1223 = null; + static int[] anIntArray1224 = null; + static boolean Texture3DEnabled; + static int anInt1228 = -1; + private static ByteBuffer aByteBuffer1225; + private static ByteBuffer aByteBuffer1226; + + static void method1454() { + byte[] var1; + if (aByteBuffer1226 == null) { + Class164_Sub2_Sub1 var0 = new Class164_Sub2_Sub1(); + var1 = var0.method2250(); + aByteBuffer1226 = ByteBuffer.allocateDirect(var1.length); + aByteBuffer1226.position(0); + aByteBuffer1226.put(var1); + aByteBuffer1226.flip(); + } + + if (aByteBuffer1225 == null) { + Class164_Sub1_Sub1 var2 = new Class164_Sub1_Sub1(); + var1 = var2.method2243(); + aByteBuffer1225 = ByteBuffer.allocateDirect(var1.length); + aByteBuffer1225.position(0); + aByteBuffer1225.put(var1); + aByteBuffer1225.flip(); + } + + } + + static void method1455() { + GL var0; + int[] var1; + if (anInt1228 != -1) { + var0 = HDToolKit.gl; + var1 = new int[]{anInt1228}; + var0.glDeleteTextures(1, var1, 0); + anInt1228 = -1; + Class31.anInt580 -= aByteBuffer1226.limit() * 2; + } + + if (anIntArray1224 != null) { + var0 = HDToolKit.gl; + var0.glDeleteTextures(64, anIntArray1224, 0); + anIntArray1224 = null; + Class31.anInt580 -= aByteBuffer1226.limit() * 2; + } + + if (WaterfallShader.waterfallTextureId != -1) { + var0 = HDToolKit.gl; + var1 = new int[]{WaterfallShader.waterfallTextureId}; + var0.glDeleteTextures(1, var1, 0); + WaterfallShader.waterfallTextureId = -1; + Class31.anInt580 -= aByteBuffer1225.limit() * 2; + } + + if (anIntArray1223 != null) { + var0 = HDToolKit.gl; + var0.glDeleteTextures(64, anIntArray1223, 0); + anIntArray1223 = null; + Class31.anInt580 -= aByteBuffer1225.limit() * 2; + } + + } + + static void method1456() { + Texture3DEnabled = HDToolKit.allows3DTextureMapping; + method1454(); + method1458(); + method1459(); + } + + private static void method1458() { + GL var0 = HDToolKit.gl; + if (Texture3DEnabled) { + int[] var1 = new int[1]; + var0.glGenTextures(1, var1, 0); + var0.glBindTexture('\u806f', var1[0]); + aByteBuffer1226.position(0); + var0.glTexImage3D('\u806f', 0, 6410, 64, 64, 64, 0, 6410, 5121, aByteBuffer1226); + var0.glTexParameteri('\u806f', 10241, 9729); + var0.glTexParameteri('\u806f', 10240, 9729); + anInt1228 = var1[0]; + } else { + anIntArray1224 = new int[64]; + var0.glGenTextures(64, anIntArray1224, 0); + + for (int var2 = 0; var2 < 64; ++var2) { + HDToolKit.bindTexture2D(anIntArray1224[var2]); + aByteBuffer1226.position(var2 * 64 * 64 * 2); + var0.glTexImage2D(3553, 0, 6410, 64, 64, 0, 6410, 5121, aByteBuffer1226); + var0.glTexParameteri(3553, 10241, 9729); + var0.glTexParameteri(3553, 10240, 9729); + } + + } + Class31.anInt580 += aByteBuffer1226.limit() * 2; + + } + + private static void method1459() { + GL var0 = HDToolKit.gl; + if (Texture3DEnabled) { + int[] var1 = new int[1]; + var0.glGenTextures(1, var1, 0); + var0.glBindTexture('\u806f', var1[0]); + aByteBuffer1225.position(0); + var0.glTexImage3D('\u806f', 0, 6410, 64, 64, 64, 0, 6410, 5121, aByteBuffer1225); + var0.glTexParameteri('\u806f', 10241, 9729); + var0.glTexParameteri('\u806f', 10240, 9729); + WaterfallShader.waterfallTextureId = var1[0]; + } else { + anIntArray1223 = new int[64]; + var0.glGenTextures(64, anIntArray1223, 0); + + for (int var2 = 0; var2 < 64; ++var2) { + HDToolKit.bindTexture2D(anIntArray1223[var2]); + aByteBuffer1225.position(var2 * 64 * 64 * 2); + var0.glTexImage2D(3553, 0, 6410, 64, 64, 0, 6410, 5121, aByteBuffer1225); + var0.glTexParameteri(3553, 10241, 9729); + var0.glTexParameteri(3553, 10240, 9729); + } + + } + Class31.anInt580 += aByteBuffer1225.limit() * 2; + + } + +} diff --git a/Client/src/main/java/org/runite/client/Class91.java b/Client/src/main/java/org/runite/client/Class91.java new file mode 100644 index 000000000..d2e06a039 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class91.java @@ -0,0 +1,1149 @@ +package org.runite.client; + +final class Class91 { + + static RSString[] aStringArray1299 = new RSString[8]; + static int anInt1302 = 0; + static Class33 aClass33_1305; + static byte aByte1308; + static short[] aShortArray1311; + private final int anInt1300; + private final int anInt1303; + private final int anInt1306; + private final int anInt1309; + int[][] anIntArrayArray1304; + + + Class91() { + try { + this.anInt1303 = 104; + this.anInt1306 = 0; + this.anInt1309 = 0; + this.anInt1300 = 104; + this.anIntArrayArray1304 = new int[this.anInt1300][this.anInt1303]; + this.method1496(); + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "mj.(" + 104 + ',' + 104 + ')'); + } + } + + static boolean method1495(int var0, int var1, int var2, int var3, int var4) { + int var5 = var3 * TextureOperation25.anInt3417 + var0 * Class145.anInt3153 >> 16; + int var6 = var3 * Class145.anInt3153 - var0 * TextureOperation25.anInt3417 >> 16; + int var7 = var1 * Class60.anInt936 + var6 * Unsorted.anInt1037 >> 16; + int var8 = var1 * Unsorted.anInt1037 - var6 * Class60.anInt936 >> 16; + if (var7 < 1) { + var7 = 1; + } + + int var9 = (var5 << 9) / var7; + int var10 = (var8 << 9) / var7; + int var11 = var2 * Class60.anInt936 + var6 * Unsorted.anInt1037 >> 16; + int var12 = var2 * Unsorted.anInt1037 - var6 * Class60.anInt936 >> 16; + if (var11 < 1) { + var11 = 1; + } + + int var13 = (var5 << 9) / var11; + int var14 = (var12 << 9) / var11; + return (var7 >= 50 || var11 >= 50) && ((var7 <= var4 || var11 <= var4) && ((var9 >= Class139.screenLowerX || var13 >= Class139.screenLowerX) && ((var9 <= Class145.screenUpperX || var13 <= Class145.screenUpperX) && ((var10 >= Class1.screenUpperY || var14 >= Class1.screenUpperY) && (var10 <= AtmosphereParser.screenLowerY || var14 <= AtmosphereParser.screenLowerY))))); + } + + final void method1485(int var1, boolean var2, int var4, int var5, int var6) { + try { + var6 -= this.anInt1309; + + var4 -= this.anInt1306; + if (0 == var5) { + if (var1 == 0) { + this.method1501((byte) 114, var4, var6, 128); + this.method1501((byte) 122, var4, var6 + -1, 8); + } + + if (var1 == 1) { + this.method1501((byte) 77, var4, var6, 2); + this.method1501((byte) 105, 1 + var4, var6, 32); + } + + if (var1 == 2) { + this.method1501((byte) 75, var4, var6, 8); + this.method1501((byte) 38, var4, var6 - -1, 128); + } + + if (3 == var1) { + this.method1501((byte) 110, var4, var6, 32); + this.method1501((byte) 26, var4 - 1, var6, 2); + } + } + + if (var5 == 1 || var5 == 3) { + if (var1 == 0) { + this.method1501((byte) 99, var4, var6, 1); + this.method1501((byte) 23, 1 + var4, -1 + var6, 16); + } + + if (var1 == 1) { + this.method1501((byte) 52, var4, var6, 4); + this.method1501((byte) 60, 1 + var4, 1 + var6, 64); + } + + if (var1 == 2) { + this.method1501((byte) 126, var4, var6, 16); + this.method1501((byte) 103, var4 - 1, var6 - -1, 1); + } + + if (var1 == 3) { + this.method1501((byte) 125, var4, var6, 64); + this.method1501((byte) 64, var4 - 1, -1 + var6, 4); + } + } + + if (var5 == 2) { + if (var1 == 0) { + this.method1501((byte) 110, var4, var6, 130); + this.method1501((byte) 78, var4, -1 + var6, 8); + this.method1501((byte) 45, var4 + 1, var6, 32); + } + + if (var1 == 1) { + this.method1501((byte) 93, var4, var6, 10); + this.method1501((byte) 72, var4 - -1, var6, 32); + this.method1501((byte) 23, var4, var6 + 1, 128); + } + + if (2 == var1) { + this.method1501((byte) 33, var4, var6, 40); + this.method1501((byte) 102, var4, var6 + 1, 128); + this.method1501((byte) 102, var4 - 1, var6, 2); + } + + if (var1 == 3) { + this.method1501((byte) 24, var4, var6, 160); + this.method1501((byte) 122, -1 + var4, var6, 2); + this.method1501((byte) 77, var4, var6 + -1, 8); + } + } + + if (var2) { + if (0 == var5) { + if (var1 == 0) { + this.method1501((byte) 24, var4, var6, 65536); + this.method1501((byte) 115, var4, var6 - 1, 4096); + } + + if (var1 == 1) { + this.method1501((byte) 120, var4, var6, 1024); + this.method1501((byte) 110, var4 - -1, var6, 16384); + } + + if (var1 == 2) { + this.method1501((byte) 101, var4, var6, 4096); + this.method1501((byte) 38, var4, 1 + var6, 65536); + } + + if (var1 == 3) { + this.method1501((byte) 31, var4, var6, 16384); + this.method1501((byte) 65, var4 + -1, var6, 1024); + } + } + + if (1 == var5 || var5 == 3) { + if (var1 == 0) { + this.method1501((byte) 47, var4, var6, 512); + this.method1501((byte) 66, 1 + var4, var6 + -1, 8192); + } + + if (var1 == 1) { + this.method1501((byte) 40, var4, var6, 2048); + this.method1501((byte) 88, 1 + var4, var6 - -1, 32768); + } + + if (var1 == 2) { + this.method1501((byte) 96, var4, var6, 8192); + this.method1501((byte) 41, var4 - 1, 1 + var6, 512); + } + + if (var1 == 3) { + this.method1501((byte) 90, var4, var6, 32768); + this.method1501((byte) 47, var4 + -1, var6 + -1, 2048); + } + } + + if (var5 == 2) { + if (var1 == 0) { + this.method1501((byte) 51, var4, var6, 66560); + this.method1501((byte) 82, var4, var6 + -1, 4096); + this.method1501((byte) 68, var4 + 1, var6, 16384); + } + + if (var1 == 1) { + this.method1501((byte) 112, var4, var6, 5120); + this.method1501((byte) 89, 1 + var4, var6, 16384); + this.method1501((byte) 48, var4, 1 + var6, 65536); + } + + if (var1 == 2) { + this.method1501((byte) 126, var4, var6, 20480); + this.method1501((byte) 25, var4, var6 - -1, 65536); + this.method1501((byte) 46, -1 + var4, var6, 1024); + } + + if (var1 == 3) { + this.method1501((byte) 39, var4, var6, 81920); + this.method1501((byte) 113, var4 - 1, var6, 1024); + this.method1501((byte) 86, var4, var6 + -1, 4096); + } + } + } + + } catch (RuntimeException var8) { + throw ClientErrorException.clientError(var8, "mj.L(" + var1 + ',' + var2 + ',' + -104 + ',' + var4 + ',' + var5 + ',' + var6 + ')'); + } + } + + final void method1486(int var1, int var3, boolean var4, int var5, int var6) { + try { + var6 -= this.anInt1309; + var5 -= this.anInt1306; + if (var3 == 0) { + if (0 == var1) { + this.method1490(128, var6, var5); + this.method1490(8, -1 + var6, var5); + } + + if (var1 == 1) { + this.method1490(2, var6, var5); + this.method1490(32, var6, 1 + var5); + } + + if (var1 == 2) { + this.method1490(8, var6, var5); + this.method1490(128, 1 + var6, var5); + } + + if (var1 == 3) { + this.method1490(32, var6, var5); + this.method1490(2, var6, -1 + var5); + } + } + + if (var3 == 1 || var3 == 3) { + if (var1 == 0) { + this.method1490(1, var6, var5); + this.method1490(16, var6 + -1, 1 + var5); + } + + if (var1 == 1) { + this.method1490(4, var6, var5); + this.method1490(64, var6 - -1, var5 + 1); + } + + if (var1 == 2) { + this.method1490(16, var6, var5); + this.method1490(1, 1 + var6, -1 + var5); + } + + if (var1 == 3) { + this.method1490(64, var6, var5); + this.method1490(4, -1 + var6, var5 + -1); + } + } + + if (var3 == 2) { + if (var1 == 0) { + this.method1490(130, var6, var5); + this.method1490(8, -1 + var6, var5); + this.method1490(32, var6, var5 - -1); + } + + if (var1 == 1) { + this.method1490(10, var6, var5); + this.method1490(32, var6, 1 + var5); + this.method1490(128, var6 - -1, var5); + } + + if (var1 == 2) { + this.method1490(40, var6, var5); + this.method1490(128, 1 + var6, var5); + this.method1490(2, var6, var5 + -1); + } + + if (var1 == 3) { + this.method1490(160, var6, var5); + this.method1490(2, var6, -1 + var5); + this.method1490(8, -1 + var6, var5); + } + } + + if (var4) { + if (var3 == 0) { + if (0 == var1) { + this.method1490(65536, var6, var5); + this.method1490(4096, var6 - 1, var5); + } + + if (var1 == 1) { + this.method1490(1024, var6, var5); + this.method1490(16384, var6, var5 + 1); + } + + if (var1 == 2) { + this.method1490(4096, var6, var5); + this.method1490(65536, 1 + var6, var5); + } + + if (var1 == 3) { + this.method1490(16384, var6, var5); + this.method1490(1024, var6, var5 - 1); + } + } + + if (var3 == 1 || var3 == 3) { + if (0 == var1) { + this.method1490(512, var6, var5); + this.method1490(8192, -1 + var6, 1 + var5); + } + + if (var1 == 1) { + this.method1490(2048, var6, var5); + this.method1490(32768, 1 + var6, var5 + 1); + } + + if (var1 == 2) { + this.method1490(8192, var6, var5); + this.method1490(512, var6 - -1, var5 + -1); + } + + if (3 == var1) { + this.method1490(32768, var6, var5); + this.method1490(2048, -1 + var6, var5 - 1); + } + } + + if (2 == var3) { + if (var1 == 0) { + this.method1490(66560, var6, var5); + this.method1490(4096, -1 + var6, var5); + this.method1490(16384, var6, 1 + var5); + } + + if (var1 == 1) { + this.method1490(5120, var6, var5); + this.method1490(16384, var6, var5 - -1); + this.method1490(65536, 1 + var6, var5); + } + + if (var1 == 2) { + this.method1490(20480, var6, var5); + this.method1490(65536, var6 + 1, var5); + this.method1490(1024, var6, -1 + var5); + } + + if (var1 == 3) { + this.method1490(81920, var6, var5); + this.method1490(1024, var6, var5 - 1); + this.method1490(4096, -1 + var6, var5); + } + } + } + + } catch (RuntimeException var8) { + throw ClientErrorException.clientError(var8, "mj.N(" + var1 + ',' + 2 + ',' + var3 + ',' + var4 + ',' + var5 + ',' + var6 + ')'); + } + } + + private boolean method1487(int var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8) { + try { + if (var2 + var3 > var8 && var3 < var1 + var8) { + + return var5 < var4 + var6 && var7 + var5 > var6; + } else { + return false; + } + } catch (RuntimeException var11) { + throw ClientErrorException.clientError(var11, "mj.M(" + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + var5 + ',' + var6 + ',' + var7 + ',' + var8 + ',' + (byte) -125 + ')'); + } + } + + final boolean method1488(int var1, int var2, int var4, int var5, int var6, int var7, int var8) { + try { + if (1 != var7) { + if (var2 <= var5 && var2 + var7 + -1 >= var5 && var7 + var1 + -1 >= var1) { + return true; + } + } else if (var2 == var5 && var4 == var1) { + return true; + } + + if (true) { + var4 -= this.anInt1306; + var5 -= this.anInt1309; + var1 -= this.anInt1306; + var2 -= this.anInt1309; + if (1 == var7) { + if (0 == var6) { + if (var8 == 0) { + if (var5 - 1 == var2 && var4 == var1) { + return true; + } + + if (var2 == var5 && var1 - -1 == var4 && (this.anIntArrayArray1304[var2][var4] & 19661088) == 0) { + return true; + } + + if (var2 == var5 && -1 + var1 == var4 && 0 == (this.anIntArrayArray1304[var2][var4] & 19661058)) { + return true; + } + } else if (1 == var8) { + if (var5 == var2 && var4 == var1 - -1) { + return true; + } + + if (var5 + -1 == var2 && var4 == var1 && 0 == (this.anIntArrayArray1304[var2][var4] & 19661064)) { + return true; + } + + if (var2 == 1 + var5 && var4 == var1 && (this.anIntArrayArray1304[var2][var4] & 19661184) == 0) { + return true; + } + } else if (var8 == 2) { + if (1 + var5 == var2 && var1 == var4) { + return true; + } + + if (var2 == var5 && var4 == 1 + var1 && (this.anIntArrayArray1304[var2][var4] & 19661088) == 0) { + return true; + } + + if (var5 == var2 && var4 == var1 - 1 && (this.anIntArrayArray1304[var2][var4] & 19661058) == 0) { + return true; + } + } else if (var8 == 3) { + if (var2 == var5 && var4 == var1 + -1) { + return true; + } + + if (-1 + var5 == var2 && var4 == var1 && (this.anIntArrayArray1304[var2][var4] & 19661064) == 0) { + return true; + } + + if (var2 == var5 - -1 && var4 == var1 && (this.anIntArrayArray1304[var2][var4] & 19661184) == 0) { + return true; + } + } + } + + if (2 == var6) { + if (var8 == 0) { + if (var2 == var5 - 1 && var1 == var4) { + return true; + } + + if (var5 == var2 && var4 == 1 + var1) { + return true; + } + + if (var2 == 1 + var5 && var1 == var4 && (19661184 & this.anIntArrayArray1304[var2][var4]) == 0) { + return true; + } + + if (var5 == var2 && var4 == var1 + -1 && (this.anIntArrayArray1304[var2][var4] & 19661058) == 0) { + return true; + } + } else if (var8 == 1) { + if (var2 == var5 + -1 && var1 == var4 && 0 == (this.anIntArrayArray1304[var2][var4] & 19661064)) { + return true; + } + + if (var5 == var2 && var4 == var1 + 1) { + return true; + } + + if (var5 + 1 == var2 && var4 == var1) { + return true; + } + + if (var2 == var5 && var4 == -1 + var1 && (19661058 & this.anIntArrayArray1304[var2][var4]) == 0) { + return true; + } + } else if (var8 == 2) { + if (var2 == -1 + var5 && var4 == var1 && (this.anIntArrayArray1304[var2][var4] & 19661064) == 0) { + return true; + } + + if (var5 == var2 && 1 + var1 == var4 && (19661088 & this.anIntArrayArray1304[var2][var4]) == 0) { + return true; + } + + if (var5 - -1 == var2 && var4 == var1) { + return true; + } + + if (var5 == var2 && var1 + -1 == var4) { + return true; + } + } else if (var8 == 3) { + if (var5 - 1 == var2 && var1 == var4) { + return true; + } + + if (var5 == var2 && var1 + 1 == var4 && 0 == (19661088 & this.anIntArrayArray1304[var2][var4])) { + return true; + } + + if (var5 - -1 == var2 && var1 == var4 && (19661184 & this.anIntArrayArray1304[var2][var4]) == 0) { + return true; + } + + if (var5 == var2 && -1 + var1 == var4) { + return true; + } + } + } + + if (9 == var6) { + if (var5 == var2 && var4 == 1 + var1 && 0 == (this.anIntArrayArray1304[var2][var4] & 32)) { + return true; + } + + if (var2 == var5 && -1 + var1 == var4 && (this.anIntArrayArray1304[var2][var4] & 2) == 0) { + return true; + } + + if (var2 == -1 + var5 && var1 == var4 && (this.anIntArrayArray1304[var2][var4] & 8) == 0) { + return true; + } + + return var5 - -1 == var2 && var4 == var1 && (this.anIntArrayArray1304[var2][var4] & 128) == 0; + } + } else { + int var9 = -1 + var7 + var2; + int var10 = -1 + var4 - -var7; + if (var6 == 0) { + if (0 == var8) { + if (-var7 + var5 == var2 && var1 >= var4 && var10 >= var1) { + return true; + } + + if (var2 <= var5 && var5 <= var9 && var4 == 1 + var1 && 0 == (this.anIntArrayArray1304[var5][var4] & 19661088)) { + return true; + } + + if (var5 >= var2 && var9 >= var5 && var4 == -var7 + var1 && (this.anIntArrayArray1304[var5][var10] & 19661058) == 0) { + return true; + } + } else if (1 == var8) { + if (var2 <= var5 && var5 <= var9 && var4 == var1 - -1) { + return true; + } + + if (var5 - var7 == var2 && var1 >= var4 && var1 <= var10 && (this.anIntArrayArray1304[var9][var1] & 19661064) == 0) { + return true; + } + + if (var5 + 1 == var2 && var4 <= var1 && var10 >= var1 && 0 == (this.anIntArrayArray1304[var2][var1] & 19661184)) { + return true; + } + } else if (2 == var8) { + if (1 + var5 == var2 && var4 <= var1 && var10 >= var1) { + return true; + } + + if (var2 <= var5 && var5 <= var9 && 1 + var1 == var4 && (this.anIntArrayArray1304[var5][var4] & 19661088) == 0) { + return true; + } + + if (var2 <= var5 && var5 <= var9 && var4 == var1 - var7 && 0 == (19661058 & this.anIntArrayArray1304[var5][var10])) { + return true; + } + } else if (3 == var8) { + if (var2 <= var5 && var9 >= var5 && var1 + -var7 == var4) { + return true; + } + + if (var2 == var5 - var7 && var1 >= var4 && var1 <= var10 && (19661064 & this.anIntArrayArray1304[var9][var1]) == 0) { + return true; + } + + if (var2 == 1 + var5 && var4 <= var1 && var10 >= var1 && (this.anIntArrayArray1304[var2][var1] & 19661184) == 0) { + return true; + } + } + } + + if (var6 == 2) { + if (var8 == 0) { + if (var2 == -var7 + var5 && var4 <= var1 && var1 <= var10) { + return true; + } + + if (var2 <= var5 && var5 <= var9 && 1 + var1 == var4) { + return true; + } + + if (var2 == 1 + var5 && var1 >= var4 && var1 <= var10 && 0 == (this.anIntArrayArray1304[var2][var1] & 19661184)) { + return true; + } + + if (var2 <= var5 && var9 >= var5 && -var7 + var1 == var4 && (19661058 & this.anIntArrayArray1304[var5][var10]) == 0) { + return true; + } + } else if (var8 == 1) { + if (var2 == var5 - var7 && var1 >= var4 && var10 >= var1 && (19661064 & this.anIntArrayArray1304[var9][var1]) == 0) { + return true; + } + + if (var5 >= var2 && var5 <= var9 && var4 == 1 + var1) { + return true; + } + + if (var5 + 1 == var2 && var1 >= var4 && var10 >= var1) { + return true; + } + + if (var2 <= var5 && var9 >= var5 && var4 == -var7 + var1 && (this.anIntArrayArray1304[var5][var10] & 19661058) == 0) { + return true; + } + } else if (var8 == 2) { + if (-var7 + var5 == var2 && var4 <= var1 && var10 >= var1 && (this.anIntArrayArray1304[var9][var1] & 19661064) == 0) { + return true; + } + + if (var5 >= var2 && var5 <= var9 && var4 == var1 + 1 && (this.anIntArrayArray1304[var5][var4] & 19661088) == 0) { + return true; + } + + if (1 + var5 == var2 && var1 >= var4 && var1 <= var10) { + return true; + } + + if (var2 <= var5 && var5 <= var9 && var4 == -var7 + var1) { + return true; + } + } else if (var8 == 3) { + if (-var7 + var5 == var2 && var1 >= var4 && var1 <= var10) { + return true; + } + + if (var5 >= var2 && var5 <= var9 && 1 + var1 == var4 && (this.anIntArrayArray1304[var5][var4] & 19661088) == 0) { + return true; + } + + if (var2 == 1 + var5 && var4 <= var1 && var1 <= var10 && (this.anIntArrayArray1304[var2][var1] & 19661184) == 0) { + return true; + } + + if (var2 <= var5 && var5 <= var9 && var1 + -var7 == var4) { + return true; + } + } + } + + if (var6 == 9) { + if (var5 >= var2 && var9 >= var5 && var1 - -1 == var4 && (this.anIntArrayArray1304[var5][var4] & 19661088) == 0) { + return true; + } + + if (var2 <= var5 && var9 >= var5 && var1 - var7 == var4 && (19661058 & this.anIntArrayArray1304[var5][var10]) == 0) { + return true; + } + + if (var2 == -var7 + var5 && var1 >= var4 && var10 >= var1 && (19661064 & this.anIntArrayArray1304[var9][var1]) == 0) { + return true; + } + + return 1 + var5 == var2 && var4 <= var1 && var10 >= var1 && (this.anIntArrayArray1304[var2][var1] & 19661184) == 0; + } + } + + } + return false; + } catch (RuntimeException var11) { + throw ClientErrorException.clientError(var11, "mj.D(" + var1 + ',' + var2 + ',' + ',' + var4 + ',' + var5 + ',' + var6 + ',' + var7 + ',' + var8 + ')'); + } + } + + final void method1489(int var1, boolean var2, byte var3, int var4, int var5, int var6) { + try { + var4 -= this.anInt1306; + var1 -= this.anInt1309; + int var7 = 256; + if (var2) { + var7 += 131072; + } + + int var8 = var1; + if (var3 > 57) { + for (; var1 + var5 > var8; ++var8) { + if (var8 >= 0 && var8 < this.anInt1300) { + for (int var9 = var4; var9 < var6 + var4; ++var9) { + if (0 <= var9 && var9 < this.anInt1303) { + this.method1490(var7, var8, var9); + } + } + } + } + + } + } catch (RuntimeException var10) { + throw ClientErrorException.clientError(var10, "mj.B(" + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + var5 + ',' + var6 + ')'); + } + } + + private void method1490(int var1, int var3, int var4) { + try { + + this.anIntArrayArray1304[var3][var4] = TextureOperation3.bitwiseOr(this.anIntArrayArray1304[var3][var4], var1); + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "mj.J(" + var1 + ',' + (byte) -80 + ',' + var3 + ',' + var4 + ')'); + } + } + + final boolean method1492(int var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8) { + try { + if (var5 == 1) { + if (var3 == var7 && var4 == var1) { + return true; + } + } else if (var3 >= var7 && var3 <= -1 + var5 + var7 && -1 + var1 + var5 >= var1) { + return true; + } + + if (var8 <= 78) { + TextCore.aString_1301 = null; + } + + var7 -= this.anInt1309; + var1 -= this.anInt1306; + var3 -= this.anInt1309; + var4 -= this.anInt1306; + if (var5 == 1) { + if (6 == var2 || var2 == 7) { + if (var2 == 7) { + var6 = var6 - -2 & 3; + } + + if (var6 == 0) { + if (1 + var3 == var7 && var1 == var4 && (this.anIntArrayArray1304[var7][var4] & 128) == 0) { + return true; + } + + if (var7 == var3 && var4 == -1 + var1 && (2 & this.anIntArrayArray1304[var7][var4]) == 0) { + return true; + } + } else if (var6 == 1) { + if (var7 == var3 + -1 && var4 == var1 && (this.anIntArrayArray1304[var7][var4] & 8) == 0) { + return true; + } + + if (var3 == var7 && var4 == -1 + var1 && (2 & this.anIntArrayArray1304[var7][var4]) == 0) { + return true; + } + } else if (var6 == 2) { + if (var3 - 1 == var7 && var1 == var4 && 0 == (8 & this.anIntArrayArray1304[var7][var4])) { + return true; + } + + if (var3 == var7 && var4 == 1 + var1 && (32 & this.anIntArrayArray1304[var7][var4]) == 0) { + return true; + } + } else if (3 == var6) { + if (var3 - -1 == var7 && var4 == var1 && (128 & this.anIntArrayArray1304[var7][var4]) == 0) { + return true; + } + + if (var7 == var3 && var1 - -1 == var4 && (32 & this.anIntArrayArray1304[var7][var4]) == 0) { + return true; + } + } + } + + if (var2 == 8) { + if (var7 == var3 && 1 + var1 == var4 && 0 == (32 & this.anIntArrayArray1304[var7][var4])) { + return true; + } + + if (var3 == var7 && var1 + -1 == var4 && (this.anIntArrayArray1304[var7][var4] & 2) == 0) { + return true; + } + + if (-1 + var3 == var7 && var4 == var1 && 0 == (8 & this.anIntArrayArray1304[var7][var4])) { + return true; + } + + return var3 - -1 == var7 && var1 == var4 && (128 & this.anIntArrayArray1304[var7][var4]) == 0; + } + } else { + int var9 = var7 + var5 + -1; + int var10 = -1 + var4 + var5; + if (6 == var2 || var2 == 7) { + if (var2 == 7) { + var6 = 2 + var6 & 3; + } + + if (var6 == 0) { + if (var7 == 1 + var3 && var1 >= var4 && var1 <= var10 && (this.anIntArrayArray1304[var7][var1] & 128) == 0) { + return true; + } + + if (var7 <= var3 && var9 >= var3 && var4 == var1 + -var5 && (2 & this.anIntArrayArray1304[var3][var10]) == 0) { + return true; + } + } else if (var6 == 1) { + if (var7 == -var5 + var3 && var1 >= var4 && var1 <= var10 && (8 & this.anIntArrayArray1304[var9][var1]) == 0) { + return true; + } + + if (var7 <= var3 && var3 <= var9 && var1 + -var5 == var4 && 0 == (this.anIntArrayArray1304[var3][var10] & 2)) { + return true; + } + } else if (var6 == 2) { + if (-var5 + var3 == var7 && var1 >= var4 && var10 >= var1 && (8 & this.anIntArrayArray1304[var9][var1]) == 0) { + return true; + } + + if (var7 <= var3 && var3 <= var9 && var1 + 1 == var4 && 0 == (32 & this.anIntArrayArray1304[var3][var4])) { + return true; + } + } else if (var6 == 3) { + if (var7 == 1 + var3 && var4 <= var1 && var10 >= var1 && (128 & this.anIntArrayArray1304[var7][var1]) == 0) { + return true; + } + + if (var7 <= var3 && var9 >= var3 && var4 == var1 - -1 && 0 == (this.anIntArrayArray1304[var3][var4] & 32)) { + return true; + } + } + } + + if (var2 == 8) { + if (var7 <= var3 && var9 >= var3 && var4 == 1 + var1 && (this.anIntArrayArray1304[var3][var4] & 32) == 0) { + return true; + } + + if (var7 <= var3 && var3 <= var9 && var4 == var1 - var5 && (this.anIntArrayArray1304[var3][var10] & 2) == 0) { + return true; + } + + if (var7 == -var5 + var3 && var4 <= var1 && var1 <= var10 && (this.anIntArrayArray1304[var9][var1] & 8) == 0) { + return true; + } + + return 1 + var3 == var7 && var1 >= var4 && var1 <= var10 && 0 == (this.anIntArrayArray1304[var7][var1] & 128); + } + } + + return false; + } catch (RuntimeException var11) { + throw ClientErrorException.clientError(var11, "mj.Q(" + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + var5 + ',' + var6 + ',' + var7 + ',' + var8 + ')'); + } + } + + private boolean method1494(int var1, int var2, int var3, int var4, int var6, int var7, int var8, int var9, int var10) { + try { + int var11 = var7 + var9; + int var12 = var8 + var10; + int var13 = var3 + var1; + int var14 = var2 - -var6; + int var15; + int var16; + if (var7 >= var1 && var7 < var13) { + if (var12 == var2 && (4 & var4) == 0) { + var15 = var7; + + for (var16 = var13 >= var11 ? var11 : var13; var16 > var15; ++var15) { + if (0 == (this.anIntArrayArray1304[-this.anInt1309 + var15][var12 - (this.anInt1306 + 1)] & 2)) { + return true; + } + } + } else if (var8 == var14 && (1 & var4) == 0) { + var15 = var7; + + for (var16 = var13 < var11 ? var13 : var11; var15 < var16; ++var15) { + if ((32 & this.anIntArrayArray1304[var15 - this.anInt1309][var8 + -this.anInt1306]) == 0) { + return true; + } + } + } + } else if (var11 > var1 && var13 >= var11) { + if (var12 == var2 && 0 == (4 & var4)) { + for (var15 = var1; var15 < var11; ++var15) { + if ((2 & this.anIntArrayArray1304[-this.anInt1309 + var15][var12 - (this.anInt1306 + 1)]) == 0) { + return true; + } + } + } else if (var14 == var8 && (1 & var4) == 0) { + for (var15 = var1; var11 > var15; ++var15) { + if ((32 & this.anIntArrayArray1304[-this.anInt1309 + var15][-this.anInt1306 + var8]) == 0) { + return true; + } + } + } + } else if (var8 >= var2 && var14 > var8) { + if (var11 == var1 && 0 == (8 & var4)) { + var15 = var8; + + for (var16 = var12 <= var14 ? var12 : var14; var16 > var15; ++var15) { + if ((8 & this.anIntArrayArray1304[-1 + -this.anInt1309 + var11][var15 - this.anInt1306]) == 0) { + return true; + } + } + } else if (var13 == var7 && (var4 & 2) == 0) { + var15 = var8; + + for (var16 = var14 < var12 ? var14 : var12; var16 > var15; ++var15) { + if ((this.anIntArrayArray1304[-this.anInt1309 + var7][-this.anInt1306 + var15] & 128) == 0) { + return true; + } + } + } + } else if (var2 < var12 && var12 <= var14) { + if (var1 == var11 && (var4 & 8) == 0) { + for (var15 = var2; var12 > var15; ++var15) { + if ((this.anIntArrayArray1304[-this.anInt1309 + var11 + -1][-this.anInt1306 + var15] & 8) == 0) { + return true; + } + } + } else if (var7 == var13 && (var4 & 2) == 0) { + for (var15 = var2; var12 > var15; ++var15) { + if ((128 & this.anIntArrayArray1304[var7 + -this.anInt1309][-this.anInt1306 + var15]) == 0) { + return true; + } + } + } + } + + return false; + } catch (RuntimeException var17) { + throw ClientErrorException.clientError(var17, "mj.O(" + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + true + ',' + var6 + ',' + var7 + ',' + var8 + ',' + var9 + ',' + var10 + ')'); + } + } + + final void method1496() { + try { + for (int var2 = 0; var2 < this.anInt1300; ++var2) { + for (int var3 = 0; var3 < this.anInt1303; ++var3) { + if (var2 != 0 && 0 != var3 && var2 < this.anInt1300 - 5 && this.anInt1303 - 5 > var3) { + this.anIntArrayArray1304[var2][var3] = 16777216; + } else { + this.anIntArrayArray1304[var2][var3] = 16777215; + } + } + } + + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "mj.P(" + 0 + ')'); + } + } + + final void method1497(int var1, int var3) { + try { + var1 -= this.anInt1306; + var3 -= this.anInt1309; + this.anIntArrayArray1304[var3][var1] = TextureOperation3.bitwiseOr(this.anIntArrayArray1304[var3][var1], 2097152); + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "mj.E(" + var1 + ',' + 7605 + ',' + var3 + ')'); + } + } + + final boolean method1498(int var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9) { + try { + if (var5 > 1) { + return this.method1487(var5, var6, var2, var9, var3, var8, var5, var4) || this.method1494(var2, var8, var6, var7, var9, var4, var3, var5, var5); + } else { + int var10 = -1 + var6 + var2; + int var11 = var8 + (var9 - 1); + if (var4 >= var2 && var10 >= var4 && var8 <= var3 && var11 >= var3) { + return true; + } else { + if (false) { + this.method1501((byte) -85, 4, 106, -39); + } + + return var2 + -1 == var4 && var8 <= var3 && var3 <= var11 && (this.anIntArrayArray1304[-this.anInt1309 + var4][var3 - this.anInt1306] & 8) == 0 && (var7 & 8) == 0 || (var4 == 1 + var10 && var3 >= var8 && var3 <= var11 && 0 == (128 & this.anIntArrayArray1304[var4 - this.anInt1309][-this.anInt1306 + var3]) && (var7 & 2) == 0 || (var8 - 1 == var3 && var4 >= var2 && var10 >= var4 && (2 & this.anIntArrayArray1304[-this.anInt1309 + var4][-this.anInt1306 + var3]) == 0 && (4 & var7) == 0 || 1 + var11 == var3 && var4 >= var2 && var4 <= var10 && (32 & this.anIntArrayArray1304[var4 - this.anInt1309][var3 + -this.anInt1306]) == 0 && (var7 & 1) == 0)); + } + } + } catch (RuntimeException var12) { + throw ClientErrorException.clientError(var12, "mj.S(" + true + ',' + var2 + ',' + var3 + ',' + var4 + ',' + var5 + ',' + var6 + ',' + var7 + ',' + var8 + ',' + var9 + ')'); + } + } + + final void method1499(int var1, int var3) { + try { + var3 -= this.anInt1309; + var1 -= this.anInt1306; + this.anIntArrayArray1304[var3][var1] = Unsorted.bitwiseAnd(this.anIntArrayArray1304[var3][var1], -262145); + + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "mj.I(" + var1 + ',' + (byte) -73 + ',' + var3 + ')'); + } + } + + final boolean method1500(int var2, int var3, int var4, int var5) { + try { + if (var5 == var4 && var3 == var2) { + return true; + } else { + var3 -= this.anInt1306; + + var4 -= this.anInt1309; + if (0 <= var4 && this.anInt1300 > var4 && var3 >= 0 && this.anInt1303 > var3) { + var2 -= this.anInt1306; + var5 -= this.anInt1309; + int var6; + if (var5 < var4) { + var6 = var4 - var5; + } else { + var6 = -var4 + var5; + } + + int var7; + if (var2 >= var3) { + var7 = -var3 + var2; + } else { + var7 = var3 - var2; + } + + int var8; + int var9; + if (var7 >= var6) { + var9 = 32768; + var8 = 65536 * var6 / var7; + + while (var3 != var2) { + if (var2 < var3) { + if (0 != (this.anIntArrayArray1304[var5][var2] & 19661058)) { + return false; + } + + ++var2; + } else { + if (0 != (19661088 & this.anIntArrayArray1304[var5][var2])) { + return false; + } + + --var2; + } + + var9 += var8; + if (var9 >= 65536) { + var9 -= 65536; + if (var5 >= var4) { + if (var5 > var4) { + if ((19661184 & this.anIntArrayArray1304[var5][var2]) != 0) { + return false; + } + + --var5; + } + } else { + if ((19661064 & this.anIntArrayArray1304[var5][var2]) != 0) { + return false; + } + + ++var5; + } + } + } + } else { + var8 = 65536 * var7 / var6; + var9 = 32768; + + while (var5 != var4) { + if (var4 <= var5) { + if ((this.anIntArrayArray1304[var5][var2] & 19661184) != 0) { + return false; + } + + --var5; + } else { + if (0 != (this.anIntArrayArray1304[var5][var2] & 19661064)) { + return false; + } + + ++var5; + } + + var9 += var8; + if (var9 >= 65536) { + var9 -= 65536; + if (var3 > var2) { + if (0 != (this.anIntArrayArray1304[var5][var2] & 19661058)) { + return false; + } + + ++var2; + } else if (var3 < var2) { + if (0 != (19661088 & this.anIntArrayArray1304[var5][var2])) { + return false; + } + + --var2; + } + } + } + } + + return 0 == (19136768 & this.anIntArrayArray1304[var4][var3]); + } else { + return false; + } + } + } catch (RuntimeException var10) { + throw ClientErrorException.clientError(var10, "mj.G(" + -2 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + var5 + ')'); + } + } + + private void method1501(byte var1, int var2, int var3, int var4) { + try { + if (var1 >= 18) { + this.anIntArrayArray1304[var3][var2] = Unsorted.bitwiseAnd(this.anIntArrayArray1304[var3][var2], ~var4); + } + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "mj.H(" + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ')'); + } + } + + final void method1502(int var2, int var3, boolean var4, int var5, int var6, int var7) { + try { + var2 -= this.anInt1309; + var7 -= this.anInt1306; + int var8 = 256; + + if (var4) { + var8 += 131072; + } + + int var9; + if (1 == var5 || var5 == 3) { + var9 = var3; + var3 = var6; + var6 = var9; + } + + for (var9 = var2; var9 < var2 - -var3; ++var9) { + if (0 <= var9 && var9 < this.anInt1300) { + for (int var10 = var7; var6 + var7 > var10; ++var10) { + if (var10 >= 0 && var10 < this.anInt1303) { + this.method1501((byte) 32, var10, var9, var8); + } + } + } + } + + } catch (RuntimeException var11) { + throw ClientErrorException.clientError(var11, "mj.A(" + 20851 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + var5 + ',' + var6 + ',' + var7 + ')'); + } + } + + final void method1503(int var1, int var2) { + try { + var2 -= this.anInt1306; + var1 -= this.anInt1309; + this.anIntArrayArray1304[var1][var2] = TextureOperation3.bitwiseOr(this.anIntArrayArray1304[var1][var2], 262144); + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "mj.C(" + var1 + ',' + var2 + ',' + -5 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class92.java b/Client/src/main/java/org/runite/client/Class92.java new file mode 100644 index 000000000..6fbd89264 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class92.java @@ -0,0 +1,137 @@ +package org.runite.client; + + +import org.rs09.client.config.GameConfig; + +import javax.media.opengl.GL; + + +final class Class92 { + + private static final float[] light1Position = new float[4]; + static float[] light0Position = new float[4]; + static int lightX; + static int lightY; + static int defaultRegionAmbientRGB = 13156520;//13156520 + static float[] fogColor = new float[4]; + static int defaultScreenColorRgb = 16777215;//16777215 + private static int screenColorRgb = -1; + private static float light0Diffuse = -1.0F; + private static float light1Diffuse = -1.0F; + private static float lightModelAmbient; + private static int fogOffset = -1; + private static int fogColorRGB = -1; + + + static void method1504() { + GL gl = HDToolKit.gl; + gl.glLightfv(16384, 4611, light0Position, 0); + gl.glLightfv(16385, 4611, light1Position, 0); + } + + static float getLightingModelAmbient() { + return light0Diffuse; + } + + static void setLightParams(int color, float ambientMod, float l0Diffuse, float l1Diffuse) { + if (screenColorRgb != color || lightModelAmbient != ambientMod || light0Diffuse != l0Diffuse || light1Diffuse != l1Diffuse) { + screenColorRgb = color; + lightModelAmbient = ambientMod; + light0Diffuse = l0Diffuse; + light1Diffuse = l1Diffuse; + final GL gl = HDToolKit.gl; + final float red = (color >> 16 & 0xff) / 255.0F; + final float green = (color >> 8 & 0xff) / 255.0F; + final float blue = (color & 0xff) / 255.0F; + final float[] lightModelAmbientParams = {ambientMod * red, ambientMod * green, ambientMod * blue, 1.0F}; + gl.glLightModelfv(2899, lightModelAmbientParams, 0);//LIGHT_MODEL_AMBIENT + final float[] light0Params = {l0Diffuse * red, l0Diffuse * green, l0Diffuse * blue, 1.0F}; + gl.glLightfv(16384, 4609, light0Params, 0);//LIGHT0, DIFFUSE + final float[] light1Params = {-l1Diffuse * red, -l1Diffuse * green, -l1Diffuse * blue, 1.0F}; + gl.glLightfv(16385, 4609, light1Params, 0);//LIGHT1, DIFFUSE + } + } + + static void setFogValues(int fogCol, int fogOff) { + if (fogColorRGB != fogCol || fogOffset != fogOff) { + fogColorRGB = fogCol; + fogOffset = fogOff; + final GL gl = HDToolKit.gl; + byte lowestFogStart = 50; + //short baseFogStart = 3584; This is unused because it was originally this but to avoid math jagex simplified it. + fogColor[0] = (fogCol >> 16 & 0xff) / 255.0F; + fogColor[1] = (fogCol >> 8 & 0xff) / 255.0F; + fogColor[2] = (fogCol & 0xff) / 255.0F; + //2917 FOG_MODE + //9729 LINEAR + gl.glFogi(2917, 9729); + //FOG_DENSITY + gl.glFogf(2914, 0.95F); + //3156 = FOG_HINT + //4353 = FASTEST, 4354 = NICEST, 4352 = DONT_CARE + gl.glHint(3156, 4353); + int fogStart = 3072 - fogOff;//baseFogStart - 512 - fogOff + if (fogStart < lowestFogStart) { + fogStart = lowestFogStart; + } + //FOG_START + gl.glFogf(2915, GameConfig.RENDER_DISTANCE_FOG_FIX - 256);//3072 + //FOG_END + gl.glFogf(2916, GameConfig.RENDER_DISTANCE_FOG_FIX);//baseFogStart - 256 + //FOG_COLOR + gl.glFogfv(2918, fogColor, 0); + } + } + + static void setLightPosition(float x, float y, float z) { + if (light0Position[0] != x || light0Position[1] != y || light0Position[2] != z) { + light0Position[0] = x; + light0Position[1] = y; + light0Position[2] = z; + light1Position[0] = -x; + light1Position[1] = -y; + light1Position[2] = -z; + lightX = (int) (x * 256.0F / y); + lightY = (int) (z * 256.0F / y); + } + } + + static int screenColorRgb() { + return screenColorRgb; + } + + static void method1511() { + final GL gl = HDToolKit.gl; + gl.glColorMaterial(1028, 5634);//FRONT, AMBIENT_AND_DIFFUSE + gl.glEnable(2903);//COLOR_MATERIAL + final float[] light0Params = {0.0F, 0.0F, 0.0F, 1.0F}; + gl.glLightfv(16384, 4608, light0Params, 0);//LIGHT0, AMBIENT + gl.glEnable(16384);//LIGHT0 + final float[] light1Params = {0.0F, 0.0F, 0.0F, 1.0F}; + gl.glLightfv(16385, 4608, light1Params, 0);//LIGHT1, AMBIENT + gl.glEnable(16385);//LIGHT1 + screenColorRgb = -1; + fogColorRGB = -1; + initDefaults(); + } + + static void method1512(float[] var0) { + if (var0 == null) { + var0 = fogColor; + } + + GL gl = HDToolKit.gl; + gl.glFogfv(2918, var0, 0); + } + + private static void initDefaults() { + setLightParams(defaultScreenColorRgb, 1.1523438F, 0.69921875F, 1.2F); + setLightPosition(-50.0F, -60.0F, -50.0F); + setFogValues(defaultRegionAmbientRGB, 0); + } + + static float method1514() { + return lightModelAmbient; + } + +} diff --git a/Client/src/main/java/org/runite/client/Class95.java b/Client/src/main/java/org/runite/client/Class95.java new file mode 100644 index 000000000..9e897cec3 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class95.java @@ -0,0 +1,96 @@ +package org.runite.client; + +public final class Class95 { + + static int anInt1336 = 0; + static int anInt1338; + static int anInt1343; + static int anInt1344; + + + static void method1583(int var0, int var1, int var2, int var4, int var5, int var6, int var7, int var8, int var9) { + try { + + if (var1 == var0 && var2 == var9 && var8 == var7 && var5 == var6) { + TextureOperation25.method330(var4, 3 + -111, var5, var0, var9, var7); + } else { + int var10 = var0; + int var13 = 3 * var9; + int var12 = 3 * var0; + int var11 = var9; + int var14 = var1 * 3; + int var15 = 3 * var2; + int var16 = 3 * var8; + int var17 = var6 * 3; + int var18 = var14 + var7 - (var16 + var0); + int var20 = var16 - (var14 - -var14) - -var12; + int var19 = var15 + -var17 + (var5 - var9); + int var21 = var13 + -var15 + -var15 + var17; + int var22 = var14 + -var12; + int var23 = -var13 + var15; + + for (int var24 = 128; var24 <= 4096; var24 += 128) { + int var25 = var24 * var24 >> 12; + int var26 = var24 * var25 >> 12; + int var30 = var21 * var25; + int var28 = var26 * var19; + int var29 = var25 * var20; + int var27 = var18 * var26; + int var31 = var22 * var24; + int var33 = var0 - -(var29 + (var27 - -var31) >> 12); + int var32 = var24 * var23; + int var34 = var9 - -(var32 + var28 - -var30 >> 12); + TextureOperation25.method330(var4, -88, var34, var10, var11, var33); + var10 = var33; + var11 = var34; + } + } + + } catch (RuntimeException var35) { + throw ClientErrorException.clientError(var35, "nb.B(" + var0 + ',' + var1 + ',' + var2 + ',' + 3 + ',' + var4 + ',' + var5 + ',' + var6 + ',' + var7 + ',' + var8 + ',' + var9 + ')'); + } + } + + static void method1584(int var0, int var1, int var2, int var3, int var5) { + try { + + if (var5 == var1) { + Class43.method1058(var5, var2, var0, var3); + } else if (Class101.anInt1425 <= var2 - var5 && var2 + var5 <= Class3_Sub28_Sub18.anInt3765 && -var1 + var3 >= Class159.anInt2020 && Class57.anInt902 >= var3 - -var1) { + Class3_Sub9.method135(var3, var2, var5, var1, var0); + } else { + Class3_Sub28_Sub5.method556(var0, var1, var5, (byte) -123, var2, var3); + } + } catch (RuntimeException var7) { + throw ClientErrorException.clientError(var7, "nb.E(" + var0 + ',' + var1 + ',' + var2 + ',' + var3 + ',' + -26571 + ',' + var5 + ')'); + } + } + + public static int method1585(byte var0, int var1) { + try { + --var1; + var1 |= var1 >>> 1; + var1 |= var1 >>> 2; + var1 |= var1 >>> 4; + var1 |= var1 >>> 8; + var1 |= var1 >>> 16; + return 1 + var1; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "nb.C(" + var0 + ',' + var1 + ')'); + } + } + + static RSString method1586() { + try { + RSString var2 = new RSString(); + + var2.length = 1; + var2.buffer = new byte[1]; + var2.buffer[0] = (byte) 160; + return var2; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "nb.A(" + 23161 + ',' + 160 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Class96.java b/Client/src/main/java/org/runite/client/Class96.java new file mode 100644 index 000000000..018245134 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class96.java @@ -0,0 +1,16 @@ +package org.runite.client; + +public final class Class96 { + + static int anInt1358 = 0; + public int anInt1346; + public int anInt1347; + public int anInt1350; + public int anInt1351; + public int anInt1353; + public int anInt1355 = -1; + public int anInt1356; + public int anInt1359; + public int anInt1360; + +} diff --git a/Client/src/main/java/org/runite/client/Class97.java b/Client/src/main/java/org/runite/client/Class97.java new file mode 100644 index 000000000..aca7243e3 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class97.java @@ -0,0 +1,151 @@ +package org.runite.client; + +import java.util.Objects; + +public final class Class97 { + + public static CacheIndex fontsIndex_1378; + static byte[] aByteArray1364 = new byte['\u8080']; + static CacheIndex itemConfigIndex_1370; + static CacheIndex configurationsIndex_1372; + static int[][] anIntArrayArray1373; + static RSString aString_1374; + static int anInt1375; + static RSString aString_1380; + + static { + int var0 = 0; + + for (int var1 = 0; var1 < 256; ++var1) { + for (int var2 = 0; var2 <= var1; ++var2) { + aByteArray1364[var0++] = (byte) ((int) (255.0D / Math.sqrt((float) (65535 + var2 * var2 + var1 * var1) / 65535.0F))); + } + } + + aString_1374 = RSString.parse("zap"); + anIntArrayArray1373 = new int[104][104]; + aString_1380 = RSString.parse(")4p="); + } + + private final int anInt1367; + private final int anInt1369; + boolean aBoolean1379 = false; + private int[][][] anIntArrayArrayArray1362; + private int anInt1365 = -1; + private LinkedList aLinkedList_1366 = new LinkedList(); + private int anInt1368 = 0; + private Class3_Sub20[] aClass3_Sub20Array1371; + + Class97(int var1, int var2, int var3) { + try { + this.anInt1369 = var2; + this.anInt1367 = var1; + this.aClass3_Sub20Array1371 = new Class3_Sub20[this.anInt1369]; + this.anIntArrayArrayArray1362 = new int[this.anInt1367][3][var3]; + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "nd.(" + var1 + ',' + var2 + ',' + var3 + ')'); + } + } + + static void method1591(Class3_Sub24 var1) { + try { + if (var1.aSound_2544 != null) { + var1.aSound_2544.anInt2374 = 0; + } + + var1.aBoolean2545 = false; + + for (Class3_Sub24 var2 = var1.method411(); var2 != null; var2 = var1.method414()) { + method1591(var2); + } + + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "nd.A(" + true + ',' + (var1 != null ? "{...}" : "null") + ')'); + } + } + + static void method1593(int var0, CacheIndex var1) { + try { + Class154.anInt1966 = var1.getArchiveForName(TextCore.aString_3574); + CSConfigCachefile.anInt1124 = var1.getArchiveForName(TextCore.aString_1341); + if (var0 <= 108) { + method1593(14, null); + } + + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "nd.C(" + var0 + ',' + (var1 != null ? "{...}" : "null") + ')'); + } + } + + final int[][][] method1589() { + try { + if (this.anInt1367 == this.anInt1369) { + + for (int var2 = 0; var2 < this.anInt1367; ++var2) { + this.aClass3_Sub20Array1371[var2] = Class3_Sub28_Sub1.aClass3_Sub20_3532; + } + + return this.anIntArrayArrayArray1362; + } else { + throw new RuntimeException("Can only retrieve a full image cache"); + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "nd.F(" + (byte) -56 + ')'); + } + } + + final void method1590() { + try { + for (int var2 = 0; var2 < this.anInt1367; ++var2) { + this.anIntArrayArrayArray1362[var2][0] = null; + this.anIntArrayArrayArray1362[var2][1] = null; + this.anIntArrayArrayArray1362[var2][2] = null; + this.anIntArrayArrayArray1362[var2] = null; + } + + this.aClass3_Sub20Array1371 = null; + this.anIntArrayArrayArray1362 = null; + this.aLinkedList_1366.clear(); + this.aLinkedList_1366 = null; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "nd.E(" + (byte) -22 + ')'); + } + } + + final int[][] method1594(byte var1, int var2) { + try { + if (this.anInt1367 == this.anInt1369) { + this.aBoolean1379 = null == this.aClass3_Sub20Array1371[var2]; + this.aClass3_Sub20Array1371[var2] = Class3_Sub28_Sub1.aClass3_Sub20_3532; + return this.anIntArrayArrayArray1362[var2]; + } else if (1 == this.anInt1367) { + this.aBoolean1379 = this.anInt1365 != var2; + this.anInt1365 = var2; + return this.anIntArrayArrayArray1362[0]; + } else { + Class3_Sub20 var4 = this.aClass3_Sub20Array1371[var2]; + if (null == var4) { + this.aBoolean1379 = true; + if (this.anInt1367 > this.anInt1368) { + var4 = new Class3_Sub20(var2, this.anInt1368); + ++this.anInt1368; + } else { + Class3_Sub20 var5 = (Class3_Sub20) this.aLinkedList_1366.method1212(); + var4 = new Class3_Sub20(var2, Objects.requireNonNull(var5).anInt2483); + this.aClass3_Sub20Array1371[var5.anInt2489] = null; + var5.unlink(); + } + + this.aClass3_Sub20Array1371[var2] = var4; + } else { + this.aBoolean1379 = false; + } + + this.aLinkedList_1366.method1216(var4); + return this.anIntArrayArrayArray1362[var4.anInt2483]; + } + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "nd.D(" + var1 + ',' + var2 + ')'); + } + } +} diff --git a/Client/src/main/java/org/runite/client/Class99.java b/Client/src/main/java/org/runite/client/Class99.java new file mode 100644 index 000000000..3fe04700a --- /dev/null +++ b/Client/src/main/java/org/runite/client/Class99.java @@ -0,0 +1,88 @@ +package org.runite.client; + +import java.awt.*; +import java.util.Objects; + +final class Class99 { + + static short[] aShortArray1398; + static Class33 aClass33_1399; + static RSInterface aClass11_1402; + static int anInt1403 = -1; + + + static void method1596(RSString var0, byte var1, boolean var2) { + try { + if (var1 < 124) { + ObjectDefinition.aReferenceCache_1401 = null; + } + + if (var2) { + if (HDToolKit.highDetail && InterfaceWidget.aBoolean3594) { + try { + Class42.method1056(Class38.gameSignlink.gameApplet, new Object[]{var0.method1547(LinkableRSString.anApplet_Sub1_2588.getCodeBase()).toString()}); + return; + } catch (Throwable var6) { + } + } + + try { + Objects.requireNonNull(LinkableRSString.anApplet_Sub1_2588.getAppletContext()).showDocument(var0.method1547(LinkableRSString.anApplet_Sub1_2588.getCodeBase()), "_blank"); + } catch (Exception var4) { + } + } else { + try { + Objects.requireNonNull(LinkableRSString.anApplet_Sub1_2588.getAppletContext()).showDocument(var0.method1547(LinkableRSString.anApplet_Sub1_2588.getCodeBase()), "_top"); + } catch (Exception var5) { + } + } + + } catch (RuntimeException var7) { + throw ClientErrorException.clientError(var7, "nf.C(" + (var0 != null ? "{...}" : "null") + ',' + var1 + ',' + var2 + ')'); + } + } + + static Frame method1597(int var2, int var3, int var4, Signlink var5) { + try { + if (var5.method1432(false)) { + if (0 == var2) { + Class106[] var6 = Unsorted.method596(var5); + + boolean var7 = false; + + for (int var8 = 0; var6.length > var8; ++var8) { + if (var4 == var6[var8].anInt1447 && var3 == var6[var8].anInt1449 && (!var7 || var6[var8].anInt1450 > var2)) { + var2 = var6[var8].anInt1450; + var7 = true; + } + } + + if (!var7) { + return null; + } + } + + Class64 var10 = var5.method1450(0, var2, var3, var4); + + while (0 == var10.anInt978) { + TimeUtils.sleep(10L); + } + + Frame var11 = (Frame) var10.anObject974; + if (null == var11) { + return null; + } else if (2 == var10.anInt978) { + Unsorted.method593(var11, var5); + return null; + } else { + return var11; + } + } else { + return null; + } + } catch (RuntimeException var9) { + throw ClientErrorException.clientError(var9, "nf.D(" + 2 + ',' + 0 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + (var5 != null ? "{...}" : "null") + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Client.java b/Client/src/main/java/org/runite/client/Client.java new file mode 100644 index 000000000..24f867563 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Client.java @@ -0,0 +1,1827 @@ +package org.runite.client; + + +import net.arikia.dev.drpc.DiscordRPC; +import org.rs09.Discord; +import org.rs09.SystemLogger; +import org.rs09.client.config.GameConfig; +import org.rs09.client.console.DeveloperConsole; +import org.rs09.client.constants.gametype.MechscapeGameAppearance; +import org.rs09.client.constants.gametype.RunescapeGameAppearance; +import org.rs09.client.data.HashTable; +import org.rs09.client.filestore.resources.configs.enums.EnumDefinitionProvider; +import org.rs09.client.filestore.resources.configs.structs.StructDefinitionProvider; +import org.rs09.client.net.Connection; +import org.runite.client.drawcalls.LoadingBox; +import org.runite.client.drawcalls.StartupLoadingBarInitial; +import org.runite.client.drawcalls.StartupLoadingBar; + +import java.awt.*; +import java.io.IOException; +import java.net.Socket; +import java.nio.charset.StandardCharsets; +import java.util.Calendar; +import java.util.GregorianCalendar; +import java.util.Objects; + +import static org.rs09.client.constants.Parameter.*; + +public final class Client extends GameShell { + + /** + * + */ + private static final long serialVersionUID = 8336806252605101745L; + public static int messageToDisplay = -2; + public static RSString loadingBarTextToDisplay = RSString.parse(""); + static HashTable aHashTable_2194 = new HashTable(16); + static Class3_Sub11[][] aClass3_Sub11ArrayArray2199; + static int[] anIntArray2200; + static int ZOOM = 600; + static int currentPort; + static int rectDebugInt = 0; + public static int LoadingStageNumber = 10; + static int anInt869; + static int loginScreenInterfaceID; + static int anInt2275 = 1; + static int anInt2317 = 0; + static int anInt3068 = 0; + static int[] anIntArray3288 = new int[]{4, 4, 1, 2, 6, 4, 2, 49, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}; + static long aLong3296 = 0L; + static Class3_Sub24_Sub4 aClass3_Sub24_Sub4_1193; + static long aLong1310 = 0L; + static int anInt1354 = 0; + static LinkedList aLinkedList_1471 = new LinkedList(); + static Class30 aClass30_1572; + static int[] anIntArray3780 = new int[32]; + static boolean paramAdvertisementSuppressed = false; + static int anInt3773; + static Client clientInstance; + static boolean sweepReferenceCache = false; + + static void method1175(int var0) { + try { + TextureOperation13.anInt3362 = -1; + Texture.anInt1150 = -1; + + Class3_Sub28_Sub1.anInt3536 = var0; + Class3_Sub5.method117(); + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "hj.D(" + var0 + ',' + 112 + ')'); + } + } + + static void method375(CacheIndex var1, CacheIndex var2) { + try { + Class24.modelsIndex_152 = var1; + LoginHandler.configurationsIndex_1680 = var2; + Class25.anInt497 = LoginHandler.configurationsIndex_1680.getFileAmount(3); + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "jl.D(" + 3 + ',' + (var1 != null ? "{...}" : "null") + ',' + (var2 != null ? "{...}" : "null") + ')'); + } + } + + static void invalidArgument(String var0) { + try { + System.out.println("Bad " + var0 + ", Usage: worldid, , , "); + System.exit(1); + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "kd.O(" + (var0 != null ? "{...}" : "null") + ',' + (byte) 38 + ')'); + } + } + + static RSInterface method42(RSInterface var0) { + int var1 = method44(var0).method94(); + if (var1 == 0) { + return null; + } else { + for (int var2 = 0; var2 < var1; ++var2) { + var0 = Unsorted.getRSInterface(var0.parentId); + if (var0 == null) { + return null; + } + } + + return var0; + } + } + + static Class3_Sub1 method44(RSInterface var0) { + Class3_Sub1 var1 = (Class3_Sub1) Class124.aHashTable_1659.get(((long) var0.componentHash << 32) + (long) var0.anInt191); + return var1 != null ? var1 : var0.aClass3_Sub1_257; + } + + /** + * Client Initialization + *

+ * Client command line initialization (parameter modeWhere 3) + * NOTE: Attempting to run the client this way puts paramModeWhere into LOCAL_ENVIRONMENT mode + * All of these arguments can be set through "program arguments" + */ + public static void main(String[] args) { + try { + if (args.length != 4) { + invalidArgument("argument count"); + } + + int language = -1; + + ObjectDefinition.paramWorldID = Integer.parseInt(args[0]); + + Class44.paramModeWhere = LOCAL_ENVIRONMENT; + + switch (args[1]) { + case "live": + TextureOperation20.paramModeWhat = LIVE_SERVER; + break; + case "rc": + TextureOperation20.paramModeWhat = RELEASE_CANDIDATE; + break; + case "wip": + TextureOperation20.paramModeWhat = WORK_IN_PROGRESS; + break; + default: + invalidArgument("modewhat"); + break; + } + + paramAdvertisementSuppressed = false; + + try { + byte[] languageSelection = args[2].getBytes(StandardCharsets.ISO_8859_1); + /* + Accepts en, de, fr, pt + */ + language = TextureOperation15.compareEnteredLanguageArgument(TextureOperation33.bufferToString(languageSelection, languageSelection.length, 0)); + } catch (Exception ignored) { + + } + + if (language == -1) { + switch (args[2]) { + case "english": + Class3_Sub20.paramLanguage = LANGUAGE_ENGLISH; + break; + case "german": + Class3_Sub20.paramLanguage = LANGUAGE_GERMAN; + break; + case "french": + Class3_Sub20.paramLanguage = LANGUAGE_FRENCH; + break; + default: + invalidArgument("language"); + break; + } + } else { + Class3_Sub20.paramLanguage = language; + } + + Unsorted.languageSetter(Class3_Sub20.paramLanguage); + + Class163_Sub2_Sub1.paramObjectTagEnabled = false; + Unsorted.paramJavaScriptEnabled = false; + + switch (args[3]) { + case "game0": + Class158.paramGameTypeID = GAME_TYPE_RUNESCAPE; + break; + case "game1": + Class158.paramGameTypeID = GAME_TYPE_MECHSCAPE; + break; + default: + invalidArgument("game"); + break; + } + + Class3_Sub31.paramCountryID = 0; + + Class106.paramUserUsingInternetExplorer = false; + + Class3_Sub26.paramAffid = NO_AFFILIATE; + + Class163_Sub2.paramSettings = RSString.parse(""); + + Client client = new Client(); + clientInstance = client; + client.launch(); + GameShell.frame.setLocation(40, 40); + + } catch (Exception var4) { + Class49.reportError(null, var4); + } + } + + static void handleItemSwitch(RSInterface[] interfaces, int var1, int var2, int var3, int var4, int var5, int var6, int var7) { + for (RSInterface inter : interfaces) { + if (inter != null && inter.parentId == var1 && (!inter.usingScripts || inter.type == 0 || inter.aBoolean195 || method44(inter).anInt2205 != 0 || inter == PacketParser.aClass11_88 || inter.anInt189 == 1338) && (!inter.usingScripts || !method51(inter))) { + int var10 = inter.anInt306 + var6; + int var11 = inter.anInt210 + var7; + int var12; + int var13; + int var14; + int var15; + if (inter.type == 2) { + var12 = var2; + var13 = var3; + var14 = var4; + var15 = var5; + } else { + int var16 = var10 + inter.width; + int var17 = var11 + inter.height; + if (inter.type == 9) { + ++var16; + ++var17; + } + + var12 = var10 > var2 ? var10 : var2; + var13 = var11 > var3 ? var11 : var3; + var14 = var16 < var4 ? var16 : var4; + var15 = var17 < var5 ? var17 : var5; + } + + if (inter == Class56.aClass11_886) { + Class21.aBoolean440 = true; + Class3_Sub15.anInt2421 = var10; + TileData.anInt2218 = var11; + } + + if (!inter.usingScripts || var12 < var14 && var13 < var15) { + if (inter.type == 0) { + if (!inter.usingScripts && method51(inter) && Class107.aClass11_1453 != inter) { + continue; + } + + if (inter.aBoolean219 && Class126.anInt1676 >= var12 && Unsorted.anInt1709 >= var13 && Class126.anInt1676 < var14 && Unsorted.anInt1709 < var15) { + for (CS2Script var27 = (CS2Script) aLinkedList_1471.startIteration(); var27 != null; var27 = (CS2Script) aLinkedList_1471.nextIteration()) { + if (var27.aBoolean2446) { + var27.unlink(); + var27.aClass11_2449.aBoolean163 = false; + } + } + + if (Class75_Sub3.anInt2658 == 0) { + Class56.aClass11_886 = null; + PacketParser.aClass11_88 = null; + } + + Class3_Sub19.anInt2475 = 0; + } + } + + if (inter.usingScripts) { + boolean var26; + var26 = Class126.anInt1676 >= var12 && Unsorted.anInt1709 >= var13 && Class126.anInt1676 < var14 && Unsorted.anInt1709 < var15; + + boolean var25 = false; + if (TextureOperation21.anInt3069 == 1 && var26) { + var25 = true; + } + + boolean var18 = false; + if (Unsorted.anInt3644 == 1 && Class163_Sub1.anInt2993 >= var12 && Class38_Sub1.anInt2614 >= var13 && Class163_Sub1.anInt2993 < var14 && Class38_Sub1.anInt2614 < var15) { + var18 = true; + } + + int var19; + int var21; + if (inter.aByteArray263 != null) { + for (var19 = 0; var19 < inter.aByteArray263.length; ++var19) { + if (!ObjectDefinition.aBooleanArray1490[inter.aByteArray263[var19]]) { + if (inter.anIntArray310 != null) { + inter.anIntArray310[var19] = 0; + } + } else if (inter.anIntArray310 == null || Class44.anInt719 >= inter.anIntArray310[var19]) { + byte var20 = inter.aByteArray231[var19]; + if (var20 == 0 || ((var20 & 2) == 0 || ObjectDefinition.aBooleanArray1490[86]) && ((var20 & 1) == 0 || ObjectDefinition.aBooleanArray1490[82]) && ((var20 & 4) == 0 || ObjectDefinition.aBooleanArray1490[81])) { + Unsorted.method66(RSString.parse(""), -1, var19 + 1, (byte) -29, inter.componentHash); + var21 = inter.anIntArray299[var19]; + if (inter.anIntArray310 == null) { + inter.anIntArray310 = new int[inter.aByteArray263.length]; + } + + if (var21 == 0) { + inter.anIntArray310[var19] = Integer.MAX_VALUE; + } else { + inter.anIntArray310[var19] = Class44.anInt719 + var21; + } + } + } + } + } + + if (var18) { + InterfaceWidget.a(Class38_Sub1.anInt2614 - var11, Class163_Sub1.anInt2993 - var10, 97, inter); + } + + if (Class56.aClass11_886 != null && Class56.aClass11_886 != inter && var26 && (method44(inter).method98() || (inter.componentHash == 49938505 && Class56.aClass11_886.componentHash == 49938505))) { + Class27.aClass11_526 = inter; + } + if (inter == PacketParser.aClass11_88) { + Class85.aBoolean1167 = true; + TextureOperation20.anInt3156 = var10; + Class134.anInt1761 = var11; + } + + if (inter.aBoolean195 || inter.anInt189 != 0) { + CS2Script var30; + if (var26 && Class29.anInt561 != 0 && inter.anObjectArray183 != null) { + var30 = new CS2Script(); + var30.aBoolean2446 = true; + var30.aClass11_2449 = inter; + var30.scrollbarScrollAmount = Class29.anInt561; + var30.arguments = inter.anObjectArray183; + aLinkedList_1471.pushBack(var30); + } + + if (Class56.aClass11_886 != null || Class67.aClass11_1017 != null || Class38_Sub1.aBoolean2615 || inter.anInt189 != 1400 && Class3_Sub19.anInt2475 > 0) { + var18 = false; + var25 = false; + var26 = false; + } + + int var29; + if (inter.anInt189 != 0) { + if (inter.anInt189 == 1337) { + Unsorted.aClass11_2091 = inter; + Class20.method909(inter); + continue; + } + + if (inter.anInt189 == 1338) { + if (var18) { + Class1.anInt56 = Class163_Sub1.anInt2993 - var10; + Class58.anInt916 = Class38_Sub1.anInt2614 - var11; + } + continue; + } + + if (inter.anInt189 == 1400) { + Class3_Sub28_Sub3.aClass11_3551 = inter; + if (var18) { + if (ObjectDefinition.aBooleanArray1490[82] && Player.rights > 0) { + var19 = (int) ((double) (Class163_Sub1.anInt2993 - var10 - inter.width / 2) * 2.0D / (double) Class44.aFloat727); + var29 = (int) ((double) (Class38_Sub1.anInt2614 - var11 - inter.height / 2) * 2.0D / (double) Class44.aFloat727); + var21 = Class3_Sub28_Sub1.anInt3536 + var19; + int var32 = Scenery.anInt2251 + var29; + int var23 = var21 + TextureOperation37.anInt3256; + int var24 = Class108.anInt1460 - 1 - var32 + Unsorted.anInt65; + Class30.method979(var23, var24, 0); + TextureOperation4.method264((byte) 126); + continue; + } + + Class3_Sub19.anInt2475 = 1; + Unsorted.anInt1881 = Class126.anInt1676; + Class95.anInt1336 = Unsorted.anInt1709; + continue; + } + + if (var25 && Class3_Sub19.anInt2475 > 0) { + if (Class3_Sub19.anInt2475 == 1 && (Unsorted.anInt1881 != Class126.anInt1676 || Class95.anInt1336 != Unsorted.anInt1709)) { + Unsorted.anInt4073 = Class3_Sub28_Sub1.anInt3536; + Class38.anInt660 = Scenery.anInt2251; + Class3_Sub19.anInt2475 = 2; + } + + if (Class3_Sub19.anInt2475 == 2) { + method1175(Unsorted.anInt4073 + (int) ((double) (Unsorted.anInt1881 - Class126.anInt1676) * 2.0D / (double) NPC.aFloat3979)); + TextureOperation8.method354(Class38.anInt660 + (int) ((double) (Class95.anInt1336 - Unsorted.anInt1709) * 2.0D / (double) NPC.aFloat3979)); + } + continue; + } + + Class3_Sub19.anInt2475 = 0; + continue; + } + + if (inter.anInt189 == 1401) { + if (var25) { + TextureOperation23.method253(inter.width, Unsorted.anInt1709 - var11, Class126.anInt1676 - var10, inter.height); + } + continue; + } + + if (inter.anInt189 == 1402) { + if (!HDToolKit.highDetail) { + Class20.method909(inter); + } + continue; + } + } + + if (!inter.aBoolean188 && var18) { + inter.aBoolean188 = true; + if (inter.anObjectArray165 != null) { + var30 = new CS2Script(); + var30.aBoolean2446 = true; + var30.aClass11_2449 = inter; + var30.worldSelectCursorPositionX = Class163_Sub1.anInt2993 - var10; + var30.scrollbarScrollAmount = Class38_Sub1.anInt2614 - var11; + var30.arguments = inter.anObjectArray165; + aLinkedList_1471.pushBack(var30); + } + } + + if (inter.aBoolean188 && var25 && inter.anObjectArray170 != null) { + var30 = new CS2Script(); + var30.aBoolean2446 = true; + var30.aClass11_2449 = inter; + var30.worldSelectCursorPositionX = Class126.anInt1676 - var10; + var30.scrollbarScrollAmount = Unsorted.anInt1709 - var11; + var30.arguments = inter.anObjectArray170; + aLinkedList_1471.pushBack(var30); + } + + if (inter.aBoolean188 && !var25) { + inter.aBoolean188 = false; + if (inter.anObjectArray239 != null) { + var30 = new CS2Script(); + var30.aBoolean2446 = true; + var30.aClass11_2449 = inter; + var30.worldSelectCursorPositionX = Class126.anInt1676 - var10; + var30.scrollbarScrollAmount = Unsorted.anInt1709 - var11; + var30.arguments = inter.anObjectArray239; + Class65.aLinkedList_983.pushBack(var30); + } + } + + if (var25 && inter.anObjectArray180 != null) { + var30 = new CS2Script(); + var30.aBoolean2446 = true; + var30.aClass11_2449 = inter; + var30.worldSelectCursorPositionX = Class126.anInt1676 - var10; + var30.scrollbarScrollAmount = Unsorted.anInt1709 - var11; + var30.arguments = inter.anObjectArray180; + aLinkedList_1471.pushBack(var30); + } + + if (!inter.aBoolean163 && var26) { + inter.aBoolean163 = true; + if (inter.anObjectArray248 != null) { + var30 = new CS2Script(); + var30.aBoolean2446 = true; + var30.aClass11_2449 = inter; + var30.worldSelectCursorPositionX = Class126.anInt1676 - var10; + var30.scrollbarScrollAmount = Unsorted.anInt1709 - var11; + var30.arguments = inter.anObjectArray248; + aLinkedList_1471.pushBack(var30); + } + } + + if (inter.aBoolean163 && var26 && inter.anObjectArray276 != null) { + var30 = new CS2Script(); + var30.aBoolean2446 = true; + var30.aClass11_2449 = inter; + var30.worldSelectCursorPositionX = Class126.anInt1676 - var10; + var30.scrollbarScrollAmount = Unsorted.anInt1709 - var11; + var30.arguments = inter.anObjectArray276; + aLinkedList_1471.pushBack(var30); + } + + if (inter.aBoolean163 && !var26) { + inter.aBoolean163 = false; + if (inter.anObjectArray281 != null) { + var30 = new CS2Script(); + var30.aBoolean2446 = true; + var30.aClass11_2449 = inter; + var30.worldSelectCursorPositionX = Class126.anInt1676 - var10; + var30.scrollbarScrollAmount = Unsorted.anInt1709 - var11; + var30.arguments = inter.anObjectArray281; + Class65.aLinkedList_983.pushBack(var30); + } + } + + if (inter.anObjectArray269 != null) { + var30 = new CS2Script(); + var30.aClass11_2449 = inter; + var30.arguments = inter.anObjectArray269; + PacketParser.aLinkedList_82.pushBack(var30); + } + + CS2Script var22; + if (inter.anObjectArray161 != null && PacketParser.anInt87 > inter.anInt284) { + if (inter.anIntArray211 != null && PacketParser.anInt87 - inter.anInt284 <= 32) { + label531: + for (var19 = inter.anInt284; var19 < PacketParser.anInt87; ++var19) { + var29 = NPC.anIntArray3986[var19 & 31]; + + for (var21 = 0; var21 < inter.anIntArray211.length; ++var21) { + if (inter.anIntArray211[var21] == var29) { + var22 = new CS2Script(); + var22.aClass11_2449 = inter; + var22.arguments = inter.anObjectArray161; + aLinkedList_1471.pushBack(var22); + break label531; + } + } + } + } else { + var30 = new CS2Script(); + var30.aClass11_2449 = inter; + var30.arguments = inter.anObjectArray161; + aLinkedList_1471.pushBack(var30); + } + + inter.anInt284 = PacketParser.anInt87; + } + + if (inter.anObjectArray221 != null && anInt2317 > inter.anInt242) { + if (inter.anIntArray185 != null && anInt2317 - inter.anInt242 <= 32) { + label512: + for (var19 = inter.anInt242; var19 < anInt2317; ++var19) { + var29 = Class163_Sub2_Sub1.anIntArray4025[var19 & 31]; + + for (var21 = 0; var21 < inter.anIntArray185.length; ++var21) { + if (inter.anIntArray185[var21] == var29) { + var22 = new CS2Script(); + var22.aClass11_2449 = inter; + var22.arguments = inter.anObjectArray221; + aLinkedList_1471.pushBack(var22); + break label512; + } + } + } + } else { + var30 = new CS2Script(); + var30.aClass11_2449 = inter; + var30.arguments = inter.anObjectArray221; + aLinkedList_1471.pushBack(var30); + } + + inter.anInt242 = anInt2317; + } + + if (inter.anObjectArray282 != null && Class36.anInt641 > inter.anInt213) { + if (inter.anIntArray286 != null && Class36.anInt641 - inter.anInt213 <= 32) { + label493: + for (var19 = inter.anInt213; var19 < Class36.anInt641; ++var19) { + var29 = Class44.anIntArray726[var19 & 31]; + + for (var21 = 0; var21 < inter.anIntArray286.length; ++var21) { + if (inter.anIntArray286[var21] == var29) { + var22 = new CS2Script(); + var22.aClass11_2449 = inter; + var22.arguments = inter.anObjectArray282; + aLinkedList_1471.pushBack(var22); + break label493; + } + } + } + } else { + var30 = new CS2Script(); + var30.aClass11_2449 = inter; + var30.arguments = inter.anObjectArray282; + aLinkedList_1471.pushBack(var30); + } + + inter.anInt213 = Class36.anInt641; + } + + if (inter.anObjectArray174 != null && Unsorted.anInt944 > inter.anInt255) { + if (inter.anIntArray175 != null && Unsorted.anInt944 - inter.anInt255 <= 32) { + label474: + for (var19 = inter.anInt255; var19 < Unsorted.anInt944; ++var19) { + var29 = QuickChatDefinition.anIntArray3565[var19 & 31]; + + for (var21 = 0; var21 < inter.anIntArray175.length; ++var21) { + if (inter.anIntArray175[var21] == var29) { + var22 = new CS2Script(); + var22.aClass11_2449 = inter; + var22.arguments = inter.anObjectArray174; + aLinkedList_1471.pushBack(var22); + break label474; + } + } + } + } else { + var30 = new CS2Script(); + var30.aClass11_2449 = inter; + var30.arguments = inter.anObjectArray174; + aLinkedList_1471.pushBack(var30); + } + + inter.anInt255 = Unsorted.anInt944; + } + + if (inter.anObjectArray158 != null && Class49.anInt815 > inter.anInt311) { + if (inter.anIntArray274 != null && Class49.anInt815 - inter.anInt311 <= 32) { + label455: + for (var19 = inter.anInt311; var19 < Class49.anInt815; ++var19) { + var29 = anIntArray3780[var19 & 31]; + + for (var21 = 0; var21 < inter.anIntArray274.length; ++var21) { + if (inter.anIntArray274[var21] == var29) { + var22 = new CS2Script(); + var22.aClass11_2449 = inter; + var22.arguments = inter.anObjectArray158; + aLinkedList_1471.pushBack(var22); + break label455; + } + } + } + } else { + var30 = new CS2Script(); + var30.aClass11_2449 = inter; + var30.arguments = inter.anObjectArray158; + aLinkedList_1471.pushBack(var30); + } + + inter.anInt311 = Class49.anInt815; + } + + if (Class24.anInt472 > inter.anInt234 && inter.anObjectArray256 != null) { + var30 = new CS2Script(); + var30.aClass11_2449 = inter; + var30.arguments = inter.anObjectArray256; + aLinkedList_1471.pushBack(var30); + } + + if (Class110.anInt1472 > inter.anInt234 && inter.anObjectArray156 != null) { + var30 = new CS2Script(); + var30.aClass11_2449 = inter; + var30.arguments = inter.anObjectArray156; + aLinkedList_1471.pushBack(var30); + } + + if (Class167.anInt2087 > inter.anInt234 && inter.anObjectArray313 != null) { + var30 = new CS2Script(); + var30.aClass11_2449 = inter; + var30.arguments = inter.anObjectArray313; + aLinkedList_1471.pushBack(var30); + } + + if (Class121.anInt1642 > inter.anInt234 && inter.anObjectArray268 != null) { + var30 = new CS2Script(); + var30.aClass11_2449 = inter; + var30.arguments = inter.anObjectArray268; + aLinkedList_1471.pushBack(var30); + } + + if (Class140_Sub6.anInt2905 > inter.anInt234 && inter.anObjectArray315 != null) { + var30 = new CS2Script(); + var30.aClass11_2449 = inter; + var30.arguments = inter.anObjectArray315; + aLinkedList_1471.pushBack(var30); + } + + inter.anInt234 = PacketParser.anInt3213; + if (inter.anObjectArray220 != null) { + for (var19 = 0; var19 < Class3_Sub23.anInt2537; ++var19) { + CS2Script var31 = new CS2Script(); + var31.aClass11_2449 = inter; + var31.inputTextCode = Class133.inputTextCodeArray[var19]; + var31.anInt2443 = Class120.anIntArray1638[var19]; + var31.arguments = inter.anObjectArray220; + aLinkedList_1471.pushBack(var31); + } + } + + if (Class3_Sub28_Sub1.aBoolean3531 && inter.anObjectArray217 != null) { + var30 = new CS2Script(); + var30.aClass11_2449 = inter; + var30.arguments = inter.anObjectArray217; + aLinkedList_1471.pushBack(var30); + } + } + } + + if (!inter.usingScripts && Class56.aClass11_886 == null && Class67.aClass11_1017 == null && !Class38_Sub1.aBoolean2615) { + if ((inter.anInt212 >= 0 || inter.anInt228 != 0) && Class126.anInt1676 >= var12 && Unsorted.anInt1709 >= var13 && Class126.anInt1676 < var14 && Unsorted.anInt1709 < var15) { + if (inter.anInt212 >= 0) { + Class107.aClass11_1453 = interfaces[inter.anInt212]; + } else { + Class107.aClass11_1453 = inter; + } + } + + if (inter.type == 8 && Class126.anInt1676 >= var12 && Unsorted.anInt1709 >= var13 && Class126.anInt1676 < var14 && Unsorted.anInt1709 < var15) { + Class20.aClass11_439 = inter; + } + + if (inter.anInt252 > inter.height) { + Class137.method1819(Unsorted.anInt1709, inter.height, inter, Class126.anInt1676, var10 + inter.width, var11, inter.anInt252); + } + } + + if (inter.type == 0) { + handleItemSwitch(interfaces, inter.componentHash, var12, var13, var14, var15, var10 - inter.anInt247, var11 - inter.anInt208); + if (inter.aClass11Array262 != null) { + handleItemSwitch(inter.aClass11Array262, inter.componentHash, var12, var13, var14, var15, var10 - inter.anInt247, var11 - inter.anInt208); + } + + Class3_Sub31 var28 = TextureOperation23.aHashTable_3208.get(inter.componentHash); + if (var28 != null) { + GraphicDefinition.method967(var10, var13, var11, var14, var28.anInt2602, var12, var15); + } + } + } + } + } + + } + + static boolean method51(RSInterface var0) { + if (ClientCommands.commandQaOpEnabled) { + if (method44(var0).anInt2205 != 0) { + return false; + } + + if (var0.type == 0) { + return false; + } + } + + return var0.hidden; + } + + final void method38() { + try { + if (Class143.gameStage != 1000) { + boolean var2 = NPC.method1988(); + if (var2 && AudioHandler.musicEffectPlaying && WorldListEntry.aAudioChannel_2627 != null) { + WorldListEntry.aAudioChannel_2627.method2158(); + } + + if ((Class143.gameStage == 30 || Class143.gameStage == 10) && (Class3_Sub28_Sub5.forceReplaceCanvasEnable || Class53.aLong866 != 0 && Class53.aLong866 < TimeUtils.time())) { + GameObject.graphicsSettings(Class3_Sub28_Sub5.forceReplaceCanvasEnable, Class83.getWindowType(), TextureOperation.anInt2378, Unsorted.anInt3071); + } + + int var4; + int var5; + if (null == TextureOperation30.fullScreenFrame) { + Object var3; + if (GameShell.frame == null) { + var3 = Class38.gameSignlink.gameApplet; + } else { + var3 = GameShell.frame; + } + + var4 = ((Container) var3).getSize().width; + var5 = ((Container) var3).getSize().height; + if (var3 == GameShell.frame) { + Insets var6 = GameShell.frame.getInsets(); + var4 -= var6.right + var6.left; + var5 -= var6.top + var6.bottom; + } + + if (var4 != Unsorted.frameWidth || Class70.frameHeight != var5) { + if (Signlink.osName.startsWith("mac")) { + Unsorted.frameWidth = var4; + Class70.frameHeight = var5; + } else { + Class119.method1729(); + } + + Class53.aLong866 = TimeUtils.time() - -500L; + } + } + + if (TextureOperation30.fullScreenFrame != null && !TextureOperation26.aBoolean3078 && (30 == Class143.gameStage || 10 == Class143.gameStage)) { + GameObject.graphicsSettings(false, Unsorted.anInt2577, -1, -1); + } + + boolean var10 = false; + if (TextureOperation30.fullRedraw) { + var10 = true; + TextureOperation30.fullRedraw = false; + } + + if (var10) { + Unsorted.method1396(40 ^ -41); + } + + if (HDToolKit.highDetail) { + for (var4 = 0; var4 < 100; ++var4) { + Unsorted.aBooleanArray3674[var4] = true; + } + } + if (Class143.gameStage == 0) { + if (Discord.checkInitializable()) { + Discord.initialize(); + Discord.updatePresence("Coping", "", ""); + } + StartupLoadingBarInitial.draw(ColorCore.loadingbarcolor, var10, loadingBarTextToDisplay, LoadingStageNumber); + } else if (5 == Class143.gameStage) { + StartupLoadingBar.draw(false, FontType.bold); + } else if (Class143.gameStage == 10) { + Class3_Sub17.method381(); + } else if (25 != Class143.gameStage && Class143.gameStage != 28) { + if (Class143.gameStage == 30) { + Class49.method1127(0); + } else if (40 == Class143.gameStage) { + LoadingBox.draw(false, RSString.stringCombiner(new RSString[]{TextCore.ConxLost, TextCore.aString_2598, TextCore.AttemptingReestablish})); + } + } else if (Class163_Sub2_Sub1.anInt4019 == 1) { + if (Class40.anInt3293 > LinkableRSString.anInt2579) { + LinkableRSString.anInt2579 = Class40.anInt3293; + } + + var4 = 50 * (LinkableRSString.anInt2579 + -Class40.anInt3293) / LinkableRSString.anInt2579; + LoadingBox.draw(false, RSString.stringCombiner(new RSString[]{TextCore.LoadingPleaseWait2, TextCore.aString_3399, RSString.stringAnimator(var4), RSString.parse("(U(Y")})); + } else if (Class163_Sub2_Sub1.anInt4019 == 2) { + if (anInt2275 < Class162.anInt2038) { + anInt2275 = Class162.anInt2038; + } + + var4 = (-Class162.anInt2038 + anInt2275) * 50 / anInt2275 + 50; + LoadingBox.draw(false, RSString.stringCombiner(new RSString[]{TextCore.LoadingPleaseWait2, TextCore.aString_3399, RSString.stringAnimator(var4), RSString.parse("(U(Y")})); + } else { + LoadingBox.draw(false, TextCore.LoadingPleaseWait2); + } + + DeveloperConsole.INSTANCE.preDraw(); + DeveloperConsole.INSTANCE.draw(); + + if (HDToolKit.highDetail && Class143.gameStage != 0) { + HDToolKit.bufferSwap(); + + for (var4 = 0; Class3_Sub28_Sub3.anInt3557 > var4; ++var4) { + Class163_Sub1_Sub1.aBooleanArray4008[var4] = false; + } + } else { + Graphics var11; + if ((Class143.gameStage == 30 || 10 == Class143.gameStage) && rectDebugInt == 0 && !var10) { + try { + var11 = GameShell.canvas.getGraphics(); + + for (var5 = 0; Class3_Sub28_Sub3.anInt3557 > var5; ++var5) { + if (Class163_Sub1_Sub1.aBooleanArray4008[var5]) { + Unsorted.aClass158_3009.drawGraphics(Class3_Sub28_Sub18.anIntArray3768[var5], AudioChannel.anIntArray1969[var5], Entity.anIntArray2794[var5], var11, Player.anIntArray3954[var5]); + Class163_Sub1_Sub1.aBooleanArray4008[var5] = false; + } + } + } catch (Exception var8) { + GameShell.canvas.repaint(); + } + } else if (0 != Class143.gameStage) { + try { + var11 = GameShell.canvas.getGraphics(); + Unsorted.aClass158_3009.method2179(var11); + + for (var5 = 0; var5 < Class3_Sub28_Sub3.anInt3557; ++var5) { + Class163_Sub1_Sub1.aBooleanArray4008[var5] = false; + } + } catch (Exception var7) { + var7.printStackTrace(); + GameShell.canvas.repaint(); + } + } + } + + if (sweepReferenceCache) { + Class75_Sub3.sweepClientStartupReferenceCache(); + } + + if (Unsorted.aBoolean2146 && 10 == Class143.gameStage && ConfigInventoryDefinition.anInt3655 != -1) { + Unsorted.aBoolean2146 = false; + Class119.method1730(Class38.gameSignlink); + } + + DeveloperConsole.INSTANCE.postDraw(); + if (DeveloperConsole.INSTANCE.getOpen()) { + DeveloperConsole.INSTANCE.draw(); +// System.out.println("Draw developer console"); + } + DiscordRPC.discordRunCallbacks(); + } + } catch (RuntimeException var9) { + throw ClientErrorException.clientError(var9, "client.K(" + 40 + ')'); + } + } + + final void method32() { + try { + if (HDToolKit.highDetail) { + HDToolKit.method1842(); + } + + if (null != TextureOperation30.fullScreenFrame) { + Unsorted.method593(TextureOperation30.fullScreenFrame, Class38.gameSignlink); + TextureOperation30.fullScreenFrame = null; + } + + if (null != Class38.gameSignlink) { + Class38.gameSignlink.method1442(this.getClass(), 0); + } + + if (null != TextureOperation20.aClass67_1443) { + TextureOperation20.aClass67_1443.aBoolean1015 = false; + } + + TextureOperation20.aClass67_1443 = null; + if (Class3_Sub15.activeConnection != null) { + Class3_Sub15.activeConnection.close(); + Class3_Sub15.activeConnection = null; + } + + Class163_Sub1_Sub1.method2215(GameShell.canvas); + Unsorted.method1783(GameShell.canvas); + if (null != Class38.aClass146_668) { + Class38.aClass146_668.method2082(GameShell.canvas); + } + + TextureOperation12.method167(0); + MouseListeningClass.method2090(); + Class38.aClass146_668 = null; + if (null != WorldListEntry.aAudioChannel_2627) { + WorldListEntry.aAudioChannel_2627.method2163(); + } + + if (null != Class3_Sub21.aAudioChannel_2491) { + Class3_Sub21.aAudioChannel_2491.method2163(); + } + + Class58.aJs5Worker_917.close(); + TextureOperation31.aCacheResourceWorker_3159.stop(); + + try { + if (Class101.aClass30_1422 != null) { + Class101.aClass30_1422.method980(); + } + + if (Class163_Sub2.aClass30Array2998 != null) { + for (int var2 = 0; var2 < Class163_Sub2.aClass30Array2998.length; ++var2) { + if (null != Class163_Sub2.aClass30Array2998[var2]) { + Class163_Sub2.aClass30Array2998[var2].method980(); + } + } + } + + if (null != aClass30_1572) { + aClass30_1572.method980(); + } + + if (null != Unsorted.aClass30_1039) { + Unsorted.aClass30_1039.method980(); + } + } catch (IOException var3) { + } + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "client.F(" + (byte) 23 + ')'); + } + } + + public final void init() { + try { + GameConfig.WORLD = GameConfig.WORLD_OVERRIDE == -1 ? ObjectDefinition.paramWorldID : GameConfig.WORLD_OVERRIDE; + ObjectDefinition.paramWorldID = GameConfig.WORLD_OVERRIDE == -1 ? 1 : GameConfig.WORLD_OVERRIDE; + + Class44.paramModeWhere = Integer.parseInt(Objects.requireNonNull(this.getParameter("modewhere"))); + if (Class44.paramModeWhere < LIVE_ENVIRONMENT || Class44.paramModeWhere > LOCAL_ENVIRONMENT) { + Class44.paramModeWhere = 0; + } + + TextureOperation20.paramModeWhat = Integer.parseInt(Objects.requireNonNull(this.getParameter("modewhat"))); + if (TextureOperation20.paramModeWhat < 0 || TextureOperation20.paramModeWhat > 2) { + TextureOperation20.paramModeWhat = 0; + } + + String var1 = this.getParameter("advertsuppressed"); + paramAdvertisementSuppressed = var1 != null && var1.equals("1"); + + try { + Class3_Sub20.paramLanguage = Integer.parseInt(Objects.requireNonNull(this.getParameter("lang"))); + } catch (Exception var10) { + Class3_Sub20.paramLanguage = 0; + } + Unsorted.languageSetter(Class3_Sub20.paramLanguage); + + String var2 = this.getParameter("objecttag"); + Class163_Sub2_Sub1.paramObjectTagEnabled = var2 != null && var2.equals("1"); + + String var3 = this.getParameter("js"); + Unsorted.paramJavaScriptEnabled = null != var3 && var3.equals("1"); + + String var4 = this.getParameter("game"); + if (var4 != null && var4.equals("1")) { + Class158.paramGameTypeID = 1; + } else { + Class158.paramGameTypeID = 0; + } + + try { + Class3_Sub26.paramAffid = Integer.parseInt(Objects.requireNonNull(this.getParameter("affid"))); + } catch (Exception var9) { + Class3_Sub26.paramAffid = 0; + } + + Class163_Sub2.paramSettings = TextCore.aString_1745.getParamValue(this); + if (Class163_Sub2.paramSettings == null) { + Class163_Sub2.paramSettings = RSString.parse(""); + } + + String var5 = this.getParameter("country"); + if (var5 != null) { + try { + Class3_Sub31.paramCountryID = Integer.parseInt(var5); + } catch (Exception var8) { + Class3_Sub31.paramCountryID = 0; + } + } + + String var6 = this.getParameter("haveie6"); + Class106.paramUserUsingInternetExplorer = null != var6 && var6.equals("1"); + + clientInstance = this; + this.method41(32 - -TextureOperation20.paramModeWhat); + } catch (RuntimeException var11) { + throw ClientErrorException.clientError(var11, "client.init()"); + } + } + + final void method39() { + try { + Class119.method1729(); + TextureOperation31.aCacheResourceWorker_3159 = new CacheResourceWorker(); + Class58.aJs5Worker_917 = new Js5Worker(); + + if (TextureOperation20.paramModeWhat != LIVE_ENVIRONMENT) { + Class3_Sub6.softReferenceTestArray = new byte[50][]; + } + + CS2Script.userCurrentWorldID = ObjectDefinition.paramWorldID; + + Unsorted.parsePreferences(Class38.gameSignlink); + SystemLogger.logInfo("port: " + Class53.anInt867); + SystemLogger.logInfo("MSIP: " + GameConfig.IP_MANAGEMENT); + + if (Class44.paramModeWhere == LIVE_ENVIRONMENT) { + ClientErrorException.worldListHost = Objects.requireNonNull(this.getCodeBase()).getHost(); + Class53.anInt867 = GameConfig.SERVER_PORT + ObjectDefinition.paramWorldID; //443 is secure port + anInt3773 = '\uaa4a'; + + } else if (Class44.paramModeWhere == OFFICE_ENVIRONMENT) { + ClientErrorException.worldListHost = Objects.requireNonNull(this.getCodeBase()).getHost(); + //System.out.println("port = " + Class53.anInt867); + Class53.anInt867 = ObjectDefinition.paramWorldID + 50000; + anInt3773 = 40000 + ObjectDefinition.paramWorldID; + + } else if (Class44.paramModeWhere == LOCAL_ENVIRONMENT) { + ClientErrorException.worldListHost = "127.0.0.1"; + System.out.println("Setting worldListHost to 127.0.0.1, port = " + Class53.anInt867); + Class53.anInt867 = ObjectDefinition.paramWorldID + 50000; + anInt3773 = ObjectDefinition.paramWorldID + 40000; + } + + switch (Class158.paramGameTypeID) { + case GAME_TYPE_RUNESCAPE: + AudioThread.aShortArrayArray344 = RunescapeGameAppearance.INSTANCE.getAShortArrayArray3654(); + Class91.aShortArray1311 = RunescapeGameAppearance.INSTANCE.getAShortArray3349(); + Class101.aShortArrayArray1429 = RunescapeGameAppearance.INSTANCE.getAShortArrayArray435(); + Class3_Sub25.aShortArray2548 = RunescapeGameAppearance.INSTANCE.getAShortArray3011(); + break; + + case GAME_TYPE_MECHSCAPE: + ClientCommands.shiftClickEnabled = true; + Class92.defaultScreenColorRgb = 16777215; + Class92.defaultRegionAmbientRGB = 0; + AudioThread.aShortArrayArray344 = MechscapeGameAppearance.INSTANCE.getAShortArrayArray1619(); + Class101.aShortArrayArray1429 = MechscapeGameAppearance.INSTANCE.getAShortArrayArray2634(); + Class3_Sub25.aShortArray2548 = MechscapeGameAppearance.INSTANCE.getAShortArray63(); + Class91.aShortArray1311 = MechscapeGameAppearance.INSTANCE.getAShortArray2219(); + break; + + } + + currentPort = Class53.anInt867; + Class162.anInt2036 = anInt3773; + Class38_Sub1.accRegistryIp = GameConfig.IP_MANAGEMENT; + Class123.anInt1658 = anInt3773; + TextureOperation38.aShortArray3455 = TextureOperation16.aShortArray3110 = Class136.aShortArray1779 = TextureOperation38.aShortArray3453 = new short[256]; + + Class140_Sub6.accRegistryPort = Class123.anInt1658; + if (Signlink.anInt1214 == 3 && 2 != Class44.paramModeWhere) { + CS2Script.userCurrentWorldID = ObjectDefinition.paramWorldID; + } + + KeyboardListener.adjustKeyCodeMap(); + TextureOperation34.method193((byte) 115, GameShell.canvas); + ItemDefinition.method1119(GameShell.canvas, false); + Class38.aClass146_668 = Class21.method916(); + if (null != Class38.aClass146_668) { + Class38.aClass146_668.method2084(GameShell.canvas, -97); + } + + try { + if (Class38.gameSignlink.cacheDataFile != null) { + Class101.aClass30_1422 = new Class30(Class38.gameSignlink.cacheDataFile, 5200); + + for (int var2 = 0; var2 < 29; ++var2) { + Class163_Sub2.aClass30Array2998[var2] = new Class30(Class38.gameSignlink.cacheIndicesFiles[var2], 6000); + } + + aClass30_1572 = new Class30(Class38.gameSignlink.cacheChecksumFile, 6000); + AtmosphereParser.aClass41_1186 = new Class41(255, Class101.aClass30_1422, aClass30_1572, 500000); + Unsorted.aClass30_1039 = new Class30(Class38.gameSignlink.randomDatFile, 24); + Class38.gameSignlink.cacheIndicesFiles = null; + Class38.gameSignlink.cacheChecksumFile = null; + Class38.gameSignlink.randomDatFile = null; + Class38.gameSignlink.cacheDataFile = null; + } + } catch (IOException var3) { + Unsorted.aClass30_1039 = null; + Class101.aClass30_1422 = null; + aClass30_1572 = null; + AtmosphereParser.aClass41_1186 = null; + } + + Class167.aString_2083 = TextCore.RSLoadingPleaseWait; + if (Class44.paramModeWhere != 0) { + ClientCommands.fpsOverlayEnabled = true; + } + //Class3_Sub26.tweeningEnabled = true; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "client.B(" + 2 + ')'); + } + } + + final void method33() { + // TODO Do we still need this method here? + } + + private void method46(int var2) { + try { + ++Class58.aJs5Worker_917.errors; + Class17.aClass64_413 = null; + + Class58.aJs5Worker_917.status = var2; + Unsorted.js5Connection = null; + PacketParser.anInt80 = 0; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "client.P(" + true + ',' + var2 + ')'); + } + } + + private void method47() { + try { + for (Class3_Sub23.anInt2537 = 0; Unsorted.method591(83) && Class3_Sub23.anInt2537 < 128; ++Class3_Sub23.anInt2537) { + Class133.inputTextCodeArray[Class3_Sub23.anInt2537] = Class3_Sub28_Sub9.anInt3624; + Class120.anIntArray1638[Class3_Sub23.anInt2537] = TextureOperation7.anInt3342; + } + + ++Class106.anInt1446; + if (-1 != ConfigInventoryDefinition.anInt3655) { + GraphicDefinition.method967(0, 0, 0, Class23.canvasWidth, ConfigInventoryDefinition.anInt3655, 0, GroundItem.canvasHeight); + } + + ++PacketParser.anInt3213; + if (HDToolKit.highDetail) { + int var2 = 19137023; + + label191: + for (int var3 = 0; var3 < 32768; ++var3) { + NPC var4 = NPC.npcs[var3]; + if (null != var4) { + byte var5 = var4.definition.aByte1267; + if ((var5 & 2) > 0 && var4.anInt2816 == 0 && 10.0D > Math.random() * 1000.0D) { + int var6 = (int) Math.round(-1.0D + 2.0D * Math.random()); + int var7 = (int) Math.round(Math.random() * 2.0D - 1.0D); + if (var6 != 0 || 0 != var7) { + var4.aByteArray2795[0] = 1; + var4.xOffsets2767[0] = var6 + (var4.xAxis >> 7); + var4.yOffsets2755[0] = var7 + (var4.yAxis >> 7); + AtmosphereParser.aClass91Array1182[WorldListCountry.localPlane].method1502(var4.xAxis >> 7, var4.getSize(), false, 0, var4.getSize(), var4.yAxis >> 7); + if (0 <= var4.xOffsets2767[0] && var4.xOffsets2767[0] <= 104 + -var4.getSize() && 0 <= var4.yOffsets2755[0] && var4.yOffsets2755[0] <= 104 - var4.getSize() && AtmosphereParser.aClass91Array1182[WorldListCountry.localPlane].method1500(var4.yAxis >> 7, var4.yOffsets2755[0], var4.xOffsets2767[0], var4.xAxis >> 7)) { + if (var4.getSize() > 1) { + for (int var8 = var4.xOffsets2767[0]; var8 < var4.xOffsets2767[0] - -var4.getSize(); ++var8) { + for (int var9 = var4.yOffsets2755[0]; var4.yOffsets2755[0] + var4.getSize() > var9; ++var9) { + if ((var2 & AtmosphereParser.aClass91Array1182[WorldListCountry.localPlane].anIntArrayArray1304[var8][var9]) != 0) { + continue label191; + } + } + } + } + + var4.anInt2816 = 1; + } + } + } + + Unsorted.method1180((byte) -122, var4); + Class17.method904(65536, var4); + RenderAnimationDefinition.method900(var4); + AtmosphereParser.aClass91Array1182[WorldListCountry.localPlane].method1489(var4.xAxis >> 7, false, (byte) 85, var4.yAxis >> 7, var4.getSize(), var4.getSize()); + } + } + } + + if (!HDToolKit.highDetail) { + Unsorted.method744(); + } else if (0 == LoginHandler.loginStage && 0 == Unsorted.registryStage) { + if (Class133.anInt1753 == 2) { + CS2Script.method379(); + } else { + InterfaceWidget.d(65535); + } + + if (14 > NPC.anInt3995 >> 7 || NPC.anInt3995 >> 7 >= 90 || 14 > Class77.anInt1111 >> 7 || Class77.anInt1111 >> 7 >= 90) { + TextureOperation26.method195(); + } + } + + while (true) { + CS2Script var11 = (CS2Script) PacketParser.aLinkedList_82.method1220(); + RSInterface var12; + RSInterface var13; + if (var11 == null) { + while (true) { + var11 = (CS2Script) Class65.aLinkedList_983.method1220(); + if (null == var11) { + while (true) { + var11 = (CS2Script) aLinkedList_1471.method1220(); + if (null == var11) { + if (Class56.aClass11_886 != null) { + PacketParser.method829(); + } + + if (null != AudioThread.aClass64_351 && AudioThread.aClass64_351.anInt978 == 1) { + if (null != AudioThread.aClass64_351.anObject974) { + Class99.method1596(TextureOperation5.aString_3295, (byte) 126, Unsorted.aBoolean2154); + } + + Unsorted.aBoolean2154 = false; + TextureOperation5.aString_3295 = null; + AudioThread.aClass64_351 = null; + } + + if (Class44.anInt719 % 1500 == 0) { + Class72.method1293(); + } + + return; + } + + var12 = var11.aClass11_2449; + if (0 <= var12.anInt191) { + var13 = Unsorted.getRSInterface(var12.parentId); + if (var13 == null || null == var13.aClass11Array262 || var12.anInt191 >= var13.aClass11Array262.length || var12 != var13.aClass11Array262[var12.anInt191]) { + continue; + } + } + + Class43.method1065(var11); + } + } + + var12 = var11.aClass11_2449; + if (var12.anInt191 >= 0) { + var13 = Unsorted.getRSInterface(var12.parentId); + if (null == var13 || var13.aClass11Array262 == null || var13.aClass11Array262.length <= var12.anInt191 || var12 != var13.aClass11Array262[var12.anInt191]) { + continue; + } + } + + Class43.method1065(var11); + } + } + + var12 = var11.aClass11_2449; + if (var12.anInt191 >= 0) { + var13 = Unsorted.getRSInterface(var12.parentId); + if (null == var13 || null == var13.aClass11Array262 || var12.anInt191 >= var13.aClass11Array262.length || var12 != var13.aClass11Array262[var12.anInt191]) { + continue; + } + } + + Class43.method1065(var11); + } + } catch (RuntimeException var10) { + throw ClientErrorException.clientError(var10, "client." + (byte) 1 + ')'); + } + } + + private void method48() { + try { + boolean var2 = Class58.aJs5Worker_917.process(); + if (!var2) { + this.method49(); + } + + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "client.J(" + true + ')'); + } + } + + private void method49() { + if (Class58.aJs5Worker_917.errors > Class163_Sub2_Sub1.anInt4026) { + anInt3068 = 5 * 50 * (Class58.aJs5Worker_917.errors + -1); + + //Port swap + if (Class162.anInt2036 == Class140_Sub6.accRegistryPort) { + Class140_Sub6.accRegistryPort = currentPort; + } else { + Class140_Sub6.accRegistryPort = Class162.anInt2036; + } + + if (anInt3068 > 3000) { + anInt3068 = 3000; + } + + if (Class58.aJs5Worker_917.errors >= 2 && Class58.aJs5Worker_917.status == 6) { + this.errorPrint("js5connect_outofdate"); + Class143.gameStage = 1000; + return; + } + + if (Class58.aJs5Worker_917.errors >= 4 && Class58.aJs5Worker_917.status == -1) { + this.errorPrint("js5crc"); + Class143.gameStage = 1000; + return; + } + + if (Class58.aJs5Worker_917.errors >= 4 && (Class143.gameStage == 0 || Class143.gameStage == 5)) { + if (Class58.aJs5Worker_917.status == 7 || Class58.aJs5Worker_917.status == 9) { + this.errorPrint("js5connect_full"); + } else if (Class58.aJs5Worker_917.status > 0) { + this.errorPrint("js5connect"); + } else { + this.errorPrint("js5io"); + } + + Class143.gameStage = 1000; + return; + } + } + + Class163_Sub2_Sub1.anInt4026 = Class58.aJs5Worker_917.errors; + if (anInt3068 > 0) { + --anInt3068; + } else { + try { + if (PacketParser.anInt80 == 0) { + System.out.println("Trying " + GameConfig.JS5_SERVER_PORT); + Class17.aClass64_413 = Class38.gameSignlink.method1441((byte) 8, Class38_Sub1.accRegistryIp, GameConfig.JS5_SERVER_PORT); + ++PacketParser.anInt80; + } + + if (PacketParser.anInt80 == 1) { + + /* If the connection is null we reset the JS5 port to the backup server JS5 for compatibility reasons */ + if (2 == Objects.requireNonNull(Class17.aClass64_413).anInt978) { + GameConfig.JS5_SERVER_PORT = GameConfig.SERVER_PORT + ObjectDefinition.paramWorldID; + this.method46(1000); + return; + } + + if (Class17.aClass64_413.anInt978 == 1) { + ++PacketParser.anInt80; + } + } + + if (2 == PacketParser.anInt80) { + Unsorted.js5Connection = new Connection((Socket) Objects.requireNonNull(Class17.aClass64_413).anObject974, Class38.gameSignlink); + DataBuffer var2 = new DataBuffer(9); + var2.writeByte(15); //JS5 handshake + var2.writeInt(GameConfig.CLIENT_BUILD); + var2.writeInt(GameConfig.CLIENT_VERSION); + Unsorted.js5Connection.sendBytes(var2.buffer, 9); + ++PacketParser.anInt80; + TextureOperation13.aLong3366 = TimeUtils.time(); + } + + if (3 == PacketParser.anInt80) { + if (Class143.gameStage != 0 && Class143.gameStage != 5 && 0 >= Unsorted.js5Connection.availableBytes()) { + if (TimeUtils.time() + -TextureOperation13.aLong3366 > 30000) { + this.method46(1001); + return; + } + } else { + int var5 = Unsorted.js5Connection.readByte(); + if (var5 != 0) { + this.method46(var5); + return; + } + + ++PacketParser.anInt80; + } + } + + if (PacketParser.anInt80 == 4) { + boolean var6 = Class143.gameStage == 5 || Class143.gameStage == 10 || Class143.gameStage == 28; + Class58.aJs5Worker_917.connect(!var6, Unsorted.js5Connection); + Unsorted.js5Connection = null; + Class17.aClass64_413 = null; + PacketParser.anInt80 = 0; + } + } catch (IOException var3) { + this.method46(1002); + } + + } + } + + private void method52(int var1) { + try { + if (!Unsorted.aBoolean2146) { + while (Unsorted.method591(107)) { + if (TextureOperation7.anInt3342 == 115 || TextureOperation7.anInt3342 == 83) { + Unsorted.aBoolean2146 = true; + } + } + } + + if (var1 >= 46) { + int var3; + if (anInt1354 == 0) { + Runtime var10 = Runtime.getRuntime(); + var3 = (int) ((var10.totalMemory() - var10.freeMemory()) / 1024L); + long var4 = TimeUtils.time(); + if (aLong3296 == 0) { + aLong3296 = var4; + } + + if (var3 > 16384 && 5000L > -aLong3296 + var4) { + if (-aLong1310 + var4 > 1000L) { + System.gc(); + aLong1310 = var4; + } + + LoadingStageNumber = 5; + loadingBarTextToDisplay = TextCore.AllocatingMemory; + } else { + loadingBarTextToDisplay = TextCore.AllocatedMemory; + anInt1354 = 10; + LoadingStageNumber = 5; + } + } else { + int var2; + if (anInt1354 == 10) { + Class68.method1267(); + + for (var2 = 0; var2 < 4; ++var2) { + AtmosphereParser.aClass91Array1182[var2] = new Class91(); + } + + LoadingStageNumber = 10; + anInt1354 = 30; + loadingBarTextToDisplay = TextCore.CreatedWorld; + } else if (anInt1354 == 30) { + if (Unsorted.aClass8_1936 == null) { + Unsorted.aClass8_1936 = new Class8(Class58.aJs5Worker_917, TextureOperation31.aCacheResourceWorker_3159); + } + + if (Unsorted.aClass8_1936.method837()) { + CacheIndex.skeletonsIndex = Class8.getCacheIndex(false, true, true, 0); + CacheIndex.skinsIndex = Class8.getCacheIndex(false, true, true, 1); + CacheIndex.configurationsIndex = Class8.getCacheIndex(true, true, false, 2); + CacheIndex.interfacesIndex = Class8.getCacheIndex(false, true, true, 3); + CacheIndex.soundFXIndex = Class8.getCacheIndex(false, true, true, 4); + CacheIndex.landscapesIndex = Class8.getCacheIndex(true, true, true, 5); + CacheIndex.musicIndex = Class8.getCacheIndex(true, false, true, 6); + CacheIndex.modelsIndex = Class8.getCacheIndex(false, true, true, 7); + CacheIndex.spritesIndex = Class8.getCacheIndex(false, true, true, 8); + CacheIndex.texturesIndex = Class8.getCacheIndex(false, true, true, 9); + CacheIndex.huffmanEncodingIndex = Class8.getCacheIndex(false, true, true, 10); + CacheIndex.music2Index = Class8.getCacheIndex(false, true, true, 11); + CacheIndex.interfaceScriptsIndex = Class8.getCacheIndex(false, true, true, 12); + CacheIndex.fontsIndex = Class8.getCacheIndex(false, true, true, 13); + CacheIndex.soundFX2Index = Class8.getCacheIndex(false, false, true, 14); + CacheIndex.soundFX3Index = Class8.getCacheIndex(false, true, true, 15); + CacheIndex.objectConfigIndex = Class8.getCacheIndex(false, true, true, 16); + CacheIndex.clientscriptMaskIndex = Class8.getCacheIndex(false, true, true, 17); + CacheIndex.npcConfigIndex = Class8.getCacheIndex(false, true, true, 18); + CacheIndex.itemConfigIndex = Class8.getCacheIndex(false, true, true, 19); + CacheIndex.animationIndex = Class8.getCacheIndex(false, true, true, 20); + CacheIndex.graphicFXIndex = Class8.getCacheIndex(false, true, true, 21); + CacheIndex.clientScriptConfigIndex = Class8.getCacheIndex(false, true, true, 22); + CacheIndex.worldmapIndex = Class8.getCacheIndex(true, true, true, 23); + CacheIndex.quickchatMessagesIndex = Class8.getCacheIndex(false, true, true, 24); + CacheIndex.quickchatMenusIndex = Class8.getCacheIndex(false, true, true, 25); + CacheIndex.materialsIndex = Class8.getCacheIndex(true, true, true, 26); + CacheIndex.particlesConfigIndex = Class8.getCacheIndex(false, true, true, 27); + CacheIndex.libIndex = Class8.getCacheIndex(false, true, true, 28); + LoadingStageNumber = 15; + loadingBarTextToDisplay = TextCore.ConxUpdateServer; + anInt1354 = 40; + } else { + loadingBarTextToDisplay = TextCore.LoadingConnecting; + LoadingStageNumber = 12; + } + } else if (anInt1354 == 40) { + var2 = 0; + + for (var3 = 0; var3 < 29; ++var3) { + var2 += Unsorted.aClass151_Sub1Array2601[var3].method2111() * anIntArray3288[var3] / 100; + } + + if (var2 < 100) { //!= 100 + if (var2 != 0) { + loadingBarTextToDisplay = RSString.stringCombiner(new RSString[]{TextCore.CheckingForUpdates, RSString.stringAnimator(var2), RSString.parse("(U")}); + } + + LoadingStageNumber = 20; + } else { + LoadingStageNumber = 20; + loadingBarTextToDisplay = TextCore.LoadedUpdateList; + Sprites.getSpriteFromArchive(CacheIndex.spritesIndex); + Class97.method1593(111, CacheIndex.spritesIndex); + TextureOperation20.method233(28280, CacheIndex.spritesIndex); + anInt1354 = 45; + } + } else if (anInt1354 == 45) { + Class140_Sub3.method1959(TextureOperation17.stereoSound); + aClass3_Sub24_Sub4_1193 = new Class3_Sub24_Sub4(); + aClass3_Sub24_Sub4_1193.method479(); + WorldListEntry.aAudioChannel_2627 = AudioChannel.method1195(22050, Class38.gameSignlink, GameShell.canvas, 0); + WorldListEntry.aAudioChannel_2627.method2154(aClass3_Sub24_Sub4_1193); + AudioHandler.method897(aClass3_Sub24_Sub4_1193, CacheIndex.soundFX3Index, CacheIndex.soundFX2Index, CacheIndex.soundFXIndex); + Class3_Sub21.aAudioChannel_2491 = AudioChannel.method1195(2048, Class38.gameSignlink, GameShell.canvas, 1); + Class3_Sub26.aClass3_Sub24_Sub2_2563 = new Class3_Sub24_Sub2(); + Class3_Sub21.aAudioChannel_2491.method2154(Class3_Sub26.aClass3_Sub24_Sub2_2563); + Class27.resampler = new Class157(22050, Class21.sampleRate); + + int loginThemeID; + if (GameConfig.EASTER_EVENT_ENABLED) { + loginThemeID = CacheIndex.musicIndex.getArchiveForName(RSString.parse("Funny Bunnies")); + } else { + loginThemeID = CacheIndex.musicIndex.getArchiveForName(RSString.parse(GameConfig.LOGIN_THEME)); + } + + KeyboardListener.loginThemeSongArchiveID = loginThemeID; + LoadingStageNumber = 30; + anInt1354 = 50; + loadingBarTextToDisplay = TextCore.PreparedSoundEngine; + } else if (anInt1354 == 50) { + var2 = Sprites.method228(CacheIndex.spritesIndex, CacheIndex.fontsIndex); + var3 = 6; + if (var3 <= var2) { + loadingBarTextToDisplay = TextCore.LoadedFonts; + LoadingStageNumber = 35; + anInt1354 = 60; + } else { + loadingBarTextToDisplay = RSString.stringCombiner(new RSString[]{TextCore.LoadingFonts, RSString.stringAnimator(100 * var2 / var3), RSString.parse("(U")}); + LoadingStageNumber = 35; + } + } else if (60 == anInt1354) { + var2 = Unsorted.method599(CacheIndex.spritesIndex); + var3 = 2; + if (var3 <= var2) { + loadingBarTextToDisplay = TextCore.LoadedTitleScreen; + anInt1354 = 65; + } else { + loadingBarTextToDisplay = RSString.stringCombiner(new RSString[]{TextCore.LoadingTitleScreen, RSString.stringAnimator(100 * var2 / var3), RSString.parse("(U")}); + } + LoadingStageNumber = 40; + } else if (anInt1354 == 65) { + Class3_Sub28_Sub9.method581(CacheIndex.fontsIndex, CacheIndex.spritesIndex); + LoadingStageNumber = 45; + loadingBarTextToDisplay = TextCore.OpenedTitleScreen; + Class117.method1719(5); + anInt1354 = 70; + } else if (anInt1354 == 70) { + CacheIndex.configurationsIndex.method2113(); + byte var7 = 0; + var2 = var7 + CacheIndex.configurationsIndex.method2136((byte) -124); + CacheIndex.objectConfigIndex.method2113(); + var2 += CacheIndex.objectConfigIndex.method2136((byte) -128); + CacheIndex.libIndex.method2113(); + var2 += CacheIndex.libIndex.method2136((byte) -124); + CacheIndex.clientscriptMaskIndex.method2113(); + var2 += CacheIndex.clientscriptMaskIndex.method2136((byte) -123); + CacheIndex.npcConfigIndex.method2113(); + var2 += CacheIndex.npcConfigIndex.method2136((byte) -127); + CacheIndex.itemConfigIndex.method2113(); + var2 += CacheIndex.itemConfigIndex.method2136((byte) -128); + CacheIndex.animationIndex.method2113(); + var2 += CacheIndex.animationIndex.method2136((byte) -122); + CacheIndex.graphicFXIndex.method2113(); + var2 += CacheIndex.graphicFXIndex.method2136((byte) -122); + CacheIndex.clientScriptConfigIndex.method2113(); + var2 += CacheIndex.clientScriptConfigIndex.method2136((byte) -128); + CacheIndex.quickchatMessagesIndex.method2113(); + var2 += CacheIndex.quickchatMessagesIndex.method2136((byte) -126); + CacheIndex.quickchatMenusIndex.method2113(); + var2 += CacheIndex.quickchatMenusIndex.method2136((byte) -128); + CacheIndex.particlesConfigIndex.method2113(); + var2 += CacheIndex.particlesConfigIndex.method2136((byte) -124); + if (var2 >= 1100) { + Class132.method1799((byte) 96, CacheIndex.configurationsIndex); + FloorOverlayDefinition.method631(CacheIndex.configurationsIndex); + Class3_Sub28_Sub8.method575(CacheIndex.configurationsIndex, -1); + method375(CacheIndex.modelsIndex, CacheIndex.configurationsIndex); + Class108.method1661(CacheIndex.objectConfigIndex, CacheIndex.modelsIndex); + ItemDefinition.method1103(CacheIndex.modelsIndex, CacheIndex.npcConfigIndex); + GameObject.method1864(CacheIndex.itemConfigIndex, Class157.aClass3_Sub28_Sub17_Sub1_2000, CacheIndex.modelsIndex); + StructDefinitionProvider.setIndex(CacheIndex.configurationsIndex); + Class3_Sub20.method392(CacheIndex.skinsIndex, CacheIndex.animationIndex, CacheIndex.skeletonsIndex); + Unsorted.method1053(CacheIndex.configurationsIndex); + Class158.method2180(CacheIndex.modelsIndex, CacheIndex.graphicFXIndex); + Class107.method1648(CacheIndex.clientScriptConfigIndex); + LinkableRSString.method731(CacheIndex.configurationsIndex); + Unsorted.method89(CacheIndex.fontsIndex, CacheIndex.spritesIndex, CacheIndex.interfacesIndex, CacheIndex.modelsIndex); + TextureOperation23.method250(CacheIndex.configurationsIndex); + EnumDefinitionProvider.setIndex(CacheIndex.clientscriptMaskIndex); + QuickChat.method205(CacheIndex.quickchatMenusIndex, CacheIndex.quickchatMessagesIndex, new Class7()); + QuickChat.method1236(CacheIndex.quickchatMenusIndex, CacheIndex.quickchatMessagesIndex); + Class58.method1197(CacheIndex.configurationsIndex); + Unsorted.method2065(CacheIndex.configurationsIndex, CacheIndex.spritesIndex); + Class107.method1645(CacheIndex.configurationsIndex, CacheIndex.spritesIndex); + LoadingStageNumber = 50; + loadingBarTextToDisplay = TextCore.LoadedConfig; + Class29.method968(128); + anInt1354 = 80; + } else { + loadingBarTextToDisplay = RSString.stringCombiner(new RSString[]{TextCore.LoadingConfig, RSString.stringAnimator(var2 / 11), RSString.parse("(U")}); + LoadingStageNumber = 50; + } + } else if (anInt1354 == 80) { + var2 = Sprites.method107(CacheIndex.spritesIndex); + var3 = 15; + if (var2 < var3) { + loadingBarTextToDisplay = RSString.stringCombiner(new RSString[]{TextCore.LoadingSprites, RSString.stringAnimator(var2 * 100 / var3), RSString.parse("(U")}); + LoadingStageNumber = 60; + } else { + Sprites.method887(CacheIndex.spritesIndex); + anInt1354 = 90; + LoadingStageNumber = 60; + loadingBarTextToDisplay = TextCore.LoadedSprites; + } + } else if (anInt1354 != 90) { + if (anInt1354 == 100) { + if (TextureOperation25.method334(CacheIndex.spritesIndex)) { + anInt1354 = 110; + } + } else if (anInt1354 == 110) { + TextureOperation20.aClass67_1443 = new Class67(); + Class38.gameSignlink.startThread(10, TextureOperation20.aClass67_1443); + loadingBarTextToDisplay = TextCore.LoadedInputHandler; + LoadingStageNumber = 75; + anInt1354 = 120; + } else if (anInt1354 != 120) { + if (anInt1354 == 130) { + if (CacheIndex.interfacesIndex.method2113()) { + if (CacheIndex.interfaceScriptsIndex.method2113()) { + if (CacheIndex.fontsIndex.method2113()) { + if (CacheIndex.worldmapIndex.method2127(TextCore.aString_1342)) { + Class75_Sub4.method1353(Sprites.aSoftwareSpriteArray2140, CacheIndex.worldmapIndex); + LoadingStageNumber = 95; + loadingBarTextToDisplay = TextCore.LoadedInterfaces; + anInt1354 = 135; + } else { + loadingBarTextToDisplay = RSString.stringCombiner(new RSString[]{TextCore.LoadingInterfaces, RSString.stringAnimator(90 - -(CacheIndex.worldmapIndex.method2116(TextCore.aString_1342) / 10)), RSString.parse("(U")}); + LoadingStageNumber = 85; + } + } else { + loadingBarTextToDisplay = RSString.stringCombiner(new RSString[]{TextCore.LoadingInterfaces, RSString.stringAnimator(85 - -(CacheIndex.fontsIndex.method2136((byte) -124) / 20)), RSString.parse("(U")}); + LoadingStageNumber = 85; + } + } else { + loadingBarTextToDisplay = RSString.stringCombiner(new RSString[]{TextCore.LoadingInterfaces, RSString.stringAnimator(75 - -(CacheIndex.interfaceScriptsIndex.method2136((byte) -128) / 10)), RSString.parse("(U")}); + LoadingStageNumber = 85; + } + } else { + loadingBarTextToDisplay = RSString.stringCombiner(new RSString[]{TextCore.LoadingInterfaces, RSString.stringAnimator(CacheIndex.interfacesIndex.method2136((byte) -123) * 3 / 4), RSString.parse("(U")}); + LoadingStageNumber = 85; + } + } else if (135 == anInt1354) { + var2 = Class121.method1735(); + if (-1 == var2) { + LoadingStageNumber = 95; + loadingBarTextToDisplay = TextCore.LoadingWLD; + } else if (var2 == 7 || var2 == 9) { + this.errorPrint("worldlistfull"); + Class117.method1719(1000); + } else if (Class30.loadedWorldList) { + loadingBarTextToDisplay = TextCore.LoadedWLD; + anInt1354 = 140; + LoadingStageNumber = 96; + } else { + this.errorPrint("worldlistio_" + var2); + Class117.method1719(1000); + } + } else if (anInt1354 == 140) { + loginScreenInterfaceID = CacheIndex.interfacesIndex.getArchiveForName(RSString.parse("loginscreen")); + CacheIndex.landscapesIndex.method2115(-9, false); + CacheIndex.musicIndex.method2115(111, false);//true + CacheIndex.spritesIndex.method2115(-76, true); + CacheIndex.fontsIndex.method2115(91, true); + CacheIndex.huffmanEncodingIndex.method2115(-116, true); + CacheIndex.interfacesIndex.method2115(99, true); + LoadingStageNumber = 97; + loadingBarTextToDisplay = TextCore.Starting3DLibrary; + anInt1354 = 150; + sweepReferenceCache = true; + } else if (anInt1354 == 150) { + Class88.method1454(); + if (Unsorted.aBoolean2146) { + Class3_Sub28_Sub9.anInt3622 = 0; + Unsorted.anInt3671 = 0; + Unsorted.anInt2577 = 0; + Class3_Sub20.anInt2488 = 0; + } + + Unsorted.aBoolean2146 = true; + Class119.method1730(Class38.gameSignlink); + GameObject.graphicsSettings(false, Unsorted.anInt2577, -1, -1); + LoadingStageNumber = 100; + anInt1354 = 160; + loadingBarTextToDisplay = TextCore.Started3DLibrary; + } else if (anInt1354 == 160) { + TextureOperation1.method219(true); + } + } else if (CacheIndex.huffmanEncodingIndex.method2125(RSString.parse(""), TextCore.HasHuffman)) { + Class36 var9 = new Class36(CacheIndex.huffmanEncodingIndex.method2123(RSString.parse(""), TextCore.HasHuffman)); + Class1.method69(var9); + loadingBarTextToDisplay = TextCore.LoadedWordPack; + anInt1354 = 130; + LoadingStageNumber = 80; + } else { + loadingBarTextToDisplay = RSString.stringCombiner(new RSString[]{TextCore.LoadingWordPack, TextCore.aString_37}); + LoadingStageNumber = 80; + } + } else if (CacheIndex.materialsIndex.method2113()) { + Class102 var8 = new Class102(CacheIndex.texturesIndex, CacheIndex.materialsIndex, CacheIndex.spritesIndex, !Class25.aBoolean488); + Class51.method1140(var8); + if (Unsorted.anInt3625 == 1) { + Class51.method1137(0.9F); + } + + if (2 == Unsorted.anInt3625) { + Class51.method1137(0.8F); + } + + if (Unsorted.anInt3625 == 3) { + Class51.method1137(0.7F); + } + + if (Unsorted.anInt3625 == 4) { + Class51.method1137(0.6F); + } + + loadingBarTextToDisplay = TextCore.LoadedTextures; + anInt1354 = 100; + LoadingStageNumber = 70; + } else { + loadingBarTextToDisplay = RSString.stringCombiner(new RSString[]{TextCore.LoadingTextures, RSString.stringAnimator(CacheIndex.materialsIndex.method2136((byte) -125)), RSString.parse("(U")}); + LoadingStageNumber = 70; + } + } + } + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "client.A(" + var1 + ')'); + } + } + + final void method25() { + try { + if (Class143.gameStage != 1000) { + ++Class44.anInt719; + if (Class44.anInt719 % 1000 == 1) { + GregorianCalendar var2 = new GregorianCalendar(); + Class38_Sub1.anInt2618 = var2.get(Calendar.HOUR_OF_DAY) * 600 - (-(var2.get(Calendar.MINUTE) * 10) + -(var2.get(Calendar.SECOND) / 6)); + Class24.aRandom3088.setSeed(Class38_Sub1.anInt2618); + } + + this.method48(); + if (Unsorted.aClass8_1936 != null) { + Unsorted.aClass8_1936.method838(); + } + + LinkableRSString.method728(); + Class58.method1194(); + Class32.method996(); + Unsorted.method1225(); + if (HDToolKit.highDetail) { + Class31.method990(); + } + + int var4; + if (Class38.aClass146_668 != null) { + var4 = Class38.aClass146_668.method2078(); + Class29.anInt561 = var4; + } + + if (Class143.gameStage == 0) { + this.method52(48); + Class75_Sub4.method1355(); + } else if (Class143.gameStage == 5) { + this.method52(107); + Class75_Sub4.method1355(); + } else if (Class143.gameStage == 25 || Class143.gameStage == 28) { + Class40.method1046(); + } + + if (10 == Class143.gameStage) { + this.method47(); + TextureOperation37.method267(); + Class163_Sub1_Sub1.method2216(); + LoginHandler.handleLogin(); + } else if (Class143.gameStage == 30) { + TextureOperation20.method235(); + } else if (Class143.gameStage == 40) { + LoginHandler.handleLogin(); + if (messageToDisplay != -3) { + if (messageToDisplay == 15) { + Class21.method912(); + } else if (messageToDisplay != 2) { + Class167.method2269((byte) 46); + } + } + } + + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "client.N(" + (byte) 107 + ')'); + } + } +} diff --git a/Client/src/main/java/org/runite/client/ClientCommands.java b/Client/src/main/java/org/runite/client/ClientCommands.java new file mode 100644 index 000000000..c7d6863e9 --- /dev/null +++ b/Client/src/main/java/org/runite/client/ClientCommands.java @@ -0,0 +1,277 @@ +package org.runite.client; + + +import org.rs09.SystemLogger; +import org.rs09.client.config.GameConfig; + +import java.awt.*; +import java.io.File; +import java.io.FileWriter; +import java.net.URI; + +public class ClientCommands { + + static boolean commandQaOpEnabled = false; + static boolean fpsOverlayEnabled = false; + static boolean tweeningEnabled = false; + static boolean shiftClickEnabled = false; + static boolean canDrop = false; + static boolean renderInfoOverlayEnabled = false; + /** + * Removed out of (depreciated)Properties.java + */ + private static boolean modernHotkeys; + + + + public static void ClientCommands(RSString command) { + try { + int var2; + int var3; + Runtime runtime; + if (command.equalsStringIgnoreCase(TextCore.COMMAND_GARBAGE_COLLECTOR)) { + clearClientCacheMemory(); + + for (var2 = 0; var2 < 10; ++var2) { + System.gc(); + } + + runtime = Runtime.getRuntime(); + var3 = (int) ((runtime.totalMemory() - runtime.freeMemory()) / 1024L); + BufferedDataStream.addChatMessage(null, 0, RSString.stringCombiner(new RSString[]{TextCore.memoryEquals, RSString.stringAnimator(var3), TextCore.Memoryk}), -1); + } + + int var4; + if (command.equalsStringIgnoreCase(TextCore.COMMAND_MEMORY_MANAGEMENT)) { + clearClientCacheMemory(); + + for (var2 = 0; var2 < 10; ++var2) { + System.gc(); + } + + runtime = Runtime.getRuntime(); + var3 = (int) ((runtime.totalMemory() + -runtime.freeMemory()) / 1024L); + BufferedDataStream.addChatMessage(null, 0, RSString.stringCombiner(new RSString[]{TextCore.memoryBeforeCleanup, RSString.stringAnimator(var3), TextCore.Memoryk}), -1); + Class3_Sub1.method90(1); + clearClientCacheMemory(); + + for (var4 = 0; var4 < 10; ++var4) { + System.gc(); + } + + var3 = (int) ((runtime.totalMemory() + -runtime.freeMemory()) / 1024L); + BufferedDataStream.addChatMessage(null, 0, RSString.stringCombiner(new RSString[]{TextCore.aString_2033, RSString.stringAnimator(var3), TextCore.Memoryk}), -1); + } + + if (command.equalsStringIgnoreCase(TextCore.COMMAND_PC_CACHE_SIZE)) { + BufferedDataStream.addChatMessage(null, 0, RSString.stringCombiner(new RSString[]{TextCore.aString_442, RSString.stringAnimator(Unsorted.method1727((byte) 123))}), -1); + } + + if (HDToolKit.highDetail && command.equalsStringIgnoreCase(TextCore.COMMAND_GRAPHICS_CARD_MEMORY)) { + System.out.println("oncard_geometry:" + Class31.anInt585); + System.out.println("oncard_2d:" + Class31.memory2D); + System.out.println("oncard_texture:" + Class31.anInt580); + } + + if (command.equalsStringIgnoreCase(TextCore.COMMAND_BREAK_CLIENT_CONNECTION)) { + TextureOperation20.breakClientConnection(); + } + + if (command.equalsStringIgnoreCase(TextCore.COMMAND_BREAK_JS5_CLIENT_CONNECTION)) { + Class58.aJs5Worker_917.close(); + } + + if (command.equalsStringIgnoreCase(TextCore.COMMAND_BREAK_JS5_SERVER_CONNECTION)) { + Class58.aJs5Worker_917.requestTermination(); + } + + if (command.equalsStringIgnoreCase(TextCore.COMMAND_BREAK_CONNECTION)) { + Class38.gameSignlink.method1431(); + Class3_Sub15.activeConnection.applyDummyStreams(); + Class58.aJs5Worker_917.applyDummyStreams(); + } + + if (command.equalsStringIgnoreCase(TextCore.COMMAND_REPLACE_CANVAS)) { + Class3_Sub28_Sub5.forceReplaceCanvasEnable = true; + } + + if (command.equalsStringIgnoreCase(TextCore.COMMAND_REBUILD)) { + Class117.method1719(25); + } + + if (command.equalsStringIgnoreCase(TextCore.COMMAND_TOGGLE_FPSON)) { + fpsOverlayEnabled = !fpsOverlayEnabled; + } + + if (command.equalsStringIgnoreCase(TextCore.COMMAND_DISCORD)) { + if (Desktop.isDesktopSupported() && Desktop.getDesktop().isSupported(Desktop.Action.BROWSE)) { + try { + Desktop.getDesktop().browse(new URI("https://discord.gg/UVtqkDhxVD")); + } catch(Exception e ){ + e.printStackTrace(); + } + } + } + + if(command.equalsStringIgnoreCase(TextCore.COMMAND_HISCORES) || command.equalsStringIgnoreCase(TextCore.COMMAND_HIGHSCORES)){ + int world = ObjectDefinition.paramWorldID; + String link = world == 1 ? "https://2009scape.org/services/m%3dhiscore/hiscores.html" : "https://2009scape.org/services/m=hiscore/hiscores.html?world=2"; + if (Desktop.isDesktopSupported() && Desktop.getDesktop().isSupported(Desktop.Action.BROWSE)) { + try { + Desktop.getDesktop().browse(new URI(link)); + } catch(Exception e ){ + e.printStackTrace(); + } + } + } + + if (command.equalsStringIgnoreCase(TextCore.COMMAND_RENDER_INFO)) { + renderInfoOverlayEnabled = !renderInfoOverlayEnabled; + } + + if (command.equalsStringIgnoreCase(TextCore.TOGGLE_FK)) { + boolean on = !modernHotkeys; + modernHotkeys = true; + BufferedDataStream.addChatMessage(null, 0, RSString.parse("Modern hotkeys mode toggled " + (on ? "on." : "off.")), -1); + } + + if (command.equalsStringIgnoreCase(TextCore.COMMAND_LOWRES_GRAPHICS)) { + GameObject.graphicsSettings(false, 0, -1, -1); + } + + if (command.equalsStringIgnoreCase(TextCore.COMMAND_VARPDEBUG)){ + GameConfig.VARP_DEBUG = !GameConfig.VARP_DEBUG; + BufferedDataStream.addChatMessage(null, 0, RSString.parse("Varp DEBUG turned " + (GameConfig.VARP_DEBUG ? "on" : "off")), -1); + } + + if (command.equalsStringIgnoreCase(TextCore.COMMAND_HIGHRES_GRAPHICS_WINDOW)) { + GameObject.graphicsSettings(false, 1, -1, -1); + } + + if (command.equalsStringIgnoreCase(TextCore.COMMAND_HIGHRES_GRAPHICS_RESIZE)) { + GameObject.graphicsSettings(false, 2, -1, -1); + } + + if (command.equalsStringIgnoreCase(TextCore.COMMAND_HIGHRES_GRAPHICS_FULLSCREEN)) { + GameObject.graphicsSettings(false, 3, 1024, 768); + } + + if (command.equalsStringIgnoreCase(TextCore.COMMAND_NOCLIP)) { + for (var2 = 0; var2 < 4; ++var2) { + for (var3 = 1; var3 < 103; ++var3) { + for (var4 = 1; var4 < 103; ++var4) { + AtmosphereParser.aClass91Array1182[var2].anIntArrayArray1304[var3][var4] = 0; + } + } + } + } + + if (command.startsWith(TextCore.COMMAND_SET_PARTICLES)) { + Class127_Sub1.method1758(command.substring(15).parseInt()); + Class119.method1730(Class38.gameSignlink); + CS2Script.aBoolean2705 = false; + } + + if (command.startsWith(TextCore.COMMAND_FPS) && Class44.paramModeWhere != 0) { + Class65.method1237(command.substring(6).parseInt()); + } + + if (command.equalsStringIgnoreCase(TextCore.COMMAND_ERROR_TEST)) { + throw new RuntimeException(); + } + + if (command.startsWith(TextCore.COMMAND_RECT_DEBUG)) { + Client.rectDebugInt = command.substring(12).trim(1).parseInt(); + BufferedDataStream.addChatMessage(null, 0, RSString.stringCombiner(new RSString[]{TextCore.rectDebugEquals, RSString.stringAnimator(Client.rectDebugInt)}), -1); + } + + if (command.equalsStringIgnoreCase(TextCore.COMMAND_QA_OP_TEST)) { + commandQaOpEnabled = true; + } + /* Client tweening */ + if (command.equalsStringIgnoreCase(TextCore.COMMAND_TWEENING)) { + if (tweeningEnabled) { + tweeningEnabled = false; + BufferedDataStream.addChatMessage(null, 0, TextCore.forcedTweeningDisabled, -1); + } else { + tweeningEnabled = true; + BufferedDataStream.addChatMessage(null, 0, TextCore.forcedTweeningEnabled, -1); + } + } + + if (command.equalsStringIgnoreCase(TextCore.COMMAND_SHIFT_DROP_CLICK)) { + shiftClickEnabled = !shiftClickEnabled; + } + + if (command.startsWith(TextCore.COMMAND_GETBITS)) { + System.out.println("Trying to write file..."); + try { + int index = command.substring(10).parseInt(); + File file = new File("FILE_BITS.txt"); + FileWriter writer = new FileWriter(file); + for(int i = 0; i < 200000; i++){ + CSConfigCachefile cachefile = CSConfigCachefile.getCSConfigFileFromVarbitID(i); + if(cachefile.parentVarpIndex == index){ + writer.write("ID: " + i + " lowerBound = " + cachefile.lowerBound + " upperBound = " + cachefile.upperBound + " size = " + ((cachefile.upperBound - cachefile.lowerBound) + 1)); + writer.write("\n"); + } + } + writer.flush(); + writer.close(); + BufferedDataStream.addChatMessage(null, 0, RSString.parse("Wrote bits to " + file.getAbsolutePath()), -1); + } catch (Exception e){ + SystemLogger.logInfo("Whoopsie"); + e.printStackTrace(); + } + } + + TextureOperation12.outgoingBuffer.putOpcode(44); + TextureOperation12.outgoingBuffer.writeByte(command.length() + -1); + TextureOperation12.outgoingBuffer.writeString(command.substring(2)); + + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "k.H(" + (command != null ? "{...}" : "null") + ',' + false + ')'); + } + } + + static void clearClientCacheMemory() { + try { + Class163_Sub2_Sub1.aReferenceCache_4015.clearSoftReferences();//Class3_Sub28_Sub20.method724(); + Class44.aReferenceCache_725.clearSoftReferences();//Class3_Sub28_Sub18.method710(); + Entity.aReferenceCache_2792.clearSoftReferences(); + Unsorted.aReferenceCache_21.clearSoftReferences();//Unsorted.method55(); + ObjectDefinition.aReferenceCache_1401.clearSoftReferences();//Unsorted.method55(); + Unsorted.aReferenceCache_4051.clearSoftReferences();//Unsorted.method55(); + ObjectDefinition.aReferenceCache_1965.clearSoftReferences();//Unsorted.method55(); + Unsorted.aReferenceCache_4043.clearSoftReferences();//Class163_Sub2_Sub1.method2222(); + CS2Script.aReferenceCache_2442.clearSoftReferences();//Class163_Sub2_Sub1.method2222(); + Class154.aReferenceCache_1964.clearSoftReferences();//Class163_Sub2_Sub1.method2222(); + QuickChatDefinition.aReferenceCache_3572.clearSoftReferences();//Originally Class3_Sub30_Sub1.method813(); + Class143.aReferenceCache_1874.clearSoftReferences();//Originally Class3_Sub30_Sub1.method813(); + Class67.aReferenceCache_1013.clearSoftReferences();//Originally Class3_Sub30_Sub1.method813(); + Texture.aReferenceCache_1146.clearSoftReferences();//Originally Class133.method1803(); + Class159.aReferenceCache_2016.clearSoftReferences();//Originally Class133.method1803(); + Class3_Sub31.aReferenceCache_2604.clearSoftReferences();//Class38.method1025(); + Class27.aReferenceCache_511.clearSoftReferences();//Class38.method1025(); + VarpHelpers.varbitLookup.clearSoftReferences();//Class40.method1044(); + Class136.aReferenceCache_1772.clearSoftReferences(); + RenderAnimationDefinition.aReferenceCache_1955.clearSoftReferences();//Originally: Class158_Sub1.method2192(); + TextureOperation25.aReferenceCache_3412.clearSoftReferences();//Originally: Class159.method2196(); + TextureOperation2.aReferenceCache_3369.clearSoftReferences();//Originally: Class159.method2196(); + Class128.aReferenceCache_1683.clearSoftReferences(); + Unsorted.aReferenceCache_684.clearSoftReferences(); + Class163_Sub1.aReferenceCache_2984.clearSoftReferences(); + KeyboardListener.aReferenceCache_1911.clearSoftReferences();//Class115.method1714(); + Unsorted.aReferenceCache_1131.clearSoftReferences();//Class115.method1714(); + Class114.aReferenceCache_1569.clearSoftReferences();//Class3_Sub28_Sub6.h(); + Class3_Sub15.aReferenceCache_2428.clearSoftReferences();//Class3_Sub28_Sub6.h(); + Unsorted.aReferenceCache_743.clearSoftReferences();//Class3_Sub28_Sub6.h(); + LinkedList.aReferenceCache_939.clearSoftReferences();//Class107.method1650(); + Class158_Sub1.aReferenceCache_2982.clearSoftReferences();//MouseListeningClass.method2089(); + TextureOperation1.aReferenceCache_3130.clearSoftReferences(); + Unsorted.aReferenceCache_1135.clearSoftReferences(); + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "je.O(" + ')'); + } + } +} diff --git a/Client/src/main/java/org/runite/client/ClientErrorException.java b/Client/src/main/java/org/runite/client/ClientErrorException.java new file mode 100644 index 000000000..d1c537834 --- /dev/null +++ b/Client/src/main/java/org/runite/client/ClientErrorException.java @@ -0,0 +1,53 @@ +package org.runite.client; + +public final class ClientErrorException extends RuntimeException { + + static int[] anIntArray2113 = new int[]{2, 2, 4, 0, 1, 8, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0}; + public static Class96[] aClass96Array2114 = new Class96[4]; + static int anInt2115 = -1; + String aString2117; + Throwable aThrowable2118; + static RSString[] aStringArray2119 = null; + static int anInt2120 = 0; + static String worldListHost; + + + static void method2285(int var0, int var1, int var2, int var3, int var5) { + try { + LinkableRSString.anInt2587 = var1; + TextureOperation9.anInt3103 = var5; + GroundItem.anInt2938 = var0; + Unsorted.anInt144 = var3; + Unsorted.anInt3695 = var2; + } catch (RuntimeException var7) { + throw clientError(var7, "ld.B(" + var0 + ',' + var1 + ',' + var2 + ',' + var3 + ',' + false + ',' + var5 + ')'); + } + } + + ClientErrorException(Throwable var1, String var2) { + this.aString2117 = var2; + this.aThrowable2118 = var1; + } + + static int method2287(int var0, byte var1) { + try { + return (var0 < 97 || var0 > 122) && (var0 < 224 || var0 > 254 || 247 == var0)?(var0 != 255 ?(var0 != 156?(var1 != 59?72:var0):140):159):var0 + -32; + } catch (RuntimeException var3) { + throw clientError(var3, "ld.C(" + var0 + ',' + var1 + ')'); + } + } + + public static ClientErrorException clientError(Throwable var0, String var1) { + //var0.printStackTrace(); + //var0.printStackTrace(); Uncomment to be spammed when clan chat is used cuz clanchat breaks the text script. + ClientErrorException var2; + if(var0 instanceof ClientErrorException) { + var2 = (ClientErrorException)var0; + var2.aString2117 = var2.aString2117 + ' ' + var1; + } else { + var2 = new ClientErrorException(var0, var1); + } + + return var2; + } +} diff --git a/Client/src/main/java/org/runite/client/ClientLoader.java b/Client/src/main/java/org/runite/client/ClientLoader.java new file mode 100644 index 000000000..de5e47f32 --- /dev/null +++ b/Client/src/main/java/org/runite/client/ClientLoader.java @@ -0,0 +1,148 @@ +package org.runite.client; +import org.rs09.client.config.GameConfig; + +import javax.imageio.ImageIO; +import javax.swing.*; +import java.applet.Applet; +import java.awt.*; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.Properties; + +/** + * The client loader used to initialize the game. + * @author Jagex + * @author Keldagrim Development Team + * + */ +public class ClientLoader extends Applet { + + /** + * The serial version UID. + */ + private static final long serialVersionUID = -4744673981053459832L; + + /** + * The properties being used. + */ + public static Properties props = new Properties(); + + /** + * The JFrame the clients hosted in. + */ + public JFrame frame; + + /** + * The jpanel of the client. + */ + public JPanel jp = new JPanel(); + + /** + * The world name. + */ + public static String world; + + /** + * The game client. + */ + public static Client game; + + /** + * The client loader. + */ + public static ClientLoader loader; + + public static ModPanel modPanel; + + /** + * Creates the client loader instance. + * @return the client load. + */ + public static ClientLoader create() { + System.setProperty("sun.java2d.noddraw", "true"); //Fixes fullscreen mode + loader = new ClientLoader(); + return loader; + } + + public static void setModPanelVisible(boolean visible){ + modPanel.setVisible(visible); + } + + /** + * Launches the client. + */ + public void launch() { + try { + modPanel = new ModPanel(); + ClientLoader.world = "" + GameConfig.SERVER_NAME; + //System.out.println(GameLaunch.SETTINGS.getWorld()); + this.frame = new JFrame(GameConfig.SERVER_NAME); + this.frame.setIconImage(ImageIO.read(getClass().getClassLoader().getResource("RWlogo.png"))); + this.frame.setLayout(new BorderLayout()); + this.frame.setSize(300,500); + this.frame.setBackground(Color.BLACK); + this.frame.setResizable(true); + this.frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + this.jp.setLayout(new BorderLayout()); + this.jp.add(modPanel, BorderLayout.NORTH); + this.jp.add(this); + this.jp.setBackground(Color.black); + this.jp.setPreferredSize(new Dimension(765, 503)); + //this.frame.setIconImage(Toolkit.getDefaultToolkit().getImage("./res/favicon.png")); + this.frame.getContentPane().add(this.jp, "Center"); + this.frame.pack(); + this.frame.setVisible(true); + this.frame.setLocationRelativeTo(null); + props.put("worldid", "" + (GameConfig.WORLD_OVERRIDE == -1 ? GameConfig.WORLD : GameConfig.WORLD_OVERRIDE)); + props.put("members", "1"); + props.put("modewhat", "1"); + props.put("modewhere", "0"); + props.put("safemode", "0"); + props.put("game", "0"); + props.put("js", "1"); + props.put("lang", "0"); + props.put("affid", "0"); + props.put("advertsuppressed", "1"); + props.put("lowmem", "0"); + props.put("settings", "kKmok3kJqOeN6D3mDdihco3oPeYN2KFy6W5--vZUbNA"); + Signlink sn = new Signlink(this, 32, "runescape", 29); + Client.provideSignlink(sn); + game = new Client(); + game.init(); + } catch (Exception localException) { + localException.printStackTrace(); + } + } + + /** + * Gets a property parameter. + * @return the parameter string. + */ + public String getParameter(String paramString) { + return ((String)props.get(paramString)); + } + + /** + * Gets document base. + * @return the URL. + */ + public URL getDocumentBase() { + return getCodeBase(); + } + + /** + * Gets the code base. + * @return The URL. + */ + public URL getCodeBase() { + try { + return new URL("http://" + GameConfig.IP_ADDRESS); + } catch (MalformedURLException localException) { + System.out.println("World List Loading might not be working or something else is wrong."); + System.out.println("Stack Trace:"); + localException.printStackTrace(); + return null; + } + } + +} \ No newline at end of file diff --git a/Client/src/main/java/org/runite/client/ColorCore.java b/Client/src/main/java/org/runite/client/ColorCore.java new file mode 100644 index 000000000..aeffb5ab9 --- /dev/null +++ b/Client/src/main/java/org/runite/client/ColorCore.java @@ -0,0 +1,99 @@ +package org.runite.client; + +import java.awt.*; + +public class ColorCore { + + /** @woah + * A repository filled with colors that can be set to whatever the user sees fit + * Each will be labeled for what their original purpose is for and the files that + * They reside in. A few values need to be played with only tested some of the colors + * to the corresponding name + */ + + /** + * Used to display the color difference between two players + * Files that use these colors: + * Class72.java - combatLevelColor + * Class3_Sub13_Sub30.java - getCombatLevelDifferenceColor + * - + * Level equation for difference (-otherPlayer + yourPlayer) + * Used in values of 3, -9 to 9 , + * Following a gradient Dark Red -> Yellow -> Bright Green + */ + static RSString LvlDiffN9 = RSString.parse("");//Solid Red OG: + static RSString LvlDiffN6 = RSString.parse("");//Dark Orange OG: + static RSString LvlDiffN3 = RSString.parse("");//Orange OG: + static RSString LvlDiffN0 = RSString.parse("");//Yellow Orange OG: + static RSString LvlDiffDefault = RSString.parse("");//Yellow OG: + static RSString LvlDiffP0 = RSString.parse("");//Yellow OG: + static RSString LvlDiffP3 = RSString.parse("");//Yellow Green OG: + static RSString LvlDiffP6 = RSString.parse("");//Green OG: + static RSString LvlDiffP9 = RSString.parse("");//Bright Green OG: + + + //Used to display the color of coins + /** + * Used to display the color of stacks of items/coins + * Files that use these colors: + * Class3_Sub7.java - Method123 + * Class36.java - Method1013 + */ + static RSString MillionStackColor = RSString.parse("");//Green + static RSString ThousandStackColor = RSString.parse("");//White + static RSString DefaultStackColor = RSString.parse("");//Yellow + + + /** + * Used to display the color of Usernames/items/etc. "Context_Menu_Color" + * Files that use these colors: + * Class3_Sub13_Sub30.java - method312 + * Class3_Sub30_Sub1.java - method806 + */ + static RSString ContextColor = RSString.parse("");//White + + + //private message Class3_Sub28_Sub4.aString_3573 + static RSString ObjectNameColor = RSString.parse("");//Light blue + static RSString PMColor = RSString.parse(" )2> "); + + //bank will be orange + //entity color? Item color? + //Class47(items), Class3_Sub30_Sub1, Class3_sub24_Sub4, WaterfallShader, + static RSString ItemInterfaceColor = RSString.parse("");//offwhite + static RSString GroundItemColor = RSString.parse("");//offwhite WaterfallShader //C + static RSString ItemBackpackColor = RSString.parse("");//offwhite Class3_Sub24_Sub4 //C + static RSString ContextColor2 = RSString.parse("");//offwhite + + //Class144 + static RSString NPCRightClickColor = RSString.parse("");//Yellow + + //Class130 Orange Possible Bank + static RSString BankItemColor = RSString.parse(" )2> "); + + //Class3 Sub28 Sub16 Possible Text Color + static RSString TextColor = RSString.parse(" )2> "); + + + /** + * Used to change the loading bar color on client launch + * Files that use these colors: + * Class3_Sub28_Sub1.java - method updateLoadingBar + */ + public static Color loadingbarcolor = new Color(140, 17, 17); + + /** + * Fun little RGB rainbow method + */ + static float hue = 0.0f; + static float sat = 1.0f; + static float bri = 1.0f; + + static int getHexColors() { + hue += 0.005; //Bigger# faster the speed + Color base = new Color(Color.HSBtoRGB(hue, sat, bri)); + Color color = new Color(base.getRed(), base.getGreen(), base.getBlue(), 125); + return color.getRGB(); + } + +} diff --git a/Client/src/main/java/org/runite/client/ComponentWrappedCanvas.java b/Client/src/main/java/org/runite/client/ComponentWrappedCanvas.java new file mode 100644 index 000000000..69954fb5f --- /dev/null +++ b/Client/src/main/java/org/runite/client/ComponentWrappedCanvas.java @@ -0,0 +1,23 @@ +package org.runite.client; + +import java.awt.Canvas; +import java.awt.Component; +import java.awt.Graphics; + +final class ComponentWrappedCanvas extends Canvas { + + private final Component component; + + public final void update(Graphics g) { + this.component.update(g); + } + + public final void paint(Graphics g) { + this.component.paint(g); + } + + public ComponentWrappedCanvas(Component component) { + this.component = component; + } + +} diff --git a/Client/src/main/java/org/runite/client/ConfigInventoryDefinition.java b/Client/src/main/java/org/runite/client/ConfigInventoryDefinition.java new file mode 100644 index 000000000..db6b0b90e --- /dev/null +++ b/Client/src/main/java/org/runite/client/ConfigInventoryDefinition.java @@ -0,0 +1,43 @@ +package org.runite.client; + +import org.rs09.client.Node; +import org.rs09.client.data.NodeCache; + +public final class ConfigInventoryDefinition extends Node { + + static NodeCache aClass47_818 = new NodeCache(64); + int size = 0; + static int anInt3655 = -1; + + public static ConfigInventoryDefinition retrieveConfigurationInventoryFile(int var0) { + ConfigInventoryDefinition var2 = (ConfigInventoryDefinition) aClass47_818.get(var0); + if (null == var2) { + byte[] var3 = Class8.configurationReferenceCache.getFile(5, var0); + var2 = new ConfigInventoryDefinition(); + if (var3 != null) { + var2.decode(new DataBuffer(var3)); + } + + aClass47_818.put(var0, var2); + } + return var2; + } + + public final void decode(DataBuffer buffer) { + while (true) { + int opcode = buffer.readUnsignedByte(); + if (0 == opcode) { + return; + } + + this.decode(buffer, opcode); + } + } + + private void decode(DataBuffer buffer, int opcode) { + if (opcode == 2) { + this.size = buffer.readUnsignedShort(); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/DataBuffer.java b/Client/src/main/java/org/runite/client/DataBuffer.java new file mode 100644 index 000000000..2a1de4f47 --- /dev/null +++ b/Client/src/main/java/org/runite/client/DataBuffer.java @@ -0,0 +1,518 @@ +package org.runite.client; + +import kotlin.text.Charsets; +import org.rs09.client.Linkable; +import org.rs09.client.config.GameConfig; +import org.rs09.client.util.ByteArrayPool; +import org.rs09.client.util.CRC; + +import java.math.BigInteger; +import java.util.Objects; + +public class DataBuffer extends Linkable { + + public byte[] buffer; + public int index; + + public DataBuffer(int capacity) { + this.buffer = ByteArrayPool.INSTANCE.getByteArray(capacity); + this.index = 0; + } + public DataBuffer(byte[] buffer) { + this.index = 0; + this.buffer = buffer; + } + + public final int readUnsignedShort() { + this.index += 2; + return (this.buffer[-2 + this.index] << 8 & 0xff00) + (this.buffer[-1 + this.index] & 0xFF); + } + + public final void writeInt(int value) { + this.buffer[this.index++] = (byte) (value >> 24); + this.buffer[this.index++] = (byte) (value >> 16); + this.buffer[this.index++] = (byte) (value >> 8); + this.buffer[this.index++] = (byte) value; + } + + final void writeLong(long value) { + this.buffer[this.index++] = (byte) ((int) (value >> 56)); + this.buffer[this.index++] = (byte) ((int) (value >> 48)); + this.buffer[this.index++] = (byte) ((int) (value >> 40)); + this.buffer[this.index++] = (byte) ((int) (value >> 32)); + this.buffer[this.index++] = (byte) ((int) (value >> 24)); + this.buffer[this.index++] = (byte) ((int) (value >> 16)); + this.buffer[this.index++] = (byte) ((int) (value >> 8)); + this.buffer[this.index++] = (byte) ((int) value); + } + + // TODO Rename / refactor + final void method739(int var2, long var3) { + --var2; + if (var2 >= 0 && var2 <= 7) { + for (int var5 = var2 * 8; 0 <= var5; var5 -= 8) { + this.buffer[this.index++] = (byte) ((int) (var3 >> var5)); + } + + } else { + throw new IllegalArgumentException(); + } + } + + // TODO Rename / refactor + final int method741() { + byte var2 = this.buffer[this.index++]; + + int var3; + for (var3 = 0; 0 > var2; var2 = this.buffer[this.index++]) { + var3 = (127 & var2 | var3) << 7; + } + + return var2 | var3; + } + + // TODO Rename / refactor + final void method742(int var2) { + this.buffer[this.index + -var2 - 4] = (byte) (var2 >> 24); + this.buffer[this.index + -var2 - 3] = (byte) (var2 >> 16); + this.buffer[this.index + -var2 - 2] = (byte) (var2 >> 8); + this.buffer[this.index + -var2 - 1] = (byte) var2; + } + + final void write128Byte(int value) { + this.buffer[this.index++] = (byte) (128 - value); + } + + // TODO Rename / refactor + public final void writeString(RSString var2) { + this.index += var2.method1580(this.buffer, this.index, var2.length()); + this.buffer[this.index++] = 0; + } + + public final void writeString(String string) { + byte[] bytes = string.getBytes(Charsets.ISO_8859_1); + System.arraycopy(bytes, 0, buffer, index, bytes.length); + index += bytes.length; + buffer[index++] = 0; + } + + final int readSignedShort128() { + this.index += 2; + int value = ((this.buffer[this.index - 2] & 0xff) << 8) + + (this.buffer[this.index - 1] - 128 & 0xff); + + if (value > 32767) { + value -= 65536; + } + + return value; + } + + public final int readInt() { + this.index += 4; + return ((this.buffer[this.index - 4] & 0xff) << 24) + + ((this.buffer[this.index - 3] & 0xff) << 16) + + ((this.buffer[this.index - 2] & 0xff) << 8) + + (this.buffer[this.index - 1] & 0xFF); + } + + final byte readSigned128Byte() { + return (byte) (128 - this.buffer[this.index++]); + } + + // TODO Refactor / rename method + final RSString method750() { + if (this.buffer[this.index] == 0) { + this.index++; + return null; + } else { + return this.readString(); + } + } + + final int readUnsignedByte128() { + return this.buffer[this.index++] - 128 & 0xff; + } + + public final void writeByte(int value) { + this.buffer[this.index++] = (byte) value; + } + + final void putBytes(byte[] bytes, int length) { + int i = 0; + while (length > i) { + this.buffer[this.index++] = bytes[i]; + i++; + } + } + + final int readUnsigned128Byte() { + return 128 - this.buffer[this.index++] & 0xFF; + } + + // TODO + final int getTriByte2() { + try { + this.index += 3; + return ((this.buffer[this.index + -2] & 0xFF) << 8) + ((this.buffer[-1 + this.index] & 0xFF) << 16) + (this.buffer[-3 + this.index] & 0xFF); + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "wa.BA(" + (byte) -118 + ')'); + } + } + + final long readLong() { + long msb = (long) this.readInt() & 0xFFFFFFFFL; + long lsb = (long) this.readInt() & 0xFFFFFFFFL; + return lsb + (msb << 32); + } + + final void writeIntLE(int value) { + this.buffer[this.index++] = (byte) value; + this.buffer[this.index++] = (byte) (value >> 8); + this.buffer[this.index++] = (byte) (value >> 16); + this.buffer[this.index++] = (byte) (value >> 24); + } + + final int readUnsignedShort128() { + this.index += 2; + return (this.buffer[this.index - 1] - 128 & 0xff) + + (65280 & this.buffer[this.index - 2] << 8); + } + + final void writeIntV2(int value) { + this.buffer[this.index++] = (byte) (value >> 16); + this.buffer[this.index++] = (byte) (value >> 24); + this.buffer[this.index++] = (byte) value; + this.buffer[this.index++] = (byte) (value >> 8); + } + + final byte readSignedByte() { + return this.buffer[this.index++]; + } + + // TODO + final RSString getGJString2(int var1) { + try { + byte var2 = this.buffer[this.index++]; + if (var1 < 50) { + this.buffer = null; + } + + if (0 == var2) { + int var3 = this.index; + + while (Objects.requireNonNull(this.buffer)[this.index++] != 0) { + } + + return TextureOperation33.bufferToString(this.buffer, this.index - (var3 - -1), var3); + } else { + throw new IllegalStateException("Bad version number in gjstr2"); + } + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "wa.DA(" + var1 + ')'); + } + } + + final void writeFloatLE(float value) { + int bits = Float.floatToRawIntBits(value); + + this.buffer[this.index++] = (byte) bits; + this.buffer[this.index++] = (byte) (bits >> 8); + this.buffer[this.index++] = (byte) (bits >> 16); + this.buffer[this.index++] = (byte) (bits >> 24); + } + + final byte readSignedNegativeByte() { + return (byte) -this.buffer[this.index++]; + } + + final void readBytes(byte[] out, int length) { + for (int i = 0; length > i; ++i) { + out[i] = this.buffer[this.index++]; + } + } + + final void writeShort128LE(int value) { + this.buffer[this.index++] = (byte) (value + 128); + this.buffer[this.index++] = (byte) (value >> 8); + } + + final int readUnsignedShortLE() { + this.index += 2; + return (255 & this.buffer[this.index - 2]) + + (65280 & this.buffer[this.index - 1] << 8); + } + + // TODO Some smart + final void method768(int var2) { + if (0 <= var2 && var2 < 128) { + this.writeByte(var2); + } else if (0 <= var2 && var2 < 32768) { + this.writeShort(32768 + var2); + } else { + throw new IllegalArgumentException(); + } + } + + // TODO finish varbyte length? + final void method769(int value) { + this.buffer[-1 + -value + this.index] = (byte) value; + } + + public final void finishVarshortPacket(int value) { + this.buffer[this.index + -value - 2] = (byte) (value >> 8); + this.buffer[this.index + -value - 1] = (byte) value; + } + + // TODO XTEA crypt? + final void method770(int[] var1, int var4) { + int var5 = this.index; + this.index = 5; + int var6 = (-5 + var4) / 8; + + for (int var7 = 0; var6 > var7; ++var7) { + int var10 = -957401312; + int var8 = this.readInt(); + int var9 = this.readInt(); + int var12 = 32; + + for (int var11 = -1640531527; var12-- > 0; var8 -= (var9 >>> 5 ^ var9 << 4) + var9 ^ var1[var10 & 3] + var10) { + var9 -= var1[(6754 & var10) >>> 11] + var10 ^ var8 + (var8 >>> 5 ^ var8 << 4); + var10 -= var11; + } + + this.index -= 8; + this.writeInt(var8); + this.writeInt(var9); + } + + this.index = var5; + } + + // TODO + final void method771(int var2) { + if ((-128 & var2) != 0) { + if ((-16384 & var2) != 0) { + if ((var2 & -2097152) != 0) { + if (0 != (-268435456 & var2)) { + this.writeByte(var2 >>> 28 | 128); + } + + this.writeByte(128 | var2 >>> 21); + } + + this.writeByte(128 | var2 >>> 14); + } + + this.writeByte(var2 >>> 7 | 128); + } + + this.writeByte(var2 & 127); + } + + // TODO + final long method772(int var1) { + --var1; + if (0 <= var1 && var1 <= 7) { + long var4 = 0L; + + for (int var3 = var1 * 8; var3 >= 0; var3 -= 8) { + var4 |= ((long) this.buffer[this.index++] & 255L) << var3; + } + + return var4; + } else { + throw new IllegalArgumentException(); + } + } + + // TODO + final int method773() { + int var3 = this.getSmart(); + + int var2; + for (var2 = 0; 32767 == var3; var2 += 32767) { + var3 = this.getSmart(); + } + + var2 += var3; + return var2; + } + + final void readBytesReverse(int length, byte[] out) { + for (int i = -(-length - -1); i >= 0; --i) { + out[i] = this.buffer[this.index++]; + } + } + + final void writeIntV1(int value) { + this.buffer[this.index++] = (byte) (value >> 8); + this.buffer[this.index++] = (byte) value; + this.buffer[this.index++] = (byte) (value >> 24); + this.buffer[this.index++] = (byte) (value >> 16); + } + + public final RSString readString() { + int startIndex = this.index; + + while (this.buffer[this.index++] != 0) ; + + return TextureOperation33.bufferToString(this.buffer, (this.index - 1) - startIndex, startIndex); + } + + final int getSmart() { + int var2 = this.buffer[this.index] & 0xFF; + return 128 <= var2 ? -32768 + this.readUnsignedShort() : this.readUnsignedByte(); + } + + final void writeMedium(int value) { + this.buffer[this.index++] = (byte) (value >> 16); + this.buffer[this.index++] = (byte) (value >> 8); + this.buffer[this.index++] = (byte) value; + } + + final int readIntV1() { + this.index += 4; + return ((this.buffer[this.index - 2] & 0xFF) << 24) + + ((this.buffer[this.index - 1] & 0xFF) << 16) + + (65280 & this.buffer[this.index - 4] << 8) + + (this.buffer[this.index + -3] & 0xFF); + } + + final int readUnsignedShortLE128() { + this.index += 2; + return (this.buffer[this.index - 1] << 8 & 65280) + + (255 & this.buffer[this.index - 2] - 128); + } + + final int readIntLE() { + this.index += 4; + return (255 & this.buffer[-4 + this.index]) + + (16711680 & this.buffer[this.index - 2] << 16) + + ((255 & this.buffer[this.index + -1]) << 24) + + ((this.buffer[-3 + this.index] & 0xFF) << 8); + } + + final void putShortA(int var1) { + this.buffer[this.index++] = (byte) (var1 >> 8); + this.buffer[this.index++] = (byte) (128 + var1); + } + + // TODO What is the difference between this and WriteIntLE? + final void writeIntLE2(int value) { + this.buffer[this.index++] = (byte) value; + this.buffer[this.index++] = (byte) (value >> 8); + this.buffer[this.index++] = (byte) (value >> 16); + this.buffer[this.index++] = (byte) (value >> 24); + } + + final int readUnsignedNegativeByte() { + return -this.buffer[this.index++] & 0xff; + } + + final int readSignedShort() { + this.index += 2; + int value = (this.buffer[-1 + this.index] & 0xFF) + ((255 & this.buffer[this.index + -2]) << 8); + if (value > 32767) { + value -= 65536; + } + return value; + } + + final int readSignedShortLE128() { + this.index += 2; + int var2 = ((this.buffer[this.index - 1] & 0xFF) << 8) + (this.buffer[-2 + this.index] - 128 & 0xFF); + + if (32767 < var2) { + var2 -= 65536; + } + + return var2; + } + + final byte readSignedByte128() { + return (byte) (this.buffer[this.index++] - 128); + } + + final void writeByte128(int value) { + this.buffer[this.index++] = (byte) (128 + value); + } + + final int readSignedShortLE() { + this.index += 2; + + int value = (this.buffer[-2 + this.index] & 0xFF) + (65280 & this.buffer[this.index + -1] << 8); + if (value > 32767) { + value -= 65536; + } + + return value; + } + + final void writeCRC(int startOffset) { + int crc = CRC.INSTANCE.crc32(this.buffer, startOffset, this.index); + this.writeInt(crc); + } + + public final int readMedium() { + this.index += 3; + return (16711680 & this.buffer[this.index + -3] << 16) + + ((65280 & this.buffer[-2 + this.index] << 8) + + (this.buffer[this.index + -1] & 0xFF)); + } + + final void writeShortLE(int value) { + this.buffer[this.index++] = (byte) value; + this.buffer[this.index++] = (byte) (value >> 8); + } + + // TODO + final int getByteOrShort() { + int var2 = this.buffer[this.index] & 0xFF; + return var2 < 128 ? -64 + this.readUnsignedByte() : this.readUnsignedShort() - '\uc000'; + } + + final int readIntV2() { + this.index += 4; + return ((this.buffer[this.index + -3] & 0xFF) << 24) + + (16711680 & this.buffer[this.index + -4] << 16) + + ((this.buffer[this.index + -1] & 0xFF) << 8) + + (255 & this.buffer[this.index + -2]); + } + + final void rsaEncrypt(BigInteger var1, BigInteger var2) { + int var4 = this.index; + this.index = 0; + byte[] var5 = new byte[var4]; + this.readBytes(var5, var4); + BigInteger var6 = new BigInteger(var5); + BigInteger var7; + if (GameConfig.RSA) + var7 = var6.modPow(var1, var2); + else + var7 = var6; + byte[] var8 = var7.toByteArray(); + this.index = 0; + this.writeByte(var8.length); + this.putBytes(var8, var8.length); + } + + final void writeFloat(float value) { + int bits = Float.floatToRawIntBits(value); + + this.buffer[this.index++] = (byte) (bits >> 24); + this.buffer[this.index++] = (byte) (bits >> 16); + this.buffer[this.index++] = (byte) (bits >> 8); + this.buffer[this.index++] = (byte) bits; + } + + public final int readUnsignedByte() { + return this.buffer[this.index++] & 0xFF; + } + + public final void writeShort(int value) { + this.buffer[this.index++] = (byte) (value >> 8); + this.buffer[this.index++] = (byte) value; + } + +} diff --git a/Client/src/main/java/org/runite/client/Display.java b/Client/src/main/java/org/runite/client/Display.java new file mode 100644 index 000000000..f301c3295 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Display.java @@ -0,0 +1,138 @@ +package org.runite.client; + +import java.awt.*; +import java.lang.reflect.Field; + +public class Display { + + private GraphicsDevice graphicsDevice; + private DisplayMode displayMode; + + + public Display() throws Exception { + GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment(); + this.graphicsDevice = env.getDefaultScreenDevice(); + + if (!this.graphicsDevice.isFullScreenSupported()) { + for (int i = 0; env.getScreenDevices().length > i; ++i) { + GraphicsDevice device = env.getScreenDevices()[i]; + if (device != null && device.isFullScreenSupported()) { + this.graphicsDevice = device; + return; + } + } + + throw new Exception(); + } + } + + private void method917(Frame var1) { + boolean var3 = false; + + Field var4; + boolean var5; + try { + var4 = Class.forName("sun.awt.Win32GraphicsDevice").getDeclaredField("valid"); + var4.setAccessible(true); + var5 = ((Boolean) var4.get(this.graphicsDevice)).booleanValue(); + if (var5) { + var4.set(this.graphicsDevice, Boolean.FALSE); + var3 = true; + } + } catch (Throwable var15) { + } + + var5 = false; + + try { + var5 = true; + this.graphicsDevice.setFullScreenWindow(var1); + var5 = false; + } finally { + if (var5 && var3) { + try { + Field var7 = Class.forName("sun.awt.Win32GraphicsDevice").getDeclaredField("valid"); + var7.set(this.graphicsDevice, Boolean.TRUE); + } catch (Throwable var13) { + } + } + + } + + if (var3) { + try { + var4 = Class.forName("sun.awt.Win32GraphicsDevice").getDeclaredField("valid"); + var4.set(this.graphicsDevice, Boolean.TRUE); + } catch (Throwable var14) { + } + } + + } + + public void configureDisplayMode(int var1, int var2, int var3, int var4, Frame var5, int var6) { + this.displayMode = this.graphicsDevice.getDisplayMode(); + if (var1 > -6) { + this.method919(false); + } + + if (this.displayMode == null) { + throw new NullPointerException(); + } else { + var5.setUndecorated(true); + var5.enableInputMethods(false); + this.method917(var5); + if (var2 == 0) { + int var7 = this.displayMode.getRefreshRate(); + DisplayMode[] var8 = this.graphicsDevice.getDisplayModes(); + boolean var9 = false; + + for (int var10 = 0; var10 < var8.length; ++var10) { + if (var8[var10].getWidth() == var6 && var8[var10].getHeight() == var4 && var3 == var8[var10].getBitDepth()) { + int var11 = var8[var10].getRefreshRate(); + if (!var9 || Math.abs(var2 - var7) > Math.abs(var11 - var7)) { + var9 = true; + var2 = var11; + } + } + } + + if (!var9) { + var2 = var7; + } + } + + this.graphicsDevice.setDisplayMode(new DisplayMode(var6, var4, var3, var2)); + } + } + + public int[] method919(boolean var1) { + if (var1) { + DisplayMode[] var2 = this.graphicsDevice.getDisplayModes(); + int[] var3 = new int[var2.length << 2]; + + for (int var4 = 0; var4 < var2.length; ++var4) { + var3[var4 << 2] = var2[var4].getWidth(); + var3[1 + (var4 << 2)] = var2[var4].getHeight(); + var3[(var4 << 2) - -2] = var2[var4].getBitDepth(); + var3[3 + (var4 << 2)] = var2[var4].getRefreshRate(); + } + + return var3; + } else { + return null; + } + } + + public void updateDisplayMode() { + if (this.displayMode != null) { + this.graphicsDevice.setDisplayMode(this.displayMode); + if (!this.graphicsDevice.getDisplayMode().equals(this.displayMode)) { + throw new RuntimeException("Did not return to correct resolution!"); + } + + this.displayMode = null; + } + + this.method917(null); + } +} diff --git a/Client/src/main/java/org/runite/client/DumpingTools.java b/Client/src/main/java/org/runite/client/DumpingTools.java new file mode 100644 index 000000000..6f028cd51 --- /dev/null +++ b/Client/src/main/java/org/runite/client/DumpingTools.java @@ -0,0 +1,270 @@ +package org.runite.client; + +import org.rs09.client.Linkable; +import org.rs09.client.data.HashTable; + +import java.io.FileOutputStream; +import java.io.FileWriter; +import java.io.IOException; +import java.nio.ByteBuffer; +import java.util.ArrayList; + +public class DumpingTools { + public static boolean alreadyRan = false; + + public static final int NUMBER_OF_METHODS = 2065; + /** + * Put all code you want to run once for debugging purposes here. + */ + public static void RunOnceAfterStartup() { + if (alreadyRan) + return; + alreadyRan = true; + // Uncomment one of these to do it. + + //PrintAllValidGameMethods(); + //GetAllMainMethods("mainmeths.txt"); + //DumpOpcodesToTextFile("method2ops.txt", 2); // Good for analyzing program structure. + //DumpToRuneStarCompatible("binaryScripts"); // Requires making the folder first. Probably the most useful one. + } + + public static String FriendlyOpcodeName(int i, int opcode, int arg) { + switch(opcode) { + case 0: return String.format("push_int %d (%08x)", arg, arg); + case 6: return String.format("jmp +%d (%04d)", arg, i + 1 + arg); + case 7: return String.format("bne +%d (%04d)", arg, i + 1 + arg); + case 8: return String.format("be +%d (%04d)", arg, i + 1 + arg); + case 9: return String.format("bgt +%d (%04d)", arg, i + 1 + arg); + case 10: return String.format("blt +%d (%04d)", arg, i + 1 + arg); + case 21: return String.format("ret %d", arg); + case 25: return String.format("fetch_varbit %d", arg); + case 33: return String.format("push_arg %d", arg); + case 42: return String.format("load_varc %d", arg); + case 43: return String.format("store_varc %d", arg); + case 3305: return String.format("getcurrentlevel %d", arg); + case 3306: return String.format("getstaticlevel %d", arg); + case 3200: return String.format("playsfx %d", arg); + default: return String.format("unknown (%d: %d)", opcode, arg); + } + } + + public static void DumpOpcodesToTextFile(String outputFile, int methodID) { + try { + AssembledMethod a = ItemDefinition.getMethodByID(methodID); + FileWriter myWriter = new FileWriter(outputFile); + myWriter.write("Opcodes for Method" + methodID + ":\n"); + for (int i = 0; i < a.assemblyInstructions.length; i++) { + int opcode = a.assemblyInstructions[i]; + int arg = a.instructionOperands[i]; + myWriter.write(String.format("%04d: %s\n", i, FriendlyOpcodeName(i, opcode, arg))); + } + myWriter.close(); + } catch (IOException e) { + System.out.println("Cannot write to file " + outputFile); + } + } + + /** + * Dumps all scripts to runestar compatible format. + */ + public static void DumpToRuneStarCompatible(String outputFolder) { + for (int i = 0; i < NUMBER_OF_METHODS; i++) { + try { + AssembledMethod am = ItemDefinition.getMethodByID(i); + if (am == null) { + continue; + } + FileOutputStream fileOut = new FileOutputStream(outputFolder + "/" + i); + ByteBuffer fileData = ByteBuffer.allocate(65536 * 4); + fileData.put((byte) 0); + Short[] ops = new Short[am.assemblyInstructions.length]; + for (int j = 0; j < ops.length; j++) { + int s = am.assemblyInstructions[j]; + fileData.putShort((short) s); + if (s == CS2AsmOpcodes.RETURN.getOp() || s == 38 || s == 39 || s >= 100) { + fileData.put((byte) am.instructionOperands[j]); + } else if (s == CS2AsmOpcodes.PUSH_STR.getOp()) { + fileData.put(am.stringInstructionOperands[j].buffer); + fileData.put((byte) 0); + } else { + fileData.putInt(am.instructionOperands[j]); + } + } + String s = "Generated by 2009scape. https://github.com/2009scape/2009scape"; + fileData.put(s.getBytes()); + fileData.putInt(am.assemblyInstructions.length); + fileData.putShort((short) am.numberOfIntsToCopy); + fileData.putShort((short) am.numberOfRSStringsToCopy); + fileData.putShort((short) am.numberOfIntArguments); + fileData.putShort((short) am.numberOfStringArguments); + int offset = fileData.position(); + if (am.switchHashTable != null) { + fileData.put((byte) am.switchHashTable.length); + for (HashTable sw : am.switchHashTable) { + fileData.putShort((short) sw.getBuckets().length); + for (Linkable singleSwitch : sw.getBuckets()) { + int l1 = (int) (singleSwitch.linkableKey); + int l2 = (int) (singleSwitch.linkableKey >> 32); + fileData.putInt(l1); + fileData.putInt(l2); + } + } + } + int end = fileData.position(); + // Finally, put the offset of the data + fileData.putShort((short) (end - offset)); + // And write binary file + fileOut.write(fileData.array(), 0, fileData.position()); + } catch (IOException ioException) { + System.out.println("Cannot write to file because " + ioException.getMessage()); + } + } + } + + /** + * All script methods called by the runAssembledMethod function are "main" methods. that is, they + * do not get called by other methods. The following function generates + * a list of main methods. + * + * So a method is either a "main" method or a "helper" method, and "helper" methods are never called + * To generate the list of main methods the following function can be used + */ + + // Here is the generated list: + public static final int[] MAIN_METHODS = {6, 7, 8, 9, 10, 11, 15, 16, 17, 18, 22, 23, 25, 26, 27, 28, 29, 30, 32, 33, 34, 35, 36, 38, 40, 43, 44, 45, 48, 49, 50, 52, 53, 54, 58, 59, 60, 61, 63, 64, 65, 66, 67, 68, 69, 70, 73, 80, 81, 82, 83, 86, 87, 88, 92, 93, 94, 95, 96, 97, 99, 100, 101, 103, 104, 105, 106, 108, 109, 110, 112, 113, 114, 115, 116, 117, 118, 119, 120, 122, 123, 124, 126, 127, 128, 130, 131, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 149, 150, 151, 152, 155, 156, 158, 159, 162, 163, 164, 165, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 182, 186, 187, 188, 189, 190, 191, 194, 195, 196, 199, 200, 201, 204, 205, 206, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 396, 397, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 521, 522, 524, 525, 526, 527, 529, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 544, 545, 546, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 560, 561, 562, 563, 564, 565, 566, 567, 568, 570, 571, 572, 574, 575, 579, 580, 581, 583, 585, 586, 587, 588, 589, 590, 591, 592, 595, 596, 597, 598, 599, 600, 601, 603, 604, 605, 606, 607, 608, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 629, 631, 633, 634, 635, 637, 639, 641, 643, 645, 647, 648, 649, 650, 653, 654, 655, 656, 663, 664, 665, 669, 675, 676, 677, 678, 681, 685, 687, 688, 690, 691, 692, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 707, 708, 709, 710, 712, 714, 715, 716, 717, 718, 720, 721, 724, 725, 726, 727, 728, 729, 731, 732, 733, 735, 740, 741, 742, 743, 745, 746, 747, 748, 749, 751, 752, 753, 754, 755, 756, 757, 758, 763, 764, 769, 770, 772, 774, 776, 777, 778, 779, 782, 783, 784, 786, 787, 789, 790, 791, 792, 796, 797, 800, 801, 803, 808, 809, 811, 812, 815, 816, 819, 820, 825, 826, 827, 828, 829, 830, 832, 833, 834, 835, 836, 838, 839, 840, 842, 843, 844, 845, 847, 848, 856, 857, 858, 859, 860, 862, 863, 864, 865, 866, 868, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 929, 930, 934, 937, 938, 939, 944, 945, 947, 948, 953, 954, 955, 956, 957, 958, 960, 961, 962, 963, 964, 965, 968, 969, 971, 972, 1026, 1027, 1028, 1031, 1035, 1038, 1040, 1043, 1045, 1046, 1048, 1049, 1053, 1055, 1056, 1057, 1058, 1059, 1060, 1065, 1067, 1070, 1073, 1075, 1080, 1081, 1082, 1083, 1085, 1087, 1091, 1092, 1093, 1094, 1099, 1101, 1102, 1103, 1104, 1105, 1107, 1109, 1110, 1111, 1117, 1122, 1123, 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1153, 1154, 1155, 1157, 1158, 1160, 1161, 1164, 1166, 1167, 1168, 1170, 1172, 1173, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1187, 1189, 1190, 1191, 1193, 1195, 1197, 1199, 1201, 1203, 1205, 1207, 1209, 1211, 1212, 1213, 1214, 1215, 1219, 1221, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1248, 1249, 1250, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1266, 1268, 1270, 1273, 1274, 1275, 1276, 1277, 1278, 1281, 1282, 1283, 1285, 1286, 1288, 1289, 1290, 1291, 1292, 1294, 1295, 1296, 1297, 1300, 1302, 1303, 1307, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1347, 1350, 1351, 1352, 1353, 1354, 1356, 1357, 1358, 1362, 1366, 1367, 1368, 1369, 1370, 1371, 1373, 1375, 1377, 1379, 1380, 1381, 1382, 1383, 1389, 1390, 1391, 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1410, 1411, 1412, 1413, 1414, 1415, 1416, 1417, 1418, 1419, 1420, 1422, 1423, 1424, 1427, 1428, 1429, 1433, 1434, 1437, 1438, 1439, 1440, 1441, 1442, 1443, 1444, 1445, 1446, 1448, 1449, 1451, 1452, 1454, 1465, 1471, 1472, 1476, 1477, 1480, 1481, 1482, 1483, 1484, 1485, 1486, 1488, 1489, 1491, 1492, 1493, 1494, 1495, 1496, 1497, 1498, 1499, 1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508, 1509, 1511, 1512, 1513, 1515, 1518, 1519, 1520, 1521, 1523, 1524, 1525, 1527, 1528, 1532, 1533, 1534, 1540, 1547, 1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557, 1558, 1559, 1563, 1565, 1567, 1569, 1572, 1573, 1574, 1575, 1576, 1577, 1578, 1579, 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589, 1590, 1591, 1592, 1593, 1594, 1595, 1596, 1597, 1598, 1599, 1600, 1601, 1602, 1603, 1604, 1605, 1606, 1607, 1608, 1609, 1610, 1611, 1613, 1614, 1615, 1616, 1617, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 1631, 1632, 1633, 1634, 1635, 1636, 1637, 1638, 1639, 1640, 1641, 1642, 1643, 1644, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1656, 1657, 1658, 1659, 1660, 1661, 1662, 1663, 1664, 1665, 1666, 1667, 1668, 1669, 1670, 1671, 1672, 1673, 1674, 1675, 1676, 1677, 1678, 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690, 1691, 1692, 1693, 1694, 1695, 1696, 1697, 1698, 1699, 1700, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1722, 1723, 1724, 1726, 1727, 1729, 1731, 1732, 1733, 1734, 1736, 1737, 1739, 1740, 1745, 1746, 1747, 1748, 1749, 1750, 1752, 1753, 1754, 1755, 1756, 1757, 1758, 1759, 1760, 1761, 1762, 1763, 1764, 1765, 1767, 1768, 1769, 1786, 1787, 1789, 1792, 1793, 1794, 1796, 1797, 1798, 1799, 1800, 1803, 1804, 1805, 1807, 1808, 1810, 1813, 1816, 1821, 1822, 1823, 1824, 1825, 1826, 1827, 1828, 1829, 1830, 1831, 1832, 1833, 1834, 1835, 1836, 1837, 1838, 1846, 1847, 1848, 1850, 1861, 1862, 1863, 1864, 1865, 1867, 1871, 1872, 1876, 1877, 1878, 1880, 1883, 1884, 1885, 1890, 1891, 1892, 1896, 1897, 1901, 1903, 1906, 1907, 1908, 1909, 1910, 1911, 1912, 1913, 1914, 1915, 1916, 1917, 1918, 1920, 1921, 1922, 1923, 1924, 1925, 1926, 1930, 1932, 1933, 1934, 1935, 1936, 1937, 1938, 1939, 1940, 1941, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1951, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1970, 1972, 1973, 1974, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2027, 2028, 2029, 2030, 2031, 2032, 2033, 2040, 2041, 2043, 2044, 2045, 2053, 2054, 2055, 2057, 2058, 2060, 2061, 2062, 2063}; + + // A main method is defined as a method that is not called by any other methods, including recursively + public static ArrayList> AllMethodsCalled = new ArrayList<>(20); + + public static void GetAllMainMethods(String outputFile) { + // Build out all method calls + for (int i = 0; i < NUMBER_OF_METHODS; i++) { + AssembledMethod a = ItemDefinition.getMethodByID(i); + if (a == null) { + continue; + } + ArrayList ai = new ArrayList<>(20); + for (int j = 0; j < a.assemblyInstructions.length; j++) { + if (a.assemblyInstructions[j] == CS2AsmOpcodes.CALL.getOp() && !ai.contains(a.instructionOperands[j])) { + ai.add(a.instructionOperands[j]); + } + } + AllMethodsCalled.add(ai); + } + + try { + FileWriter myWriter = new FileWriter(outputFile); + myWriter.write("Main methods:\n"); + String methos = ""; + for (int i = 0; i < NUMBER_OF_METHODS; i++) { + boolean isMain = true; + end: + for (ArrayList j : AllMethodsCalled) { + for (Integer k : j) { + if (i == k) { + isMain = false; + break end; + } + } + } + if (isMain) { + methos = methos + ", " + i; + myWriter.write("Method" + i + "\n"); + } + } + myWriter.write("\n\n" + methos); + myWriter.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + + /** + * Dumps the method arguments to a file for all methods, as well as a graph of their method calls and on what + * lines those calls occur. + */ + + public static void DumpAllGameMethodArguments(String outputFile) { + try { + FileWriter myWriter = new FileWriter(outputFile); + myWriter.write("; Game method metadata\n;\n"); + for (int l = 0; l < Integer.MAX_VALUE; l++) { + AssembledMethod a = ItemDefinition.getMethodByID(l); + if (a == null) { + myWriter.close(); + break; + } else { + myWriter.write(";Method" + l + " ("); + int i = 0; + for (int j = 0; j < a.numberOfIntArguments; j++) { + i++; + myWriter.write("int var" + i); + if (j < a.numberOfIntArguments - 1 || a.numberOfStringArguments != 0) { + myWriter.write(", "); + } + } + for (int j = 0; j < a.numberOfStringArguments; j++) { + i++; + myWriter.write("string var" + i); + if (j < a.numberOfStringArguments - 1) { + myWriter.write(", "); + } + } + myWriter.write(")\n"); + GetMethodDependencyGraph(myWriter, l); + } + } + } catch (IOException e) { + System.out.println("An error occurred writing the file: " + outputFile); + e.printStackTrace(); + } + } + + /** + * Records for each method, all the methods that it calls, recursively. Used internally by other functions. + */ + private static int treeDepth = 0; + private static final ArrayList tree = new ArrayList<>(20); + + private static void GetMethodDependencyGraph(FileWriter f, int methodID) throws IOException { + AssembledMethod am = ItemDefinition.getMethodByID(methodID); + for (int i = 0; i < treeDepth; i++) { + f.write('\t'); + } + f.write("Method" + methodID + "\n"); + if (am == null) { + f.write(" Null??"); + return; + } + treeDepth++; + tree.add(methodID); + for (int i = 0; i < am.assemblyInstructions.length; i++) { + if (am.assemblyInstructions[i] == CS2AsmOpcodes.CALL.getOp()) { + f.write(i + ":"); + if (tree.contains(am.instructionOperands[i])) { + treeDepth++; + for (int j = 0; j < treeDepth; j++) { + f.write('\t'); + } + f.write("RECURSIVE Method" + methodID); + treeDepth--; + } else { + GetMethodDependencyGraph(f, am.instructionOperands[i]); + } + } + } + tree.remove(tree.size() - 1); + treeDepth--; + } + + public static void PrintAllValidGameMethods() { + for (int l = -5000; l < 5000; l++) { + AssembledMethod a = ItemDefinition.getMethodByID(l); + if (a == null) { + continue; + } + System.out.println("Valid methodID: " + l); + } + } +} diff --git a/Client/src/main/java/org/runite/client/Entity.java b/Client/src/main/java/org/runite/client/Entity.java new file mode 100644 index 000000000..44ec2e208 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Entity.java @@ -0,0 +1,564 @@ +package org.runite.client; + +import org.rs09.client.data.ReferenceCache; + +public abstract class Entity extends GameObject { + + int textEffect = 0; + private int anInt2754 = 0; + public int[] yOffsets2755 = new int[10]; + static int anInt2756; + private int anInt2757 = 0; + int anInt2758 = 0; + int anInt2759; + int anInt2760 = 0; + int anInt2761 = 0; + int anInt2762 = 0; + int renderAnimationId = -1; + int anInt2764 = -1; + private int anInt2766 = 0; + public int[] xOffsets2767 = new int[10]; + int[] anIntArray2768 = new int[4]; + boolean aBoolean2769 = false; + int anInt2771 = -1; + int anInt2772 = -1; + int anInt2773 = 0; + int anInt2775; + int anInt2776 = -1; + int anInt2777; + int anInt2778 = 0; + int anInt2779 = 32; + int anInt2780 = 0; + int anInt2781 = -1000; + int anInt2782; + private boolean aBoolean2783 = false; + int anInt2784; + int anInt2785; + int anInt2786 = 0; + private int anInt2787 = 0; + int anInt2788; + int anInt2789 = 0; + int anInt2790; + int anInt2791 = 0; + static ReferenceCache aReferenceCache_2792 = new ReferenceCache(64); + int anInt2793 = -1; + static int[] anIntArray2794 = new int[100]; + byte[] aByteArray2795 = new byte[10]; + Object anObject2796; + int anInt2797 = 0; + int anInt2798; + int anInt2799; + int anInt2800; + Class127_Sub1 aClass127_Sub1_2801; + int anInt2802 = 0; + int anInt2803 = 0; + private int anInt2804 = 0; + int anInt2805 = 0; + int anInt2806; + private boolean aBoolean2807 = false; + int anInt2808 = 0; + Class145[] aClass145Array2809 = new Class145[12]; + boolean aBoolean2810 = false; + int anInt2811 = 0; + int anInt2812; + int anInt2813 = 0; + int textCycle = 100; + int[] anIntArray2815 = new int[4]; + int anInt2816 = 0; + int anInt2817; + int anInt2818; + public int xAxis; + int anInt2820 = -32768; + int anInt2821 = 0; + private int size = 1; + int anInt2823; + int anInt2824 = 0; + RSString textSpoken = null; + int anInt2826 = -1; + private int anInt2827 = 0; + int anInt2828 = 0; + public int yAxis; + private int anInt2830 = 0; + int anInt2831; + int anInt2832 = 0; + int anInt2833; + private int anInt2834 = 0; + int anInt2835; + int[] anIntArray2836 = new int[4]; + int textColor = 0; + int anInt2838 = 0; + public static AbstractSprite[] aAbstractSpriteArray2839; + int anInt2840; + int anInt2842 = -1; + + + final RenderAnimationDefinition getRenderAnimationType() { + int ID = this.getRenderAnimationId(); + if (ID == -1) { + return PacketParser.aClass16_84; + } else { + return Class3_Sub10.getRenderAnimationDefinition(ID); + } + } + + boolean hasDefinitions() { + try { + return false; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "fe.L(" + (byte) 17 + ')'); + } + } + + final void updateAnimationPosition(int var2, int newX, int newY, boolean var5) { + try { + if (this.anInt2771 != -1 && SequenceDefinition.getAnimationDefinition(this.anInt2771).priority == 1) { + this.anInt2771 = -1; + } + + if (!var5) { + int var6 = newX + -this.xOffsets2767[0]; + int var7 = newY + -this.yOffsets2755[0]; + if (var6 >= -8 && 8 >= var6 && var7 >= -8 && var7 <= 8) { + if (this.anInt2816 < 9) { + ++this.anInt2816; + } + + for (int var8 = this.anInt2816; var8 > 0; --var8) { + this.xOffsets2767[var8] = this.xOffsets2767[-1 + var8]; + this.yOffsets2755[var8] = this.yOffsets2755[var8 + -1]; + this.aByteArray2795[var8] = this.aByteArray2795[var8 - 1]; + } + + this.aByteArray2795[0] = 1; + this.xOffsets2767[0] = newX; + this.yOffsets2755[0] = newY; + return; + } + } + + this.anInt2824 = 0; + this.xOffsets2767[0] = newX; + this.yOffsets2755[0] = newY; + this.anInt2816 = 0; + this.anInt2811 = 0; + this.yAxis = 64 * var2 + this.yOffsets2755[0] * 128; + this.xAxis = var2 * 64 + 128 * this.xOffsets2767[0]; + + if (HDToolKit.highDetail && Class102.player == this) { + TextureOperation31.method236(); + } + + } catch (RuntimeException var9) { + throw ClientErrorException.clientError(var9, "fe.J(" + -2 + ',' + var2 + ',' + newX + ',' + newY + ',' + var5 + ')'); + } + } + + final void walkStep(int var1, byte var2, int var3) { + try { + int var4 = this.xOffsets2767[0]; + int var5 = this.yOffsets2755[0]; + if (0 == var3) { + --var4; + ++var5; + } + + if (this.anInt2771 != -1 && 1 == SequenceDefinition.getAnimationDefinition(this.anInt2771).priority) { + this.anInt2771 = -1; + } + + if (this.anInt2816 < 9) { + ++this.anInt2816; + } + + int var6; + for (var6 = this.anInt2816; var6 > 0; --var6) { + this.xOffsets2767[var6] = this.xOffsets2767[-1 + var6]; + this.yOffsets2755[var6] = this.yOffsets2755[-1 + var6]; + this.aByteArray2795[var6] = this.aByteArray2795[-1 + var6]; + } + + if (var3 == 1) { + ++var5; + } + + this.aByteArray2795[0] = (byte) var1; + if (2 == var3) { + ++var5; + ++var4; + } + + if (var3 == 3) { + --var4; + } + + if (4 == var3) { + ++var4; + } + + if (5 == var3) { + --var5; + --var4; + } + + if (var3 == 6) { + --var5; + } + + if (var3 == 7) { + --var5; + ++var4; + } + + this.xOffsets2767[0] = var4; + this.yOffsets2755[0] = var5; + } catch (RuntimeException var7) { + throw ClientErrorException.clientError(var7, "fe.E(" + var1 + ',' + var2 + ',' + var3 + ')'); + } + } + + final void method1969(byte var1, Model var2, int var3) { + try { + if (var1 <= 33) { + this.method1971(null, (byte) -26); + } + + Class3_Sub28_Sub9.anInt3623 = 0; + TextureOperation15.anInt3198 = 0; + TextureOperation16.anInt3111 = 0; + RenderAnimationDefinition var4 = this.getRenderAnimationType(); + int var5 = var4.hill_width; + int var6 = var4.hill_height; + if (var5 != 0 && var6 != 0) { + int var7 = Class51.anIntArray840[var3]; + int var8 = Class51.anIntArray851[var3]; + int var9 = -var5 / 2; + int var10 = -var6 / 2; + int var12 = -(var9 * var7) + var10 * var8 >> 16; + int var11 = var7 * var10 - -(var8 * var9) >> 16; + int var13 = Scenery.sceneryPositionHash(WorldListCountry.localPlane, 1, var11 + this.xAxis, this.yAxis + var12); + int var14 = var5 / 2; + int var15 = -var6 / 2; + int var16 = var14 * var8 + var15 * var7 >> 16; + int var20 = var6 / 2; + int var17 = var15 * var8 + -(var14 * var7) >> 16; + int var18 = Scenery.sceneryPositionHash(WorldListCountry.localPlane, 1, var16 + this.xAxis, this.yAxis - -var17); + int var19 = -var5 / 2; + int var22 = -(var7 * var19) + var20 * var8 >> 16; + int var25 = var6 / 2; + int var24 = var5 / 2; + int var21 = var7 * var20 - -(var8 * var19) >> 16; + int var27 = var25 * var8 - var7 * var24 >> 16; + int var26 = var7 * var25 + var8 * var24 >> 16; + int var23 = Scenery.sceneryPositionHash(WorldListCountry.localPlane, 1, this.xAxis + var21, var22 + this.yAxis); + int var29 = var13 < var18 ? var13 : var18; + int var28 = Scenery.sceneryPositionHash(WorldListCountry.localPlane, 1, var26 + this.xAxis, var27 + this.yAxis); + int var30 = var28 > var23 ? var23 : var28; + int var31 = var28 > var18 ? var18 : var28; + int var32 = var23 <= var13 ? var23 : var13; + TextureOperation15.anInt3198 = 2047 & (int) (325.95D * Math.atan2(var29 - var30, var6)); + if (TextureOperation15.anInt3198 != 0) { + var2.method1896(TextureOperation15.anInt3198); + } + + Class3_Sub28_Sub9.anInt3623 = 2047 & (int) (325.95D * Math.atan2(-var31 + var32, var5)); + if (Class3_Sub28_Sub9.anInt3623 != 0) { + var2.method1886(Class3_Sub28_Sub9.anInt3623); + } + + TextureOperation16.anInt3111 = var28 + var13; + if (TextureOperation16.anInt3111 > var23 + var18) { + TextureOperation16.anInt3111 = var23 + var18; + } + + TextureOperation16.anInt3111 = (TextureOperation16.anInt3111 >> 1) - this.anInt2831; + if (TextureOperation16.anInt3111 != 0) { + var2.method1897(0, TextureOperation16.anInt3111, 0); + } + } + + } catch (RuntimeException var33) { + throw ClientErrorException.clientError(var33, "fe.M(" + var1 + ',' + (var2 != null ? "{...}" : "null") + ',' + var3 + ')'); + } + } + + final void addHit(int type, int damage, int clientClock) { + try { + for (int var5 = 0; var5 < 4; ++var5) { + if (damage >= this.anIntArray2768[var5]) { + this.anIntArray2836[var5] = clientClock; + this.anIntArray2815[var5] = type; + this.anIntArray2768[var5] = 70 + damage; + return; + } + } + + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "fe.G(" + type + ',' + -8 + ',' + damage + ',' + clientClock + ')'); + } + } + + final void method1971(Model var1, byte var2) { + try { + if (var2 > -102) { + this.setSize(1, -96); + } + + RenderAnimationDefinition var3 = this.getRenderAnimationType(); + if (0 != var3.roll_target_angle || 0 != var3.pitch_target_angle) { + int var4 = 0; + int var5 = 0; + if (this.aBoolean2769 && this.anInt2821 != 0) { + var5 = var3.pitch_target_angle; + if (this.anInt2821 >= 0) { + var4 = var3.roll_target_angle; + } else { + var4 = -var3.roll_target_angle; + } + } + + int var6; + int var7; + int var8; + int var9; + if (this.anInt2827 != var4) { + this.anInt2827 = var4; + if (this.anInt2754 > 0 && this.anInt2787 < var4) { + var6 = this.anInt2754 * this.anInt2754 / (2 * var3.roll_acceleration); + var7 = -this.anInt2787 + var4; + if (var6 <= var7) { + this.aBoolean2807 = true; + this.anInt2804 = (var4 + this.anInt2787 - var6) / 2; + var8 = var3.roll_max_speed * var3.roll_max_speed / (var3.roll_acceleration * 2); + var9 = -var8 + var4; + if (this.anInt2804 < var9) { + this.anInt2804 = var9; + } + } else { + this.aBoolean2807 = false; + } + } else if (this.anInt2754 < 0 && var4 < this.anInt2787) { + var6 = this.anInt2754 * this.anInt2754 / (var3.roll_acceleration * 2); + var7 = var4 - this.anInt2787; + if (var7 >= var6) { + this.aBoolean2807 = true; + this.anInt2804 = (this.anInt2787 + var6 - -var4) / 2; + var8 = var3.roll_max_speed * var3.roll_max_speed / (2 * var3.roll_acceleration); + var9 = var8 + var4; + if (this.anInt2804 > var9) { + this.anInt2804 = var9; + } + } else { + this.aBoolean2807 = false; + } + } else { + this.aBoolean2807 = false; + } + } + + if (this.anInt2754 == 0) { + var6 = -this.anInt2787 + this.anInt2827; + if (-var3.roll_acceleration < var6 && var6 < var3.roll_acceleration) { + this.anInt2787 = this.anInt2827; + } else { + this.aBoolean2807 = true; + var7 = var3.roll_max_speed * var3.roll_max_speed / (var3.roll_acceleration * 2); + this.anInt2804 = (this.anInt2827 + this.anInt2787) / 2; + if (var6 >= 0) { + var8 = -var7 + this.anInt2827; + this.anInt2754 = var3.roll_acceleration; + if (this.anInt2804 < var8) { + this.anInt2804 = var8; + } + } else { + this.anInt2754 = -var3.roll_acceleration; + var8 = var7 + this.anInt2827; + if (var8 < this.anInt2804) { + this.anInt2804 = var8; + } + } + } + } else if (this.anInt2754 > 0) { + if (this.anInt2804 <= this.anInt2787) { + this.aBoolean2807 = false; + } + + if (!this.aBoolean2807) { + this.anInt2754 -= var3.roll_acceleration; + if (this.anInt2754 < 0) { + this.anInt2754 = 0; + } + } else if (var3.roll_max_speed > this.anInt2754) { + this.anInt2754 += var3.roll_acceleration; + } + } else { + if (this.anInt2787 <= this.anInt2804) { + this.aBoolean2807 = false; + } + + if (this.aBoolean2807) { + if (-var3.roll_max_speed < this.anInt2754) { + this.anInt2754 -= var3.roll_acceleration; + } + } else { + this.anInt2754 += var3.roll_acceleration; + if (this.anInt2754 > 0) { + this.anInt2754 = 0; + } + } + } + + this.anInt2787 += this.anInt2754; + if (this.anInt2787 != 0) { + var6 = (this.anInt2787 & '\ufff1') >> 5; + var7 = var1.method1871() / 2; + var1.method1897(0, -var7, 0); + var1.method1886(var6); + var1.method1897(0, var7, 0); + } + + if (var5 != this.anInt2766) { + this.anInt2766 = var5; + if (this.anInt2830 > 0 && this.anInt2834 < var5) { + var6 = this.anInt2830 * this.anInt2830 / (2 * var3.pitch_acceleration); + var7 = -this.anInt2834 + var5; + if (var6 > var7) { + this.aBoolean2783 = false; + } else { + this.anInt2757 = (-var6 + this.anInt2834 + var5) / 2; + this.aBoolean2783 = true; + var8 = var3.pitch_max_speed * var3.pitch_max_speed / (2 * var3.pitch_acceleration); + var9 = var5 + -var8; + if (var9 > this.anInt2757) { + this.anInt2757 = var9; + } + } + } else if (this.anInt2830 < 0 && this.anInt2834 > var5) { + var7 = -this.anInt2834 + var5; + var6 = this.anInt2830 * this.anInt2830 / (2 * var3.pitch_acceleration); + if (var7 >= var6) { + this.anInt2757 = (var6 + this.anInt2834 - -var5) / 2; + this.aBoolean2783 = true; + var8 = var3.pitch_max_speed * var3.pitch_max_speed / (2 * var3.pitch_acceleration); + var9 = var8 + var5; + if (var9 < this.anInt2757) { + this.anInt2757 = var9; + } + } else { + this.aBoolean2783 = false; + } + } else { + this.aBoolean2783 = false; + } + } + + if (this.anInt2830 == 0) { + var6 = -this.anInt2834 + this.anInt2766; + if (-var3.pitch_acceleration < var6 && var3.pitch_acceleration > var6) { + this.anInt2834 = this.anInt2766; + } else { + this.anInt2757 = (this.anInt2766 + this.anInt2834) / 2; + this.aBoolean2783 = true; + var7 = var3.pitch_max_speed * var3.pitch_max_speed / (2 * var3.pitch_acceleration); + if (var6 < 0) { + this.anInt2830 = -var3.pitch_acceleration; + var8 = var7 + this.anInt2766; + if (this.anInt2757 > var8) { + this.anInt2757 = var8; + } + } else { + this.anInt2830 = var3.pitch_acceleration; + var8 = -var7 + this.anInt2766; + if (var8 > this.anInt2757) { + this.anInt2757 = var8; + } + } + } + } else if (this.anInt2830 > 0) { + if (this.anInt2757 <= this.anInt2834) { + this.aBoolean2783 = false; + } + + if (this.aBoolean2783) { + if (var3.pitch_max_speed > this.anInt2830) { + this.anInt2830 += var3.pitch_acceleration; + } + } else { + this.anInt2830 -= var3.pitch_acceleration; + if (0 > this.anInt2830) { + this.anInt2830 = 0; + } + } + } else { + if (this.anInt2757 >= this.anInt2834) { + this.aBoolean2783 = false; + } + + if (this.aBoolean2783) { + if (this.anInt2830 > -var3.pitch_max_speed) { + this.anInt2830 -= var3.pitch_acceleration; + } + } else { + this.anInt2830 += var3.pitch_acceleration; + if (0 < this.anInt2830) { + this.anInt2830 = 0; + } + } + } + + this.anInt2834 += this.anInt2830; + if (this.anInt2834 != 0) { + var6 = (this.anInt2834 & '\uffe6') >> 5; + var7 = var1.method1871() / 2; + var1.method1897(0, -var7, 0); + var1.method1896(var6); + var1.method1897(0, var7, 0); + } + } + + } catch (RuntimeException var10) { + throw ClientErrorException.clientError(var10, "fe.A(" + (var1 != null ? "{...}" : "null") + ',' + var2 + ')'); + } + } + + abstract int getRenderAnimationId(); + + final void method1973(int var1) { + try { + if (var1 < -75) { + this.anInt2816 = 0; + this.anInt2811 = 0; + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "fe.I(" + var1 + ')'); + } + } + + final int method1975(int var1) { + try { + return var1 != 27855 ? 107 : (this.anInt2820 != -32768 ? -this.anInt2820 : 200); + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "fe.F(" + var1 + ')'); + } + } + + final void setSize(int var1, int var2) { + try { + this.size = var1; + if (var2 != 2) { + this.aBoolean2807 = false; + } + + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "fe.C(" + var1 + ',' + var2 + ')'); + } + } + + int getSize() { + try { + return this.size; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "fe.H(" + (byte) 114 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Envelope.java b/Client/src/main/java/org/runite/client/Envelope.java new file mode 100644 index 000000000..6a2ad479a --- /dev/null +++ b/Client/src/main/java/org/runite/client/Envelope.java @@ -0,0 +1,67 @@ +package org.runite.client; + +final class Envelope { + + int waveTable; + int minInterval; + int maxInterval; + private int stages = 2; + private int[] levels = new int[2]; + private int[] times = new int[2]; + private int phaseIndex; + private int level; + private int slope; + private int nextTime; + private int time; + + public Envelope() { + this.times[0] = 0; + this.times[1] = 65535; + this.levels[0] = 0; + this.levels[1] = 65535; + } + + final int nextLevel(int duration) { + if (this.time >= this.nextTime) { + this.level = this.levels[this.phaseIndex++] << 15; + if (this.phaseIndex >= this.stages) { + this.phaseIndex = this.stages - 1; + } + + this.nextTime = (int) ((double) this.times[this.phaseIndex] / 65536.0D * (double) duration); + if (this.nextTime > this.time) { + this.slope = ((this.levels[this.phaseIndex] << 15) - this.level) / (this.nextTime - this.time); + } + } + + this.level += this.slope; + ++this.time; + return this.level - this.slope >> 15; + } + + final void reset() { + this.nextTime = 0; + this.phaseIndex = 0; + this.slope = 0; + this.level = 0; + this.time = 0; + } + + final void decodeStages(DataBuffer buffer) { + this.stages = buffer.readUnsignedByte(); + this.times = new int[this.stages]; + this.levels = new int[this.stages]; + + for (int var2 = 0; var2 < this.stages; ++var2) { + this.times[var2] = buffer.readUnsignedShort(); + this.levels[var2] = buffer.readUnsignedShort(); + } + } + + final void decode(DataBuffer buffer) { + this.waveTable = buffer.readUnsignedByte(); + this.minInterval = buffer.readInt(); + this.maxInterval = buffer.readInt(); + this.decodeStages(buffer); + } +} diff --git a/Client/src/main/java/org/runite/client/Filter.java b/Client/src/main/java/org/runite/client/Filter.java new file mode 100644 index 000000000..44224a734 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Filter.java @@ -0,0 +1,114 @@ +package org.runite.client; + +final class Filter { + + private static final float[][] aFloatArrayArray1431 = new float[2][8]; + private static float aFloat1433; + private final int[][][] anIntArrayArrayArray1430 = new int[2][2][4]; + private final int[][][] anIntArrayArrayArray1432 = new int[2][2][4]; + private final int[] anIntArray1437 = new int[2]; + int[] pairs = new int[2]; + + private static float method1621(float var0) { + float var1 = 32.703197F * (float) Math.pow(2.0D, var0); + return var1 * 3.1415927F / 11025.0F; + } + + final void decode(DataBuffer var1, Envelope var2) { + int var3 = var1.readUnsignedByte(); + this.pairs[0] = var3 >> 4; + this.pairs[1] = var3 & 15; + if (var3 == 0) { + this.anIntArray1437[0] = this.anIntArray1437[1] = 0; + } else { + this.anIntArray1437[0] = var1.readUnsignedShort(); + this.anIntArray1437[1] = var1.readUnsignedShort(); + int var4 = var1.readUnsignedByte(); + + int var5; + int var6; + for (var5 = 0; var5 < 2; ++var5) { + for (var6 = 0; var6 < this.pairs[var5]; ++var6) { + this.anIntArrayArrayArray1430[var5][0][var6] = var1.readUnsignedShort(); + this.anIntArrayArrayArray1432[var5][0][var6] = var1.readUnsignedShort(); + } + } + + for (var5 = 0; var5 < 2; ++var5) { + for (var6 = 0; var6 < this.pairs[var5]; ++var6) { + if ((var4 & 1 << var5 * 4 << var6) == 0) { + this.anIntArrayArrayArray1430[var5][1][var6] = this.anIntArrayArrayArray1430[var5][0][var6]; + this.anIntArrayArrayArray1432[var5][1][var6] = this.anIntArrayArrayArray1432[var5][0][var6]; + } else { + this.anIntArrayArrayArray1430[var5][1][var6] = var1.readUnsignedShort(); + this.anIntArrayArrayArray1432[var5][1][var6] = var1.readUnsignedShort(); + } + } + } + + if (var4 != 0 || this.anIntArray1437[1] != this.anIntArray1437[0]) { + var2.decodeStages(var1); + } + } + + } + + final int compute(int var1, float var2) { + float var3; + if (var1 == 0) { + var3 = (float) this.anIntArray1437[0] + (float) (this.anIntArray1437[1] - this.anIntArray1437[0]) * var2; + var3 *= 0.0030517578F; + aFloat1433 = (float) Math.pow(0.1D, var3 / 20.0F); + SynthInstrument.inverseA0 = (int) (aFloat1433 * 65536.0F); + } + + if (this.pairs[var1] == 0) { + return 0; + } else { + var3 = this.method1624(var1, 0, var2); + aFloatArrayArray1431[var1][0] = -2.0F * var3 * (float) Math.cos(this.method1625(var1, 0, var2)); + aFloatArrayArray1431[var1][1] = var3 * var3; + + int var4; + for (var4 = 1; var4 < this.pairs[var1]; ++var4) { + var3 = this.method1624(var1, var4, var2); + float var5 = -2.0F * var3 * (float) Math.cos(this.method1625(var1, var4, var2)); + float var6 = var3 * var3; + aFloatArrayArray1431[var1][var4 * 2 + 1] = aFloatArrayArray1431[var1][var4 * 2 - 1] * var6; + aFloatArrayArray1431[var1][var4 * 2] = aFloatArrayArray1431[var1][var4 * 2 - 1] * var5 + aFloatArrayArray1431[var1][var4 * 2 - 2] * var6; + + for (int var7 = var4 * 2 - 1; var7 >= 2; --var7) { + aFloatArrayArray1431[var1][var7] += aFloatArrayArray1431[var1][var7 - 1] * var5 + aFloatArrayArray1431[var1][var7 - 2] * var6; + } + + aFloatArrayArray1431[var1][1] += aFloatArrayArray1431[var1][0] * var5 + var6; + aFloatArrayArray1431[var1][0] += var5; + } + + if (var1 == 0) { + for (var4 = 0; var4 < this.pairs[0] * 2; ++var4) { + aFloatArrayArray1431[0][var4] *= aFloat1433; + } + } + + for (var4 = 0; var4 < this.pairs[var1] * 2; ++var4) { + SynthInstrument.coefficency[var1][var4] = (int) (aFloatArrayArray1431[var1][var4] * 65536.0F); + } + + return this.pairs[var1] * 2; + } + } + + private float method1624(int var1, int var2, float var3) { + float var4 = (float) this.anIntArrayArrayArray1432[var1][0][var2] + var3 * (float) (this.anIntArrayArrayArray1432[var1][1][var2] - this.anIntArrayArrayArray1432[var1][0][var2]); + var4 *= 0.0015258789F; + return 1.0F - (float) Math.pow(10.0D, -var4 / 20.0F); + } + + private float method1625(int var1, int var2, float var3) { + float var4 = (float) this.anIntArrayArrayArray1430[var1][0][var2] + var3 * (float) (this.anIntArrayArrayArray1430[var1][1][var2] - this.anIntArrayArrayArray1430[var1][0][var2]); + var4 *= 1.2207031E-4F; + return method1621(var4); + } + +} diff --git a/Client/src/main/java/org/runite/client/FloorOverlayDefinition.java b/Client/src/main/java/org/runite/client/FloorOverlayDefinition.java new file mode 100644 index 000000000..d05fbc0e2 --- /dev/null +++ b/Client/src/main/java/org/runite/client/FloorOverlayDefinition.java @@ -0,0 +1,150 @@ +package org.runite.client; + +final class FloorOverlayDefinition { + + int anInt2090 = 128; + boolean aBoolean2092 = false; + boolean aBoolean2093 = true; + int anInt2094 = 1190717; + int anInt2095 = -1; + int anInt2098 = -1; + int anInt2100 = 8; + int anInt2101 = 16; + boolean aBoolean2102 = true; + int anInt2103 = 0; + + static FloorOverlayDefinition getFile(int var1) { + try { + FloorOverlayDefinition var2 = (FloorOverlayDefinition) Class163_Sub2_Sub1.aReferenceCache_4015.get(var1); + if (null == var2) { + System.out.println("Retrieving file " + var1); + byte[] var4 = Class3_Sub28_Sub5.configurationsIndex_3580.getFile(4, var1); + var2 = new FloorOverlayDefinition(); + if (var4 != null) { + var2.parseDefinition(new DataBuffer(var4), var1); + } + + Class163_Sub2_Sub1.aReferenceCache_4015.put(var2, var1); + } + return var2; + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "um.C(" + ',' + var1 + ')'); + } + } + + static void method1014(int var1, int var2) { + try { + + for (int var4 = 0; var4 < Client.anInt869; ++var4) { + FloorOverlayDefinition var5 = getFile(var4); + if (null != var5) { + int var6 = var5.anInt2095; + if (0 <= var6 && !Class51.anInterface2_838.method17(var6, 126)) { + var6 = -1; + } + + int var7; + int var8; + int var9; + int var10; + if (var5.anInt2098 < 0) { + if (var6 >= 0) { + var7 = Class51.anIntArray834[LinkableRSString.method729((byte) -74, Class51.anInterface2_838.method15(var6, 65535), 96)]; + } else if (-1 == var5.anInt2103) { + var7 = -1; + } else { + var8 = var5.anInt2103; + var9 = var1 + (var8 & 127); + if (var9 < 0) { + var9 = 0; + } else if (var9 > 127) { + var9 = 127; + } + + var10 = var9 + (896 & var8) + ('\ufc00' & var8 + var2); + var7 = Class51.anIntArray834[LinkableRSString.method729((byte) -127, var10, 96)]; + } + } else { + var8 = var5.anInt2098; + var9 = (127 & var8) + var1; + if (var9 < 0) { + var9 = 0; + } else if (var9 > 127) { + var9 = 127; + } + + var10 = (896 & var8) + ('\ufc00' & var2 + var8) + var9; + var7 = Class51.anIntArray834[LinkableRSString.method729((byte) -63, var10, 96)]; + } + + Class83.anIntArray1161[1 + var4] = var7; + } + } + + } catch (RuntimeException var11) { + throw ClientErrorException.clientError(var11, "fi.B(" + -120 + ',' + var1 + ',' + var2 + ')'); + } + } + + static void method631(CacheIndex var1) { + try { + Class3_Sub28_Sub5.configurationsIndex_3580 = var1; + Client.anInt869 = Class3_Sub28_Sub5.configurationsIndex_3580.getFileAmount(4); + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "qc.D(" + false + ',' + (var1 != null ? "{...}" : "null") + ')'); + } + } + + final void parseDefinition(DataBuffer var2, int var3) { + try { + while (true) { + int var4 = var2.readUnsignedByte(); + if (var4 == 0) { + + return; + } + + this.decode(var4, var2, var3); + } + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "wl.H(" + 24559 + ',' + (var2 != null ? "{...}" : "null") + ',' + var3 + ')'); + } + } + + private void decode(int opcode, DataBuffer buffer, int var4) { + try { + if (opcode == 1) { + this.anInt2103 = RSInterface.method869(buffer.readMedium()); + } else if (opcode == 2) { + this.anInt2095 = buffer.readUnsignedByte(); + } else if (3 == opcode) { + this.anInt2095 = buffer.readUnsignedShort(); + if (this.anInt2095 == 65535) { + this.anInt2095 = -1; + } + } else if (5 == opcode) { + this.aBoolean2102 = false; + } else if (opcode == 7) { + this.anInt2098 = RSInterface.method869(buffer.readMedium()); + } else if (opcode == 8) { + TextureOperation26.anInt3081 = var4; + } else if (opcode == 9) { + this.anInt2090 = buffer.readUnsignedShort(); + } else if (opcode == 10) { + this.aBoolean2093 = false; + } else if (opcode == 11) { + this.anInt2100 = buffer.readUnsignedByte(); + } else if (12 == opcode) { + this.aBoolean2092 = true; + } else if (13 == opcode) { + this.anInt2094 = buffer.readMedium(); + } else if (opcode == 14) { + this.anInt2101 = buffer.readUnsignedByte(); + } + + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "wl.E(" + 0 + ',' + opcode + ',' + (buffer != null ? "{...}" : "null") + ',' + var4 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/FloorUnderlayDefinition.java b/Client/src/main/java/org/runite/client/FloorUnderlayDefinition.java new file mode 100644 index 000000000..6c295e0e8 --- /dev/null +++ b/Client/src/main/java/org/runite/client/FloorUnderlayDefinition.java @@ -0,0 +1,152 @@ +package org.runite.client; + +import org.rs09.client.config.GameConfig; + +final class FloorUnderlayDefinition { + + int anInt1406; + int anInt1408; + boolean aBoolean1411 = true; + int anInt1412 = -1; + int anInt1414 = 128; + int anInt1417; + int anInt1418; + + static FloorUnderlayDefinition method629(int var1) { + try { + FloorUnderlayDefinition var2 = (FloorUnderlayDefinition)Class44.aReferenceCache_725.get(var1); + if(var2 == null) { + byte[] var3 = Class3_Sub23.configurationsIndex_2536.getFile(1, var1); + var2 = new FloorUnderlayDefinition(); + if(null != var3) { + var2.parseUnderlayDefinition(var1, new DataBuffer(var3)); + } + + Class44.aReferenceCache_725.put(var2, var1); + return var2; + } else { + return var2; + } + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "qc.B(" + true + ',' + var1 + ')'); + } + } + + final void parseUnderlayDefinition(int var1, DataBuffer buffer) { + try { + while (true) { + int opcode = buffer.readUnsignedByte(); + if (opcode == 0) { + + return; + } + + this.parseOpcode(opcode, buffer, var1); + } + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "ni.F(" + var1 + ',' + (buffer != null ? "{...}" : "null") + ',' + 255 + ')'); + } + } + + private void parseOpcode(int opcode, DataBuffer buffer, int var4) { + try { + if (opcode == 1) { + int underlayColor = buffer.readMedium(); + this.method1600(underlayColor); + } else if (opcode == 2) { + this.anInt1412 = buffer.readUnsignedShort(); + if (this.anInt1412 == 65535) { + this.anInt1412 = -1; + } + } else if (3 == opcode) { + this.anInt1414 = buffer.readUnsignedShort(); + } else if (opcode == 4) { + this.aBoolean1411 = false; + } + + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "ni.E(" + (byte) -52 + ',' + opcode + ',' + (buffer != null ? "{...}" : "null") + ',' + var4 + ')'); + } + } + + private void method1600(int rgbAsInt) { + try { + double red = (double) (255 & rgbAsInt >> 16) / 256.0D; + double green = (double) (255 & rgbAsInt >> 8) / 256.0D; + double var9 = red; + double blue = (double) (rgbAsInt & 0xFF) / 256.0D; + if (green < red) { + var9 = green; + } + + if (blue < var9) { + var9 = blue; + } + + double var11 = red; + double var14 = 0.0D; + if (green > red) { + var11 = green; + } + + if (blue > var11) { + var11 = blue; + } + + double var16 = 0.0D; + double var18 = (var11 + var9) / 2.0D; + if (var9 != var11) { + if (0.5D > var18) { + var16 = (var11 - var9) / (var11 + var9); + } + + if (var11 == red) { + var14 = (-blue + green) / (-var9 + var11); + } else if (green == var11) { + var14 = (blue - red) / (var11 - var9) + 2.0D; + } else if (blue == var11) { + var14 = 4.0D + (-green + red) / (-var9 + var11); + } + + if (0.5D <= var18) { + var16 = (var11 - var9) / (-var9 + (2.0D - var11)); + } + } + + if (var18 > 0.5D) { + this.anInt1418 = (int) (var16 * (-var18 + 1.0D) * 512.0D); + } else { + this.anInt1418 = (int) (var16 * var18 * 512.0D); + } + + if (1 > this.anInt1418) { + this.anInt1418 = 1; + } + + this.anInt1406 = (int) (var16 * 256.0D); + this.anInt1417 = (int) (256.0D * var18); + + if (this.anInt1417 >= 0) { + if ((GameConfig.CHRISTMAS_EVENT_ENABLED ? -255 : 255) < this.anInt1417) {//Underlay white transformation - + this.anInt1417 = 255; + } + } else { + this.anInt1417 = 0; + } + + var14 /= 6.0D; + this.anInt1408 = (int) ((double) this.anInt1418 * var14); + if (this.anInt1406 >= 0) { + if ((GameConfig.CHRISTMAS_EVENT_ENABLED ? -255 : 255) < this.anInt1406) {//Underlay white transformation - + this.anInt1406 = 255; + } + } else { + this.anInt1406 = 0; + } + + } catch (RuntimeException var20) { + throw ClientErrorException.clientError(var20, "ni.D(" + rgbAsInt + ',' + (byte) 81 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Font.java b/Client/src/main/java/org/runite/client/Font.java new file mode 100644 index 000000000..bc846b440 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Font.java @@ -0,0 +1,980 @@ +package org.runite.client; + +import org.rs09.client.Node; +import org.rs09.client.rendering.Toolkit; + +import java.util.Objects; +import java.util.Random; + +public abstract class Font extends Node { + + private static final RSString[] aStringArray3753 = new RSString[100]; + private static final RSString aString_3745 = Unsorted.emptyString(100); + + private static int anInt3746 = -1; + private static int anInt3747 = -1; + private static int anInt3748 = 0; + private static int anInt3749 = 0; + private static int anInt3750 = 256; + private static int anInt3751 = 256; + private static int anInt3752 = -1; + private static int anInt3754 = -1; + private static int anInt3755 = 0; + private static int anInt3756 = 0; + + int[] anIntArray3709; + int[] anIntArray3721; + int anInt3727 = 0; + private int anInt3710; + private int[] anIntArray3719; + private int anInt3722; + private int[] anIntArray3723; + private int[] anIntArray3730; + private byte[] aByteArray3733; + private int[] anIntArray3736; + private AbstractIndexedSprite[] aClass109Array3740; + + + Font(byte[] var1, int[] var2, int[] var3, int[] var4, int[] var5) { + this.anIntArray3719 = var2; + this.anIntArray3730 = var3; + this.anIntArray3709 = var4; + this.anIntArray3721 = var5; + this.method700(var1); + int var6 = Integer.MAX_VALUE; + int var7 = Integer.MIN_VALUE; + + for (int var8 = 0; var8 < 256; ++var8) { + if (this.anIntArray3730[var8] < var6 && this.anIntArray3721[var8] != 0) { + var6 = this.anIntArray3730[var8]; + } + + if (this.anIntArray3730[var8] + this.anIntArray3721[var8] > var7) { + var7 = this.anIntArray3730[var8] + this.anIntArray3721[var8]; + } + } + + this.anInt3722 = this.anInt3727 - var6; + this.anInt3710 = var7 - this.anInt3727; + } + + Font(byte[] var1) { + this.method700(var1); + } + + static RSString method686(RSString var0) { + int var1 = var0.length(); + int var2 = 0; + + int var4; + for (int var3 = 0; var3 < var1; ++var3) { + var4 = var0.charAt(var3, (byte) 50); + if (var4 == 60 || var4 == 62) { + var2 += 3; + } + } + + RSString var6 = Unsorted.emptyString(var1 + var2); + + for (var4 = 0; var4 < var1; ++var4) { + int var5 = var0.charAt(var4, (byte) -101); + if (var5 == 60) { + Objects.requireNonNull(var6).append(RSString.parse("")); + } else if (var5 == 62) { + Objects.requireNonNull(var6).append(RSString.parse("")); + } else { + Objects.requireNonNull(var6).appendCharacter(var5); + } + } + + return var6; + } + + private static int method694(byte[][] var0, byte[][] var1, int[] var2, int[] var3, int[] var4, int var5, int var6) { + int var7 = var2[var5]; + int var8 = var7 + var4[var5]; + int var9 = var2[var6]; + int var10 = var9 + var4[var6]; + int var11 = var7; + if (var9 > var7) { + var11 = var9; + } + + int var12 = var8; + if (var10 < var8) { + var12 = var10; + } + + int var13 = var3[var5]; + if (var3[var6] < var13) { + var13 = var3[var6]; + } + + byte[] var14 = var1[var5]; + byte[] var15 = var0[var6]; + int var16 = var11 - var7; + int var17 = var11 - var9; + + for (int var18 = var11; var18 < var12; ++var18) { + int var19 = var14[var16++] + var15[var17++]; + if (var19 < var13) { + var13 = var19; + } + } + + return -var13; + } + + public final void method676(RSString var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9, int var10) { + this.method693(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10); + } + + private void method677(RSString var1, int var2, int var3) { + var3 -= this.anInt3727; + int var4 = -1; + int var5 = 0; + int var6 = var1.length(); + + for (int var7 = 0; var7 < var6; ++var7) { + int var8 = var1.charAt(var7, (byte) 72); + if (var8 == 60) { + var4 = var7; + } else { + int var10; + if (var8 == 62 && var4 != -1) { + RSString var9 = var1.substring(var4 + 1, var7, 0); + var4 = -1; + if (var9.equalsString(RSString.parse("lt"))) { + var8 = 60; + } else if (var9.equalsString(RSString.parse("gt"))) { + var8 = 62; + } else if (var9.equalsString(RSString.parse("nbsp"))) { + var8 = 160; + } else if (var9.equalsString(RSString.parse("shy"))) { + var8 = 173; + } else if (var9.equalsString(RSString.parse("times"))) { + var8 = 215; + } else if (var9.equalsString(RSString.parse("euro"))) { + var8 = 128; + } else if (var9.equalsString(RSString.parse("copy"))) { + var8 = 169; + } else { + if (!var9.equalsString(RSString.parse("reg"))) { + if (var9.startsWith(RSString.parse("img="))) { + try {//TODO: Chat image?... + var10 = var9.substring(4).parseInt(); + AbstractIndexedSprite var15 = this.aClass109Array3740[var10]; + int var12 = this.anIntArray3723 != null ? this.anIntArray3723[var10] : var15.anInt1467; + if (anInt3750 == 256) { + var15.method1667(var2, var3 + this.anInt3727 - var12); + } else { + var15.method1666(var2, var3 + this.anInt3727 - var12, anInt3750); + } + + var2 += var15.anInt1469; + var5 = 0; + } catch (Exception var13) { + if (!var13.toString().contains("java.lang.ArrayIndexOutOfBoundsException")) { + // TODO Added by Tech to figure out the weird issue + System.out.println(var13.toString() + ", full string: '" + var9.toString() + "'"); + var13.printStackTrace(); + } + } + } else { + this.method685(var9); + } + continue; + } + + var8 = 174; + } + } + + if (var4 == -1) { + if (this.aByteArray3733 != null && var5 != 0) { + var2 += this.aByteArray3733[(var5 << 8) + var8]; + } + + int var14 = this.anIntArray3709[var8]; + var10 = this.anIntArray3721[var8]; + if (var8 != 32) { + if (anInt3750 == 256) { + if (anInt3754 != -1) { + this.method678(var8, var2 + this.anIntArray3719[var8] + 1, var3 + this.anIntArray3730[var8] + 1, var14, var10, anInt3754); + } + + this.method678(var8, var2 + this.anIntArray3719[var8], var3 + this.anIntArray3730[var8], var14, var10, anInt3755); + } else { + if (anInt3754 != -1) { + this.method679(var8, var2 + this.anIntArray3719[var8] + 1, var3 + this.anIntArray3730[var8] + 1, var14, var10, anInt3754, anInt3750); + } + + this.method679(var8, var2 + this.anIntArray3719[var8], var3 + this.anIntArray3730[var8], var14, var10, anInt3755, anInt3750); + } + } else if (anInt3756 > 0) { + anInt3748 += anInt3756; + var2 += anInt3748 >> 8; + anInt3748 &= 255; + } + + int var11 = this.anIntArray3736[var8]; + if (anInt3746 != -1) { + Toolkit.getActiveToolkit().drawHorizontalLine(var2, var3 + (int) ((double) this.anInt3727 * 0.7D), var11, anInt3746); + } + + if (anInt3747 != -1) { + Toolkit.getActiveToolkit().drawHorizontalLine(var2, var3 + this.anInt3727 + 1, var11, anInt3747); + } + + var2 += var11; + var5 = var8; + } + } + } + + } + + abstract void method678(int var1, int var2, int var3, int var4, int var5, int var6); + + abstract void method679(int var1, int var2, int var3, int var4, int var5, int var6, int var7); + + public final int method680(RSString var1, int var2) { + int var3 = this.method691(var1, new int[]{var2}, aStringArray3753); + int var4 = 0; + + for (int var5 = 0; var5 < var3; ++var5) { + int var6 = this.method682(aStringArray3753[var5]); + if (var6 > var4) { + var4 = var6; + } + } + + return var4; + } + + public final void method681(RSString var1, int var2, int var3, int var4, int var5) { + if (var1 != null) { + this.method698(var4, var5); + this.method677(var1, var2, var3); + } + } + + public final int method682(RSString var1) { + if (var1 == null) { + return 0; + } else { + int var2 = -1; + int var3 = 0; + int var4 = 0; + int var5 = var1.length(); + + for (int var6 = 0; var6 < var5; ++var6) { + int var7 = var1.charAt(var6, (byte) -45); + if (var7 == 60) { + var2 = var6; + } else { + if (var7 == 62 && var2 != -1) { + RSString var8 = var1.substring(var2 + 1, var6, 0); + var2 = -1; + if (var8.equalsString(RSString.parse("lt"))) { + var7 = 60; + } else if (var8.equalsString(RSString.parse("gt"))) { + var7 = 62; + } else if (var8.equalsString(RSString.parse("nbsp"))) { + var7 = 160; + } else if (var8.equalsString(RSString.parse("shy"))) { + var7 = 173; + } else if (var8.equalsString(RSString.parse("times"))) { + var7 = 215; + } else if (var8.equalsString(RSString.parse("euro"))) { + var7 = 128; + } else if (var8.equalsString(RSString.parse("copy"))) { + var7 = 169; + } else { + if (!var8.equalsString(RSString.parse("reg"))) { + if (var8.startsWith(RSString.parse("img="))) { + try {//No clue + int var9 = var8.substring(4).parseInt(); + var4 += this.aClass109Array3740[var9].anInt1469; + var3 = 0; + } catch (Exception var10) { + } + } + continue; + } + + var7 = 174; + } + } + + if (var2 == -1) { + var4 += this.anIntArray3736[var7]; + if (this.aByteArray3733 != null && var3 != 0) { + var4 += this.aByteArray3733[(var3 << 8) + var7]; + } + + var3 = var7; + } + } + } + + return var4; + } + } + + final int method683(RSString var1, int var2, int var3, Random var6, int var7) { + if (var1 == null) { + return 0; + } else { + var6.setSeed(var7); + this.method701(16777215, 0, 192 + (var6.nextInt() & 31)); + int var8 = var1.length(); + int[] var9 = new int[var8]; + int var10 = 0; + + for (int var11 = 0; var11 < var8; ++var11) { + var9[var11] = var10; + if ((var6.nextInt() & 3) == 0) { + ++var10; + } + } + + this.method703(var1, var2, var3, var9, null); + return var10; + } + } + + public final int method684(RSString var1, int var2) { + return this.method691(var1, new int[]{var2}, aStringArray3753); + } + + private void method685(RSString var1) { + try { + if (var1.startsWith(RSString.parse("col="))) { + anInt3755 = var1.substring(4).parseInt(16); + } else if (var1.equalsString(RSString.parse(")4col"))) { + anInt3755 = anInt3749; + } else if (var1.startsWith(RSString.parse("trans="))) { + anInt3750 = var1.substring(6).parseInt(); + } else if (var1.equalsString(RSString.parse(")4trans"))) { + anInt3750 = anInt3751; + } else if (var1.startsWith(RSString.parse("str="))) { + anInt3746 = var1.substring(4).parseInt(16); + } else if (var1.equalsString(RSString.parse("str"))) { + anInt3746 = 8388608; + } else if (var1.equalsString(RSString.parse(")4str"))) { + anInt3746 = -1; + } else if (var1.startsWith(RSString.parse("u="))) { + anInt3747 = var1.substring(2).parseInt(16); + } else if (var1.equalsString(RSString.parse("u"))) { + anInt3747 = 0; + } else if (var1.equalsString(RSString.parse(")4u"))) { + anInt3747 = -1; + } else if (var1.startsWith(RSString.parse("shad="))) { + anInt3754 = var1.substring(5).parseInt(16); + } else if (var1.equalsString(RSString.parse("shad"))) { + anInt3754 = 0; + } else if (var1.equalsString(RSString.parse(")4shad"))) { + anInt3754 = anInt3752; + } else if (var1.equalsString(RSString.parse("br"))) { + this.method701(anInt3749, anInt3752, anInt3751); + } + } catch (Exception var3) { + } + + } + + private int method687(int var1) { + return this.anIntArray3736[var1 & 0xFF]; + } + + final void drawStringRightAnchor(RSString var1, int var2, int var3, int var4, int var5) { + if (var1 != null) { + this.method698(var4, var5); + this.method677(var1, var2 - this.method682(var1), var3); + } + } + + private void method690(RSString var1, int var2) { + int var3 = 0; + boolean var4 = false; + int var5 = var1.length(); + + for (int var6 = 0; var6 < var5; ++var6) { + int var7 = var1.charAt(var6, (byte) 75); + if (var7 == 60) { + var4 = true; + } else if (var7 == 62) { + var4 = false; + } else if (!var4 && var7 == 32) { + ++var3; + } + } + + if (var3 > 0) { + anInt3756 = (var2 - this.method682(var1) << 8) / var3; + } + + } + + final int method691(RSString var1, int[] var2, RSString[] var3) { + if (var1 == null) { + return 0; + } else { + aString_3745.method1553(0); + int var4 = 0; + int var5 = 0; + int var6 = -1; + int var7 = 0; + byte var8 = 0; + int var9 = -1; + int var10 = 0; + int var11 = 0; + int var12 = var1.length(); + + for (int var13 = 0; var13 < var12; ++var13) { + int var14 = var1.charAt(var13, (byte) -30); + if (var14 == 60) { + var9 = var13; + } else { + if (var14 == 62 && var9 != -1) { + RSString var15 = var1.substring(var9 + 1, var13, 0); + var9 = -1; + aString_3745.appendCharacter(60); + aString_3745.append(var15); + aString_3745.appendCharacter(62); + if (var15.equalsString(RSString.parse("br"))) { + if (var3[var11] == null) { + var3[var11] = aString_3745.method1563(101).substring(var5, aString_3745.length(), 0); + } else { + var3[var11].method1553(0); + var3[var11].method1542(aString_3745, var5, aString_3745.length()); + } + + ++var11; + var5 = aString_3745.length(); + var4 = 0; + var6 = -1; + var10 = 0; + } else if (var15.equalsString(RSString.parse("lt"))) { + var4 += this.method687(60); + if (this.aByteArray3733 != null && var10 != 0) { + var4 += this.aByteArray3733[(var10 << 8) + 60]; + } + + var10 = 60; + } else if (var15.equalsString(RSString.parse("gt"))) { + var4 += this.method687(62); + if (this.aByteArray3733 != null && var10 != 0) { + var4 += this.aByteArray3733[(var10 << 8) + 62]; + } + + var10 = 62; + } else if (var15.equalsString(RSString.parse("nbsp"))) { + var4 += this.method687(160); + if (this.aByteArray3733 != null && var10 != 0) { + var4 += this.aByteArray3733[(var10 << 8) + 160]; + } + + var10 = 160; + } else if (var15.equalsString(RSString.parse("shy"))) { + var4 += this.method687(173); + if (this.aByteArray3733 != null && var10 != 0) { + var4 += this.aByteArray3733[(var10 << 8) + 173]; + } + + var10 = 173; + } else if (var15.equalsString(RSString.parse("times"))) { + var4 += this.method687(215); + if (this.aByteArray3733 != null && var10 != 0) { + var4 += this.aByteArray3733[(var10 << 8) + 215]; + } + + var10 = 215; + } else if (var15.equalsString(RSString.parse("euro"))) { + var4 += this.method687(128); + if (this.aByteArray3733 != null && var10 != 0) { + var4 += this.aByteArray3733[(var10 << 8) + 128]; + } + + var10 = 128; + } else if (var15.equalsString(RSString.parse("copy"))) { + var4 += this.method687(169); + if (this.aByteArray3733 != null && var10 != 0) { + var4 += this.aByteArray3733[(var10 << 8) + 169]; + } + + var10 = 169; + } else if (var15.equalsString(RSString.parse("reg"))) { + var4 += this.method687(174); + if (this.aByteArray3733 != null && var10 != 0) { + var4 += this.aByteArray3733[(var10 << 8) + 174]; + } + + var10 = 174; + } else if (var15.startsWith(RSString.parse("img="))) { + try { + int var16 = var15.substring(4).parseInt(); + var4 += this.aClass109Array3740[var16].anInt1469; + var10 = 0; + } catch (Exception var17) { + } + } + + var14 = 0; + } + + if (var9 == -1) { + if (var14 != 0) { + aString_3745.appendCharacter(var14); + var4 += this.anIntArray3736[var14]; + if (this.aByteArray3733 != null && var10 != 0) { + var4 += this.aByteArray3733[(var10 << 8) + var14]; + } + + var10 = var14; + } + + if (var14 == 32) { + var6 = aString_3745.length(); + var7 = var4; + var8 = 1; + } + + if (var2 != null && var4 > var2[var11 < var2.length ? var11 : var2.length - 1] && var6 >= 0) { + if (var3[var11] == null) { + var3[var11] = aString_3745.method1563(88).substring(var5, var6 - var8, 0); + } else { + var3[var11].method1553(0); + var3[var11] = var3[var11].method1542(aString_3745, var5, var6 - var8); + } + + ++var11; + var5 = var6; + var6 = -1; + var4 -= var7; + var10 = 0; + } + + if (var14 == 45) { + var6 = aString_3745.length(); + var7 = var4; + var8 = 0; + } + } + } + } + + if (aString_3745.length() > var5) { + if (var3[var11] == null) { + var3[var11] = aString_3745.method1563(94).substring(var5, aString_3745.length(), 0); + } else { + var3[var11].method1553(0); + var3[var11] = var3[var11].method1542(aString_3745, var5, aString_3745.length()); + } + + ++var11; + } + + return var11; + } + } + + final void method692(RSString var1, int var2, int var3, int var4, int var6, int var7) { + if (var1 != null) { + this.method698(var4, 0); + double var8 = 7.0D - (double) var7 / 8.0D; + if (var8 < 0.0D) { + var8 = 0.0D; + } + + int var10 = var1.length(); + int[] var11 = new int[var10]; + + for (int var12 = 0; var12 < var10; ++var12) { + var11[var12] = (int) (Math.sin((double) var12 / 1.5D + (double) var6 / 1.0D) * var8); + } + + this.method703(var1, var2 - this.method682(var1) / 2, var3, null, var11); + } + } + + public final int method693(RSString var1, int var2, int var3, int var4, int var5, int var6, int var7, int var9, int var10, int var11) { + if (var1 == null) { + return 0; + } else { + this.method701(var6, var7, 256); + if (var11 == 0) { + var11 = this.anInt3727; + } + + int[] var12 = new int[]{var4}; + if (var5 < this.anInt3722 + this.anInt3710 + var11 && var5 < var11 + var11) { + var12 = null; + } + + int var13 = this.method691(var1, var12, aStringArray3753); + if (var10 == 3 && var13 == 1) { + var10 = 1; + } + + int var14; + int var15; + if (var10 == 0) { + var14 = var3 + this.anInt3722; + } else if (var10 == 1) { + var14 = var3 + this.anInt3722 + (var5 - this.anInt3722 - this.anInt3710 - (var13 - 1) * var11) / 2; + } else if (var10 == 2) { + var14 = var3 + var5 - this.anInt3710 - (var13 - 1) * var11; + } else { + var15 = (var5 - this.anInt3722 - this.anInt3710 - (var13 - 1) * var11) / (var13 + 1); + if (var15 < 0) { + var15 = 0; + } + + var14 = var3 + this.anInt3722 + var15; + var11 += var15; + } + + for (var15 = 0; var15 < var13; ++var15) { + if (var9 == 0) { + this.method677(aStringArray3753[var15], var2, var14); + } else if (var9 == 1) { + this.method677(aStringArray3753[var15], var2 + (var4 - this.method682(aStringArray3753[var15])) / 2, var14); + } else if (var9 == 2) { + this.method677(aStringArray3753[var15], var2 + var4 - this.method682(aStringArray3753[var15]), var14); + } else if (var15 == var13 - 1) { + this.method677(aStringArray3753[var15], var2, var14); + } else { + this.method690(aStringArray3753[var15], var4); + this.method677(aStringArray3753[var15], var2, var14); + anInt3756 = 0; + } + + var14 += var11; + } + + return var13; + } + } + + final void method695(RSString var1, int var2, int var3, int var4, int var6) { + if (var1 != null) { + this.method698(var4, 0); + int var7 = var1.length(); + int[] var8 = new int[var7]; + int[] var9 = new int[var7]; + + for (int var10 = 0; var10 < var7; ++var10) { + var8[var10] = (int) (Math.sin((double) var10 / 5.0D + (double) var6 / 5.0D) * 5.0D); + var9[var10] = (int) (Math.sin((double) var10 / 3.0D + (double) var6 / 5.0D) * 5.0D); + } + + this.method703(var1, var2 - this.method682(var1) / 2, var3, var8, var9); + } + } + + final void method696(RSString var1, int var2, int var3, int var4, int var6) { + if (var1 != null) { + this.method698(var4, 0); + int var7 = var1.length(); + int[] var8 = new int[var7]; + + for (int var9 = 0; var9 < var7; ++var9) { + var8[var9] = (int) (Math.sin((double) var9 / 2.0D + (double) var6 / 5.0D) * 5.0D); + } + + this.method703(var1, var2 - this.method682(var1) / 2, var3, null, var8); + } + } + + final void method697(AbstractIndexedSprite[] var1, int[] var2) { + if (var2 == null || var2.length == var1.length) { + this.aClass109Array3740 = var1; + this.anIntArray3723 = var2; + } else { + throw new IllegalArgumentException(); + } + } + + private void method698(int var1, int var2) { + anInt3746 = -1; + anInt3747 = -1; + anInt3752 = var2; + anInt3754 = var2; + anInt3749 = var1; + anInt3755 = var1; + anInt3751 = 256; + anInt3750 = 256; + anInt3756 = 0; + anInt3748 = 0; + } + + public final void method699(RSString var1, int var2, int var3, int var4, int var5) { + if (var1 != null) { + this.method698(var4, var5); + this.method677(var1, var2 - this.method682(var1) / 2, var3); + } + } + + private void method700(byte[] var1) { + this.anIntArray3736 = new int[256]; + int var2; + if (var1.length == 257) { + for (var2 = 0; var2 < this.anIntArray3736.length; ++var2) { + this.anIntArray3736[var2] = var1[var2] & 0xFF; + } + + this.anInt3727 = var1[256] & 0xFF; + } else { + var2 = 0; + + for (int var3 = 0; var3 < 256; ++var3) { + this.anIntArray3736[var3] = var1[var2++] & 0xFF; + } + + int[] var10 = new int[256]; + int[] var4 = new int[256]; + + int var5; + for (var5 = 0; var5 < 256; ++var5) { + var10[var5] = var1[var2++] & 0xFF; + } + + for (var5 = 0; var5 < 256; ++var5) { + var4[var5] = var1[var2++] & 0xFF; + } + + byte[][] var12 = new byte[256][]; + + int var8; + for (int var6 = 0; var6 < 256; ++var6) { + var12[var6] = new byte[var10[var6]]; + byte var7 = 0; + + for (var8 = 0; var8 < var12[var6].length; ++var8) { + var7 += var1[var2++]; + var12[var6][var8] = var7; + } + } + + byte[][] var11 = new byte[256][]; + + int var13; + for (var13 = 0; var13 < 256; ++var13) { + var11[var13] = new byte[var10[var13]]; + byte var14 = 0; + + for (int var9 = 0; var9 < var11[var13].length; ++var9) { + var14 += var1[var2++]; + var11[var13][var9] = var14; + } + } + + this.aByteArray3733 = new byte[65536]; + + for (var13 = 0; var13 < 256; ++var13) { + if (var13 != 32 && var13 != 160) { + for (var8 = 0; var8 < 256; ++var8) { + if (var8 != 32 && var8 != 160) { + this.aByteArray3733[(var13 << 8) + var8] = (byte) method694(var12, var11, var4, this.anIntArray3736, var10, var13, var8); + } + } + } + } + + this.anInt3727 = var4[32] + var10[32]; + } + + } + + private void method701(int var1, int var2, int var3) { + anInt3746 = -1; + anInt3747 = -1; + anInt3752 = var2; + anInt3754 = var2; + anInt3749 = var1; + anInt3755 = var1; + anInt3751 = var3; + anInt3750 = var3; + anInt3756 = 0; + anInt3748 = 0; + } + + final void method702(RSString var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9, Random var10, int var11, int[] var12) { + if (var1 == null) return; + + var10.setSeed(var11); + this.method701(var6, var7, 192 + (var10.nextInt() & 31)); + int var13 = var1.length(); + int[] var14 = new int[var13]; + int var15 = 0; + + int var16; + for (var16 = 0; var16 < var13; ++var16) { + var14[var16] = var15; + if ((var10.nextInt() & 3) == 0) { + ++var15; + } + } + + var16 = var2; + int var17 = var3 + this.anInt3722; + int var18 = -1; + if (var9 == 1) { + var17 += (var5 - this.anInt3722 - this.anInt3710) / 2; + } else if (var9 == 2) { + var17 = var3 + var5 - this.anInt3710; + } + + if (var8 == 1) { + var18 = this.method682(var1) + var15; + var16 = var2 + (var4 - var18) / 2; + } else if (var8 == 2) { + var18 = this.method682(var1) + var15; + var16 = var2 + (var4 - var18); + } + + this.method703(var1, var16, var17, var14, null); + if (var12 != null) { + if (var18 == -1) { + var18 = this.method682(var1) + var15; + } + + var12[0] = var16; + var12[1] = var17 - this.anInt3722; + var12[2] = var18; + var12[3] = this.anInt3722 + this.anInt3710; + } + } + + private void method703(RSString var1, int var2, int var3, int[] var4, int[] var5) { + var3 -= this.anInt3727; + int var6 = -1; + int var7 = 0; + int var8 = 0; + int var9 = var1.length(); + + for (int var10 = 0; var10 < var9; ++var10) { + int var11 = var1.charAt(var10, (byte) 95); + if (var11 == 60) { + var6 = var10; + } else { + int var13; + int var14; + int var15; + if (var11 == 62 && var6 != -1) { + RSString var12 = var1.substring(var6 + 1, var10, 0); + var6 = -1; + if (var12.equalsString(RSString.parse("lt"))) { + var11 = 60; + } else if (var12.equalsString(RSString.parse("gt"))) { + var11 = 62; + } else if (var12.equalsString(RSString.parse("nbsp"))) { + var11 = 160; + } else if (var12.equalsString(RSString.parse("shy"))) { + var11 = 173; + } else if (var12.equalsString(RSString.parse("times"))) { + var11 = 215; + } else if (var12.equalsString(RSString.parse("euro"))) { + var11 = 128; + } else if (var12.equalsString(RSString.parse("copy"))) { + var11 = 169; + } else { + if (!var12.equalsString(RSString.parse("reg"))) { + if (var12.startsWith(RSString.parse("img="))) { + try { + if (var4 == null) { + var13 = 0; + } else { + var13 = var4[var8]; + } + + if (var5 == null) { + var14 = 0; + } else { + var14 = var5[var8]; + } + + ++var8; + var15 = var12.substring(4).parseInt(); + AbstractIndexedSprite var20 = this.aClass109Array3740[var15]; + int var17 = this.anIntArray3723 != null ? this.anIntArray3723[var15] : var20.anInt1467; + if (anInt3750 == 256) { + var20.method1667(var2 + var13, var3 + this.anInt3727 - var17 + var14); + } else { + var20.method1666(var2 + var13, var3 + this.anInt3727 - var17 + var14, anInt3750); + } + + var2 += var20.anInt1469; + var7 = 0; + } catch (Exception var18) { + } + } else { + this.method685(var12); + } + continue; + } + + var11 = 174; + } + } + + if (var6 == -1) { + if (this.aByteArray3733 != null && var7 != 0) { + var2 += this.aByteArray3733[(var7 << 8) + var11]; + } + + int var19 = this.anIntArray3709[var11]; + var13 = this.anIntArray3721[var11]; + if (var4 == null) { + var14 = 0; + } else { + var14 = var4[var8]; + } + + if (var5 == null) { + var15 = 0; + } else { + var15 = var5[var8]; + } + + ++var8; + if (var11 != 32) { + if (anInt3750 == 256) { + if (anInt3754 != -1) { + this.method678(var11, var2 + this.anIntArray3719[var11] + 1 + var14, var3 + this.anIntArray3730[var11] + 1 + var15, var19, var13, anInt3754); + } + + this.method678(var11, var2 + this.anIntArray3719[var11] + var14, var3 + this.anIntArray3730[var11] + var15, var19, var13, anInt3755); + } else { + if (anInt3754 != -1) { + this.method679(var11, var2 + this.anIntArray3719[var11] + 1 + var14, var3 + this.anIntArray3730[var11] + 1 + var15, var19, var13, anInt3754, anInt3750); + } + + this.method679(var11, var2 + this.anIntArray3719[var11] + var14, var3 + this.anIntArray3730[var11] + var15, var19, var13, anInt3755, anInt3750); + } + } else if (anInt3756 > 0) { + anInt3748 += anInt3756; + var2 += anInt3748 >> 8; + anInt3748 &= 255; + } + + int var16 = this.anIntArray3736[var11]; + if (anInt3746 != -1) { + Toolkit.getActiveToolkit().drawHorizontalLine(var2, var3 + (int) ((double) this.anInt3727 * 0.7D), var16, anInt3746); + } + + if (anInt3747 != -1) { + Toolkit.getActiveToolkit().drawHorizontalLine(var2, var3 + this.anInt3727, var16, anInt3747); + } + + var2 += var16; + var7 = var11; + } + } + } + + } + +} diff --git a/Client/src/main/java/org/runite/client/FontType.java b/Client/src/main/java/org/runite/client/FontType.java new file mode 100644 index 000000000..21f395e69 --- /dev/null +++ b/Client/src/main/java/org/runite/client/FontType.java @@ -0,0 +1,9 @@ +package org.runite.client; + +public final class FontType { + + public static Font plainFont; + public static Font bold; + public static Font smallFont; + +} diff --git a/Client/src/main/java/org/runite/client/GameObject.java b/Client/src/main/java/org/runite/client/GameObject.java new file mode 100644 index 000000000..853c84f51 --- /dev/null +++ b/Client/src/main/java/org/runite/client/GameObject.java @@ -0,0 +1,198 @@ +package org.runite.client; + +abstract class GameObject { + + static AbstractIndexedSprite[] aClass109Array1831; + static RSInterface[][] interfaces1834; + static boolean aBoolean1837 = false; + static int[] anIntArray1838; + static SoftwareSprite[] aSoftwareSpriteArray1839; + + + static void method1859(double var0) { + try { + if (Class70.aDouble1050 != var0) { + for (int var3 = 0; 256 > var3; ++var3) { + int var4 = (int) (255.0D * Math.pow((double) var3 / 255.0D, var0)); + BufferedDataStream.anIntArray3804[var3] = var4 > 255 ? 255 : var4; + } + + Class70.aDouble1050 = var0; + } + + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "th.KC(" + var0 + ',' + 32258 + ')'); + } + } + + static void graphicsSettings(boolean var0, int var1, int var3, int var4) { + try { + Class53.aLong866 = 0L; + int var5 = Class83.getWindowType(); + if (var1 == 3 || 3 == var5) { + var0 = true; + } + + if (Signlink.osName.startsWith("mac") && var1 > 0) { + var0 = true; + } + + boolean var6 = false; + if (var5 > 0 != var1 > 0) { + var6 = true; + } + + if (var0 && var1 > 0) { + var6 = true; + } + + Unsorted.method598(var0, var1, var6, var5, false, var3, var4); + } catch (RuntimeException var7) { + throw ClientErrorException.clientError(var7, "th.EC(" + var0 + ',' + var1 + ',' + -8914 + ',' + var3 + ',' + var4 + ')'); + } + } + + static int method1863(int var0, int var1, int var3, int var4, int var5, int var6) { + try { + int var7; + if ((1 & var5) == 1) { + var7 = var0; + var0 = var3; + var3 = var7; + } + + var1 &= 3; + return var1 == 0 ? var6 : (1 != var1 ? (var1 != 2 ? var4 : -var3 + 1 + -var6 + 7) : -var4 + 7 + -var0 - -1); + } catch (RuntimeException var8) { + throw ClientErrorException.clientError(var8, "th.JC(" + var0 + ',' + var1 + ',' + (byte) 126 + ',' + var3 + ',' + var4 + ',' + var5 + ',' + var6 + ')'); + } + } + + static void method1864(CacheIndex var2, Class3_Sub28_Sub17_Sub1 var3, CacheIndex var4) { + try { + Class139.aBoolean1827 = true; + LinkableRSString.modelsIndex_2581 = var4; + Class97.itemConfigIndex_1370 = var2; + int var5 = Class97.itemConfigIndex_1370.method2121() - 1; + TextureOperation39.itemDefinitionSize = Class97.itemConfigIndex_1370.getFileAmount(var5) + var5 * 256; + ClientErrorException.aStringArray2119 = new RSString[]{null, null, null, null, TextCore.HasDrop}; + Unsorted.aStringArray2596 = new RSString[]{null, null, TextCore.HasTake, null, null}; + TextureOperation10.aClass3_Sub28_Sub17_Sub1_3440 = var3; + } catch (RuntimeException var7) { + throw ClientErrorException.clientError(var7, "th.FC(" + true + ',' + (byte) -126 + ',' + (var2 != null ? "{...}" : "null") + ',' + (var3 != null ? "{...}" : "null") + ',' + (var4 != null ? "{...}" : "null") + ')'); + } + } + + static void method1869(byte var0, int var1, int var2, int var3, int var4, int var5) { + try { + int var6 = var2 - var3; + int var7 = var4 + -var5; + if (var7 == 0) { + if (var6 != 0) { + TextureOperation15.method244(var3, var5, var2, var1); + } + + } else if (0 == var6) { + TextureOperation14.method320(var1, var3, var4, (byte) -107, var5); + } else { + if (0 > var6) { + var6 = -var6; + } + + if (var7 < 0) { + var7 = -var7; + } + + boolean var9 = var6 > var7; + int var10; + int var11; + if (var9) { + var10 = var5; + var5 = var3; + var11 = var4; + var3 = var10; + var4 = var2; + var2 = var11; + } + + if (var4 < var5) { + var10 = var5; + var5 = var4; + var4 = var10; + var11 = var3; + var3 = var2; + var2 = var11; + } + + var10 = var3; + var11 = var4 - var5; + int var12 = var2 + -var3; + int var13 = -(var11 >> 1); + int var14 = var2 <= var3 ? -1 : 1; + if (var12 < 0) { + var12 = -var12; + } + + int var15; + if (var9) { + for (var15 = var5; var4 >= var15; ++var15) { + Class38.anIntArrayArray663[var15][var10] = var1; + var13 += var12; + if (var13 > 0) { + var10 += var14; + var13 -= var11; + } + } + } else { + for (var15 = var5; var15 <= var4; ++var15) { + var13 += var12; + Class38.anIntArrayArray663[var10][var15] = var1; + if (var13 > 0) { + var10 += var14; + var13 -= var11; + } + } + } + + } + } catch (RuntimeException var16) { + throw ClientErrorException.clientError(var16, "th.IC(" + var0 + ',' + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + var5 + ')'); + } + } + + static void method1870() { + try { + Class101.aClass3_Sub24_Sub4_1421.method505((byte) -128); + Unsorted.anInt154 = 1; + Class101.musicIndex_1423 = null; + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "th.GC(" + false + ')'); + } + } + + GameObject method1861() { + try { + return this; + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "th.JB(" + -50 + ',' + -10 + ',' + -50 + ')'); + } + } + + boolean method1865() { + try { + return false; + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "th.AB()"); + } + } + + void method1866(GameObject var1, int var2, int var3, int var4, boolean var5) { + } + + abstract void method1867(int var1, int var2, int var3, int var4, int var5); + + abstract void animate(int var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, long var9, int var11, Class127_Sub1 var12); + + abstract int method1871(); + +} diff --git a/Client/src/main/java/org/runite/client/GameShell.java b/Client/src/main/java/org/runite/client/GameShell.java new file mode 100644 index 000000000..b07c004ff --- /dev/null +++ b/Client/src/main/java/org/runite/client/GameShell.java @@ -0,0 +1,506 @@ +package org.runite.client; + +import javax.swing.*; +import java.applet.Applet; +import java.applet.AppletContext; +import java.awt.*; +import java.awt.event.FocusEvent; +import java.awt.event.FocusListener; +import java.awt.event.WindowEvent; +import java.awt.event.WindowListener; +import java.lang.reflect.Method; +import java.net.URL; +import java.util.Objects; + +public abstract class GameShell extends Applet implements Runnable, FocusListener, WindowListener { + + public static Canvas canvas; + public static Frame frame; + static Thread aThread409; + private static int anInt950; + private static volatile boolean hasWindowFocus = true; + private static long aLong2313 = 0L; + private static int anInt1737 = 1; + private static boolean aBoolean1784 = false; + private boolean displayError = false; + + private static void getMaxMemory() { + Class3_Sub24_Sub3.maxClientMemory = (int) (Runtime.getRuntime().maxMemory() / 1048576L) + 1; + } + + static void method34() { + try { + if (null != WorldListEntry.aAudioChannel_2627) { + WorldListEntry.aAudioChannel_2627.method2163(); + } + + if (Class3_Sub21.aAudioChannel_2491 != null) { + Class3_Sub21.aAudioChannel_2491.method2163(); + } + + Class140_Sub3.method1959(TextureOperation17.stereoSound); + WorldListEntry.aAudioChannel_2627 = AudioChannel.method1195(22050, Class38.gameSignlink, canvas, 0); + WorldListEntry.aAudioChannel_2627.method2154(Client.aClass3_Sub24_Sub4_1193); + Class3_Sub21.aAudioChannel_2491 = AudioChannel.method1195(2048, Class38.gameSignlink, canvas, 1); + Class3_Sub21.aAudioChannel_2491.method2154(Class3_Sub26.aClass3_Sub24_Sub2_2563); + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "rc.DA(" + -32589 + ')'); + } + } + + public static void provideSignlink(Signlink var0) { + try { + Class38.gameSignlink = var0; + TextureOperation30.signlink = var0; + TextureOperation12.method445(); + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "rc.providesignlink(" + (var0 != null ? "{...}" : "null") + ')'); + } + } + + public static void launchDesktop() { + //GameShell.setDesktop(true); + ClientLoader.create().launch(); + } + + public final void focusLost(FocusEvent var1) { + try { + hasWindowFocus = false; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "rc.focusLost(" + (var1 != null ? "{...}" : "null") + ')'); + } + } + + abstract void method25(); + + public final void windowClosing(WindowEvent var1) { + try { + this.destroy(); + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "rc.windowClosing(" + (var1 != null ? "{...}" : "null") + ')'); + } + } + + public final void windowIconified(WindowEvent var1) { + } + + public final void windowDeactivated(WindowEvent var1) { + } + + public final AppletContext getAppletContext() { + try { + return null != frame ? null : (Class38.gameSignlink != null && this != Class38.gameSignlink.gameApplet ? Class38.gameSignlink.gameApplet.getAppletContext() : super.getAppletContext()); + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "rc.getAppletContext()"); + } + } + + public final void focusGained(FocusEvent var1) { + try { + hasWindowFocus = true; + TextureOperation30.fullRedraw = true; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "rc.focusGained(" + (var1 != null ? "{...}" : "null") + ')'); + } + } + + public final void windowClosed(WindowEvent var1) { + } + + final synchronized void addCanvas() { + if (canvas != null) { + canvas.removeFocusListener(this); + canvas.getParent().remove(canvas); + } + + Container var2; + if (TextureOperation30.fullScreenFrame != null) { + var2 = TextureOperation30.fullScreenFrame; + } else if (null == frame) { + var2 = Class38.gameSignlink.gameApplet; + } else { + var2 = frame; + } + + var2.setLayout(null); + canvas = new ComponentWrappedCanvas(this); + var2.add(canvas); + canvas.setSize(Class23.canvasWidth, GroundItem.canvasHeight); + canvas.setVisible(true); + if (var2 == frame) { + Insets var3 = frame.getInsets(); + canvas.setLocation(Class84.leftMargin + var3.left, var3.top + Class106.rightMargin); + } else { + canvas.setLocation(Class84.leftMargin, Class106.rightMargin); + } + + canvas.addFocusListener(this); + canvas.requestFocus(); + hasWindowFocus = true; + TextureOperation30.fullRedraw = true; + TextureOperation26.aBoolean3078 = true; + Class3_Sub28_Sub5.forceReplaceCanvasEnable = false; + SequenceDefinition.aLong1847 = TimeUtils.time(); + ClientCommands.tweeningEnabled = true; + } + + public final void destroy() { + try { + if (this == LinkableRSString.anApplet_Sub1_2588 && !Class29.aBoolean554) { + aLong2313 = TimeUtils.time(); + TimeUtils.sleep(5000L); + TextureOperation30.signlink = null; + this.method35(false); + } + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "rc.destroy()"); + } + } + + public final void update(Graphics g) { + this.paint(g); + } + + final void errorPrint(String var1) { + try { + if (!this.displayError) { + this.displayError = true; + System.out.println("error_game_" + var1); + JOptionPane.showMessageDialog(frame, "Error: " + var1 + (var1.contains("js5connect") ? ". The game is likely down." : "") + "\nCheck Discord (https://discord.gg/43YPGND) in a relevant #help channel, and a kind user might be able to help you out."); + try { + Objects.requireNonNull(this.getAppletContext()).showDocument(new URL(this.getCodeBase(), "error_game_" + var1 + ".ws"), "_top"); + } catch (Exception var4) { + } + + } + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "rc.U(" + (var1 != null ? "{...}" : "null") + ',' + -48 + ')'); + } + } + + abstract void method32(); + + abstract void method33(); + + public final URL getDocumentBase() { + try { + return null != frame ? null : (Class38.gameSignlink != null && this != Class38.gameSignlink.gameApplet ? Class38.gameSignlink.gameApplet.getDocumentBase() : super.getDocumentBase()); + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "rc.getDocumentBase()"); + } + } + + public final synchronized void paint(Graphics g) { + if (LinkableRSString.anApplet_Sub1_2588 == this && !Class29.aBoolean554) { + TextureOperation30.fullRedraw = true; + + if (aBoolean1784 && !HDToolKit.highDetail && -SequenceDefinition.aLong1847 + TimeUtils.time() > 1000) { + Rectangle var2 = g.getClipBounds(); + + if (var2 == null || Unsorted.frameWidth <= var2.width && var2.height >= Class70.frameHeight) { + Class3_Sub28_Sub5.forceReplaceCanvasEnable = true; + } + } + } + } + + public final void windowDeiconified(WindowEvent var1) { + } + + private void method35(boolean var2) { + try { + synchronized (this) { + if (Class29.aBoolean554) { + return; + } + + Class29.aBoolean554 = true; + } + + if (Class38.gameSignlink.gameApplet != null) { + Class38.gameSignlink.gameApplet.destroy(); + } + + try { + this.method32(); + } catch (Exception var8) { + } + + if (canvas != null) { + try { + canvas.removeFocusListener(this); + canvas.getParent().remove(canvas); + } catch (Exception var7) { + } + } + + if (null != Class38.gameSignlink) { + try { + Class38.gameSignlink.method1445(0); + } catch (Exception var6) { + } + } + + this.method33(); + + if (null != frame) { + try { + System.exit(0); + } catch (Throwable var5) { + } + } + + System.out.println("Shutdown complete - clean:" + var2); + } catch (RuntimeException var10) { + throw ClientErrorException.clientError(var10, "rc.EA(" + ',' + var2 + ')'); + } + } + + public final void windowActivated(WindowEvent var1) { + } + + private void method36() { + try { + long var2 = TimeUtils.time(); + Class134.aLongArray1766[Unsorted.anInt1953] = var2; + Unsorted.anInt1953 = 31 & Unsorted.anInt1953 - -1; + synchronized (this) { + + TextureOperation26.aBoolean3078 = hasWindowFocus; + } + + this.method25(); + + } catch (RuntimeException var9) { + throw ClientErrorException.clientError(var9, "rc.R(" + true + ')'); + } + } + + private void method37() { + try { + long var2 = TimeUtils.time(); + long var4 = Class163_Sub1.aLongArray2986[anInt950]; + + Class163_Sub1.aLongArray2986[anInt950] = var2; + anInt950 = 31 & anInt950 + 1; + if (var4 != 0 && var2 > var4) { + int var6 = (int) (var2 + -var4); + SequenceDefinition.anInt1862 = (32000 + (var6 >> 1)) / var6; + } + + if (50 < TextureOperation28.anInt3313++) { + TextureOperation30.fullRedraw = true; + TextureOperation28.anInt3313 -= 50; + canvas.setSize(Class23.canvasWidth, GroundItem.canvasHeight); + canvas.setVisible(true); + if (frame != null && null == TextureOperation30.fullScreenFrame) { + Insets var8 = frame.getInsets(); + canvas.setLocation(var8.left + Class84.leftMargin, Class106.rightMargin + var8.top); + } else { + canvas.setLocation(Class84.leftMargin, Class106.rightMargin); + } + } + + this.method38(); + } catch (RuntimeException var7) { + throw ClientErrorException.clientError(var7, "rc.AA(" + 0 + ')'); + } + } + + abstract void method38(); + + public final URL getCodeBase() { + return frame == null ? (null != Class38.gameSignlink && this != Class38.gameSignlink.gameApplet ? Class38.gameSignlink.gameApplet.getCodeBase() : super.getCodeBase()) : null; + } + + public final void run() { + try { + try { + if (Signlink.javaVendor != null) { + + String vendor = Signlink.javaVendor.toLowerCase(); + + if (vendor.contains("sun") || vendor.contains("apple")) { + + String var2 = Signlink.javaVersion; + + if (var2.equals("1.1") || var2.startsWith("1.1.") || var2.equals("1.2") || var2.startsWith("1.2.")) { + this.errorPrint("wrongjava"); + return; + } + + anInt1737 = 5; + } else if (vendor.contains("ibm") && Signlink.javaVersion.equals("1.4.2")) { + this.errorPrint("wrongjava"); + return; + } + } + + int var7; + if (null != Signlink.javaVersion && Signlink.javaVersion.startsWith("1.")) { + var7 = 2; + + int var9; + for (var9 = 0; Signlink.javaVersion.length() > var7; ++var7) { + char var3 = Signlink.javaVersion.charAt(var7); + if (var3 < 48 || var3 > 57) { + break; + } + + var9 = var9 * 10 - (-var3 + 48); + } + + if (var9 >= 5) { + aBoolean1784 = true; + } + } + + if (Class38.gameSignlink.gameApplet != null) { + Method var8 = Signlink.setFocusCycleRoot; + if (null != var8) { + try { + var8.invoke(Class38.gameSignlink.gameApplet, Boolean.TRUE); + } catch (Throwable var4) { + } + } + } + + getMaxMemory(); + this.addCanvas(); + Unsorted.aClass158_3009 = TextureOperation18.method285(GroundItem.canvasHeight, Class23.canvasWidth, canvas); + this.method39(); + Class3_Sub25.aClass129_2552 = Class36.method1012(); + + while (aLong2313 == 0 || aLong2313 > TimeUtils.time()) { + Class133.anInt1754 = Class3_Sub25.aClass129_2552.method1767(-1, anInt1737, WorldListEntry.anInt2626); + + for (var7 = 0; var7 < Class133.anInt1754; ++var7) { + this.method36(); + } + + this.method37(); + Class81.method1400(Class38.gameSignlink, canvas, -80); + } + } catch (Exception var5) { + Class49.reportError(null, var5); + this.errorPrint("crash"); + } + + this.method35(true); + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "rc.run()"); + } + } + + + public final String getParameter(String var1) { + try { + return frame == null ? (Class38.gameSignlink != null && this != Class38.gameSignlink.gameApplet ? Class38.gameSignlink.gameApplet.getParameter(var1) : super.getParameter(var1)) : null; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "rc.getParameter(" + (var1 != null ? "{...}" : "null") + ')'); + } + } + + abstract void method39(); + + public final void stop() { + try { + if (LinkableRSString.anApplet_Sub1_2588 == this && !Class29.aBoolean554) { + aLong2313 = 4000L + TimeUtils.time(); + } + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "rc.stop()"); + } + } + + public abstract void init(); + + final void launch() { + try { + GroundItem.canvasHeight = 768; + Class70.frameHeight = 768; + Class84.leftMargin = 0; + Class23.canvasWidth = 1024; + Unsorted.frameWidth = 1024; + Class106.rightMargin = 0; + LinkableRSString.anApplet_Sub1_2588 = this; + Frame frame = new Frame(); + frame.setTitle("Jagex"); + frame.setResizable(true); + frame.addWindowListener(this); + frame.setVisible(true); + frame.toFront(); + Insets insets = frame.getInsets(); + frame.setSize(insets.left + Unsorted.frameWidth + insets.right, insets.top + Class70.frameHeight + insets.bottom); + TextureOperation30.signlink = Class38.gameSignlink = new Signlink(null, 32 + TextureOperation20.paramModeWhat, "runescape", 29); + Class64 var10 = Class38.gameSignlink.startThread(1, this); + + while (0 == Objects.requireNonNull(var10).anInt978) { + TimeUtils.sleep(10L); + } + + aThread409 = (Thread) var10.anObject974; + //ClientLoader.create().launch(); + } catch (Exception var11) { + Class49.reportError(null, var11); + } + } + + public final void windowOpened(WindowEvent var1) { + } + + public final void start() { + try { + if (LinkableRSString.anApplet_Sub1_2588 == this && !Class29.aBoolean554) { + aLong2313 = 0L; + } + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "rc.start()"); + } + } + + final void method41(int var3) { + try { + try { + if (LinkableRSString.anApplet_Sub1_2588 != null) { + ++Class36.anInt639; + if (Class36.anInt639 >= 3) { + this.errorPrint("alreadyloaded"); + return; + } + + Objects.requireNonNull(this.getAppletContext()).showDocument(this.getDocumentBase(), "_self"); + return; + } + LinkableRSString.anApplet_Sub1_2588 = this; + Class106.rightMargin = 0; + Class23.canvasWidth = 765; + Unsorted.frameWidth = 765; + Class84.leftMargin = 0; + GroundItem.canvasHeight = 503; + Class70.frameHeight = 503; + String var6 = this.getParameter("openwinjs"); + InterfaceWidget.aBoolean3594 = var6 != null && var6.equals("1"); + + if (null == Class38.gameSignlink) { + TextureOperation30.signlink = Class38.gameSignlink = new Signlink(this, var3, null, 0); + } + + Class64 var7 = Class38.gameSignlink.startThread(1, this); + + while (Objects.requireNonNull(var7).anInt978 == 0) { + TimeUtils.sleep(10L); + } + + aThread409 = (Thread) var7.anObject974; + } catch (Exception var8) { + Class49.reportError(null, var8); + this.errorPrint("crash"); + } + + } catch (RuntimeException var9) { + throw ClientErrorException.clientError(var9, "rc.CA(" + (byte) -56 + ',' + 765 + ',' + var3 + ',' + 1530 + ',' + 503 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/GraphicDefinition.java b/Client/src/main/java/org/runite/client/GraphicDefinition.java new file mode 100644 index 000000000..7fac2d82b --- /dev/null +++ b/Client/src/main/java/org/runite/client/GraphicDefinition.java @@ -0,0 +1,174 @@ +package org.runite.client; + +public final class GraphicDefinition { + + static int anInt529; + private int anInt530 = 128; + public static int CAMERA_DIRECTION = 0; + private short[] aShortArray533; + private short[] aShortArray534; + private short[] aShortArray535; + boolean aBoolean536 = false; + private int anInt537 = 0; + private int anInt538 = 0; + int graphicId; + private int anInt540 = 128; + private int anInt541; + int anInt542 = -1; + private int anInt543 = 0; + private short[] aShortArray545; + static int anInt546; + static int anInt548 = 0; + static volatile int anInt549 = 0; + + static GraphicDefinition getGraphicDefinition(int graphicId) { + try { + GraphicDefinition def = (GraphicDefinition) Class3_Sub31.aReferenceCache_2604.get(graphicId); + if (def == null) { + byte[] var3 = TextureOperation19.graphicFXIndex_3214.getFile(graphicId >>> 8, graphicId & 0xFF); + def = new GraphicDefinition(); + def.graphicId = graphicId; + + if (null != var3) { + def.parse(new DataBuffer(var3)); + } + + Class3_Sub31.aReferenceCache_2604.put(def, graphicId); + } + return def; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "ck.D(" + (byte) 42 + ',' + graphicId + ')'); + } + } + + final void parse(DataBuffer var1) { + try { + + while(true) { + int var3 = var1.readUnsignedByte(); + if(var3 == 0) { + return; + } + + this.decode(var1, var3); + } + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "eg.A(" + (var1 != null?"{...}":"null") + ',' + (byte) -113 + ')'); + } + } + + private void decode(DataBuffer var1, int var2) { + try { + if(var2 == 1) { + this.anInt541 = var1.readUnsignedShort(); + } else if(2 == var2) { + this.anInt542 = var1.readUnsignedShort(); + } else if(var2 == 4) { + this.anInt530 = var1.readUnsignedShort(); + } else if (var2 == 5) { + this.anInt540 = var1.readUnsignedShort(); + } else if (6 == var2) { + this.anInt543 = var1.readUnsignedShort(); + } else if (var2 == 7) { + this.anInt538 = var1.readUnsignedByte(); + } else if (var2 == 8) { + this.anInt537 = var1.readUnsignedByte(); + } else if (var2 == 9) { + this.aBoolean536 = true; + } else { + int var4; + int var5; + if (40 == var2) { + var4 = var1.readUnsignedByte(); + this.aShortArray533 = new short[var4]; + this.aShortArray545 = new short[var4]; + + for (var5 = 0; var4 > var5; ++var5) { + this.aShortArray533[var5] = (short) var1.readUnsignedShort(); + this.aShortArray545[var5] = (short) var1.readUnsignedShort(); + } + } else if (41 == var2) { + var4 = var1.readUnsignedByte(); + this.aShortArray534 = new short[var4]; + this.aShortArray535 = new short[var4]; + + for (var5 = 0; var5 < var4; ++var5) { + this.aShortArray534[var5] = (short) var1.readUnsignedShort(); + this.aShortArray535[var5] = (short) var1.readUnsignedShort(); + } + } + } + + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "eg.D(" + (var1 != null?"{...}":"null") + ',' + var2 + ',' + 128 + ')'); + } + } + + final Model method966(int var1, int var3, int var4) { + try { + Model var5 = (Model)Class27.aReferenceCache_511.get(this.graphicId); + if(var5 == null) { + Model_Sub1 var6 = Model_Sub1.method2015(Unsorted.modelsIndex_4048, this.anInt541); + if(null == var6) { + return null; + } + + int var7; + if(null != this.aShortArray533) { + for(var7 = 0; this.aShortArray533.length > var7; ++var7) { + var6.method2016(this.aShortArray533[var7], this.aShortArray545[var7]); + } + } + + if(this.aShortArray534 != null) { + for(var7 = 0; var7 < this.aShortArray534.length; ++var7) { + var6.method1998(this.aShortArray534[var7], this.aShortArray535[var7]); + } + } + + var5 = var6.method2008(64 - -this.anInt538, this.anInt537 + 850, -30, -50, -30); + Class27.aReferenceCache_511.put(var5, this.graphicId); + } + + Model var9; + if(this.anInt542 == -1 || var3 == -1) { + var9 = var5.method1882(true, true, true); + } else { + var9 = SequenceDefinition.getAnimationDefinition(this.anInt542).method2059(var1, var4, var3, var5); + } + + if(128 != this.anInt530 || 128 != this.anInt540) { + var9.resize(this.anInt530, this.anInt540, this.anInt530); + } + + if(this.anInt543 != 0) { + if(this.anInt543 == 90) { + var9.method1885(); + } + + if(180 == this.anInt543) { + var9.method1874(); + } + + if(270 == this.anInt543) { + var9.method1900(); + } + } + + return var9; + } catch (RuntimeException var8) { + throw ClientErrorException.clientError(var8, "eg.C(" + var1 + ',' + (byte) -30 + ',' + var3 + ',' + var4 + ')'); + } + } + + static void method967(int var0, int var1, int var3, int var4, int var5, int var6, int var7) { + try { + if(Unsorted.loadInterface(var5)) { + Client.handleItemSwitch(GameObject.interfaces1834[var5], -1, var6, var1, var4, var7, var0, var3); + } + } catch (RuntimeException var9) { + throw ClientErrorException.clientError(var9, "eg.B(" + var0 + ',' + var1 + ',' + 2 + ',' + var3 + ',' + var4 + ',' + var5 + ',' + var6 + ',' + var7 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/GroundItem.java b/Client/src/main/java/org/runite/client/GroundItem.java new file mode 100644 index 000000000..d176cdcd1 --- /dev/null +++ b/Client/src/main/java/org/runite/client/GroundItem.java @@ -0,0 +1,282 @@ +package org.runite.client; + +public final class GroundItem extends GameObject { + + int quantity; + static int[] anIntArray2931; + private int anInt2932 = -32768; + static int[] anIntArray2933 = new int[]{2, 0, 0, 2, 0, 0, 0, 4, 4}; + public static int canvasHeight; + static RSString[] aStringArray2935 = new RSString[500]; + int itemId; + static int anInt2938; + + + static boolean method2029(byte var0, CacheIndex var1, int var2) { + try { + if(var0 > -116) { + return false; + } else { + byte[] var3 = var1.method2138(var2); + if(null == var3) { + return false; + } else { + Class45.method1082(var3, 19); + return true; + } + } + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "uj.B(" + var0 + ',' + (var1 != null?"{...}":"null") + ',' + var2 + ')'); + } + } + + static boolean method2031(byte var0, boolean var1, int var2, int var3, TileData[][][] var4, int var5) { + try { + byte var6 = !var1?(byte)(255 & CSConfigCachefile.anInt1127):1; + if(Class158.aByteArrayArrayArray2008[WorldListCountry.localPlane][var2][var3] == var6) { + return false; + } else if((Unsorted.sceneryTypeMaskGrid[WorldListCountry.localPlane][var2][var3] & 4) == 0) { + return false; + } else { + int var8 = 0; + byte var7 = 0; + TextureOperation38.anIntArray3456[var7] = var2; + if(var0 >= -9) { + method2031((byte)-29, false, 59, 52, null, 75); + } + + int var23 = var7 + 1; + Class45.anIntArray729[var7] = var3; + Class158.aByteArrayArrayArray2008[WorldListCountry.localPlane][var2][var3] = var6; + + while(var23 != var8) { + int var10 = (16740943 & TextureOperation38.anIntArray3456[var8]) >> 16; + int var11 = 255 & TextureOperation38.anIntArray3456[var8] >> 24; + int var9 = TextureOperation38.anIntArray3456[var8] & 65535; + int var13 = (Class45.anIntArray729[var8] & 16721603) >> 16; + int var12 = Class45.anIntArray729[var8] & 65535; + var8 = 4095 & 1 + var8; + boolean var14 = false; + boolean var15 = false; + if(0 == (Unsorted.sceneryTypeMaskGrid[WorldListCountry.localPlane][var9][var12] & 4)) { + var14 = true; + } + + int var17; + int var16; + label257: + for(var16 = 1 + WorldListCountry.localPlane; 3 >= var16; ++var16) { + if((Unsorted.sceneryTypeMaskGrid[var16][var9][var12] & 8) == 0) { + int var18; + int var20; + if(var14 && var4[var16][var9][var12] != null) { + if(null != var4[var16][var9][var12].aClass70_2234) { + var17 = Unsorted.method1184(var10, (byte)82); + if(var17 == var4[var16][var9][var12].aClass70_2234.anInt1055 || var4[var16][var9][var12].aClass70_2234.anInt1059 == var17) { + continue; + } + + if(0 != var11) { + var18 = Unsorted.method1184(var11, (byte)-93); + if(var18 == var4[var16][var9][var12].aClass70_2234.anInt1055 || var4[var16][var9][var12].aClass70_2234.anInt1059 == var18) { + continue; + } + } + + if(var13 != 0) { + var18 = Unsorted.method1184(var13, (byte)99); + if(var18 == var4[var16][var9][var12].aClass70_2234.anInt1055 || var4[var16][var9][var12].aClass70_2234.anInt1059 == var18) { + continue; + } + } + } + + if(var4[var16][var9][var12].aClass25Array2221 != null) { + for(var17 = 0; var17 < var4[var16][var9][var12].anInt2223; ++var17) { + var18 = (int)(63L & var4[var16][var9][var12].aClass25Array2221[var17].aLong498 >> 14); + if(var18 == 21) { + var18 = 19; + } + + int var19 = (int)(var4[var16][var9][var12].aClass25Array2221[var17].aLong498 >> 20 & 3L); + var20 = var18 | var19 << 6; + if(var10 == var20 || var11 != 0 && var20 == var11 || var13 != 0 && var13 == var20) { + continue label257; + } + } + } + } + + var15 = true; + TileData var24 = var4[var16][var9][var12]; + if(var24 != null && var24.anInt2223 > 0) { + for(var18 = 0; var18 < var24.anInt2223; ++var18) { + Class25 var25 = var24.aClass25Array2221[var18]; + if(var25.anInt483 != var25.anInt495 || var25.anInt478 != var25.anInt481) { + for(var20 = var25.anInt483; var20 <= var25.anInt495; ++var20) { + for(int var21 = var25.anInt478; var25.anInt481 >= var21; ++var21) { + Class158.aByteArrayArrayArray2008[var16][var20][var21] = var6; + } + } + } + } + } + + Class158.aByteArrayArrayArray2008[var16][var9][var12] = var6; + } + } + + if(var15) { + if(Class44.anIntArrayArrayArray723[WorldListCountry.localPlane - -1][var9][var12] > Unsorted.anIntArray686[var5]) { + Unsorted.anIntArray686[var5] = Class44.anIntArrayArrayArray723[WorldListCountry.localPlane + 1][var9][var12]; + } + + var16 = var9 << 7; + if(var16 >= Class129_Sub1.anIntArray2696[var5]) { + if(var16 > Class159.anIntArray2021[var5]) { + Class159.anIntArray2021[var5] = var16; + } + } else { + Class129_Sub1.anIntArray2696[var5] = var16; + } + + var17 = var12 << 7; + if(var17 < SequenceDefinition.anIntArray1871[var5]) { + SequenceDefinition.anIntArray1871[var5] = var17; + } else if(Player.anIntArray3959[var5] < var17) { + Player.anIntArray3959[var5] = var17; + } + } + + if(!var14) { + if(var9 >= 1 && Class158.aByteArrayArrayArray2008[WorldListCountry.localPlane][-1 + var9][var12] != var6) { + TextureOperation38.anIntArray3456[var23] = TextureOperation3.bitwiseOr(TextureOperation3.bitwiseOr(var9 - 1, 1179648), -754974720); + Class45.anIntArray729[var23] = TextureOperation3.bitwiseOr(var12, 1245184); + var23 = 1 + var23 & 4095; + Class158.aByteArrayArrayArray2008[WorldListCountry.localPlane][var9 - 1][var12] = var6; + } + + ++var12; + if(104 > var12) { + if(var9 + -1 >= 0 && Class158.aByteArrayArrayArray2008[WorldListCountry.localPlane][-1 + var9][var12] != var6 && (Unsorted.sceneryTypeMaskGrid[WorldListCountry.localPlane][var9][var12] & 4) == 0 && (Unsorted.sceneryTypeMaskGrid[WorldListCountry.localPlane][-1 + var9][var12 + -1] & 4) == 0) { + TextureOperation38.anIntArray3456[var23] = TextureOperation3.bitwiseOr(1375731712, TextureOperation3.bitwiseOr(1179648, -1 + var9)); + Class45.anIntArray729[var23] = TextureOperation3.bitwiseOr(var12, 1245184); + Class158.aByteArrayArrayArray2008[WorldListCountry.localPlane][-1 + var9][var12] = var6; + var23 = 1 + var23 & 4095; + } + + if(var6 != Class158.aByteArrayArrayArray2008[WorldListCountry.localPlane][var9][var12]) { + TextureOperation38.anIntArray3456[var23] = TextureOperation3.bitwiseOr(318767104, TextureOperation3.bitwiseOr(var9, 5373952)); + Class45.anIntArray729[var23] = TextureOperation3.bitwiseOr(5439488, var12); + var23 = 4095 & 1 + var23; + Class158.aByteArrayArrayArray2008[WorldListCountry.localPlane][var9][var12] = var6; + } + + if(1 + var9 < 104 && Class158.aByteArrayArrayArray2008[WorldListCountry.localPlane][var9 + 1][var12] != var6 && 0 == (Unsorted.sceneryTypeMaskGrid[WorldListCountry.localPlane][var9][var12] & 4) && (Unsorted.sceneryTypeMaskGrid[WorldListCountry.localPlane][1 + var9][var12 - 1] & 4) == 0) { + TextureOperation38.anIntArray3456[var23] = TextureOperation3.bitwiseOr(-1845493760, TextureOperation3.bitwiseOr(5373952, var9 + 1)); + Class45.anIntArray729[var23] = TextureOperation3.bitwiseOr(5439488, var12); + Class158.aByteArrayArrayArray2008[WorldListCountry.localPlane][var9 - -1][var12] = var6; + var23 = 4095 & var23 - -1; + } + } + + --var12; + if(104 > 1 + var9 && var6 != Class158.aByteArrayArrayArray2008[WorldListCountry.localPlane][var9 - -1][var12]) { + TextureOperation38.anIntArray3456[var23] = TextureOperation3.bitwiseOr(TextureOperation3.bitwiseOr(1 + var9, 9568256), 1392508928); + Class45.anIntArray729[var23] = TextureOperation3.bitwiseOr(var12, 9633792); + Class158.aByteArrayArrayArray2008[WorldListCountry.localPlane][1 + var9][var12] = var6; + var23 = var23 + 1 & 4095; + } + + --var12; + if(var12 >= 0) { + if(0 <= var9 + -1 && Class158.aByteArrayArrayArray2008[WorldListCountry.localPlane][-1 + var9][var12] != var6 && (Unsorted.sceneryTypeMaskGrid[WorldListCountry.localPlane][var9][var12] & 4) == 0 && (Unsorted.sceneryTypeMaskGrid[WorldListCountry.localPlane][var9 + -1][1 + var12] & 4) == 0) { + TextureOperation38.anIntArray3456[var23] = TextureOperation3.bitwiseOr(TextureOperation3.bitwiseOr(-1 + var9, 13762560), 301989888); + Class45.anIntArray729[var23] = TextureOperation3.bitwiseOr(var12, 13828096); + Class158.aByteArrayArrayArray2008[WorldListCountry.localPlane][-1 + var9][var12] = var6; + var23 = 4095 & var23 - -1; + } + + if(var6 != Class158.aByteArrayArrayArray2008[WorldListCountry.localPlane][var9][var12]) { + TextureOperation38.anIntArray3456[var23] = TextureOperation3.bitwiseOr(TextureOperation3.bitwiseOr(var9, 13762560), -1828716544); + Class45.anIntArray729[var23] = TextureOperation3.bitwiseOr(13828096, var12); + var23 = var23 - -1 & 4095; + Class158.aByteArrayArrayArray2008[WorldListCountry.localPlane][var9][var12] = var6; + } + + if(var9 - -1 < 104 && Class158.aByteArrayArrayArray2008[WorldListCountry.localPlane][var9 + 1][var12] != var6 && (4 & Unsorted.sceneryTypeMaskGrid[WorldListCountry.localPlane][var9][var12]) == 0 && (Unsorted.sceneryTypeMaskGrid[WorldListCountry.localPlane][1 + var9][1 + var12] & 4) == 0) { + TextureOperation38.anIntArray3456[var23] = TextureOperation3.bitwiseOr(-771751936, TextureOperation3.bitwiseOr(var9 - -1, 9568256)); + Class45.anIntArray729[var23] = TextureOperation3.bitwiseOr(9633792, var12); + Class158.aByteArrayArrayArray2008[WorldListCountry.localPlane][var9 + 1][var12] = var6; + var23 = 4095 & 1 + var23; + } + } + } + } + + if(-1000000 != Unsorted.anIntArray686[var5]) { + Unsorted.anIntArray686[var5] += 10; + Class129_Sub1.anIntArray2696[var5] -= 50; + Class159.anIntArray2021[var5] += 50; + Player.anIntArray3959[var5] += 50; + SequenceDefinition.anIntArray1871[var5] -= 50; + } + + return true; + } + } catch (RuntimeException var22) { + throw ClientErrorException.clientError(var22, "uj.A(" + var0 + ',' + var1 + ',' + var2 + ',' + var3 + ',' + (var4 != null?"{...}":"null") + ',' + var5 + ')'); + } + } + + final void method1867(int var1, int var2, int var3, int var4, int var5) {} + + static int method2032(int var0) { + try { + + return var0 >>> 10; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "uj.E(" + var0 + ',' + 5439488 + ')'); + } + } + + static RSString method2033(DataBuffer var0) { + try { + try { + int var3 = var0.getSmart(); + if(32767 < var3) { + var3 = 32767; + } + + byte[] var4 = new byte[var3]; + var0.index += TextureOperation16.aClass36_3112.method1017(0, var3, var4, var0.buffer, var0.index); + return TextureOperation33.bufferToString(var4, var3, 0); + } catch (Exception var6) { + return TextCore.aString_2018; + } + } catch (RuntimeException var7) { + throw ClientErrorException.clientError(var7, "uj.D(" + (var0 != null?"{...}":"null") + ',' + 1 + ',' + 32767 + ')'); + } + } + + final void animate(int var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, long var9, int var11, Class127_Sub1 var12) { + try { + Model var13 = ItemDefinition.getItemDefinition(this.itemId).method1110(-1, 0, null, this.quantity, 0); + if(null != var13) { + var13.animate(var1, var2, var3, var4, var5, var6, var7, var8, var9, var11, var12); + this.anInt2932 = var13.method1871(); + } + } catch (RuntimeException var14) { + throw ClientErrorException.clientError(var14, "uj.IA(" + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + var5 + ',' + var6 + ',' + var7 + ',' + var8 + ',' + var9 + ',' + var11 + ',' + (var12 != null?"{...}":"null") + ')'); + } + } + + final int method1871() { + try { + return this.anInt2932; + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "uj.MA()"); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/GroundItemLink.java b/Client/src/main/java/org/runite/client/GroundItemLink.java new file mode 100644 index 000000000..ced3e712a --- /dev/null +++ b/Client/src/main/java/org/runite/client/GroundItemLink.java @@ -0,0 +1,275 @@ +package org.runite.client; + +import org.rs09.client.Node; +import org.rs09.client.config.GameConfig; +import org.rs09.client.rendering.Toolkit; + +final class GroundItemLink extends Node { + + static int anInt2737 = 0; + static CacheIndex worldmapIndex_3210; + static SoftwareSprite aSoftwareSprite_3221; + GroundItem aGroundItem_3676; + + + GroundItemLink(GroundItem var1) { + try { + this.aGroundItem_3676 = var1; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "pa.(" + (var1 != null ? "{...}" : "null") + ')'); + } + } + + static void worldMapZoomFontSize() { + try { + if (null != Unsorted.aClass3_Sub28_Sub3_2600) { + if (anInt2737 < 10) { + if (!worldmapIndex_3210.method2127(Unsorted.aClass3_Sub28_Sub3_2600.aString_3561)) { + anInt2737 = CacheIndex.worldmapIndex.method2116(Unsorted.aClass3_Sub28_Sub3_2600.aString_3561) / 10; + return; + } + + TextureOperation12.method169(); + anInt2737 = 10; + } + + /** + * This block is dealing with world map zoom + */ + if (anInt2737 == 10) { + TextureOperation37.anInt3256 = Unsorted.aClass3_Sub28_Sub3_2600.anInt3555 >> 6 << 6; + Unsorted.anInt65 = Unsorted.aClass3_Sub28_Sub3_2600.anInt3562 >> 6 << 6; + Class108.anInt1460 = (Unsorted.aClass3_Sub28_Sub3_2600.anInt3549 >> 6 << 6) - Unsorted.anInt65 + 64; + Class23.anInt455 = 64 + (Unsorted.aClass3_Sub28_Sub3_2600.anInt3559 >> 6 << 6) + -TextureOperation37.anInt3256; + if (GameConfig.WORLD_MAP_DEBUG) + System.out.println("World Map Debug: Setting initial zoom level to: " + Unsorted.aClass3_Sub28_Sub3_2600.anInt3563); + if (Unsorted.aClass3_Sub28_Sub3_2600.anInt3563 == 37) { //Furthest zoom 37% on interface + Class44.aFloat727 = 3.0F; + NPC.aFloat3979 = 3.0F; + } else if (Unsorted.aClass3_Sub28_Sub3_2600.anInt3563 == 50) { //Far zoom 50% on interface + Class44.aFloat727 = 4.0F; + NPC.aFloat3979 = 4.0F; + } else if (Unsorted.aClass3_Sub28_Sub3_2600.anInt3563 == 75) { //Default zoom 75% on interface + Class44.aFloat727 = 6.0F; + NPC.aFloat3979 = 6.0F; + } else if (Unsorted.aClass3_Sub28_Sub3_2600.anInt3563 == 100) { //Close zoom 100% on interface + Class44.aFloat727 = 8.0F; + NPC.aFloat3979 = 8.0F; + } else if (Unsorted.aClass3_Sub28_Sub3_2600.anInt3563 == 200) { //Closest zoom 200% on interface + Class44.aFloat727 = 16.0F; + NPC.aFloat3979 = 16.0F; + } else { + Class44.aFloat727 = 8.0F; //Default value if one is not set = to 100% on interface + NPC.aFloat3979 = 8.0F; + } + /* End Minimap Zoom */ + + + int var1 = -TextureOperation37.anInt3256 + (Class102.player.xAxis >> 7) + Class131.x1716; + var1 += -5 + (int) (Math.random() * 10.0D); + int var2 = -Texture.y1152 + -(Class102.player.yAxis >> 7) + Unsorted.anInt65 + -1 + Class108.anInt1460; + var2 += -5 + (int) (Math.random() * 10.0D); + if (var1 >= 0 && var1 < Class23.anInt455 && 0 <= var2 && Class108.anInt1460 > var2) { + Class3_Sub28_Sub1.anInt3536 = var1; + Scenery.anInt2251 = var2; + } else { + Scenery.anInt2251 = Unsorted.anInt65 - Unsorted.aClass3_Sub28_Sub3_2600.anInt3556 * 64 + Class108.anInt1460 + -1; + Class3_Sub28_Sub1.anInt3536 = Unsorted.aClass3_Sub28_Sub3_2600.anInt3558 * 64 + -TextureOperation37.anInt3256; + } + + Class3_Sub5.method117(); + Class83.anIntArray1161 = new int[1 + Client.anInt869]; + int var4 = Class108.anInt1460 >> 6; + int var3 = Class23.anInt455 >> 6; + Class3_Sub10.aByteArrayArrayArray2339 = new byte[var3][var4][]; + int var5 = Class158_Sub1.anInt3158 >> 2 << 10; + Class36.aByteArrayArrayArray640 = new byte[var3][var4][]; + Class44.anIntArrayArrayArray720 = new int[var3][var4][]; + RenderAnimationDefinition.aByteArrayArrayArray383 = new byte[var3][var4][]; + Class146.anIntArrayArrayArray1903 = new int[var3][var4][]; + TextureOperation29.aByteArrayArrayArray3390 = new byte[var3][var4][]; + int var6 = Class158_Sub1.anInt1463 >> 1; + CS2Script.aByteArrayArrayArray2452 = new byte[var3][var4][]; + Class29.anIntArrayArrayArray558 = new int[var3][var4][]; + FloorOverlayDefinition.method1014(var6, var5); + anInt2737 = 20; + + + } else if (anInt2737 == 20) { + if (GameConfig.WORLD_MAP_DEBUG) + System.out.println("World Map Debug: World Map Stage 20: String given: " + Unsorted.aClass3_Sub28_Sub3_2600.aString_3561.properlyCapitalize().toString()); + WorldMapUnderlayDecoder.decode(new DataBuffer(worldmapIndex_3210.method2123(RSString.parse("underlay"), Unsorted.aClass3_Sub28_Sub3_2600.aString_3561)));//This controls the world map underlay + anInt2737 = 30; + Class163_Sub1.ping(true); + Class75_Sub4.method1355(); + } else if (anInt2737 == 30) { + if (GameConfig.WORLD_MAP_DEBUG) + System.out.println("World Map Debug: World Map Stage 30: String given: " + Unsorted.aClass3_Sub28_Sub3_2600.aString_3561.properlyCapitalize().toString()); + WorldMapOverlayDecoder.decode(new DataBuffer(worldmapIndex_3210.method2123(RSString.parse("overlay"), Unsorted.aClass3_Sub28_Sub3_2600.aString_3561)));//This controls the world map overlay (water) + anInt2737 = 40; + Class75_Sub4.method1355(); + } else if (anInt2737 == 40) { + if (GameConfig.WORLD_MAP_DEBUG) + System.out.println("World Map Debug: World Map Stage 40: String given: " + Unsorted.aClass3_Sub28_Sub3_2600.aString_3561.properlyCapitalize().toString()); + WorldMapOverlay2Decoder.decode(new DataBuffer(worldmapIndex_3210.method2123(RSString.parse("overlay2"), Unsorted.aClass3_Sub28_Sub3_2600.aString_3561)));//unsure + anInt2737 = 50; + Class75_Sub4.method1355(); + } else if (anInt2737 == 50) { + if (GameConfig.WORLD_MAP_DEBUG) + System.out.println("World Map Debug: World Map Stage 50: String given: " + Unsorted.aClass3_Sub28_Sub3_2600.aString_3561.properlyCapitalize().toString()); + WorldMapLOCDecoder.decode(new DataBuffer(worldmapIndex_3210.method2123(RSString.parse("loc"), Unsorted.aClass3_Sub28_Sub3_2600.aString_3561)));//This controls the world map object drawing (buildings etc) + anInt2737 = 60; + Class163_Sub1.ping(true); + Class75_Sub4.method1355(); + } else if (anInt2737 == 60) { + if (GameConfig.WORLD_MAP_DEBUG) + System.out.println("World Map Debug: World Map Stage 60: String given: " + Unsorted.aClass3_Sub28_Sub3_2600.aString_3561.properlyCapitalize().toString()); + if (worldmapIndex_3210.method2135(RSString.stringCombiner(new RSString[]{Unsorted.aClass3_Sub28_Sub3_2600.aString_3561, TextCore.HasLabels}))) { + if (!worldmapIndex_3210.method2127(RSString.stringCombiner(new RSString[]{Unsorted.aClass3_Sub28_Sub3_2600.aString_3561, TextCore.HasLabels}))) { + return; + } + + if (GameConfig.WORLD_MAP_DEBUG) + System.out.println("World Map Debug: World Map Class119.aClass131_1624: " + Unsorted.aClass3_Sub28_Sub3_2600.aString_3561.properlyCapitalize().toString() + ", " + TextCore.HasLabels.properlyCapitalize().toString()); + Class119.aClass131_1624 = Class81.getWorldMapArchive(RSString.stringCombiner(new RSString[]{Unsorted.aClass3_Sub28_Sub3_2600.aString_3561, TextCore.HasLabels}), worldmapIndex_3210); + } else { + Class119.aClass131_1624 = new Class131(0); + } + + anInt2737 = 70; + Class75_Sub4.method1355(); + } else if (anInt2737 == 70) { + Class164_Sub2.aClass33_3019 = new Class33(11, GameShell.canvas);//Sets the font size of *some* locations on the world map interface + anInt2737 = 73; + Class163_Sub1.ping(true); + Class75_Sub4.method1355(); + } else if (anInt2737 == 73) { + Unsorted.aClass33_1238 = new Class33(12, GameShell.canvas);//Unsure + anInt2737 = 76; + Class163_Sub1.ping(true); + Class75_Sub4.method1355(); + } else if (anInt2737 == 76) { + Class99.aClass33_1399 = new Class33(14, GameShell.canvas);//Sets the font size of *some* cities on the world map interface + anInt2737 = 79; + Class163_Sub1.ping(true); + Class75_Sub4.method1355(); + } else if (anInt2737 == 79) { + Class75_Sub2.aClass33_2637 = new Class33(17, GameShell.canvas);//unsure + anInt2737 = 82; + Class163_Sub1.ping(true); + Class75_Sub4.method1355(); + } else if (anInt2737 == 82) { + Class119.aClass33_1626 = new Class33(19, GameShell.canvas);//Sets the font size of the orange region names on the world map interface + anInt2737 = 85; + Class163_Sub1.ping(true); + Class75_Sub4.method1355(); + } else if (85 == anInt2737) { + Class75_Sub2.aClass33_2648 = new Class33(22, GameShell.canvas);//unsure + anInt2737 = 88; + Class163_Sub1.ping(true); + Class75_Sub4.method1355(); + } else if (88 == anInt2737) { + Class161.aClass33_2034 = new Class33(26, GameShell.canvas);//unsure + anInt2737 = 91; + Class163_Sub1.ping(true); + Class75_Sub4.method1355(); + } else { + Class91.aClass33_1305 = new Class33(30, GameShell.canvas);//unsure + anInt2737 = 100; + Class163_Sub1.ping(true); + Class75_Sub4.method1355(); + System.gc(); + } + } + } catch (RuntimeException var7) { + throw ClientErrorException.clientError(var7, "pa.B(" + 64 + ')'); + } + } + + public static void drawWorldMap(int var0, int var2, int var3, int var4) { + try { + if (anInt2737 < 100) { + worldMapZoomFontSize(); + } + + if (HDToolKit.highDetail) { + Class22.setClipping(var0, var2, var0 + var4, var3 + var2); + } else { + Class74.setClipping(var0, var2, var0 + var4, var3 + var2); + } + + int var6; + int var7; + if (anInt2737 >= 100) { + Class17.anInt410 = (int) ((float) (var3 * 2) / Class44.aFloat727); + Class60.anInt930 = Class3_Sub28_Sub1.anInt3536 + -((int) ((float) var4 / Class44.aFloat727)); + int var15 = -((int) ((float) var4 / Class44.aFloat727)) + Class3_Sub28_Sub1.anInt3536; + var6 = Scenery.anInt2251 - (int) ((float) var3 / Class44.aFloat727); + Class60.anInt934 = Scenery.anInt2251 + -((int) ((float) var3 / Class44.aFloat727)); + int var8 = Scenery.anInt2251 + (int) ((float) var3 / Class44.aFloat727); + var7 = (int) ((float) var4 / Class44.aFloat727) + Class3_Sub28_Sub1.anInt3536; + Class49.anInt817 = (int) ((float) (var4 * 2) / Class44.aFloat727); + + if (HDToolKit.highDetail) { + if (aSoftwareSprite_3221 == null || var4 != aSoftwareSprite_3221.width || var3 != aSoftwareSprite_3221.height) { + aSoftwareSprite_3221 = null; + aSoftwareSprite_3221 = new SoftwareSprite(var4, var3); + } + + Class74.setBuffer(aSoftwareSprite_3221.anIntArray4081, var4, var3); + Unsorted.method523(var4, 0, var7, var6, 0, var8, var3, var15); + Class23.method938(var4, 0, var7, var8, var3, 0, var15, var6); + Class3_Sub5.method111((byte) -54, 0, 0, var15, var4, var8, var6, var7, var3); + Class22.method926(aSoftwareSprite_3221.anIntArray4081, var0, var2, var4, var3); + Toolkit.JAVA_TOOLKIT.resetBuffer(); + } else { + Unsorted.method523(var4 + var0, var2, var7, var6, var0, var8, var2 - -var3, var15); + Class23.method938(var0 + var4, var0, var7, var8, var3 + var2, var2, var15, var6); + Class3_Sub5.method111((byte) -100, var0, var2, var15, var0 - -var4, var8, var6, var7, var3 + var2); + } + + if (0 < AbstractSprite.anInt3704) { + --Class3_Sub28_Sub8.anInt3611; + if (Class3_Sub28_Sub8.anInt3611 == 0) { + Class3_Sub28_Sub8.anInt3611 = 20; + --AbstractSprite.anInt3704; + } + } + + /* + * This handles the ::fpson command to overlay when a user opens up the world map + */ + if (ClientCommands.fpsOverlayEnabled) { + int var10 = -8 + var2 - -var3; + int var9 = -5 + (var0 - -var4); + FontType.plainFont.drawStringRightAnchor(RSString.stringCombiner(new RSString[]{TextCore.aString_985, RSString.stringAnimator(SequenceDefinition.anInt1862)}), var9, var10, 16776960, -1); + Runtime var11 = Runtime.getRuntime(); + int var12 = (int) ((var11.totalMemory() - var11.freeMemory()) / 1024L); + int var13 = 16776960; + var10 -= 15; + if (var12 > 65536) { + var13 = 16711680; + } + + FontType.plainFont.drawStringRightAnchor(RSString.stringCombiner(new RSString[]{TextCore.aString_1630, RSString.stringAnimator(var12), RSString.parse("k")}), var9, var10, var13, -1); + } + /* * * * * * * */ + + } else { + byte var5 = 20; + var6 = var0 - -(var4 / 2); + var7 = var3 / 2 + (var2 - 18) + -var5; + //World map pre loading brown screen + Toolkit.getActiveToolkit().method934(var0, var2, var4, var3, 0); + Toolkit.getActiveToolkit().drawRect(var6 - 152, var7, 304, 34, 9179409, 255); + Toolkit.getActiveToolkit().drawRect(var6 + -151, var7 + 1, 302, 32, 0, 255); + Toolkit.getActiveToolkit().method934(-150 + var6, var7 + 2, 3 * anInt2737, 30, 9179409); + Toolkit.getActiveToolkit().method934(-150 + var6 + anInt2737 * 3, var7 - -2, 300 + -(3 * anInt2737), 30, 0); + + FontType.bold.method699(TextCore.LoadingGeneral, var6, var5 + var7, 16777215, -1); + } + } catch (RuntimeException var14) { + throw ClientErrorException.clientError(var14, "wa.FA(" + var0 + ',' + 64 + ',' + var2 + ',' + var3 + ',' + var4 + ')'); + } + } +} diff --git a/Client/src/main/java/org/runite/client/HDIndexedSprite.java b/Client/src/main/java/org/runite/client/HDIndexedSprite.java new file mode 100644 index 000000000..00ed82cb0 --- /dev/null +++ b/Client/src/main/java/org/runite/client/HDIndexedSprite.java @@ -0,0 +1,147 @@ +package org.runite.client; + + + + +import org.rs09.client.rendering.opengl.enums.GLBeginMode; + +import javax.media.opengl.GL; +import java.nio.ByteBuffer; + + +public final class HDIndexedSprite extends AbstractIndexedSprite { + + private int anInt2675 = -1; + private int anInt2676 = -1; + private int anInt2677 = 0; + private int anInt2678 = 0; + private int anInt2679; + private int anInt2680; + private int anInt2681; + + + private void method1678(byte[] var1, int[] var2) { + this.anInt2681 = Class95.method1585((byte)62, this.width); + this.anInt2680 = Class95.method1585((byte)99, this.height); + byte[] var3 = new byte[this.anInt2681 * this.anInt2680 * 4]; + int var4 = 0; + int var5 = 0; + + for(int var6 = 0; var6 < this.height; ++var6) { + for(int var7 = 0; var7 < this.width; ++var7) { + // Hd Fix + if (var1[var5] < 0) { + return; + } + byte var8 = var1[var5++]; + if(var8 == 0) { + var4 += 4; + } else { + int var9 = var2[var8]; + var3[var4++] = (byte)(var9 >> 16); + var3[var4++] = (byte)(var9 >> 8); + var3[var4++] = (byte)var9; + var3[var4++] = -1; + } + } + var4 += (this.anInt2681 - this.width) * 4; + } + ByteBuffer byteBuffer = ByteBuffer.wrap(var3); + GL gl = HDToolKit.gl; + if(this.anInt2675 == -1) { + int[] var12 = new int[1]; + gl.glGenTextures(1, var12, 0); + this.anInt2675 = var12[0]; + this.anInt2679 = Class31.anInt582; + } + + HDToolKit.bindTexture2D(this.anInt2675); + gl.glTexImage2D(3553, 0, 6408, this.anInt2681, this.anInt2680, 0, 6408, 5121, byteBuffer); + Class31.memory2D += byteBuffer.limit() - this.anInt2678; + this.anInt2678 = byteBuffer.limit(); + } + + final void method1666(int var1, int var2, int var3) { + HDToolKit.method1828(); + var1 += this.anInt1470; + var2 += this.anInt1464; + GL var4 = HDToolKit.gl; + HDToolKit.bindTexture2D(this.anInt2675); + this.method1679(); + var4.glColor4f(1.0F, 1.0F, 1.0F, (float)var3 / 256.0F); + var4.glTranslatef((float)var1, (float)(HDToolKit.viewHeight - var2), 0.0F); + var4.glCallList(this.anInt2676); + var4.glLoadIdentity(); + } + + private void method1679() { + if(this.anInt2677 != 1) { + this.anInt2677 = 1; + GL var2 = HDToolKit.gl; + var2.glTexParameteri(3553, 10241, 9728); + var2.glTexParameteri(3553, 10240, 9728); + + } + } + + public final void method1667(int var1, int var2) { + HDToolKit.method1822(); + var1 += this.anInt1470; + var2 += this.anInt1464; + GL var3 = HDToolKit.gl; + HDToolKit.bindTexture2D(this.anInt2675); + this.method1679(); + var3.glTranslatef((float)var1, (float)(HDToolKit.viewHeight - var2), 0.0F); + var3.glCallList(this.anInt2676); + var3.glLoadIdentity(); + } + + protected final void finalize() throws Throwable { + if(this.anInt2675 != -1) { + Class31.method991(this.anInt2675, this.anInt2678, this.anInt2679); + this.anInt2675 = -1; + this.anInt2678 = 0; + } + + if(this.anInt2676 != -1) { + Class31.method986(this.anInt2676, this.anInt2679); + this.anInt2676 = -1; + } + + super.finalize(); + } + + private void method1680() { + float var1 = (float)this.width / (float)this.anInt2681; + float var2 = (float)this.height / (float)this.anInt2680; + GL var3 = HDToolKit.gl; + if(this.anInt2676 == -1) { + this.anInt2676 = var3.glGenLists(1); + this.anInt2679 = Class31.anInt582; + } + + var3.glNewList(this.anInt2676, 4864); + var3.glBegin(GLBeginMode.TRIANGLE_FAN); + var3.glTexCoord2f(var1, 0.0F); + var3.glVertex2f((float)this.width, 0.0F); + var3.glTexCoord2f(0.0F, 0.0F); + var3.glVertex2f(0.0F, 0.0F); + var3.glTexCoord2f(0.0F, var2); + var3.glVertex2f(0.0F, (float)(-this.height)); + var3.glTexCoord2f(var1, var2); + var3.glVertex2f((float)this.width, (float)(-this.height)); + var3.glEnd(); + var3.glEndList(); + } + + HDIndexedSprite(int var1, int var2, int var3, int var4, int var5, int var6, byte[] var7, int[] var8) { + this.anInt1469 = var1; + this.anInt1467 = var2; + this.anInt1470 = var3; + this.anInt1464 = var4; + this.width = var5; + this.height = var6; + this.method1678(var7, var8); + this.method1680(); + } +} diff --git a/Client/src/main/java/org/runite/client/HDSprite.java b/Client/src/main/java/org/runite/client/HDSprite.java new file mode 100644 index 000000000..48dbe2e5f --- /dev/null +++ b/Client/src/main/java/org/runite/client/HDSprite.java @@ -0,0 +1,486 @@ +package org.runite.client; + + +import org.rs09.client.rendering.opengl.enums.GLBeginMode; + +import javax.media.opengl.GL; +import java.nio.ByteBuffer; + + +public class HDSprite extends AbstractSprite { + + int anInt4074 = 0; + int anInt4075; + int anInt4077 = -1; + int anInt4079; + private int anInt4076 = -1; + private int anInt4078 = 0; + private int anInt4080; + + + HDSprite(int var1, int var2, int var3, int var4, int var5, int var6, int[] var7) { + this.anInt3697 = var1; + this.anInt3706 = var2; + this.anInt3701 = var3; + this.anInt3698 = var4; + this.width = var5; + this.height = var6; + this.method650(var7); + this.method651(); + } + + public HDSprite(SoftwareSprite var1) { + this.anInt3697 = var1.anInt3697; + this.anInt3706 = var1.anInt3706; + this.anInt3701 = var1.anInt3701; + this.anInt3698 = var1.anInt3698; + this.width = var1.width; + this.height = var1.height; + this.method650(var1.anIntArray4081); + this.method651(); + } + + private void method644(int var1) { + if (this.anInt4078 != var1) { + this.anInt4078 = var1; + GL var2 = HDToolKit.gl; + if (var1 == 2) { + var2.glTexParameteri(3553, 10241, 9729); + var2.glTexParameteri(3553, 10240, 9729); + } else { + var2.glTexParameteri(3553, 10241, 9728); + var2.glTexParameteri(3553, 10240, 9728); + } + + } + } + + final void drawMinimapIcons(int interfaceWidth, int interfaceHeight, HDSprite var3) { + if (var3 != null) { + HDToolKit.method1822(); + HDToolKit.bindTexture2D(var3.anInt4077); + var3.method644(1); + GL var4 = HDToolKit.gl; + HDToolKit.bindTexture2D(this.anInt4077); + this.method644(1); + var4.glActiveTexture('\u84c1'); + var4.glEnable(3553); + var4.glBindTexture(3553, var3.anInt4077); + var4.glTexEnvi(8960, '\u8571', 7681); + var4.glTexEnvi(8960, '\u8580', '\u8578'); + float var5 = (float) (interfaceWidth - Class22.anInt449) / (float) var3.anInt4075; + float var6 = (float) (interfaceHeight - Class22.anInt448) / (float) var3.anInt4079; + float var7 = (float) (interfaceWidth + this.width - Class22.anInt449) / (float) var3.anInt4075; + float var8 = (float) (interfaceHeight + this.height - Class22.anInt448) / (float) var3.anInt4079; + interfaceWidth += this.anInt3701; + interfaceHeight += this.anInt3698; + var4.glBegin(GLBeginMode.TRIANGLE_FAN); + var4.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + float var9 = (float) this.width / (float) this.anInt4075; + float var10 = (float) this.height / (float) this.anInt4079; + var4.glMultiTexCoord2f('\u84c1', var7, var6); + var4.glTexCoord2f(var9, 0.0F); + var4.glVertex2f((float) (interfaceWidth + this.width), (float) (HDToolKit.viewHeight - interfaceHeight)); + var4.glMultiTexCoord2f('\u84c1', var5, var6); + var4.glTexCoord2f(0.0F, 0.0F); + var4.glVertex2f((float) interfaceWidth, (float) (HDToolKit.viewHeight - interfaceHeight)); + var4.glMultiTexCoord2f('\u84c1', var5, var8); + var4.glTexCoord2f(0.0F, var10); + var4.glVertex2f((float) interfaceWidth, (float) (HDToolKit.viewHeight - (interfaceHeight + this.height))); + var4.glMultiTexCoord2f('\u84c1', var7, var8); + var4.glTexCoord2f(var9, var10); + var4.glVertex2f((float) (interfaceWidth + this.width), (float) (HDToolKit.viewHeight - (interfaceHeight + this.height))); + var4.glEnd(); + var4.glTexEnvi(8960, '\u8571', 8448); + var4.glTexEnvi(8960, '\u8580', 5890); + var4.glDisable(3553); + var4.glActiveTexture('\u84c0'); + } + } + + final void method646(int var1, int var2, int var3, int var4, int var5) { + HDToolKit.method1828(); + GL var6 = HDToolKit.gl; + HDToolKit.bindTexture2D(this.anInt4077); + this.method644(1); + float var7 = (float) this.width / (float) this.anInt4075; + float var8 = (float) this.height / (float) this.anInt4079; + var7 *= (float) var4; + var8 *= (float) var5; + int var9 = var1 + this.anInt3701; + int var10 = var9 + this.width * var4; + int var11 = HDToolKit.viewHeight - var2 - this.anInt3698; + int var12 = var11 - this.height * var5; + float var13 = (float) var3 / 256.0F; + var6.glBegin(GLBeginMode.TRIANGLE_FAN); + var6.glColor4f(1.0F, 1.0F, 1.0F, var13); + var6.glTexCoord2f(var7, 0.0F); + var6.glVertex2f((float) var10, (float) var11); + var6.glTexCoord2f(0.0F, 0.0F); + var6.glVertex2f((float) var9, (float) var11); + var6.glTexCoord2f(0.0F, var8); + var6.glVertex2f((float) var9, (float) var12); + var6.glTexCoord2f(var7, var8); + var6.glVertex2f((float) var10, (float) var12); + var6.glEnd(); + } + + public final void drawMinimapRegion(int x, int y, int width, int height, int playerRelativeX, int playerRelativeY, int regionRotation, int zoom, HDSprite var9) { + if (var9 != null) { + HDToolKit.method1822(); + HDToolKit.bindTexture2D(var9.anInt4077); + var9.method644(1); + GL var10 = HDToolKit.gl; + HDToolKit.bindTexture2D(this.anInt4077); + this.method644(1); + var10.glActiveTexture('\u84c1'); + var10.glEnable(3553); + var10.glBindTexture(3553, var9.anInt4077); + var10.glTexEnvi(8960, '\u8571', 7681); + var10.glTexEnvi(8960, '\u8580', '\u8578'); + int var11 = -width / 2; + int var12 = -height / 2; + int var13 = -var11; + int var14 = -var12; + int var15 = (int) (Math.sin((double) regionRotation / 326.11D) * 65536.0D); + int var16 = (int) (Math.cos((double) regionRotation / 326.11D) * 65536.0D); + var15 = var15 * zoom >> 8; + var16 = var16 * zoom >> 8; + int var17 = (playerRelativeX << 16) + var12 * var15 + var11 * var16; + int var18 = (playerRelativeY << 16) + (var12 * var16 - var11 * var15); + int var19 = (playerRelativeX << 16) + var12 * var15 + var13 * var16; + int var20 = (playerRelativeY << 16) + (var12 * var16 - var13 * var15); + int var21 = (playerRelativeX << 16) + var14 * var15 + var11 * var16; + int var22 = (playerRelativeY << 16) + (var14 * var16 - var11 * var15); + int var23 = (playerRelativeX << 16) + var14 * var15 + var13 * var16; + int var24 = (playerRelativeY << 16) + (var14 * var16 - var13 * var15); + float var25 = (float) var9.width / (float) var9.anInt4075; + float var26 = (float) var9.height / (float) var9.anInt4079; + var10.glBegin(GLBeginMode.TRIANGLE_FAN); + var10.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + float var27 = 65536.0F * (float) this.anInt4075; + float var28 = (float) (65536 * this.anInt4079); + var10.glMultiTexCoord2f('\u84c1', var25, 0.0F); + var10.glTexCoord2f((float) var19 / var27, (float) var20 / var28); + var10.glVertex2f((float) (x + width), (float) (HDToolKit.viewHeight - y)); + var10.glMultiTexCoord2f('\u84c1', 0.0F, 0.0F); + var10.glTexCoord2f((float) var17 / var27, (float) var18 / var28); + var10.glVertex2f((float) x, (float) (HDToolKit.viewHeight - y)); + var10.glMultiTexCoord2f('\u84c1', 0.0F, var26); + var10.glTexCoord2f((float) var21 / var27, (float) var22 / var28); + var10.glVertex2f((float) x, (float) (HDToolKit.viewHeight - (y + height))); + var10.glMultiTexCoord2f('\u84c1', var25, var26); + var10.glTexCoord2f((float) var23 / var27, (float) var24 / var28); + var10.glVertex2f((float) (x + width), (float) (HDToolKit.viewHeight - (y + height))); + var10.glEnd(); + var10.glTexEnvi(8960, '\u8571', 8448); + var10.glTexEnvi(8960, '\u8580', 5890); + var10.glDisable(3553); + var10.glActiveTexture('\u84c0'); + } + } + + final void method641(int var1, int var2) { + HDToolKit.method1822(); + var1 += this.anInt3701; + var2 += this.anInt3698; + GL var3 = HDToolKit.gl; + HDToolKit.bindTexture2D(this.anInt4077); + this.method644(1); + var3.glTranslatef((float) var1, (float) (HDToolKit.viewHeight - var2), 0.0F); + float var4 = (float) this.width / (float) this.anInt4075; + float var5 = (float) this.height / (float) this.anInt4079; + var3.glBegin(GLBeginMode.TRIANGLE_FAN); + var3.glTexCoord2f(0.0F, 0.0F); + var3.glVertex2f((float) this.width, 0.0F); + var3.glTexCoord2f(var4, 0.0F); + var3.glVertex2f(0.0F, 0.0F); + var3.glTexCoord2f(var4, var5); + var3.glVertex2f(0.0F, (float) (-this.height)); + var3.glTexCoord2f(0.0F, var5); + var3.glVertex2f((float) this.width, (float) (-this.height)); + var3.glEnd(); + var3.glLoadIdentity(); + } + + public final void drawAt(int var1, int var2) { + HDToolKit.method1822(); + var1 += this.anInt3701; + var2 += this.anInt3698; + GL var3 = HDToolKit.gl; + HDToolKit.bindTexture2D(this.anInt4077); + this.method644(1); + var3.glTranslatef((float) var1, (float) (HDToolKit.viewHeight - var2), 0.0F); + var3.glCallList(this.anInt4076); + var3.glLoadIdentity(); + } + + final void method648(int var1, int var2, int var3, int var4, int var5) { + HDToolKit.method1822(); + GL var7 = HDToolKit.gl; + HDToolKit.bindTexture2D(this.anInt4077); + this.method644(2); + var1 -= this.anInt3701 << 4; + var2 -= this.anInt3698 << 4; + var7.glTranslatef((float) var3 / 16.0F, (float) HDToolKit.viewHeight - (float) var4 / 16.0F, 0.0F); + var7.glRotatef((float) (-var5) * 0.005493164F, 0.0F, 0.0F, 1.0F); + var7.glTranslatef((float) (-var1) / 16.0F, (float) var2 / 16.0F, 0.0F); + var7.glCallList(this.anInt4076); + var7.glLoadIdentity(); + } + + public final void method639(int var1, int var2, int var3, int var4) { + if (var3 > 0 && var4 > 0) { + HDToolKit.method1822(); + int var5 = this.width; + int var6 = this.height; + int var7 = 0; + int var8 = 0; + int var9 = this.anInt3697; + int var10 = this.anInt3706; + int var11 = (var9 << 16) / var3; + int var12 = (var10 << 16) / var4; + int var13; + if (this.anInt3701 > 0) { + var13 = ((this.anInt3701 << 16) + var11 - 1) / var11; + var1 += var13; + var7 += var13 * var11 - (this.anInt3701 << 16); + } + + if (this.anInt3698 > 0) { + var13 = ((this.anInt3698 << 16) + var12 - 1) / var12; + var2 += var13; + var8 += var13 * var12 - (this.anInt3698 << 16); + } + + if (var5 < var9) { + var3 = ((var5 << 16) - var7 + var11 - 1) / var11; + } + + if (var6 < var10) { + var4 = ((var6 << 16) - var8 + var12 - 1) / var12; + } + + GL var20 = HDToolKit.gl; + HDToolKit.bindTexture2D(this.anInt4077); + this.method644(2); + float var14 = (float) var1; + float var15 = var14 + (float) var3; + float var16 = (float) (HDToolKit.viewHeight - var2); + float var17 = var16 - (float) var4; + float var18 = (float) this.width / (float) this.anInt4075; + float var19 = (float) this.height / (float) this.anInt4079; + var20.glBegin(GLBeginMode.TRIANGLE_FAN); + var20.glTexCoord2f(var18, 0.0F); + var20.glVertex2f(var15, var16); + var20.glTexCoord2f(0.0F, 0.0F); + var20.glVertex2f(var14, var16); + var20.glTexCoord2f(0.0F, var19); + var20.glVertex2f(var14, var17); + var20.glTexCoord2f(var18, var19); + var20.glVertex2f(var15, var17); + var20.glEnd(); + } + } + + final void method635(int var1, int var2) { + HDToolKit.method1822(); + var1 += this.anInt3701; + var2 += this.anInt3698; + GL var3 = HDToolKit.gl; + HDToolKit.bindTexture2D(this.anInt4077); + this.method644(1); + var3.glTranslatef((float) var1, (float) (HDToolKit.viewHeight - var2), 0.0F); + var3.glCallList(this.anInt4076); + var3.glLoadIdentity(); + } + + protected final void finalize() throws Throwable { + if (this.anInt4077 != -1) { + Class31.method991(this.anInt4077, this.anInt4074, this.anInt4080); + this.anInt4077 = -1; + this.anInt4074 = 0; + } + + if (this.anInt4076 != -1) { + Class31.method986(this.anInt4076, this.anInt4080); + this.anInt4076 = -1; + } + + super.finalize(); + } + + final void method636(int var1, int var2, int var3, int var4, int var5, int var6) { + HDToolKit.method1822(); + GL var7 = HDToolKit.gl; + HDToolKit.bindTexture2D(this.anInt4077); + this.method644(1); + var1 -= this.anInt3701 << 4; + var2 -= this.anInt3698 << 4; + var7.glTranslatef((float) var3 / 16.0F, (float) HDToolKit.viewHeight - (float) var4 / 16.0F, 0.0F); + var7.glRotatef((float) var5 * 0.005493164F, 0.0F, 0.0F, 1.0F); + if (var6 != 4096) { + var7.glScalef((float) var6 / 4096.0F, (float) var6 / 4096.0F, 0.0F); + } + + var7.glTranslatef((float) (-var1) / 16.0F, (float) var2 / 16.0F, 0.0F); + var7.glCallList(this.anInt4076); + var7.glLoadIdentity(); + } + + final void method642(int var1, int var2, int var3, int var4, int var5) { + if (var3 > 0 && var4 > 0) { + HDToolKit.method1828(); + int var6 = this.width; + int var7 = this.height; + int var8 = 0; + int var9 = 0; + int var10 = this.anInt3697; + int var11 = this.anInt3706; + int var12 = (var10 << 16) / var3; + int var13 = (var11 << 16) / var4; + int var14; + if (this.anInt3701 > 0) { + var14 = ((this.anInt3701 << 16) + var12 - 1) / var12; + var1 += var14; + var8 += var14 * var12 - (this.anInt3701 << 16); + } + + if (this.anInt3698 > 0) { + var14 = ((this.anInt3698 << 16) + var13 - 1) / var13; + var2 += var14; + var9 += var14 * var13 - (this.anInt3698 << 16); + } + + if (var6 < var10) { + var3 = ((var6 << 16) - var8 + var12 - 1) / var12; + } + + if (var7 < var11) { + var4 = ((var7 << 16) - var9 + var13 - 1) / var13; + } + + GL var22 = HDToolKit.gl; + HDToolKit.bindTexture2D(this.anInt4077); + this.method644(1); + float var15 = (float) var1; + float var16 = var15 + (float) var3; + float var17 = (float) (HDToolKit.viewHeight - var2); + float var18 = var17 - (float) var4; + float var19 = (float) this.width / (float) this.anInt4075; + float var20 = (float) this.height / (float) this.anInt4079; + float var21 = (float) var5 / 256.0F; + var22.glBegin(GLBeginMode.TRIANGLE_FAN); + var22.glColor4f(1.0F, 1.0F, 1.0F, var21); + var22.glTexCoord2f(var19, 0.0F); + var22.glVertex2f(var16, var17); + var22.glTexCoord2f(0.0F, 0.0F); + var22.glVertex2f(var15, var17); + var22.glTexCoord2f(0.0F, var20); + var22.glVertex2f(var15, var18); + var22.glTexCoord2f(var19, var20); + var22.glVertex2f(var16, var18); + var22.glEnd(); + } + } + + final void method649(int var1, int var2, int var3, int var4) { + HDToolKit.method1822(); + GL var5 = HDToolKit.gl; + HDToolKit.bindTexture2D(this.anInt4077); + this.method644(1); + float var6 = (float) this.width / (float) this.anInt4075; + float var7 = (float) this.height / (float) this.anInt4079; + var6 *= (float) var3; + var7 *= (float) var4; + int var8 = var1 + this.anInt3701; + int var9 = var8 + this.width * var3; + int var10 = HDToolKit.viewHeight - var2 - this.anInt3698; + int var11 = var10 - this.height * var4; + var5.glBegin(GLBeginMode.TRIANGLE_FAN); + var5.glTexCoord2f(var6, 0.0F); + var5.glVertex2f((float) var9, (float) var10); + var5.glTexCoord2f(0.0F, 0.0F); + var5.glVertex2f((float) var8, (float) var10); + var5.glTexCoord2f(0.0F, var7); + var5.glVertex2f((float) var8, (float) var11); + var5.glTexCoord2f(var6, var7); + var5.glVertex2f((float) var9, (float) var11); + var5.glEnd(); + } + + void method650(int[] var1) { + this.anInt4075 = Class95.method1585((byte) 125, this.width); + this.anInt4079 = Class95.method1585((byte) 59, this.height); + byte[] var2 = new byte[this.anInt4075 * this.anInt4079 * 4]; + int var3 = 0; + int var4 = 0; + int var5 = (this.anInt4075 - this.width) * 4; + + for (int var6 = 0; var6 < this.height; ++var6) { + for (int var7 = 0; var7 < this.width; ++var7) { + int var8 = var1[var4++]; + if (var8 == 0) { + var3 += 4; + } else { + var2[var3++] = (byte) (var8 >> 16); + var2[var3++] = (byte) (var8 >> 8); + var2[var3++] = (byte) var8; + var2[var3++] = -1; + } + } + + var3 += var5; + } + + ByteBuffer var9 = ByteBuffer.wrap(var2); + GL var10 = HDToolKit.gl; + if (this.anInt4077 == -1) { + int[] var11 = new int[1]; + var10.glGenTextures(1, var11, 0); + this.anInt4077 = var11[0]; + this.anInt4080 = Class31.anInt582; + } + + HDToolKit.bindTexture2D(this.anInt4077); + var10.glTexImage2D(3553, 0, 6408, this.anInt4075, this.anInt4079, 0, 6408, 5121, var9); + Class31.memory2D += var9.limit() - this.anInt4074; + this.anInt4074 = var9.limit(); + } + + final void method637(int var1, int var2, int var3) { + HDToolKit.method1828(); + var1 += this.anInt3701; + var2 += this.anInt3698; + GL var4 = HDToolKit.gl; + HDToolKit.bindTexture2D(this.anInt4077); + this.method644(1); + var4.glColor4f(1.0F, 1.0F, 1.0F, (float) var3 / 256.0F); + var4.glTranslatef((float) var1, (float) (HDToolKit.viewHeight - var2), 0.0F); + var4.glCallList(this.anInt4076); + var4.glLoadIdentity(); + } + + private void method651() { + float var1 = (float) this.width / (float) this.anInt4075; + float var2 = (float) this.height / (float) this.anInt4079; + GL var3 = HDToolKit.gl; + if (this.anInt4076 == -1) { + this.anInt4076 = var3.glGenLists(1); + this.anInt4080 = Class31.anInt582; + } + + var3.glNewList(this.anInt4076, 4864); + var3.glBegin(GLBeginMode.TRIANGLE_FAN); + var3.glTexCoord2f(var1, 0.0F); + var3.glVertex2f((float) this.width, 0.0F); + var3.glTexCoord2f(0.0F, 0.0F); + var3.glVertex2f(0.0F, 0.0F); + var3.glTexCoord2f(0.0F, var2); + var3.glVertex2f(0.0F, (float) (-this.height)); + var3.glTexCoord2f(var1, var2); + var3.glVertex2f((float) this.width, (float) (-this.height)); + var3.glEnd(); + var3.glEndList(); + } +} diff --git a/Client/src/main/java/org/runite/client/HDToolKit.java b/Client/src/main/java/org/runite/client/HDToolKit.java new file mode 100644 index 000000000..1fa84c8a4 --- /dev/null +++ b/Client/src/main/java/org/runite/client/HDToolKit.java @@ -0,0 +1,733 @@ +package org.runite.client; + +import org.rs09.SlayerTracker; +import org.rs09.client.config.GameConfig; + +import javax.media.opengl.*; +import javax.media.opengl.glu.GLU; +import java.awt.*; +import java.nio.ByteOrder; +import java.nio.IntBuffer; +import java.nio.charset.StandardCharsets; + +public final class HDToolKit { + + private static final float[] aFloatArray1808 = new float[16]; + /** + * JOGL GL4bc related + */ + public static GL gl; + public static boolean highDetail = false; + public static int viewHeight; + public static int viewWidth; + static int maxTextureUnits; + static boolean aBoolean1790; + static int anInt1791 = 0; + static boolean aBoolean1798 = true; + static boolean allows3DTextureMapping; + static boolean supportMultisample; + static int anInt1810; + static boolean supportVertexBufferObject; + static boolean aBoolean1817; + static boolean supportVertexProgram; + static boolean supportTextureCubeMap; + private static GLContext glContext; + private static GLDrawable glDrawable; + private static String vendor; + private static String renderer; + private static float aFloat1787; + private static boolean aBoolean1788 = false; + private static int anInt1792 = 0; + private static int anInt1793 = 0; + private static float aFloat1794 = 0.0F; + private static float aFloat1795; + private static boolean aBoolean1796 = true; + private static float aFloat1797 = 0.0F; + private static boolean viewportSetup = false; + private static int anInt1803 = -1; + private static boolean aBoolean1805 = true; + private static int anInt1812; + private static boolean aBoolean1816 = true; + + private static RSString method1820(String var0) { + byte[] var1; + var1 = var0.getBytes(StandardCharsets.ISO_8859_1); + return TextureOperation33.bufferToString(var1, var1.length, 0); + } + + static void method1821(int offsetX, int offsetY, int ratioWidth, int ratioHeight) { + viewport(0, 0, viewWidth, viewHeight, offsetX, offsetY, 0.0F, 0.0F, ratioWidth, ratioHeight); + } + + static void method1822() { + Unsorted.method551(0, 0); + method1836(); + method1856(1); + method1847(1); + method1837(false); + method1831(false); + method1827(false); + method1823(); + } + + static void method1823() { + if (aBoolean1788) { + gl.glMatrixMode(5890); + gl.glLoadIdentity(); + gl.glMatrixMode(5888); + aBoolean1788 = false; + } + + } + + static void method1824() { + Unsorted.method551(0, 0); + method1836(); + method1856(0); + method1847(0); + method1837(false); + method1831(false); + method1827(false); + method1823(); + } + + static void method1825(float var0, float var1) { + if (!viewportSetup) { + if (var0 != aFloat1797 || var1 != aFloat1794) { + aFloat1797 = var0; + aFloat1794 = var1; + if (var1 == 0.0F) { + aFloatArray1808[10] = aFloat1787; + aFloatArray1808[14] = aFloat1795; + } else { + float var2 = var0 / (var1 + var0); + float var3 = var2 * var2; + float var4 = -aFloat1795 * (1.0F - var2) * (1.0F - var2) / var1; + aFloatArray1808[10] = aFloat1787 + var4; + aFloatArray1808[14] = aFloat1795 * var3; + } + + gl.glMatrixMode(5889); + gl.glLoadMatrixf(aFloatArray1808, 0); + gl.glMatrixMode(5888); + } + } + } + + public static void bufferSwap() { + try { + glDrawable.swapBuffers(); + } catch (GLException ignore) { + //TODO: This may be the cause of the display failing sometimes. + } + } + + static void method1827(boolean var0) { + if (var0 != aBoolean1816) { + if (var0) { + gl.glEnable(2912); + } else { + gl.glDisable(2912); + } + + aBoolean1816 = var0; + } + } + + static void method1828() { + Unsorted.method551(0, 0); + method1836(); + method1856(0); + method1847(0); + method1837(false); + method1831(false); + method1827(false); + method1823(); + } + + private static void method1829() { + viewportSetup = false; + gl.glDisable(3553); + anInt1803 = -1; + gl.glTexEnvi(8960, 8704, '\u8570'); + gl.glTexEnvi(8960, '\u8571', 8448); + anInt1793 = 0; + gl.glTexEnvi(8960, '\u8572', 8448); + anInt1792 = 0; + gl.glEnable(2896); + gl.glEnable(2912); + gl.glEnable(2929); + aBoolean1796 = true; + aBoolean1805 = true; + aBoolean1816 = true; + Class44.method1073(); + gl.glActiveTexture('\u84c1'); + gl.glTexEnvi(8960, 8704, '\u8570'); + gl.glTexEnvi(8960, '\u8571', 8448); + gl.glTexEnvi(8960, '\u8572', 8448); + gl.glActiveTexture('\u84c0'); + gl.setSwapInterval(0); + gl.glClearColor(0.0F, 0.0F, 0.0F, 0.0F); + gl.glShadeModel(7425); + gl.glClearDepth(1.0D); + gl.glDepthFunc(515); + method1830(); + gl.glMatrixMode(5890); + gl.glLoadIdentity(); + gl.glPolygonMode(1028, 6914); + gl.glEnable(2884); + gl.glCullFace(1029); + gl.glEnable(3042); + gl.glBlendFunc(770, 771); + gl.glEnable(3008); + gl.glAlphaFunc(516, 0.0F); + gl.glEnableClientState('\u8074'); + gl.glEnableClientState('\u8075'); + aBoolean1798 = true; + gl.glEnableClientState('\u8076'); + gl.glEnableClientState('\u8078'); + gl.glMatrixMode(5888); + gl.glLoadIdentity(); + Class92.method1511(); + Class68.method1275(); + } + + static void method1830() { + gl.glDepthMask(true); + } + + static void method1831(boolean var0) { + if (var0 != aBoolean1805) { + if (var0) { + gl.glEnable(2929); + } else { + gl.glDisable(2929); + } + + aBoolean1805 = var0; + } + } + + static void method1832(float var0) { + method1825(3000.0F, var0 * 1.5F); + } + + static void method1833() { + int[] var0 = new int[2]; + gl.glGetIntegerv(3073, var0, 0); + gl.glGetIntegerv(3074, var0, 1); + gl.glDrawBuffer(1026); + gl.glReadBuffer(1024); + bindTexture2D(-1); + gl.glPushAttrib(8192); + gl.glDisable(2912); + gl.glDisable(3042); + gl.glDisable(2929); + gl.glDisable(3008); + gl.glRasterPos2i(0, 0); + gl.glCopyPixels(0, 0, viewWidth, viewHeight, 6144); + gl.glPopAttrib(); + gl.glDrawBuffer(var0[0]); + gl.glReadBuffer(var0[1]); + } + + /* + * HD -> SD + * Clears the canvas of the OpenGL draw calls + * TODO: Review this again, because although there are + * no current issues with the swapping between HD -> SD + * theoretically this should work in reverse as well. (but doesn't) + */ + static void method1834(Canvas canvas) { + try { + if (!canvas.isDisplayable()) { + return; + } + javax.media.opengl.GLDrawableFactory var1 = javax.media.opengl.GLDrawableFactory.getFactory(); + javax.media.opengl.GLDrawable var2 = var1.getGLDrawable(canvas, null, null); + var2.setRealized(true); + javax.media.opengl.GLContext var3 = var2.createContext(null); + var3.makeCurrent(); + var3.release(); + var3.destroy(); + var2.setRealized(false); + } catch (GLException var4) { + } + + } + + public static void method1835() { + Unsorted.method551(0, 0); + method1836(); + bindTexture2D(-1); + method1837(false); + method1831(false); + method1827(false); + method1823(); + } + + private static void method1836() { + if (!viewportSetup) { + gl.glMatrixMode(5889); + gl.glLoadIdentity(); + gl.glOrtho(0.0D, viewWidth, 0.0D, viewHeight, -1.0D, 1.0D); + gl.glViewport(0, 0, viewWidth, viewHeight); + gl.glMatrixMode(5888); + gl.glLoadIdentity(); + viewportSetup = true; + } + } + + static void method1837(boolean var0) { + if (var0 != aBoolean1796) { + if (var0) { + gl.glEnable(2896); + } else { + gl.glDisable(2896); + } + + aBoolean1796 = var0; + } + } + + static float method1839() { + return aFloat1794; + } + + private static int method1840() { + int var0 = 0; + vendor = gl.glGetString(7936); + renderer = gl.glGetString(7937); + String var1 = vendor.toLowerCase(); + if (var1.contains("microsoft")) { + var0 |= 1; + } + + if (var1.contains("brian paul") || var1.contains("mesa")) { + var0 |= 1; + } + + String versionString = gl.glGetString(7938); + String[] var3 = versionString.split("[. ]"); + if (var3.length >= 2) { + try { + int var4 = Integer.parseInt(var3[0]); + int var5 = Integer.parseInt(var3[1]); + anInt1812 = var4 * 10 + var5; + } catch (NumberFormatException var11) { + var0 |= 4; + } + } else { + var0 |= 4; + } + + if (anInt1812 < 12) { + var0 |= 2; + } + + if (!gl.isExtensionAvailable("GL_ARB_multitexture")) { + var0 |= 8; + } + + if (!gl.isExtensionAvailable("GL_ARB_texture_env_combine")) { + var0 |= 32; + } + + int[] var12 = new int[1]; + gl.glGetIntegerv('\u84e2', var12, 0); + maxTextureUnits = var12[0]; + gl.glGetIntegerv('\u8871', var12, 0); + int anInt1814 = var12[0]; + gl.glGetIntegerv('\u8872', var12, 0); + int anInt1806 = var12[0]; + if (maxTextureUnits < 2 || anInt1814 < 2 || anInt1806 < 2) { + var0 |= 16; + } + + if (var0 == 0) { + aBoolean1790 = ByteOrder.nativeOrder() == ByteOrder.BIG_ENDIAN; + supportVertexBufferObject = gl.isExtensionAvailable("GL_ARB_vertex_buffer_object"); + supportMultisample = gl.isExtensionAvailable("GL_ARB_multisample"); + supportTextureCubeMap = gl.isExtensionAvailable("GL_ARB_texture_cube_map"); + supportVertexProgram = gl.isExtensionAvailable("GL_ARB_vertex_program"); + allows3DTextureMapping = gl.isExtensionAvailable("GL_EXT_texture3D"); + RSString var13 = method1820(renderer).toLowercase(); + if (var13.indexOf(RSString.parse("radeon"), 57) != -1) { + int version = 0; + RSString[] var7 = var13.method1565().method1567(32, (byte) -98); + + for (RSString var9 : var7) { + if (var9.length() >= 4 && var9.substring(0, 4, 0).isInteger()) { + version = var9.substring(0, 4, 0).parseInt(); + break; + } + } + + if (version >= 7000 && version <= 7999) { + supportVertexBufferObject = false; + } + + if (version >= 7000 && version <= 9250) { + allows3DTextureMapping = false; + } + + aBoolean1817 = supportVertexBufferObject; + } + + if (supportVertexBufferObject) { + try { + int[] var14 = new int[1]; + gl.glGenBuffersARB(1, var14, 0); + } catch (Throwable var10) { + return -4; + } + } + + return 0; + } else { + return var0; + } + } + + static void method1841() { + gl.glClear(256); + } + + static void method1842() { + if (gl != null) { + try { + Class101.method1609(); + } catch (GLException var4) { + } + + gl = null; + } + + if (glContext != null) { + Class31.method988(); + + try { + if (javax.media.opengl.GLContext.getCurrent() == glContext) { + glContext.release(); + } + } catch (GLException var3) { + } + + try { + glContext.destroy(); + } catch (GLException var2) { + } + + glContext = null; + } + + if (glDrawable != null) { + try { + glDrawable.setRealized(false); + } catch (GLException var1) { + } + + glDrawable = null; + } + + Class68.method1273(); + highDetail = false; + SlayerTracker.setSprite(); + } + + static void method1843(float var0, float var1) { + gl.glMatrixMode(5890); + if (aBoolean1788) { + gl.glLoadIdentity(); + } + + gl.glTranslatef(var0, var1, (float) 0.0); + gl.glMatrixMode(5888); + aBoolean1788 = true; + } + + static void viewport(int x, int y, int width, int height, int offsetX, int offsetY, float rotationX, float rotationY, int ratioWidth, int ratioHeight) { + int left = (x - offsetX << 8) / ratioWidth; + int right = (x + width - offsetX << 8) / ratioWidth; + int top = (y - offsetY << 8) / ratioHeight; + int bottom = (y + height - offsetY << 8) / ratioHeight; + gl.glMatrixMode(5889); + gl.glLoadIdentity(); + float constantFloat = 0.09765625F; + method1848((float) left * constantFloat, (float) right * constantFloat, (float) (-bottom) * constantFloat, (float) (-top) * constantFloat, 50.0F, GameConfig.RENDER_DISTANCE_VALUE); + gl.glViewport(x, viewHeight - y - height, width, height); + gl.glMatrixMode(5888); + gl.glLoadIdentity(); + gl.glRotatef(180.0F, 1.0F, 0.0F, 0.0F); + if (rotationX != 0.0F) { + gl.glRotatef(rotationX, 1.0F, 0.0F, 0.0F); + } + + if (rotationY != 0.0F) { + gl.glRotatef(rotationY, 0.0F, 1.0F, 0.0F); + } + + viewportSetup = false; + Class139.screenLowerX = left; + Class145.screenUpperX = right; + Class1.screenUpperY = top; + AtmosphereParser.screenLowerY = bottom; + } + + private static void method1845(boolean var0) { + if (var0 != aBoolean1798) { + if (var0) { + gl.glEnableClientState('\u8075'); + } else { + gl.glDisableClientState('\u8075'); + } + + aBoolean1798 = var0; + } + } + + static void method1846() { + if (Class106.aBoolean1441) { + method1837(true); + method1845(true); + } else { + method1837(false); + method1845(false); + } + + } + + static void method1847(int var0) { + if (var0 != anInt1792) { + //sets a texture environment parameter. + //TEXTURE_ENV, COMBINE_ALPHA, + if (var0 == 0) { + gl.glTexEnvi(8960, '\u8572', 8448);//MODULATE + } + if (var0 == 1) { + gl.glTexEnvi(8960, '\u8572', 7681);//REPLACE + } + if (var0 == 2) { + gl.glTexEnvi(8960, '\u8572', 260);//ADD + } + anInt1792 = var0; + } + } + + private static void method1848(float left, float right, float bottom, float top, float constantFloat, float renderDistance) { + float var6 = constantFloat * 2.0F; + aFloatArray1808[0] = var6 / (right - left); + aFloatArray1808[1] = 0.0F; + aFloatArray1808[2] = 0.0F; + aFloatArray1808[3] = 0.0F; + aFloatArray1808[4] = 0.0F; + aFloatArray1808[5] = var6 / (top - bottom); + aFloatArray1808[6] = 0.0F; + aFloatArray1808[7] = 0.0F; + aFloatArray1808[8] = (right + left) / (right - left); + aFloatArray1808[9] = (top + bottom) / (top - bottom); + aFloatArray1808[10] = aFloat1787 = -(renderDistance + constantFloat) / (renderDistance - constantFloat); + aFloatArray1808[11] = -1.0F; + aFloatArray1808[12] = 0.0F; + aFloatArray1808[13] = 0.0F; + aFloatArray1808[14] = aFloat1795 = -(var6 * renderDistance) / (renderDistance - constantFloat); + aFloatArray1808[15] = 0.0F; + gl.glLoadMatrixf(aFloatArray1808, 0); + aFloat1797 = 0.0F; + aFloat1794 = 0.0F; + } + + /** + * clearScreen takes an int of color (can be replaced with whatever color you see fit) + * + * @param color + */ + static void clearScreen(int color) { + gl.glClearColor((float) (color >> 16 & 0xFF) / 255.0F, (float) (color >> 8 & 0xFF) / 255.0F, (float) (color & 0xFF) / 255.0F, 0.0F); + gl.glClear(16640); + gl.glClearColor(0.0F, 0.0F, 0.0F, 0.0F); + } + + static void bindTexture2D(int var0) { + if (var0 != anInt1803) { + if (var0 == -1) { + gl.glDisable(3553); + } else { + if (anInt1803 == -1) { + gl.glEnable(3553); + } + + gl.glBindTexture(3553, var0); + } + + anInt1803 = var0; + } + } + + static void depthBufferWritingDisabled() { + gl.glDepthMask(false); + } + + static float method1852() { + return aFloat1797; + } + + static void method1853(Canvas canvas, int SceneMSAASamples) { + + try { + if (canvas.isDisplayable()) { + + /* + Edited out here is the old JOGL implementation. It was removed due to lack of + support for MacOS + Linux. There was a problem with the threads and Linux users + were unable to interact with the canvas. + */ + //GLProfile.initSingleton(); +// GLCapabilities glCapabilities = new GLCapabilities(GLProfile.getDefault()); +// System.out.println("Scene MSAASamples = " + SceneMSAASamples); +// if (SceneMSAASamples > 0) { +// glCapabilities.setSampleBuffers(true); +// glCapabilities.setNumSamples(SceneMSAASamples); +// } +// +// +// AWTGraphicsConfiguration configuration = AWTGraphicsConfiguration.create(canvas.getGraphicsConfiguration(), glCapabilities, glCapabilities); +// NativeWindow nativeWindow = NativeWindowFactory.getNativeWindow(canvas, configuration); +// GLDrawableFactory glDrawableFactory = GLDrawableFactory.getDesktopFactory(); +// glDrawable = glDrawableFactory.createGLDrawable(nativeWindow); +// glDrawable.setRealized(true); + GLCapabilities var2 = new GLCapabilities(); + if (SceneMSAASamples > 0) { + var2.setSampleBuffers(true); + var2.setNumSamples(SceneMSAASamples * 128); + } + + GLDrawableFactory var3 = GLDrawableFactory.getFactory(); + glDrawable = var3.getGLDrawable(canvas, var2, null); + glDrawable.setRealized(true); + + int var4 = 0; + int var5; + while (true) { + glContext = glDrawable.createContext(null); + + try { + var5 = glContext.makeCurrent(); + if (var5 != 0) { + break; + } + } catch (GLException var8) { + } + + if (var4++ > 5) { + return; + } + + TimeUtils.sleep(1000L); + } + + gl = glContext.getGL(); + new GLU(); + highDetail = true; + SlayerTracker.setSprite(); + System.out.println("Setting high detail to " + highDetail); + viewWidth = canvas.getSize().width; + viewHeight = canvas.getSize().height; + var5 = method1840(); + if (var5 == 0) { + method1857(); + method1829(); + gl.glClear(16384); + var4 = 0; + + while (true) { + try { + glDrawable.swapBuffers(); + break; + } catch (GLException var7) { + if (var4++ > 5) { + method1842(); + return; + } + + TimeUtils.sleep(100L); + } + } + + gl.glClear(16384); + } else { + method1842(); + } + } else { + } + } catch (GLException var9) { + System.err.println("Failed to enter HD"); + method1842(); + } + } + + static void method1854(int var0, int var1) { + viewWidth = var0; + viewHeight = var1; + viewportSetup = false; + } + + static void method1855(int var0, int var1, int var2, int var3, int var4, int var5) { + int var6 = -var0; + int var7 = viewWidth - var0; + int var8 = -var1; + int var9 = viewHeight - var1; + gl.glMatrixMode(5889); + gl.glLoadIdentity(); + float var10 = (float) var2 / 512.0F; + float var11 = var10 * (256.0F / (float) var4); + float var12 = var10 * (256.0F / (float) var5); + gl.glOrtho((float) var6 * var11, (float) var7 * var11, (float) (-var9) * var12, (float) (-var8) * var12, 50 - var3, 3584 - var3); + gl.glViewport(0, 0, viewWidth, viewHeight); + gl.glMatrixMode(5888); + gl.glLoadIdentity(); + gl.glRotatef(180.0F, 1.0F, 0.0F, 0.0F); + viewportSetup = false; + } + + static void method1856(int var0) { + if (var0 != anInt1793) { + if (var0 == 0) { + gl.glTexEnvi(8960, '\u8571', 8448); + } + + if (var0 == 1) { + gl.glTexEnvi(8960, '\u8571', 7681); + } + + if (var0 == 2) { + gl.glTexEnvi(8960, '\u8571', 260); + } + + if (var0 == 3) { + gl.glTexEnvi(8960, '\u8571', '\u84e7'); + } + + if (var0 == 4) { + gl.glTexEnvi(8960, '\u8571', '\u8574'); + } + + if (var0 == 5) { + gl.glTexEnvi(8960, '\u8571', '\u8575'); + } + + anInt1793 = var0; + } + } + + private static void method1857() { + int[] var0 = new int[1]; + gl.glGenTextures(1, var0, 0); + anInt1810 = var0[0]; + gl.glBindTexture(3553, anInt1810); + gl.glTexImage2D(3553, 0, 4, 1, 1, 0, 6408, 5121, IntBuffer.wrap(new int[]{-1})); + Class68.method1276(); + Class3_Sub24_Sub3.method468(); + } + +} diff --git a/Client/src/main/java/org/runite/client/ISAACCipher.java b/Client/src/main/java/org/runite/client/ISAACCipher.java new file mode 100644 index 000000000..fc9ffdb37 --- /dev/null +++ b/Client/src/main/java/org/runite/client/ISAACCipher.java @@ -0,0 +1,205 @@ +package org.runite.client; + +import org.rs09.client.config.GameConfig; +import org.rs09.client.rendering.Toolkit; + + +final class ISAACCipher { + + private int anInt966; + private int anInt967; + private int anInt968; + private final int[] anIntArray970; + private final int[] anIntArray971; + private int anInt972; + + + private void method1227() { + try { + + int var10 = -1640531527; + int var9 = -1640531527; + int var8 = -1640531527; + int var7 = -1640531527; + int var6 = -1640531527; + int var5 = -1640531527; + int var4 = -1640531527; + int var3 = -1640531527; + + int var2; + for (var2 = 0; 4 > var2; ++var2) { + var3 ^= var4 << 11; + var6 += var3; + var4 += var5; + var4 ^= var5 >>> 2; + var5 += var6; + var5 ^= var6 << 8; + var8 += var5; + var7 += var4; + var6 += var7; + var6 ^= var7 >>> 16; + var7 += var8; + var9 += var6; + var7 ^= var8 << 10; + var10 += var7; + var8 += var9; + var8 ^= var9 >>> 4; + var9 += var10; + var9 ^= var10 << 8; + var4 += var9; + var3 += var8; + var10 += var3; + var10 ^= var3 >>> 9; + var5 += var10; + var3 += var4; + } + + for (var2 = 0; var2 < 256; var2 += 8) { + var6 += this.anIntArray970[3 + var2]; + var7 += this.anIntArray970[var2 - -4]; + var9 += this.anIntArray970[var2 + 6]; + var3 += this.anIntArray970[var2]; + var5 += this.anIntArray970[2 + var2]; + var8 += this.anIntArray970[var2 - -5]; + var10 += this.anIntArray970[7 + var2]; + var4 += this.anIntArray970[var2 - -1]; + var3 ^= var4 << 11; + var4 += var5; + var4 ^= var5 >>> 2; + var6 += var3; + var5 += var6; + var5 ^= var6 << 8; + var7 += var4; + var6 += var7; + var6 ^= var7 >>> 16; + var8 += var5; + var7 += var8; + var7 ^= var8 << 10; + var10 += var7; + var9 += var6; + var8 += var9; + var8 ^= var9 >>> 4; + var9 += var10; + var9 ^= var10 << 8; + var3 += var8; + var10 += var3; + var4 += var9; + var10 ^= var3 >>> 9; + var3 += var4; + this.anIntArray971[var2] = var3; + this.anIntArray971[1 + var2] = var4; + var5 += var10; + this.anIntArray971[2 + var2] = var5; + this.anIntArray971[var2 + 3] = var6; + this.anIntArray971[4 + var2] = var7; + this.anIntArray971[5 + var2] = var8; + this.anIntArray971[var2 - -6] = var9; + this.anIntArray971[7 + var2] = var10; + } + + for (var2 = 0; var2 < 256; var2 += 8) { + var9 += this.anIntArray971[6 + var2]; + var8 += this.anIntArray971[var2 + 5]; + var7 += this.anIntArray971[4 + var2]; + var4 += this.anIntArray971[var2 + 1]; + var5 += this.anIntArray971[2 + var2]; + var3 += this.anIntArray971[var2]; + var3 ^= var4 << 11; + var6 += this.anIntArray971[var2 + 3]; + var10 += this.anIntArray971[var2 + 7]; + var6 += var3; + var4 += var5; + var4 ^= var5 >>> 2; + var5 += var6; + var7 += var4; + var5 ^= var6 << 8; + var8 += var5; + var6 += var7; + var6 ^= var7 >>> 16; + var7 += var8; + var7 ^= var8 << 10; + var9 += var6; + var8 += var9; + var8 ^= var9 >>> 4; + var10 += var7; + var9 += var10; + var3 += var8; + var9 ^= var10 << 8; + var4 += var9; + var10 += var3; + var10 ^= var3 >>> 9; + var5 += var10; + var3 += var4; + this.anIntArray971[var2] = var3; + this.anIntArray971[1 + var2] = var4; + this.anIntArray971[var2 - -2] = var5; + this.anIntArray971[3 + var2] = var6; + this.anIntArray971[4 + var2] = var7; + this.anIntArray971[5 + var2] = var8; + this.anIntArray971[var2 + 6] = var9; + this.anIntArray971[var2 - -7] = var10; + } + + this.method1229(); + this.anInt968 = 256; + } catch (RuntimeException var11) { + throw ClientErrorException.clientError(var11, "ij.E(" + true + ')'); + } + } + + final int nextOpcode() { + try { + if (this.anInt968-- == 0) { + this.method1229(); + this.anInt968 = 255; + } + return GameConfig.ISAAC ? this.anIntArray970[this.anInt968] : 0; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "ij.C(" + ')'); + } + } + + private void method1229() { + try { + this.anInt967 += ++this.anInt966; + int var2 = 0; + while (var2 < 256) { + int var3 = this.anIntArray971[var2]; + if ((2 & var2) != 0) { + if ((var2 & 1) == 0) { + this.anInt972 ^= this.anInt972 << 2; + } else { + this.anInt972 ^= this.anInt972 >>> 16; + } + } else if ((var2 & 1) == 0) { + this.anInt972 ^= this.anInt972 << 13; + } else { + this.anInt972 ^= this.anInt972 >>> 6; + } + + this.anInt972 += this.anIntArray971[128 + var2 & 0xFF]; + int var4; + this.anIntArray971[var2] = var4 = this.anInt967 + this.anInt972 + this.anIntArray971[Unsorted.bitwiseAnd(var3, 1020) >> 2]; + this.anIntArray970[var2] = this.anInt967 = var3 + this.anIntArray971[Unsorted.bitwiseAnd(261347, var4) >> 8 >> 2]; + ++var2; + } + + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "ij.A(" + ')'); + } + } + + ISAACCipher(int[] var1) { + try { + this.anIntArray970 = new int[256]; + this.anIntArray971 = new int[256]; + + System.arraycopy(var1, 0, this.anIntArray970, 0, var1.length); + + this.method1227(); + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "ij.(" + (var1 != null ? "{...}" : "null") + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Interface1.java b/Client/src/main/java/org/runite/client/Interface1.java new file mode 100644 index 000000000..56d9fb7a1 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Interface1.java @@ -0,0 +1,18 @@ +package org.runite.client; + +import java.awt.*; + +public interface Interface1 { + + void method1(int var1, int var2); + + int method2(byte var1, int var2); + + void method3(int var1, int var2, int var3); + + void method4(byte var1, int var2); + + void method5(int var1, byte var2, Component var3, boolean var4); + + void method6(int var1, int[] var2); +} diff --git a/Client/src/main/java/org/runite/client/Interface2.java b/Client/src/main/java/org/runite/client/Interface2.java new file mode 100644 index 000000000..fa1f48358 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Interface2.java @@ -0,0 +1,30 @@ +package org.runite.client; + +interface Interface2 { + + boolean method7(byte var1, int var2); + + void method8(int var1, boolean var2); + + int method9(int var1, boolean var2); + + int method10(int var1, int var2); + + boolean method11(int var1, int var2); + + boolean method12(int var1, int var2); + + int[] method13(int var1, boolean var2, float var3); + + boolean method14(byte var1, int var2); + + int method15(int var1, int var2); + + int[] method16(int var1, int var2); + + boolean method17(int var1, int var2); + + int method18(int var1, int var2); + + int method19(int var1, int var2); +} diff --git a/Client/src/main/java/org/runite/client/Interface3.java b/Client/src/main/java/org/runite/client/Interface3.java new file mode 100644 index 000000000..49f0ed713 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Interface3.java @@ -0,0 +1,4 @@ +package org.runite.client; + +interface Interface3 { +} diff --git a/Client/src/main/java/org/runite/client/Interface4.java b/Client/src/main/java/org/runite/client/Interface4.java new file mode 100644 index 000000000..81074a11d --- /dev/null +++ b/Client/src/main/java/org/runite/client/Interface4.java @@ -0,0 +1,6 @@ +package org.runite.client; + +interface Interface4 { + + RSString method20(int var1, int[] var2, int var3, long var4); +} diff --git a/Client/src/main/java/org/runite/client/InterfaceWidget.java b/Client/src/main/java/org/runite/client/InterfaceWidget.java new file mode 100644 index 000000000..3e57f235d --- /dev/null +++ b/Client/src/main/java/org/runite/client/InterfaceWidget.java @@ -0,0 +1,267 @@ +package org.runite.client; + +import org.rs09.client.Node; +import org.rs09.client.config.GameConfig; + +final class InterfaceWidget extends Node { + + static boolean aBoolean3594; + static boolean aBoolean3668 = false; + static int anInt2293 = -1; + static float aFloat1169; + int anInt3596; + int anInt3597; + int anInt3598; + RSString text; + static int anInt3600; + + static InterfaceWidget getWidget(int var1, int var2) { + try { + InterfaceWidget var3 = (InterfaceWidget)Client.aHashTable_2194.get((long)var2 | (long)var1 << 32); + if(null == var3) { + var3 = new InterfaceWidget(var1, var2); + Client.aHashTable_2194.put(var3.linkableKey, var3); + } + + return var3; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "te.F(" + 4 + ',' + var1 + ',' + var2 + ')'); + } + } + + static void setWidgetText(RSString text, int var2) { + try { + InterfaceWidget var3 = getWidget(2, var2); + + var3.flagUpdate(); + var3.text = text; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "pi.B(" + (text != null?"{...}":"null") + ',' + (byte) 40 + ',' + var2 + ')'); + } + } + + + final void a() { + try { + this.nodeKey = TimeUtils.time() - -500L | Long.MIN_VALUE & this.nodeKey; + Class81.aClass13_1139.offer(this); + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "da.U(" + true + ')'); + } + } + + static void d(int var0) { + try { + if(NPCDefinition.anInt1252 != -1 && anInt2293 != -1) { + int var1 = (Class163_Sub2_Sub1.anInt4020 * (-Class134.anInt1759 + TextureOperation.anInt2383) >> 16) + Class134.anInt1759; + float[] var3 = new float[3]; + Class163_Sub2_Sub1.anInt4020 += var1; + if(Class163_Sub2_Sub1.anInt4020 >= 65535) { + Class163_Sub2_Sub1.anInt4020 = 65535; + Class3_Sub28_Sub1.aBoolean3531 = !aBoolean3668; + + aBoolean3668 = true; + } else { + aBoolean3668 = false; + Class3_Sub28_Sub1.aBoolean3531 = false; + } + + if(var0 == 65535) { + float var2 = (float)Class163_Sub2_Sub1.anInt4020 / 65535.0F; + int var4 = Unsorted.anInt1081 * 2; + + int var6; + int var7; + int var8; + int var9; + int var10; + int var11; + int var12; + for(int var5 = 0; var5 < 3; ++var5) { + var8 = (Class58.anIntArrayArrayArray911[NPCDefinition.anInt1252][var4 - -2][var5] + -Class58.anIntArrayArrayArray911[NPCDefinition.anInt1252][var4 - -3][var5] - -Class58.anIntArrayArrayArray911[NPCDefinition.anInt1252][var4 - -2][var5]) * 3; + var9 = Class58.anIntArrayArrayArray911[NPCDefinition.anInt1252][var4][var5]; + var7 = 3 * Class58.anIntArrayArrayArray911[NPCDefinition.anInt1252][var4 + 1][var5]; + var6 = 3 * Class58.anIntArrayArrayArray911[NPCDefinition.anInt1252][var4][var5]; + var10 = -var6 + var7; + var11 = var8 + -(var7 * 2) + var6; + var12 = Class58.anIntArrayArrayArray911[NPCDefinition.anInt1252][2 + var4][var5] + -var9 - -var7 - var8; + var3[var5] = (float)var9 + (((float)var12 * var2 + (float)var11) * var2 + (float)var10) * var2; + } + + Class7.anInt2162 = -1 * (int)var3[1]; + NPC.anInt3995 = (int)var3[0] + -(128 * Class131.x1716); + Class77.anInt1111 = (int)var3[2] + -(Texture.y1152 * 128); + float[] var16 = new float[3]; + var6 = Class39.anInt670 * 2; + + for(var7 = 0; var7 < 3; ++var7) { + var8 = Class58.anIntArrayArrayArray911[anInt2293][var6][var7] * 3; + var10 = (Class58.anIntArrayArrayArray911[anInt2293][2 + var6][var7] - Class58.anIntArrayArrayArray911[anInt2293][3 + var6][var7] + Class58.anIntArrayArrayArray911[anInt2293][var6 - -2][var7]) * 3; + var11 = Class58.anIntArrayArrayArray911[anInt2293][var6][var7]; + var9 = Class58.anIntArrayArrayArray911[anInt2293][1 + var6][var7] * 3; + var12 = var9 + -var8; + int var13 = var10 + var8 + -(2 * var9); + int var14 = -var10 + Class58.anIntArrayArrayArray911[anInt2293][var6 - -2][var7] + -var11 + var9; + var16[var7] = (float)var11 + var2 * (var2 * (var2 * (float)var14 + (float)var13) + (float)var12); + } + + float var17 = -var3[0] + var16[0]; + float var19 = var16[2] - var3[2]; + float var18 = (-var3[1] + var16[1]) * -1.0F; + double var20 = Math.sqrt(var19 * var19 + var17 * var17); + aFloat1169 = (float)Math.atan2(var18, var20); + Class45.aFloat730 = -((float)Math.atan2(var17, var19)); + Class139.anInt1823 = 2047 & (int)(325.949D * (double) aFloat1169); + TextureOperation28.anInt3315 = 2047 & (int)((double)Class45.aFloat730 * 325.949D); + } + } + } catch (RuntimeException var15) { + throw ClientErrorException.clientError(var15, "da.Q(" + var0 + ')'); + } + } + + final long b() { + try { + + return this.nodeKey & Long.MAX_VALUE; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "da.A(" + true + ')'); + } + } + + static AbstractIndexedSprite a(int var0, CacheIndex var1) { + try { + return !GroundItem.method2029((byte)-127, var1, var0)?null:(Class166.method2259()); + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "da.C(" + var0 + ',' + (var1 != null?"{...}":"null") + ',' + true + ')'); + } + } + + final int e() { + try { + return (int)(255L & this.linkableKey >>> 32); + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "da.D()"); + } + } + + final int f() { + try { + return (int)this.linkableKey; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "da.P(" + (byte) 117 + ')'); + } + } + + static MapSceneDefinition c(int var0) { + try { + MapSceneDefinition var2 = (MapSceneDefinition) TextureOperation25.aReferenceCache_3412.get(var0); + if(var2 == null) { + byte[] var3 = Class107.configurationsIndex_878.getFile(34, var0); + + var2 = new MapSceneDefinition(); + if(var3 != null) { + var2.decode(new DataBuffer(var3)); + } + + TextureOperation25.aReferenceCache_3412.put(var2, var0); + } + return var2; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "da.R(" + var0 + ',' + 0 + ')'); + } + } + + static String a(String var0, String var1, String var3) { + for(int var4 = var3.indexOf(var0); var4 != -1; var4 = var3.indexOf(var0, var4 + var1.length())) { + var3 = var3.substring(0, var4) + var1 + var3.substring(var0.length() + var4); + } + + return var3; + } + + static void a(int var0, int var1, int var2, RSInterface var3) { + try { + if(null == Class56.aClass11_886 && !Class38_Sub1.aBoolean2615) { + if(var2 < 61) { + a(19, 20, -32, null); + } + + if(null != var3 && Class49.method1122(var3) != null) { + Class56.aClass11_886 = var3; + PacketParser.aClass11_88 = Class49.method1122(var3); + Unsorted.anInt1881 = var1; + NPC.aBoolean3975 = false; + Class75_Sub3.anInt2658 = 0; + Class95.anInt1336 = var0; + } + } + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "da.S(" + var0 + ',' + var1 + ',' + var2 + ',' + (var3 != null?"{...}":"null") + ')'); + } + } + + static void a(int var0, int var2, int var3, RSString var4, long var5, int var7, RSString name) { + try { + System.out.println("Class3_Sub28_Sub6 " + var0 + ", " + 10603 + ", " + var2 + ", " + var3 + ", " + var4 + ", " + var5 + ", " + var7); + DataBuffer var8 = new DataBuffer(129); + var8.writeByte(10); + var8.writeShort((int)(Math.random() * 99999.0D)); + var8.writeShort(GameConfig.CLIENT_BUILD); + var8.writeString(name); + var8.writeInt((int)(Math.random() * 9.9999999E7D)); + var8.writeString(var4); + var8.writeInt((int)(Math.random() * 9.9999999E7D)); + var8.writeShort(Class3_Sub26.paramAffid); + var8.writeByte(var0); + var8.writeByte(var3); + var8.writeInt((int)(Math.random() * 9.9999999E7D)); + var8.writeShort(var7); + var8.writeShort(var2); + var8.writeInt((int)(9.9999999E7D * Math.random())); + var8.rsaEncrypt(TextureOperation10.EXPONENT, TextureOperation31.MODULUS); + TextureOperation12.outgoingBuffer.index = 0; + TextureOperation12.outgoingBuffer.writeByte(36); + TextureOperation12.outgoingBuffer.writeByte(var8.index); + TextureOperation12.outgoingBuffer.putBytes(var8.buffer, var8.index); + Unsorted.anInt1711 = -3; + Unsorted.registryStage = 1; + Class132.anInt1734 = 0; + GraphicDefinition.anInt548 = 0; + } catch (RuntimeException var9) { + throw ClientErrorException.clientError(var9, "da.B(" + var0 + ',' + 10603 + ',' + var2 + ',' + var3 + ',' + (var4 != null?"{...}":"null") + ',' + var5 + ',' + var7 + ')'); + } + } + + final void flagUpdate() { + try { + this.nodeKey |= Long.MIN_VALUE; + if(this.b() == 0) { + Class126.aClass13_1666.offer(this); + } + + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "da.T(" + (byte) 33 + ')'); + } + } + + InterfaceWidget(int var1, int var2) { + try { + this.linkableKey = (long)var1 << 32 | (long)var2; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "da.(" + var1 + ',' + var2 + ')'); + } + } + +// static void h() { +// try { +// Class114.aReferenceCache_1569.clearSoftReferences(); +// +// Class3_Sub15.aReferenceCache_2428.clearSoftReferences(); +// Unsorted.aReferenceCache_743.clearSoftReferences(); +// } catch (RuntimeException var2) { +// throw ClientErrorException.clientError(var2, "da.E(" + (byte) 3 + ')'); +// } +// } + +} diff --git a/Client/src/main/java/org/runite/client/InvalidateData.java b/Client/src/main/java/org/runite/client/InvalidateData.java new file mode 100644 index 000000000..680d9f908 --- /dev/null +++ b/Client/src/main/java/org/runite/client/InvalidateData.java @@ -0,0 +1,16 @@ +package org.runite.client; + +public class InvalidateData { + static void method165() { + try { + WorldListEntry.aAbstractSprite_1339 = null; + WorldListEntry.aAbstractSprite_3099 = null; + Class50.aAbstractSprite_824 = null; + + WorldListEntry.aAbstractSprite_1457 = null; + Class3_Sub26.aAbstractSprite_2560 = null; + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "j.VA(" + -7878 + ')'); + } + } +} diff --git a/Client/src/main/java/org/runite/client/ItemDefinition.java b/Client/src/main/java/org/runite/client/ItemDefinition.java new file mode 100644 index 000000000..8856110f0 --- /dev/null +++ b/Client/src/main/java/org/runite/client/ItemDefinition.java @@ -0,0 +1,875 @@ +package org.runite.client; +import org.rs09.SystemLogger; +import org.rs09.client.Linkable; +import org.rs09.client.data.HashTable; +import org.rs09.client.LinkableInt; + +import java.awt.Component; +import java.util.Objects; + +final class ItemDefinition { + + static short aShort505 = 1; + static RSString[] stringsStack = new RSString[1000]; + static int[] intsStack = new int[1000]; + static int scriptHeapCounter = 0; + // This holds all the int memory that can be accessed by the pseudo assembly by value. + static int[] ram = new int[2500]; + // This holds even MORE memory which has five unique pages. It is slower (presumably) than regular ram + // and can be accessed through opcodes 44-46. You can fill it with a given value + // in a single instruction though + static int[][] pagedRam = new int[5][5000]; + // This shows how much of the pagedRam is actually filled for any given page. + static int[] pagedRamPageSize = new int[5]; + + static RSString[] stringArguments; + static int[] intArguments; + // This is the TRUE stack. the one with a stack pointer and stack tracing. + // This holds all the methods you are currently calling in your script. + static AssembledMethodContainer[] methodStack = new AssembledMethodContainer[50]; + private short[] aShortArray751; + public int femaleWieldZ; + private int anInt753 = -1; + int anInt754; + private int modelId; + int anInt756 = -1; + int value = 1; + int anInt758; + public int maleWieldX; + int anInt761; + int anInt762; + int stackingType; + private short[] aShortArray765; + int[] anIntArray766; + int anInt767; + int anInt768; + private int anInt769; + RSString name; + private int anInt771; + private short[] aShortArray772; + private int anInt773 = -1; + private short[] aShortArray774; + public int maleWieldZ; + private int anInt776 = -1; + public int femaleWieldX; + public int maleWieldY; + boolean membersItem; + private int anInt780; + static int[] anIntArray781 = new int[99]; + int teamId = 0; + RSString[] inventoryOptions; + private int anInt784; + private byte[] aByteArray785; + int modelRotation1; + int itemId; + int anInt788; + public int noteID; + private int anInt790; + int anInt791; + int anInt792; + int maleEquip1; + private int anInt794; + int anInt795; + private int anInt796; + private int anInt797; + HashTable aHashTable_798; + int modelRotation2; + int anInt800; + RSString[] groundOptions; + public int femaleWieldY; + private int anInt803; + int[] anIntArray804; + private int anInt805; + boolean aBoolean807; + + int modelZoom; + private static RSString aString_811; + + boolean itemContextMenuDebug = true; + + static boolean method1176(RSString var0) { + try { + if(var0 == null) { + return false; + } else { + for(int var2 = 0; Class8.anInt104 > var2; ++var2) { + if(var0.equalsStringIgnoreCase(Class70.aStringArray1046[var2])) { + return true; + } + } + + + return var0.equalsStringIgnoreCase(Class102.player.displayName); + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "hj.A(" + "{...}" + ',' + (byte) -82 + ')'); + } + } + + static AssembledMethod getMethodByID(int methodID) { + try { + // Load and return method from cache + AssembledMethod var2 = (AssembledMethod)Class56.aClass47_885.get(methodID); + if (var2 != null) { + return var2; + } + // Load method from file 0 which holds all the methods. Apparently. + byte[] var3 = CacheIndex.interfaceScriptsIndex.getFile(methodID, 0); + if(var3 == null) { + return null; + } else { + var2 = new AssembledMethod(); + + DataBuffer var4 = new DataBuffer(var3); + var4.index = -2 + var4.buffer.length; + int var5 = var4.readUnsignedShort(); + int var6 = -12 + var4.buffer.length + -2 - var5; + var4.index = var6; + int var7 = var4.readInt(); + var2.numberOfIntsToCopy = var4.readUnsignedShort(); + var2.numberOfRSStringsToCopy = var4.readUnsignedShort(); + var2.numberOfIntArguments = var4.readUnsignedShort(); + var2.numberOfStringArguments = var4.readUnsignedShort(); + int var8 = var4.readUnsignedByte(); + int var9; + int var10; + if(var8 > 0) { + var2.switchHashTable = new HashTable[var8]; + + for(var9 = 0; var9 < var8; ++var9) { + var10 = var4.readUnsignedShort(); + HashTable var11 = new HashTable(Class95.method1585((byte)119, var10)); + var2.switchHashTable[var9] = var11; + + while(var10-- > 0) { + int var12 = var4.readInt(); + int var13 = var4.readInt(); + var11.put(var12, new LinkableInt(var13)); + } + } + } + + var4.index = 0; + var4.method750(); + var2.assemblyInstructions = new int[var7]; + var2.stringInstructionOperands = new RSString[var7]; + var9 = 0; + + for(var2.instructionOperands = new int[var7]; var4.index < var6; var2.assemblyInstructions[var9++] = var10) { + var10 = var4.readUnsignedShort(); + if(var10 == 3) { + var2.stringInstructionOperands[var9] = var4.readString(); + } else if (var10 < 100 && 21 != var10 && var10 != 38 && 39 != var10) { + var2.instructionOperands[var9] = var4.readInt(); + } else { + var2.instructionOperands[var9] = var4.readUnsignedByte(); + } + } + Class56.aClass47_885.put(methodID, var2); + return var2; + } + } catch (RuntimeException var14) { + throw ClientErrorException.clientError(var14, "hc.O(" + methodID + ',' + (byte) -91 + ')'); + } + } + + static ItemDefinition getItemDefinition(int itemId) { + try { + ItemDefinition var2 = (ItemDefinition) QuickChatDefinition.aReferenceCache_3572.get(itemId); + if(var2 == null) { + byte[] var3 = Class97.itemConfigIndex_1370.getFile(PositionedGraphicObject.method1951(itemId), 255 & itemId); + var2 = new ItemDefinition(); + var2.itemId = itemId; + if(var3 != null) { + var2.parseDefinitions(new DataBuffer(var3)); + } + + var2.method1112(); + if(var2.anInt791 != -1) { + var2.method1118(getItemDefinition(var2.noteID), getItemDefinition(var2.anInt791)); + } + + if(var2.anInt762 != -1) { + var2.method1109(getItemDefinition(var2.anInt795), getItemDefinition(var2.anInt762)); + } + + if(!Class139.aBoolean1827 && var2.membersItem) { + var2.name = TextCore.MembersObject; + var2.teamId = 0; + var2.inventoryOptions = ClientErrorException.aStringArray2119; + var2.aBoolean807 = false; + var2.groundOptions = Unsorted.aStringArray2596; + } + + QuickChatDefinition.aReferenceCache_3572.put(var2, itemId); + } + return var2; + } catch (RuntimeException var4) { + SystemLogger.logErr("(ItemDefinition.java:208) Item ID higher than max or error parsing for ID " + itemId + " trace: " + var4); + } + return null; + } + + + final boolean method1102(boolean var1) { + try { + int var3 = this.anInt803; + int var4 = this.anInt796; + if(var1) { + var3 = this.anInt773; + var4 = this.anInt753; + } + + if(var3 == -1) { + return true; + } else { + boolean var5 = true; + if(!LinkableRSString.modelsIndex_2581.method2129((byte)-75, 0, var3)) { + var5 = false; + } + + if(var4 != -1 && !LinkableRSString.modelsIndex_2581.method2129((byte)58, 0, var4)) { + var5 = false; + } + + return var5; + } + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "h.G(" + var1 + ',' + false + ')'); + } + } + + static void method1103(CacheIndex var0, CacheIndex var1) { + try { + NPCDefinition.modelsIndex_3137 = var0; + Class29.npcConfigIndex_557 = var1; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "h.B(" + (var0 != null?"{...}":"null") + ',' + (var1 != null?"{...}":"null") + ',' + false + ')'); + } + } + + public RSString method1105(RSString var2, int var3) {//private -> public to move runAssembledScript into CS2Script + try { + if(this.aHashTable_798 == null) { + return var2; + } else { + + LinkableRSString var4 = (LinkableRSString)this.aHashTable_798.get(var3); + return null != var4?var4.value :var2; + } + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "h.S(" + 107 + ',' + (var2 != null?"{...}":"null") + ',' + var3 + ')'); + } + } + + + final ItemDefinition method1106(int var1) { + try { + if(this.anIntArray804 != null && var1 > 1) { + int var4 = -1; + + for(int var5 = 0; 10 > var5; ++var5) { + if(this.anIntArray766[var5] <= var1 && this.anIntArray766[var5] != 0) { + var4 = this.anIntArray804[var5]; + } + } + + if(var4 != -1) { + return getItemDefinition(var4); + } + } + + return this; + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "h.H(" + var1 + ',' + 78 + ')'); + } + } + + static WorldListEntry method1107(int var0) { + try { + if(Unsorted.aClass44_Sub1Array3201.length > Class3_Sub6.anInt2291) { + return Unsorted.aClass44_Sub1Array3201[Class3_Sub6.anInt2291++]; + } else { + if(var0 != 5422) { + method1107(-66); + } + + return null; + } + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "h.R(" + var0 + ')'); + } + } + + final boolean method1108(boolean var2) { + try { + int var4 = this.anInt771; + int var3 = this.maleEquip1; + int var5 = this.anInt769; + if(var2) { + var5 = this.anInt776; + var3 = this.anInt761; + var4 = this.anInt794; + } + + if(var3 == -1) { + return true; + } else { + boolean var7 = true; + if(!LinkableRSString.modelsIndex_2581.method2129((byte)-90, 0, var3)) { + var7 = false; + } + + if(var4 != -1 && !LinkableRSString.modelsIndex_2581.method2129((byte)-114, 0, var4)) { + var7 = false; + } + + if(-1 != var5 && !LinkableRSString.modelsIndex_2581.method2129((byte)83, 0, var5)) { + var7 = false; + } + + return var7; + } + } catch (RuntimeException var8) { + throw ClientErrorException.clientError(var8, "h.C(" + (byte) 95 + ',' + var2 + ')'); + } + } + + final void method1109(ItemDefinition var2, ItemDefinition var3) { + try { + this.aByteArray785 = var2.aByteArray785; + this.maleWieldY = var2.maleWieldY; + this.aHashTable_798 = var2.aHashTable_798; + this.anInt769 = var2.anInt769; + this.anInt761 = var2.anInt761; + this.maleWieldZ = var2.maleWieldZ; + this.inventoryOptions = new RSString[5]; + this.modelId = var3.modelId; + this.modelZoom = var3.modelZoom; + this.value = 0; + this.teamId = var2.teamId; + this.anInt773 = var2.anInt773; + this.aShortArray774 = var2.aShortArray774; + this.anInt768 = var3.anInt768; + this.anInt771 = var2.anInt771; + this.modelRotation2 = var3.modelRotation2; + this.anInt803 = var2.anInt803; + this.anInt796 = var2.anInt796; + this.maleWieldX = var2.maleWieldX; + this.modelRotation1 = var3.modelRotation1; + this.anInt754 = var3.anInt754; + this.anInt753 = var2.anInt753; + this.femaleWieldX = var2.femaleWieldX; + this.aShortArray772 = var2.aShortArray772; + this.femaleWieldY = var2.femaleWieldY; + this.femaleWieldZ = var2.femaleWieldZ; + this.anInt792 = var3.anInt792; + + this.maleEquip1 = var2.maleEquip1; + this.anInt794 = var2.anInt794; + this.name = var2.name; + this.aShortArray751 = var2.aShortArray751; + this.aShortArray765 = var2.aShortArray765; + this.groundOptions = var2.groundOptions; + this.membersItem = var2.membersItem; + this.anInt776 = var2.anInt776; + if(null != var2.inventoryOptions) { + System.arraycopy(var2.inventoryOptions, 0, this.inventoryOptions, 0, 4); + } + + this.inventoryOptions[4] = TextCore.HasDiscard; + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "h.J(" + (byte) 69 + ',' + (var2 != null?"{...}":"null") + ',' + (var3 != null?"{...}":"null") + ')'); + } + } + + final Model method1110(int var2, int var3, SequenceDefinition var4, int var5, int var6) { + try { + if(this.anIntArray804 != null && var5 > 1) { + int var7 = -1; + + for(int var8 = 0; var8 < 10; ++var8) { + if(this.anIntArray766[var8] <= var5 && this.anIntArray766[var8] != 0) { + var7 = this.anIntArray804[var8]; + } + } + + if(var7 != -1) { + return getItemDefinition(var7).method1110(var2, var3, var4, 1, var6); + } + } + + Model var11 = (Model)Class143.aReferenceCache_1874.get(this.itemId); + if(var11 == null) { + Model_Sub1 var12 = Model_Sub1.method2015(LinkableRSString.modelsIndex_2581, this.modelId); + if(null == var12) { + return null; + } + + int var9; + if(null != this.aShortArray774) { + for(var9 = 0; this.aShortArray774.length > var9; ++var9) { + if(null != this.aByteArray785 && this.aByteArray785.length > var9) { + var12.method2016(this.aShortArray774[var9], TextureOperation38.aShortArray3453[this.aByteArray785[var9] & 0xFF]); + } else { + var12.method2016(this.aShortArray774[var9], this.aShortArray772[var9]); + } + } + } + + if(this.aShortArray765 != null) { + for(var9 = 0; var9 < this.aShortArray765.length; ++var9) { + var12.method1998(this.aShortArray765[var9], this.aShortArray751[var9]); + } + } + + var11 = var12.method2008(this.anInt784 + 64, 768 + this.anInt790, -50, -10, -50); + if(this.anInt805 != 128 || this.anInt780 != 128 || this.anInt797 != 128) { + var11.resize(this.anInt805, this.anInt780, this.anInt797); + } + + var11.aBoolean2699 = true; + if(HDToolKit.highDetail) { + ((Class140_Sub1_Sub1)var11).method1920(false, false, false, false, false, true); + } + + Class143.aReferenceCache_1874.put(var11, this.itemId); + } + + if(var4 != null) { + var11 = var4.method2055(var11, (byte)-88, var2, var3, var6); + } + + return var11; + } catch (RuntimeException var10) { + throw ClientErrorException.clientError(var10, "h.E(" + var2 + ',' + var3 + ',' + (var4 != null?"{...}":"null") + ',' + var5 + ',' + var6 + ')'); + } + } + + final void method1112() { + try { + + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "h.O(" + 5401 + ')'); + } + } + + final void parseDefinitions(DataBuffer buffer) { + try { + while(true) { + int opcode = buffer.readUnsignedByte(); + if(0 == opcode) { + + return; + } + + this.parseOpcode(buffer, opcode); + } + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "h.M(" + 1 + ',' + (buffer != null?"{...}":"null") + ')'); + } + } + + private void parseOpcode(DataBuffer buffer, int opcode) { + try { + if(opcode == 1) { + this.modelId = buffer.readUnsignedShort(); + } else if (opcode == 2) { + this.name = buffer.readString(); + } else if (opcode == 4) { + this.modelZoom = buffer.readUnsignedShort(); + } else if (opcode == 5) { + this.modelRotation1 = buffer.readUnsignedShort(); + } else if (opcode == 6) { + this.modelRotation2 = buffer.readUnsignedShort(); + } else if (opcode == 7) { + this.anInt792 = buffer.readUnsignedShort(); + if (this.anInt792 > 32767) { + this.anInt792 -= 65536; + } + } else if (opcode == 8) { + this.anInt754 = buffer.readUnsignedShort(); + if (this.anInt754 > 32767) { + this.anInt754 -= 65536; + } + } else if (opcode == 11) { + this.stackingType = 1; + } else if (opcode == 12) { + this.value = buffer.readInt(); + } else if (opcode == 16) { + this.membersItem = true; + } else if (23 == opcode) { + this.maleEquip1 = buffer.readUnsignedShort(); + } else if (opcode == 24) { + this.anInt771 = buffer.readUnsignedShort(); + } else if (opcode == 25) { + this.anInt761 = buffer.readUnsignedShort(); + } else if (opcode == 26) { + this.anInt794 = buffer.readUnsignedShort(); + } else if (opcode >= 30 && opcode < 35) { + this.groundOptions[-30 + opcode] = buffer.readString(); + if (this.groundOptions[opcode + -30].equalsStringIgnoreCase(TextCore.HasHidden)) { + this.groundOptions[-30 + opcode] = null; + } + } else if (35 <= opcode && 40 > opcode) { + this.inventoryOptions[-35 + opcode] = buffer.readString(); + } else { + int var5; + int var6; + if (opcode == 40) { + var5 = buffer.readUnsignedByte(); + this.aShortArray772 = new short[var5]; + this.aShortArray774 = new short[var5]; + + for (var6 = 0; var5 > var6; ++var6) { + this.aShortArray774[var6] = (short) buffer.readUnsignedShort(); + this.aShortArray772[var6] = (short) buffer.readUnsignedShort(); + } + } else if (opcode == 41) { + var5 = buffer.readUnsignedByte(); + this.aShortArray751 = new short[var5]; + this.aShortArray765 = new short[var5]; + + for (var6 = 0; var6 < var5; ++var6) { + this.aShortArray765[var6] = (short) buffer.readUnsignedShort(); + this.aShortArray751[var6] = (short) buffer.readUnsignedShort(); + } + } else if (42 == opcode) { + var5 = buffer.readUnsignedByte(); + this.aByteArray785 = new byte[var5]; + + for (var6 = 0; var5 > var6; ++var6) { + this.aByteArray785[var6] = buffer.readSignedByte(); + } + } else if (opcode == 65) { + this.aBoolean807 = true; + } else if (opcode == 78) { + this.anInt769 = buffer.readUnsignedShort(); + } else if (opcode == 79) { + this.anInt776 = buffer.readUnsignedShort(); + } else if (90 == opcode) { + this.anInt803 = buffer.readUnsignedShort(); + } else if (opcode == 91) { + this.anInt773 = buffer.readUnsignedShort(); + } else if (opcode == 92) { + this.anInt796 = buffer.readUnsignedShort(); + } else if (opcode == 93) { + this.anInt753 = buffer.readUnsignedShort(); + } else if (opcode == 95) { + this.anInt768 = buffer.readUnsignedShort(); + } else if (opcode == 96) { + this.anInt800 = buffer.readUnsignedByte(); + } else if (opcode == 97) { + this.noteID = buffer.readUnsignedShort(); + } else if (opcode == 98) { + this.anInt791 = buffer.readUnsignedShort(); + } else if (opcode >= 100 && opcode < 110) { + if (null == this.anIntArray804) { + this.anIntArray804 = new int[10]; + this.anIntArray766 = new int[10]; + } + + this.anIntArray804[-100 + opcode] = buffer.readUnsignedShort(); + this.anIntArray766[opcode + -100] = buffer.readUnsignedShort(); + } else if (110 == opcode) { + this.anInt805 = buffer.readUnsignedShort(); + } else if (opcode == 111) { + this.anInt780 = buffer.readUnsignedShort(); + } else if (opcode == 112) { + this.anInt797 = buffer.readUnsignedShort(); + } else if (opcode == 113) { + this.anInt784 = buffer.readSignedByte(); + } else if (opcode == 114) { + this.anInt790 = 5 * buffer.readSignedByte(); + } else if (opcode == 115) { + this.teamId = buffer.readUnsignedByte(); + } else if (opcode == 121) { + this.anInt795 = buffer.readUnsignedShort(); + } else if (opcode == 122) { + this.anInt762 = buffer.readUnsignedShort(); + } else if (125 == opcode) { + this.maleWieldX = buffer.readSignedByte(); + this.maleWieldY = buffer.readSignedByte(); + this.maleWieldZ = buffer.readSignedByte(); + } else if (opcode == 126) { + this.femaleWieldX = buffer.readSignedByte(); + this.femaleWieldY = buffer.readSignedByte(); + this.femaleWieldZ = buffer.readSignedByte(); + } else if (opcode == 127) { + this.anInt767 = buffer.readUnsignedByte(); + this.anInt758 = buffer.readUnsignedShort(); + } else if (opcode == 128) { + this.anInt788 = buffer.readUnsignedByte(); + this.anInt756 = buffer.readUnsignedShort(); + } else if (opcode == 129) { + buffer.readUnsignedByte(); + buffer.readUnsignedShort(); + } else if (opcode == 130) { + buffer.readUnsignedByte(); + buffer.readUnsignedShort(); + } else if (249 == opcode) { + var5 = buffer.readUnsignedByte(); + if (null == this.aHashTable_798) { + var6 = Class95.method1585((byte) 97, var5); + this.aHashTable_798 = new HashTable(var6); + } + + for (var6 = 0; var6 < var5; ++var6) { + boolean var7 = buffer.readUnsignedByte() == 1; + int var8 = buffer.readMedium(); + Object var9; + if (var7) { + var9 = new LinkableRSString(buffer.readString()); + } else { + var9 = new LinkableInt(buffer.readInt()); + } + + this.aHashTable_798.put(var8, (Linkable) var9); + } + } + } + + } catch (RuntimeException var10) { + throw ClientErrorException.clientError(var10, "h.Q(" + (byte) -72 + ',' + (buffer != null?"{...}":"null") + ',' + opcode + ')'); + } + } + + final int method1115(int var1, int var2, int var3) { + try { + if(this.aHashTable_798 == null) { + return var1; + } else { + LinkableInt var5 = (LinkableInt)this.aHashTable_798.get(var3); + return null != var5?var5.value :var1; + } + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "h.I(" + var1 + ',' + var2 + ',' + var3 + ')'); + } + } + + final Model_Sub1 method1116(boolean var1) { + try { + int var4 = this.anInt796; + int var3 = this.anInt803; + if(var1) { + var4 = this.anInt753; + var3 = this.anInt773; + } + + if(-1 == var3) { + return null; + } else { + Model_Sub1 var5 = Model_Sub1.method2015(LinkableRSString.modelsIndex_2581, var3); + if(-1 != var4) { + Model_Sub1 var6 = Model_Sub1.method2015(LinkableRSString.modelsIndex_2581, var4); + Model_Sub1[] var7 = new Model_Sub1[]{var5, var6}; + var5 = new Model_Sub1(var7, 2); + } + + int var9; + if(this.aShortArray774 != null) { + for(var9 = 0; var9 < this.aShortArray774.length; ++var9) { + Objects.requireNonNull(var5).method2016(this.aShortArray774[var9], this.aShortArray772[var9]); + } + } + + if(this.aShortArray765 != null) { + for(var9 = 0; var9 < this.aShortArray765.length; ++var9) { + Objects.requireNonNull(var5).method1998(this.aShortArray765[var9], this.aShortArray751[var9]); + } + } + + return var5; + } + } catch (RuntimeException var8) { + throw ClientErrorException.clientError(var8, "h.A(" + var1 + ',' + (byte) -109 + ')'); + } + } + + final Model_Sub1 method1117(boolean var1) { + try { + int var3 = this.maleEquip1; + + int var4 = this.anInt771; + int var5 = this.anInt769; + if(var1) { + var5 = this.anInt776; + var3 = this.anInt761; + var4 = this.anInt794; + } + + if(var3 == -1) { + return null; + } else { + Model_Sub1 var6 = Model_Sub1.method2015(LinkableRSString.modelsIndex_2581, var3); + if(var4 != -1) { + Model_Sub1 var7 = Model_Sub1.method2015(LinkableRSString.modelsIndex_2581, var4); + if(-1 == var5) { + Model_Sub1[] var8 = new Model_Sub1[]{var6, var7}; + var6 = new Model_Sub1(var8, 2); + } else { + Model_Sub1 var12 = Model_Sub1.method2015(LinkableRSString.modelsIndex_2581, var5); + Model_Sub1[] var9 = new Model_Sub1[]{var6, var7, var12}; + var6 = new Model_Sub1(var9, 3); + } + } + + // System.out.println(var1 + " - "); + // this.wornModelPositionX = -1; + // this.wornModelPositionZ = 13;//-1;//20; + // this.wornModelPositionY = -1; + if(!var1 && (this.maleWieldX != 0 || this.maleWieldY != 0 || this.maleWieldZ != 0)) { + Objects.requireNonNull(var6).method2001(this.maleWieldX, this.maleWieldY, this.maleWieldZ); + } + if(var1 && (this.femaleWieldX != 0 || this.femaleWieldY != 0 || this.femaleWieldZ != 0)) { + Objects.requireNonNull(var6).method2001(this.femaleWieldX, this.femaleWieldY, this.femaleWieldZ); + } + + int var11; + if(this.aShortArray774 != null) { + for(var11 = 0; var11 < this.aShortArray774.length; ++var11) { + Objects.requireNonNull(var6).method2016(this.aShortArray774[var11], this.aShortArray772[var11]); + } + } + + if(this.aShortArray765 != null) { + for(var11 = 0; var11 < this.aShortArray765.length; ++var11) { + Objects.requireNonNull(var6).method1998(this.aShortArray765[var11], this.aShortArray751[var11]); + } + } + + return var6; + } + } catch (RuntimeException var10) { + throw ClientErrorException.clientError(var10, "h.D(" + var1 + ',' + 80 + ')'); + } + } + + final void method1118(ItemDefinition var1, ItemDefinition var2) { + try { + this.name = var1.name; + this.modelZoom = var2.modelZoom; + + this.aShortArray774 = var2.aShortArray774; + this.aShortArray772 = var2.aShortArray772; + this.modelRotation1 = var2.modelRotation1; + this.modelRotation2 = var2.modelRotation2; + this.aShortArray751 = var2.aShortArray751; + this.modelId = var2.modelId; + this.aByteArray785 = var2.aByteArray785; + this.anInt768 = var2.anInt768; + this.value = var1.value; + this.stackingType = 1; + this.anInt754 = var2.anInt754; + this.anInt792 = var2.anInt792; + this.aShortArray765 = var2.aShortArray765; + this.membersItem = var1.membersItem; + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "h.N(" + (var1 != null?"{...}":"null") + ',' + (var2 != null?"{...}":"null") + ',' + false + ')'); + } + } + + static void method1119(Component var0, boolean var1) { + try { + var0.addMouseListener(Unsorted.aClass149_4047); + if(var1) { + aString_811 = null; + } + + var0.addMouseMotionListener(Unsorted.aClass149_4047); + var0.addFocusListener(Unsorted.aClass149_4047); + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "h.K(" + (var0 != null?"{...}":"null") + ',' + var1 + ')'); + } + } + + final Class140_Sub1_Sub2 method1120() { + try { + Model_Sub1 var2 = Model_Sub1.method2015(LinkableRSString.modelsIndex_2581, this.modelId); + if(var2 == null) { + return null; + } else { + int var3; + if(this.aShortArray774 != null) { + for(var3 = 0; this.aShortArray774.length > var3; ++var3) { + if(null != this.aByteArray785 && this.aByteArray785.length > var3) { + var2.method2016(this.aShortArray774[var3], TextureOperation38.aShortArray3453[this.aByteArray785[var3] & 0xFF]); + } else { + var2.method2016(this.aShortArray774[var3], this.aShortArray772[var3]); + } + } + } + + if(this.aShortArray765 != null) { + for(var3 = 0; var3 < this.aShortArray765.length; ++var3) { + var2.method1998(this.aShortArray765[var3], this.aShortArray751[var3]); + } + } + + Class140_Sub1_Sub2 var5 = var2.method2000(64 - -this.anInt784, 768 - -this.anInt790); + + if(this.anInt805 != 128 || this.anInt780 != 128 || this.anInt797 != 128) { + var5.resize(this.anInt805, this.anInt780, this.anInt797); + } + + return var5; + } + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "h.L(" + 18206 + ')'); + } + } + + public ItemDefinition() { + this.name = Class40.aString_672; + this.maleWieldZ = 0; + this.anInt784 = 0; + this.anInt769 = -1; + this.anInt796 = -1; + this.anInt791 = -1; + this.femaleWieldX = 0; + this.anInt780 = 128; + this.anInt767 = -1; + this.anInt758 = -1; + this.anInt768 = 0; + this.anInt762 = -1; + this.anInt795 = -1; + this.anInt761 = -1; + this.anInt771 = -1; + this.anInt754 = 0; + this.modelRotation1 = 0; + this.modelRotation2 = 0; + this.anInt800 = 0; + this.stackingType = 0; + this.noteID = -1; + this.anInt794 = -1; + this.anInt788 = -1; + this.anInt797 = 128; + this.membersItem = false; + this.femaleWieldZ = 0; + this.anInt792 = 0; + this.anInt803 = -1; + this.femaleWieldY = 0; + this.maleEquip1 = -1; + this.groundOptions = new RSString[]{null, null, TextCore.HasTake, null, null}; + this.anInt805 = 128; + this.anInt790 = 0; + this.maleWieldY = 0; + this.maleWieldX = 0; + this.inventoryOptions = new RSString[]{null, null, null, null, TextCore.HasDrop}; + this.modelZoom = 2000; + this.aBoolean807 = false; + } + + static { + int var0 = 0; + + for(int var1 = 0; var1 < 99; ++var1) { + int var2 = 1 + var1; + int var3 = (int)(Math.pow(2.0D, (double)var2 / 7.0D) * 300.0D + (double)var2); + var0 += var3; + int var4 = var0 / 4; + anIntArray781[var1] = var4; + } + aString_811 = RSString.parse("green:"); + } +} diff --git a/Client/src/main/java/org/runite/client/JavaAudioChannel.java b/Client/src/main/java/org/runite/client/JavaAudioChannel.java new file mode 100644 index 000000000..bebdc0564 --- /dev/null +++ b/Client/src/main/java/org/runite/client/JavaAudioChannel.java @@ -0,0 +1,96 @@ +package org.runite.client; +import java.awt.Component; +import javax.sound.sampled.AudioFormat; +import javax.sound.sampled.AudioSystem; +import javax.sound.sampled.LineUnavailableException; +import javax.sound.sampled.SourceDataLine; +import javax.sound.sampled.Mixer.Info; + +final class JavaAudioChannel extends AudioChannel { + + private int anInt2971; + private SourceDataLine aSourceDataLine2972; + private boolean aBoolean2973 = false; + private AudioFormat anAudioFormat2974; + private byte[] aByteArray2975; + + + final void close() { + if(null != this.aSourceDataLine2972) { + this.aSourceDataLine2972.close(); + this.aSourceDataLine2972 = null; + } + + } + + final void init(Component var1) { + Info[] var2 = AudioSystem.getMixerInfo(); + if(null != var2) { + + for (Info var5 : var2) { + if (null != var5) { + String var6 = var5.getName(); + if (null != var6 && var6.toLowerCase().contains("soundmax")) { + this.aBoolean2973 = true; + } + } + } + } + + this.anAudioFormat2974 = new AudioFormat((float)Class21.sampleRate, 16, !AudioChannel.stereo ? 1 : 2, true, false); + this.aByteArray2975 = new byte[256 << (AudioChannel.stereo ? 2 : 1 )]; + } + + final void open(int var1) throws LineUnavailableException { + try { + javax.sound.sampled.DataLine.Info var2 = new javax.sound.sampled.DataLine.Info(SourceDataLine.class, this.anAudioFormat2974, var1 << (!AudioChannel.stereo ? 1 : 2 )); + this.aSourceDataLine2972 = (SourceDataLine)AudioSystem.getLine(var2); + this.aSourceDataLine2972.open(); + this.aSourceDataLine2972.start(); + this.anInt2971 = var1; + } catch (LineUnavailableException var3) { + if(Class146.method2080(var1) == 1) { + this.aSourceDataLine2972 = null; + throw var3; + } else { + this.open(Class95.method1585((byte)76, var1)); + } + } + } + + final void flush() throws LineUnavailableException { + this.aSourceDataLine2972.flush(); + if(this.aBoolean2973) { + this.aSourceDataLine2972.close(); + this.aSourceDataLine2972 = null; + javax.sound.sampled.DataLine.Info var1 = new javax.sound.sampled.DataLine.Info(SourceDataLine.class, this.anAudioFormat2974, this.anInt2971 << (!AudioChannel.stereo ?1:2)); + this.aSourceDataLine2972 = (SourceDataLine)AudioSystem.getLine(var1); + this.aSourceDataLine2972.open(); + this.aSourceDataLine2972.start(); + } + + } + + final int method2157() { + return this.anInt2971 - (this.aSourceDataLine2972.available() >> (!AudioChannel.stereo ?1:2)); + } + + final void write() { + int var1 = 256; + if(AudioChannel.stereo) { + var1 <<= 1; + } + + for(int var2 = 0; var2 < var1; ++var2) { + int var3 = this.samples[var2]; + if((var3 + 8388608 & -16777216) != 0) { + var3 = 8388607 ^ var3 >> 31; + } + + this.aByteArray2975[var2 * 2] = (byte)(var3 >> 8); + this.aByteArray2975[var2 * 2 + 1] = (byte)(var3 >> 16); + } + + this.aSourceDataLine2972.write(this.aByteArray2975, 0, var1 << 1); + } +} diff --git a/Client/src/main/java/org/runite/client/Js5ResourceRequest.java b/Client/src/main/java/org/runite/client/Js5ResourceRequest.java new file mode 100644 index 000000000..adef092ba --- /dev/null +++ b/Client/src/main/java/org/runite/client/Js5ResourceRequest.java @@ -0,0 +1,21 @@ +package org.runite.client; + +public final class Js5ResourceRequest extends ResourceRequest { + + protected byte padding; + protected int anInt4067; + protected DataBuffer data; + + public final int getCompletion() { + return (this.data == null ? 0 : this.data.index * 100 / (-this.padding + this.data.buffer.length)); + } + + public final byte[] getData() { + if (!this.waiting && this.data.buffer.length - this.padding <= this.data.index) { + return this.data.buffer; + } else { + throw new RuntimeException(); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/Js5Worker.java b/Client/src/main/java/org/runite/client/Js5Worker.java new file mode 100644 index 000000000..3cfa7ced2 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Js5Worker.java @@ -0,0 +1,384 @@ +package org.runite.client; + +import org.rs09.client.data.Queue; +import org.rs09.client.net.Connection; + +import java.io.IOException; + +final class Js5Worker { + + private final Queue priorityRequests = new Queue<>(); + private final Queue pendingPriorityRequests = new Queue<>(); + private final Queue normalRequests = new Queue<>(); + private final Queue pendingNormalRequests = new Queue<>(); + private final DataBuffer outgoing = new DataBuffer(4); + private final DataBuffer incoming = new DataBuffer(8); + public volatile int status = 0; + public volatile int errors = 0; + private long lastAttempt; + private Connection connection; + private int latency; + private byte aByte1009 = 0; + private Js5ResourceRequest current; + + public final boolean normalRequestsFull() { + return 20 <= this.countNormalRequests(); + } + + public final boolean process() { + int available; + + if (this.connection != null) { + long time = TimeUtils.time(); + int delta = (int) (time - this.lastAttempt); + this.lastAttempt = time; + if (delta > 200) { + delta = 200; + } + + this.latency += delta; + if (this.latency > 30000) { + try { + this.connection.close(); + } catch (Exception var18) { + } + + this.connection = null; + } + } + + if (this.connection == null) { + return this.countPriorityRequests() == 0 && this.countNormalRequests() == 0; + } + + try { + this.connection.checkErrors(); + + // Send any requests + Js5ResourceRequest request; + for (request = this.priorityRequests.getFront(); request != null; request = this.priorityRequests.next()) { + this.outgoing.index = 0; + this.outgoing.writeByte(1); //High priority JS5 request + this.outgoing.writeMedium((int) request.nodeKey); + + this.connection.sendBytes(this.outgoing.buffer, 4); + this.pendingPriorityRequests.offer(request); + } + + for (request = this.normalRequests.getFront(); request != null; request = this.normalRequests.next()) { + this.outgoing.index = 0; + this.outgoing.writeByte(0); //Low priority JS5 request + this.outgoing.writeMedium((int) request.nodeKey); + this.connection.sendBytes(this.outgoing.buffer, 4); + this.pendingNormalRequests.offer(request); + } + + // Handle incoming requests (max. 100 per iter) + for (int i = 0; 100 > i; ++i) { + available = this.connection.availableBytes(); + if (available < 0) { + throw new IOException(); + } + + if (available == 0) { + break; + } + + this.latency = 0; + byte headerSize = 0; + if (this.current == null) { + headerSize = 8; + } else if (this.current.anInt4067 == 0) { + headerSize = 1; + } + + int var6; + int readBytes; + int var8; + if (headerSize <= 0) { + var6 = this.current.data.buffer.length - this.current.padding; + readBytes = 512 - this.current.anInt4067; + if (readBytes > var6 - this.current.data.index) { + readBytes = var6 - this.current.data.index; + } + + if (available < readBytes) { + readBytes = available; + } + + this.connection.readBytes(this.current.data.buffer, this.current.data.index, readBytes); + if (this.aByte1009 != 0) { + for (var8 = 0; var8 < readBytes; ++var8) { + this.current.data.buffer[this.current.data.index - -var8] = (byte) Unsorted.bitwiseXOR(this.current.data.buffer[this.current.data.index + var8], this.aByte1009); + } + } + + this.current.anInt4067 += readBytes; + this.current.data.index += readBytes; + if (this.current.data.index == var6) { + this.current.unlinkNode(); + this.current.waiting = false; + this.current = null; + } else if (this.current.anInt4067 == 512) { + this.current.anInt4067 = 0; + } + } else { + var6 = headerSize - this.incoming.index; + if (available < var6) { + var6 = available; + } + + this.connection.readBytes(this.incoming.buffer, this.incoming.index, var6); + if (0 != this.aByte1009) { + for (readBytes = 0; readBytes < var6; ++readBytes) { + this.incoming.buffer[readBytes + this.incoming.index] = (byte) Unsorted.bitwiseXOR(this.incoming.buffer[readBytes + this.incoming.index], this.aByte1009); + } + } + + this.incoming.index += var6; + if (headerSize <= this.incoming.index) { + if (this.current == null) { + this.incoming.index = 0; + readBytes = this.incoming.readUnsignedByte(); + var8 = this.incoming.readUnsignedShort(); + int var9 = this.incoming.readUnsignedByte(); + int var10 = this.incoming.readInt(); + int var11 = 127 & var9; + boolean var12 = (var9 & 128) != 0; + Js5ResourceRequest var15; + long var13 = (readBytes << 16) - -var8; + if (var12) { + for (var15 = this.pendingNormalRequests.getFront(); null != var15 && var13 != var15.nodeKey; var15 = this.pendingNormalRequests.next()) { + } + } else { + for (var15 = this.pendingPriorityRequests.getFront(); var15 != null && var15.nodeKey != var13; var15 = this.pendingPriorityRequests.next()) { + } + } + + if (null == var15) { + throw new IOException("Could not find cache file " + readBytes + ", " + var8 + "!"); + } + + int var16 = var11 != 0 ? 9 : 5; + this.current = var15; + this.current.data = new DataBuffer(var10 - (-var16 - this.current.padding)); + this.current.data.writeByte(var11); + this.current.data.writeInt(var10); + this.current.anInt4067 = 8; + this.incoming.index = 0; + } else { + if (this.current.anInt4067 != 0) { + throw new IOException(); + } + + if (this.incoming.buffer[0] == -1) { + this.current.anInt4067 = 1; + this.incoming.index = 0; + } else { + this.current = null; + } + } + } + } + } + + return true; + } catch (IOException e) { + e.printStackTrace(); + try { + this.connection.close(); + } catch (Exception var17) { + } + + this.status = -2; + this.errors++; + this.connection = null; + return this.countPriorityRequests() == 0 && this.countNormalRequests() == 0; + } + } + + public final void requestTermination() { + if (this.connection == null) { + return; + } + + try { + this.outgoing.index = 0; + + this.outgoing.writeByte(7); + this.outgoing.writeMedium(0); + this.connection.sendBytes(this.outgoing.buffer, 4); + } catch (IOException e) { + e.printStackTrace(); + try { + this.connection.close(); + } catch (Exception var4) { + var4.printStackTrace(); + } + + this.errors++; + this.status = -2; + this.connection = null; + } + } + + private int countNormalRequests() { + return this.normalRequests.size() - -this.pendingNormalRequests.size(); + } + + public final void sendLoginState(boolean loggedIn) { + if (this.connection == null) { + return; + } + + try { + this.outgoing.index = 0; + this.outgoing.writeByte(loggedIn ? 2 : 3); + this.outgoing.writeMedium(0); + this.connection.sendBytes(this.outgoing.buffer, 4); + } catch (IOException e) { + e.printStackTrace(); + try { + this.connection.close(); + } catch (Exception var5) { + } + + this.errors++; + this.status = -2; + this.connection = null; + } + } + + public final void applyDummyStreams() { + if (this.connection != null) { + this.connection.applyDummyStreams(); + } + } + + public final void connect(boolean var1, Connection connection) { + if (null != this.connection) { + try { + this.connection.close(); + } catch (Exception var8) { + } + + this.connection = null; + } + + this.connection = connection; + this.sendMagic(); + this.sendLoginState(var1); + this.incoming.index = 0; + this.current = null; + + while (true) { + Js5ResourceRequest var4 = this.pendingPriorityRequests.poll(); + if (null == var4) { + while (true) { + var4 = this.pendingNormalRequests.poll(); + if (var4 == null) { + if (this.aByte1009 != 0) { + try { + this.outgoing.index = 0; + this.outgoing.writeByte(4); + this.outgoing.writeByte(this.aByte1009); + this.outgoing.writeShort(0); + this.connection.sendBytes(this.outgoing.buffer, 4); + } catch (IOException var7) { + var7.printStackTrace(); + try { + this.connection.close(); + } catch (Exception var6) { + } + + this.status = -2; + ++this.errors; + this.connection = null; + } + } + + this.latency = 0; + this.lastAttempt = TimeUtils.time(); + return; + } + + this.normalRequests.offer(var4); + } + } + + this.priorityRequests.offer(var4); + } + } + + public final boolean priorityRequestsFull() { + return 20 <= this.countPriorityRequests(); + } + + public final void closeWithError() { + try { + this.connection.close(); + } catch (Exception var4) { + } + + this.status = -1; + this.aByte1009 = (byte) ((int) (255.0D * Math.random() + 1.0D)); + this.connection = null; + this.errors++; + } + + public final int countPriorityRequests() { + return this.priorityRequests.size() - -this.pendingPriorityRequests.size(); + } + + public final void close() { + if (this.connection != null) { + this.connection.close(); + } + } + + public final Js5ResourceRequest request(int index, int archive, byte padding, boolean priority) { + Js5ResourceRequest request = new Js5ResourceRequest(); + long key = archive + (index << 16); + request.priority = priority; + request.nodeKey = key; + request.padding = padding; + + if (priority) { + if (this.countPriorityRequests() >= 20) { + throw new RuntimeException("Priority Js5 request queue full"); + } + + this.priorityRequests.offer(request); + } else { + if (this.countNormalRequests() >= 20) { + throw new RuntimeException("Normal Js5 request queue full"); + } + + this.normalRequests.offer(request); + } + + return request; + } + + private void sendMagic() { + if (connection == null) return; + + try { + this.outgoing.index = 0; + this.outgoing.writeByte(6); + this.outgoing.writeMedium(3); + this.connection.sendBytes(this.outgoing.buffer, 4); + } catch (IOException e) { + e.printStackTrace(); + try { + this.connection.close(); + } catch (Exception var4) { + } + + this.errors++; + this.connection = null; + this.status = -2; + } + } + +} diff --git a/Client/src/main/java/org/runite/client/KeyboardListener.java b/Client/src/main/java/org/runite/client/KeyboardListener.java new file mode 100644 index 000000000..d87807eca --- /dev/null +++ b/Client/src/main/java/org/runite/client/KeyboardListener.java @@ -0,0 +1,255 @@ +package org.runite.client; +import org.rs09.client.config.GameConfig; +import org.rs09.client.console.DeveloperConsole; +import org.rs09.client.data.ReferenceCache; + +import java.awt.event.FocusEvent; +import java.awt.event.FocusListener; +import java.awt.event.KeyEvent; +import java.awt.event.KeyListener; + +final class KeyboardListener implements KeyListener, FocusListener { + + static int[] KEY_CODE_MAP = new int[]{-1, -1, -1, -1, -1, -1, -1, -1, 85, 80, 84, -1, 91, -1, -1, -1, 81, 82, 86, -1, -1, -1, -1, -1, -1, -1, -1, 13, -1, -1, -1, -1, 83, 104, 105, 103, 102, 96, 98, 97, 99, -1, -1, -1, -1, -1, -1, -1, 25, 16, 17, 18, 19, 20, 21, 22, 23, 24, -1, -1, -1, -1, -1, -1, -1, 48, 68, 66, 50, 34, 51, 52, 53, 39, 54, 55, 56, 70, 69, 40, 41, 32, 35, 49, 36, 38, 67, 33, 65, 37, 64, -1, -1, -1, -1, -1, 228, 231, 227, 233, 224, 219, 225, 230, 226, 232, 89, 87, -1, 88, 229, 90, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, -1, -1, -1, 101, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 100, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}; + static boolean aBoolean1905 = true; + static int anInt1908 = 0; + static ReferenceCache aReferenceCache_1911 = new ReferenceCache(260); + static int loginThemeSongArchiveID; + static int anInt1914; + static CacheIndex spritesIndex_1916; + static int anInt1918 = 0; + static int anInt2384 = 0; + static int[] anIntArray1978 = new int[128]; + + static void adjustKeyCodeMap() { + if(!Signlink.javaVendor.toLowerCase().contains("microsoft")) { + if(null == Signlink.setTraversalKeysEnabled) { + KEY_CODE_MAP[192] = 58; + KEY_CODE_MAP[222] = 59; + } else { + KEY_CODE_MAP[222] = 58; + KEY_CODE_MAP[192] = 28; + KEY_CODE_MAP[520] = 59; + } + + KEY_CODE_MAP[45] = 26; + KEY_CODE_MAP[61] = 27; + KEY_CODE_MAP[91] = 42; + KEY_CODE_MAP[59] = 57; + KEY_CODE_MAP[93] = 43; + KEY_CODE_MAP[44] = 71; + KEY_CODE_MAP[92] = 74; + KEY_CODE_MAP[46] = 72; + KEY_CODE_MAP[47] = 73; + } else { + KEY_CODE_MAP[187] = 27; + KEY_CODE_MAP[223] = 28; + KEY_CODE_MAP[221] = 43; + KEY_CODE_MAP[188] = 71; + KEY_CODE_MAP[222] = 59; + KEY_CODE_MAP[192] = 58; + KEY_CODE_MAP[191] = 73; + KEY_CODE_MAP[219] = 42; + KEY_CODE_MAP[190] = 72; + KEY_CODE_MAP[186] = 57; + KEY_CODE_MAP[220] = 74; + KEY_CODE_MAP[189] = 26; + } + } + + + public final synchronized void keyPressed(KeyEvent var1) { + try { +// System.out.println("Key code: " + var1.getKeyCode()); + switch (var1.getKeyCode()) + { + case 16: + MouseWheel.shiftDown = true; + break; + case 17: + MouseWheel.ctrlDown = true; + break; + case 192: + DeveloperConsole.INSTANCE.toggle(); + return; + } + if (DeveloperConsole.INSTANCE.getOpen()) { + DeveloperConsole.INSTANCE.handleKeyDown(var1); + return; + } + + if(null != TextureOperation33.aClass148_3049) { + TextureOperation29.anInt3398 = 0; + int var2 = var1.getKeyCode(); +// switch(var2) { +// case 112://f1 +// var2 = 115; +// break; +// case 113://f2 +// var2 = 116; +// break; +// case 114://f3 +// var2 = 117; +// break; +// case 115://f4 +// var2 = 118; +// break; +// case 116://f5 +// var2 = 112; +// break; +// } + if(0 <= var2 && KEY_CODE_MAP.length > var2) { + var2 = KEY_CODE_MAP[var2]; + // System.out.println(var2); + if(0 != (var2 & 128)) { + var2 = -1; + } + } else { + var2 = -1; + } + + + + /** + * Tab to reply + */ + if (var1.getKeyCode() == KeyEvent.VK_TAB) { + ClientCommands.ClientCommands(RSString.parse("::reply")); + } + + if (var1.getKeyCode() == KeyEvent.VK_ESCAPE) + { + ClientCommands.ClientCommands(RSString.parse("::shutdowninterface")); + } + + //causing issues when in other interfaces, such as GE interface. My quick thing impl didn't work - Jamix77 + + /**if (var1.getKeyCode() == KeyEvent.VK_SPACE) + { + Class2.method78(40, false, 0); + }**/ + + + /** + * Controls arrow key mouse movement + */ + if(anInt2384 >= 0 && var2 >= 0) { + Unsorted.anIntArray2952[anInt2384] = var2; + anInt2384 = 127 & anInt2384 - -1; + if(anInt2384 == Class32.anInt1744) { + anInt2384 = -1; + } + } + + int var3; + if(var2 >= 0) { + var3 = 127 & 1 + Class25.anInt491; + if(var3 != Class3_Sub28_Sub9.anInt3620) { + Class129.anIntArray1693[Class25.anInt491] = var2; + anIntArray1978[Class25.anInt491] = -1; + Class25.anInt491 = var3; + } + } + + var3 = var1.getModifiers(); + if((var3 & 10) != 0 || 85 == var2 || var2 == 10) { + var1.consume(); + } + } + + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "uf.keyPressed(" + (var1 != null?"{...}":"null") + ')'); + } + } + + public final void keyTyped(KeyEvent var1) { + if (DeveloperConsole.INSTANCE.getOpen()) { + DeveloperConsole.INSTANCE.handleKeyPressed(var1); + return; + } + if(var1.isAltDown()){ + if(var1.getKeyChar()=='n'){ + GameConfig.NPC_DEBUG_ENABLED = !GameConfig.NPC_DEBUG_ENABLED; + BufferedDataStream.addChatMessage(RSString.parse("Client debug notifier"), 0, RSString.parse("NPC debug context " + (GameConfig.NPC_DEBUG_ENABLED ? "enabled." : "disabled.")), -1); + return; + } + if(var1.getKeyChar()=='o'){ + GameConfig.OBJECT_DEBUG_ENABLED = !GameConfig.OBJECT_DEBUG_ENABLED; + BufferedDataStream.addChatMessage(RSString.parse("Client debug notifier"), 0, RSString.parse("Object debug context " + (GameConfig.OBJECT_DEBUG_ENABLED ? "enabled." : "disabled.")), -1); + return; + } + if(var1.getKeyChar()=='i'){ + GameConfig.ITEM_DEBUG_ENABLED = !GameConfig.ITEM_DEBUG_ENABLED; + BufferedDataStream.addChatMessage(RSString.parse("Client debug notifier"), 0, RSString.parse("Item debug context " + (GameConfig.ITEM_DEBUG_ENABLED ? "enabled." : "disabled.")), -1); + return; + } + return; + } + try { + + if(TextureOperation33.aClass148_3049 != null) { + int var2 = CSConfigCachefile.method1386(var1); + if(var2 >= 0) { + int var3 = 1 + Class25.anInt491 & 127; + if(var3 != Class3_Sub28_Sub9.anInt3620) { + Class129.anIntArray1693[Class25.anInt491] = -1; + anIntArray1978[Class25.anInt491] = var2; + Class25.anInt491 = var3; + } + } + } + + var1.consume(); + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "uf.keyTyped(" + (var1 != null?"{...}":"null") + ')'); + } + } + + public final synchronized void focusLost(FocusEvent var1) { + if(TextureOperation33.aClass148_3049 != null) { + anInt2384 = -1; + } + } + + public final synchronized void keyReleased(KeyEvent var1) { + if (DeveloperConsole.INSTANCE.getOpen()) { + return; + } + + switch (var1.getKeyCode()) + { + case 16: + MouseWheel.shiftDown = false; + break; + case 17: + MouseWheel.ctrlDown = false; + break; + } + try { + if(null != TextureOperation33.aClass148_3049) { + TextureOperation29.anInt3398 = 0; + int var2 = var1.getKeyCode(); + if(var2 >= 0 && var2 < KEY_CODE_MAP.length) { + var2 = KEY_CODE_MAP[var2] & -129; + } else { + var2 = -1; + } + + if(anInt2384 >= 0 && var2 >= 0) { + Unsorted.anIntArray2952[anInt2384] = ~var2; + anInt2384 = 127 & 1 + anInt2384; + if(anInt2384 == Class32.anInt1744) { + anInt2384 = -1; + } + } + } + + var1.consume(); + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "uf.keyReleased(" + "{...}" + ')'); + } + } + + public final void focusGained(FocusEvent var1) {} + +} diff --git a/Client/src/main/java/org/runite/client/LDIndexedSprite.java b/Client/src/main/java/org/runite/client/LDIndexedSprite.java new file mode 100644 index 000000000..f3de555e0 --- /dev/null +++ b/Client/src/main/java/org/runite/client/LDIndexedSprite.java @@ -0,0 +1,459 @@ +package org.runite.client; + +import org.rs09.client.rendering.Toolkit; + +public final class LDIndexedSprite extends AbstractIndexedSprite { + + private final int[] anIntArray2673; + byte[] raster; + + + final void method1668(int var1, int var2, int var3) { + for(int var4 = 0; var4 < this.anIntArray2673.length; ++var4) { + int var5 = this.anIntArray2673[var4] >> 16 & 0xFF; + var5 += var1; + if(var5 < 0) { + var5 = 0; + } else if(var5 > 255) { + var5 = 255; + } + + int var6 = this.anIntArray2673[var4] >> 8 & 0xFF; + var6 += var2; + if(var6 < 0) { + var6 = 0; + } else if(var6 > 255) { + var6 = 255; + } + + int var7 = this.anIntArray2673[var4] & 0xFF; + var7 += var3; + if(var7 < 0) { + var7 = 0; + } else if(var7 > 255) { + var7 = 255; + } + + this.anIntArray2673[var4] = (var5 << 16) + (var6 << 8) + var7; + } + + } + + final void method1669(int var1, int var2, int var3, int var4, int var5) { + int var6 = this.width; + int var7 = this.height; + int var8 = 0; + int var9 = 0; + int var10 = this.anInt1469; + int var11 = this.anInt1467; + int var12 = (var10 << 16) / var3; + int var13 = (var11 << 16) / var4; + int var14; + if(this.anInt1470 > 0) { + var14 = ((this.anInt1470 << 16) + var12 - 1) / var12; + var1 += var14; + var8 += var14 * var12 - (this.anInt1470 << 16); + } + + if(this.anInt1464 > 0) { + var14 = ((this.anInt1464 << 16) + var13 - 1) / var13; + var2 += var14; + var9 += var14 * var13 - (this.anInt1464 << 16); + } + + if(var6 < var10) { + var3 = ((var6 << 16) - var8 + var12 - 1) / var12; + } + + if(var7 < var11) { + var4 = ((var7 << 16) - var9 + var13 - 1) / var13; + } + + var14 = var1 + var2 * Toolkit.JAVA_TOOLKIT.width; + int var15 = Toolkit.JAVA_TOOLKIT.width - var3; + if(var2 + var4 > Toolkit.JAVA_TOOLKIT.clipBottom) { + var4 -= var2 + var4 - Toolkit.JAVA_TOOLKIT.clipBottom; + } + + int var16; + if(var2 < Toolkit.JAVA_TOOLKIT.clipTop) { + var16 = Toolkit.JAVA_TOOLKIT.clipTop - var2; + var4 -= var16; + var14 += var16 * Toolkit.JAVA_TOOLKIT.width; + var9 += var13 * var16; + } + + if(var1 + var3 > Toolkit.JAVA_TOOLKIT.clipRight) { + var16 = var1 + var3 - Toolkit.JAVA_TOOLKIT.clipRight; + var3 -= var16; + var15 += var16; + } + + if(var1 < Toolkit.JAVA_TOOLKIT.clipLeft) { + var16 = Toolkit.JAVA_TOOLKIT.clipLeft - var1; + var3 -= var16; + var14 += var16; + var8 += var12 * var16; + var15 += var16; + } + + method1673(Toolkit.JAVA_TOOLKIT.getBuffer(), this.raster, this.anIntArray2673, var8, var9, var14, var15, var3, var4, var12, var13, var6, var5); + } + + private static void method1670(int[] var0, byte[] var1, int[] var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9, int var10, int var11) { + int var12 = var3; + + for(int var13 = -var8; var13 < 0; ++var13) { + int var14 = (var4 >> 16) * var11; + + for(int var15 = -var7; var15 < 0; ++var15) { + byte var16 = var1[(var3 >> 16) + var14]; + if(var16 == 0) { + ++var5; + } else { + var0[var5++] = var2[var16 & 0xFF]; + } + + var3 += var9; + } + + var4 += var10; + var3 = var12; + var5 += var6; + } + + } + + final void method1671() { + int var1 = 0; + + int var2; + for(var2 = this.raster.length - 7; var1 < var2; this.raster[var1++] = 0) { + this.raster[var1++] = 0; + this.raster[var1++] = 0; + this.raster[var1++] = 0; + this.raster[var1++] = 0; + this.raster[var1++] = 0; + this.raster[var1++] = 0; + this.raster[var1++] = 0; + } + + for(var2 += 7; var1 < var2; this.raster[var1++] = 0) { + } + + } + + private static void method1672(int[] var0, byte[] var1, int[] var2, int var4, int var5, int var6, int var7, int var8, int var9) { + int var10 = -(var6 >> 2); + var6 = -(var6 & 3); + + for(int var11 = -var7; var11 < 0; ++var11) { + int var12; + byte var13; + for(var12 = var10; var12 < 0; ++var12) { + var13 = var1[var4++]; + if(var13 == 0) { + ++var5; + } else { + var0[var5++] = var2[var13 & 0xFF]; + } + + var13 = var1[var4++]; + if(var13 == 0) { + ++var5; + } else { + var0[var5++] = var2[var13 & 0xFF]; + } + + var13 = var1[var4++]; + if(var13 == 0) { + ++var5; + } else { + var0[var5++] = var2[var13 & 0xFF]; + } + + var13 = var1[var4++]; + if(var13 == 0) { + ++var5; + } else { + var0[var5++] = var2[var13 & 0xFF]; + } + } + + for(var12 = var6; var12 < 0; ++var12) { + var13 = var1[var4++]; + if(var13 == 0) { + ++var5; + } else { + var0[var5++] = var2[var13 & 0xFF]; + } + } + + var5 += var8; + var4 += var9; + } + + } + + private static void method1673(int[] var0, byte[] var1, int[] var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9, int var10, int var11, int var12) { + int var13 = var3; + int var14 = var12 >> 16 & 0xFF; + int var15 = var12 >> 8 & 0xFF; + int var16 = var12 & 0xFF; + + for(int var17 = -var8; var17 < 0; ++var17) { + int var18 = (var4 >> 16) * var11; + + for(int var19 = -var7; var19 < 0; ++var19) { + byte var20 = var1[(var3 >> 16) + var18]; + if(var20 == 0) { + ++var5; + } else { + int var24 = var2[var20 & 0xFF]; + int var21 = var24 >> 16 & 0xFF; + int var22 = var24 >> 8 & 0xFF; + int var23 = var24 & 0xFF; + var0[var5++] = (var21 * var14 >> 8 << 16) + (var22 * var15 >> 8 << 8) + (var23 * var16 >> 8); + } + + var3 += var9; + } + + var4 += var10; + var3 = var13; + var5 += var6; + } + + } + + public final void rotateClockwise() { + byte[] rotated = new byte[this.width * this.height]; + int index = 0; + + for(int x = 0; x < this.width; ++x) { + for(int y = this.height - 1; y >= 0; --y) { + rotated[index++] = this.raster[x + y * this.width]; + } + } + + int var3; + this.raster = rotated; + var3 = this.anInt1464; + this.anInt1464 = this.anInt1470; + this.anInt1470 = this.anInt1467 - this.height - var3; + var3 = this.height; + this.height = this.width; + this.width = var3; + var3 = this.anInt1467; + this.anInt1467 = this.anInt1469; + this.anInt1469 = var3; + } + + final void method1666(int var1, int var2, int var3) { + var1 += this.anInt1470; + var2 += this.anInt1464; + int var4 = var1 + var2 * Toolkit.JAVA_TOOLKIT.width; + int var5 = 0; + int var6 = this.height; + int var7 = this.width; + int var8 = Toolkit.JAVA_TOOLKIT.width - var7; + int var9 = 0; + int var10; + if(var2 < Toolkit.JAVA_TOOLKIT.clipTop) { + var10 = Toolkit.JAVA_TOOLKIT.clipTop - var2; + var6 -= var10; + var2 = Toolkit.JAVA_TOOLKIT.clipTop; + var5 += var10 * var7; + var4 += var10 * Toolkit.JAVA_TOOLKIT.width; + } + + if(var2 + var6 > Toolkit.JAVA_TOOLKIT.clipBottom) { + var6 -= var2 + var6 - Toolkit.JAVA_TOOLKIT.clipBottom; + } + + if(var1 < Toolkit.JAVA_TOOLKIT.clipLeft) { + var10 = Toolkit.JAVA_TOOLKIT.clipLeft - var1; + var7 -= var10; + var1 = Toolkit.JAVA_TOOLKIT.clipLeft; + var5 += var10; + var4 += var10; + var9 += var10; + var8 += var10; + } + + if(var1 + var7 > Toolkit.JAVA_TOOLKIT.clipRight) { + var10 = var1 + var7 - Toolkit.JAVA_TOOLKIT.clipRight; + var7 -= var10; + var9 += var10; + var8 += var10; + } + + if(var7 > 0 && var6 > 0) { + method1676(Toolkit.JAVA_TOOLKIT.getBuffer(), this.raster, this.anIntArray2673, var5, var4, var7, var6, var8, var9, var3); + } + } + + final void method1675() { + if(this.width != this.anInt1469 || this.height != this.anInt1467) { + byte[] var1 = new byte[this.anInt1469 * this.anInt1467]; + int var2 = 0; + + for(int var3 = 0; var3 < this.height; ++var3) { + for(int var4 = 0; var4 < this.width; ++var4) { + var1[var4 + this.anInt1470 + (var3 + this.anInt1464) * this.anInt1469] = this.raster[var2++]; + } + } + + this.raster = var1; + this.width = this.anInt1469; + this.height = this.anInt1467; + this.anInt1470 = 0; + this.anInt1464 = 0; + } + } + + private static void method1676(int[] var0, byte[] var1, int[] var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9) { + int var10 = 256 - var9; + + for(int var11 = -var6; var11 < 0; ++var11) { + for(int var12 = -var5; var12 < 0; ++var12) { + byte var13 = var1[var3++]; + if(var13 == 0) { + ++var4; + } else { + int var15 = var2[var13 & 0xFF]; + int var14 = var0[var4]; + var0[var4++] = ((var15 & 16711935) * var9 + (var14 & 16711935) * var10 & -16711936) + ((var15 & 65280) * var9 + (var14 & 65280) * var10 & 16711680) >> 8; + } + } + + var4 += var7; + var3 += var8; + } + + } + + final void method1677(int var1, int var2, int var3, int var4) { + int var5 = this.width; + int var6 = this.height; + int var7 = 0; + int var8 = 0; + int var9 = this.anInt1469; + int var10 = this.anInt1467; + int var11 = (var9 << 16) / var3; + int var12 = (var10 << 16) / var4; + int var13; + if(this.anInt1470 > 0) { + var13 = ((this.anInt1470 << 16) + var11 - 1) / var11; + var1 += var13; + var7 += var13 * var11 - (this.anInt1470 << 16); + } + + if(this.anInt1464 > 0) { + var13 = ((this.anInt1464 << 16) + var12 - 1) / var12; + var2 += var13; + var8 += var13 * var12 - (this.anInt1464 << 16); + } + + if(var5 < var9) { + var3 = ((var5 << 16) - var7 + var11 - 1) / var11; + } + + if(var6 < var10) { + var4 = ((var6 << 16) - var8 + var12 - 1) / var12; + } + + var13 = var1 + var2 * Toolkit.JAVA_TOOLKIT.width; + int var14 = Toolkit.JAVA_TOOLKIT.width - var3; + if(var2 + var4 > Toolkit.JAVA_TOOLKIT.clipBottom) { + var4 -= var2 + var4 - Toolkit.JAVA_TOOLKIT.clipBottom; + } + + int var15; + if(var2 < Toolkit.JAVA_TOOLKIT.clipTop) { + var15 = Toolkit.JAVA_TOOLKIT.clipTop - var2; + var4 -= var15; + var13 += var15 * Toolkit.JAVA_TOOLKIT.width; + var8 += var12 * var15; + } + + if(var1 + var3 > Toolkit.JAVA_TOOLKIT.clipRight) { + var15 = var1 + var3 - Toolkit.JAVA_TOOLKIT.clipRight; + var3 -= var15; + var14 += var15; + } + + if(var1 < Toolkit.JAVA_TOOLKIT.clipLeft) { + var15 = Toolkit.JAVA_TOOLKIT.clipLeft - var1; + var3 -= var15; + var13 += var15; + var7 += var11 * var15; + var14 += var15; + } + + method1670(Toolkit.JAVA_TOOLKIT.getBuffer(), this.raster, this.anIntArray2673, var7, var8, var13, var14, var3, var4, var11, var12, var5); + } + + public final void method1667(int var1, int var2) { + var1 += this.anInt1470; + var2 += this.anInt1464; + int var3 = var1 + var2 * Toolkit.JAVA_TOOLKIT.width; + int var4 = 0; + int var5 = this.height; + int var6 = this.width; + int var7 = Toolkit.JAVA_TOOLKIT.width - var6; + int var8 = 0; + int var9; + if(var2 < Toolkit.JAVA_TOOLKIT.clipTop) { + var9 = Toolkit.JAVA_TOOLKIT.clipTop - var2; + var5 -= var9; + var2 = Toolkit.JAVA_TOOLKIT.clipTop; + var4 += var9 * var6; + var3 += var9 * Toolkit.JAVA_TOOLKIT.width; + } + + if(var2 + var5 > Toolkit.JAVA_TOOLKIT.clipBottom) { + var5 -= var2 + var5 - Toolkit.JAVA_TOOLKIT.clipBottom; + } + + if(var1 < Toolkit.JAVA_TOOLKIT.clipLeft) { + var9 = Toolkit.JAVA_TOOLKIT.clipLeft - var1; + var6 -= var9; + var1 = Toolkit.JAVA_TOOLKIT.clipLeft; + var4 += var9; + var3 += var9; + var8 += var9; + var7 += var9; + } + + if(var1 + var6 > Toolkit.JAVA_TOOLKIT.clipRight) { + var9 = var1 + var6 - Toolkit.JAVA_TOOLKIT.clipRight; + var6 -= var9; + var8 += var9; + var7 += var9; + } + + if(var6 > 0 && var5 > 0) { + method1672(Toolkit.JAVA_TOOLKIT.getBuffer(), this.raster, this.anIntArray2673, var4, var3, var6, var5, var7, var8); + } + } + + LDIndexedSprite(int var1, int var2, int var3, int var4, int var5, int var6, byte[] var7, int[] var8) { + this.anInt1469 = var1; + this.anInt1467 = var2; + this.anInt1470 = var3; + this.anInt1464 = var4; + this.width = var5; + this.height = var6; + this.raster = var7; + this.anIntArray2673 = var8; + } + + LDIndexedSprite(int var1, int var2) { + this.anInt1469 = this.width = var1; + this.anInt1467 = this.height = var2; + this.anInt1470 = this.anInt1464 = 0; + this.raster = new byte[var1 * var2]; + this.anIntArray2673 = new int[0]; + } +} diff --git a/Client/src/main/java/org/runite/client/LinkableRSString.java b/Client/src/main/java/org/runite/client/LinkableRSString.java new file mode 100644 index 000000000..b224054ec --- /dev/null +++ b/Client/src/main/java/org/runite/client/LinkableRSString.java @@ -0,0 +1,170 @@ +package org.runite.client; + +import org.rs09.client.Linkable; + +public final class LinkableRSString extends Linkable { + + static int anInt2579 = 1; + static RSString[] aStringArray2580 = new RSString[100]; + static CacheIndex modelsIndex_2581; + public static int anInt2582 = 0; + static boolean isDynamicSceneGraph = false; + public RSString value; + static int anInt2587; + static GameShell anApplet_Sub1_2588 = null; + static int anInt2589 = 0; + + + static void method727() { + try { + KeyboardListener.aReferenceCache_1911.clear(); + Unsorted.aReferenceCache_1131.clear(); + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "sj.O(" + 91 + ')'); + } + } + + static void method728() { + try { + + try { + if (Unsorted.anInt154 == 1) { + int var1 = Class101.aClass3_Sub24_Sub4_1421.method499(); + if (var1 > 0 && Class101.aClass3_Sub24_Sub4_1421.method473(-124)) { + var1 -= GraphicDefinition.anInt546; + if (var1 < 0) { + var1 = 0; + } + + Class101.aClass3_Sub24_Sub4_1421.method506(var1); + return; + } + + Class101.aClass3_Sub24_Sub4_1421.method505((byte) -128); + Class101.aClass3_Sub24_Sub4_1421.method485(); + NPC.aClass3_Sub27_1154 = null; + QuickChatDefinition.aClass83_3579 = null; + if (Class101.musicIndex_1423 == null) { + Unsorted.anInt154 = 0; + } else { + Unsorted.anInt154 = 2; + } + } + } catch (Exception var2) { + var2.printStackTrace(); + Class101.aClass3_Sub24_Sub4_1421.method505((byte) -127); + Class101.musicIndex_1423 = null; + NPC.aClass3_Sub27_1154 = null; + Unsorted.anInt154 = 0; + QuickChatDefinition.aClass83_3579 = null; + } + + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "sj.A(" + false + ')'); + } + } + + static int method729(byte var0, int var1, int var2) { + try { + if (var0 > -32) { + return 88; + } else if (var1 == -2) { + return 12345678; + } else if (var1 == -1) { + if (2 > var2) { + var2 = 2; + } else if (var2 > 126) { + var2 = 126; + } + + return var2; + } else { + var2 = (127 & var1) * var2 >> 7; + if (var2 < 2) { + var2 = 2; + } else if (var2 > 126) { + var2 = 126; + } + + return (var1 & '\uff80') - -var2; + } + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "sj.E(" + var0 + ',' + var1 + ',' + var2 + ')'); + } + } + + static void method730(int var0, int var1, int var3, int var4, int var5) { + try { + if (Class101.anInt1425 <= var0 && var4 <= Class3_Sub28_Sub18.anInt3765 && Class159.anInt2020 <= var5 && Class57.anInt902 >= var3) { + WaterfallShader.method1632(95, var3, var4, var5, var0, var1); + } else { + Unsorted.method1525(var1, var4, var5, var0, var3); + } + + } catch (RuntimeException var7) { + throw ClientErrorException.clientError(var7, "sj.R(" + var0 + ',' + var1 + ',' + (byte) 121 + ',' + var3 + ',' + var4 + ',' + var5 + ')'); + } + } + + static void method731(CacheIndex var0) { + try { + TextureOperation20.configurationsIndex_3154 = var0; + Class95.anInt1344 = TextureOperation20.configurationsIndex_3154.getFileAmount(16); + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "sj.B(" + (var0 != null ? "{...}" : "null") + ',' + (byte) -113 + ')'); + } + } + + public LinkableRSString() { + } + + static void method734(RSString var1) { + try { + Class163_Sub2.paramSettings = var1; + if (null != Class38.gameSignlink.gameApplet) { + try { + RSString var2 = TextCore.aString_2044.getParamValue(Class38.gameSignlink.gameApplet); + RSString var3 = TextCore.aString_1885.getParamValue(Class38.gameSignlink.gameApplet); + RSString var4 = RSString.stringCombiner(new RSString[]{var2, TextCore.aString_1151, var1, TextCore.aString_2074, var3}); + if (0 == var1.length()) { + var4 = RSString.stringCombiner(new RSString[]{var4, TextCore.HasAgeExpire}); + } else { + var4 = RSString.stringCombiner(new RSString[]{var4, TextCore.HasExpires, AudioThread.method894(94608000000L + TimeUtils.time()), TextCore.HasMaxAge, QuickChatDefinition.method612(94608000L)}); + } + + RSString.stringCombiner(new RSString[]{TextCore.aString_1694, var4, TextCore.aString_1698}).method1554(Class38.gameSignlink.gameApplet); + } catch (Throwable var5) { + } + + } + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "sj.F(" + 0 + ',' + (var1 != null ? "{...}" : "null") + ')'); + } + } + + static void method736(int var0, int var1) { + try { + if (var1 <= 61) { + method736(-60, -93); + } + + if (Unsorted.anInt154 == 0) { + Class101.aClass3_Sub24_Sub4_1421.method506(var0); + } else { + TextureOperation36.anInt3423 = var0; + } + + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "sj.P(" + var0 + ',' + var1 + ')'); + } + } + + public LinkableRSString(RSString var1) { + try { + this.value = var1; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "sj.(" + (var1 != null ? "{...}" : "null") + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/LinkedList.java b/Client/src/main/java/org/runite/client/LinkedList.java new file mode 100644 index 000000000..38ce18361 --- /dev/null +++ b/Client/src/main/java/org/runite/client/LinkedList.java @@ -0,0 +1,273 @@ +package org.runite.client; + +import org.rs09.client.Linkable; +import org.rs09.client.data.ReferenceCache; + +public final class LinkedList { + + static ReferenceCache aReferenceCache_939 = new ReferenceCache(4); + Linkable head = new Linkable(); + private Linkable current; + + + public LinkedList() { + try { + this.head.previous = this.head; + this.head.next = this.head; + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "ih.()"); + } + } + + static Class70 method1209(int var0, int var1, int var2) { + TileData var3 = TileData.aTileDataArrayArrayArray2638[var0][var1][var2]; + if (var3 == null) { + return null; + } else { + Class70 var4 = var3.aClass70_2234; + var3.aClass70_2234 = null; + return var4; + } + } + + static Class3_Sub28_Sub9 method1210(int var1) { + try { + Class3_Sub28_Sub9 var2 = (Class3_Sub28_Sub9) Class163.aClass47_2041.get(var1); + + if (null == var2) { + byte[] var3 = TextureOperation27.configurationsIndex_3098.getFile(11, var1); + var2 = new Class3_Sub28_Sub9(); + if (var3 != null) { + var2.method583(new DataBuffer(var3)); + } + + Class163.aClass47_2041.put(var1, var2); + } + return var2; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "ih.G(" + 64 + ',' + var1 + ')'); + } + } + + static void method1213(int var0, Class3_Sub11[] var1) { + Class3_Sub23.aClass3_Sub11ArrayArray2542[var0] = var1; + } + + static void method1214(int var0, int var1, int var2, int var3) { + try { + Class3_Sub9 var5; + for (var5 = (Class3_Sub9) Unsorted.aLinkedList_78.startIteration(); var5 != null; var5 = (Class3_Sub9) Unsorted.aLinkedList_78.nextIteration()) { + Unsorted.method606(var1, var5, var3, var0, var2, 126); + } + + byte var6; + RenderAnimationDefinition var7; + int var8; + for (var5 = (Class3_Sub9) Unsorted.aLinkedList_1242.startIteration(); var5 != null; var5 = (Class3_Sub9) Unsorted.aLinkedList_1242.nextIteration()) { + var6 = 1; + var7 = var5.aEntity_Sub2_2324.getRenderAnimationType(); + if (var5.aEntity_Sub2_2324.anInt2764 == var7.stand_animation) { + var6 = 0; + } else if (var5.aEntity_Sub2_2324.anInt2764 != var7.run_anim && var5.aEntity_Sub2_2324.anInt2764 != var7.run_follow_full_turn_anim && var5.aEntity_Sub2_2324.anInt2764 != var7.run_follow_cw_turn_anim && var5.aEntity_Sub2_2324.anInt2764 != var7.run_follow_ccw_turn_anim) { + if (var7.slow_walk_anim == var5.aEntity_Sub2_2324.anInt2764 || var7.slow_walk_follow_full_turn_anim == var5.aEntity_Sub2_2324.anInt2764 || var5.aEntity_Sub2_2324.anInt2764 == var7.slow_walk_follow_cw_turn_anim || var5.aEntity_Sub2_2324.anInt2764 == var7.slow_walk_follow_ccw_turn_anim) { + var6 = 3; + } + } else { + var6 = 2; + } + + if (var5.anInt2322 != var6) { + var8 = Class70.method1232(var5.aEntity_Sub2_2324); + if (var8 != var5.anInt2332) { + if (var5.aClass3_Sub24_Sub1_2312 != null) { + Class3_Sub26.aClass3_Sub24_Sub2_2563.method461(var5.aClass3_Sub24_Sub1_2312); + var5.aClass3_Sub24_Sub1_2312 = null; + } + + var5.anInt2332 = var8; + } + + var5.anInt2322 = var6; + } + + var5.anInt2326 = var5.aEntity_Sub2_2324.xAxis; + var5.anInt2321 = var5.aEntity_Sub2_2324.xAxis + var5.aEntity_Sub2_2324.getSize() * 64; + var5.anInt2308 = var5.aEntity_Sub2_2324.yAxis; + var5.anInt2307 = var5.aEntity_Sub2_2324.yAxis + var5.aEntity_Sub2_2324.getSize() * 64; + Unsorted.method606(var1, var5, var3, var0, var2, 1 ^ 113); + } + + for (var5 = (Class3_Sub9) Unsorted.aHashTable_4046.first(); var5 != null; var5 = (Class3_Sub9) Unsorted.aHashTable_4046.next()) { + var6 = 1; + var7 = var5.aEntity_Sub1_2327.getRenderAnimationType(); + if (var5.aEntity_Sub1_2327.anInt2764 == var7.stand_animation) { + var6 = 0; + } else if (var5.aEntity_Sub1_2327.anInt2764 != var7.run_anim && var5.aEntity_Sub1_2327.anInt2764 != var7.run_follow_full_turn_anim && var7.run_follow_cw_turn_anim != var5.aEntity_Sub1_2327.anInt2764 && var7.run_follow_ccw_turn_anim != var5.aEntity_Sub1_2327.anInt2764) { + if (var7.slow_walk_anim == var5.aEntity_Sub1_2327.anInt2764 || var5.aEntity_Sub1_2327.anInt2764 == var7.slow_walk_follow_full_turn_anim || var7.slow_walk_follow_cw_turn_anim == var5.aEntity_Sub1_2327.anInt2764 || var7.slow_walk_follow_ccw_turn_anim == var5.aEntity_Sub1_2327.anInt2764) { + var6 = 3; + } + } else { + var6 = 2; + } + + if (var6 != var5.anInt2322) { + var8 = Class81.method1398(var5.aEntity_Sub1_2327); + if (var8 != var5.anInt2332) { + if (var5.aClass3_Sub24_Sub1_2312 != null) { + Class3_Sub26.aClass3_Sub24_Sub2_2563.method461(var5.aClass3_Sub24_Sub1_2312); + var5.aClass3_Sub24_Sub1_2312 = null; + } + + var5.anInt2332 = var8; + } + + var5.anInt2322 = var6; + } + + var5.anInt2326 = var5.aEntity_Sub1_2327.xAxis; + var5.anInt2321 = var5.aEntity_Sub1_2327.xAxis + 64 * var5.aEntity_Sub1_2327.getSize(); + var5.anInt2308 = var5.aEntity_Sub1_2327.yAxis; + var5.anInt2307 = var5.aEntity_Sub1_2327.yAxis + var5.aEntity_Sub1_2327.getSize() * 64; + Unsorted.method606(var1, var5, var3, var0, var2, 110); + } + + } catch (RuntimeException var9) { + throw ClientErrorException.clientError(var9, "ih.K(" + var0 + ',' + var1 + ',' + var2 + ',' + var3 + ',' + 1 + ')'); + } + } + + static RSString method1218(int var2) { + try { + return Unsorted.method1723((byte) -128, true, var2); + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "ih.A(" + true + ',' + 127 + ',' + var2 + ')'); + } + } + + final void clear() { + try { + while (true) { + Linkable var2 = this.head.next; + if (var2 == this.head) { + this.current = null; + return; + } + + var2.unlink(); + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "ih.C()"); + } + } + + final Linkable method1212() { + try { + Linkable var2 = this.head.previous; + + if (this.head == var2) { + this.current = null; + return null; + } else { + this.current = var2.previous; + return var2; + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "ih.B(" + 2 + ')'); + } + } + + final void pushBack(Linkable var2) { + try { + if (null != var2.previous) { + var2.unlink(); + } + + var2.next = this.head; + var2.previous = this.head.previous; + var2.previous.next = var2; + var2.next.previous = var2; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "ih.D(" + true + ',' + (var2 != null ? "{...}" : "null") + ')'); + } + } + + final void method1216(Linkable var2) { + try { + if (null != var2.previous) { + var2.unlink(); + } + + var2.next = this.head.next; + var2.previous = this.head; + var2.previous.next = var2; + var2.next.previous = var2; + + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "ih.N(" + 64 + ',' + (var2 != null ? "{...}" : "null") + ')'); + } + } + + final Linkable method1219(int var1) { + try { + if (var1 < 13) { + this.head = null; + } + + Linkable var2 = this.current; + if (this.head == var2) { + this.current = null; + return null; + } else { + this.current = var2.previous; + return var2; + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "ih.H(" + var1 + ')'); + } + } + + final Linkable method1220() { + try { + Linkable var2 = this.head.next; + if (this.head == var2) { + return null; + } else { + var2.unlink(); + return var2; + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "ih.E(" + (byte) -3 + ')'); + } + } + + final Linkable nextIteration() { + try { + Linkable var2 = this.current; + if (var2 == this.head) { + this.current = null; + return null; + } else { + this.current = var2.next; + return var2; + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "ih.L(" + 1 + ')'); + } + } + + final Linkable startIteration() { + try { + Linkable var2 = this.head.next; + if (this.head == var2) { + this.current = null; + return null; + } else { + this.current = var2.next; + return var2; + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "ih.F(" + 1 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/LoginHandler.java b/Client/src/main/java/org/runite/client/LoginHandler.java new file mode 100644 index 000000000..ea7ae4bef --- /dev/null +++ b/Client/src/main/java/org/runite/client/LoginHandler.java @@ -0,0 +1,352 @@ +package org.runite.client; + +import org.rs09.client.config.GameConfig; + +import org.rs09.client.net.Connection; + +import java.io.IOException; +import java.net.Socket; +import java.util.Objects; + +public class LoginHandler { + + private static final BufferedDataStream buffer = new BufferedDataStream(); + static CacheIndex configurationsIndex_1680; + static boolean dynamic; + public static int loginStage = 0; + static long isaacServerKey = 0L; + + static void handleLogin() { + try { + if (0 != loginStage && 5 != loginStage) { + try { + if (++Class50.anInt820 > 2000) { + if (Class3_Sub15.activeConnection != null) { + Class3_Sub15.activeConnection.close(); + Class3_Sub15.activeConnection = null; + } + + if (Class166.anInt2079 >= 1) { + Client.messageToDisplay = -5; + loginStage = 0; + return; + } + + Class50.anInt820 = 0; + if (Class140_Sub6.accRegistryPort == Class162.anInt2036) { + Class140_Sub6.accRegistryPort = Client.currentPort; + } else { + Class140_Sub6.accRegistryPort = Class162.anInt2036; + } + + loginStage = 1; + ++Class166.anInt2079; + } + if (loginStage == 1) { + Class3_Sub9.aClass64_2318 = Class38.gameSignlink.method1441((byte) 8, Class38_Sub1.accRegistryIp, GameConfig.SERVER_PORT + GameConfig.WORLD);//Class140_Sub6.accRegistryPort); + loginStage = 2; + } + + if (loginStage == 2) { + if (Objects.requireNonNull(Class3_Sub9.aClass64_2318).anInt978 == 2) { + throw new IOException(); + } + + if (1 != Class3_Sub9.aClass64_2318.anInt978) { + return; + } + + Class3_Sub15.activeConnection = new Connection((Socket) Class3_Sub9.aClass64_2318.anObject974, Class38.gameSignlink); + Class3_Sub9.aClass64_2318 = null; + long var1 = PacketParser.aLong3202 = Class131.username.toLong(); + TextureOperation12.outgoingBuffer.index = 0; + TextureOperation12.outgoingBuffer.writeByte(14); + int nameHash = (int) (var1 >> 16 & 31L); + TextureOperation12.outgoingBuffer.writeByte(nameHash); + Class3_Sub15.activeConnection.sendBytes(TextureOperation12.outgoingBuffer.buffer, 2); + if (WorldListEntry.aAudioChannel_2627 != null) { + WorldListEntry.aAudioChannel_2627.method2159(); + } + + if (Class3_Sub21.aAudioChannel_2491 != null) { + Class3_Sub21.aAudioChannel_2491.method2159(); + } + + int var4 = Class3_Sub15.activeConnection.readByte(); + if (WorldListEntry.aAudioChannel_2627 != null) { + WorldListEntry.aAudioChannel_2627.method2159(); + } + + if (null != Class3_Sub21.aAudioChannel_2491) { + Class3_Sub21.aAudioChannel_2491.method2159(); + } + + if (var4 != 0) { + Client.messageToDisplay = var4; + loginStage = 0; + Class3_Sub15.activeConnection.close(); + Class3_Sub15.activeConnection = null; + return; + } + + loginStage = 3; + } + + if (loginStage == 3) { + if (Class3_Sub15.activeConnection.availableBytes() < 8) { + return; + } + + Class3_Sub15.activeConnection.readBytes(BufferedDataStream.incomingBuffer.buffer, 0, 8); + BufferedDataStream.incomingBuffer.index = 0; + isaacServerKey = BufferedDataStream.incomingBuffer.readLong(); + int[] var9 = new int[4]; + TextureOperation12.outgoingBuffer.index = 0; + var9[2] = (int) (isaacServerKey >> 32); + var9[3] = (int) isaacServerKey; + var9[1] = (int) (Math.random() * 9.9999999E7D); + var9[0] = (int) (Math.random() * 9.9999999E7D); + TextureOperation12.outgoingBuffer.writeByte(10); + TextureOperation12.outgoingBuffer.writeInt(var9[0]); + TextureOperation12.outgoingBuffer.writeInt(var9[1]); + TextureOperation12.outgoingBuffer.writeInt(var9[2]); + TextureOperation12.outgoingBuffer.writeInt(var9[3]); + TextureOperation12.outgoingBuffer.writeLong(Class131.username.toLong()); + TextureOperation12.outgoingBuffer.writeString(Class131.password); + TextureOperation12.method229(); + TextureOperation12.outgoingBuffer.rsaEncrypt(TextureOperation10.EXPONENT, TextureOperation31.MODULUS); + buffer.index = 0; + if (40 == Class143.gameStage) { + buffer.writeByte(18); + } else { + buffer.writeByte(16); + } + + buffer.writeShort(TextureOperation12.outgoingBuffer.index + 163 - -TextureOperation29.method326((byte) 111, Class163_Sub2.paramSettings)); + buffer.writeInt(GameConfig.CLIENT_BUILD); + buffer.writeByte(Class7.anInt2161); + buffer.writeByte(!Client.paramAdvertisementSuppressed ? 0 : 1); + buffer.writeByte(1); + buffer.writeByte(Class83.getWindowType()); + buffer.writeShort(Class23.canvasWidth); + buffer.writeShort(GroundItem.canvasHeight); + buffer.writeByte(Unsorted.anInt3671); + Class81.putRandomDataFile(buffer, true); + buffer.writeString(Class163_Sub2.paramSettings); + buffer.writeInt(Class3_Sub26.paramAffid); + buffer.writeInt(Class84.method1421()); + CS2Script.aBoolean2705 = true; + buffer.writeShort(Class113.interfacePacketCounter); + buffer.writeInt(CacheIndex.skeletonsIndex.getReferenceTableCrc()); + buffer.writeInt(CacheIndex.skinsIndex.getReferenceTableCrc()); + buffer.writeInt(CacheIndex.configurationsIndex.getReferenceTableCrc()); + buffer.writeInt(CacheIndex.interfacesIndex.getReferenceTableCrc()); + buffer.writeInt(CacheIndex.soundFXIndex.getReferenceTableCrc()); + buffer.writeInt(CacheIndex.landscapesIndex.getReferenceTableCrc()); + buffer.writeInt(CacheIndex.musicIndex.getReferenceTableCrc()); + buffer.writeInt(CacheIndex.modelsIndex.getReferenceTableCrc()); + buffer.writeInt(CacheIndex.spritesIndex.getReferenceTableCrc()); + buffer.writeInt(CacheIndex.texturesIndex.getReferenceTableCrc()); + buffer.writeInt(CacheIndex.huffmanEncodingIndex.getReferenceTableCrc()); + buffer.writeInt(CacheIndex.music2Index.getReferenceTableCrc()); + buffer.writeInt(CacheIndex.interfaceScriptsIndex.getReferenceTableCrc()); + buffer.writeInt(CacheIndex.fontsIndex.getReferenceTableCrc()); + buffer.writeInt(CacheIndex.soundFX2Index.getReferenceTableCrc()); + buffer.writeInt(CacheIndex.soundFX3Index.getReferenceTableCrc()); + buffer.writeInt(CacheIndex.objectConfigIndex.getReferenceTableCrc()); + buffer.writeInt(CacheIndex.clientscriptMaskIndex.getReferenceTableCrc()); + buffer.writeInt(CacheIndex.npcConfigIndex.getReferenceTableCrc()); + buffer.writeInt(CacheIndex.itemConfigIndex.getReferenceTableCrc()); + buffer.writeInt(CacheIndex.animationIndex.getReferenceTableCrc()); + buffer.writeInt(CacheIndex.graphicFXIndex.getReferenceTableCrc()); + buffer.writeInt(CacheIndex.clientScriptConfigIndex.getReferenceTableCrc()); + buffer.writeInt(CacheIndex.worldmapIndex.getReferenceTableCrc()); + buffer.writeInt(CacheIndex.quickchatMessagesIndex.getReferenceTableCrc()); + buffer.writeInt(CacheIndex.quickchatMenusIndex.getReferenceTableCrc()); + buffer.writeInt(CacheIndex.materialsIndex.getReferenceTableCrc()); + buffer.writeInt(CacheIndex.particlesConfigIndex.getReferenceTableCrc()); + buffer.writeInt(CacheIndex.libIndex.getReferenceTableCrc()); + buffer.putBytes(TextureOperation12.outgoingBuffer.buffer, TextureOperation12.outgoingBuffer.index); + Class3_Sub15.activeConnection.sendBytes(buffer.buffer, buffer.index); + TextureOperation12.outgoingBuffer.method814(var9); + + for (int var2 = 0; var2 < 4; ++var2) { + var9[var2] += 50; + } + + BufferedDataStream.incomingBuffer.method814(var9); + loginStage = 4; + } + + if (loginStage == 4) { + if (Class3_Sub15.activeConnection.availableBytes() < 1) { + return; + } + + int opcode = Class3_Sub15.activeConnection.readByte(); + if (opcode == 21) { + loginStage = 7; + } else if (opcode == 29) { + loginStage = 10; + } else { + if (opcode == 1) { + loginStage = 5; + Client.messageToDisplay = opcode; + return; + } + + if (2 != opcode) { + if (opcode != 15) { + if (23 == opcode && Class166.anInt2079 < 1) { + loginStage = 1; + ++Class166.anInt2079; + Class50.anInt820 = 0; + Class3_Sub15.activeConnection.close(); + Class3_Sub15.activeConnection = null; + return; + } + + Client.messageToDisplay = opcode; + loginStage = 0; + Class3_Sub15.activeConnection.close(); + Class3_Sub15.activeConnection = null; + return; + } + + loginStage = 0; + Client.messageToDisplay = opcode; + return; + } + + loginStage = 8; + } + } + + if (6 == loginStage) { + TextureOperation12.outgoingBuffer.index = 0; + TextureOperation12.outgoingBuffer.putOpcode(17); + Class3_Sub15.activeConnection.sendBytes(TextureOperation12.outgoingBuffer.buffer, TextureOperation12.outgoingBuffer.index); + loginStage = 4; + return; + } + + if (loginStage == 7) { + if (Class3_Sub15.activeConnection.availableBytes() >= 1) { + TextureOperation25.anInt3413 = 60 * (3 + Class3_Sub15.activeConnection.readByte()); + loginStage = 0; + Client.messageToDisplay = 21; + Class3_Sub15.activeConnection.close(); + Class3_Sub15.activeConnection = null; + return; + } + + return; + } + + if (loginStage == 10) { + if (1 <= Class3_Sub15.activeConnection.availableBytes()) { + Class3_Sub26.anInt2561 = Class3_Sub15.activeConnection.readByte(); + loginStage = 0; + Client.messageToDisplay = 29; + Class3_Sub15.activeConnection.close(); + Class3_Sub15.activeConnection = null; + return; + } + + return; + } + + if (loginStage == 8) { + if (Class3_Sub15.activeConnection.availableBytes() < 14) { + return; + } + + Class3_Sub15.activeConnection.readBytes(BufferedDataStream.incomingBuffer.buffer, 0, 14); + BufferedDataStream.incomingBuffer.index = 0; + Player.rights = BufferedDataStream.incomingBuffer.readUnsignedByte(); + ClientLoader.setModPanelVisible(Player.rights == 2); + CS2Script.anInt3775 = BufferedDataStream.incomingBuffer.readUnsignedByte(); + Class3_Sub15.aBoolean2433 = BufferedDataStream.incomingBuffer.readUnsignedByte() == 1; + Class121.aBoolean1641 = 1 == BufferedDataStream.incomingBuffer.readUnsignedByte(); + Unsorted.aBoolean4063 = BufferedDataStream.incomingBuffer.readUnsignedByte() == 1; + TextureOperation31.aBoolean3166 = 1 == BufferedDataStream.incomingBuffer.readUnsignedByte(); + Unsorted.aBoolean29 = BufferedDataStream.incomingBuffer.readUnsignedByte() == 1; + Class3_Sub1.localIndex = BufferedDataStream.incomingBuffer.readUnsignedShort(); + TextureOperation3.disableGEBoxes = BufferedDataStream.incomingBuffer.readUnsignedByte() == 1; + Unsorted.isMember = BufferedDataStream.incomingBuffer.readUnsignedByte() == 1; + Class113.method1702(Unsorted.isMember); + Class8.method845(Unsorted.isMember); + if (!Client.paramAdvertisementSuppressed) { + if ((!Class3_Sub15.aBoolean2433 || Unsorted.aBoolean4063) && !TextureOperation3.disableGEBoxes) { + try { + TextCore.aString_516.method1577(Class38.gameSignlink.gameApplet); + } catch (Throwable var5) { + } + } else { + try { + Class97.aString_1374.method1577(Class38.gameSignlink.gameApplet); + } catch (Throwable var6) { + } + } + } + + Unsorted.incomingOpcode = BufferedDataStream.incomingBuffer.getOpcode(); + dynamic = Unsorted.incomingOpcode == 214; + Unsorted.incomingPacketLength = BufferedDataStream.incomingBuffer.readUnsignedShort(); + loginStage = 9; + } + + if (loginStage == 9) { + if (Unsorted.incomingPacketLength > Class3_Sub15.activeConnection.availableBytes()) { + return; + } + + BufferedDataStream.incomingBuffer.index = 0; + Class3_Sub15.activeConnection.readBytes(BufferedDataStream.incomingBuffer.buffer, 0, Unsorted.incomingPacketLength); + Client.messageToDisplay = 2; + loginStage = 0; + SequenceDefinition.resetAll(); + Unsorted.viewportX = -1; + Class39.updateSceneGraph(dynamic); + Unsorted.incomingOpcode = -1; + return; + } + } catch (IOException var7) { + if (null != Class3_Sub15.activeConnection) { + Class3_Sub15.activeConnection.close(); + Class3_Sub15.activeConnection = null; + } + + if (Class166.anInt2079 >= 1) { + loginStage = 0; + Client.messageToDisplay = -4; + } else { + loginStage = 1; + Class50.anInt820 = 0; + ++Class166.anInt2079; + if (Class140_Sub6.accRegistryPort == Class162.anInt2036) { + Class140_Sub6.accRegistryPort = Client.currentPort; + } else { + Class140_Sub6.accRegistryPort = Class162.anInt2036; + } + } + } + + } + } catch (RuntimeException var8) { + throw ClientErrorException.clientError(var8, "ri.A(" + ')'); + } + } + + static int method1753(int var0, int var1) { + var1 = var1 * (var0 & 127) >> 7; + if (var1 < 2) { + var1 = 2; + } else if (var1 > 126) { + var1 = 126; + } + + return (var0 & '\uff80') + var1; + } + +} diff --git a/Client/src/main/java/org/runite/client/MapSceneDefinition.java b/Client/src/main/java/org/runite/client/MapSceneDefinition.java new file mode 100644 index 000000000..bad66fb0f --- /dev/null +++ b/Client/src/main/java/org/runite/client/MapSceneDefinition.java @@ -0,0 +1,60 @@ +package org.runite.client; + +// TODO MapSceneDefinition or something +public final class MapSceneDefinition { + + public int color; + public int sprite; + public boolean aBoolean69 = false; + + public final void decode(DataBuffer buffer) { + while (true) { + int opcode = buffer.readUnsignedByte(); + if (opcode == 0) { + return; + } + + this.decode(buffer, opcode); + } + } + + /** + * @param rotations The amount of rotations the sprite should be turned clockwise. Each rotation rotates the sprite + * by 90 degrees clockwise. + */ + public final LDIndexedSprite getSprite(int rotations) { + LDIndexedSprite sprite = (LDIndexedSprite) TextureOperation2.aReferenceCache_3369.get((long) rotations << 16 | this.sprite); + if (sprite != null) { + return sprite; + } + + KeyboardListener.spritesIndex_1916.retrieveSpriteFile(this.sprite); + sprite = Unsorted.method1539(this.sprite, KeyboardListener.spritesIndex_1916); + if (sprite != null) { + sprite.method1668(Class102.anInt2136, Class46.anInt740, Class158.anInt2015); + sprite.anInt1469 = sprite.width; + sprite.anInt1467 = sprite.height; + + for (int var5 = 0; var5 < rotations; ++var5) { + sprite.rotateClockwise(); + } + + TextureOperation2.aReferenceCache_3369.put(sprite, (long) rotations << 16 | this.sprite); + } + + return sprite; + } + + private void decode(DataBuffer buffer, int opcode) { + if (opcode == 1) { + this.sprite = buffer.readUnsignedShort(); + } else if (opcode == 2) { + this.color = buffer.readMedium(); + } else if (opcode == 3) { + this.aBoolean69 = true; + } else if (opcode == 4) { + this.sprite = -1; + } + } + +} diff --git a/Client/src/main/java/org/runite/client/MessageManager.java b/Client/src/main/java/org/runite/client/MessageManager.java new file mode 100644 index 000000000..4b3029deb --- /dev/null +++ b/Client/src/main/java/org/runite/client/MessageManager.java @@ -0,0 +1,46 @@ +package org.runite.client; + +public final class MessageManager { + + static RSString[] aStringArray3226 = new RSString[100]; + static int[] anIntArray1835 = new int[100]; + static int[] anIntArray3082 = new int[100]; + + static void sendGameMessage(int var0, int type, RSString message, RSString var3, RSString var5) { + for (int i = 99; i > 0; --i) { + anIntArray3082[i] = anIntArray3082[i - 1]; + aStringArray3226[i] = aStringArray3226[i - 1]; + LinkableRSString.aStringArray2580[i] = LinkableRSString.aStringArray2580[-1 + i]; + Class163_Sub3.aStringArray3003[i] = Class163_Sub3.aStringArray3003[i + -1]; + anIntArray1835[i] = anIntArray1835[i - 1]; + } + + ++TextureOperation16.anInt3114; + anIntArray3082[0] = type; + aStringArray3226[0] = var5; + Class24.anInt472 = PacketParser.anInt3213; + anIntArray1835[0] = var0; + RSString primaryMsg = RSString.parse("null"); + RSString secondaryMsg = RSString.parse("null"); + int cutOff = 81 - (var3 != null ? var3.length : 0) - (var5 != null ? var5.length : 0); + if(message.length > cutOff && type != 0){ + String[] tokens = message.toString().split(" "); + if(tokens.length > 1) { + int counter = 0; + for (String tok : tokens) { + if (counter + tok.length() > cutOff) { + break; + } + counter += tok.length() + 1; + } + primaryMsg = message.substring(0, counter, 0); + secondaryMsg = message.substring(counter, message.length, 0); + message = primaryMsg; + } + } + LinkableRSString.aStringArray2580[0] = message; + Class163_Sub3.aStringArray3003[0] = var3; + if(!secondaryMsg.equalsString(RSString.parse("null"))) + sendGameMessage(var0,type,secondaryMsg,var3,var5); + } +} diff --git a/Client/src/main/java/org/runite/client/ModPanel.java b/Client/src/main/java/org/runite/client/ModPanel.java new file mode 100644 index 000000000..e253651ea --- /dev/null +++ b/Client/src/main/java/org/runite/client/ModPanel.java @@ -0,0 +1,1014 @@ +package org.runite.client; + +import org.rs09.SystemLogger; +import org.rs09.client.config.GameConfig; + +import javax.swing.*; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; +import javax.swing.table.DefaultTableCellRenderer; +import javax.swing.table.DefaultTableModel; +import javax.swing.table.TableRowSorter; +import javax.swing.text.*; +import java.awt.*; +import java.awt.event.*; +import java.util.EventObject; +import java.util.Hashtable; + +public class ModPanel extends JPanel { + ButtonListener listener = new ButtonListener(); + DebugMenu debugMenu = new DebugMenu(); + ItemMenu itemMenu = new ItemMenu(); + NPCMenu npcMenu = new NPCMenu(); + PlayerMenu playerMenu = new PlayerMenu(); + TeleMenu teleMenu = new TeleMenu(); + ModelMenu modelMenu = new ModelMenu(); + + public ModPanel() { + setVisible(false); + JButton teleMenu = new JButton("Tele"); + teleMenu.setActionCommand("tele"); + teleMenu.addActionListener(listener); + + JButton playerMenu = new JButton("Player"); + playerMenu.setActionCommand("player"); + playerMenu.addActionListener(listener); + + JButton npcMenu = new JButton("NPC"); + npcMenu.setActionCommand("npc"); + npcMenu.addActionListener(listener); + + JButton itemMenu = new JButton("Item"); + itemMenu.setActionCommand("item"); + itemMenu.addActionListener(listener); + + JButton debugMenu = new JButton("Debug"); + debugMenu.setActionCommand("debug"); + debugMenu.addActionListener(listener); + + JButton modelMenu = new JButton("Model"); + modelMenu.setActionCommand("model"); + modelMenu.addActionListener(listener); + + JButton closeButton = new JButton("Close Panel"); + closeButton.setActionCommand("close"); + closeButton.addActionListener(listener); + + add(teleMenu); + add(playerMenu); + add(npcMenu); + add(itemMenu); + add(debugMenu); + add(modelMenu); + add(closeButton, BorderLayout.EAST); + } + + private void sendCommand(String command) { + TextureOperation12.outgoingBuffer.putOpcode(44); + TextureOperation12.outgoingBuffer.writeByte(command.length() + -1); + TextureOperation12.outgoingBuffer.writeString(command.substring(2)); + } + + class ButtonListener implements ActionListener { + + @Override + public void actionPerformed(ActionEvent actionEvent) { + switch (actionEvent.getActionCommand()) { + case "close": + ClientLoader.setModPanelVisible(false); + break; + case "debug": + debugMenu.setVisible(true); + break; + case "item": + itemMenu.open(); + break; + case "npc": + npcMenu.open(); + break; + case "player": + playerMenu.open(); + break; + case "tele": + teleMenu.open(); + break; + case "model": + modelMenu.open(); + break; + } + } + } + + class TeleMenu extends JFrame { + Object[][] rowData = {{"2974,4383,2", "corporeal beast"}, {"2659,2649,0", "pest control"}, {"3293,3184,0", "al kharid"}, {"3222,3217,0", "lumbridge"}, {"3110,3168,0", "wizard's tower"}, {"3083,3249,0", "draynor village"}, {"3019,3244,0", "port sarim"}, {"2956,3209,0", "rimmington"}, {"2965,3380,0", "falador"}, {"2895,3436,0", "taverly"}, {"3080,3423,0", "barbarian village"}, {"3213,3428,0", "varrock"}, {"3164,3485,0", "grand exchange"}, {"2917,3175,0", "karamja"}, {"2450,5165,0", "tzhaar"}, {"2795,3177,0", "brimhaven"}, {"2849,2961,0", "shilo village"}, {"2605,3093,0", "yanille"}, {"2663,3305,0", "ardougne"}, {"2450,3422,0", "tree gnome stronghold"}, {"2730,3485,0", "camelot"}, {"2730,3485,0", "seer's village"}, {"2805,3435,0", "catherby"}, {"2658,3657,0", "relleka"}, {"2890,3676,0", "trollheim"}, {"2914,3746,0", "god wars dungeon"}, {"3180,3684,0", "bounty hunter"}, {"3272,3687,0", "clan wars"}, {"3090,3957,0", "mage arena"}, {"3069,10257,0", "king black dragon"}, {"3359,3416,0", "digsite"}, {"3488,3489,0", "canifis"}, {"3428,3526,0", "slayer tower"}, {"3502,9483,0", "kalphite queen"}, {"3233,2913,0", "pyramid"}, {"3419,2917,0", "nardah"}, {"3482,3090,0", "uzer"}, {"3358,2970,0", "pollnivneach"}, {"3305,2788,0", "sophanem"}, {"2898,3544,0", "burthorpe"}, {"3088,3491,0", "edgeville"}, {"3169,3034,0", "bedabin"}, {"3565,3289,0", "barrows"}, {"3016,3513,0", "black knight's fortress"}, {"3052,3481,0", "monastery"}}; + JTextField playerNameField = new JTextField(); + JTextField coordsField = new JTextField(); + JCheckBox toMeToggle = new JCheckBox("To Me"); + JTable table = new JTable(rowData, new Object[]{"Coords", "Name"}) { + @Override + public boolean editCellAt(int i, int i1, EventObject eventObject) { + return false; + } + + @Override + public Object getValueAt(int i, int i1) { + return rowData[i][i1]; + } + + @Override + public int getRowCount() { + return rowData.length; + } + }; + DefaultTableCellRenderer cellRenderer = new DefaultTableCellRenderer(); + + ActionListener buttonListener = actionEvent -> { + String command = actionEvent.getActionCommand(); + switch (command) { + case "telePlayer": + if (toMeToggle.isSelected()) { + sendCommand("::teletome " + playerNameField.getText()); + } else { + sendCommand("::teleto " + playerNameField.getText()); + } + break; + case "teleCoords": + String[] coordTokens = coordsField.getText().split(","); + if (coordTokens.length < 2) { + coordsField.setText(""); + break; + } + int x, y, z = 0; + try { + x = Integer.parseInt(coordTokens[0]); + y = Integer.parseInt(coordTokens[1]); + if (coordTokens.length == 3) + z = Integer.parseInt(coordTokens[2]); + } catch (NumberFormatException e) { + SystemLogger.logErr("(ModPanel.java:118) Invalid value passed to coords tele."); + coordsField.setText(""); + break; + } + sendCoordTele(x, y, z); + break; + } + }; + + TeleMenu() { + super("Teleport Menu"); + setLayout(new BorderLayout()); + + JPanel playerTelePanel = new JPanel(); + playerTelePanel.setLayout(new FlowLayout()); + JLabel playerNameLabel = new JLabel("Player Name:"); + JButton teleButton = new JButton("Tele"); + teleButton.setActionCommand("telePlayer"); + teleButton.addActionListener(buttonListener); + playerNameField.setPreferredSize(new Dimension(100, 20)); + playerTelePanel.add(playerNameLabel); + playerTelePanel.add(playerNameField); + playerTelePanel.add(toMeToggle); + playerTelePanel.add(teleButton); + + JPanel coordTelePanel = new JPanel(); + JLabel coordsLabel = new JLabel("Coordinates:"); + teleButton = new JButton("Tele"); + teleButton.setActionCommand("teleCoords"); + teleButton.addActionListener(buttonListener); + coordsField.setPreferredSize(new Dimension(60, 20)); + coordTelePanel.add(coordsLabel); + coordTelePanel.add(coordsField); + coordTelePanel.add(teleButton); + + table.addMouseListener(new MouseListener() { + @Override + public void mouseClicked(MouseEvent mouseEvent) { + if (mouseEvent.getClickCount() == 2) { + JTable table = (JTable)mouseEvent.getSource(); + int row = table.getSelectedRow(); + String coordTokens = table.getValueAt(row, 0).toString(); + sendCommand("::tele " + coordTokens.replace(",", " ")); + SystemLogger.logInfo("Sending teleport command to " + coordTokens); + } + } + + @Override + public void mousePressed(MouseEvent mouseEvent) { + } + + @Override + public void mouseReleased(MouseEvent mouseEvent) { + } + + @Override + public void mouseEntered(MouseEvent mouseEvent) { + } + + @Override + public void mouseExited(MouseEvent mouseEvent) { + } + }); + cellRenderer.setToolTipText("Double-click to teleport."); + table.getColumnModel().getColumn(0).setMaxWidth(250); + table.getColumnModel().getColumn(0).setCellRenderer(cellRenderer); + table.getColumnModel().getColumn(1).setCellRenderer(cellRenderer); + + JPanel fullTele = new JPanel(); + fullTele.setLayout(new BoxLayout(fullTele, BoxLayout.PAGE_AXIS)); + JScrollPane scrollPane = new JScrollPane(table); + fullTele.add(scrollPane); + + add(playerTelePanel, BorderLayout.NORTH); + add(coordTelePanel, BorderLayout.CENTER); + add(fullTele, BorderLayout.SOUTH); + pack(); + } + + private void open() { + setVisible(true); + } + + private void sendCoordTele(int x, int y, int z) { + sendCommand("::tele " + x + " " + y + " " + z); + } + + private void sendCoordTele(int x, int y) { + sendCoordTele(x, y, 0); + } + } + + class PlayerMenu extends JFrame { + JTextField nameField = new JTextField(); + JTextField durationField = new JTextField(); + ItemListener itemListener = new ItemListener() { + @Override + public void itemStateChanged(ItemEvent itemEvent) { + String title = ((JCheckBox)itemEvent.getItem()).getText(); + switch (title) { + case "God Mode": + sendCommand("::god"); + break; + case "Instakill": + sendCommand("::1hit"); + break; + } + } + }; + ActionListener listener = new ActionListener() { + @Override + public void actionPerformed(ActionEvent actionEvent) { + String actionName = actionEvent.getActionCommand(); + switch (actionName) { + case "jail": + sendCommand("::jail " + durationField.getText() + " " + nameField.getText()); + break; + case "empty": + sendCommand("::empty"); + break; + } + } + }; + + PlayerMenu() { + super("Player Options"); + setLayout(new BorderLayout()); + + JPanel jailPanel = new JPanel(); + jailPanel.setLayout(new FlowLayout()); + JLabel nameLabel = new JLabel("Name:"); + JLabel durationLabel = new JLabel("Duration(seconds):"); + JButton jailButton = new JButton("Jail"); + + jailPanel.add(nameLabel); + jailPanel.add(nameField); + nameField.setPreferredSize(new Dimension(100, 20)); + jailPanel.add(durationLabel); + jailPanel.add(durationField); + durationField.setPreferredSize(new Dimension(55, 20)); + jailPanel.add(jailButton); + jailButton.setActionCommand("jail"); + jailButton.addActionListener(listener); + + add(jailPanel, BorderLayout.NORTH); + + JPanel selfPanel = new JPanel(); + selfPanel.setLayout(new FlowLayout()); + JLabel selfLabel = new JLabel("Self: "); + JCheckBox godCheck = new JCheckBox("God Mode"); + JCheckBox instakillCheck = new JCheckBox("Instakill"); + godCheck.addItemListener(itemListener); + instakillCheck.addItemListener(itemListener); + JButton emptyButton = new JButton("Empty Inv"); + emptyButton.setActionCommand("empty"); + emptyButton.addActionListener(listener); + selfPanel.add(selfLabel); + selfPanel.add(godCheck); + selfPanel.add(instakillCheck); + selfPanel.add(emptyButton); + + add(selfPanel, BorderLayout.SOUTH); + + pack(); + + setVisible(false); + } + + public void open() { + setVisible(true); + } + } + + class NPCMenu extends JFrame { + DefaultTableModel model = new DefaultTableModel(); + JTextField searchField = new JTextField(); + JTextField amountField = new JTextField(); + TableRowSorter sorter = new TableRowSorter<>(model); + DefaultTableCellRenderer cellRenderer = new DefaultTableCellRenderer(); + boolean populated = false; + + NPCMenu() { + super("NPC Spawning Menu"); + setLayout(new BorderLayout()); + + cellRenderer.setToolTipText("Double-Click to spawn."); + JPanel searchPanel = new JPanel(); + JLabel searchLabel = new JLabel("Search for NPC:"); + searchField.setPreferredSize(new Dimension(100, 20)); + searchPanel.add(searchLabel); + searchPanel.add(searchField); + add(searchPanel, BorderLayout.NORTH); + setLocationRelativeTo(null); + + JTable npcTable = new JTable(model) { + @Override + public boolean editCellAt(int i, int i1, EventObject eventObject) { + return false; + } + }; + model.addColumn("ID"); + model.addColumn("Name"); + npcTable.setRowSorter(sorter); + npcTable.getColumnModel().getColumn(0).setMaxWidth(55); + npcTable.getColumnModel().getColumn(0).setCellRenderer(cellRenderer); + npcTable.getColumnModel().getColumn(1).setCellRenderer(cellRenderer); + + + npcTable.addMouseListener(new MouseListener() { + @Override + public void mouseClicked(MouseEvent mouseEvent) { + if (mouseEvent.getClickCount() == 2) { + JTable table = (JTable)mouseEvent.getSource(); + int row = table.getSelectedRow(); + sendCommand("::npc " + table.getValueAt(row, 0) + (amountField.getText().isEmpty() ? "" : (" " + amountField.getText()))); + SystemLogger.logInfo("Sending spawn command for NPC: " + table.getValueAt(row, 1) + " " + amountField.getText()); + } + } + + @Override + public void mousePressed(MouseEvent mouseEvent) { + } + + @Override + public void mouseReleased(MouseEvent mouseEvent) { + } + + @Override + public void mouseEntered(MouseEvent mouseEvent) { + } + + @Override + public void mouseExited(MouseEvent mouseEvent) { + } + }); + + searchField.addKeyListener(new KeyListener() { + @Override + public void keyTyped(KeyEvent keyEvent) { + filter(); + } + + @Override + public void keyPressed(KeyEvent keyEvent) { + } + + @Override + public void keyReleased(KeyEvent keyEvent) { + } + }); + + + JScrollPane scrollPane = new JScrollPane(npcTable); + add(scrollPane, BorderLayout.SOUTH); + + pack(); + setVisible(false); + } + + private void filter() { + RowFilter rf = null; + //If current expression doesn't parse, don't update. + try { + rf = RowFilter.regexFilter(searchField.getText(), 1); + } catch (java.util.regex.PatternSyntaxException e) { + return; + } + sorter.setRowFilter(rf); + } + + public void open() { + if (!populated) { + SwingUtilities.invokeLater(() -> { + for (int i = 0; i < 15000; i++) { + NPCDefinition def = NPCDefinition.getNPCDefinition(i); + if (def == null) + continue; + model.addRow(new Object[]{i, def.NPCName.toLowercase()}); + } + setVisible(true); + populated = true; + }); + } else { + setVisible(true); + } + } + } + + class ItemMenu extends JFrame { + DefaultTableModel model = new DefaultTableModel(); + JTextField searchField = new JTextField(); + JTextField amountField = new JTextField(); + TableRowSorter sorter = new TableRowSorter<>(model); + DefaultTableCellRenderer cellRenderer = new DefaultTableCellRenderer(); + boolean populated = false; + + ItemMenu() { + super("Item Spawning Menu"); + setLayout(new BorderLayout()); + cellRenderer.setToolTipText("Double-Click to spawn."); + + JPanel searchPanel = new JPanel(); + JLabel searchLabel = new JLabel("Search for Item:"); + JLabel amountLabel = new JLabel("Amount: "); + amountField.setPreferredSize(new Dimension(45, 20)); + searchField.setPreferredSize(new Dimension(100, 20)); + searchPanel.add(searchLabel); + searchPanel.add(searchField); + searchPanel.add(amountLabel); + searchPanel.add(amountField); + add(searchPanel, BorderLayout.NORTH); + setLocationRelativeTo(null); + + JTable itemTable = new JTable(model) { + @Override + public boolean editCellAt(int i, int i1, EventObject eventObject) { + return false; + } + }; + model.addColumn("ID"); + model.addColumn("Name"); + itemTable.setRowSorter(sorter); + itemTable.getColumnModel().getColumn(0).setMaxWidth(55); + itemTable.getColumnModel().getColumn(0).setCellRenderer(cellRenderer); + itemTable.getColumnModel().getColumn(1).setCellRenderer(cellRenderer); + + itemTable.addMouseListener(new MouseListener() { + @Override + public void mouseClicked(MouseEvent mouseEvent) { + if (mouseEvent.getClickCount() == 2) { + JTable table = (JTable)mouseEvent.getSource(); + int row = table.getSelectedRow(); + sendCommand("::item " + table.getValueAt(row, 0) + (amountField.getText().isEmpty() ? "" : (" " + amountField.getText()))); + SystemLogger.logInfo("Sending spawn command for item: " + table.getValueAt(row, 1) + " " + amountField.getText()); + } + } + + @Override + public void mousePressed(MouseEvent mouseEvent) { + } + + @Override + public void mouseReleased(MouseEvent mouseEvent) { + } + + @Override + public void mouseEntered(MouseEvent mouseEvent) { + } + + @Override + public void mouseExited(MouseEvent mouseEvent) { + } + }); + + searchField.addKeyListener(new KeyListener() { + @Override + public void keyTyped(KeyEvent keyEvent) { + filter(); + } + + @Override + public void keyPressed(KeyEvent keyEvent) { + } + + @Override + public void keyReleased(KeyEvent keyEvent) { + } + }); + + + JScrollPane scrollPane = new JScrollPane(itemTable); + add(scrollPane, BorderLayout.SOUTH); + + pack(); + setVisible(false); + } + + private void filter() { + RowFilter rf = null; + //If current expression doesn't parse, don't update. + try { + rf = RowFilter.regexFilter(searchField.getText(), 1); + } catch (java.util.regex.PatternSyntaxException e) { + return; + } + sorter.setRowFilter(rf); + } + + public void open() { + if (!populated) { + SwingUtilities.invokeLater(() -> { + for (int i = 0; i < 15000; i++) { + ItemDefinition def = ItemDefinition.getItemDefinition(i); + if (def == null) + continue; + model.addRow(new Object[]{i, def.name.toLowercase()}); + } + setVisible(true); + populated = true; + }); + } else { + setVisible(true); + } + } + } + + class DebugMenu extends JFrame { + DebugMenu() { + super("Debug Options"); + ItemListener listener = new CheckBoxListener(); + setResizable(false); + setLayout(new FlowLayout()); + setLocationRelativeTo(null); + setDefaultCloseOperation(HIDE_ON_CLOSE); + JCheckBox itemDebug = new JCheckBox("Item IDs"); + JCheckBox npcDebug = new JCheckBox("NPC IDs"); + JCheckBox objectDebug = new JCheckBox("Object IDs"); + JCheckBox debugMode = new JCheckBox("Debug Output"); + itemDebug.addItemListener(listener); + npcDebug.addItemListener(listener); + objectDebug.addItemListener(listener); + debugMode.addItemListener(listener); + add(itemDebug); + add(npcDebug); + add(objectDebug); + add(debugMode); + pack(); + setVisible(false); + } + + class CheckBoxListener implements ItemListener { + @Override + public void itemStateChanged(ItemEvent itemEvent) { + String title = ((JCheckBox)itemEvent.getItem()).getText(); + switch (title) { + case "Item IDs": + GameConfig.ITEM_DEBUG_ENABLED = itemEvent.getStateChange() == ItemEvent.SELECTED; + break; + case "NPC IDs": + GameConfig.NPC_DEBUG_ENABLED = itemEvent.getStateChange() == ItemEvent.SELECTED; + break; + case "Object IDs": + GameConfig.OBJECT_DEBUG_ENABLED = itemEvent.getStateChange() == ItemEvent.SELECTED; + break; + case "Debug Output": + sendCommand("::debug"); + break; + } + } + } + } + + // TODO: Needs re-write + class ModelMenu extends JFrame { + JTextField itemSearchField = new JTextField(); + JLabel offsetMaleXStatusText = new JLabel("X Offset:", SwingConstants.LEFT); + JLabel offsetMaleYStatusText = new JLabel("Y Offset:", SwingConstants.LEFT); + JLabel offsetMaleZStatusText = new JLabel("Z Offset:", SwingConstants.LEFT); + JLabel offsetFemaleXStatusText = new JLabel("X Offset:", SwingConstants.LEFT); + JLabel offsetFemaleYStatusText = new JLabel("Y Offset:", SwingConstants.LEFT); + JLabel offsetFemaleZStatusText = new JLabel("Z Offset:", SwingConstants.LEFT); + int offsetXMale = 0; + int offsetYMale = 0; + int offsetZMale = 0; + int offsetXFemale = 0; + int offsetYFemale = 0; + int offsetZFemale = 0; + int defaultOffsetXMale = 0; + int defaultOffsetYMale = 0; + int defaultOffsetZMale = 0; + int defaultOffsetXFemale = 0; + int defaultOffsetYFemale = 0; + int defaultOffsetZFemale = 0; + JLabel defaultMaleXStatusText = new JLabel("Default X Offset: ", JLabel.LEFT); + JLabel defaultMaleYStatusText = new JLabel("Default Y Offset: ", JLabel.LEFT); + JLabel defaultMaleZStatusText = new JLabel("Default Z Offset: ", JLabel.LEFT); + JLabel defaultFemaleXStatusText = new JLabel("Default X Offset: ", JLabel.LEFT); + JLabel defaultFemaleYStatusText = new JLabel("Default Y Offset: ", JLabel.LEFT); + JLabel defaultFemaleZStatusText = new JLabel("Default Z Offset: ", JLabel.LEFT); + JTabbedPane itemOffsetTabPane = new JTabbedPane(); + JSlider sliderMaleXOffset = new JSlider(Byte.MIN_VALUE, Byte.MAX_VALUE); + JSlider sliderMaleYOffset = new JSlider(Byte.MIN_VALUE, Byte.MAX_VALUE); + JSlider sliderMaleZOffset = new JSlider(Byte.MIN_VALUE, Byte.MAX_VALUE); + JSlider sliderFemaleXOffset = new JSlider(Byte.MIN_VALUE, Byte.MAX_VALUE); + JSlider sliderFemaleYOffset = new JSlider(Byte.MIN_VALUE, Byte.MAX_VALUE); + JSlider sliderFemaleZOffset = new JSlider(Byte.MIN_VALUE, Byte.MAX_VALUE); + ChangeListener listenerMaleXOffset = new SliderMaleOffsetXListener(); + ChangeListener listenerMaleYOffset = new SliderMaleOffsetYListener(); + ChangeListener listenerMaleZOffset = new SliderMaleOffsetZListener(); + ChangeListener listenerFemaleXOffset = new SliderFemaleOffsetXListener(); + ChangeListener listenerFemaleYOffset = new SliderFemaleOffsetYListener(); + ChangeListener listenerFemaleZOffset = new SliderFemaleOffsetZListener(); + + ModelMenu() { + super("Model Helper"); + setResizable(false); + setAlwaysOnTop(true); + setLayout(new BoxLayout(this.getContentPane(), BoxLayout.Y_AXIS)); + setLocationRelativeTo(null); + setDefaultCloseOperation(HIDE_ON_CLOSE); + + JPanel searchPanel = new JPanel(); + searchPanel.setLayout(new BoxLayout(searchPanel, BoxLayout.X_AXIS)); + searchPanel.setAlignmentX(Component.RIGHT_ALIGNMENT); + JLabel searchLabel = new JLabel("Item:"); + itemSearchField.setPreferredSize(new Dimension(65, 20)); + + JButton resetValues = new JButton("Reset"); + resetValues.addActionListener(e -> resetOffsetValues()); + + searchPanel.add(searchLabel); + searchPanel.add(itemSearchField); + searchPanel.add(resetValues); + + PlainDocument doc = (PlainDocument) itemSearchField.getDocument(); + doc.setDocumentFilter(new MyIntFilter()); + + itemOffsetTabPane.add("Male offset", prepareMaleSliders()); + itemOffsetTabPane.add("Female offset", prepareFemaleSliders()); + + add(searchPanel); + add(itemOffsetTabPane); + + pack(); + setVisible(false); + } + + private void updateOffsetValues() { + if (itemSearchField.getText() != null) { + if (!itemSearchField.getText().contentEquals("")) { + ItemDefinition def = ItemDefinition.getItemDefinition(Integer.parseInt(itemSearchField.getText())); + if (def != null) { + // Clears model reference cache + KeyboardListener.aReferenceCache_1911.clear(); + + def.maleWieldX = offsetXMale; + def.maleWieldY = offsetYMale; + def.maleWieldZ = offsetZMale; + def.femaleWieldX = offsetXFemale; + def.femaleWieldY = offsetYFemale; + def.femaleWieldZ = offsetZFemale; + } + } + } + } + + private void resetOffsetValues() { + // Clear item def cache + QuickChatDefinition.aReferenceCache_3572.clear(); + updateOffsetValues(); + + offsetXMale = defaultOffsetXMale; + offsetYMale = defaultOffsetYMale; + offsetZMale = defaultOffsetZMale; + offsetXFemale = defaultOffsetXFemale; + offsetYFemale = defaultOffsetYFemale; + offsetZFemale = defaultOffsetZFemale; + + sliderMaleXOffset.setValue(offsetXMale); + sliderMaleYOffset.setValue(offsetYMale); + sliderMaleZOffset.setValue(offsetZMale); + sliderFemaleXOffset.setValue(offsetXFemale); + sliderFemaleYOffset.setValue(offsetYFemale); + sliderFemaleZOffset.setValue(offsetZFemale); + } + + void updateDefaultOffsetValues(int id) { + ItemDefinition def = ItemDefinition.getItemDefinition(id); + if (def == null) { + defaultMaleXStatusText.setText("Default X Offset: NULL"); + defaultMaleYStatusText.setText("Default Y Offset: NULL"); + defaultMaleZStatusText.setText("Default Z Offset: NULL"); + defaultFemaleXStatusText.setText("Default X Offset: NULL"); + defaultFemaleYStatusText.setText("Default Y Offset: NULL"); + defaultFemaleZStatusText.setText("Default Z Offset: NULL"); + } else { + defaultOffsetXMale = def.maleWieldX; + defaultOffsetYMale = def.maleWieldY; + defaultOffsetZMale = def.maleWieldZ; + defaultOffsetXFemale = def.femaleWieldX; + defaultOffsetYFemale = def.femaleWieldY; + defaultOffsetZFemale = def.femaleWieldZ; + offsetXMale = def.maleWieldX; + offsetYMale = def.maleWieldY; + offsetZMale = def.maleWieldZ; + offsetXFemale = def.femaleWieldX; + offsetYFemale = def.femaleWieldY; + offsetZFemale = def.femaleWieldZ; + + sliderMaleXOffset.setValue(defaultOffsetXMale); + sliderMaleYOffset.setValue(defaultOffsetYMale); + sliderMaleZOffset.setValue(defaultOffsetZMale); + sliderFemaleXOffset.setValue(defaultOffsetXFemale); + sliderFemaleYOffset.setValue(defaultOffsetYFemale); + sliderFemaleZOffset.setValue(defaultOffsetZFemale); + + defaultMaleXStatusText.setText("Default X Offset: " + def.maleWieldX); + defaultMaleYStatusText.setText("Default Y Offset: " + def.maleWieldY); + defaultMaleZStatusText.setText("Default Z Offset: " + def.maleWieldZ); + defaultFemaleXStatusText.setText("Default X Offset: " + def.femaleWieldX); + defaultFemaleYStatusText.setText("Default Y Offset: " + def.femaleWieldY); + defaultFemaleZStatusText.setText("Default Z Offset: " + def.femaleWieldZ); + } + } + + private void open() { + setVisible(true); + } + + private Component leftJustify(JPanel panel) { + Box b = Box.createHorizontalBox(); + b.add(panel); + b.add(Box.createHorizontalGlue()); + // (Note that you could throw a lot more components + // and struts and glue in here.) + return b; + } + + public JPanel prepareMaleSliders() { + // Add positions label in the slider + Hashtable position = new Hashtable<>(); + position.put((int)Byte.MIN_VALUE, new JLabel("" + Byte.MIN_VALUE)); + position.put(0, new JLabel("0")); + position.put((int)Byte.MAX_VALUE, new JLabel("" + Byte.MAX_VALUE)); + + // Setup the sliders + sliderMaleXOffset.setName("X offset"); + sliderMaleXOffset.setMinorTickSpacing(10); + sliderMaleXOffset.setPaintTicks(true); + sliderMaleXOffset.setPaintLabels(true); + sliderMaleXOffset.setLabelTable(position); + sliderMaleXOffset.setSnapToTicks(true); + sliderMaleXOffset.addChangeListener(listenerMaleXOffset); + + sliderMaleYOffset.setName("Y offset"); + sliderMaleYOffset.setMinorTickSpacing(10); + sliderMaleYOffset.setPaintTicks(true); + sliderMaleYOffset.setPaintLabels(true); + sliderMaleYOffset.setLabelTable(position); + sliderMaleYOffset.setSnapToTicks(true); + sliderMaleYOffset.addChangeListener(listenerMaleYOffset); + + sliderMaleZOffset.setName("Z offset"); + sliderMaleZOffset.setMinorTickSpacing(10); + sliderMaleZOffset.setPaintTicks(true); + sliderMaleZOffset.setPaintLabels(true); + sliderMaleZOffset.setLabelTable(position); + sliderMaleZOffset.setSnapToTicks(true); + sliderMaleZOffset.addChangeListener(listenerMaleZOffset); + + JPanel sliderPanel = new JPanel(); + sliderPanel.setLayout(new BoxLayout(sliderPanel, BoxLayout.Y_AXIS)); + + JPanel offXPanel = new JPanel(); + offXPanel.setLayout(new BoxLayout(offXPanel, BoxLayout.Y_AXIS)); + offXPanel.add(offsetMaleXStatusText); + offXPanel.add(sliderMaleXOffset); + + JPanel offYPanel = new JPanel(); + offYPanel.setLayout(new BoxLayout(offYPanel, BoxLayout.Y_AXIS)); + offYPanel.add(offsetMaleYStatusText); + offYPanel.add(sliderMaleYOffset); + + JPanel offZPanel = new JPanel(); + offZPanel.setLayout(new BoxLayout(offZPanel, BoxLayout.Y_AXIS)); + offZPanel.add(offsetMaleZStatusText); + offZPanel.add(sliderMaleZOffset); + + sliderPanel.add(offXPanel); + sliderPanel.add(offYPanel); + sliderPanel.add(offZPanel); + + JPanel infoPane = new JPanel(); + infoPane.setAlignmentX(Component.LEFT_ALIGNMENT); + infoPane.setLayout(new BoxLayout(infoPane, BoxLayout.Y_AXIS)); + JLabel defaultsText = new JLabel(" "); + + infoPane.add(defaultsText); + infoPane.add(defaultMaleXStatusText); + infoPane.add(defaultMaleYStatusText); + infoPane.add(defaultMaleZStatusText); + + sliderPanel.add(leftJustify(infoPane)); + return sliderPanel; + } + + public JPanel prepareFemaleSliders() { + // Add positions label in the slider + Hashtable position = new Hashtable<>(); + position.put((int)Byte.MIN_VALUE, new JLabel("" + Byte.MIN_VALUE)); + position.put(0, new JLabel("0")); + position.put((int)Byte.MAX_VALUE, new JLabel("" + Byte.MAX_VALUE)); + + // Setup the sliders + sliderFemaleXOffset.setPaintTicks(true); + sliderFemaleXOffset.setPaintLabels(true); + sliderFemaleXOffset.setLabelTable(position); + sliderFemaleXOffset.setSnapToTicks(true); + sliderFemaleXOffset.addChangeListener(listenerFemaleXOffset); + + sliderFemaleYOffset.setPaintTicks(true); + sliderFemaleYOffset.setPaintLabels(true); + sliderFemaleYOffset.setLabelTable(position); + sliderFemaleYOffset.setSnapToTicks(true); + sliderFemaleYOffset.addChangeListener(listenerFemaleYOffset); + + sliderFemaleZOffset.setPaintTicks(true); + sliderFemaleZOffset.setPaintLabels(true); + sliderFemaleZOffset.setLabelTable(position); + sliderFemaleZOffset.setSnapToTicks(true); + sliderFemaleZOffset.addChangeListener(listenerFemaleZOffset); + + JPanel sliderPanel = new JPanel(); + sliderPanel.setLayout(new BoxLayout(sliderPanel, BoxLayout.Y_AXIS)); + + JPanel offXPanel = new JPanel(); + offXPanel.setLayout(new BoxLayout(offXPanel, BoxLayout.Y_AXIS)); + offXPanel.add(offsetFemaleXStatusText); + offXPanel.add(sliderFemaleXOffset); + + JPanel offYPanel = new JPanel(); + offYPanel.setLayout(new BoxLayout(offYPanel, BoxLayout.Y_AXIS)); + offYPanel.add(offsetFemaleYStatusText); + offYPanel.add(sliderFemaleYOffset); + + JPanel offZPanel = new JPanel(); + offZPanel.setLayout(new BoxLayout(offZPanel, BoxLayout.Y_AXIS)); + offZPanel.add(offsetFemaleZStatusText); + offZPanel.add(sliderFemaleZOffset); + + sliderPanel.add(offXPanel); + sliderPanel.add(offYPanel); + sliderPanel.add(offZPanel); + + JPanel infoPane = new JPanel(); + infoPane.setAlignmentX(Component.LEFT_ALIGNMENT); + infoPane.setLayout(new BoxLayout(infoPane, BoxLayout.Y_AXIS)); + JLabel defaultsText = new JLabel(" "); + + infoPane.add(defaultsText); + infoPane.add(defaultFemaleXStatusText); + infoPane.add(defaultFemaleYStatusText); + infoPane.add(defaultFemaleZStatusText); + + sliderPanel.add(leftJustify(infoPane)); + return sliderPanel; + } + + class SliderMaleOffsetXListener implements ChangeListener { + @Override + public void stateChanged(ChangeEvent e) { + int offset = ((JSlider)e.getSource()).getValue(); + offsetXMale = offset; + offsetMaleXStatusText.setText("X Offset: " + offset); + updateOffsetValues(); + } + } + + class SliderMaleOffsetYListener implements ChangeListener { + @Override + public void stateChanged(ChangeEvent e) { + int offset = ((JSlider)e.getSource()).getValue(); + offsetYMale = offset; + offsetMaleYStatusText.setText("Y Offset: " + offset); + updateOffsetValues(); + } + } + + class SliderMaleOffsetZListener implements ChangeListener { + @Override + public void stateChanged(ChangeEvent e) { + int offset = ((JSlider)e.getSource()).getValue(); + offsetZMale = offset; + offsetMaleZStatusText.setText("Z Offset: " + offset); + updateOffsetValues(); + } + } + + class SliderFemaleOffsetXListener implements ChangeListener { + @Override + public void stateChanged(ChangeEvent e) { + int offset = ((JSlider)e.getSource()).getValue(); + offsetXFemale = offset; + offsetFemaleXStatusText.setText("X Offset: " + offset); + updateOffsetValues(); + } + } + + class SliderFemaleOffsetYListener implements ChangeListener { + @Override + public void stateChanged(ChangeEvent e) { + int offset = ((JSlider)e.getSource()).getValue(); + offsetYFemale = offset; + offsetFemaleYStatusText.setText("Y Offset: " + offset); + updateOffsetValues(); + } + } + + class SliderFemaleOffsetZListener implements ChangeListener { + @Override + public void stateChanged(ChangeEvent e) { + int offset = ((JSlider)e.getSource()).getValue(); + offsetZFemale = offset; + offsetFemaleZStatusText.setText("Z Offset: " + offset); + updateOffsetValues(); + } + } + + class MyIntFilter extends DocumentFilter { + @Override + public void insertString(FilterBypass fb, int offset, String string, AttributeSet attr) throws BadLocationException { + Document doc = fb.getDocument(); + StringBuilder sb = new StringBuilder(); + sb.append(doc.getText(0, doc.getLength())); + sb.insert(offset, string); + + if (test(sb.toString())) { + super.insertString(fb, offset, string, attr); + updateDefaultOffsetValues(Integer.parseInt(sb.toString())); + } else { + // warn the user and don't allow the insert + } + } + + private boolean test(String text) { + try { + Integer.parseInt(text); + return true; + } catch (NumberFormatException e) { + return false; + } + } + + @Override + public void replace(FilterBypass fb, int offset, int length, String text, AttributeSet attrs) throws BadLocationException { + Document doc = fb.getDocument(); + StringBuilder sb = new StringBuilder(); + sb.append(doc.getText(0, doc.getLength())); + sb.replace(offset, offset + length, text); + + if (test(sb.toString())) { + super.replace(fb, offset, length, text, attrs); + updateDefaultOffsetValues(Integer.parseInt(sb.toString())); + } else { + // warn the user and don't allow the insert + } + + } + + @Override + public void remove(FilterBypass fb, int offset, int length) throws BadLocationException { + Document doc = fb.getDocument(); + StringBuilder sb = new StringBuilder(); + sb.append(doc.getText(0, doc.getLength())); + sb.delete(offset, offset + length); + + if (test(sb.toString())) { + super.remove(fb, offset, length); + updateDefaultOffsetValues(Integer.parseInt(sb.toString())); + } else { + // warn the user and don't allow the insert + } + + } + } + } +} diff --git a/Client/src/main/java/org/runite/client/Model.java b/Client/src/main/java/org/runite/client/Model.java new file mode 100644 index 000000000..889ba4af6 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Model.java @@ -0,0 +1,377 @@ +package org.runite.client; + +abstract class Model extends GameObject { + + boolean aBoolean2699 = false; + + private static int method1878(int[][] var0, int var1, int var2) { + int var3 = var1 >> 7; + int var4 = var2 >> 7; + if (var3 >= 0 && var4 >= 0 && var3 < var0.length && var4 < var0[0].length) { + int var5 = var1 & 127; + int var6 = var2 & 127; + int var7 = var0[var3][var4] * (128 - var5) + var0[var3 + 1][var4] * var5 >> 7; + int var8 = var0[var3][var4 + 1] * (128 - var5) + var0[var3 + 1][var4 + 1] * var5 >> 7; + return var7 * (128 - var6) + var8 * var6 >> 7; + } else { + return 0; + } + } + + abstract int method1872(); + + abstract int method1871(); + + abstract boolean method1873(); + + abstract void method1874(); + + private void method1875(Class3_Sub17 var1, AnimationHeader var2, AnimationHeader var3, int var4, int var5, boolean[] var6, boolean var7, boolean var8, int var9, int[] var10) { + int var11; + if (var3 == null || var4 == 0) { + for (var11 = 0; var11 < var2.anInt1383; ++var11) { + short var12 = var2.aShortArray1385[var11]; + if (var6 == null || var6[var12] == var7 || var1.anIntArray2466[var12] == 0) { + short var13 = var2.aShortArray1387[var11]; + int var14; + if (var13 != -1) { + var14 = var9 & var1.anIntArray2455[var13]; + if (var14 == 65535) { + this.method1891(0, var1.anIntArrayArray2460[var13], 0, 0, 0, var8); + } else { + this.method1899(0, var1.anIntArrayArray2460[var13], 0, 0, 0, var8, var14, var10); + } + } + + var14 = var9 & var1.anIntArray2455[var12]; + if (var14 == 65535) { + this.method1891(var1.anIntArray2466[var12], var1.anIntArrayArray2460[var12], var2.aShortArray1388[var11], var2.aShortArray1396[var11], var2.aShortArray1395[var11], var8); + } else { + this.method1899(var1.anIntArray2466[var12], var1.anIntArrayArray2460[var12], var2.aShortArray1388[var11], var2.aShortArray1396[var11], var2.aShortArray1395[var11], var8, var14, var10); + } + } + } + + } else { + var11 = 0; + int var34 = 0; + + for (int var35 = 0; var35 < var1.anInt2462; ++var35) { + boolean var36 = false; + if (var11 < var2.anInt1383 && var2.aShortArray1385[var11] == var35) { + var36 = true; + } + + boolean var15 = false; + if (var34 < var3.anInt1383 && var3.aShortArray1385[var34] == var35) { + var15 = true; + } + + if (var36 || var15) { + if (var6 != null && var6[var35] != var7 && var1.anIntArray2466[var35] != 0) { + if (var36) { + ++var11; + } + + if (var15) { + ++var34; + } + } else { + short var16 = 0; + int var17 = var1.anIntArray2466[var35]; + if (var17 == 3) { + var16 = 128; + } + + short var19; + short var18; + short var21; + short var20; + byte var22; + if (var36) { + var18 = var2.aShortArray1388[var11]; + var19 = var2.aShortArray1396[var11]; + var20 = var2.aShortArray1395[var11]; + var21 = var2.aShortArray1387[var11]; + var22 = var2.aByteArray1393[var11]; + ++var11; + } else { + var18 = var16; + var19 = var16; + var20 = var16; + var21 = -1; + var22 = 0; + } + + short var23; + short var25; + short var24; + byte var27; + short var26; + if (var15) { + var23 = var3.aShortArray1388[var34]; + var24 = var3.aShortArray1396[var34]; + var25 = var3.aShortArray1395[var34]; + var26 = var3.aShortArray1387[var34]; + var27 = var3.aByteArray1393[var34]; + ++var34; + } else { + var23 = var16; + var24 = var16; + var25 = var16; + var26 = -1; + var27 = 0; + } + + int var29; + int var28; + int var31; + int var30; + if ((var22 & 2) == 0 && (var27 & 1) == 0) { + if (var17 == 2) { + var31 = var23 - var18 & 0x7FF; + int var32 = var24 - var19 & 0x7FF; + int var33 = var25 - var20 & 0x7FF; + if (var31 >= 1024) { + var31 -= 2048; + } + + if (var32 >= 1024) { + var32 -= 2048; + } + + if (var33 >= 1024) { + var33 -= 2048; + } + + var28 = var18 + var31 * var4 / var5 & 0x7FF; + var29 = var19 + var32 * var4 / var5 & 0x7FF; + var30 = var20 + var33 * var4 / var5 & 0x7FF; + } else if (var17 == 7) { + var31 = var23 - var18 & 63; + if (var31 >= 32) { + var31 -= 64; + } + + var28 = var18 + var31 * var4 / var5 & 63; + var29 = var19 + (var24 - var19) * var4 / var5; + var30 = var20 + (var25 - var20) * var4 / var5; + } else { + var28 = var18 + (var23 - var18) * var4 / var5; + var29 = var19 + (var24 - var19) * var4 / var5; + var30 = var20 + (var25 - var20) * var4 / var5; + } + } else { + var28 = var18; + var29 = var19; + var30 = var20; + } + + if (var21 != -1) { + var31 = var9 & var1.anIntArray2455[var21]; + if (var31 == 65535) { + this.method1891(0, var1.anIntArrayArray2460[var21], 0, 0, 0, var8); + } else { + this.method1899(0, var1.anIntArrayArray2460[var21], 0, 0, 0, var8, var31, var10); + } + } else if (var26 != -1) { + var31 = var9 & var1.anIntArray2455[var26]; + if (var31 == 65535) { + this.method1891(0, var1.anIntArrayArray2460[var26], 0, 0, 0, var8); + } else { + this.method1899(0, var1.anIntArrayArray2460[var26], 0, 0, 0, var8, var31, var10); + } + } + + var31 = var9 & var1.anIntArray2455[var35]; + if (var31 == 65535) { + this.method1891(var17, var1.anIntArrayArray2460[var35], var28, var29, var30, var8); + } else { + this.method1899(var17, var1.anIntArrayArray2460[var35], var28, var29, var30, var8, var31, var10); + } + } + } + } + + } + } + + abstract void method1876(int var1); + + final void method1877(Class3_Sub28_Sub5 var1, int var2) { + if (var2 != -1) { + if (this.method1873()) { + AnimationHeader var3 = var1.animations[var2]; + Class3_Sub17 var4 = var3.skins; + + for (int var5 = 0; var5 < var3.anInt1383; ++var5) { + short var6 = var3.aShortArray1385[var5]; + if (var4.aBooleanArray2463[var6]) { + if (var3.aShortArray1387[var5] != -1) { + this.method1889(0, 0, 0, 0); + } + + this.method1889(var4.anIntArray2466[var6], var3.aShortArray1388[var5], var3.aShortArray1396[var5], var3.aShortArray1395[var5]); + } + } + + this.method1879(); + } + } + } + + abstract void method1879(); + + final void method1880(Class3_Sub28_Sub5 var1, int var2, Class3_Sub28_Sub5 var3, int var4, int var5, int var6, boolean var7) { + if (var2 != -1) { + if (this.method1873()) { + AnimationHeader var8 = var1.animations[var2]; + Class3_Sub17 var9 = var8.skins; + AnimationHeader var10 = null; + if (var3 != null) { + var10 = var3.animations[var4]; + if (var10.skins != var9) { + var10 = null; + } + } + + this.method1875(var9, var8, var10, var5, var6, null, false, var7, 65535, null); + this.method1879(); + } + } + } + + abstract void resize(int var1, int var2, int var3); + + abstract Model method1882(boolean var1, boolean var2, boolean var3); + + abstract int method1883(); + + abstract int method1884(); + + abstract void method1885(); + + abstract void method1886(int var1); + + final void method1887(Class3_Sub28_Sub5 var1, int var2, Class3_Sub28_Sub5 var3, int var4, int var5, int var6, int var7, boolean var8, int[] var9) { + if (var2 != -1) { + if (this.method1873()) { + AnimationHeader var10 = var1.animations[var2]; + Class3_Sub17 var11 = var10.skins; + AnimationHeader var12 = null; + if (var3 != null) { + var12 = var3.animations[var4]; + if (var12.skins != var11) { + var12 = null; + } + } + + this.method1875(var11, var10, var12, var5, var6, null, false, var8, var7, var9); + this.method1879(); + } + } + } + + abstract int method1888(); + + abstract void method1889(int var1, int var2, int var3, int var4); + + abstract Model method1890(boolean var1, boolean var2, boolean var3); + + abstract void method1891(int var1, int[] var2, int var3, int var4, int var5, boolean var6); + + final void method1892(Class3_Sub28_Sub5 var1, int var2, Class3_Sub28_Sub5 var3, int var4, int var5, int var6, Class3_Sub28_Sub5 var7, int var8, Class3_Sub28_Sub5 var9, int var10, int var11, int var12, boolean[] debugArray530, boolean var14) { + if (var2 != -1) { + if (debugArray530 == null || var8 == -1) { + this.method1880(var1, var2, var3, var4, var5, var6, var14); + } else if (this.method1873()) { + AnimationHeader var15 = var1.animations[var2]; + Class3_Sub17 var16 = var15.skins; + AnimationHeader var17 = null; + if (var3 != null) { + var17 = var3.animations[var4]; + if (var17.skins != var16) { + var17 = null; + } + } + + AnimationHeader var18 = var7.animations[var8]; + AnimationHeader var19 = null; + if (var9 != null) { + var19 = var9.animations[var10]; + if (var19.skins != var16) { + var19 = null; + } + } + + this.method1875(var16, var15, var17, var5, var6, debugArray530, false, var14, 65535, null); + this.method1891(0, new int[0], 0, 0, 0, var14); + this.method1875(var16, var18, var19, var11, var12, debugArray530, true, var14, 65535, null); + this.method1879(); + } + } + } + + abstract void method1893(int var2, int var3, int var4, int var5, int var6, int var7); + + abstract Model method1894(boolean var1, boolean var2, boolean var3); + + final void method1895(int[][] var1, int var2, int var3, int var4, int var5, int var6) { + int var10 = -var5 / 2; + int var11 = -var6 / 2; + int var12 = method1878(var1, var2 + var10, var4 + var11); + int var13 = var5 / 2; + int var14 = -var6 / 2; + int var15 = method1878(var1, var2 + var13, var4 + var14); + int var16 = -var5 / 2; + int var17 = var6 / 2; + int var18 = method1878(var1, var2 + var16, var4 + var17); + int var19 = var5 / 2; + int var20 = var6 / 2; + int var21 = method1878(var1, var2 + var19, var4 + var20); + int var22 = var12 < var15 ? var12 : var15; + int var23 = var18 < var21 ? var18 : var21; + int var24 = var15 < var21 ? var15 : var21; + int var25 = var12 < var18 ? var12 : var18; + if (var6 != 0) { + int var26 = (int) (Math.atan2(var22 - var23, var6) * 325.95D) & 0x7FF; + if (var26 != 0) { + this.method1896(var26); + } + } + + if (var5 != 0) { + int var27 = (int) (Math.atan2(var25 - var24, var5) * 325.95D) & 0x7FF; + if (var27 != 0) { + this.method1886(var27); + } + } + + int var28 = var12 + var21; + if (var15 + var18 < var28) { + var28 = var15 + var18; + } + + var28 = (var28 >> 1) - var3; + if (var28 != 0) { + this.method1897(0, var28, 0); + } + + } + + abstract void method1896(int var1); + + final void method1867(int var1, int var2, int var3, int var4, int var5) { + } + + abstract void method1897(int var1, int var2, int var3); + + abstract int method1898(); + + abstract void animate(int var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, long var9, int var11, Class127_Sub1 var12); + + abstract void method1899(int var1, int[] var2, int var3, int var4, int var5, boolean var6, int var7, int[] var8); + + abstract void method1900(); + +} diff --git a/Client/src/main/java/org/runite/client/Model_Sub1.java b/Client/src/main/java/org/runite/client/Model_Sub1.java new file mode 100644 index 000000000..d160e2227 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Model_Sub1.java @@ -0,0 +1,1771 @@ +package org.runite.client; + +final class Model_Sub1 extends GameObject { + + private static final int[] anIntArray2861 = new int[10000]; + private static final int[] anIntArray2863 = Class51.anIntArray851; + private static final int[] anIntArray2871 = Class51.anIntArray840; + private static final int[] anIntArray2875 = new int[10000]; + private static int anInt2868 = 0; + byte[] aByteArray2843; + byte[] aByteArray2845; + short[] aShortArray2846; + int[] anIntArray2847; + byte aByte2848 = 0; + int anInt2849 = 0; + short[] aShortArray2851; + byte[] aByteArray2852; + short[] aShortArray2855; + int[][] anIntArrayArray2856; + byte[] aByteArray2857; + short[] aShortArray2858; + byte[] aByteArray2859; + int[] anIntArray2860; + int anInt2862; + int[] anIntArray2864; + int[] anIntArray2865; + byte[] aByteArray2866; + byte[] aByteArray2867; + byte[] aByteArray2869; + short[] aShortArray2870; + Class50[] aClass50Array2872; + short aShort2876; + byte[] aByteArray2877; + int[] anIntArray2878; + short aShort2879; + int[] anIntArray2881; + short[] aShortArray2882; + Class50[] aClass50Array2883; + short[] aShortArray2884; + int[] anIntArray2885; + Class120[] aClass120Array2886; + int anInt2887 = 0; + short[] aShortArray2888; + byte[] aByteArray2889; + int[][] anIntArrayArray2890; + short[] aShortArray2891; + int[] anIntArray2892; + short[] aShortArray2893; + private short aShort2844; + private short aShort2850; + private boolean aBoolean2853 = false; + private short aShort2854; + private short aShort2873; + private short aShort2874; + private short aShort2880; + + + private Model_Sub1() { + } + + private Model_Sub1(byte[] var1) { + if (var1[var1.length - 1] == -1 && var1[var1.length - 2] == -1) { + this.method2003(var1); + } else { + this.method2017(var1); + } + + } + + Model_Sub1(int var1, int var2) { + this.anIntArray2885 = new int[var1]; + this.anIntArray2881 = new int[var1]; + this.anIntArray2892 = new int[var1]; + this.anIntArray2860 = new int[var1]; + this.anIntArray2865 = new int[var2]; + this.anIntArray2878 = new int[var2]; + this.anIntArray2864 = new int[var2]; + this.aByteArray2859 = new byte[var2]; + this.aByteArray2889 = new byte[var2]; + this.aByteArray2843 = new byte[var2]; + this.aShortArray2870 = new short[var2]; + this.aShortArray2858 = new short[var2]; + this.aByteArray2866 = new byte[var2]; + this.anIntArray2847 = new int[var2]; + + } + + Model_Sub1(Model_Sub1[] var1, int var2) { + boolean var3 = false; + boolean var4 = false; + boolean var5 = false; + boolean var6 = false; + boolean var7 = false; + boolean var8 = false; + this.anInt2887 = 0; + this.anInt2849 = 0; + this.anInt2862 = 0; + this.aByte2848 = -1; + + int var11; + for (var11 = 0; var11 < var2; ++var11) { + Model_Sub1 var12 = var1[var11]; + if (var12 != null) { + this.anInt2887 += var12.anInt2887; + this.anInt2849 += var12.anInt2849; + this.anInt2862 += var12.anInt2862; + if (var12.aByteArray2889 == null) { + if (this.aByte2848 == -1) { + this.aByte2848 = var12.aByte2848; + } + + if (this.aByte2848 != var12.aByte2848) { + var4 = true; + } + } else { + var4 = true; + } + + var3 |= var12.aByteArray2859 != null; + var5 |= var12.aByteArray2843 != null; + var6 |= var12.anIntArray2847 != null; + var7 |= var12.aShortArray2858 != null; + var8 |= var12.aByteArray2866 != null; + } + } + + this.anIntArray2885 = new int[this.anInt2887]; + this.anIntArray2881 = new int[this.anInt2887]; + this.anIntArray2892 = new int[this.anInt2887]; + this.anIntArray2860 = new int[this.anInt2887]; + this.aShortArray2893 = new short[this.anInt2887]; + this.anIntArray2865 = new int[this.anInt2849]; + this.anIntArray2878 = new int[this.anInt2849]; + this.anIntArray2864 = new int[this.anInt2849]; + if (var3) { + this.aByteArray2859 = new byte[this.anInt2849]; + } + + if (var4) { + this.aByteArray2889 = new byte[this.anInt2849]; + } + + if (var5) { + this.aByteArray2843 = new byte[this.anInt2849]; + } + + if (var6) { + this.anIntArray2847 = new int[this.anInt2849]; + } + + if (var7) { + this.aShortArray2858 = new short[this.anInt2849]; + } + + if (var8) { + this.aByteArray2866 = new byte[this.anInt2849]; + } + + this.aShortArray2870 = new short[this.anInt2849]; + this.aShortArray2855 = new short[this.anInt2849]; + if (this.anInt2862 > 0) { + this.aByteArray2857 = new byte[this.anInt2862]; + this.aShortArray2884 = new short[this.anInt2862]; + this.aShortArray2846 = new short[this.anInt2862]; + this.aShortArray2891 = new short[this.anInt2862]; + this.aShortArray2888 = new short[this.anInt2862]; + this.aShortArray2882 = new short[this.anInt2862]; + this.aShortArray2851 = new short[this.anInt2862]; + this.aByteArray2845 = new byte[this.anInt2862]; + this.aByteArray2867 = new byte[this.anInt2862]; + this.aByteArray2877 = new byte[this.anInt2862]; + this.aByteArray2852 = new byte[this.anInt2862]; + this.aByteArray2869 = new byte[this.anInt2862]; + } + + this.anInt2887 = 0; + this.anInt2849 = 0; + this.anInt2862 = 0; + + for (var11 = 0; var11 < var2; ++var11) { + short var18 = (short) (1 << var11); + Model_Sub1 var13 = var1[var11]; + if (var13 != null) { + int var14; + for (var14 = 0; var14 < var13.anInt2849; ++var14) { + if (var3 && var13.aByteArray2859 != null) { + this.aByteArray2859[this.anInt2849] = var13.aByteArray2859[var14]; + } + + if (var4) { + if (var13.aByteArray2889 == null) { + this.aByteArray2889[this.anInt2849] = var13.aByte2848; + } else { + this.aByteArray2889[this.anInt2849] = var13.aByteArray2889[var14]; + } + } + + if (var5 && var13.aByteArray2843 != null) { + this.aByteArray2843[this.anInt2849] = var13.aByteArray2843[var14]; + } + + if (var6 && var13.anIntArray2847 != null) { + this.anIntArray2847[this.anInt2849] = var13.anIntArray2847[var14]; + } + + if (var7) { + if (var13.aShortArray2858 == null) { + this.aShortArray2858[this.anInt2849] = -1; + } else { + this.aShortArray2858[this.anInt2849] = var13.aShortArray2858[var14]; + } + } + + if (var8) { + if (var13.aByteArray2866 == null || var13.aByteArray2866[var14] == -1) { + this.aByteArray2866[this.anInt2849] = -1; + } else { + this.aByteArray2866[this.anInt2849] = (byte) (var13.aByteArray2866[var14] + this.anInt2862); + } + } + + this.aShortArray2870[this.anInt2849] = var13.aShortArray2870[var14]; + this.aShortArray2855[this.anInt2849] = var18; + this.anIntArray2865[this.anInt2849] = this.method1995(var13, var13.anIntArray2865[var14], var18); + this.anIntArray2878[this.anInt2849] = this.method1995(var13, var13.anIntArray2878[var14], var18); + this.anIntArray2864[this.anInt2849] = this.method1995(var13, var13.anIntArray2864[var14], var18); + ++this.anInt2849; + } + + for (var14 = 0; var14 < var13.anInt2862; ++var14) { + byte var15 = this.aByteArray2857[this.anInt2862] = var13.aByteArray2857[var14]; + if (var15 == 0) { + this.aShortArray2884[this.anInt2862] = (short) this.method1995(var13, var13.aShortArray2884[var14], var18); + this.aShortArray2846[this.anInt2862] = (short) this.method1995(var13, var13.aShortArray2846[var14], var18); + this.aShortArray2891[this.anInt2862] = (short) this.method1995(var13, var13.aShortArray2891[var14], var18); + } + + if (var15 >= 1 && var15 <= 3) { + this.aShortArray2884[this.anInt2862] = var13.aShortArray2884[var14]; + this.aShortArray2846[this.anInt2862] = var13.aShortArray2846[var14]; + this.aShortArray2891[this.anInt2862] = var13.aShortArray2891[var14]; + this.aShortArray2888[this.anInt2862] = var13.aShortArray2888[var14]; + this.aShortArray2882[this.anInt2862] = var13.aShortArray2882[var14]; + this.aShortArray2851[this.anInt2862] = var13.aShortArray2851[var14]; + this.aByteArray2845[this.anInt2862] = var13.aByteArray2845[var14]; + this.aByteArray2867[this.anInt2862] = var13.aByteArray2867[var14]; + this.aByteArray2877[this.anInt2862] = var13.aByteArray2877[var14]; + } + + if (var15 == 2) { + this.aByteArray2852[this.anInt2862] = var13.aByteArray2852[var14]; + this.aByteArray2869[this.anInt2862] = var13.aByteArray2869[var14]; + } + + ++this.anInt2862; + } + } + } + + } + + Model_Sub1(Model_Sub1 var1, boolean var2, boolean var3, boolean var4) { + this.anInt2887 = var1.anInt2887; + this.anInt2849 = var1.anInt2849; + this.anInt2862 = var1.anInt2862; + int var6; + if (var2) { + this.anIntArray2885 = var1.anIntArray2885; + this.anIntArray2881 = var1.anIntArray2881; + this.anIntArray2892 = var1.anIntArray2892; + } else { + this.anIntArray2885 = new int[this.anInt2887]; + this.anIntArray2881 = new int[this.anInt2887]; + this.anIntArray2892 = new int[this.anInt2887]; + + for (var6 = 0; var6 < this.anInt2887; ++var6) { + this.anIntArray2885[var6] = var1.anIntArray2885[var6]; + this.anIntArray2881[var6] = var1.anIntArray2881[var6]; + this.anIntArray2892[var6] = var1.anIntArray2892[var6]; + } + } + + if (var3) { + this.aShortArray2870 = var1.aShortArray2870; + } else { + this.aShortArray2870 = new short[this.anInt2849]; + + for (var6 = 0; var6 < this.anInt2849; ++var6) { + this.aShortArray2870[var6] = var1.aShortArray2870[var6]; + } + } + + if (var4 || var1.aShortArray2858 == null) { + this.aShortArray2858 = var1.aShortArray2858; + } else { + this.aShortArray2858 = new short[this.anInt2849]; + + for (var6 = 0; var6 < this.anInt2849; ++var6) { + this.aShortArray2858[var6] = var1.aShortArray2858[var6]; + } + } + + this.aByteArray2843 = var1.aByteArray2843; + + this.anIntArray2865 = var1.anIntArray2865; + this.anIntArray2878 = var1.anIntArray2878; + this.anIntArray2864 = var1.anIntArray2864; + this.aByteArray2859 = var1.aByteArray2859; + this.aByteArray2889 = var1.aByteArray2889; + this.aByteArray2866 = var1.aByteArray2866; + this.aByte2848 = var1.aByte2848; + this.aByteArray2857 = var1.aByteArray2857; + this.aShortArray2884 = var1.aShortArray2884; + this.aShortArray2846 = var1.aShortArray2846; + this.aShortArray2891 = var1.aShortArray2891; + this.aShortArray2888 = var1.aShortArray2888; + this.aShortArray2882 = var1.aShortArray2882; + this.aShortArray2851 = var1.aShortArray2851; + this.aByteArray2845 = var1.aByteArray2845; + this.aByteArray2867 = var1.aByteArray2867; + this.aByteArray2877 = var1.aByteArray2877; + this.aByteArray2852 = var1.aByteArray2852; + this.aByteArray2869 = var1.aByteArray2869; + this.anIntArray2860 = var1.anIntArray2860; + this.anIntArray2847 = var1.anIntArray2847; + this.anIntArrayArray2890 = var1.anIntArrayArray2890; + this.anIntArrayArray2856 = var1.anIntArrayArray2856; + this.aClass50Array2872 = var1.aClass50Array2872; + this.aClass120Array2886 = var1.aClass120Array2886; + this.aClass50Array2883 = var1.aClass50Array2883; + this.aShort2879 = var1.aShort2879; + this.aShort2876 = var1.aShort2876; + } + + private static int method2009(int[][] var0, int var1, int var2) { + int var3 = var1 >> 7; + int var4 = var2 >> 7; + if (var3 >= 0 && var4 >= 0 && var3 < var0.length && var4 < var0[0].length) { + int var5 = var1 & 127; + int var6 = var2 & 127; + int var7 = var0[var3][var4] * (128 - var5) + var0[var3 + 1][var4] * var5 >> 7; + int var8 = var0[var3][var4 + 1] * (128 - var5) + var0[var3 + 1][var4 + 1] * var5 >> 7; + return var7 * (128 - var6) + var8 * var6 >> 7; + } else { + return 0; + } + } + + static Model_Sub1 method2015(CacheIndex var0, int var1) { + byte[] var3 = var0.getFile(var1, 0); + return var3 == null ? null : new Model_Sub1(var3); + } + + final void method1989() { + for (int var1 = 0; var1 < this.anInt2887; ++var1) { + this.anIntArray2885[var1] = -this.anIntArray2885[var1]; + this.anIntArray2892[var1] = -this.anIntArray2892[var1]; + } + + this.method2007(); + } + + final void method1991() { + for (int var1 = 0; var1 < this.anInt2887; ++var1) { + int var2 = this.anIntArray2885[var1]; + this.anIntArray2885[var1] = this.anIntArray2892[var1]; + this.anIntArray2892[var1] = -var2; + } + + this.method2007(); + } + + private void method1992(int var1) { + int var2 = anIntArray2871[var1]; + int var3 = anIntArray2863[var1]; + + for (int var4 = 0; var4 < this.anInt2887; ++var4) { + int var5 = this.anIntArray2881[var4] * var2 + this.anIntArray2885[var4] * var3 >> 16; + this.anIntArray2881[var4] = this.anIntArray2881[var4] * var3 - this.anIntArray2885[var4] * var2 >> 16; + this.anIntArray2885[var4] = var5; + } + + this.method2007(); + } + + private void method1993() { + if (!this.aBoolean2853) { + this.aBoolean2853 = true; + int var1 = 32767; + int var2 = 32767; + int var3 = 32767; + int var4 = -32768; + int var5 = -32768; + int var6 = -32768; + + for (int var7 = 0; var7 < this.anInt2887; ++var7) { + int var8 = this.anIntArray2885[var7]; + int var9 = this.anIntArray2881[var7]; + int var10 = this.anIntArray2892[var7]; + if (var8 < var1) { + var1 = var8; + } + + if (var8 > var4) { + var4 = var8; + } + + if (var9 < var2) { + var2 = var9; + } + + if (var9 > var5) { + var5 = var9; + } + + if (var10 < var3) { + var3 = var10; + } + + if (var10 > var6) { + var6 = var10; + } + } + + this.aShort2850 = (short) var1; + this.aShort2873 = (short) var4; + this.aShort2854 = (short) var2; + this.aShort2844 = (short) var5; + this.aShort2880 = (short) var3; + this.aShort2874 = (short) var6; + } + } + + final void method1994(int var1, int var2, int var3) { + for (int var4 = 0; var4 < this.anInt2887; ++var4) { + this.anIntArray2885[var4] = this.anIntArray2885[var4] * var1 / 128; + this.anIntArray2881[var4] = this.anIntArray2881[var4] * var2 / 128; + this.anIntArray2892[var4] = this.anIntArray2892[var4] * var3 / 128; + } + + this.method2007(); + } + + final GameObject method1861() { + return this.method2008(this.aShort2879, this.aShort2876, -50, -10, -50); + } + + private int method1995(Model_Sub1 var1, int var2, short var3) { + int var4 = var1.anIntArray2885[var2]; + int var5 = var1.anIntArray2881[var2]; + int var6 = var1.anIntArray2892[var2]; + + for (int var7 = 0; var7 < this.anInt2887; ++var7) { + if (var4 == this.anIntArray2885[var7] && var5 == this.anIntArray2881[var7] && var6 == this.anIntArray2892[var7]) { + this.aShortArray2893[var7] |= var3; + return var7; + } + } + + this.anIntArray2885[this.anInt2887] = var4; + this.anIntArray2881[this.anInt2887] = var5; + this.anIntArray2892[this.anInt2887] = var6; + this.aShortArray2893[this.anInt2887] = var3; + if (var1.anIntArray2860 != null) { + this.anIntArray2860[this.anInt2887] = var1.anIntArray2860[var2]; + } + + return this.anInt2887++; + } + + private void method1996(int[][] var1, int var2, int var3, int var4, int var5, int var6) { + int var10 = -var5 / 2; + int var11 = -var6 / 2; + int var12 = method2009(var1, var2 + var10, var4 + var11); + int var13 = var5 / 2; + int var14 = -var6 / 2; + int var15 = method2009(var1, var2 + var13, var4 + var14); + int var16 = -var5 / 2; + int var17 = var6 / 2; + int var18 = method2009(var1, var2 + var16, var4 + var17); + int var19 = var5 / 2; + int var20 = var6 / 2; + int var21 = method2009(var1, var2 + var19, var4 + var20); + int var22 = var12 < var15 ? var12 : var15; + int var23 = var18 < var21 ? var18 : var21; + int var24 = var15 < var21 ? var15 : var21; + int var25 = var12 < var18 ? var12 : var18; + if (var6 != 0) { + int var26 = (int) (Math.atan2(var22 - var23, var6) * 325.95D) & 0x7FF; + if (var26 != 0) { + this.method2006(var26); + } + } + + if (var5 != 0) { + int var27 = (int) (Math.atan2(var25 - var24, var5) * 325.95D) & 0x7FF; + if (var27 != 0) { + this.method1992(var27); + } + } + + int var28 = var12 + var21; + if (var15 + var18 < var28) { + var28 = var15 + var18; + } + + var28 = (var28 >> 1) - var3; + if (var28 != 0) { + this.method2001(0, var28, 0); + } + + } + + final void animate(int var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, long var9, int var11, Class127_Sub1 var12) { + } + + final void method1997() { + if (this.aClass50Array2872 == null) { + this.aClass50Array2872 = new Class50[this.anInt2887]; + + int var1; + for (var1 = 0; var1 < this.anInt2887; ++var1) { + this.aClass50Array2872[var1] = new Class50(); + } + + for (var1 = 0; var1 < this.anInt2849; ++var1) { + int var2 = this.anIntArray2865[var1]; + int var3 = this.anIntArray2878[var1]; + int var4 = this.anIntArray2864[var1]; + int var5 = this.anIntArray2885[var3] - this.anIntArray2885[var2]; + int var6 = this.anIntArray2881[var3] - this.anIntArray2881[var2]; + int var7 = this.anIntArray2892[var3] - this.anIntArray2892[var2]; + int var8 = this.anIntArray2885[var4] - this.anIntArray2885[var2]; + int var9 = this.anIntArray2881[var4] - this.anIntArray2881[var2]; + int var10 = this.anIntArray2892[var4] - this.anIntArray2892[var2]; + int var11 = var6 * var10 - var9 * var7; + int var12 = var7 * var8 - var10 * var5; + + int var13; + for (var13 = var5 * var9 - var8 * var6; var11 > 8192 || var12 > 8192 || var13 > 8192 || var11 < -8192 || var12 < -8192 || var13 < -8192; var13 >>= 1) { + var11 >>= 1; + var12 >>= 1; + } + + int var14 = (int) Math.sqrt(var11 * var11 + var12 * var12 + var13 * var13); + if (var14 <= 0) { + var14 = 1; + } + + var11 = var11 * 256 / var14; + var12 = var12 * 256 / var14; + var13 = var13 * 256 / var14; + byte var15; + if (this.aByteArray2859 == null) { + var15 = 0; + } else { + var15 = this.aByteArray2859[var1]; + } + + if (var15 == 0) { + Class50 var16 = this.aClass50Array2872[var2]; + var16.anInt831 += var11; + var16.anInt821 += var12; + var16.anInt830 += var13; + ++var16.anInt823; + var16 = this.aClass50Array2872[var3]; + var16.anInt831 += var11; + var16.anInt821 += var12; + var16.anInt830 += var13; + ++var16.anInt823; + var16 = this.aClass50Array2872[var4]; + var16.anInt831 += var11; + var16.anInt821 += var12; + var16.anInt830 += var13; + ++var16.anInt823; + } else if (var15 == 1) { + if (this.aClass120Array2886 == null) { + this.aClass120Array2886 = new Class120[this.anInt2849]; + } + + Class120 var17 = this.aClass120Array2886[var1] = new Class120(); + var17.anInt1634 = var11; + var17.anInt1635 = var12; + var17.anInt1632 = var13; + } + } + + } + } + + final void method1998(short var1, short var2) { + if (this.aShortArray2858 != null) { + for (int var3 = 0; var3 < this.anInt2849; ++var3) { + if (this.aShortArray2858[var3] == var1) { + this.aShortArray2858[var3] = var2; + } + } + + } + } + + final Model_Sub1 method1999(int var1, int var2, int[][] var3, int[][] var4, int var5, int var6, int var7) { + this.method1993(); + int var10 = var5 + this.aShort2850; + int var11 = var5 + this.aShort2873; + int var12 = var7 + this.aShort2880; + int var13 = var7 + this.aShort2874; + if ((var1 == 1 || var1 == 2 || var1 == 3 || var1 == 5) && (var10 < 0 || var11 + 128 >> 7 >= var3.length || var12 < 0 || var13 + 128 >> 7 >= var3[0].length)) { + return this; + } else { + if (var1 == 4 || var1 == 5) { + if (var4 == null) { + return this; + } + + if (var10 < 0 || var11 + 128 >> 7 >= var4.length || var12 < 0 || var13 + 128 >> 7 >= var4[0].length) { + return this; + } + } else { + var10 >>= 7; + var11 = var11 + 127 >> 7; + var12 >>= 7; + var13 = var13 + 127 >> 7; + if (var3[var10][var12] == var6 && var3[var11][var12] == var6 && var3[var10][var13] == var6 && var3[var11][var13] == var6) { + return this; + } + } + + Model_Sub1 var14; + var14 = new Model_Sub1(); + var14.anInt2887 = this.anInt2887; + var14.anInt2849 = this.anInt2849; + var14.anInt2862 = this.anInt2862; + var14.anIntArray2865 = this.anIntArray2865; + var14.anIntArray2878 = this.anIntArray2878; + var14.anIntArray2864 = this.anIntArray2864; + var14.aByteArray2859 = this.aByteArray2859; + var14.aByteArray2889 = this.aByteArray2889; + var14.aByteArray2843 = this.aByteArray2843; + var14.aByteArray2866 = this.aByteArray2866; + var14.aShortArray2870 = this.aShortArray2870; + var14.aShortArray2858 = this.aShortArray2858; + var14.aByte2848 = this.aByte2848; + var14.aByteArray2857 = this.aByteArray2857; + var14.aShortArray2884 = this.aShortArray2884; + var14.aShortArray2846 = this.aShortArray2846; + var14.aShortArray2891 = this.aShortArray2891; + var14.aShortArray2888 = this.aShortArray2888; + var14.aShortArray2882 = this.aShortArray2882; + var14.aShortArray2851 = this.aShortArray2851; + var14.aByteArray2845 = this.aByteArray2845; + var14.aByteArray2867 = this.aByteArray2867; + var14.aByteArray2877 = this.aByteArray2877; + var14.aByteArray2852 = this.aByteArray2852; + var14.aByteArray2869 = this.aByteArray2869; + var14.anIntArray2860 = this.anIntArray2860; + var14.anIntArray2847 = this.anIntArray2847; + var14.anIntArrayArray2890 = this.anIntArrayArray2890; + var14.anIntArrayArray2856 = this.anIntArrayArray2856; + var14.aShort2879 = this.aShort2879; + var14.aShort2876 = this.aShort2876; + var14.aClass50Array2872 = this.aClass50Array2872; + var14.aClass120Array2886 = this.aClass120Array2886; + var14.aClass50Array2883 = this.aClass50Array2883; + if (var1 == 3) { + var14.anIntArray2885 = Class65.method1233(this.anIntArray2885); + var14.anIntArray2881 = Class65.method1233(this.anIntArray2881); + var14.anIntArray2892 = Class65.method1233(this.anIntArray2892); + } else { + var14.anIntArray2885 = this.anIntArray2885; + var14.anIntArray2881 = new int[var14.anInt2887]; + var14.anIntArray2892 = this.anIntArray2892; + } + + int var15; + int var17; + int var16; + int var19; + int var18; + int var21; + int var20; + int var23; + int var22; + int var24; + if (var1 == 1) { + for (var15 = 0; var15 < var14.anInt2887; ++var15) { + var16 = this.anIntArray2885[var15] + var5; + var17 = this.anIntArray2892[var15] + var7; + var18 = var16 & 127; + var19 = var17 & 127; + var20 = var16 >> 7; + var21 = var17 >> 7; + var22 = var3[var20][var21] * (128 - var18) + var3[var20 + 1][var21] * var18 >> 7; + var23 = var3[var20][var21 + 1] * (128 - var18) + var3[var20 + 1][var21 + 1] * var18 >> 7; + var24 = var22 * (128 - var19) + var23 * var19 >> 7; + var14.anIntArray2881[var15] = this.anIntArray2881[var15] + var24 - var6; + } + } else { + int var25; + if (var1 == 2) { + for (var15 = 0; var15 < var14.anInt2887; ++var15) { + var16 = (this.anIntArray2881[var15] << 16) / this.aShort2854; + if (var16 < var2) { + var17 = this.anIntArray2885[var15] + var5; + var18 = this.anIntArray2892[var15] + var7; + var19 = var17 & 127; + var20 = var18 & 127; + var21 = var17 >> 7; + var22 = var18 >> 7; + var23 = var3[var21][var22] * (128 - var19) + var3[var21 + 1][var22] * var19 >> 7; + var24 = var3[var21][var22 + 1] * (128 - var19) + var3[var21 + 1][var22 + 1] * var19 >> 7; + var25 = var23 * (128 - var20) + var24 * var20 >> 7; + var14.anIntArray2881[var15] = this.anIntArray2881[var15] + (var25 - var6) * (var2 - var16) / var2; + } else { + var14.anIntArray2881[var15] = this.anIntArray2881[var15]; + } + } + } else if (var1 == 3) { + var15 = (var2 & 0xFF) * 4; + var16 = (var2 >> 8 & 0xFF) * 4; + this.method1996(var3, var5, var6, var7, var15, var16); + } else if (var1 == 4) { + var15 = this.aShort2844 - this.aShort2854; + + for (var16 = 0; var16 < this.anInt2887; ++var16) { + var17 = this.anIntArray2885[var16] + var5; + var18 = this.anIntArray2892[var16] + var7; + var19 = var17 & 127; + var20 = var18 & 127; + var21 = var17 >> 7; + var22 = var18 >> 7; + var23 = var4[var21][var22] * (128 - var19) + var4[var21 + 1][var22] * var19 >> 7; + var24 = var4[var21][var22 + 1] * (128 - var19) + var4[var21 + 1][var22 + 1] * var19 >> 7; + var25 = var23 * (128 - var20) + var24 * var20 >> 7; + var14.anIntArray2881[var16] = this.anIntArray2881[var16] + (var25 - var6) + var15; + } + } else if (var1 == 5) { + var15 = this.aShort2844 - this.aShort2854; + + for (var16 = 0; var16 < this.anInt2887; ++var16) { + var17 = this.anIntArray2885[var16] + var5; + var18 = this.anIntArray2892[var16] + var7; + var19 = var17 & 127; + var20 = var18 & 127; + var21 = var17 >> 7; + var22 = var18 >> 7; + var23 = var3[var21][var22] * (128 - var19) + var3[var21 + 1][var22] * var19 >> 7; + var24 = var3[var21][var22 + 1] * (128 - var19) + var3[var21 + 1][var22 + 1] * var19 >> 7; + var25 = var23 * (128 - var20) + var24 * var20 >> 7; + var23 = var4[var21][var22] * (128 - var19) + var4[var21 + 1][var22] * var19 >> 7; + var24 = var4[var21][var22 + 1] * (128 - var19) + var4[var21 + 1][var22 + 1] * var19 >> 7; + int var26 = var23 * (128 - var20) + var24 * var20 >> 7; + int var27 = var25 - var26; + var14.anIntArray2881[var16] = ((this.anIntArray2881[var16] << 8) / var15 * var27 >> 8) - (var6 - var25); + } + } + } + + this.aBoolean2853 = false; + + return var14; + } + } + + final Class140_Sub1_Sub2 method2000(int var1, int var2) { + return new Class140_Sub1_Sub2(this, var1, var2, -50, -10, -50); + } + + final void method1867(int var1, int var2, int var3, int var4, int var5) { + } + + final void method2001(int var1, int var2, int var3) { + for (int var4 = 0; var4 < this.anInt2887; ++var4) { + this.anIntArray2885[var4] += var1; + this.anIntArray2881[var4] += var2; + this.anIntArray2892[var4] += var3; + } + + this.method2007(); + } + + final void method2002() { + int var1; + for (var1 = 0; var1 < this.anInt2887; ++var1) { + this.anIntArray2892[var1] = -this.anIntArray2892[var1]; + } + + for (var1 = 0; var1 < this.anInt2849; ++var1) { + int var2 = this.anIntArray2865[var1]; + this.anIntArray2865[var1] = this.anIntArray2864[var1]; + this.anIntArray2864[var1] = var2; + } + + this.method2007(); + } + + final boolean method1865() { + return true; + } + + private void method2003(byte[] var1) { + DataBuffer var2 = new DataBuffer(var1); + DataBuffer var3 = new DataBuffer(var1); + DataBuffer var4 = new DataBuffer(var1); + DataBuffer var5 = new DataBuffer(var1); + DataBuffer var6 = new DataBuffer(var1); + DataBuffer var7 = new DataBuffer(var1); + DataBuffer var8 = new DataBuffer(var1); + var2.index = var1.length - 23; + int var9 = var2.readUnsignedShort(); + int var10 = var2.readUnsignedShort(); + int var11 = var2.readUnsignedByte(); + int var12 = var2.readUnsignedByte(); + boolean var13 = (var12 & 1) == 1; + boolean var14 = (var12 & 2) == 2; + int var15 = var2.readUnsignedByte(); + int var16 = var2.readUnsignedByte(); + int var17 = var2.readUnsignedByte(); + int var18 = var2.readUnsignedByte(); + int var19 = var2.readUnsignedByte(); + int var20 = var2.readUnsignedShort(); + int var21 = var2.readUnsignedShort(); + int var22 = var2.readUnsignedShort(); + int var23 = var2.readUnsignedShort(); + int var24 = var2.readUnsignedShort(); + int var25 = 0; + int var26 = 0; + int var27 = 0; + int var28; + if (var11 > 0) { + this.aByteArray2857 = new byte[var11]; + var2.index = 0; + + for (var28 = 0; var28 < var11; ++var28) { + byte var29 = this.aByteArray2857[var28] = var2.readSignedByte(); + if (var29 == 0) { + ++var25; + } + + if (var29 >= 1 && var29 <= 3) { + ++var26; + } + + if (var29 == 2) { + ++var27; + } + } + } + + var28 = var11 + var9; + int var30 = var28; + if (var13) { + var28 += var10; + } + + int var31 = var28; + var28 += var10; + int var32 = var28; + if (var15 == 255) { + var28 += var10; + } + + int var33 = var28; + if (var17 == 1) { + var28 += var10; + } + + int var34 = var28; + if (var19 == 1) { + var28 += var9; + } + + int var35 = var28; + if (var16 == 1) { + var28 += var10; + } + + int var36 = var28; + var28 += var23; + int var37 = var28; + if (var18 == 1) { + var28 += var10 * 2; + } + + int var38 = var28; + var28 += var24; + int var39 = var28; + var28 += var10 * 2; + int var40 = var28; + var28 += var20; + int var41 = var28; + var28 += var21; + int var42 = var28; + var28 += var22; + int var43 = var28; + var28 += var25 * 6; + int var44 = var28; + var28 += var26 * 6; + int var45 = var28; + var28 += var26 * 6; + int var46 = var28; + var28 += var26; + int var47 = var28; + var28 += var26; + int var48 = var28; + var28 += var26 + var27 * 2; + this.anInt2887 = var9; + this.anInt2849 = var10; + this.anInt2862 = var11; + this.anIntArray2885 = new int[var9]; + this.anIntArray2881 = new int[var9]; + this.anIntArray2892 = new int[var9]; + this.anIntArray2865 = new int[var10]; + this.anIntArray2878 = new int[var10]; + this.anIntArray2864 = new int[var10]; + if (var19 == 1) { + this.anIntArray2860 = new int[var9]; + } + + if (var13) { + this.aByteArray2859 = new byte[var10]; + } + + if (var15 == 255) { + this.aByteArray2889 = new byte[var10]; + } else { + this.aByte2848 = (byte) var15; + } + + if (var16 == 1) { + this.aByteArray2843 = new byte[var10]; + } + + if (var17 == 1) { + this.anIntArray2847 = new int[var10]; + } + + if (var18 == 1) { + this.aShortArray2858 = new short[var10]; + } + + if (var18 == 1 && var11 > 0) { + this.aByteArray2866 = new byte[var10]; + } + + this.aShortArray2870 = new short[var10]; + if (var11 > 0) { + this.aShortArray2884 = new short[var11]; + this.aShortArray2846 = new short[var11]; + this.aShortArray2891 = new short[var11]; + if (var26 > 0) { + this.aShortArray2888 = new short[var26]; + this.aShortArray2882 = new short[var26]; + this.aShortArray2851 = new short[var26]; + this.aByteArray2845 = new byte[var26]; + this.aByteArray2867 = new byte[var26]; + this.aByteArray2877 = new byte[var26]; + } + + if (var27 > 0) { + this.aByteArray2852 = new byte[var27]; + this.aByteArray2869 = new byte[var27]; + } + } + + var2.index = var11; + var3.index = var40; + var4.index = var41; + var5.index = var42; + var6.index = var34; + int var50 = 0; + int var51 = 0; + int var52 = 0; + + int var55; + int var54; + int var53; + int var57; + int var56; + for (var53 = 0; var53 < var9; ++var53) { + var54 = var2.readUnsignedByte(); + var55 = 0; + if ((var54 & 1) != 0) { + var55 = var3.getByteOrShort(); + } + + var56 = 0; + if ((var54 & 2) != 0) { + var56 = var4.getByteOrShort(); + } + + var57 = 0; + if ((var54 & 4) != 0) { + var57 = var5.getByteOrShort(); + } + + this.anIntArray2885[var53] = var50 + var55; + this.anIntArray2881[var53] = var51 + var56; + this.anIntArray2892[var53] = var52 + var57; + var50 = this.anIntArray2885[var53]; + var51 = this.anIntArray2881[var53]; + var52 = this.anIntArray2892[var53]; + if (var19 == 1) { + this.anIntArray2860[var53] = var6.readUnsignedByte(); + } + } + + var2.index = var39; + var3.index = var30; + var4.index = var32; + var5.index = var35; + var6.index = var33; + var7.index = var37; + var8.index = var38; + + for (var53 = 0; var53 < var10; ++var53) { + this.aShortArray2870[var53] = (short) var2.readUnsignedShort(); + if (var13) { + this.aByteArray2859[var53] = var3.readSignedByte(); + } + + if (var15 == 255) { + this.aByteArray2889[var53] = var4.readSignedByte(); + } + + if (var16 == 1) { + this.aByteArray2843[var53] = var5.readSignedByte(); + } + + if (var17 == 1) { + this.anIntArray2847[var53] = var6.readUnsignedByte(); + } + + if (var18 == 1) { + this.aShortArray2858[var53] = (short) (var7.readUnsignedShort() - 1); + } + + if (this.aByteArray2866 != null) { + if (this.aShortArray2858[var53] == -1) { + this.aByteArray2866[var53] = -1; + } else { + this.aByteArray2866[var53] = (byte) (var8.readUnsignedByte() - 1); + } + } + } + + var2.index = var36; + var3.index = var31; + var53 = 0; + var54 = 0; + var55 = 0; + var56 = 0; + + int var58; + for (var57 = 0; var57 < var10; ++var57) { + var58 = var3.readUnsignedByte(); + if (var58 == 1) { + var53 = var2.getByteOrShort() + var56; + var54 = var2.getByteOrShort() + var53; + var55 = var2.getByteOrShort() + var54; + var56 = var55; + this.anIntArray2865[var57] = var53; + this.anIntArray2878[var57] = var54; + this.anIntArray2864[var57] = var55; + } + + if (var58 == 2) { + var54 = var55; + var55 = var2.getByteOrShort() + var56; + var56 = var55; + this.anIntArray2865[var57] = var53; + this.anIntArray2878[var57] = var54; + this.anIntArray2864[var57] = var55; + } + + if (var58 == 3) { + var53 = var55; + var55 = var2.getByteOrShort() + var56; + var56 = var55; + this.anIntArray2865[var57] = var53; + this.anIntArray2878[var57] = var54; + this.anIntArray2864[var57] = var55; + } + + if (var58 == 4) { + int var59 = var53; + var53 = var54; + var54 = var59; + var55 = var2.getByteOrShort() + var56; + var56 = var55; + this.anIntArray2865[var57] = var53; + this.anIntArray2878[var57] = var59; + this.anIntArray2864[var57] = var55; + } + } + + var2.index = var43; + var3.index = var44; + var4.index = var45; + var5.index = var46; + var6.index = var47; + var7.index = var48; + + for (var57 = 0; var57 < var11; ++var57) { + var58 = this.aByteArray2857[var57] & 0xFF; + if (var58 == 0) { + this.aShortArray2884[var57] = (short) var2.readUnsignedShort(); + this.aShortArray2846[var57] = (short) var2.readUnsignedShort(); + this.aShortArray2891[var57] = (short) var2.readUnsignedShort(); + } + + if (var58 == 1) { + this.aShortArray2884[var57] = (short) var3.readUnsignedShort(); + this.aShortArray2846[var57] = (short) var3.readUnsignedShort(); + this.aShortArray2891[var57] = (short) var3.readUnsignedShort(); + this.aShortArray2888[var57] = (short) var4.readUnsignedShort(); + this.aShortArray2882[var57] = (short) var4.readUnsignedShort(); + this.aShortArray2851[var57] = (short) var4.readUnsignedShort(); + this.aByteArray2845[var57] = var5.readSignedByte(); + this.aByteArray2867[var57] = var6.readSignedByte(); + this.aByteArray2877[var57] = var7.readSignedByte(); + } + + if (var58 == 2) { + this.aShortArray2884[var57] = (short) var3.readUnsignedShort(); + this.aShortArray2846[var57] = (short) var3.readUnsignedShort(); + this.aShortArray2891[var57] = (short) var3.readUnsignedShort(); + this.aShortArray2888[var57] = (short) var4.readUnsignedShort(); + this.aShortArray2882[var57] = (short) var4.readUnsignedShort(); + this.aShortArray2851[var57] = (short) var4.readUnsignedShort(); + this.aByteArray2845[var57] = var5.readSignedByte(); + this.aByteArray2867[var57] = var6.readSignedByte(); + this.aByteArray2877[var57] = var7.readSignedByte(); + this.aByteArray2852[var57] = var7.readSignedByte(); + this.aByteArray2869[var57] = var7.readSignedByte(); + } + + if (var58 == 3) { + this.aShortArray2884[var57] = (short) var3.readUnsignedShort(); + this.aShortArray2846[var57] = (short) var3.readUnsignedShort(); + this.aShortArray2891[var57] = (short) var3.readUnsignedShort(); + this.aShortArray2888[var57] = (short) var4.readUnsignedShort(); + this.aShortArray2882[var57] = (short) var4.readUnsignedShort(); + this.aShortArray2851[var57] = (short) var4.readUnsignedShort(); + this.aByteArray2845[var57] = var5.readSignedByte(); + this.aByteArray2867[var57] = var6.readSignedByte(); + this.aByteArray2877[var57] = var7.readSignedByte(); + } + } + + if (var14) { + var2.index = var28; + var57 = var2.readUnsignedByte(); + if (var57 > 0) { + var2.index += 4 * var57; + } + + var58 = var2.readUnsignedByte(); + if (var58 > 0) { + var2.index += 4 * var58; + } + } + + } + + final Model_Sub1 method2004() { + Model_Sub1 var1 = new Model_Sub1(); + if (this.aByteArray2859 != null) { + var1.aByteArray2859 = new byte[this.anInt2849]; + + if (this.anInt2849 >= 0) System.arraycopy(this.aByteArray2859, 0, var1.aByteArray2859, 0, this.anInt2849); + } + + var1.anInt2887 = this.anInt2887; + var1.anInt2849 = this.anInt2849; + var1.anInt2862 = this.anInt2862; + var1.anIntArray2885 = this.anIntArray2885; + var1.anIntArray2881 = this.anIntArray2881; + var1.anIntArray2892 = this.anIntArray2892; + var1.anIntArray2865 = this.anIntArray2865; + var1.anIntArray2878 = this.anIntArray2878; + var1.anIntArray2864 = this.anIntArray2864; + var1.aByteArray2889 = this.aByteArray2889; + var1.aByteArray2843 = this.aByteArray2843; + var1.aByteArray2866 = this.aByteArray2866; + var1.aShortArray2870 = this.aShortArray2870; + var1.aShortArray2858 = this.aShortArray2858; + var1.aByte2848 = this.aByte2848; + var1.aByteArray2857 = this.aByteArray2857; + var1.aShortArray2884 = this.aShortArray2884; + var1.aShortArray2846 = this.aShortArray2846; + var1.aShortArray2891 = this.aShortArray2891; + var1.aShortArray2888 = this.aShortArray2888; + var1.aShortArray2882 = this.aShortArray2882; + var1.aShortArray2851 = this.aShortArray2851; + var1.aByteArray2845 = this.aByteArray2845; + var1.aByteArray2867 = this.aByteArray2867; + var1.aByteArray2877 = this.aByteArray2877; + var1.aByteArray2852 = this.aByteArray2852; + var1.aByteArray2869 = this.aByteArray2869; + var1.anIntArray2860 = this.anIntArray2860; + var1.anIntArray2847 = this.anIntArray2847; + var1.anIntArrayArray2890 = this.anIntArrayArray2890; + var1.anIntArrayArray2856 = this.anIntArrayArray2856; + var1.aClass50Array2872 = this.aClass50Array2872; + var1.aClass120Array2886 = this.aClass120Array2886; + var1.aShort2879 = this.aShort2879; + var1.aShort2876 = this.aShort2876; + return var1; + } + + final void method2005(int var1, int var2, int var3, short var5, byte var6) { + this.anIntArray2865[this.anInt2849] = var1; + this.anIntArray2878[this.anInt2849] = var2; + this.anIntArray2864[this.anInt2849] = var3; + this.aByteArray2859[this.anInt2849] = (byte) 1; + this.aByteArray2866[this.anInt2849] = -1; + this.aShortArray2870[this.anInt2849] = var5; + this.aShortArray2858[this.anInt2849] = -1; + this.aByteArray2843[this.anInt2849] = var6; + this.anInt2849++; + } + + private void method2006(int var1) { + int var2 = anIntArray2871[var1]; + int var3 = anIntArray2863[var1]; + + for (int var4 = 0; var4 < this.anInt2887; ++var4) { + int var5 = this.anIntArray2881[var4] * var3 - this.anIntArray2892[var4] * var2 >> 16; + this.anIntArray2892[var4] = this.anIntArray2881[var4] * var2 + this.anIntArray2892[var4] * var3 >> 16; + this.anIntArray2881[var4] = var5; + } + + this.method2007(); + } + + private void method2007() { + this.aClass50Array2872 = null; + this.aClass50Array2883 = null; + this.aClass120Array2886 = null; + this.aBoolean2853 = false; + } + + final Model method2008(int var1, int var2, int var3, int var4, int var5) { + if (HDToolKit.highDetail) { + Class140_Sub1_Sub1 var6 = new Class140_Sub1_Sub1(this, var1, var2, true); + var6.method1908(); + return var6; + } else { + return new Class140_Sub1_Sub2(this, var1, var2, var3, var4, var5); + } + } + + final int method1871() { + if (!this.aBoolean2853) { + this.method1993(); + } + + return this.aShort2854; + } + + final void method2010() { + this.anIntArray2860 = null; + this.anIntArray2847 = null; + this.anIntArrayArray2890 = null; + this.anIntArrayArray2856 = null; + } + + final void method1866(GameObject var1, int var2, int var3, int var4, boolean var5) { + Model_Sub1 var6 = (Model_Sub1) var1; + var6.method1993(); + var6.method1997(); + ++anInt2868; + int var7 = 0; + int[] var8 = var6.anIntArray2885; + int var9 = var6.anInt2887; + + int var10; + for (var10 = 0; var10 < this.anInt2887; ++var10) { + Class50 var11 = this.aClass50Array2872[var10]; + if (var11.anInt823 != 0) { + int var12 = this.anIntArray2881[var10] - var3; + if (var12 >= var6.aShort2854 && var12 <= var6.aShort2844) { + int var13 = this.anIntArray2885[var10] - var2; + if (var13 >= var6.aShort2850 && var13 <= var6.aShort2873) { + int var14 = this.anIntArray2892[var10] - var4; + if (var14 >= var6.aShort2880 && var14 <= var6.aShort2874) { + for (int var15 = 0; var15 < var9; ++var15) { + Class50 var16 = var6.aClass50Array2872[var15]; + if (var13 == var8[var15] && var14 == var6.anIntArray2892[var15] && var12 == var6.anIntArray2881[var15] && var16.anInt823 != 0) { + if (this.aClass50Array2883 == null) { + this.aClass50Array2883 = new Class50[this.anInt2887]; + } + + if (var6.aClass50Array2883 == null) { + var6.aClass50Array2883 = new Class50[var9]; + } + + Class50 var17 = this.aClass50Array2883[var10]; + if (var17 == null) { + var17 = this.aClass50Array2883[var10] = new Class50(var11); + } + + Class50 var18 = var6.aClass50Array2883[var15]; + if (var18 == null) { + var18 = var6.aClass50Array2883[var15] = new Class50(var16); + } + + var17.anInt831 += var16.anInt831; + var17.anInt821 += var16.anInt821; + var17.anInt830 += var16.anInt830; + var17.anInt823 += var16.anInt823; + var18.anInt831 += var11.anInt831; + var18.anInt821 += var11.anInt821; + var18.anInt830 += var11.anInt830; + var18.anInt823 += var11.anInt823; + ++var7; + anIntArray2861[var10] = anInt2868; + anIntArray2875[var15] = anInt2868; + } + } + } + } + } + } + } + + if (var7 >= 3 && var5) { + for (var10 = 0; var10 < this.anInt2849; ++var10) { + if (anIntArray2861[this.anIntArray2865[var10]] == anInt2868 && anIntArray2861[this.anIntArray2878[var10]] == anInt2868 && anIntArray2861[this.anIntArray2864[var10]] == anInt2868) { + if (this.aByteArray2859 == null) { + this.aByteArray2859 = new byte[this.anInt2849]; + } + + this.aByteArray2859[var10] = 2; + } + } + + for (var10 = 0; var10 < var6.anInt2849; ++var10) { + if (anIntArray2875[var6.anIntArray2865[var10]] == anInt2868 && anIntArray2875[var6.anIntArray2878[var10]] == anInt2868 && anIntArray2875[var6.anIntArray2864[var10]] == anInt2868) { + if (var6.aByteArray2859 == null) { + var6.aByteArray2859 = new byte[var6.anInt2849]; + } + + var6.aByteArray2859[var10] = 2; + } + } + + } + } + + final void method2011() { + int var2 = anIntArray2871[256]; + int var3 = anIntArray2863[256]; + + for (int var4 = 0; var4 < this.anInt2887; ++var4) { + int var5 = this.anIntArray2892[var4] * var2 + this.anIntArray2885[var4] * var3 >> 16; + this.anIntArray2892[var4] = this.anIntArray2892[var4] * var3 - this.anIntArray2885[var4] * var2 >> 16; + this.anIntArray2885[var4] = var5; + } + + this.method2007(); + } + + final void method2012() { + int[] var1; + int var2; + int var3; + int var4; + if (this.anIntArray2860 != null) { + var1 = new int[256]; + var2 = 0; + + for (var3 = 0; var3 < this.anInt2887; ++var3) { + var4 = this.anIntArray2860[var3]; + ++var1[var4]; + if (var4 > var2) { + var2 = var4; + } + } + + this.anIntArrayArray2890 = new int[var2 + 1][]; + + for (var3 = 0; var3 <= var2; ++var3) { + this.anIntArrayArray2890[var3] = new int[var1[var3]]; + var1[var3] = 0; + } + + for (var3 = 0; var3 < this.anInt2887; this.anIntArrayArray2890[var4][var1[var4]++] = var3++) { + var4 = this.anIntArray2860[var3]; + } + + this.anIntArray2860 = null; + } + + if (this.anIntArray2847 != null) { + var1 = new int[256]; + var2 = 0; + + for (var3 = 0; var3 < this.anInt2849; ++var3) { + var4 = this.anIntArray2847[var3]; + ++var1[var4]; + if (var4 > var2) { + var2 = var4; + } + } + + this.anIntArrayArray2856 = new int[var2 + 1][]; + + for (var3 = 0; var3 <= var2; ++var3) { + this.anIntArrayArray2856[var3] = new int[var1[var3]]; + var1[var3] = 0; + } + + for (var3 = 0; var3 < this.anInt2849; this.anIntArrayArray2856[var4][var1[var4]++] = var3++) { + var4 = this.anIntArray2847[var3]; + } + + this.anIntArray2847 = null; + } + + } + + final void method2013(int var1, int var2, int var3) { + int var4; + int var5; + int var6; + int var7; + if (var3 != 0) { + var4 = anIntArray2871[var3]; + var5 = anIntArray2863[var3]; + + for (var6 = 0; var6 < this.anInt2887; ++var6) { + var7 = this.anIntArray2881[var6] * var4 + this.anIntArray2885[var6] * var5 >> 16; + this.anIntArray2881[var6] = this.anIntArray2881[var6] * var5 - this.anIntArray2885[var6] * var4 >> 16; + this.anIntArray2885[var6] = var7; + } + } + + if (var1 != 0) { + var4 = anIntArray2871[var1]; + var5 = anIntArray2863[var1]; + + for (var6 = 0; var6 < this.anInt2887; ++var6) { + var7 = this.anIntArray2881[var6] * var5 - this.anIntArray2892[var6] * var4 >> 16; + this.anIntArray2892[var6] = this.anIntArray2881[var6] * var4 + this.anIntArray2892[var6] * var5 >> 16; + this.anIntArray2881[var6] = var7; + } + } + + if (var2 != 0) { + var4 = anIntArray2871[var2]; + var5 = anIntArray2863[var2]; + + for (var6 = 0; var6 < this.anInt2887; ++var6) { + var7 = this.anIntArray2892[var6] * var4 + this.anIntArray2885[var6] * var5 >> 16; + this.anIntArray2892[var6] = this.anIntArray2892[var6] * var5 - this.anIntArray2885[var6] * var4 >> 16; + this.anIntArray2885[var6] = var7; + } + } + + } + + final int method2014(int var1, int var3) { + for (int var4 = 0; var4 < this.anInt2887; ++var4) { + if (this.anIntArray2885[var4] == var1 && this.anIntArray2881[var4] == 0 && this.anIntArray2892[var4] == var3) { + return var4; + } + } + + this.anIntArray2885[this.anInt2887] = var1; + this.anIntArray2881[this.anInt2887] = 0; + this.anIntArray2892[this.anInt2887] = var3; + return this.anInt2887++; + } + + final void method2016(short var1, short var2) { + for (int var3 = 0; var3 < this.anInt2849; ++var3) { + if (this.aShortArray2870[var3] == var1) { + this.aShortArray2870[var3] = var2; + } + } + + } + + private void method2017(byte[] var1) { + boolean var2 = false; + boolean var3 = false; + DataBuffer var4 = new DataBuffer(var1); + DataBuffer var5 = new DataBuffer(var1); + DataBuffer var6 = new DataBuffer(var1); + DataBuffer var7 = new DataBuffer(var1); + DataBuffer var8 = new DataBuffer(var1); + var4.index = var1.length - 18; + int var9 = var4.readUnsignedShort(); + int var10 = var4.readUnsignedShort(); + int var11 = var4.readUnsignedByte(); + int var12 = var4.readUnsignedByte(); + int var13 = var4.readUnsignedByte(); + int var14 = var4.readUnsignedByte(); + int var15 = var4.readUnsignedByte(); + int var16 = var4.readUnsignedByte(); + int var17 = var4.readUnsignedShort(); + int var18 = var4.readUnsignedShort(); + var4.readUnsignedShort(); + int var20 = var4.readUnsignedShort(); + byte var21 = 0; + int var45 = var21 + var9; + int var23 = var45; + var45 += var10; + int var24 = var45; + if (var13 == 255) { + var45 += var10; + } + + int var25 = var45; + if (var15 == 1) { + var45 += var10; + } + + int var26 = var45; + if (var12 == 1) { + var45 += var10; + } + + int var27 = var45; + if (var16 == 1) { + var45 += var9; + } + + int var28 = var45; + if (var14 == 1) { + var45 += var10; + } + + int var29 = var45; + var45 += var20; + int var30 = var45; + var45 += var10 * 2; + int var31 = var45; + var45 += var11 * 6; + int var32 = var45; + var45 += var17; + int var33 = var45; + var45 += var18; + this.anInt2887 = var9; + this.anInt2849 = var10; + this.anInt2862 = var11; + this.anIntArray2885 = new int[var9]; + this.anIntArray2881 = new int[var9]; + this.anIntArray2892 = new int[var9]; + this.anIntArray2865 = new int[var10]; + this.anIntArray2878 = new int[var10]; + this.anIntArray2864 = new int[var10]; + if (var11 > 0) { + this.aByteArray2857 = new byte[var11]; + this.aShortArray2884 = new short[var11]; + this.aShortArray2846 = new short[var11]; + this.aShortArray2891 = new short[var11]; + } + + if (var16 == 1) { + this.anIntArray2860 = new int[var9]; + } + + if (var12 == 1) { + this.aByteArray2859 = new byte[var10]; + this.aByteArray2866 = new byte[var10]; + this.aShortArray2858 = new short[var10]; + } + + if (var13 == 255) { + this.aByteArray2889 = new byte[var10]; + } else { + this.aByte2848 = (byte) var13; + } + + if (var14 == 1) { + this.aByteArray2843 = new byte[var10]; + } + + if (var15 == 1) { + this.anIntArray2847 = new int[var10]; + } + + this.aShortArray2870 = new short[var10]; + var4.index = var21; + var5.index = var32; + var6.index = var33; + var7.index = var45; + var8.index = var27; + int var35 = 0; + int var36 = 0; + int var37 = 0; + + int var38; + int var39; + int var42; + int var40; + int var41; + for (var38 = 0; var38 < var9; ++var38) { + var39 = var4.readUnsignedByte(); + var40 = 0; + if ((var39 & 1) != 0) { + var40 = var5.getByteOrShort(); + } + + var41 = 0; + if ((var39 & 2) != 0) { + var41 = var6.getByteOrShort(); + } + + var42 = 0; + if ((var39 & 4) != 0) { + var42 = var7.getByteOrShort(); + } + + this.anIntArray2885[var38] = var35 + var40; + this.anIntArray2881[var38] = var36 + var41; + this.anIntArray2892[var38] = var37 + var42; + var35 = this.anIntArray2885[var38]; + var36 = this.anIntArray2881[var38]; + var37 = this.anIntArray2892[var38]; + if (var16 == 1) { + this.anIntArray2860[var38] = var8.readUnsignedByte(); + } + } + + var4.index = var30; + var5.index = var26; + var6.index = var24; + var7.index = var28; + var8.index = var25; + + for (var38 = 0; var38 < var10; ++var38) { + this.aShortArray2870[var38] = (short) var4.readUnsignedShort(); + if (var12 == 1) { + var39 = var5.readUnsignedByte(); + if ((var39 & 1) == 1) { + this.aByteArray2859[var38] = 1; + var2 = true; + } else { + this.aByteArray2859[var38] = 0; + } + + if ((var39 & 2) == 2) { + this.aByteArray2866[var38] = (byte) (var39 >> 2); + this.aShortArray2858[var38] = this.aShortArray2870[var38]; + this.aShortArray2870[var38] = 127; + if (this.aShortArray2858[var38] != -1) { + var3 = true; + } + } else { + this.aByteArray2866[var38] = -1; + this.aShortArray2858[var38] = -1; + } + } + + if (var13 == 255) { + this.aByteArray2889[var38] = var6.readSignedByte(); + } + + if (var14 == 1) { + this.aByteArray2843[var38] = var7.readSignedByte(); + } + + if (var15 == 1) { + this.anIntArray2847[var38] = var8.readUnsignedByte(); + } + } + + var4.index = var29; + var5.index = var23; + var38 = 0; + var39 = 0; + var40 = 0; + var41 = 0; + + int var43; + int var44; + for (var42 = 0; var42 < var10; ++var42) { + var43 = var5.readUnsignedByte(); + if (var43 == 1) { + var38 = var4.getByteOrShort() + var41; + var39 = var4.getByteOrShort() + var38; + var40 = var4.getByteOrShort() + var39; + var41 = var40; + this.anIntArray2865[var42] = var38; + this.anIntArray2878[var42] = var39; + this.anIntArray2864[var42] = var40; + } + + if (var43 == 2) { + var39 = var40; + var40 = var4.getByteOrShort() + var41; + var41 = var40; + this.anIntArray2865[var42] = var38; + this.anIntArray2878[var42] = var39; + this.anIntArray2864[var42] = var40; + } + + if (var43 == 3) { + var38 = var40; + var40 = var4.getByteOrShort() + var41; + var41 = var40; + this.anIntArray2865[var42] = var38; + this.anIntArray2878[var42] = var39; + this.anIntArray2864[var42] = var40; + } + + if (var43 == 4) { + var44 = var38; + var38 = var39; + var39 = var44; + var40 = var4.getByteOrShort() + var41; + var41 = var40; + this.anIntArray2865[var42] = var38; + this.anIntArray2878[var42] = var44; + this.anIntArray2864[var42] = var40; + } + } + + var4.index = var31; + + for (var42 = 0; var42 < var11; ++var42) { + this.aByteArray2857[var42] = 0; + this.aShortArray2884[var42] = (short) var4.readUnsignedShort(); + this.aShortArray2846[var42] = (short) var4.readUnsignedShort(); + this.aShortArray2891[var42] = (short) var4.readUnsignedShort(); + } + + if (this.aByteArray2866 != null) { + boolean var46 = false; + + for (var43 = 0; var43 < var10; ++var43) { + var44 = this.aByteArray2866[var43] & 0xFF; + if (var44 != 255) { + if ((this.aShortArray2884[var44] & 65535) == this.anIntArray2865[var43] && (this.aShortArray2846[var44] & 65535) == this.anIntArray2878[var43] && (this.aShortArray2891[var44] & 65535) == this.anIntArray2864[var43]) { + this.aByteArray2866[var43] = -1; + } else { + var46 = true; + } + } + } + + if (!var46) { + this.aByteArray2866 = null; + } + } + + if (!var3) { + this.aShortArray2858 = null; + } + + if (!var2) { + this.aByteArray2859 = null; + } + + } + + final void method2018() { + for (int var1 = 0; var1 < this.anInt2887; ++var1) { + int var2 = this.anIntArray2892[var1]; + this.anIntArray2892[var1] = this.anIntArray2885[var1]; + this.anIntArray2885[var1] = -var2; + } + + this.method2007(); + } + +} diff --git a/Client/src/main/java/org/runite/client/MouseListeningClass.java b/Client/src/main/java/org/runite/client/MouseListeningClass.java new file mode 100644 index 000000000..38fa58951 --- /dev/null +++ b/Client/src/main/java/org/runite/client/MouseListeningClass.java @@ -0,0 +1,186 @@ +package org.runite.client; + +import javax.swing.*; +import java.awt.event.*; + +public final class MouseListeningClass implements MouseListener, MouseMotionListener, FocusListener { + static volatile int anInt1340 = -1; + public int mouseWheelX; + public int mouseWheelY; + static float[] aFloatArray1919 = new float[4]; + static int[] anIntArray1920; + static int anInt1921 = 0; + static int anInt1923; + public static int anInt1924 = 0; + static int anInt1925 = 0; + static int anInt1926; + + public final synchronized void mouseMoved(MouseEvent var1) { + try { + if (Unsorted.aClass149_4047 != null) { + Unsorted.anInt4045 = 0; + Class3_Sub21.anInt2493 = var1.getX(); + anInt1340 = var1.getY(); + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "ug.mouseMoved(" + (var1 != null ? "{...}" : "null") + ')'); + } + } + + public final synchronized void focusLost(FocusEvent var1) { + try { + if (Unsorted.aClass149_4047 != null) { + GraphicDefinition.anInt549 = 0; + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "ug.focusLost(" + (var1 != null ? "{...}" : "null") + ')'); + } + } + +// static void method2089() +// { +// try +// { +// Class158_Sub1.aReferenceCache_2982.clearSoftReferences(); +// } +// catch (RuntimeException var2) +// { +// throw ClientErrorException.clientError(var2, "ug.D(" + (byte) 115 + ')'); +// } +// } + + public final synchronized void mouseDragged(MouseEvent var1) { + try { + int x = var1.getX(); + int y = var1.getY(); + if (SwingUtilities.isMiddleMouseButton(var1)) { + int accelX = this.mouseWheelX - x; + int accelY = this.mouseWheelY - y; + this.mouseWheelX = var1.getX(); + this.mouseWheelY = var1.getY(); + GraphicDefinition.CAMERA_DIRECTION += accelX * 2; + Unsorted.anInt2309 -= (accelY << 1); + return; + } + if (Unsorted.aClass149_4047 != null) { + Unsorted.anInt4045 = 0; + Class3_Sub21.anInt2493 = var1.getX(); + anInt1340 = var1.getY(); + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "ug.mouseDragged(" + (var1 != null ? "{...}" : "null") + ')'); + } + } + + public final synchronized void mouseReleased(MouseEvent var1) { + try { + if (Unsorted.aClass149_4047 != null) { + Unsorted.anInt4045 = 0; + GraphicDefinition.anInt549 = 0; + } + if (var1.isPopupTrigger()) { + var1.consume(); + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "ug.mouseReleased(" + (var1 != null ? "{...}" : "null") + ')'); + } + } + + public final void mouseClicked(MouseEvent var1) { + try { + if (var1.isPopupTrigger()) { + var1.consume(); + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "ug.mouseClicked(" + (var1 != null ? "{...}" : "null") + ')'); + } + } + + public final void focusGained(FocusEvent var1) { + } + + static void method2090() { + try { + if (Unsorted.aClass149_4047 != null) { + MouseListeningClass var1 = Unsorted.aClass149_4047; + synchronized (var1) { + Unsorted.aClass149_4047 = null; + } + } + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "ug.F(" + 8 + ')'); + } + } + + public final synchronized void mousePressed(MouseEvent var1) { + try { + if (SwingUtilities.isMiddleMouseButton(var1)) { + this.mouseWheelX = var1.getX(); + this.mouseWheelY = var1.getY(); + return; + } + if (Unsorted.aClass149_4047 != null) { + Unsorted.anInt4045 = 0; + RenderAnimationDefinition.anInt362 = var1.getX(); + TextureOperation14.anInt3389 = var1.getY(); + Class140_Sub6.aLong2926 = TimeUtils.time(); + if (var1.getButton() == MouseEvent.BUTTON3) // SwingUtilities.isRightMouseButton(var1) + { + Class140_Sub3.anInt2743 = 2; + GraphicDefinition.anInt549 = 2; + } else if (SwingUtilities.isLeftMouseButton(var1)) { + Class140_Sub3.anInt2743 = 1; + GraphicDefinition.anInt549 = 1; + } + } + if (var1.isPopupTrigger()) { + var1.consume(); + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "ug.mousePressed(" + (var1 != null ? "{...}" : "null") + ')'); + } + } + + public final synchronized void mouseExited(MouseEvent var1) { + try { + if (Unsorted.aClass149_4047 != null) { + Unsorted.anInt4045 = 0; + Class3_Sub21.anInt2493 = -1; + anInt1340 = -1; + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "ug.mouseExited(" + (var1 != null ? "{...}" : "null") + ')'); + } + } + + static void method2091(int var0) { + try { + if ((GameObject.anIntArray1838 == null) || (GameObject.anIntArray1838.length < var0)) { + GameObject.anIntArray1838 = new int[var0]; + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "ug.E(" + var0 + ',' + 4 + ')'); + } + } + + public final synchronized void mouseEntered(MouseEvent var1) { + try { + if (Unsorted.aClass149_4047 != null) { + Unsorted.anInt4045 = 0; + Class3_Sub21.anInt2493 = var1.getX(); + anInt1340 = var1.getY(); + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "ug.mouseEntered(" + (var1 != null ? "{...}" : "null") + ')'); + } + } + + static void method2092(int var0) { + try { + InterfaceWidget var2 = InterfaceWidget.getWidget(9, var0); + var2.a(); + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "ug.B(" + var0 + ',' + (byte) -47 + ')'); + } + } +} diff --git a/Client/src/main/java/org/runite/client/MouseWheel.java b/Client/src/main/java/org/runite/client/MouseWheel.java new file mode 100644 index 000000000..9ec9c1f8c --- /dev/null +++ b/Client/src/main/java/org/runite/client/MouseWheel.java @@ -0,0 +1,48 @@ +package org.runite.client; + +import java.awt.*; +import java.awt.event.MouseWheelEvent; +import java.awt.event.MouseWheelListener; + +final class MouseWheel extends Class146 implements MouseWheelListener { + + static int moveAmt = 0; + static boolean shiftDown = false; + static boolean ctrlDown = false; + private int anInt2941 = 0; + + final void method2082(Component var2) { + + var2.removeMouseWheelListener(this); + } + + final synchronized int method2078() { + int var2 = this.anInt2941; + this.anInt2941 = 0; + + return var2; + } + + public final synchronized void mouseWheelMoved(MouseWheelEvent var1) { + this.anInt2941 += var1.getWheelRotation(); + moveAmt = var1.getWheelRotation(); + + // Client scroll + if (shiftDown || ctrlDown) { + if ((Client.ZOOM > 1200 && MouseWheel.moveAmt >= 0) || (Client.ZOOM < 100 && MouseWheel.moveAmt <= 0)) { + //Class3_Sub28_Sub12.sendMessage("You cannot zoom any further than this."); + return; + } + Client.ZOOM += MouseWheel.moveAmt >= 0 ? 50 : -50; + //Class3_Sub28_Sub12.sendMessage("Game client is back to default zoom."); + } + + } + + final void method2084(Component var1, int var2) { + if (var2 < -70) { + var1.addMouseWheelListener(this); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/NPC.java b/Client/src/main/java/org/runite/client/NPC.java new file mode 100644 index 000000000..98a606d99 --- /dev/null +++ b/Client/src/main/java/org/runite/client/NPC.java @@ -0,0 +1,301 @@ +package org.runite.client; + +import java.util.Objects; + +public final class NPC extends Entity { + + static boolean aBoolean3975 = false; + static int[] npcSpawnCacheIndices; + public static NPC[] npcs = new NPC[32768]; + static Class3_Sub27 aClass3_Sub27_1154; + static AbstractSprite[] aAbstractSpriteArray3977; + static float aFloat3979; + static int[] anIntArray3986 = new int[32]; + static int anInt3995; + static int[] anIntArray3997 = new int[]{19, 55, 38, 155, 255, 110, 137, 205, 76}; + static int anInt4001; + public NPCDefinition definition; + + static int method1984(int var0, int var1, int var2) { + try { + if (var1 == 38) { + int var3 = 57 * var2 + var0; + var3 ^= var3 << 13; + int var4 = Integer.MAX_VALUE & 1376312589 + (var3 * var3 * 15731 - -789221) * var3; + return (var4 & 133802063) >> 19; + } else { + return 88; + } + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "km.S(" + var0 + ',' + var1 + ',' + var2 + ')'); + } + } + + static byte[] method1985(Object var1, boolean var2) { + try { + if (var1 == null) { + return null; + } else if (var1 instanceof byte[]) { + byte[] var5 = (byte[]) var1; + return var2 ? Class12.method873(var5) : var5; + } else { + if (var1 instanceof Class144) { + Class144 var3 = (Class144) var1; + return var3.getBytes(); + } else { + throw new IllegalArgumentException(); + } + } + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "km.Q(" + "{...}" + ',' + var2 + ')'); + } + } + + static boolean isHighDetail(int var0) { + try { + if (var0 <= 22) { + method1984(-48, 88, 31); + } + + return HDToolKit.highDetail || Unsorted.aBoolean3665; + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "km.O(" + var0 + ')'); + } + } + + static boolean method1988() { + try { + try { + if (Unsorted.anInt154 == 2) { + if (aClass3_Sub27_1154 == null) { + aClass3_Sub27_1154 = Class3_Sub27.method517(Class101.musicIndex_1423, TextureOperation8.anInt3463, Class132.anInt1741); + if (null == aClass3_Sub27_1154) { + return false; + } + } + + if (QuickChatDefinition.aClass83_3579 == null) { + QuickChatDefinition.aClass83_3579 = new Class83(Class40.soundFXIndex_679, Class3_Sub28_Sub20.soundFX2Index_3786); + } + + if (Class101.aClass3_Sub24_Sub4_1421.method470(aClass3_Sub27_1154, Class124.soundFX3Index_1661, QuickChatDefinition.aClass83_3579)) { + Class101.aClass3_Sub24_Sub4_1421.method471(); + Class101.aClass3_Sub24_Sub4_1421.method506(TextureOperation36.anInt3423); + Class101.aClass3_Sub24_Sub4_1421.method490(Unsorted.aBoolean2311, aClass3_Sub27_1154); + Unsorted.anInt154 = 0; + aClass3_Sub27_1154 = null; + QuickChatDefinition.aClass83_3579 = null; + Class101.musicIndex_1423 = null; + return true; + } + } + } catch (Exception var2) { + var2.printStackTrace(); + Class101.aClass3_Sub24_Sub4_1421.method505((byte) -128); + Class101.musicIndex_1423 = null; + aClass3_Sub27_1154 = null; + Unsorted.anInt154 = 0; + QuickChatDefinition.aClass83_3579 = null; + } + + return false; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "km.P(" + false + ')'); + } + } + + static void method273(int[] var0, NPC var2, int[] var3, int[] var4) { + try { + int var5 = 0; + while(var5 < var4.length) { + int var6 = var4[var5]; + int var7 = var0[var5]; + int var8 = var3[var5]; + + for(int var9 = 0; var7 != 0 && var9 < var2.aClass145Array2809.length; ++var9) { + if((1 & var7) != 0) { + if(var6 == -1) { + var2.aClass145Array2809[var9] = null; + } else { + SequenceDefinition var10 = SequenceDefinition.getAnimationDefinition(var6); + Class145 var12 = var2.aClass145Array2809[var9]; + int var11 = var10.delayType; + if(null != var12) { + if(var12.animationId != var6) { + if(SequenceDefinition.getAnimationDefinition(var12.animationId).forcedPriority <= var10.forcedPriority) { + var12 = var2.aClass145Array2809[var9] = null; + } + } else if(var11 == 0) { + var12 = var2.aClass145Array2809[var9] = null; + } else if(var11 == 1) { + var12.anInt1893 = 0; + var12.anInt1894 = 0; + var12.anInt1891 = 1; + var12.anInt1897 = 0; + var12.anInt1900 = var8; + Unsorted.method1470(var2.yAxis, var10, var2.xAxis, false, 0); + } else if(var11 == 2) { + var12.anInt1894 = 0; + } + } + + if(null == var12) { + var12 = var2.aClass145Array2809[var9] = new Class145(); + var12.anInt1891 = 1; + var12.anInt1897 = 0; + var12.anInt1900 = var8; + var12.animationId = var6; + var12.anInt1894 = 0; + var12.anInt1893 = 0; + Unsorted.method1470(var2.yAxis, var10, var2.xAxis, false, 0); + } + } + } + + var7 >>>= 1; + } + + ++var5; + } + + } catch (RuntimeException var13) { + throw ClientErrorException.clientError(var13, "mi.B(" + (var0 != null?"{...}":"null") + ',' + (byte) 92 + ',' + (var2 != null?"{...}":"null") + ',' + (var3 != null?"{...}":"null") + ',' + (var4 != null?"{...}":"null") + ')'); + } + } + + protected final void finalize() { + } + + final int method1871() { + try { + return this.anInt2820; + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "km.MA()"); + } + } + + final void animate(int var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, long var9, int var11, Class127_Sub1 var12) { + try { + if (this.definition != null) { + SequenceDefinition var13 = this.anInt2771 != -1 && this.anInt2828 == 0 ? SequenceDefinition.getAnimationDefinition(this.anInt2771) : null; + SequenceDefinition var14 = -1 != this.anInt2764 && (this.getRenderAnimationType().stand_animation != this.anInt2764 || var13 == null) ? SequenceDefinition.getAnimationDefinition(this.anInt2764) : null; + Model var15 = this.definition.method1476(this.aClass145Array2809, this.anInt2793, (byte) -116, this.anInt2813, this.anInt2776, this.anInt2760, this.anInt2832, var14, this.anInt2802, var13); + if (var15 != null) { + this.anInt2820 = var15.method1871(); + NPCDefinition var16 = this.definition; + if (null != var16.childNPCs) { + var16 = var16.method1471((byte) -110); + } + + Model var17; + if (Class140_Sub6.aBoolean2910 && Objects.requireNonNull(var16).aBoolean1249) { + var17 = Class140_Sub3.method1957(this.definition.aByte1287, this.aBoolean2810, null == var14 ? var13 : var14, this.xAxis, this.definition.aShort1256, this.yAxis, this.definition.aShort1286, this.definition.size, var15, var1, null != var14 ? this.anInt2813 : this.anInt2832, this.anInt2831, this.definition.aByte1275); + if (HDToolKit.highDetail) { + float var18 = HDToolKit.method1852(); + float var19 = HDToolKit.method1839(); + HDToolKit.depthBufferWritingDisabled(); + HDToolKit.method1825(var18, -150.0F + var19); + var17.animate(0, var2, var3, var4, var5, var6, var7, var8, -1L, var11, this.aClass127_Sub1_2801); + HDToolKit.method1830(); + HDToolKit.method1825(var18, var19); + } else { + var17.animate(0, var2, var3, var4, var5, var6, var7, var8, -1L, var11, this.aClass127_Sub1_2801); + } + } + + this.method1971(var15, (byte) -111); + this.method1969((byte) 115, var15, var1); + var17 = null; + if (this.anInt2842 != -1 && -1 != this.anInt2805) { + GraphicDefinition var21 = GraphicDefinition.getGraphicDefinition(this.anInt2842); + var17 = var21.method966(this.anInt2826, this.anInt2805, this.anInt2761); + if (var17 != null) { + var17.method1897(0, -this.anInt2799, 0); + if (var21.aBoolean536) { + if (TextureOperation15.anInt3198 != 0) { + var17.method1896(TextureOperation15.anInt3198); + } + + if (Class3_Sub28_Sub9.anInt3623 != 0) { + var17.method1886(Class3_Sub28_Sub9.anInt3623); + } + + if (0 != TextureOperation16.anInt3111) { + var17.method1897(0, TextureOperation16.anInt3111, 0); + } + } + } + } + + if (HDToolKit.highDetail) { + if (this.definition.size == 1) { + var15.aBoolean2699 = true; + } + + var15.animate(var1, var2, var3, var4, var5, var6, var7, var8, var9, var11, this.aClass127_Sub1_2801); + if (var17 != null) { + if (this.definition.size == 1) { + var17.aBoolean2699 = true; + } + + var17.animate(var1, var2, var3, var4, var5, var6, var7, var8, var9, var11, this.aClass127_Sub1_2801); + } + } else { + if (null != var17) { + var15 = ((Class140_Sub1_Sub2) var15).method1943(var17); + } + + if (this.definition.size == 1) { + var15.aBoolean2699 = true; + } + + var15.animate(var1, var2, var3, var4, var5, var6, var7, var8, var9, var11, this.aClass127_Sub1_2801); + } + + } + } + } catch (RuntimeException var20) { + throw ClientErrorException.clientError(var20, "km.IA(" + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + var5 + ',' + var6 + ',' + var7 + ',' + var8 + ',' + var9 + ',' + var11 + ',' + (var12 != null ? "{...}" : "null") + ')'); + } + } + + final int getRenderAnimationId() { + try { + if (Class158.paramGameTypeID != 0 && this.definition.childNPCs != null) { + NPCDefinition var2 = this.definition.method1471((byte) 21); + if (var2 != null && var2.renderAnimationId != -1) { + return var2.renderAnimationId; + } + } + + return this.renderAnimationId; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "km.B(" + -1 + ')'); + } + } + + final void method1867(int var1, int var2, int var3, int var4, int var5) { + try { + } catch (RuntimeException var7) { + throw ClientErrorException.clientError(var7, "km.IB(" + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + var5 + ')'); + } + } + + public final boolean hasDefinitions() { + try { + + return null != this.definition; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "km.L(" + (byte) 17 + ')'); + } + } + + final void setDefinitions(NPCDefinition var2) { + try { + this.definition = var2; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "km.R(" + -1 + ',' + (var2 != null ? "{...}" : "null") + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/NPCDefinition.java b/Client/src/main/java/org/runite/client/NPCDefinition.java new file mode 100644 index 000000000..c1db5db11 --- /dev/null +++ b/Client/src/main/java/org/runite/client/NPCDefinition.java @@ -0,0 +1,916 @@ +package org.runite.client; + + +import org.rs09.SystemLogger; +import org.rs09.client.Linkable; +import org.rs09.client.config.GameConfig; +import org.rs09.client.data.HashTable; +import org.rs09.client.LinkableInt; + +import java.util.Objects; + +public final class NPCDefinition { + + static SequenceDefinition[] aClass142Array1168 = new SequenceDefinition[14]; + static Class3_Sub28_Sub5[] aClass3_Sub28_Sub5Array3041 = new Class3_Sub28_Sub5[14]; + static CacheIndex modelsIndex_3137; + static Class3_Sub28_Sub5[] aClass3_Sub28_Sub5Array4031 = new Class3_Sub28_Sub5[14]; + static int[] anIntArray912 = new int[14]; + int size = 1; + private short[] aShortArray1246; + private byte[] aByteArray1247; + private short[] aShortArray1248; + boolean aBoolean1249; + private int[] anIntArray1250; + private int anInt1251; + static int anInt1252 = -1; + int anInt1253; + private short[] aShortArray1254; + boolean aBoolean1255 = true; + short aShort1256 = 0; + public int configId; + private int[][] anIntArrayArray1258; + public RSString[] options; + int anInt1260; + private int[][] anIntArrayArray1261; + int anInt1262 = -1; + boolean aBoolean1263; + private int anInt1264; + int anInt1265; + private int anInt1266; + byte aByte1267; + byte aByte1268; + int anInt1269; + public boolean aBoolean1270 = true; + private short[] aShortArray1271; + private HashTable aHashTable_1272; + public RSString NPCName; + int anInt1274; + byte aByte1275; + int anInt1276 = -1; + static int[] varcArray = new int[2000]; + int anInt1278; + int anInt1279; + int renderAnimationId; + private int anInt1282; + public int anInt1283; + public int npcId; + public boolean aBoolean1285; + short aShort1286; + byte aByte1287; + private int[] models; + int anInt1289; + int anInt1290; + int anInt1291; + public int[] childNPCs; + int anInt1293; + private int configFileId; + int anInt1296; + static int anInt1297; + int anInt1298; + + public static NPCDefinition getNPCDefinition(int npcID) { + try { + NPCDefinition def = (NPCDefinition) Unsorted.aReferenceCache_4043.get(npcID); + if (null == def) { + byte[] var3 = Class29.npcConfigIndex_557.getFile(Class38_Sub1.method1031(npcID), Unsorted.method54(npcID)); + def = new NPCDefinition(); + + def.npcId = npcID; + if (null != var3) { + def.method1478(new DataBuffer(var3)); + } + Unsorted.aReferenceCache_4043.put(def, npcID); + } + return def; + } catch (RuntimeException var4) { + SystemLogger.logErr("Unable to parse NPC definition for ID " + npcID + " trace: " + var4); + } + return null; + } + + public final NPCDefinition method1471(byte var1) { + try { + int var2 = -1; + if(this.configId == -1) { + if(this.configFileId != -1) { + var2 = ItemDefinition.ram[this.configFileId]; + } + } else { + var2 = lookupVarbit(this.configId); + } + + int var3; + if(0 <= var2 && -1 + this.childNPCs.length > var2 && this.childNPCs[var2] != -1) { + return getNPCDefinition(this.childNPCs[var2]); + } else { + var3 = this.childNPCs[-1 + this.childNPCs.length]; + return var3 == -1 ?null: getNPCDefinition(var3); + } + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "me.G(" + var1 + ')'); + } + } + + final boolean method1472() { + try { + if(null == this.childNPCs) { + return true; + } else { + int var2 = -1; + if(-1 == this.configId) { + if(this.configFileId != -1) { + var2 = ItemDefinition.ram[this.configFileId]; + } + } else { + var2 = lookupVarbit(this.configId); + } + + if(var2 >= 0 && var2 < -1 + this.childNPCs.length && -1 != this.childNPCs[var2]) { + return true; + } else { + int var3 = this.childNPCs[-1 + this.childNPCs.length]; + return var3 != -1; + } + } + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "me.L(" + (byte) 74 + ')'); + } + } + + final boolean method1474() { + try { + + if(this.childNPCs == null) { + return -1 != this.anInt1262 || this.anInt1293 != -1 || this.anInt1276 != -1; + } else { + for(int var2 = 0; var2 < this.childNPCs.length; ++var2) { + if(this.childNPCs[var2] != -1) { + NPCDefinition var3 = getNPCDefinition(this.childNPCs[var2]); + if(var3.anInt1262 != -1 || var3.anInt1293 != -1 || var3.anInt1276 != -1) { + return true; + } + } + } + + return false; + } + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "me.E(" + -1 + ')'); + } + } + + final int method1475(int var1, int var3) { + try { + if(null == this.aHashTable_1272) { + return var3; + } else { + LinkableInt var4 = (LinkableInt)this.aHashTable_1272.get(var1); + return var4 != null?var4.value :var3; + } + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "me.N(" + var1 + ',' + -26460 + ',' + var3 + ')'); + } + } + + final Model method1476(Class145[] var1, int var2, byte var3, int var4, int var5, int var6, int var7, SequenceDefinition var8, int var9, SequenceDefinition var10) { + try { + if(this.childNPCs == null) { + Model var11 = (Model)CS2Script.aReferenceCache_2442.get(this.npcId); + boolean var12; + int var17; + int var16; + int var19; + int var18; + int var21; + int var20; + int var22; + int var24; + int var27; + int var29; + int var28; + if(null == var11) { + var12 = false; + + for (int model : this.models) { + if (model != -1 && !modelsIndex_3137.method2129((byte) 102, 0, model)) { + var12 = true; + } + } + + if(var12) { + return null; + } + + Model_Sub1[] var14 = new Model_Sub1[this.models.length]; + + for(int var15 = 0; var15 < this.models.length; ++var15) { + if(this.models[var15] != -1) { + var14[var15] = Model_Sub1.method2015(modelsIndex_3137, this.models[var15]); + if(null != this.anIntArrayArray1261 && this.anIntArrayArray1261[var15] != null && var14[var15] != null) { + var14[var15].method2001(this.anIntArrayArray1261[var15][0], this.anIntArrayArray1261[var15][1], this.anIntArrayArray1261[var15][2]); + } + } + } + + RenderAnimationDefinition render = null; + if(-1 != this.renderAnimationId) { + render = Class3_Sub10.getRenderAnimationDefinition(this.renderAnimationId); + } + + if(render != null && null != render.equipment_transforms) { + for(var16 = 0; var16 < render.equipment_transforms.length; ++var16) { + if(render.equipment_transforms[var16] != null && var14.length > var16 && var14[var16] != null) { + var19 = render.equipment_transforms[var16][2]; + var20 = render.equipment_transforms[var16][3]; + var21 = render.equipment_transforms[var16][4]; + var18 = render.equipment_transforms[var16][1]; + var22 = render.equipment_transforms[var16][5]; + var17 = render.equipment_transforms[var16][0]; + if(this.anIntArrayArray1258 == null) { + this.anIntArrayArray1258 = new int[render.equipment_transforms.length][]; + } + + if(null == this.anIntArrayArray1258[var16]) { + int[] var23 = this.anIntArrayArray1258[var16] = new int[15]; + if(var20 == 0 && var21 == 0 && var22 == 0) { + var23[13] = -var18; + var23[14] = -var19; + var23[0] = var23[4] = var23[8] = 32768; + var23[12] = -var17; + } else { + var24 = Class51.anIntArray851[var20] >> 1; + int var25 = Class51.anIntArray840[var20] >> 1; + int var26 = Class51.anIntArray851[var21] >> 1; + var28 = Class51.anIntArray851[var22] >> 1; + var27 = Class51.anIntArray840[var21] >> 1; + var29 = Class51.anIntArray840[var22] >> 1; + var23[3] = var24 * var29 - -16384 >> 15; + var23[8] = 16384 + var24 * var26 >> 15; + var23[5] = -var25; + int var31 = 16384 + var25 * var29 >> 15; + int var30 = var28 * var25 + 16384 >> 15; + var23[1] = 16384 + -var29 * var26 - -(var30 * var27) >> 15; + var23[2] = 16384 + var27 * var24 >> 15; + var23[6] = 16384 + -var27 * var28 + var31 * var26 >> 15; + var23[14] = 16384 + var23[8] * -var19 + -var18 * var23[5] + var23[2] * -var17 >> 15; + var23[4] = 16384 + var24 * var28 >> 15; + var23[7] = 16384 + -var27 * -var29 + var30 * var26 >> 15; + var23[0] = var27 * var31 + var26 * var28 + 16384 >> 15; + var23[12] = 16384 + var23[6] * -var19 + var23[3] * -var18 + -var17 * var23[0] >> 15; + var23[13] = -var19 * var23[7] + -var17 * var23[1] + (-var18 * var23[4] - -16384) >> 15; + } + + var23[10] = var18; + var23[9] = var17; + var23[11] = var19; + } + + if(var20 != 0 || var21 != 0 || var22 != 0) { + var14[var16].method2013(var20, var21, var22); + } + + if(var17 != 0 || 0 != var18 || var19 != 0) { + var14[var16].method2001(var17, var18, var19); + } + } + } + } + + Model_Sub1 var34; + if(var14.length == 1) { + var34 = var14[0]; + } else { + var34 = new Model_Sub1(var14, var14.length); + } + + if(this.aShortArray1248 != null) { + for(var16 = 0; var16 < this.aShortArray1248.length; ++var16) { + if(null != this.aByteArray1247 && var16 < this.aByteArray1247.length) { + Objects.requireNonNull(var34).method2016(this.aShortArray1248[var16], Class136.aShortArray1779[this.aByteArray1247[var16] & 0xFF]); + } else { + Objects.requireNonNull(var34).method2016(this.aShortArray1248[var16], this.aShortArray1254[var16]); + } + } + } + + if(null != this.aShortArray1271) { + for(var16 = 0; this.aShortArray1271.length > var16; ++var16) { + Objects.requireNonNull(var34).method1998(this.aShortArray1271[var16], this.aShortArray1246[var16]); + } + } + + var11 = Objects.requireNonNull(var34).method2008(this.anInt1251 + 64, this.anInt1282 + 850, -30, -50, -30); + if(HDToolKit.highDetail) { + ((Class140_Sub1_Sub1)var11).method1920(false, false, false, false, false, true); + } + + CS2Script.aReferenceCache_2442.put(var11, this.npcId); + } + + var12 = false; + boolean var37 = false; + boolean var35 = false; + boolean var36 = false; + var16 = null != var1?var1.length:0; + for(var17 = 0; var17 < var16; ++var17) { + if(var1[var17] != null) { + SequenceDefinition def = SequenceDefinition.getAnimationDefinition(var1[var17].animationId); + if(null != def.frames) { + aClass142Array1168[var17] = def; + var20 = var1[var17].anInt1891; + var12 = true; + var19 = var1[var17].anInt1893; + var21 = def.frames[var19]; + aClass3_Sub28_Sub5Array3041[var17] = Class3_Sub9.method133(var21 >>> 16); + var21 &= 65535; + anIntArray912[var17] = var21; + if(aClass3_Sub28_Sub5Array3041[var17] != null) { + var35 |= aClass3_Sub28_Sub5Array3041[var17].method561(var21, (byte)124); + var37 |= aClass3_Sub28_Sub5Array3041[var17].method559(var21); + var36 |= def.aBoolean1848; + } + + if((def.aBoolean1846 || ClientCommands.tweeningEnabled) && var20 != -1 && var20 < def.frames.length) { + Class38.anIntArray664[var17] = def.duration[var19]; + Unsorted.anIntArray2574[var17] = var1[var17].anInt1897; + var22 = def.frames[var20]; + aClass3_Sub28_Sub5Array4031[var17] = Class3_Sub9.method133(var22 >>> 16); + var22 &= 65535; + Class30.anIntArray574[var17] = var22; + if(null != aClass3_Sub28_Sub5Array4031[var17]) { + var35 |= aClass3_Sub28_Sub5Array4031[var17].method561(var22, (byte)124); + var37 |= aClass3_Sub28_Sub5Array4031[var17].method559(var22); + } + } else { + Class38.anIntArray664[var17] = 0; + Unsorted.anIntArray2574[var17] = 0; + aClass3_Sub28_Sub5Array4031[var17] = null; + Class30.anIntArray574[var17] = -1; + } + } + } + } + if(!var12 && null == var10 && var8 == null) { + Model var41 = var11.method1894(true, true, true); + if(this.anInt1264 != 128 || this.anInt1266 != 128) { + var41.resize(this.anInt1264, this.anInt1266, this.anInt1264); + } + + return var41; + } else { + var18 = -1; + var17 = -1; + var19 = 0; + Class3_Sub28_Sub5 var40 = null; + Class3_Sub28_Sub5 var43 = null; + int var42; + if(var10 != null) { + var17 = var10.frames[var7]; + var22 = var17 >>> 16; + var17 &= 65535; + var40 = Class3_Sub9.method133(var22); + if(null != var40) { + var35 |= var40.method561(var17, (byte)126); + var37 |= var40.method559(var17); + var36 |= var10.aBoolean1848; + } + + if((var10.aBoolean1846 || ClientCommands.tweeningEnabled) && var5 != -1 && var5 < var10.frames.length) { + var19 = var10.duration[var7]; + var18 = var10.frames[var5]; + var42 = var18 >>> 16; + var18 &= 65535; + if(var22 == var42) { + var43 = var40; + } else { + var43 = Class3_Sub9.method133(var18 >>> 16); + } + + if(var43 != null) { + var35 |= var43.method561(var18, (byte)115); + var37 |= var43.method559(var18); + } + } + } + + var22 = -1; + if(var3 > -63) { + this.parseOpcode(79, 73, null); + } + + var42 = -1; + Class3_Sub28_Sub5 var44 = null; + var24 = 0; + Class3_Sub28_Sub5 var46 = null; + if(var8 != null) { + var22 = var8.frames[var4]; + var27 = var22 >>> 16; + var22 &= 65535; + var44 = Class3_Sub9.method133(var27); + if(var44 != null) { + var35 |= var44.method561(var22, (byte)124); + var37 |= var44.method559(var22); + var36 |= var8.aBoolean1848; + } + + if((var8.aBoolean1846 || ClientCommands.tweeningEnabled) && var2 != -1 && var2 < var8.frames.length) { + var24 = var8.duration[var4]; + var42 = var8.frames[var2]; + var28 = var42 >>> 16; + var42 &= 65535; + if(var27 == var28) { + var46 = var44; + } else { + var46 = Class3_Sub9.method133(var42 >>> 16); + } + + if(null != var46) { + var35 |= var46.method561(var42, (byte)124); + var37 |= var46.method559(var42); + } + } + } + + Model var45 = var11.method1894(!var37, !var35, !var36); + var29 = 1; + + for(var28 = 0; var28 < var16; ++var28) { + if(aClass3_Sub28_Sub5Array3041[var28] != null) { + var45.method1887(aClass3_Sub28_Sub5Array3041[var28], anIntArray912[var28], aClass3_Sub28_Sub5Array4031[var28], Class30.anIntArray574[var28], -1 + Unsorted.anIntArray2574[var28], Class38.anIntArray664[var28], var29, aClass142Array1168[var28].aBoolean1848, this.anIntArrayArray1258[var28]); + } + + var29 <<= 1; + } + + if(var40 != null && var44 != null) { + var45.method1892(var40, var17, var43, var18, var6 + -1, var19, var44, var22, var46, var42, var9 + -1, var24, var10.aBooleanArray1855, var10.aBoolean1848 | var8.aBoolean1848); + } else if(var40 == null) { + if(null != var44) { + var45.method1880(var44, var22, var46, var42, -1 + var9, var24, var8.aBoolean1848); + } + } else { + var45.method1880(var40, var17, var43, var18, var6 + -1, var19, var10.aBoolean1848); + } + + for(var28 = 0; var16 > var28; ++var28) { + aClass3_Sub28_Sub5Array3041[var28] = null; + aClass3_Sub28_Sub5Array4031[var28] = null; + aClass142Array1168[var28] = null; + } + + if(this.anInt1264 != 128 || this.anInt1266 != 128) { + var45.resize(this.anInt1264, this.anInt1266, this.anInt1264); + } + + return var45; + } + } else { + NPCDefinition var33 = this.method1471((byte)32); + return null != var33?var33.method1476(var1, var2, (byte)-102, var4, var5, var6, var7, var8, var9, var10):null; + } + } catch (RuntimeException var32) { + throw ClientErrorException.clientError(var32, "me.M(" + (var1 != null?"{...}":"null") + ',' + var2 + ',' + var3 + ',' + var4 + ',' + var5 + ',' + var6 + ',' + var7 + ',' + (var8 != null?"{...}":"null") + ',' + var9 + ',' + (var10 != null?"{...}":"null") + ')'); + } + } + + final RSString method1477(int var1, RSString var2) { + try { + if(null == this.aHashTable_1272) { + return var2; + } else { + LinkableRSString var4 = (LinkableRSString)this.aHashTable_1272.get(var1); + return (null == var4?var2:var4.value); + } + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "me.I(" + var1 + ',' + (var2 != null?"{...}":"null") + ',' + true + ')'); + } + } + + final void method1478(DataBuffer var1) { + try { + while(true) { + int var3 = var1.readUnsignedByte(); + if(var3 == 0) { + return; + } + + this.parseOpcode(27, var3, var1); + } + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "me.F(" + (var1 != null?"{...}":"null") + ',' + 74 + ')'); + } + } + + static void method1479(int var0) { + try { + TextureOperation13.anInt3362 = -1; + + if(var0 == 37) { + NPC.aFloat3979 = 3.0F; + } else if(50 == var0) { + NPC.aFloat3979 = 4.0F; + } else if (var0 == 75) { + NPC.aFloat3979 = 6.0F; + } else if (var0 == 100) { + NPC.aFloat3979 = 8.0F; + } else if (var0 == 200) { + NPC.aFloat3979 = 16.0F; + } + + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "me.C(" + var0 + ',' + (byte) 56 + ')'); + } + } + + static void method1480(boolean var0, RSString var1) { + try { + short[] var3 = new short[16]; + var1 = var1.toLowercase(); + int var4 = 0; + + for(int var5 = 0; TextureOperation39.itemDefinitionSize > var5; ++var5) { + ItemDefinition var6 = ItemDefinition.getItemDefinition(var5); + if((!var0 || var6.aBoolean807) && var6.anInt791 == -1 && -1 == var6.anInt762 && var6.anInt800 == 0 && var6.name.toLowercase().indexOf(var1, 116) != -1) { + if(var4 >= 250) { + Class99.aShortArray1398 = null; + Unsorted.anInt952 = -1; + return; + } + + if(var3.length <= var4) { + short[] var7 = new short[2 * var3.length]; + + System.arraycopy(var3, 0, var7, 0, var4); + + var3 = var7; + } + + var3[var4++] = (short)var5; + } + } + + Class99.aShortArray1398 = var3; + Entity.anInt2756 = 0; + Unsorted.anInt952 = var4; + RSString[] var10 = new RSString[Unsorted.anInt952]; + + for(int var11 = 0; Unsorted.anInt952 > var11; ++var11) { + var10[var11] = ItemDefinition.getItemDefinition(var3[var11]).name; + } + + TextureOperation3.method307(var10, Class99.aShortArray1398, 77); + } catch (RuntimeException var9) { + throw ClientErrorException.clientError(var9, "me.J(" + var0 + ',' + (var1 != null?"{...}":"null") + ',' + 102 + ')'); + } + } + + final Model getChatModel(SequenceDefinition var1, int var2, int var3, int var4, int var5) { + try { + if(this.childNPCs == null) { + if(null == this.anIntArray1250) { + return null; + } else { + Model var12 = (Model)Class154.aReferenceCache_1964.get(this.npcId); + if(var12 == null) { + boolean var7 = false; + + for(int var8 = 0; this.anIntArray1250.length > var8; ++var8) { + if(!modelsIndex_3137.method2129((byte)-69, 0, this.anIntArray1250[var8])) { + var7 = true; + } + } + + if(var7) { + return null; + } + + Model_Sub1[] var14 = new Model_Sub1[this.anIntArray1250.length]; + + for(int var9 = 0; this.anIntArray1250.length > var9; ++var9) { + var14[var9] = Model_Sub1.method2015(modelsIndex_3137, this.anIntArray1250[var9]); + } + + Model_Sub1 var15; + if(var14.length == 1) { + var15 = var14[0]; + } else { + var15 = new Model_Sub1(var14, var14.length); + } + + int var10; + if(null != this.aShortArray1248) { + for(var10 = 0; var10 < this.aShortArray1248.length; ++var10) { + if(this.aByteArray1247 != null && this.aByteArray1247.length > var10) { + Objects.requireNonNull(var15).method2016(this.aShortArray1248[var10], Class136.aShortArray1779[255 & this.aByteArray1247[var10]]); + } else { + Objects.requireNonNull(var15).method2016(this.aShortArray1248[var10], this.aShortArray1254[var10]); + } + } + } + + if(this.aShortArray1271 != null) { + for(var10 = 0; this.aShortArray1271.length > var10; ++var10) { + Objects.requireNonNull(var15).method1998(this.aShortArray1271[var10], this.aShortArray1246[var10]); + } + } + + var12 = Objects.requireNonNull(var15).method2008(64, 768, -50, -10, -50); + Class154.aReferenceCache_1964.put(var12, this.npcId); + } + + if(null != var1) { + var12 = var1.method2055(var12, (byte)-75, var3, var2, var5); + } + + return var12; + } + } else { + NPCDefinition var6 = this.method1471((byte)-100); + return null == var6?null:var6.getChatModel(var1, var2, var3, 54, var5); + } + } catch (RuntimeException var11) { + throw ClientErrorException.clientError(var11, "me.A(" + (var1 != null?"{...}":"null") + ',' + var2 + ',' + var3 + ',' + var4 + ',' + var5 + ')'); + } + } + + private void parseOpcode(int var1, int opcode, DataBuffer buffer) { + try { + int var4; + int var5; + if(1 == opcode) { + var4 = buffer.readUnsignedByte(); + this.models = new int[var4]; + + for(var5 = 0; var4 > var5; ++var5) { + this.models[var5] = buffer.readUnsignedShort(); + if(this.models[var5] == 65535) { + this.models[var5] = -1; + } + } + } else if(opcode == 2) { + this.NPCName = buffer.readString(); + } else if (opcode == 12) { + this.size = buffer.readUnsignedByte(); + } else if (opcode >= 30 && opcode < 35) { + this.options[-30 + opcode] = buffer.readString(); + if (this.options[-30 + opcode].equalsStringIgnoreCase(TextCore.HasHidden)) { + this.options[opcode - 30] = null; + } + } else if (opcode == 40) { + var4 = buffer.readUnsignedByte(); + this.aShortArray1254 = new short[var4]; + this.aShortArray1248 = new short[var4]; + + for (var5 = 0; var4 > var5; ++var5) { + this.aShortArray1248[var5] = (short) buffer.readUnsignedShort(); + this.aShortArray1254[var5] = (short) buffer.readUnsignedShort(); + } + } else if (opcode == 41) { + var4 = buffer.readUnsignedByte(); + this.aShortArray1246 = new short[var4]; + this.aShortArray1271 = new short[var4]; + + for (var5 = 0; var5 < var4; ++var5) { + this.aShortArray1271[var5] = (short) buffer.readUnsignedShort(); + this.aShortArray1246[var5] = (short) buffer.readUnsignedShort(); + } + } else if (opcode == 42) { + var4 = buffer.readUnsignedByte(); + this.aByteArray1247 = new byte[var4]; + + for (var5 = 0; var4 > var5; ++var5) { + this.aByteArray1247[var5] = buffer.readSignedByte(); + } + } else if (opcode == 60) { + var4 = buffer.readUnsignedByte(); + this.anIntArray1250 = new int[var4]; + + for (var5 = 0; var5 < var4; ++var5) { + this.anIntArray1250[var5] = buffer.readUnsignedShort(); + } + } else if (93 == opcode) { + this.aBoolean1285 = false; + } else if (opcode == 95) { + this.anInt1260 = buffer.readUnsignedShort(); + } else if (opcode == 97) { + this.anInt1264 = buffer.readUnsignedShort(); + } else if (opcode == 98) { + this.anInt1266 = buffer.readUnsignedShort(); + } else if (opcode == 99) { + this.aBoolean1263 = true; + } else if (opcode == 100) { + this.anInt1251 = buffer.readSignedByte(); + } else if (opcode == 101) { + this.anInt1282 = buffer.readSignedByte() * 5; + } else if (opcode == 102) { + this.anInt1269 = buffer.readUnsignedShort(); + } else if (103 == opcode) { + this.anInt1274 = buffer.readUnsignedShort(); + } else { + int var6; + if (106 == opcode || opcode == 118) { + this.configId = buffer.readUnsignedShort(); + var4 = -1; + if (this.configId == 65535) { + this.configId = -1; + } + + this.configFileId = buffer.readUnsignedShort(); + if (this.configFileId == 65535) { + this.configFileId = -1; + } + + if (opcode == 118) { + var4 = buffer.readUnsignedShort(); + if (var4 == 65535) { + var4 = -1; + } + } + + var5 = buffer.readUnsignedByte(); + this.childNPCs = new int[2 + var5]; + + for (var6 = 0; var6 <= var5; ++var6) { + this.childNPCs[var6] = buffer.readUnsignedShort(); + if (this.childNPCs[var6] == 65535) { + this.childNPCs[var6] = -1; + } + } + + this.childNPCs[1 + var5] = var4; + } else if (opcode == 107) { + this.aBoolean1270 = false; + } else if (opcode == 109) { + this.aBoolean1255 = false; + } else if (opcode == 111) { + this.aBoolean1249 = false; + } else if (opcode == 113) { + this.aShort1286 = (short) buffer.readUnsignedShort(); + this.aShort1256 = (short) buffer.readUnsignedShort(); + } else if (opcode == 114) { + this.aByte1287 = buffer.readSignedByte(); + this.aByte1275 = buffer.readSignedByte(); + } else if (opcode == 115) { + buffer.readUnsignedByte(); + buffer.readUnsignedByte(); + } else if (119 == opcode) { + this.aByte1267 = buffer.readSignedByte(); + } else if (121 == opcode) { + this.anIntArrayArray1261 = new int[this.models.length][]; + var4 = buffer.readUnsignedByte(); + + for (var5 = 0; var5 < var4; ++var5) { + var6 = buffer.readUnsignedByte(); + int[] var7 = this.anIntArrayArray1261[var6] = new int[3]; + var7[0] = buffer.readSignedByte(); + var7[1] = buffer.readSignedByte(); + var7[2] = buffer.readSignedByte(); + } + } else if (122 == opcode) { + this.anInt1279 = buffer.readUnsignedShort(); + } else if (opcode == 123) { + this.anInt1265 = buffer.readUnsignedShort(); + } else if (opcode == 125) { + this.aByte1268 = buffer.readSignedByte(); + } else if (126 == opcode) { + this.anInt1283 = buffer.readUnsignedShort(); + } else if (127 == opcode) { + this.renderAnimationId = buffer.readUnsignedShort(); + } else if (128 == opcode) { + buffer.readUnsignedByte(); + } else if (opcode == 134) { + this.anInt1262 = buffer.readUnsignedShort(); + if (this.anInt1262 == 65535) { + this.anInt1262 = -1; + } + + this.anInt1290 = buffer.readUnsignedShort(); + if (this.anInt1290 == 65535) { + this.anInt1290 = -1; + } + + this.anInt1293 = buffer.readUnsignedShort(); + if (this.anInt1293 == 65535) { + this.anInt1293 = -1; + } + + this.anInt1276 = buffer.readUnsignedShort(); + if (this.anInt1276 == 65535) { + this.anInt1276 = -1; + } + + this.anInt1291 = buffer.readUnsignedByte(); + } else if (opcode == 135) { + this.anInt1296 = buffer.readUnsignedByte(); + this.anInt1253 = buffer.readUnsignedShort(); + } else if (opcode == 136) { + this.anInt1289 = buffer.readUnsignedByte(); + this.anInt1278 = buffer.readUnsignedShort(); + } else if (opcode == 137) { + this.anInt1298 = buffer.readUnsignedShort(); + } else if (opcode == 249) { + var4 = buffer.readUnsignedByte(); + if (null == this.aHashTable_1272) { + var5 = Class95.method1585((byte) 109, var4); + this.aHashTable_1272 = new HashTable(var5); + } + + for (var5 = 0; var4 > var5; ++var5) { + boolean var11 = 1 == buffer.readUnsignedByte(); + int var10 = buffer.readMedium(); + Object var8; + if (var11) { + var8 = new LinkableRSString(buffer.readString()); + } else { + var8 = new LinkableInt(buffer.readInt()); + } + + this.aHashTable_1272.put(var10, (Linkable) var8); + } + } + } + + } catch (RuntimeException var9) { + throw ClientErrorException.clientError(var9, "me.H(" + var1 + ',' + opcode + ',' + (buffer != null?"{...}":"null") + ')'); + } + + /** + * Will find a better way to incorporate this without tacking it onto the end of NPCDefinitions at some point. + * Will *Actually* worry about it and make it 100x better when working on the new client. ~ Woah + * + * Checks to see if the Halloween Event is enabled, and then applies the "Trick-or-Treat" option to the NPC's that + * had it during the 2008 Halloween Event + */ + if (GameConfig.HALLOWEEN_EVENT_ENABLED) { + //First Options + /* + None + */ + //Second Options + if (npcId == 307 || npcId == 375 || npcId == 743 || npcId == 744 || npcId == 755 || npcId == 2634 || npcId == 2690 || npcId == 2691 || npcId == 2692) { + options[2] = TextCore.TrickorTreat; + } + //Third Options + if (npcId == 530 || npcId == 531 || npcId == 556 || npcId == 557 || npcId == 558 || npcId == 559 || npcId == 583 || npcId == 585 || npcId == 1860 || npcId == 3299 || npcId == 3671) { + options[3] = TextCore.TrickorTreat; + } + //Fourth Options + if (npcId == 922 || npcId == 970) { + options[4] = TextCore.TrickorTreat; + } + + + } + + } + + public NPCDefinition() { + this.NPCName = TextCore.aString_2006; + this.anInt1260 = -1; + this.aBoolean1285 = true; + this.anInt1253 = -1; + this.anInt1282 = 0; + this.anInt1283 = -1; + this.anInt1264 = 128; + this.aByte1275 = -16; + this.anInt1269 = -1; + this.aByte1267 = 0; + this.aBoolean1249 = true; + this.aShort1286 = 0; + this.anInt1289 = -1; + this.anInt1279 = -1; + this.anInt1251 = 0; + this.aBoolean1263 = false; + this.anInt1274 = 32; + this.options = new RSString[5]; + this.anInt1293 = -1; + this.aByte1287 = -96; + this.aByte1268 = 7; + this.renderAnimationId = -1; + this.anInt1296 = -1; + this.anInt1291 = 0; + this.anInt1266 = 128; + this.configId = -1; + this.anInt1290 = -1; + this.anInt1265 = -1; + this.anInt1278 = -1; + this.configFileId = -1; + this.anInt1298 = -1; + } + + static int lookupVarbit(int var1) { + try { + + CSConfigCachefile var2 = CSConfigCachefile.getCSConfigFileFromVarbitID(var1); + int var3 = Objects.requireNonNull(var2).parentVarpIndex; + int var5 = var2.upperBound; + int var4 = var2.lowerBound; + int var6 = Class3_Sub6.expectedMinimumValues[var5 + -var4]; + return ItemDefinition.ram[var3] >> var4 & var6; + } catch (RuntimeException var7) { + throw ClientErrorException.clientError(var7, "me.B(" + 64835055 + ',' + var1 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/NPCRendering.java b/Client/src/main/java/org/runite/client/NPCRendering.java new file mode 100644 index 000000000..65cac69ca --- /dev/null +++ b/Client/src/main/java/org/runite/client/NPCRendering.java @@ -0,0 +1,341 @@ +package org.runite.client; + +public final class NPCRendering { + + + static final int[] NPC_RENDER_LOG = new int[3]; + + static void renderNPCs(int var0) { + try { + Unsorted.maskUpdateCount = 0; + Class139.anInt1829 = 0; + renderLocalNPCs(); + NPC_RENDER_LOG[0] = BufferedDataStream.incomingBuffer.index; + addLocalNPCs(); + NPC_RENDER_LOG[1] = BufferedDataStream.incomingBuffer.index; + renderNPCMasks(); + NPC_RENDER_LOG[2] = BufferedDataStream.incomingBuffer.index; + + int var1; + for(var1 = 0; Class139.anInt1829 > var1; ++var1) { + int var2 = Class3_Sub7.anIntArray2292[var1]; + if(Class44.anInt719 != NPC.npcs[var2].anInt2838) { + if(NPC.npcs[var2].definition.method1474()) { + Class3_Sub28_Sub8.method574(NPC.npcs[var2]); + } + + NPC.npcs[var2].setDefinitions(null); + NPC.npcs[var2] = null; + } + } + + if(var0 != 8169) { + renderNPCs(96); + } + + if(Unsorted.incomingPacketLength == BufferedDataStream.incomingBuffer.index) { + for(var1 = 0; var1 < Class163.localNPCCount; ++var1) { + if(null == NPC.npcs[AudioThread.localNPCIndexes[var1]]) { + // System.err.println("gnp2 pos:" + var1 + " size:" + Class163.anInt2046); + System.err.println("Local NPC was null - index: " + AudioThread.localNPCIndexes[var1] + ", list index: " + var1 + ", list size: " + Class163.localNPCCount); + } + } + + } else { + System.err.println("NPC rendering packet size mismatch - size log: local=" + NPC_RENDER_LOG[0] + ", add global=" + NPC_RENDER_LOG[1] + ", masks=" + NPC_RENDER_LOG[2] + "."); + // System.err.println("gnp1 pos:" + GraphicDefinition.incomingBuffer.index + " psize:" + Class130.incomingPacketLength); + // throw new RuntimeException("gnp1 pos:" + Class28.incomingBuffer.index + " psize:" + Class130.incomingPacketLength); + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "gm.B(" + var0 + ')'); + } + } + + static void renderLocalNPCs() { + try { + BufferedDataStream.incomingBuffer.setBitAccess(); + int var1 = BufferedDataStream.incomingBuffer.getBits(8); + int var2; + if (var1 < Class163.localNPCCount) { + for (var2 = var1; var2 < Class163.localNPCCount; ++var2) { + Class3_Sub7.anIntArray2292[Class139.anInt1829++] = AudioThread.localNPCIndexes[var2]; + } + } + + if (Class163.localNPCCount < var1) { + throw new RuntimeException("gnpov1"); + } else { + Class163.localNPCCount = 0; + + for (var2 = 0; var1 > var2; ++var2) { + int var3 = AudioThread.localNPCIndexes[var2]; + NPC var4 = NPC.npcs[var3]; + int var5 = BufferedDataStream.incomingBuffer.getBits(1); + if (0 == var5) { + AudioThread.localNPCIndexes[Class163.localNPCCount++] = var3; + var4.anInt2838 = Class44.anInt719; + } else { + int var6 = BufferedDataStream.incomingBuffer.getBits(2); + if (var6 == 0) { + AudioThread.localNPCIndexes[Class163.localNPCCount++] = var3; + var4.anInt2838 = Class44.anInt719; + Class21.maskUpdateIndexes[Unsorted.maskUpdateCount++] = var3; + } else { + int var7; + int var8; + if (1 == var6) { + AudioThread.localNPCIndexes[Class163.localNPCCount++] = var3; + var4.anInt2838 = Class44.anInt719; + var7 = BufferedDataStream.incomingBuffer.getBits(3); + var4.walkStep(1, (byte) 32, var7); + var8 = BufferedDataStream.incomingBuffer.getBits(1); + if (1 == var8) { + Class21.maskUpdateIndexes[Unsorted.maskUpdateCount++] = var3; + } + } else if (var6 == 2) { + AudioThread.localNPCIndexes[Class163.localNPCCount++] = var3; + var4.anInt2838 = Class44.anInt719; + if (BufferedDataStream.incomingBuffer.getBits(1) == 1) { + var7 = BufferedDataStream.incomingBuffer.getBits(3); + var4.walkStep(2, (byte) -122, var7); + var8 = BufferedDataStream.incomingBuffer.getBits(3); + var4.walkStep(2, (byte) 85, var8); + } else { + var7 = BufferedDataStream.incomingBuffer.getBits(3); + var4.walkStep(0, (byte) -80, var7); + } + + var7 = BufferedDataStream.incomingBuffer.getBits(1); + if (var7 == 1) { + Class21.maskUpdateIndexes[Unsorted.maskUpdateCount++] = var3; + } + } else if (var6 == 3) { + Class3_Sub7.anIntArray2292[Class139.anInt1829++] = var3; + } + } + } + } + + } + } catch (RuntimeException var9) { + throw ClientErrorException.clientError(var9, "dm.E(" + (byte) -11 + ')'); + } + } + + static void addLocalNPCs() { + try { + while (true) { + if (BufferedDataStream.incomingBuffer.method815(Unsorted.incomingPacketLength) >= 27) { + int var1 = BufferedDataStream.incomingBuffer.getBits(15); + if (32767 != var1) { + boolean var2 = false; + if (null == NPC.npcs[var1]) { + var2 = true; + NPC.npcs[var1] = new NPC(); + } + + NPC var3 = NPC.npcs[var1]; + AudioThread.localNPCIndexes[Class163.localNPCCount++] = var1; + var3.anInt2838 = Class44.anInt719; + if (null != var3.definition && var3.definition.method1474()) { + Class3_Sub28_Sub8.method574(var3); + } + + int var4 = BufferedDataStream.incomingBuffer.getBits(1); + int var5 = Class27.anIntArray510[BufferedDataStream.incomingBuffer.getBits(3)]; + if (var2) { + var3.anInt2806 = var3.anInt2785 = var5; + } + + int var6 = BufferedDataStream.incomingBuffer.getBits(1); + if (var6 == 1) { + Class21.maskUpdateIndexes[Unsorted.maskUpdateCount++] = var1; + } + + int var7 = BufferedDataStream.incomingBuffer.getBits(5); + var3.setDefinitions(NPCDefinition.getNPCDefinition(BufferedDataStream.incomingBuffer.getBits(14))); + if (15 < var7) { + var7 -= 32; + } + + int var8 = BufferedDataStream.incomingBuffer.getBits(5); + if (15 < var8) { + var8 -= 32; + } + + var3.setSize(var3.definition.size, 2); + var3.renderAnimationId = var3.definition.renderAnimationId; + var3.anInt2779 = var3.definition.anInt1274; + if (var3.anInt2779 == 0) { + var3.anInt2785 = 0; + } + + var3.updateAnimationPosition(var3.getSize(), Class102.player.xOffsets2767[0] + var8, var7 + Class102.player.yOffsets2755[0], var4 == 1); + if (var3.definition.method1474()) { + Class70.method1286(var3.yOffsets2755[0], null, 0, var3, var3.xOffsets2767[0], WorldListCountry.localPlane, null); + } + continue; + } + } + + BufferedDataStream.incomingBuffer.setByteAccess(); + + return; + } + } catch (RuntimeException var9) { + throw ClientErrorException.clientError(var9, "wj.E(" + 113 + ')'); + } + } + + static void renderNPCMasks() { + try { + int i; + for (i = 0; Unsorted.maskUpdateCount > i; ++i) { + int mask = Class21.maskUpdateIndexes[i]; + NPC npc = NPC.npcs[mask]; + int var4 = BufferedDataStream.incomingBuffer.readUnsignedByte(); + if ((var4 & 8) != 0) { + var4 += BufferedDataStream.incomingBuffer.readUnsignedByte() << 8; + } + + int var5; + int var6; + //Ordinal: 0 Hit + if ((64 & var4) != 0) { + var5 = BufferedDataStream.incomingBuffer.readUnsignedByte(); + var6 = BufferedDataStream.incomingBuffer.readUnsignedNegativeByte(); + npc.addHit(var6, Class44.anInt719, var5); + npc.anInt2781 = 300 + Class44.anInt719; + npc.anInt2775 = BufferedDataStream.incomingBuffer.readUnsigned128Byte(); + } + + //Ordinal: 1 Hit 2 + if ((var4 & 2) != 0) { + var5 = BufferedDataStream.incomingBuffer.readUnsignedNegativeByte(); + var6 = BufferedDataStream.incomingBuffer.readUnsigned128Byte(); + npc.addHit(var6, Class44.anInt719, var5); + } + + //Ordinal: 2 Animation + if ((var4 & 16) != 0) { + var5 = BufferedDataStream.incomingBuffer.readUnsignedShort(); + var6 = BufferedDataStream.incomingBuffer.readUnsignedByte(); + if (65535 == var5) { + var5 = -1; + } + + Unsorted.method1772(var6, var5, 39, npc); + } + + //Ordinal: 3 Face entity + if ((var4 & 4) != 0) { + npc.anInt2772 = BufferedDataStream.incomingBuffer.readUnsignedShort128(); + if (npc.anInt2772 == 65535) { + npc.anInt2772 = -1; + } + } + + //Ordinal: 4 Graphic + if (0 != (var4 & 128)) { + var5 = BufferedDataStream.incomingBuffer.readUnsignedShort128(); + if (var5 == 65535) { + var5 = -1; + } + + var6 = BufferedDataStream.incomingBuffer.readIntLE(); + boolean var7 = true; + if (var5 != -1 && npc.anInt2842 != -1 && SequenceDefinition.getAnimationDefinition(GraphicDefinition.getGraphicDefinition(var5).anInt542).forcedPriority < SequenceDefinition.getAnimationDefinition(GraphicDefinition.getGraphicDefinition(npc.anInt2842).anInt542).forcedPriority) { + var7 = false; + } + + if (var7) { + npc.anInt2842 = var5; + npc.anInt2759 = (65535 & var6) + Class44.anInt719; + npc.anInt2761 = 0; + npc.anInt2805 = 0; + npc.anInt2799 = var6 >> 16; + npc.anInt2826 = 1; + if (npc.anInt2759 > Class44.anInt719) { + npc.anInt2805 = -1; + } + + if (npc.anInt2842 != -1 && Class44.anInt719 == npc.anInt2759) { + int var8 = GraphicDefinition.getGraphicDefinition(npc.anInt2842).anInt542; + if (var8 != -1) { + SequenceDefinition var9 = SequenceDefinition.getAnimationDefinition(var8); + if (var9.frames != null) { + Unsorted.method1470(npc.yAxis, var9, npc.xAxis, false, 0); + } + } + } + } + } + + //Ordinal: 5 Transform + if ((1 & var4) != 0) { + if (npc.definition.method1474()) { + Class3_Sub28_Sub8.method574(npc); + } + + npc.setDefinitions(NPCDefinition.getNPCDefinition(BufferedDataStream.incomingBuffer.readUnsignedShortLE())); + npc.setSize(npc.definition.size, 2); + npc.renderAnimationId = npc.definition.renderAnimationId; + if (npc.definition.method1474()) { + Class70.method1286(npc.yOffsets2755[0], null, 0, npc, npc.xOffsets2767[0], WorldListCountry.localPlane, null); + } + } + + //Ordinal: 6 Force chat + if ((var4 & 32) != 0) { + npc.textSpoken = BufferedDataStream.incomingBuffer.readString(); + npc.textCycle = 100; + } + + //Ordinal: 7 + if ((256 & var4) != 0) { + var5 = BufferedDataStream.incomingBuffer.readUnsignedNegativeByte(); + int[] var12 = new int[var5]; + int[] var13 = new int[var5]; + int[] var14 = new int[var5]; + + for (int var15 = 0; var5 > var15; ++var15) { + int var10 = BufferedDataStream.incomingBuffer.readUnsignedShortLE(); + if (var10 == 65535) { + var10 = -1; + } + + var12[var15] = var10; + var13[var15] = BufferedDataStream.incomingBuffer.readUnsigned128Byte(); + var14[var15] = BufferedDataStream.incomingBuffer.readUnsignedShort(); + } + + NPC.method273(var14, npc, var13, var12); + } + + //Ordinal: 8 Face location + if ((var4 & 512) != 0) { + npc.anInt2786 = BufferedDataStream.incomingBuffer.readUnsignedShort128(); + npc.anInt2762 = BufferedDataStream.incomingBuffer.readUnsignedShort(); + } + } + + } catch (RuntimeException var11) { + throw ClientErrorException.clientError(var11, "ta.M(" + ')'); + } + } + + static void updateNPCAreaArray() { + try { + for (int var1 = 0; Class163.localNPCCount > var1; ++var1) { + int var2 = AudioThread.localNPCIndexes[var1]; + NPC var3 = NPC.npcs[var2]; + if (null != var3) { + Unsorted.method68(var3.definition.size, var3); + } + } + + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "ig.A(" + -72 + ')'); + } + } +} diff --git a/Client/src/main/java/org/runite/client/ObjectDefinition.java b/Client/src/main/java/org/runite/client/ObjectDefinition.java new file mode 100644 index 000000000..66ea66f97 --- /dev/null +++ b/Client/src/main/java/org/runite/client/ObjectDefinition.java @@ -0,0 +1,1091 @@ +package org.runite.client; + +import org.rs09.client.Linkable; +import org.rs09.client.LinkableInt; +import org.rs09.client.config.GameConfig; +import org.rs09.client.data.HashTable; +import org.rs09.client.data.ReferenceCache; + +import java.util.Objects; + +public final class ObjectDefinition { + + static ReferenceCache aReferenceCache_1401 = new ReferenceCache(500); + static Class136 aClass136_1413 = new Class136(); + static ReferenceCache aReferenceCache_1965 = new ReferenceCache(50); + private short[] aShortArray1476; + private short[] OriginalColors; + int anInt1478; + private int anInt1479; + int SizeX = 1; + private int anInt1481; + public int MapIcon; + boolean aBoolean1483 = false; + int anInt1484; + int SizeY = 1; + boolean ProjectileClipped; + public int[] configuration; + private int anInt1488; + private int anInt1489; + static boolean[] aBooleanArray1490 = new boolean[112]; + boolean aBoolean1491; + boolean aBoolean1492; + int anInt1493; + private int anInt1494 = 0; + private short[] aShortArray1495; + private int anInt1496; + static int[][][] rawChunkData = new int[4][13][13]; + boolean NotClipped; + public RSString[] options; + private short aShort1500; + private HashTable aHashTable_1501; + boolean aBoolean1502 = false; + boolean aBoolean1503; + public RSString name; + private byte aByte1505; + private short[] ModifiedColors; + boolean aBoolean1507; + boolean aBoolean1510; + private int anInt1511; + int anInt1512; + private byte[] aByteArray1513; + static int paramWorldID = 1; + int anInt1515; + int anInt1516; + int anInt1517; + int anInt1518; + private int[] models; + int anInt1520; + static int anInt1521 = 0; + int anInt1522; + public int[] ChildrenIds; + boolean aBoolean1525; + public int ConfigFileId; + int objectId; + int anInt1528; + int SecondInt; + boolean aBoolean1530; + int animationId; + public int ConfigId; + int WalkingFlag; + private int SecondBool; + static short aShort1535 = 320; + private boolean aBoolean1536; + boolean aBoolean1537; + int ClipType; + int[] anIntArray1539; + int anInt1540; + private boolean aBoolean1541; + boolean aBoolean1542; + + public static ObjectDefinition getObjectDefinition(int objectId) { + try { + //36873, 24065, 22418 + ObjectDefinition objdef = (ObjectDefinition) Unsorted.aReferenceCache_21.get(objectId); + if (objdef == null) { + byte[] var3 = Class85.objectConfigIndex_1171.getFile(TextureOperation36.method340(objectId), objectId & 0xFF); + objdef = new ObjectDefinition(); + objdef.objectId = objectId; + if (null != var3) { + objdef.method1692(6219, new DataBuffer(var3)); + } + + objdef.method1689(4 + -2120); + if (!Sprites.aBoolean337 && objdef.aBoolean1491) { + objdef.options = null; + } + + if (objdef.NotClipped) { + objdef.ClipType = 0; + objdef.ProjectileClipped = false; + } + + Unsorted.aReferenceCache_21.put(objdef, objectId); + } + return objdef; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "wc.D(" + 4 + ',' + objectId + ')'); + } + } + + final boolean method1684(int var2) { + try { + if (this.configuration != null) { + for (int var7 = 0; var7 < this.configuration.length; ++var7) { + if (this.configuration[var7] == var2) { + return Unsorted.modelsIndex_1043.method2129((byte) 72, 0, this.models[var7] & 65535); + } + } + + return true; + } else if (null == this.models) { + return true; + } else if (var2 == 10) { + boolean var4 = true; + + for (int var5 = 0; this.models.length > var5; ++var5) { + var4 &= Unsorted.modelsIndex_1043.method2129((byte) 71, 0, 65535 & this.models[var5]); + } + + return var4; + } else { + return true; + } + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "pb.H(" + 115 + ',' + var2 + ')'); + } + } + + public final ObjectDefinition method1685(int var1) { + try { + if (var1 != 0) { + this.method1697(-92, 83, null, -13, null, 18, null, true, 114, 123, null, 118, 85, -116); + } + + int var2 = -1; + if (this.ConfigFileId != -1) { + var2 = NPCDefinition.lookupVarbit(this.ConfigFileId); + } else if (this.ConfigId != -1) { + var2 = ItemDefinition.ram[this.ConfigId]; + } + + if (var2 >= 0 && this.ChildrenIds.length - 1 > var2 && this.ChildrenIds[var2] != -1) { + return getObjectDefinition(this.ChildrenIds[var2]); + } else { + int var3 = this.ChildrenIds[-1 + this.ChildrenIds.length]; + return var3 == -1 ? null : getObjectDefinition(var3); + } + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "pb.C(" + var1 + ')'); + } + } + + private Model_Sub1 method1686(int var1, int var2) { + try { + Model_Sub1 var4 = null; + boolean var5 = this.aBoolean1536; + if (var2 == 2 && 3 < var1) { + var5 = !var5; + } + + int var6; + int var7; + if (null == this.configuration) { + if (var2 != 10) { + return null; + } + + if (this.models == null) { + return null; + } + + var6 = this.models.length; + + for (var7 = 0; var6 > var7; ++var7) { + int var8 = this.models[var7]; + if (var5) { + var8 += 65536; + } + + var4 = (Model_Sub1) aReferenceCache_1401.get(var8); + if (var4 == null) { + var4 = Model_Sub1.method2015(Unsorted.modelsIndex_1043, var8 & 65535); + if (var4 == null) { + return null; + } + + if (var5) { + var4.method2002(); + } + + aReferenceCache_1401.put(var4, var8); + } + + if (1 < var6) { + Class164.aClass140_Sub5Array2058[var7] = var4; + } + } + + if (var6 > 1) { + var4 = new Model_Sub1(Class164.aClass140_Sub5Array2058, var6); + } + } else { + var6 = -1; + + for (var7 = 0; this.configuration.length > var7; ++var7) { + if (var2 == this.configuration[var7]) { + var6 = var7; + break; + } + } + + if (var6 == -1) { + return null; + } + + var7 = this.models[var6]; + if (var5) { + var7 += 65536; + } + + var4 = (Model_Sub1) aReferenceCache_1401.get(var7); + if (null == var4) { + var4 = Model_Sub1.method2015(Unsorted.modelsIndex_1043, var7 & 65535); + if (null == var4) { + return null; + } + + if (var5) { + var4.method2002(); + } + + aReferenceCache_1401.put(var4, var7); + } + } + + boolean var11; + var11 = 128 != this.anInt1479 || this.anInt1488 != 128 || 128 != this.anInt1481; + + boolean var12; + var12 = this.anInt1496 != 0 || this.anInt1511 != 0 || 0 != this.SecondBool; + + Model_Sub1 var13 = new Model_Sub1(Objects.requireNonNull(var4), var1 == 0 && !var11 && !var12, this.OriginalColors == null, null == this.aShortArray1476); + if (var2 == 4 && var1 > 3) { + var13.method2011(); + var13.method2001(45, 0, -45); + } + + var1 &= 3; + if (var1 == 1) { + var13.method1991(); + } else if (var1 == 2) { + var13.method1989(); + } else if (3 == var1) { + var13.method2018(); + } + + int var9; + if (null != this.OriginalColors) { + for (var9 = 0; this.OriginalColors.length > var9; ++var9) { + if (null != this.aByteArray1513 && this.aByteArray1513.length > var9) { + var13.method2016(this.OriginalColors[var9], TextureOperation16.aShortArray3110[255 & this.aByteArray1513[var9]]); + } else { + var13.method2016(this.OriginalColors[var9], this.ModifiedColors[var9]); + } + } + } + + if (this.aShortArray1476 != null) { + for (var9 = 0; this.aShortArray1476.length > var9; ++var9) { + var13.method1998(this.aShortArray1476[var9], this.aShortArray1495[var9]); + } + } + + if (var11) { + var13.method1994(this.anInt1479, this.anInt1488, this.anInt1481); + } + + if (var12) { + var13.method2001(this.anInt1496, this.anInt1511, this.SecondBool); + } + + return var13; + } catch (RuntimeException var10) { + throw ClientErrorException.clientError(var10, "pb.O(" + var1 + ',' + var2 + ',' + -1 + ')'); + } + } + + static void method1688(int var0, int var1, int var2) { + TileData var3 = TileData.aTileDataArrayArrayArray2638[var0][var1][var2]; + if (var3 == null) { + } else { + var3.aClass72_2245 = null; + } + } + + final void method1689(int var1) { + try { + if (this.SecondInt == -1) { + this.SecondInt = 0; + if (null != this.models && (null == this.configuration || this.configuration[0] == 10)) { + this.SecondInt = 1; + } + + for (int var2 = 0; var2 < 5; ++var2) { + if (this.options[var2] != null) { + this.SecondInt = 1; + break; + } + } + } + + if (var1 != -2116) { + this.method1692(67, null); + } + + if (-1 == this.anInt1540) { + this.anInt1540 = this.ClipType != 0 ? 1 : 0; + } + + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "pb.D(" + var1 + ')'); + } + } + + final boolean method1690() { + try { + if (this.ChildrenIds == null) { + return this.anInt1512 != -1 || this.anIntArray1539 != null; + } else { + + for (int var2 = 0; this.ChildrenIds.length > var2; ++var2) { + if (this.ChildrenIds[var2] != -1) { + ObjectDefinition var3 = getObjectDefinition(this.ChildrenIds[var2]); + if (var3.anInt1512 != -1 || var3.anIntArray1539 != null) { + return true; + } + } + } + + return false; + } + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "pb.F(" + 28933 + ')'); + } + } + + final int method1691(int var1, int var2, byte var3) { + try { + if (var3 <= 76) { + return -40; + } else if (this.aHashTable_1501 == null) { + return var1; + } else { + LinkableInt var4 = (LinkableInt) this.aHashTable_1501.get(var2); + return var4 != null ? var4.value : var1; + } + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "pb.N(" + var1 + ',' + var2 + ',' + var3 + ')'); + } + } + + final void method1692(int var1, DataBuffer var2) { + try { + while (true) { + int var3 = var2.readUnsignedByte(); + if (var3 == 0) { + if (var1 != 6219) { + this.method1696(105, -55, null, -39, 71, null, true, null, (byte) -117, false, -25); + } + + return; + } + + this.parseOpcode(var2, var3); + } + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "pb.G(" + var1 + ',' + (var2 != null ? "{...}" : "null") + ')'); + } + } + + private void parseOpcode(DataBuffer buffer, int opcode) { + try { + + int var4; + int var5; + if (1 == opcode) { + var4 = buffer.readUnsignedByte(); + if (var4 > 0) { + if (this.models == null || Unsorted.aBoolean742) { + this.configuration = new int[var4]; + this.models = new int[var4]; + + for (var5 = 0; var4 > var5; ++var5) { + this.models[var5] = buffer.readUnsignedShort(); + this.configuration[var5] = buffer.readUnsignedByte(); + } + } else { + buffer.index += var4 * 3; + } + } + } else if (opcode == 2) { + this.name = buffer.readString(); + } else if (opcode == 5) { + var4 = buffer.readUnsignedByte(); + if (var4 > 0) { + if (null == this.models || Unsorted.aBoolean742) { + this.models = new int[var4]; + this.configuration = null; + + for (var5 = 0; var4 > var5; ++var5) { + this.models[var5] = buffer.readUnsignedShort(); + } + } else { + buffer.index += var4 * 2; + } + } + } else if (opcode == 14) { + this.SizeX = buffer.readUnsignedByte(); + } else if (opcode == 15) { + this.SizeY = buffer.readUnsignedByte(); + } else if (opcode == 17) { + this.ClipType = 0; + this.ProjectileClipped = false; + } else if (18 == opcode) { + this.ProjectileClipped = false; + } else if (opcode == 19) { + this.SecondInt = buffer.readUnsignedByte(); + } else if (opcode == 21) { + this.aByte1505 = 1; + } else if (opcode == 22) { + this.aBoolean1541 = true; + } else if (opcode == 23) { + this.aBoolean1542 = true; + } else if (opcode == 24) { + this.animationId = buffer.readUnsignedShort(); + if (this.animationId == 65535) { + this.animationId = -1; + } + } else if (opcode == 27) { + this.ClipType = 1; + } else if (28 == opcode) { + this.anInt1528 = buffer.readUnsignedByte(); + } else if (opcode == 29) { + this.anInt1494 = buffer.readSignedByte(); + } else if (39 == opcode) { + this.anInt1489 = buffer.readSignedByte() * 5; + } else if (opcode >= 30 && opcode < 35) { + this.options[opcode - 30] = buffer.readString(); + if (this.options[-30 + opcode].equalsStringIgnoreCase(TextCore.HasHidden)) { + this.options[-30 + opcode] = null; + } + } else if (opcode == 40) { + var4 = buffer.readUnsignedByte(); + this.OriginalColors = new short[var4]; + this.ModifiedColors = new short[var4]; + + for (var5 = 0; var5 < var4; ++var5) { + this.OriginalColors[var5] = (short) buffer.readUnsignedShort(); + this.ModifiedColors[var5] = (short) buffer.readUnsignedShort(); + } + } else if (opcode == 41) { + var4 = buffer.readUnsignedByte(); + this.aShortArray1495 = new short[var4]; + this.aShortArray1476 = new short[var4]; + + for (var5 = 0; var4 > var5; ++var5) { + this.aShortArray1476[var5] = (short) buffer.readUnsignedShort(); + this.aShortArray1495[var5] = (short) buffer.readUnsignedShort(); + } + } else if (opcode == 42) { + var4 = buffer.readUnsignedByte(); + this.aByteArray1513 = new byte[var4]; + + for (var5 = 0; var4 > var5; ++var5) { + this.aByteArray1513[var5] = buffer.readSignedByte(); + } + } else if (opcode == 60) { + this.MapIcon = buffer.readUnsignedShort(); + } else if (opcode == 62) { + this.aBoolean1536 = true; + } else if (opcode == 64) { + this.aBoolean1525 = false; + } else if (opcode == 65) { + this.anInt1479 = buffer.readUnsignedShort(); + } else if (opcode == 66) { + this.anInt1488 = buffer.readUnsignedShort(); + } else if (opcode == 67) { + this.anInt1481 = buffer.readUnsignedShort(); + } else if (opcode == 69) { + this.WalkingFlag = buffer.readUnsignedByte(); + } else if (70 == opcode) { + this.anInt1496 = buffer.readSignedShort(); + } else if (71 == opcode) { + this.anInt1511 = buffer.readSignedShort(); + } else if (72 == opcode) { + this.SecondBool = buffer.readSignedShort(); + } else if (opcode == 73) { + this.aBoolean1483 = true; + } else if (opcode == 74) { + this.NotClipped = true; + } else if (75 == opcode) { + this.anInt1540 = buffer.readUnsignedByte(); + } else if (opcode == 77 || opcode == 92) { + var4 = -1; + this.ConfigFileId = buffer.readUnsignedShort(); + if (65535 == this.ConfigFileId) { + this.ConfigFileId = -1; + } + + this.ConfigId = buffer.readUnsignedShort(); + if (65535 == this.ConfigId) { + this.ConfigId = -1; + } + + if (92 == opcode) { + var4 = buffer.readUnsignedShort(); + if (var4 == 65535) { + var4 = -1; + } + } + + var5 = buffer.readUnsignedByte(); + this.ChildrenIds = new int[var5 - -2]; + + for (int var6 = 0; var5 >= var6; ++var6) { + this.ChildrenIds[var6] = buffer.readUnsignedShort(); + if (65535 == this.ChildrenIds[var6]) { + this.ChildrenIds[var6] = -1; + } + } + + this.ChildrenIds[1 + var5] = var4; + } else if (78 == opcode) { + this.anInt1512 = buffer.readUnsignedShort(); + this.anInt1484 = buffer.readUnsignedByte(); + } else if (opcode == 79) { + this.anInt1518 = buffer.readUnsignedShort(); + this.anInt1515 = buffer.readUnsignedShort(); + this.anInt1484 = buffer.readUnsignedByte(); + var4 = buffer.readUnsignedByte(); + this.anIntArray1539 = new int[var4]; + + for (var5 = 0; var5 < var4; ++var5) { + this.anIntArray1539[var5] = buffer.readUnsignedShort(); + } + } else if (81 == opcode) { + this.aByte1505 = 2; + this.aShort1500 = (short) (256 * buffer.readUnsignedByte()); + } else if (opcode == 82) { + this.aBoolean1530 = true; + } else if (opcode == 88) { + this.aBoolean1503 = false; + } else if (opcode == 89) { + this.aBoolean1492 = false; + } else if (90 == opcode) { + this.aBoolean1502 = true; + } else if (opcode == 91) { + this.aBoolean1491 = true; + } else if (opcode == 93) { + this.aByte1505 = 3; + this.aShort1500 = (short) buffer.readUnsignedShort(); + } else if (opcode == 94) { + this.aByte1505 = 4; + } else if (opcode == 95) { + this.aByte1505 = 5; + } else if (opcode == 96) { + this.aBoolean1507 = true; + } else if (opcode == 97) { + this.aBoolean1537 = true; + } else if (opcode == 98) { + this.aBoolean1510 = true; + } else if (opcode == 99) { + this.anInt1493 = buffer.readUnsignedByte(); + this.anInt1517 = buffer.readUnsignedShort(); + } else if (opcode == 100) { + this.anInt1520 = buffer.readUnsignedByte(); + this.anInt1522 = buffer.readUnsignedShort(); + } else if (opcode == 101) { + this.anInt1478 = buffer.readUnsignedByte(); + } else if (opcode == 102) { + this.anInt1516 = buffer.readUnsignedShort(); + } else if (249 == opcode) { + var4 = buffer.readUnsignedByte(); + if (null == this.aHashTable_1501) { + var5 = Class95.method1585((byte) 83, var4); + this.aHashTable_1501 = new HashTable(var5); + } + + for (var5 = 0; var4 > var5; ++var5) { + boolean var10 = buffer.readUnsignedByte() == 1; + int var7 = buffer.readMedium(); + Object var8; + if (var10) { + var8 = new LinkableRSString(buffer.readString()); + } else { + var8 = new LinkableInt(buffer.readInt()); + } + + this.aHashTable_1501.put(var7, (Linkable) var8); + } + } + } catch (RuntimeException var9) { + throw ClientErrorException.clientError(var9, "pb.K(" + (buffer != null ? "{...}" : "null") + ',' + opcode + ',' + -80 + ')'); + } + + /** + * Will find a better way to incorporate this without tacking it onto the end of ObjectDefinitions at some point. + * Will *Actually* worry about it and make it 100x better when working on the new client. ~ Woah + * + * Checks to see if the Halloween Event is enabled, and then applies the "Gaze-into" option to the cauldron that + * had it during the 2008 Halloween Event + */ + if (GameConfig.HALLOWEEN_EVENT_ENABLED) { + if (objectId == 39233) { + options[0] = TextCore.GazeInto; + } + } + + if (GameConfig.CHRISTMAS_EVENT_ENABLED) { + //TODO: Add more christmas trees + if (objectId == 1278) { + this.models = new int[0]; + this.models = new int[]{1681}; + } + if (objectId == 1276) { + this.models = new int[0]; + this.models = new int[]{1682}; + } + } + + if (GameConfig.OBJECT_DEBUG_ENABLED) { + if (options[0] == null && options[1] == null && options[2] == null && options[3] == null && options[4] == null) { + options[0] = RSString.parse("Viewing object"); + } + } + } + + final boolean hasModels() { + try { + if (null == this.models) { + return true; + } else { + boolean var2 = true; + + for (int var3 = 0; var3 < this.models.length; ++var3) { + var2 &= Unsorted.modelsIndex_1043.method2129((byte) 64, 0, 65535 & this.models[var3]); + } + + return var2; + } + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "pb.I(" + false + ')'); + } + } + + private Class140_Sub1_Sub1 method1695(int var1, boolean var2, int var4) { + try { + int var6 = this.anInt1494 + 64; + int var7 = 5 * this.anInt1489 + 768; + Class140_Sub1_Sub1 var5; + int var8; + int var12; + if (this.configuration == null) { + if (var4 != 10) { + return null; + } + + if (this.models == null) { + return null; + } + + var8 = this.models.length; + if (var8 == 0) { + return null; + } + + long var16 = 0L; + + for (int var11 = 0; var11 < var8; ++var11) { + var16 = (long) this.models[var11] + var16 * 67783L; + } + + if (var2) { + var16 = ~var16; + } + + var5 = (Class140_Sub1_Sub1) aReferenceCache_1401.get(var16); + if (null == var5) { + Model_Sub1 var17 = null; + + for (var12 = 0; var12 < var8; ++var12) { + var17 = Model_Sub1.method2015(Unsorted.modelsIndex_1043, this.models[var12] & 65535); + if (null == var17) { + return null; + } + + if (var8 > 1) { + Class164.aClass140_Sub5Array2058[var12] = var17; + } + } + + if (1 < var8) { + var17 = new Model_Sub1(Class164.aClass140_Sub5Array2058, var8); + } + + var5 = new Class140_Sub1_Sub1(var17, var6, var7, var2); + aReferenceCache_1401.put(var5, var16); + } + } else { + var8 = -1; + + int var9; + for (var9 = 0; this.configuration.length > var9; ++var9) { + if (var4 == this.configuration[var9]) { + var8 = var9; + break; + } + } + + if (var8 == -1) { + return null; + } + + var9 = this.models[var8]; + if (var2) { + var9 += 65536; + } + + var5 = (Class140_Sub1_Sub1) aReferenceCache_1401.get(var9); + if (null == var5) { + Model_Sub1 var10 = Model_Sub1.method2015(Unsorted.modelsIndex_1043, 65535 & var9); + if (null == var10) { + return null; + } + + var5 = new Class140_Sub1_Sub1(var10, var6, var7, var2); + aReferenceCache_1401.put(var5, var9); + } + } + + boolean var14 = this.aBoolean1536; + if (var4 == 2 && var1 > 3) { + var14 = !var14; + } + + boolean var15 = 128 == this.anInt1488 && this.anInt1511 == 0; + boolean var18 = var1 == 0 && 128 == this.anInt1479 && this.anInt1481 == 128 && this.anInt1496 == 0 && this.SecondBool == 0 && !var14; + Class140_Sub1_Sub1 var19 = var5.method1926(var18, var15, this.OriginalColors == null, var6 == var5.method1903(), var1 == 0 && !var14, true, var5.method1924() == var7, !var14, this.aShortArray1476 == null); + if (var14) { + var19.method1931(); + } + + if (var4 == 4 && 3 < var1) { + var19.method1932(); + var19.method1897(45, 0, -45); + } + + var1 &= 3; + if (1 == var1) { + var19.method1925(); + } else if (var1 == 2) { + var19.method1911(); + } else if (var1 == 3) { + var19.method1902(); + } + + if (null != this.OriginalColors) { + for (var12 = 0; var12 < this.OriginalColors.length; ++var12) { + var19.method1918(this.OriginalColors[var12], this.ModifiedColors[var12]); + } + } + + if (null != this.aShortArray1476) { + for (var12 = 0; var12 < this.aShortArray1476.length; ++var12) { + var19.method1916(this.aShortArray1476[var12], this.aShortArray1495[var12]); + } + } + + if (this.anInt1479 != 128 || this.anInt1488 != 128 || this.anInt1481 != 128) { + var19.resize(this.anInt1479, this.anInt1488, this.anInt1481); + } + + if (this.anInt1496 != 0 || this.anInt1511 != 0 || 0 != this.SecondBool) { + var19.method1897(this.anInt1496, this.anInt1511, this.SecondBool); + } + + if (var6 != var19.method1903()) { + var19.method1914(var6); + } + + if (var19.method1924() != var7) { + var19.method1909(var7); + } + + return var19; + } catch (RuntimeException var13) { + throw ClientErrorException.clientError(var13, "pb.L(" + var1 + ',' + var2 + ',' + true + ',' + var4 + ')'); + } + } + + final Class136 method1696(int var1, int var2, int[][] var3, int var4, int var5, int[][] var6, boolean var7, LDIndexedSprite var8, byte var9, boolean var10, int var11) { + try { + if (var9 >= -5) { + return null; + } else { + long var12; + if (HDToolKit.highDetail) { + if (null == this.configuration) { + var12 = (this.objectId << 10) + var1; + } else { + var12 = var1 + (this.objectId << 10) - -(var4 << 3); + } + + Class136 var16 = (Class136) Unsorted.aReferenceCache_4051.get(var12); + Class140_Sub1_Sub1 var14; + LDIndexedSprite var15; + if (null == var16) { + var14 = this.method1695(var1, false, var4); + if (null == var14) { + aClass136_1413.aClass140_1777 = null; + aClass136_1413.aClass109_Sub1_1770 = null; + return aClass136_1413; + } + + if (var4 == 10 && var1 > 3) { + var14.method1876(256); + } + + if (var10) { + var15 = var14.method1933(var8); + } else { + var15 = null; + } + + var16 = new Class136(); + var16.aClass140_1777 = var14; + var16.aClass109_Sub1_1770 = var15; + Unsorted.aReferenceCache_4051.put(var16, var12); + } else { + var14 = (Class140_Sub1_Sub1) var16.aClass140_1777; + var15 = var16.aClass109_Sub1_1770; + } + + boolean var17 = this.aBoolean1541 & var7; + Class140_Sub1_Sub1 var18 = var14.method1926(3 != this.aByte1505, this.aByte1505 == 0, true, true, true, !var17, true, true, true); + if (this.aByte1505 != 0) { + var18.method1919(this.aByte1505, this.aShort1500, var14, var3, var6, var2, var5, var11); + } + + var18.method1920(this.SecondInt == 0 && !this.aBoolean1510, true, true, this.SecondInt == 0, true, false); + aClass136_1413.aClass140_1777 = var18; + var18.aBoolean3809 = var17; + aClass136_1413.aClass109_Sub1_1770 = var15; + } else { + if (this.configuration == null) { + var12 = (this.objectId << 10) + var1; + } else { + var12 = (var4 << 3) + ((this.objectId << 10) - -var1); + } + + boolean var20; + if (var7 && this.aBoolean1541) { + var12 |= Long.MIN_VALUE; + var20 = true; + } else { + var20 = false; + } + + Object var22 = Unsorted.aReferenceCache_4051.get(var12); + if (null == var22) { + Model_Sub1 var21 = this.method1686(var1, var4); + if (var21 == null) { + aClass136_1413.aClass140_1777 = null; + return aClass136_1413; + } + + var21.method2010(); + if (var4 == 10 && var1 > 3) { + var21.method2011(); + } + + if (var20) { + var21.aShort2879 = (short) (64 + this.anInt1494); + var22 = var21; + var21.aShort2876 = (short) (768 + 5 * this.anInt1489); + var21.method1997(); + } else { + var22 = new Class140_Sub1_Sub2(var21, 64 - -this.anInt1494, 5 * this.anInt1489 + 768, -50, -10, -50); + } + + Unsorted.aReferenceCache_4051.put(var22, var12); + } + + if (var20) { + var22 = ((Model_Sub1) var22).method2004(); + } + + if (0 != this.aByte1505) { + if (var22 instanceof Class140_Sub1_Sub2) { + var22 = ((Class140_Sub1_Sub2) var22).method1941(this.aByte1505, this.aShort1500, var3, var6, var2, var5, var11, true); + } else if (var22 instanceof Model_Sub1) { + var22 = ((Model_Sub1) var22).method1999(this.aByte1505, this.aShort1500, var3, var6, var2, var5, var11); + } + } + + aClass136_1413.aClass140_1777 = (GameObject) var22; + } + return aClass136_1413; + } + } catch (RuntimeException var19) { + throw ClientErrorException.clientError(var19, "pb.A(" + var1 + ',' + var2 + ',' + (var3 != null ? "{...}" : "null") + ',' + var4 + ',' + var5 + ',' + (var6 != null ? "{...}" : "null") + ',' + var7 + ',' + (var8 != null ? "{...}" : "null") + ',' + var9 + ',' + var10 + ',' + var11 + ')'); + } + } + + final Class136 method1697(int var1, int var2, LDIndexedSprite var3, int var4, SequenceDefinition var5, int var6, int[][] var7, boolean var8, int var9, int var10, int[][] var11, int var12, int var13, int var14) { + try { + if (var10 != 8308) { + this.hasModels(); + } + + long var15; + if (HDToolKit.highDetail) { + if (this.configuration == null) { + var15 = var6 + (this.objectId << 10); + } else { + var15 = (var13 << 3) + ((this.objectId << 10) - -var6); + } + + Class140_Sub1_Sub1 var23 = (Class140_Sub1_Sub1) aReferenceCache_1965.get(var15); + if (var23 == null) { + var23 = this.method1695(var6, true, var13); + if (null == var23) { + return null; + } + + var23.method1908(); + var23.method1920(false, false, false, false, false, true); + aReferenceCache_1965.put(var23, var15); + } + + boolean var19 = false; + Class140_Sub1_Sub1 var22 = var23; + if (null != var5) { + var22 = (Class140_Sub1_Sub1) var5.method2056(var12, var9, var14, var6, var23); + var19 = true; + } + + if (var13 == 10 && 3 < var6) { + if (!var19) { + var22 = (Class140_Sub1_Sub1) var22.method1890(true, true, true); + var19 = true; + } + + var22.method1876(256); + } + + if (var8) { + aClass136_1413.aClass109_Sub1_1770 = var22.method1933(var3); + } else { + aClass136_1413.aClass109_Sub1_1770 = null; + } + + if (this.aByte1505 != 0) { + if (!var19) { + var22 = (Class140_Sub1_Sub1) var22.method1890(true, true, true); + } + + var22.method1919(this.aByte1505, this.aShort1500, var23, var7, var11, var2, var4, var1); + } + + aClass136_1413.aClass140_1777 = var22; + } else { + if (this.configuration == null) { + var15 = (this.objectId << 10) + var6; + } else { + var15 = var6 + (this.objectId << 10) + (var13 << 3); + } + + Class140_Sub1_Sub2 var17 = (Class140_Sub1_Sub2) aReferenceCache_1965.get(var15); + if (var17 == null) { + Model_Sub1 var18 = this.method1686(var6, var13); + if (var18 == null) { + return null; + } + + var17 = new Class140_Sub1_Sub2(var18, 64 + this.anInt1494, this.anInt1489 * 5 + 768, -50, -10, -50); + aReferenceCache_1965.put(var17, var15); + } + + boolean var21 = false; + if (var5 != null) { + var21 = true; + var17 = (Class140_Sub1_Sub2) var5.method2054(var9, var12, var17, var6, var14); + } + + if (var13 == 10 && var6 > 3) { + if (!var21) { + var21 = true; + var17 = (Class140_Sub1_Sub2) var17.method1890(true, true, true); + } + + var17.method1876(256); + } + + if (this.aByte1505 != 0) { + if (!var21) { + var17 = (Class140_Sub1_Sub2) var17.method1890(true, true, true); + } + + var17 = var17.method1941(this.aByte1505, this.aShort1500, var7, var11, var2, var4, var1, false); + } + + aClass136_1413.aClass140_1777 = var17; + } + return aClass136_1413; + } catch (RuntimeException var20) { + throw ClientErrorException.clientError(var20, "pb.M(" + var1 + ',' + var2 + ',' + (var3 != null ? "{...}" : "null") + ',' + var4 + ',' + (var5 != null ? "{...}" : "null") + ',' + var6 + ',' + (var7 != null ? "{...}" : "null") + ',' + var8 + ',' + var9 + ',' + var10 + ',' + (var11 != null ? "{...}" : "null") + ',' + var12 + ',' + var13 + ',' + var14 + ')'); + } + } + + final RSString method1698(RSString var1, int var3) { + try { + + if (null == this.aHashTable_1501) { + return var1; + } else { + LinkableRSString var4 = (LinkableRSString) this.aHashTable_1501.get(var3); + return var4 == null ? var1 : var4.value; + } + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "pb.E(" + (var1 != null ? "{...}" : "null") + ',' + -23085 + ',' + var3 + ')'); + } + } + + public ObjectDefinition() { + this.name = RSString.parse("null"); + this.aBoolean1503 = true; + this.anInt1493 = -1; + this.anInt1515 = 0; + this.anInt1516 = -1; + this.aByte1505 = 0; + this.aBoolean1491 = false; + this.anInt1517 = -1; + this.anInt1496 = 0; + this.anInt1518 = 0; + this.MapIcon = -1; + this.aBoolean1510 = false; + this.anInt1520 = -1; + this.aShort1500 = -1; + this.anInt1481 = 128; + this.options = new RSString[5]; + this.anInt1479 = 128; + this.aBoolean1492 = true; + this.anInt1488 = 128; + this.NotClipped = false; + this.SecondInt = -1; + this.aBoolean1530 = false; + this.aBoolean1525 = true; + this.ConfigId = -1; + this.anInt1522 = -1; + this.WalkingFlag = 0; + this.ProjectileClipped = true; + this.SecondBool = 0; + this.anInt1478 = 0; + this.anInt1528 = 16; + this.aBoolean1537 = false; + this.anInt1511 = 0; + this.anInt1484 = 0; + this.anInt1489 = 0; + this.animationId = -1; + this.aBoolean1507 = false; + this.anInt1512 = -1; + this.ClipType = 2; + this.aBoolean1536 = false; + this.ConfigFileId = -1; + this.anInt1540 = -1; + this.aBoolean1541 = false; + this.aBoolean1542 = false; + } + +} diff --git a/Client/src/main/java/org/runite/client/PacketParser.java b/Client/src/main/java/org/runite/client/PacketParser.java new file mode 100644 index 000000000..e8ad4c744 --- /dev/null +++ b/Client/src/main/java/org/runite/client/PacketParser.java @@ -0,0 +1,1891 @@ +package org.runite.client; + +import org.rs09.Discord; +import org.rs09.SlayerTracker; +import org.rs09.XPGainDraw; + +import java.nio.charset.StandardCharsets; +import java.util.Objects; + +public final class PacketParser { + + static int anInt80 = 0; + static byte[][][] aByteArrayArrayArray81; + static LinkedList aLinkedList_82 = new LinkedList(); + static short aShort83 = 32767; + static RenderAnimationDefinition aClass16_84 = new RenderAnimationDefinition(); + static int anInt86 = 0; + static int anInt87 = 0; + static RSInterface aClass11_88 = null; + static int inTutorialIsland = 0; // could be boolean + public static Class3_Sub19[] aClass3_Sub19Array3694; + static long aLong3202; + static int anInt3213 = 1; + + + static int method823(int var0, int var1, int var2, int var3) { + try { + if (var2 >= -76) { + aShort83 = -91; + } + + return (8 & Unsorted.sceneryTypeMaskGrid[var3][var1][var0]) == 0 ? (var3 > 0 && (Unsorted.sceneryTypeMaskGrid[1][var1][var0] & 2) != 0 ? -1 + var3 : var3) : 0; + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "ac.G(" + var0 + ',' + var1 + ',' + var2 + ',' + var3 + ')'); + } + } + + static void method824(long[] var0, Object[] var1, int var2) { + try { + Class134.method1809(var0.length - 1, var0, 122, 0, var1); + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "ac.E(" + (var0 != null ? "{...}" : "null") + ',' + (var1 != null ? "{...}" : "null") + ',' + var2 + ')'); + } + } + + static void method825(int var1) { + try { + InterfaceWidget var3 = InterfaceWidget.getWidget(1, var1); + var3.a(); + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "ac.D(" + (byte) 92 + ',' + var1 + ')'); + } + } + + static int method826(RSString var0, int var1) { + try { + if (var1 != -1) { + method826(null, 65); + } + + if (var0 != null) { + for (int var2 = 0; Class8.anInt104 > var2; ++var2) { + if (var0.equalsStringIgnoreCase(Class70.aStringArray1046[var2])) { + return var2; + } + } + + } + return -1; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "ac.B(" + (var0 != null ? "{...}" : "null") + ',' + var1 + ')'); + } + } + + public static boolean parseIncomingPackets() { + int nodeModelId; + if (60 == Unsorted.incomingOpcode) { + nodeModelId = BufferedDataStream.incomingBuffer.readUnsignedShort128(); + byte var69 = BufferedDataStream.incomingBuffer.readSignedNegativeByte(); + VarpHelpers.setVarp(var69, nodeModelId); + Unsorted.incomingOpcode = -1; + return true; + } else { + int counter; + RSString playerName; + if (Unsorted.incomingOpcode == 115) { + nodeModelId = BufferedDataStream.incomingBuffer.readUnsignedShort(); + playerName = BufferedDataStream.incomingBuffer.readString(); + Object[] var71 = new Object[playerName.length() - -1]; + for (counter = playerName.length() + -1; counter >= 0; --counter) { + if (115 == playerName.charAt(counter, (byte) -45)) { + var71[1 + counter] = BufferedDataStream.incomingBuffer.readString(); + } else { + var71[1 + counter] = BufferedDataStream.incomingBuffer.readInt(); + } + } + + var71[0] = BufferedDataStream.incomingBuffer.readInt(); + Class146.updateInterfacePacketCounter(nodeModelId); + CS2Script var66 = new CS2Script(); + var66.arguments = var71; + Class43.method1065(var66); + + Unsorted.incomingOpcode = -1; + return true; + } else { + long nameAsLong; + boolean isIgnored; + int var30; + RSString var41; + if (Unsorted.incomingOpcode == 70) { + RSString message = BufferedDataStream.incomingBuffer.readString(); + if (message.endsWith(RSString.parse(":tradereq:"))) { + playerName = message.substring(0, message.indexOf(RSString.parse(":"), 65), 0); + nameAsLong = playerName.toLong(); + isIgnored = false; + + for (var30 = 0; Class3_Sub28_Sub5.anInt3591 > var30; ++var30) { + if (nameAsLong == Class114.ignores[var30]) { + isIgnored = true; + break; + } + } + + if (!isIgnored && inTutorialIsland == 0) { + BufferedDataStream.addChatMessage(playerName, 4, TextCore.HasWishToTrade, (byte) -83 + 82); + } + } else if (message.endsWith(TextCore.cmdChalReq)) { + playerName = message.substring(0, message.indexOf(RSString.parse(":"), 75), 0); + nameAsLong = playerName.toLong(); + isIgnored = false; + + for (var30 = 0; var30 < Class3_Sub28_Sub5.anInt3591; ++var30) { + if (Class114.ignores[var30] == nameAsLong) { + isIgnored = true; + break; + } + } + + if (!isIgnored && inTutorialIsland == 0) { + var41 = message.substring(1 + message.indexOf(RSString.parse(":"), 101), message.length() + -9, (byte) -83 ^ -83); + BufferedDataStream.addChatMessage(playerName, 8, var41, (byte) -83 ^ 82); + } + } else if (message.endsWith(TextCore.HasAssistRequest)) { + isIgnored = false; + playerName = message.substring(0, message.indexOf(RSString.parse(":"), 96), 0); + nameAsLong = playerName.toLong(); + + for (var30 = 0; var30 < Class3_Sub28_Sub5.anInt3591; ++var30) { + if (nameAsLong == Class114.ignores[var30]) { + isIgnored = true; + break; + } + } + + if (!isIgnored && inTutorialIsland == 0) { + BufferedDataStream.addChatMessage(playerName, 10, RSString.parse(""), -1); + } + } else if (message.endsWith(TextCore.HasClan)) { + playerName = message.substring(0, message.indexOf(TextCore.HasClan, (byte) -83 ^ -50), 0); + BufferedDataStream.addChatMessage(RSString.parse(""), 11, playerName, -1); + } else if (message.endsWith(TextCore.HasTrade)) { + playerName = message.substring(0, message.indexOf(TextCore.HasTrade, 102), 0); + if (0 == inTutorialIsland) { + BufferedDataStream.addChatMessage(RSString.parse(""), 12, playerName, -1); + } + } else if (message.endsWith(TextCore.HasAssist)) { + playerName = message.substring(0, message.indexOf(TextCore.HasAssist, 121), 0); + if (inTutorialIsland == 0) { + BufferedDataStream.addChatMessage(RSString.parse(""), 13, playerName, -1); + } + } else if (message.endsWith(TextCore.HasDuelStake)) { + isIgnored = false; + playerName = message.substring(0, message.indexOf(RSString.parse(":"), 115), 0); + nameAsLong = playerName.toLong(); + + for (var30 = 0; Class3_Sub28_Sub5.anInt3591 > var30; ++var30) { + if (nameAsLong == Class114.ignores[var30]) { + isIgnored = true; + break; + } + } + + if (!isIgnored && inTutorialIsland == 0) { + BufferedDataStream.addChatMessage(playerName, 14, RSString.parse(""), -1); + } + } else if (message.endsWith(TextCore.HasDuelFriend)) { + playerName = message.substring(0, message.indexOf(RSString.parse(":"), 118), 0); + isIgnored = false; + nameAsLong = playerName.toLong(); + + for (var30 = 0; var30 < Class3_Sub28_Sub5.anInt3591; ++var30) { + if (nameAsLong == Class114.ignores[var30]) { + isIgnored = true; + break; + } + } + + if (!isIgnored && 0 == inTutorialIsland) { + BufferedDataStream.addChatMessage(playerName, 15, RSString.parse(""), -1); + } + } else if (message.endsWith(TextCore.HasClanRequest)) { + playerName = message.substring(0, message.indexOf(RSString.parse(":"), (byte) -83 + 138), 0); + nameAsLong = playerName.toLong(); + isIgnored = false; + + for (var30 = 0; var30 < Class3_Sub28_Sub5.anInt3591; ++var30) { + if (Class114.ignores[var30] == nameAsLong) { + isIgnored = true; + break; + } + } + + if (!isIgnored && inTutorialIsland == 0) { + BufferedDataStream.addChatMessage(playerName, 16, RSString.parse(""), -1); + } + } else if (message.endsWith(TextCore.HasAllyReq)) { + playerName = message.substring(0, message.indexOf(RSString.parse(":"), (byte) -83 + 189), (byte) -83 + 83); + isIgnored = false; + nameAsLong = playerName.toLong(); + + for (var30 = 0; var30 < Class3_Sub28_Sub5.anInt3591; ++var30) { + if (nameAsLong == Class114.ignores[var30]) { + isIgnored = true; + break; + } + } + + if (!isIgnored && inTutorialIsland == 0) { + var41 = message.substring(1 + message.indexOf(RSString.parse(":"), 92), message.length() - 9, (byte) -83 ^ -83); + BufferedDataStream.addChatMessage(playerName, 21, var41, -1); + } + } else { + BufferedDataStream.addChatMessage(RSString.parse(""), 0, message, (byte) -83 + 82); + } + + Unsorted.incomingOpcode = -1; + return true; + } else { + int var19; + RSString var58; + if (Unsorted.incomingOpcode == 123) { + nodeModelId = BufferedDataStream.incomingBuffer.readUnsignedShortLE(); + var19 = BufferedDataStream.incomingBuffer.readUnsignedShort128(); + var58 = BufferedDataStream.incomingBuffer.readString(); + Class146.updateInterfacePacketCounter(var19); + InterfaceWidget.setWidgetText(var58, nodeModelId); + + + Unsorted.incomingOpcode = -1; + return true; + } else if (Unsorted.incomingOpcode == 230) { + Class39.currentChunkY = BufferedDataStream.incomingBuffer.readUnsignedByte128(); + Class39.currentChunkX = BufferedDataStream.incomingBuffer.readUnsigned128Byte(); + + while (BufferedDataStream.incomingBuffer.index < Unsorted.incomingPacketLength) { + Unsorted.incomingOpcode = BufferedDataStream.incomingBuffer.readUnsignedByte(); + Class39.parseChunkPacket((byte) -82); + } + + Unsorted.incomingOpcode = -1; + return true; + } else if (153 == Unsorted.incomingOpcode) { + Unsorted.incomingOpcode = -1; + Class65.anInt987 = 0; + return true; + } else { + int modelId; + if (Unsorted.incomingOpcode == 220) { + nodeModelId = BufferedDataStream.incomingBuffer.readIntV2(); + var19 = BufferedDataStream.incomingBuffer.readUnsignedShortLE(); + modelId = BufferedDataStream.incomingBuffer.readUnsignedShort(); + Class146.updateInterfacePacketCounter(modelId); + TextureOperation29.method327(var19, nodeModelId); + + Unsorted.incomingOpcode = -1; + return true; + } else { + long var2; + int clanChatIcon; + int var11; + long var29; + long var36; + if (81 == Unsorted.incomingOpcode) { + var2 = BufferedDataStream.incomingBuffer.readLong(); + BufferedDataStream.incomingBuffer.readSignedByte(); + nameAsLong = BufferedDataStream.incomingBuffer.readLong(); + var29 = BufferedDataStream.incomingBuffer.readUnsignedShort(); + var36 = BufferedDataStream.incomingBuffer.readMedium(); + clanChatIcon = BufferedDataStream.incomingBuffer.readUnsignedByte(); + boolean var63 = false; + var11 = BufferedDataStream.incomingBuffer.readUnsignedShort(); + long var55 = (var29 << 32) + var36; + int var54 = 0; + + label1521: + while (true) { + if (100 > var54) { + if (Class163_Sub2_Sub1.aLongArray4017[var54] != var55) { + ++var54; + continue; + } + + var63 = true; + break; + } + + if (1 >= clanChatIcon) { + for (var54 = 0; var54 < Class3_Sub28_Sub5.anInt3591; ++var54) { + if (var2 == Class114.ignores[var54]) { + var63 = true; + break label1521; + } + } + } + break; + } + + if (!var63 && 0 == inTutorialIsland) { + Class163_Sub2_Sub1.aLongArray4017[MouseListeningClass.anInt1921] = var55; + MouseListeningClass.anInt1921 = (1 + MouseListeningClass.anInt1921) % 100; + RSString var61 = QuickChat.method733(var11).method555(BufferedDataStream.incomingBuffer); + if (clanChatIcon == 2 || 3 == clanChatIcon) { + MessageManager.sendGameMessage(var11, 20, var61, Objects.requireNonNull(Unsorted.method1052(nameAsLong)).longToRSString(), RSString.stringCombiner(new RSString[]{RSString.parse(""), Objects.requireNonNull(Unsorted.method1052(var2)).longToRSString()})); + } else if (clanChatIcon == 1) { + MessageManager.sendGameMessage(var11, 20, var61, Objects.requireNonNull(Unsorted.method1052(nameAsLong)).longToRSString(), RSString.stringCombiner(new RSString[]{RSString.parse(""), Objects.requireNonNull(Unsorted.method1052(var2)).longToRSString()})); + } else { + MessageManager.sendGameMessage(var11, 20, var61, Objects.requireNonNull(Unsorted.method1052(nameAsLong)).longToRSString(), Objects.requireNonNull(Unsorted.method1052(var2)).longToRSString()); + } + } + + Unsorted.incomingOpcode = -1; + return true; + } else { + int var6; + int chatIcon; + boolean var32; + if (Unsorted.incomingOpcode == 55) { + Class167.anInt2087 = anInt3213; + var2 = BufferedDataStream.incomingBuffer.readLong(); + if (var2 == 0) { + Class161.aString_2035 = null; + Unsorted.incomingOpcode = -1; + RSInterface.aString_251 = null; + aClass3_Sub19Array3694 = null; + Unsorted.clanSize = 0; + return true; + } else { + nameAsLong = BufferedDataStream.incomingBuffer.readLong(); + RSInterface.aString_251 = Unsorted.method1052(nameAsLong); + Class161.aString_2035 = Unsorted.method1052(var2); + Player.aByte3953 = BufferedDataStream.incomingBuffer.readSignedByte(); + var6 = BufferedDataStream.incomingBuffer.readUnsignedByte(); + if (255 != var6) { + Unsorted.clanSize = var6; + Class3_Sub19[] var7 = new Class3_Sub19[100]; + + for (chatIcon = 0; chatIcon < Unsorted.clanSize; ++chatIcon) { + var7[chatIcon] = new Class3_Sub19(); + var7[chatIcon].linkableKey = BufferedDataStream.incomingBuffer.readLong(); + var7[chatIcon].aString_2476 = Unsorted.method1052(var7[chatIcon].linkableKey); + var7[chatIcon].anInt2478 = BufferedDataStream.incomingBuffer.readUnsignedShort(); + var7[chatIcon].aByte2472 = BufferedDataStream.incomingBuffer.readSignedByte(); + var7[chatIcon].aString_2473 = BufferedDataStream.incomingBuffer.readString(); + if (var7[chatIcon].linkableKey == aLong3202) { + Class91.aByte1308 = var7[chatIcon].aByte2472; + } + } + + clanChatIcon = Unsorted.clanSize; + + while (clanChatIcon > 0) { + var32 = true; + --clanChatIcon; + + for (var11 = 0; var11 < clanChatIcon; ++var11) { + if (var7[var11].aString_2476.method1559(var7[var11 - -1].aString_2476) > 0) { + var32 = false; + Class3_Sub19 var9 = var7[var11]; + var7[var11] = var7[1 + var11]; + var7[var11 + 1] = var9; + } + } + + if (var32) { + break; + } + } + + aClass3_Sub19Array3694 = var7; + } + Unsorted.incomingOpcode = -1; + return true; + } + } else if (Unsorted.incomingOpcode == 164) { + nodeModelId = BufferedDataStream.incomingBuffer.readIntV1(); + Class136.aClass64_1778 = Class38.gameSignlink.method1449((byte) -83 ^ -82, nodeModelId); + Unsorted.incomingOpcode = -1; + return true; + } else if (Unsorted.incomingOpcode == 225) { + PlayerRendering.renderPlayers(); + Unsorted.incomingOpcode = -1; + return true; + } else if (Unsorted.incomingOpcode == 48) { //UNUSED BY SERVER + nodeModelId = BufferedDataStream.incomingBuffer.readUnsignedShort(); + playerName = BufferedDataStream.incomingBuffer.readString(); + modelId = BufferedDataStream.incomingBuffer.readUnsignedShortLE128(); + Class146.updateInterfacePacketCounter(nodeModelId); + InterfaceWidget.setWidgetText(playerName, modelId); + + Unsorted.incomingOpcode = -1; + return true; + } else if (232 == Unsorted.incomingOpcode) { + CS2Script.anInt3101 = BufferedDataStream.incomingBuffer.readUnsignedByte(); + Class24.anInt467 = BufferedDataStream.incomingBuffer.readUnsignedByte(); + Class45.anInt734 = BufferedDataStream.incomingBuffer.readUnsignedByte(); + Unsorted.incomingOpcode = -1; + return true; + } else { + RSString var56; + if (Unsorted.incomingOpcode == 44) { + nodeModelId = BufferedDataStream.incomingBuffer.readUnsignedShortLE128(); + if (nodeModelId == 65535) { + nodeModelId = -1; + } + + var19 = BufferedDataStream.incomingBuffer.readUnsignedByte(); + modelId = BufferedDataStream.incomingBuffer.readUnsignedByte(); + var56 = BufferedDataStream.incomingBuffer.readString(); + if (1 <= modelId && modelId <= 8) { + if (var56.equalsStringIgnoreCase(TextCore.HasNull)) { + var56 = null; + } + + Class91.aStringArray1299[-1 + modelId] = var56; + TextureOperation35.anIntArray3328[modelId + -1] = nodeModelId; + Class1.aBooleanArray54[modelId + -1] = var19 == 0; + } + + Unsorted.incomingOpcode = -1; + return true; + } else if (Unsorted.incomingOpcode == 226) { + nodeModelId = BufferedDataStream.incomingBuffer.readInt(); + var19 = BufferedDataStream.incomingBuffer.readUnsignedShort128(); + VarpHelpers.setVarp(nodeModelId, var19); + Unsorted.incomingOpcode = -1; + return true; + } else if (Unsorted.incomingOpcode == 21) { + nodeModelId = BufferedDataStream.incomingBuffer.readUnsignedNegativeByte(); + var19 = BufferedDataStream.incomingBuffer.readUnsignedShort(); + modelId = BufferedDataStream.incomingBuffer.readIntLE(); + Class146.updateInterfacePacketCounter(var19); + TextureOperation4.method260(modelId, nodeModelId); + + Unsorted.incomingOpcode = -1; + return true; + } else if (Unsorted.incomingOpcode == 145) { + nodeModelId = BufferedDataStream.incomingBuffer.readUnsignedShortLE128(); + var19 = BufferedDataStream.incomingBuffer.readUnsignedByte128(); + modelId = BufferedDataStream.incomingBuffer.readUnsignedShortLE128(); + Class146.updateInterfacePacketCounter(modelId); + if (var19 == 2) { + method834(); + } + ConfigInventoryDefinition.anInt3655 = nodeModelId; + TextureOperation20.method232(nodeModelId); + Class124.method1746(false, (byte) -64); + TextureOperation24.method226(ConfigInventoryDefinition.anInt3655); + + for (counter = 0; counter < 100; ++counter) { + Unsorted.aBooleanArray3674[counter] = true; + } + + Unsorted.incomingOpcode = -1; + return true; + } else if (Unsorted.incomingOpcode == 69) { + nodeModelId = BufferedDataStream.incomingBuffer.readUnsignedShortLE128(); + var19 = BufferedDataStream.incomingBuffer.readInt(); + modelId = BufferedDataStream.incomingBuffer.readUnsignedShort128(); + Class146.updateInterfacePacketCounter(nodeModelId); + TextureOperation19.method255(modelId, var19, 1); + + Unsorted.incomingOpcode = -1; + return true; + } else if (141 == Unsorted.incomingOpcode) { //UNUSED BY SERVER + var2 = BufferedDataStream.incomingBuffer.readLong(); + modelId = BufferedDataStream.incomingBuffer.readUnsignedShort(); + var56 = QuickChat.method733(modelId).method555(BufferedDataStream.incomingBuffer); + MessageManager.sendGameMessage(modelId, 19, var56, null, Objects.requireNonNull(Unsorted.method1052(var2)).longToRSString()); + Unsorted.incomingOpcode = -1; + return true; + } else if (Unsorted.incomingOpcode == 169) { //UNUSED BY SERVER + Class162.method2204(BufferedDataStream.incomingBuffer); + Unsorted.incomingOpcode = -1; + return true; + } else if (89 == Unsorted.incomingOpcode) { //UNUSED BY SERVER + TextureOperation6.method176(-117); + BufferedDataStream.method819(); + Class36.anInt641 += 32; + Unsorted.incomingOpcode = -1; + return true; + } else if (Unsorted.incomingOpcode == 125) {//camera rotation + nodeModelId = BufferedDataStream.incomingBuffer.readUnsignedShort(); + var19 = BufferedDataStream.incomingBuffer.readUnsignedByte(); + modelId = BufferedDataStream.incomingBuffer.readUnsignedByte(); + counter = BufferedDataStream.incomingBuffer.readUnsignedShort(); + var6 = BufferedDataStream.incomingBuffer.readUnsignedByte(); + var30 = BufferedDataStream.incomingBuffer.readUnsignedByte(); + Class146.updateInterfacePacketCounter(nodeModelId); + Class164_Sub1.method2238(counter, modelId, var6, var19, var30); + + Unsorted.incomingOpcode = -1; + return true; + } else if (Unsorted.incomingOpcode == 36) { + nodeModelId = BufferedDataStream.incomingBuffer.readIntV2(); + var19 = BufferedDataStream.incomingBuffer.readSignedShortLE(); + modelId = BufferedDataStream.incomingBuffer.readUnsignedShort128(); + Class146.updateInterfacePacketCounter(modelId); + Class131.method1790(nodeModelId, var19); + + Unsorted.incomingOpcode = -1; + return true; + } else { + Class3_Sub1 var38; + Class3_Sub1 var47; + if (Unsorted.incomingOpcode == 9) { + nodeModelId = BufferedDataStream.incomingBuffer.readUnsignedShortLE128(); + var19 = BufferedDataStream.incomingBuffer.readIntLE(); + modelId = BufferedDataStream.incomingBuffer.readUnsignedShort128(); + counter = BufferedDataStream.incomingBuffer.readUnsignedShortLE(); + if (counter == 65535) { + counter = -1; + } + + var6 = BufferedDataStream.incomingBuffer.readUnsignedShort128(); + if (var6 == 65535) { + var6 = -1; + } + + Class146.updateInterfacePacketCounter(modelId); + for (var30 = var6; counter >= var30; ++var30) { + var36 = (long) var30 + ((long) var19 << 32); + var47 = (Class3_Sub1) Class124.aHashTable_1659.get(var36); + if (null != var47) { + var38 = new Class3_Sub1(var47.anInt2205, nodeModelId); + var47.unlink(); + } else if (var30 == -1) { + var38 = new Class3_Sub1(Objects.requireNonNull(Unsorted.getRSInterface(var19)).aClass3_Sub1_257.anInt2205, nodeModelId); + } else { + var38 = new Class3_Sub1(0, nodeModelId); + } + + Class124.aHashTable_1659.put(var36, var38); + } + + Unsorted.incomingOpcode = -1; + return true; + } else { + int var33; + if (Unsorted.incomingOpcode == 56) { //UNUSED + nodeModelId = BufferedDataStream.incomingBuffer.readUnsignedShort(); + var19 = BufferedDataStream.incomingBuffer.readUnsignedShortLE(); + modelId = BufferedDataStream.incomingBuffer.readIntV1(); + counter = BufferedDataStream.incomingBuffer.readUnsignedShortLE128(); + if (modelId >> 30 == 0) { + SequenceDefinition var53; + if (modelId >> 29 != 0) { + var6 = 65535 & modelId; + NPC var62 = NPC.npcs[var6]; + if (null != var62) { + if (counter == 65535) { + counter = -1; + } + var32 = counter == -1 || -1 == var62.anInt2842 || SequenceDefinition.getAnimationDefinition(GraphicDefinition.getGraphicDefinition(var62.anInt2842).anInt542).forcedPriority <= SequenceDefinition.getAnimationDefinition(GraphicDefinition.getGraphicDefinition(counter).anInt542).forcedPriority; + + if (var32) { + var62.anInt2761 = 0; + var62.anInt2842 = counter; + var62.anInt2759 = Class44.anInt719 - -nodeModelId; + var62.anInt2805 = 0; + if (var62.anInt2759 > Class44.anInt719) { + var62.anInt2805 = -1; + } + + var62.anInt2799 = var19; + var62.anInt2826 = 1; + if (var62.anInt2842 != -1 && Class44.anInt719 == var62.anInt2759) { + var33 = GraphicDefinition.getGraphicDefinition(var62.anInt2842).anInt542; + if (var33 != -1) { + var53 = SequenceDefinition.getAnimationDefinition(var33); + if (null != var53.frames) { + Unsorted.method1470(var62.yAxis, var53, var62.xAxis, false, 0); + } + } + } + } + } + } else if (modelId >> 28 != 0) { + var6 = modelId & 65535; + Player var60; + if (var6 == Class3_Sub1.localIndex) { + var60 = Class102.player; + } else { + var60 = Unsorted.players[var6]; + } + + if (null != var60) { + if (counter == 65535) { + counter = -1; + } + var32 = counter == -1 || var60.anInt2842 == -1 || SequenceDefinition.getAnimationDefinition(GraphicDefinition.getGraphicDefinition(var60.anInt2842).anInt542).forcedPriority <= SequenceDefinition.getAnimationDefinition(GraphicDefinition.getGraphicDefinition(counter).anInt542).forcedPriority; + + if (var32) { + var60.anInt2759 = nodeModelId + Class44.anInt719; + var60.anInt2799 = var19; + var60.anInt2842 = counter; + + var60.anInt2826 = 1; + var60.anInt2761 = 0; + var60.anInt2805 = 0; + if (var60.anInt2759 > Class44.anInt719) { + var60.anInt2805 = -1; + } + + if (var60.anInt2842 != -1 && Class44.anInt719 == var60.anInt2759) { + var33 = GraphicDefinition.getGraphicDefinition(var60.anInt2842).anInt542; + if (var33 != -1) { + var53 = SequenceDefinition.getAnimationDefinition(var33); + if (null != var53.frames) { + Unsorted.method1470(var60.yAxis, var53, var60.xAxis, var60 == Class102.player, 0); + } + } + } + } + } + } + } else { + var6 = 3 & modelId >> 28; + var30 = ((modelId & 268434277) >> 14) + -Class131.x1716; + chatIcon = (modelId & 16383) + -Texture.y1152; + if (var30 >= 0 && chatIcon >= 0 && 104 > var30 && chatIcon < 104) { + chatIcon = chatIcon * 128 - -64; + var30 = 128 * var30 + 64; + PositionedGraphicObject var50 = new PositionedGraphicObject(counter, var6, var30, chatIcon, -var19 + Scenery.sceneryPositionHash(var6, 1, var30, chatIcon), nodeModelId, Class44.anInt719); + TextureOperation17.aLinkedList_3177.pushBack(new Class3_Sub28_Sub2(var50)); + } + } + + Unsorted.incomingOpcode = -1; + return true; + } else if (Unsorted.incomingOpcode == 207) { //UNUSED + nodeModelId = BufferedDataStream.incomingBuffer.readIntV2(); + var19 = BufferedDataStream.incomingBuffer.readUnsignedShort128(); + modelId = BufferedDataStream.incomingBuffer.readUnsignedShort(); + counter = BufferedDataStream.incomingBuffer.readUnsignedShort128(); + Class146.updateInterfacePacketCounter(var19); + Class114.method1708(counter + (modelId << 16), nodeModelId); + + Unsorted.incomingOpcode = -1; + return true; + } else if (Unsorted.incomingOpcode == 38) { + BufferedDataStream.method819(); + nodeModelId = BufferedDataStream.incomingBuffer.readUnsignedByte128();//Level + var19 = BufferedDataStream.incomingBuffer.readIntV1();//Skillxp + modelId = BufferedDataStream.incomingBuffer.readUnsignedByte();//Skill ID + int gain = var19 - XPGainDraw.getLastXp()[modelId]; + XPGainDraw.addGain(gain,modelId); + XPGainDraw.getLastXp()[modelId] = var19; + Class133.anIntArray1743[modelId] = var19;//XP for Skill ID + TextureOperation17.anIntArray3185[modelId] = nodeModelId;//Level for Skill ID + Class3_Sub20.anIntArray2480[modelId] = 1; + + for (counter = 0; 98 > counter; ++counter) { + if (ItemDefinition.anIntArray781[counter] <= var19) { //Checks xp less than or equal to level 98 or 11805606 xp + Class3_Sub20.anIntArray2480[modelId] = counter + 2; + } + } + //Calculate xp till next level + //System.out.println("xp Gained: " + (ItemDefinition.anIntArray781[nodeModelId - 1] - var19)); + + + Client.anIntArray3780[Unsorted.bitwiseAnd(31, Class49.anInt815++)] = modelId; + Unsorted.incomingOpcode = -1; + return true; + } else if (Unsorted.incomingOpcode == 104 || + 121 == Unsorted.incomingOpcode || + Unsorted.incomingOpcode == 97 || + Unsorted.incomingOpcode == 14 || + Unsorted.incomingOpcode == 202 || + Unsorted.incomingOpcode == 135 || + Unsorted.incomingOpcode == 17 || + Unsorted.incomingOpcode == 16 || + Unsorted.incomingOpcode == 240 || + Unsorted.incomingOpcode == 33 || + Unsorted.incomingOpcode == 20 || + 195 == Unsorted.incomingOpcode || + 179 == Unsorted.incomingOpcode) { + Class39.parseChunkPacket((byte) -99); + Unsorted.incomingOpcode = -1; + return true; + } else if (Unsorted.incomingOpcode == 149) { + nodeModelId = BufferedDataStream.incomingBuffer.readUnsignedShort(); + var19 = BufferedDataStream.incomingBuffer.readInt(); + Class146.updateInterfacePacketCounter(nodeModelId); + Class3_Sub31 var67 = TextureOperation23.aHashTable_3208.get(var19); + if (null != var67) { + TextureOperation19.method254(true, var67); + } + + if (null != TextureOperation27.aClass11_3087) { + Class20.method909(TextureOperation27.aClass11_3087); + TextureOperation27.aClass11_3087 = null; + } + + Unsorted.incomingOpcode = -1; + return true; + } else if (Unsorted.incomingOpcode == 187) { + //set camera + nodeModelId = BufferedDataStream.incomingBuffer.readUnsignedShortLE(); + var19 = BufferedDataStream.incomingBuffer.readUnsignedShort(); + modelId = BufferedDataStream.incomingBuffer.readUnsignedShort(); + Class146.updateInterfacePacketCounter(var19); + GraphicDefinition.CAMERA_DIRECTION = nodeModelId; + Unsorted.anInt2309 = modelId; + if (Class133.anInt1753 == 2) { + Class139.anInt1823 = Unsorted.anInt2309; + TextureOperation28.anInt3315 = GraphicDefinition.CAMERA_DIRECTION; + } + + Unsorted.clampCameraAngle(); + + Unsorted.incomingOpcode = -1; + return true; + } else if (Unsorted.incomingOpcode == 132) { //UNUSED + nodeModelId = BufferedDataStream.incomingBuffer.readUnsignedShort(); + var19 = BufferedDataStream.incomingBuffer.readUnsignedShort128(); + modelId = BufferedDataStream.incomingBuffer.readUnsignedShortLE128(); + counter = BufferedDataStream.incomingBuffer.readUnsignedShortLE128(); + var6 = BufferedDataStream.incomingBuffer.readInt(); + Class146.updateInterfacePacketCounter(var19); + Unsorted.method2143((byte) -124, modelId, var6, counter, nodeModelId); + + Unsorted.incomingOpcode = -1; + return true; + } else if (112 == Unsorted.incomingOpcode) { + Class39.currentChunkX = BufferedDataStream.incomingBuffer.readUnsignedByte(); + Class39.currentChunkY = BufferedDataStream.incomingBuffer.readUnsignedNegativeByte(); + + for (nodeModelId = Class39.currentChunkX; nodeModelId < 8 + Class39.currentChunkX; ++nodeModelId) { + for (var19 = Class39.currentChunkY; 8 + Class39.currentChunkY > var19; ++var19) { + if (null != Class39.groundItems[WorldListCountry.localPlane][nodeModelId][var19]) { + Class39.groundItems[WorldListCountry.localPlane][nodeModelId][var19] = null; + Class128.method1760(var19, nodeModelId); + } + } + } + + for (Scenery var68 = (Scenery) Scenery.sceneryList.startIteration(); null != var68; var68 = (Scenery) Scenery.sceneryList.nextIteration()) { + if (Class39.currentChunkX <= var68.x && 8 + Class39.currentChunkX > var68.x && var68.y >= Class39.currentChunkY && 8 + Class39.currentChunkY > var68.y && var68.plane == WorldListCountry.localPlane) { + var68.anInt2259 = 0; + } + } + + Unsorted.incomingOpcode = -1; + return true; + } else if (Unsorted.incomingOpcode == 144) { + nodeModelId = BufferedDataStream.incomingBuffer.readIntV2(); + RSInterface var65 = Unsorted.getRSInterface(nodeModelId); + + for (modelId = 0; Objects.requireNonNull(var65).itemAmounts.length > modelId; ++modelId) { + var65.itemAmounts[modelId] = -1; + var65.itemAmounts[modelId] = 0; + } + + Class20.method909(var65); + Unsorted.incomingOpcode = -1; + return true; + } else if (Unsorted.incomingOpcode == 130) { + nodeModelId = BufferedDataStream.incomingBuffer.readIntLE(); + var19 = BufferedDataStream.incomingBuffer.readUnsignedShortLE128(); + modelId = BufferedDataStream.incomingBuffer.readUnsignedShort128(); + if (modelId == 65535) { + modelId = -1; + } + + Class146.updateInterfacePacketCounter(var19); + method256(-1, 1, nodeModelId, modelId); + + Unsorted.incomingOpcode = -1; + return true; + } else if (Unsorted.incomingOpcode == 192) { + Class161.anInt2028 = BufferedDataStream.incomingBuffer.readUnsignedByte(); + Unsorted.incomingOpcode = -1; + return true; + } else if (Unsorted.incomingOpcode == 13) { + nodeModelId = BufferedDataStream.incomingBuffer.readUnsigned128Byte(); + var19 = BufferedDataStream.incomingBuffer.readUnsignedByte128(); + modelId = BufferedDataStream.incomingBuffer.readUnsignedByte(); + WorldListCountry.localPlane = var19 >> 1; + Class102.player.updatePlayerPosition(nodeModelId, (var19 & 1) == 1, modelId); + Unsorted.incomingOpcode = -1; + return true; + } else { + int var12; + RSString var57; + RSString var64; + if (Unsorted.incomingOpcode == 62) { + var2 = BufferedDataStream.incomingBuffer.readLong(); + modelId = BufferedDataStream.incomingBuffer.readUnsignedShort(); + counter = BufferedDataStream.incomingBuffer.readUnsignedByte(); + isIgnored = true; + if (var2 < 0L) { + var2 &= Long.MAX_VALUE; + isIgnored = false; + } + + var41 = RSString.parse(""); + if (modelId > 0) { + var41 = BufferedDataStream.incomingBuffer.readString(); + } + + RSString var46 = Objects.requireNonNull(Unsorted.method1052(var2)).longToRSString(); + + for (var33 = 0; var33 < Class8.anInt104; ++var33) { + if (var2 == Class50.aLongArray826[var33]) { + if (Unsorted.anIntArray882[var33] != modelId) { + Unsorted.anIntArray882[var33] = modelId; + if (0 < modelId) { + BufferedDataStream.addChatMessage(RSString.parse(""), 5, RSString.stringCombiner(new RSString[]{var46, TextCore.HasLoggedIn}), -1); + } + + if (modelId == 0) { + BufferedDataStream.addChatMessage(RSString.parse(""), 5, RSString.stringCombiner(new RSString[]{var46, TextCore.HasLoggedOut}), -1); + } + } + + Unsorted.aStringArray2566[var33] = var41; + Class57.anIntArray904[var33] = counter; + var46 = null; + Unsorted.aBooleanArray73[var33] = isIgnored; + break; + } + } + + boolean var45; + if (null != var46 && 200 > Class8.anInt104) { + Class50.aLongArray826[Class8.anInt104] = var2; + Class70.aStringArray1046[Class8.anInt104] = var46; + Unsorted.anIntArray882[Class8.anInt104] = modelId; + Unsorted.aStringArray2566[Class8.anInt104] = var41; + Class57.anIntArray904[Class8.anInt104] = counter; + Unsorted.aBooleanArray73[Class8.anInt104] = isIgnored; + ++Class8.anInt104; + } + + Class110.anInt1472 = anInt3213; + clanChatIcon = Class8.anInt104; + + while (clanChatIcon > 0) { + --clanChatIcon; + var45 = true; + + for (var11 = 0; var11 < clanChatIcon; ++var11) { + if (CS2Script.userCurrentWorldID != Unsorted.anIntArray882[var11] && Unsorted.anIntArray882[var11 - -1] == CS2Script.userCurrentWorldID || Unsorted.anIntArray882[var11] == 0 && Unsorted.anIntArray882[var11 - -1] != 0) { + var45 = false; + var12 = Unsorted.anIntArray882[var11]; + Unsorted.anIntArray882[var11] = Unsorted.anIntArray882[var11 - -1]; + Unsorted.anIntArray882[1 + var11] = var12; + var64 = Unsorted.aStringArray2566[var11]; + Unsorted.aStringArray2566[var11] = Unsorted.aStringArray2566[var11 + 1]; + Unsorted.aStringArray2566[var11 - -1] = var64; + var57 = Class70.aStringArray1046[var11]; + Class70.aStringArray1046[var11] = Class70.aStringArray1046[var11 + 1]; + Class70.aStringArray1046[var11 - -1] = var57; + long var15 = Class50.aLongArray826[var11]; + Class50.aLongArray826[var11] = Class50.aLongArray826[var11 - -1]; + Class50.aLongArray826[var11 - -1] = var15; + int var17 = Class57.anIntArray904[var11]; + Class57.anIntArray904[var11] = Class57.anIntArray904[var11 - -1]; + Class57.anIntArray904[1 + var11] = var17; + boolean var18 = Unsorted.aBooleanArray73[var11]; + Unsorted.aBooleanArray73[var11] = Unsorted.aBooleanArray73[var11 - -1]; + Unsorted.aBooleanArray73[var11 - -1] = var18; + } + } + + if (var45) { + break; + } + } + + Unsorted.incomingOpcode = -1; + return true; + } else if (Unsorted.incomingOpcode == 160) { + if (0 == Unsorted.incomingPacketLength) { + TextureOperation32.aString_3353 = TextCore.HasWalkHere; + } else { + TextureOperation32.aString_3353 = BufferedDataStream.incomingBuffer.readString(); + } + + Unsorted.incomingOpcode = -1; + return true; + } else if (128 == Unsorted.incomingOpcode) { //UNUSED + for (nodeModelId = 0; nodeModelId < ItemDefinition.ram.length; ++nodeModelId) { + if (ItemDefinition.ram[nodeModelId] != Class57.varpArray[nodeModelId]) { + ItemDefinition.ram[nodeModelId] = Class57.varpArray[nodeModelId]; + Class46.method1087(98, nodeModelId); + Class44.anIntArray726[Unsorted.bitwiseAnd(Class36.anInt641++, 31)] = nodeModelId; + } + } + + Unsorted.incomingOpcode = -1; + return true; + } else if (Unsorted.incomingOpcode == 154) {//camera position + nodeModelId = BufferedDataStream.incomingBuffer.readUnsignedShort(); + var19 = BufferedDataStream.incomingBuffer.readUnsignedByte(); + modelId = BufferedDataStream.incomingBuffer.readUnsignedByte(); + counter = BufferedDataStream.incomingBuffer.readUnsignedShort(); + var6 = BufferedDataStream.incomingBuffer.readUnsignedByte(); + var30 = BufferedDataStream.incomingBuffer.readUnsignedByte(); + Class146.updateInterfacePacketCounter(nodeModelId); + Class3_Sub20.method390(true, var6, counter, var30, (byte) -124, modelId, var19); + + Unsorted.incomingOpcode = -1; + return true; + } else if (247 == Unsorted.incomingOpcode) { //UNUSED + var2 = BufferedDataStream.incomingBuffer.readLong(); + nameAsLong = BufferedDataStream.incomingBuffer.readUnsignedShort(); + var29 = BufferedDataStream.incomingBuffer.readMedium(); + chatIcon = BufferedDataStream.incomingBuffer.readUnsignedByte(); + var33 = BufferedDataStream.incomingBuffer.readUnsignedShort(); + boolean var49 = false; + long var51 = (nameAsLong << 32) - -var29; + int var59 = 0; + + label1603: + while (true) { + if (100 > var59) { + if (Class163_Sub2_Sub1.aLongArray4017[var59] != var51) { + ++var59; + continue; + } + + var49 = true; + break; + } + + if (chatIcon <= 1) { + for (var59 = 0; Class3_Sub28_Sub5.anInt3591 > var59; ++var59) { + if (var2 == Class114.ignores[var59]) { + var49 = true; + break label1603; + } + } + } + break; + } + + if (!var49 && inTutorialIsland == 0) { + Class163_Sub2_Sub1.aLongArray4017[MouseListeningClass.anInt1921] = var51; + MouseListeningClass.anInt1921 = (1 + MouseListeningClass.anInt1921) % 100; + var64 = QuickChat.method733(var33).method555(BufferedDataStream.incomingBuffer); + if (chatIcon == 2) { + MessageManager.sendGameMessage(var33, 18, var64, null, RSString.stringCombiner(new RSString[]{RSString.parse(""), Objects.requireNonNull(Unsorted.method1052(var2)).longToRSString()})); + } else if (1 == chatIcon) { + MessageManager.sendGameMessage(var33, 18, var64, null, RSString.stringCombiner(new RSString[]{RSString.parse(""), Objects.requireNonNull(Unsorted.method1052(var2)).longToRSString()})); + } else { + MessageManager.sendGameMessage(var33, 18, var64, null, Objects.requireNonNull(Unsorted.method1052(var2)).longToRSString()); + } + } + + Unsorted.incomingOpcode = -1; + return true; + } else { + Class3_Sub31 var26; + if (Unsorted.incomingOpcode == 176) { //IMISED + nodeModelId = BufferedDataStream.incomingBuffer.readIntV1(); + var19 = BufferedDataStream.incomingBuffer.readUnsignedShort128(); + modelId = BufferedDataStream.incomingBuffer.readIntV1(); + Class146.updateInterfacePacketCounter(var19); + Class3_Sub31 var23 = TextureOperation23.aHashTable_3208.get(nodeModelId); + var26 = TextureOperation23.aHashTable_3208.get(modelId); + if (null != var26) { + TextureOperation19.method254(null == var23 || var26.anInt2602 != var23.anInt2602, var26); + } + + if (null != var23) { + var23.unlink(); + TextureOperation23.aHashTable_3208.put(modelId, var23); + } + + RSInterface var27 = Unsorted.getRSInterface(nodeModelId); + if (var27 != null) { + Class20.method909(var27); + } + + var27 = Unsorted.getRSInterface(modelId); + if (null != var27) { + Class20.method909(var27); + Unsorted.method2104(var27, true, 48); + } + + if (ConfigInventoryDefinition.anInt3655 != -1) { + Class3_Sub8.method124(28, 1, ConfigInventoryDefinition.anInt3655); + } + + Unsorted.incomingOpcode = -1; + return true; + } else if (Unsorted.incomingOpcode == 27) { //UNUSED + nodeModelId = BufferedDataStream.incomingBuffer.readUnsignedShort(); + var19 = BufferedDataStream.incomingBuffer.readUnsignedByte(); + modelId = BufferedDataStream.incomingBuffer.readUnsignedByte(); + counter = BufferedDataStream.incomingBuffer.readUnsignedByte(); + var6 = BufferedDataStream.incomingBuffer.readUnsignedByte(); + var30 = BufferedDataStream.incomingBuffer.readUnsignedShort(); + Class146.updateInterfacePacketCounter(nodeModelId); + WaterfallShader.aBooleanArray2169[var19] = true; + TextureOperation14.anIntArray3383[var19] = modelId; + Class166.anIntArray2073[var19] = counter; + TextureOperation3.anIntArray3359[var19] = var6; + Class163_Sub1_Sub1.anIntArray4009[var19] = var30; + + Unsorted.incomingOpcode = -1; + return true; + } else if (Unsorted.incomingOpcode == 2) { + nodeModelId = BufferedDataStream.incomingBuffer.readIntV1(); + var19 = BufferedDataStream.incomingBuffer.readUnsignedShort128(); + modelId = BufferedDataStream.incomingBuffer.readUnsignedShortLE128(); + Class146.updateInterfacePacketCounter(var19); + CSConfigCachefile.method1385(modelId, nodeModelId); + + Unsorted.incomingOpcode = -1; + return true; + } else if (Unsorted.incomingOpcode == 85) { + Class38_Sub1.anInt2617 = BufferedDataStream.incomingBuffer.readUnsignedShort() * 30; + Unsorted.incomingOpcode = -1; + Class140_Sub6.anInt2905 = anInt3213; + return true; + } else if (Unsorted.incomingOpcode == 114) { + TextureOperation3.method305(Class38.gameSignlink, BufferedDataStream.incomingBuffer, Unsorted.incomingPacketLength); + Unsorted.incomingOpcode = -1; + return true; + } else if (65 == Unsorted.incomingOpcode) { + nodeModelId = BufferedDataStream.incomingBuffer.readUnsignedShortLE(); + var19 = BufferedDataStream.incomingBuffer.readUnsignedNegativeByte(); + modelId = BufferedDataStream.incomingBuffer.readUnsignedShortLE128(); + Class146.updateInterfacePacketCounter(nodeModelId); + TextureOperation19.method255(modelId, var19, (byte) -83 ^ -84); + + Unsorted.incomingOpcode = -1; + return true; + } else if (Unsorted.incomingOpcode == 234) { + BufferedDataStream.method819(); + Unsorted.anInt136 = BufferedDataStream.incomingBuffer.readUnsignedByte(); + Class140_Sub6.anInt2905 = anInt3213; + Unsorted.incomingOpcode = -1; + return true; + } else if (Unsorted.incomingOpcode == 209) { + if (-1 != ConfigInventoryDefinition.anInt3655) { + Class3_Sub8.method124(48, 0, ConfigInventoryDefinition.anInt3655); + } + + Unsorted.incomingOpcode = -1; + return true; + } else if (Unsorted.incomingOpcode == 191) { + nodeModelId = BufferedDataStream.incomingBuffer.readUnsignedShortLE(); + CS2Methods.method532(nodeModelId); + QuickChatDefinition.anIntArray3565[Unsorted.bitwiseAnd(31, Unsorted.anInt944++)] = Unsorted.bitwiseAnd(nodeModelId, 32767); + Unsorted.incomingOpcode = -1; + return true; + } else if (Unsorted.incomingOpcode == 102) { + nodeModelId = BufferedDataStream.incomingBuffer.readUnsignedShortLE(); + var19 = BufferedDataStream.incomingBuffer.readUnsigned128Byte(); + modelId = BufferedDataStream.incomingBuffer.readUnsignedShort(); + NPC var39 = NPC.npcs[nodeModelId]; + if (null != var39) { + Unsorted.method1772(var19, modelId, 39, var39); + } + + Unsorted.incomingOpcode = -1; + return true; + } else if (Unsorted.incomingOpcode == 159) { + BufferedDataStream.method819(); + MouseListeningClass.anInt1925 = BufferedDataStream.incomingBuffer.readSignedShort(); + Class140_Sub6.anInt2905 = anInt3213; + Unsorted.incomingOpcode = -1; + return true; + } else if (Unsorted.incomingOpcode == 71) { + var2 = BufferedDataStream.incomingBuffer.readLong(); + var58 = Font.method686(Objects.requireNonNull(Class32.method992(BufferedDataStream.incomingBuffer).properlyCapitalize())); + BufferedDataStream.addChatMessage(Objects.requireNonNull(Unsorted.method1052(var2)).longToRSString(), 6, var58, (byte) -83 ^ 82); + Unsorted.incomingOpcode = -1; + return true; + } else if (Unsorted.incomingOpcode == 42) { + if (null != TextureOperation30.fullScreenFrame) { + GameObject.graphicsSettings(false, Unsorted.anInt2577, -1, -1); + } + + byte[] var22 = new byte[Unsorted.incomingPacketLength]; + BufferedDataStream.incomingBuffer.method811((byte) 30, 0, var22, Unsorted.incomingPacketLength); + playerName = TextureOperation33.bufferToString(var22, Unsorted.incomingPacketLength, 0); + if (null == GameShell.frame && (3 == Signlink.anInt1214 || !Signlink.osName.startsWith("win") || Class106.paramUserUsingInternetExplorer)) { + Class99.method1596(playerName, (byte) 127, true); + } else { + TextureOperation5.aString_3295 = playerName; + Unsorted.aBoolean2154 = true; + AudioThread.aClass64_351 = Class38.gameSignlink.method1452(new String(playerName.method1568(), StandardCharsets.ISO_8859_1), true); + } + + Unsorted.incomingOpcode = -1; + return true; + } else if (Unsorted.incomingOpcode == 111) { + nodeModelId = BufferedDataStream.incomingBuffer.readUnsignedShort128(); + var19 = BufferedDataStream.incomingBuffer.readIntV2(); + modelId = BufferedDataStream.incomingBuffer.readUnsignedShortLE128(); + counter = BufferedDataStream.incomingBuffer.readUnsignedShortLE(); + var6 = BufferedDataStream.incomingBuffer.readUnsignedShortLE128(); + Class146.updateInterfacePacketCounter(nodeModelId); + method256(modelId, 7, var19, counter << 16 | var6); + + Unsorted.incomingOpcode = -1; + return true; + } else if (37 == Unsorted.incomingOpcode) { + nodeModelId = BufferedDataStream.incomingBuffer.readUnsignedByte128(); + var19 = BufferedDataStream.incomingBuffer.readUnsignedShortLE(); + VarpHelpers.setVarbit((byte) -122, nodeModelId, var19); + Unsorted.incomingOpcode = -1; + return true; + } else if (Unsorted.incomingOpcode == 155) { + nodeModelId = BufferedDataStream.incomingBuffer.readUnsignedByte(); + var19 = BufferedDataStream.incomingBuffer.readIntV2(); + modelId = BufferedDataStream.incomingBuffer.readUnsignedShort128(); + counter = BufferedDataStream.incomingBuffer.readUnsignedShort(); + Class146.updateInterfacePacketCounter(modelId); + var26 = TextureOperation23.aHashTable_3208.get(var19); + if (null != var26) { + TextureOperation19.method254(var26.anInt2602 != counter, var26); + } + + Class21.method914(counter, var19, nodeModelId); + + Unsorted.incomingOpcode = -1; + return true; + } else if (Unsorted.incomingOpcode == 131) { + for (nodeModelId = 0; nodeModelId < Unsorted.players.length; ++nodeModelId) { + if (Unsorted.players[nodeModelId] != null) { + Unsorted.players[nodeModelId].anInt2771 = -1; + } + } + + for (nodeModelId = 0; nodeModelId < NPC.npcs.length; ++nodeModelId) { + if (null != NPC.npcs[nodeModelId]) { + NPC.npcs[nodeModelId].anInt2771 = -1; + } + } + + Unsorted.incomingOpcode = -1; + return true; + } else if (Unsorted.incomingOpcode == 217) { + nodeModelId = BufferedDataStream.incomingBuffer.readUnsignedByte(); + Class96 var48 = new Class96(); + var19 = nodeModelId >> 6; + var48.anInt1360 = nodeModelId & 63; + var48.anInt1351 = BufferedDataStream.incomingBuffer.readUnsignedByte(); + if (var48.anInt1351 >= 0 && Class166.aAbstractSpriteArray2072.length > var48.anInt1351) { + if (var48.anInt1360 == 1 || 10 == var48.anInt1360) { + var48.anInt1359 = BufferedDataStream.incomingBuffer.readUnsignedShort(); + BufferedDataStream.incomingBuffer.index += 3; + } else if (var48.anInt1360 >= 2 && 6 >= var48.anInt1360) { + if (var48.anInt1360 == 2) { + var48.anInt1346 = 64; + var48.anInt1350 = 64; + } + + if (var48.anInt1360 == 3) { + var48.anInt1346 = 0; + var48.anInt1350 = 64; + } + + if (4 == var48.anInt1360) { + var48.anInt1346 = 128; + var48.anInt1350 = 64; + } + + if (5 == var48.anInt1360) { + var48.anInt1346 = 64; + var48.anInt1350 = 0; + } + + if (var48.anInt1360 == 6) { + var48.anInt1346 = 64; + var48.anInt1350 = 128; + } + + var48.anInt1360 = 2; + var48.anInt1356 = BufferedDataStream.incomingBuffer.readUnsignedShort(); + var48.anInt1347 = BufferedDataStream.incomingBuffer.readUnsignedShort(); + var48.anInt1353 = BufferedDataStream.incomingBuffer.readUnsignedByte(); + } + + var48.anInt1355 = BufferedDataStream.incomingBuffer.readUnsignedShort(); + if (var48.anInt1355 == 65535) { + var48.anInt1355 = -1; + } + + ClientErrorException.aClass96Array2114[var19] = var48; + } + + Unsorted.incomingOpcode = -1; + return true; + } else if (126 == Unsorted.incomingOpcode) { + Class3_Sub28_Sub5.anInt3591 = Unsorted.incomingPacketLength / 8; + + for (nodeModelId = 0; Class3_Sub28_Sub5.anInt3591 > nodeModelId; ++nodeModelId) { + Class114.ignores[nodeModelId] = BufferedDataStream.incomingBuffer.readLong(); + TextureOperation7.aStringArray3341[nodeModelId] = Unsorted.method1052(Class114.ignores[nodeModelId]); + } + + Class110.anInt1472 = anInt3213; + Unsorted.incomingOpcode = -1; + return true; + } else if (Unsorted.incomingOpcode == 32) { + NPCRendering.renderNPCs(8169); + Unsorted.incomingOpcode = -1; + return true; + } else if (Unsorted.incomingOpcode == 119) { + //Reposition child? + nodeModelId = BufferedDataStream.incomingBuffer.readUnsignedShort128(); + var19 = BufferedDataStream.incomingBuffer.readIntLE(); + modelId = BufferedDataStream.incomingBuffer.readSignedShort(); + counter = BufferedDataStream.incomingBuffer.readSignedShort128(); + Class146.updateInterfacePacketCounter(nodeModelId); + RSInterface.method2271(modelId, var19, counter); + + Unsorted.incomingOpcode = -1; + return true; + } else if (Unsorted.incomingOpcode == 235) { + nodeModelId = BufferedDataStream.incomingBuffer.readUnsigned128Byte(); + var19 = nodeModelId >> 2; + modelId = 3 & nodeModelId; + counter = Class75.anIntArray1107[var19]; + var6 = BufferedDataStream.incomingBuffer.readUnsignedShort(); + var30 = BufferedDataStream.incomingBuffer.readInt(); + if (65535 == var6) { + var6 = -1; + } + + clanChatIcon = 16383 & var30; + var33 = 16383 & var30 >> 14; + var33 -= Class131.x1716; + clanChatIcon -= Texture.y1152; + chatIcon = 3 & var30 >> 28; + Class50.method1131(chatIcon, 110, modelId, var19, clanChatIcon, counter, var33, var6); + Unsorted.incomingOpcode = -1; + return true; + } else if (Unsorted.incomingOpcode == 0) { + var2 = BufferedDataStream.incomingBuffer.readLong(); + nameAsLong = BufferedDataStream.incomingBuffer.readUnsignedShort(); + var29 = BufferedDataStream.incomingBuffer.readMedium(); + chatIcon = BufferedDataStream.incomingBuffer.readUnsignedByte(); + boolean var42 = false; + long var35 = var29 + (nameAsLong << 32); + var12 = 0; + label1651: + while (true) { + if (var12 >= 100) { + if (chatIcon <= 1) { + if ((!Class3_Sub15.aBoolean2433 || Class121.aBoolean1641) && !TextureOperation31.aBoolean3166) { + for (var12 = 0; var12 < Class3_Sub28_Sub5.anInt3591; ++var12) { + if (Class114.ignores[var12] == var2) { + var42 = true; + break label1651; + } + } + } else { + var42 = true; + } + } + break; + } + + if (Class163_Sub2_Sub1.aLongArray4017[var12] == var35) { + var42 = true; + break; + } + + ++var12; + } + + if (!var42 && inTutorialIsland == 0) { + Class163_Sub2_Sub1.aLongArray4017[MouseListeningClass.anInt1921] = var35; + MouseListeningClass.anInt1921 = (MouseListeningClass.anInt1921 - -1) % 100; + RSString var52 = Font.method686(Objects.requireNonNull(Class32.method992(BufferedDataStream.incomingBuffer).properlyCapitalize())); + if (chatIcon == 2 || chatIcon == 3) { + BufferedDataStream.addChatMessage(RSString.stringCombiner(new RSString[]{RSString.parse(""), Objects.requireNonNull(Unsorted.method1052(var2)).longToRSString()}), 7, var52, -1); + } else if (chatIcon == 1) { + BufferedDataStream.addChatMessage(RSString.stringCombiner(new RSString[]{RSString.parse(""), Objects.requireNonNull(Unsorted.method1052(var2)).longToRSString()}), 7, var52, -1); + } else { + BufferedDataStream.addChatMessage(RSString.stringCombiner(new RSString[]{RSString.parse(""), Objects.requireNonNull(Unsorted.method1052(var2)).longToRSString()}), 7, var52, -1); + } + } + + Unsorted.incomingOpcode = -1; + return true; + } else if (Unsorted.incomingOpcode == 54) {//cc messahe + var2 = BufferedDataStream.incomingBuffer.readLong(); + BufferedDataStream.incomingBuffer.readSignedByte(); + nameAsLong = BufferedDataStream.incomingBuffer.readLong(); + var29 = BufferedDataStream.incomingBuffer.readUnsignedShort(); + var36 = BufferedDataStream.incomingBuffer.readMedium(); + long var44 = (var29 << 32) + var36; + clanChatIcon = BufferedDataStream.incomingBuffer.readUnsignedByte(); + boolean var13 = false; + int var14 = 0; + + label1774: + while (true) { + if (var14 >= 100) { + if (1 >= clanChatIcon) { + if ((!Class3_Sub15.aBoolean2433 || Class121.aBoolean1641) && !TextureOperation31.aBoolean3166) { + for (var14 = 0; Class3_Sub28_Sub5.anInt3591 > var14; ++var14) { + if (Class114.ignores[var14] == var2) { + var13 = true; + break label1774; + } + } + } else { + var13 = true; + } + } + break; + } + + if (Class163_Sub2_Sub1.aLongArray4017[var14] == var44) { + var13 = true; + break; + } + + ++var14; + } + + if (!var13 && 0 == inTutorialIsland) { + Class163_Sub2_Sub1.aLongArray4017[MouseListeningClass.anInt1921] = var44; + MouseListeningClass.anInt1921 = (MouseListeningClass.anInt1921 + 1) % 100; + var57 = Font.method686(Objects.requireNonNull(Class32.method992(BufferedDataStream.incomingBuffer).properlyCapitalize())); + if (clanChatIcon == 2 || clanChatIcon == 3) { + TextureOperation1.method221(-1, var57, RSString.stringCombiner(new RSString[]{RSString.parse(""), Objects.requireNonNull(Unsorted.method1052(var2)).longToRSString()}), Objects.requireNonNull(Unsorted.method1052(nameAsLong)).longToRSString(), 9); + } else if (clanChatIcon == 1) { + TextureOperation1.method221(-1, var57, RSString.stringCombiner(new RSString[]{RSString.parse(""), Objects.requireNonNull(Unsorted.method1052(var2)).longToRSString()}), Objects.requireNonNull(Unsorted.method1052(nameAsLong)).longToRSString(), 9); + } else { + if (clanChatIcon == 0) + TextureOperation1.method221(-1, var57, Objects.requireNonNull(Unsorted.method1052(var2)).longToRSString(), Objects.requireNonNull(Unsorted.method1052(nameAsLong)).longToRSString(), 9); + else + TextureOperation1.method221(-1, var57, RSString.stringCombiner(new RSString[]{RSString.parse(""), Objects.requireNonNull(Unsorted.method1052(var2)).longToRSString()}), Objects.requireNonNull(Unsorted.method1052(nameAsLong)).longToRSString(), 9); + } + } + + Unsorted.incomingOpcode = -1; + return true; + } else if (Unsorted.incomingOpcode == 214) { + Class39.updateSceneGraph(true); + Unsorted.incomingOpcode = -1; + return true; + } else if (Unsorted.incomingOpcode == 172) { + int soundEffectID; + int soundEffectDelay; + int soundEffectVolume; + soundEffectDelay = BufferedDataStream.incomingBuffer.readUnsignedShort(); + soundEffectID = BufferedDataStream.incomingBuffer.readUnsignedByte(); + if (soundEffectDelay == 65535) { + soundEffectDelay = -1; + } + + soundEffectVolume = BufferedDataStream.incomingBuffer.readUnsignedShort(); + AudioHandler.soundEffectHandler(soundEffectID, soundEffectDelay, soundEffectVolume); + Unsorted.incomingOpcode = -1; + return true; + } else if (Unsorted.incomingOpcode == 66) { + nodeModelId = BufferedDataStream.incomingBuffer.readUnsignedShortLE128(); + var19 = BufferedDataStream.incomingBuffer.readIntV1(); + Class146.updateInterfacePacketCounter(nodeModelId); + modelId = 0; + if (Class102.player.class52 != null) { + modelId = Class102.player.class52.method1163(); + } + + method256(-1, 3, var19, modelId); + + Unsorted.incomingOpcode = -1; + return true; + } else if (Unsorted.incomingOpcode == 171) { + nodeModelId = BufferedDataStream.incomingBuffer.readIntV2(); + playerName = BufferedDataStream.incomingBuffer.readString(); + modelId = BufferedDataStream.incomingBuffer.readUnsignedShort128(); + Class146.updateInterfacePacketCounter(modelId); + Unsorted.method566(playerName, nodeModelId); + + Unsorted.incomingOpcode = -1; + return true; + } else if (Unsorted.incomingOpcode == 84) { + nodeModelId = BufferedDataStream.incomingBuffer.readIntLE(); + var19 = BufferedDataStream.incomingBuffer.readUnsignedShortLE128(); + VarpHelpers.setVarbit((byte) -106, nodeModelId, var19); + Unsorted.incomingOpcode = -1; + return true; + } else { + RSInterface iface; + if (Unsorted.incomingOpcode == 22) { + nodeModelId = BufferedDataStream.incomingBuffer.readInt(); + var19 = BufferedDataStream.incomingBuffer.readUnsignedShort(); + if (nodeModelId < -70000) { + var19 += 32768; + } + + if (nodeModelId < 0) { + iface = null; + } else { + iface = Unsorted.getRSInterface(nodeModelId); + } + + for (; Unsorted.incomingPacketLength > BufferedDataStream.incomingBuffer.index; method2277(var6 + -1, counter, var30, var19, (byte) 46)) { + counter = BufferedDataStream.incomingBuffer.getSmart(); + var6 = BufferedDataStream.incomingBuffer.readUnsignedShort(); + var30 = 0; + if (var6 != 0) { + var30 = BufferedDataStream.incomingBuffer.readUnsignedByte(); + if (var30 == 255) { + var30 = BufferedDataStream.incomingBuffer.readInt(); + } + } + + if (iface != null && counter >= 0 && counter < iface.itemAmounts.length) { + iface.itemAmounts[counter] = var6; + iface.itemIds[counter] = var30; + } + } + + if (iface != null) { + Class20.method909(iface); + } + + BufferedDataStream.method819(); + QuickChatDefinition.anIntArray3565[Unsorted.bitwiseAnd(Unsorted.anInt944++, 31)] = Unsorted.bitwiseAnd(32767, var19); + Unsorted.incomingOpcode = -1; + return true; + } else if (Unsorted.incomingOpcode == 24) { + nodeModelId = BufferedDataStream.incomingBuffer.readUnsignedShort(); + Class146.updateInterfacePacketCounter(nodeModelId); + Class3_Sub28_Sub5.method560(); + + Unsorted.incomingOpcode = -1; + return true; + } else if (Unsorted.incomingOpcode == 86) { + XPGainDraw.reset(); + SlayerTracker.reset(); + Discord.updatePresence("Coping","",""); + Class167.method2269((byte) 46); + Unsorted.incomingOpcode = -1; + return false; + } else if (116 == Unsorted.incomingOpcode) { + nodeModelId = BufferedDataStream.incomingBuffer.readUnsignedByte(); + if (BufferedDataStream.incomingBuffer.readUnsignedByte() == 0) { + TextureOperation29.aClass133Array3393[nodeModelId] = new Class133(); + } else { + --BufferedDataStream.incomingBuffer.index; + TextureOperation29.aClass133Array3393[nodeModelId] = new Class133(BufferedDataStream.incomingBuffer); + } + + Unsorted.incomingOpcode = -1; + Class121.anInt1642 = anInt3213; + return true; + } else if (Unsorted.incomingOpcode == 73) {//npc model + nodeModelId = BufferedDataStream.incomingBuffer.readUnsignedShort128(); + var19 = BufferedDataStream.incomingBuffer.readIntLE(); + if (nodeModelId == 65535) { + nodeModelId = -1; + } + + modelId = BufferedDataStream.incomingBuffer.readUnsignedShortLE(); + Class146.updateInterfacePacketCounter(modelId); + method256(-1, 2, var19, nodeModelId); + + Unsorted.incomingOpcode = -1; + return true; + } else if (Unsorted.incomingOpcode == 162) { + Class39.updateSceneGraph(false); + Unsorted.incomingOpcode = -1; + return true; + } else if (165 == Unsorted.incomingOpcode) { + nodeModelId = BufferedDataStream.incomingBuffer.readUnsignedShortLE(); + var19 = BufferedDataStream.incomingBuffer.readUnsignedShortLE(); + if (var19 == 65535) { + var19 = -1; + } + + modelId = BufferedDataStream.incomingBuffer.readInt(); + counter = BufferedDataStream.incomingBuffer.readUnsignedShort128(); + var6 = BufferedDataStream.incomingBuffer.readIntV1(); + if (counter == 65535) { + counter = -1; + } + + Class146.updateInterfacePacketCounter(nodeModelId); + for (var30 = counter; var30 <= var19; ++var30) { + var36 = ((long) modelId << 32) - -((long) var30); + var47 = (Class3_Sub1) Class124.aHashTable_1659.get(var36); + if (var47 == null) { + if (-1 == var30) { + var38 = new Class3_Sub1(var6, Objects.requireNonNull(Unsorted.getRSInterface(modelId)).aClass3_Sub1_257.anInt2202); + } else { + var38 = new Class3_Sub1(var6, -1); + } + } else { + var38 = new Class3_Sub1(var6, var47.anInt2202); + var47.unlink(); + } + + Class124.aHashTable_1659.put(var36, var38); + } + + Unsorted.incomingOpcode = -1; + return true; + } else if (Unsorted.incomingOpcode == 197) { + CS2Script.anInt1357 = BufferedDataStream.incomingBuffer.readUnsignedByte(); + Class110.anInt1472 = anInt3213; + Unsorted.incomingOpcode = -1; + return true; + } else if (Unsorted.incomingOpcode == 196) { + var2 = BufferedDataStream.incomingBuffer.readLong(); + modelId = BufferedDataStream.incomingBuffer.readUnsignedShort(); + byte var28 = BufferedDataStream.incomingBuffer.readSignedByte(); + isIgnored = (Long.MIN_VALUE & var2) != 0; + + if (isIgnored) { + if (Unsorted.clanSize == 0) { + Unsorted.incomingOpcode = -1; + return true; + } + + var2 &= Long.MAX_VALUE; + + for (var30 = 0; var30 < Unsorted.clanSize && (var2 != aClass3_Sub19Array3694[var30].linkableKey || aClass3_Sub19Array3694[var30].anInt2478 != modelId); ++var30) { + } + + if (var30 < Unsorted.clanSize) { + while (var30 < -1 + Unsorted.clanSize) { + aClass3_Sub19Array3694[var30] = aClass3_Sub19Array3694[1 + var30]; + ++var30; + } + + --Unsorted.clanSize; + aClass3_Sub19Array3694[Unsorted.clanSize] = null; + } + } else { + var41 = BufferedDataStream.incomingBuffer.readString(); + Class3_Sub19 var40 = new Class3_Sub19(); + var40.linkableKey = var2; + var40.aString_2476 = Unsorted.method1052(var40.linkableKey); + var40.aByte2472 = var28; + var40.aString_2473 = var41; + var40.anInt2478 = modelId; + + for (var33 = -1 + Unsorted.clanSize; var33 >= 0; --var33) { + clanChatIcon = aClass3_Sub19Array3694[var33].aString_2476.method1559(var40.aString_2476); + if (clanChatIcon == 0) { + aClass3_Sub19Array3694[var33].anInt2478 = modelId; + aClass3_Sub19Array3694[var33].aByte2472 = var28; + aClass3_Sub19Array3694[var33].aString_2473 = var41; + if (aLong3202 == var2) { + Class91.aByte1308 = var28; + } + + Class167.anInt2087 = anInt3213; + Unsorted.incomingOpcode = -1; + return true; + } + + if (clanChatIcon < 0) { + break; + } + } + + if (aClass3_Sub19Array3694.length <= Unsorted.clanSize) { + Unsorted.incomingOpcode = -1; + return true; + } + + for (clanChatIcon = Unsorted.clanSize + -1; clanChatIcon > var33; --clanChatIcon) { + aClass3_Sub19Array3694[1 + clanChatIcon] = aClass3_Sub19Array3694[clanChatIcon]; + } + + if (Unsorted.clanSize == 0) { + aClass3_Sub19Array3694 = new Class3_Sub19[100]; + } + + aClass3_Sub19Array3694[1 + var33] = var40; + if (aLong3202 == var2) { + Class91.aByte1308 = var28; + } + + ++Unsorted.clanSize; + } + + Unsorted.incomingOpcode = -1; + Class167.anInt2087 = anInt3213; + return true; + } else if (50 == Unsorted.incomingOpcode) { + nodeModelId = BufferedDataStream.incomingBuffer.readInt(); + var19 = BufferedDataStream.incomingBuffer.readIntV2(); + modelId = BufferedDataStream.incomingBuffer.readUnsignedShortLE128(); + if (65535 == modelId) { + modelId = -1; + } + + counter = BufferedDataStream.incomingBuffer.readUnsignedShortLE(); + Class146.updateInterfacePacketCounter(counter); + RSInterface var34 = Unsorted.getRSInterface(var19); + ItemDefinition var43; + if (Objects.requireNonNull(var34).usingScripts) { + Class140_Sub6.method2026(var19, nodeModelId, modelId); + var43 = ItemDefinition.getItemDefinition(modelId); + Unsorted.method2143((byte) -128, var43.modelZoom, var19, var43.modelRotation2, var43.modelRotation1); + Class84.method1420(var19, var43.anInt768, var43.anInt754, var43.anInt792); + } else { + if (-1 == modelId) { + var34.modelType = 0; + Unsorted.incomingOpcode = -1; + return true; + } + + var43 = ItemDefinition.getItemDefinition(modelId); + var34.anInt182 = var43.modelRotation1; + var34.anInt164 = 100 * var43.modelZoom / nodeModelId; + var34.modelType = 4; + var34.itemId = modelId; + var34.anInt308 = var43.modelRotation2; + Class20.method909(var34); + } + + Unsorted.incomingOpcode = -1; + return true; + } else if (Unsorted.incomingOpcode == 105) { + nodeModelId = BufferedDataStream.incomingBuffer.readInt(); + var19 = BufferedDataStream.incomingBuffer.readUnsignedShort(); + if (nodeModelId < -70000) { + var19 += 32768; + } + + if (0 <= nodeModelId) { + iface = Unsorted.getRSInterface(nodeModelId); + } else { + iface = null; + } + + if (iface != null) { + for (counter = 0; iface.itemAmounts.length > counter; ++counter) { + iface.itemAmounts[counter] = 0; + iface.itemIds[counter] = 0; + } + } + + CS2Methods.method852(var19); + counter = BufferedDataStream.incomingBuffer.readUnsignedShort(); + + for (var6 = 0; counter > var6; ++var6) { + var30 = BufferedDataStream.incomingBuffer.readUnsigned128Byte(); + if (255 == var30) { + var30 = BufferedDataStream.incomingBuffer.readInt(); + } + + chatIcon = BufferedDataStream.incomingBuffer.readUnsignedShort(); + if (null != iface && iface.itemAmounts.length > var6) { + iface.itemAmounts[var6] = chatIcon; + iface.itemIds[var6] = var30; + } + + method2277(-1 + chatIcon, var6, var30, var19, (byte) 41); + } + + if (iface != null) { + Class20.method909(iface); + } + + BufferedDataStream.method819(); + QuickChatDefinition.anIntArray3565[Unsorted.bitwiseAnd(Unsorted.anInt944++, 31)] = Unsorted.bitwiseAnd(32767, var19); + Unsorted.incomingOpcode = -1; + return true; + } else if (Unsorted.incomingOpcode == 142) { + LinkableRSString.method734(BufferedDataStream.incomingBuffer.readString()); + Unsorted.incomingOpcode = -1; + return true; + } else if (Unsorted.incomingOpcode == 26) { + Class39.currentChunkX = BufferedDataStream.incomingBuffer.readUnsignedNegativeByte(); + Class39.currentChunkY = BufferedDataStream.incomingBuffer.readUnsignedByte(); + Unsorted.incomingOpcode = -1; + return true; + } else if (4 == Unsorted.incomingOpcode) { + nodeModelId = BufferedDataStream.incomingBuffer.readUnsignedShortLE128(); + if (nodeModelId == 65535) { + nodeModelId = -1; + } + + AudioHandler.musicHandler(nodeModelId); + Unsorted.incomingOpcode = -1; + return true; + } else if (Unsorted.incomingOpcode == 208) { + nodeModelId = BufferedDataStream.incomingBuffer.getTriByte2(); + var19 = BufferedDataStream.incomingBuffer.readUnsignedShortLE(); + if (var19 == 65535) { + var19 = -1; + } + + AudioHandler.musicEffectHandler(var19); + Unsorted.incomingOpcode = -1; + return true; + } else { + Class49.reportError("T1 - " + Unsorted.incomingOpcode + "," + Class7.anInt2166 + "," + Class24.anInt469 + " - " + Unsorted.incomingPacketLength, null); + Class167.method2269((byte) 46); + return true; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + + static void method829() { + try { + Class20.method909(Class56.aClass11_886); + ++Class75_Sub3.anInt2658; + if (Class21.aBoolean440 && Class85.aBoolean1167) { + int var1 = Class126.anInt1676; + var1 -= Unsorted.anInt1881; + if (TextureOperation20.anInt3156 > var1) { + var1 = TextureOperation20.anInt3156; + } + + int var2 = Unsorted.anInt1709; + if (var1 - -Class56.aClass11_886.width > TextureOperation20.anInt3156 + aClass11_88.width) { + var1 = -Class56.aClass11_886.width + TextureOperation20.anInt3156 + aClass11_88.width; + } + + var2 -= Class95.anInt1336; + if (Class134.anInt1761 > var2) { + var2 = Class134.anInt1761; + } + + if (Class134.anInt1761 - -aClass11_88.height < var2 - -Class56.aClass11_886.height) { + var2 = Class134.anInt1761 + aClass11_88.height + -Class56.aClass11_886.height; + } + + int var4 = var2 - TileData.anInt2218; + int var3 = var1 + -Class3_Sub15.anInt2421; + int var6 = var1 + -TextureOperation20.anInt3156 + aClass11_88.anInt247; + int var7 = aClass11_88.anInt208 + -Class134.anInt1761 + var2; + int var5 = Class56.aClass11_886.anInt214; + if (Class56.aClass11_886.anInt179 < Class75_Sub3.anInt2658 && (var3 > var5 || var3 < -var5 || var4 > var5 || var4 < -var5)) { + NPC.aBoolean3975 = true; + } + + CS2Script var8; + if (Class56.aClass11_886.anObjectArray295 != null && NPC.aBoolean3975) { + var8 = new CS2Script(); + var8.aClass11_2449 = Class56.aClass11_886; + var8.arguments = Class56.aClass11_886.anObjectArray295; + var8.worldSelectCursorPositionX = var6; + var8.scrollbarScrollAmount = var7; + Class43.method1065(var8); + } + + if (0 == TextureOperation21.anInt3069) { + if (NPC.aBoolean3975) { + if (Class56.aClass11_886.anObjectArray229 != null) { + var8 = new CS2Script(); + var8.scrollbarScrollAmount = var7; + var8.aClass11_2438 = Class27.aClass11_526; + var8.worldSelectCursorPositionX = var6; + var8.arguments = Class56.aClass11_886.anObjectArray229; + var8.aClass11_2449 = Class56.aClass11_886; + Class43.method1065(var8); + } + RSInterface withInter = Class27.aClass11_526; + if (withInter == null) { + withInter = Class56.aClass11_886; + } + TextureOperation12.outgoingBuffer.putOpcode(79); + TextureOperation12.outgoingBuffer.writeIntV2(Class56.aClass11_886.componentHash); + TextureOperation12.outgoingBuffer.writeShortLE(withInter.anInt191); + TextureOperation12.outgoingBuffer.writeInt(withInter.componentHash); + TextureOperation12.outgoingBuffer.writeShortLE(Class56.aClass11_886.anInt191); + + // && client.method42(Class56.aClass11_886) != null) { + if (Class27.aClass11_526 == null) { + System.out.println("Could not send switch item packet, second interface is null!"); + } else if (Client.method42(Class56.aClass11_886) != null) { + System.out.println("Shouldn't be sending packet, enabled to fix banking tabs though."); + } + } else if ((Unsorted.anInt998 == 1 || TextureOperation8.method353(-1 + Unsorted.menuOptionCount, ~-1)) && Unsorted.menuOptionCount > 2) { + Class132.method1801(); + } else if (Unsorted.menuOptionCount > 0) { + TextureOperation9.method203(96); + } + + Class56.aClass11_886 = null; + } + + } else if (Class75_Sub3.anInt2658 > 1) { + Class56.aClass11_886 = null; + } + } catch (RuntimeException var9) { + throw ClientErrorException.clientError(var9, "ac.F(" + -1 + ')'); + } + } + + static void method256(int var0, int var1, int var2, int var4) { + try { + InterfaceWidget var5 = InterfaceWidget.getWidget(4, var2); + var5.flagUpdate(); + var5.anInt3597 = var4; + var5.anInt3596 = var0; + var5.anInt3598 = var1; + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "ke.E(" + var0 + ',' + var1 + ',' + var2 + ',' + var4 + ')'); + } + } + + static void method1605(RSString var1, int var2) { + try { + TextureOperation12.outgoingBuffer.putOpcode(188); + TextureOperation12.outgoingBuffer.writeByte128(var2); + TextureOperation12.outgoingBuffer.writeLong(var1.toLong()); + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "ni.B(" + 255 + ',' + (var1 != null ? "{...}" : "null") + ',' + var2 + ')'); + } + } + + static void method834() { + try { + Unsorted.method1250(43, false); + System.gc(); + Class117.method1719(25); + + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "af.D(" + (byte) -86 + ')'); + } + } + + static void method2277(int var0, int var1, int var2, int var3, byte var4) { + try { + Class3_Sub25 var5 = (Class3_Sub25) TileData.aHashTable_2220.get(var3); + if (var5 == null) { + var5 = new Class3_Sub25(); + TileData.aHashTable_2220.put(var3, var5); + } + + if (var4 > 16) { + if (var1 >= var5.anIntArray2547.length) { + int[] var6 = new int[var1 - -1]; + int[] var7 = new int[1 + var1]; + + int var8; + for (var8 = 0; var8 < var5.anIntArray2547.length; ++var8) { + var6[var8] = var5.anIntArray2547[var8]; + var7[var8] = var5.anIntArray2551[var8]; + } + + for (var8 = var5.anIntArray2547.length; var1 > var8; ++var8) { + var6[var8] = -1; + var7[var8] = 0; + } + + var5.anIntArray2547 = var6; + var5.anIntArray2551 = var7; + } + + var5.anIntArray2547[var1] = var0; + var5.anIntArray2551[var1] = var2; + } + } catch (RuntimeException var9) { + throw ClientErrorException.clientError(var9, "wl.A(" + var0 + ',' + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ')'); + } + } +} diff --git a/Client/src/main/java/org/runite/client/PcmSound.java b/Client/src/main/java/org/runite/client/PcmSound.java new file mode 100644 index 000000000..f29e51b7b --- /dev/null +++ b/Client/src/main/java/org/runite/client/PcmSound.java @@ -0,0 +1,42 @@ +package org.runite.client; + +public final class PcmSound extends Sound { + + public byte[] samples; + boolean aBoolean3031; + int anInt3032; + int anInt3033; + public int frequency; + + + final PcmSound method151(Class157 var1) { + this.samples = var1.method2173(this.samples); + this.frequency = var1.method2177(this.frequency); + if(this.anInt3033 == this.anInt3032) { + this.anInt3033 = this.anInt3032 = var1.method2178(this.anInt3033); + } else { + this.anInt3033 = var1.method2178(this.anInt3033); + this.anInt3032 = var1.method2178(this.anInt3032); + if(this.anInt3033 == this.anInt3032) { + --this.anInt3033; + } + } + + return this; + } + + PcmSound(byte[] var2, int var3, int var4) { + this.frequency = 22050; + this.samples = var2; + this.anInt3033 = var3; + this.anInt3032 = var4; + } + + PcmSound(int var1, byte[] var2, int var3, int var4, boolean var5) { + this.frequency = var1; + this.samples = var2; + this.anInt3033 = var3; + this.anInt3032 = var4; + this.aBoolean3031 = var5; + } +} diff --git a/Client/src/main/java/org/runite/client/Player.java b/Client/src/main/java/org/runite/client/Player.java new file mode 100644 index 000000000..e823261d8 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Player.java @@ -0,0 +1,460 @@ +package org.runite.client; + +import java.util.Objects; + +public final class Player extends Entity { + + static int[] anIntArray3951 = new int[4]; + static int rights = 0; + static byte aByte3953; + static int[] anIntArray3954 = new int[100]; + static int[] anIntArray3959 = new int[2]; + int anInt3952 = -1; + int headIcon = -1; + public int teamId = 0; + int COMBAT_LEVEL = 0; + Class52 class52; + int anInt3963 = -1; + int combatLevel = 0; + int anInt3966 = -1; + public RSString displayName; + boolean aBoolean3968 = false; + int anInt3969 = 0; + int anInt3970 = -1; + int skullIcon = -1; + int anInt3973 = -1; + int anInt3974 = 0; + private int anInt3958 = 0; + + static RSString combatLevelColor(int otherPlayer, byte levelByte, int yourPlayer) { + try { + int playerLevelDiff = -otherPlayer + yourPlayer; + if (levelByte > -52) + return null; + if (playerLevelDiff < -9) + return ColorCore.LvlDiffN9;//Solid Red + if (playerLevelDiff < -6) + return ColorCore.LvlDiffN6;//Dark Orange + if (playerLevelDiff < -3) + return ColorCore.LvlDiffN3;//Orange + if (playerLevelDiff < 0) + return ColorCore.LvlDiffN0;//Yellow-Orange + if (playerLevelDiff > 9) + return ColorCore.LvlDiffP9;//Bright Green + if (playerLevelDiff > 6) + return ColorCore.LvlDiffP6;//Green + if (playerLevelDiff > 3) + return ColorCore.LvlDiffP3;//Yellow-Green + if (playerLevelDiff > 0) + return ColorCore.LvlDiffP0;//Yellow + + return ColorCore.LvlDiffDefault;//Yellow + + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "jj.E(" + otherPlayer + ',' + levelByte + ',' + yourPlayer + ')'); + } + } + + /** + * Gets the properly colored string for the combat level difference. + * + * @param otherPlayer Their combat level + * @param yourPlayer Your combat level + * @returns the RSString color + */ + + static RSString getCombatLevelDifferenceColor(int otherPlayer, int yourPlayer) { + int playerLevelDiff = -otherPlayer + yourPlayer; + if (playerLevelDiff < -9) + return ColorCore.LvlDiffN9;//Solid Red + if (playerLevelDiff < -6) + return ColorCore.LvlDiffN6;//Dark Orange + if (playerLevelDiff < -3) + return ColorCore.LvlDiffN3;//Orange + if (playerLevelDiff < 0) + return ColorCore.LvlDiffN0;//Yellow-Orange + if (playerLevelDiff > 9) + return ColorCore.LvlDiffP9;//Bright Green + if (playerLevelDiff > 6) + return ColorCore.LvlDiffP6;//Green + if (playerLevelDiff > 3) + return ColorCore.LvlDiffP3;//Yellow-Green + if (playerLevelDiff > 0) + return ColorCore.LvlDiffP0;//Yellow + return ColorCore.LvlDiffDefault;//Yellow + } + + + final int getSize() { + try { + if (null == this.class52 || this.class52.pnpcId == -1) { + + return super.getSize(); + } else { + return NPCDefinition.getNPCDefinition(this.class52.pnpcId).size; + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "e.H(" + (byte) 114 + ')'); + } + } + + final int getRenderAnimationId() { + try { + + return this.renderAnimationId; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "e.B(" + -1 + ')'); + } + } + + final void parseAppearance(int var1, DataBuffer buffer) { + try { + buffer.index = 0; + int var3 = buffer.readUnsignedByte(); + int npcId = -1; + int var4 = 1 & var3; + boolean var6 = (var3 & 4) != 0; + int var7 = super.getSize(); + int[] look = new int[12]; + this.setSize(1 + (var3 >> 3 & 7), 2); + this.anInt3958 = 3 & var3 >> 6; + this.xAxis += (-var7 + this.getSize()) * 64; + this.yAxis += 64 * (this.getSize() + -var7); + this.skullIcon = buffer.readSignedByte(); + this.headIcon = buffer.readSignedByte(); + this.teamId = 0; + + int var11; + int var12; + int outfit; + int var14; + for (int var10 = 0; var10 < 12; ++var10) { + var11 = buffer.readUnsignedByte(); + if (var11 == 0) { + look[var10] = 0; + } else { + var12 = buffer.readUnsignedByte(); + outfit = (var11 << 8) + var12; + if (var10 == 0 && outfit == 65535) { + npcId = buffer.readUnsignedShort(); + this.teamId = buffer.readUnsignedByte(); + break; + } + + if (32768 <= outfit) { + int equipId = outfit - 32768; + if (equipId > Class75_Sub4.anIntArray2664.length) { + System.err.println("Player->parseAppearance()-> Array length = " + Class75_Sub4.anIntArray2664.length + ", equipId=" + equipId + ", item def size=" + TextureOperation39.itemDefinitionSize); + continue; + } + outfit = Class75_Sub4.anIntArray2664[equipId]; + look[var10] = TextureOperation3.bitwiseOr(1073741824, outfit); + var14 = ItemDefinition.getItemDefinition(outfit).teamId; + if (var14 != 0) { + this.teamId = var14; + } + } else { + look[var10] = TextureOperation3.bitwiseOr(-256 + outfit, Integer.MIN_VALUE); + } + } + } + + int[] colors = new int[5]; + + for (var11 = 0; var11 < 5; ++var11) { + var12 = buffer.readUnsignedByte(); + if (var12 < 0 || var12 >= AudioThread.aShortArrayArray344[var11].length) { + var12 = 0; + } + + colors[var11] = var12; + } + + this.renderAnimationId = buffer.readUnsignedShort(); + long var20 = buffer.readLong(); + this.displayName = Objects.requireNonNull(Unsorted.method1052(var20)).longToRSString(); + this.COMBAT_LEVEL = buffer.readUnsignedByte(); + if (var6) { + this.anInt3974 = buffer.readUnsignedShort(); + this.combatLevel = this.COMBAT_LEVEL; + this.anInt3970 = -1; + } else { + this.anInt3974 = 0; + this.combatLevel = buffer.readUnsignedByte(); + this.anInt3970 = buffer.readUnsignedByte(); + if (this.anInt3970 == 255) { + this.anInt3970 = -1; + } + } + + outfit = this.anInt3969; + this.anInt3969 = buffer.readUnsignedByte(); + if (this.anInt3969 == 0) { + Class162.method2203(this); + } else { + int var15 = this.anInt3966; + int var16 = this.anInt3963; + int var17 = this.anInt3973; + var14 = this.anInt3952; + this.anInt3952 = buffer.readUnsignedShort(); + this.anInt3966 = buffer.readUnsignedShort(); + this.anInt3963 = buffer.readUnsignedShort(); + this.anInt3973 = buffer.readUnsignedShort(); + if (this.anInt3969 != outfit || var14 != this.anInt3952 || var15 != this.anInt3966 || var16 != this.anInt3963 || var17 != this.anInt3973) { + Unsorted.method518(this); + } + } + + if (null == this.class52) { + this.class52 = new Class52(); + } + + var14 = this.class52.pnpcId; + this.class52.method1161(colors, npcId, var4 == 1, look, this.renderAnimationId); + if (npcId != var14) { + this.xAxis = 128 * this.xOffsets2767[0] + this.getSize() * 64; + this.yAxis = 128 * this.yOffsets2755[0] - -(64 * this.getSize()); + } + } catch (RuntimeException var18) { + throw ClientErrorException.clientError(var18, "e.P(" + var1 + ',' + (buffer != null ? "{...}" : "null") + ')'); + } + } + + final void animate(int var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, long var9, int var11, Class127_Sub1 var12) { + try { + if (this.class52 != null) { + SequenceDefinition var13 = this.anInt2771 != -1 && 0 == this.anInt2828 ? SequenceDefinition.getAnimationDefinition(this.anInt2771) : null; + SequenceDefinition var14 = this.anInt2764 != -1 && !this.aBoolean3968 && (this.getRenderAnimationType().stand_animation != this.anInt2764 || var13 == null) ? SequenceDefinition.getAnimationDefinition(this.anInt2764) : null; + Model var15 = this.class52.method1165(this.aClass145Array2809, this.anInt2776, var14, var13, this.anInt2802, this.anInt2793, -120, this.anInt2760, this.anInt2832, this.anInt2813); + int var16 = Unsorted.method1727((byte) 123); + if (HDToolKit.highDetail && Class3_Sub24_Sub3.maxClientMemory < 96 && var16 > 50) { + Class3_Sub1.method90(1); + } + + int var17; + if (0 != TextureOperation20.paramModeWhat && var16 < 50) { + for (var17 = 50 - var16; Class56.anInt893 < var17; ++Class56.anInt893) { + Class3_Sub6.softReferenceTestArray[Class56.anInt893] = new byte[102400]; + } + + while (Class56.anInt893 > var17) { + --Class56.anInt893; + Class3_Sub6.softReferenceTestArray[Class56.anInt893] = null; + } + } + + if (var15 != null) { + this.anInt2820 = var15.method1871(); + Model var23; + if (Class140_Sub6.aBoolean2910 && (-1 == this.class52.pnpcId || NPCDefinition.getNPCDefinition(this.class52.pnpcId).aBoolean1249)) { + var23 = Class140_Sub3.method1957(160, this.aBoolean2810, var14 == null ? var13 : var14, this.xAxis, 0, this.yAxis, 0, 1, var15, var1, null != var14 ? this.anInt2813 : this.anInt2832, this.anInt2831, 240); + if (HDToolKit.highDetail) { + float var18 = HDToolKit.method1852(); + float var19 = HDToolKit.method1839(); + HDToolKit.depthBufferWritingDisabled(); + HDToolKit.method1825(var18, -150.0F + var19); + var23.animate(0, var2, var3, var4, var5, var6, var7, var8, -1L, var11, null); + HDToolKit.method1830(); + HDToolKit.method1825(var18, var19); + } else { + var23.animate(0, var2, var3, var4, var5, var6, var7, var8, -1L, var11, null); + } + } + + if (Class102.player == this) { + for (var17 = ClientErrorException.aClass96Array2114.length + -1; var17 >= 0; --var17) { + Class96 var27 = ClientErrorException.aClass96Array2114[var17]; + if (var27 != null && var27.anInt1355 != -1) { + int var21; + int var20; + if (var27.anInt1360 == 1 && 0 <= var27.anInt1359 && var27.anInt1359 < NPC.npcs.length) { + NPC var24 = NPC.npcs[var27.anInt1359]; + if (null != var24) { + var20 = var24.xAxis / 32 - Class102.player.xAxis / 32; + var21 = -(Class102.player.yAxis / 32) + var24.yAxis / 32; + this.method1979(null, var21, var15, var20, var6, var11, var1, var8, var5, var4, var2, var27.anInt1355, var3, var7); + } + } + + if (var27.anInt1360 == 2) { + int var29 = 4 * (-Class131.x1716 + var27.anInt1356) + 2 + -(Class102.player.xAxis / 32); + var20 = 2 + (4 * (var27.anInt1347 - Texture.y1152) - Class102.player.yAxis / 32); + this.method1979(null, var20, var15, var29, var6, var11, var1, var8, var5, var4, var2, var27.anInt1355, var3, var7); + } + + if (var27.anInt1360 == 10 && var27.anInt1359 >= 0 && var27.anInt1359 < Unsorted.players.length) { + Player var28 = Unsorted.players[var27.anInt1359]; + if (null != var28) { + var20 = -(Class102.player.xAxis / 32) + var28.xAxis / 32; + var21 = var28.yAxis / 32 + -(Class102.player.yAxis / 32); + this.method1979(null, var21, var15, var20, var6, var11, var1, var8, var5, var4, var2, var27.anInt1355, var3, var7); + } + } + } + } + } + + this.method1971(var15, (byte) -103); + this.method1969((byte) 110, var15, var1); + var23 = null; + if (!this.aBoolean3968 && this.anInt2842 != -1 && this.anInt2805 != -1) { + GraphicDefinition var26 = GraphicDefinition.getGraphicDefinition(this.anInt2842); + var23 = var26.method966(this.anInt2826, this.anInt2805, this.anInt2761); + if (var23 != null) { + var23.method1897(0, -this.anInt2799, 0); + if (var26.aBoolean536) { + if (TextureOperation15.anInt3198 != 0) { + var23.method1896(TextureOperation15.anInt3198); + } + + if (0 != Class3_Sub28_Sub9.anInt3623) { + var23.method1886(Class3_Sub28_Sub9.anInt3623); + } + + if (TextureOperation16.anInt3111 != 0) { + var23.method1897(0, TextureOperation16.anInt3111, 0); + } + } + } + } + + Model var25 = null; + if (!this.aBoolean3968 && this.anObject2796 != null) { + if (Class44.anInt719 >= this.anInt2778) { + this.anObject2796 = null; + } + + if (Class44.anInt719 >= this.anInt2797 && this.anInt2778 > Class44.anInt719) { + if (this.anObject2796 instanceof Class140_Sub3) { + var25 = (Model) ((Class140_Sub3) this.anObject2796).method1963(); + } else { + var25 = (Model) this.anObject2796; + } + + Objects.requireNonNull(var25).method1897(this.anInt2782 + -this.xAxis, this.anInt2812 + -this.anInt2831, this.anInt2833 + -this.yAxis); + if (this.anInt2806 == 512) { + var25.method1900(); + } else if (this.anInt2806 == 1024) { + var25.method1874(); + } else if (this.anInt2806 == 1536) { + var25.method1885(); + } + } + } + + if (HDToolKit.highDetail) { + var15.aBoolean2699 = true; + var15.animate(var1, var2, var3, var4, var5, var6, var7, var8, var9, var11, this.aClass127_Sub1_2801); + if (var23 != null) { + var23.aBoolean2699 = true; + var23.animate(var1, var2, var3, var4, var5, var6, var7, var8, var9, var11, this.aClass127_Sub1_2801); + } + } else { + if (null != var23) { + var15 = ((Class140_Sub1_Sub2) var15).method1943(var23); + } + + if (var25 != null) { + var15 = ((Class140_Sub1_Sub2) var15).method1943(var25); + } + + var15.aBoolean2699 = true; + var15.animate(var1, var2, var3, var4, var5, var6, var7, var8, var9, var11, this.aClass127_Sub1_2801); + } + + if (null != var25) { + if (this.anInt2806 == 512) { + var25.method1885(); + } else if (1024 == this.anInt2806) { + var25.method1874(); + } else if (1536 == this.anInt2806) { + var25.method1900(); + } + + var25.method1897(-this.anInt2782 + this.xAxis, -this.anInt2812 + this.anInt2831, -this.anInt2833 + this.yAxis); + } + + } + } + } catch (RuntimeException var22) { + throw ClientErrorException.clientError(var22, "e.IA(" + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + var5 + ',' + var6 + ',' + var7 + ',' + var8 + ',' + var9 + ',' + var11 + ',' + (var12 != null ? "{...}" : "null") + ')'); + } + } + + private void method1979(Class127_Sub1 var1, int var2, Model var3, int var4, int var5, int var6, int var8, int var9, int var10, int var11, int var12, int var13, int var14, int var15) { + try { + int var16 = var4 * var4 - -(var2 * var2); + if (var16 >= 16 && var16 <= 360000) { + int var17 = (int) (325.949D * Math.atan2(var4, var2)) & 0x7FF; + Model var18 = Class128.method1763(var17, this.yAxis, var13, this.xAxis, var3, this.anInt2831); + if (var18 != null) { + if (HDToolKit.highDetail) { + float var19 = HDToolKit.method1852(); + float var20 = HDToolKit.method1839(); + HDToolKit.depthBufferWritingDisabled(); + HDToolKit.method1825(var19, var20 - 150.0F); + var18.animate(0, var12, var14, var11, var10, var5, var15, var9, -1L, var6, var1); + HDToolKit.method1830(); + HDToolKit.method1825(var19, var20); + } else { + var18.animate(0, var12, var14, var11, var10, var5, var15, var9, -1L, var6, var1); + } + } + + } + } catch (RuntimeException var21) { + throw ClientErrorException.clientError(var21, "e.N(" + (var1 != null ? "{...}" : "null") + ',' + var2 + ',' + (var3 != null ? "{...}" : "null") + ',' + var4 + ',' + var5 + ',' + var6 + ',' + 2047 + ',' + var8 + ',' + var9 + ',' + var10 + ',' + var11 + ',' + var12 + ',' + var13 + ',' + var14 + ',' + var15 + ')'); + } + } + + public final boolean hasDefinitions() { + try { + + return this.class52 != null; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "e.L(" + (byte) 17 + ')'); + } + } + + final RSString getName() { + try { + RSString var2 = this.displayName; + + if (BufferedDataStream.aStringArray3802 != null) { + var2 = RSString.stringCombiner(new RSString[]{BufferedDataStream.aStringArray3802[this.anInt3958], var2}); + } + + if (null != Unsorted.aStringArray45) { + var2 = RSString.stringCombiner(new RSString[]{var2, Unsorted.aStringArray45[this.anInt3958]}); + } + + return var2; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "e.Q(" + 0 + ')'); + } + } + + final void method1867(int var1, int var2, int var3, int var4, int var5) { + } + + final void updatePlayerPosition(int newX, boolean var3, int newY) { + try { + super.updateAnimationPosition(this.getSize(), newX, newY, var3); + + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "e.O(" + (byte) 126 + ',' + newX + ',' + var3 + ',' + newY + ')'); + } + } + + protected final void finalize() { + } + + final int method1871() { + try { + return this.anInt2820; + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "e.MA()"); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/PlayerRendering.java b/Client/src/main/java/org/runite/client/PlayerRendering.java new file mode 100644 index 000000000..38fc65918 --- /dev/null +++ b/Client/src/main/java/org/runite/client/PlayerRendering.java @@ -0,0 +1,508 @@ +package org.runite.client; + +import java.util.Objects; + +public final class PlayerRendering { + + + static final int[] PLAYER_RENDER_LOG = new int[4]; + static DataBuffer playerRenderBuffer = new DataBuffer(new byte[5000]); + + static void renderPlayers() { + try { + Unsorted.maskUpdateCount = 0; + Class139.anInt1829 = 0; + + updateLocalPosition(); + PLAYER_RENDER_LOG[0] = BufferedDataStream.incomingBuffer.index; + + renderLocalPlayers(); + PLAYER_RENDER_LOG[1] = BufferedDataStream.incomingBuffer.index; + + addLocalPlayers(); + PLAYER_RENDER_LOG[2] = BufferedDataStream.incomingBuffer.index; + + parsePlayerMasks(); + PLAYER_RENDER_LOG[3] = BufferedDataStream.incomingBuffer.index; + + int var1; + for (var1 = 0; Class139.anInt1829 > var1; ++var1) { + int var2 = Class3_Sub7.anIntArray2292[var1]; + if (Class44.anInt719 != Unsorted.players[var2].anInt2838) { + if (0 < Unsorted.players[var2].anInt3969) { + Class162.method2203(Unsorted.players[var2]); + } + + Unsorted.players[var2] = null; + } + } + + if (BufferedDataStream.incomingBuffer.index == Unsorted.incomingPacketLength) { + for (var1 = 0; var1 < Class159.localPlayerCount; ++var1) { + if (null == Unsorted.players[Class56.localPlayerIndexes[var1]]) { + // throw new RuntimeException("gpp2 pos:" + var1 + " size:" + Class159.anInt2022); + // System.err.println("gpp2 pos:" + var1 + " size:" + Class159.anInt2022); + System.err.println("Local player was null - index: " + Class56.localPlayerIndexes[var1] + ", list index: " + var1 + ", list size: " + Class159.localPlayerCount); + } + } + + } else { + System.err.println("Player rendering packet size mismatch - size log: self=" + PLAYER_RENDER_LOG[0] + ", local=" + PLAYER_RENDER_LOG[1] + ", add global=" + PLAYER_RENDER_LOG[2] + ", masks=" + PLAYER_RENDER_LOG[3] + "."); + // System.err.println("gpp1 pos:" + GraphicDefinition.incomingBuffer.index + " psize:" + Class130.incomingPacketLength); + // throw new RuntimeException("gpp1 pos:" + Class28.incomingBuffer.index + " psize:" + Class130.incomingPacketLength); + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "fb.B(" + (byte) -122 + ')'); + } + } + + static void renderLocalPlayers() { + try { + int localPlayerAmount = BufferedDataStream.incomingBuffer.getBits(8); + int var2; + if (localPlayerAmount < Class159.localPlayerCount) { + for (var2 = localPlayerAmount; Class159.localPlayerCount > var2; ++var2) { + Class3_Sub7.anIntArray2292[Class139.anInt1829++] = Class56.localPlayerIndexes[var2]; + } + } + + if (Class159.localPlayerCount >= localPlayerAmount) { + Class159.localPlayerCount = 0; + var2 = 0; + + for (; localPlayerAmount > var2; ++var2) { + int var3 = Class56.localPlayerIndexes[var2]; + Player var4 = Unsorted.players[var3]; + int update = BufferedDataStream.incomingBuffer.getBits(1); + if (update == 0) { + Class56.localPlayerIndexes[Class159.localPlayerCount++] = var3; + var4.anInt2838 = Class44.anInt719; + } else { + int type = BufferedDataStream.incomingBuffer.getBits(2); + if (type == 0) { + Class56.localPlayerIndexes[Class159.localPlayerCount++] = var3; + var4.anInt2838 = Class44.anInt719; + Class21.maskUpdateIndexes[Unsorted.maskUpdateCount++] = var3; + } else { + int var7; + int var8; + if (type == 1) { + Class56.localPlayerIndexes[Class159.localPlayerCount++] = var3; + var4.anInt2838 = Class44.anInt719; + var7 = BufferedDataStream.incomingBuffer.getBits(3); + var4.walkStep(1, (byte) 46, var7); + var8 = BufferedDataStream.incomingBuffer.getBits(1); + if (var8 == 1) { + Class21.maskUpdateIndexes[Unsorted.maskUpdateCount++] = var3; + } + } else if (type == 2) { + Class56.localPlayerIndexes[Class159.localPlayerCount++] = var3; + var4.anInt2838 = Class44.anInt719; + if (BufferedDataStream.incomingBuffer.getBits(1) == 1) { + var7 = BufferedDataStream.incomingBuffer.getBits(3); + var4.walkStep(2, (byte) -92, var7); + var8 = BufferedDataStream.incomingBuffer.getBits(3); + var4.walkStep(2, (byte) 88, var8); + } else { + var7 = BufferedDataStream.incomingBuffer.getBits(3); + var4.walkStep(0, (byte) 113, var7); + } + + var7 = BufferedDataStream.incomingBuffer.getBits(1); + if (1 == var7) { + Class21.maskUpdateIndexes[Unsorted.maskUpdateCount++] = var3; + } + } else if (type == 3) { + Class3_Sub7.anIntArray2292[Class139.anInt1829++] = var3; + } + } + } + } + + } else { + throw new RuntimeException("gppov1"); + } + } catch (RuntimeException var9) { + throw ClientErrorException.clientError(var9, "dc.B(" + false + ')'); + } + } + + static void addLocalPlayers() { + try { + while (true) { + if (BufferedDataStream.incomingBuffer.method815(Unsorted.incomingPacketLength) >= 11) { + int index = BufferedDataStream.incomingBuffer.getBits(11); + if (index != 2047) { + boolean var2 = false; + if (null == Unsorted.players[index]) { + Unsorted.players[index] = new Player(); + var2 = true; + if (null != Class65.aClass3_Sub30Array986[index]) { + Unsorted.players[index].parseAppearance(-54, Class65.aClass3_Sub30Array986[index]); + } + } + + Class56.localPlayerIndexes[Class159.localPlayerCount++] = index; + Player var3 = Unsorted.players[index]; + var3.anInt2838 = Class44.anInt719; + int var4 = BufferedDataStream.incomingBuffer.getBits(1); + if (var4 == 1) { + Class21.maskUpdateIndexes[Unsorted.maskUpdateCount++] = index; + } + + int var5 = BufferedDataStream.incomingBuffer.getBits(5); + int var6 = Class27.anIntArray510[BufferedDataStream.incomingBuffer.getBits(3)]; + if (var5 > 15) { + var5 -= 32; + } + + if (var2) { + var3.anInt2806 = var3.anInt2785 = var6; + } + + int var7 = BufferedDataStream.incomingBuffer.getBits(1); + int var8 = BufferedDataStream.incomingBuffer.getBits(5); + if (var8 > 15) { + var8 -= 32; + } + + var3.updatePlayerPosition(var5 + Class102.player.xOffsets2767[0], var7 == 1, Class102.player.yOffsets2755[0] + var8); + continue; + } + } + + BufferedDataStream.incomingBuffer.setByteAccess(); + return; + } + } catch (RuntimeException var9) { + throw ClientErrorException.clientError(var9, "se.D(" + -59 + ')'); + } + } + + static void parsePlayerMasks() { + int var1 = 0; + + while (var1 < Unsorted.maskUpdateCount) { + int var2 = Class21.maskUpdateIndexes[var1]; + Player var3 = Unsorted.players[var2]; + int var4 = BufferedDataStream.incomingBuffer.readUnsignedByte(); + if ((16 & var4) != 0) { + var4 += BufferedDataStream.incomingBuffer.readUnsignedByte() << 8; + } + + parsePlayerMask(var4, var2, var3); + ++var1; + } + } + + static void parsePlayerMask(int var0, int var1, Player var3) { + try { + int var4; + int chatIcon; + int var7; + //Ordinal: 0 Chat + if (0 != (var0 & 128)) { + var4 = BufferedDataStream.incomingBuffer.readUnsignedShortLE(); + chatIcon = BufferedDataStream.incomingBuffer.readUnsignedByte(); + int var6 = BufferedDataStream.incomingBuffer.readUnsignedByte(); + var7 = BufferedDataStream.incomingBuffer.index; + boolean var8 = (32768 & var4) != 0; + if (null != var3.displayName && var3.class52 != null) { + long var9 = var3.displayName.toLong(); + boolean var11 = false; + if (chatIcon <= 1) { + if (!var8 && (Class3_Sub15.aBoolean2433 && !Class121.aBoolean1641 || TextureOperation31.aBoolean3166)) { + var11 = true; + } else { + for (int var12 = 0; var12 < Class3_Sub28_Sub5.anInt3591; ++var12) { + if (Class114.ignores[var12] == var9) { + var11 = true; + break; + } + } + } + } + + if (!var11 && 0 == PacketParser.inTutorialIsland) { + playerRenderBuffer.index = 0; + BufferedDataStream.incomingBuffer.readBytesReverse(var6, playerRenderBuffer.buffer); + playerRenderBuffer.index = 0; + int var13 = -1; + RSString message; + if (var8) { + QuickChat var14 = QuickChat.method2156(playerRenderBuffer); + var4 &= 32767; + var13 = var14.anInt149; + message = var14.aQuickChatDefinition_151.method555(playerRenderBuffer); + } else { + message = Font.method686(Objects.requireNonNull(Class32.method992(playerRenderBuffer).properlyCapitalize())); + } + + var3.textSpoken = message.trim(1); + var3.textEffect = var4 & 0xFF; + var3.textCycle = 150; + var3.textColor = var4 >> 8; + if (chatIcon >= 2) { + MessageManager.sendGameMessage(var13, var8 ? 17 : 1, message, null, RSString.stringCombiner(new RSString[]{RSString.parse(""), var3.getName()})); + } else if (chatIcon == 1) { + MessageManager.sendGameMessage(var13, var8 ? 17 : 1, message, null, RSString.stringCombiner(new RSString[]{RSString.parse(""), var3.getName()})); + } else { + MessageManager.sendGameMessage(var13, var8 ? 17 : 2, message, null, var3.getName()); + } + } + } + BufferedDataStream.incomingBuffer.index = var7 + var6; + } + + //Ordinal: 1 Hit + if ((var0 & 1) != 0) { + var4 = BufferedDataStream.incomingBuffer.getSmart(); + chatIcon = BufferedDataStream.incomingBuffer.readUnsignedByte128(); + var3.addHit(chatIcon, Class44.anInt719, var4); + var3.anInt2781 = 300 + Class44.anInt719; + var3.anInt2775 = BufferedDataStream.incomingBuffer.readUnsigned128Byte(); + } + + //Ordinal: 2 Animation + if ((var0 & 8) != 0) { + var4 = BufferedDataStream.incomingBuffer.readUnsignedShort(); + if (var4 == 65535) { + var4 = -1; + } + + chatIcon = BufferedDataStream.incomingBuffer.readUnsignedByte(); + method628(chatIcon, var4, var3); + } + + //Ordinal: 3 Appearance + if (0 != (4 & var0)) { + var4 = BufferedDataStream.incomingBuffer.readUnsignedByte128(); + byte[] var16 = new byte[var4]; + DataBuffer var19 = new DataBuffer(var16); + BufferedDataStream.incomingBuffer.readBytes(var16, var4); + Class65.aClass3_Sub30Array986[var1] = var19; + var3.parseAppearance(-15, var19); + } + + //Ordinal: 4 Face entity + if ((2 & var0) != 0) { + var3.anInt2772 = BufferedDataStream.incomingBuffer.readUnsignedShort128(); + if (var3.anInt2772 == 65535) { + var3.anInt2772 = -1; + } + } + + //Ordinal: 5 Force movement + if ((1024 & var0) != 0) { + var3.anInt2784 = BufferedDataStream.incomingBuffer.readUnsignedNegativeByte(); + var3.anInt2835 = BufferedDataStream.incomingBuffer.readUnsignedByte(); + var3.anInt2823 = BufferedDataStream.incomingBuffer.readUnsignedByte128(); + var3.anInt2798 = BufferedDataStream.incomingBuffer.readUnsignedByte(); + var3.anInt2800 = BufferedDataStream.incomingBuffer.readUnsignedShortLE() + Class44.anInt719; + var3.anInt2790 = BufferedDataStream.incomingBuffer.readUnsignedShortLE() - -Class44.anInt719; + var3.anInt2840 = BufferedDataStream.incomingBuffer.readUnsignedNegativeByte(); + var3.anInt2816 = 1; + var3.anInt2811 = 0; + } + + //Ordinal: 6 Force chat + if ((var0 & 32) != 0) { + var3.textSpoken = BufferedDataStream.incomingBuffer.readString(); + if (var3.textSpoken.charAt(0, (byte) -45) == 126) { + var3.textSpoken = var3.textSpoken.substring(1); + BufferedDataStream.addChatMessage(var3.getName(), 2, var3.textSpoken, (byte) -79 ^ 78); + } else if (var3 == Class102.player) { + BufferedDataStream.addChatMessage(var3.getName(), 2, var3.textSpoken, (byte) -79 + 78); + } + + var3.textEffect = 0; + var3.textColor = 0; + var3.textCycle = 150; + } + + //Ordinal: 7 Hit 2 + if ((var0 & 512) != 0) { + var4 = BufferedDataStream.incomingBuffer.getSmart(); + chatIcon = BufferedDataStream.incomingBuffer.readUnsigned128Byte(); + var3.addHit(chatIcon, Class44.anInt719, var4); + } + + //Ordinal: 8 + if ((2048 & var0) != 0) { + var4 = BufferedDataStream.incomingBuffer.readUnsignedNegativeByte(); + int[] var18 = new int[var4]; + int[] var17 = new int[var4]; + int[] var20 = new int[var4]; + + for (int var22 = 0; var22 < var4; ++var22) { + int var23 = BufferedDataStream.incomingBuffer.readUnsignedShortLE(); + if (65535 == var23) { + var23 = -1; + } + + var18[var22] = var23; + var17[var22] = BufferedDataStream.incomingBuffer.readUnsignedByte128(); + var20[var22] = BufferedDataStream.incomingBuffer.readUnsignedShort(); + } + + Class75_Sub1.method1342(var17, var18, var3, var20); + } + + //Ordinal: 9 Graphic + if ((256 & var0) != 0) { + var4 = BufferedDataStream.incomingBuffer.readUnsignedShortLE(); + if (var4 == 65535) { + var4 = -1; + } + + chatIcon = BufferedDataStream.incomingBuffer.readIntV2(); + boolean var21 = true; + if (var4 != -1 && var3.anInt2842 != -1 && SequenceDefinition.getAnimationDefinition(GraphicDefinition.getGraphicDefinition(var4).anInt542).forcedPriority < SequenceDefinition.getAnimationDefinition(GraphicDefinition.getGraphicDefinition(var3.anInt2842).anInt542).forcedPriority) { + var21 = false; + } + + if (var21) { + var3.anInt2759 = (chatIcon & 65535) + Class44.anInt719; + var3.anInt2761 = 0; + var3.anInt2805 = 0; + var3.anInt2842 = var4; + if (Class44.anInt719 < var3.anInt2759) { + var3.anInt2805 = -1; + } + + var3.anInt2799 = chatIcon >> 16; + var3.anInt2826 = 1; + if (var3.anInt2842 != -1 && Class44.anInt719 == var3.anInt2759) { + var7 = GraphicDefinition.getGraphicDefinition(var3.anInt2842).anInt542; + if (var7 != -1) { + SequenceDefinition var24 = SequenceDefinition.getAnimationDefinition(var7); + if (var24.frames != null) { + Unsorted.method1470(var3.yAxis, var24, var3.xAxis, var3 == Class102.player, 0); + } + } + } + } + } + + //Ordinal: 10 Face location + if ((var0 & 64) != 0) { + var3.anInt2786 = BufferedDataStream.incomingBuffer.readUnsignedShort(); + var3.anInt2762 = BufferedDataStream.incomingBuffer.readUnsignedShortLE128(); + } + + } catch (RuntimeException var15) { + throw ClientErrorException.clientError(var15, "gk.A(" + var0 + ',' + var1 + ',' + (byte) -79 + ',' + (var3 != null ? "{...}" : "null") + ')'); + } + } + + static void method628(int var1, int var2, Player var3) { + try { + + if (var3.anInt2771 == var2 && var2 != -1) { + SequenceDefinition var4 = SequenceDefinition.getAnimationDefinition(var2); + int var5 = var4.delayType; + if (1 == var5) { + var3.anInt2828 = var1; + var3.anInt2760 = 0; + var3.anInt2776 = 1; + var3.anInt2832 = 0; + var3.anInt2773 = 0; + Unsorted.method1470(var3.yAxis, var4, var3.xAxis, Class102.player == var3, var3.anInt2832); + } + + if (var5 == 2) { + var3.anInt2773 = 0; + } + } else if (-1 == var2 || var3.anInt2771 == -1 || SequenceDefinition.getAnimationDefinition(var2).forcedPriority >= SequenceDefinition.getAnimationDefinition(var3.anInt2771).forcedPriority) { + var3.anInt2776 = 1; + var3.anInt2832 = 0; + var3.anInt2828 = var1; + var3.anInt2811 = var3.anInt2816; + var3.anInt2773 = 0; + var3.anInt2760 = 0; + var3.anInt2771 = var2; + if (var3.anInt2771 != -1) { + Unsorted.method1470(var3.yAxis, SequenceDefinition.getAnimationDefinition(var3.anInt2771), var3.xAxis, var3 == Class102.player, var3.anInt2832); + } + } + + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "pa.C(" + 0 + ',' + var1 + ',' + var2 + ',' + (var3 != null ? "{...}" : "null") + ')'); + } + } + + public static void updateLocalPosition() { + try { + BufferedDataStream.incomingBuffer.setBitAccess(); + int opcode = BufferedDataStream.incomingBuffer.getBits(1); + if (opcode != 0) { + int type = BufferedDataStream.incomingBuffer.getBits(2); + if (type == 0) { + Class21.maskUpdateIndexes[Unsorted.maskUpdateCount++] = 2047; + } else { + int var4; + int var5; + if (type == 1) { //Walk + var4 = BufferedDataStream.incomingBuffer.getBits(3); + Class102.player.walkStep(1, (byte) -128, var4); + var5 = BufferedDataStream.incomingBuffer.getBits(1); + if (var5 == 1) { + Class21.maskUpdateIndexes[Unsorted.maskUpdateCount++] = 2047; + } + + } else if (type == 2) { + if (BufferedDataStream.incomingBuffer.getBits(1) == 1) { + var4 = BufferedDataStream.incomingBuffer.getBits(3); + Class102.player.walkStep(2, (byte) -104, var4); + var5 = BufferedDataStream.incomingBuffer.getBits(3); + Class102.player.walkStep(2, (byte) -126, var5); + } else { + var4 = BufferedDataStream.incomingBuffer.getBits(3); + Class102.player.walkStep(0, (byte) -109, var4); + } + + var4 = BufferedDataStream.incomingBuffer.getBits(1); + if (var4 == 1) { + Class21.maskUpdateIndexes[Unsorted.maskUpdateCount++] = 2047; + } + + } else if (type == 3) { + var4 = BufferedDataStream.incomingBuffer.getBits(7); + var5 = BufferedDataStream.incomingBuffer.getBits(1); + WorldListCountry.localPlane = BufferedDataStream.incomingBuffer.getBits(2); + int var6 = BufferedDataStream.incomingBuffer.getBits(1); + if (var6 == 1) { + Class21.maskUpdateIndexes[Unsorted.maskUpdateCount++] = 2047; + } + + int var7 = BufferedDataStream.incomingBuffer.getBits(7); + Class102.player.updatePlayerPosition(var7, var5 == 1, var4); + } + } + } + } catch (RuntimeException var8) { + throw ClientErrorException.clientError(var8, "bg.G(" + (byte) 81 + ')'); + } + } + + static void updatePlayerAreaArray() { + try { + for (int var1 = -1; Class159.localPlayerCount > var1; ++var1) { + int var2; + if (var1 == -1) { + var2 = 2047; + } else { + var2 = Class56.localPlayerIndexes[var1]; + } + + Player var3 = Unsorted.players[var2]; + if (var3 != null) { + Unsorted.method68(var3.getSize(), var3); + } + } + + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "fk.G(" + -102 + ')'); + } + } +} diff --git a/Client/src/main/java/org/runite/client/PositionedGraphicObject.java b/Client/src/main/java/org/runite/client/PositionedGraphicObject.java new file mode 100644 index 000000000..51a1ca1ea --- /dev/null +++ b/Client/src/main/java/org/runite/client/PositionedGraphicObject.java @@ -0,0 +1,232 @@ +package org.runite.client; + +final class PositionedGraphicObject extends GameObject { + + int anInt2703; + private Class127_Sub1 aClass127_Sub1_2704; + private int anInt2706 = 0; + private final int anInt2708; + int y2710; + private SequenceDefinition aClass142_2711; + int anInt2712; + static boolean aBoolean2713; + private int anInt2715 = -32768; + int x2716; + int plane2717; + boolean aBoolean2718; + private int anInt2719 = 0; + + + private Model method1949() { + try { + GraphicDefinition var2 = GraphicDefinition.getGraphicDefinition(this.anInt2708); + + Model var3; + if(this.aBoolean2718) { + var3 = var2.method966(-1, -1, 0); + } else { + int anInt2714 = -1; + var3 = var2.method966(anInt2714, this.anInt2706, this.anInt2719); + } + + return var3; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "bh.E(" + false + ')'); + } + } + + static void method1950(Entity var0) { + try { + int var2 = var0.anInt2800 - Class44.anInt719; + int var3 = 128 * var0.anInt2784 - -(64 * var0.getSize()); + int var4 = 128 * var0.anInt2835 - -(var0.getSize() * 64); + if(0 == var0.anInt2840) { + var0.anInt2806 = 1024; + } + + var0.xAxis += (-var0.xAxis + var3) / var2; + var0.yAxis += (var4 + -var0.yAxis) / var2; + if(var0.anInt2840 == 1) { + var0.anInt2806 = 1536; + } + + var0.anInt2824 = 0; + if(var0.anInt2840 == 2) { + var0.anInt2806 = 0; + } + + if(var0.anInt2840 == 3) { + var0.anInt2806 = 512; + } + + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "bh.F(" + (var0 != null?"{...}":"null") + ',' + true + ')'); + } + } + + static int method1951(int var0) { + try { + + return var0 >>> 8; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "bh.D(" + var0 + ',' + (byte) -115 + ')'); + } + } + + static void method1952(int var0, int var2, int var3, int var4, int var5, int var6, int var7) { + try { + int var8; + int var9; + if(HDToolKit.highDetail) { + var8 = -334 + var2; + if(var8 >= 0) { + if(var8 > 100) { + var8 = 100; + } + } else { + var8 = 0; + } + + var9 = var8 * (-Unsorted.aShort46 + ObjectDefinition.aShort1535) / 100 + Unsorted.aShort46; + var4 = var9 * var4 >> 8; + } + + var8 = -var7 + 2048 & 0x7FF; + var9 = 2047 & -var5 + 2048; + int var10 = 0; + int var12 = var4; + int var11 = 0; + int var13; + int var14; + if(var8 != 0) { + var14 = Class51.anIntArray851[var8]; + var13 = Class51.anIntArray840[var8]; + var11 = var13 * -var4 >> 16; + var12 = var14 * var4 >> 16; + } + + if(0 != var9) { + var13 = Class51.anIntArray840[var9]; + var14 = Class51.anIntArray851[var9]; + var10 = var13 * var12 >> 16; + var12 = var12 * var14 >> 16; + } + + Class139.anInt1823 = var7; + TextureOperation28.anInt3315 = var5; + Class77.anInt1111 = var6 + -var12; + NPC.anInt3995 = var0 + -var10; + Class7.anInt2162 = -var11 + var3; + } catch (RuntimeException var15) { + throw ClientErrorException.clientError(var15, "bh.G(" + var0 + ',' + -1907397104 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + var5 + ',' + var6 + ',' + var7 + ')'); + } + } + + static WorldListEntry method1953() { + try { + + Class3_Sub6.anInt2291 = 0; + return ItemDefinition.method1107(5422); + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "bh.H(" + (byte) 124 + ')'); + } + } + + final int method1871() { + try { + return this.anInt2715; + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "bh.MA()"); + } + } + + final void animate(int var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, long var9, int var11, Class127_Sub1 var12) { + try { + Model var13 = this.method1949(); + if(var13 != null) { + var13.animate(var1, var2, var3, var4, var5, var6, var7, var8, var9, var11, this.aClass127_Sub1_2704); + this.anInt2715 = var13.method1871(); + } + } catch (RuntimeException var14) { + throw ClientErrorException.clientError(var14, "bh.IA(" + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + var5 + ',' + var6 + ',' + var7 + ',' + var8 + ',' + var9 + ',' + var11 + ',' + (var12 != null?"{...}":"null") + ')'); + } + } + + final void method1955(int var2) { + try { + if(!this.aBoolean2718) { + + this.anInt2719 += var2; + + while(this.aClass142_2711.duration[this.anInt2706] < this.anInt2719) { + this.anInt2719 -= this.aClass142_2711.duration[this.anInt2706]; + ++this.anInt2706; + if(this.anInt2706 >= this.aClass142_2711.frames.length) { + this.aBoolean2718 = true; + break; + } + } + + } + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "bh.A(" + true + ',' + var2 + ')'); + } + } + + static void method1956(int var0, int var1, int var2, int var3) { + TileData var4 = TileData.aTileDataArrayArrayArray2638[var0][var1][var2]; + if(var4 != null) { + Class19 var5 = var4.aClass19_2233; + if(var5 != null) { + var5.anInt430 = var5.anInt430 * var3 / 16; + var5.anInt426 = var5.anInt426 * var3 / 16; + } + } + } + + final void method1867(int var1, int var2, int var3, int var4, int var5) {} + + PositionedGraphicObject(int var1, int plane, int x, int y, int var5, int var6, int var7) { + try { + this.y2710 = y; + this.x2716 = x; + this.plane2717 = plane; + this.anInt2703 = var7 + var6; + this.anInt2708 = var1; + this.anInt2712 = var5; + int var8 = GraphicDefinition.getGraphicDefinition(this.anInt2708).anInt542; + if(-1 == var8) { + this.aBoolean2718 = true; + } else { + this.aBoolean2718 = false; + this.aClass142_2711 = SequenceDefinition.getAnimationDefinition(var8); + } + + } catch (RuntimeException var9) { + throw ClientErrorException.clientError(var9, "bh.(" + var1 + ',' + plane + ',' + x + ',' + y + ',' + var5 + ',' + var6 + ',' + var7 + ')'); + } + } + + public static void method2067() { + try { + for (Class3_Sub28_Sub2 var1 = (Class3_Sub28_Sub2) TextureOperation17.aLinkedList_3177.startIteration(); null != var1; var1 = (Class3_Sub28_Sub2) TextureOperation17.aLinkedList_3177.nextIteration()) { + PositionedGraphicObject var2 = var1.aPositionedGraphicObject_3545; + if (WorldListCountry.localPlane == var2.plane2717 && !var2.aBoolean2718) { + if (Class44.anInt719 >= var2.anInt2703) { + var2.method1955(Class106.anInt1446); + if (var2.aBoolean2718) { + var1.unlink(); + } else { + Class20.method907(var2.plane2717, var2.x2716, var2.y2710, var2.anInt2712, 60, var2, 0, -1L, false); + } + } + } else { + var1.unlink(); + } + } + + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "u.G(" + false + ')'); + } + } +} diff --git a/Client/src/main/java/org/runite/client/QuickChat.java b/Client/src/main/java/org/runite/client/QuickChat.java new file mode 100644 index 000000000..30769c432 --- /dev/null +++ b/Client/src/main/java/org/runite/client/QuickChat.java @@ -0,0 +1,112 @@ +package org.runite.client; + +import org.rs09.client.data.NodeCache; + +final class QuickChat { + + static CacheIndex quickchatMenusIndex_1967; + static CacheIndex quickchatMessagesIndex_3490; + static NodeCache aClass47_3137 = new NodeCache(64); + static NodeCache aClass47_3776 = new NodeCache(64); + static int anInt377 = 0; + static int anInt1156 = 0; + + int anInt149; + QuickChatDefinition aQuickChatDefinition_151; + int[] anIntArray153; + + static void method205(CacheIndex quickchatMenusIndex, CacheIndex quickchatMessagesIndex, Interface4 var3) { + try { + quickchatMenusIndex_1967 = quickchatMenusIndex; + Class58.anInterface4_915 = var3; + quickchatMessagesIndex_3490 = quickchatMessagesIndex; + if (quickchatMessagesIndex_3490 != null) { + anInt1156 = quickchatMessagesIndex_3490.getFileAmount(1); + } + + if (quickchatMenusIndex_1967 != null) { + anInt377 = quickchatMenusIndex_1967.getFileAmount(1); + } + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "ej.E(" + (quickchatMenusIndex != null ? "{...}" : "null") + ',' + 115 + ',' + (quickchatMessagesIndex != null ? "{...}" : "null") + ',' + (var3 != null ? "{...}" : "null") + ')'); + } + } + + static QuickChatDefinition method733(int var1) { + try { + QuickChatDefinition var2 = (QuickChatDefinition) aClass47_3776.get(var1); + if (null == var2) { + byte[] var3; + if (var1 < 32768) { + var3 = quickchatMessagesIndex_3490.getFile(1, var1); + } else { + var3 = quickchatMenusIndex_1967.getFile(1, 32767 & var1); + } + + var2 = new QuickChatDefinition(); + + if (var3 != null) { + var2.decode(new DataBuffer(var3)); + } + + if (var1 >= 32768) { + var2.method548(); + } + + aClass47_3776.put(var1, var2); + } + return var2; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "sj.Q(" + 12345678 + ',' + var1 + ')'); + } + } + + static QuickChat method2156(DataBuffer var1) { + try { + QuickChat var2 = new QuickChat(); + var2.anInt149 = var1.readUnsignedShort(); + + var2.aQuickChatDefinition_151 = method733(var2.anInt149); + return var2; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "vh.M(" + 1024 + ',' + (var1 != null ? "{...}" : "null") + ')'); + } + } + + static Class3_Sub28_Sub1 getQuickChatMessage(int fileId) { + try { + Class3_Sub28_Sub1 var2 = (Class3_Sub28_Sub1) aClass47_3137.get(fileId); + if (null == var2) { + byte[] var3; + if (fileId < 32768) { + var3 = Unsorted.quickChatMessages.getFile(0, fileId); + } else { + var3 = Unsorted.quickchatMenusIndex_332.getFile(0, fileId & 32767); + } + + var2 = new Class3_Sub28_Sub1(); + if (null != var3) { + var2.method530(new DataBuffer(var3)); + } + + if (fileId >= 32768) { + var2.method525(); + } + + aClass47_3137.put(fileId, var2); + } + return var2; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "tb.B(" + fileId + ',' + (byte) -54 + ')'); + } + } + + static void method1236(CacheIndex var0, CacheIndex var1) { + try { + Unsorted.quickChatMessages = var1; + Unsorted.quickchatMenusIndex_332 = var0; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "ja.F(" + (var0 != null ? "{...}" : "null") + ',' + (var1 != null ? "{...}" : "null") + ',' + -117 + ')'); + } + } +} diff --git a/Client/src/main/java/org/runite/client/QuickChatDefinition.java b/Client/src/main/java/org/runite/client/QuickChatDefinition.java new file mode 100644 index 000000000..38ded6d3e --- /dev/null +++ b/Client/src/main/java/org/runite/client/QuickChatDefinition.java @@ -0,0 +1,172 @@ +package org.runite.client; + +import org.rs09.client.Node; +import org.rs09.client.data.ReferenceCache; + +import java.util.Objects; + +final class QuickChatDefinition extends Node { + + static int[] anIntArray3565 = new int[32]; + static int[] anIntArray2209 = new int[]{2, 2, 4, 2, 1, 8, 4, 1, 4, 4, 2, 1, 1, 1, 4, 1}; + static int[] anIntArray1976 = new int[]{1, 0, 0, 0, 1, 0, 2, 1, 1, 1, 0, 2, 0, 0, 1, 0}; + private int[] anIntArray3566; + int[] anIntArray3567; + boolean aBoolean3568 = true; + private int[][] anIntArrayArray3570; + private RSString[] aStringArray3571; + static ReferenceCache aReferenceCache_3572 = new ReferenceCache(64); + static Class83 aClass83_3579; + + static RSString method612(long var0) { + return TextureOperation9.method207(10, false, 116, var0); + } + + final void decode(DataBuffer buffer) { + + while(true) { + int var3 = buffer.readUnsignedByte(); + if(0 == var3) { + return; + } + + this.decode(buffer, var3); + } + } + + private void decode(DataBuffer var1, int var2) { + try { + + if(var2 == 1) { + this.aStringArray3571 = var1.readString().method1567(60, (byte)118); + } else { + int var4; + int var5; + if(var2 == 2) { + var4 = var1.readUnsignedByte(); + this.anIntArray3567 = new int[var4]; + + for(var5 = 0; var5 < var4; ++var5) { + this.anIntArray3567[var5] = var1.readUnsignedShort(); + } + } else if (var2 == 3) { + var4 = var1.readUnsignedByte(); + this.anIntArray3566 = new int[var4]; + this.anIntArrayArray3570 = new int[var4][]; + + for (var5 = 0; var4 > var5; ++var5) { + int var6 = var1.readUnsignedShort(); + this.anIntArray3566[var5] = var6; + this.anIntArrayArray3570[var5] = new int[anIntArray1976[var6]]; + + for (int var7 = 0; anIntArray1976[var6] > var7; ++var7) { + this.anIntArrayArray3570[var5][var7] = var1.readUnsignedShort(); + } + } + } else if (var2 == 4) { + this.aBoolean3568 = false; + } + } + + } catch (RuntimeException var8) { + throw ClientErrorException.clientError(var8, "cb.R(" + (var1 != null?"{...}":"null") + ',' + var2 + ',' + -14637 + ')'); + } + } + + final void method545(DataBuffer var1, int[] var2) { + try { + if(this.anIntArray3566 != null) { + for(int var4 = 0; var4 < this.anIntArray3566.length && var2.length > var4; ++var4) { + int var5 = ClientErrorException.anIntArray2113[this.method550(89, var4)]; + if(var5 > 0) { + var1.method739(var5, var2[var4]); + } + } + + } + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "cb.O(" + (var1 != null?"{...}":"null") + ',' + (var2 != null?"{...}":"null") + ',' + false + ')'); + } + } + + final void method548() { + try { + if(null != this.anIntArray3567) { + for(int var2 = 0; var2 < this.anIntArray3567.length; ++var2) { + this.anIntArray3567[var2] = TextureOperation3.bitwiseOr(this.anIntArray3567[var2], 32768); + } + } + + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "cb.Q(" + 60 + ')'); + } + } + + final int method549(int var2, int var3) { + try { + + return null != this.anIntArray3566 && var3 >= 0 && this.anIntArray3566.length >= var3 ?(this.anIntArrayArray3570[var3] != null && var2 >= 0 && this.anIntArrayArray3570[var3].length >= var2 ?this.anIntArrayArray3570[var3][var2]:-1):-1; + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "cb.P(" + -117 + ',' + var2 + ',' + var3 + ')'); + } + } + + final int method550(int var1, int var2) { + try { + if(null != this.anIntArray3566 && var2 >= 0 && var2 <= this.anIntArray3566.length) { + return this.anIntArray3566[var2]; + } else { + return -1; + } + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "cb.S(" + var1 + ',' + var2 + ')'); + } + } + + final int method552() { + try { + return (this.anIntArray3566 != null?this.anIntArray3566.length:0); + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "cb.E(" + true + ')'); + } + } + + final RSString method554() { + try { + RSString var2 = Unsorted.emptyString(80); + if(null == this.aStringArray3571) { + return TextCore.aString_3357; + } else { + Objects.requireNonNull(var2).append(this.aStringArray3571[0]); + + for(int var3 = 1; var3 < this.aStringArray3571.length; ++var3) { + var2.append(RSString.parse(")3)3)3")); + var2.append(this.aStringArray3571[var3]); + } + + return var2.method1576(); + } + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "cb.C(" + -1 + ')'); + } + } + + final RSString method555(DataBuffer var2) { + try { + + RSString var3 = Unsorted.emptyString(80); + if(this.anIntArray3566 != null) { + for(int var4 = 0; var4 < this.anIntArray3566.length; ++var4) { + Objects.requireNonNull(var3).append(this.aStringArray3571[var4]); + var3.append(Class49.method1124(this.anIntArrayArray3570[var4], var2.method772(anIntArray2209[this.anIntArray3566[var4]]), this.anIntArray3566[var4])); + } + } + + Objects.requireNonNull(var3).append(this.aStringArray3571[-1 + this.aStringArray3571.length]); + return var3.method1576(); + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "cb.B(" + 28021 + ',' + (var2 != null?"{...}":"null") + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/RSInterface.java b/Client/src/main/java/org/runite/client/RSInterface.java new file mode 100644 index 000000000..75eb097fe --- /dev/null +++ b/Client/src/main/java/org/runite/client/RSInterface.java @@ -0,0 +1,1133 @@ +package org.runite.client; + +public final class RSInterface { + + static boolean aBoolean6 = false; + boolean hidden = false; + Object[] anObjectArray156; + boolean aBoolean157; + Object[] anObjectArray158; + Object[] interfaceScript159; + int anInt160 = 1; + Object[] anObjectArray161; + byte verticalPos = 0; + boolean aBoolean163; + int anInt164 = 100; + Object[] anObjectArray165; + int defY; + boolean aBoolean167; + public int width; + short aShort169 = 3000; + Object[] anObjectArray170; + RSString[] aStringArray171; + RSString aString_172; + RSString[] options; + Object[] anObjectArray174; + int[] anIntArray175; + Object[] anObjectArray176; + int defWidth; + boolean aBoolean178; + int anInt179 = 0; + Object[] anObjectArray180; + boolean aBoolean181 = false; + int anInt182 = 0; + Object[] anObjectArray183; + int anInt184; + int[] anIntArray185; + boolean aBoolean186 = false; + int type; + boolean aBoolean188 = false; + int anInt189; + int parentId; + int anInt191 = -1; + int anInt192; + public int height = 0; + int anInt194 = 0; + boolean aBoolean195; + private int secondModelId; + int[] anIntArray197; + int secondAnimationId = -1; + boolean aBoolean199; + boolean aBoolean200; + int itemId; + int modelType; + Object[] anObjectArray203; + int anInt204; + int anInt205 = 0; + Object[] anObjectArray206; + public int[] anIntArray207; + int anInt208 = 0; + int anInt210 = 0; + int[] anIntArray211; + int anInt212; + int anInt213; + int anInt214 = 0; + boolean aBoolean215; + int anInt216; + Object[] anObjectArray217; + int anInt218; + boolean aBoolean219; + Object[] anObjectArray220; + Object[] anObjectArray221; + int anInt222; + int anInt223; + int spriteArchiveId = -1; + int anInt225; + boolean aBoolean226 = false; + boolean aBoolean227; + int anInt228; + Object[] anObjectArray229; + int anInt230 = 0; + byte[] aByteArray231; + public RSString text; + boolean usingScripts; + int anInt234; + Object[] anObjectArray235; + static boolean aBoolean236 = true; + int anInt237; + int anInt238 = -1; + Object[] anObjectArray239; + int anInt240; + byte verticalResize; + int anInt242; + RSString aString_243; + int defHeight; + RSString aString_245; + static float aFloat246; + int anInt247; + Object[] anObjectArray248; + int[] anIntArray249; + int anInt250 = 1; + static RSString aString_251 = null; + int anInt252; + int anInt253; + int[] itemAmounts; + int anInt255; + Object[] anObjectArray256; + Class3_Sub1 aClass3_Sub1_257; + int anInt258; + int anInt259; + int anInt260; + static long aLong261 = 0L; + RSInterface[] aClass11Array262; + byte[] aByteArray263; + int anInt264; + int anInt265; + int anInt266; + int anInt267; + Object[] anObjectArray268; + Object[] anObjectArray269; + int anInt270; + int anInt271; + int[] anIntArray272; + byte horizontalPos; + int[] anIntArray274; + int[] anIntArray275; + Object[] anObjectArray276; + RSString aString_277; + static int anInt278 = -1; + int componentHash; + int anInt280; + Object[] anObjectArray281; + Object[] anObjectArray282; + int anInt283; + int anInt284; + int anInt285; + int[] anIntArray286; + int anInt287; + int anInt288; + RSString aString_289; + int anInt290; + public int[] anIntArray291; + int anInt292; + short aShort293; + private int secondModelType; + Object[] anObjectArray295; + int anInt296; + int[][] childDataBuffers; + int[] anIntArray299; + int[] anIntArray300; + int anInt301; + RSInterface aClass11_302; + Object[] anObjectArray303; + byte horizontalResize; + int animationId; + int anInt306; + int[] anIntArray307; + int anInt308; + boolean aBoolean309; + int[] anIntArray310; + int anInt311; + int anInt312; + Object[] anObjectArray313; + Object[] anObjectArray314; + Object[] anObjectArray315; + int defX; + int[] itemIds; + int anInt318; + + static void method2271(int var0, int var1, int var3) { + try { + + InterfaceWidget var4 = InterfaceWidget.getWidget(11, var1); + var4.flagUpdate(); + var4.anInt3597 = var3; + var4.anInt3598 = var0; + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "wl.F(" + var0 + ',' + var1 + ',' + 1 + ',' + var3 + ')'); + } + } + + + final void method854(int var1, int var2) { + try { + if (this.anIntArray249 == null || var1 >= this.anIntArray249.length) { + int[] var4 = new int[1 + var1]; + if (this.anIntArray249 != null) { + int var5; + for (var5 = 0; this.anIntArray249.length > var5; ++var5) { + var4[var5] = this.anIntArray249[var5]; + } + + for (var5 = this.anIntArray249.length; var5 < var1; ++var5) { + var4[var5] = -1; + } + } + + this.anIntArray249 = var4; + } + + this.anIntArray249[var1] = var2; + + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "be.P(" + var1 + ',' + var2 + ',' + (byte) 43 + ')'); + } + } + + final boolean method855() { + try { + if (this.anIntArray207 == null) { + LDIndexedSprite var2 = Unsorted.method1539(this.spriteArchiveId, Class12.spritesIndex_323); + if (null == var2) { + return false; + } else { + var2.method1675(); + this.anIntArray207 = new int[var2.height]; + this.anIntArray291 = new int[var2.height]; + int var3 = 0; + + while (var2.height > var3) { + int var4 = 0; + int var5 = var2.width; + int var6 = 0; + + while (true) { + if (var2.width > var6) { + if (var2.raster[var2.width * var3 + var6] == 0) { + ++var6; + continue; + } + + var4 = var6; + } + + for (var6 = var4; var2.width > var6; ++var6) { + if (0 == var2.raster[var3 * var2.width + var6]) { + var5 = var6; + break; + } + } + + this.anIntArray207[var3] = var4; + this.anIntArray291[var3] = var5 - var4; + ++var3; + break; + } + } + + return true; + } + } else { + return true; + } + } catch (RuntimeException var7) { + throw ClientErrorException.clientError(var7, "be.G(" + -30721 + ')'); + } + } + + static RSString method856() { + try { + + RSString var1 = TextCore.aString_4052; + RSString var2 = RSString.parse(""); + if (Class44.paramModeWhere != 0) { + var1 = RSString.parse("www)2wtqa"); + } + + if (null != Class163_Sub2.paramSettings) { + var2 = RSString.stringCombiner(new RSString[]{TextCore.aString_3637, Class163_Sub2.paramSettings}); + } + + return RSString.stringCombiner(new RSString[]{TextCore.aString_577, var1, TextCore.aString_3601, RSString.stringAnimator(Class3_Sub20.paramLanguage), TextCore.aString_1932, RSString.stringAnimator(Class3_Sub26.paramAffid), var2, TextCore.aString_2735}); + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "be.N(" + true + ')'); + } + } + + final void method857(RSString var2, int var3) { + try { + if (null == this.aStringArray171 || var3 >= this.aStringArray171.length) { + RSString[] var4 = new RSString[1 + var3]; + if (null != this.aStringArray171) { + System.arraycopy(this.aStringArray171, 0, var4, 0, this.aStringArray171.length); + } + + this.aStringArray171 = var4; + } + + this.aStringArray171[var3] = var2; + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "be.B(" + (byte) 112 + ',' + (var2 != null ? "{...}" : "null") + ',' + var3 + ')'); + } + } + + final void decodeNoScripts(DataBuffer buffer) { + this.usingScripts = false; + this.type = buffer.readUnsignedByte(); + this.anInt318 = buffer.readUnsignedByte(); + this.anInt189 = buffer.readUnsignedShort(); + this.defX = buffer.readSignedShort(); + this.defY = buffer.readSignedShort(); + this.defWidth = buffer.readUnsignedShort(); + this.defHeight = buffer.readUnsignedShort(); + this.horizontalResize = 0; + this.verticalResize = 0; + this.horizontalPos = 0; + this.verticalPos = 0; + this.anInt223 = buffer.readUnsignedByte(); + this.parentId = buffer.readUnsignedShort(); + if (this.parentId == 65535) { + this.parentId = -1; + } else { + this.parentId += -65536 & this.componentHash; + } + + this.anInt212 = buffer.readUnsignedShort(); + if (this.anInt212 == 65535) { + this.anInt212 = -1; + } + + int var3 = buffer.readUnsignedByte(); + int var4; + if (var3 > 0) { + this.anIntArray307 = new int[var3]; + this.anIntArray275 = new int[var3]; + + for (var4 = 0; var4 < var3; ++var4) { + this.anIntArray275[var4] = buffer.readUnsignedByte(); + this.anIntArray307[var4] = buffer.readUnsignedShort(); + } + } + + var4 = buffer.readUnsignedByte(); + int var5; + int var6; + int var7; + if (var4 > 0) { + this.childDataBuffers = new int[var4][]; + + for (var5 = 0; var5 < var4; ++var5) { + var6 = buffer.readUnsignedShort(); + this.childDataBuffers[var5] = new int[var6]; + + for (var7 = 0; var6 > var7; ++var7) { + this.childDataBuffers[var5][var7] = buffer.readUnsignedShort(); + if (this.childDataBuffers[var5][var7] == 65535) { + this.childDataBuffers[var5][var7] = -1; + } + } + } + } + + if (this.type == 0) { + this.anInt252 = buffer.readUnsignedShort(); + this.hidden = 1 == buffer.readUnsignedByte(); + } + + if (this.type == 1) { + buffer.readUnsignedShort(); + buffer.readUnsignedByte(); + } + + var5 = 0; + if (this.type == 2) { + this.verticalResize = 3; + this.itemIds = new int[this.defWidth * this.defHeight]; + this.itemAmounts = new int[this.defHeight * this.defWidth]; + this.horizontalResize = 3; + var6 = buffer.readUnsignedByte(); + var7 = buffer.readUnsignedByte(); + if (var6 == 1) { + var5 |= 268435456; + } + + int var8 = buffer.readUnsignedByte(); + if (var7 == 1) { + var5 |= 1073741824; + } + + if (1 == var8) { + var5 |= Integer.MIN_VALUE; + } + + int var9 = buffer.readUnsignedByte(); + if (var9 == 1) { + var5 |= 536870912; + } + + this.anInt285 = buffer.readUnsignedByte(); + this.anInt290 = buffer.readUnsignedByte(); + this.anIntArray300 = new int[20]; + this.anIntArray272 = new int[20]; + this.anIntArray197 = new int[20]; + + int var10; + for (var10 = 0; 20 > var10; ++var10) { + int var11 = buffer.readUnsignedByte(); + if (var11 == 1) { + this.anIntArray272[var10] = buffer.readSignedShort(); + this.anIntArray300[var10] = buffer.readSignedShort(); + this.anIntArray197[var10] = buffer.readInt(); + } else { + this.anIntArray197[var10] = -1; + } + } + + this.options = new RSString[5]; + + for (var10 = 0; var10 < 5; ++var10) { + RSString var14 = buffer.readString(); + if (var14.length() > 0) { + this.options[var10] = var14; + var5 |= 1 << 23 - -var10; + } + } + } + + if (3 == this.type) { + this.aBoolean226 = 1 == buffer.readUnsignedByte(); + } + + if (this.type == 4 || 1 == this.type) { + this.anInt194 = buffer.readUnsignedByte(); + this.anInt225 = buffer.readUnsignedByte(); + this.anInt205 = buffer.readUnsignedByte(); + this.anInt270 = buffer.readUnsignedShort(); + if (this.anInt270 == 65535) { + this.anInt270 = -1; + } + + this.aBoolean215 = 1 == buffer.readUnsignedByte(); + } + + if (this.type == 4) { + this.text = buffer.readString(); + this.aString_172 = buffer.readString(); + } + + if (this.type == 1 || this.type == 3 || 4 == this.type) { + this.anInt218 = buffer.readInt(); + } + + if (this.type == 3 || this.type == 4) { + this.anInt253 = buffer.readInt(); + this.anInt228 = buffer.readInt(); + this.anInt222 = buffer.readInt(); + } + + if (this.type == 5) { + this.spriteArchiveId = buffer.readInt(); + this.anInt296 = buffer.readInt(); + } + + if (6 == this.type) { + this.modelType = 1; + this.itemId = buffer.readUnsignedShort(); + this.secondModelType = 1; + if (this.itemId == 65535) { + this.itemId = -1; + } + + this.secondModelId = buffer.readUnsignedShort(); + if (this.secondModelId == 65535) { + this.secondModelId = -1; + } + + this.animationId = buffer.readUnsignedShort(); + if (this.animationId == 65535) { + this.animationId = -1; + } + + this.secondAnimationId = buffer.readUnsignedShort(); + if (65535 == this.secondAnimationId) { + this.secondAnimationId = -1; + } + + this.anInt164 = buffer.readUnsignedShort(); + this.anInt182 = buffer.readUnsignedShort(); + this.anInt308 = buffer.readUnsignedShort(); + } + + if (7 == this.type) { + this.verticalResize = 3; + this.horizontalResize = 3; + this.itemIds = new int[this.defHeight * this.defWidth]; + this.itemAmounts = new int[this.defWidth * this.defHeight]; + this.anInt194 = buffer.readUnsignedByte(); + this.anInt270 = buffer.readUnsignedShort(); + if (this.anInt270 == 65535) { + this.anInt270 = -1; + } + + this.aBoolean215 = buffer.readUnsignedByte() == 1; + this.anInt218 = buffer.readInt(); + this.anInt285 = buffer.readSignedShort(); + this.anInt290 = buffer.readSignedShort(); + var6 = buffer.readUnsignedByte(); + if (var6 == 1) { + var5 |= 1073741824; + } + + this.options = new RSString[5]; + + for (var7 = 0; var7 < 5; ++var7) { + RSString var13 = buffer.readString(); + if (var13.length() > 0) { + this.options[var7] = var13; + var5 |= 1 << 23 - -var7; + } + } + } + + if (8 == this.type) { + this.text = buffer.readString(); + } + + if (this.anInt318 == 2 || this.type == 2) { + this.aString_245 = buffer.readString(); + this.aString_243 = buffer.readString(); + var6 = 63 & buffer.readUnsignedShort(); + var5 |= var6 << 11; + } + + if (this.anInt318 == 1 || this.anInt318 == 4 || this.anInt318 == 5 || this.anInt318 == 6) { + this.aString_289 = buffer.readString(); + if (this.aString_289.length() == 0) { + if (this.anInt318 == 1) { + this.aString_289 = TextCore.HasOK; + } + + if (this.anInt318 == 4) { + this.aString_289 = TextCore.HasSelect; + } + + if (5 == this.anInt318) { + this.aString_289 = TextCore.HasSelect; + } + + if (this.anInt318 == 6) { + this.aString_289 = TextCore.HasContinue; + } + } + } + + if (this.anInt318 == 1 || this.anInt318 == 4 || this.anInt318 == 5) { + var5 |= 4194304; + } + + if (this.anInt318 == 6) { + var5 |= 1; + } + + this.aClass3_Sub1_257 = new Class3_Sub1(var5, -1); + } + + final AbstractSprite method859(int var2) { + try { + aBoolean6 = false; + if (var2 >= 0 && var2 < this.anIntArray197.length) { + int var3 = this.anIntArray197[var2]; + if (var3 == -1) { + return null; + } else { + AbstractSprite var4 = (AbstractSprite) Class114.aReferenceCache_1569.get(var3); + if (var4 == null) { + var4 = Unsorted.method602(var3, Class12.spritesIndex_323); + if (null == var4) { + aBoolean6 = true; + } else { + Class114.aReferenceCache_1569.put(var4, var3); + } + + } + return var4; + } + } else { + return null; + } + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "be.I(" + true + ',' + var2 + ')'); + } + } + + static int method861(int var0, int var1, int var2) { + try { + Class3_Sub25 var3 = (Class3_Sub25) TileData.aHashTable_2220.get(var0); + return null == var3 ? -1 : (0 <= var2 && var2 < var3.anIntArray2547.length ? (var1 < 39 ? -69 : var3.anIntArray2547[var2]) : -1); + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "be.J(" + var0 + ',' + var1 + ',' + var2 + ')'); + } + } + + private Object[] method862(DataBuffer var2) { + try { + int var3 = var2.readUnsignedByte(); + if (var3 == 0) { + return null; + } else { + Object[] var4 = new Object[var3]; + + for (int var5 = 0; var3 > var5; ++var5) { + int var6 = var2.readUnsignedByte(); + if (0 == var6) { + var4[var5] = new Integer(var2.readInt()); + } else if (var6 == 1) { + var4[var5] = var2.readString(); + } + } + + this.aBoolean195 = true; + return var4; + } + } catch (RuntimeException var7) { + throw ClientErrorException.clientError(var7, "be.K(" + -65536 + ',' + (var2 != null ? "{...}" : "null") + ')'); + } + } + + private int[] method863(DataBuffer var1) { + try { + int var3 = var1.readUnsignedByte(); + if (var3 == 0) { + return null; + } else { + int[] var4 = new int[var3]; + + for (int var5 = 0; var3 > var5; ++var5) { + var4[var5] = var1.readInt(); + } + + return var4; + } + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "be.H(" + (var1 != null ? "{...}" : "null") + ',' + false + ')'); + } + } + + final void method864(int var1, int var2) { + int var4 = this.itemAmounts[var2]; + this.itemAmounts[var2] = this.itemAmounts[var1]; + this.itemAmounts[var1] = var4; + var4 = this.itemIds[var2]; + this.itemIds[var2] = this.itemIds[var1]; + this.itemIds[var1] = var4; + } + + final Model method865(int var1, SequenceDefinition var2, int var3, int var4, int var5, boolean var6, Class52 var7) { + try { + aBoolean6 = false; + int var8; + int var9; + if (var6) { + var8 = this.secondModelType; + var9 = this.secondModelId; + } else { + var9 = this.itemId; + var8 = this.modelType; + } + + if (var4 < 125) { + return null; + } else if (var8 == 0) { + return null; + } else if (var8 == 1 && var9 == -1) { + return null; + } else { + Model var10; + if (1 == var8) { + var10 = (Model) Class3_Sub15.aReferenceCache_2428.get((var8 << 16) - -var9); + if (var10 == null) { + Model_Sub1 var18 = Model_Sub1.method2015(Class119.modelsIndex_1628, var9); + if (var18 == null) { + aBoolean6 = true; + return null; + } + + var10 = var18.method2008(64, 768, -50, -10, -50); + Class3_Sub15.aReferenceCache_2428.put(var10, var9 + (var8 << 16)); + } + + if (var2 != null) { + var10 = var2.method2055(var10, (byte) 119, var1, var5, var3); + } + + return var10; + } else if (var8 == 2) { + var10 = NPCDefinition.getNPCDefinition(var9).getChatModel(var2, var5, var1, 27, var3); + if (null == var10) { + aBoolean6 = true; + return null; + } else { + return var10; + } + } else if (3 != var8) { + if (4 == var8) { + ItemDefinition var16 = ItemDefinition.getItemDefinition(var9); + Model var17 = var16.method1110(var1, var5, var2, 10, var3); + if (var17 == null) { + aBoolean6 = true; + return null; + } else { + return var17; + } + } else if (var8 == 6) { + var10 = NPCDefinition.getNPCDefinition(var9).method1476(null, 0, (byte) -120, 0, var1, var5, var3, null, 0, var2); + if (null == var10) { + aBoolean6 = true; + return null; + } else { + return var10; + } + } else if (var8 != 7) { + return null; + } else if (var7 == null) { + return null; + } else { + int var15 = this.itemId >>> 16; + int var11 = this.itemId & 65535; + int var12 = this.anInt265; + Model var13 = var7.method1157(var1, var12, var15, var5, var2, var3, var11); + if (var13 == null) { + aBoolean6 = true; + return null; + } else { + return var13; + } + } + } else if (null == var7) { + return null; + } else { + var10 = var7.method1167(var5, var2, var3, var1); + if (null == var10) { + aBoolean6 = true; + return null; + } else { + return var10; + } + } + } + } catch (RuntimeException var14) { + throw ClientErrorException.clientError(var14, "be.E(" + var1 + ',' + (var2 != null ? "{...}" : "null") + ',' + var3 + ',' + var4 + ',' + var5 + ',' + var6 + ',' + (var7 != null ? "{...}" : "null") + ')'); + } + } + + public final AbstractSprite method866(boolean var2) { + try { + aBoolean6 = false; + int archiveId; + if (var2) { + archiveId = this.anInt296; + } else { + archiveId = this.spriteArchiveId; + } + if (archiveId == -1) { + return null; + } else { + long var4 = ((this.aBoolean178 ? 1L : 0L) << 38) + ((!this.aBoolean157 ? 0L : 1L) << 35) + (long) archiveId + ((long) this.anInt288 << 36) + ((this.aBoolean199 ? 1L : 0L) << 39) + ((long) this.anInt287 << 40); + AbstractSprite var6 = (AbstractSprite) Class114.aReferenceCache_1569.get(var4); + if (var6 == null) { + SoftwareSprite var7; + if (this.aBoolean157) { + var7 = Unsorted.loadSoftwareSprite(Class12.spritesIndex_323, archiveId); + } else { + var7 = Class40.method1043(0, Class12.spritesIndex_323, archiveId); + } + + if (null == var7) { + aBoolean6 = true; + return null; + } else { + if (this.aBoolean178) { + var7.method663(); + } + + if (this.aBoolean199) { + var7.method653(); + } + + if (this.anInt288 > 0) { + var7.method652(this.anInt288); + } + + if (this.anInt288 >= 1) { + var7.method657(1); + } + + if (2 <= this.anInt288) { + var7.method657(16777215); + } + + if (this.anInt287 != 0) { + var7.method668(this.anInt287); + } + + Object var9; + if (HDToolKit.highDetail) { + if (var7 instanceof Class3_Sub28_Sub16_Sub2_Sub1) { + var9 = new Class3_Sub28_Sub16_Sub1_Sub1(var7); + } else { + var9 = new HDSprite(var7); + } + } else { + var9 = var7; + } + + Class114.aReferenceCache_1569.put(var9, var4); + return (AbstractSprite) var9; + } + } else { + return var6; + } + } + } catch (RuntimeException var8) { + throw ClientErrorException.clientError(var8, "be.O(" + (byte) -113 + ',' + var2 + ')'); + } + } + + final void decodeScriptFormat(DataBuffer buffer) { + this.usingScripts = true; + buffer.index++; + this.type = buffer.readUnsignedByte(); + if ((128 & this.type) != 0) { + this.type &= 127; + buffer.readString(); + } + + this.anInt189 = buffer.readUnsignedShort(); + this.defX = buffer.readSignedShort(); + this.defY = buffer.readSignedShort(); + this.defWidth = buffer.readUnsignedShort(); + this.defHeight = buffer.readUnsignedShort(); + this.horizontalResize = buffer.readSignedByte(); + this.verticalResize = buffer.readSignedByte(); + this.horizontalPos = buffer.readSignedByte(); + this.verticalPos = buffer.readSignedByte(); + this.parentId = buffer.readUnsignedShort(); + if (this.parentId == 65535) { + this.parentId = -1; + } else { + this.parentId = (this.componentHash & -65536) - -this.parentId; + } + + this.hidden = buffer.readUnsignedByte() == 1; + if (this.type == 0) { + this.anInt240 = buffer.readUnsignedShort(); + this.anInt252 = buffer.readUnsignedShort(); + this.aBoolean219 = buffer.readUnsignedByte() == 1; + } + + int var3; + if (this.type == 5) { + this.spriteArchiveId = buffer.readInt(); + this.anInt301 = buffer.readUnsignedShort(); + var3 = buffer.readUnsignedByte(); + this.aBoolean157 = (2 & var3) != 0; + this.aBoolean186 = (1 & var3) != 0; + this.anInt223 = buffer.readUnsignedByte(); + this.anInt288 = buffer.readUnsignedByte(); + this.anInt287 = buffer.readInt(); + this.aBoolean178 = buffer.readUnsignedByte() == 1; + this.aBoolean199 = 1 == buffer.readUnsignedByte(); + } + + if (this.type == 6) { + this.modelType = 1; + this.itemId = buffer.readUnsignedShort(); + if (this.itemId == 65535) { + this.itemId = -1; + } + + this.anInt259 = buffer.readSignedShort(); + this.anInt230 = buffer.readSignedShort(); + this.anInt182 = buffer.readUnsignedShort(); + this.anInt308 = buffer.readUnsignedShort(); + this.anInt280 = buffer.readUnsignedShort(); + this.anInt164 = buffer.readUnsignedShort(); + this.animationId = buffer.readUnsignedShort(); + if (65535 == this.animationId) { + this.animationId = -1; + } + + this.aBoolean181 = buffer.readUnsignedByte() == 1; + this.aShort293 = (short) buffer.readUnsignedShort(); + this.aShort169 = (short) buffer.readUnsignedShort(); + this.aBoolean309 = 1 == buffer.readUnsignedByte(); + if (this.horizontalResize != 0) { + this.anInt184 = buffer.readUnsignedShort(); + } + + if (this.verticalResize != 0) { + this.anInt312 = buffer.readUnsignedShort(); + } + } + + if (this.type == 4) { + this.anInt270 = buffer.readUnsignedShort(); + if (this.anInt270 == 65535) { + this.anInt270 = -1; + } + + this.text = buffer.readString(); + this.anInt205 = buffer.readUnsignedByte(); + this.anInt194 = buffer.readUnsignedByte(); + this.anInt225 = buffer.readUnsignedByte(); + this.aBoolean215 = buffer.readUnsignedByte() == 1; + this.anInt218 = buffer.readInt(); + } + + if (this.type == 3) { + this.anInt218 = buffer.readInt(); + this.aBoolean226 = 1 == buffer.readUnsignedByte(); + this.anInt223 = buffer.readUnsignedByte(); + } + + if (this.type == 9) { + this.anInt250 = buffer.readUnsignedByte(); + this.anInt218 = buffer.readInt(); + this.aBoolean167 = 1 == buffer.readUnsignedByte(); + } + + var3 = buffer.readMedium(); + int var4 = buffer.readUnsignedByte(); + int var5; + if (var4 != 0) { + this.anIntArray299 = new int[10]; + this.aByteArray263 = new byte[10]; + + for (this.aByteArray231 = new byte[10]; var4 != 0; var4 = buffer.readUnsignedByte()) { + var5 = (var4 >> 4) - 1; + var4 = buffer.readUnsignedByte() | var4 << 8; + var4 &= 4095; + if (4095 == var4) { + this.anIntArray299[var5] = -1; + } else { + this.anIntArray299[var5] = var4; + } + + this.aByteArray263[var5] = buffer.readSignedByte(); + this.aByteArray231[var5] = buffer.readSignedByte(); + } + } + + this.aString_277 = buffer.readString(); + var5 = buffer.readUnsignedByte(); + int var6 = var5 & 15; + int var8; + if (0 < var6) { + this.aStringArray171 = new RSString[var6]; + + for (var8 = 0; var6 > var8; ++var8) { + this.aStringArray171[var8] = buffer.readString(); + } + } + + + int var7 = var5 >> 4; + if (var7 > 0) { + var8 = buffer.readUnsignedByte(); + this.anIntArray249 = new int[var8 + 1]; + + for (int var9 = 0; var9 < this.anIntArray249.length; ++var9) { + this.anIntArray249[var9] = -1; + } + + this.anIntArray249[var8] = buffer.readUnsignedShort(); + } + + if (1 < var7) { + var8 = buffer.readUnsignedByte(); + this.anIntArray249[var8] = buffer.readUnsignedShort(); + } + + this.anInt214 = buffer.readUnsignedByte(); + this.anInt179 = buffer.readUnsignedByte(); + this.aBoolean200 = buffer.readUnsignedByte() == 1; + var8 = -1; + this.aString_245 = buffer.readString(); + if (0 != (127 & var3 >> 11)) { + var8 = buffer.readUnsignedShort(); + this.anInt266 = buffer.readUnsignedShort(); + if (var8 == 65535) { + var8 = -1; + } + + if (65535 == this.anInt266) { + this.anInt266 = -1; + } + + this.anInt238 = buffer.readUnsignedShort(); + if (this.anInt238 == 65535) { + this.anInt238 = -1; + } + } + + this.aClass3_Sub1_257 = new Class3_Sub1(var3, var8); + this.interfaceScript159 = this.method862(buffer); + this.anObjectArray248 = this.method862(buffer); + this.anObjectArray281 = this.method862(buffer); + this.anObjectArray303 = this.method862(buffer); + this.anObjectArray203 = this.method862(buffer); + this.anObjectArray282 = this.method862(buffer); + this.anObjectArray174 = this.method862(buffer); + this.anObjectArray158 = this.method862(buffer);//.? + this.anObjectArray269 = this.method862(buffer); + this.anObjectArray314 = this.method862(buffer); + this.anObjectArray276 = this.method862(buffer); + this.anObjectArray165 = this.method862(buffer); + this.anObjectArray170 = this.method862(buffer); + this.anObjectArray239 = this.method862(buffer); + this.anObjectArray180 = this.method862(buffer); + this.anObjectArray295 = this.method862(buffer); + this.anObjectArray229 = this.method862(buffer); + this.anObjectArray183 = this.method862(buffer); + this.anObjectArray161 = this.method862(buffer); + this.anObjectArray221 = this.method862(buffer); + this.anIntArray286 = this.method863(buffer); + this.anIntArray175 = this.method863(buffer); + this.anIntArray274 = this.method863(buffer); + this.anIntArray211 = this.method863(buffer); + this.anIntArray185 = this.method863(buffer); + } + + final Font method868(AbstractIndexedSprite[] var1) { + try { + aBoolean6 = false; + if (this.anInt270 == -1) { + return null; + } else { + Font var3 = (Font) Unsorted.aReferenceCache_743.get(this.anInt270); + if (null == var3) { + var3 = Unsorted.method1300(this.anInt270, Class12.spritesIndex_323, Class97.fontsIndex_1378); + if (null == var3) { + aBoolean6 = true; + } else { + var3.method697(var1, null); + Unsorted.aReferenceCache_743.put(var3, this.anInt270); + } + + } + return var3; + } + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "be.A(" + (var1 != null ? "{...}" : "null") + ',' + 0 + ')'); + } + } + + static int method869(int var1) { + try { + return var1 != 16711935 ? Class56.method1186(var1) : -1; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "be.D(" + 116 + ',' + var1 + ')'); + } + } + + public RSInterface() { + this.aString_243 = TextCore.aString_2171; + this.aBoolean163 = false; + this.anInt225 = 0; + this.anInt212 = -1; + this.aBoolean167 = false; + this.anInt266 = -1; + this.verticalResize = 0; + this.anInt252 = 0; + this.aBoolean200 = false; + this.aBoolean215 = false; + this.anInt204 = -1; + this.anInt260 = 1; + this.anInt228 = 0; + this.usingScripts = false; + this.aClass3_Sub1_257 = Class158_Sub1.aClass3_Sub1_2980; + this.anInt253 = 0; + this.text = TextCore.aString_2171; + this.width = 0; + this.anInt247 = 0; + this.aBoolean219 = false; + this.secondModelId = -1; + this.parentId = -1; + this.anInt216 = 1; + this.anInt192 = -1; + this.anInt222 = 0; + this.anInt264 = 0; + this.aString_277 = TextCore.aString_2171; + this.anInt284 = 0; + this.defWidth = 0; + this.anInt285 = 0; + this.anInt234 = -1; + this.aBoolean157 = false; + this.anInt184 = 0; + this.anInt223 = 0; + this.anInt258 = 0; + this.aString_245 = TextCore.aString_2171; + this.anInt237 = 0; + this.aString_172 = TextCore.aString_2171; + this.anInt288 = 0; + this.anInt265 = -1; + this.anInt242 = 0; + this.anInt259 = 0; + this.anInt290 = 0; + this.defHeight = 0; + this.componentHash = -1; + this.anInt296 = -1; + this.horizontalPos = 0; + this.anInt267 = 0; + this.anInt270 = -1; + this.anInt240 = 0; + this.anInt255 = 0; + this.aShort293 = 0; + this.anInt301 = 0; + this.animationId = -1; + this.aString_289 = TextCore.HasOK; + this.anInt280 = 0; + this.anInt271 = 0; + this.anInt292 = -1; + this.anInt189 = 0; + this.anInt287 = 0; + this.aClass11_302 = null; + this.anInt311 = 0; + this.modelType = 1; + this.aBoolean309 = false; + this.horizontalResize = 0; + this.secondModelType = 1; + this.anInt312 = 0; + this.anInt308 = 0; + this.aBoolean195 = false; + this.defX = 0; + this.anInt306 = 0; + this.defY = 0; + this.aBoolean227 = true; + this.anInt283 = 0; + this.anInt213 = 0; + this.anInt218 = 0; + this.anInt318 = 0; + } + +} diff --git a/Client/src/main/java/org/runite/client/RSString.java b/Client/src/main/java/org/runite/client/RSString.java new file mode 100644 index 000000000..d26424a9b --- /dev/null +++ b/Client/src/main/java/org/runite/client/RSString.java @@ -0,0 +1,1082 @@ +package org.runite.client; + +import org.rs09.client.config.GameConfig; +import org.rs09.client.data.HashTable; +import org.rs09.client.util.ArrayUtils; + +import java.applet.Applet; +import java.awt.*; +import java.net.MalformedURLException; +import java.net.URL; +import java.nio.charset.StandardCharsets; +import java.util.Objects; + +public final class RSString implements Interface3 { + + static HashTable interned; + byte[] buffer; + int length; + private boolean mutable = true; + + /** + * @return A RSString consisting of the actual bytes in the provided string. + */ + public static RSString of(String string) { + byte[] bytes = string.getBytes(StandardCharsets.ISO_8859_1); + + RSString rs = new RSString(); + rs.buffer = bytes; + rs.length = 0; + + for (int i = 0; i < bytes.length; ++i) { + if (bytes[i] != 0) { + bytes[rs.length++] = bytes[i]; + } + } + + return rs; + } + + /** + * @return A RSString that is interned and parsed. + */ + public static RSString parse(String string) { + byte[] bytes = Objects.requireNonNull(string).replace("RuneScape", GameConfig.SERVER_NAME).getBytes(); + + int length = bytes.length; + RSString jagString = new RSString(); + jagString.buffer = new byte[length]; + + int i = 0; + while (length > i) { + int ascii = bytes[i++] & 0xFF; + if (ascii <= 45 && ascii >= 40) { + if (length <= i) { + break; + } + + int var7 = bytes[i++] & 0xff; + jagString.buffer[jagString.length++] = (byte) (-48 + var7 + 43 * (-40 + ascii)); + } else if (ascii != 0) { + jagString.buffer[jagString.length++] = (byte) ascii; + } + } + jagString.method1576(); + return jagString.intern(); + } + + static RSString stringCombiner(RSString[] var0) { + if (var0.length >= 2) { + return Class67.method1261(0, var0.length, var0); + } else { + throw new IllegalArgumentException(); + } + } + + static RSString stringAnimator(int var1) { + try { + return Unsorted.method1723((byte) -117, false, var1); + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "jj.C(" + var1 + ')'); + } + } + + public final URL toURL() throws MalformedURLException { + return new URL(new String(this.buffer, 0, this.length)); + } + + public final boolean equalsStringIgnoreCase(RSString other) { + if (other == null) { + return false; + } else if (this.length == other.length) { + + for (int i = 0; i < this.length; ++i) { + byte var5 = this.buffer[i]; + if (var5 >= 65 && var5 <= 90 || var5 >= -64 && var5 <= -34 && var5 != -41) { + var5 = (byte) (var5 + 32); + } + + byte var6 = other.buffer[i]; + if (65 <= var6 && var6 <= 90 || -64 <= var6 && var6 <= -34 && var6 != -41) { + var6 = (byte) (var6 + 32); + } + + if (var6 != var5) { + return false; + } + } + + return true; + } else { + return false; + } + } + + // TODO Refactor to support regular equals method + public final boolean equalsString(RSString other) { + if (other == null) { + return false; + } else if (this == other) { + return true; + } else if (this.length == other.length) { + + byte[] otherBuffer = other.buffer; + byte[] thisBuffer = this.buffer; + + for (int i = 0; i < this.length; ++i) { + if (thisBuffer[i] != otherBuffer[i]) { + return false; + } + } + + return true; + } else { + return false; + } + } + + public final int parseInt(int radix) { + if (radix < 1 || radix > 36) { + radix = 10; + } + + boolean negate = false; + boolean success = false; + int value = 0; + + for (int i = 0; this.length > i; ++i) { + int currentNumber = this.buffer[i] & 0xff; + + if (i == 0) { + if (currentNumber == '-') { + negate = true; + continue; + } + + if (currentNumber == '+') { + continue; + } + } + + if (currentNumber >= '0' && '9' >= currentNumber) { + currentNumber -= '0'; + } else if ('A' <= currentNumber && currentNumber <= 'Z') { + currentNumber -= 55; + } else { + if (currentNumber < 'a' || currentNumber > 'z') { + throw new NumberFormatException("invalid character in number with value: " + currentNumber + " ('" + ((char) currentNumber) + "'). This string: " + toString()); + } + + currentNumber -= 87; + } + + if (currentNumber >= radix) { + throw new NumberFormatException("got radix " + radix + ", but found number value " + currentNumber); + } + + if (negate) { + currentNumber = -currentNumber; + } + + int newValue = currentNumber + value * radix; + if (newValue / radix != value) { + throw new NumberFormatException("integer overflow"); + } + + value = newValue; + success = true; + } + + if (success) { + return value; + } else { + throw new NumberFormatException("failed to parse number"); + } + } + + public final void drawString(Graphics g, int y, int x) { + String string = new String(this.buffer, 0, this.length, StandardCharsets.ISO_8859_1); + g.drawString(string, x, y); + } + + final void append(RSString var1) { + if (this.mutable) { + if (var1.length + this.length > this.buffer.length) { + int var3; + for (var3 = 1; var3 < var1.length + this.length; var3 += var3) { + } + + byte[] var4 = new byte[var3]; + ArrayUtils.arraycopy(this.buffer, 0, var4, 0, this.length); + this.buffer = var4; + } + + ArrayUtils.arraycopy(var1.buffer, 0, this.buffer, this.length, var1.length); + this.length += var1.length; + } else { + throw new IllegalArgumentException(); + } + } + + public final RSString toLowercase() { + RSString lower = new RSString(); + lower.length = this.length; + lower.buffer = new byte[this.length]; + + for (int i = 0; i < this.length; ++i) { + byte ch = this.buffer[i]; + if (65 <= ch && ch <= 90 || ch >= -64 && ch <= -34 && ch != -41) { + ch = (byte) (ch + 32); + } + + lower.buffer[i] = ch; + } + + return lower; + } + + /** + * Returns a copy of this string with proper capitalization. Generally, this returns an all-lower string. Characters + * are changed to uppercase based on the following rules: + * - The character is the first character in the string + * - The character is the first non-whitespace character after a '.', '!' or '?' character + *

+ * Characters may be either lowercase or uppercase if the previous character is a whitespace character. + * + * @return A copy of this string with capitalization based on the rules above. + */ + public final RSString properlyCapitalize() { + byte state = 2; + RSString newString = new RSString(); + newString.length = this.length; + newString.buffer = new byte[this.length]; + + for (int i = 0; i < this.length; ++i) { + byte ch = this.buffer[i]; + if ((ch < 97 || 122 < ch) && (ch < -32 || ch > -2 || ch == -9)) { // if not lowercase chars + if ((ch < 65 || ch > 90) && (ch < -64 || ch > -34 || ch == -41)) { // if not uppercase chars + if (ch != 46 && 33 != ch && ch != 63) { // if not `.`, `!` or `?` + if (32 == ch) { // if ' ' + if (state != 2) { + state = 1; + } + } else { // if not ' ' + state = 1; + } + } else { // if `.`, `!` or `?` + state = 2; + } + } else { // if uppercase char + if (0 == state) { + ch = (byte) (ch + 32); + } + + state = 0; + } + } else { + if (state == 2) { + ch = (byte) (ch - 32); + } + + state = 0; + } + + newString.buffer[i] = ch; + } + + return newString; + } + + public final long hash() { + long hash = 0L; + for (int i = 0; i < this.length; ++i) { + hash = (long) (this.buffer[i] & 0xff) + (hash << 5) - hash; + } + + return hash; + } + + public final int length() { + return this.length; + } + + public final RSString method1542(RSString var2, int var3, int var4) { + if (!this.mutable) { + throw new IllegalArgumentException(); + } else if (0 <= var3 && var3 <= var4 && var2.length >= var4) { + if (this.length + (var4 - var3) > this.buffer.length) { + int var5; + for (var5 = 1; var5 < this.length + var2.length; var5 += var5) { + } + + byte[] var6 = new byte[var5]; + ArrayUtils.arraycopy(this.buffer, 0, var6, 0, this.length); + this.buffer = var6; + } + + ArrayUtils.arraycopy(var2.buffer, var3, this.buffer, this.length, -var3 + var4); + this.length += var4 + -var3; + return this; + } else { + throw new IllegalArgumentException(); + } + } + + final boolean isInteger() { + return this.isInteger(10); + } + + final RSString method1544(boolean var1) { + try { + RSString var2 = new RSString(); + var2.length = this.length; + var2.buffer = new byte[var2.length]; + if (var1) { + for (int var3 = 0; this.length > var3; ++var3) { + var2.buffer[this.length - var3 + -1] = this.buffer[var3]; + } + + return var2; + } else { + return null; + } + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "na.FB(" + var1 + ')'); + } + } + + final RSString longToRSString() { + try { + RSString var2 = new RSString(); + var2.length = this.length; + var2.buffer = new byte[this.length]; + boolean var3 = true; + int var4 = 0; + + for (; var4 < this.length; ++var4) { + byte var5 = this.buffer[var4]; + if (var5 == 95) { + var3 = true; + var2.buffer[var4] = 32; + } else if (97 <= var5 && var5 <= 122 && var3) { + var3 = false; + var2.buffer[var4] = (byte) (-32 + var5); + } else { + var2.buffer[var4] = var5; + var3 = false; + } + } + + return var2; + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "na.G(" + (byte) -50 + ')'); + } + } + + final int method1546(RSString var2) { + int var3 = 0; + int var4 = 0; + int var6 = var2.length; + int var5 = this.length; + int var7 = this.length; + int var8 = var2.length; + int var9 = 0; + int var10 = 0; + + while (var5 != 0 && var6 != 0) { + if (var3 == 156 || var3 == 230) { + var3 = 101; + } else if (140 == var3 || var3 == 198) { + var3 = 69; + } else if (var3 == 223) { + var3 = 115; + } else { + var3 = this.buffer[var9] & 0xFF; + ++var9; + } + + if (Unsorted.method2103(var3, -116)) { + ++var7; + } else { + --var5; + } + + if (var4 == 156 || 230 == var4) { + var4 = 101; + } else if (var4 == 140 || var4 == 198) { + var4 = 69; + } else if (223 == var4) { + var4 = 115; + } else { + var4 = 255 & var2.buffer[var10]; + ++var10; + } + + if (Unsorted.method2103(var4, -86)) { + ++var8; + } else { + --var6; + } + + if (Class158.anIntArray2004[var4] > Class158.anIntArray2004[var3]) { + return -1; + } + + if (Class158.anIntArray2004[var3] > Class158.anIntArray2004[var4]) { + return 1; + } + } + + return var8 <= var7 ? (var7 > var8 ? 1 : 0) : -1; + } + + final URL method1547(URL var1) throws MalformedURLException { + try { + + return new URL(var1, new String(this.buffer, 0, this.length)); + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "na.EB(" + (var1 != null ? "{...}" : "null") + ',' + true + ')'); + } + } + + final RSString method1548(int var2) { + try { + if (var2 > 0 && var2 <= 255) { + RSString var3 = new RSString(); + var3.buffer = new byte[1 + this.length]; + var3.length = this.length + 1; + ArrayUtils.arraycopy(this.buffer, 0, var3.buffer, 0, this.length); + var3.buffer[this.length] = (byte) var2; + return var3; + } else { + throw new IllegalArgumentException("invalid char"); + } + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "na.OA(" + false + ',' + var2 + ')'); + } + } + + final boolean endsWith(RSString var2) { + if (var2.length > this.length) { + return false; + } else { + int var3 = -var2.length + this.length; + + for (int var4 = 0; var4 < var2.length; ++var4) { + if (this.buffer[var3 + var4] != var2.buffer[var4]) { + return false; + } + } + + return true; + } + } + + final int indexOf(RSString var1, int var2) { + try { + return var2 <= 49 ? -20 : this.method1566(var1, 0); + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "na.A(" + (var1 != null ? "{...}" : "null") + ',' + var2 + ')'); + } + } + + public final int parseInt() { + return this.parseInt(10); + } + + final void method1553(int var1) { + try { + if (!this.mutable) { + throw new IllegalArgumentException(); + } else if (var1 < 0) { + throw new IllegalArgumentException(); + } else { + int var3; + if (this.buffer.length < var1) { + for (var3 = 1; var1 > var3; var3 += var3) { + } + + byte[] var4 = new byte[var3]; + ArrayUtils.arraycopy(this.buffer, 0, var4, 0, this.length); + this.buffer = var4; + } + + for (var3 = this.length; var1 > var3; ++var3) { + this.buffer[var3] = 32; + } + + this.length = var1; + } + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "na.RA(" + var1 + ',' + false + ')'); + } + } + + public final String toString() { + if (buffer == null) { + throw new RuntimeException(); + } + return new String(buffer); + } + + final void method1554(Applet var2) throws Throwable { + try { + String var3 = new String(this.buffer, 0, this.length); + Class42.method1057(var2, var3); + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "na.AA(" + true + ',' + (var2 != null ? "{...}" : "null") + ')'); + } + } + + final int method1555(int var1, int var2) { + try { + byte var4 = (byte) var1; + for (int var5 = var2; this.length > var5; ++var5) { + if (this.buffer[var5] == var4) { + return var5; + } + } + + return -1; + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "na.NA(" + var1 + ',' + var2 + ',' + 1536 + ')'); + } + } + + final RSString substring(int start) { + return this.substring(start, this.length, (byte) -74 ^ -74); + } + + // TODO Why is `dstpos` a thing? what good does it serve? + public final RSString substring(int start, int end, int dstpos) { + RSString subs = new RSString(); + subs.length = end - start; + subs.buffer = new byte[end - start]; + ArrayUtils.arraycopy(this.buffer, start, subs.buffer, dstpos, subs.length); + return subs; + } + + final boolean startsWith(RSString other) { + if (other.length > this.length) { + return false; + } + + for (int i = 0; i < other.length; ++i) { + if (other.buffer[i] != this.buffer[i]) { + return false; + } + } + + return true; + } + + public final boolean equals(Object var1) { + try { + if (var1 instanceof RSString) { + return this.equalsString((RSString) var1); + } else { + throw new IllegalArgumentException(); + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "na.equals(" + (var1 != null ? "{...}" : "null") + ')'); + } + } + + final int method1559(RSString var1) { + try { + + int var3; + if (var1.length < this.length) { + var3 = var1.length; + } else { + var3 = this.length; + } + + for (int var4 = 0; var3 > var4; ++var4) { + if ((255 & this.buffer[var4]) < (var1.buffer[var4] & 0xFF)) { + return -1; + } + + if ((this.buffer[var4] & 0xFF) > (var1.buffer[var4] & 0xFF)) { + return 1; + } + } + + if (var1.length > this.length) { + return -1; + } else if (this.length <= var1.length) { + return 0; + } else { + return 1; + } + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "na.QA(" + (var1 != null ? "{...}" : "null") + ',' + -1 + ')'); + } + } + + final RSString method1560(RSString var1, RSString var3) { + try { + int var4 = this.length; + int var5 = var1.length - var3.length; + int var6 = 0; + + while (true) { + int var7 = this.method1566(var3, var6); + if (0 > var7) { + var6 = 0; + RSString var10 = Unsorted.emptyString(var4); + + while (true) { + int var8 = this.method1566(var3, var6); + if (0 > var8) { + while (this.length > var6) { + Objects.requireNonNull(var10).appendCharacter(255 & this.buffer[var6++]); + } + + if (false) { + this.method1567(-5, (byte) -91); + } + + return var10; + } + + while (var6 < var8) { + Objects.requireNonNull(var10).appendCharacter(this.buffer[var6++] & 0xFF); + } + + Objects.requireNonNull(var10).append(var1); + var6 += var3.length; + } + } + + var6 = var7 - -var3.length; + var4 += var5; + } + } catch (RuntimeException var9) { + throw ClientErrorException.clientError(var9, "na.IA(" + (var1 != null ? "{...}" : "null") + ',' + true + ',' + (var3 != null ? "{...}" : "null") + ')'); + } + } + + public final int hashCode() { + try { + return this.method1574(); + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "na.hashCode()"); + } + } + + private boolean isInteger(int radix) { + if (radix < 1 || radix > 36) { + radix = 10; + } + + boolean success = false; + boolean negate = false; + int value = 0; + + for (int i = 0; i < this.length; ++i) { + int current = this.buffer[i] & 0xFF; + if (0 == i) { + if (current == 45) { + negate = true; + continue; + } + + if (current == 43) { + continue; + } + } + + if (current >= 48 && current <= 57) { + current -= 48; + } else if (current >= 65 && current <= 90) { + current -= 55; + } else { + if (97 > current || current > 122) { + return false; + } + + current -= 87; + } + + if (radix <= current) { + return false; + } + + if (negate) { + current = -current; + } + + int newValue = current + radix * value; + if (newValue / radix != value) { + return false; + } + + value = newValue; + success = true; + } + + return success; + } + + final boolean method1562(byte var1, RSString var2) { + try { + if (this.length < var2.length) { + return false; + } else { + if (var1 != -32) { + this.length = 13; + } + + for (int var3 = 0; var2.length > var3; ++var3) { + byte var4 = this.buffer[var3]; + byte var5 = var2.buffer[var3]; + if (var5 >= 65 && var5 <= 90 || -64 <= var5 && -34 >= var5 && -41 != var5) { + var5 = (byte) (var5 + 32); + } + + if (65 <= var4 && var4 <= 90 || var4 >= -64 && -34 >= var4 && var4 != -41) { + var4 = (byte) (var4 + 32); + } + + if (var5 != var4) { + return false; + } + } + + return true; + } + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "na.HB(" + var1 + ',' + (var2 != null ? "{...}" : "null") + ')'); + } + } + + final RSString method1563(int var1) { + try { + if (var1 <= 86) { + this.trim(117); + } + + return this; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "na.K(" + var1 + ')'); + } + } + + final RSString trim(int var1) { + try { + if (var1 != 1) { + Unsorted.method1535(null, null, 23, 68, 126, false, false); + } + + int var2; + for (var2 = 0; var2 < this.length && (0 <= this.buffer[var2] && 32 >= this.buffer[var2] || (255 & this.buffer[var2]) == 160); ++var2) { + } + + int var3; + for (var3 = this.length; var3 > var2 && (this.buffer[var3 - 1] >= 0 && this.buffer[var3 - 1] <= 32 || (255 & this.buffer[var3 + -1]) == 160); --var3) { + } + + if (var2 == 0 && var3 == this.length) { + return this; + } else { + RSString var4 = new RSString(); + var4.length = var3 + -var2; + var4.buffer = new byte[var4.length]; + + if (var4.length >= 0) System.arraycopy(this.buffer, var2, var4.buffer, 0, var4.length); + + return var4; + } + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "na.KA(" + var1 + ')'); + } + } + + final RSString method1565() { + try { + byte var4 = (byte) 47; + RSString var6 = new RSString(); + byte var5 = (byte) 32; + var6.length = this.length; + var6.buffer = new byte[this.length]; + + for (int var7 = 0; var7 < this.length; ++var7) { + byte var8 = this.buffer[var7]; + if (var4 == var8) { + var6.buffer[var7] = var5; + } else { + var6.buffer[var7] = var8; + } + } + + return var6; + } catch (RuntimeException var9) { + throw ClientErrorException.clientError(var9, "na.HA(" + 32 + ',' + 40 + ',' + 47 + ')'); + } + } + + final int method1566(RSString var1, int var2) { + try { + int var4 = var1.length; + if (var2 >= this.length) { + return var4 == 0 ? this.length : -1; + } else { + if (var2 < 0) { + var2 = 0; + } + + if (var4 == 0) { + return var2; + } else { + int var7 = this.length - var4; + byte[] var5 = var1.buffer; + byte var6 = var5[0]; + int var8 = var2; + + while (var7 >= var8) { + if (this.buffer[var8] != var6) { + do { + ++var8; + if (var8 > var7) { + return -1; + } + } while (this.buffer[var8] != var6); + } + + boolean var9 = true; + int var10 = 1 + var8; + int var11 = 1; + + while (true) { + if (var11 < var4) { + if (this.buffer[var10] == var5[var11]) { + ++var10; + ++var11; + continue; + } + + var9 = false; + } + + if (var9) { + return var8; + } + + ++var8; + break; + } + } + + return -1; + } + } + } catch (RuntimeException var12) { + throw ClientErrorException.clientError(var12, "na.CB(" + (var1 != null ? "{...}" : "null") + ',' + var2 + ',' + -1 + ')'); + } + } + + final RSString[] method1567(int var1, byte var2) { + try { + int var3 = 0; + + for (int var4 = 0; var4 < this.length; ++var4) { + if (this.buffer[var4] == var1) { + ++var3; + } + } + + RSString[] var11 = new RSString[1 + var3]; + if (var3 == 0) { + var11[0] = this; + } else { + int var5 = 0; + int var6 = 0; + + for (int var7 = 0; var3 > var7; ++var7) { + int var9; + for (var9 = 0; this.buffer[var9 + var6] != var1; ++var9) { + } + + var11[var5++] = this.substring(var6, var6 - -var9, 0); + var6 += 1 + var9; + } + + var11[var3] = this.substring(var6, this.length, 0); + } + return var11; + } catch (RuntimeException var10) { + throw ClientErrorException.clientError(var10, "na.GA(" + var1 + ',' + var2 + ')'); + } + } + + final byte[] method1568() { + try { + byte[] var2 = new byte[this.length]; + ArrayUtils.arraycopy(this.buffer, 0, var2, 0, this.length); + return var2; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "na.H(" + 0 + ')'); + } + } + + final int charAt(int var1, byte var2) { + try { + return this.buffer[var1] & 0xFF; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "na.SA(" + var1 + ',' + var2 + ')'); + } + } + + public final RSString intern() { + final long hash = this.hash(); + synchronized (RSString.class) { + LinkableRSString linkable; + if (interned == null) { + interned = new HashTable<>(4096); + } else { + for (linkable = interned.get(hash); null != linkable; linkable = interned.nextInBucket()) { + if (this.equalsString(linkable.value)) { + return linkable.value; + } + } + } + + linkable = new LinkableRSString(); + + linkable.value = this; + mutable = false; + interned.put(hash, linkable); + } + return this; + } + + final void appendCharacter(int character) { + if (0 < character && character <= 255) { + if (this.mutable) { + if (this.length == this.buffer.length) { + // TODO Is this really just making a new buffer with the size + 1? Why do we have to loop for that? + int newBufferSize; + for (newBufferSize = 1; this.length >= newBufferSize; newBufferSize += newBufferSize) { + } + + byte[] newBuffer = new byte[newBufferSize]; + ArrayUtils.arraycopy(this.buffer, 0, newBuffer, 0, this.length); + this.buffer = newBuffer; + } + + this.buffer[this.length++] = (byte) character; + } else { + throw new IllegalArgumentException(); + } + } else { + throw new IllegalArgumentException("invalid char:" + character); + } + } + + final RSString getParamValue(Applet applet) { + String string = new String(this.buffer, 0, this.length); + String paramValue = applet.getParameter(string); + return null == paramValue ? null : of(paramValue); + } + + final int method1574() { + try { + int var2 = 0; + + for (int var3 = 0; var3 < this.length; ++var3) { + var2 = (255 & this.buffer[var3]) + -var2 + (var2 << 5); + } + + return var2; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "na.J(" + false + ')'); + } + } + + public final int method1575(FontMetrics var2) { + try { + String var3; + var3 = new String(this.buffer, 0, this.length, StandardCharsets.ISO_8859_1); + + return var2.stringWidth(var3); + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "na.V(" + -21018 + ',' + (var2 != null ? "{...}" : "null") + ')'); + } + } + + final RSString method1576() { + try { + if (this.mutable) { + + if (this.buffer.length != this.length) { + byte[] var2 = new byte[this.length]; + ArrayUtils.arraycopy(this.buffer, 0, var2, 0, this.length); + this.buffer = var2; + } + + return this; + } else { + throw new IllegalArgumentException(); + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "na.PA(" + (byte) 90 + ')'); + } + } + + final Object method1577(Applet var2) throws Throwable { + try { + String var3 = new String(this.buffer, 0, this.length); + /*Object var4 = Class42.method1055(var3, var2); + if (var4 instanceof String) { + byte[] var5 = ((String) var4).getBytes(); + var4 = Class3_Sub13_Sub3.method178(var5, var5.length, 0); + } +*/ + return null; + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "na.JA(" + -1857 + ',' + (var2 != null ? "{...}" : "null") + ')'); + } + } + + public final long toLong() { + long var2 = 0L; + for (int var4 = 0; var4 < this.length && var4 < 12; ++var4) { + byte var5 = this.buffer[var4]; + var2 *= 37L; + if (65 <= var5 && 90 >= var5) { + var2 += -65 + 1 + var5; + } else if (var5 >= 97 && 122 >= var5) { + var2 += -97 + var5 + 1; + } else if (var5 >= 48 && var5 <= 57) { + var2 += -48 + var5 + 27; + } + } + + while (var2 % 37L == 0 && var2 != 0L) { + var2 /= 37L; + } + + return var2; + } + + final RSString method1579() { + try { + RSString var2 = Unsorted.method1052(this.toLong()); + return null == var2 ? TextCore.aString_1760 : var2; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "na.Q(" + -17 + ')'); + } + } + + public final int method1580(byte[] var2, int var3, int var5) { + try { + ArrayUtils.arraycopy(this.buffer, 0, var2, var3, var5); + + return var5; + } catch (RuntimeException var7) { + throw ClientErrorException.clientError(var7, "na.LA(" + true + ',' + (var2 != null ? "{...}" : "null") + ',' + var3 + ',' + 0 + ',' + var5 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/RandomAccessFileWrapper.java b/Client/src/main/java/org/runite/client/RandomAccessFileWrapper.java new file mode 100644 index 000000000..aada186d0 --- /dev/null +++ b/Client/src/main/java/org/runite/client/RandomAccessFileWrapper.java @@ -0,0 +1,84 @@ +package org.runite.client; + +import java.io.EOFException; +import java.io.File; +import java.io.IOException; +import java.io.RandomAccessFile; + +public final class RandomAccessFileWrapper { + + private final long limit; + private final File path; + private RandomAccessFile raf; + private long pos; + + + public final void seek(long pos) throws IOException { + this.raf.seek(pos); + this.pos = pos; + } + + protected void finalize() throws Throwable { + if (this.raf != null) { + System.out.println("Warning! fileondisk " + this.path + " not closed correctly using close(). Auto-closing instead. "); + this.close(); + } + } + + public final void write(byte[] buffer, int length, int offset) throws IOException { + if (this.limit < this.pos + (long) length) { + this.raf.seek(1L + this.limit); + this.raf.write(1); + throw new EOFException(); + } else { + this.raf.write(buffer, offset, length); + this.pos += length; + } + } + + public final int read(byte[] buffer, int offset, int length, int minBytesRead) throws IOException { + int bytesRead = this.raf.read(buffer, offset, length); + if (bytesRead > minBytesRead) { + this.pos += bytesRead; + } + + return bytesRead; + } + + public final void close() throws IOException { + if (this.raf != null) { + this.raf.close(); + this.raf = null; + } + } + + public final long getLength() throws IOException { + return this.raf.length(); + } + + public final File getPath() { + return this.path; + } + + public RandomAccessFileWrapper(File path, String mode, long limit) throws IOException { + if (limit == -1) { + limit = Long.MAX_VALUE; + } + + if (path.length() >= limit) { + path.delete(); + } + + this.raf = new RandomAccessFile(path, mode); + this.path = path; + this.limit = limit; + this.pos = 0L; + int var5 = this.raf.read(); + if (var5 != -1 && !mode.equals("r")) { + this.raf.seek(0L); + this.raf.write(var5); + } + + this.raf.seek(0L); + } +} diff --git a/Client/src/main/java/org/runite/client/RenderAnimationDefinition.java b/Client/src/main/java/org/runite/client/RenderAnimationDefinition.java new file mode 100644 index 000000000..998ecb888 --- /dev/null +++ b/Client/src/main/java/org/runite/client/RenderAnimationDefinition.java @@ -0,0 +1,330 @@ +package org.runite.client; + +import org.rs09.client.data.ReferenceCache; + +final class RenderAnimationDefinition { + + static int[] anIntArray356 = new int[]{1, 0, -1, 0}; + static ReferenceCache aReferenceCache_1955 = new ReferenceCache(64); + int yaw_max_speed = 0; + int[][] equipment_transforms; + int movement_acceleration = -1; + static volatile int anInt362 = 0; + int walk_follow_cw_turn_anim = -1; + int standing_ccw_turn = -1; + int stand_animation = -1; + int yaw_acceleration = 0; + int roll_max_speed = 0; + int pitch_target_angle = 0; + int slow_walk_follow_full_turn_anim = -1; + int run_follow_ccw_turn_anim = -1; + int run_follow_cw_turn_anim = -1; + static RSString aString_378 = null; + int slow_walk_follow_cw_turn_anim = -1; + int hill_height = 0; + int walk_animation = -1; + static byte[][][] aByteArrayArrayArray383; + static int anInt384 = 0; + int run_follow_full_turn_anim = -1; + int roll_acceleration = 0; + int walk_follow_full_turn_anim = -1; + int walk_follow_ccw_turn_anim = -1; + int run_anim = -1; + int hill_width = 0; + static int anInt396; + int slow_walk_anim = -1; + int pitch_max_speed = 0; + int roll_target_angle = 0; + static boolean aBoolean402 = false; + int pitch_acceleration = 0; + int slow_walk_follow_ccw_turn_anim = -1; + int standing_cw_turn = -1; + + final void method899() { + try { + + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "ck.B(" + 96 + ')'); + } + } + + static void method900(Entity var0) { + try { + var0.aBoolean2810 = false; + SequenceDefinition var2; + if (-1 != var0.anInt2764) { + var2 = SequenceDefinition.getAnimationDefinition(var0.anInt2764); + if (null == var2.frames) { + var0.anInt2764 = -1; + } else { + ++var0.anInt2802; + if (var0.anInt2813 < var2.frames.length && var0.anInt2802 > var2.duration[var0.anInt2813]) { + var0.anInt2802 = 1; + ++var0.anInt2813; + ++var0.anInt2793; + Unsorted.method1470(var0.yAxis, var2, var0.xAxis, var0 == Class102.player, var0.anInt2813); + } + + if (var2.frames.length <= var0.anInt2813) { + var0.anInt2813 = 0; + var0.anInt2802 = 0; + Unsorted.method1470(var0.yAxis, var2, var0.xAxis, Class102.player == var0, var0.anInt2813); + } + + var0.anInt2793 = var0.anInt2813 - -1; + if (var2.frames.length <= var0.anInt2793) { + var0.anInt2793 = 0; + } + } + } + + int var6; + if (var0.anInt2842 != -1 && var0.anInt2759 <= Class44.anInt719) { + var6 = GraphicDefinition.getGraphicDefinition(var0.anInt2842).anInt542; + if (var6 == -1) { + var0.anInt2842 = -1; + } else { + SequenceDefinition var3 = SequenceDefinition.getAnimationDefinition(var6); + if (var3.frames == null) { + var0.anInt2842 = -1; + } else { + if (0 > var0.anInt2805) { + var0.anInt2805 = 0; + Unsorted.method1470(var0.yAxis, var3, var0.xAxis, Class102.player == var0, 0); + } + + ++var0.anInt2761; + if (var0.anInt2805 < var3.frames.length && var0.anInt2761 > var3.duration[var0.anInt2805]) { + ++var0.anInt2805; + var0.anInt2761 = 1; + Unsorted.method1470(var0.yAxis, var3, var0.xAxis, Class102.player == var0, var0.anInt2805); + } + + if (var0.anInt2805 >= var3.frames.length) { + var0.anInt2842 = -1; + } + + var0.anInt2826 = var0.anInt2805 - -1; + if (var0.anInt2826 >= var3.frames.length) { + var0.anInt2826 = -1; + } + } + } + } + + if (var0.anInt2771 != -1 && var0.anInt2828 <= 1) { + var2 = SequenceDefinition.getAnimationDefinition(var0.anInt2771); + if (var2.resetWhenWalk == 1 && var0.anInt2811 > 0 && var0.anInt2800 <= Class44.anInt719 && Class44.anInt719 > var0.anInt2790) { + var0.anInt2828 = 1; + return; + } + } + + if (var0.anInt2771 != -1 && var0.anInt2828 == 0) { + var2 = SequenceDefinition.getAnimationDefinition(var0.anInt2771); + if (var2.frames == null) { + var0.anInt2771 = -1; + } else { + ++var0.anInt2760; + if (var2.frames.length > var0.anInt2832 && var0.anInt2760 > var2.duration[var0.anInt2832]) { + var0.anInt2760 = 1; + ++var0.anInt2832; + Unsorted.method1470(var0.yAxis, var2, var0.xAxis, var0 == Class102.player, var0.anInt2832); + } + + if (var2.frames.length <= var0.anInt2832) { + var0.anInt2832 -= var2.anInt1865; + ++var0.anInt2773; + if (var2.maxLoops > var0.anInt2773) { + if (var0.anInt2832 >= 0 && var0.anInt2832 < var2.frames.length) { + Unsorted.method1470(var0.yAxis, var2, var0.xAxis, Class102.player == var0, var0.anInt2832); + } else { + var0.anInt2771 = -1; + } + } else { + var0.anInt2771 = -1; + } + } + + var0.anInt2776 = var0.anInt2832 + 1; + if (var0.anInt2776 >= var2.frames.length) { + var0.anInt2776 -= var2.anInt1865; + if (var2.maxLoops > var0.anInt2773 + 1) { + if (0 > var0.anInt2776 || var0.anInt2776 >= var2.frames.length) { + var0.anInt2776 = -1; + } + } else { + var0.anInt2776 = -1; + } + } + + var0.aBoolean2810 = var2.aBoolean1859; + } + } + + if (0 < var0.anInt2828) { + --var0.anInt2828; + } + + for (var6 = 0; var0.aClass145Array2809.length > var6; ++var6) { + Class145 var7 = var0.aClass145Array2809[var6]; + if (null != var7) { + if (var7.anInt1900 <= 0) { + SequenceDefinition var4 = SequenceDefinition.getAnimationDefinition(var7.animationId); + if (var4.frames == null) { + var0.aClass145Array2809[var6] = null; + } else { + ++var7.anInt1897; + if (var7.anInt1893 < var4.frames.length && var7.anInt1897 > var4.duration[var7.anInt1893]) { + ++var7.anInt1893; + var7.anInt1897 = 1; + Unsorted.method1470(var0.yAxis, var4, var0.xAxis, var0 == Class102.player, var7.anInt1893); + } + + if (var7.anInt1893 >= var4.frames.length) { + ++var7.anInt1894; + var7.anInt1893 -= var4.anInt1865; + if (var4.maxLoops > var7.anInt1894) { + if (var7.anInt1893 >= 0 && var4.frames.length > var7.anInt1893) { + Unsorted.method1470(var0.yAxis, var4, var0.xAxis, Class102.player == var0, var7.anInt1893); + } else { + var0.aClass145Array2809[var6] = null; + } + } else { + var0.aClass145Array2809[var6] = null; + } + } + + var7.anInt1891 = 1 + var7.anInt1893; + if (var4.frames.length <= var7.anInt1891) { + var7.anInt1891 -= var4.anInt1865; + if (1 + var7.anInt1894 < var4.maxLoops) { + if (var7.anInt1891 < 0 || var4.frames.length <= var7.anInt1891) { + var7.anInt1891 = -1; + } + } else { + var7.anInt1891 = -1; + } + } + } + } else { + --var7.anInt1900; + } + } + } + + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "ck.F(" + (var0 != null ? "{...}" : "null") + ',' + -11973 + ')'); + } + } + + final void parse(DataBuffer buffer) { + try { + + while (true) { + int opcode = buffer.readUnsignedByte(); + if (opcode == 0) { + return; + } + + this.parseOpcode(opcode, buffer); + } + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "ck.H(" + -1 + ',' + (buffer != null ? "{...}" : "null") + ')'); + } + } + + private void parseOpcode(int opcode, DataBuffer buffer) { + try { + if (opcode == 1) { + this.stand_animation = buffer.readUnsignedShort(); + this.walk_animation = buffer.readUnsignedShort(); + if (this.walk_animation == 65535) { + this.walk_animation = -1; + } + + if (65535 == this.stand_animation) { + this.stand_animation = -1; + } + } else if (opcode == 2) { + this.slow_walk_anim = buffer.readUnsignedShort(); + } else if (opcode == 3) { + this.slow_walk_follow_full_turn_anim = buffer.readUnsignedShort(); + } else if (4 == opcode) { + this.slow_walk_follow_ccw_turn_anim = buffer.readUnsignedShort(); + } else if (opcode == 5) { + this.slow_walk_follow_cw_turn_anim = buffer.readUnsignedShort(); + } else if (6 == opcode) { + this.run_anim = buffer.readUnsignedShort(); + } else if (7 == opcode) { + this.run_follow_full_turn_anim = buffer.readUnsignedShort(); + } else if (opcode == 8) { + this.run_follow_ccw_turn_anim = buffer.readUnsignedShort(); + } else if (opcode == 9) { + this.run_follow_cw_turn_anim = buffer.readUnsignedShort(); + } else if (opcode == 26) { + this.hill_width = (short) (4 * buffer.readUnsignedByte()); + this.hill_height = (short) (4 * buffer.readUnsignedByte()); + } else if (opcode == 27) { + if (this.equipment_transforms == null) { + this.equipment_transforms = new int[12][]; + } + + int bodyID = buffer.readUnsignedByte(); + this.equipment_transforms[bodyID] = new int[6]; + + for (int type = 0; type < 6; ++type) { + + /* + * 0 -Rotate X + * 1 - Rotate Y + * 2 - Rotate Z + * 3 - Translate X + * 4 - Translate Y + * 5 - Translate Z + */ + + this.equipment_transforms[bodyID][type] = buffer.readSignedShort(); + } + } else if (opcode == 29) { + this.yaw_acceleration = buffer.readUnsignedByte(); + } else if (opcode == 30) { + this.yaw_max_speed = buffer.readUnsignedShort(); + } else if (opcode == 31) { + this.roll_acceleration = buffer.readUnsignedByte(); + } else if (32 == opcode) { + this.roll_max_speed = buffer.readUnsignedShort(); + } else if (33 == opcode) { + this.roll_target_angle = buffer.readSignedShort(); + } else if (34 == opcode) { + this.pitch_acceleration = buffer.readUnsignedByte(); + } else if (opcode == 35) { + this.pitch_max_speed = buffer.readUnsignedShort(); + } else if (opcode == 36) { + this.pitch_target_angle = buffer.readSignedShort(); + } else if (opcode == 37) { + this.movement_acceleration = buffer.readUnsignedByte(); + } else if (opcode == 38) { + this.standing_ccw_turn = buffer.readUnsignedShort(); + } else if (39 == opcode) { + this.standing_cw_turn = buffer.readUnsignedShort(); + } else if (opcode == 40) { + this.walk_follow_full_turn_anim = buffer.readUnsignedShort(); + } else if (41 == opcode) { + this.walk_follow_ccw_turn_anim = buffer.readUnsignedShort(); + } else if (opcode == 42) { + this.walk_follow_cw_turn_anim = buffer.readUnsignedShort(); + } else if (opcode == 43) { + buffer.readUnsignedShort(); + } else if (opcode == 44) { + buffer.readUnsignedShort(); + } else if (opcode == 45) { + buffer.readUnsignedShort(); + } + + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "ck.E(" + opcode + ',' + (byte) -106 + ',' + (buffer != null ? "{...}" : "null") + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/ResourceRequest.java b/Client/src/main/java/org/runite/client/ResourceRequest.java new file mode 100644 index 000000000..d492172d8 --- /dev/null +++ b/Client/src/main/java/org/runite/client/ResourceRequest.java @@ -0,0 +1,15 @@ +package org.runite.client; + +import org.rs09.client.Node; + +abstract class ResourceRequest extends Node { + + boolean priority; + boolean aBoolean3635; + volatile boolean waiting = true; + + abstract int getCompletion(); + + abstract byte[] getData(); + +} diff --git a/Client/src/main/java/org/runite/client/Scenery.java b/Client/src/main/java/org/runite/client/Scenery.java new file mode 100644 index 000000000..2e0d1b5bf --- /dev/null +++ b/Client/src/main/java/org/runite/client/Scenery.java @@ -0,0 +1,965 @@ +package org.runite.client; + +import org.rs09.client.Linkable; +import java.util.Objects; + +final class Scenery extends Linkable { + static LinkedList sceneryList = new LinkedList(); + static int[] anIntArray2386 = new int[]{1, -1, -1, 1}; + + static int anInt2249; + static int anInt2251; + int y; + int plane; + int original_type; + int original_id; + int rotation; + int original_rotation; + int anInt2259 = -1; + int anInt2261 = 0; + int type; + int typemask; + int x; + int object_id; + + + static void initializeScene(int renderDistance, boolean var4) { + Unsorted.width1234 = 104; + TextureOperation17.height3179 = 104; + TextureOperation8.renderDistanceTiles = renderDistance; + Unsorted.aTileDataArrayArrayArray4070 = new TileData[4][Unsorted.width1234][TextureOperation17.height3179]; + Class58.anIntArrayArrayArray914 = new int[4][Unsorted.width1234 + 1][TextureOperation17.height3179 + 1]; + if (HDToolKit.highDetail) { + Client.aClass3_Sub11ArrayArray2199 = new Class3_Sub11[4][]; + } + + if (var4) { + Class166.aTileDataArrayArrayArray2065 = new TileData[1][Unsorted.width1234][TextureOperation17.height3179]; + TextureOperation16.anIntArrayArray3115 = new int[Unsorted.width1234][TextureOperation17.height3179]; + Unsorted.anIntArrayArrayArray3605 = new int[1][Unsorted.width1234 + 1][TextureOperation17.height3179 + 1]; + if (HDToolKit.highDetail) { + TextureOperation32.aClass3_Sub11ArrayArray3346 = new Class3_Sub11[1][]; + } + } else { + Class166.aTileDataArrayArrayArray2065 = null; + TextureOperation16.anIntArrayArray3115 = null; + Unsorted.anIntArrayArrayArray3605 = null; + TextureOperation32.aClass3_Sub11ArrayArray3346 = null; + } + + Class167.method2264(false); + Class3_Sub28_Sub8.aClass113Array3610 = new Class113[500]; + anInt2249 = 0; + Class145.aClass113Array1895 = new Class113[500]; + Class72.anInt1672 = 0; + Class81.anIntArrayArrayArray1142 = new int[4][Unsorted.width1234 + 1][TextureOperation17.height3179 + 1]; + SequenceDefinition.aClass25Array1868 = new Class25[5000]; + Unsorted.anInt3070 = 0; + Unsorted.aClass25Array4060 = new Class25[100]; + Class23.aBooleanArrayArray457 = new boolean[TextureOperation8.renderDistanceTiles + TextureOperation8.renderDistanceTiles + 1][TextureOperation8.renderDistanceTiles + TextureOperation8.renderDistanceTiles + 1]; + Class49.aBooleanArrayArray814 = new boolean[TextureOperation8.renderDistanceTiles + TextureOperation8.renderDistanceTiles + 2][TextureOperation8.renderDistanceTiles + TextureOperation8.renderDistanceTiles + 2]; + Unsorted.possibleHeightmap1774 = new byte[4][Unsorted.width1234][TextureOperation17.height3179]; + } + + static void method1798(int var0, Scenery var1) { + try { + long var2 = 0L; + int var4 = -1; + if (var0 <= 17) { + Class159.anInt1740 = -43; + } + + int var5 = 0; + if (var1.typemask == 0) { + var2 = Scenery.lookupTypemask0(var1.plane, var1.x, var1.y); + } + + int var6 = 0; + if (var1.typemask == 1) { + var2 = Scenery.lookupTypemask1(var1.plane, var1.x, var1.y); + } + + if (var1.typemask == 2) { + var2 = Scenery.lookupTypemask2(var1.plane, var1.x, var1.y); + } + + if (var1.typemask == 3) { + var2 = Scenery.lookupTypeMask3(var1.plane, var1.x, var1.y); + } + + if (var2 != 0L) { + var4 = Integer.MAX_VALUE & (int) (var2 >>> 32); + var6 = (int) var2 >> 20 & 3; + var5 = ((int) var2 & 516214) >> 14; + } + + var1.original_id = var4; + var1.original_type = var5; + var1.original_rotation = var6; + } catch (RuntimeException var7) { + throw ClientErrorException.clientError(var7, "sf.B(" + var0 + ',' + (var1 != null ? "{...}" : "null") + ')'); + } + } + + static long lookupTypemask0(int var0, int var1, int var2) { + TileData var3 = TileData.aTileDataArrayArrayArray2638[var0][var1][var2]; + return var3 != null && var3.aClass70_2234 != null ? var3.aClass70_2234.aLong1048 : 0L; + } + + public static long lookupTypemask1(int z, int x, int y) { + TileData var3 = TileData.aTileDataArrayArrayArray2638[z][x][y]; + return var3 != null && var3.aClass19_2233 != null ? var3.aClass19_2233.aLong428 : 0L; + } + + static long lookupTypemask2(int var0, int var1, int var2) { + TileData var3 = TileData.aTileDataArrayArrayArray2638[var0][var1][var2]; + if (var3 != null) { + for (int var4 = 0; var4 < var3.anInt2223; ++var4) { + Class25 var5 = var3.aClass25Array2221[var4]; + if ((var5.aLong498 >> 29 & 3L) == 2L && var5.anInt483 == var1 && var5.anInt478 == var2) { + return var5.aLong498; + } + } + + } + return 0L; + } + + static long lookupTypeMask3(int var0, int var1, int var2) { + TileData var3 = TileData.aTileDataArrayArrayArray2638[var0][var1][var2]; + return var3 != null && var3.aClass12_2230 != null ? var3.aClass12_2230.aLong328 : 0L; + } + + static void cleanupOldScenery() { + try { + Scenery var1 = (Scenery) Scenery.sceneryList.startIteration(); + for (; var1 != null; var1 = (Scenery) Scenery.sceneryList.nextIteration()) { + if (var1.anInt2259 > 0) { + var1.anInt2259 -= 1; + } + if (var1.anInt2259 != 0) { + if (var1.anInt2261 > 0) { + var1.anInt2261 -= 1; + } + if ((var1.anInt2261 == 0) && (1 <= var1.x) && (1 <= var1.y) && (102 >= var1.x) && (var1.y <= 102) && ((var1.object_id < 0) || (Unsorted.method590((byte) -34, var1.object_id, var1.type)))) { + Scenery.method1048(var1.object_id, var1.x, var1.plane, var1.rotation, var1.y, -65, var1.type, var1.typemask); + var1.anInt2261 = -1; + if ((var1.object_id == var1.original_id) && (var1.original_id == -1)) { + var1.unlink(); + } else if ((var1.original_id == var1.object_id) && (var1.rotation == var1.original_rotation) && (var1.type == var1.original_type)) { + var1.unlink(); + } + } + } else if ((var1.original_id < 0) || (Unsorted.method590((byte) -66, var1.original_id, var1.original_type))) { + Scenery.method1048(var1.original_id, var1.x, var1.plane, var1.original_rotation, var1.y, -71, var1.original_type, var1.typemask); + var1.unlink(); + } + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "ug.A(" + (byte) -82 + ')'); + } + } + + static void method1048(int object_id, int x, int plane, int rotation, int y, int var5, int type, int typemask) { + try { + if (var5 > -15) { + Unsorted.anInt688 = -64; + } + + if (x >= 1 && y >= 1 && 102 >= x && y <= 102) { + int maxPlane; + if (!NPC.isHighDetail(41) && 0 == (2 & Unsorted.sceneryTypeMaskGrid[0][x][y])) { + maxPlane = plane; + if ((8 & Unsorted.sceneryTypeMaskGrid[plane][x][y]) != 0) { + maxPlane = 0; + } + + if (maxPlane != Class140_Sub3.viewportZ) { + return; + } + } + + maxPlane = plane; + if (plane < 3 && (2 & Unsorted.sceneryTypeMaskGrid[1][x][y]) == 2) { + maxPlane = plane + 1; + } + + Scenery.method910(y, x, plane, typemask, maxPlane, AtmosphereParser.aClass91Array1182[plane]); + if (0 <= object_id) { + boolean var9 = KeyboardListener.aBoolean1905; + KeyboardListener.aBoolean1905 = true; + Scenery.method1683(maxPlane, false, plane, false, AtmosphereParser.aClass91Array1182[plane], object_id, type, x, y, rotation); + KeyboardListener.aBoolean1905 = var9; + } + } + + } catch (RuntimeException var10) { + throw ClientErrorException.clientError(var10, "ge.H(" + object_id + ',' + x + ',' + plane + ',' + rotation + ',' + y + ',' + var5 + ',' + type + ',' + typemask + ')'); + } + } + + static void method910(int y, int x, int plane, int typemask, int var5, Class91 var6) { + try { + long var7 = 0L; + if (typemask == 0) { + var7 = Scenery.lookupTypemask0(plane, x, y); + } else if (typemask == 1) { + var7 = Scenery.lookupTypemask1(plane, x, y); + } else if (typemask == 2) { + var7 = Scenery.lookupTypemask2(plane, x, y); + } else if (3 == typemask) { + var7 = Scenery.lookupTypeMask3(plane, x, y); + } + + int var19 = (519128 & (int) var7) >> 14; + int var17 = (int) (var7 >>> 32) & Integer.MAX_VALUE; + ObjectDefinition var12 = ObjectDefinition.getObjectDefinition(var17); + if (var12.method1690()) { + Class140_Sub6.method2020(x, var12, y, plane); + } + + int var18 = ((int) var7 & 4109484) >> 20; + if (var7 != 0) { + GameObject var13 = null; + GameObject var14 = null; + if (0 == typemask) { + Class70 var15 = LinkedList.method1209(plane, x, y); + if (null != var15) { + var13 = var15.aClass140_1049; + var14 = var15.aClass140_1052; + } + + if (var12.ClipType != 0) { + var6.method1485(var18, var12.ProjectileClipped, y, var19, x); + } + } else if (typemask == 1) { + Class19 x1 = Class39.method1037(plane, x, y); + if (x1 != null) { + var13 = x1.aClass140_429; + var14 = x1.aClass140_423; + } + } else if (2 == typemask) { + Class25 x0 = Class163_Sub2.method2217(plane, x, y); + if (null != x0) { + var13 = x0.aClass140_479; + } + + if (var12.ClipType != 0 && var12.SizeX + x < 104 && var12.SizeX + y < 104 && 104 > x + var12.SizeY && y + var12.SizeY < 104) { + var6.method1502(x, var12.SizeX, var12.ProjectileClipped, var18, var12.SizeY, y); + } + } else { + Class12 x2 = Class159.method2193(plane, x, y); + if (x2 != null) { + var13 = x2.object; + } + + if (var12.ClipType == 1) { + var6.method1499(y, x); + } + } + + if (HDToolKit.highDetail && var12.aBoolean1503) { + if (2 == var19) { + if (var13 instanceof Class140_Sub3) { + ((Class140_Sub3) var13).method1960(); + } else { + Scenery.method840(var12, (byte) -76, 0, var18 + 4, 0, var19, x, y, var5); + } + + if (var14 instanceof Class140_Sub3) { + ((Class140_Sub3) var14).method1960(); + } else { + Scenery.method840(var12, (byte) -100, 0, 3 & var18 - -1, 0, var19, x, y, var5); + } + } else if (5 != var19) { + if (var19 == 6) { + if (var13 instanceof Class140_Sub3) { + ((Class140_Sub3) var13).method1960(); + } else { + Scenery.method840(var12, (byte) -28, 8 * Class163_Sub3.anIntArray3007[var18], 4 - -var18, 8 * Scenery.anIntArray2386[var18], 4, x, y, var5); + } + } else if (var19 == 7) { + if (var13 instanceof Class140_Sub3) { + ((Class140_Sub3) var13).method1960(); + } else { + Scenery.method840(var12, (byte) -120, 0, 4 - -(3 & 2 + var18), 0, 4, x, y, var5); + } + } else if (var19 == 8) { + if (var13 instanceof Class140_Sub3) { + ((Class140_Sub3) var13).method1960(); + } else { + Scenery.method840(var12, (byte) -45, Class163_Sub3.anIntArray3007[var18] * 8, var18 + 4, 8 * Scenery.anIntArray2386[var18], 4, x, y, var5); + } + + if (var14 instanceof Class140_Sub3) { + ((Class140_Sub3) var14).method1960(); + } else { + Scenery.method840(var12, (byte) -24, Class163_Sub3.anIntArray3007[var18] * 8, 4 - -(3 & 2 + var18), Scenery.anIntArray2386[var18] * 8, 4, x, y, var5); + } + } else if (11 != var19) { + if (var13 instanceof Class140_Sub3) { + ((Class140_Sub3) var13).method1960(); + } else { + Scenery.method840(var12, (byte) -113, 0, var18, 0, var19, x, y, var5); + } + } else if (var13 instanceof Class140_Sub3) { + ((Class140_Sub3) var13).method1960(); + } else { + Scenery.method840(var12, (byte) -115, 0, 4 + var18, 0, 10, x, y, var5); + } + } else if (var13 instanceof Class140_Sub3) { + ((Class140_Sub3) var13).method1960(); + } else { + Scenery.method840(var12, (byte) -119, Class3_Sub24_Sub3.anIntArray3491[var18] * 8, var18, RenderAnimationDefinition.anIntArray356[var18] * 8, 4, x, y, var5); + } + } + } + + } catch (RuntimeException var16) { + throw ClientErrorException.clientError(var16, "dg.B(" + -96 + ',' + y + ',' + x + ',' + plane + ',' + typemask + ',' + var5 + ',' + (var6 != null ? "{...}" : "null") + ')'); + } + } + + static void method1683(int maxPlane, boolean var1, int plane, boolean var3, Class91 var4, int objectId, int type, int objectX, int objectY, int objectRot) { + try { + plane %= 4; + if (var1 && !NPC.isHighDetail(103) && 0 == (2 & Unsorted.sceneryTypeMaskGrid[0][objectX][objectY])) { + if (0 != (16 & Unsorted.sceneryTypeMaskGrid[plane][objectX][objectY])) { + return; + } + + if (Class140_Sub3.viewportZ != PacketParser.method823(objectY, objectX, (byte) 50 ^ -127, plane)) { + return; + } + } + + if (Class85.anInt1174 > plane) { + Class85.anInt1174 = plane; + } + + ObjectDefinition def = ObjectDefinition.getObjectDefinition(objectId); + if (!HDToolKit.highDetail || !def.aBoolean1530) { + int var12; + int var13; + if (objectRot == 1 || objectRot == 3) { + var13 = def.SizeX; + var12 = def.SizeY; + } else { + var12 = def.SizeX; + var13 = def.SizeY; + } + + int var14; + int var15; + if (objectX + var12 <= 104) { + var14 = objectX + (var12 >> 1); + var15 = objectX - -(1 + var12 >> 1); + } else { + var15 = 1 + objectX; + var14 = objectX; + } + + int var17; + int var16; + if (var13 + objectY > 104) { + var16 = objectY; + var17 = objectY - -1; + } else { + var16 = (var13 >> 1) + objectY; + var17 = objectY + (var13 + 1 >> 1); + } + + int[][] var18 = Class44.anIntArrayArrayArray723[maxPlane]; + int var20 = (var12 << 6) + (objectX << 7); + int var21 = (var13 << 6) + (objectY << 7); + int var19 = var18[var14][var17] + var18[var15][var16] + var18[var14][var16] + var18[var15][var17] >> 2; + int var22 = 0; + int[][] var23; + if (HDToolKit.highDetail && maxPlane != 0) { + var23 = Class44.anIntArrayArrayArray723[0]; + var22 = var19 - (var23[var15][var17] + var23[var15][var16] + var23[var14][var16] + var23[var14][var17] >> 2); + } + + var23 = null; + long var24 = 1073741824 | objectX | objectY << 7 | type << 14 | objectRot << 20; + if (var3) { + var23 = Class58.anIntArrayArrayArray914[0]; + } else if (maxPlane < 3) { + var23 = Class44.anIntArrayArrayArray723[1 + maxPlane]; + } + + if (0 == def.SecondInt || var3) { + var24 |= Long.MIN_VALUE; + } + + if (1 == def.anInt1540) { + var24 |= 4194304L; + } + + if (def.aBoolean1507) { + var24 |= 2147483648L; + } + + if (def.method1690()) { + Class70.method1286(objectY, def, objectRot, null, objectX, plane, null); + } + + boolean var26 = def.aBoolean1503 & !var3; + var24 |= (long) objectId << 32; + Object object; + Class136 var28; + if (22 != type) { + if (10 == type || 11 == type) { + if (def.animationId == -1 && def.ChildrenIds == null && !def.aBoolean1510) { + var28 = def.method1696(type == 11 ? 4 + objectRot : objectRot, var20, var18, 10, var19, var23, var1, null, (byte) -26, var26, var21); + if (HDToolKit.highDetail && var26) { + Class141.method2051(Objects.requireNonNull(var28).aClass109_Sub1_1770, var20, var22, var21); + } + + object = Objects.requireNonNull(var28).aClass140_1777; + } else { + object = new Class140_Sub3(objectId, 10, 11 == type ? 4 - -objectRot : objectRot, maxPlane, objectX, objectY, def.animationId, def.aBoolean1492, null); + } + + if (object != null) { + boolean var37 = method835(plane, objectX, objectY, var19, var12, var13, (GameObject) object, var24); + if (def.aBoolean1525 && var37 && var1) { + int var29 = 15; + if (object instanceof Model) { + var29 = ((Model) object).method1888() / 4; + if (var29 > 30) { + var29 = 30; + } + } + + for (int var30 = 0; var30 <= var12; ++var30) { + for (int var31 = 0; var13 >= var31; ++var31) { + if (var29 > Class67.aByteArrayArrayArray1014[plane][objectX + var30][var31 + objectY]) { + Class67.aByteArrayArrayArray1014[plane][objectX - -var30][objectY - -var31] = (byte) var29; + } + } + } + } + } + + if (0 != def.ClipType && null != var4) { + var4.method1489(objectX, def.ProjectileClipped, (byte) 96, objectY, var12, var13); + } + + } else if (12 <= type) { + if (-1 == def.animationId && null == def.ChildrenIds && !def.aBoolean1510) { + var28 = def.method1696(objectRot, var20, var18, type, var19, var23, var1, null, (byte) -82, var26, var21); + if (HDToolKit.highDetail && var26) { + Class141.method2051(Objects.requireNonNull(var28).aClass109_Sub1_1770, var20, var22, var21); + } + + object = Objects.requireNonNull(var28).aClass140_1777; + } else { + object = new Class140_Sub3(objectId, type, objectRot, maxPlane, objectX, objectY, def.animationId, def.aBoolean1492, null); + } + + method835(plane, objectX, objectY, var19, 1, 1, (GameObject) object, var24); + if (var1 && type <= 17 && type != 13 && plane > 0) { + Class38_Sub1.anIntArrayArrayArray2609[plane][objectX][objectY] = TextureOperation3.bitwiseOr(Class38_Sub1.anIntArrayArrayArray2609[plane][objectX][objectY], 4); + } + + if (def.ClipType != 0 && null != var4) { + var4.method1489(objectX, def.ProjectileClipped, (byte) 73, objectY, var12, var13); + } + + } else if (0 == type) { + if (def.animationId == -1 && null == def.ChildrenIds && !def.aBoolean1510) { + var28 = def.method1696(objectRot, var20, var18, 0, var19, var23, var1, null, (byte) -74, var26, var21); + if (HDToolKit.highDetail && var26) { + Class141.method2051(Objects.requireNonNull(var28).aClass109_Sub1_1770, var20, var22, var21); + } + + object = Objects.requireNonNull(var28).aClass140_1777; + } else { + object = new Class140_Sub3(objectId, 0, objectRot, maxPlane, objectX, objectY, def.animationId, def.aBoolean1492, null); + } + + Class154.method2146(plane, objectX, objectY, var19, (GameObject) object, null, Class159.anIntArray2017[objectRot], 0, var24); + if (var1) { + if (objectRot == 0) { + if (def.aBoolean1525) { + Class67.aByteArrayArrayArray1014[plane][objectX][objectY] = 50; + Class67.aByteArrayArrayArray1014[plane][objectX][1 + objectY] = 50; + } + + if (def.aBoolean1542) { + Class38_Sub1.anIntArrayArrayArray2609[plane][objectX][objectY] = TextureOperation3.bitwiseOr(Class38_Sub1.anIntArrayArrayArray2609[plane][objectX][objectY], 1); + } + } else if (1 == objectRot) { + if (def.aBoolean1525) { + Class67.aByteArrayArrayArray1014[plane][objectX][objectY - -1] = 50; + Class67.aByteArrayArrayArray1014[plane][objectX - -1][objectY + 1] = 50; + } + + if (def.aBoolean1542) { + Class38_Sub1.anIntArrayArrayArray2609[plane][objectX][1 + objectY] = TextureOperation3.bitwiseOr(Class38_Sub1.anIntArrayArrayArray2609[plane][objectX][1 + objectY], 2); + } + } else if (objectRot == 2) { + if (def.aBoolean1525) { + Class67.aByteArrayArrayArray1014[plane][objectX + 1][objectY] = 50; + Class67.aByteArrayArrayArray1014[plane][1 + objectX][1 + objectY] = 50; + } + + if (def.aBoolean1542) { + Class38_Sub1.anIntArrayArrayArray2609[plane][objectX - -1][objectY] = TextureOperation3.bitwiseOr(Class38_Sub1.anIntArrayArrayArray2609[plane][objectX - -1][objectY], 1); + } + } else if (objectRot == 3) { + if (def.aBoolean1525) { + Class67.aByteArrayArrayArray1014[plane][objectX][objectY] = 50; + Class67.aByteArrayArrayArray1014[plane][1 + objectX][objectY] = 50; + } + + if (def.aBoolean1542) { + Class38_Sub1.anIntArrayArrayArray2609[plane][objectX][objectY] = TextureOperation3.bitwiseOr(Class38_Sub1.anIntArrayArrayArray2609[plane][objectX][objectY], 2); + } + } + } + + if (0 != def.ClipType && var4 != null) { + var4.method1486(objectRot, type, def.ProjectileClipped, objectY, objectX); + } + + if (def.anInt1528 != 16) { + PositionedGraphicObject.method1956(plane, objectX, objectY, def.anInt1528); + } + + } else if (type == 1) { + if (-1 == def.animationId && def.ChildrenIds == null && !def.aBoolean1510) { + var28 = def.method1696(objectRot, var20, var18, 1, var19, var23, var1, null, (byte) -83, var26, var21); + if (HDToolKit.highDetail && var26) { + Class141.method2051(Objects.requireNonNull(var28).aClass109_Sub1_1770, var20, var22, var21); + } + + object = Objects.requireNonNull(var28).aClass140_1777; + } else { + object = new Class140_Sub3(objectId, 1, objectRot, maxPlane, objectX, objectY, def.animationId, def.aBoolean1492, null); + } + + Class154.method2146(plane, objectX, objectY, var19, (GameObject) object, null, Class40.anIntArray675[objectRot], 0, var24); + if (def.aBoolean1525 && var1) { + if (0 == objectRot) { + Class67.aByteArrayArrayArray1014[plane][objectX][objectY + 1] = 50; + } else if (objectRot == 1) { + Class67.aByteArrayArrayArray1014[plane][objectX - -1][1 + objectY] = 50; + } else if (objectRot == 2) { + Class67.aByteArrayArrayArray1014[plane][1 + objectX][objectY] = 50; + } else if (3 == objectRot) { + Class67.aByteArrayArrayArray1014[plane][objectX][objectY] = 50; + } + } + + if (def.ClipType != 0 && null != var4) { + var4.method1486(objectRot, type, def.ProjectileClipped, objectY, objectX); + } + + } else { + int var43; + if (type == 2) { + var43 = 1 + objectRot & 3; + Object var38; + Object var42; + if (def.animationId == -1 && def.ChildrenIds == null && !def.aBoolean1510) { + Class136 var45 = def.method1696(objectRot + 4, var20, var18, 2, var19, var23, var1, null, (byte) -108, var26, var21); + if (HDToolKit.highDetail && var26) { + Class141.method2051(Objects.requireNonNull(var45).aClass109_Sub1_1770, var20, var22, var21); + } + + var42 = Objects.requireNonNull(var45).aClass140_1777; + var45 = def.method1696(var43, var20, var18, 2, var19, var23, var1, null, (byte) -69, var26, var21); + if (HDToolKit.highDetail && var26) { + Class141.method2051(Objects.requireNonNull(var45).aClass109_Sub1_1770, var20, var22, var21); + } + + var38 = Objects.requireNonNull(var45).aClass140_1777; + } else { + var42 = new Class140_Sub3(objectId, 2, 4 + objectRot, maxPlane, objectX, objectY, def.animationId, def.aBoolean1492, null); + var38 = new Class140_Sub3(objectId, 2, var43, maxPlane, objectX, objectY, def.animationId, def.aBoolean1492, null); + } + + Class154.method2146(plane, objectX, objectY, var19, (GameObject) var42, (GameObject) var38, Class159.anIntArray2017[objectRot], Class159.anIntArray2017[var43], var24); + if (def.aBoolean1542 && var1) { + if (objectRot == 0) { + Class38_Sub1.anIntArrayArrayArray2609[plane][objectX][objectY] = TextureOperation3.bitwiseOr(Class38_Sub1.anIntArrayArrayArray2609[plane][objectX][objectY], 1); + Class38_Sub1.anIntArrayArrayArray2609[plane][objectX][1 + objectY] = TextureOperation3.bitwiseOr(Class38_Sub1.anIntArrayArrayArray2609[plane][objectX][1 + objectY], 2); + } else if (objectRot == 1) { + Class38_Sub1.anIntArrayArrayArray2609[plane][objectX][objectY - -1] = TextureOperation3.bitwiseOr(Class38_Sub1.anIntArrayArrayArray2609[plane][objectX][objectY - -1], 2); + Class38_Sub1.anIntArrayArrayArray2609[plane][objectX - -1][objectY] = TextureOperation3.bitwiseOr(Class38_Sub1.anIntArrayArrayArray2609[plane][objectX - -1][objectY], 1); + } else if (objectRot == 2) { + Class38_Sub1.anIntArrayArrayArray2609[plane][1 + objectX][objectY] = TextureOperation3.bitwiseOr(Class38_Sub1.anIntArrayArrayArray2609[plane][1 + objectX][objectY], 1); + Class38_Sub1.anIntArrayArrayArray2609[plane][objectX][objectY] = TextureOperation3.bitwiseOr(Class38_Sub1.anIntArrayArrayArray2609[plane][objectX][objectY], 2); + } else if (objectRot == 3) { + Class38_Sub1.anIntArrayArrayArray2609[plane][objectX][objectY] = TextureOperation3.bitwiseOr(Class38_Sub1.anIntArrayArrayArray2609[plane][objectX][objectY], 2); + Class38_Sub1.anIntArrayArrayArray2609[plane][objectX][objectY] = TextureOperation3.bitwiseOr(Class38_Sub1.anIntArrayArrayArray2609[plane][objectX][objectY], 1); + } + } + + if (def.ClipType != 0 && var4 != null) { + var4.method1486(objectRot, type, def.ProjectileClipped, objectY, objectX); + } + + if (def.anInt1528 != 16) { + PositionedGraphicObject.method1956(plane, objectX, objectY, def.anInt1528); + } + + } else if (type == 3) { + if (def.animationId == -1 && null == def.ChildrenIds && !def.aBoolean1510) { + var28 = def.method1696(objectRot, var20, var18, 3, var19, var23, var1, null, (byte) -54, var26, var21); + if (HDToolKit.highDetail && var26) { + Class141.method2051(Objects.requireNonNull(var28).aClass109_Sub1_1770, var20, var22, var21); + } + + object = Objects.requireNonNull(var28).aClass140_1777; + } else { + object = new Class140_Sub3(objectId, 3, objectRot, maxPlane, objectX, objectY, def.animationId, def.aBoolean1492, null); + } + + Class154.method2146(plane, objectX, objectY, var19, (GameObject) object, null, Class40.anIntArray675[objectRot], 0, var24); + if (def.aBoolean1525 && var1) { + if (0 == objectRot) { + Class67.aByteArrayArrayArray1014[plane][objectX][objectY + 1] = 50; + } else if (objectRot == 1) { + Class67.aByteArrayArrayArray1014[plane][1 + objectX][objectY + 1] = 50; + } else if (objectRot == 2) { + Class67.aByteArrayArrayArray1014[plane][1 + objectX][objectY] = 50; + } else if (objectRot == 3) { + Class67.aByteArrayArrayArray1014[plane][objectX][objectY] = 50; + } + } + + if (0 != def.ClipType && var4 != null) { + var4.method1486(objectRot, type, def.ProjectileClipped, objectY, objectX); + } + + } else if (type == 9) { + if (def.animationId == -1 && def.ChildrenIds == null && !def.aBoolean1510) { + var28 = def.method1696(objectRot, var20, var18, type, var19, var23, var1, null, (byte) -30, var26, var21); + if (HDToolKit.highDetail && var26) { + Class141.method2051(Objects.requireNonNull(var28).aClass109_Sub1_1770, var20, var22, var21); + } + + object = Objects.requireNonNull(var28).aClass140_1777; + } else { + object = new Class140_Sub3(objectId, type, objectRot, maxPlane, objectX, objectY, def.animationId, def.aBoolean1492, null); + } + + method835(plane, objectX, objectY, var19, 1, 1, (GameObject) object, var24); + if (def.ClipType != 0 && var4 != null) { + var4.method1489(objectX, def.ProjectileClipped, (byte) 127, objectY, var12, var13); + } + + if (def.anInt1528 != 16) { + PositionedGraphicObject.method1956(plane, objectX, objectY, def.anInt1528); + } + + } else if (4 == type) { + if (def.animationId == -1 && null == def.ChildrenIds && !def.aBoolean1510) { + var28 = def.method1696(objectRot, var20, var18, 4, var19, var23, var1, null, (byte) -103, var26, var21); + if (HDToolKit.highDetail && var26) { + Class141.method2051(Objects.requireNonNull(var28).aClass109_Sub1_1770, var20, var22, var21); + } + + object = Objects.requireNonNull(var28).aClass140_1777; + } else { + object = new Class140_Sub3(objectId, 4, objectRot, maxPlane, objectX, objectY, def.animationId, def.aBoolean1492, null); + } + + Class3_Sub28_Sub8.method577(plane, objectX, objectY, var19, (GameObject) object, null, Class159.anIntArray2017[objectRot], 0, 0, 0, var24); + } else { + Object var39; + Class136 var47; + long var44; + if (type == 5) { + var43 = 16; + var44 = Scenery.lookupTypemask0(plane, objectX, objectY); + if (var44 != 0) { + var43 = ObjectDefinition.getObjectDefinition(Integer.MAX_VALUE & (int) (var44 >>> 32)).anInt1528; + } + + if (def.animationId == -1 && null == def.ChildrenIds && !def.aBoolean1510) { + var47 = def.method1696(objectRot, var20, var18, 4, var19, var23, var1, null, (byte) -125, var26, var21); + if (HDToolKit.highDetail && var26) { + Class141.method2051(Objects.requireNonNull(var47).aClass109_Sub1_1770, var20 + -(RenderAnimationDefinition.anIntArray356[objectRot] * 8), var22, -(Class3_Sub24_Sub3.anIntArray3491[objectRot] * 8) + var21); + } + + var39 = Objects.requireNonNull(var47).aClass140_1777; + } else { + var39 = new Class140_Sub3(objectId, 4, objectRot, maxPlane, objectX, objectY, def.animationId, def.aBoolean1492, null); + } + + Class3_Sub28_Sub8.method577(plane, objectX, objectY, var19, (GameObject) var39, null, Class159.anIntArray2017[objectRot], 0, var43 * RenderAnimationDefinition.anIntArray356[objectRot], Class3_Sub24_Sub3.anIntArray3491[objectRot] * var43, var24); + } else if (type == 6) { + var43 = 8; + var44 = Scenery.lookupTypemask0(plane, objectX, objectY); + if (var44 != 0) { + var43 = ObjectDefinition.getObjectDefinition(Integer.MAX_VALUE & (int) (var44 >>> 32)).anInt1528 / 2; + } + + if (def.animationId == -1 && def.ChildrenIds == null && !def.aBoolean1510) { + var47 = def.method1696(objectRot + 4, var20, var18, 4, var19, var23, var1, null, (byte) -65, var26, var21); + if (HDToolKit.highDetail && var26) { + Class141.method2051(Objects.requireNonNull(var47).aClass109_Sub1_1770, -(8 * anIntArray2386[objectRot]) + var20, var22, -(8 * Class163_Sub3.anIntArray3007[objectRot]) + var21); + } + + var39 = Objects.requireNonNull(var47).aClass140_1777; + } else { + var39 = new Class140_Sub3(objectId, 4, 4 + objectRot, maxPlane, objectX, objectY, def.animationId, def.aBoolean1492, null); + } + + Class3_Sub28_Sub8.method577(plane, objectX, objectY, var19, (GameObject) var39, null, 256, objectRot, var43 * anIntArray2386[objectRot], var43 * Class163_Sub3.anIntArray3007[objectRot], var24); + } else if (7 == type) { + int var40 = 3 & objectRot - -2; + if (def.animationId == -1 && def.ChildrenIds == null && !def.aBoolean1510) { + Class136 var41 = def.method1696(var40 - -4, var20, var18, 4, var19, var23, var1, null, (byte) -39, var26, var21); + if (HDToolKit.highDetail && var26) { + Class141.method2051(Objects.requireNonNull(var41).aClass109_Sub1_1770, var20, var22, var21); + } + + object = Objects.requireNonNull(var41).aClass140_1777; + } else { + object = new Class140_Sub3(objectId, 4, var40 + 4, maxPlane, objectX, objectY, def.animationId, def.aBoolean1492, null); + } + + Class3_Sub28_Sub8.method577(plane, objectX, objectY, var19, (GameObject) object, null, 256, var40, 0, 0, var24); + } else if (type == 8) { + var43 = 8; + var44 = Scenery.lookupTypemask0(plane, objectX, objectY); + if (var44 != 0) { + var43 = ObjectDefinition.getObjectDefinition(Integer.MAX_VALUE & (int) (var44 >>> 32)).anInt1528 / 2; + } + + int var32 = objectRot + 2 & 3; + Object var46; + if (-1 == def.animationId && null == def.ChildrenIds && !def.aBoolean1510) { + int var34 = 8 * Class163_Sub3.anIntArray3007[objectRot]; + int var33 = anIntArray2386[objectRot] * 8; + Class136 var35 = def.method1696(4 + objectRot, var20, var18, 4, var19, var23, var1, null, (byte) -25, var26, var21); + if (HDToolKit.highDetail && var26) { + Class141.method2051(Objects.requireNonNull(var35).aClass109_Sub1_1770, var20 + -var33, var22, -var34 + var21); + } + + var39 = Objects.requireNonNull(var35).aClass140_1777; + var35 = def.method1696(var32 - -4, var20, var18, 4, var19, var23, var1, null, (byte) -101, var26, var21); + if (HDToolKit.highDetail && var26) { + Class141.method2051(Objects.requireNonNull(var35).aClass109_Sub1_1770, var20 - var33, var22, -var34 + var21); + } + + var46 = Objects.requireNonNull(var35).aClass140_1777; + } else { + var39 = new Class140_Sub3(objectId, 4, 4 + objectRot, maxPlane, objectX, objectY, def.animationId, def.aBoolean1492, null); + var46 = new Class140_Sub3(objectId, 4, var32 + 4, maxPlane, objectX, objectY, def.animationId, def.aBoolean1492, null); + } + + Class3_Sub28_Sub8.method577(plane, objectX, objectY, var19, (GameObject) var39, (GameObject) var46, 256, objectRot, var43 * anIntArray2386[objectRot], Class163_Sub3.anIntArray3007[objectRot] * var43, var24); + } + } + } + } else if (KeyboardListener.aBoolean1905 || def.SecondInt != 0 || def.ClipType == 1 || def.aBoolean1483) { + if (def.animationId == -1 && def.ChildrenIds == null && !def.aBoolean1510) { + var28 = def.method1696(objectRot, var20, var18, 22, var19, var23, var1, null, (byte) -126, var26, var21); + if (HDToolKit.highDetail && var26) { + Class141.method2051(Objects.requireNonNull(var28).aClass109_Sub1_1770, var20, var22, var21); + } + + object = Objects.requireNonNull(var28).aClass140_1777; + } else { + object = new Class140_Sub3(objectId, 22, objectRot, maxPlane, objectX, objectY, def.animationId, def.aBoolean1492, null); + } + TextureOperation39.method276(plane, objectX, objectY, var19, (GameObject) object, var24, def.aBoolean1502); + if (def.ClipType == 1 && null != var4) { + var4.method1503(objectX, objectY); + } + + } + } + } catch (RuntimeException var36) { + throw ClientErrorException.clientError(var36, "p.B(" + maxPlane + ',' + var1 + ',' + plane + ',' + var3 + ',' + (var4 != null ? "{...}" : "null") + ',' + objectId + ',' + type + ',' + objectX + ',' + (byte) 50 + ',' + objectY + ',' + objectRot + ')'); + } + } + + static boolean method835(int var0, int var1, int var2, int var3, int var4, int var5, GameObject var6, long var8) { + if (var6 == null) { + return true; + } else { + int var10 = var1 * 128 + 64 * var4; + int var11 = var2 * 128 + 64 * var5; + return Scenery.method1189(var0, var1, var2, var4, var5, var10, var11, var3, var6, 0, false, var8); + } + } + + static boolean method1189(int var0, int var1, int var2, int var3, int var4, int var5, int var6, int var7, GameObject var8, int var9, boolean var10, long var11) { + boolean var13 = Class44.anIntArrayArrayArray723 == Unsorted.anIntArrayArrayArray3605; + int var14 = 0; + + int var16; + for (int var15 = var1; var15 < var1 + var3; ++var15) { + for (var16 = var2; var16 < var2 + var4; ++var16) { + if (var15 < 0 || var16 < 0 || var15 >= Unsorted.width1234 || var16 >= TextureOperation17.height3179) { + return false; + } + + TileData var17 = TileData.aTileDataArrayArrayArray2638[var0][var15][var16]; + if (var17 != null && var17.anInt2223 >= 5) {//@splinter + return false; + } + } + } + + Class25 var20 = new Class25(); + var20.aLong498 = var11; + var20.anInt493 = var0; + var20.anInt482 = var5; + var20.anInt484 = var6; + var20.anInt489 = var7; + var20.aClass140_479 = var8; + var20.anInt496 = var9; + var20.anInt483 = var1; + var20.anInt478 = var2; + var20.anInt495 = var1 + var3 - 1; + var20.anInt481 = var2 + var4 - 1; + + int var21; + for (var16 = var1; var16 < var1 + var3; ++var16) { + for (var21 = var2; var21 < var2 + var4; ++var21) { + int var18 = 0; + if (var16 > var1) { + ++var18; + } + + if (var16 < var1 + var3 - 1) { + var18 += 4; + } + + if (var21 > var2) { + var18 += 8; + } + + if (var21 < var2 + var4 - 1) { + var18 += 2; + } + + for (int var19 = var0; var19 >= 0; --var19) { + if (TileData.aTileDataArrayArrayArray2638[var19][var16][var21] == null) { + TileData.aTileDataArrayArrayArray2638[var19][var16][var21] = new TileData(var19, var16, var21); + } + } + + TileData var22 = TileData.aTileDataArrayArrayArray2638[var0][var16][var21]; + var22.aClass25Array2221[var22.anInt2223] = var20; + var22.anIntArray2237[var22.anInt2223] = var18; + var22.anInt2228 |= var18; + ++var22.anInt2223; + if (var13 && TextureOperation16.anIntArrayArray3115[var16][var21] != 0) { + var14 = TextureOperation16.anIntArrayArray3115[var16][var21]; + } + } + } + + if (var13 && var14 != 0) { + for (var16 = var1; var16 < var1 + var3; ++var16) { + for (var21 = var2; var21 < var2 + var4; ++var21) { + if (TextureOperation16.anIntArrayArray3115[var16][var21] == 0) { + TextureOperation16.anIntArrayArray3115[var16][var21] = var14; + } + } + } + } + + if (var10) { + SequenceDefinition.aClass25Array1868[Unsorted.anInt3070++] = var20; + } + + return true; + } + + static void method840(ObjectDefinition var0, byte var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8) { + try { + int var9 = 3 & var3; + if (var1 >= -1) { + TextCore.aString_106 = null; + } + + int var10; + int var11; + if (var9 == 1 || var9 == 3) { + var10 = var0.SizeY; + var11 = var0.SizeX; + } else { + var11 = var0.SizeY; + var10 = var0.SizeX; + } + + int var14; + int var15; + if (var7 - -var11 > 104) { + var15 = 1 + var7; + var14 = var7; + } else { + var14 = var7 - -(var11 >> 1); + var15 = var7 - -(1 + var11 >> 1); + } + + int var16 = (var6 << 7) - -(var10 << 6); + int var17 = (var7 << 7) + (var11 << 6); + int var12; + int var13; + if (104 < var6 - -var10) { + var12 = var6; + var13 = var6 + 1; + } else { + var12 = var6 + (var10 >> 1); + var13 = (var10 - -1 >> 1) + var6; + } + + int[][] var18 = Class44.anIntArrayArrayArray723[var8]; + int var20 = 0; + int var19 = var18[var12][var15] + var18[var12][var14] + var18[var13][var14] + var18[var13][var15] >> 2; + int[][] var21; + if (var8 != 0) { + var21 = Class44.anIntArrayArrayArray723[0]; + var20 = -(var21[var12][var15] + var21[var13][var14] + (var21[var12][var14] - -var21[var13][var15]) >> 2) + var19; + } + + var21 = null; + if (3 > var8) { + var21 = Class44.anIntArrayArrayArray723[1 + var8]; + } + + Class136 var22 = var0.method1696(var3, var16, var18, var5, var19, var21, false, null, (byte) -69, true, var17); + Class141.method2047(Objects.requireNonNull(var22).aClass109_Sub1_1770, -var4 + var16, var20, var17 + -var2); + } catch (RuntimeException var23) { + throw ClientErrorException.clientError(var23, "al.K(" + (var0 != null ? "{...}" : "null") + ',' + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + var5 + ',' + var6 + ',' + var7 + ',' + var8 + ')'); + } + } + + static int sceneryPositionHash(int plane, int var1, int tileX, int tileY) { + try { + if (null == Class44.anIntArrayArrayArray723) { + return 0; + } else { + int x = tileX >> 7; + int y = tileY >> 7; + if (x >= 0 && 0 <= y && x <= 103 && 103 >= y) { + int var7 = 127 & tileX; + int var8 = tileY & 127; + int z = plane; + if (3 > plane && (2 & Unsorted.sceneryTypeMaskGrid[1][x][y]) == 2) { + z = plane + 1; + } + + int var10 = var7 * Class44.anIntArrayArrayArray723[z][var1 + x][1 + y] + Class44.anIntArrayArrayArray723[z][x][y + 1] * (-var7 + 128) >> 7; + int var9 = var7 * Class44.anIntArrayArrayArray723[z][x + 1][y] + (-var7 + 128) * Class44.anIntArrayArrayArray723[z][x][y] >> 7; + return var8 * var10 + (128 - var8) * var9 >> 7; + } else { + return 0; + } + } + } catch (RuntimeException var11) { + throw ClientErrorException.clientError(var11, "ql.B(" + plane + ',' + var1 + ',' + tileX + ',' + tileY + ')'); + } + } +} diff --git a/Client/src/main/java/org/runite/client/Sensor.java b/Client/src/main/java/org/runite/client/Sensor.java new file mode 100644 index 000000000..7830bb1f9 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Sensor.java @@ -0,0 +1,49 @@ +package org.runite.client; + +import java.awt.*; +import java.awt.image.BufferedImage; + +class Sensor { + + private final Robot robot = new Robot(); + private Component component; + + public Sensor() throws Exception { + } + + public void setCursor(Component component, Point hotSpot, int width, int height, int[] rgb) { + if (rgb == null) { + component.setCursor(null); + } else { + BufferedImage image = new BufferedImage(width, height, 2); + image.setRGB(0, 0, width, height, rgb, 0, width); + component.setCursor(component.getToolkit().createCustomCursor(image, hotSpot, null)); + } + } + + public void moveMouse(int x, int y) { + this.robot.mouseMove(x, y); + } + + // TODO Is unsetComponent the right name? + public void updateComponent(Component component, boolean unsetComponent) { + if (unsetComponent) { + component = null; + } else if (component == null) { + throw new NullPointerException(); + } + + if (component != this.component) { + if (this.component != null) { + this.component.setCursor(null); + this.component = null; + } + + if (component != null) { + component.setCursor(component.getToolkit().createCustomCursor(new BufferedImage(1, 1, 2), new Point(0, 0), null)); + this.component = component; + } + } + + } +} diff --git a/Client/src/main/java/org/runite/client/SequenceDefinition.java b/Client/src/main/java/org/runite/client/SequenceDefinition.java new file mode 100644 index 000000000..9fd9cc51b --- /dev/null +++ b/Client/src/main/java/org/runite/client/SequenceDefinition.java @@ -0,0 +1,559 @@ +package org.runite.client; + + +import org.rs09.client.data.HashTable; + +public final class SequenceDefinition { + + int delayType = 2; + boolean aBoolean1846 = false; + static volatile long aLong1847 = 0L; + boolean aBoolean1848 = false; + public int rightHandItem = -1; + int priority = -1; + public int[] frames; + public static CacheIndex spritesIndex_1852; + public int leftHandItem = -1; + boolean[] aBooleanArray1855; + public static AbstractIndexedSprite aClass109_1856; + int forcedPriority = 5; + boolean aBoolean1859 = false; + static CacheIndex animationReferenceIndex; + int maxLoops = 99; + static int anInt1862 = 0; + int animId; + int anInt1865 = -1; + int resetWhenWalk = -1; + int[][] sounds; + static Class25[] aClass25Array1868; + int[] duration; + public int[] baseIds; + static int[] anIntArray1871 = new int[2]; + boolean aBoolean1872 = false; + + public static SequenceDefinition getAnimationDefinition(int var0) { + try { + + SequenceDefinition var2 = (SequenceDefinition) Texture.aReferenceCache_1146.get(var0); + if (var2 == null) { + byte[] var3 = animationReferenceIndex.getFile(Class129.method1765(var0), Class67.method1262(117, var0)); + var2 = new SequenceDefinition(); + var2.animId = var0; + if (var3 != null) { + var2.parseDefinitions(new DataBuffer(var3)); + } + + var2.method2058(); + Texture.aReferenceCache_1146.put(var2, var0); + } + return var2; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "client.D(" + var0 + ',' + (byte) -20 + ')'); + } + } + + + final void parseDefinitions(DataBuffer var1) { + try { + // System.out.print("Animation " + animId + " - parsed ["); + while(true) { + int var3 = var1.readUnsignedByte(); + if(var3 == 0) { + //System.out.println("]."); + return; + } + //System.out.print(var3 + ", "); + this.parseOpcode(var3, var1); + } + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "tk.I(" + (var1 != null?"{...}":"null") + ',' + (byte) -102 + ')'); + } + } + + final Model method2054(int var2, int var3, Model var4, int var5, int var6) { + try { + int var7 = this.duration[var2]; + var2 = this.frames[var2]; + Class3_Sub28_Sub5 var8 = Class3_Sub9.method133(var2 >> 16); + var2 &= 65535; + if(var8 == null) { + return var4.method1890(true, true, true); + } else { + var5 &= 3; + Class3_Sub28_Sub5 var9 = null; + + if((this.aBoolean1846 || ClientCommands.tweeningEnabled) && var3 != -1 && this.frames.length > var3) { + var3 = this.frames[var3]; + var9 = Class3_Sub9.method133(var3 >> 16); + var3 &= 65535; + } + + Model var10; + if(var9 == null) { + var10 = var4.method1890(!var8.method559(var2), !var8.method561(var2, (byte)121), !this.aBoolean1848); + } else { + var10 = var4.method1890(!var8.method559(var2) & !var9.method559(var3), !var8.method561(var2, (byte)125) & !var9.method561(var3, (byte)118), !this.aBoolean1848); + } + + if(HDToolKit.highDetail && this.aBoolean1848) { + if(var5 == 1) { + ((Class140_Sub1_Sub1)var10).method1902(); + } else if (2 == var5) { + ((Class140_Sub1_Sub1) var10).method1911(); + } else if (var5 == 3) { + ((Class140_Sub1_Sub1) var10).method1925(); + } + } else if(var5 == 1) { + var10.method1900(); + } else if (2 == var5) { + var10.method1874(); + } else if (3 == var5) { + var10.method1885(); + } + + var10.method1880(var8, var2, var9, var3, -1 + var6, var7, this.aBoolean1848); + if(HDToolKit.highDetail && this.aBoolean1848) { + if(1 == var5) { + ((Class140_Sub1_Sub1)var10).method1925(); + } else if (var5 == 2) { + ((Class140_Sub1_Sub1) var10).method1911(); + } else if (var5 == 3) { + ((Class140_Sub1_Sub1) var10).method1902(); + } + } else if(var5 == 1) { + var10.method1885(); + } else if (var5 == 2) { + var10.method1874(); + } else if (var5 == 3) { + var10.method1900(); + } + + return var10; + } + } catch (RuntimeException var11) { + throw ClientErrorException.clientError(var11, "tk.D(" + 19749 + ',' + var2 + ',' + var3 + ',' + (var4 != null?"{...}":"null") + ',' + var5 + ',' + var6 + ')'); + } + } + + final Model method2055(Model var1, byte var2, int var3, int var4, int var5) { + try { + int var7 = this.frames[var5]; + int var6 = this.duration[var5]; + Class3_Sub28_Sub5 var8 = Class3_Sub9.method133(var7 >> 16); + var7 &= 65535; + if(null == var8) { + return var1.method1894(true, true, true); + } else { + Class3_Sub28_Sub5 var9 = null; + if((this.aBoolean1846 || ClientCommands.tweeningEnabled) && var3 != -1 && this.frames.length > var3) { + var3 = this.frames[var3]; + var9 = Class3_Sub9.method133(var3 >> 16); + var3 &= 65535; + } + + Class3_Sub28_Sub5 var10 = null; + Class3_Sub28_Sub5 var11 = null; + int var13 = 0; + int var14 = 0; + if(null != this.baseIds) { + if(var5 < this.baseIds.length) { + var13 = this.baseIds[var5]; + if(var13 != 65535) { + var10 = Class3_Sub9.method133(var13 >> 16); + var13 &= 65535; + } + } + + if((this.aBoolean1846 || ClientCommands.tweeningEnabled) && -1 != var3 && this.baseIds.length > var3) { + var14 = this.baseIds[var3]; + if(var14 != 65535) { + var11 = Class3_Sub9.method133(var14 >> 16); + var14 &= 65535; + } + } + } + + boolean var15 = !var8.method559(var7); + boolean var16 = !var8.method561(var7, (byte)119); + if(var10 != null) { + var15 &= !var10.method559(var13); + var16 &= !var10.method561(var13, (byte)115); + } + + if(null != var9) { + var15 &= !var9.method559(var3); + var16 &= !var9.method561(var3, (byte)123); + } + + if(null != var11) { + var15 &= !var11.method559(var14); + var16 &= !var11.method561(var14, (byte)121); + } + + Model var17 = var1.method1894(var15, var16, !this.aBoolean1848); + var17.method1880(var8, var7, var9, var3, var4 - 1, var6, this.aBoolean1848); + if(null != var10) { + var17.method1880(var10, var13, var11, var14, var4 + -1, var6, this.aBoolean1848); + } + + return var17; + } + } catch (RuntimeException var18) { + throw ClientErrorException.clientError(var18, "tk.E(" + (var1 != null?"{...}":"null") + ',' + var2 + ',' + var3 + ',' + var4 + ',' + var5 + ')'); + } + } + + final Model method2056(int var1, int var2, int var3, int var4, Model var5) { + try { + int var7 = this.duration[var2]; + var2 = this.frames[var2]; + Class3_Sub28_Sub5 var8 = Class3_Sub9.method133(var2 >> 16); + var2 &= 65535; + if(null == var8) { + return var5.method1894(true, true, true); + } else { + var4 &= 3; + Class3_Sub28_Sub5 var9 = null; + if((this.aBoolean1846 || ClientCommands.tweeningEnabled) && var1 != -1 && this.frames.length > var1) { + var1 = this.frames[var1]; + var9 = Class3_Sub9.method133(var1 >> 16); + var1 &= 65535; + } + + Model var10; + if(null == var9) { + var10 = var5.method1894(!var8.method559(var2), !var8.method561(var2, (byte)123), !this.aBoolean1848); + } else { + var10 = var5.method1894(!var8.method559(var2) & !var9.method559(var1), !var8.method561(var2, (byte)125) & !var9.method561(var1, (byte)123), !this.aBoolean1848); + } + + if(this.aBoolean1848 && HDToolKit.highDetail) { + if(1 == var4) { + ((Class140_Sub1_Sub1)var10).method1902(); + } else if (var4 == 2) { + ((Class140_Sub1_Sub1) var10).method1911(); + } else if (var4 == 3) { + ((Class140_Sub1_Sub1) var10).method1925(); + } + } else if(var4 == 1) { + var10.method1900(); + } else if(var4 == 2) { + var10.method1874(); + } else if(var4 == 3) { + var10.method1885(); + } + + var10.method1880(var8, var2, var9, var1, var3 + -1, var7, this.aBoolean1848); + if(this.aBoolean1848 && HDToolKit.highDetail) { + if(var4 == 1) { + ((Class140_Sub1_Sub1)var10).method1925(); + } else if(var4 == 2) { + ((Class140_Sub1_Sub1)var10).method1911(); + } else if(var4 == 3) { + ((Class140_Sub1_Sub1)var10).method1902(); + } + } else if(1 == var4) { + var10.method1885(); + } else if (var4 == 2) { + var10.method1874(); + } else if (3 == var4) { + var10.method1900(); + } + + return var10; + } + } catch (RuntimeException var11) { + throw ClientErrorException.clientError(var11, "tk.B(" + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + (var5 != null?"{...}":"null") + ',' + 3 + ')'); + } + } + + final void method2058() { + try { + if(this.resetWhenWalk == -1) { + if(null == this.aBooleanArray1855) { + this.resetWhenWalk = 0; + } else { + this.resetWhenWalk = 2; + } + } + + if(-1 == this.priority) { + if(null == this.aBooleanArray1855) { + this.priority = 0; + } else { + this.priority = 2; + } + } + + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "tk.C(" + (byte) -41 + ')'); + } + } + + final Model method2059(int var1, int var2, int var3, Model var5) { + try { + int var6 = this.duration[var3]; + var3 = this.frames[var3]; + Class3_Sub28_Sub5 var7 = Class3_Sub9.method133(var3 >> 16); + var3 &= 65535; + if(var7 == null) { + return var5.method1882(true, true, true); + } else { + Class3_Sub28_Sub5 var9 = null; + if((this.aBoolean1846 || ClientCommands.tweeningEnabled) && var1 != -1 && var1 < this.frames.length) { + var1 = this.frames[var1]; + var9 = Class3_Sub9.method133(var1 >> 16); + var1 &= 65535; + } + + Model var10; + if(null == var9) { + var10 = var5.method1882(!var7.method559(var3), !var7.method561(var3, (byte)118), !this.aBoolean1848); + } else { + var10 = var5.method1882(!var7.method559(var3) & !var9.method559(var1), !var7.method561(var3, (byte)119) & !var9.method561(var1, (byte)118), !this.aBoolean1848); + } + + var10.method1880(var7, var3, var9, var1, var2 + -1, var6, this.aBoolean1848); + return var10; + } + } catch (RuntimeException var11) { + throw ClientErrorException.clientError(var11, "tk.G(" + var1 + ',' + var2 + ',' + var3 + ',' + (byte) -52 + ',' + (var5 != null?"{...}":"null") + ')'); + } + } + + private void parseOpcode(int opcode, DataBuffer buffer) { + try { + int count; + int index; + if(opcode == 1) { + count = buffer.readUnsignedShort(); + this.duration = new int[count]; + + for(index = 0; count > index; ++index) { + this.duration[index] = buffer.readUnsignedShort(); + } + + this.frames = new int[count]; + + for(index = 0; count > index; ++index) { + this.frames[index] = buffer.readUnsignedShort(); + } + + for(index = 0; count > index; ++index) { + this.frames[index] += buffer.readUnsignedShort() << 16; + } + } else if(opcode == 2) { + this.anInt1865 = buffer.readUnsignedShort(); + } else if(opcode == 3) { + this.aBooleanArray1855 = new boolean[256]; + count = buffer.readUnsignedByte(); + + for(index = 0; index < count; ++index) { + this.aBooleanArray1855[buffer.readUnsignedByte()] = true; + } + } else if (opcode == 4) { + this.aBoolean1859 = true; + } else if (opcode == 5) { + this.forcedPriority = buffer.readUnsignedByte(); + } else if (6 == opcode) { + this.leftHandItem = buffer.readUnsignedShort(); + } else if (opcode == 7) { + this.rightHandItem = buffer.readUnsignedShort(); + } else if (8 == opcode) { + this.maxLoops = buffer.readUnsignedByte(); + } else if (9 == opcode) { + this.resetWhenWalk = buffer.readUnsignedByte(); + } else if (10 == opcode) { + this.priority = buffer.readUnsignedByte(); + } else if (opcode == 11) { + this.delayType = buffer.readUnsignedByte(); + } else if (12 == opcode) { + count = buffer.readUnsignedByte(); + this.baseIds = new int[count]; + + for (index = 0; index < count; ++index) { + this.baseIds[index] = buffer.readUnsignedShort(); + } + + for (index = 0; index < count; ++index) { + this.baseIds[index] += buffer.readUnsignedShort() << 16; + } + } else if (13 == opcode) { + count = buffer.readUnsignedShort(); + this.sounds = new int[count][]; + + for (index = 0; index < count; ++index) { + int var6 = buffer.readUnsignedByte(); + if (var6 > 0) { + this.sounds[index] = new int[var6]; + this.sounds[index][0] = buffer.readMedium(); + + for (int var7 = 1; var7 < var6; ++var7) { + this.sounds[index][var7] = buffer.readUnsignedShort(); + } + } + } + } else if (opcode == 14) { + this.aBoolean1848 = true; + } else if (15 == opcode) { + this.aBoolean1846 = true; + } else if (16 == opcode) { + this.aBoolean1872 = true; + } + + } catch (RuntimeException var8) { + throw ClientErrorException.clientError(var8, "tk.H(" + opcode + ',' + (byte) -73 + ',' + (buffer != null?"{...}":"null") + ')'); + } + } + + static void resetAll() { + try { + Class3_Sub26.anInt2556 = 0; + TextureOperation20.aBoolean2774 = true; + TextureOperation20.aLong1465 = 0L; + TextureOperation20.aClass67_1443.anInt1018 = 0; + TextureOperation26.aBoolean3078 = true; + TextureOperation.method153(); + Class24.anInt469 = -1; + Class7.anInt2166 = -1; + Unsorted.incomingOpcode = -1; + Class159.anInt2023 = 0; + Class38_Sub1.anInt2617 = 0; + TextureOperation12.outgoingBuffer.index = 0; + LinkableRSString.anInt2582 = -1; + AbstractSprite.anInt3699 = 0; + BufferedDataStream.incomingBuffer.index = 0; + + int var1; + for(var1 = 0; ClientErrorException.aClass96Array2114.length > var1; ++var1) { + ClientErrorException.aClass96Array2114[var1] = null; + } + + Unsorted.menuOptionCount = 0; + Class38_Sub1.aBoolean2615 = false; + Class23.method940(119, 0); + + for(var1 = 0; var1 < 100; ++var1) { + LinkableRSString.aStringArray2580[var1] = null; + } + + Class164_Sub1.anInt3012 = 0; + TextureOperation20.anInt3216 = (int)(Math.random() * 100.0D) + -50; + Class45.anInt733 = 0; + GraphicDefinition.CAMERA_DIRECTION = 2047 & (int)(Math.random() * 20.0D) - 10; + Class58.anInt909 = -1; + Class159.localPlayerCount = 0; + Class161.anInt2028 = 0; + Unsorted.anInt42 = (int)(110.0D * Math.random()) + -55; + GameObject.aBoolean1837 = false; + Class164_Sub2.anInt3020 = -20 + (int)(30.0D * Math.random()); + AudioHandler.currentSoundEffectCount = 0; + Class65.anInt987 = 0; + TextureOperation9.anInt3102 = -60 + (int)(Math.random() * 120.0D); + TextureOperation16.anInt3114 = 0; + LinkableRSString.anInt2589 = (int)(80.0D * Math.random()) - 40; + Class163.localNPCCount = 0; + + for(var1 = 0; 2048 > var1; ++var1) { + Unsorted.players[var1] = null; + Class65.aClass3_Sub30Array986[var1] = null; + } + + for(var1 = 0; var1 < 32768; ++var1) { + NPC.npcs[var1] = null; + } + + Class102.player = Unsorted.players[2047] = new Player(); + TextureOperation13.aLinkedList_3364.clear(); + TextureOperation17.aLinkedList_3177.clear(); + if(null != Class39.groundItems) { + for(var1 = 0; 4 > var1; ++var1) { + for(int var2 = 0; var2 < 104; ++var2) { + for(int var3 = 0; var3 < 104; ++var3) { + Class39.groundItems[var1][var2][var3] = null; + } + } + } + } + + Scenery.sceneryList = new LinkedList(); + CS2Script.anInt1357 = 0; + Class8.anInt104 = 0; + TextureOperation6.method176(-114); + TileData.method103(); + Class75.anInt1105 = 0; + Class163_Sub2_Sub1.anInt4014 = 0; + Class157.anInt1996 = 0; + TextureOperation25.anInt3414 = 0; + Class146.anInt1904 = 0; + Unsorted.anInt30 = 0; + GraphicDefinition.anInt529 = 0; + MouseListeningClass.anInt1923 = 0; + Unsorted.anInt3631 = 0; + Class163_Sub2_Sub1.anInt4021 = 0; + + for(var1 = 0; var1 < NPCDefinition.varcArray.length; ++var1) { + NPCDefinition.varcArray[var1] = -1; + } + + if(ConfigInventoryDefinition.anInt3655 != -1) { + Class60.method1208((byte)-128, ConfigInventoryDefinition.anInt3655); + } + + for(Class3_Sub31 var7 = TextureOperation23.aHashTable_3208.first(); var7 != null; var7 = TextureOperation23.aHashTable_3208.next()) { + TextureOperation19.method254(true, var7); + } + + ConfigInventoryDefinition.anInt3655 = -1; + TextureOperation23.aHashTable_3208 = new HashTable(8); + Class3_Sub7.method122(-113); + TextureOperation27.aClass11_3087 = null; + Class38_Sub1.aBoolean2615 = false; + Unsorted.menuOptionCount = 0; + Unsorted.aClass52_1112.method1161(new int[]{0, 0, 0, 0, 0}, -1, false, null, -1); + + for(var1 = 0; 8 > var1; ++var1) { + Class91.aStringArray1299[var1] = null; + Class1.aBooleanArray54[var1] = false; + TextureOperation35.anIntArray3328[var1] = -1; + } + + Class3_Sub28_Sub9.method580((byte)80); + TextureOperation34.aBoolean3064 = true; + + for(var1 = 0; var1 < 100; ++var1) { + Unsorted.aBooleanArray3674[var1] = true; + } + + Unsorted.clanSize = 0; + PacketParser.aClass3_Sub19Array3694 = null; + RSInterface.aString_251 = null; + + for(var1 = 0; 6 > var1; ++var1) { + TextureOperation29.aClass133Array3393[var1] = new Class133(); + } + + for(var1 = 0; var1 < 25; ++var1) { + TextureOperation17.anIntArray3185[var1] = 0; + Class3_Sub20.anIntArray2480[var1] = 0; + Class133.anIntArray1743[var1] = 0; + } + + if(HDToolKit.highDetail) { + TextureOperation31.method236(); + } + + Unsorted.aBoolean4068 = true; + Class113.interfacePacketCounter = 0; + TextureOperation32.aString_3353 = TextCore.HasWalkHere; + Unsorted.aBoolean1084 = false; + TextureOperation38.aShortArray3455 = TextureOperation16.aShortArray3110 = Class136.aShortArray1779 = TextureOperation38.aShortArray3453 = new short[256]; + InvalidateData.method165(); + Unsorted.aBoolean1951 = false; + TextureOperation9.method204(); + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "tk.A(" + true + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/ShaderInterface.java b/Client/src/main/java/org/runite/client/ShaderInterface.java new file mode 100644 index 000000000..3e932ce74 --- /dev/null +++ b/Client/src/main/java/org/runite/client/ShaderInterface.java @@ -0,0 +1,12 @@ +package org.runite.client; + +interface ShaderInterface { + + void method21(); + + void method22(); + + void method23(int var1); + + int method24(); +} diff --git a/Client/src/main/java/org/runite/client/SignLinkAudioChannel.java b/Client/src/main/java/org/runite/client/SignLinkAudioChannel.java new file mode 100644 index 000000000..094e1a902 --- /dev/null +++ b/Client/src/main/java/org/runite/client/SignLinkAudioChannel.java @@ -0,0 +1,42 @@ +package org.runite.client; +import java.awt.Component; + +final class SignLinkAudioChannel extends AudioChannel { + + private final int anInt2969; + private static Interface1 anInterface1_2970; + + + final int method2157() { + return anInterface1_2970.method2((byte)118, this.anInt2969); + } + + final void write() { + anInterface1_2970.method6(this.anInt2969, this.samples); + } + + final void init(Component var1) throws Exception { + anInterface1_2970.method5(Class21.sampleRate, (byte)-39, var1, AudioChannel.stereo); + } + + final void flush() { + anInterface1_2970.method1(this.anInt2969, 28544); + } + + SignLinkAudioChannel(Signlink var1, int var2) { + anInterface1_2970 = var1.method1446((byte)99); + this.anInt2969 = var2; + } + + final void open(int var1) throws Exception { + if(var1 > 32768) { + throw new IllegalArgumentException(); + } else { + anInterface1_2970.method3(this.anInt2969, 25349, var1); + } + } + + final void close() { + anInterface1_2970.method4((byte)20, this.anInt2969); + } +} diff --git a/Client/src/main/java/org/runite/client/Signlink.java b/Client/src/main/java/org/runite/client/Signlink.java new file mode 100644 index 000000000..78c8612c1 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Signlink.java @@ -0,0 +1,688 @@ +package org.runite.client; + +import com.sun.opengl.impl.x11.DRIHack; +import org.rs09.SystemLogger; + +import java.applet.Applet; +import java.awt.*; +import java.io.*; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.net.InetAddress; +import java.net.Socket; +import java.net.URL; +import java.util.ArrayList; +import java.util.Hashtable; +import java.util.Vector; + +public class Signlink implements Runnable { + + private static final Hashtable cachedFiles = new Hashtable<>(18); + public static String javaVersion; + public static String osName; + public static String osNameCS; + public static int anInt1214 = 1; + public static String javaVendor; + public static String osArchitecture; + public static Method setFocusCycleRoot; + public static Method setTraversalKeysEnabled; + static volatile long aLong1221 = 0L; + private static String homeDirectory; + private final Thread thread; + private final String gameName; + private final int cacheSubrevisionNum; + public RandomAccessFileWrapper[] cacheIndicesFiles; + public RandomAccessFileWrapper cacheDataFile; + public EventQueue systemEventQueue; + public RandomAccessFileWrapper cacheChecksumFile; + public RandomAccessFileWrapper randomDatFile; + public Applet gameApplet; + private boolean stopped; + private Class64 aClass64_1203 = null; + private Sensor sensor; + private Display display; + private Class64 aClass64_1213 = null; + private Interface1 anInterface1_1217; + + private final int STAGE_LOAD_HDLIB = 10; + + + public Signlink(Applet applet, int var2, String gameName, int cacheIndexes) throws Exception { + javaVersion = "1.1"; + this.gameName = gameName; + this.cacheSubrevisionNum = var2; + this.gameApplet = applet; + javaVendor = "Unknown"; + + try { + javaVendor = System.getProperty("java.vendor"); + javaVersion = System.getProperty("java.version"); + } catch (Exception var17) { + } + + try { + osNameCS = System.getProperty("os.name"); + } catch (Exception var16) { + osNameCS = "Unknown"; + } + + osName = osNameCS.toLowerCase(); + + try { + osArchitecture = System.getProperty("os.arch").toLowerCase(); + } catch (Exception var15) { + osArchitecture = ""; + } + + try { + homeDirectory = System.getProperty("user.home"); + if (homeDirectory != null) { + homeDirectory = homeDirectory + "/"; + } + } catch (Exception var13) { + } + + if (homeDirectory == null) { + homeDirectory = "~/"; + } + + try { + this.systemEventQueue = Toolkit.getDefaultToolkit().getSystemEventQueue(); + } catch (Throwable var12) { + } + + try { + if (applet == null) { + setTraversalKeysEnabled = Class.forName("java.awt.Component").getDeclaredMethod("setFocusTraversalKeysEnabled", Boolean.TYPE); + } else { + setTraversalKeysEnabled = applet.getClass().getMethod("setFocusTraversalKeysEnabled", Boolean.TYPE); + } + } catch (Exception var11) { + } + + try { + if (applet == null) { + setFocusCycleRoot = Class.forName("java.awt.Container").getDeclaredMethod("setFocusCycleRoot", Boolean.TYPE); + } else { + setFocusCycleRoot = applet.getClass().getMethod("setFocusCycleRoot", Boolean.TYPE); + } + } catch (Exception var10) { + } + + this.randomDatFile = new RandomAccessFileWrapper(getFileFromCacheFolder(null, this.cacheSubrevisionNum, "random.dat"), "rw", 25L); + this.cacheDataFile = new RandomAccessFileWrapper(getFileFromCacheFolder(this.gameName, this.cacheSubrevisionNum, "main_file_cache.dat2"), "rw", 104857600L); + this.cacheChecksumFile = new RandomAccessFileWrapper(getFileFromCacheFolder(this.gameName, this.cacheSubrevisionNum, "main_file_cache.idx255"), "rw", 1048576L); + this.cacheIndicesFiles = new RandomAccessFileWrapper[cacheIndexes]; + + for (int i = 0; i < cacheIndexes; ++i) { + this.cacheIndicesFiles[i] = new RandomAccessFileWrapper(getFileFromCacheFolder(this.gameName, this.cacheSubrevisionNum, "main_file_cache.idx" + i), "rw", 1048576L); + } + + try { + this.display = new Display(); + } catch (Throwable var9) { + var9.printStackTrace(); + } + + try { + this.sensor = new Sensor(); + } catch (Throwable var8) { + } + + ThreadGroup threadGroup = Thread.currentThread().getThreadGroup(); + + for (ThreadGroup parent = threadGroup.getParent(); parent != null; parent = parent.getParent()) { + threadGroup = parent; + } + + Thread[] threads = new Thread[1000]; + threadGroup.enumerate(threads); + + for (Thread value : threads) { + if (value != null && value.getName().startsWith("AWT")) { + value.setPriority(1); + } + } + + this.stopped = false; + this.thread = new Thread(this); + this.thread.setPriority(10); + this.thread.setDaemon(true); + this.thread.start(); + } + + private static RandomAccessFileWrapper method1438(boolean var0, String var1) { + if (var0) { + method1438(true, null); + } + + String[] var2 = new String[]{"c:/rscache/", "/rscache/", homeDirectory, "c:/windows/", "c:/winnt/", "c:/", "/tmp/", ""}; + + for (String var4 : var2) { + if (var4.length() <= 0 || (new File(var4)).exists()) { + try { + return new RandomAccessFileWrapper(new File(var4, "jagex_" + var1 + "_preferences.dat"), "rw", 10000L); + } catch (Exception var6) { + } + } + } + + return null; + } + + public static File getFileFromCacheFolder(String gameName, int cacheSubRev, String filename) { + File cachedFile = cachedFiles.get(filename); + if (cachedFile == null) { + String[] basePaths = new String[]{homeDirectory, "c:/rscache/", "/rscache/", "c:/windows/", "c:/winnt/", "c:/", "/tmp/", ""}; + String[] folders = new String[]{".runite_rs", ".530file_store_" + cacheSubRev}; + for (int i = 0; i < 2; ++i) { + for (String folder : folders) { + for (String basePath : basePaths) { + String fullPath = basePath + folder + "/" + (gameName != null ? gameName + "/" : "") + filename; + RandomAccessFile raf = null; + try { + File file = new File(fullPath); + if (i != 0 || file.exists()) { + if (i != 1 || basePath.length() <= 0 || (new File(basePath)).exists()) { + (new File(basePath + folder)).mkdir(); + if (gameName != null) { + (new File(basePath + folder + "/" + gameName)).mkdir(); + } + // ClientLoader.getLibraryDownloader().updateDlls(var10.toString()); + raf = new RandomAccessFile(file, "rw"); + int var14 = raf.read(); + raf.seek(0L); + raf.write(var14); + raf.seek(0L); + raf.close(); + cachedFiles.put(filename, file); + return file; + } + } + } catch (Exception e) { + try { + if (raf != null) { + raf.close(); + } + } catch (Exception e2) { + } + } + } + } + } + + throw new RuntimeException(); + } else { + return cachedFile; + } + } + + public final void method1431() { + aLong1221 = TimeUtils.time() + 5000L; + } + + public final boolean method1432(boolean var1) { + if (var1) { + this.cacheIndicesFiles = null; + } + + return this.display != null; + } + + public final Class64 method1433(String var1, int var2) { + if (var2 != 12) { + this.randomDatFile = null; + } + + return this.method1435(12, 0, var1, 0); + } + + public final void method1434(int[] var1, int var2, int var3, Component var4, Point var5, int var6) { + if (var2 == 10000) { + this.method1435(17, var6, new Object[]{var4, var1, var5}, var3); + } + } + + private Class64 method1435(int var1, int var2, Object var3, int var4) { + Class64 var6 = new Class64(); + var6.anInt980 = var2; + var6.anInt979 = var4; + var6.anInt975 = var1; + var6.anObject977 = var3; + synchronized (this) { + if (this.aClass64_1203 == null) { + this.aClass64_1203 = this.aClass64_1213 = var6; + } else { + this.aClass64_1203.aClass64_976 = var6; + this.aClass64_1203 = var6; + } + + this.notify(); + return var6; + } + } + + public final Class64 method1436(Frame var1, int var2) { + if (var2 <= 78) { + this.gameApplet = null; + } + + return this.method1435(7, 0, var1, 0); + } + + public final Class64 method1439(boolean var1, URL var2) { + if (var1) { + this.cacheChecksumFile = null; + } + + return this.method1435(4, 0, var2, 0); + } + + public final Class64 method1441(byte var1, String address, int port) { + //System.out.println("var1: " + var1 + ", add: " + address + ":" + port); + return var1 != 8 ? null : this.method1435(1, 0, address, port); + } + + public final void method1442(Class var1, int var2) { + if (var2 == 0) { + this.method1435(11, 0, var1, 0); + } + } + + public final Class64 method1443(Class var1, Class[] var2, int var3, String var4) { + if (var3 > -7) { + homeDirectory = null; + } + + return this.method1435(8, 0, new Object[]{var1, var4, var2}, 0); + } + + public final void run() { +// byte dat2status = Update.updateExists(1, "main_file_cache.dat2"); + + while (true) { + Class64 var1; + synchronized (this) { + while (true) { + if (this.stopped) { + return; + } + + if (this.aClass64_1213 != null) { + var1 = this.aClass64_1213; + this.aClass64_1213 = this.aClass64_1213.aClass64_976; + if (this.aClass64_1213 == null) { + this.aClass64_1203 = null; + } + break; + } + + try { + this.wait(); + } catch (InterruptedException var11) { + } + } + } + + try { + int stage = var1.anInt975; + if (stage == 1) { + if (TimeUtils.time() < aLong1221) { + throw new IOException(); + } +// System.out.println("Roar " + (String)var1.anObject977 + ", port " + var1.anInt979); + var1.anObject974 = new Socket(InetAddress.getByName((String) var1.anObject977), var1.anInt979); + } else if (2 == stage) { + Thread var16 = new Thread((Runnable) var1.anObject977); + var16.setDaemon(true); + var16.start(); + var16.setPriority(var1.anInt979); + var1.anObject974 = var16; + } else if (stage == 4) { + if (TimeUtils.time() < aLong1221) { + throw new IOException(); + } + + var1.anObject974 = new DataInputStream(((URL) var1.anObject977).openStream()); + } else { + Object[] var3; + if (stage == 8) { + var3 = (Object[]) var1.anObject977; + if (((Class) var3[0]).getClassLoader() == null) { + throw new SecurityException(); + } + + var1.anObject974 = ((Class) var3[0]).getDeclaredMethod((String) var3[1], (Class[]) var3[2]); + } else if (stage == 9) { + var3 = (Object[]) var1.anObject977; + if (((Class) var3[0]).getClassLoader() == null) { + throw new SecurityException(); + } + + var1.anObject974 = ((Class) var3[0]).getDeclaredField((String) var3[1]); + } else { + String var4; + if (stage == 3) { + if (aLong1221 > TimeUtils.time()) { + throw new IOException(); + } + + var4 = (var1.anInt979 >> 24 & 0xFF) + "." + (var1.anInt979 >> 16 & 0xFF) + "." + (var1.anInt979 >> 8 & 0xFF) + "." + (255 & var1.anInt979); + var1.anObject974 = InetAddress.getByName(var4).getHostName(); + } else if (stage == 5) { + var1.anObject974 = this.display.method919(true); + } else if (stage == 6) { + Frame var5 = new Frame("Jagex Full Screen"); + var1.anObject974 = var5; + var5.setResizable(false); + this.display.configureDisplayMode(-56, var1.anInt980 & 65535, var1.anInt980 >> 16, 65535 & var1.anInt979, var5, var1.anInt979 >>> 16); + } else if (stage == 7) { + this.display.updateDisplayMode(); + } else if (stage == STAGE_LOAD_HDLIB) { + Class[] declaredMethodFields = new Class[]{Class.forName("java.lang.Class"), Class.forName("java.lang.String")}; + Runtime runtime = Runtime.getRuntime(); + Method libLoaderMethod; + Class clientClass = (Class) var1.anObject977; + + if (!osName.startsWith("mac")) { + libLoaderMethod = Class.forName("java.lang.Runtime").getDeclaredMethod("loadLibrary0", declaredMethodFields); + libLoaderMethod.setAccessible(true); + libLoaderMethod.invoke(runtime, clientClass, "jawt"); + libLoaderMethod.setAccessible(false); + } + + boolean is64Bit = osArchitecture.contains("64"); + boolean isSunOS = osName.startsWith("sunos"); + //load0 is a reflection-based package-private method in Runtime. Not sure why jagex used this, but it's fucky. + libLoaderMethod = Class.forName("java.lang.Runtime").getDeclaredMethod("load0", declaredMethodFields); + libLoaderMethod.setAccessible(true); + + SystemLogger.logInfo("Signlink - os Name: " + osName); + SystemLogger.logInfo("Signlink - os Arch: " + osArchitecture); + + if (osArchitecture.equals("aarch64")) { + SystemLogger.logWarn("Going into HD will fail - current libs do not support ARM."); + throw new Exception(); + } + + if (osName.startsWith("linux") || isSunOS) { + String[] libs = createLibs("linux"); + libLoaderMethod.invoke(runtime, clientClass, libs[2]); + DRIHack.begin(); + libLoaderMethod.invoke(runtime, clientClass, libs[0]); + DRIHack.end(); + libLoaderMethod.invoke(runtime, clientClass, libs[1]); + } else { + if(osName.startsWith("mac") && !osArchitecture.equals("ppc")) throw new Exception(); //We only have ppc libs for mac. + String[] libs = createLibs(osName.contains("win") ? "windows" : "macppc"); + //Windows has to load them this way because temporary files are illegal. + String jogl = getFileFromCacheFolder(this.gameName, this.cacheSubrevisionNum, libs[0]).toString(); + String awt = getFileFromCacheFolder(this.gameName, this.cacheSubrevisionNum, libs[1]).toString(); + libLoaderMethod.invoke(runtime, clientClass, jogl); + libLoaderMethod.invoke(runtime, clientClass, awt); + } + + libLoaderMethod.setAccessible(false); + } else { + int var18; + if (stage == 11) { + Field var20 = Class.forName("java.lang.ClassLoader").getDeclaredField("nativeLibraries"); + var20.setAccessible(true); + Vector var24 = (Vector) var20.get(((Class) var1.anObject977).getClassLoader()); + + for (var18 = 0; var18 < var24.size(); ++var18) { + Object var26 = var24.elementAt(var18); + Method var9 = var26.getClass().getDeclaredMethod("finalize"); + var9.setAccessible(true); + var9.invoke(var26); + var9.setAccessible(false); + Field var10 = var26.getClass().getDeclaredField("handle"); + var10.setAccessible(true); + var10.set(var26, new Integer(0)); + var10.setAccessible(false); + } + + var20.setAccessible(false); + } else if (stage == 12) { + var4 = (String) var1.anObject977; + var1.anObject974 = method1438(false, var4); + } else if (stage == 14) { + int var22 = var1.anInt980; + int var23 = var1.anInt979; + this.sensor.moveMouse(var23, var22); + } else if (15 == stage) { + boolean var21 = var1.anInt979 != 0; + Component var27 = (Component) var1.anObject977; + this.sensor.updateComponent(var27, var21); + } else if (17 == stage) { + var3 = (Object[]) var1.anObject977; + this.sensor.setCursor((Component) var3[0], (Point) var3[2], var1.anInt979, var1.anInt980, (int[]) var3[1]); + } else { + if (16 != stage) { + throw new Exception(); + } + + try { + if (!osName.startsWith("win")) { + throw new Exception(); + } + + var4 = (String) var1.anObject977; + if (!var4.startsWith("http://") && !var4.startsWith("https://")) { + throw new Exception(); + } + + String var25 = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789?&=,.%+-_#:/*"; + + for (var18 = 0; var18 < var4.length(); ++var18) { + if (var25.indexOf(var4.charAt(var18)) == -1) { + throw new Exception(); + } + } + + Runtime.getRuntime().exec("cmd /c start \"j\" \"" + var4 + "\""); + var1.anObject974 = null; + } catch (Exception var12) { + var1.anObject974 = var12; + } + } + } + } + } + + var1.anInt978 = 1; + } catch (ThreadDeath var13) { + throw var13; + } catch (Throwable var14) { + var1.anInt978 = 2; + } + } + } + + /** + * Extracts the libs from the client resources + * @param os The OS in use: windows, macppc, or linux + * @return an array of the created filenames to load. + * @author Ceikry + */ + public String[] createLibs(String os) throws Throwable { + ArrayList filenames = new ArrayList<>(); + String jogl; + String awt; + String glueGen = ""; + boolean isGluegenRequired = false; + boolean is64Bit = osArchitecture.contains("64"); + boolean isWindowsOrMac = os.equals("macppc") || os.equals("windows"); + + String fileExtension = os.equals("windows") ? ".dll" : os.equals("macppc") ? ".jnilib" : ".so"; + + jogl = (os.equals("windows") ? "jogl" : "libjogl") + + (is64Bit ? "_64" : "_32") + fileExtension; + + awt = (os.equals("windows") ? "jogl_awt" : "libjogl_awt") + + (is64Bit ? "_64" : "_32") + fileExtension; + + if(!isWindowsOrMac) isGluegenRequired = true; + if(isGluegenRequired) glueGen = "libgluegen-rt_" + (is64Bit ? "64" : "32") + ".so"; + + File joglLib = isWindowsOrMac ? getFileFromCacheFolder(this.gameName, this.cacheSubrevisionNum, "jogl.dll") : File.createTempFile("jogl", "." + jogl.split("\\.")[1]); + File awtLib = isWindowsOrMac ? getFileFromCacheFolder(this.gameName, this.cacheSubrevisionNum, "jogl_awt.dll") : File.createTempFile("jogl_awt", "." + awt.split("\\.")[1]); + + try (InputStream in = getClass().getResourceAsStream("/lib/" + jogl); OutputStream out = openOutputStream(joglLib)) { + if (in == null) throw new FileNotFoundException("Needed library does not exist: " + jogl); + copyFile(in, out); + filenames.add(isWindowsOrMac ? joglLib.getName() : joglLib.getAbsolutePath()); + } + + try (InputStream in = getClass().getResourceAsStream("/lib/" + awt); OutputStream out = openOutputStream(awtLib)) { + if (in == null) throw new FileNotFoundException("Needed library does not exist: " + awt); + copyFile(in, out); + filenames.add(isWindowsOrMac ? awtLib.getName() : awtLib.getAbsolutePath()); + } + + if (isGluegenRequired) { + File glueLib = File.createTempFile("libgluegen", ".so"); + try (InputStream in = getClass().getResourceAsStream("/lib/" + glueGen); OutputStream out = openOutputStream(glueLib)) { + if (in == null) throw new FileNotFoundException("Needed library does not exist: " + glueGen); + copyFile(in, out); + filenames.add(glueLib.getAbsolutePath()); + } + } + + + return filenames.toArray(new String[]{}); + } + + public final Class64 method1444(int var1, Class var2) { + if (var1 > -13) { + this.method1435(88, -20, null, 76); + } + + return this.method1435(10, 0, var2, 0); + } + + public final void method1445(int var1) { + synchronized (this) { + this.stopped = true; + this.notifyAll(); + } + + try { + this.thread.join(); + } catch (InterruptedException var8) { + } + + if (var1 != 0) { + method1438(false, null); + } + + if (this.cacheDataFile != null) { + try { + this.cacheDataFile.close(); + } catch (IOException var7) { + } + } + + if (this.cacheChecksumFile != null) { + try { + this.cacheChecksumFile.close(); + } catch (IOException var6) { + } + } + + if (this.cacheIndicesFiles != null) { + for (int var2 = 0; var2 < this.cacheIndicesFiles.length; ++var2) { + if (this.cacheIndicesFiles[var2] != null) { + try { + this.cacheIndicesFiles[var2].close(); + } catch (IOException var5) { + } + } + } + } + + if (this.randomDatFile != null) { + try { + this.randomDatFile.close(); + } catch (IOException var4) { + } + } + + } + + public final Interface1 method1446(byte var1) { + if (var1 < 71) { + this.method1452(null, true); + } + + //return this.anInterface1_1217; + return null; + } + + public final Class64 method1447(int var1, String var2, Class var3) { + if (var1 > -39) { + this.method1452(null, true); + } + + return this.method1435(9, 0, new Object[]{var3, var2}, 0); + } + + public final Class64 method1449(int var1, int var2) { + if (var1 != 3) { + this.cacheChecksumFile = null; + } + + return this.method1435(3, 0, null, var2); + } + + public final Class64 method1450(int var1, int var2, int var3, int var4) { + return this.method1435(6, var1 + (var2 << 16), null, (var4 << 16) + var3); + } + + public final Class64 startThread(int var2, Runnable var3) { + return this.method1435(2, 0, var3, var2); + } + + public final Class64 method1452(String var1, boolean var2) { + if (!var2) { + this.method1436(null, 101); + } + + return this.method1435(16, 0, var1, 0); + } + + public final Class64 method1453(byte var1) { + if (var1 < 7) { + this.method1443(null, null, -91, null); + } + + return this.method1435(5, 0, null, 0); + } + + private static FileOutputStream openOutputStream(final File file) throws IOException { + if (file.exists()) { + if (file.isDirectory()) { + throw new IOException("File '" + file + "' exists but is a directory"); + } + if (!file.canWrite()) { + throw new IOException("File '" + file + "' cannot be written to"); + } + } else { + final File parent = file.getParentFile(); + if (parent != null) { + if (!parent.mkdirs() && !parent.isDirectory()) { + throw new IOException("Directory '" + parent + "' could not be created"); + } + } + } + return new FileOutputStream(file); + } + + private static void copyFile(final InputStream input, final OutputStream output) throws IOException { + byte[] buffer = new byte[1024 * 4]; + int n; + while (-1 != (n = input.read(buffer))) { + output.write(buffer, 0, n); + } + } +} diff --git a/Client/src/main/java/org/runite/client/SoftwareSprite.java b/Client/src/main/java/org/runite/client/SoftwareSprite.java new file mode 100644 index 000000000..182167e2b --- /dev/null +++ b/Client/src/main/java/org/runite/client/SoftwareSprite.java @@ -0,0 +1,1374 @@ +package org.runite.client; + +import org.rs09.client.rendering.Toolkit; + +public class SoftwareSprite extends AbstractSprite { + + int[] anIntArray4081; + + + final void method652(int var1) { + if(this.width != this.anInt3697 || this.height != this.anInt3706) { + int var2 = var1; + if(var1 > this.anInt3701) { + var2 = this.anInt3701; + } + + int var3 = var1; + if(var1 + this.anInt3701 + this.width > this.anInt3697) { + var3 = this.anInt3697 - this.anInt3701 - this.width; + } + + int var4 = var1; + if(var1 > this.anInt3698) { + var4 = this.anInt3698; + } + + int var5 = var1; + if(var1 + this.anInt3698 + this.height > this.anInt3706) { + var5 = this.anInt3706 - this.anInt3698 - this.height; + } + + int var6 = this.width + var2 + var3; + int var7 = this.height + var4 + var5; + int[] var8 = new int[var6 * var7]; + + for(int var9 = 0; var9 < this.height; ++var9) { + for(int var10 = 0; var10 < this.width; ++var10) { + var8[(var9 + var4) * var6 + var10 + var2] = this.anIntArray4081[var9 * this.width + var10]; + } + } + + this.anIntArray4081 = var8; + this.width = var6; + this.height = var7; + this.anInt3701 -= var2; + this.anInt3698 -= var4; + } + } + + final void method653() { + int[] var1 = new int[this.width * this.height]; + int var2 = 0; + + for(int var3 = 0; var3 < this.height; ++var3) { + for(int var4 = this.width - 1; var4 >= 0; --var4) { + var1[var2++] = this.anIntArray4081[var4 + var3 * this.width]; + } + } + + this.anIntArray4081 = var1; + this.anInt3701 = this.anInt3697 - this.width - this.anInt3701; + } + + void method635(int var1, int var2) { + var1 += this.anInt3701; + var2 += this.anInt3698; + int var3 = var1 + var2 * Toolkit.JAVA_TOOLKIT.width; + int var4 = 0; + int var5 = this.height; + int var6 = this.width; + int var7 = Toolkit.JAVA_TOOLKIT.width - var6; + int var8 = 0; + int var9; + if(var2 < Toolkit.JAVA_TOOLKIT.clipTop) { + var9 = Toolkit.JAVA_TOOLKIT.clipTop - var2; + var5 -= var9; + var2 = Toolkit.JAVA_TOOLKIT.clipTop; + var4 += var9 * var6; + var3 += var9 * Toolkit.JAVA_TOOLKIT.width; + } + + if(var2 + var5 > Toolkit.JAVA_TOOLKIT.clipBottom) { + var5 -= var2 + var5 - Toolkit.JAVA_TOOLKIT.clipBottom; + } + + if(var1 < Toolkit.JAVA_TOOLKIT.clipLeft) { + var9 = Toolkit.JAVA_TOOLKIT.clipLeft - var1; + var6 -= var9; + var1 = Toolkit.JAVA_TOOLKIT.clipLeft; + var4 += var9; + var3 += var9; + var8 += var9; + var7 += var9; + } + + if(var1 + var6 > Toolkit.JAVA_TOOLKIT.clipRight) { + var9 = var1 + var6 - Toolkit.JAVA_TOOLKIT.clipRight; + var6 -= var9; + var8 += var9; + var7 += var9; + } + + if(var6 > 0 && var5 > 0) { + method659(Toolkit.JAVA_TOOLKIT.getBuffer(), this.anIntArray4081, var4, var3, var6, var5, var7, var8); + } + } + + private static void method654(int[] var0, int[] var1, int var3, int var4, int var5, int var6, int var7, int var8) { + int var9 = -(var5 >> 2); + var5 = -(var5 & 3); + + for(int var10 = -var6; var10 < 0; ++var10) { + int var11; + int var2; + for(var11 = var9; var11 < 0; ++var11) { + var2 = var1[var3++]; + if(var2 == 0) { + ++var4; + } else { + var0[var4++] = var2; + } + + var2 = var1[var3++]; + if(var2 == 0) { + ++var4; + } else { + var0[var4++] = var2; + } + + var2 = var1[var3++]; + if(var2 == 0) { + ++var4; + } else { + var0[var4++] = var2; + } + + var2 = var1[var3++]; + if(var2 == 0) { + ++var4; + } else { + var0[var4++] = var2; + } + } + + for(var11 = var5; var11 < 0; ++var11) { + var2 = var1[var3++]; + if(var2 == 0) { + ++var4; + } else { + var0[var4++] = var2; + } + } + + var4 += var7; + var3 += var8; + } + + } + + final int[] method655() { + int[] var4 = new int[this.anInt3697 * this.anInt3706]; + + for(int var5 = 0; var5 < this.height; ++var5) { + int var1 = var5 * this.width; + int var2 = this.anInt3701 + (var5 + this.anInt3698) * this.anInt3697; + + for(int var6 = 0; var6 < this.width; ++var6) { + int var3 = this.anIntArray4081[var1++]; + var4[var2++] = var3 != 0?-16777216 | var3:0; + } + } + + return var4; + } + + void method636(int var1, int var2, int var3, int var4, int var5, int var6) { + if(var6 != 0) { + var1 -= this.anInt3701 << 4; + var2 -= this.anInt3698 << 4; + double var7 = (double)(var5 & 65535) * 9.587379924285257E-5D; + int var9 = (int)Math.floor(Math.sin(var7) * (double)var6 + 0.5D); + int var10 = (int)Math.floor(Math.cos(var7) * (double)var6 + 0.5D); + int var11 = -var1 * var10 + -var2 * var9; + int var12 = -(-var1) * var9 + -var2 * var10; + int var13 = ((this.width << 4) - var1) * var10 + -var2 * var9; + int var14 = -((this.width << 4) - var1) * var9 + -var2 * var10; + int var15 = -var1 * var10 + ((this.height << 4) - var2) * var9; + int var16 = -(-var1) * var9 + ((this.height << 4) - var2) * var10; + int var17 = ((this.width << 4) - var1) * var10 + ((this.height << 4) - var2) * var9; + int var18 = -((this.width << 4) - var1) * var9 + ((this.height << 4) - var2) * var10; + int var19; + int var20; + if(var11 < var13) { + var19 = var11; + var20 = var13; + } else { + var19 = var13; + var20 = var11; + } + + if(var15 < var19) { + var19 = var15; + } + + if(var17 < var19) { + var19 = var17; + } + + if(var15 > var20) { + var20 = var15; + } + + if(var17 > var20) { + var20 = var17; + } + + int var21; + int var22; + if(var12 < var14) { + var21 = var12; + var22 = var14; + } else { + var21 = var14; + var22 = var12; + } + + if(var16 < var21) { + var21 = var16; + } + + if(var18 < var21) { + var21 = var18; + } + + if(var16 > var22) { + var22 = var16; + } + + if(var18 > var22) { + var22 = var18; + } + + var19 >>= 12; + var20 = var20 + 4095 >> 12; + var21 >>= 12; + var22 = var22 + 4095 >> 12; + var19 += var3; + var20 += var3; + var21 += var4; + var22 += var4; + var19 >>= 4; + var20 = var20 + 15 >> 4; + var21 >>= 4; + var22 = var22 + 15 >> 4; + if(var19 < Toolkit.JAVA_TOOLKIT.clipLeft) { + var19 = Toolkit.JAVA_TOOLKIT.clipLeft; + } + + if(var20 > Toolkit.JAVA_TOOLKIT.clipRight) { + var20 = Toolkit.JAVA_TOOLKIT.clipRight; + } + + if(var21 < Toolkit.JAVA_TOOLKIT.clipTop) { + var21 = Toolkit.JAVA_TOOLKIT.clipTop; + } + + if(var22 > Toolkit.JAVA_TOOLKIT.clipBottom) { + var22 = Toolkit.JAVA_TOOLKIT.clipBottom; + } + + var20 = var19 - var20; + if(var20 < 0) { + var22 = var21 - var22; + if(var22 < 0) { + int var23 = var21 * Toolkit.JAVA_TOOLKIT.width + var19; + double var24 = 1.6777216E7D / (double)var6; + int var26 = (int)Math.floor(Math.sin(var7) * var24 + 0.5D); + int var27 = (int)Math.floor(Math.cos(var7) * var24 + 0.5D); + int var28 = (var19 << 4) + 8 - var3; + int var29 = (var21 << 4) + 8 - var4; + int var30 = (var1 << 8) - (var29 * var26 >> 4); + int var31 = (var2 << 8) + (var29 * var27 >> 4); + int var34; + int var35; + int var32; + int var33; + int var38; + int var36; + int var37; + if(var27 == 0) { + if(var26 == 0) { + for(var33 = var22; var33 < 0; var23 += Toolkit.JAVA_TOOLKIT.width) { + var34 = var23; + var35 = var30; + var36 = var31; + var37 = var20; + if(var30 >= 0 && var31 >= 0 && var30 - (this.width << 12) < 0 && var31 - (this.height << 12) < 0) { + for(; var37 < 0; ++var37) { + var38 = this.anIntArray4081[(var36 >> 12) * this.width + (var35 >> 12)]; + if(var38 == 0) { + ++var34; + } else { + Toolkit.JAVA_TOOLKIT.getBuffer()[var34++] = var38; + } + } + } + + ++var33; + } + } else if(var26 < 0) { + for(var33 = var22; var33 < 0; var23 += Toolkit.JAVA_TOOLKIT.width) { + var34 = var23; + var35 = var30; + var36 = var31 + (var28 * var26 >> 4); + var37 = var20; + if(var30 >= 0 && var30 - (this.width << 12) < 0) { + if((var32 = var36 - (this.height << 12)) >= 0) { + var32 = (var26 - var32) / var26; + var37 = var20 + var32; + var36 += var26 * var32; + var34 = var23 + var32; + } + + if((var32 = (var36 - var26) / var26) > var37) { + var37 = var32; + } + + while(var37 < 0) { + var38 = this.anIntArray4081[(var36 >> 12) * this.width + (var35 >> 12)]; + if(var38 == 0) { + ++var34; + } else { + Toolkit.JAVA_TOOLKIT.getBuffer()[var34++] = var38; + } + + var36 += var26; + ++var37; + } + } + + ++var33; + var30 -= var26; + } + } else { + for(var33 = var22; var33 < 0; var23 += Toolkit.JAVA_TOOLKIT.width) { + var34 = var23; + var35 = var30; + var36 = var31 + (var28 * var26 >> 4); + var37 = var20; + if(var30 >= 0 && var30 - (this.width << 12) < 0) { + if(var36 < 0) { + var32 = (var26 - 1 - var36) / var26; + var37 = var20 + var32; + var36 += var26 * var32; + var34 = var23 + var32; + } + + if((var32 = (1 + var36 - (this.height << 12) - var26) / var26) > var37) { + var37 = var32; + } + + while(var37 < 0) { + var38 = this.anIntArray4081[(var36 >> 12) * this.width + (var35 >> 12)]; + if(var38 == 0) { + ++var34; + } else { + Toolkit.JAVA_TOOLKIT.getBuffer()[var34++] = var38; + } + + var36 += var26; + ++var37; + } + } + + ++var33; + var30 -= var26; + } + } + } else if(var27 < 0) { + if(var26 == 0) { + for(var33 = var22; var33 < 0; var23 += Toolkit.JAVA_TOOLKIT.width) { + var34 = var23; + var35 = var30 + (var28 * var27 >> 4); + var36 = var31; + var37 = var20; + if(var31 >= 0 && var31 - (this.height << 12) < 0) { + if((var32 = var35 - (this.width << 12)) >= 0) { + var32 = (var27 - var32) / var27; + var37 = var20 + var32; + var35 += var27 * var32; + var34 = var23 + var32; + } + + if((var32 = (var35 - var27) / var27) > var37) { + var37 = var32; + } + + while(var37 < 0) { + var38 = this.anIntArray4081[(var36 >> 12) * this.width + (var35 >> 12)]; + if(var38 == 0) { + ++var34; + } else { + Toolkit.JAVA_TOOLKIT.getBuffer()[var34++] = var38; + } + + var35 += var27; + ++var37; + } + } + + ++var33; + var31 += var27; + } + } else if(var26 < 0) { + for(var33 = var22; var33 < 0; var23 += Toolkit.JAVA_TOOLKIT.width) { + var34 = var23; + var35 = var30 + (var28 * var27 >> 4); + var36 = var31 + (var28 * var26 >> 4); + var37 = var20; + if((var32 = var35 - (this.width << 12)) >= 0) { + var32 = (var27 - var32) / var27; + var37 = var20 + var32; + var35 += var27 * var32; + var36 += var26 * var32; + var34 = var23 + var32; + } + + if((var32 = (var35 - var27) / var27) > var37) { + var37 = var32; + } + + if((var32 = var36 - (this.height << 12)) >= 0) { + var32 = (var26 - var32) / var26; + var37 += var32; + var35 += var27 * var32; + var36 += var26 * var32; + var34 += var32; + } + + if((var32 = (var36 - var26) / var26) > var37) { + var37 = var32; + } + + while(var37 < 0) { + var38 = this.anIntArray4081[(var36 >> 12) * this.width + (var35 >> 12)]; + if(var38 == 0) { + ++var34; + } else { + Toolkit.JAVA_TOOLKIT.getBuffer()[var34++] = var38; + } + + var35 += var27; + var36 += var26; + ++var37; + } + + ++var33; + var30 -= var26; + var31 += var27; + } + } else { + for(var33 = var22; var33 < 0; var23 += Toolkit.JAVA_TOOLKIT.width) { + var34 = var23; + var35 = var30 + (var28 * var27 >> 4); + var36 = var31 + (var28 * var26 >> 4); + var37 = var20; + if((var32 = var35 - (this.width << 12)) >= 0) { + var32 = (var27 - var32) / var27; + var37 = var20 + var32; + var35 += var27 * var32; + var36 += var26 * var32; + var34 = var23 + var32; + } + + if((var32 = (var35 - var27) / var27) > var37) { + var37 = var32; + } + + if(var36 < 0) { + var32 = (var26 - 1 - var36) / var26; + var37 += var32; + var35 += var27 * var32; + var36 += var26 * var32; + var34 += var32; + } + + if((var32 = (1 + var36 - (this.height << 12) - var26) / var26) > var37) { + var37 = var32; + } + + while(var37 < 0) { + var38 = this.anIntArray4081[(var36 >> 12) * this.width + (var35 >> 12)]; + if(var38 == 0) { + ++var34; + } else { + Toolkit.JAVA_TOOLKIT.getBuffer()[var34++] = var38; + } + + var35 += var27; + var36 += var26; + ++var37; + } + + ++var33; + var30 -= var26; + var31 += var27; + } + } + } else if(var26 == 0) { + for(var33 = var22; var33 < 0; var23 += Toolkit.JAVA_TOOLKIT.width) { + var34 = var23; + var35 = var30 + (var28 * var27 >> 4); + var36 = var31; + var37 = var20; + if(var31 >= 0 && var31 - (this.height << 12) < 0) { + if(var35 < 0) { + var32 = (var27 - 1 - var35) / var27; + var37 = var20 + var32; + var35 += var27 * var32; + var34 = var23 + var32; + } + + if((var32 = (1 + var35 - (this.width << 12) - var27) / var27) > var37) { + var37 = var32; + } + + while(var37 < 0) { + var38 = this.anIntArray4081[(var36 >> 12) * this.width + (var35 >> 12)]; + if(var38 == 0) { + ++var34; + } else { + Toolkit.JAVA_TOOLKIT.getBuffer()[var34++] = var38; + } + + var35 += var27; + ++var37; + } + } + + ++var33; + var31 += var27; + } + } else if(var26 < 0) { + for(var33 = var22; var33 < 0; var23 += Toolkit.JAVA_TOOLKIT.width) { + var34 = var23; + var35 = var30 + (var28 * var27 >> 4); + var36 = var31 + (var28 * var26 >> 4); + var37 = var20; + if(var35 < 0) { + var32 = (var27 - 1 - var35) / var27; + var37 = var20 + var32; + var35 += var27 * var32; + var36 += var26 * var32; + var34 = var23 + var32; + } + + if((var32 = (1 + var35 - (this.width << 12) - var27) / var27) > var37) { + var37 = var32; + } + + if((var32 = var36 - (this.height << 12)) >= 0) { + var32 = (var26 - var32) / var26; + var37 += var32; + var35 += var27 * var32; + var36 += var26 * var32; + var34 += var32; + } + + if((var32 = (var36 - var26) / var26) > var37) { + var37 = var32; + } + + while(var37 < 0) { + var38 = this.anIntArray4081[(var36 >> 12) * this.width + (var35 >> 12)]; + if(var38 == 0) { + ++var34; + } else { + Toolkit.JAVA_TOOLKIT.getBuffer()[var34++] = var38; + } + + var35 += var27; + var36 += var26; + ++var37; + } + + ++var33; + var30 -= var26; + var31 += var27; + } + } else { + for(var33 = var22; var33 < 0; var23 += Toolkit.JAVA_TOOLKIT.width) { + var34 = var23; + var35 = var30 + (var28 * var27 >> 4); + var36 = var31 + (var28 * var26 >> 4); + var37 = var20; + if(var35 < 0) { + var32 = (var27 - 1 - var35) / var27; + var37 = var20 + var32; + var35 += var27 * var32; + var36 += var26 * var32; + var34 = var23 + var32; + } + + if((var32 = (1 + var35 - (this.width << 12) - var27) / var27) > var37) { + var37 = var32; + } + + if(var36 < 0) { + var32 = (var26 - 1 - var36) / var26; + var37 += var32; + var35 += var27 * var32; + var36 += var26 * var32; + var34 += var32; + } + + if((var32 = (1 + var36 - (this.height << 12) - var26) / var26) > var37) { + var37 = var32; + } + + while(var37 < 0) { + var38 = this.anIntArray4081[(var36 >> 12) * this.width + (var35 >> 12)]; + if(var38 == 0) { + ++var34; + } else { + Toolkit.JAVA_TOOLKIT.getBuffer()[var34++] = var38; + } + + var35 += var27; + var36 += var26; + ++var37; + } + + ++var33; + var30 -= var26; + var31 += var27; + } + } + + } + } + } + } + + private static void method656(int[] var0, int[] var1, int var3, int var4, int var5, int var6, int var7, int var8) { + int var9 = -(var5 >> 2); + var5 = -(var5 & 3); + + for(int var10 = -var6; var10 < 0; ++var10) { + int var11; + int var2; + for(var11 = var9; var11 < 0; ++var11) { + var2 = var1[var3--]; + if(var2 == 0) { + ++var4; + } else { + var0[var4++] = var2; + } + + var2 = var1[var3--]; + if(var2 == 0) { + ++var4; + } else { + var0[var4++] = var2; + } + + var2 = var1[var3--]; + if(var2 == 0) { + ++var4; + } else { + var0[var4++] = var2; + } + + var2 = var1[var3--]; + if(var2 == 0) { + ++var4; + } else { + var0[var4++] = var2; + } + } + + for(var11 = var5; var11 < 0; ++var11) { + var2 = var1[var3--]; + if(var2 == 0) { + ++var4; + } else { + var0[var4++] = var2; + } + } + + var4 += var7; + var3 += var8; + } + + } + + final void method657(int var1) { + int[] var2 = new int[this.width * this.height]; + int var3 = 0; + + for(int var4 = 0; var4 < this.height; ++var4) { + for(int var5 = 0; var5 < this.width; ++var5) { + int var6 = this.anIntArray4081[var3]; + if(var6 == 0) { + if(var5 > 0 && this.anIntArray4081[var3 - 1] != 0) { + var6 = var1; + } else if(var4 > 0 && this.anIntArray4081[var3 - this.width] != 0) { + var6 = var1; + } else if(var5 < this.width - 1 && this.anIntArray4081[var3 + 1] != 0) { + var6 = var1; + } else if(var4 < this.height - 1 && this.anIntArray4081[var3 + this.width] != 0) { + var6 = var1; + } + } + + var2[var3++] = var6; + } + } + + this.anIntArray4081 = var2; + } + + final void method658() { + Class74.setBuffer(this.anIntArray4081, this.width, this.height); + } + + private static void method659(int[] var0, int[] var1, int var2, int var3, int var4, int var5, int var6, int var7) { + for(int var8 = -var5; var8 < 0; ++var8) { + int var9; + for(var9 = var3 + var4 - 3; var3 < var9; var0[var3++] = var1[var2++]) { + var0[var3++] = var1[var2++]; + var0[var3++] = var1[var2++]; + var0[var3++] = var1[var2++]; + } + + for(var9 += 3; var3 < var9; var0[var3++] = var1[var2++]) { + } + + var3 += var6; + var2 += var7; + } + + } + + void method660(int var1, int var2, double var7) { + try { + int var10 = -20 / 2; + int var11 = -20 / 2; + int var12 = (int)(Math.sin(var7) * 65536.0D); + int var13 = (int)(Math.cos(var7) * 65536.0D); + var12 = var12 * 256 >> 8; + var13 = var13 * 256 >> 8; + int var14 = (15 << 16) + var11 * var12 + var10 * var13; + int var15 = (15 << 16) + (var11 * var13 - var10 * var12); + int var16 = var1 + var2 * Toolkit.JAVA_TOOLKIT.width; + + for(var2 = 0; var2 < 20; ++var2) { + int var17 = var16; + int var18 = var14; + int var19 = var15; + + for(var1 = -20; var1 < 0; ++var1) { + int var20 = this.anIntArray4081[(var18 >> 16) + (var19 >> 16) * this.width]; + if(var20 == 0) { + ++var17; + } else { + Toolkit.JAVA_TOOLKIT.getBuffer()[var17++] = var20; + } + + var18 += var13; + var19 -= var12; + } + + var14 += var12; + var15 += var13; + var16 += Toolkit.JAVA_TOOLKIT.width; + } + } catch (Exception var21) { + } + + } + + void method641(int var1, int var2) { + var1 += this.anInt3697 - this.width - this.anInt3701; + var2 += this.anInt3698; + int var3 = var1 + var2 * Toolkit.JAVA_TOOLKIT.width; + int var4 = this.width - 1; + int var5 = this.height; + int var6 = this.width; + int var7 = Toolkit.JAVA_TOOLKIT.width - var6; + int var8 = var6 + var6; + int var9; + if(var2 < Toolkit.JAVA_TOOLKIT.clipTop) { + var9 = Toolkit.JAVA_TOOLKIT.clipTop - var2; + var5 -= var9; + var2 = Toolkit.JAVA_TOOLKIT.clipTop; + var4 += var9 * var6; + var3 += var9 * Toolkit.JAVA_TOOLKIT.width; + } + + if(var2 + var5 > Toolkit.JAVA_TOOLKIT.clipBottom) { + var5 -= var2 + var5 - Toolkit.JAVA_TOOLKIT.clipBottom; + } + + if(var1 < Toolkit.JAVA_TOOLKIT.clipLeft) { + var9 = Toolkit.JAVA_TOOLKIT.clipLeft - var1; + var6 -= var9; + var1 = Toolkit.JAVA_TOOLKIT.clipLeft; + var4 -= var9; + var3 += var9; + var8 -= var9; + var7 += var9; + } + + if(var1 + var6 > Toolkit.JAVA_TOOLKIT.clipRight) { + var9 = var1 + var6 - Toolkit.JAVA_TOOLKIT.clipRight; + var6 -= var9; + var8 -= var9; + var7 += var9; + } + + if(var6 > 0 && var5 > 0) { + method656(Toolkit.JAVA_TOOLKIT.getBuffer(), this.anIntArray4081, var4, var3, var6, var5, var7, var8); + } + } + + SoftwareSprite(int var1, int var2, int var3, int var4, int var5, int var6, int[] var7) { + this.anInt3697 = var1; + this.anInt3706 = var2; + this.anInt3701 = var3; + this.anInt3698 = var4; + this.width = var5; + this.height = var6; + this.anIntArray4081 = var7; + } + + void method637(int var1, int var2, int var3) { + var1 += this.anInt3701; + var2 += this.anInt3698; + int var4 = var1 + var2 * Toolkit.JAVA_TOOLKIT.width; + int var5 = 0; + int var6 = this.height; + int var7 = this.width; + int var8 = Toolkit.JAVA_TOOLKIT.width - var7; + int var9 = 0; + int var10; + if(var2 < Toolkit.JAVA_TOOLKIT.clipTop) { + var10 = Toolkit.JAVA_TOOLKIT.clipTop - var2; + var6 -= var10; + var2 = Toolkit.JAVA_TOOLKIT.clipTop; + var5 += var10 * var7; + var4 += var10 * Toolkit.JAVA_TOOLKIT.width; + } + + if(var2 + var6 > Toolkit.JAVA_TOOLKIT.clipBottom) { + var6 -= var2 + var6 - Toolkit.JAVA_TOOLKIT.clipBottom; + } + + if(var1 < Toolkit.JAVA_TOOLKIT.clipLeft) { + var10 = Toolkit.JAVA_TOOLKIT.clipLeft - var1; + var7 -= var10; + var1 = Toolkit.JAVA_TOOLKIT.clipLeft; + var5 += var10; + var4 += var10; + var9 += var10; + var8 += var10; + } + + if(var1 + var7 > Toolkit.JAVA_TOOLKIT.clipRight) { + var10 = var1 + var7 - Toolkit.JAVA_TOOLKIT.clipRight; + var7 -= var10; + var9 += var10; + var8 += var10; + } + + if(var7 > 0 && var6 > 0) { + method662(Toolkit.JAVA_TOOLKIT.getBuffer(), this.anIntArray4081, var5, var4, var7, var6, var8, var9, var3); + } + } + + private static void method661(int[] var0, int[] var1, int var3, int var4, int var5, int var6, int var7, int var8, int var9, int var10, int var11, int var12) { + int var13 = 256 - var12; + int var14 = var3; + + for(int var15 = -var8; var15 < 0; ++var15) { + int var16 = (var4 >> 16) * var11; + + for(int var17 = -var7; var17 < 0; ++var17) { + int var2 = var1[(var3 >> 16) + var16]; + if(var2 == 0) { + ++var5; + } else { + int var18 = var0[var5]; + var0[var5++] = ((var2 & 16711935) * var12 + (var18 & 16711935) * var13 & -16711936) + ((var2 & 65280) * var12 + (var18 & 65280) * var13 & 16711680) >> 8; + } + + var3 += var9; + } + + var4 += var10; + var3 = var14; + var5 += var6; + } + + } + + private static void method662(int[] var0, int[] var1, int var3, int var4, int var5, int var6, int var7, int var8, int var9) { + int var10 = 256 - var9; + + for(int var11 = -var6; var11 < 0; ++var11) { + for(int var12 = -var5; var12 < 0; ++var12) { + int var2 = var1[var3++]; + if(var2 == 0) { + ++var4; + } else { + int var13 = var0[var4]; + var0[var4++] = ((var2 & 16711935) * var9 + (var13 & 16711935) * var10 & -16711936) + ((var2 & 65280) * var9 + (var13 & 65280) * var10 & 16711680) >> 8; + } + } + + var4 += var7; + var3 += var8; + } + + } + + public void drawAt(int var1, int var2) { + var1 += this.anInt3701; + var2 += this.anInt3698; + int var3 = var1 + var2 * Toolkit.JAVA_TOOLKIT.width; + int var4 = 0; + int var5 = this.height; + int var6 = this.width; + int var7 = Toolkit.JAVA_TOOLKIT.width - var6; + int var8 = 0; + int var9; + if(var2 < Toolkit.JAVA_TOOLKIT.clipTop) { + var9 = Toolkit.JAVA_TOOLKIT.clipTop - var2; + var5 -= var9; + var2 = Toolkit.JAVA_TOOLKIT.clipTop; + var4 += var9 * var6; + var3 += var9 * Toolkit.JAVA_TOOLKIT.width; + } + + if(var2 + var5 > Toolkit.JAVA_TOOLKIT.clipBottom) { + var5 -= var2 + var5 - Toolkit.JAVA_TOOLKIT.clipBottom; + } + + if(var1 < Toolkit.JAVA_TOOLKIT.clipLeft) { + var9 = Toolkit.JAVA_TOOLKIT.clipLeft - var1; + var6 -= var9; + var1 = Toolkit.JAVA_TOOLKIT.clipLeft; + var4 += var9; + var3 += var9; + var8 += var9; + var7 += var9; + } + + if(var1 + var6 > Toolkit.JAVA_TOOLKIT.clipRight) { + var9 = var1 + var6 - Toolkit.JAVA_TOOLKIT.clipRight; + var6 -= var9; + var8 += var9; + var7 += var9; + } + + if(var6 > 0 && var5 > 0) { + method654(Toolkit.JAVA_TOOLKIT.getBuffer(), this.anIntArray4081, var4, var3, var6, var5, var7, var8); + } + } + + final void method663() { + int[] var1 = new int[this.width * this.height]; + int var2 = 0; + + for(int var3 = this.height - 1; var3 >= 0; --var3) { + for(int var4 = 0; var4 < this.width; ++var4) { + var1[var2++] = this.anIntArray4081[var4 + var3 * this.width]; + } + } + + this.anIntArray4081 = var1; + this.anInt3698 = this.anInt3706 - this.height - this.anInt3698; + } + + public void drawMinimapRegion(int var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, int[] var9, int[] var10) { + try { + int var11 = -var3 / 2; + int var12 = -var4 / 2; + int var13 = (int)(Math.sin((double)var7 / 326.11D) * 65536.0D); + int var14 = (int)(Math.cos((double)var7 / 326.11D) * 65536.0D); + var13 = var13 * var8 >> 8; + var14 = var14 * var8 >> 8; + int var15 = (var5 << 16) + var12 * var13 + var11 * var14; + int var16 = (var6 << 16) + (var12 * var14 - var11 * var13); + int var17 = var1 + var2 * Toolkit.JAVA_TOOLKIT.width; + + for(var2 = 0; var2 < var4; ++var2) { + int var18 = var9[var2]; + int var19 = var17 + var18; + int var20 = var15 + var14 * var18; + int var21 = var16 - var13 * var18; + + for(var1 = -var10[var2]; var1 < 0; ++var1) { + Toolkit.JAVA_TOOLKIT.getBuffer()[var19++] = this.anIntArray4081[(var20 >> 16) + (var21 >> 16) * this.width]; + var20 += var14; + var21 -= var13; + } + + var15 += var13; + var16 += var14; + var17 += Toolkit.JAVA_TOOLKIT.width; + } + } catch (Exception var22) { + } + + } + + final void method665() { + if(this.width != this.anInt3697 || this.height != this.anInt3706) { + int[] var1 = new int[this.anInt3697 * this.anInt3706]; + + for(int var2 = 0; var2 < this.height; ++var2) { + for(int var3 = 0; var3 < this.width; ++var3) { + var1[(var2 + this.anInt3698) * this.anInt3697 + var3 + this.anInt3701] = this.anIntArray4081[var2 * this.width + var3]; + } + } + + this.anIntArray4081 = var1; + this.width = this.anInt3697; + this.height = this.anInt3706; + this.anInt3701 = 0; + this.anInt3698 = 0; + } + } + + final void drawMinimapIcons(int interfaceWidth, int interfaceHeight, int[] var3, int[] var4) { + if(Toolkit.JAVA_TOOLKIT.clipBottom - Toolkit.JAVA_TOOLKIT.clipTop == var3.length) { + interfaceWidth += this.anInt3701; + interfaceHeight += this.anInt3698; + int var5 = 0; + int var6 = this.height; + int var7 = this.width; + int var8 = Toolkit.JAVA_TOOLKIT.width - var7; + int var9 = 0; + int var10 = interfaceWidth + interfaceHeight * Toolkit.JAVA_TOOLKIT.width; + int var11; + if(interfaceHeight < Toolkit.JAVA_TOOLKIT.clipTop) { + var11 = Toolkit.JAVA_TOOLKIT.clipTop - interfaceHeight; + var6 -= var11; + interfaceHeight = Toolkit.JAVA_TOOLKIT.clipTop; + var5 += var11 * var7; + var10 += var11 * Toolkit.JAVA_TOOLKIT.width; + } + + if(interfaceHeight + var6 > Toolkit.JAVA_TOOLKIT.clipBottom) { + var6 -= interfaceHeight + var6 - Toolkit.JAVA_TOOLKIT.clipBottom; + } + + if(interfaceWidth < Toolkit.JAVA_TOOLKIT.clipLeft) { + var11 = Toolkit.JAVA_TOOLKIT.clipLeft - interfaceWidth; + var7 -= var11; + interfaceWidth = Toolkit.JAVA_TOOLKIT.clipLeft; + var5 += var11; + var10 += var11; + var9 += var11; + var8 += var11; + } + + if(interfaceWidth + var7 > Toolkit.JAVA_TOOLKIT.clipRight) { + var11 = interfaceWidth + var7 - Toolkit.JAVA_TOOLKIT.clipRight; + var7 -= var11; + var9 += var11; + var8 += var11; + } + + if(var7 > 0 && var6 > 0) { + var11 = interfaceWidth - Toolkit.JAVA_TOOLKIT.clipLeft; + int var12 = interfaceHeight - Toolkit.JAVA_TOOLKIT.clipTop; + + for(int var13 = var12; var13 < var12 + var6; ++var13) { + int var14 = var3[var13]; + int var15 = var4[var13]; + int var16 = var7; + int var17; + if(var11 > var14) { + var17 = var11 - var14; + if(var17 >= var15) { + var5 += var7 + var9; + var10 += var7 + var8; + continue; + } + + var15 -= var17; + } else { + var17 = var14 - var11; + if(var17 >= var7) { + var5 += var7 + var9; + var10 += var7 + var8; + continue; + } + + var5 += var17; + var16 = var7 - var17; + var10 += var17; + } + + var17 = 0; + if(var16 < var15) { + var15 = var16; + } else { + var17 = var16 - var15; + } + + for(int var18 = -var15; var18 < 0; ++var18) { + int var19 = this.anIntArray4081[var5++]; + if(var19 == 0) { + ++var10; + } else { + Toolkit.JAVA_TOOLKIT.getBuffer()[var10++] = var19; + } + } + + var5 += var17 + var9; + var10 += var17 + var8; + } + + } + } else { + throw new IllegalStateException(); + } + } + + SoftwareSprite(int var1, int var2) { + this.anIntArray4081 = new int[var1 * var2]; + this.width = this.anInt3697 = var1; + this.height = this.anInt3706 = var2; + this.anInt3701 = this.anInt3698 = 0; + } + + public void method667(int var1, int var2, int var3, int var4, int var5, int var6, int var7, int[] var9, int[] var10) { + try { + int var11 = -var3 / 2; + int var12 = -var4 / 2; + int var13 = (int)(Math.sin((double)var7 / 326.11D) * 65536.0D); + int var14 = (int)(Math.cos((double)var7 / 326.11D) * 65536.0D); + var13 = var13 * 256 >> 8; + var14 = var14 * 256 >> 8; + int var15 = (var5 << 16) + var12 * var13 + var11 * var14; + int var16 = (var6 << 16) + (var12 * var14 - var11 * var13); + int var17 = var1 + var2 * Toolkit.JAVA_TOOLKIT.width; + + for(var2 = 0; var2 < var4; ++var2) { + int var18 = var9[var2]; + int var19 = var17 + var18; + int var20 = var15 + var14 * var18; + int var21 = var16 - var13 * var18; + + for(var1 = -var10[var2]; var1 < 0; ++var1) { + int var22 = this.anIntArray4081[(var20 >> 16) + (var21 >> 16) * this.width]; + if(var22 == 0) { + ++var19; + } else { + Toolkit.JAVA_TOOLKIT.getBuffer()[var19++] = var22; + } + + var20 += var14; + var21 -= var13; + } + + var15 += var13; + var16 += var14; + var17 += Toolkit.JAVA_TOOLKIT.width; + } + } catch (Exception var23) { + } + + } + + final void method668(int var1) { + for(int var2 = this.height - 1; var2 > 0; --var2) { + int var3 = var2 * this.width; + + for(int var4 = this.width - 1; var4 > 0; --var4) { + if(this.anIntArray4081[var4 + var3] == 0 && this.anIntArray4081[var4 + var3 - 1 - this.width] != 0) { + this.anIntArray4081[var4 + var3] = var1; + } + } + } + + } + + void method642(int var1, int var2, int var3, int var4, int var5) { + if(var3 > 0 && var4 > 0) { + int var6 = this.width; + int var7 = this.height; + int var8 = 0; + int var9 = 0; + int var10 = this.anInt3697; + int var11 = this.anInt3706; + int var12 = (var10 << 16) / var3; + int var13 = (var11 << 16) / var4; + int var14; + if(this.anInt3701 > 0) { + var14 = ((this.anInt3701 << 16) + var12 - 1) / var12; + var1 += var14; + var8 += var14 * var12 - (this.anInt3701 << 16); + } + + if(this.anInt3698 > 0) { + var14 = ((this.anInt3698 << 16) + var13 - 1) / var13; + var2 += var14; + var9 += var14 * var13 - (this.anInt3698 << 16); + } + + if(var6 < var10) { + var3 = ((var6 << 16) - var8 + var12 - 1) / var12; + } + + if(var7 < var11) { + var4 = ((var7 << 16) - var9 + var13 - 1) / var13; + } + + var14 = var1 + var2 * Toolkit.JAVA_TOOLKIT.width; + int var15 = Toolkit.JAVA_TOOLKIT.width - var3; + if(var2 + var4 > Toolkit.JAVA_TOOLKIT.clipBottom) { + var4 -= var2 + var4 - Toolkit.JAVA_TOOLKIT.clipBottom; + } + + int var16; + if(var2 < Toolkit.JAVA_TOOLKIT.clipTop) { + var16 = Toolkit.JAVA_TOOLKIT.clipTop - var2; + var4 -= var16; + var14 += var16 * Toolkit.JAVA_TOOLKIT.width; + var9 += var13 * var16; + } + + if(var1 + var3 > Toolkit.JAVA_TOOLKIT.clipRight) { + var16 = var1 + var3 - Toolkit.JAVA_TOOLKIT.clipRight; + var3 -= var16; + var15 += var16; + } + + if(var1 < Toolkit.JAVA_TOOLKIT.clipLeft) { + var16 = Toolkit.JAVA_TOOLKIT.clipLeft - var1; + var3 -= var16; + var14 += var16; + var8 += var12 * var16; + var15 += var16; + } + + method661(Toolkit.JAVA_TOOLKIT.getBuffer(), this.anIntArray4081, var8, var9, var14, var15, var3, var4, var12, var13, var6, var5); + } + } + + final void method669(int var1, int var2, int var3) { + for(int var4 = 0; var4 < this.anIntArray4081.length; ++var4) { + int var5 = this.anIntArray4081[var4]; + if(var5 != 0) { + int var6 = var5 >> 16 & 0xFF; + var6 += var1; + if(var6 < 1) { + var6 = 1; + } else if(var6 > 255) { + var6 = 255; + } + + int var7 = var5 >> 8 & 0xFF; + var7 += var2; + if(var7 < 1) { + var7 = 1; + } else if(var7 > 255) { + var7 = 255; + } + + int var8 = var5 & 0xFF; + var8 += var3; + if(var8 < 1) { + var8 = 1; + } else if(var8 > 255) { + var8 = 255; + } + + this.anIntArray4081[var4] = (var6 << 16) + (var7 << 8) + var8; + } + } + + } + + public void method639(int var1, int var2, int var3, int var4) { + if(var3 > 0 && var4 > 0) { + int var5 = this.width; + int var6 = this.height; + int var7 = 0; + int var8 = 0; + int var9 = this.anInt3697; + int var10 = this.anInt3706; + int var11 = (var9 << 16) / var3; + int var12 = (var10 << 16) / var4; + int var13; + if(this.anInt3701 > 0) { + var13 = ((this.anInt3701 << 16) + var11 - 1) / var11; + var1 += var13; + var7 += var13 * var11 - (this.anInt3701 << 16); + } + + if(this.anInt3698 > 0) { + var13 = ((this.anInt3698 << 16) + var12 - 1) / var12; + var2 += var13; + var8 += var13 * var12 - (this.anInt3698 << 16); + } + + if(var5 < var9) { + var3 = ((var5 << 16) - var7 + var11 - 1) / var11; + } + + if(var6 < var10) { + var4 = ((var6 << 16) - var8 + var12 - 1) / var12; + } + + var13 = var1 + var2 * Toolkit.JAVA_TOOLKIT.width; + int var14 = Toolkit.JAVA_TOOLKIT.width - var3; + if(var2 + var4 > Toolkit.JAVA_TOOLKIT.clipBottom) { + var4 -= var2 + var4 - Toolkit.JAVA_TOOLKIT.clipBottom; + } + + int var15; + if(var2 < Toolkit.JAVA_TOOLKIT.clipTop) { + var15 = Toolkit.JAVA_TOOLKIT.clipTop - var2; + var4 -= var15; + var13 += var15 * Toolkit.JAVA_TOOLKIT.width; + var8 += var12 * var15; + } + + if(var1 + var3 > Toolkit.JAVA_TOOLKIT.clipRight) { + var15 = var1 + var3 - Toolkit.JAVA_TOOLKIT.clipRight; + var3 -= var15; + var14 += var15; + } + + if(var1 < Toolkit.JAVA_TOOLKIT.clipLeft) { + var15 = Toolkit.JAVA_TOOLKIT.clipLeft - var1; + var3 -= var15; + var13 += var15; + var7 += var11 * var15; + var14 += var15; + } + + method670(Toolkit.JAVA_TOOLKIT.getBuffer(), this.anIntArray4081, var7, var8, var13, var14, var3, var4, var11, var12, var5); + } + } + + private static void method670(int[] var0, int[] var1, int var3, int var4, int var5, int var6, int var7, int var8, int var9, int var10, int var11) { + int var12 = var3; + + for(int var13 = -var8; var13 < 0; ++var13) { + int var14 = (var4 >> 16) * var11; + + for(int var15 = -var7; var15 < 0; ++var15) { + int var2 = var1[(var3 >> 16) + var14]; + if(var2 == 0) { + ++var5; + } else { + var0[var5++] = var2; + } + + var3 += var9; + } + + var4 += var10; + var3 = var12; + var5 += var6; + } + + } +} diff --git a/Client/src/main/java/org/runite/client/Sound.java b/Client/src/main/java/org/runite/client/Sound.java new file mode 100644 index 000000000..da65318c3 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Sound.java @@ -0,0 +1,10 @@ +package org.runite.client; + +import org.rs09.client.Linkable; + +abstract class Sound extends Linkable { + + int anInt2374; + + +} diff --git a/Client/src/main/java/org/runite/client/Sprites.java b/Client/src/main/java/org/runite/client/Sprites.java new file mode 100644 index 000000000..8a387558e --- /dev/null +++ b/Client/src/main/java/org/runite/client/Sprites.java @@ -0,0 +1,243 @@ +package org.runite.client; + +import java.util.Objects; + +final class Sprites { + + public static int compassSpriteArchive; + public static int hintMapEdgeSpriteArchive; + public static AbstractIndexedSprite[] nameIconsSpriteArray; + static boolean aBoolean337; + static int ambientVolume = 127; + static int p11FullSpriteArchive; + static int p12FullSpriteArchive; + static int b12FullSpriteArchive; + static int mapFunctionSpriteArchive; + static int hitmarkSpriteArchive; + static int hitbarDefaultSpriteArchive; + static int headiconsPkSpriteArchive; + static int headiconsPrayerSpriteArchive; + static int headiconsHintSpriteArchive; + static int hintMapMarkersSpriteArchive; + static int mapFlagSpriteArchive; + static int crossSpriteArchive; + static int mapDotsSpriteArchive; + static int scrollbarSpriteArchive; + static int nameIconsSpriteArchive; + static int floorShadowSpriteArchive; + static SoftwareSprite[] aSoftwareSpriteArray2140; + + + private static LDIndexedSprite[] method885(int var1, CacheIndex var2) { + try { + // System.out.println("Class 14 " + var1); + return !Class75_Sub4.method1351(var2, 0, var1) ? null : Unsorted.method1281(); + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "cg.C(" + true + ',' + var1 + ',' + (var2 != null ? "{...}" : "null") + ',' + 0 + ')'); + } + } + + static void method887(CacheIndex index8) { + try { + aSoftwareSpriteArray2140 = Class157.method2176(mapFunctionSpriteArchive, index8); + Class75_Sub3.aAbstractSpriteArray2656 = Class140_Sub6.getSprites(hitmarkSpriteArchive, index8); + Unsorted.aAbstractSpriteArray996 = Class140_Sub6.getSprites(hitbarDefaultSpriteArchive, index8); + TextureOperation2.aAbstractSpriteArray3373 = Class140_Sub6.getSprites(headiconsPkSpriteArchive, index8); + NPC.aAbstractSpriteArray3977 = Class140_Sub6.getSprites(headiconsPrayerSpriteArchive, index8); + Class166.aAbstractSpriteArray2072 = Class140_Sub6.getSprites(headiconsHintSpriteArchive, index8); + Class129_Sub1.aAbstractSpriteArray2690 = Class140_Sub6.getSprites(hintMapMarkersSpriteArchive, index8); + Class45.aAbstractSprite_736 = Unsorted.method602(mapFlagSpriteArchive, index8); + Class65.aAbstractSpriteArray1825 = TextureOperation18.method286(crossSpriteArchive, index8); + Unsorted.minimapDotSprites = TextureOperation18.method286(mapDotsSpriteArchive, index8); + GameObject.aClass109Array1831 = Class85.method1424(index8, scrollbarSpriteArchive); + nameIconsSpriteArray = Class85.method1424(index8, nameIconsSpriteArchive); + FontType.smallFont.method697(nameIconsSpriteArray, null); + FontType.plainFont.method697(nameIconsSpriteArray, null); + FontType.bold.method697(nameIconsSpriteArray, null); + if (HDToolKit.highDetail) { + Class141.aClass109_Sub1Array1843 = method885(floorShadowSpriteArchive, index8); + + for (int var2 = 0; var2 < Objects.requireNonNull(Class141.aClass109_Sub1Array1843).length; ++var2) { + Class141.aClass109_Sub1Array1843[var2].method1675(); + } + } + + SoftwareSprite var10 = Class40.method1043(0, index8, compassSpriteArchive); + Objects.requireNonNull(var10).method665(); + if (HDToolKit.highDetail) { + Class57.aAbstractSprite_895 = new HDSprite(var10); + } else { + Class57.aAbstractSprite_895 = var10; + } + + SoftwareSprite[] var3 = Class157.method2176(hintMapEdgeSpriteArchive, index8); + + int var4; + for (var4 = 0; Objects.requireNonNull(var3).length > var4; ++var4) { + var3[var4].method665(); + } + + if (HDToolKit.highDetail) { + TextureOperation8.aAbstractSpriteArray3458 = new AbstractSprite[var3.length]; + + for (var4 = 0; var4 < var3.length; ++var4) { + TextureOperation8.aAbstractSpriteArray3458[var4] = new HDSprite(var3[var4]); + } + } else { + TextureOperation8.aAbstractSpriteArray3458 = var3; + } + + int var5 = (int) ((double) 21 * Math.random()) - 10; + var4 = (int) (21.0D * Math.random()) - 10; + int var6 = -10 + (int) (21.0D * Math.random()); + int var7 = -20 + (int) (Math.random() * 41.0D); + + int var8; + for (var8 = 0; var8 < aSoftwareSpriteArray2140.length; ++var8) { + aSoftwareSpriteArray2140[var8].method669(var4 + var7, var7 + var5, var7 + var6); + } + + if (HDToolKit.highDetail) { + Entity.aAbstractSpriteArray2839 = new AbstractSprite[aSoftwareSpriteArray2140.length]; + + for (var8 = 0; var8 < aSoftwareSpriteArray2140.length; ++var8) { + Entity.aAbstractSpriteArray2839[var8] = new HDSprite(aSoftwareSpriteArray2140[var8]); + } + } else { + Entity.aAbstractSpriteArray2839 = aSoftwareSpriteArray2140; + } + + } catch (RuntimeException var9) { + throw ClientErrorException.clientError(var9, "cg.A(" + 21 + ',' + (index8 != null ? "{...}" : "null") + ')'); + } + } + + static void getSpriteFromArchive(CacheIndex index8) { + try { + p11FullSpriteArchive = index8.getArchiveForName(RSString.parse("p11_full")); + p12FullSpriteArchive = index8.getArchiveForName(RSString.parse("p12_full")); + b12FullSpriteArchive = index8.getArchiveForName(RSString.parse("b12_full")); + mapFunctionSpriteArchive = index8.getArchiveForName(RSString.parse("mapfunction")); + hitmarkSpriteArchive = index8.getArchiveForName(RSString.parse("hitmarks")); + hitbarDefaultSpriteArchive = index8.getArchiveForName(RSString.parse("hitbar_default")); + headiconsPkSpriteArchive = index8.getArchiveForName(RSString.parse("headicons_pk")); + + headiconsPrayerSpriteArchive = index8.getArchiveForName(RSString.parse("headicons_prayer")); + headiconsHintSpriteArchive = index8.getArchiveForName(RSString.parse("hint_headicons")); + hintMapMarkersSpriteArchive = index8.getArchiveForName(RSString.parse("hint_mapmarkers")); + mapFlagSpriteArchive = index8.getArchiveForName(RSString.parse("mapflag")); + crossSpriteArchive = index8.getArchiveForName(RSString.parse("cross")); + mapDotsSpriteArchive = index8.getArchiveForName(RSString.parse("mapdots")); + scrollbarSpriteArchive = index8.getArchiveForName(RSString.parse("scrollbar")); + nameIconsSpriteArchive = index8.getArchiveForName(RSString.parse("name_icons")); + floorShadowSpriteArchive = index8.getArchiveForName(RSString.parse("floorshadows")); + compassSpriteArchive = index8.getArchiveForName(RSString.parse("compass")); + hintMapEdgeSpriteArchive = index8.getArchiveForName(RSString.parse("hint_mapedge")); + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "g.C(" + 208 + ',' + (index8 != null ? "{...}" : "null") + ')'); + } + } + + static int method228(CacheIndex var0, CacheIndex var1) { + try { + int var3 = 0; + if (var0.retrieveSpriteFile(p11FullSpriteArchive)) { + ++var3; + } + + if (var0.retrieveSpriteFile(p12FullSpriteArchive)) { + ++var3; + } + + if (var0.retrieveSpriteFile(b12FullSpriteArchive)) { + ++var3; + } + + if (var1.retrieveSpriteFile(p11FullSpriteArchive)) { + ++var3; + } + + + if (var1.retrieveSpriteFile(p12FullSpriteArchive)) { + ++var3; + } + + if (var1.retrieveSpriteFile(b12FullSpriteArchive)) { + ++var3; + } + + return var3; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "fn.B(" + (var0 != null ? "{...}" : "null") + ',' + (var1 != null ? "{...}" : "null") + ')'); + } + } + + static int method107(CacheIndex index) { + try { + int var2 = 0;//0 + if (index.retrieveSpriteFile(mapFunctionSpriteArchive)) { + ++var2; + } + + if (index.retrieveSpriteFile(hitmarkSpriteArchive)) { + ++var2; + } + + if (index.retrieveSpriteFile(hitbarDefaultSpriteArchive)) { + ++var2; + } + + if (index.retrieveSpriteFile(headiconsPkSpriteArchive)) { + ++var2; + } + + if (index.retrieveSpriteFile(headiconsPrayerSpriteArchive)) { + ++var2; + } + + if (index.retrieveSpriteFile(headiconsHintSpriteArchive)) { + ++var2; + } + + if (index.retrieveSpriteFile(hintMapMarkersSpriteArchive)) { + ++var2; + } + + if (index.retrieveSpriteFile(mapFlagSpriteArchive)) { + ++var2; + } + + if (index.retrieveSpriteFile(crossSpriteArchive)) { + ++var2; + } + + if (index.retrieveSpriteFile(mapDotsSpriteArchive)) { + ++var2; + } + + if (index.retrieveSpriteFile(scrollbarSpriteArchive)) { + ++var2; + } + + if (index.retrieveSpriteFile(nameIconsSpriteArchive)) { + ++var2; + } + + if (index.retrieveSpriteFile(floorShadowSpriteArchive)) { + ++var2; + } + + if (index.retrieveSpriteFile(compassSpriteArchive)) { + ++var2; + } + + if (index.retrieveSpriteFile(hintMapEdgeSpriteArchive)) { + ++var2; + } + + return var2; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "cd.B(" + (index != null ? "{...}" : "null") + ',' + (byte) -125 + ')'); + } + } +} diff --git a/Client/src/main/java/org/runite/client/SynthInstrument.java b/Client/src/main/java/org/runite/client/SynthInstrument.java new file mode 100644 index 000000000..724898b8d --- /dev/null +++ b/Client/src/main/java/org/runite/client/SynthInstrument.java @@ -0,0 +1,304 @@ +package org.runite.client; + +import org.rs09.client.util.ArrayUtils; + +import java.util.Random; + +final class SynthInstrument { + + private static final int[] anIntArray1591; + private static final int[] anIntArray1594 = new int[32768]; + private static final int[] output; + private static final int[] anIntArray1599; + private static final int[] anIntArray1600; + private static final int[] anIntArray1601; + private static final int[] anIntArray1602; + private static final int[] anIntArray1603; + static int[][] coefficency = new int[2][8]; + static int inverseA0; + + static { + Random var0 = new Random(0L); + + int var1; + for (var1 = 0; var1 < 32768; ++var1) { + anIntArray1594[var1] = (var0.nextInt() & 2) - 1; + } + + anIntArray1591 = new int[32768]; + + for (var1 = 0; var1 < 32768; ++var1) { + anIntArray1591[var1] = (int) (Math.sin((double) var1 / 5215.1903D) * 16384.0D); + } + + output = new int[220500]; + anIntArray1599 = new int[5]; + anIntArray1600 = new int[5]; + anIntArray1601 = new int[5]; + anIntArray1603 = new int[5]; + anIntArray1602 = new int[5]; + } + + private final int[] oscillatorAmplitudes = new int[]{0, 0, 0, 0, 0}; + private final int[] oscillatorStartMillis = new int[]{0, 0, 0, 0, 0}; + private final int[] anIntArray1605 = new int[]{0, 0, 0, 0, 0}; + int duration = 500; + int start = 0; + private Envelope amplitudeModulationAmplitudeEnvelope; + private Envelope gateClosedPhaseEnvelope; + private Envelope amplitudeEnvelope; + private Envelope gateOpenPhaseEnvelope; + private Envelope phaseEnvelope; + private int delayTime = 0; + private Envelope filterEnvelope; + private Envelope amplitudeModulationEnvelope; + private int delayMix = 100; + private Filter filter; + private Envelope pitch_mod_amp_env; + private Envelope pitch_mod_env; + + private int method1716(int var1, int var2, int var3) { + return var3 == 1 ? ((var1 & 32767) < 16384 ? var2 : -var2) : (var3 == 2 ? anIntArray1591[var1 & 32767] * var2 >> 14 : (var3 == 3 ? ((var1 & 32767) * var2 >> 14) - var2 : (var3 == 4 ? anIntArray1594[var1 / 2607 & 32767] * var2 : 0))); + } + + final int[] synthesize(int num_samples, int dt) { + ArrayUtils.zero(output, 0, num_samples); + if (dt >= 10) { + double sample_rate = (double) num_samples / ((double) dt + 0.0D); + this.phaseEnvelope.reset(); + this.amplitudeEnvelope.reset(); + int pm_phase_delta = 0; + int pm_phase_delta_base = 0; + int pm_phase = 0; + if (this.pitch_mod_env != null) { + this.pitch_mod_env.reset(); + this.pitch_mod_amp_env.reset(); + pm_phase_delta = (int) ((double) (this.pitch_mod_env.maxInterval - this.pitch_mod_env.minInterval) * 32.768D / sample_rate); + pm_phase_delta_base = (int) ((double) this.pitch_mod_env.minInterval * 32.768D / sample_rate); + } + + int var8 = 0; + int var9 = 0; + int var10 = 0; + if (this.amplitudeModulationEnvelope != null) { + this.amplitudeModulationEnvelope.reset(); + this.amplitudeModulationAmplitudeEnvelope.reset(); + var8 = (int) ((double) (this.amplitudeModulationEnvelope.maxInterval - this.amplitudeModulationEnvelope.minInterval) * 32.768D / sample_rate); + var9 = (int) ((double) this.amplitudeModulationEnvelope.minInterval * 32.768D / sample_rate); + } + + int var11; + for (var11 = 0; var11 < 5; ++var11) { + if (this.oscillatorAmplitudes[var11] != 0) { + anIntArray1601[var11] = 0; + anIntArray1602[var11] = (int) ((double) this.oscillatorStartMillis[var11] * sample_rate); + anIntArray1603[var11] = (this.oscillatorAmplitudes[var11] << 14) / 100; + anIntArray1599[var11] = (int) ((double) (this.phaseEnvelope.maxInterval - this.phaseEnvelope.minInterval) * 32.768D * Math.pow(1.0057929410678534D, this.anIntArray1605[var11]) / sample_rate); + anIntArray1600[var11] = (int) ((double) this.phaseEnvelope.minInterval * 32.768D / sample_rate); + } + } + + int var12; + int var13; + int var14; + int delay; + for (var11 = 0; var11 < num_samples; ++var11) { + var12 = this.phaseEnvelope.nextLevel(num_samples); + var13 = this.amplitudeEnvelope.nextLevel(num_samples); + if (this.pitch_mod_env != null) { + var14 = this.pitch_mod_env.nextLevel(num_samples); + delay = this.pitch_mod_amp_env.nextLevel(num_samples); + var12 += this.method1716(pm_phase, delay, this.pitch_mod_env.waveTable) >> 1; + pm_phase += (var14 * pm_phase_delta >> 16) + pm_phase_delta_base; + } + + if (this.amplitudeModulationEnvelope != null) { + var14 = this.amplitudeModulationEnvelope.nextLevel(num_samples); + delay = this.amplitudeModulationAmplitudeEnvelope.nextLevel(num_samples); + var13 = var13 * ((this.method1716(var10, delay, this.amplitudeModulationEnvelope.waveTable) >> 1) + 32768) >> 15; + var10 += (var14 * var8 >> 16) + var9; + } + + for (var14 = 0; var14 < 5; ++var14) { + if (this.oscillatorAmplitudes[var14] != 0) { + delay = var11 + anIntArray1602[var14]; + if (delay < num_samples) { + output[delay] += this.method1716(anIntArray1601[var14], var13 * anIntArray1603[var14] >> 15, this.phaseEnvelope.waveTable); + anIntArray1601[var14] += (var12 * anIntArray1599[var14] >> 16) + anIntArray1600[var14]; + } + } + } + } + + int var16; + if (this.gateClosedPhaseEnvelope != null) { + this.gateClosedPhaseEnvelope.reset(); + this.gateOpenPhaseEnvelope.reset(); + var11 = 0; + + for (var14 = 0; var14 < num_samples; ++var14) { + delay = this.gateClosedPhaseEnvelope.nextLevel(num_samples); + var16 = this.gateOpenPhaseEnvelope.nextLevel(num_samples); + var12 = this.gateClosedPhaseEnvelope.minInterval + ((this.gateClosedPhaseEnvelope.maxInterval - this.gateClosedPhaseEnvelope.minInterval) * delay >> 8); + var11 += 256; + if (var11 >= var12) { + var11 = 0; + } else { + output[var14] = 0; + } + } + } + + if (this.delayTime > 0 && this.delayMix > 0) { + var11 = (int) ((double) this.delayTime * sample_rate); + + for (var12 = var11; var12 < num_samples; ++var12) { + output[var12] += output[var12 - var11] * this.delayMix / 100; + } + } + + if (this.filter.pairs[0] > 0 || this.filter.pairs[1] > 0) { + this.filterEnvelope.reset(); + var11 = this.filterEnvelope.nextLevel(num_samples + 1); + var12 = this.filter.compute(0, (float) var11 / 65536.0F); + var13 = this.filter.compute(1, (float) var11 / 65536.0F); + if (num_samples >= var12 + var13) { + var14 = 0; + delay = var13; + if (var13 > num_samples - var12) { + delay = num_samples - var12; + } + + int var17; + while (var14 < delay) { + var16 = (int) ((long) output[var14 + var12] * (long) inverseA0 >> 16); + + for (var17 = 0; var17 < var12; ++var17) { + var16 += (int) ((long) output[var14 + var12 - 1 - var17] * (long) coefficency[0][var17] >> 16); + } + + for (var17 = 0; var17 < var14; ++var17) { + var16 -= (int) ((long) output[var14 - 1 - var17] * (long) coefficency[1][var17] >> 16); + } + + output[var14] = var16; + var11 = this.filterEnvelope.nextLevel(num_samples + 1); + ++var14; + } + + delay = 128; + + while (true) { + if (delay > num_samples - var12) { + delay = num_samples - var12; + } + + while (var14 < delay) { + var16 = (int) ((long) output[var14 + var12] * (long) inverseA0 >> 16); + + for (var17 = 0; var17 < var12; ++var17) { + var16 += (int) ((long) output[var14 + var12 - 1 - var17] * (long) coefficency[0][var17] >> 16); + } + + for (var17 = 0; var17 < var13; ++var17) { + var16 -= (int) ((long) output[var14 - 1 - var17] * (long) coefficency[1][var17] >> 16); + } + + output[var14] = var16; + var11 = this.filterEnvelope.nextLevel(num_samples + 1); + ++var14; + } + + if (var14 >= num_samples - var12) { + while (var14 < num_samples) { + var16 = 0; + + for (var17 = var14 + var12 - num_samples; var17 < var12; ++var17) { + var16 += (int) ((long) output[var14 + var12 - 1 - var17] * (long) coefficency[0][var17] >> 16); + } + + for (var17 = 0; var17 < var13; ++var17) { + var16 -= (int) ((long) output[var14 - 1 - var17] * (long) coefficency[1][var17] >> 16); + } + + output[var14] = var16; + this.filterEnvelope.nextLevel(num_samples + 1); + ++var14; + } + break; + } + + var12 = this.filter.compute(0, (float) var11 / 65536.0F); + var13 = this.filter.compute(1, (float) var11 / 65536.0F); + delay += 128; + } + } + } + + for (var11 = 0; var11 < num_samples; ++var11) { + if (output[var11] < -32768) { + output[var11] = -32768; + } + + if (output[var11] > 32767) { + output[var11] = 32767; + } + } + + } + return output; + } + + final void decode(DataBuffer buffer) { + this.phaseEnvelope = new Envelope(); + this.phaseEnvelope.decode(buffer); + this.amplitudeEnvelope = new Envelope(); + this.amplitudeEnvelope.decode(buffer); + + int phaseModulationWaveTable = buffer.readUnsignedByte(); + if (phaseModulationWaveTable != 0) { + --buffer.index; + this.pitch_mod_env = new Envelope(); + this.pitch_mod_env.decode(buffer); + this.pitch_mod_amp_env = new Envelope(); + this.pitch_mod_amp_env.decode(buffer); + } + + int amplitudeModulationWaveTable = buffer.readUnsignedByte(); + if (amplitudeModulationWaveTable != 0) { + --buffer.index; + this.amplitudeModulationEnvelope = new Envelope(); + this.amplitudeModulationEnvelope.decode(buffer); + this.amplitudeModulationAmplitudeEnvelope = new Envelope(); + this.amplitudeModulationAmplitudeEnvelope.decode(buffer); + } + + int gateWaveTable = buffer.readUnsignedByte(); + if (gateWaveTable != 0) { + --buffer.index; + this.gateClosedPhaseEnvelope = new Envelope(); + this.gateClosedPhaseEnvelope.decode(buffer); + this.gateOpenPhaseEnvelope = new Envelope(); + this.gateOpenPhaseEnvelope.decode(buffer); + } + + for (int var3 = 0; var3 < 10; ++var3) { + int amplitude = buffer.getSmart(); + if (amplitude == 0) { + break; + } + + this.oscillatorAmplitudes[var3] = amplitude; + this.anIntArray1605[var3] = buffer.getByteOrShort(); + this.oscillatorStartMillis[var3] = buffer.getSmart(); + } + + this.delayTime = buffer.getSmart(); + this.delayMix = buffer.getSmart(); + this.duration = buffer.readUnsignedShort(); + this.start = buffer.readUnsignedShort(); + this.filter = new Filter(); + this.filterEnvelope = new Envelope(); + this.filter.decode(buffer, this.filterEnvelope); + } +} diff --git a/Client/src/main/java/org/runite/client/SynthSound.java b/Client/src/main/java/org/runite/client/SynthSound.java new file mode 100644 index 000000000..415769368 --- /dev/null +++ b/Client/src/main/java/org/runite/client/SynthSound.java @@ -0,0 +1,101 @@ +package org.runite.client; + +public final class SynthSound { + + private final SynthInstrument[] synthInstruments = new SynthInstrument[10]; + private int end; + private int start; + + private SynthSound(DataBuffer buffer) { + for (int var2 = 0; var2 < 10; ++var2) { + int waveTable = buffer.readUnsignedByte(); + if (waveTable != 0) { + --buffer.index; + this.synthInstruments[var2] = new SynthInstrument(); + this.synthInstruments[var2].decode(buffer); + } + } + + this.start = buffer.readUnsignedShort(); + this.end = buffer.readUnsignedShort(); + } + + public static SynthSound create(CacheIndex var0, int var1, int var2) { + byte[] var3 = var0.getFile(var1, var2); + return var3 == null ? null : new SynthSound(new DataBuffer(var3)); + } + + private byte[] getSamples() { + int var1 = 0; + + int var2; + for (var2 = 0; var2 < 10; ++var2) { + if (this.synthInstruments[var2] != null && this.synthInstruments[var2].duration + this.synthInstruments[var2].start > var1) { + var1 = this.synthInstruments[var2].duration + this.synthInstruments[var2].start; + } + } + + if (var1 == 0) { + return new byte[0]; + } else { + var2 = 22050 * var1 / 1000; + byte[] var3 = new byte[var2]; + + for (int var4 = 0; var4 < 10; ++var4) { + if (this.synthInstruments[var4] != null) { + int var5 = this.synthInstruments[var4].duration * 22050 / 1000; + int var6 = this.synthInstruments[var4].start * 22050 / 1000; + int[] var7 = this.synthInstruments[var4].synthesize(var5, this.synthInstruments[var4].duration); + + for (int var8 = 0; var8 < var5; ++var8) { + int var9 = var3[var8 + var6] + (var7[var8] >> 8); + if ((var9 + 128 & -256) != 0) { + var9 = var9 >> 31 ^ 127; + } + + var3[var8 + var6] = (byte) var9; + } + } + } + + return var3; + } + } + + public final PcmSound toPCMSound() { + byte[] var1 = this.getSamples(); + return new PcmSound(var1, 22050 * this.start / 1000, 22050 * this.end / 1000); + } + + final int getStart() { + int start = 9999999; + + for (int var2 = 0; var2 < 10; ++var2) { + if (this.synthInstruments[var2] != null && this.synthInstruments[var2].start / 20 < start) { + start = this.synthInstruments[var2].start / 20; + } + } + + if (this.start < this.end && this.start / 20 < start) { + start = this.start / 20; + } + + if (start == 9999999 || start == 0) { + return 0; + } else { + for (int var2 = 0; var2 < 10; ++var2) { + if (this.synthInstruments[var2] != null) { + this.synthInstruments[var2].start -= start * 20; + } + } + + if (this.start < this.end) { + this.start -= start * 20; + this.end -= start * 20; + } + + return start; + } + } + +} diff --git a/Client/src/main/java/org/runite/client/TextCore.java b/Client/src/main/java/org/runite/client/TextCore.java new file mode 100644 index 000000000..3b6011d8b --- /dev/null +++ b/Client/src/main/java/org/runite/client/TextCore.java @@ -0,0 +1,317 @@ +package org.runite.client; + +import org.rs09.client.config.GameConfig; + +public class TextCore { + + /** + * Configs that are set by the client + */ + + + /** @woah + * A repository filled with text that can be set to whatever the user sees fit + * Each will be labeled for what their original purpose is for and the files that + * They reside in. + * + * RSString information: + * The way it was programmed certain symbols require a different type of value set + * to determine said symbol. You may notice ex: )2 or a )3)3 + * )2 = spacer )3 = period(.) + */ + + public static final RSString TOGGLE_ATK = RSString.parse("::toggleatk"); + public static final RSString TOGGLE_FK = RSString.parse("::togglefk"); + public static RSString COMMAND_BREAK_CLIENT_CONNECTION = RSString.parse("::clientdrop"); + public static RSString aString_1622 = RSString.parse("Card:"); + public static RSString aString_4057 = RSString.parse("Mem:"); + public static RSString aString_4052 = RSString.parse("www"); + public static RSString aString_3601 = RSString.parse(")3runescape)3com)4l="); + public static RSString aString_1932 = RSString.parse(")4a="); + public static RSString aString_1885 = RSString.parse("cookiehost"); + public static RSString aString_3637 = RSString.parse(")4p="); + /** + * Holiday Event Text + */ + //Halloween + public static RSString TrickorTreat = RSString.of("Trick-or-treat"); + public static RSString GazeInto = RSString.of("Gaze-into"); + public static RSString aString_132 = RSString.parse("::"); + public static RSString aString_119 = RSString.parse("runes"); + public static RSString aString_37 = RSString.parse("0(U"); + public static RSString aString_38 = RSString.parse("tbrefresh"); + public static RSString aString_1698 = RSString.parse("(R"); + public static RSString aString_1133 = RSString.parse(")4j"); + public static RSString aString_4066 = RSString.parse("
"); + public static RSString aString_2598 = RSString.parse("
"); + public static RSString aString_1326 = RSString.parse(")2"); + public static RSString aString_4049 = RSString.parse(""); + public static RSString aString_1617 = RSString.parse(")1a2)1m"); + /** + * Login Screen Text + * Files that use these texts: + */ + public static RSString RSLoadingPleaseWait = RSString.parse(GameConfig.SERVER_NAME + " is loading )2 please wait)3)3)3"); + static RSString LoadingConfig = RSString.parse("Loading config )2 "); + static RSString LoadedConfig = RSString.parse("Loaded config"); + static RSString LoadingSprites = RSString.parse("Loading sprites )2 "); + static RSString LoadedSprites = RSString.parse("Loaded sprites"); + static RSString LoadingWLD = RSString.parse("Loading world list data"); + static RSString LoadedWLD = RSString.parse("Loaded world list data"); + static RSString LoadingPleaseWait = RSString.parse("Please wait)3)3)3"); + static RSString LoadingPleaseWait2 = RSString.parse("Loading )2 please wait)3"); + static RSString LoadingFonts = RSString.parse("Loading fonts )2 "); + static RSString LoadedFonts = RSString.parse("Loaded fonts"); + static RSString LoadedWordPack = RSString.parse("Loaded wordpack"); + static RSString LoadingTextures = RSString.parse("Loading textures )2 "); + static RSString LoadedTextures = RSString.parse("Loaded textures"); + static RSString LoadingInterfaces = RSString.parse("Loading interfaces )2 "); + static RSString LoadedInterfaces = RSString.parse("Loaded interfaces"); + static RSString LoadingTitleScreen = RSString.parse("Loading title screen )2 "); + static RSString LoadingGeneral = RSString.parse("Loading)3)3)3"); + static RSString LoadingWordPack = RSString.parse("Loading wordpack )2 "); + static RSString LoadingConnecting = RSString.parse("Connecting.. This takes a LONG time."); + static RSString LoadedUpdateList = RSString.parse("Loaded update list"); + static RSString AttemptingReestablish = RSString.parse("Please wait )2 attempting to reestablish)3"); + static RSString CreatedWorld = RSString.parse("Created gameworld"); + static RSString CheckingForUpdates = RSString.parse("Checking for updates )2 "); + static RSString LoadedInputHandler = RSString.parse("Loaded input handler"); + static RSString OpenedTitleScreen = RSString.parse("Opened title screen"); + static RSString LoadedTitleScreen = RSString.parse("Loaded title screen"); + static RSString Starting3DLibrary = RSString.parse("Starting 3d Library"); + static RSString Started3DLibrary = RSString.parse("Started 3d Library"); + static RSString AllocatingMemory = RSString.parse("Allocating memory"); + static RSString AllocatedMemory = RSString.parse("Allocated memory"); + static RSString PreparedSoundEngine = RSString.parse("Prepared sound engine"); + static RSString ConxLost = RSString.parse("Connection lost)3"); + static RSString ConxUpdateServer = RSString.parse("Connected to update server"); + /** + * User Login/ User Text + */ + static RSString HasExpires = RSString.parse("; Expires="); + static RSString HasMaxAge = RSString.parse("; Max)2Age="); + static RSString HasAgeExpire = RSString.parse("; Expires=Thu)1 01)2Jan)21970 00:00:00 GMT; Max)2Age=0"); + static RSString HasLoggedIn = RSString.parse(" has logged in)3"); + static RSString HasLoggedOut = RSString.parse(" has logged out)3"); + static RSString HasFriendsListFull = RSString.parse("Your friend list is full)3 Max of 100 for free users)1 and 200 for members)3"); + static RSString HasIgnoreListFull = RSString.parse("Your ignore list is full)3 Max of 100 users)3"); + static RSString HasOnOwnFriendsList = RSString.parse("You can(Wt add yourself to your own friend list)3"); + static RSString HasOnOwnIgnoreList = RSString.parse("You can(Wt add yourself to your own ignore list)3"); + static RSString HasPleaseRemove = RSString.parse("Please remove "); + static RSString HasIgnoreToFriends = RSString.parse(" from your ignore list first)3"); + static RSString HasFriendsToIgnore = RSString.parse(" from your friend list first)3"); + static RSString HasFriendsAlready = RSString.parse(" is already on your friend list)3"); + static RSString HasIgnoreAlready = RSString.parse(" is already on your ignore list)3"); + static RSString HasWishToTrade = RSString.parse("wishes to trade with you)3"); + static RSString HasAttack = RSString.parse("Attack"); + static RSString HasUse = RSString.parse("Use"); + static RSString HasExamine = RSString.parse("Examine"); + static RSString HasTake = RSString.parse("Take"); + static RSString HasWalkHere = RSString.parse("Walk here"); + static RSString HasDrop = RSString.parse("Drop"); + static RSString HasDiscard = RSString.parse("Discard"); + static RSString HasHidden = RSString.parse("Hidden"); + static RSString HasNull = RSString.parse("null"); + static RSString HasCancel = RSString.parse("Cancel"); + static RSString HasFaceHere = RSString.parse("Face here"); + static RSString HasContinue = RSString.parse("Continue"); + static RSString HasClose = RSString.parse("Close"); + static RSString HasOK = RSString.parse("Ok"); + static RSString HasSelect = RSString.parse("Select"); + static RSString HasChooseOptions = RSString.parse("Choose Option"); + static RSString HasMoreOptions = RSString.parse(" more options"); + static RSString HasUnableFind = RSString.parse("Unable to find "); + static RSString HasSkill = RSString.parse("skill: "); + static RSString HasScroll = RSString.parse("scroll:"); + static RSString HasLevel = RSString.parse("level: "); + static RSString HasRating = RSString.parse("rating: "); + /** + * Money values (K (Thousand)), (M (Million)) + */ + static RSString ThousandK = RSString.parse("K"); + static RSString MillionM = RSString.parse("M"); + static RSString HasDuelFriend = RSString.parse(":duelfriend:"); + static RSString HasDuelStake = RSString.parse(":duelstake:"); + static RSString HasTrade = RSString.parse(":trade:"); + static RSString HasAssist = RSString.parse(":assist:"); + static RSString HasAssistRequest = RSString.parse(":assistreq:"); + static RSString HasClanRequest = RSString.parse(":clanreq:"); + static RSString HasClan = RSString.parse(":clan:"); + static RSString HasAllyReq = RSString.parse(":allyreq:"); + static RSString cmdChalReq = RSString.parse(":chalreq:"); + /** + * Archive Info for client cache lookup + */ + static RSString HasLabels = RSString.parse("_labels"); + static RSString HasPlayerLabels = RSString.parse("_labels"); + static RSString HasHuffman = RSString.parse("huffman"); + /** + * Colored Text Commands * For Color editing use ColorCore.java + * *Note not used to actually change the color of text + * Used as color coding commands such as: + * red: purple: etc. + */ + + static RSString TextColorYellow = RSString.parse("yellow:"); + static RSString TextColorRed = RSString.parse("red:"); + static RSString TextColorGreen = RSString.parse("green:"); + static RSString TextColorCyan = RSString.parse("cyan:"); + static RSString TextColorPurple = RSString.parse("purple:"); + static RSString TextColorWhite = RSString.parse("white:"); + static RSString TextFlashOne = RSString.parse("flash1:"); + static RSString TextFlashTwo = RSString.parse("flash2:"); + static RSString TextFlashThree = RSString.parse("flash3:"); + static RSString TextGlowOne = RSString.parse("glow1:"); + static RSString TextGlowTwo = RSString.parse("glow2:"); + static RSString TextGlowThree = RSString.parse("glow3:"); + static RSString TextWave = RSString.parse("wave:"); + static RSString TextWaveTwo = RSString.parse("wave2:"); + static RSString TextShake = RSString.parse("shake:"); + static RSString TextSlide = RSString.parse("slide:"); + /** + * Months of the year + * This was being accessed multiple times for other methods + */ + static RSString[] MonthsOfTheYear = new RSString[]{RSString.parse("Jan"), + RSString.parse("Feb"), + RSString.parse("Mar"), + RSString.parse("Apr"), + RSString.parse("May"), + RSString.parse("Jun"), + RSString.parse("Jul"), + RSString.parse("Aug"), + RSString.parse("Sep"), + RSString.parse("Oct"), + RSString.parse("Nov"), + RSString.parse("Dec")}; + static RSString[] DaysOfTheWeek = new RSString[]{RSString.parse("Sun"), + RSString.parse("Mon"), + RSString.parse("Tue"), + RSString.parse("Wed"), + RSString.parse("Thu"), + RSString.parse("Fri"), + RSString.parse("Sat")}; + /** + * Client Commands + */ + static RSString COMMAND_HIGHRES_GRAPHICS_RESIZE = RSString.parse("::wm2"); + static RSString COMMAND_SHIFT_DROP_CLICK = RSString.parse("::shiftclick"); + static RSString COMMAND_GETBITS = RSString.parse("::getbits"); + static RSString COMMAND_REPLACE_CANVAS = RSString.parse("::replacecanvas"); + static RSString COMMAND_HIGHRES_GRAPHICS_WINDOW = RSString.parse("::wm1"); + static RSString COMMAND_QA_OP_TEST = RSString.parse("::qa_op_test"); + static RSString COMMAND_NOCLIP = RSString.parse("::noclip"); + static RSString COMMAND_GARBAGE_COLLECTOR = RSString.parse("::gc"); + static RSString COMMAND_HIGHRES_GRAPHICS_FULLSCREEN = RSString.parse("::wm3"); + static RSString COMMAND_FPS = RSString.parse("::fps "); + static RSString COMMAND_TWEENING = RSString.parse("::tween"); + static RSString COMMAND_MEMORY_MANAGEMENT = RSString.parse("::mm"); + static RSString COMMAND_BREAK_JS5_CLIENT_CONNECTION = RSString.parse("::clientjs5drop"); + static RSString COMMAND_BREAK_JS5_SERVER_CONNECTION = RSString.parse("::serverjs5drop"); + static RSString COMMAND_GRAPHICS_CARD_MEMORY = RSString.parse("::cardmem"); + static RSString COMMAND_TOGGLE_FPSOFF = RSString.parse("::fpsoff"); + static RSString COMMAND_PC_CACHE_SIZE = RSString.parse("::pcachesize"); + static RSString aString_853 = RSString.parse("::tele "); + static RSString COMMAND_LOWRES_GRAPHICS = RSString.parse("::wm0"); + static RSString COMMAND_TOGGLE_FPSON = RSString.parse("::fpson"); + static RSString COMMAND_REBUILD = RSString.parse("::rebuild"); + static RSString COMMAND_BREAK_CONNECTION = RSString.parse("::breakcon"); + static RSString COMMAND_ERROR_TEST = RSString.parse("::errortest"); + static RSString COMMAND_SET_PARTICLES = RSString.parse("::setparticles"); + static RSString COMMAND_RECT_DEBUG = RSString.parse("::rect_debug"); + static RSString COMMAND_RENDER_INFO = RSString.parse("::renderinfo"); + static RSString COMMAND_DISCORD = RSString.parse("::discord"); + static RSString COMMAND_HIGHSCORES = RSString.parse("::highscores"); + static RSString COMMAND_HISCORES = RSString.parse("::hiscores"); + static RSString COMMAND_VARPDEBUG = RSString.parse("::verbose_varp"); + /** + * Used as text for client commands + */ + static RSString Memoryk = RSString.parse("k"); + static RSString aString_985 = RSString.parse("Fps:"); + static RSString aString_1630 = RSString.parse("Mem:"); + static RSString memoryBeforeCleanup = RSString.parse("Memory before cleanup="); + static RSString aString_3653 = RSString.parse("Shift)2click disabled)3"); + static RSString aString_434 = RSString.parse("Shift)2click ENABLED(Q"); + static RSString forcedTweeningDisabled = RSString.parse("Forced tweening disabled)3"); + static RSString forcedTweeningEnabled = RSString.parse("Forced tweening / animation smoothing ENABLED(Q"); + /** + * Website + */ + static RSString aString_577 = RSString.parse("http:)4)4"); + /** + * Displayed if user is on a f2p world + */ + static RSString MembersObject = RSString.parse("Members object"); + /** + * Fonts + */ + public static java.awt.Font Helvetica = new java.awt.Font("Helvetica", java.awt.Font.BOLD, 13); + /** + * Unsorted + */ + static RSString Spacer = RSString.parse(" "); + static RSString aString_3339 = RSString.parse("null"); + static RSString aString_3357 = RSString.parse(""); + static RSString memoryEquals = RSString.parse("mem="); + static RSString aString_3399 = RSString.parse("
(X"); + static RSString aString_3418 = RSString.parse("(U5"); + static RSString aString_2498 = RSString.parse("(U (X"); + static RSString aString_3574 = RSString.parse("titlebg"); + static RSString aString_3577 = RSString.parse(": "); + static RSString aString_3703 = RSString.parse(" )2> "); + static RSString aString_3777 = RSString.parse(" x "); + static RSString aString_2608 = RSString.parse(")4l="); + static RSString aString_2168 = RSString.parse("
"); + static RSString aString_106 = RSString.parse("showVideoAd"); + static RSString aString_331 = RSString.parse("(U1"); + static RSString aString_339 = RSString.parse("1"); + static RSString aString_341 = RSString.parse(")3"); + static RSString aString_436 = RSString.parse("Cache:"); + static RSString aString_442 = RSString.parse("Number of player models in cache:"); + static RSString aString_516 = RSString.parse("unzap"); + static RSString aString_2610 = RSString.parse(")1o"); + static RSString aString_673 = RSString.parse(")0"); + static RSString aString_676 = null; + static RSString aString_852 = RSString.parse("(U4"); + static RSString aString_892 = RSString.parse(" )2> "); + static RSString aString_1051 = RSString.parse("(Udns"); + static RSString LEFT_PARENTHESES = RSString.parse(" (X"); + static RSString aString_1076 = RSString.parse("<)4col>"); + static RSString aString_1151 = RSString.parse("settings="); + static RSString aString_1301 = RSString.parse("(U3"); + static RSString aString_1341 = RSString.parse("logo"); + static RSString aString_1342 = RSString.parse("details"); + static RSString aString_2171 = RSString.parse(""); + static RSString aString_1687 = RSString.parse("(Z"); + static RSString aString_1694 = RSString.parse("document)3cookie=(R"); + static RSString aString_1724 = RSString.parse(" )2>"); + static RSString aString_1745 = RSString.parse("settings"); + static RSString aString_1760 = RSString.parse(""); + static RSString aString_2707 = RSString.parse("
(X100(U(Y"); + static RSString aString_2735 = RSString.parse(")4"); + static RSString aString_2765 = RSString.parse(" "); + static RSString aString_2928 = RSString.parse("null"); + static RSString aString_1880 = RSString.parse(")1"); + static RSString aString_2006 = RSString.parse("null"); + static RSString aString_2018 = RSString.parse("Cabbage"); + static RSString aString_2025 = RSString.parse(")2"); + static RSString aString_2033 = RSString.parse("Memory after cleanup="); + static RSString aString_2044 = RSString.parse("cookieprefix"); + static RSString aString_4007 = RSString.parse(":"); + static RSString aString_4023 = RSString.parse(")3"); + static RSString aString_3013 = RSString.parse("0"); + static RSString aString_2074 = RSString.parse("; version=1; path=)4; domain="); + static RSString rectDebugEquals = RSString.parse("rect_debug="); + static RSString aString_2080 = RSString.parse("(U2"); + static RSString aString_2116 = RSString.parse("Hidden)2use"); + static RSString aString_1915 = RSString.parse("Null"); + static RSString aString_2584 = RSString.parse("<)4col>"); + static RSString aString_209 = RSString.parse("event_opbase"); + static RSString aString_2304 = RSString.parse("details"); + static RSString aString_2306 = RSString.parse("<)4col> x"); + static RSString aString_2323 = RSString.parse(""); + static RSString aString_2331 = RSString.parse(""); + static RSString RIGHT_PARENTHESES = RSString.parse("(Y"); + +} diff --git a/Client/src/main/java/org/runite/client/Texture.java b/Client/src/main/java/org/runite/client/Texture.java new file mode 100644 index 000000000..27f61f278 --- /dev/null +++ b/Client/src/main/java/org/runite/client/Texture.java @@ -0,0 +1,826 @@ +package org.runite.client; + +import org.rs09.client.data.ReferenceCache; + +import java.util.Objects; + +public final class Texture { + + static int anInt2208 = -1; + static int[] anIntArray2213 = new int[]{16776960, 16711680, 65280, 65535, 16711935, 16777215}; + static RSString[] aStringArray3317 = new RSString[TextureOperation35.anInt3332]; + static int[] anIntArray3318 = new int[TextureOperation35.anInt3332]; + static int[] anIntArray3319 = new int[TextureOperation35.anInt3332]; + static int[] anIntArray3327 = new int[TextureOperation35.anInt3332]; + static int[] anIntArray3329 = new int[TextureOperation35.anInt3332]; + static int[] anIntArray3331 = new int[TextureOperation35.anInt3332]; + static int[] anIntArray3336 = new int[TextureOperation35.anInt3332]; + static int[] anIntArray3337 = new int[TextureOperation35.anInt3332]; + static int anInt1668 = -1; + static ReferenceCache aReferenceCache_1146 = new ReferenceCache(64); + static int anInt1150 = -1; + public static int y1152; + private final int[] anIntArray1144; + private final TextureOperation aClass3_Sub13_1145; + private final TextureOperation[] aClass3_Sub13Array1147; + private final TextureOperation aClass3_Sub13_1148; + private final int[] anIntArray1149; + + + public Texture() { + try { + this.anIntArray1149 = new int[0]; + this.anIntArray1144 = new int[0]; + this.aClass3_Sub13_1145 = new TextureOperation0(); + this.aClass3_Sub13_1145.imageCacheCapacity = 1; + this.aClass3_Sub13_1148 = new TextureOperation0(); + this.aClass3_Sub13Array1147 = new TextureOperation[]{this.aClass3_Sub13_1145, this.aClass3_Sub13_1148}; + this.aClass3_Sub13_1148.imageCacheCapacity = 1; + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "lc.()"); + } + } + + Texture(DataBuffer var1) { + try { + int var2 = var1.readUnsignedByte(); + this.aClass3_Sub13Array1147 = new TextureOperation[var2]; + int[][] var5 = new int[var2][]; + int var4 = 0; + int var3 = 0; + + int var6; + TextureOperation textureOperation; + int var8; + int var9; + for (var6 = 0; var2 > var6; ++var6) { + textureOperation = decodeTexture(var1); + if (0 <= textureOperation.method159(4)) { + ++var3; + } + + if (textureOperation.getSpriteFrame() >= 0) { + ++var4; + } + + var8 = textureOperation.subOperations.length; + var5[var6] = new int[var8]; + + for (var9 = 0; var9 < var8; ++var9) { + var5[var6][var9] = var1.readUnsignedByte(); + } + + this.aClass3_Sub13Array1147[var6] = textureOperation; + } + + this.anIntArray1144 = new int[var3]; + this.anIntArray1149 = new int[var4]; + var3 = 0; + var4 = 0; + + for (var6 = 0; var6 < var2; ++var6) { + textureOperation = this.aClass3_Sub13Array1147[var6]; + var8 = textureOperation.subOperations.length; + + for (var9 = 0; var8 > var9; ++var9) { + textureOperation.subOperations[var9] = this.aClass3_Sub13Array1147[var5[var6][var9]]; + } + + var9 = textureOperation.method159(4); + int var10 = textureOperation.getSpriteFrame(); + if (var9 > 0) { + this.anIntArray1144[var3++] = var9; + } + + if (var10 > 0) { + this.anIntArray1149[var4++] = var10; + } + + var5[var6] = null; + } + + this.aClass3_Sub13_1145 = this.aClass3_Sub13Array1147[var1.readUnsignedByte()]; + this.aClass3_Sub13_1148 = this.aClass3_Sub13Array1147[var1.readUnsignedByte()]; + } catch (RuntimeException var11) { + throw ClientErrorException.clientError(var11, "lc.(" + (var1 != null ? "{...}" : "null") + ')'); + } + } + + static void method1405(int var0, int var1, int var2, int var3, int var4, int var5, int var6) { + try { + TextureOperation8.anInt3464 = 0; + + int var7; + int var15; + int var19; + int var21; + int var22; + int var29; + int var32; + for (var7 = -1; var7 < Class159.localPlayerCount + Class163.localNPCCount; ++var7) { + Entity var8; + if (var7 == -1) { + var8 = Class102.player; + } else if (var7 < Class159.localPlayerCount) { + var8 = Unsorted.players[Class56.localPlayerIndexes[var7]]; + } else { + var8 = NPC.npcs[AudioThread.localNPCIndexes[-Class159.localPlayerCount + var7]]; + } + + if (null != var8 && var8.hasDefinitions()) { + NPCDefinition var9; + if (var8 instanceof NPC) { + var9 = ((NPC) var8).definition; + if (null != var9.childNPCs) { + var9 = var9.method1471((byte) -93); + } + + if (var9 == null) { + continue; + } + } + + int var12; + if (var7 < Class159.localPlayerCount) { + var19 = 30; + Player var10 = (Player) var8; + if (var10.skullIcon != -1 || -1 != var10.headIcon) { + Class107.method1647(var4 >> 1, var3, var8, var5, var8.method1975(var6 ^ -28716) - -15, var1 >> 1); + if (-1 < Class32.anInt590) { + if (var10.skullIcon != -1) { + TextureOperation2.aAbstractSpriteArray3373[var10.skullIcon].drawAt(-12 + Class32.anInt590 + var2, -var19 + var0 + anInt2208); + var19 += 25; + } + + if (var10.headIcon != -1) { + NPC.aAbstractSpriteArray3977[var10.headIcon].drawAt(-12 + var2 + Class32.anInt590, var0 - (-anInt2208 + var19)); + var19 += 25; + } + } + } + + if (var7 >= 0) { + Class96[] var11 = ClientErrorException.aClass96Array2114; + + for (var12 = 0; var12 < var11.length; ++var12) { + Class96 var13 = var11[var12]; + if (null != var13 && var13.anInt1360 == 10 && Class56.localPlayerIndexes[var7] == var13.anInt1359) { + Class107.method1647(var4 >> 1, var3, var8, var5, var8.method1975(var6 ^ -28716) - -15, var1 >> 1); + if (Class32.anInt590 > -1) { + Class166.aAbstractSpriteArray2072[var13.anInt1351].drawAt(var2 - (-Class32.anInt590 + 12), var0 + (anInt2208 - var19)); + } + } + } + } + } else { + var9 = ((NPC) var8).definition; + if (var9.childNPCs != null) { + var9 = var9.method1471((byte) 102); + } + + if (Objects.requireNonNull(var9).anInt1269 >= 0 && NPC.aAbstractSpriteArray3977.length > var9.anInt1269) { + if (var9.anInt1265 == -1) { + var22 = 15 + var8.method1975(27855); + } else { + var22 = 15 + var9.anInt1265; + } + + Class107.method1647(var4 >> 1, var3, var8, var5, var22, var1 >> 1); + if (Class32.anInt590 > -1) { + NPC.aAbstractSpriteArray3977[var9.anInt1269].drawAt(var2 - -Class32.anInt590 - 12, -30 + var0 - -anInt2208); + } + } + + Class96[] var20 = ClientErrorException.aClass96Array2114; + + for (var21 = 0; var20.length > var21; ++var21) { + Class96 var24 = var20[var21]; + if (null != var24 && var24.anInt1360 == 1 && AudioThread.localNPCIndexes[-Class159.localPlayerCount + var7] == var24.anInt1359 && Class44.anInt719 % 20 < 10) { + if (-1 == var9.anInt1265) { + var29 = 15 + var8.method1975(var6 + '\u89b4'); + } else { + var29 = 15 + var9.anInt1265; + } + + Class107.method1647(var4 >> 1, var3, var8, var5, var29, var1 >> 1); + if (Class32.anInt590 > -1) { + Class166.aAbstractSpriteArray2072[var24.anInt1351].drawAt(-12 + var2 + Class32.anInt590, -28 + anInt2208 + var0); + } + } + } + } + + if (var8.textSpoken != null && (var7 >= Class159.localPlayerCount || CS2Script.anInt3101 == 0 || 3 == CS2Script.anInt3101 || 1 == CS2Script.anInt3101 && ItemDefinition.method1176(((Player) var8).displayName))) { + Class107.method1647(var4 >> 1, var3, var8, var5, var8.method1975(27855), var1 >> 1); + if (-1 < Class32.anInt590 && TextureOperation8.anInt3464 < TextureOperation35.anInt3332) { + anIntArray3329[TextureOperation8.anInt3464] = FontType.bold.method682(var8.textSpoken) / 2; + anIntArray3327[TextureOperation8.anInt3464] = FontType.bold.anInt3727; + anIntArray3319[TextureOperation8.anInt3464] = Class32.anInt590; + anIntArray3337[TextureOperation8.anInt3464] = anInt2208; + anIntArray3331[TextureOperation8.anInt3464] = var8.textColor; + anIntArray3336[TextureOperation8.anInt3464] = var8.textEffect; + anIntArray3318[TextureOperation8.anInt3464] = var8.textCycle; + aStringArray3317[TextureOperation8.anInt3464] = var8.textSpoken; + ++TextureOperation8.anInt3464; + } + } + + if (Class44.anInt719 < var8.anInt2781) { + AbstractSprite var23 = Unsorted.aAbstractSpriteArray996[0]; + AbstractSprite var25 = Unsorted.aAbstractSpriteArray996[1]; + if (var8 instanceof NPC) { + NPC var28 = (NPC) var8; + AbstractSprite[] var31 = (AbstractSprite[]) TextureOperation1.aReferenceCache_3130.get(var28.definition.anInt1279); + if (var31 == null) { + var31 = Class140_Sub6.getSprites(var28.definition.anInt1279, CacheIndex.spritesIndex); + if (null != var31) { + TextureOperation1.aReferenceCache_3130.put(var31, var28.definition.anInt1279); + } + } + + if (null != var31 && var31.length == 2) { + var25 = var31[1]; + var23 = var31[0]; + } + + NPCDefinition var14 = var28.definition; + if (-1 == var14.anInt1265) { + var21 = var8.method1975(27855); + } else { + var21 = var14.anInt1265; + } + } else { + var21 = var8.method1975(27855); + } + + Class107.method1647(var4 >> 1, var3, var8, var5, var23.height + 10 + var21, var1 >> 1); + if (-1 < Class32.anInt590) { + var12 = -(var23.width >> 1) + Class32.anInt590 + var2; + var29 = anInt2208 + var0 + -3; + var23.drawAt(var12, var29); + var32 = var23.width * var8.anInt2775 / 255; + var15 = var23.height; + if (HDToolKit.highDetail) { + Class22.method931(var12, var29, var12 + var32, var29 + var15); + } else { + Class74.method1326(var12, var29, var12 + var32, var15 + var29); + } + + var25.drawAt(var12, var29); + if (HDToolKit.highDetail) { + Class22.setClipping(var2, var0, var1 + var2, var0 - -var4); + } else { + Class74.setClipping(var2, var0, var1 + var2, var4 + var0); + } + } + } + + for (var19 = 0; var19 < 4; ++var19) { + if (Class44.anInt719 < var8.anIntArray2768[var19]) { + if (var8 instanceof NPC) { + NPC var30 = (NPC) var8; + NPCDefinition var26 = var30.definition; + if (var26.anInt1265 == -1) { + var22 = var8.method1975(27855) / 2; + } else { + var22 = var26.anInt1265 / 2; + } + } else { + var22 = var8.method1975(var6 ^ -28716) / 2; + } + + Class107.method1647(var4 >> 1, var3, var8, var5, var22, var1 >> 1); + if (-1 < Class32.anInt590) { + if (var19 == 1) { + anInt2208 -= 20; + } + + if (var19 == 2) { + anInt2208 -= 10; + Class32.anInt590 -= 15; + } + + if (3 == var19) { + anInt2208 -= 10; + Class32.anInt590 += 15; + } + + Class75_Sub3.aAbstractSpriteArray2656[var8.anIntArray2815[var19]].drawAt(-12 + var2 + Class32.anInt590, var0 + anInt2208 - 12); + FontType.smallFont.method699(RSString.stringAnimator(var8.anIntArray2836[var19]), -1 + Class32.anInt590 + var2, 3 + anInt2208 + var0, 16777215, 0); + } + } + } + } + } + + var7 = 0; + if (var6 != -7397) { + method1409(true); + } + + for (; TextureOperation8.anInt3464 > var7; ++var7) { + var19 = anIntArray3337[var7]; + int var18 = anIntArray3319[var7]; + var21 = anIntArray3327[var7]; + var22 = anIntArray3329[var7]; + boolean var27 = true; + + while (var27) { + var27 = false; + + for (var29 = 0; var7 > var29; ++var29) { + if (anIntArray3337[var29] - anIntArray3327[var29] < 2 + var19 && -var21 + var19 < anIntArray3337[var29] - -2 && -var22 + var18 < anIntArray3319[var29] + anIntArray3329[var29] && anIntArray3319[var29] - anIntArray3329[var29] < var22 + var18 && -anIntArray3327[var29] + anIntArray3337[var29] < var19) { + var19 = anIntArray3337[var29] - anIntArray3327[var29]; + var27 = true; + } + } + } + + Class32.anInt590 = anIntArray3319[var7]; + anInt2208 = anIntArray3337[var7] = var19; + RSString var33 = aStringArray3317[var7]; + if (Unsorted.anInt688 == 0) { + var32 = 16776960; + if (anIntArray3331[var7] < 6) { + var32 = anIntArray2213[anIntArray3331[var7]]; + } + + if (6 == anIntArray3331[var7]) { + var32 = 10 <= CSConfigCachefile.anInt1127 % 20 ? 16776960 : 16711680; + } + + if (anIntArray3331[var7] == 7) { + var32 = CSConfigCachefile.anInt1127 % 20 < 10 ? 255 : 65535; + } + + if (8 == anIntArray3331[var7]) { + var32 = CSConfigCachefile.anInt1127 % 20 >= 10 ? 8454016 : '\ub000'; + } + + if (9 == anIntArray3331[var7]) { + var15 = -anIntArray3318[var7] + 150; + if (var15 >= 50) { + if (var15 >= 100) { + if (150 > var15) { + var32 = -500 - (-(5 * var15) - 65280); + } + } else { + var32 = 16776960 + 16384000 + -(327680 * var15); + } + } else { + var32 = var15 * 1280 + 16711680; + } + } + + if (10 == anIntArray3331[var7]) { + var15 = -anIntArray3318[var7] + 150; + if (50 <= var15) { + if (var15 < 100) { + var32 = -(327680 * (-50 + var15)) + 16711935; + } else if (150 > var15) { + var32 = 327680 * var15 - (32768000 - (255 + -(5 * var15) + 500)); + } + } else { + var32 = 16711680 + var15 * 5; + } + } + + if (anIntArray3331[var7] == 11) { + var15 = 150 + -anIntArray3318[var7]; + if (var15 >= 50) { + if (var15 >= 100) { + if (var15 < 150) { + var32 = 16777215 - var15 * 327680 + 32768000; + } + } else { + var32 = 65280 - (-(327685 * var15) - -16384250); + } + } else { + var32 = 16777215 - 327685 * var15; + } + } + + if (0 == anIntArray3336[var7]) { + FontType.bold.method699(var33, Class32.anInt590 + var2, var0 + anInt2208, var32, 0); + } + + if (1 == anIntArray3336[var7]) { + FontType.bold.method696(var33, var2 - -Class32.anInt590, anInt2208 + var0, var32, CSConfigCachefile.anInt1127); + } + + if (anIntArray3336[var7] == 2) { + FontType.bold.method695(var33, var2 - -Class32.anInt590, var0 - -anInt2208, var32, CSConfigCachefile.anInt1127); + } + + if (anIntArray3336[var7] == 3) { + FontType.bold.method692(var33, var2 + Class32.anInt590, anInt2208 + var0, var32, CSConfigCachefile.anInt1127, 150 - anIntArray3318[var7]); + } + + if (4 == anIntArray3336[var7]) { + var15 = (-anIntArray3318[var7] + 150) * (FontType.bold.method682(var33) - -100) / 150; + if (HDToolKit.highDetail) { + Class22.method931(Class32.anInt590 + var2 + -50, var0, Class32.anInt590 + var2 - -50, var4 + var0); + } else { + Class74.method1326(-50 + (var2 - -Class32.anInt590), var0, 50 + Class32.anInt590 + var2, var4 + var0); + } + + FontType.bold.method681(var33, var2 - (-Class32.anInt590 + -50) + -var15, var0 + anInt2208, var32, 0); + if (HDToolKit.highDetail) { + Class22.setClipping(var2, var0, var1 + var2, var4 + var0); + } else { + Class74.setClipping(var2, var0, var2 - -var1, var0 + var4); + } + } + + if (anIntArray3336[var7] == 5) { + int var16 = 0; + var15 = -anIntArray3318[var7] + 150; + if (HDToolKit.highDetail) { + Class22.method931(var2, -1 + -FontType.bold.anInt3727 + anInt2208 + var0, var1 + var2, 5 + var0 - -anInt2208); + } else { + Class74.method1326(var2, -1 + -FontType.bold.anInt3727 + anInt2208 + var0, var2 + var1, 5 + anInt2208 + var0); + } + + if (25 > var15) { + var16 = var15 + -25; + } else if (var15 > 125) { + var16 = var15 - 125; + } + + FontType.bold.method699(var33, Class32.anInt590 + var2, var16 + var0 + anInt2208, var32, 0); + if (HDToolKit.highDetail) { + Class22.setClipping(var2, var0, var2 - -var1, var0 + var4); + } else { + Class74.setClipping(var2, var0, var2 + var1, var0 + var4); + } + } + } else { + FontType.bold.method699(var33, var2 - -Class32.anInt590, var0 + anInt2208, 16776960, 0); + } + } + + } catch (RuntimeException var17) { + throw ClientErrorException.clientError(var17, "lc.D(" + var0 + ',' + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + var5 + ',' + var6 + ')'); + } + } + + static int method1406() { + try { + return Unsorted.anInt4045; + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "lc.E(" + (byte) -43 + ')'); + } + } + + public static void method1409(boolean var0) { + try { + aReferenceCache_1146 = null; + if (var0) { + TextCore.aString_1151 = null; + } + + TextCore.aString_1151 = null; + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "lc.A(" + var0 + ')'); + } + } + + public static TextureOperation decodeTexture(DataBuffer var1) { + try { + var1.readUnsignedByte(); + int type = var1.readUnsignedByte(); + TextureOperation var3 = create(type); + Objects.requireNonNull(var3).imageCacheCapacity = var1.readUnsignedByte(); + int codes = var1.readUnsignedByte(); + for (int var5 = 0; var5 < codes; ++var5) { + int opcode = var1.readUnsignedByte(); + var3.decode(opcode, var1); + } + + var3.postDecode(); + return var3; + } catch (RuntimeException var7) { + throw ClientErrorException.clientError(var7, "qk.B(" + (byte) -67 + ',' + (var1 != null ? "{...}" : "null") + ')'); + } + } + + public static TextureOperation create(int type) { + if (type == 0) { + return new TextureOperation0(); + } else if (type == 1) { + return new TextureOperation1(); + } else if (2 == type) { + return new TextureOperation2(); + } else if (type == 3) { + return new TextureOperation3(); + } else if (type == 4) { + return new TextureOperation4(); + } else if (type == 5) { + return new TextureOperation5(); + } else if (type == 6) { + return new TextureOperation6(); + } else if (type == 7) { + return new TextureOperation7(); + } else if (type == 8) { + return new TextureOperation8(); + } else if (9 == type) { + return new TextureOperation9(); + } else if (10 == type) { + return new TextureOperation10(); + } else if (type == 11) { + return new TextureOperation11(); + } else if (type == 12) { + return new TextureOperation12(); + } else if (type == 13) { + return new TextureOperation13(); + } else if (14 == type) { + return new TextureOperation14(); + } else if (type == 15) { + return new TextureOperation15(); + } else if (type == 16) { + return new TextureOperation16(); + } else if (17 == type) { + return new TextureOperation17(); + } else if (type == 18) { + return new TextureOperation18(); + } else if (type == 19) { + return new TextureOperation19(); + } else if (type == 20) { + return new TextureOperation20(); + } else if (21 == type) { + return new TextureOperation21(); + } else if (22 == type) { + return new TextureOperation22(); + } else if (type == 23) { + return new TextureOperation23(); + } else if (24 == type) { + return new TextureOperation24(); + } else if (type == 25) { + return new TextureOperation25(); + } else if (type == 26) { + return new TextureOperation26(); + } else if (27 == type) { + return new TextureOperation27(); + } else if (type == 28) { + return new TextureOperation28(); + } else if (type == 29) { + return new TextureOperation29(); + } else if (type == 30) { + return new TextureOperation30(); + } else if (31 == type) { + return new TextureOperation31(); + } else if (32 == type) { + return new TextureOperation32(); + } else if (33 == type) { + return new TextureOperation33(); + } else if (type == 34) { + return new TextureOperation34(); + } else if (type == 35) { + return new TextureOperation35(); + } else if (type == 36) { + return new TextureOperation36(); + } else if (type == 37) { + return new TextureOperation37(); + } else if (38 == type) { + return new TextureOperation38(); + } else if (39 == type) { + return new TextureOperation39(); + } else { + return null; + } + } + + final int[] method1404(int var1, boolean var2, int var3, double var4, CacheIndex var7, Interface2 var8, boolean var9) { + try { + GameObject.method1859(var4); + Class17.anInterface2_408 = var8; + WaterfallShader.spritesIndex_probably_2172 = var7; + TextureOperation33.method180(-1, var1, var3); + + int var11; + for (var11 = 0; var11 < this.aClass3_Sub13Array1147.length; ++var11) { + this.aClass3_Sub13Array1147[var11].method160(var1, var3); + } + + int[] var10 = new int[var1 * var3]; + int var12; + byte var13; + if (var9) { + var13 = -1; + var12 = -1; + var11 = var3 - 1; + } else { + var13 = 1; + var11 = 0; + var12 = var3; + } + + int var14 = 0; + + int var15; + for (var15 = 0; var1 > var15; ++var15) { + if (var2) { + var14 = var15; + } + + int[] var17; + int[] var16; + int[] var18; + if (this.aClass3_Sub13_1145.aBoolean2375) { + int[] var19 = this.aClass3_Sub13_1145.method154(var15, (byte) 109); + var16 = var19; + var17 = var19; + var18 = var19; + } else { + int[][] var24 = this.aClass3_Sub13_1145.method166(var15); + var16 = var24[0]; + var18 = var24[2]; + var17 = var24[1]; + } + + for (int var25 = var11; var25 != var12; var25 += var13) { + int var20 = var16[var25] >> 4; + if (var20 > 255) { + var20 = 255; + } + + if (var20 < 0) { + var20 = 0; + } + + var20 = BufferedDataStream.anIntArray3804[var20]; + int var22 = var18[var25] >> 4; + int var21 = var17[var25] >> 4; + if (var21 > 255) { + var21 = 255; + } + + if (0 > var21) { + var21 = 0; + } + + if (var22 > 255) { + var22 = 255; + } + + var21 = BufferedDataStream.anIntArray3804[var21]; + if (var22 < 0) { + var22 = 0; + } + + var22 = BufferedDataStream.anIntArray3804[var22]; + var10[var14++] = (var20 << 16) - -(var21 << 8) + var22; + if (var2) { + var14 += var3 + -1; + } + } + } + + for (var15 = 0; var15 < this.aClass3_Sub13Array1147.length; ++var15) { + this.aClass3_Sub13Array1147[var15].method161((byte) -45); + } + + return var10; + } catch (RuntimeException var23) { + throw ClientErrorException.clientError(var23, "lc.C(" + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + 327680 + ',' + (var7 != null ? "{...}" : "null") + ',' + (var8 != null ? "{...}" : "null") + ',' + var9 + ')'); + } + } + + final byte[] method1407(int var1, int var2, boolean var3, Interface2 var4, CacheIndex var8) { + try { + byte[] var9 = new byte[4 * var2 * var1]; + GameObject.method1859(0.7); + WaterfallShader.spritesIndex_probably_2172 = var8; + Class17.anInterface2_408 = var4; + TextureOperation33.method180(-32, var1, var2); + + int var10; + for (var10 = 0; this.aClass3_Sub13Array1147.length > var10; ++var10) { + this.aClass3_Sub13Array1147[var10].method160(var1, var2); + } + + var10 = 0; + + int var11; + for (var11 = 0; var11 < var1; ++var11) { + if (var3) { + var10 = var11 << 2; + } + + int[] var12; + int[] var13; + int[] var14; + int[] var15; + if (this.aClass3_Sub13_1145.aBoolean2375) { + var15 = this.aClass3_Sub13_1145.method154(var11, (byte) -98); + var12 = var15; + var13 = var15; + var14 = var15; + } else { + int[][] var22 = this.aClass3_Sub13_1145.method166(var11); + var12 = var22[0]; + var13 = var22[1]; + var14 = var22[2]; + } + + if (this.aClass3_Sub13_1148.aBoolean2375) { + var15 = this.aClass3_Sub13_1148.method154(var11, (byte) -103); + } else { + var15 = this.aClass3_Sub13_1148.method166(var11)[0]; + } + + for (int var16 = var2 - 1; var16 >= 0; --var16) { + int var17 = var12[var16] >> 4; + if (var17 > 255) { + var17 = 255; + } + + if (var17 < 0) { + var17 = 0; + } + + int var18 = var13[var16] >> 4; + if (var18 > 255) { + var18 = 255; + } + + int var19 = var14[var16] >> 4; + if (var19 > 255) { + var19 = 255; + } + + var17 = BufferedDataStream.anIntArray3804[var17]; + if (var19 < 0) { + var19 = 0; + } + + if (var18 < 0) { + var18 = 0; + } + + var18 = BufferedDataStream.anIntArray3804[var18]; + var19 = BufferedDataStream.anIntArray3804[var19]; + int var20; + if (var17 == 0 && var18 == 0 && var19 == 0) { + var20 = 0; + } else { + var20 = var15[var16] >> 4; + if (255 < var20) { + var20 = 255; + } + + if (var20 < 0) { + var20 = 0; + } + } + + var9[var10++] = (byte) var17; + var9[var10++] = (byte) var18; + var9[var10++] = (byte) var19; + var9[var10++] = (byte) var20; + if (var3) { + var10 += -4 + (var2 << 2); + } + } + } + + for (var11 = 0; this.aClass3_Sub13Array1147.length > var11; ++var11) { + this.aClass3_Sub13Array1147[var11].method161((byte) -45); + } + + return var9; + } catch (RuntimeException var21) { + throw ClientErrorException.clientError(var21, "lc.F(" + var1 + ',' + var2 + ',' + var3 + ',' + (var4 != null ? "{...}" : "null") + ',' + 0.7 + ',' + 8839 + ',' + (var8 != null ? "{...}" : "null") + ')'); + } + } + + final boolean method1408(Interface2 var2, CacheIndex var3) { + try { + int var4; + if (0 < anInt1668) { + for (var4 = 0; this.anIntArray1144.length > var4; ++var4) { + if (!var3.method2129((byte) -78, this.anIntArray1144[var4], anInt1668)) { + return false; + } + } + } else { + for (var4 = 0; this.anIntArray1144.length > var4; ++var4) { + if (!var3.retrieveSpriteFile(this.anIntArray1144[var4])) { + return false; + } + } + } + + for (var4 = 0; var4 < this.anIntArray1149.length; ++var4) { + if (!var2.method11(21, this.anIntArray1149[var4])) { + return false; + } + } + + return true; + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "lc.B(" + true + ',' + (var2 != null ? "{...}" : "null") + ',' + (var3 != null ? "{...}" : "null") + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/TextureOperation.java b/Client/src/main/java/org/runite/client/TextureOperation.java new file mode 100644 index 000000000..870ca0b63 --- /dev/null +++ b/Client/src/main/java/org/runite/client/TextureOperation.java @@ -0,0 +1,155 @@ +package org.runite.client; + +import org.rs09.client.Linkable; +import org.runite.client.drawcalls.LoadingBox; + +import java.util.Random; + +public abstract class TextureOperation extends Linkable { + + boolean aBoolean2375; + Class97 aClass97_2376; + TextureOperation[] subOperations; + static int anInt2378 = 0; + int imageCacheCapacity; + Class114 aClass114_2382; + static int anInt2383 = 0; + + static int method1603(byte var0, int var1, Random var2) { + try { + if (var1 <= 0) { + throw new IllegalArgumentException(); + } else if (Class140_Sub6.method2021((byte) -115, var1)) { + return (int) (((long) var2.nextInt() & 4294967295L) * (long) var1 >> 32); + } else { + int var3 = -((int) (4294967296L % (long) var1)) + Integer.MIN_VALUE; + + int var4; + do { + var4 = var2.nextInt(); + } while (var3 <= var4); + + return TextureOperation27.method201(var4, var1); + } + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "ni.C(" + var0 + ',' + var1 + ',' + (var2 != null ? "{...}" : "null") + ')'); + } + } + + + final int[] method152(int var1, int var2) { + return this.subOperations[var1].aBoolean2375 ? this.subOperations[var1].method154(var2, (byte) -118) : this.subOperations[var1].method166(var2)[0]; + } + + static void method153() { + Class3_Sub26.aLinkedList_2557 = new LinkedList(); + } + + int[] method154(int var1, byte var2) { + try { + throw new IllegalStateException("This operation does not have a monochrome output"); + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "j.D(" + var1 + ',' + var2 + ')'); + } + } + + int getSpriteFrame() { + return -1; + } + + void decode(int var1, DataBuffer var2) { + } + + void postDecode() { + } + + int method159(int var1) { + try { + if (var1 != 4) { + LoadingBox.draw(true, null); + } + + return -1; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "j.GA(" + var1 + ')'); + } + } + + final void method160(int var1, int var2) { + try { + + int var4 = 255 == this.imageCacheCapacity ? var1 : this.imageCacheCapacity; + if (this.aBoolean2375) { + this.aClass114_2382 = new Class114(var4, var1, var2); + } else { + this.aClass97_2376 = new Class97(var4, var1, var2); + } + + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "j.SA(" + var1 + ',' + var2 + ',' + 250 + ')'); + } + } + + void method161(byte var1) { + try { + if (var1 != -45) { + anInt2383 = 16; + } + + if (this.aBoolean2375) { + this.aClass114_2382.method1706(); + this.aClass114_2382 = null; + } else { + this.aClass97_2376.method1590(); + this.aClass97_2376 = null; + } + + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "j.BA(" + var1 + ')'); + } + } + + final int[][] method162(int var1, int var2, byte var3) { + try { + if (var3 > -45) { + return null; + } else if (this.subOperations[var2].aBoolean2375) { + int[] var4 = this.subOperations[var2].method154(var1, (byte) -105); + return new int[][]{var4, var4, var4}; + } else { + return this.subOperations[var2].method166(var1); + } + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "j.UA(" + var1 + ',' + var2 + ',' + var3 + ')'); + } + } + + static Class3_Sub28_Sub17_Sub1 method163(byte[] var0) { + try { + if (var0 == null) { + return null; + } else { + + Class3_Sub28_Sub17_Sub1 var2 = new Class3_Sub28_Sub17_Sub1(var0, Class164.anIntArray2048, Unsorted.anIntArray2591, GroundItem.anIntArray2931, Unsorted.anIntArray3076, Class163_Sub1.aByteArrayArray2987); + Class39.method1035((byte) 126); + return var2; + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "j.WA(" + "{...}" + ',' + 25208 + ')'); + } + } + + TextureOperation(int var1, boolean var2) { + try { + this.subOperations = new TextureOperation[var1]; + this.aBoolean2375 = var2; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "j.(" + var1 + ',' + var2 + ')'); + } + } + + int[][] method166(int var2) { + throw new IllegalStateException("This operation does not have a colour output"); + } + +} diff --git a/Client/src/main/java/org/runite/client/TextureOperation0.java b/Client/src/main/java/org/runite/client/TextureOperation0.java new file mode 100644 index 000000000..413fe9b83 --- /dev/null +++ b/Client/src/main/java/org/runite/client/TextureOperation0.java @@ -0,0 +1,38 @@ +package org.runite.client; + +import org.rs09.client.util.ArrayUtils; + +public final class TextureOperation0 extends TextureOperation { + + private int anInt3276; + + protected TextureOperation0() { + super(0, true); + this.anInt3276 = 4096; + + try { + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "mi.(" + 4096 + ')'); + } + } + + final void decode(int var1, DataBuffer var2) { + if (var1 == 0) { + this.anInt3276 = (var2.readUnsignedByte() << 12) / 255; + } + } + + final int[] method154(int var1, byte var2) { + try { + int[] var4 = this.aClass114_2382.method1709(var1); + if (this.aClass114_2382.aBoolean1580) { + ArrayUtils.fill(var4, 0, Class113.anInt1559, this.anInt3276); + } + + return var4; + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "mi.D(" + var1 + ',' + var2 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/TextureOperation1.java b/Client/src/main/java/org/runite/client/TextureOperation1.java new file mode 100644 index 000000000..99b76fdc0 --- /dev/null +++ b/Client/src/main/java/org/runite/client/TextureOperation1.java @@ -0,0 +1,176 @@ +package org.runite.client; + +import org.rs09.client.data.HashTable; +import org.rs09.client.data.ReferenceCache; + +final class TextureOperation1 extends TextureOperation { + + static int anInt3274; + private int anInt3129; + static ReferenceCache aReferenceCache_3130 = new ReferenceCache(4); + private int anInt3134; + private int anInt3135; + + + protected TextureOperation1() { + super(0, false); + + try { + this.method218(0); + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "fm.(" + 0 + ')'); + } + } + + private void method218(int var2) { + try { + this.anInt3134 = 4080 & var2 >> 4; + this.anInt3135 = var2 << 4 & 4080; + this.anInt3129 = (var2 & 16711680) >> 12; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "fm.Q(" + (byte) 75 + ',' + var2 + ')'); + } + } + + final int[][] method166(int var2) { + try { + if(-1 != -1) { + method222(-87, 26, 75, -56, 22, -68); + } + + int[][] var3 = this.aClass97_2376.method1594((byte)-123, var2); + if(this.aClass97_2376.aBoolean1379) { + int[] var4 = var3[0]; + int[] var5 = var3[1]; + int[] var6 = var3[2]; + + for(int var7 = 0; Class113.anInt1559 > var7; ++var7) { + var4[var7] = this.anInt3129; + var5[var7] = this.anInt3134; + var6[var7] = this.anInt3135; + } + } + + return var3; + } catch (RuntimeException var8) { + throw ClientErrorException.clientError(var8, "fm.T(" + -1 + ',' + var2 + ')'); + } + } + + static void method219(boolean var0) { + try { + if(var0) { + if(-1 != ConfigInventoryDefinition.anInt3655) { + Class60.method1208((byte)-128, ConfigInventoryDefinition.anInt3655); + } + + for(Class3_Sub31 var2 = TextureOperation23.aHashTable_3208.first(); null != var2; var2 = TextureOperation23.aHashTable_3208.next()) { + TextureOperation19.method254(true, var2); + } + + ConfigInventoryDefinition.anInt3655 = -1; + TextureOperation23.aHashTable_3208 = new HashTable(8); + Class3_Sub7.method122(3000 + -2918); + ConfigInventoryDefinition.anInt3655 = Client.loginScreenInterfaceID; + Class124.method1746(false, (byte)-36); + Unsorted.method1093(false); + TextureOperation24.method226(ConfigInventoryDefinition.anInt3655); + } + + Class3_Sub28_Sub5.anInt3590 = -1; + TextureOperation20.method229(Class161.anInt2027); + Class102.player = new Player(); + Class102.player.yAxis = 3000; + Class102.player.xAxis = 3000; + if(HDToolKit.highDetail) { + if(Class133.anInt1753 == 2) { + NPC.anInt3995 = Unsorted.anInt30 << 7; + Class77.anInt1111 = Class146.anInt1904 << 7; + } else { + InterfaceWidget.d(3000 ^ '\uf447'); + } + + TextureOperation31.method236(); + TextureOperation26.method195(); + Class117.method1719(28); + } else { + Class84.method1418(CacheIndex.spritesIndex); + Class117.method1719(10); + } + + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "fm.E(" + var0 + ',' + 3000 + ')'); + } + } + + static void method220(int var1, int var2) { + try { + Class46.anInt741 = AtmosphereParser.aAtmosphereParserArrayArray1581[var2][var1].anInt1185; + anInt3274 = AtmosphereParser.aAtmosphereParserArrayArray1581[var2][var1].anInt1181; + + AtmosphereParser.anInt1191 = AtmosphereParser.aAtmosphereParserArrayArray1581[var2][var1].anInt1178; + Class92.setLightPosition((float)Class46.anInt741, (float) anInt3274, (float) AtmosphereParser.anInt1191); + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "fm.C(" + true + ',' + var1 + ',' + var2 + ')'); + } + } + + static void method221(int var0, RSString var1, RSString var2, RSString var3, int var4) { + try { + MessageManager.sendGameMessage(var0, var4, var1, var3, var2); + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "fm.F(" + var0 + ',' + (var1 != null?"{...}":"null") + ',' + (var2 != null?"{...}":"null") + ',' + (var3 != null?"{...}":"null") + ',' + var4 + ')'); + } + } + + final void decode(int var1, DataBuffer var2) { + try { + if(var1 == 0) { + this.method218(var2.readMedium()); + } + + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "fm.A(" + var1 + ',' + (var2 != null?"{...}":"null") + ',' + true + ')'); + } + } + + static boolean method222(int var0, int var1, int var2, int var3, int var4, int var5) { + int var6; + int var7; + if(var1 == var2 && var3 == var4) { + if(Class8.method846(var0, var1, var3)) { + var6 = var1 << 7; + var7 = var3 << 7; + return TextureOperation10.method349(var6 + 1, Class44.anIntArrayArrayArray723[var0][var1][var3] + var5, var7 + 1) && TextureOperation10.method349(var6 + 128 - 1, Class44.anIntArrayArrayArray723[var0][var1 + 1][var3] + var5, var7 + 1) && TextureOperation10.method349(var6 + 128 - 1, Class44.anIntArrayArrayArray723[var0][var1 + 1][var3 + 1] + var5, var7 + 128 - 1) && TextureOperation10.method349(var6 + 1, Class44.anIntArrayArrayArray723[var0][var1][var3 + 1] + var5, var7 + 128 - 1); + } else { + return false; + } + } else { + for(var6 = var1; var6 <= var2; ++var6) { + for(var7 = var3; var7 <= var4; ++var7) { + if(Class81.anIntArrayArrayArray1142[var0][var6][var7] == -Class3_Sub28_Sub1.anInt3539) { + return false; + } + } + } + + var6 = (var1 << 7) + 1; + var7 = (var3 << 7) + 2; + int var8 = Class44.anIntArrayArrayArray723[var0][var1][var3] + var5; + if(TextureOperation10.method349(var6, var8, var7)) { + int var9 = (var2 << 7) - 1; + if(TextureOperation10.method349(var9, var8, var7)) { + int var10 = (var4 << 7) - 1; + if(!TextureOperation10.method349(var6, var8, var10)) { + return false; + } else return TextureOperation10.method349(var9, var8, var10); + } else { + return false; + } + } else { + return false; + } + } + } + +} diff --git a/Client/src/main/java/org/runite/client/TextureOperation10.java b/Client/src/main/java/org/runite/client/TextureOperation10.java new file mode 100644 index 000000000..f520df4cf --- /dev/null +++ b/Client/src/main/java/org/runite/client/TextureOperation10.java @@ -0,0 +1,450 @@ +package org.runite.client; +import org.rs09.client.config.GameConfig; + +import java.math.BigInteger; + +final class TextureOperation10 extends TextureOperation { + + private int[][] anIntArrayArray3438; + static Class3_Sub28_Sub17_Sub1 aClass3_Sub28_Sub17_Sub1_3440; + static BigInteger EXPONENT = GameConfig.EXPONENT; + private int[] anIntArray3443 = new int[257]; + + + final void postDecode() { + try { + + if(this.anIntArrayArray3438 == null) { + this.method345(1); + } + + this.method346(); + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "um.P(" + ')'); + } + } + + private void method345(int var1) { + try { + if(var1 != 0) { + if(var1 == 1) { + this.anIntArrayArray3438 = new int[2][4]; + this.anIntArrayArray3438[0][1] = 0; + this.anIntArrayArray3438[0][0] = 0; + this.anIntArrayArray3438[1][0] = 4096; + this.anIntArrayArray3438[0][3] = 0; + this.anIntArrayArray3438[1][1] = 4096; + this.anIntArrayArray3438[0][2] = 0; + this.anIntArrayArray3438[1][2] = 4096; + this.anIntArrayArray3438[1][3] = 4096; + } else if(var1 == 2) { + this.anIntArrayArray3438 = new int[8][4]; + this.anIntArrayArray3438[0][0] = 0; + this.anIntArrayArray3438[1][0] = 2867; + this.anIntArrayArray3438[2][0] = 3072; + this.anIntArrayArray3438[0][2] = 2602; + this.anIntArrayArray3438[3][0] = 3276; + this.anIntArrayArray3438[0][3] = 2361; + this.anIntArrayArray3438[1][3] = 1558; + this.anIntArrayArray3438[4][0] = 3481; + this.anIntArrayArray3438[5][0] = 3686; + this.anIntArrayArray3438[2][3] = 1413; + this.anIntArrayArray3438[3][3] = 947; + this.anIntArrayArray3438[4][3] = 722; + this.anIntArrayArray3438[6][0] = 3891; + this.anIntArrayArray3438[1][2] = 1799; + this.anIntArrayArray3438[7][0] = 4096; + this.anIntArrayArray3438[5][3] = 1766; + this.anIntArrayArray3438[2][2] = 1734; + this.anIntArrayArray3438[3][2] = 1220; + this.anIntArrayArray3438[4][2] = 963; + this.anIntArrayArray3438[5][2] = 2152; + this.anIntArrayArray3438[6][3] = 915; + this.anIntArrayArray3438[7][3] = 1140; + this.anIntArrayArray3438[0][1] = 2650; + this.anIntArrayArray3438[6][2] = 1060; + this.anIntArrayArray3438[1][1] = 2313; + this.anIntArrayArray3438[2][1] = 2618; + this.anIntArrayArray3438[3][1] = 2296; + this.anIntArrayArray3438[4][1] = 2072; + this.anIntArrayArray3438[7][2] = 1413; + this.anIntArrayArray3438[5][1] = 2730; + this.anIntArrayArray3438[6][1] = 2232; + this.anIntArrayArray3438[7][1] = 1686; + } else if(3 == var1) { + this.anIntArrayArray3438 = new int[7][4]; + this.anIntArrayArray3438[0][0] = 0; + this.anIntArrayArray3438[0][3] = 4096; + this.anIntArrayArray3438[1][3] = 4096; + this.anIntArrayArray3438[2][3] = 0; + this.anIntArrayArray3438[1][0] = 663; + this.anIntArrayArray3438[0][1] = 0; + this.anIntArrayArray3438[3][3] = 0; + this.anIntArrayArray3438[1][1] = 0; + this.anIntArrayArray3438[2][0] = 1363; + this.anIntArrayArray3438[2][1] = 0; + this.anIntArrayArray3438[4][3] = 0; + this.anIntArrayArray3438[5][3] = 4096; + this.anIntArrayArray3438[6][3] = 4096; + this.anIntArrayArray3438[3][0] = 2048; + this.anIntArrayArray3438[4][0] = 2727; + this.anIntArrayArray3438[5][0] = 3411; + this.anIntArrayArray3438[6][0] = 4096; + this.anIntArrayArray3438[3][1] = 4096; + this.anIntArrayArray3438[4][1] = 4096; + this.anIntArrayArray3438[5][1] = 4096; + this.anIntArrayArray3438[6][1] = 0; + this.anIntArrayArray3438[0][2] = 0; + this.anIntArrayArray3438[1][2] = 4096; + this.anIntArrayArray3438[2][2] = 4096; + this.anIntArrayArray3438[3][2] = 4096; + this.anIntArrayArray3438[4][2] = 0; + this.anIntArrayArray3438[5][2] = 0; + this.anIntArrayArray3438[6][2] = 0; + } else if(4 == var1) { + this.anIntArrayArray3438 = new int[6][4]; + this.anIntArrayArray3438[0][3] = 0; + this.anIntArrayArray3438[0][0] = 0; + this.anIntArrayArray3438[0][2] = 0; + this.anIntArrayArray3438[1][0] = 1843; + this.anIntArrayArray3438[1][2] = 0; + this.anIntArrayArray3438[2][2] = 0; + this.anIntArrayArray3438[1][3] = 1493; + this.anIntArrayArray3438[2][3] = 2939; + this.anIntArrayArray3438[3][3] = 3565; + this.anIntArrayArray3438[3][2] = 1124; + this.anIntArrayArray3438[4][3] = 4031; + this.anIntArrayArray3438[0][1] = 0; + this.anIntArrayArray3438[1][1] = 0; + this.anIntArrayArray3438[5][3] = 4096; + this.anIntArrayArray3438[4][2] = 3084; + this.anIntArrayArray3438[2][0] = 2457; + this.anIntArrayArray3438[2][1] = 0; + this.anIntArrayArray3438[3][0] = 2781; + this.anIntArrayArray3438[4][0] = 3481; + this.anIntArrayArray3438[3][1] = 0; + this.anIntArrayArray3438[4][1] = 546; + this.anIntArrayArray3438[5][2] = 4096; + this.anIntArrayArray3438[5][0] = 4096; + this.anIntArrayArray3438[5][1] = 4096; + } else if(var1 == 5) { + this.anIntArrayArray3438 = new int[16][4]; + this.anIntArrayArray3438[0][3] = 321; + this.anIntArrayArray3438[0][0] = 0; + this.anIntArrayArray3438[0][2] = 192; + this.anIntArrayArray3438[1][0] = 155; + this.anIntArrayArray3438[1][3] = 562; + this.anIntArrayArray3438[1][2] = 449; + this.anIntArrayArray3438[2][0] = 389; + this.anIntArrayArray3438[3][0] = 671; + this.anIntArrayArray3438[2][2] = 690; + this.anIntArrayArray3438[0][1] = 80; + this.anIntArrayArray3438[1][1] = 321; + this.anIntArrayArray3438[4][0] = 897; + this.anIntArrayArray3438[3][2] = 995; + this.anIntArrayArray3438[4][2] = 1397; + this.anIntArrayArray3438[2][1] = 578; + this.anIntArrayArray3438[2][3] = 803; + this.anIntArrayArray3438[5][0] = 1175; + this.anIntArrayArray3438[6][0] = 1368; + this.anIntArrayArray3438[5][2] = 1429; + this.anIntArrayArray3438[3][1] = 947; + this.anIntArrayArray3438[7][0] = 1507; + this.anIntArrayArray3438[4][1] = 1285; + this.anIntArrayArray3438[6][2] = 1461; + this.anIntArrayArray3438[8][0] = 1736; + this.anIntArrayArray3438[3][3] = 1140; + this.anIntArrayArray3438[9][0] = 2088; + this.anIntArrayArray3438[7][2] = 1525; + this.anIntArrayArray3438[4][3] = 1509; + this.anIntArrayArray3438[5][1] = 1525; + this.anIntArrayArray3438[6][1] = 1734; + this.anIntArrayArray3438[5][3] = 1413; + this.anIntArrayArray3438[8][2] = 1590; + this.anIntArrayArray3438[10][0] = 2355; + this.anIntArrayArray3438[9][2] = 2056; + this.anIntArrayArray3438[7][1] = 1413; + this.anIntArrayArray3438[11][0] = 2691; + this.anIntArrayArray3438[12][0] = 3031; + this.anIntArrayArray3438[6][3] = 1333; + this.anIntArrayArray3438[10][2] = 2586; + this.anIntArrayArray3438[11][2] = 3148; + this.anIntArrayArray3438[13][0] = 3522; + this.anIntArrayArray3438[14][0] = 3727; + this.anIntArrayArray3438[7][3] = 1702; + this.anIntArrayArray3438[8][1] = 1108; + this.anIntArrayArray3438[9][1] = 1766; + this.anIntArrayArray3438[10][1] = 2409; + this.anIntArrayArray3438[15][0] = 4096; + this.anIntArrayArray3438[12][2] = 3710; + this.anIntArrayArray3438[11][1] = 3116; + this.anIntArrayArray3438[13][2] = 3421; + this.anIntArrayArray3438[12][1] = 3806; + this.anIntArrayArray3438[13][1] = 3437; + this.anIntArrayArray3438[14][1] = 3116; + this.anIntArrayArray3438[15][1] = 2377; + this.anIntArrayArray3438[8][3] = 2056; + this.anIntArrayArray3438[9][3] = 2666; + this.anIntArrayArray3438[14][2] = 3148; + this.anIntArrayArray3438[15][2] = 2505; + this.anIntArrayArray3438[10][3] = 3276; + this.anIntArrayArray3438[11][3] = 3228; + this.anIntArrayArray3438[12][3] = 3196; + this.anIntArrayArray3438[13][3] = 3019; + this.anIntArrayArray3438[14][3] = 3228; + this.anIntArrayArray3438[15][3] = 2746; + } else { + if(var1 != 6) { + throw new RuntimeException("Invalid gradient preset"); + } + + this.anIntArrayArray3438 = new int[4][4]; + this.anIntArrayArray3438[0][3] = 0; + this.anIntArrayArray3438[0][2] = 4096; + this.anIntArrayArray3438[1][3] = 0; + this.anIntArrayArray3438[0][1] = 0; + this.anIntArrayArray3438[2][3] = 0; + this.anIntArrayArray3438[3][3] = 0; + this.anIntArrayArray3438[0][0] = 2048; + this.anIntArrayArray3438[1][1] = 4096; + this.anIntArrayArray3438[1][0] = 2867; + this.anIntArrayArray3438[2][1] = 4096; + this.anIntArrayArray3438[1][2] = 4096; + this.anIntArrayArray3438[2][2] = 4096; + this.anIntArrayArray3438[3][1] = 4096; + this.anIntArrayArray3438[2][0] = 3276; + this.anIntArrayArray3438[3][2] = 0; + this.anIntArrayArray3438[3][0] = 4096; + } + } + + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "um.B(" + var1 + ',' + false + ')'); + } + } + + public TextureOperation10() { + super(1, false); + } + + final void decode(int var1, DataBuffer var2) { + try { + if(true) { + if(var1 == 0) { + int var4 = var2.readUnsignedByte(); + if(var4 == 0) { + this.anIntArrayArray3438 = new int[var2.readUnsignedByte()][4]; + + for(int var5 = 0; var5 < this.anIntArrayArray3438.length; ++var5) { + this.anIntArrayArray3438[var5][0] = var2.readUnsignedShort(); + this.anIntArrayArray3438[var5][1] = var2.readUnsignedByte() << 4; + this.anIntArrayArray3438[var5][2] = var2.readUnsignedByte() << 4; + this.anIntArrayArray3438[var5][3] = var2.readUnsignedByte() << 4; + } + } else { + this.method345(var4); + } + } + + } + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "um.A(" + var1 + ',' + (var2 != null ? "{...}" : "null") + ',' + ')'); + } + } + + private void method346() { + try { + + int var5 = this.anIntArrayArray3438.length; + if(var5 > 0) { + for(int var6 = 0; var6 < 257; ++var6) { + int var7 = 0; + int var8 = var6 << 4; + + for(int var9 = 0; var5 > var9 && var8 >= this.anIntArrayArray3438[var9][0]; ++var9) { + ++var7; + } + + int var2; + int var3; + int var4; + int[] var14; + if(var5 > var7) { + var14 = this.anIntArrayArray3438[var7]; + if(var7 > 0) { + int[] var10 = this.anIntArrayArray3438[-1 + var7]; + int var11 = (var8 - var10[0] << 12) / (var14[0] + -var10[0]); + int var12 = 4096 + -var11; + var4 = var10[3] * var12 + var14[3] * var11 >> 12; + var2 = var12 * var10[1] + var11 * var14[1] >> 12; + var3 = var12 * var10[2] + var11 * var14[2] >> 12; + } else { + var2 = var14[1]; + var4 = var14[3]; + var3 = var14[2]; + } + } else { + var14 = this.anIntArrayArray3438[var5 + -1]; + var4 = var14[3]; + var3 = var14[2]; + var2 = var14[1]; + } + + var2 >>= 4; + var3 >>= 4; + if(var2 < 0) { + var2 = 0; + } else if(var2 > 255) { + var2 = 255; + } + + if(0 > var3) { + var3 = 0; + } else if(var3 > 255) { + var3 = 255; + } + + var4 >>= 4; + if(var4 >= 0) { + if(var4 > 255) { + var4 = 255; + } + } else { + var4 = 0; + } + + this.anIntArray3443[var6] = TextureOperation3.bitwiseOr(var4, TextureOperation3.bitwiseOr(var3 << 8, var2 << 16)); + } + } + + } catch (RuntimeException var13) { + throw ClientErrorException.clientError(var13, "um.E(" + 114 + ')'); + } + } + + static void method347() { + try { + PacketParser.inTutorialIsland = 0; + + int var1 = Class131.x1716 + (Class102.player.xAxis >> 7); + int var2 = (Class102.player.yAxis >> 7) - -Texture.y1152; + if(var1 >= 3053 && var1 <= 3156 && var2 >= 3056 && var2 <= 3136) { + PacketParser.inTutorialIsland = 1; + } + + if(var1 >= 3072 && var1 <= 3118 && var2 >= 9492 && var2 <= 9535) { + PacketParser.inTutorialIsland = 1; + } + + if(PacketParser.inTutorialIsland == 1 && var1 >= 3139 && 3062 >= var2) { + PacketParser.inTutorialIsland = 0; + } + + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "um.O(" + true + ')'); + } + } + + final int[][] method166(int var2) { + try { + int[][] var3 = this.aClass97_2376.method1594((byte)90, var2); + + if(this.aClass97_2376.aBoolean1379) { + int[] var5 = this.method152(0, var2); + int[] var7 = var3[1]; + int[] var6 = var3[0]; + int[] var8 = var3[2]; + + for(int var9 = 0; Class113.anInt1559 > var9; ++var9) { + int var4 = var5[var9] >> 4; + if(var4 < 0) { + var4 = 0; + } + + if(var4 > 256) { + var4 = 256; + } + + var4 = this.anIntArray3443[var4]; + var6[var9] = Unsorted.bitwiseAnd(var4, 16711680) >> 12; + var7[var9] = Unsorted.bitwiseAnd(4080, var4 >> 4); + var8[var9] = Unsorted.bitwiseAnd(255, var4) << 4; + } + } + + return var3; + } catch (RuntimeException var10) { + throw ClientErrorException.clientError(var10, "um.T(" + -1 + ',' + var2 + ')'); + } + } + + static boolean method349(int var0, int var1, int var2) { + for(int var3 = 0; var3 < Class72.anInt1672; ++var3) { + Class113 var4 = Class145.aClass113Array1895[var3]; + int var5; + int var6; + int var7; + int var8; + int var9; + if(var4.anInt1564 == 1) { + var5 = var4.anInt1562 - var0; + if(var5 > 0) { + var6 = var4.anInt1560 + (var4.anInt1555 * var5 >> 8); + var7 = var4.anInt1550 + (var4.anInt1551 * var5 >> 8); + var8 = var4.anInt1544 + (var4.anInt1561 * var5 >> 8); + var9 = var4.anInt1548 + (var4.anInt1565 * var5 >> 8); + if(var2 >= var6 && var2 <= var7 && var1 >= var8 && var1 <= var9) { + return true; + } + } + } else if(var4.anInt1564 == 2) { + var5 = var0 - var4.anInt1562; + if(var5 > 0) { + var6 = var4.anInt1560 + (var4.anInt1555 * var5 >> 8); + var7 = var4.anInt1550 + (var4.anInt1551 * var5 >> 8); + var8 = var4.anInt1544 + (var4.anInt1561 * var5 >> 8); + var9 = var4.anInt1548 + (var4.anInt1565 * var5 >> 8); + if(var2 >= var6 && var2 <= var7 && var1 >= var8 && var1 <= var9) { + return true; + } + } + } else if(var4.anInt1564 == 3) { + var5 = var4.anInt1560 - var2; + if(var5 > 0) { + var6 = var4.anInt1562 + (var4.anInt1549 * var5 >> 8); + var7 = var4.anInt1545 + (var4.anInt1557 * var5 >> 8); + var8 = var4.anInt1544 + (var4.anInt1561 * var5 >> 8); + var9 = var4.anInt1548 + (var4.anInt1565 * var5 >> 8); + if(var0 >= var6 && var0 <= var7 && var1 >= var8 && var1 <= var9) { + return true; + } + } + } else if(var4.anInt1564 == 4) { + var5 = var2 - var4.anInt1560; + if(var5 > 0) { + var6 = var4.anInt1562 + (var4.anInt1549 * var5 >> 8); + var7 = var4.anInt1545 + (var4.anInt1557 * var5 >> 8); + var8 = var4.anInt1544 + (var4.anInt1561 * var5 >> 8); + var9 = var4.anInt1548 + (var4.anInt1565 * var5 >> 8); + if(var0 >= var6 && var0 <= var7 && var1 >= var8 && var1 <= var9) { + return true; + } + } + } else if(var4.anInt1564 == 5) { + var5 = var1 - var4.anInt1544; + if(var5 > 0) { + var6 = var4.anInt1562 + (var4.anInt1549 * var5 >> 8); + var7 = var4.anInt1545 + (var4.anInt1557 * var5 >> 8); + var8 = var4.anInt1560 + (var4.anInt1555 * var5 >> 8); + var9 = var4.anInt1550 + (var4.anInt1551 * var5 >> 8); + if(var0 >= var6 && var0 <= var7 && var2 >= var8 && var2 <= var9) { + return true; + } + } + } + } + + return false; + } + +} diff --git a/Client/src/main/java/org/runite/client/TextureOperation11.java b/Client/src/main/java/org/runite/client/TextureOperation11.java new file mode 100644 index 000000000..d99050549 --- /dev/null +++ b/Client/src/main/java/org/runite/client/TextureOperation11.java @@ -0,0 +1,80 @@ +package org.runite.client; + +import java.util.Objects; + +final class TextureOperation11 extends TextureOperation { + + static int anInt3244 = 0; + private int anInt3245 = 4096; + private int anInt3250 = 4096; + private int anInt3252 = 4096; + + final void decode(int var1, DataBuffer var2) { + try { + if(var1 == 0) { + this.anInt3252 = var2.readUnsignedShort(); + } else if (var1 == 1) { + this.anInt3245 = var2.readUnsignedShort(); + } else if (2 == var1) { + this.anInt3250 = var2.readUnsignedShort(); + } + + if(!true) { + method266(12); + } + + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "mg.A(" + var1 + ',' + (var2 != null?"{...}":"null") + ',' + true + ')'); + } + } + + public static void method266(int var0) {//TODO: Misplaced Check Method + try { + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "mg.U(" + var0 + ')'); + } + } + + final int[][] method166(int var2) { + try { + if(-1 != -1) { + anInt3244 = -40; + } + + int[][] var3 = this.aClass97_2376.method1594((byte)-115, var2); + if(this.aClass97_2376.aBoolean1379) { + int[][] var4 = this.method162(var2, 0, (byte)-74); + int[] var5 = Objects.requireNonNull(var4)[0]; + int[] var6 = var4[1]; + int[] var7 = var4[2]; + int[] var9 = var3[1]; + int[] var8 = var3[0]; + int[] var10 = var3[2]; + + for(int var11 = 0; Class113.anInt1559 > var11; ++var11) { + int var12 = var5[var11]; + int var14 = var6[var11]; + int var13 = var7[var11]; + if(var13 == var12 && var13 == var14) { + var8[var11] = this.anInt3252 * var12 >> 12; + var9[var11] = var13 * this.anInt3245 >> 12; + var10[var11] = var14 * this.anInt3250 >> 12; + } else { + var8[var11] = this.anInt3252; + var9[var11] = this.anInt3245; + var10[var11] = this.anInt3250; + } + } + } + + return var3; + } catch (RuntimeException var15) { + throw ClientErrorException.clientError(var15, "mg.T(" + -1 + ',' + var2 + ')'); + } + } + + public TextureOperation11() { + super(1, false); + } + +} diff --git a/Client/src/main/java/org/runite/client/TextureOperation12.java b/Client/src/main/java/org/runite/client/TextureOperation12.java new file mode 100644 index 000000000..6e7cc8e1b --- /dev/null +++ b/Client/src/main/java/org/runite/client/TextureOperation12.java @@ -0,0 +1,168 @@ +package org.runite.client; + + +import org.rs09.client.config.GameConfig; + +public final class TextureOperation12 extends TextureOperation { + + public static BufferedDataStream outgoingBuffer = new BufferedDataStream(); + private int anInt3036 = 0; + private int anInt3037 = 1; + private int anInt3038 = 0; + static RSString aClass2323; + static String aString2324; + static RSString aClass2325; + + + static void method167(int var0) { + try { + if(TextureOperation33.aClass148_3049 != null) { + KeyboardListener var1 = TextureOperation33.aClass148_3049; + synchronized(var1) { + TextureOperation33.aClass148_3049 = null; + } + } + + if(var0 != 0) { + method171(119, -44, -76, -104, 29, -65, 34, 18, 104); + } + + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "ag.B(" + var0 + ')'); + } + } + + public TextureOperation12() { + super(0, true); + } + + final int[] method154(int var1, byte var2) { + try { + int[] var3 = this.aClass114_2382.method1709(var1); + int var4; + if(this.aClass114_2382.aBoolean1580) { + var4 = Class163_Sub3.anIntArray2999[var1]; + int var5 = var4 - 2048 >> 1; + + for(int var6 = 0; var6 < Class113.anInt1559; ++var6) { + int var8 = Class102.anIntArray2125[var6]; + int var9 = -2048 + var8 >> 1; + int var7; + if(this.anInt3038 == 0) { + var7 = (var8 + -var4) * this.anInt3037; + } else { + int var10 = var9 * var9 - -(var5 * var5) >> 12; + var7 = (int)(Math.sqrt((float)var10 / 4096.0F) * 4096.0D); + var7 = (int)(3.141592653589793D * (double)(var7 * this.anInt3037)); + } + + var7 -= var7 & -4096; + if(this.anInt3036 == 0) { + var7 = TextureOperation23.anIntArray3212[(var7 & 4085) >> 4] + 4096 >> 1; + } else if(this.anInt3036 == 2) { + var7 -= 2048; + if(var7 < 0) { + var7 = -var7; + } + + var7 = -var7 + 2048 << 1; + } + + var3[var6] = var7; + } + } + + return var3; + } catch (RuntimeException var11) { + throw ClientErrorException.clientError(var11, "ag.D(" + var1 + ',' + var2 + ')'); + } + } + + static void method229() { + DataBuffer buffer = outgoingBuffer; + buffer.writeString(aClass2323); + for (char c : aString2324.toCharArray()) { + if (c == '-') { + c = ':'; + } + buffer.writeByte(c); + } + buffer.writeByte(0); + buffer.writeString(aClass2325); + } + + static void method169() { + try { + Class32.method995(); + + for(int var1 = 0; 4 > var1; ++var1) { + AtmosphereParser.aClass91Array1182[var1].method1496(); + } + + System.gc(); + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "ag.O(" + 22230 + ')'); + } + } + + static Class method170(String var1) throws ClassNotFoundException { + try { + + return var1.equals("B")?Byte.TYPE:(!var1.equals("I")?(var1.equals("S")?Short.TYPE:(!var1.equals("J")?(var1.equals("Z")?Boolean.TYPE:(var1.equals("F")?Float.TYPE:(var1.equals("D")?Double.TYPE:(var1.equals("C")?Character.TYPE:Class.forName(GameConfig.PACKAGE_NAME + "." + var1))))):Long.TYPE)):Integer.TYPE); + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "ag.C(" + 6092 + ',' + (var1 != null?"{...}":"null") + ')'); + } + } + + final void postDecode() { + try { + Class8.method844((byte)-9); + + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "ag.P(" + ')'); + } + } + + static void method171(int var0, int var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8) { + try { + if(var0 != -101) { + method167(-46); + } + + if(Unsorted.loadInterface(var1)) { + Unsorted.method1095(var2, var8, var4, GameObject.interfaces1834[var1], var3, -1, var7, var6, (byte)119, var5); + } else if (var5 == -1) { + for (int var9 = 0; var9 < 100; ++var9) { + Unsorted.aBooleanArray3674[var9] = true; + } + } else { + Unsorted.aBooleanArray3674[var5] = true; + } + } catch (RuntimeException var10) { + throw ClientErrorException.clientError(var10, "ag.E(" + var0 + ',' + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + var5 + ',' + var6 + ',' + var7 + ',' + var8 + ')'); + } + } + + final void decode(int var1, DataBuffer var2) { + try { + + if(var1 == 0) { + this.anInt3038 = var2.readUnsignedByte(); + } else if (1 == var1) { + this.anInt3036 = var2.readUnsignedByte(); + } else if (var1 == 3) { + this.anInt3037 = var2.readUnsignedByte(); + } + + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "ag.A(" + var1 + ',' + (var2 != null?"{...}":"null") + ',' + true + ')'); + } + } + + + static void method445() { + aClass2323 = RSString.parse(System.getProperty("user.name")); + aString2324 = Class39.method132893(); + aClass2325 = Signlink.osName.startsWith("win") ? Class44.method3435() : Class44.method3434(); + } +} diff --git a/Client/src/main/java/org/runite/client/TextureOperation13.java b/Client/src/main/java/org/runite/client/TextureOperation13.java new file mode 100644 index 000000000..ee98aad0a --- /dev/null +++ b/Client/src/main/java/org/runite/client/TextureOperation13.java @@ -0,0 +1,249 @@ +package org.runite.client; + +import org.rs09.client.config.GameConfig; + +final class TextureOperation13 extends TextureOperation { + + static int anInt3362 = -1; + static int anInt3363; + static LinkedList aLinkedList_3364 = new LinkedList(); + static long aLong3366; + static int[] anIntArray3367 = new int[64]; + + + static void method312(int var0, int var1, int var2, Player playerUsername, int var4) { + try { + if(Class102.player != playerUsername) { + if(Unsorted.menuOptionCount < 400) { + RSString var5; + if(playerUsername.anInt3974 == 0) { + boolean var6 = true; + if(Class102.player.anInt3970 != -1 && -1 != playerUsername.anInt3970) { + int var7 = Math.max(playerUsername.COMBAT_LEVEL, Class102.player.COMBAT_LEVEL); + int var8 = Math.min(playerUsername.anInt3970, Class102.player.anInt3970); + int var9 = 5 - -(var7 * 10 / 100) + var8; + int var10 = -playerUsername.COMBAT_LEVEL + Class102.player.COMBAT_LEVEL; + if(0 > var10) { + var10 = -var10; + } + + if(var9 < var10) { + var6 = false; + } + } + + RSString levelEquals = Class158.paramGameTypeID != 1?TextCore.HasLevel:TextCore.HasRating; + if(playerUsername.COMBAT_LEVEL < playerUsername.combatLevel) { + var5 = RSString.stringCombiner(new RSString[]{playerUsername.getName(), var6 ? Player.combatLevelColor(playerUsername.COMBAT_LEVEL, (byte)-73, Class102.player.COMBAT_LEVEL) : ColorCore.ContextColor , TextCore.LEFT_PARENTHESES, levelEquals, RSString.stringAnimator(playerUsername.COMBAT_LEVEL), TextCore.aString_673, RSString.stringAnimator(playerUsername.combatLevel + -playerUsername.COMBAT_LEVEL), TextCore.RIGHT_PARENTHESES}); + } else { + //here + var5 = RSString.stringCombiner(new RSString[]{playerUsername.getName(), var6 ? Player.combatLevelColor(playerUsername.COMBAT_LEVEL, (byte)-128, Class102.player.COMBAT_LEVEL) : Player.getCombatLevelDifferenceColor(playerUsername.COMBAT_LEVEL, Class102.player.COMBAT_LEVEL), TextCore.LEFT_PARENTHESES, levelEquals, RSString.stringAnimator(playerUsername.COMBAT_LEVEL), TextCore.RIGHT_PARENTHESES}); + } + } else { + var5 = RSString.stringCombiner(new RSString[]{playerUsername.getName(), TextCore.LEFT_PARENTHESES, TextCore.HasSkill, RSString.stringAnimator(playerUsername.anInt3974), TextCore.RIGHT_PARENTHESES}); + } + + int var12; + if(Class164_Sub1.anInt3012 == 1) { + Class3_Sub24_Sub4.pushRightClickMenuAction(Class99.anInt1403, var0, (byte)-80, RSString.stringCombiner(new RSString[]{RenderAnimationDefinition.aString_378, TextCore.aString_892, var5}), var4, (short)1, TextCore.HasUse, var2); + } else if(!GameObject.aBoolean1837) { + for(var12 = 7; var12 >= 0; --var12) { + if(null != Class91.aStringArray1299[var12]) { + short var14 = 0; + if(Class158.paramGameTypeID == 0 && Class91.aStringArray1299[var12].equalsStringIgnoreCase(TextCore.HasAttack)) { + //If other player level greater than my level, then right click to attack. + if(playerUsername.COMBAT_LEVEL > Class102.player.COMBAT_LEVEL && !GameConfig.FORCE_LEFT_CLICK_ATTACK) { + var14 = 2000;//Var for right click higher level players + } + if(Class102.player.teamId != 0 && playerUsername.teamId != 0) { + if(playerUsername.teamId == Class102.player.teamId) { + var14 = 2000; + } else { + var14 = 0; + } + } + } else if(Class1.aBooleanArray54[var12]) { + var14 = 2000; + } + + short var15 = Class7.aShortArray2167[var12]; + var15 += var14; + Class3_Sub24_Sub4.pushRightClickMenuAction(TextureOperation35.anIntArray3328[var12], var0, (byte)-73, RSString.stringCombiner(new RSString[]{ColorCore.ContextColor , var5}), var4, var15, Class91.aStringArray1299[var12], var2); + } + } + } else if((8 & Class164.anInt2051) != 0) { + Class3_Sub24_Sub4.pushRightClickMenuAction(Unsorted.anInt1887, var0, (byte)-58, RSString.stringCombiner(new RSString[]{TextCore.aString_676, TextCore.aString_892, var5}), var4, (short)15, Class3_Sub28_Sub9.aString_3621, var2); + } + + if(var1 <= 0) { + aLong3366 = -79L; + } + + for(var12 = 0; var12 < Unsorted.menuOptionCount; ++var12) { + if(TextureOperation27.aShortArray3095[var12] == 60) { + Class163_Sub2_Sub1.aStringArray4016[var12] = RSString.stringCombiner(new RSString[]{ColorCore.ContextColor , var5}); + break; + } + } + + } + } + } catch (RuntimeException var11) { + throw ClientErrorException.clientError(var11, "rj.C(" + var0 + ',' + var1 + ',' + var2 + ',' + (playerUsername != null?"{...}":"null") + ',' + var4 + ')'); + } + } + + static void method313(byte var0) { + try { + if(var0 <= 51) { + method312(77, -52, -42, null, 120); + } + + Class166.method2257(); + Class3_Sub8.method128(); + Class163_Sub2_Sub1.method2220(); + Class3_Sub10.method139(69); + Class3_Sub26.method512(); + WaterfallShader.method1626((byte)-128); + TextureOperation33.method182(); + Class145.method2077(); + Class25.method959(); + method716(); + Class3_Sub15.method370(); + TextureOperation3.method304(); + Class40.method1045(); + TextureOperation33.method183(); + LinkableRSString.method727(); + Class3_Sub21.method397((byte)-41); + if(TextureOperation20.paramModeWhat != 0) { + for(int var1 = 0; var1 < Class3_Sub6.softReferenceTestArray.length; ++var1) { + Class3_Sub6.softReferenceTestArray[var1] = null; + } + + Class56.anInt893 = 0; + } + + Class108.method1659(); + Class3_Sub10.method142(); + Unsorted.aReferenceCache_1135.clear(); + if(!HDToolKit.highDetail) { + ((Class102)Class51.anInterface2_838).method1618(); + } + + Class56.aClass47_885.clear(); + CacheIndex.skeletonsIndex.method2137(); + CacheIndex.skinsIndex.method2137(); + CacheIndex.interfacesIndex.method2137(); + CacheIndex.soundFXIndex.method2137(); + CacheIndex.landscapesIndex.method2137(); + CacheIndex.musicIndex.method2137(); + CacheIndex.modelsIndex.method2137(); + CacheIndex.spritesIndex.method2137(); + CacheIndex.huffmanEncodingIndex.method2137(); + CacheIndex.music2Index.method2137(); + CacheIndex.interfaceScriptsIndex.method2137(); + TextureOperation1.aReferenceCache_3130.clear(); + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "rj.E(" + var0 + ')'); + } + } + + static void method716() { + try { + Class136.aReferenceCache_1772.clear(); + + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "ud.A(" + 14073 + ')'); + } + } + + private int method314(int var1, int var2, int var3) { + try { + if(var2 != 7001) { + this.method314(-83, 92, 48); + } + + int var4 = var3 - -(57 * var1); + var4 ^= var4 << 1; + return 4096 + -((var4 * (var4 * var4 * 15731 - -789221) - -1376312589 & Integer.MAX_VALUE) / 262144); + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "rj.O(" + var1 + ',' + var2 + ',' + var3 + ')'); + } + } + + public TextureOperation13() { + super(0, true); + } + + final int[] method154(int var1, byte var2) { + try { + int[] var3 = this.aClass114_2382.method1709(var1); + if(this.aClass114_2382.aBoolean1580) { + int var5 = Class163_Sub3.anIntArray2999[var1]; + + for(int var6 = 0; var6 < Class113.anInt1559; ++var6) { + var3[var6] = this.method314(var5, 7001, Class102.anIntArray2125[var6]) % 4096; + } + } + + return var3; + } catch (RuntimeException var7) { + throw ClientErrorException.clientError(var7, "rj.D(" + var1 + ',' + var2 + ')'); + } + } + + static void parseObjectMapping(Class91[] var0, int var1, byte[] var2, int var3, int var4, int var5, int var6, boolean var7, int var8, int var9) { + try { + int var12 = -1; + DataBuffer var11 = new DataBuffer(var2); + + while(true) { + int var13 = var11.method773(); + if(var13 == 0) { + return; + } + + var12 += var13; + int var14 = 0; + + while(true) { + int var15 = var11.getSmart(); + if(var15 == 0) { + break; + } + + var14 += -1 + var15; + int var16 = 63 & var14; + int var17 = var14 >> 6 & 63; + int var18 = var14 >> 12; + int var19 = var11.readUnsignedByte(); + int var20 = var19 >> 2; + int var21 = 3 & var19; + if(var18 == var3 && var8 <= var17 && var17 < 8 + var8 && var9 <= var16 && 8 + var9 > var16) { + ObjectDefinition var22 = ObjectDefinition.getObjectDefinition(var12); + int var23 = Class3_Sub7.method121(var16 & 7, var4, var21, var22.SizeY, var22.SizeX, 7 & var17) + var5; + int var24 = GameObject.method1863(var22.SizeX, var4, var22.SizeY, 7 & var17, var21, 7 & var16) + var6; + if(var23 > 0 && var24 > 0 && var23 < 103 && var24 < 103) { + Class91 var25 = null; + if(!var7) { + int var26 = var1; + if(2 == (Unsorted.sceneryTypeMaskGrid[1][var23][var24] & 2)) { + var26 = var1 - 1; + } + + if(var26 >= 0) { + var25 = var0[var26]; + } + } + + Scenery.method1683(var1, !var7, var1, var7, var25, var12, var20, var23, var24, 3 & var21 + var4); + } + } + } + } + } catch (RuntimeException var27) { + throw ClientErrorException.clientError(var27, "rj.F(" + (var0 != null?"{...}":"null") + ',' + var1 + ',' + (var2 != null?"{...}":"null") + ',' + var3 + ',' + var4 + ',' + var5 + ',' + var6 + ',' + var7 + ',' + var8 + ',' + var9 + ',' + (byte) -54 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/TextureOperation14.java b/Client/src/main/java/org/runite/client/TextureOperation14.java new file mode 100644 index 000000000..2a575618d --- /dev/null +++ b/Client/src/main/java/org/runite/client/TextureOperation14.java @@ -0,0 +1,106 @@ +package org.runite.client; +final class TextureOperation14 extends TextureOperation { + + static int[] anIntArray3383 = new int[5]; + private int anInt3385 = 585; + static boolean aBoolean3387 = true; + static volatile int anInt3389 = 0; + + + static int method319(int var0, int var1, int var2) { + try { + if(var1 >= -99) { + aBoolean3387 = true; + } + + int var3 = var0 >>> 31; + return (var0 + var3) / var2 - var3; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "sa.E(" + var0 + ',' + var1 + ',' + var2 + ')'); + } + } + + public TextureOperation14() { + super(0, true); + } + + static void method320(int var0, int var1, int var2, byte var3, int var4) { + try { + if(var2 >= var4) { + TextureOperation18.method282(Class38.anIntArrayArray663[var1], var4, -83, var2, var0); + } else { + TextureOperation18.method282(Class38.anIntArrayArray663[var1], var2, -48, var4, var0); + } + + if(var3 > -55) { + method320(99, 100, 74, (byte)13, 92); + } + + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "sa.C(" + var0 + ',' + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ')'); + } + } + + final int[] method154(int var1, byte var2) { + try { + int[] var3 = this.aClass114_2382.method1709(var1); + if(this.aClass114_2382.aBoolean1580) { + int var5 = Class163_Sub3.anIntArray2999[var1]; + + for(int var6 = 0; var6 < Class113.anInt1559; ++var6) { + int var7 = Class102.anIntArray2125[var6]; + int var8; + if(var7 > this.anInt3385 && 4096 - this.anInt3385 > var7 && var5 > 2048 + -this.anInt3385 && this.anInt3385 + 2048 > var5) { + var8 = 2048 - var7; + var8 = var8 < 0?-var8:var8; + var8 <<= 12; + var8 /= -this.anInt3385 + 2048; + var3[var6] = -var8 + 4096; + } else if(-this.anInt3385 + 2048 < var7 && var7 < this.anInt3385 + 2048) { + var8 = var5 + -2048; + var8 = var8 >= 0 ?var8:-var8; + var8 -= this.anInt3385; + var8 <<= 12; + var3[var6] = var8 / (-this.anInt3385 + 2048); + } else if(this.anInt3385 <= var5 && var5 <= 4096 - this.anInt3385) { + if(this.anInt3385 <= var7 && var7 <= 4096 - this.anInt3385) { + var3[var6] = 0; + } else { + var8 = -var5 + 2048; + var8 = var8 < 0 ?-var8:var8; + var8 <<= 12; + var8 /= 2048 - this.anInt3385; + var3[var6] = -var8 + 4096; + } + } else { + var8 = var7 + -2048; + var8 = 0 > var8?-var8:var8; + var8 -= this.anInt3385; + var8 <<= 12; + var3[var6] = var8 / (-this.anInt3385 + 2048); + } + } + } + + return var3; + } catch (RuntimeException var9) { + throw ClientErrorException.clientError(var9, "sa.D(" + var1 + ',' + var2 + ')'); + } + } + + final void decode(int var1, DataBuffer var2) { + try { + if(!true) { + anInt3389 = 99; + } + + if(var1 == 0) { + this.anInt3385 = var2.readUnsignedShort(); + } + + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "sa.A(" + var1 + ',' + (var2 != null?"{...}":"null") + ',' + true + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/TextureOperation15.java b/Client/src/main/java/org/runite/client/TextureOperation15.java new file mode 100644 index 000000000..881f6c6e9 --- /dev/null +++ b/Client/src/main/java/org/runite/client/TextureOperation15.java @@ -0,0 +1,192 @@ +package org.runite.client; +import java.util.Random; + +final class TextureOperation15 extends TextureOperation { + + private int anInt3191 = 2; + private int anInt3193 = 2048; + private int anInt3194 = 1; + private byte[] aByteArray3195 = new byte[512]; + private int anInt3197 = 0; + static int anInt3198 = 0; + private short[] aShortArray3200 = new short[512]; + private int anInt3203 = 5; + private int anInt3204 = 5; + + + private void method242() { + try { + Random var2 = new Random(this.anInt3197); + this.aShortArray3200 = new short[512]; + if(0 < this.anInt3193) { + for(int var3 = 0; 512 > var3; ++var3) { + this.aShortArray3200[var3] = (short) TextureOperation.method1603((byte)23, this.anInt3193, var2); + } + } + + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "hm.C(" + (byte) 37 + ')'); + } + } + + final void postDecode() { + try { + this.aByteArray3195 = Class49.method1123(this.anInt3197); + this.method242(); + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "hm.P(" + ')'); + } + } + + static int compareEnteredLanguageArgument(RSString var0) { + try { + + for(int var2 = 0; TextureOperation4.aStringArray3238.length > var2; ++var2) { + if(TextureOperation4.aStringArray3238[var2].equalsStringIgnoreCase(var0)) { + return var2; + } + } + + return -1; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "hm.F(" + (var0 != null?"{...}":"null") + ',' + (byte) 13 + ')'); + } + } + + final int[] method154(int var1, byte var2) { + try { + int[] var3 = this.aClass114_2382.method1709(var1); + if(this.aClass114_2382.aBoolean1580) { + int var5 = this.anInt3204 * Class163_Sub3.anIntArray2999[var1] + 2048; + int var6 = var5 >> 12; + int var7 = var6 - -1; + + for(int var15 = 0; var15 < Class113.anInt1559; ++var15) { + TextureOperation36.anInt3422 = Integer.MAX_VALUE; + KeyboardListener.anInt1914 = Integer.MAX_VALUE; + Unsorted.anInt1042 = Integer.MAX_VALUE; + Class3_Sub28_Sub5.anInt3589 = Integer.MAX_VALUE; + int var16 = this.anInt3203 * Class102.anIntArray2125[var15] + 2048; + int var17 = var16 >> 12; + int var18 = 1 + var17; + + int var19; + for(int var9 = var6 - 1; var7 >= var9; ++var9) { + int var13 = 255 & this.aByteArray3195[(var9 >= this.anInt3204 ?-this.anInt3204 + var9:var9) & 0xFF]; + + for(int var8 = var17 + -1; var18 >= var8; ++var8) { + int var14 = (255 & this.aByteArray3195[(var8 >= this.anInt3203 ?-this.anInt3203 + var8:var8) + var13 & 0xFF]) * 2; + int var10 = -(var8 << 12) - (this.aShortArray3200[var14++] - var16); + int var11 = var5 - (this.aShortArray3200[var14] + (var9 << 12)); + var19 = this.anInt3194; + int var12; + if(var19 == 1) { + var12 = var11 * var11 + var10 * var10 >> 12; + } else if (3 == var19) { + var10 = var10 < 0 ? -var10 : var10; + var11 = var11 >= 0 ? var11 : -var11; + var12 = var11 >= var10 ? var11 : var10; + } else if (4 == var19) { + var10 = (int) (Math.sqrt((float) (0 > var10 ? -var10 : var10) / 4096.0F) * 4096.0D); + var11 = (int) (Math.sqrt((float) (var11 >= 0 ? var11 : -var11) / 4096.0F) * 4096.0D); + var12 = var11 + var10; + var12 = var12 * var12 >> 12; + } else if (var19 == 5) { + var10 *= var10; + var11 *= var11; + var12 = (int) (Math.sqrt(Math.sqrt((float) (var11 + var10) / 1.6777216E7F)) * 4096.0D); + } else if (2 == var19) { + var12 = (var10 >= 0 ? var10 : -var10) - -(var11 < 0 ? -var11 : var11); + } else { + var12 = (int) (4096.0D * Math.sqrt((float) (var11 * var11 + var10 * var10) / 1.6777216E7F)); + } + + if(var12 >= Class3_Sub28_Sub5.anInt3589) { + if(Unsorted.anInt1042 > var12) { + TextureOperation36.anInt3422 = KeyboardListener.anInt1914; + KeyboardListener.anInt1914 = Unsorted.anInt1042; + Unsorted.anInt1042 = var12; + } else if(KeyboardListener.anInt1914 <= var12) { + if(var12 < TextureOperation36.anInt3422) { + TextureOperation36.anInt3422 = var12; + } + } else { + TextureOperation36.anInt3422 = KeyboardListener.anInt1914; + KeyboardListener.anInt1914 = var12; + } + } else { + TextureOperation36.anInt3422 = KeyboardListener.anInt1914; + KeyboardListener.anInt1914 = Unsorted.anInt1042; + Unsorted.anInt1042 = Class3_Sub28_Sub5.anInt3589; + Class3_Sub28_Sub5.anInt3589 = var12; + } + } + } + + var19 = this.anInt3191; + if(var19 == 0) { + var3[var15] = Class3_Sub28_Sub5.anInt3589; + } else if(var19 == 1) { + var3[var15] = Unsorted.anInt1042; + } else if (var19 == 3) { + var3[var15] = KeyboardListener.anInt1914; + } else if (var19 == 4) { + var3[var15] = TextureOperation36.anInt3422; + } else if (var19 == 2) { + var3[var15] = Unsorted.anInt1042 + -Class3_Sub28_Sub5.anInt3589; + } + } + } + + return var3; + } catch (RuntimeException var20) { + throw ClientErrorException.clientError(var20, "hm.D(" + var1 + ',' + var2 + ')'); + } + } + + static void method244(int var1, int var2, int var3, int var4) { + try { + int var5; + if(var3 >= var1) { + for(var5 = var1; var5 < var3; ++var5) { + Class38.anIntArrayArray663[var5][var2] = var4; + } + } else { + for(var5 = var3; var1 > var5; ++var5) { + Class38.anIntArrayArray663[var5][var2] = var4; + } + } + + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "hm.E(" + 2 + ',' + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ')'); + } + } + + final void decode(int var1, DataBuffer var2) { + try { + if(var1 == 0) { + this.anInt3203 = this.anInt3204 = var2.readUnsignedByte(); + } else if(var1 == 1) { + this.anInt3197 = var2.readUnsignedByte(); + } else if(2 == var1) { + this.anInt3193 = var2.readUnsignedShort(); + } else if (var1 == 3) { + this.anInt3191 = var2.readUnsignedByte(); + } else if (var1 == 4) { + this.anInt3194 = var2.readUnsignedByte(); + } else if (var1 == 5) { + this.anInt3203 = var2.readUnsignedByte(); + } else if (var1 == 6) { + this.anInt3204 = var2.readUnsignedByte(); + } + + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "hm.A(" + var1 + ',' + (var2 != null?"{...}":"null") + ',' + true + ')'); + } + } + + public TextureOperation15() { + super(0, true); + } + +} diff --git a/Client/src/main/java/org/runite/client/TextureOperation16.java b/Client/src/main/java/org/runite/client/TextureOperation16.java new file mode 100644 index 000000000..b1ccac665 --- /dev/null +++ b/Client/src/main/java/org/runite/client/TextureOperation16.java @@ -0,0 +1,89 @@ +package org.runite.client; + +final class TextureOperation16 extends TextureOperation { + + private int anInt3108 = 1; + private int anInt3109 = 204; + static short[] aShortArray3110 = new short[256]; + static int anInt3111 = 0; + static Class36 aClass36_3112; + private int anInt3113 = 1; + static int anInt3114 = 0; + static int[][] anIntArrayArray3115; + + public TextureOperation16() { + super(0, true); + } + + final void decode(int var1, DataBuffer var2) { + try { + if(true) { + if(var1 == 0) { + this.anInt3108 = var2.readUnsignedByte(); + } else if (var1 == 1) { + this.anInt3113 = var2.readUnsignedByte(); + } else if (var1 == 2) { + this.anInt3109 = var2.readUnsignedShort(); + } + + } + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "f.A(" + var1 + ',' + (var2 != null ? "{...}" : "null") + ',' + ')'); + } + } + + final int[] method154(int var1, byte var2) { + try { + int[] var4 = this.aClass114_2382.method1709(var1); + if(this.aClass114_2382.aBoolean1580) { + for(int var5 = 0; Class113.anInt1559 > var5; ++var5) { + int var6 = Class102.anIntArray2125[var5]; + int var7 = Class163_Sub3.anIntArray2999[var1]; + int var8 = this.anInt3108 * var6 >> 12; + int var9 = var7 * this.anInt3113 >> 12; + int var10 = this.anInt3108 * (var6 % (4096 / this.anInt3108)); + int var11 = var7 % (4096 / this.anInt3113) * this.anInt3113; + if(var11 < this.anInt3109) { + for(var8 -= var9; var8 < 0; var8 += 4) { + } + + while(3 < var8) { + var8 -= 4; + } + + if(1 != var8) { + var4[var5] = 0; + continue; + } + + if(var10 < this.anInt3109) { + var4[var5] = 0; + continue; + } + } + + if(var10 < this.anInt3109) { + for(var8 -= var9; 0 > var8; var8 += 4) { + } + + while(var8 > 3) { + var8 -= 4; + } + + if(var8 > 0) { + var4[var5] = 0; + continue; + } + } + + var4[var5] = 4096; + } + } + + return var4; + } catch (RuntimeException var12) { + throw ClientErrorException.clientError(var12, "f.D(" + var1 + ',' + var2 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/TextureOperation17.java b/Client/src/main/java/org/runite/client/TextureOperation17.java new file mode 100644 index 000000000..a8d7cbde1 --- /dev/null +++ b/Client/src/main/java/org/runite/client/TextureOperation17.java @@ -0,0 +1,185 @@ +package org.runite.client; + +import java.util.Objects; + +final class TextureOperation17 extends TextureOperation { + + private int anInt3174; + private int anInt3175 = 0; + private int anInt3176 = 0; + static LinkedList aLinkedList_3177 = new LinkedList(); + private int anInt3178 = 0; + static int height3179; + private int anInt3180; + static int[] anIntArray3181; + private int anInt3182; + static boolean stereoSound = true; + static int[] anIntArray3185 = new int[25]; + private int anInt3186; + private int anInt3188; + private int anInt3189; + + + final void decode(int var1, DataBuffer var2) { + try { + if(var1 == 0) { + this.anInt3175 = var2.readSignedShort(); + } else if(var1 == 1) { + this.anInt3178 = (var2.readSignedByte() << 12) / 100; + } else if (var1 == 2) { + this.anInt3176 = (var2.readSignedByte() << 12) / 100; + } + + if(!true) { + this.method240(-114, 127, 95); + } + + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "hk.A(" + var1 + ',' + (var2 != null?"{...}":"null") + ',' + true + ')'); + } + } + + private void method239(int var1, int var2, int var4) { + try { + int var5 = var1 <= 2048?var1 * (4096 + var2) >> 12:-(var1 * var2 >> 12) + var1 + var2; + if(var5 > 0) { + var4 *= 6; + int var7 = -var5 + var1 + var1; + int var9 = var4 >> 12; + int var8 = (-var7 + var5 << 12) / var5; + int var10 = var4 - (var9 << 12); + int var11 = var5 * var8 >> 12; + var11 = var11 * var10 >> 12; + int var12 = var11 + var7; + int var13 = -var11 + var5; + if(0 == var9) { + this.anInt3182 = var7; + this.anInt3186 = var5; + this.anInt3174 = var12; + } else if(var9 == 1) { + this.anInt3182 = var7; + this.anInt3174 = var5; + this.anInt3186 = var13; + } else if (var9 == 2) { + this.anInt3186 = var7; + this.anInt3174 = var5; + this.anInt3182 = var12; + } else if (var9 == 3) { + this.anInt3174 = var13; + this.anInt3182 = var5; + this.anInt3186 = var7; + } else if (var9 == 4) { + this.anInt3182 = var5; + this.anInt3186 = var12; + this.anInt3174 = var7; + } else if (var9 == 5) { + this.anInt3174 = var7; + this.anInt3186 = var5; + this.anInt3182 = var13; + } + } else { + this.anInt3186 = this.anInt3174 = this.anInt3182 = var1; + } + + } catch (RuntimeException var15) { + throw ClientErrorException.clientError(var15, "hk.C(" + var1 + ',' + var2 + ',' + 107 + ',' + var4 + ')'); + } + } + + public TextureOperation17() { + super(1, false); + } + + private void method240(int var2, int var3, int var4) { + try { + int var5 = var2 > var3?var2:var3; + var5 = var5 >= var4 ?var5:var4; + int var6 = var3 > var2?var2:var3; + var6 = var6 <= var4 ?var6:var4; + int var7 = -var6 + var5; + if(0 < var7) { + int var9 = (var5 - var3 << 12) / var7; + int var8 = (var5 + -var2 << 12) / var7; + int var10 = (-var4 + var5 << 12) / var7; + if(var2 == var5) { + this.anInt3180 = var3 == var6 ?var10 + 20480:4096 + -var9; + } else if (var3 == var5) { + this.anInt3180 = var4 == var6 ? var8 + 4096 : -var10 + 12288; + } else { + this.anInt3180 = var6 != var2 ? -var8 + 20480 : 12288 + var9; + } + + this.anInt3180 /= 6; + } else { + this.anInt3180 = 0; + } + + this.anInt3188 = (var6 - -var5) / 2; + if(this.anInt3188 > 0 && 4096 > this.anInt3188) { + this.anInt3189 = (var7 << 12) / (this.anInt3188 > 2048?8192 - 2 * this.anInt3188:this.anInt3188 * 2); + } else { + this.anInt3189 = 0; + } + + } catch (RuntimeException var11) { + throw ClientErrorException.clientError(var11, "hk.E(" + ',' + var2 + ',' + var3 + ',' + var4 + ')'); + } + } + + final int[][] method166(int var2) { + try { + if(-1 != -1) { + TextCore.COMMAND_HIGHRES_GRAPHICS_FULLSCREEN = null; + } + + int[][] var3 = this.aClass97_2376.method1594((byte)-118, var2); + if(this.aClass97_2376.aBoolean1379) { + int[][] var4 = this.method162(var2, 0, (byte)-72); + int[] var5 = Objects.requireNonNull(var4)[0]; + int[] var6 = var4[1]; + int[] var7 = var4[2]; + int[] var9 = var3[1]; + int[] var10 = var3[2]; + int[] var8 = var3[0]; + + for(int var11 = 0; Class113.anInt1559 > var11; ++var11) { + this.method240(var5[var11], var6[var11], var7[var11]); + this.anInt3188 += this.anInt3176; + if(0 > this.anInt3188) { + this.anInt3188 = 0; + } + + this.anInt3189 += this.anInt3178; + if(this.anInt3188 > 4096) { + this.anInt3188 = 4096; + } + + if(this.anInt3189 < 0) { + this.anInt3189 = 0; + } + + if(4096 < this.anInt3189) { + this.anInt3189 = 4096; + } + + for(this.anInt3180 += this.anInt3175; this.anInt3180 < 0; this.anInt3180 += 4096) { + } + + while(this.anInt3180 > 4096) { + this.anInt3180 -= 4096; + } + + this.method239(this.anInt3188, this.anInt3189, this.anInt3180); + var8[var11] = this.anInt3186; + var9[var11] = this.anInt3174; + var10[var11] = this.anInt3182; + } + } + + return var3; + } catch (RuntimeException var12) { + throw ClientErrorException.clientError(var12, "hk.T(" + -1 + ',' + var2 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/TextureOperation18.java b/Client/src/main/java/org/runite/client/TextureOperation18.java new file mode 100644 index 000000000..02d132d0a --- /dev/null +++ b/Client/src/main/java/org/runite/client/TextureOperation18.java @@ -0,0 +1,176 @@ +package org.runite.client; + + +import org.rs09.client.config.GameConfig; + +import java.awt.*; + +final class TextureOperation18 extends TextureOperation39 { + + static int anInt4032 = 0; + static int[] anIntArray4035 = new int[]{1, 1, 0, 0, 0, 8, 0, 0, 8}; + static short aShort4038 = 32767; + static int anInt4039 = 0; + static int anInt4041 = -1; + + + final int[][] method166(int var2) { + try { + int[][] var3 = this.aClass97_2376.method1594((byte)-119, var2); + if(this.aClass97_2376.aBoolean1379 && this.method279(-128)) { + int[] var4 = var3[0]; + int var7 = var2 % this.anInt3283 * this.anInt3283; + int[] var5 = var3[1]; + int[] var6 = var3[2]; + + for(int var8 = 0; Class113.anInt1559 > var8; ++var8) { + int var9 = this.anIntArray3284[var7 + var8 % this.anInt3280]; + var6[var8] = Unsorted.bitwiseAnd(255, var9) << 4; + var5[var8] = Unsorted.bitwiseAnd(var9 >> 4, 4080); + var4[var8] = Unsorted.bitwiseAnd(16711680, var9) >> 12; + } + } + + if(-1 != -1) { + anInt4039 = -119; + } + + return var3; + } catch (RuntimeException var10) { + throw ClientErrorException.clientError(var10, "kd.T(" + -1 + ',' + var2 + ')'); + } + } + + static void method282(int[] var0, int var1, int var2, int var3, int var4) { + try { + --var1; + --var3; + + for(int var6 = -7 + var3; var6 > var1; var0[var1] = var4) { + ++var1; + var0[var1] = var4; + ++var1; + var0[var1] = var4; + ++var1; + var0[var1] = var4; + ++var1; + var0[var1] = var4; + ++var1; + var0[var1] = var4; + ++var1; + var0[var1] = var4; + ++var1; + var0[var1] = var4; + ++var1; + } + + while(var3 > var1) { + ++var1; + var0[var1] = var4; + } + + } catch (RuntimeException var7) { + throw ClientErrorException.clientError(var7, "kd.B(" + "null" + ',' + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ')'); + } + } + + static void method284(float[][] var0, int[][] var1, int var2, float[][] var3, int var4, int[] var5, Class37 var6, byte var7, Class43 var8, float[][] var9, int var10) { + try { + int[] var11 = new int[var5.length / 2]; + + int var12; + for(var12 = 0; var11.length > var12; ++var12) { + int var13 = var5[var12 + var12]; + int var14 = var5[var12 + var12 + 1]; + int var15; + if(var10 == 1) { + var15 = var13; + var13 = var14; + var14 = -var15 + 128; + } else if (var10 == 2) { + var14 = -var14 + 128; + var13 = -var13 + 128; + } else if (var10 == 3) { + var15 = var13; + var13 = 128 - var14; + var14 = var15; + } + + float var17; + float var16; + float var24; + if(var13 == 0 && var14 == 0) { + var16 = var3[var2][var4]; + var24 = var9[var2][var4]; + var17 = var0[var2][var4]; + } else if(var13 == 128 && var14 == 0) { + var17 = var0[var2 - -1][var4]; + var24 = var9[1 + var2][var4]; + var16 = var3[var2 - -1][var4]; + } else if(128 == var13 && var14 == 128) { + var16 = var3[var2 + 1][var4 + 1]; + var24 = var9[var2 + 1][var4 + 1]; + var17 = var0[var2 - -1][var4 + 1]; + } else if(var13 == 0 && 128 == var14) { + var17 = var0[var2][1 + var4]; + var16 = var3[var2][var4 + 1]; + var24 = var9[var2][1 + var4]; + } else { + var24 = var9[var2][var4]; + var17 = var0[var2][var4]; + float var18 = (float)var13 / 128.0F; + var16 = var3[var2][var4]; + var16 += (-var16 + var3[1 + var2][var4]) * var18; + var17 += var18 * (var0[1 + var2][var4] - var17); + var24 += (-var24 + var9[var2 - -1][var4]) * var18; + float var20 = var9[var2][1 + var4]; + var20 += (var9[var2 - -1][var4 - -1] - var20) * var18; + float var21 = var3[var2][1 + var4]; + float var19 = (float)var14 / 128.0F; + var24 += (-var24 + var20) * var19; + float var22 = var0[var2][1 + var4]; + var22 += (var0[1 + var2][var4 + 1] - var22) * var18; + var21 += (-var21 + var3[var2 + 1][1 + var4]) * var18; + var16 += (-var16 + var21) * var19; + var17 += (var22 - var17) * var19; + } + + int var26 = (var2 << 7) + var13; + int var25 = (var4 << 7) - -var14; + int var27 = Class3_Sub23.method408(var13, (byte)-53, var4, var1, var2, var14); + var11[var12] = var6.method1018(var8, var26, var27, var25, var24, var16, var17); + } + + var6.method1022(var11); + } catch (RuntimeException var23) { + throw ClientErrorException.clientError(var23, "kd.Q(" + (var0 != null?"{...}":"null") + ',' + (var1 != null?"{...}":"null") + ',' + var2 + ',' + (var3 != null?"{...}":"null") + ',' + var4 + ',' + (var5 != null?"{...}":"null") + ',' + (var6 != null?"{...}":"null") + ',' + var7 + ',' + (var8 != null?"{...}":"null") + ',' + (var9 != null?"{...}":"null") + ',' + var10 + ')'); + } + } + + static Class158 method285(int var0, int var1, Component var3) { + try { + try { + Class var4 = (Class) Class.forName(GameConfig.PACKAGE_NAME + ".Class158_Sub2"); + Class158 var8 = var4.newInstance(); + var8.method2185(var0, var1, var3); + return var8; + } catch (Throwable var6) { + Class158_Sub1 var5 = new Class158_Sub1(); + var5.method2185(var0, var1, var3); + return var5; + } + } catch (RuntimeException var7) { + throw ClientErrorException.clientError(var7, "kd.C(" + var0 + ',' + var1 + ',' + true + ',' + (var3 != null?"{...}":"null") + ')'); + } + } + + static AbstractSprite[] method286(int var2, CacheIndex var3) { + try { + //System.out.println("Class3_Sub13_Sub_23_Sub1 " + var2); + return !Class75_Sub4.method1351(var3, 0, var2)?null: AudioThread.method891(~4); + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "kd.F(" + -1 + ',' + 0 + ',' + var2 + ',' + (var3 != null?"{...}":"null") + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/TextureOperation19.java b/Client/src/main/java/org/runite/client/TextureOperation19.java new file mode 100644 index 000000000..68c46f0b7 --- /dev/null +++ b/Client/src/main/java/org/runite/client/TextureOperation19.java @@ -0,0 +1,290 @@ +package org.runite.client; + +import org.rs09.client.config.GameConfig; + +import java.util.Objects; + +final class TextureOperation19 extends TextureOperation { + + static CacheIndex graphicFXIndex_3214; + static int[][] anIntArrayArray3215 = new int[][]{{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1}, {1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0}, {0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1}, {0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0}, {1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1}, {1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1}}; + private int anInt3217 = 32768; + static int[] anIntArray3218 = new int[]{1, 4}; + + + static void method254(boolean var0, Class3_Sub31 var1) { + try { + int var4 = (int)var1.linkableKey; + + int var3 = var1.anInt2602; + var1.unlink(); + if(var0) { + Class60.method1208((byte)79, var3); + } + + Class164_Sub2.method2249(var3); + RSInterface var5 = Unsorted.getRSInterface(var4); + if(null != var5) { + Class20.method909(var5); + } + + int var6 = Unsorted.menuOptionCount; + + int var7; + for(var7 = 0; var6 > var7; ++var7) { + if(Unsorted.method73(TextureOperation27.aShortArray3095[var7])) { + Class3_Sub25.method509(var7); + } + } + + if(Unsorted.menuOptionCount == 1) { + Class38_Sub1.aBoolean2615 = false; + Class21.method1340(Class21.anInt1462, Class21.anInt3552, Class21.anInt3395, Class21.anInt3537); + } else { + Class21.method1340(Class21.anInt1462, Class21.anInt3552, Class21.anInt3395, Class21.anInt3537); + var7 = FontType.bold.method682(RSString.parse(GameConfig.RCM_TITLE)); + + for(int var8 = 0; Unsorted.menuOptionCount > var8; ++var8) { + int var9 = FontType.bold.method682(Unsorted.method802(var8)); + if(var7 < var9) { + var7 = var9; + } + } + + Class21.anInt3537 = Unsorted.menuOptionCount * 15 + (Unsorted.aBoolean1951?26:22); + Class21.anInt3552 = var7 + 8; + } + + if(-1 != ConfigInventoryDefinition.anInt3655) { + Class3_Sub8.method124(115, 1, ConfigInventoryDefinition.anInt3655); + } + + } catch (RuntimeException var10) { + throw ClientErrorException.clientError(var10, "ke.O(" + var0 + ',' + (var1 != null?"{...}":"null") + ',' + false + ')'); + } + } + + static void method255(int var0, int var1, int var2) { + try { + InterfaceWidget var3 = InterfaceWidget.getWidget(var2, var0); + var3.flagUpdate(); + var3.anInt3598 = var1; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "ke.Q(" + var0 + ',' + var1 + ',' + var2 + ')'); + } + } + + public TextureOperation19() { + super(3, false); + } + + final int[][] method166(int var2) { + try { + if(-1 != -1) { + graphicFXIndex_3214 = null; + } + + int[][] var3 = this.aClass97_2376.method1594((byte)4, var2); + if(this.aClass97_2376.aBoolean1379) { + int[] var4 = this.method152(1, var2); + int[] var5 = this.method152(2, var2); + int[] var8 = var3[2]; + int[] var7 = var3[1]; + int[] var6 = var3[0]; + + for(int var9 = 0; Class113.anInt1559 > var9; ++var9) { + int var10 = (var4[var9] * 255 & 1046259) >> 12; + int var11 = var5[var9] * this.anInt3217 >> 12; + int var12 = var11 * Class75_Sub2.anIntArray2639[var10] >> 12; + int var13 = TextureOperation23.anIntArray3212[var10] * var11 >> 12; + int var14 = (var12 >> 12) + var9 & RenderAnimationDefinition.anInt396; + int var15 = Class3_Sub20.anInt2487 & var2 - -(var13 >> 12); + int[][] var16 = this.method162(var15, 0, (byte)-117); + var6[var9] = Objects.requireNonNull(var16)[0][var14]; + var7[var9] = var16[1][var14]; + var8[var9] = var16[2][var14]; + } + } + + return var3; + } catch (RuntimeException var17) { + throw ClientErrorException.clientError(var17, "ke.T(" + -1 + ',' + var2 + ')'); + } + } + + final int[] method154(int var1, byte var2) { + try { + int[] var4 = this.aClass114_2382.method1709(var1); + if(this.aClass114_2382.aBoolean1580) { + int[] var5 = this.method152(1, var1); + int[] var6 = this.method152(2, var1); + + for(int var7 = 0; var7 < Class113.anInt1559; ++var7) { + int var9 = this.anInt3217 * var6[var7] >> 12; + int var8 = (var5[var7] & 4087) >> 4; + int var10 = Class75_Sub2.anIntArray2639[var8] * var9 >> 12; + int var11 = TextureOperation23.anIntArray3212[var8] * var9 >> 12; + int var12 = RenderAnimationDefinition.anInt396 & (var10 >> 12) + var7; + int var13 = Class3_Sub20.anInt2487 & (var11 >> 12) + var1; + int[] var14 = this.method152(0, var13); + var4[var7] = var14[var12]; + } + } + + return var4; + } catch (RuntimeException var15) { + throw ClientErrorException.clientError(var15, "ke.D(" + var1 + ',' + var2 + ')'); + } + } + + final void decode(int var1, DataBuffer var2) { + try { + if(var1 == 0) { + this.anInt3217 = var2.readUnsignedShort() << 4; + } else if (var1 == 1) { + this.aBoolean2375 = var2.readUnsignedByte() == 1; + } + + if(!true) { + TextureOperation20.anInt3216 = -7; + } + + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "ke.A(" + var1 + ',' + (var2 != null?"{...}":"null") + ',' + true + ')'); + } + } + + static void method257() { + try { + int var1 = 0; + + for(int var2 = 0; var2 < 104; ++var2) { + for(int var3 = 0; var3 < 104; ++var3) { + if(GroundItem.method2031((byte)-106, true, var2, var3, TileData.aTileDataArrayArrayArray2638, var1)) { + ++var1; + } + + if(var1 >= 512) { + return; + } + } + } + + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "ke.C(" + (byte) 125 + ')'); + } + } + + static void method259(Class126 var0, int var1, int var2, int var3, int var4, int var5, int var6, int var7, boolean var8) { + int var9; + int var10 = var9 = (var6 << 7) - Class145.anInt2697; + int var11; + int var12 = var11 = (var7 << 7) - TextureOperation13.anInt3363; + int var13; + int var14 = var13 = var10 + 128; + int var15; + int var16 = var15 = var12 + 128; + int var17 = Class44.anIntArrayArrayArray723[var1][var6][var7] - Unsorted.anInt3657; + int var18 = Class44.anIntArrayArrayArray723[var1][var6 + 1][var7] - Unsorted.anInt3657; + int var19 = Class44.anIntArrayArrayArray723[var1][var6 + 1][var7 + 1] - Unsorted.anInt3657; + int var20 = Class44.anIntArrayArrayArray723[var1][var6][var7 + 1] - Unsorted.anInt3657; + int var21 = var12 * var4 + var10 * var5 >> 16; + var12 = var12 * var5 - var10 * var4 >> 16; + var10 = var21; + var21 = var17 * var3 - var12 * var2 >> 16; + var12 = var17 * var2 + var12 * var3 >> 16; + var17 = var21; + if(var12 >= 50) { + var21 = var11 * var4 + var14 * var5 >> 16; + var11 = var11 * var5 - var14 * var4 >> 16; + var14 = var21; + var21 = var18 * var3 - var11 * var2 >> 16; + var11 = var18 * var2 + var11 * var3 >> 16; + var18 = var21; + if(var11 >= 50) { + var21 = var16 * var4 + var13 * var5 >> 16; + var16 = var16 * var5 - var13 * var4 >> 16; + var13 = var21; + var21 = var19 * var3 - var16 * var2 >> 16; + var16 = var19 * var2 + var16 * var3 >> 16; + var19 = var21; + if(var16 >= 50) { + var21 = var15 * var4 + var9 * var5 >> 16; + var15 = var15 * var5 - var9 * var4 >> 16; + var9 = var21; + var21 = var20 * var3 - var15 * var2 >> 16; + var15 = var20 * var2 + var15 * var3 >> 16; + if(var15 >= 50) { + int var22 = Class51.anInt846 + (var10 << 9) / var12; + int var23 = Class51.anInt835 + (var17 << 9) / var12; + int var24 = Class51.anInt846 + (var14 << 9) / var11; + int var25 = Class51.anInt835 + (var18 << 9) / var11; + int var26 = Class51.anInt846 + (var13 << 9) / var16; + int var27 = Class51.anInt835 + (var19 << 9) / var16; + int var28 = Class51.anInt846 + (var9 << 9) / var15; + int var29 = Class51.anInt835 + (var21 << 9) / var15; + Class51.anInt850 = 0; + int var30; + if((var26 - var28) * (var25 - var29) - (var27 - var29) * (var24 - var28) > 0) { + if(TextureOperation37.aBoolean3261 && TextureOperation34.method185(Class49.anInt819 + Class51.anInt846, TextureOperation18.anInt4039 + Class51.anInt835, var27, var29, var25, var26, var28, var24)) { + Class27.anInt515 = var6; + Unsorted.anInt999 = var7; + } + + if(!HDToolKit.highDetail && !var8) { + Class51.aBoolean849 = var26 < 0 || var28 < 0 || var24 < 0 || var26 > Class51.anInt847 || var28 > Class51.anInt847 || var24 > Class51.anInt847; + + if(var0.anInt1670 == -1) { + if(var0.anInt1664 != 12345678) { + Class51.method1154(var27, var29, var25, var26, var28, var24, var0.anInt1664, var0.anInt1663, var0.anInt1667); + } + } else if(Unsorted.aBoolean3275) { + if(var0.aBoolean1674) { + Class51.method1135(var27, var29, var25, var26, var28, var24, var0.anInt1664, var0.anInt1663, var0.anInt1667, var10, var14, var9, var17, var18, var21, var12, var11, var15, var0.anInt1670); + } else { + Class51.method1135(var27, var29, var25, var26, var28, var24, var0.anInt1664, var0.anInt1663, var0.anInt1667, var13, var9, var14, var19, var21, var18, var16, var15, var11, var0.anInt1670); + } + } else { + var30 = Class51.anInterface2_838.method15(var0.anInt1670, 65535); + Class51.method1154(var27, var29, var25, var26, var28, var24, LoginHandler.method1753(var30, var0.anInt1664), LoginHandler.method1753(var30, var0.anInt1663), LoginHandler.method1753(var30, var0.anInt1667)); + } + } + } + + if((var22 - var24) * (var29 - var25) - (var23 - var25) * (var28 - var24) > 0) { + if(TextureOperation37.aBoolean3261 && TextureOperation34.method185(Class49.anInt819 + Class51.anInt846, TextureOperation18.anInt4039 + Class51.anInt835, var23, var25, var29, var22, var24, var28)) { + Class27.anInt515 = var6; + Unsorted.anInt999 = var7; + } + + if(!HDToolKit.highDetail && !var8) { + Class51.aBoolean849 = var22 < 0 || var24 < 0 || var28 < 0 || var22 > Class51.anInt847 || var24 > Class51.anInt847 || var28 > Class51.anInt847; + + if(var0.anInt1670 == -1) { + if(var0.anInt1675 != 12345678) { + Class51.method1154(var23, var25, var29, var22, var24, var28, var0.anInt1675, var0.anInt1667, var0.anInt1663); + } + } else if(Unsorted.aBoolean3275) { + Class51.method1135(var23, var25, var29, var22, var24, var28, var0.anInt1675, var0.anInt1667, var0.anInt1663, var10, var14, var9, var17, var18, var21, var12, var11, var15, var0.anInt1670); + } else { + var30 = Class51.anInterface2_838.method15(var0.anInt1670, 65535); + Class51.method1154(var23, var25, var29, var22, var24, var28, LoginHandler.method1753(var30, var0.anInt1675), LoginHandler.method1753(var30, var0.anInt1667), LoginHandler.method1753(var30, var0.anInt1663)); + } + } + } + + } + } + } + } + } + + final void postDecode() { + try { + Class8.method844((byte)-9); + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "ke.P(" + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/TextureOperation2.java b/Client/src/main/java/org/runite/client/TextureOperation2.java new file mode 100644 index 000000000..18236bd0b --- /dev/null +++ b/Client/src/main/java/org/runite/client/TextureOperation2.java @@ -0,0 +1,22 @@ +package org.runite.client; + +import org.rs09.client.data.ReferenceCache; + +final class TextureOperation2 extends TextureOperation { + + static ReferenceCache aReferenceCache_3369 = new ReferenceCache(64); + static AbstractSprite[] aAbstractSpriteArray3373; + + final int[] method154(int var1, byte var2) { + try { + return Class102.anIntArray2125; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "rl.D(" + var1 + ',' + var2 + ')'); + } + } + + public TextureOperation2() { + super(0, true); + } + +} diff --git a/Client/src/main/java/org/runite/client/TextureOperation20.java b/Client/src/main/java/org/runite/client/TextureOperation20.java new file mode 100644 index 000000000..128de0980 --- /dev/null +++ b/Client/src/main/java/org/runite/client/TextureOperation20.java @@ -0,0 +1,939 @@ +package org.runite.client; +import org.rs09.client.filestore.resources.configs.cursors.CursorDefinition; + +import java.awt.Point; +import java.io.IOException; +import java.util.Objects; + +final class TextureOperation20 extends TextureOperation { + + static int anInt2212 = 0; + static int anInt2217 = 2; + static int anInt3216 = 0; + static long aLong1465 = 0L; + static Class67 aClass67_1443; + static int anInt1682 = 1; + static int anInt2701 = 0; + static boolean aBoolean2774 = true; + static int anInt1977 = 0; + private int anInt3147 = 4; + static int paramModeWhat = 0; + private int anInt3149 = 4; + static CacheIndex configurationsIndex_3154; + static int anInt3156 = -1; + + + static void method229(int cursor) { + try { + if(!Class163_Sub3.aBoolean3004) { + cursor = -1; + } + + if(cursor != Class65.anInt991) { + if(cursor != -1) { + CursorDefinition cursorDef = TextureOperation3.method311(cursor); + SoftwareSprite image = cursorDef.getImage(); + if(image == null) { + cursor = -1; + } else { + Class38.gameSignlink.method1434(image.method655(), 10000, image.anInt3697, GameShell.canvas, new Point(cursorDef.getHotspotX(), cursorDef.getHotspotY()), image.anInt3706); + Class65.anInt991 = cursor; + } + } + + if(cursor == -1 && Class65.anInt991 != -1) { + Class38.gameSignlink.method1434(null, 10000, -1, GameShell.canvas, new Point(), -1); + Class65.anInt991 = -1; + } + + } + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "gg.C(" + cursor + ',' + 20827 + ')'); + } + } + + public TextureOperation20() { + super(1, false); + } + + static void breakClientConnection() { + try { + + if(Class159.anInt2023 > 0) { + Class167.method2269((byte)46); + } else { + Class163_Sub2_Sub1.aClass89_4012 = Class3_Sub15.activeConnection; + Class3_Sub15.activeConnection = null; + Class117.method1719(40); + } + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "nm.B(" + false + ')'); + } + } + + final void decode(int var1, DataBuffer var2) { + try { + if(!true) { + paramModeWhat = -117; + } + + if(var1 == 0) { + this.anInt3149 = var2.readUnsignedByte(); + } else if(1 == var1) { + this.anInt3147 = var2.readUnsignedByte(); + } + + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "gg.A(" + var1 + ',' + (var2 != null?"{...}":"null") + ',' + true + ')'); + } + } + + static void method230(int[][] var0) { + try { + Class38.anIntArrayArray663 = var0; + + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "gg.Q(" + (var0 != null?"{...}":"null") + ',' + true + ')'); + } + } + + static Class24 method231(int var0) { + try { + Class24 var2 = (Class24)Entity.aReferenceCache_2792.get(var0); + if(var2 == null) { + byte[] var3 = LoginHandler.configurationsIndex_1680.getFile(3, var0); + var2 = new Class24(); + if(null != var3) { + var2.method952(new DataBuffer(var3)); + } + + Entity.aReferenceCache_2792.put(var2, var0); + + } + return var2; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "gg.B(" + var0 + ',' + 0 + ')'); + } + } + + static void method232(int var0) { + try { + if(Unsorted.loadInterface(var0)) { + RSInterface[] var2 = GameObject.interfaces1834[var0]; + + for(int var3 = 0; var3 < var2.length; ++var3) { + RSInterface var4 = var2[var3]; + if(null != var4) { + var4.anInt260 = 1; + var4.anInt283 = 0; + var4.anInt267 = 0; + } + } + + } + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "gg.E(" + var0 + ',' + 16182 + ')'); + } + } + + final int[] method154(int var1, byte var2) { + try { + int[] var10 = this.aClass114_2382.method1709(var1); + if(this.aClass114_2382.aBoolean1580) { + int var5 = Class113.anInt1559 / this.anInt3149; + int var6 = Class101.anInt1427 / this.anInt3147; + int[] var4; + int var7; + if(var6 <= 0) { + var4 = this.method152(0, 0); + } else { + var7 = var1 % var6; + var4 = this.method152(0, Class101.anInt1427 * var7 / var6); + } + + for(var7 = 0; var7 < Class113.anInt1559; ++var7) { + if(0 >= var5) { + var10[var7] = var4[0]; + } else { + int var8 = var7 % var5; + var10[var7] = var4[Class113.anInt1559 * var8 / var5]; + } + } + } + + return var10; + } catch (RuntimeException var9) { + throw ClientErrorException.clientError(var9, "gg.D(" + var1 + ',' + var2 + ')'); + } + } + + static void method233(int var0, CacheIndex var1) { + try { + if(var0 != 28280) { + configurationsIndex_3154 = null; + } + + NPC.anInt4001 = var1.getArchiveForName(TextCore.aString_119); + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "gg.R(" + var0 + ',' + (var1 != null?"{...}":"null") + ')'); + } + } + + final int[][] method166(int var2) { + try { + if(-1 == -1) { + int[][] var3 = this.aClass97_2376.method1594((byte)-123, var2); + if(this.aClass97_2376.aBoolean1379) { + int var5 = Class113.anInt1559 / this.anInt3149; + int var6 = Class101.anInt1427 / this.anInt3147; + int[][] var4; + if(var6 > 0) { + int var7 = var2 % var6; + var4 = this.method162(var7 * Class101.anInt1427 / var6, 0, (byte)-109); + } else { + var4 = this.method162(0, 0, (byte)-120); + } + + int[] var17 = Objects.requireNonNull(var4)[0]; + int[] var9 = var4[2]; + int[] var10 = var3[0]; + int[] var8 = var4[1]; + int[] var11 = var3[1]; + int[] var12 = var3[2]; + + for(int var13 = 0; Class113.anInt1559 > var13; ++var13) { + int var14; + if(var5 <= 0) { + var14 = 0; + } else { + int var15 = var13 % var5; + var14 = var15 * Class113.anInt1559 / var5; + } + + var10[var13] = var17[var14]; + var11[var13] = var8[var14]; + var12[var13] = var9[var14]; + } + } + + return var3; + } else { + return null; + } + } catch (RuntimeException var16) { + throw ClientErrorException.clientError(var16, "gg.T(" + -1 + ',' + var2 + ')'); + } + } + + static void method235() { + try { + if(Class159.anInt2023 > 0) { + --Class159.anInt2023; + } + + if(Class38_Sub1.anInt2617 > 1) { + --Class38_Sub1.anInt2617; + Class140_Sub6.anInt2905 = PacketParser.anInt3213; + } + + if(Class3_Sub28_Sub18.aBoolean3769) { + Class3_Sub28_Sub18.aBoolean3769 = false; + breakClientConnection(); + } else { + int queuedVarpIndex; + for(queuedVarpIndex = 0; queuedVarpIndex < 100 && TextureOperation33.method181(); ++queuedVarpIndex) { + } + + if(Class143.gameStage == 30) { + Class163_Sub2_Sub1.method2226(TextureOperation12.outgoingBuffer, 163, -116); + Object var14 = aClass67_1443.anObject1016; + int var2; + int var3; + int var4; + int var5; + int var6; + int var8; + int var9; + synchronized(var14) { + if(Unsorted.aBoolean29) { + if(Unsorted.anInt3644 != 0 || aClass67_1443.anInt1018 >= 40) { + TextureOperation12.outgoingBuffer.putOpcode(123); + var3 = 0; + TextureOperation12.outgoingBuffer.writeByte(0); + var2 = TextureOperation12.outgoingBuffer.index; + + for(var4 = 0; aClass67_1443.anInt1018 > var4 && TextureOperation12.outgoingBuffer.index - var2 < 240; ++var4) { + ++var3; + var5 = aClass67_1443.anIntArray1019[var4]; + var6 = aClass67_1443.anIntArray1020[var4]; + if(var5 < 0) { + var5 = 0; + } else if(var5 > 65534) { + var5 = '\ufffe'; + } + + if(var6 >= 0) { + if('\ufffe' < var6) { + var6 = '\ufffe'; + } + } else { + var6 = 0; + } + + boolean var7 = false; + if(aClass67_1443.anIntArray1019[var4] == -1 && aClass67_1443.anIntArray1020[var4] == -1) { + var7 = true; + var5 = -1; + var6 = -1; + } + + if(anInt1977 == var6 && var5 == Unsorted.anInt14) { + if(2047 > Class3_Sub26.anInt2556) { + ++Class3_Sub26.anInt2556; + } + } else { + var8 = -anInt1977 + var6; + anInt1977 = var6; + var9 = var5 + -Unsorted.anInt14; + Unsorted.anInt14 = var5; + if(Class3_Sub26.anInt2556 < 8 && var8 >= -32 && 31 >= var8 && -32 <= var9 && var9 <= 31) { + var9 += 32; + var8 += 32; + TextureOperation12.outgoingBuffer.writeShort(var9 + (Class3_Sub26.anInt2556 << 12) + (var8 << 6)); + Class3_Sub26.anInt2556 = 0; + } else if(Class3_Sub26.anInt2556 < 32 && var8 >= -128 && var8 <= 127 && var9 >= -128 && var9 <= 127) { + TextureOperation12.outgoingBuffer.writeByte(128 - -Class3_Sub26.anInt2556); + var9 += 128; + var8 += 128; + TextureOperation12.outgoingBuffer.writeShort((var8 << 8) + var9); + Class3_Sub26.anInt2556 = 0; + } else if(32 > Class3_Sub26.anInt2556) { + TextureOperation12.outgoingBuffer.writeByte(192 - -Class3_Sub26.anInt2556); + if(var7) { + TextureOperation12.outgoingBuffer.writeInt(Integer.MIN_VALUE); + } else { + TextureOperation12.outgoingBuffer.writeInt(var6 | var5 << 16); + } + + Class3_Sub26.anInt2556 = 0; + } else { + TextureOperation12.outgoingBuffer.writeShort(Class3_Sub26.anInt2556 + '\ue000'); + if(var7) { + TextureOperation12.outgoingBuffer.writeInt(Integer.MIN_VALUE); + } else { + TextureOperation12.outgoingBuffer.writeInt(var6 | var5 << 16); + } + + Class3_Sub26.anInt2556 = 0; + } + } + } + + TextureOperation12.outgoingBuffer.method769(-var2 + TextureOperation12.outgoingBuffer.index); + if(var3 < aClass67_1443.anInt1018) { + aClass67_1443.anInt1018 -= var3; + + for(var4 = 0; aClass67_1443.anInt1018 > var4; ++var4) { + aClass67_1443.anIntArray1020[var4] = aClass67_1443.anIntArray1020[var3 + var4]; + aClass67_1443.anIntArray1019[var4] = aClass67_1443.anIntArray1019[var4 + var3]; + } + } else { + aClass67_1443.anInt1018 = 0; + } + } + } else { + aClass67_1443.anInt1018 = 0; + } + } + + if(Unsorted.anInt3644 != 0) { + long var15 = (-aLong1465 + Class75.aLong1102) / 50L; + var3 = Class38_Sub1.anInt2614; + if(var3 >= 0) { + if(var3 > 65535) { + var3 = 65535; + } + } else { + var3 = 0; + } + + if(32767L < var15) { + var15 = 32767L; + } + + var4 = Class163_Sub1.anInt2993; + aLong1465 = Class75.aLong1102; + byte var19 = 0; + if(var4 >= 0) { + if(var4 > 65535) { + var4 = 65535; + } + } else { + var4 = 0; + } + + var6 = (int)var15; + if(Unsorted.anInt3644 == 2) { + var19 = 1; + } + + TextureOperation12.outgoingBuffer.putOpcode(75); + TextureOperation12.outgoingBuffer.writeShort128LE(var19 << 15 | var6); + TextureOperation12.outgoingBuffer.writeIntV2(var4 | var3 << 16); + } + + if(0 < anInt2212) { + --anInt2212; + } + + if(AudioThread.aBoolean346) { + for(queuedVarpIndex = 0; Class3_Sub23.anInt2537 > queuedVarpIndex; ++queuedVarpIndex) { + var2 = Class133.inputTextCodeArray[queuedVarpIndex]; + if(98 == var2 || var2 == 99 || var2 == 96 || var2 == 97) { + Unsorted.aBoolean4068 = true; + break; + } + } + } else if(ObjectDefinition.aBooleanArray1490[96] || ObjectDefinition.aBooleanArray1490[97] || ObjectDefinition.aBooleanArray1490[98] || ObjectDefinition.aBooleanArray1490[99]) { + Unsorted.aBoolean4068 = true; + } + + if(Unsorted.aBoolean4068 && 0 >= anInt2212) { + anInt2212 = 20; + Unsorted.aBoolean4068 = false; + TextureOperation12.outgoingBuffer.putOpcode(21); + TextureOperation12.outgoingBuffer.putShortA(Unsorted.anInt2309); + TextureOperation12.outgoingBuffer.writeShortLE(GraphicDefinition.CAMERA_DIRECTION); + } + + if(TextureOperation26.aBoolean3078 && !aBoolean2774) { + aBoolean2774 = true; + TextureOperation12.outgoingBuffer.putOpcode(22); + TextureOperation12.outgoingBuffer.writeByte(1); + } + + if(!TextureOperation26.aBoolean3078 && aBoolean2774) { + aBoolean2774 = false; + TextureOperation12.outgoingBuffer.putOpcode(22); + TextureOperation12.outgoingBuffer.writeByte(0); + } + + if(!CS2Script.aBoolean2705) { + TextureOperation12.outgoingBuffer.putOpcode(98); + TextureOperation12.outgoingBuffer.writeInt(Class84.method1421()); + CS2Script.aBoolean2705 = true; + } + + Class163_Sub1_Sub1.method2214(); + if(Class143.gameStage == 30) { + Scenery.cleanupOldScenery(); + Class115.method1713(); + AudioHandler.method132(); + ++AbstractSprite.anInt3699; + if(AbstractSprite.anInt3699 > 750) { + breakClientConnection(); + } else { + PlayerRendering.updatePlayerAreaArray(); + NPCRendering.updateNPCAreaArray(); + TextureOperation34.method189(); + if(Class3_Sub28_Sub3.aClass11_3551 != null) { + Unsorted.method848(); + } + + for(queuedVarpIndex = Class3_Sub5.method115(true); queuedVarpIndex != -1; queuedVarpIndex = Class3_Sub5.method115(false)) { + Class46.method1087(40, queuedVarpIndex); + Class44.anIntArray726[Unsorted.bitwiseAnd(Class36.anInt641++, 31)] = queuedVarpIndex; + } + + int nodeModelID; + for(InterfaceWidget var16 = Unsorted.popNextInterfaceWidget(); var16 != null; var16 = Unsorted.popNextInterfaceWidget()) { + var3 = var16.e(); + var4 = var16.f(); + if(1 == var3) { + NPCDefinition.varcArray[var4] = var16.anInt3598; + NPC.anIntArray3986[Unsorted.bitwiseAnd(31, PacketParser.anInt87++)] = var4; + } else if(var3 == 2) { + Class132.aStringArray1739[var4] = var16.text; + Class163_Sub2_Sub1.anIntArray4025[Unsorted.bitwiseAnd(31, Client.anInt2317++)] = var4; + } else { + RSInterface var20; + if(var3 == 3) { + var20 = Unsorted.getRSInterface(var4); + if(!var16.text.equalsString(Objects.requireNonNull(var20).text)) { + var20.text = var16.text; + Class20.method909(var20); + } + } else if (var3 == 4) { + var20 = Unsorted.getRSInterface(var4); + var6 = var16.anInt3598; + var8 = var16.anInt3596; + nodeModelID = var16.anInt3597; + if (Objects.requireNonNull(var20).modelType != var6 || nodeModelID != var20.itemId || var8 != var20.anInt265) { + var20.itemId = nodeModelID; + var20.anInt265 = var8; + var20.modelType = var6; + Class20.method909(var20); + } + } else if (var3 == 5) { + var20 = Unsorted.getRSInterface(var4); + if (var16.anInt3598 != Objects.requireNonNull(var20).animationId || var16.anInt3598 == -1) { + var20.anInt260 = 1; + var20.anInt267 = 0; + var20.animationId = var16.anInt3598; + var20.anInt283 = 0; + Class20.method909(var20); + } + } else if (var3 == 6) { + var5 = var16.anInt3598; + var6 = (32195 & var5) >> 10; + var8 = var5 & 31; + nodeModelID = (var5 & 1000) >> 5; + RSInterface var10 = Unsorted.getRSInterface(var4); + var9 = (var8 << 3) + (nodeModelID << 11) + (var6 << 19); + if (Objects.requireNonNull(var10).anInt218 != var9) { + var10.anInt218 = var9; + Class20.method909(var10); + } + } else if (var3 == 7) { + var20 = Unsorted.getRSInterface(var4); + boolean var24 = var16.anInt3598 == 1; + if (var20 != null && var24 == !var20.hidden) { + var20.hidden = var24; + Class20.method909(var20); + } + } else if (var3 == 8) { + var20 = Unsorted.getRSInterface(var4); + if (var16.anInt3598 != Objects.requireNonNull(var20).anInt182 || var20.anInt308 != var16.anInt3597 || var20.anInt164 != var16.anInt3596) { + var20.anInt182 = var16.anInt3598; + var20.anInt164 = var16.anInt3596; + var20.anInt308 = var16.anInt3597; + if (-1 != var20.anInt192) { + if (var20.anInt184 <= 0) { + if (var20.defWidth > 0) { + var20.anInt164 = 32 * var20.anInt164 / var20.defWidth; + } + } else { + var20.anInt164 = var20.anInt164 * 32 / var20.anInt184; + } + } + + Class20.method909(var20); + } + } else if (var3 == 9) { + var20 = Unsorted.getRSInterface(var4); + if (Objects.requireNonNull(var20).anInt192 != var16.anInt3598 || var20.anInt271 != var16.anInt3597) { + var20.anInt192 = var16.anInt3598; + var20.anInt271 = var16.anInt3597; + Class20.method909(var20); + } + } else if (var3 == 10) { + var20 = Unsorted.getRSInterface(var4); + if (var16.anInt3598 != Objects.requireNonNull(var20).anInt258 || var20.anInt264 != var16.anInt3597 || var20.anInt280 != var16.anInt3596) { + var20.anInt264 = var16.anInt3597; + var20.anInt280 = var16.anInt3596; + var20.anInt258 = var16.anInt3598; + Class20.method909(var20); + } + } else if (var3 == 11) { + var20 = Unsorted.getRSInterface(var4); + Objects.requireNonNull(var20).anInt306 = var20.defX = var16.anInt3598; + var20.horizontalPos = 0; + var20.verticalPos = 0; + var20.anInt210 = var20.defY = var16.anInt3597; + Class20.method909(var20); + } else if (var3 == 12) { + var20 = Unsorted.getRSInterface(var4); + var6 = var16.anInt3598; + if (null != var20 && 0 == var20.type) { + if (var6 > var20.anInt252 + -var20.height) { + var6 = var20.anInt252 + -var20.height; + } + + if (0 > var6) { + var6 = 0; + } + + if (var6 != var20.anInt208) { + var20.anInt208 = var6; + Class20.method909(var20); + } + } + } else if (var3 == 13) { + var20 = Unsorted.getRSInterface(var4); + Objects.requireNonNull(var20).anInt237 = var16.anInt3598; + } + } + } + + if(Class36.anInt638 != 0) { + Unsorted.anInt2958 += 20; + if(400 <= Unsorted.anInt2958) { + Class36.anInt638 = 0; + } + } + + ++Class106.anInt1446; + if(Unsorted.aClass11_1933 != null) { + ++BufferedDataStream.anInt2330; + if(15 <= BufferedDataStream.anInt2330) { + Class20.method909(Unsorted.aClass11_1933); + Unsorted.aClass11_1933 = null; + } + } + + RSInterface var17; + if(Class67.aClass11_1017 != null) { + Class20.method909(Class67.aClass11_1017); + if(Class126.anInt1676 > 5 + Class129_Sub1.anInt2693 || Class126.anInt1676 < -5 + Class129_Sub1.anInt2693 || Unsorted.anInt1709 > Unsorted.anInt40 + 5 || -5 + Unsorted.anInt40 > Unsorted.anInt1709) { + Class72.aBoolean1074 = true; + } + + ++Class40.anInt677; + if(0 == TextureOperation21.anInt3069) { + if(Class72.aBoolean1074 && 5 <= Class40.anInt677) { + if(Class67.aClass11_1017 == Class99.aClass11_1402 && PacketParser.anInt86 != anInt2701) { + var17 = Class67.aClass11_1017; + byte var18 = 0; + if(1 == Unsorted.anInt15 && 206 == var17.anInt189) { + var18 = 1; + } + + if(var17.itemAmounts[anInt2701] <= 0) { + var18 = 0; + } + + if(Client.method44(var17).method93()) { + var5 = PacketParser.anInt86; + var6 = anInt2701; + var17.itemAmounts[var6] = var17.itemAmounts[var5]; + var17.itemIds[var6] = var17.itemIds[var5]; + var17.itemAmounts[var5] = -1; + var17.itemIds[var5] = 0; + } else if (var18 == 1) { + var6 = anInt2701; + var5 = PacketParser.anInt86; + + while (var6 != var5) { + if (var5 > var6) { + var17.method864(-1 + var5, var5); + --var5; + } else { + var17.method864(1 + var5, var5); + ++var5; + } + } + } else { + var17.method864(anInt2701, PacketParser.anInt86); + } + + TextureOperation12.outgoingBuffer.putOpcode(231); + TextureOperation12.outgoingBuffer.writeShort(PacketParser.anInt86); + TextureOperation12.outgoingBuffer.writeIntLE2(Class67.aClass11_1017.componentHash); + TextureOperation12.outgoingBuffer.putShortA(anInt2701); + TextureOperation12.outgoingBuffer.write128Byte(var18); + } + } else if((Unsorted.anInt998 == 1 || TextureOperation8.method353(-1 + Unsorted.menuOptionCount, 0)) && Unsorted.menuOptionCount > 2) { + Class132.method1801(); + } else if(Unsorted.menuOptionCount > 0) { + TextureOperation9.method203(56); + } + + Unsorted.anInt3644 = 0; + BufferedDataStream.anInt2330 = 10; + Class67.aClass11_1017 = null; + } + } + + Class85.aBoolean1167 = false; + Class27.aClass11_526 = null; + Class21.aBoolean440 = false; + Class3_Sub23.anInt2537 = 0; + var17 = Class107.aClass11_1453; + Class107.aClass11_1453 = null; + RSInterface var21 = Class20.aClass11_439; + + for(Class20.aClass11_439 = null; Unsorted.method591(72) && 128 > Class3_Sub23.anInt2537; ++Class3_Sub23.anInt2537) { + Class133.inputTextCodeArray[Class3_Sub23.anInt2537] = Class3_Sub28_Sub9.anInt3624; + Class120.anIntArray1638[Class3_Sub23.anInt2537] = TextureOperation7.anInt3342; + } + + Class3_Sub28_Sub3.aClass11_3551 = null; + if(ConfigInventoryDefinition.anInt3655 != -1) { + GraphicDefinition.method967(0, 0, 0, Class23.canvasWidth, ConfigInventoryDefinition.anInt3655, 0, GroundItem.canvasHeight); + } + + ++PacketParser.anInt3213; + + while(true) { + CS2Script var26 = (CS2Script)PacketParser.aLinkedList_82.method1220(); + RSInterface var23; + RSInterface var25; + if(var26 == null) { + while(true) { + var26 = (CS2Script)Class65.aLinkedList_983.method1220(); + if(var26 == null) { + while(true) { + var26 = (CS2Script) Client.aLinkedList_1471.method1220(); + if(var26 == null) { + if(Class3_Sub28_Sub3.aClass11_3551 == null) { + Class3_Sub19.anInt2475 = 0; + } + + if(Class56.aClass11_886 != null) { + PacketParser.method829(); + } + + if(Player.rights > 0 && ObjectDefinition.aBooleanArray1490[82] && ObjectDefinition.aBooleanArray1490[81] && 0 != Class29.anInt561) { + var5 = WorldListCountry.localPlane - Class29.anInt561; + if(0 > var5) { + var5 = 0; + } else if(var5 > 3) { + var5 = 3; + } + + Class30.method979(Class102.player.xOffsets2767[0] + Class131.x1716, Class102.player.yOffsets2755[0] + Texture.y1152, var5); + } + + if(Player.rights > 0 && ObjectDefinition.aBooleanArray1490[82] && ObjectDefinition.aBooleanArray1490[81]) { + if(-1 != Class27.anInt515) { + Class30.method979(Class131.x1716 + Class27.anInt515, Texture.y1152 - -Unsorted.anInt999, WorldListCountry.localPlane); + } + + ObjectDefinition.anInt1521 = 0; + CS2Script.anInt2440 = 0; + } else if(CS2Script.anInt2440 == 2) { + if(Class27.anInt515 != -1) { + TextureOperation12.outgoingBuffer.putOpcode(131); + TextureOperation12.outgoingBuffer.writeIntV2(BufferedDataStream.anInt872); + TextureOperation12.outgoingBuffer.putShortA(Class131.x1716 + Class27.anInt515); + TextureOperation12.outgoingBuffer.writeShort128LE(RSInterface.anInt278); + TextureOperation12.outgoingBuffer.putShortA(Unsorted.anInt999 + Texture.y1152); + Class36.anInt638 = 1; + Unsorted.anInt2958 = 0; + Unsorted.anInt4062 = Class38_Sub1.anInt2614; + Class70.anInt1053 = Class163_Sub1.anInt2993; + } + + CS2Script.anInt2440 = 0; + } else if(2 == ObjectDefinition.anInt1521) { + if(-1 != Class27.anInt515) { + TextureOperation12.outgoingBuffer.putOpcode(179); + TextureOperation12.outgoingBuffer.writeShort(Texture.y1152 + Unsorted.anInt999); + TextureOperation12.outgoingBuffer.writeShort(Class27.anInt515 + Class131.x1716); + Unsorted.anInt2958 = 0; + Class36.anInt638 = 1; + Class70.anInt1053 = Class163_Sub1.anInt2993; + Unsorted.anInt4062 = Class38_Sub1.anInt2614; + } + + ObjectDefinition.anInt1521 = 0; + } else if(-1 != Class27.anInt515 && 0 == CS2Script.anInt2440 && ObjectDefinition.anInt1521 == 0) { + boolean var27 = Class3_Sub28_Sub9.method582(Class102.player.yOffsets2755[0], 0, 0, true, 0, 2, Class27.anInt515, 0, 0, 0, Unsorted.anInt999, Class102.player.xOffsets2767[0]); + if(var27) { + Unsorted.anInt4062 = Class38_Sub1.anInt2614; + Unsorted.anInt2958 = 0; + Class70.anInt1053 = Class163_Sub1.anInt2993; + Class36.anInt638 = 1; + } + } + + Class27.anInt515 = -1; + Class163_Sub1.method2211(); + if(Class107.aClass11_1453 != var17) { + if(var17 != null) { + Class20.method909(var17); + } + + if(null != Class107.aClass11_1453) { + Class20.method909(Class107.aClass11_1453); + } + } + + if(var21 != Class20.aClass11_439 && Class75.anInt1109 == TextureOperation35.anInt3323) { + if(null != var21) { + Class20.method909(var21); + } + + if(null != Class20.aClass11_439) { + Class20.method909(Class20.aClass11_439); + } + } + + if(Class20.aClass11_439 == null) { + if(Class75.anInt1109 > 0) { + --Class75.anInt1109; + } + } else if(Class75.anInt1109 < TextureOperation35.anInt3323) { + ++Class75.anInt1109; + if(TextureOperation35.anInt3323 == Class75.anInt1109) { + Class20.method909(Class20.aClass11_439); + } + } + + if(Class133.anInt1753 == 1) { + Unsorted.method2086(); + } else if(Class133.anInt1753 == 2) { + CS2Script.method379(); + } else { + InterfaceWidget.d(65535); + } + + for(var5 = 0; var5 < 5; ++var5) { + ++Class163_Sub1_Sub1.anIntArray4009[var5]; + } + + var5 = Texture.method1406(); + var6 = TextureOperation32.method301((byte)-119); + if(var5 > 15000 && var6 > 15000) { + Class159.anInt2023 = 250; + Class23.method940(112, 14500); + TextureOperation12.outgoingBuffer.putOpcode(245); + } + + if(AudioThread.aClass64_351 != null && AudioThread.aClass64_351.anInt978 == 1) { + if(null != AudioThread.aClass64_351.anObject974) { + Class99.method1596(TextureOperation5.aString_3295, (byte)126, Unsorted.aBoolean2154); + } + + TextureOperation5.aString_3295 = null; + AudioThread.aClass64_351 = null; + Unsorted.aBoolean2154 = false; + } + + ++TextureOperation18.anInt4032; + ++Class43.anInt716; + ++ClientErrorException.anInt2120; + if(ClientErrorException.anInt2120 > 500) { + ClientErrorException.anInt2120 = 0; + nodeModelID = (int)(8.0D * Math.random()); + if((nodeModelID & 4) == 4) { + LinkableRSString.anInt2589 += anInt1682; + } + + if((nodeModelID & 2) == 2) { + Unsorted.anInt42 += anInt2217; + } + + if((nodeModelID & 1) == 1) { + anInt3216 += Class146.anInt1901; + } + } + + if(Class43.anInt716 > 500) { + Class43.anInt716 = 0; + nodeModelID = (int)(8.0D * Math.random()); + if((1 & nodeModelID) == 1) { + TextureOperation9.anInt3102 += Unsorted.anInt48; + } + + if((2 & nodeModelID) == 2) { + Class164_Sub2.anInt3020 += Unsorted.anInt25; + } + } + + if(anInt3216 < -50) { + Class146.anInt1901 = 2; + } + + if(TextureOperation9.anInt3102 < -60) { + Unsorted.anInt48 = 2; + } + + if(Class164_Sub2.anInt3020 < -20) { + Unsorted.anInt25 = 1; + } + + if(-55 > Unsorted.anInt42) { + anInt2217 = 2; + } + + if(Unsorted.anInt42 > 55) { + anInt2217 = -2; + } + + if(-40 > LinkableRSString.anInt2589) { + anInt1682 = 1; + } + + if(anInt3216 > 50) { + Class146.anInt1901 = -2; + } + + if(LinkableRSString.anInt2589 > 40) { + anInt1682 = -1; + } + + if(10 < Class164_Sub2.anInt3020) { + Unsorted.anInt25 = -1; + } + + if(60 < TextureOperation9.anInt3102) { + Unsorted.anInt48 = -2; + } + + if(TextureOperation18.anInt4032 > 50) { + TextureOperation12.outgoingBuffer.putOpcode(93); + } + + if(RenderAnimationDefinition.aBoolean402) { + Class38.method1029(); + RenderAnimationDefinition.aBoolean402 = false; + } + + try { + if(Class3_Sub15.activeConnection != null && TextureOperation12.outgoingBuffer.index > 0) { + Class3_Sub15.activeConnection.sendBytes(TextureOperation12.outgoingBuffer.buffer, TextureOperation12.outgoingBuffer.index); + TextureOperation18.anInt4032 = 0; + TextureOperation12.outgoingBuffer.index = 0; + } + } catch (IOException var11) { + breakClientConnection(); + } + + return; + } + + var25 = var26.aClass11_2449; + if(var25.anInt191 >= 0) { + var23 = Unsorted.getRSInterface(var25.parentId); + if(null == var23 || var23.aClass11Array262 == null || var23.aClass11Array262.length <= var25.anInt191 || var25 != var23.aClass11Array262[var25.anInt191]) { + continue; + } + } + + Class43.method1065(var26); + } + } + + var25 = var26.aClass11_2449; + if(var25.anInt191 >= 0) { + var23 = Unsorted.getRSInterface(var25.parentId); + if(var23 == null || null == var23.aClass11Array262 || var23.aClass11Array262.length <= var25.anInt191 || var23.aClass11Array262[var25.anInt191] != var25) { + continue; + } + } + + Class43.method1065(var26); + } + } + + var25 = var26.aClass11_2449; + if(var25.anInt191 >= 0) { + var23 = Unsorted.getRSInterface(var25.parentId); + if(var23 == null || var23.aClass11Array262 == null || var25.anInt191 >= var23.aClass11Array262.length || var23.aClass11Array262[var25.anInt191] != var25) { + continue; + } + } + + Class43.method1065(var26); + } + } + } + } + } + } catch (RuntimeException var13) { + throw ClientErrorException.clientError(var13, "gg.F(" + true + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/TextureOperation21.java b/Client/src/main/java/org/runite/client/TextureOperation21.java new file mode 100644 index 000000000..5ee1f7e6e --- /dev/null +++ b/Client/src/main/java/org/runite/client/TextureOperation21.java @@ -0,0 +1,110 @@ +package org.runite.client; + +import java.util.Objects; + +final class TextureOperation21 extends TextureOperation { + + static int anInt3069 = 0; + + + final int[][] method166(int var2) { + try { + if(-1 != -1) { + anInt3069 = 67; + } + + int[][] var3 = this.aClass97_2376.method1594((byte)7, var2); + if(this.aClass97_2376.aBoolean1379) { + int[] var4 = this.method152(2, var2); + int[][] var5 = this.method162(var2, 0, (byte)-119); + int[][] var6 = this.method162(var2, 1, (byte)-107); + int[] var9 = var3[2]; + int[] var8 = var3[1]; + int[] var10 = Objects.requireNonNull(var5)[0]; + int[] var11 = var5[1]; + int[] var7 = var3[0]; + int[] var13 = Objects.requireNonNull(var6)[0]; + int[] var12 = var5[2]; + int[] var15 = var6[2]; + int[] var14 = var6[1]; + + for(int var16 = 0; var16 < Class113.anInt1559; ++var16) { + int var17 = var4[var16]; + if(var17 == 4096) { + var7[var16] = var10[var16]; + var8[var16] = var11[var16]; + var9[var16] = var12[var16]; + } else if (0 == var17) { + var7[var16] = var13[var16]; + var8[var16] = var14[var16]; + var9[var16] = var15[var16]; + } else { + int var18 = -var17 + 4096; + var7[var16] = var18 * var13[var16] + var17 * var10[var16] >> 12; + var8[var16] = var18 * var14[var16] + var11[var16] * var17 >> 12; + var9[var16] = var15[var16] * var18 + var12[var16] * var17 >> 12; + } + } + } + + return var3; + } catch (RuntimeException var19) { + throw ClientErrorException.clientError(var19, "bl.T(" + -1 + ',' + var2 + ')'); + } + } + + public TextureOperation21() { + super(3, false); + } + + final void decode(int var1, DataBuffer var2) { + try { + if(var1 == 0) { + this.aBoolean2375 = var2.readUnsignedByte() == 1; + } + + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "bl.A(" + var1 + ',' + (var2 != null?"{...}":"null") + ',' + true + ')'); + } + } + + static void method194(int var0, int var1, int var2, int var3, int var4, int var6, int var7) { + try { + if(var7 >= Class101.anInt1425 && Class3_Sub28_Sub18.anInt3765 >= var6 && var4 >= Class159.anInt2020 && var1 <= Class57.anInt902) { + TextureOperation4.method262(var3, var4, var1, var2, var0, var6, var7); + } else { + Class143.method2062(var6, var2, var1, var0, var3, var4, var7); + } + + } catch (RuntimeException var9) { + throw ClientErrorException.clientError(var9, "bl.B(" + var0 + ',' + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + 4096 + ',' + var6 + ',' + var7 + ')'); + } + } + + final int[] method154(int var1, byte var2) { + try { + int[] var3 = this.aClass114_2382.method1709(var1); + if(this.aClass114_2382.aBoolean1580) { + int[] var5 = this.method152(0, var1); + int[] var6 = this.method152(1, var1); + int[] var7 = this.method152(2, var1); + + for(int var8 = 0; var8 < Class113.anInt1559; ++var8) { + int var9 = var7[var8]; + if(4096 == var9) { + var3[var8] = var5[var8]; + } else if(var9 == 0) { + var3[var8] = var6[var8]; + } else { + var3[var8] = var9 * var5[var8] - -((-var9 + 4096) * var6[var8]) >> 12; + } + } + } + + return var3; + } catch (RuntimeException var10) { + throw ClientErrorException.clientError(var10, "bl.D(" + var1 + ',' + var2 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/TextureOperation22.java b/Client/src/main/java/org/runite/client/TextureOperation22.java new file mode 100644 index 000000000..355bc6e3f --- /dev/null +++ b/Client/src/main/java/org/runite/client/TextureOperation22.java @@ -0,0 +1,86 @@ +package org.runite.client; + +import java.util.Objects; + +public final class TextureOperation22 extends TextureOperation { + + static int anInt3419 = 0; + public static Class131 aClass131_3421; + + + final int[] method154(int var1, byte var2) { + try { + int[] var3 = this.aClass114_2382.method1709(var1); + if(this.aClass114_2382.aBoolean1580) { + int[] var4 = this.method152(0, var1); + + for(int var5 = 0; var5 < Class113.anInt1559; ++var5) { + var3[var5] = 4096 - var4[var5]; + } + } + + return var3; + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "tb.D(" + var1 + ',' + var2 + ')'); + } + } + + public TextureOperation22() { + super(1, false); + } + + static int method335(int var0) { + try { + if(var0 != 16859) { + aClass131_3421 = null; + } + + return ClientCommands.shiftClickEnabled && ObjectDefinition.aBooleanArray1490[81] && 2 < Unsorted.menuOptionCount?Class114.anIntArray1578[-2 + Unsorted.menuOptionCount]:Class114.anIntArray1578[Unsorted.menuOptionCount - 1]; + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "tb.C(" + var0 + ')'); + } + } + + final void decode(int var1, DataBuffer var2) { + try { + if(true) { + if(var1 == 0) { + this.aBoolean2375 = var2.readUnsignedByte() == 1; + } + + } + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "tb.A(" + var1 + ',' + (var2 != null ? "{...}" : "null") + ',' + ')'); + } + } + + final int[][] method166(int var2) { + try { + if(-1 == -1) { + int[][] var3 = this.aClass97_2376.method1594((byte)-128, var2); + if(this.aClass97_2376.aBoolean1379) { + int[][] var4 = this.method162(var2, 0, (byte)-51); + int[] var7 = Objects.requireNonNull(var4)[2]; + int[] var5 = var4[0]; + int[] var6 = var4[1]; + int[] var8 = var3[0]; + int[] var9 = var3[1]; + int[] var10 = var3[2]; + + for(int var11 = 0; var11 < Class113.anInt1559; ++var11) { + var8[var11] = -var5[var11] + 4096; + var9[var11] = 4096 - var6[var11]; + var10[var11] = 4096 - var7[var11]; + } + } + + return var3; + } else { + return null; + } + } catch (RuntimeException var12) { + throw ClientErrorException.clientError(var12, "tb.T(" + -1 + ',' + var2 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/TextureOperation23.java b/Client/src/main/java/org/runite/client/TextureOperation23.java new file mode 100644 index 000000000..5a0e3643b --- /dev/null +++ b/Client/src/main/java/org/runite/client/TextureOperation23.java @@ -0,0 +1,187 @@ +package org.runite.client; + +import org.rs09.client.data.HashTable; + +import java.util.Objects; + +final class TextureOperation23 extends TextureOperation { + + static boolean aBoolean3207 = false; + static HashTable aHashTable_3208 = new HashTable<>(8); + static int[] anIntArray3212; + static int anInt1780; + + + public TextureOperation23() { + super(1, false); + } + + static void method247(byte var0) { + try { + if(PositionedGraphicObject.aBoolean2713) { + SequenceDefinition.aClass109_1856 = null; + PositionedGraphicObject.aBoolean2713 = false; + Class40.aAbstractSprite_680 = null; + } + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "je.F(" + var0 + ')'); + } + } + + private void method248(int var1, byte var2, int var3) { + try { + if(var2 > 80) { + int var4 = Class102.anIntArray2125[var3]; + int var5 = Class163_Sub3.anIntArray2999[var1]; + float var6 = (float)Math.atan2(var4 - 2048, var5 - 2048); + if((double)var6 >= -3.141592653589793D && -2.356194490192345D >= (double)var6) { + Class50.anInt828 = var1; + Class159.anInt2024 = var3; + } else if((double)var6 <= -1.5707963267948966D && -2.356194490192345D <= (double)var6) { + Class159.anInt2024 = var1; + Class50.anInt828 = var3; + } else if((double)var6 <= -0.7853981633974483D && (double)var6 >= -1.5707963267948966D) { + Class159.anInt2024 = -var1 + Class113.anInt1559; + Class50.anInt828 = var3; + } else if(0.0F >= var6 && (double)var6 >= -0.7853981633974483D) { + Class159.anInt2024 = var3; + Class50.anInt828 = Class101.anInt1427 - var1; + } else if(var6 >= 0.0F && (double)var6 <= 0.7853981633974483D) { + Class159.anInt2024 = -var3 + Class113.anInt1559; + Class50.anInt828 = -var1 + Class101.anInt1427; + } else if((double)var6 >= 0.7853981633974483D && (double)var6 <= 1.5707963267948966D) { + Class159.anInt2024 = -var1 + Class113.anInt1559; + Class50.anInt828 = -var3 + Class101.anInt1427; + } else if((double)var6 >= 1.5707963267948966D && 2.356194490192345D >= (double)var6) { + Class50.anInt828 = -var3 + Class101.anInt1427; + Class159.anInt2024 = var1; + } else if(2.356194490192345D <= (double)var6 && (double)var6 <= 3.141592653589793D) { + Class159.anInt2024 = -var3 + Class113.anInt1559; + Class50.anInt828 = var1; + } + + Class159.anInt2024 &= RenderAnimationDefinition.anInt396; + Class50.anInt828 &= Class3_Sub20.anInt2487; + } + } catch (RuntimeException var7) { + throw ClientErrorException.clientError(var7, "je.Q(" + var1 + ',' + var2 + ',' + var3 + ')'); + } + } + + final void decode(int var1, DataBuffer var2) { + try { + if(var1 == 0) { + this.aBoolean2375 = var2.readUnsignedByte() == 1; + } + + if(!true) { + GroundItemLink.worldmapIndex_3210 = null; + } + + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "je.A(" + var1 + ',' + (var2 != null?"{...}":"null") + ',' + true + ')'); + } + } + + static void method250(CacheIndex var1) { + try { + Class8.configurationReferenceCache = var1; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "je.C(" + 2048 + ',' + (var1 != null?"{...}":"null") + ')'); + } + } + + static int method251() { + try { + if(Class119.aClass131_1624 == null) { + return -1; + } else { + while(Class119.aClass131_1624.anInt1720 > anInt1780) { + if(Class119.aClass131_1624.method1794(anInt1780, -20138)) { + return anInt1780++; + } + + ++anInt1780; + } + + return -1; + } + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "je.B(" + -1 + ')'); + } + } + + static void method252() { + try { + Class3_Sub9 var1; + for(var1 = (Class3_Sub9) Unsorted.aLinkedList_78.startIteration(); null != var1; var1 = (Class3_Sub9) Unsorted.aLinkedList_78.nextIteration()) { + if(var1.aBoolean2329) { + var1.method134(); + } + } + + for(var1 = (Class3_Sub9) Unsorted.aLinkedList_1242.startIteration(); null != var1; var1 = (Class3_Sub9) Unsorted.aLinkedList_1242.nextIteration()) { + if(var1.aBoolean2329) { + var1.method134(); + } + } + + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "je.S(" + 8 + ')'); + } + } + + final int[] method154(int var1, byte var2) { + try { + int[] var4 = this.aClass114_2382.method1709(var1); + if(this.aClass114_2382.aBoolean1580) { + for(int var5 = 0; var5 < Class113.anInt1559; ++var5) { + this.method248(var1, (byte)105, var5); + int[] var6 = this.method152(0, Class50.anInt828); + var4[var5] = var6[Class159.anInt2024]; + } + } + + return var4; + } catch (RuntimeException var7) { + throw ClientErrorException.clientError(var7, "je.D(" + var1 + ',' + var2 + ')'); + } + } + + static void method253(int var1, int var2, int var3, int var4) { + try { + + Class3_Sub28_Sub1.anInt3536 = Class23.anInt455 * var3 / var1; + Scenery.anInt2251 = Class108.anInt1460 * var2 / var4; + Texture.anInt1150 = -1; + TextureOperation13.anInt3362 = -1; + Class3_Sub5.method117(); + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "je.E(" + -22611 + ',' + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ')'); + } + } + + final int[][] method166(int var2) { + try { + int[][] var3 = this.aClass97_2376.method1594((byte)-125, var2); + if(this.aClass97_2376.aBoolean1379) { + int[] var4 = var3[0]; + int[] var6 = var3[2]; + int[] var5 = var3[1]; + + for(int var7 = 0; Class113.anInt1559 > var7; ++var7) { + this.method248(var2, (byte)107, var7); + int[][] var8 = this.method162(Class50.anInt828, 0, (byte)-49); + var4[var7] = Objects.requireNonNull(var8)[0][Class159.anInt2024]; + var5[var7] = var8[1][Class159.anInt2024]; + var6[var7] = var8[2][Class159.anInt2024]; + } + } + + return var3; + } catch (RuntimeException var9) { + throw ClientErrorException.clientError(var9, "je.T(" + ',' + var2 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/TextureOperation24.java b/Client/src/main/java/org/runite/client/TextureOperation24.java new file mode 100644 index 000000000..eccc5e42b --- /dev/null +++ b/Client/src/main/java/org/runite/client/TextureOperation24.java @@ -0,0 +1,109 @@ +package org.runite.client; + +import org.rs09.client.rendering.Toolkit; + +import java.util.Objects; +import java.util.zip.CRC32; + +final class TextureOperation24 extends TextureOperation { + + static CRC32 CRC32 = new CRC32(); + static int anInt3377 = 7759444;//Very light Brown 7759444 // #766654 + static int anInt2243 = 3353893;//Dark Brown 2 3353893 // #332D25 + static int anInt2530 = 2301979;//Dark Brown 2301979 // #34301B + static int anInt486 = 5063219;//Light Brown 5063219 // #4d4233 + + + static void method223(int var1, int var2, int var3, int var4, int var5, int var6, int var7) { + try { + if (var7 == var4) { + Unsorted.method1460(var1, var3, var6, var7, var2, var5); + } else { + + if (Class101.anInt1425 <= var2 - var7 && var7 + var2 <= Class3_Sub28_Sub18.anInt3765 && var3 - var4 >= Class159.anInt2020 && Class57.anInt902 >= var3 + var4) { + Class161.method2200(var6, var2, var3, var5, var7, 95, var4, var1); + } else { + TextureOperation25.method329(var7, var6, var5, var1, var3, var2, var4); + } + + } + } catch (RuntimeException var9) { + throw ClientErrorException.clientError(var9, "fn.C(" + true + ',' + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + var5 + ',' + var6 + ',' + var7 + ')'); + } + } + + public TextureOperation24() { + super(1, true); + } + + static void method224(int var1, int var2, int var3, int var4, int var5) { + try { + GameObject.aClass109Array1831[0].method1667(var3, var4); + GameObject.aClass109Array1831[1].method1667(var3, -16 + var5 + var4); + int var6 = var5 * (var5 + -32) / var2; + if (var6 < 8) { + var6 = 8; + } + int var7 = var1 * (-var6 + -32 + var5) / (var2 + -var5); + Toolkit.getActiveToolkit().method934(var3, 16 + var4, 16, -32 + var5, anInt2530); + Toolkit.getActiveToolkit().method934(var3, 16 + var4 + var7, 16, var6, anInt486); + Toolkit.getActiveToolkit().drawVerticalLine(var3, var7 + (var4 + 16), var6, anInt3377); + Toolkit.getActiveToolkit().drawVerticalLine(var3 + 1, var7 + 16 + var4, var6, anInt3377); + Toolkit.getActiveToolkit().drawHorizontalLine(var3, var7 + 16 + var4, 16, anInt3377); + Toolkit.getActiveToolkit().drawHorizontalLine(var3, var7 + var4 + 17, 16, anInt3377); + Toolkit.getActiveToolkit().drawVerticalLine(15 + var3, var4 + (16 + var7), var6, anInt2243); + Toolkit.getActiveToolkit().drawVerticalLine(14 + var3, 17 + (var4 + var7), -1 + var6, anInt2243); + Toolkit.getActiveToolkit().drawHorizontalLine(var3, var6 + 15 + var4 + var7, 16, anInt2243); + Toolkit.getActiveToolkit().drawHorizontalLine(1 + var3, var6 + var4 + (14 + var7), 15, anInt2243); + + } catch (RuntimeException var9) { + throw ClientErrorException.clientError(var9, "fn.E(" + (byte) 120 + ',' + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + var5 + ')'); + } + } + + static void method226(int var0) { + try { + if (var0 != -1) { + if (Unsorted.loadInterface(var0)) { + RSInterface[] var2 = GameObject.interfaces1834[var0]; + + for (int var3 = 0; var3 < var2.length; ++var3) { + RSInterface var4 = var2[var3]; + if (null != var4.interfaceScript159) { + CS2Script var5 = new CS2Script(); + System.out.printf("Interface (%d, %d) running script %d\n", var4.componentHash >> 16, var4.componentHash & 0xffff, var4.interfaceScript159[0]); + var5.arguments = var4.interfaceScript159; + var5.aClass11_2449 = var4; + DumpingTools.RunOnceAfterStartup(); + CS2Script.runAssembledScript(2000000, var5); + } + } + + } + } + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "fn.F(" + var0 + ')'); + } + } + + final int[] method154(int var1, byte var2) { + try { + int[] var10 = this.aClass114_2382.method1709(var1); + if (this.aClass114_2382.aBoolean1580) { + int[][] var4 = this.method162(var1, 0, (byte) -126); + int[] var5 = Objects.requireNonNull(var4)[0]; + int[] var7 = var4[2]; + int[] var6 = var4[1]; + + for (int var8 = 0; Class113.anInt1559 > var8; ++var8) { + var10[var8] = (var7[var8] + var5[var8] + var6[var8]) / 3; + } + } + + return var10; + } catch (RuntimeException var9) { + throw ClientErrorException.clientError(var9, "fn.D(" + var1 + ',' + var2 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/TextureOperation25.java b/Client/src/main/java/org/runite/client/TextureOperation25.java new file mode 100644 index 000000000..087413f4d --- /dev/null +++ b/Client/src/main/java/org/runite/client/TextureOperation25.java @@ -0,0 +1,340 @@ +package org.runite.client; + +import org.rs09.client.data.ReferenceCache; + +import java.util.Objects; + +public final class TextureOperation25 extends TextureOperation { + + private final int[] anIntArray3403 = new int[3]; + private int anInt3404 = 409; + private int anInt3405 = 4096; + private int anInt3406 = 4096; + private int anInt3410 = 4096; + static long aLong3411 = 0L; + static ReferenceCache aReferenceCache_3412 = new ReferenceCache(64); + static int anInt3413 = 0; + static int anInt3414; + static boolean aBoolean3416 = false; + static int anInt3417; + + + static void method329(int var0, int var1, int var2, int var3, int var5, int var6, int var7) { + try { + int var8 = 0; + int var11 = -var3 + var0; + int var10 = 0; + int var9 = var7; + int var14 = var7 * var7; + int var12 = -var3 + var7; + int var13 = var0 * var0; + int var17 = var14 << 1; + int var16 = var12 * var12; + int var15 = var11 * var11; + int var18 = var13 << 1; + int var19 = var16 << 1; + int var20 = var15 << 1; + int var22 = var12 << 1; + int var21 = var7 << 1; + int var23 = var17 + var13 * (1 + -var21); + int var24 = var14 + -((var21 + -1) * var18); + int var25 = var19 + var15 * (1 + -var22); + int var26 = var16 - var20 * (var22 + -1); + int var28 = var14 << 2; + int var27 = var13 << 2; + int var30 = var16 << 2; + int var31 = var17 * 3; + int var32 = (var21 + -3) * var18; + int var29 = var15 << 2; + int var33 = var19 * 3; + int var35 = (-3 + var22) * var20; + int var37 = (-1 + var7) * var27; + int var38 = var30; + int var36 = var28; + int var39 = (-1 + var12) * var29; + int var42; + int var43; + int var41; + int var44; + if (var5 >= Class159.anInt2020 && Class57.anInt902 >= var5) { + int[] var40 = Class38.anIntArrayArray663[var5]; + var41 = Class40.method1040(Class3_Sub28_Sub18.anInt3765, var6 - var0, Class101.anInt1425); + var42 = Class40.method1040(Class3_Sub28_Sub18.anInt3765, var6 - -var0, Class101.anInt1425); + var43 = Class40.method1040(Class3_Sub28_Sub18.anInt3765, var6 + -var11, Class101.anInt1425); + var44 = Class40.method1040(Class3_Sub28_Sub18.anInt3765, var6 - -var11, Class101.anInt1425); + TextureOperation18.method282(var40, var41, 127, var43, var2); + TextureOperation18.method282(var40, var43, 105, var44, var1); + TextureOperation18.method282(var40, var44, -67, var42, var2); + } + + while (var9 > 0) { + if (var23 < 0) { + while (var23 < 0) { + var23 += var31; + var31 += var28; + ++var8; + var24 += var36; + var36 += var28; + } + } + + boolean var49 = (var12 >= var9); + if (0 > var24) { + var24 += var36; + var23 += var31; + ++var8; + var36 += var28; + var31 += var28; + } + + if (var49) { + while (var25 < 0) { + ++var10; + var26 += var38; + var38 += var30; + var25 += var33; + var33 += var30; + } + if (var26 < 0) { + ++var10; + var26 += var38; + var25 += var33; + var38 += var30; + var33 += var30; + } + + var25 += -var39; + var39 -= var29; + var26 += -var35; + var35 -= var29; + } + + var24 += -var32; + var23 += -var37; + var37 -= var27; + var32 -= var27; + --var9; + var42 = var5 - -var9; + var41 = -var9 + var5; + if (Class159.anInt2020 <= var42 && Class57.anInt902 >= var41) { + var43 = Class40.method1040(Class3_Sub28_Sub18.anInt3765, var6 + var8, Class101.anInt1425); + var44 = Class40.method1040(Class3_Sub28_Sub18.anInt3765, -var8 + var6, Class101.anInt1425); + if (var49) { + int var45 = Class40.method1040(Class3_Sub28_Sub18.anInt3765, var6 + var10, Class101.anInt1425); + int var46 = Class40.method1040(Class3_Sub28_Sub18.anInt3765, var6 - var10, Class101.anInt1425); + int[] var47; + if (Class159.anInt2020 <= var41) { + var47 = Class38.anIntArrayArray663[var41]; + TextureOperation18.method282(var47, var44, 120, var46, var2); + TextureOperation18.method282(var47, var46, -107, var45, var1); + TextureOperation18.method282(var47, var45, -102, var43, var2); + } + + if (Class57.anInt902 >= var42) { + var47 = Class38.anIntArrayArray663[var42]; + TextureOperation18.method282(var47, var44, 87, var46, var2); + TextureOperation18.method282(var47, var46, -92, var45, var1); + TextureOperation18.method282(var47, var45, 124, var43, var2); + } + } else { + if (var41 >= Class159.anInt2020) { + TextureOperation18.method282(Class38.anIntArrayArray663[var41], var44, -122, var43, var2); + } + + if (Class57.anInt902 >= var42) { + TextureOperation18.method282(Class38.anIntArrayArray663[var42], var44, 89, var43, var2); + } + } + } + } + + } catch (RuntimeException var48) { + throw ClientErrorException.clientError(var48, "sk.Q(" + var0 + ',' + var1 + ',' + var2 + ',' + var3 + ',' + (byte) -54 + ',' + var5 + ',' + var6 + ',' + var7 + ')'); + } + } + + final void decode(int var1, DataBuffer var2) { + try { + if (true) { + if (var1 == 0) { + this.anInt3404 = var2.readUnsignedShort(); + } else if (1 == var1) { + this.anInt3405 = var2.readUnsignedShort(); + } else if (var1 == 2) { + this.anInt3406 = var2.readUnsignedShort(); + } else if (var1 == 3) { + this.anInt3410 = var2.readUnsignedShort(); + } else if (4 == var1) { + int var4 = var2.readMedium(); + this.anIntArray3403[2] = Unsorted.bitwiseAnd(var4, 255) >> 12; + this.anIntArray3403[1] = Unsorted.bitwiseAnd(var4 >> 4, 4080); + this.anIntArray3403[0] = Unsorted.bitwiseAnd(16711680, var4) << 4; + } + + } + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "sk.A(" + var1 + ',' + (var2 != null ? "{...}" : "null") + ',' + ')'); + } + } + + static void method330(int var0, int var1, int var2, int var3, int var4, int var5) { + try { + if (var1 > -83) { + Unsorted.menuOptionCount = 115; + } + + int var6 = -var3 + var5; + int var7 = var2 - var4; + if (var6 == 0) { + if (0 != var7) { + Class3_Sub8.method126(false, var2, var4, var0, var3); + } + + } else if (var7 == 0) { + Class75_Sub4.method1354(var3, var0, var5, var4); + } else { + int var12 = (var7 << 12) / var6; + int var13 = -(var12 * var3 >> 12) + var4; + int var8; + int var10; + if (var3 < Class101.anInt1425) { + var8 = Class101.anInt1425; + var10 = (Class101.anInt1425 * var12 >> 12) + var13; + } else if (var3 > Class3_Sub28_Sub18.anInt3765) { + var10 = (Class3_Sub28_Sub18.anInt3765 * var12 >> 12) + var13; + var8 = Class3_Sub28_Sub18.anInt3765; + } else { + var8 = var3; + var10 = var4; + } + + int var9; + int var11; + if (Class101.anInt1425 <= var5) { + if (Class3_Sub28_Sub18.anInt3765 < var5) { + var9 = Class3_Sub28_Sub18.anInt3765; + var11 = var13 - -(var12 * Class3_Sub28_Sub18.anInt3765 >> 12); + } else { + var11 = var2; + var9 = var5; + } + } else { + var9 = Class101.anInt1425; + var11 = var13 + (var12 * Class101.anInt1425 >> 12); + } + + if (var11 >= Class159.anInt2020) { + if (Class57.anInt902 < var11) { + var11 = Class57.anInt902; + var9 = (Class57.anInt902 - var13 << 12) / var12; + } + } else { + var9 = (Class159.anInt2020 - var13 << 12) / var12; + var11 = Class159.anInt2020; + } + + if (Class159.anInt2020 > var10) { + var10 = Class159.anInt2020; + var8 = (Class159.anInt2020 + -var13 << 12) / var12; + } else if (Class57.anInt902 < var10) { + var10 = Class57.anInt902; + var8 = (-var13 + Class57.anInt902 << 12) / var12; + } + + GameObject.method1869((byte) 6, var0, var11, var10, var9, var8); + } + } catch (RuntimeException var14) { + throw ClientErrorException.clientError(var14, "sk.E(" + var0 + ',' + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + var5 + ')'); + } + } + + public TextureOperation25() { + super(1, false); + } + + static int method332(int var0, int var1) { + try { + if (var0 != 2) { + anInt3414 = -40; + } + + if ((var1 < 65 || var1 > 90) && (var1 < 192 || var1 > 222 || var1 == 215)) { + if (var1 != 159) return var1 != 140 ? var1 : 156; + return 255; + } + return 32 + var1; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "sk.C(" + var0 + ',' + var1 + ')'); + } + } + + static boolean method334(CacheIndex var0) { + try { + return var0.retrieveSpriteFile(NPC.anInt4001); + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "sk.R(" + (var0 != null ? "{...}" : "null") + ',' + 0 + ')'); + } + } + + final int[][] method166(int var2) { + try { + int[][] var3 = this.aClass97_2376.method1594((byte) 91, var2); + if (this.aClass97_2376.aBoolean1379) { + int[][] var4 = this.method162(var2, 0, (byte) -96); + int[] var5 = Objects.requireNonNull(var4)[0]; + int[] var6 = var4[1]; + int[] var7 = var4[2]; + int[] var8 = var3[0]; + int[] var9 = var3[1]; + int[] var10 = var3[2]; + + for (int var11 = 0; var11 < Class113.anInt1559; ++var11) { + int var13 = var5[var11]; + int var12 = -this.anIntArray3403[0] + var13; + if (var12 < 0) { + var12 = -var12; + } + + if (this.anInt3404 < var12) { + var8[var11] = var13; + var9[var11] = var6[var11]; + var10[var11] = var7[var11]; + } else { + int var14 = var6[var11]; + var12 = var14 + -this.anIntArray3403[1]; + if (var12 < 0) { + var12 = -var12; + } + + if (var12 > this.anInt3404) { + var8[var11] = var13; + var9[var11] = var14; + var10[var11] = var7[var11]; + } else { + int var15 = var7[var11]; + var12 = -this.anIntArray3403[2] + var15; + if (var12 < 0) { + var12 = -var12; + } + + if (this.anInt3404 >= var12) { + var8[var11] = this.anInt3410 * var13 >> 12; + var9[var11] = this.anInt3406 * var14 >> 12; + var10[var11] = this.anInt3405 * var15 >> 12; + } else { + var8[var11] = var13; + var9[var11] = var14; + var10[var11] = var15; + } + } + } + } + } + + return var3; + } catch (RuntimeException var16) { + throw ClientErrorException.clientError(var16, "sk.T(" + ',' + var2 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/TextureOperation26.java b/Client/src/main/java/org/runite/client/TextureOperation26.java new file mode 100644 index 000000000..f7f15115e --- /dev/null +++ b/Client/src/main/java/org/runite/client/TextureOperation26.java @@ -0,0 +1,195 @@ +package org.runite.client; + +import org.rs09.client.config.GameConfig; + +final class TextureOperation26 extends TextureOperation { + + private int anInt3073 = 0; + private int anInt3074 = 4096; + static boolean aBoolean3078; + static int anInt3081 = 0; + + + static void method195() { + try { + int regionX = (NPC.anInt3995 >> 10) - -(Class131.x1716 >> 3); + int regionY = (Class77.anInt1111 >> 10) - -(Texture.y1152 >> 3); + byte plane = 0; + byte sceneX = 8; + byte var6 = 18; + Class3_Sub22.aByteArrayArray2521 = new byte[var6][]; + Class3_Sub28_Sub5.anIntArray3587 = new int[var6]; + TextureOperation35.aByteArrayArray3335 = new byte[var6][]; + Client.anIntArray2200 = new int[var6]; + Class39.regionXteaKeys = new int[var6][4]; + Class40.aByteArrayArray3669 = new byte[var6][]; + Class3_Sub24_Sub3.regionIds = new int[var6]; + Class164_Sub2.aByteArrayArray3027 = new byte[var6][]; + NPC.npcSpawnCacheIndices = new int[var6]; + TextureOperation17.anIntArray3181 = new int[var6]; + Class101.anIntArray1426 = new int[var6]; + byte sceneY = 8; + Class40.aByteArrayArray3057 = new byte[var6][]; + int var11 = 0; + + int var7; + for(var7 = (-6 + regionX) / 8; (6 + regionX) / 8 >= var7; ++var7) { + for(int var8 = (-6 + regionY) / 8; var8 <= (regionY + 6) / 8; ++var8) { + int var9 = (var7 << 8) - -var8; + Class3_Sub24_Sub3.regionIds[var11] = var9; + + /** + * This block is used to control what is displayed on the HD login screen fly over + * 1. Gets the archives for the map + * 2. Gets the archives for the landscape + * 3. Gets the archives for the NPC spawns + * 4. Gets the archives for the map underlays (this would be like water for example + * 5. Gets the archives for the landscape underlays (things that (appear to be/are) -1 on the plane) + */ + Client.anIntArray2200[var11] = CacheIndex.landscapesIndex.getArchiveForName(RSString.stringCombiner(new RSString[]{RSString.parse("m"), RSString.stringAnimator(var7), RSString.parse("_"), RSString.stringAnimator(var8)})); + if (GameConfig.HD_LOGIN_DEBUG) { + System.out.println("Class3_Sub13_sub6: HD Login Screen Debug: Getting archive for map: " + Client.anIntArray2200[var11]); + if (GameConfig.HD_LOGIN_VERBOSE) { + System.out.println("Class3_Sub13_sub6: HD Login Screen Debug: Getting specific info for map: " + "Type: " + RSString.parse("m") + " Place in cache: " + RSString.stringAnimator(var7) + RSString.parse("_") + RSString.stringAnimator(var8)); + } + } + + + + Class101.anIntArray1426[var11] = CacheIndex.landscapesIndex.getArchiveForName(RSString.stringCombiner(new RSString[]{RSString.parse("l"), RSString.stringAnimator(var7), RSString.parse("_"), RSString.stringAnimator(var8)})); + if (GameConfig.HD_LOGIN_DEBUG) { + System.out.println("Class3_Sub13_sub6: HD Login Screen Debug: Getting archive for landscape: " + Class101.anIntArray1426[var11]); + if (GameConfig.HD_LOGIN_VERBOSE) { + System.out.println("Class3_Sub13_sub6: HD Login Screen Debug: Getting specific info for landscape: " + "Type: " + RSString.parse("l") + " Place in cache: " + RSString.stringAnimator(var7) + RSString.parse("_") + RSString.stringAnimator(var8)); + } + } + + + NPC.npcSpawnCacheIndices[var11] = CacheIndex.landscapesIndex.getArchiveForName(RSString.stringCombiner(new RSString[]{RSString.parse("n"), RSString.stringAnimator(var7), RSString.parse("_"), RSString.stringAnimator(var8)})); + if (GameConfig.HD_LOGIN_DEBUG) { + System.out.println("Class3_Sub13_sub6: HD Login Screen Debug: Getting archive for packed NPCs: " + NPC.npcSpawnCacheIndices[var11]); + if (GameConfig.HD_LOGIN_VERBOSE) { + System.out.println("Class3_Sub13_sub6: HD Login Screen Debug: Getting specific info for packed NPCs: " + "Type: " + RSString.parse("n") + " Place in cache: " + RSString.stringAnimator(var7) + RSString.parse("_") + RSString.stringAnimator(var8)); + } + } + + + TextureOperation17.anIntArray3181[var11] = CacheIndex.landscapesIndex.getArchiveForName(RSString.stringCombiner(new RSString[]{RSString.parse("um"), RSString.stringAnimator(var7), RSString.parse("_"), RSString.stringAnimator(var8)})); + if (GameConfig.HD_LOGIN_DEBUG) { + System.out.println("Class3_Sub13_sub6: HD Login Screen Debug: Getting archive for map underlays: " + TextureOperation17.anIntArray3181[var11]); + if (GameConfig.HD_LOGIN_VERBOSE) { + System.out.println("Class3_Sub13_sub6: HD Login Screen Debug: Getting specific info for map underlays: " + "Type: " + RSString.parse("um") + " Place in cache: " + RSString.stringAnimator(var7) + RSString.parse("_") + RSString.stringAnimator(var8)); + } + } + + + Class3_Sub28_Sub5.anIntArray3587[var11] = CacheIndex.landscapesIndex.getArchiveForName(RSString.stringCombiner(new RSString[]{RSString.parse("ul"), RSString.stringAnimator(var7), RSString.parse("_"), RSString.stringAnimator(var8)})); + if (GameConfig.HD_LOGIN_DEBUG) { + System.out.println("Class3_Sub13_sub6: HD Login Screen Debug: Getting archive for landscape underlays: " + Class3_Sub28_Sub5.anIntArray3587[var11]); + if (GameConfig.HD_LOGIN_VERBOSE) { + System.out.println("Class3_Sub13_sub6: HD Login Screen Debug: Getting specific info for landscape underlays: " + "Type: " + RSString.parse("ul") + " Place in cache: " + RSString.stringAnimator(var7) + RSString.parse("_") + RSString.stringAnimator(var8)); + } + } + /* End login screen index lookup */ + + + if(NPC.npcSpawnCacheIndices[var11] == -1) { + Client.anIntArray2200[var11] = -1; + Class101.anIntArray1426[var11] = -1; + TextureOperation17.anIntArray3181[var11] = -1; + Class3_Sub28_Sub5.anIntArray3587[var11] = -1; + } + + ++var11; + } + } + + for(var7 = var11; NPC.npcSpawnCacheIndices.length > var7; ++var7) { + NPC.npcSpawnCacheIndices[var7] = -1; + Client.anIntArray2200[var7] = -1; + Class101.anIntArray1426[var7] = -1; + TextureOperation17.anIntArray3181[var7] = -1; + Class3_Sub28_Sub5.anIntArray3587[var7] = -1; + } + + Unsorted.method1301(plane, regionY, regionX, sceneY, true, sceneX); + } catch (RuntimeException var10) { + throw ClientErrorException.clientError(var10, "ca.F(" + 20479 + ')'); + } + } + + final int[] method154(int var1, byte var2) { + try { + int[] var4 = this.aClass114_2382.method1709(var1); + if(this.aClass114_2382.aBoolean1580) { + int[] var5 = this.method152(0, var1); + + for(int var6 = 0; var6 < Class113.anInt1559; ++var6) { + int var7 = var5[var6]; + var4[var6] = var7 >= this.anInt3073 && this.anInt3074 >= var7 ?4096:0; + } + } + + return var4; + } catch (RuntimeException var8) { + throw ClientErrorException.clientError(var8, "ca.D(" + var1 + ',' + var2 + ')'); + } + } + + static void method196() { + try { + AudioHandler.soundEffectCoordinates = null; + + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "ca.B(" + ')'); + } + } + + final void decode(int var1, DataBuffer var2) { + try { + if(!true) { + method196(); + } + + if(var1 == 0) { + this.anInt3073 = var2.readUnsignedShort(); + } else if (1 == var1) { + this.anInt3074 = var2.readUnsignedShort(); + } + + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "ca.A(" + var1 + ',' + (var2 != null?"{...}":"null") + ',' + true + ')'); + } + } + + public TextureOperation26() { + super(1, true); + } + + static void method198(boolean var0) { + try { + + int var3 = Class164_Sub2.aByteArrayArray3027.length; + byte[][] var2; + if(HDToolKit.highDetail && var0) { + var2 = Class40.aByteArrayArray3057; + } else { + var2 = Class3_Sub22.aByteArrayArray2521; + } + + for(int var4 = 0; var4 < var3; ++var4) { + byte[] var5 = var2[var4]; + if(var5 != null) { + int var6 = -Class131.x1716 + 64 * (Class3_Sub24_Sub3.regionIds[var4] >> 8); + int var7 = (Class3_Sub24_Sub3.regionIds[var4] & 0xFF) * 64 + -Texture.y1152; + Class58.method1194(); + Class3_Sub15.method374(var6, var0, var5, var7, AtmosphereParser.aClass91Array1182); + } + } + + } catch (RuntimeException var8) { + throw ClientErrorException.clientError(var8, "ca.E(" + var0 + ',' + -32624 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/TextureOperation27.java b/Client/src/main/java/org/runite/client/TextureOperation27.java new file mode 100644 index 000000000..961392ef7 --- /dev/null +++ b/Client/src/main/java/org/runite/client/TextureOperation27.java @@ -0,0 +1,132 @@ +package org.runite.client; + +import org.rs09.client.util.ArrayUtils; + +final class TextureOperation27 extends TextureOperation { + + private int anInt3085 = 10; + private int anInt3086 = 0; + static RSInterface aClass11_3087 = null; + private int[] anIntArray3089; + private int[] anIntArray3091; + private int anInt3093 = 2048; + static short[] aShortArray3095 = new short[500]; + static CacheIndex configurationsIndex_3098; + + + final void postDecode() { + try { + this.method202(); + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "d.P(" + ')'); + } + } + + static int method201(int var0, int var1) { + try { + int var3 = var1 + -1 & var0 >> 31; + return var3 + (var0 + (var0 >>> 31)) % var1; + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "d.C(" + var0 + ',' + var1 + ',' + -58 + ')'); + } + } + + private void method202() { + try { + int var2 = 0; + this.anIntArray3091 = new int[this.anInt3085 + 1]; + int var3 = 4096 / this.anInt3085; + this.anIntArray3089 = new int[this.anInt3085 + 1]; + int var4 = this.anInt3093 * var3 >> 12; + + for(int var5 = 0; this.anInt3085 > var5; ++var5) { + this.anIntArray3089[var5] = var2; + this.anIntArray3091[var5] = var2 + var4; + var2 += var3; + } + + this.anIntArray3089[this.anInt3085] = 4096; + this.anIntArray3091[this.anInt3085] = this.anIntArray3091[0] + 4096; + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "d.B(" + 1 + ')'); + } + } + + final void decode(int var1, DataBuffer var2) { + try { + if(var1 == 0) { + this.anInt3085 = var2.readUnsignedByte(); + } else if(var1 == 1) { + this.anInt3093 = var2.readUnsignedShort(); + } else if (var1 == 2) { + this.anInt3086 = var2.readUnsignedByte(); + } + + if(!true) { + this.anIntArray3089 = null; + } + + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "d.A(" + var1 + ',' + (var2 != null?"{...}":"null") + ',' + true + ')'); + } + } + + public TextureOperation27() { + super(0, true); + } + + final int[] method154(int var1, byte var2) { + try { + int[] var3 = this.aClass114_2382.method1709(var1); + if(this.aClass114_2382.aBoolean1580) { + int var5 = Class163_Sub3.anIntArray2999[var1]; + int var7; + if(0 == this.anInt3086) { + short var6 = 0; + + for(var7 = 0; this.anInt3085 > var7; ++var7) { + if(var5 >= this.anIntArray3089[var7] && this.anIntArray3089[var7 - -1] > var5) { + if(var5 < this.anIntArray3091[var7]) { + var6 = 4096; + } + break; + } + } + + ArrayUtils.fill(var3, 0, Class113.anInt1559, var6); + } else { + for(int var12 = 0; Class113.anInt1559 > var12; ++var12) { + int var9 = Class102.anIntArray2125[var12]; + var7 = 0; + int var10 = this.anInt3086; + if(var10 == 1) { + var7 = var9; + } else if(var10 == 2) { + var7 = (var9 + var5 + -4096 >> 1) + 2048; + } else if (var10 == 3) { + var7 = (-var5 + var9 >> 1) + 2048; + } + + short var8 = 0; + + for(var10 = 0; var10 < this.anInt3085; ++var10) { + if(var7 >= this.anIntArray3089[var10] && this.anIntArray3089[var10 - -1] > var7) { + if(this.anIntArray3091[var10] > var7) { + var8 = 4096; + } + break; + } + } + + var3[var12] = var8; + } + } + } + + return var3; + } catch (RuntimeException var11) { + throw ClientErrorException.clientError(var11, "d.D(" + var1 + ',' + var2 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/TextureOperation28.java b/Client/src/main/java/org/runite/client/TextureOperation28.java new file mode 100644 index 000000000..efeb70c95 --- /dev/null +++ b/Client/src/main/java/org/runite/client/TextureOperation28.java @@ -0,0 +1,367 @@ +package org.runite.client; +import org.rs09.client.util.ArrayUtils; + +import java.util.Objects; +import java.util.Random; + +final class TextureOperation28 extends TextureOperation { + + private int anInt3299 = 1024; + private int anInt3300 = 1024; + private int anInt3301 = 819; + private int anInt3303 = 1024; + private int anInt3308 = 2048; + private int anInt3309 = 0; + private int anInt3310 = 409; + private int anInt3312 = 0; + static int anInt3313 = 500; + private int anInt3314; + static int anInt3315; + private int anInt3316 = 1024; + + + final void postDecode() { + try { + + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "ol.P(" + ')'); + } + } + + final int[] method154(int var1, byte var2) { + try { + int[] var3 = this.aClass114_2382.method1709(var1); + if(this.aClass114_2382.aBoolean1580) { + int[][] var5 = this.aClass114_2382.method1710((byte)97); + int var9 = 0; + int var8 = 0; + int var6 = 0; + int var7 = 0; + int var10 = 0; + boolean var11 = true; + boolean var12 = true; + int var13 = 0; + int var14 = 0; + int var15 = Class113.anInt1559 * this.anInt3300 >> 12; + int var16 = Class113.anInt1559 * this.anInt3308 >> 12; + int var18 = this.anInt3301 * Class101.anInt1427 >> 12; + int var17 = Class101.anInt1427 * this.anInt3310 >> 12; + if(var18 <= 1) { + return Objects.requireNonNull(var5)[var1]; + } else { + int var19 = Class113.anInt1559 / var15 + 1; + this.anInt3314 = Class113.anInt1559 / 8 * this.anInt3303 >> 12; + int[][] var21 = new int[var19][3]; + int[][] var20 = new int[var19][3]; + Random var22 = new Random(this.anInt3312); + + while(true) { + while(true) { + int var24 = var15 - -TextureOperation.method1603((byte)-93, var16 - var15, var22); + int var25 = TextureOperation.method1603((byte)-96, -var17 + var18, var22) + var17; + int var26 = var9 + var24; + if(Class113.anInt1559 < var26) { + var26 = Class113.anInt1559; + var24 = Class113.anInt1559 - var9; + } + + int var23; + int var29; + if(var12) { + var23 = 0; + } else { + int var27 = var10; + int[] var28 = var21[var10]; + var23 = var28[2]; + var29 = 0; + int var30 = var6 + var26; + if(0 > var30) { + var30 += Class113.anInt1559; + } + + if(var30 > Class113.anInt1559) { + var30 -= Class113.anInt1559; + } + + while(true) { + int[] var31 = var21[var27]; + if(var31[0] <= var30 && var30 <= var31[1]) { + if(var10 != var27) { + int var42 = var6 + var9; + if(var42 < 0) { + var42 += Class113.anInt1559; + } + + if(var42 > Class113.anInt1559) { + var42 -= Class113.anInt1559; + } + + int var32; + int[] var33; + for(var32 = 1; var32 <= var29; ++var32) { + var33 = var21[(var10 + var32) % var13]; + var23 = Math.max(var23, var33[2]); + } + + for(var32 = 0; var32 <= var29; ++var32) { + var33 = var21[(var10 - -var32) % var13]; + int var34 = var33[2]; + if(var23 != var34) { + int var37 = var33[0]; + int var38 = var33[1]; + int var35; + int var36; + if(var42 < var30) { + var35 = Math.max(var42, var37); + var36 = Math.min(var30, var38); + } else if(var37 == 0) { + var36 = Math.min(var30, var38); + var35 = 0; + } else { + var35 = Math.max(var42, var37); + var36 = Class113.anInt1559; + } + + this.method291(var34, var22, var8 + var35, -var35 + var36, -var34 + var23, var5); + } + } + } + + var10 = var27; + break; + } + + ++var29; + ++var27; + if(var13 <= var27) { + var27 = 0; + } + } + } + + if(Class101.anInt1427 >= var23 - -var25) { + var11 = false; + } else { + var25 = Class101.anInt1427 - var23; + } + + int[] var40; + if(Class113.anInt1559 == var26) { + this.method291(var23, var22, var7 + var9, var24, var25, var5); + if(var11) { + return var3; + } + + var11 = true; + var8 = var7; + var12 = false; + var40 = var20[var14++]; + var40[0] = var9; + var10 = 0; + var13 = var14; + var14 = 0; + var40[2] = var25 + var23; + var40[1] = var26; + var7 = TextureOperation.method1603((byte)-107, Class113.anInt1559, var22); + var6 = var7 + -var8; + int[][] var41 = var21; + var9 = 0; + var21 = var20; + var29 = var6; + if(var6 < 0) { + var29 = var6 + Class113.anInt1559; + } + + var20 = var41; + if(var29 > Class113.anInt1559) { + var29 -= Class113.anInt1559; + } + + while(true) { + int[] var43 = var21[var10]; + if(var43[0] <= var29 && var29 <= var43[1]) { + break; + } + + ++var10; + if(var13 <= var10) { + var10 = 0; + } + } + } else { + var40 = var20[var14++]; + var40[1] = var26; + var40[2] = var25 + var23; + var40[0] = var9; + this.method291(var23, var22, var9 + var7, var24, var25, var5); + var9 = var26; + } + } + } + } + } else { + return var3; + } + } catch (RuntimeException var39) { + throw ClientErrorException.clientError(var39, "ol.D(" + var1 + ',' + var2 + ')'); + } + } + + public TextureOperation28() { + super(0, true); + } + + private void method291(int var1, Random var2, int var3, int var4, int var6, int[][] var7) { + try { + int var8 = this.anInt3316 > 0 ?4096 + -TextureOperation.method1603((byte)-128, this.anInt3316, var2):4096; + int var9 = this.anInt3299 * this.anInt3314 >> 12; + int var10 = this.anInt3314 - (0 < var9? TextureOperation.method1603((byte)39, var9, var2):0); + if(Class113.anInt1559 <= var3) { + var3 -= Class113.anInt1559; + } + + int var11; + int var12; + if(0 < var10) { + if(0 >= var6 || var4 <= 0) { + return; + } + + var11 = var4 / 2; + var12 = var6 / 2; + int var13 = var11 < var10?var11:var10; + int var14 = var10 <= var12 ?var10:var12; + int var16 = var4 + -(2 * var13); + int var15 = var13 + var3; + + for(int var17 = 0; var17 < var6; ++var17) { + int[] var18 = var7[var1 + var17]; + int var19; + int var21; + int var20; + if(var14 > var17) { + var19 = var17 * var8 / var14; + if(this.anInt3309 == 0) { + for(var20 = 0; var20 < var13; ++var20) { + var21 = var20 * var8 / var13; + var18[Unsorted.bitwiseAnd(RenderAnimationDefinition.anInt396, var20 + var3)] = var18[Unsorted.bitwiseAnd(-1 + var4 + var3 + -var20, RenderAnimationDefinition.anInt396)] = var21 * var19 >> 12; + } + } else { + for(var20 = 0; var20 < var13; ++var20) { + var21 = var20 * var8 / var13; + var18[Unsorted.bitwiseAnd(RenderAnimationDefinition.anInt396, var3 - -var20)] = var18[Unsorted.bitwiseAnd(RenderAnimationDefinition.anInt396, var4 + var3 + -var20 - 1)] = var21 >= var19 ?var19:var21; + } + } + + if(Class113.anInt1559 >= var16 + var15) { + ArrayUtils.fill(var18, var15, var16, var19); + } else { + var20 = -var15 + Class113.anInt1559; + ArrayUtils.fill(var18, var15, var20, var19); + ArrayUtils.fill(var18, 0, -var20 + var16, var19); + } + } else { + var19 = var6 + -var17 - 1; + if(var14 <= var19) { + for(var20 = 0; var13 > var20; ++var20) { + var18[Unsorted.bitwiseAnd(RenderAnimationDefinition.anInt396, var3 + var20)] = var18[Unsorted.bitwiseAnd(-1 + -var20 + var3 - -var4, RenderAnimationDefinition.anInt396)] = var8 * var20 / var13; + } + + if(Class113.anInt1559 < var15 - -var16) { + var20 = -var15 + Class113.anInt1559; + ArrayUtils.fill(var18, var15, var20, var8); + ArrayUtils.fill(var18, 0, var16 - var20, var8); + } else { + ArrayUtils.fill(var18, var15, var16, var8); + } + } else { + var20 = var19 * var8 / var14; + int var22; + if(this.anInt3309 == 0) { + for(var21 = 0; var13 > var21; ++var21) { + var22 = var8 * var21 / var13; + var18[Unsorted.bitwiseAnd(RenderAnimationDefinition.anInt396, var3 - -var21)] = var18[Unsorted.bitwiseAnd(RenderAnimationDefinition.anInt396, -1 + var3 - (-var4 + var21))] = var22 * var20 >> 12; + } + } else { + for(var21 = 0; var21 < var13; ++var21) { + var22 = var21 * var8 / var13; + var18[Unsorted.bitwiseAnd(var3 - -var21, RenderAnimationDefinition.anInt396)] = var18[Unsorted.bitwiseAnd(-1 + -var21 + var4 + var3, RenderAnimationDefinition.anInt396)] = var22 >= var20 ?var20:var22; + } + } + + if(var16 + var15 > Class113.anInt1559) { + var21 = Class113.anInt1559 + -var15; + ArrayUtils.fill(var18, var15, var21, var20); + ArrayUtils.fill(var18, 0, -var21 + var16, var20); + } else { + ArrayUtils.fill(var18, var15, var16, var20); + } + } + } + } + } else if(var3 - -var4 <= Class113.anInt1559) { + for(var11 = 0; var11 < var6; ++var11) { + ArrayUtils.fill(var7[var1 - -var11], var3, var4, var8); + } + } else { + var11 = Class113.anInt1559 - var3; + + for(var12 = 0; var6 > var12; ++var12) { + int[] var24 = var7[var12 + var1]; + ArrayUtils.fill(var24, var3, var11, var8); + ArrayUtils.fill(var24, 0, -var11 + var4, var8); + } + } + + } catch (RuntimeException var23) { + throw ClientErrorException.clientError(var23, "ol.B(" + var1 + ',' + (var2 != null?"{...}":"null") + ',' + var3 + ',' + var4 + ',' + (byte) -69 + ',' + var6 + ',' + (var7 != null?"{...}":"null") + ')'); + } + } + + final void decode(int var1, DataBuffer var2) { + try { + if(!true) { + this.anInt3301 = 4; + } + + if(var1 == 0) { + this.anInt3312 = var2.readUnsignedByte(); + } else if (var1 == 1) { + this.anInt3300 = var2.readUnsignedShort(); + } else if (2 == var1) { + this.anInt3308 = var2.readUnsignedShort(); + } else if (var1 == 3) { + this.anInt3310 = var2.readUnsignedShort(); + } else if (var1 == 4) { + this.anInt3301 = var2.readUnsignedShort(); + } else if (var1 == 5) { + this.anInt3303 = var2.readUnsignedShort(); + } else if (var1 == 6) { + this.anInt3309 = var2.readUnsignedByte(); + } else if (var1 == 7) { + this.anInt3299 = var2.readUnsignedShort(); + } else if (var1 == 8) { + this.anInt3316 = var2.readUnsignedShort(); + } + + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "ol.A(" + var1 + ',' + (var2 != null?"{...}":"null") + ',' + true + ')'); + } + } + + static void method292(int var0, int var1, int var2, int var3, GameObject var4, int var5, long var6, int var8, int var9, int var10, int var11) { + if (var4 != null) { + Scenery.method1189(var0, var8, var9, var10 - var8 + 1, var11 - var9 + 1, var1, var2, var3, var4, var5, true, var6); + } + } + + static int method293(int var0, int var1, int var3) { + try { + var1 &= 3; + return (0 == var1?var3:(1 != var1?(var1 != 2 ?var0:-var3 + 1023):-var0 + 1023)); + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "ol.E(" + var0 + ',' + var1 + ',' + false + ',' + var3 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/TextureOperation29.java b/Client/src/main/java/org/runite/client/TextureOperation29.java new file mode 100644 index 000000000..eccdbb5d1 --- /dev/null +++ b/Client/src/main/java/org/runite/client/TextureOperation29.java @@ -0,0 +1,170 @@ +package org.runite.client; + +final class TextureOperation29 extends TextureOperation { + + static byte[][][] aByteArrayArrayArray3390; + static RSString[] aStringArray3391; + private Class75[] aClass75Array3392; + static Class133[] aClass133Array3393 = new Class133[6]; + static byte[] aByteArray3396; + + static volatile int anInt3398 = 0; + + final int[] method154(int var1, byte var2) { + try { + int[] var3 = this.aClass114_2382.method1709(var1); + if(this.aClass114_2382.aBoolean1580) { + this.method323(-60, this.aClass114_2382.method1710((byte)124)); + } + + return var3; + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "si.D(" + var1 + ',' + var2 + ')'); + } + } + + static int method322(byte var1) { + try { + return 255 & var1; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "si.C(" + true + ',' + var1 + ')'); + } + } + + private void method323(int var1, int[][] var2) { + try { + int var4 = Class101.anInt1427; + int var3 = Class113.anInt1559; + TextureOperation20.method230(var2); + Class58.method1196(Class3_Sub20.anInt2487, RenderAnimationDefinition.anInt396); + if(this.aClass75Array3392 != null) { + for(int var5 = 0; this.aClass75Array3392.length > var5; ++var5) { + Class75 var6 = this.aClass75Array3392[var5]; + int var7 = var6.anInt1101; + int var8 = var6.anInt1104; + if(var7 >= 0) { + if(var8 < 0) { + var6.method1341(var3, var4); + } else { + var6.method1335(var4, var3, 4898); + } + } else if(var8 >= 0) { + var6.method1337(var4, true, var3); + } + } + } + + if(var1 != -60) { + method326((byte)-35, null); + } + + } catch (RuntimeException var9) { + throw ClientErrorException.clientError(var9, "si.F(" + var1 + ',' + (var2 != null?"{...}":"null") + ')'); + } + } + + final void decode(int var1, DataBuffer var2) { + try { + if(var1 == 0) { + this.aClass75Array3392 = new Class75[var2.readUnsignedByte()]; + + for(int var4 = 0; var4 < this.aClass75Array3392.length; ++var4) { + int var5 = var2.readUnsignedByte(); + if(var5 == 0) { + this.aClass75Array3392[var4] = Class8.method843(-5232, var2); + } else if(var5 == 1) { + this.aClass75Array3392[var4] = Class3_Sub28_Sub2.method536(var2); + } else if(var5 == 2) { + this.aClass75Array3392[var4] = Class3_Sub22.method404(var2); + } else if (3 == var5) { + this.aClass75Array3392[var4] = Class3_Sub19.method384(var2); + } + } + } else if(1 == var1) { + this.aBoolean2375 = var2.readUnsignedByte() == 1; + } + + if(!true) { + this.method323(124, null); + } + + } catch (RuntimeException var7) { + throw ClientErrorException.clientError(var7, "si.A(" + var1 + ',' + (var2 != null?"{...}":"null") + ',' + true + ')'); + } + } + + static void method324(int var0) { + try { + Class92.setLightParams(Class92.defaultScreenColorRgb, (0.7F + (float)var0 * 0.1F) * 1.1523438F, 0.69921875F, 0.69921875F); + Class92.setLightPosition(-50.0F, -60.0F, -50.0F); + Class92.setFogValues(Class92.defaultRegionAmbientRGB, 0); + Class92.method1504(); + + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "si.Q(" + var0 + ',' + false + ')'); + } + } + + static int method326(byte var0, RSString var1) { + try { + if(var0 <= 13) { + TextCore.aString_3399 = null; + } + + return var1.length() + 1; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "si.O(" + var0 + ',' + (var1 != null?"{...}":"null") + ')'); + } + } + + final int[][] method166(int var2) { + try { + if(-1 == -1) { + int[][] var3 = this.aClass97_2376.method1594((byte)-117, var2); + if(this.aClass97_2376.aBoolean1379) { + int var4 = Class113.anInt1559; + int var5 = Class101.anInt1427; + int[][] var6 = new int[var5][var4]; + int[][][] var7 = this.aClass97_2376.method1589(); + this.method323(-60, var6); + + for(int var8 = 0; var8 < Class101.anInt1427; ++var8) { + int[] var9 = var6[var8]; + int[][] var10 = var7[var8]; + int[] var11 = var10[0]; + int[] var12 = var10[1]; + int[] var13 = var10[2]; + + for(int var14 = 0; Class113.anInt1559 > var14; ++var14) { + int var15 = var9[var14]; + var13[var14] = Unsorted.bitwiseAnd(255, var15) << 4; + var12[var14] = Unsorted.bitwiseAnd(4080, var15 >> 4); + var11[var14] = Unsorted.bitwiseAnd(var15 >> 12, 4080); + } + } + } + + return var3; + } else { + return null; + } + } catch (RuntimeException var16) { + throw ClientErrorException.clientError(var16, "si.T(" + -1 + ',' + var2 + ')'); + } + } + + public TextureOperation29() { + super(0, true); + } + + static void method327(int var0, int var1) { + try { + InterfaceWidget var3 = InterfaceWidget.getWidget(12, var1); + var3.flagUpdate(); + var3.anInt3598 = var0; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "si.B(" + var0 + ',' + var1 + ',' + (byte) 68 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/TextureOperation3.java b/Client/src/main/java/org/runite/client/TextureOperation3.java new file mode 100644 index 000000000..975bf3479 --- /dev/null +++ b/Client/src/main/java/org/runite/client/TextureOperation3.java @@ -0,0 +1,191 @@ +package org.runite.client; + +import org.rs09.SystemLogger; +import org.rs09.client.util.ArrayUtils; +import org.rs09.client.filestore.resources.configs.cursors.CursorDefinition; + +import java.util.Objects; + +final class TextureOperation3 extends TextureOperation { + + static boolean disableGEBoxes = false; + static int[] anIntArray3359 = new int[5]; + + + final int[] method154(int var1, byte var2) { + try { + int[] var3 = this.aClass114_2382.method1709(var1); + if(this.aClass114_2382.aBoolean1580) { + ArrayUtils.fill(var3, 0, Class113.anInt1559, Class163_Sub3.anIntArray2999[var1]); + } + + return var3; + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "qg.D(" + var1 + ',' + var2 + ')'); + } + } + + static void method304() { + try { + + TextureOperation25.aReferenceCache_3412.clear(); + TextureOperation2.aReferenceCache_3369.clear(); + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "qg.F(" + 6799 + ')'); + } + } + + static void method305(Signlink var0, DataBuffer var1, int var2) { + try { + Class3_Sub8 var4 = new Class3_Sub8(); + var4.anInt2296 = var1.readUnsignedByte(); + var4.anInt2305 = var1.readInt(); + var4.aClass64Array2298 = new Class64[var4.anInt2296]; + var4.anIntArray2300 = new int[var4.anInt2296]; + var4.aByteArrayArrayArray2302 = new byte[var4.anInt2296][][]; + var4.aClass64Array2303 = new Class64[var4.anInt2296]; + var4.anIntArray2301 = new int[var4.anInt2296]; + var4.anIntArray2299 = new int[var4.anInt2296]; + + for(int var6 = 0; var4.anInt2296 > var6; ++var6) { + try { + int var7 = var1.readUnsignedByte(); + String var8; + String var9; + int var10; + if (var7 == 0 || var7 == 1 || var7 == 2) { + var8 = new String(var1.readString().method1568()); + var10 = 0; + var9 = new String(var1.readString().method1568()); + if(var7 == 1) { + var10 = var1.readInt(); + } + + var4.anIntArray2301[var6] = var7; + var4.anIntArray2299[var6] = var10; + var4.aClass64Array2303[var6] = var0.method1447(-41, var9, TextureOperation12.method170(var8)); + } else if (var7 == 3 || var7 == 4) { + var8 = new String(var1.readString().method1568()); + var9 = new String(var1.readString().method1568()); + var10 = var1.readUnsignedByte(); + String[] var11 = new String[var10]; + + for (int var12 = 0; var10 > var12; ++var12) { + var11[var12] = new String(var1.readString().method1568()); + } + + byte[][] var21 = new byte[var10][]; + int var14; + if (3 == var7) { + for (int var13 = 0; var13 < var10; ++var13) { + var14 = var1.readInt(); + var21[var13] = new byte[var14]; + var1.readBytes(var21[var13], var14); + } + } + + var4.anIntArray2301[var6] = var7; + Class[] var22 = new Class[var10]; + + for (var14 = 0; var10 > var14; ++var14) { + var22[var14] = TextureOperation12.method170(var11[var14]); + } + + var4.aClass64Array2298[var6] = var0.method1443(TextureOperation12.method170(var8), var22, -80, var9); + var4.aByteArrayArrayArray2302[var6] = var21; + } + } catch (ClassNotFoundException var15) { + var4.anIntArray2300[var6] = -1; + } catch (SecurityException var16) { + var4.anIntArray2300[var6] = -2; + } catch (NullPointerException var17) { + var4.anIntArray2300[var6] = -3; + } catch (Exception var18) { + var4.anIntArray2300[var6] = -4; + } catch (Throwable var19) { + var4.anIntArray2300[var6] = -5; + } + } + + Class3_Sub26.aLinkedList_2557.pushBack(var4); + } catch (RuntimeException var20) { + throw ClientErrorException.clientError(var20, "qg.E(" + (var0 != null?"{...}":"null") + ',' + (var1 != null?"{...}":"null") + ',' + var2 + ',' + (byte) -126 + ')'); + } + } + + static void method306(int var0, int var2) { + try { + CSConfigCachefile var3 = CSConfigCachefile.getCSConfigFileFromVarbitID(var0); + int var6 = Objects.requireNonNull(var3).upperBound; + int var5 = var3.lowerBound; + int var4 = var3.parentVarpIndex; + int var7 = Class3_Sub6.expectedMinimumValues[var6 - var5]; + if(var2 < 0 || var7 < var2) { + SystemLogger.logInfo(var7 + " < " + var2); + var2 = 0; + } + + var7 <<= var5; + AtmosphereParser.method1428(var4, var7 & var2 << var5 | ItemDefinition.ram[var4] & ~var7); + } catch (RuntimeException var8) { + throw ClientErrorException.clientError(var8, "qg.Q(" + var0 + ',' + false + ',' + var2 + ')'); + } + } + + static void method307(RSString[] var0, short[] var1, int var2) { + try { + Class3_Sub8.method127(var1, -1 + var0.length, var0, 0); + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "qg.C(" + (var0 != null?"{...}":"null") + ',' + (var1 != null?"{...}":"null") + ',' + var2 + ')'); + } + } + + static int bitwiseOr(int var0, int var1) { + try { + return var0 | var1; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "qg.R(" + var0 + ',' + var1 + ')'); + } + } + + public TextureOperation3() { + super(0, true); + } + + static int method310(int var0, byte var1, int var2, int var3) { + try { + var0 &= 3; + if(var0 == 0) { + return var3; + } else { + if(var1 >= -17) { + TextCore.aString_3357 = null; + } + + return var0 == 1?7 + -var2:(var0 == 2 ?-var3 + 7:var2); + } + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "qg.B(" + var0 + ',' + var1 + ',' + var2 + ',' + var3 + ')'); + } + } + + static CursorDefinition method311(int var0) { + try { + CursorDefinition var2 = (CursorDefinition) Unsorted.aReferenceCache_684.get(var0); + if(var2 == null) { + byte[] var3 = TextureOperation4.configurationsIndex_3227.getFile(33, var0); + + var2 = new CursorDefinition(); + if(var3 != null) { + var2.decode(new DataBuffer(var3)); + } + + Unsorted.aReferenceCache_684.put(var2, var0); + } + return var2; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "qg.O(" + var0 + ',' + 5 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/TextureOperation30.java b/Client/src/main/java/org/runite/client/TextureOperation30.java new file mode 100644 index 000000000..58af5bcde --- /dev/null +++ b/Client/src/main/java/org/runite/client/TextureOperation30.java @@ -0,0 +1,273 @@ +package org.runite.client; +import java.awt.Frame; +import java.util.Objects; + +final class TextureOperation30 extends TextureOperation { + + static volatile boolean fullRedraw = true; + + static boolean[][] aBooleanArrayArray3118 = new boolean[][]{new boolean[0], {true, false, true}, {true, false, false, true}, {false, false, true, true}, {true, true, false}, {false, true, true}, {true, false, false, true}, {false, false, false, true, true}, {false, true, true}, {true, false, true, true, true}, {false, true, true, true, true}, {false, true, true, true, true, false}}; + static Frame fullScreenFrame; + static Signlink signlink; + private int anInt3126 = 2048; + private int anInt3127 = 3072; + private int anInt3128 = 1024; + + static int method210(int var1, int var2, int var3) { + try { + if(var3 == var2) { + return var2; + } else { + int var4 = -var1 + 128; + + int var5 = var1 * ((-16711936 & var3) >>> 7) + var4 * ((-16711936 & var2) >>> 7) & -16711936; + int var6 = var4 * (16711935 & var2) - -((var3 & 16711935) * var1) & -16711936; + return var5 - -(var6 >> 7); + } + } catch (RuntimeException var7) { + throw ClientErrorException.clientError(var7, "fh.O(" + 18348 + ',' + var1 + ',' + var2 + ',' + var3 + ')'); + } + } + + final void decode(int var1, DataBuffer var2) { + try { + if(var1 == 0) { + this.anInt3128 = var2.readUnsignedShort(); + } else if (var1 == 1) { + this.anInt3127 = var2.readUnsignedShort(); + } else if (var1 == 2) { + this.aBoolean2375 = var2.readUnsignedByte() == 1; + } + + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "fh.A(" + var1 + ',' + (var2 != null?"{...}":"null") + ',' + true + ')'); + } + } + + final int[] method154(int var1, byte var2) { + try { + int[] var7 = this.aClass114_2382.method1709(var1); + if(this.aClass114_2382.aBoolean1580) { + int[] var4 = this.method152(0, var1); + + for(int var5 = 0; var5 < Class113.anInt1559; ++var5) { + var7[var5] = this.anInt3128 - -(var4[var5] * this.anInt3126 >> 12); + } + } + + return var7; + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "fh.D(" + var1 + ',' + var2 + ')'); + } + } + + static void method212(long var0) { + try { + if(0L != var0) { + for(int var3 = 0; Class3_Sub28_Sub5.anInt3591 > var3; ++var3) { + if(Class114.ignores[var3] == var0) { + --Class3_Sub28_Sub5.anInt3591; + + for(int var4 = var3; var4 < Class3_Sub28_Sub5.anInt3591; ++var4) { + Class114.ignores[var4] = Class114.ignores[var4 + 1]; + TextureOperation7.aStringArray3341[var4] = TextureOperation7.aStringArray3341[1 + var4]; + } + + Class110.anInt1472 = PacketParser.anInt3213; + TextureOperation12.outgoingBuffer.putOpcode(213); + TextureOperation12.outgoingBuffer.writeLong(var0); + break; + } + } + + } + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "fh.E(" + var0 + ',' + 0 + ')'); + } + } + + static void method213(int var0, int var1, int var2, int var3, GameObject var4, long var5, GameObject var7, GameObject var8) { + Class72 var9 = new Class72(); + var9.aClass140_1073 = var4; + var9.anInt1078 = var1 * 128 + 64; + var9.anInt1075 = var2 * 128 + 64; + var9.anInt1068 = var3; + var9.aLong1079 = var5; + var9.aClass140_1067 = var7; + var9.aClass140_1069 = var8; + int var10 = 0; + TileData var11 = TileData.aTileDataArrayArrayArray2638[var0][var1][var2]; + if(var11 != null) { + for(int var12 = 0; var12 < var11.anInt2223; ++var12) { + Class25 var13 = var11.aClass25Array2221[var12]; + if((var13.aLong498 & 4194304L) == 4194304L) { + int var14 = var13.aClass140_479.method1871(); + if(var14 != -32768 && var14 < var10) { + var10 = var14; + } + } + } + } + + var9.anInt1077 = -var10; + if(TileData.aTileDataArrayArrayArray2638[var0][var1][var2] == null) { + TileData.aTileDataArrayArrayArray2638[var0][var1][var2] = new TileData(var0, var1, var2); + } + + TileData.aTileDataArrayArrayArray2638[var0][var1][var2].aClass72_2245 = var9; + } + + static void method214(GameObject var0, int var1, int var2, int var3, int var4, int var5) { + boolean var6 = true; + int var7 = var2; + int var8 = var2 + var4; + int var9 = var3 - 1; + int var10 = var3 + var5; + + for(int var11 = var1; var11 <= var1 + 1; ++var11) { + if(var11 != Class3_Sub17.anInt2456) { + for(int var12 = var7; var12 <= var8; ++var12) { + if(var12 >= 0 && var12 < Unsorted.width1234) { + for(int var13 = var9; var13 <= var10; ++var13) { + if(var13 >= 0 && var13 < TextureOperation17.height3179 && (!var6 || var12 >= var8 || var13 >= var10 || var13 < var3 && var12 != var2)) { + TileData var14 = TileData.aTileDataArrayArrayArray2638[var11][var12][var13]; + if(var14 != null) { + int var15 = (Class44.anIntArrayArrayArray723[var11][var12][var13] + Class44.anIntArrayArrayArray723[var11][var12 + 1][var13] + Class44.anIntArrayArrayArray723[var11][var12][var13 + 1] + Class44.anIntArrayArrayArray723[var11][var12 + 1][var13 + 1]) / 4 - (Class44.anIntArrayArrayArray723[var1][var2][var3] + Class44.anIntArrayArrayArray723[var1][var2 + 1][var3] + Class44.anIntArrayArrayArray723[var1][var2][var3 + 1] + Class44.anIntArrayArrayArray723[var1][var2 + 1][var3 + 1]) / 4; + Class70 var16 = var14.aClass70_2234; + if(var16 != null) { + if(var16.aClass140_1049.method1865()) { + var0.method1866(var16.aClass140_1049, (var12 - var2) * 128 + (1 - var4) * 64, var15, (var13 - var3) * 128 + (1 - var5) * 64, var6); + } + + if(var16.aClass140_1052 != null && var16.aClass140_1052.method1865()) { + var0.method1866(var16.aClass140_1052, (var12 - var2) * 128 + (1 - var4) * 64, var15, (var13 - var3) * 128 + (1 - var5) * 64, var6); + } + } + + for(int var17 = 0; var17 < var14.anInt2223; ++var17) { + Class25 var18 = var14.aClass25Array2221[var17]; + if(var18 != null && var18.aClass140_479.method1865() && (var12 == var18.anInt483 || var12 == var7) && (var13 == var18.anInt478 || var13 == var9)) { + int var19 = var18.anInt495 - var18.anInt483 + 1; + int var20 = var18.anInt481 - var18.anInt478 + 1; + var0.method1866(var18.aClass140_479, (var18.anInt483 - var2) * 128 + (var19 - var4) * 64, var15, (var18.anInt478 - var3) * 128 + (var20 - var5) * 64, var6); + } + } + } + } + } + } + } + + --var7; + var6 = false; + } + } + + } + + static void method215(byte var0, LDIndexedSprite var1) { + try { + short var2 = 256; + int var3 = 0; + if(var0 >= -80) { + fullRedraw = true; + } + + while(Class161.anIntArray2026.length > var3) { + Class161.anIntArray2026[var3] = 0; + ++var3; + } + + int var4; + for(var3 = 0; var3 < 5000; ++var3) { + var4 = (int)((double)var2 * Math.random() * 128.0D); + Class161.anIntArray2026[var4] = (int)(Math.random() * 284.0D); + } + + int var5; + int var6; + try { + for (; true; ++var3) { + for (var4 = 1; true; ++var4) { + for (var5 = 1; true; ++var5) { + var6 = var5 - -(var4 << 7); + Unsorted.anIntArray49[var6] = (Class161.anIntArray2026[128 + var6] + Class161.anIntArray2026[-1 + var6] + Class161.anIntArray2026[1 + var6] - -Class161.anIntArray2026[-128 + var6]) / 4; + } + } + } + } catch (Exception e) { + /* + System.out.println("breaking you out of the stupid endless triple for loop"); + System.out.println("If you see this message it's a bug. this function should never run but it does sometimes for inexplicable reasons."); + System.out.println("Without this code here to break you out the game would crash."); + System.out.println("Once this client is deobbed fully this code will probably be deleted/unneeded"); + System.out.println("- Your friendly neighborhood moth"); + */ + // moth is unfriendly now because u hecks keep reporting this as a bug + // I'm sorry you misinterpreted this message + // If something calls itself a bug the devs obviously know about it already. + } + + + } catch (RuntimeException var9) { + throw ClientErrorException.clientError(var9, "fh.F(" + var0 + ',' + (var1 != null?"{...}":"null") + ')'); + } + } + + final int[][] method166(int var2) { + try { + int[][] var3 = this.aClass97_2376.method1594((byte)-118, var2); + if(this.aClass97_2376.aBoolean1379) { + int[][] var4 = this.method162(var2, 0, (byte)-50); + int[] var6 = Objects.requireNonNull(var4)[1]; + int[] var7 = var4[2]; + int[] var5 = var4[0]; + int[] var8 = var3[0]; + int[] var9 = var3[1]; + int[] var10 = var3[2]; + + for(int var11 = 0; Class113.anInt1559 > var11; ++var11) { + var8[var11] = this.anInt3128 - -(this.anInt3126 * var5[var11] >> 12); + var9[var11] = (this.anInt3126 * var6[var11] >> 12) + this.anInt3128; + var10[var11] = this.anInt3128 + (this.anInt3126 * var7[var11] >> 12); + } + } + + return var3; + } catch (RuntimeException var12) { + throw ClientErrorException.clientError(var12, "fh.T(" + -1 + ',' + var2 + ')'); + } + } + + final void postDecode() { + try { + this.anInt3126 = this.anInt3127 - this.anInt3128; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "fh.P(" + ')'); + } + } + + public TextureOperation30() { + super(1, false); + } + + static void method216(DataBuffer var0) { + try { + for(int var2 = 0; var2 < WorldListEntry.activeWorldListSize; ++var2) { + int var3 = var0.getSmart(); + int var4 = var0.readUnsignedShort(); + if(var4 == 65535) { + var4 = -1; + } + + if(null != WorldListEntry.worldList[var3]) { + WorldListEntry.worldList[var3].anInt722 = var4; + } + } + + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "fh.Q(" + (var0 != null?"{...}":"null") + ',' + -14991 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/TextureOperation31.java b/Client/src/main/java/org/runite/client/TextureOperation31.java new file mode 100644 index 000000000..8cdc77455 --- /dev/null +++ b/Client/src/main/java/org/runite/client/TextureOperation31.java @@ -0,0 +1,75 @@ +package org.runite.client; + +import org.rs09.client.config.GameConfig; + +import java.math.BigInteger; + +final class TextureOperation31 extends TextureOperation { + + static CacheResourceWorker aCacheResourceWorker_3159; + private int anInt3160 = 0; + static BigInteger MODULUS = GameConfig.MODULUS; + private int anInt3163 = 20; + private int anInt3164 = 1365; + private int anInt3165 = 0; + static boolean aBoolean3166 = false; + + final void decode(int var1, DataBuffer var2) { + try { + if (var1 == 0) { + this.anInt3164 = var2.readUnsignedShort(); + } else if (var1 == 1) { + this.anInt3163 = var2.readUnsignedShort(); + } else if (var1 == 2) { + this.anInt3160 = var2.readUnsignedShort(); + } else if (var1 == 3) { + this.anInt3165 = var2.readUnsignedShort(); + } + + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "gm.A(" + var1 + ',' + (var2 != null ? "{...}" : "null") + ',' + true + ')'); + } + } + + static void method236() { + try { + TextureOperation14.aBoolean3387 = true; + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "gm.C(" + (byte) 64 + ')'); + } + } + + final int[] method154(int var1, byte var2) { + try { + int[] var3 = this.aClass114_2382.method1709(var1); + if (this.aClass114_2382.aBoolean1580) { + for (int var5 = 0; var5 < Class113.anInt1559; ++var5) { + int var7 = this.anInt3165 + (Class163_Sub3.anIntArray2999[var1] << 12) / this.anInt3164; + int var6 = this.anInt3160 + (Class102.anIntArray2125[var5] << 12) / this.anInt3164; + int var10 = var6; + int var11 = var7; + int var14 = 0; + int var12 = var6 * var6 >> 12; + + for (int var13 = var7 * var7 >> 12; var12 - -var13 < 16384 && var14 < this.anInt3163; var12 = var10 * var10 >> 12) { + var11 = (var10 * var11 >> 12) * 2 + var7; + ++var14; + var10 = var12 + -var13 + var6; + var13 = var11 * var11 >> 12; + } + + var3[var5] = this.anInt3163 + -1 <= var14 ? 0 : (var14 << 12) / this.anInt3163; + } + } + + return var3; + } catch (RuntimeException var15) { + throw ClientErrorException.clientError(var15, "gm.D(" + var1 + ',' + var2 + ')'); + } + } + + public TextureOperation31() { + super(0, true); + } + +} diff --git a/Client/src/main/java/org/runite/client/TextureOperation32.java b/Client/src/main/java/org/runite/client/TextureOperation32.java new file mode 100644 index 000000000..402baf436 --- /dev/null +++ b/Client/src/main/java/org/runite/client/TextureOperation32.java @@ -0,0 +1,165 @@ +package org.runite.client; + +final class TextureOperation32 extends TextureOperation { + + static Class3_Sub11[][] aClass3_Sub11ArrayArray3346; + private int anInt3347 = 3216; + private final int[] anIntArray3348 = new int[3]; + private int anInt3350 = 4096; + static RSString aString_3353; + private int anInt3354 = 3216; + + + final void decode(int var1, DataBuffer var2) { + try { + if(0 == var1) { + this.anInt3350 = var2.readUnsignedShort(); + } else if(1 == var1) { + this.anInt3347 = var2.readUnsignedShort(); + } else if (var1 == 2) { + this.anInt3354 = var2.readUnsignedShort(); + } + + if(!true) { + method302(-47); + } + + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "pk.A(" + var1 + ',' + (var2 != null?"{...}":"null") + ',' + true + ')'); + } + } + + static int method301(byte var0) { + try { + //int var1 = -47 / ((45 - var0) / 57); + return TextureOperation29.anInt3398; + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "pk.E(" + var0 + ')'); + } + } + + public TextureOperation32() { + super(1, true); + } + + final void postDecode() { + try { + this.method303(); + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "pk.P(" + ')'); + } + } + + final int[] method154(int var1, byte var2) { + try { + int[] var4 = this.aClass114_2382.method1709(var1); + if(this.aClass114_2382.aBoolean1580) { + int var8 = Class95.anInt1343 * this.anInt3350 >> 12; + int[] var9 = this.method152(0, Class3_Sub20.anInt2487 & var1 + -1); + int[] var10 = this.method152(0, var1); + int[] var11 = this.method152(0, 1 + var1 & Class3_Sub20.anInt2487); + + for(int var12 = 0; Class113.anInt1559 > var12; ++var12) { + int var14 = (var10[RenderAnimationDefinition.anInt396 & -1 + var12] - var10[1 + var12 & RenderAnimationDefinition.anInt396]) * var8 >> 12; + int var13 = var8 * (-var9[var12] + var11[var12]) >> 12; + int var15 = var14 >> 4; + if(0 > var15) { + var15 = -var15; + } + + if(var15 > 255) { + var15 = 255; + } + + int var16 = var13 >> 4; + if(var16 < 0) { + var16 = -var16; + } + + if(255 < var16) { + var16 = 255; + } + + int var17 = Class97.aByteArray1364[(var16 * (var16 - -1) >> 1) + var15] & 0xFF; + int var6 = var13 * var17 >> 8; + int var5 = var17 * var14 >> 8; + var6 = var6 * this.anIntArray3348[1] >> 12; + var5 = this.anIntArray3348[0] * var5 >> 12; + int var7 = 4096 * var17 >> 8; + var7 = var7 * this.anIntArray3348[2] >> 12; + var4[var12] = var7 + var6 + var5; + } + } + + return var4; + } catch (RuntimeException var18) { + throw ClientErrorException.clientError(var18, "pk.D(" + var1 + ',' + var2 + ')'); + } + } + + static void method302(int var0) { + try { + if(var0 != 2) { + method301((byte)56); + } + + for(Class3_Sub28_Sub19 var1 = (Class3_Sub28_Sub19) TextureOperation13.aLinkedList_3364.startIteration(); var1 != null; var1 = (Class3_Sub28_Sub19) TextureOperation13.aLinkedList_3364.nextIteration()) { + Class140_Sub6 var2 = var1.aClass140_Sub6_3778; + if(var2.anInt2907 == WorldListCountry.localPlane && Class44.anInt719 <= var2.anInt2899) { + if(Class44.anInt719 >= var2.anInt2925) { + if(var2.entityIndex > 0) { + NPC var3 = NPC.npcs[-1 + var2.entityIndex]; + if(null != var3 && var3.xAxis >= 0 && 13312 > var3.xAxis && var3.yAxis >= 0 && var3.yAxis < 13312) { + var2.method2024(var3.yAxis, Class44.anInt719, Scenery.sceneryPositionHash(var2.anInt2907, 1, var3.xAxis, var3.yAxis) + -var2.anInt2903, var3.xAxis); + } + } + + if(var2.entityIndex < 0) { + int var4 = -1 + -var2.entityIndex; + Player var6; + if(Class3_Sub1.localIndex == var4) { + var6 = Class102.player; + } else { + var6 = Unsorted.players[var4]; + } + + if(null != var6 && var6.xAxis >= 0 && var6.xAxis < 13312 && var6.yAxis >= 0 && var6.yAxis < 13312) { + var2.method2024(var6.yAxis, Class44.anInt719, Scenery.sceneryPositionHash(var2.anInt2907, 1, var6.xAxis, var6.yAxis) - var2.anInt2903, var6.xAxis); + } + } + + var2.method2023(Class106.anInt1446); + Class20.method907(WorldListCountry.localPlane, (int)var2.aDouble2920, (int)var2.aDouble2900, (int)var2.aDouble2914, 60, var2, var2.anInt2924, -1L, false); + } + } else { + var1.unlink(); + } + } + + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "pk.C(" + var0 + ')'); + } + } + + private void method303() { + try { + double var2 = Math.cos((float)this.anInt3354 / 4096.0F); + this.anIntArray3348[0] = (int)(4096.0D * var2 * Math.sin((float)this.anInt3347 / 4096.0F)); + this.anIntArray3348[1] = (int)(Math.cos((float)this.anInt3347 / 4096.0F) * var2 * 4096.0D); + this.anIntArray3348[2] = (int)(4096.0D * Math.sin((float)this.anInt3354 / 4096.0F)); + int var6 = this.anIntArray3348[2] * this.anIntArray3348[2] >> 12; + int var5 = this.anIntArray3348[1] * this.anIntArray3348[1] >> 12; + int var4 = this.anIntArray3348[0] * this.anIntArray3348[0] >> 12; + int var7 = (int)(4096.0D * Math.sqrt(var4 - (-var5 - var6) >> 12)); + if(var7 != 0) { + this.anIntArray3348[2] = (this.anIntArray3348[2] << 12) / var7; + this.anIntArray3348[0] = (this.anIntArray3348[0] << 12) / var7; + this.anIntArray3348[1] = (this.anIntArray3348[1] << 12) / var7; + } + + } catch (RuntimeException var8) { + throw ClientErrorException.clientError(var8, "pk.B(" + (byte) 59 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/TextureOperation33.java b/Client/src/main/java/org/runite/client/TextureOperation33.java new file mode 100644 index 000000000..b11cc0e04 --- /dev/null +++ b/Client/src/main/java/org/runite/client/TextureOperation33.java @@ -0,0 +1,216 @@ +package org.runite.client; + +import org.rs09.client.config.GameConfig; +import org.rs09.client.net.game.PacketDecoder; + + +import java.io.IOException; + +public final class TextureOperation33 extends TextureOperation { + + private int anInt3047 = 4096; + static KeyboardListener aClass148_3049 = new KeyboardListener(); + private boolean aBoolean3050 = true; + + + static RSString bufferToString(byte[] bytes, int length, int offset) { + try { + RSString var4 = new RSString(); + var4.buffer = new byte[length]; + var4.length = 0; + for (int var5 = offset; var5 < length + offset; ++var5) { + if (bytes[var5] != 0) { + var4.buffer[var4.length++] = bytes[var5]; + } + } + if (var4.toString().contains("RuneScape")) { + var4 = RSString.parse(var4.toString().replace("RuneScape", GameConfig.SERVER_NAME)); + } + if (var4.toString().contains("Jagex")) { + var4 = RSString.parse(var4.toString().replace("Jagex", GameConfig.SERVER_NAME)); + } + if (var4.toString().contains("Cearch")) { + var4 = RSString.parse(var4.toString().replace("Cearch", "search")); + } + if (var4.toString().contains(">o")) { + var4 = RSString.parse(var4.toString().replace(">o", "no")); + } + return var4; + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "an.B(" + (bytes != null ? "{...}" : "null") + ',' + -4114 + ',' + length + ',' + offset + ')'); + } + } + + public TextureOperation33() { + super(1, false); + } + + final void decode(int var1, DataBuffer var2) { + try { + if (0 == var1) { + this.anInt3047 = var2.readUnsignedShort(); + } else if (var1 == 1) { + this.aBoolean3050 = var2.readUnsignedByte() == 1; + } + + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "an.A(" + var1 + ',' + (var2 != null ? "{...}" : "null") + ',' + true + ')'); + } + } + + static void method180(int var0, int var1, int var2) { + try { + int var3; + if (Class113.anInt1559 != var2) { + Class102.anIntArray2125 = new int[var2]; + + for (var3 = 0; var3 < var2; ++var3) { + Class102.anIntArray2125[var3] = (var3 << 12) / var2; + } + + Class95.anInt1343 = 64 != var2 ? 4096 : 2048; + RenderAnimationDefinition.anInt396 = -1 + var2; + Class113.anInt1559 = var2; + } + + if (Class101.anInt1427 != var1) { + if (Class113.anInt1559 == var1) { + Class163_Sub3.anIntArray2999 = Class102.anIntArray2125; + } else { + Class163_Sub3.anIntArray2999 = new int[var1]; + + for (int var4 = 0; var4 < var1; ++var4) { + Class163_Sub3.anIntArray2999[var4] = (var4 << 12) / var1; + } + } + + Class101.anInt1427 = var1; + Class3_Sub20.anInt2487 = var1 + -1; + } + + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "an.S(" + var0 + ',' + var1 + ',' + var2 + ')'); + } + } + + static boolean method181() { + try { +// return PacketParser.parseIncomingPackets(); + return PacketDecoder.INSTANCE.decodePacket(); + } catch (IOException var4) { + TextureOperation20.breakClientConnection(); + return true; + } catch (Exception var5) { + String var2 = "T2 - " + Unsorted.incomingOpcode + "," + Class7.anInt2166 + "," + Class24.anInt469 + " - " + Unsorted.incomingPacketLength + "," + (Class131.x1716 - -Class102.player.xOffsets2767[0]) + "," + (Class102.player.yOffsets2755[0] + Texture.y1152) + " - "; + + for (int var3 = 0; var3 < Unsorted.incomingPacketLength && 50 > var3; ++var3) { + var2 = var2 + BufferedDataStream.incomingBuffer.buffer[var3] + ","; + } + + Class49.reportError(var2, var5); + Class167.method2269((byte) 46); + return true; + } + } + + static void method182() { + try { + Texture.aReferenceCache_1146.clear(); + Class159.aReferenceCache_2016.clear(); + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "an.Q(" + true + ')'); + } + } + + static void method183() { + try { + Unsorted.aReferenceCache_684.clear(); + Class163_Sub1.aReferenceCache_2984.clear(); + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "an.O(" + -108 + ')'); + } + } + + static void method184(int var0, int var1, int var2, int var3, int var5, int var6) { + try { + int var11 = Class40.method1040(Class57.anInt902, var6, Class159.anInt2020); + int var12 = Class40.method1040(Class57.anInt902, var0, Class159.anInt2020); + int var13 = Class40.method1040(Class3_Sub28_Sub18.anInt3765, var3, Class101.anInt1425); + int var14 = Class40.method1040(Class3_Sub28_Sub18.anInt3765, var2, Class101.anInt1425); + + int var7 = Class40.method1040(Class57.anInt902, var6 + var1, Class159.anInt2020); + int var8 = Class40.method1040(Class57.anInt902, -var1 + var0, Class159.anInt2020); + + int var15; + for (var15 = var11; var7 > var15; ++var15) { + TextureOperation18.method282(Class38.anIntArrayArray663[var15], var13, 127, var14, var5); + } + + for (var15 = var12; var15 > var8; --var15) { + TextureOperation18.method282(Class38.anIntArrayArray663[var15], var13, -76, var14, var5); + } + + int var9 = Class40.method1040(Class3_Sub28_Sub18.anInt3765, var1 + var3, Class101.anInt1425); + int var10 = Class40.method1040(Class3_Sub28_Sub18.anInt3765, -var1 + var2, Class101.anInt1425); + + for (var15 = var7; var8 >= var15; ++var15) { + int[] var16 = Class38.anIntArrayArray663[var15]; + TextureOperation18.method282(var16, var13, -59, var9, var5); + TextureOperation18.method282(var16, var10, 1 + -97, var14, var5); + } + + } catch (RuntimeException var17) { + throw ClientErrorException.clientError(var17, "an.R(" + var0 + ',' + var1 + ',' + var2 + ',' + var3 + ',' + 1 + ',' + var5 + ',' + var6 + ')'); + } + } + + final int[][] method166(int var2) { + try { + int[][] var3 = this.aClass97_2376.method1594((byte) 58, var2); + if (this.aClass97_2376.aBoolean1379) { + int[] var4 = this.method152(0, Class3_Sub20.anInt2487 & var2 + -1); + int[] var5 = this.method152(0, var2); + int[] var6 = this.method152(0, 1 + var2 & Class3_Sub20.anInt2487); + int[] var7 = var3[0]; + int[] var8 = var3[1]; + int[] var9 = var3[2]; + + for (int var10 = 0; var10 < Class113.anInt1559; ++var10) { + int var14 = this.anInt3047 * (-var4[var10] + var6[var10]); + int var15 = this.anInt3047 * (-var5[RenderAnimationDefinition.anInt396 & -1 + var10] + var5[var10 + 1 & RenderAnimationDefinition.anInt396]); + int var17 = var14 >> 12; + int var16 = var15 >> 12; + int var19 = var17 * var17 >> 12; + int var18 = var16 * var16 >> 12; + int var20 = (int) (Math.sqrt((float) (var18 + var19 - -4096) / 4096.0F) * 4096.0D); + int var11; + int var12; + int var13; + if (0 == var20) { + var13 = 0; + var11 = 0; + var12 = 0; + } else { + var13 = 16777216 / var20; + var12 = var14 / var20; + var11 = var15 / var20; + } + + if (this.aBoolean3050) { + var12 = 2048 - -(var12 >> 1); + var13 = (var13 >> 1) + 2048; + var11 = (var11 >> 1) + 2048; + } + + var7[var10] = var11; + var8[var10] = var12; + var9[var10] = var13; + } + } + return var3; + } catch (RuntimeException var21) { + throw ClientErrorException.clientError(var21, "an.T(" + -1 + ',' + var2 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/TextureOperation34.java b/Client/src/main/java/org/runite/client/TextureOperation34.java new file mode 100644 index 000000000..bcaf7ac94 --- /dev/null +++ b/Client/src/main/java/org/runite/client/TextureOperation34.java @@ -0,0 +1,405 @@ +package org.runite.client; +import java.awt.Component; +import java.lang.reflect.Method; + +final class TextureOperation34 extends TextureOperation { + + int anInt3056 = 4; + int anInt3058 = 4; + private byte[] aByteArray3059 = new byte[512]; + int anInt3060 = 4; + int anInt3062 = 1638; + private short[] aShortArray3063; + static boolean aBoolean3064 = true; + boolean aBoolean3065 = true; + private short[] aShortArray3066; + int anInt3067 = 0; + + + static boolean method185(int var0, int var1, int var2, int var3, int var4, int var5, int var6, int var7) { + if(var1 < var2 && var1 < var3 && var1 < var4) { + return false; + } else if(var1 > var2 && var1 > var3 && var1 > var4) { + return false; + } else if(var0 < var5 && var0 < var6 && var0 < var7) { + return false; + } else if(var0 > var5 && var0 > var6 && var0 > var7) { + return false; + } else { + int var8 = (var1 - var2) * (var6 - var5) - (var0 - var5) * (var3 - var2); + int var9 = (var1 - var4) * (var5 - var7) - (var0 - var7) * (var2 - var4); + int var10 = (var1 - var3) * (var7 - var6) - (var0 - var6) * (var4 - var3); + return var8 * var10 > 0 && var10 * var9 > 0; + } + } + + final void method186(int var2, int[] var3) { + try { + int var5 = this.anInt3056 * Class163_Sub3.anIntArray2999[var2]; + int var4; + int var6; + int var8; + short var9; + int var10; + int var11; + int var12; + int var13; + int var14; + int var15; + int var17; + int var16; + int var18; + if(this.anInt3058 == 1) { + var9 = this.aShortArray3066[0]; + var8 = this.aShortArray3063[0] << 12; + var11 = var5 * var8 >> 12; + var12 = this.anInt3060 * var8 >> 12; + var13 = var8 * this.anInt3056 >> 12; + var15 = var11 >> 12; + var17 = this.aByteArray3059[255 & var15] & 0xFF; + var11 &= 4095; + var14 = Class1.anIntArray52[var11]; + var16 = var15 - -1; + if(var16 >= var13) { + var16 = 0; + } + + var18 = 255 & this.aByteArray3059[255 & var16]; + if(this.aBoolean3065) { + for(var10 = 0; Class113.anInt1559 > var10; ++var10) { + var4 = this.anInt3060 * Class102.anIntArray2125[var10]; + var6 = this.method192(var8 * var4 >> 12, var18, var17, var12, var11, var14); + var6 = var9 * var6 >> 12; + var3[var10] = 2048 - -(var6 >> 1); + } + } else { + for(var10 = 0; var10 < Class113.anInt1559; ++var10) { + var4 = this.anInt3060 * Class102.anIntArray2125[var10]; + var6 = this.method192(var8 * var4 >> 12, var18, var17, var12, var11, var14); + var3[var10] = var9 * var6 >> 12; + } + } + } else { + var9 = this.aShortArray3066[0]; + if(var9 > 8 || -8 > var9) { + var8 = this.aShortArray3063[0] << 12; + var13 = var8 * this.anInt3056 >> 12; + var12 = this.anInt3060 * var8 >> 12; + var11 = var5 * var8 >> 12; + var15 = var11 >> 12; + var16 = 1 + var15; + var17 = this.aByteArray3059[var15 & 0xFF] & 0xFF; + var11 &= 4095; + var14 = Class1.anIntArray52[var11]; + if(var13 <= var16) { + var16 = 0; + } + + var18 = 255 & this.aByteArray3059[255 & var16]; + + for(var10 = 0; Class113.anInt1559 > var10; ++var10) { + var4 = Class102.anIntArray2125[var10] * this.anInt3060; + var6 = this.method192(var4 * var8 >> 12, var18, var17, var12, var11, var14); + var3[var10] = var6 * var9 >> 12; + } + } + + for(int var7 = 1; this.anInt3058 > var7; ++var7) { + var9 = this.aShortArray3066[var7]; + if(8 < var9 || var9 < -8) { + var8 = this.aShortArray3063[var7] << 12; + var11 = var8 * var5 >> 12; + var15 = var11 >> 12; + var17 = this.aByteArray3059[255 & var15] & 0xFF; + var12 = this.anInt3060 * var8 >> 12; + var16 = var15 + 1; + var11 &= 4095; + var14 = Class1.anIntArray52[var11]; + var13 = this.anInt3056 * var8 >> 12; + if(var13 <= var16) { + var16 = 0; + } + + var18 = 255 & this.aByteArray3059[var16 & 0xFF]; + if(this.aBoolean3065 && this.anInt3058 + -1 == var7) { + for(var10 = 0; var10 < Class113.anInt1559; ++var10) { + var4 = Class102.anIntArray2125[var10] * this.anInt3060; + var6 = this.method192(var8 * var4 >> 12, var18, var17, var12, var11, var14); + var6 = (var9 * var6 >> 12) + var3[var10]; + var3[var10] = (var6 >> 1) + 2048; + } + } else { + for(var10 = 0; Class113.anInt1559 > var10; ++var10) { + var4 = Class102.anIntArray2125[var10] * this.anInt3060; + var6 = this.method192(var4 * var8 >> 12, var18, var17, var12, var11, var14); + var3[var10] += var6 * var9 >> 12; + } + } + } + } + } + + } catch (RuntimeException var19) { + throw ClientErrorException.clientError(var19, "bi.C(" + true + ',' + var2 + ',' + (var3 != null?"{...}":"null") + ')'); + } + } + + final void postDecode() { + try { + this.aByteArray3059 = Class49.method1123(this.anInt3067); + this.method191(); + + for(int var2 = -1 + this.anInt3058; var2 >= 1; --var2) { + short var3 = this.aShortArray3066[var2]; + if(8 < var3 || var3 < -8) { + break; + } + + --this.anInt3058; + } + + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "bi.P(" + ')'); + } + } + + static void method189() { + try { + int var2; + + int var1; + for(var1 = -1; Class159.localPlayerCount > var1; ++var1) { + int var3; + if(var1 == -1) { + var3 = 2047; + } else { + var3 = Class56.localPlayerIndexes[var1]; + } + + Player var4 = Unsorted.players[var3]; + if(var4 != null && 0 < var4.textCycle) { + --var4.textCycle; + if(var4.textCycle == 0) { + var4.textSpoken = null; + } + } + } + + for(var1 = 0; var1 < Class163.localNPCCount; ++var1) { + var2 = AudioThread.localNPCIndexes[var1]; + NPC var6 = NPC.npcs[var2]; + if(null != var6 && var6.textCycle > 0) { + --var6.textCycle; + if(var6.textCycle == 0) { + var6.textSpoken = null; + } + } + } + + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "bi.B(" + (byte) -62 + ')'); + } + } + + final void decode(int var1, DataBuffer var2) { + try { + + if(var1 == 0) { + this.aBoolean3065 = var2.readUnsignedByte() == 1; + } else if(var1 == 1) { + this.anInt3058 = var2.readUnsignedByte(); + } else if(var1 == 2) { + this.anInt3062 = var2.readSignedShort(); + if(0 > this.anInt3062) { + this.aShortArray3066 = new short[this.anInt3058]; + + for(int var4 = 0; this.anInt3058 > var4; ++var4) { + this.aShortArray3066[var4] = (short)var2.readSignedShort(); + } + } + } else if(var1 == 3) { + this.anInt3060 = this.anInt3056 = var2.readUnsignedByte(); + } else if(var1 == 4) { + this.anInt3067 = var2.readUnsignedByte(); + } else if(var1 == 5) { + this.anInt3060 = var2.readUnsignedByte(); + } else if(var1 == 6) { + this.anInt3056 = var2.readUnsignedByte(); + } + + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "bi.A(" + var1 + ',' + (var2 != null?"{...}":"null") + ',' + true + ')'); + } + } + + static int method190(int var0, int var1, byte var2, int var3) { + try { + int var5 = Class51.anIntArray834[Class140_Sub1_Sub2.method1940(var1, var3)]; + if(var0 > 0) { + int var6 = Class51.anInterface2_838.method19(111, var0 & 65535); + int var7; + int var9; + if(var6 != 0) { + if(var3 >= 0) { + if(var3 > 127) { + var7 = 16777215; + } else { + var7 = 131586 * var3; + } + } else { + var7 = 0; + } + + if(var6 == 256) { + var5 = var7; + } else { + var9 = -var6 + 256; + var5 = (16711680 & (var7 & 65280) * var6 + var9 * (var5 & 65280)) + (var6 * (var7 & 16711935) - -((16711935 & var5) * var9) & -16711936) >> 8; + } + } + + var7 = Class51.anInterface2_838.method10(106, 65535 & var0); + if(var7 != 0) { + var7 += 256; + int var8 = ((16711680 & var5) >> 16) * var7; + if(65535 < var8) { + var8 = 65535; + } + + var9 = ((var5 & 65280) >> 8) * var7; + if(var9 > 65535) { + var9 = 65535; + } + + int var10 = var7 * (var5 & 0xFF); + if(var10 > 65535) { + var10 = 65535; + } + + var5 = (var10 >> 8) + (65280 & var9) + (16711711 & var8 << 8); + } + } + + return var5; + } catch (RuntimeException var11) { + throw ClientErrorException.clientError(var11, "bi.E(" + var0 + ',' + var1 + ',' + var2 + ',' + var3 + ')'); + } + } + + private void method191() { + try { + int var2; + if(this.anInt3062 <= 0) { + if(this.aShortArray3066 != null && this.aShortArray3066.length == this.anInt3058) { + this.aShortArray3063 = new short[this.anInt3058]; + + for(var2 = 0; var2 < this.anInt3058; ++var2) { + this.aShortArray3063[var2] = (short)((int)Math.pow(2.0D, var2)); + } + } + } else { + this.aShortArray3066 = new short[this.anInt3058]; + this.aShortArray3063 = new short[this.anInt3058]; + + for(var2 = 0; var2 < this.anInt3058; ++var2) { + this.aShortArray3066[var2] = (short)((int)(Math.pow((float)this.anInt3062 / 4096.0F, var2) * 4096.0D)); + this.aShortArray3063[var2] = (short)((int)Math.pow(2.0D, var2)); + } + } + + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "bi.F(" + true + ')'); + } + } + + private int method192(int var1, int var2, int var3, int var4, int var6, int var7) { + try { + int var10 = -4096 + var6; + int var13 = var1 >> 12; + int var12 = 1 + var13; + var13 &= 255; + if(var4 <= var12) { + var12 = 0; + } + + var1 &= 4095; + int var14 = this.aByteArray3059[var13 - -var3] & 3; + int var15 = Class1.anIntArray52[var1]; + int var8; + if(var14 > 1) { + var8 = 2 != var14?-var1 + -var6:var1 - var6; + } else { + var8 = 0 == var14?var6 + var1:-var1 + var6; + } + + var12 &= 255; + int var11 = -4096 + var1; + var14 = this.aByteArray3059[var3 + var12] & 3; + int var9; + if(var14 <= 1) { + var9 = 0 == var14?var6 + var11:-var11 + var6; + } else { + var9 = 2 == var14?-var6 + var11:-var11 + -var6; + } + + var14 = this.aByteArray3059[var13 - -var2] & 3; + int var16 = var8 + ((var9 + -var8) * var15 >> 12); + if(1 < var14) { + var8 = 2 != var14?-var1 - var10:var1 + -var10; + } else { + var8 = 0 != var14?var10 + -var1:var1 - -var10; + } + + var14 = 3 & this.aByteArray3059[var2 + var12]; + if(1 < var14) { + var9 = var14 != 2 ?-var10 + -var11:var11 - var10; + } else { + var9 = var14 == 0?var11 + var10:var10 + -var11; + } + + int var17 = var8 + ((-var8 + var9) * var15 >> 12); + return var16 - -(var7 * (var17 + -var16) >> 12); + } catch (RuntimeException var18) { + throw ClientErrorException.clientError(var18, "bi.R(" + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + var6 + ',' + var7 + ')'); + } + } + + static void method193(byte var0, Component var1) { + try { + if(var0 < 49) { + Class53.worldListOffset = 85; + } + + Method var2 = Signlink.setTraversalKeysEnabled; + if(null != var2) { + try { + var2.invoke(var1, Boolean.FALSE); + } catch (Throwable var4) { + } + } + + var1.addKeyListener(TextureOperation33.aClass148_3049); + var1.addFocusListener(TextureOperation33.aClass148_3049); + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "bi.Q(" + var0 + ',' + (var1 != null?"{...}":"null") + ')'); + } + } + + public TextureOperation34() { + super(0, true); + } + + final int[] method154(int var1, byte var2) { + try { + int[] var3 = this.aClass114_2382.method1709(var1); + if(this.aClass114_2382.aBoolean1580) { + this.method186(var1, var3); + } + + return var3; + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "bi.D(" + var1 + ',' + var2 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/TextureOperation35.java b/Client/src/main/java/org/runite/client/TextureOperation35.java new file mode 100644 index 000000000..05f2dfe29 --- /dev/null +++ b/Client/src/main/java/org/runite/client/TextureOperation35.java @@ -0,0 +1,77 @@ +package org.runite.client; + +final class TextureOperation35 extends TextureOperation { + + static int anInt3332 = 50; + static int[] anIntArray3321 = new int[]{76, 8, 137, 4, 0, 1, 38, 2, 19}; + private int anInt3322 = 4096; + static int anInt3323 = 50; + static int[] anIntArray3328 = new int[8]; + static byte[][] aByteArrayArray3335; + + + public static void method294(byte var0) { + try { + Texture.anIntArray3327 = null; + Texture.anIntArray3337 = null; + Texture.aStringArray3317 = null; + anIntArray3328 = null; + Texture.anIntArray3319 = null; + aByteArrayArray3335 = null; + Texture.anIntArray3329 = null; + Texture.anIntArray3336 = null; + anIntArray3321 = null; + Texture.anIntArray3318 = null; + Texture.anIntArray3331 = null; + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "pg.B(" + var0 + ')'); + } + } + + public TextureOperation35() { + super(1, true); + } + + final int[] method154(int var1, byte var2) { + try { + int[] var4 = this.aClass114_2382.method1709(var1); + if(this.aClass114_2382.aBoolean1580) { + int[] var5 = this.method152(0, var1 - 1 & Class3_Sub20.anInt2487); + int[] var6 = this.method152(0, var1); + int[] var7 = this.method152(0, Class3_Sub20.anInt2487 & var1 + 1); + + for(int var8 = 0; Class113.anInt1559 > var8; ++var8) { + int var9 = (var7[var8] + -var5[var8]) * this.anInt3322; + int var10 = this.anInt3322 * (-var6[var8 - 1 & RenderAnimationDefinition.anInt396] + var6[RenderAnimationDefinition.anInt396 & var8 - -1]); + int var11 = var10 >> 12; + int var12 = var9 >> 12; + int var13 = var11 * var11 >> 12; + int var14 = var12 * var12 >> 12; + int var15 = (int)(Math.sqrt((float)(4096 + var14 + var13) / 4096.0F) * 4096.0D); + int var16 = 0 != var15?16777216 / var15:0; + var4[var8] = 4096 + -var16; + } + } + + return var4; + } catch (RuntimeException var17) { + throw ClientErrorException.clientError(var17, "pg.D(" + var1 + ',' + var2 + ')'); + } + } + + final void decode(int var1, DataBuffer var2) { + try { + if(!true) { + method294((byte)-57); + } + + if(var1 == 0) { + this.anInt3322 = var2.readUnsignedShort(); + } + + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "pg.A(" + var1 + ',' + (var2 != null?"{...}":"null") + ',' + true + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/TextureOperation36.java b/Client/src/main/java/org/runite/client/TextureOperation36.java new file mode 100644 index 000000000..2db71146b --- /dev/null +++ b/Client/src/main/java/org/runite/client/TextureOperation36.java @@ -0,0 +1,400 @@ +package org.runite.client; + +import org.rs09.client.config.GameConfig; + +public final class TextureOperation36 extends TextureOperation { + + static int anInt3422; + static int anInt3423; + static float aFloat3424; + static boolean aBoolean3094 = false; + private int[] anIntArray3425; + static byte[][][] aByteArrayArrayArray3430; + private int anInt3431; + private int anInt3433; + private int anInt3434 = -1; + static float aFloat3435; + + static void method1628(int var0, int var1, int var2, int var3, int var4, int var5) { + try { + int var9; + int var12; + if(Class164_Sub1.anInt3012 == 0) { + int var10 = AtmosphereParser.screenLowerY; + var9 = Class1.screenUpperY; + int var8 = Class145.screenUpperX; + int var7 = Class139.screenLowerX; + int var11 = (var5 - var3) * (-var7 + var8) / var1 - -var7; + var12 = var9 + (var10 + -var9) * (-var0 + var4) / var2; + if(GameObject.aBoolean1837 && (64 & Class164.anInt2051) != 0) { + RSInterface var13 = AbstractSprite.method638(BufferedDataStream.anInt872, RSInterface.anInt278); + if(var13 == null) { + Class25.method958((byte)-87); + } else { + Class3_Sub24_Sub4.pushRightClickMenuAction(Unsorted.anInt1887, 0L, (byte)-53, TextCore.aString_1724, var11, (short)11, Class3_Sub28_Sub9.aString_3621, var12); + } + } else { + if(Class158.paramGameTypeID == 1) { + Class3_Sub24_Sub4.pushRightClickMenuAction(-1, 0L, (byte)-62, RSString.parse(""), var11, (short)36, TextCore.HasFaceHere, var12); + } + + Class3_Sub24_Sub4.pushRightClickMenuAction(-1, 0L, (byte)-75, RSString.parse(""), var11, (short)60, TextureOperation32.aString_3353, var12); + } + } + + long var25 = -1L; + + for(var9 = 0; Unsorted.anInt59 > var9; ++var9) { + long var26 = TextureOperation38.aLongArray3448[var9]; + var12 = (int)var26 & 127; + int var14 = ((int)var26 & 2009320690) >> 29; + int var15 = (int)(var26 >>> 32) & Integer.MAX_VALUE; + int var27 = 127 & (int)var26 >> 7; + if(var25 != var26) { + var25 = var26; + int var18; + if(var14 == 2 && Unsorted.method2096(WorldListCountry.localPlane, var12, var27, var26)) { + ObjectDefinition var16 = ObjectDefinition.getObjectDefinition(var15); + if(null != var16.ChildrenIds) { + var16 = var16.method1685(0); + } + + if(null == var16) { + continue; + } + + if(Class164_Sub1.anInt3012 == 1) { + Class3_Sub24_Sub4.pushRightClickMenuAction(Class99.anInt1403, var26, (byte)-58, RSString.stringCombiner(new RSString[]{RenderAnimationDefinition.aString_378, ColorCore.PMColor, var16.name}), var12, (short)14, TextCore.HasUse, var27); + } else if(GameObject.aBoolean1837) { + Class3_Sub28_Sub9 var17 = -1 == Unsorted.anInt1038?null: LinkedList.method1210(Unsorted.anInt1038); + if(0 != (Class164.anInt2051 & 4) && (var17 == null || var17.anInt3614 != var16.method1691(var17.anInt3614, Unsorted.anInt1038, (byte) 98))) { + Class3_Sub24_Sub4.pushRightClickMenuAction(Unsorted.anInt1887, var26, (byte)-77, RSString.stringCombiner(new RSString[]{TextCore.aString_676, ColorCore.PMColor, var16.name}), var12, (short)38, Class3_Sub28_Sub9.aString_3621, var27); + } + } else { + RSString[] var29 = var16.options; + if(Class123.aBoolean1656) { + var29 = Class3_Sub31.optionsArrayStringConstructor(var29); + } + + if(var29 != null) { + for(var18 = 4; var18 >= 0; --var18) { + if(null != var29[var18]) { + short var19 = 0; + if(var18 == 0) { + var19 = 42; + } + + if(var18 == 1) { + var19 = 50; + } + + int var20 = -1; + if(2 == var18) { + var19 = 49; + } + + if(var16.anInt1493 == var18) { + var20 = var16.anInt1517; + } + + if(var18 == 3) { + var19 = 46; + } + + if(var18 == var16.anInt1520) { + var20 = var16.anInt1522; + } + + if(var18 == 4) { + var19 = 1001; + } + + + if (GameConfig.OBJECT_DEBUG_ENABLED) { + Class3_Sub24_Sub4.pushRightClickMenuAction(var20, var26, (byte) -91, RSString.stringCombiner(new RSString[]{ColorCore.ObjectNameColor, var16.name}), var12, var19, var29[var18], var27); + } else { + Class3_Sub24_Sub4.pushRightClickMenuAction(var20, var26, (byte) -91, RSString.stringCombiner(new RSString[]{ColorCore.ObjectNameColor, var16.name}), var12, var19, var29[var18], var27); + } + + } + } + } + if (GameConfig.OBJECT_DEBUG_ENABLED) { + Class3_Sub24_Sub4.pushRightClickMenuAction(Class131.anInt1719, var16.objectId, (byte) -26, RSString.stringCombiner(new RSString[]{ColorCore.ObjectNameColor, var16.name}), var12, (short) 1004, RSString.parse("Examine" + "
" + " ID: (X" + var16.objectId + "(Y"), var27); + } else { + Class3_Sub24_Sub4.pushRightClickMenuAction(Class131.anInt1719, var16.objectId, (byte) -26, RSString.stringCombiner(new RSString[]{ColorCore.ObjectNameColor, var16.name}), var12, (short) 1004, TextCore.HasExamine, var27); + } + } + } + + int var21; + int var22; + int var33; + Player var38; + NPC var36; + int var37; + if(var14 == 1) { + NPC var31 = NPC.npcs[var15]; + if((var31.definition.size & 1) == 0 && (127 & var31.xAxis) == 0 && (var31.yAxis & 127) == 0 || 1 == (var31.definition.size & 1) && (127 & var31.xAxis) == 64 && (var31.yAxis & 127) == 64) { + var33 = var31.xAxis - -64 - 64 * var31.definition.size; + var18 = -((-1 + var31.definition.size) * 64) + var31.yAxis; + + for(var37 = 0; var37 < Class163.localNPCCount; ++var37) { + var36 = NPC.npcs[AudioThread.localNPCIndexes[var37]]; + var21 = -(var36.definition.size * 64) - -64 + var36.xAxis; + var22 = var36.yAxis + -(var36.definition.size * 64) - -64; + if(var31 != var36 && var33 <= var21 && var31.definition.size - (-var33 + var21 >> 7) >= var36.definition.size && var18 <= var22 && var36.definition.size <= -(-var18 + var22 >> 7) + var31.definition.size) { + Unsorted.drawNpcRightClickOptions(var36.definition, var12, -126, AudioThread.localNPCIndexes[var37], var27); + } + } + + for(var37 = 0; var37 < Class159.localPlayerCount; ++var37) { + var38 = Unsorted.players[Class56.localPlayerIndexes[var37]]; + var21 = var38.xAxis + 64 + -(64 * var38.getSize()); + var22 = var38.yAxis - (var38.getSize() * 64 + -64); + if(var21 >= var33 && var31.definition.size - (var21 - var33 >> 7) >= var38.getSize() && var18 <= var22 && var38.getSize() <= -(-var18 + var22 >> 7) + var31.definition.size) { + TextureOperation13.method312(Class56.localPlayerIndexes[var37], 5, var27, var38, var12); + } + } + } + + Unsorted.drawNpcRightClickOptions(var31.definition, var12, -108, var15, var27); + } + + if(var14 == 0) { + Player var30 = Unsorted.players[var15]; + if((127 & var30.xAxis) == 64 && 64 == (127 & var30.yAxis)) { + var33 = var30.xAxis + -(64 * (-1 + var30.getSize())); + var18 = var30.yAxis + 64 + -(var30.getSize() * 64); + + for(var37 = 0; var37 < Class163.localNPCCount; ++var37) { + var36 = NPC.npcs[AudioThread.localNPCIndexes[var37]]; + var21 = var36.xAxis + -(var36.definition.size * 64) - -64; + var22 = var36.yAxis - 64 * var36.definition.size - -64; + if(var21 >= var33 && var36.definition.size <= -(var21 - var33 >> 7) + var30.getSize() && var18 <= var22 && -(-var18 + var22 >> 7) + var30.getSize() >= var36.definition.size) { + Unsorted.drawNpcRightClickOptions(var36.definition, var12, -121, AudioThread.localNPCIndexes[var37], var27); + } + } + + for(var37 = 0; var37 < Class159.localPlayerCount; ++var37) { + var38 = Unsorted.players[Class56.localPlayerIndexes[var37]]; + var21 = var38.xAxis - (var38.getSize() + -1) * 64; + var22 = var38.yAxis - (-64 + 64 * var38.getSize()); + if(var38 != var30 && var21 >= var33 && var38.getSize() <= var30.getSize() - (var21 - var33 >> 7) && var18 <= var22 && -(var22 + -var18 >> 7) + var30.getSize() >= var38.getSize()) { + TextureOperation13.method312(Class56.localPlayerIndexes[var37], 9, var27, var38, var12); + } + } + } + + TextureOperation13.method312(var15, 31, var27, var30, var12); + } + + if(var14 == 3) { + LinkedList var28 = Class39.groundItems[WorldListCountry.localPlane][var12][var27]; + if(null != var28) { + for(GroundItemLink var32 = (GroundItemLink)var28.method1212(); null != var32; var32 = (GroundItemLink)var28.method1219(41)) { + var18 = var32.aGroundItem_3676.itemId; + ItemDefinition var40 = ItemDefinition.getItemDefinition(var18); + if(Class164_Sub1.anInt3012 == 1) { + Class3_Sub24_Sub4.pushRightClickMenuAction(Class99.anInt1403, var18, (byte)-75, RSString.stringCombiner(new RSString[]{RenderAnimationDefinition.aString_378, ColorCore.BankItemColor, var40.name}), var12, (short)33, TextCore.HasUse, var27); + } else if(GameObject.aBoolean1837) { + Class3_Sub28_Sub9 var39 = Unsorted.anInt1038 == -1?null: LinkedList.method1210(Unsorted.anInt1038); + if((Class164.anInt2051 & 1) != 0 && (null == var39 || var39.anInt3614 != var40.method1115(var39.anInt3614, 100, Unsorted.anInt1038))) { + Class3_Sub24_Sub4.pushRightClickMenuAction(Unsorted.anInt1887, var18, (byte)-70, RSString.stringCombiner(new RSString[]{TextCore.aString_676, ColorCore.BankItemColor, var40.name}), var12, (short)39, Class3_Sub28_Sub9.aString_3621, var27); + } + } else { + RSString[] var34 = var40.groundOptions; + if(Class123.aBoolean1656) { + var34 = Class3_Sub31.optionsArrayStringConstructor(var34); + } + + for(var21 = 4; var21 >= 0; --var21) { + if(var34 != null && null != var34[var21]) { + byte var35 = 0; + if(var21 == 0) { + var35 = 21; + } + + if(1 == var21) { + var35 = 34; + } + + int var23 = -1; + if(var40.anInt767 == var21) { + var23 = var40.anInt758; + } + + if(var21 == 2) { + var35 = 18; + } + + if(var40.anInt788 == var21) { + var23 = var40.anInt756; + } + + if(var21 == 3) { + var35 = 20; + } + + if(var21 == 4) { + var35 = 24; + } + + Class3_Sub24_Sub4.pushRightClickMenuAction(var23, var18, (byte)-43, RSString.stringCombiner(new RSString[]{ColorCore.GroundItemColor, var40.name}), var12, var35, var34[var21], var27); + } + } + if (GameConfig.ITEM_DEBUG_ENABLED) { + Class3_Sub24_Sub4.pushRightClickMenuAction(Class131.anInt1719, var18, (byte) -43, RSString.stringCombiner(new RSString[]{ColorCore.GroundItemColor, var40.name}), var12, (short) 1002, RSString.parse("Examine" + "
" + " ID: (X" + var40.itemId + "(Y"), var27); + } else { + Class3_Sub24_Sub4.pushRightClickMenuAction(Class131.anInt1719, var18, (byte) -43, RSString.stringCombiner(new RSString[]{ColorCore.GroundItemColor, var40.name}), var12, (short) 1002, TextCore.HasExamine, var27); + } + } + } + } + } + } + } + + } catch (RuntimeException var24) { + throw ClientErrorException.clientError(var24, "ob.K(" + var0 + ',' + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + var5 + ',' + (byte) 97 + ')'); + } + } + + final int[][] method166(int var2) { + try { + if(-1 != -1) { + this.anInt3434 = 6; + } + + int[][] var3 = this.aClass97_2376.method1594((byte)-120, var2); + if(this.aClass97_2376.aBoolean1379 && this.method339()) { + int var4 = (this.anInt3433 != Class101.anInt1427?this.anInt3433 * var2 / Class101.anInt1427:var2) * this.anInt3431; + int[] var5 = var3[0]; + int[] var6 = var3[1]; + int[] var7 = var3[2]; + int var8; + int var9; + if(this.anInt3431 == Class113.anInt1559) { + for(var8 = 0; var8 < Class113.anInt1559; ++var8) { + var9 = this.anIntArray3425[var4++]; + var7[var8] = Unsorted.bitwiseAnd(var9 << 4, 4080); + var6[var8] = Unsorted.bitwiseAnd(var9, 65280) >> 4; + var5[var8] = Unsorted.bitwiseAnd(var9, 16711680) >> 12; + } + } else { + for(var8 = 0; var8 < Class113.anInt1559; ++var8) { + var9 = this.anInt3431 * var8 / Class113.anInt1559; + int var10 = this.anIntArray3425[var4 - -var9]; + var7[var8] = Unsorted.bitwiseAnd(var10 << 4, 4080); + var6[var8] = Unsorted.bitwiseAnd(65280, var10) >> 4; + var5[var8] = Unsorted.bitwiseAnd(var10 >> 12, 4080); + } + } + } + + return var3; + } catch (RuntimeException var11) { + throw ClientErrorException.clientError(var11, "ui.T(" + -1 + ',' + var2 + ')'); + } + } + + private boolean method339() { + try { + if(this.anIntArray3425 == null) { + if(this.anInt3434 < 0) { + return false; + } else { + int var2 = Class113.anInt1559; + int var3 = Class101.anInt1427; + int var4 = !Class17.anInterface2_408.method14((byte)-104, this.anInt3434)?128:64; + this.anIntArray3425 = Class17.anInterface2_408.method16(64, this.anInt3434); + this.anInt3433 = var4; + this.anInt3431 = var4; + TextureOperation33.method180(18, var3, var2); + return this.anIntArray3425 != null; + } + } else { + return true; + } + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "ui.LA(" + false + ')'); + } + } + + static int method340(int var0) { + try { + return var0 >>> 8; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "ui.NA(" + var0 + ',' + -51 + ')'); + } + } + + final void decode(int var1, DataBuffer var2) { + try { + if(!true) { + CacheIndex.animationIndex = null; + } + + if(0 == var1) { + this.anInt3434 = var2.readUnsignedShort(); + } + + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "ui.A(" + var1 + ',' + (var2 != null?"{...}":"null") + ',' + true + ')'); + } + } + + public TextureOperation36() { + super(0, false); + } + + final void method161(byte var1) { + try { + super.method161(var1); + this.anIntArray3425 = null; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "ui.BA(" + var1 + ')'); + } + } + + static AbstractIndexedSprite[] method343() { + try { + AbstractIndexedSprite[] var1 = new AbstractIndexedSprite[Class95.anInt1338]; + + for(int var2 = 0; var2 < Class95.anInt1338; ++var2) { + if(HDToolKit.highDetail) { + var1[var2] = new HDIndexedSprite(Class3_Sub15.anInt2426, Class133.anInt1748, Class164.anIntArray2048[var2], Unsorted.anIntArray2591[var2], GroundItem.anIntArray2931[var2], Unsorted.anIntArray3076[var2], Class163_Sub1.aByteArrayArray2987[var2], TextureOperation38.spritePalette); + } else { + var1[var2] = new LDIndexedSprite(Class3_Sub15.anInt2426, Class133.anInt1748, Class164.anIntArray2048[var2], Unsorted.anIntArray2591[var2], GroundItem.anIntArray2931[var2], Unsorted.anIntArray3076[var2], Class163_Sub1.aByteArrayArray2987[var2], TextureOperation38.spritePalette); + } + } + Class39.method1035((byte)113); + return var1; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "ui.JA(" + 1854847236 + ')'); + } + } + + final int getSpriteFrame() { + try { + return this.anInt3434; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "ui.HA(" + (byte) 19 + ')'); + } + } + + static void method344(int var0, int var1) { + try { + if(0 <= var0 && Class3_Sub24_Sub4.aBooleanArray3503.length > var0) { + Class3_Sub24_Sub4.aBooleanArray3503[var0] = !Class3_Sub24_Sub4.aBooleanArray3503[var0]; + if(var1 != 4) { + aByteArrayArrayArray3430 = null; + } + + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "ui.KA(" + var0 + ',' + var1 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/TextureOperation37.java b/Client/src/main/java/org/runite/client/TextureOperation37.java new file mode 100644 index 000000000..7fddd685a --- /dev/null +++ b/Client/src/main/java/org/runite/client/TextureOperation37.java @@ -0,0 +1,308 @@ +package org.runite.client; +import org.rs09.client.config.GameConfig; +import org.rs09.client.net.Connection; + +import java.io.IOException; +import java.net.Socket; +import java.util.Objects; + +final class TextureOperation37 extends TextureOperation { +//Class3_Sub13_Sub21 + private int anInt3253 = 0; + private int anInt3254 = 4096; + static int anInt3256; + private int anInt3257 = 12288; + private int anInt3258 = 0; + static int anInt3260 = -1; + static boolean aBoolean3261 = false; + private int anInt3262 = 2048; + static int anInt3263 = 0; + static Class3_Sub28_Sub3 aClass3_Sub28_Sub3_3264; + private int anInt3265 = 2048; + private int anInt3266 = 8192; + + + final void decode(int var1, DataBuffer var2) { + try { + if(var1 == 0) { + this.anInt3265 = var2.readUnsignedShort(); + } else if(var1 == 1) { + this.anInt3253 = var2.readUnsignedShort(); + } else if(var1 == 2) { + this.anInt3258 = var2.readUnsignedShort(); + } else if(var1 == 3) { + this.anInt3262 = var2.readUnsignedShort(); + } else if (var1 == 4) { + this.anInt3257 = var2.readUnsignedShort(); + } else if (var1 == 5) { + this.anInt3254 = var2.readUnsignedShort(); + } else if (var1 == 6) { + this.anInt3266 = var2.readUnsignedShort(); + } + + if(!true) { + this.anInt3266 = 85; + } + + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "mh.A(" + var1 + ',' + (var2 != null?"{...}":"null") + ',' + true + ')'); + } + } + + static void method267() { + try { + if(Unsorted.registryStage != 0) { + try { + if(++Class132.anInt1734 > 2000) { + if(null != Class3_Sub15.activeConnection) { + Class3_Sub15.activeConnection.close(); + Class3_Sub15.activeConnection = null; + } + + if(GraphicDefinition.anInt548 >= 1) { + Unsorted.anInt1711 = -5; + Unsorted.registryStage = 0; + return; + } + + Unsorted.registryStage = 1; + Class132.anInt1734 = 0; + ++GraphicDefinition.anInt548; + if(Class140_Sub6.accRegistryPort == Class162.anInt2036) { + Class140_Sub6.accRegistryPort = Client.currentPort; + } else { + Class140_Sub6.accRegistryPort = Class162.anInt2036; + } + } + + if(Unsorted.registryStage == 1) { + //Ip & Port + Class3_Sub9.aClass64_2318 = Class38.gameSignlink.method1441((byte)8, Class38_Sub1.accRegistryIp, Class140_Sub6.accRegistryPort); + Unsorted.registryStage = 2; + } + + int response; + if(Unsorted.registryStage == 2) { + if(Objects.requireNonNull(Class3_Sub9.aClass64_2318).anInt978 == 2) { + throw new IOException(); + } + if(1 != Class3_Sub9.aClass64_2318.anInt978) { + return; + } + Class3_Sub15.activeConnection = new Connection((Socket)Class3_Sub9.aClass64_2318.anObject974, Class38.gameSignlink); + Class3_Sub9.aClass64_2318 = null; + Class3_Sub15.activeConnection.sendBytes(TextureOperation12.outgoingBuffer.buffer, TextureOperation12.outgoingBuffer.index); + if(WorldListEntry.aAudioChannel_2627 != null) { + WorldListEntry.aAudioChannel_2627.method2159(); + } + if(null != Class3_Sub21.aAudioChannel_2491) { + Class3_Sub21.aAudioChannel_2491.method2159(); + } + response = Class3_Sub15.activeConnection.readByte(); + System.out.println("Response = " + response); + if(WorldListEntry.aAudioChannel_2627 != null) { + WorldListEntry.aAudioChannel_2627.method2159(); + } + if(Class3_Sub21.aAudioChannel_2491 != null) { + Class3_Sub21.aAudioChannel_2491.method2159(); + } + if(response != 21) { + Unsorted.anInt1711 = response; + Unsorted.registryStage = 0; + Class3_Sub15.activeConnection.close(); + Class3_Sub15.activeConnection = null; + return; + } + Unsorted.registryStage = 3; + } + + if(3 == Unsorted.registryStage) { + if(Class3_Sub15.activeConnection.availableBytes() < 1) { + return; + } + + TextureOperation29.aStringArray3391 = new RSString[Class3_Sub15.activeConnection.readByte()]; + Unsorted.registryStage = 4; + } + + if(Unsorted.registryStage == 4) { + if(8 * TextureOperation29.aStringArray3391.length > Class3_Sub15.activeConnection.availableBytes()) { + return; + } + + BufferedDataStream.incomingBuffer.index = 0; + Class3_Sub15.activeConnection.readBytes(BufferedDataStream.incomingBuffer.buffer, 0, 8 * TextureOperation29.aStringArray3391.length); + + for(response = 0; response < TextureOperation29.aStringArray3391.length; ++response) { + TextureOperation29.aStringArray3391[response] = Unsorted.method1052(BufferedDataStream.incomingBuffer.readLong()); + } + + Unsorted.anInt1711 = 21; + Unsorted.registryStage = 0; + Class3_Sub15.activeConnection.close(); + Class3_Sub15.activeConnection = null; + return; + } + } catch (IOException var2) { + if(Class3_Sub15.activeConnection != null) { + Class3_Sub15.activeConnection.close(); + Class3_Sub15.activeConnection = null; + } + + if(GraphicDefinition.anInt548 < 1) { + ++GraphicDefinition.anInt548; + if(Class162.anInt2036 == Class140_Sub6.accRegistryPort) { + Class140_Sub6.accRegistryPort = Client.currentPort; + } else { + Class140_Sub6.accRegistryPort = Class162.anInt2036; + } + + Class132.anInt1734 = 0; + Unsorted.registryStage = 1; + } else { + Unsorted.anInt1711 = -4; + Unsorted.registryStage = 0; + } + } + + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "mh.Q(" + (byte) 36 + ')'); + } + } + + public TextureOperation37() { + super(0, true); + } + + final int[] method154(int var1, byte var2) { + try { + int[] var3 = this.aClass114_2382.method1709(var1); + if(this.aClass114_2382.aBoolean1580) { + int var5 = -2048 + Class163_Sub3.anIntArray2999[var1]; + + for(int var6 = 0; var6 < Class113.anInt1559; ++var6) { + int var9 = var5 + this.anInt3253; + int var7 = Class102.anIntArray2125[var6] + -2048; + int var8 = this.anInt3265 + var7; + var9 = var9 < -2048 ?var9 - -4096:var9; + var9 = 2048 < var9?-4096 + var9:var9; + int var10 = var7 + this.anInt3258; + var8 = var8 < -2048?var8 + 4096:var8; + var8 = var8 <= 2048 ?var8:-4096 + var8; + var10 = var10 >= -2048 ?var10:4096 + var10; + var10 = var10 > 2048 ?var10 - 4096:var10; + int var11 = var5 - -this.anInt3262; + var11 = -2048 > var11?var11 + 4096:var11; + var11 = var11 > 2048 ?var11 - 4096:var11; + var3[var6] = !this.method271(var8, var9) && !this.method270(var10, var11)?0:4096; + } + } + + return var3; + } catch (RuntimeException var12) { + throw ClientErrorException.clientError(var12, "mh.D(" + var1 + ',' + var2 + ')'); + } + } + + private boolean method270(int var2, int var3) { + try { + int var4 = this.anInt3257 * (var2 + var3) >> 12; + + int var5 = Class75_Sub2.anIntArray2639[var4 * 255 >> 12 & 0xFF]; + var5 = (var5 << 12) / this.anInt3257; + var5 = (var5 << 12) / this.anInt3266; + var5 = var5 * this.anInt3254 >> 12; + return var5 > -var2 + var3 && var3 + -var2 > -var5; + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "mh.S(" + (byte) -44 + ',' + var2 + ',' + var3 + ')'); + } + } + + final void postDecode() { + try { + Class8.method844((byte)-9); + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "mh.P(" + ')'); + } + } + + private boolean method271(int var1, int var2) { + try { + int var4 = (var2 - var1) * this.anInt3257 >> 12; + + int var5 = Class75_Sub2.anIntArray2639[(1047948 & var4 * 255) >> 12]; + var5 = (var5 << 12) / this.anInt3257; + var5 = (var5 << 12) / this.anInt3266; + var5 = var5 * this.anInt3254 >> 12; + return var5 > var2 + var1 && -var5 < var2 + var1; + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "mh.F(" + var1 + ',' + var2 + ',' + (byte) 113 + ')'); + } + } + + static void displayNPCOnLoginRegion() { + try { + + int var1 = TextureOperation35.aByteArrayArray3335.length; + + for(int var2 = 0; var2 < var1; ++var2) { + if(TextureOperation35.aByteArrayArray3335[var2] != null) { + int var3 = -1; + + for(int var4 = 0; TextureOperation11.anInt3244 > var4; ++var4) { + if(TextureOperation13.anIntArray3367[var4] == Class3_Sub24_Sub3.regionIds[var2]) { + var3 = var4; + break; + } + } + + if(var3 == -1) { + TextureOperation13.anIntArray3367[TextureOperation11.anInt3244] = Class3_Sub24_Sub3.regionIds[var2]; + var3 = TextureOperation11.anInt3244++; + } + + int var5 = 0; + DataBuffer var16 = new DataBuffer(TextureOperation35.aByteArrayArray3335[var2]); + + while(TextureOperation35.aByteArrayArray3335[var2].length > var16.index && 511 > var5) { + int var6 = var5++ << 6 | var3; + int var7 = var16.readUnsignedShort(); + int var8 = var7 >> 14; + int var9 = 63 & var7 >> 7; + int var11 = var9 + 64 * (Class3_Sub24_Sub3.regionIds[var2] >> 8) - Class131.x1716; + int var10 = var7 & 63; + int var12 = var10 + -Texture.y1152 + 64 * (255 & Class3_Sub24_Sub3.regionIds[var2]); + int npcID = var16.readUnsignedShort(); + + if (GameConfig.EASTER_EVENT_ENABLED) { + npcID = 1321; + } + + NPCDefinition var13 = NPCDefinition.getNPCDefinition(npcID); + if(NPC.npcs[var6] == null && (var13.aByte1267 & 1) > 0 && Class140_Sub3.viewportZ == var8 && var11 >= 0 && 104 > var13.size + var11 && var12 >= 0 && 104 > var12 - -var13.size) { + NPC.npcs[var6] = new NPC(); + NPC npc = NPC.npcs[var6]; + AudioThread.localNPCIndexes[Class163.localNPCCount++] = var6; + npc.anInt2838 = Class44.anInt719; + npc.setDefinitions(var13); + npc.setSize(npc.definition.size, 2); + npc.anInt2806 = npc.anInt2785 = Class27.anIntArray510[npc.definition.aByte1268]; + npc.anInt2779 = npc.definition.anInt1274; + if(npc.anInt2779 == 0) { + npc.anInt2785 = 0; + } + + npc.renderAnimationId = npc.definition.renderAnimationId; + npc.updateAnimationPosition(npc.getSize(), var11, var12, true); + } + } + } + } + + } catch (RuntimeException var15) { + throw ClientErrorException.clientError(var15, "mh.E(" + (byte) -124 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/TextureOperation38.java b/Client/src/main/java/org/runite/client/TextureOperation38.java new file mode 100644 index 000000000..b5e38cc1f --- /dev/null +++ b/Client/src/main/java/org/runite/client/TextureOperation38.java @@ -0,0 +1,135 @@ +package org.runite.client; +import java.util.Objects; +import java.util.Random; + +final class TextureOperation38 extends TextureOperation { + + private int anInt3444 = 0; + + static int[] spritePalette; + private int anInt3447 = 2000; + static long[] aLongArray3448 = new long[1000]; + private int anInt3450 = 4096; + private int anInt3451 = 16; + static short[] aShortArray3453 = new short[256]; + private int anInt3454 = 0; + static short[] aShortArray3455; + static int[] anIntArray3456 = new int[4096]; + + final void postDecode() { + try { + Class8.method844((byte)-9); + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "vc.P(" + ')'); + } + } + + final void decode(int var1, DataBuffer var2) { + try { + if(var1 == 0) { + this.anInt3454 = var2.readUnsignedByte(); + } else if(var1 == 1) { + this.anInt3447 = var2.readUnsignedShort(); + } else if(var1 == 2) { + this.anInt3451 = var2.readUnsignedByte(); + } else if (3 == var1) { + this.anInt3444 = var2.readUnsignedShort(); + } else if (var1 == 4) { + this.anInt3450 = var2.readUnsignedShort(); + } + + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "vc.A(" + var1 + ',' + (var2 != null?"{...}":"null") + ',' + true + ')'); + } + } + + public TextureOperation38() { + super(0, true); + } + + final int[] method154(int var1, byte var2) { + try { + int[] var3 = this.aClass114_2382.method1709(var1); + if(this.aClass114_2382.aBoolean1580) { + int var5 = this.anInt3450 >> 1; + int[][] var6 = this.aClass114_2382.method1710((byte)93); + Random var7 = new Random(this.anInt3454); + + for(int var8 = 0; this.anInt3447 > var8; ++var8) { + int var9 = this.anInt3450 > 0?this.anInt3444 + -var5 + TextureOperation.method1603((byte)-99, this.anInt3450, var7):this.anInt3444; + int var10 = TextureOperation.method1603((byte)-96, Class113.anInt1559, var7); + var9 = (var9 & 4088) >> 4; + int var11 = TextureOperation.method1603((byte)62, Class101.anInt1427, var7); + int var12 = var10 - -(this.anInt3451 * Class75_Sub2.anIntArray2639[var9] >> 12); + int var13 = var11 + (TextureOperation23.anIntArray3212[var9] * this.anInt3451 >> 12); + int var15 = var12 - var10; + int var14 = -var11 + var13; + if(var15 != 0 || var14 != 0) { + if(var15 < 0) { + var15 = -var15; + } + + if(var14 < 0) { + var14 = -var14; + } + + boolean var16 = var14 > var15; + int var17; + int var18; + if(var16) { + var17 = var10; + var18 = var12; + var12 = var13; + var13 = var18; + var10 = var11; + var11 = var17; + } + + if(var12 < var10) { + var17 = var10; + var18 = var11; + var10 = var12; + var11 = var13; + var13 = var18; + var12 = var17; + } + + var18 = -var10 + var12; + int var19 = var13 + -var11; + var17 = var11; + if(var19 < 0) { + var19 = -var19; + } + + int var20 = -var18 / 2; + int var22 = -(TextureOperation.method1603((byte)-18, 4096, var7) >> 2) + 1024; + int var23 = var11 >= var13 ?-1:1; + int var21 = 2048 / var18; + + for(int var24 = var10; var12 > var24; ++var24) { + var20 += var19; + int var25 = var21 * (-var10 + var24) + var22 + 1024; + int var27 = var17 & Class3_Sub20.anInt2487; + if(0 < var20) { + var20 += -var18; + var17 += var23; + } + + int var26 = RenderAnimationDefinition.anInt396 & var24; + if(var16) { + Objects.requireNonNull(var6)[var27][var26] = var25; + } else { + Objects.requireNonNull(var6)[var26][var27] = var25; + } + } + } + } + } + + return var3; + } catch (RuntimeException var28) { + throw ClientErrorException.clientError(var28, "vc.D(" + var1 + ',' + var2 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/TextureOperation39.java b/Client/src/main/java/org/runite/client/TextureOperation39.java new file mode 100644 index 000000000..f5a54d28d --- /dev/null +++ b/Client/src/main/java/org/runite/client/TextureOperation39.java @@ -0,0 +1,178 @@ +package org.runite.client; + +import org.rs09.CustomVars; + +import java.util.Objects; + +class TextureOperation39 extends TextureOperation { + + private int anInt3278 = -1; + int anInt3280; + int anInt3283; + int[] anIntArray3284; + static int itemDefinitionSize; + + static int method275(int var0, int var1, int var2, int var3) { + try { + int var5 = -Class51.anIntArray851[1024 * var2 / var3] + 65536 >> 1; + return (var0 * (-var5 + 65536) >> 16) + (var1 * var5 >> 16); + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "nh.CA(" + var0 + ',' + var1 + ',' + var2 + ',' + ',' + var3 + ')'); + } + } + + static void method276(int var0, int var1, int var2, int var3, GameObject var4, long var5, boolean var7) { + if(var4 != null) { + Class12 var8 = new Class12(); + var8.object = var4; + var8.anInt324 = var1 * 128 + 64; + var8.anInt330 = var2 * 128 + 64; + var8.anInt326 = var3; + var8.aLong328 = var5; + var8.aBoolean329 = var7; + if(TileData.aTileDataArrayArrayArray2638[var0][var1][var2] == null) { + TileData.aTileDataArrayArrayArray2638[var0][var1][var2] = new TileData(var0, var1, var2); + } + + TileData.aTileDataArrayArrayArray2638[var0][var1][var2].aClass12_2230 = var8; + } + } + + static boolean handleWorldListUpdate(byte[] buf) { + try { + DataBuffer buffer = new DataBuffer(buf); + int opcode = buffer.readUnsignedByte(); + //System.out.println(opcode); + if(1 == opcode) { + boolean updated = buffer.readUnsignedByte() == 1; + if(updated) { + WorldListEntry.parseWorldList(buffer); + } + + TextureOperation30.method216(buffer); + return true; + } else { + return false; + } + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "nh.AA(" + 4 + ',' + (buf != null?"{...}":"null") + ')'); + } + } + + final boolean method279(int var1) { + try { + if(null == this.anIntArray3284) { + if(this.anInt3278 < 0) { + return false; + } else { + SoftwareSprite var3 = Texture.anInt1668 < 0 ? Unsorted.method1537(WaterfallShader.spritesIndex_probably_2172, this.anInt3278):Class40.method1043(this.anInt3278, WaterfallShader.spritesIndex_probably_2172, Texture.anInt1668); + Objects.requireNonNull(var3).method665(); + this.anInt3283 = var3.height; + this.anInt3280 = var3.width; + this.anIntArray3284 = var3.anIntArray4081; + return true; + } + } else { + return true; + } + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "nh.FA(" + var1 + ')'); + } + } + + final int method159(int var1) { + try { + return var1 != 4?40:this.anInt3278; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "nh.GA(" + var1 + ')'); + } + } + + public TextureOperation39() { + super(0, false); + } + + static void method280(int var0, int var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9, int var11, int var12) { + try { + Class3_Sub5 var13 = new Class3_Sub5(); + var13.anInt2284 = var6; + var13.anInt2283 = var3; + var13.anInt2266 = var1; + var13.anInt2279 = var5; + var13.anInt2273 = var2; + var13.anInt2271 = var8; + var13.anInt2277 = var11; + var13.anInt2282 = var4; + var13.anInt2270 = var12; + var13.anInt2268 = var7; + var13.anInt2272 = var0; + var13.anInt2278 = var9; + Unsorted.aLinkedList_2468.pushBack(var13); + } catch (RuntimeException var14) { + throw ClientErrorException.clientError(var14, "nh.V(" + var0 + ',' + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + var5 + ',' + var6 + ',' + var7 + ',' + var8 + ',' + var9 + ',' + -745213428 + ',' + var11 + ',' + var12 + ')'); + } + } + + int[][] method166(int var2) { + try { + if(-1 != -1) { + this.method159(32); + } + + int[][] var3 = this.aClass97_2376.method1594((byte)65, var2); + if(this.aClass97_2376.aBoolean1379 && this.method279(-113)) { + int[] var4 = var3[0]; + int[] var5 = var3[1]; + int[] var6 = var3[2]; + int var7 = (Class101.anInt1427 == this.anInt3283 ?var2:this.anInt3283 * var2 / Class101.anInt1427) * this.anInt3280; + int var8; + int var9; + if(Class113.anInt1559 == this.anInt3280) { + for(var8 = 0; var8 < Class113.anInt1559; ++var8) { + var9 = this.anIntArray3284[var7++]; + var6[var8] = Unsorted.bitwiseAnd(255, var9) << 4; + var5[var8] = Unsorted.bitwiseAnd(65280, var9) >> 4; + var4[var8] = Unsorted.bitwiseAnd(var9, 16711680) >> 12; + } + } else { + for(var8 = 0; Class113.anInt1559 > var8; ++var8) { + var9 = this.anInt3280 * var8 / Class113.anInt1559; + int var10 = this.anIntArray3284[var7 - -var9]; + var6[var8] = Unsorted.bitwiseAnd(var10 << 4, 4080); + var5[var8] = Unsorted.bitwiseAnd(var10, 65280) >> 4; + var4[var8] = Unsorted.bitwiseAnd(var10 >> 12, 4080); + } + } + } + + return var3; + } catch (RuntimeException var11) { + throw ClientErrorException.clientError(var11, "nh.T(" + -1 + ',' + var2 + ')'); + } + } + + final void decode(int var1, DataBuffer var2) { + try { + if(var1 == 0) { + this.anInt3278 = var2.readUnsignedShort(); + } + + if(!true) { + method276(115, 107, 22, 20, null, 87L, false); + } + + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "nh.A(" + var1 + ',' + (var2 != null?"{...}":"null") + ',' + true + ')'); + } + } + + final void method161(byte var1) { + try { + super.method161(var1); + this.anIntArray3284 = null; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "nh.BA(" + var1 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/TextureOperation4.java b/Client/src/main/java/org/runite/client/TextureOperation4.java new file mode 100644 index 000000000..6fa8fdcb0 --- /dev/null +++ b/Client/src/main/java/org/runite/client/TextureOperation4.java @@ -0,0 +1,249 @@ +package org.runite.client; +import org.rs09.client.util.ArrayUtils; + +import java.util.Random; + +final class TextureOperation4 extends TextureOperation { + + private int anInt3219 = 204; + private int anInt3223; + private int anInt3224 = 81; + private int[][] anIntArrayArray3225; + static CacheIndex configurationsIndex_3227; + private int anInt3229 = 1024; + private int[] anIntArray3230; + private int anInt3231 = 0; + private static RSString aString_3232 = RSString.parse("pt"); + private int anInt3233 = 8; + private int anInt3234 = 1024; + private int anInt3235; + private int anInt3236 = 409; + private static final RSString aString_3237 = RSString.parse("en"); + private static RSString aString_3239 = RSString.parse("fr"); + private int[][] anIntArrayArray3240; + private int anInt3242 = 4; + private static final RSString aString_3243 = RSString.parse("de"); + static RSString[] aStringArray3238 = new RSString[]{aString_3237, aString_3243, aString_3239, aString_3232}; + + + final void postDecode() { + try { + this.method263(); + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "mc.P(" + ')'); + } + } + + static void method260(int var1, int var2) { + try { + + InterfaceWidget var3 = InterfaceWidget.getWidget(7, var1); + var3.flagUpdate(); + var3.anInt3598 = var2; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "mc.O(" + -16207 + ',' + var1 + ',' + var2 + ')'); + } + } + + final void decode(int var1, DataBuffer var2) { + try { + if(0 == var1) { + this.anInt3242 = var2.readUnsignedByte(); + } else if (var1 == 1) { + this.anInt3233 = var2.readUnsignedByte(); + } else if (var1 == 2) { + this.anInt3236 = var2.readUnsignedShort(); + } else if (var1 == 3) { + this.anInt3219 = var2.readUnsignedShort(); + } else if (4 == var1) { + this.anInt3234 = var2.readUnsignedShort(); + } else if (var1 == 5) { + this.anInt3231 = var2.readUnsignedShort(); + } else if (var1 == 6) { + this.anInt3224 = var2.readUnsignedShort(); + } else if (var1 == 7) { + this.anInt3229 = var2.readUnsignedShort(); + } + + if(!true) { + aString_3239 = null; + } + + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "mc.A(" + var1 + ',' + (var2 != null?"{...}":"null") + ',' + true + ')'); + } + } + + static void method262(int var0, int var2, int var3, int var4, int var5, int var6, int var7) { + try { + int var8 = var5 + var2; + int var10 = var5 + var7; + + int var12; + for(var12 = var2; var12 < var8; ++var12) { + TextureOperation18.method282(Class38.anIntArrayArray663[var12], var7, 125, var6, var0); + } + + int var9 = -var5 + var3; + int var11 = -var5 + var6; + + for(var12 = var3; var12 > var9; --var12) { + TextureOperation18.method282(Class38.anIntArrayArray663[var12], var7, 103, var6, var0); + } + + for(var12 = var8; var12 <= var9; ++var12) { + int[] var13 = Class38.anIntArrayArray663[var12]; + TextureOperation18.method282(var13, var7, 117, var10, var0); + TextureOperation18.method282(var13, var10, 111, var11, var4); + TextureOperation18.method282(var13, var11, -75, var6, var0); + } + + } catch (RuntimeException var14) { + throw ClientErrorException.clientError(var14, "mc.Q(" + var0 + ',' + 119 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + var5 + ',' + var6 + ',' + var7 + ')'); + } + } + + private void method263() { + try { + Random var2 = new Random(this.anInt3233); + int anInt3222 = 4096 / this.anInt3233; + this.anInt3223 = this.anInt3224 / 2; + this.anIntArrayArray3225 = new int[this.anInt3233][1 + this.anInt3242]; + int var4 = anInt3222 / 2; + this.anIntArray3230 = new int[this.anInt3233 - -1]; + this.anIntArrayArray3240 = new int[this.anInt3233][this.anInt3242]; + this.anInt3235 = 4096 / this.anInt3242; + this.anIntArray3230[0] = 0; + int var3 = this.anInt3235 / 2; + + for(int var5 = 0; this.anInt3233 > var5; ++var5) { + int var6; + int var7; + if(var5 > 0) { + var6 = anInt3222; + var7 = (TextureOperation.method1603((byte)59, 4096, var2) + -2048) * this.anInt3219 >> 12; + var6 += var7 * var4 >> 12; + this.anIntArray3230[var5] = this.anIntArray3230[var5 - 1] - -var6; + } + + this.anIntArrayArray3225[var5][0] = 0; + + for(var6 = 0; this.anInt3242 > var6; ++var6) { + if(0 < var6) { + var7 = this.anInt3235; + int var8 = (-2048 + TextureOperation.method1603((byte)-1, 4096, var2)) * this.anInt3236 >> 12; + var7 += var3 * var8 >> 12; + this.anIntArrayArray3225[var5][var6] = this.anIntArrayArray3225[var5][var6 + -1] - -var7; + } + + this.anIntArrayArray3240[var5][var6] = this.anInt3229 <= 0 ?4096:4096 + -TextureOperation.method1603((byte)33, this.anInt3229, var2); + } + + this.anIntArrayArray3225[var5][this.anInt3242] = 4096; + } + + this.anIntArray3230[this.anInt3233] = 4096; + } catch (RuntimeException var9) { + throw ClientErrorException.clientError(var9, "mc.E(" + 0 + ')'); + } + } + + static void method264(byte var0) { + try { + TextureOperation12.outgoingBuffer.putOpcode(184); + + for(Class3_Sub31 var1 = TextureOperation23.aHashTable_3208.first(); null != var1; var1 = TextureOperation23.aHashTable_3208.next()) { + if(var1.anInt2603 == 0) { + TextureOperation19.method254(true, var1); + } + } + + if(var0 < 83) { + aString_3232 = null; + } + + if(null != TextureOperation27.aClass11_3087) { + Class20.method909(TextureOperation27.aClass11_3087); + TextureOperation27.aClass11_3087 = null; + } + + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "mc.C(" + var0 + ')'); + } + } + + final int[] method154(int var1, byte var2) { + try { + int[] var3 = this.aClass114_2382.method1709(var1); + int var4; + if(this.aClass114_2382.aBoolean1580) { + int var7 = 0; + + int var9; + for(var9 = Class163_Sub3.anIntArray2999[var1] + this.anInt3231; var9 < 0; var9 += 4096) { + } + + while(4096 < var9) { + var9 -= 4096; + } + + while(this.anInt3233 > var7 && this.anIntArray3230[var7] <= var9) { + ++var7; + } + + int var11 = var7 + -1; + int var15 = this.anIntArray3230[var7]; + boolean var12 = 0 == (var7 & 1); + int var16 = this.anIntArray3230[var7 - 1]; + if(var16 - -this.anInt3223 < var9 && var9 < var15 - this.anInt3223) { + for(var4 = 0; var4 < Class113.anInt1559; ++var4) { + int var6 = 0; + int var5 = !var12?-this.anInt3234:this.anInt3234; + + int var8; + for(var8 = Class102.anIntArray2125[var4] - -(this.anInt3235 * var5 >> 12); var8 < 0; var8 += 4096) { + } + + while(var8 > 4096) { + var8 -= 4096; + } + + while(var6 < this.anInt3242 && this.anIntArrayArray3225[var11][var6] <= var8) { + ++var6; + } + + int var14 = this.anIntArrayArray3225[var11][var6]; + int var10 = var6 - 1; + int var13 = this.anIntArrayArray3225[var11][var10]; + if(var8 > var13 - -this.anInt3223 && var8 < -this.anInt3223 + var14) { + var3[var4] = this.anIntArrayArray3240[var11][var10]; + } else { + var3[var4] = 0; + } + } + } else { + ArrayUtils.fill(var3, 0, Class113.anInt1559, 0); + } + } + + return var3; + } catch (RuntimeException var17) { + throw ClientErrorException.clientError(var17, "mc.D(" + var1 + ',' + var2 + ')'); + } + } + + public TextureOperation4() { + super(0, true); + } + + static void method265(int var1) { + try { + InterfaceWidget var2 = InterfaceWidget.getWidget(8, var1); + var2.a(); + + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "mc.B(" + (byte) -42 + ',' + var1 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/TextureOperation5.java b/Client/src/main/java/org/runite/client/TextureOperation5.java new file mode 100644 index 000000000..ffcfeda0a --- /dev/null +++ b/Client/src/main/java/org/runite/client/TextureOperation5.java @@ -0,0 +1,163 @@ +package org.runite.client; + +import java.util.Objects; + +final class TextureOperation5 extends TextureOperation { + + private int anInt3294 = 1; + static RSString aString_3295; + private int anInt3297 = 1; + + + final int[] method154(int var1, byte var2) { + try { + int[] var4 = this.aClass114_2382.method1709(var1); + if(this.aClass114_2382.aBoolean1580) { + int var5 = 1 + this.anInt3297 + this.anInt3297; + int var6 = 65536 / var5; + int var7 = 1 + this.anInt3294 + this.anInt3294; + int var8 = 65536 / var7; + int[][] var9 = new int[var5][]; + + int var10; + for(var10 = -this.anInt3297 + var1; var1 - -this.anInt3297 >= var10; ++var10) { + int[] var11 = this.method152(0, var10 & Class3_Sub20.anInt2487); + int[] var12 = new int[Class113.anInt1559]; + int var13 = 0; + + int var14; + for(var14 = -this.anInt3294; var14 <= this.anInt3294; ++var14) { + var13 += var11[var14 & RenderAnimationDefinition.anInt396]; + } + + for(var14 = 0; var14 < Class113.anInt1559; var13 += var11[RenderAnimationDefinition.anInt396 & this.anInt3294 + var14]) { + var12[var14] = var8 * var13 >> 16; + var13 -= var11[RenderAnimationDefinition.anInt396 & var14 - this.anInt3294]; + ++var14; + } + + var9[this.anInt3297 + var10 + -var1] = var12; + } + + for(var10 = 0; var10 < Class113.anInt1559; ++var10) { + int var16 = 0; + + for(int var17 = 0; var5 > var17; ++var17) { + var16 += var9[var17][var10]; + } + + var4[var10] = var6 * var16 >> 16; + } + } + + return var4; + } catch (RuntimeException var15) { + throw ClientErrorException.clientError(var15, "nm.D(" + var1 + ',' + var2 + ')'); + } + } + + public TextureOperation5() { + super(1, false); + } + + final int[][] method166(int var2) { + try { + + int[][] var3 = this.aClass97_2376.method1594((byte)90, var2); + if(this.aClass97_2376.aBoolean1379) { + int var6 = this.anInt3294 - -this.anInt3294 - -1; + int var7 = 65536 / var6; + int var4 = this.anInt3297 + (this.anInt3297 - -1); + int var5 = 65536 / var4; + int[][][] var8 = new int[var4][][]; + + int var12; + int var13; + int var14; + for(int var9 = var2 - this.anInt3297; this.anInt3297 + var2 >= var9; ++var9) { + int[][] var10 = this.method162(Class3_Sub20.anInt2487 & var9, 0, (byte)-59); + var12 = 0; + var13 = 0; + int[][] var11 = new int[3][Class113.anInt1559]; + var14 = 0; + int[] var15 = Objects.requireNonNull(var10)[0]; + int[] var16 = var10[1]; + int[] var17 = var10[2]; + + for(int var18 = -this.anInt3294; var18 <= this.anInt3294; ++var18) { + int var19 = var18 & RenderAnimationDefinition.anInt396; + var13 += var16[var19]; + var12 += var15[var19]; + var14 += var17[var19]; + } + + int[] var20 = var11[2]; + int[] var31 = var11[0]; + int[] var30 = var11[1]; + + int var22; + for(int var21 = 0; Class113.anInt1559 > var21; var12 += var15[var22]) { + var31[var21] = var12 * var7 >> 16; + var30[var21] = var13 * var7 >> 16; + var20[var21] = var7 * var14 >> 16; + var22 = RenderAnimationDefinition.anInt396 & var21 + -this.anInt3294; + var14 -= var17[var22]; + ++var21; + var12 -= var15[var22]; + var13 -= var16[var22]; + var22 = this.anInt3294 + var21 & RenderAnimationDefinition.anInt396; + var14 += var17[var22]; + var13 += var16[var22]; + } + + var8[-var2 + this.anInt3297 + var9] = var11; + } + + int[] var24 = var3[0]; + int[] var26 = var3[1]; + int[] var25 = var3[2]; + + for(var12 = 0; var12 < Class113.anInt1559; ++var12) { + var14 = 0; + var13 = 0; + int var27 = 0; + + for(int var28 = 0; var28 < var4; ++var28) { + int[][] var29 = var8[var28]; + var27 += var29[2][var12]; + var14 += var29[1][var12]; + var13 += var29[0][var12]; + } + + var24[var12] = var5 * var13 >> 16; + var26[var12] = var5 * var14 >> 16; + var25[var12] = var27 * var5 >> 16; + } + } + + return var3; + } catch (RuntimeException var23) { + throw ClientErrorException.clientError(var23, "nm.T(" + -1 + ',' + var2 + ')'); + } + } + + final void decode(int var1, DataBuffer var2) { + try { + if(var1 == 0) { + this.anInt3294 = var2.readUnsignedByte(); + } else if(var1 == 1) { + this.anInt3297 = var2.readUnsignedByte(); + } else if (2 == var1) { + this.aBoolean2375 = var2.readUnsignedByte() == 1; + } + + if(!true) { + this.anInt3294 = 60; + } + + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "nm.A(" + var1 + ',' + (var2 != null?"{...}":"null") + ',' + true + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/TextureOperation6.java b/Client/src/main/java/org/runite/client/TextureOperation6.java new file mode 100644 index 000000000..34b2ee21a --- /dev/null +++ b/Client/src/main/java/org/runite/client/TextureOperation6.java @@ -0,0 +1,241 @@ +package org.runite.client; + +import org.rs09.client.data.HashTable; + +import java.util.Objects; + +final class TextureOperation6 extends TextureOperation { + + //static RSString aString_3042 = RSString.createRSString(""); + private int anInt3043 = 0; + private int anInt3046 = 4096; + + + final void decode(int var1, DataBuffer var2) { + try { + if(0 == var1) { + this.anInt3043 = var2.readUnsignedShort(); + } else if(1 == var1) { + this.anInt3046 = var2.readUnsignedShort(); + } else if (2 == var1) { + this.aBoolean2375 = var2.readUnsignedByte() == 1; + } + + //aString_3042 = (RSString)null; + + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "aj.A(" + var1 + ',' + (var2 != null?"{...}":"null") + ',' + true + ')'); + } + } + + final int[][] method166(int var2) { + try { + if(-1 != -1) { + method175(2, -7, -114, -24, 102, -125); + } + + int[][] var3 = this.aClass97_2376.method1594((byte)-119, var2); + if(this.aClass97_2376.aBoolean1379) { + int[][] var4 = this.method162(var2, 0, (byte)-124); + int[] var6 = Objects.requireNonNull(var4)[1]; + int[] var7 = var4[2]; + int[] var5 = var4[0]; + int[] var8 = var3[0]; + int[] var9 = var3[1]; + int[] var10 = var3[2]; + + for(int var11 = 0; var11 < Class113.anInt1559; ++var11) { + int var13 = var6[var11]; + int var12 = var5[var11]; + int var14 = var7[var11]; + if(var12 >= this.anInt3043) { + if(var12 > this.anInt3046) { + var8[var11] = this.anInt3046; + } else { + var8[var11] = var12; + } + } else { + var8[var11] = this.anInt3043; + } + + if(this.anInt3043 > var13) { + var9[var11] = this.anInt3043; + } else if(var13 <= this.anInt3046) { + var9[var11] = var13; + } else { + var9[var11] = this.anInt3046; + } + + if(var14 >= this.anInt3043) { + if(this.anInt3046 >= var14) { + var10[var11] = var14; + } else { + var10[var11] = this.anInt3046; + } + } else { + var10[var11] = this.anInt3043; + } + } + } + + return var3; + } catch (RuntimeException var15) { + throw ClientErrorException.clientError(var15, "aj.T(" + -1 + ',' + var2 + ')'); + } + } + + static int method173(byte var0, int var1, RSInterface var2) { + try { + if(var0 < 4) { + method176(-50); + } + + return !Client.method44(var2).method92(var1, (byte)-109) && null == var2.anObjectArray314?-1:(null != var2.anIntArray249 && var2.anIntArray249.length > var1 ?var2.anIntArray249[var1]:-1); + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "aj.F(" + var0 + ',' + var1 + ',' + (var2 != null?"{...}":"null") + ')'); + } + } + + static void method175(int var0, int var1, int var2, int var4, int var5, int var6) { + try { + MouseListeningClass.method2091(var5); + int var8 = var5 - var1; + int var7 = 0; + if(var8 < 0) { + var8 = 0; + } + + int var10 = -var5; + int var9 = var5; + int var11 = var8; + int var12 = -var8; + int var14 = -1; + int[] var15 = Class38.anIntArrayArray663[var2]; + int var17 = var6 - -var8; + int var13 = -1; + int var16 = -var8 + var6; + TextureOperation18.method282(var15, -var5 + var6, -40, var16, var0); + TextureOperation18.method282(var15, var16, -51, var17, var4); + TextureOperation18.method282(var15, var17, -41, var6 - -var5, var0); + + while(var9 > var7) { + var14 += 2; + var12 += var14; + if(var12 >= 0 && var11 >= 1) { + GameObject.anIntArray1838[var11] = var7; + --var11; + var12 -= var11 << 1; + } + + ++var7; + var13 += 2; + var10 += var13; + int[] var19; + int[] var18; + int var21; + int var20; + int var23; + int var22; + int var24; + if(var10 >= 0) { + --var9; + var10 -= var9 << 1; + if(var9 < var8) { + var18 = Class38.anIntArrayArray663[var9 + var2]; + var19 = Class38.anIntArrayArray663[-var9 + var2]; + var22 = -var7 + var6; + var21 = var7 + var6; + var20 = GameObject.anIntArray1838[var9]; + var24 = -var20 + var6; + var23 = var20 + var6; + TextureOperation18.method282(var18, var22, -113, var24, var0); + TextureOperation18.method282(var18, var24, 95, var23, var4); + TextureOperation18.method282(var18, var23, 117, var21, var0); + TextureOperation18.method282(var19, var22, 113, var24, var0); + TextureOperation18.method282(var19, var24, -76, var23, var4); + TextureOperation18.method282(var19, var23, -97, var21, var0); + } else { + var18 = Class38.anIntArrayArray663[var2 + var9]; + var19 = Class38.anIntArrayArray663[var2 - var9]; + var20 = var7 + var6; + var21 = var6 + -var7; + TextureOperation18.method282(var18, var21, 113, var20, var0); + TextureOperation18.method282(var19, var21, -100, var20, var0); + } + } + + var18 = Class38.anIntArrayArray663[var2 - -var7]; + var19 = Class38.anIntArrayArray663[var2 - var7]; + var20 = var9 + var6; + var21 = -var9 + var6; + if(var8 <= var7) { + TextureOperation18.method282(var18, var21, 104, var20, var0); + TextureOperation18.method282(var19, var21, -127, var20, var0); + } else { + var22 = var7 <= var11?var11:GameObject.anIntArray1838[var7]; + var23 = var22 + var6; + var24 = var6 + -var22; + TextureOperation18.method282(var18, var21, -94, var24, var0); + TextureOperation18.method282(var18, var24, 115, var23, var4); + TextureOperation18.method282(var18, var23, 110, var20, var0); + TextureOperation18.method282(var19, var21, -114, var24, var0); + TextureOperation18.method282(var19, var24, -79, var23, var4); + TextureOperation18.method282(var19, var23, 120, var20, var0); + } + } + + } catch (RuntimeException var25) { + throw ClientErrorException.clientError(var25, "aj.C(" + var0 + ',' + var1 + ',' + var2 + ',' + true + ',' + var4 + ',' + var5 + ',' + var6 + ')'); + } + } + + public TextureOperation6() { + super(1, false); + } + + static void method176(int var0) { + try { + int var1 = 0; + if(var0 >= -111) { + method176(40); + } + + for(; var1 < Class95.anInt1344; ++var1) { + Class29 var2 = Class145.method2076(var1); + if(null != var2 && var2.anInt556 == 0) { + Class57.varpArray[var1] = 0; + ItemDefinition.ram[var1] = 0; + } + } + + AtmosphereParser.aHashTable_3679 = new HashTable(16); + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "aj.O(" + var0 + ')'); + } + } + + final int[] method154(int var1, byte var2) { + try { + int[] var3 = this.aClass114_2382.method1709(var1); + if(this.aClass114_2382.aBoolean1580) { + int[] var5 = this.method152(0, var1); + + for(int var6 = 0; var6 < Class113.anInt1559; ++var6) { + int var7 = var5[var6]; + if(this.anInt3043 > var7) { + var3[var6] = this.anInt3043; + } else if(this.anInt3046 >= var7) { + var3[var6] = var7; + } else { + var3[var6] = this.anInt3046; + } + } + } + + return var3; + } catch (RuntimeException var8) { + throw ClientErrorException.clientError(var8, "aj.D(" + var1 + ',' + var2 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/TextureOperation7.java b/Client/src/main/java/org/runite/client/TextureOperation7.java new file mode 100644 index 000000000..1d9a64233 --- /dev/null +++ b/Client/src/main/java/org/runite/client/TextureOperation7.java @@ -0,0 +1,605 @@ +package org.runite.client; + +import org.rs09.client.data.HashTable; + +import java.util.Objects; + +final class TextureOperation7 extends TextureOperation { + + static RSString[] aStringArray3341 = new RSString[100]; + static int anInt3342; + private int anInt3343 = 6; + + + final int[] method154(int var1, byte var2) { + try { + int[] var3 = this.aClass114_2382.method1709(var1); + int var4; + if(this.aClass114_2382.aBoolean1580) { + int[] var6 = this.method152(0, var1); + int[] var7 = this.method152(1, var1); + int var8 = this.anInt3343; + if(var8 == 1) { + for(var8 = 0; var8 < Class113.anInt1559; ++var8) { + var3[var8] = var7[var8] + var6[var8]; + } + } else if(var8 == 2) { + for(var8 = 0; var8 < Class113.anInt1559; ++var8) { + var3[var8] = -var7[var8] + var6[var8]; + } + } else if (var8 == 3) { + for (var8 = 0; Class113.anInt1559 > var8; ++var8) { + var3[var8] = var7[var8] * var6[var8] >> 12; + } + } else { + int var5; + if (var8 == 4) { + for (var8 = 0; Class113.anInt1559 > var8; ++var8) { + var5 = var7[var8]; + var3[var8] = var5 != 0 ? (var6[var8] << 12) / var5 : 4096; + } + } else if (var8 == 5) { + for (var8 = 0; var8 < Class113.anInt1559; ++var8) { + var3[var8] = 4096 - ((-var6[var8] + 4096) * (-var7[var8] + 4096) >> 12); + } + } else if (var8 == 6) { + for (var8 = 0; var8 < Class113.anInt1559; ++var8) { + var5 = var7[var8]; + var3[var8] = var5 >= 2048 ? -((-var6[var8] + 4096) * (4096 + -var5) >> 11) + 4096 : var5 * var6[var8] >> 11; + } + } else if (var8 == 7) { + for (var8 = 0; Class113.anInt1559 > var8; ++var8) { + var4 = var6[var8]; + var3[var8] = var4 == 4096 ? 4096 : (var7[var8] << 12) / (4096 - var4); + } + } else if (var8 == 8) { + for (var8 = 0; var8 < Class113.anInt1559; ++var8) { + var4 = var6[var8]; + var3[var8] = var4 != 0 ? 4096 - (-var7[var8] + 4096 << 12) / var4 : 0; + } + } else if (var8 == 9) { + for (var8 = 0; Class113.anInt1559 > var8; ++var8) { + var5 = var7[var8]; + var4 = var6[var8]; + var3[var8] = var5 > var4 ? var4 : var5; + } + } else if (10 == var8) { + for (var8 = 0; var8 < Class113.anInt1559; ++var8) { + var5 = var7[var8]; + var4 = var6[var8]; + var3[var8] = var5 < var4 ? var4 : var5; + } + } else if (var8 == 11) { + for (var8 = 0; var8 < Class113.anInt1559; ++var8) { + var4 = var6[var8]; + var5 = var7[var8]; + var3[var8] = var4 > var5 ? var4 + -var5 : var5 - var4; + } + } else if (var8 == 12) { + for (var8 = 0; Class113.anInt1559 > var8; ++var8) { + var4 = var6[var8]; + var5 = var7[var8]; + var3[var8] = var5 + (var4 - (var4 * var5 >> 11)); + } + } + } + } + + return var3; + } catch (RuntimeException var9) { + throw ClientErrorException.clientError(var9, "pi.D(" + var1 + ',' + var2 + ')'); + } + } + + final int[][] method166(int var2) { + try { + int[][] var3 = this.aClass97_2376.method1594((byte)-125, var2); + if(this.aClass97_2376.aBoolean1379) { + int[][] var10 = this.method162(var2, 0, (byte)-87); + int[][] var11 = this.method162(var2, 1, (byte)-73); + int[] var12 = var3[0]; + int[] var13 = var3[1]; + int[] var14 = var3[2]; + int[] var15 = Objects.requireNonNull(var10)[0]; + int[] var16 = var10[1]; + int[] var17 = var10[2]; + int[] var18 = Objects.requireNonNull(var11)[0]; + int[] var19 = var11[1]; + int[] var20 = var11[2]; + int var21 = this.anInt3343; + if(var21 == 1) { + for(var21 = 0; var21 < Class113.anInt1559; ++var21) { + var12[var21] = var18[var21] + var15[var21]; + var13[var21] = var19[var21] + var16[var21]; + var14[var21] = var17[var21] - -var20[var21]; + } + } else if(var21 == 2) { + for(var21 = 0; Class113.anInt1559 > var21; ++var21) { + var12[var21] = var15[var21] - var18[var21]; + var13[var21] = -var19[var21] + var16[var21]; + var14[var21] = -var20[var21] + var17[var21]; + } + } else if(3 == var21) { + for(var21 = 0; Class113.anInt1559 > var21; ++var21) { + var12[var21] = var18[var21] * var15[var21] >> 12; + var13[var21] = var16[var21] * var19[var21] >> 12; + var14[var21] = var20[var21] * var17[var21] >> 12; + } + } else { + int var7; + int var8; + int var9; + if(var21 == 4) { + for(var21 = 0; Class113.anInt1559 > var21; ++var21) { + var9 = var20[var21]; + var8 = var19[var21]; + var7 = var18[var21]; + var12[var21] = var7 == 0 ?4096:(var15[var21] << 12) / var7; + var13[var21] = var8 != 0 ?(var16[var21] << 12) / var8:4096; + var14[var21] = var9 != 0?(var17[var21] << 12) / var9:4096; + } + } else if(var21 == 5) { + for(var21 = 0; Class113.anInt1559 > var21; ++var21) { + var12[var21] = 4096 + -((4096 - var18[var21]) * (4096 - var15[var21]) >> 12); + var13[var21] = 4096 - ((-var19[var21] + 4096) * (-var16[var21] + 4096) >> 12); + var14[var21] = 4096 + -((-var20[var21] + 4096) * (4096 + -var17[var21]) >> 12); + } + } else if(6 == var21) { + for(var21 = 0; var21 < Class113.anInt1559; ++var21) { + var9 = var20[var21]; + var7 = var18[var21]; + var8 = var19[var21]; + var12[var21] = var7 >= 2048 ?-((-var7 + 4096) * (-var15[var21] + 4096) >> 11) + 4096:var7 * var15[var21] >> 11; + var13[var21] = 2048 > var8?var8 * var16[var21] >> 11:4096 - ((4096 + -var8) * (-var16[var21] + 4096) >> 11); + var14[var21] = 2048 <= var9?4096 + -((4096 + -var9) * (-var17[var21] + 4096) >> 11):var17[var21] * var9 >> 11; + } + } else { + int var4; + int var5; + int var6; + if(var21 == 7) { + for(var21 = 0; Class113.anInt1559 > var21; ++var21) { + var6 = var17[var21]; + var4 = var15[var21]; + var5 = var16[var21]; + var12[var21] = var4 == 4096 ?4096:(var18[var21] << 12) / (-var4 + 4096); + var13[var21] = var5 == 4096 ?4096:(var19[var21] << 12) / (4096 + -var5); + var14[var21] = var6 == 4096 ?4096:(var20[var21] << 12) / (4096 - var6); + } + } else if(var21 == 8) { + for(var21 = 0; Class113.anInt1559 > var21; ++var21) { + var4 = var15[var21]; + var5 = var16[var21]; + var6 = var17[var21]; + var12[var21] = var4 == 0?0:-((-var18[var21] + 4096 << 12) / var4) + 4096; + var13[var21] = var5 == 0 ?0:-((-var19[var21] + 4096 << 12) / var5) + 4096; + var14[var21] = 0 == var6?0:4096 - (4096 - var20[var21] << 12) / var6; + } + } else if(var21 == 9) { + for(var21 = 0; Class113.anInt1559 > var21; ++var21) { + var6 = var17[var21]; + var9 = var20[var21]; + var8 = var19[var21]; + var5 = var16[var21]; + var7 = var18[var21]; + var4 = var15[var21]; + var12[var21] = var7 <= var4 ?var7:var4; + var13[var21] = var5 >= var8?var8:var5; + var14[var21] = var6 < var9?var6:var9; + } + } else if (10 == var21) { + for (var21 = 0; var21 < Class113.anInt1559; ++var21) { + var9 = var20[var21]; + var6 = var17[var21]; + var8 = var19[var21]; + var4 = var15[var21]; + var5 = var16[var21]; + var7 = var18[var21]; + var12[var21] = var7 < var4 ? var4 : var7; + var13[var21] = var5 > var8 ? var5 : var8; + var14[var21] = var6 > var9 ? var6 : var9; + } + } else if (var21 == 11) { + for (var21 = 0; Class113.anInt1559 > var21; ++var21) { + var8 = var19[var21]; + var7 = var18[var21]; + var5 = var16[var21]; + var4 = var15[var21]; + var6 = var17[var21]; + var9 = var20[var21]; + var12[var21] = var7 < var4 ? var4 + -var7 : -var4 + var7; + var13[var21] = var5 > var8 ? -var8 + var5 : -var5 + var8; + var14[var21] = var9 < var6 ? var6 + -var9 : -var6 + var9; + } + } else if (var21 == 12) { + for (var21 = 0; Class113.anInt1559 > var21; ++var21) { + var4 = var15[var21]; + var9 = var20[var21]; + var7 = var18[var21]; + var8 = var19[var21]; + var6 = var17[var21]; + var5 = var16[var21]; + var12[var21] = -(var7 * var4 >> 11) + var7 + var4; + var13[var21] = var8 + var5 + -(var5 * var8 >> 11); + var14[var21] = var9 + (var6 - (var6 * var9 >> 11)); + } + } + } + } + } + + return var3; + } catch (RuntimeException var22) { + throw ClientErrorException.clientError(var22, "pi.T(" + -1 + ',' + var2 + ')'); + } + } + + static void method297(long var0, int var2) { + try { + if(var0 != 0L) { + for(int var3 = 0; Class8.anInt104 > var3; ++var3) { + if(var0 == Class50.aLongArray826[var3]) { + --Class8.anInt104; + + for(int var4 = var3; var4 < Class8.anInt104; ++var4) { + Class70.aStringArray1046[var4] = Class70.aStringArray1046[var4 - -1]; + Unsorted.anIntArray882[var4] = Unsorted.anIntArray882[var4 + 1]; + Unsorted.aStringArray2566[var4] = Unsorted.aStringArray2566[1 + var4]; + Class50.aLongArray826[var4] = Class50.aLongArray826[1 + var4]; + Class57.anIntArray904[var4] = Class57.anIntArray904[var4 - -1]; + Unsorted.aBooleanArray73[var4] = Unsorted.aBooleanArray73[1 + var4]; + } + + Class110.anInt1472 = PacketParser.anInt3213; + TextureOperation12.outgoingBuffer.putOpcode(57); + TextureOperation12.outgoingBuffer.writeLong(var0); + break; + } + } + + if(var2 != 1) { + aStringArray3341 = null; + } + + } + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "pi.C(" + var0 + ',' + var2 + ')'); + } + } + + static Class3_Sub11[] method298(byte[][][] var0, byte[][] var1, byte[][] var2, int[][] var3, float[][] var4, int[][] var5, byte[][] var6, byte[][] var7, float[][] var8, int var9, float[][] var10, int[][] var11, int[][] var12, int[][] var13) { + try { + int[][] var15 = new int[105][105]; + + int var17; + for(int var16 = 1; var16 <= 103; ++var16) { + for(var17 = 1; var17 <= 103; ++var17) { + byte var18 = var2[var16][var17]; + if(var18 == 0) { + var18 = var2[var16 + -1][var17]; + } + + if(var18 == 0) { + var18 = var2[var16][-1 + var17]; + } + + if(var18 == 0) { + var18 = var2[-1 + var16][var17 - 1]; + } + + if(0 != var18) { + FloorUnderlayDefinition var19 = FloorUnderlayDefinition.method629(-1 + (255 & var18)); + var15[var16][var17] = (1 + var19.anInt1412 << 16) - -var19.anInt1414; + } + } + } + + HashTable var52 = new HashTable(128); + + int var21; + int var20; + int var22; + int var56; + for(var17 = 1; var17 <= 102; ++var17) { + for(var56 = 1; 102 >= var56; ++var56) { + if(0 != var2[var17][var56]) { + int[] var53; + if(0 == var6[var17][var56]) { + var53 = Class134.anIntArrayArray1763[0]; + } else { + var53 = Class25.anIntArrayArray499[var1[var17][var56]]; + if(var53.length == 0) { + continue; + } + } + + var20 = 0; + var21 = var15[var17][var56]; + var22 = var15[var17 - -1][var56]; + if(null != var5) { + var20 = var5[var17][var56] & 16777215; + } + + long var27 = (long)var20 | (long)var22 << 32; + int var24 = var15[var17][var56 + 1]; + int var23 = var15[var17 + 1][var56 - -1]; + long var31 = (long)var24 << 32 | (long)var20; + int var33 = var53.length / 2; + long var25 = (long)var20 | (long)var21 << 32; + Class3_Sub11 var34 = (Class3_Sub11)var52.get(var25); + if(null == var34) { + var34 = new Class3_Sub11(-1 + (var21 >> 16), (float)(65535 & var21), false, null != var13, var20); + var52.put(var25, var34); + } + + ++var34.anInt2344; + var34.anInt2342 += var33; + if(var25 != var27) { + var34 = (Class3_Sub11)var52.get(var27); + if(var34 == null) { + var34 = new Class3_Sub11((var22 >> 16) - 1, (float)(65535 & var22), false, null != var13, var20); + var52.put(var27, var34); + } + + ++var34.anInt2344; + var34.anInt2342 += var33; + } + + long var29 = (long)var23 << 32 | (long)var20; + if(var25 != var29 && var27 != var29) { + var34 = (Class3_Sub11)var52.get(var29); + if(var34 == null) { + var34 = new Class3_Sub11((var23 >> 16) + -1, (float)(65535 & var23), false, null != var13, var20); + var52.put(var29, var34); + } + + var34.anInt2342 += var33; + ++var34.anInt2344; + } + + if(var25 != var31 && var31 != var27 && var31 != var29) { + var34 = (Class3_Sub11)var52.get(var31); + if(null == var34) { + var34 = new Class3_Sub11((var24 >> 16) - 1, (float)(var24 & 65535), false, null != var13, var20); + var52.put(var31, var34); + } + + ++var34.anInt2344; + var34.anInt2342 += var33; + } + } + } + } + + if(4096 != 4096) { + method297(-10L, 48); + } + + Class3_Sub11 var54; + for(var54 = (Class3_Sub11)var52.first(); var54 != null; var54 = (Class3_Sub11)var52.next()) { + var54.method145(); + } + + for(var17 = 1; var17 <= 102; ++var17) { + for(var56 = 1; var56 <= 102; ++var56) { + byte var57 = var2[var17][var56]; + if(0 != var57) { + if((8 & var0[var9][var17][var56]) == 0) { + if((2 & var0[1][var17][var56]) == 2 && 0 < var9) { + var20 = var9 - 1; + } else { + var20 = var9; + } + } else { + var20 = 0; + } + + var21 = 0; + boolean[] var60 = null; + var22 = 128; + if(null != var5) { + var22 = var5[var17][var56] >>> 24 << 3; + var21 = 16777215 & var5[var17][var56]; + } + + int[] var58; + int var63; + int var62; + byte var61; + int var69; + int var64; + if(var6[var17][var56] == 0) { + byte var26 = 0; + var64 = var26 + (var2[var17 - 1][-1 + var56] != var57 ?-1:1); + byte var65 = 0; + var58 = Class134.anIntArrayArray1763[0]; + var62 = var65 + (var57 == var2[1 + var17][var56 + -1]?1:-1); + if(var2[var17][var56 + -1] == var57) { + ++var62; + ++var64; + } else { + --var64; + --var62; + } + + byte var28 = 0; + var63 = var28 + (var57 == var2[1 + var17][1 + var56]?1:-1); + byte var68 = 0; + if(var2[1 + var17][var56] == var57) { + ++var63; + ++var62; + } else { + --var62; + --var63; + } + + var69 = var68 + (var2[var17 - 1][1 + var56] == var57 ?1:-1); + if(var2[var17][1 + var56] == var57) { + ++var69; + ++var63; + } else { + --var63; + --var69; + } + + if(var2[-1 + var17][var56] == var57) { + ++var69; + ++var64; + } else { + --var69; + --var64; + } + + int var30 = var64 + -var63; + int var66 = -var69 + var62; + if(var66 < 0) { + var66 = -var66; + } + + if(var30 < 0) { + var30 = -var30; + } + + var61 = (byte)(var30 >= var66 ?0:1); + var7[var17][var56] = var61; + } else { + var58 = Class25.anIntArrayArray499[var1[var17][var56]]; + var60 = TextureOperation30.aBooleanArrayArray3118[var1[var17][var56]]; + var61 = var7[var17][var56]; + if(var58.length == 0) { + continue; + } + } + + var64 = var15[var17][var56]; + var62 = var15[var17 - -1][var56]; + var63 = var15[var17 - -1][var56 - -1]; + long var67 = (long)var64 << 32 | (long)var21; + long var32 = (long)var62 << 32 | (long)var21; + long var70 = (long)var63 << 32 | (long)var21; + int var38 = var11[var17][var56]; + var69 = var15[var17][var56 - -1]; + int var40 = var11[var17 - -1][var56 - -1]; + int var39 = var11[1 + var17][var56]; + long var36 = (long)var21 | (long)var69 << 32; + int var41 = var11[var17][var56 + 1]; + int var42 = var3[var17][var56]; + int var43 = var3[var17 + 1][var56]; + int var44 = var3[var17 + 1][var56 - -1]; + int var45 = var3[var17][1 + var56]; + int var47 = -1 + (var62 >> 16); + int var46 = (var64 >> 16) - 1; + int var48 = (var63 >> 16) - 1; + Class3_Sub11 var50 = (Class3_Sub11)var52.get(var67); + Class25.method955(var13, var64 <= var64, TextureOperation34.method190(var46, var38, (byte)-92, var42), var50, var58, var56, var20, var17, var64 <= var63, var8, var69 >= var64, 2, var4, var22, TextureOperation34.method190(var46, var41, (byte)-80, var45), TextureOperation34.method190(var46, var40, (byte)-103, var44), var62 >= var64, var12, var10, var61, TextureOperation34.method190(var46, var39, (byte)-118, var43), var60); + int var49 = (var69 >> 16) - 1; + if(var32 != var67) { + var50 = (Class3_Sub11)var52.get(var32); + Class25.method955(var13, var62 <= var64, TextureOperation34.method190(var47, var38, (byte)88, var42), var50, var58, var56, var20, var17, var63 >= var62, var8, var62 <= var69, 2, var4, var22, TextureOperation34.method190(var47, var41, (byte)-82, var45), TextureOperation34.method190(var47, var40, (byte)-113, var44), var62 <= var62, var12, var10, var61, TextureOperation34.method190(var47, var39, (byte)113, var43), var60); + } + + if(var70 != var67 && var32 != var70) { + var50 = (Class3_Sub11)var52.get(var70); + Class25.method955(var13, var63 <= var64, TextureOperation34.method190(var48, var38, (byte)59, var42), var50, var58, var56, var20, var17, var63 <= var63, var8, var63 <= var69, 4096 ^ 4098, var4, var22, TextureOperation34.method190(var48, var41, (byte)54, var45), TextureOperation34.method190(var48, var40, (byte)-87, var44), var63 <= var62, var12, var10, var61, TextureOperation34.method190(var48, var39, (byte)-77, var43), var60); + } + + if(var67 != var36 && var32 != var36 && var36 != var70) { + var50 = (Class3_Sub11)var52.get(var36); + Class25.method955(var13, var64 >= var69, TextureOperation34.method190(var49, var38, (byte)-118, var42), var50, var58, var56, var20, var17, var69 <= var63, var8, var69 <= var69, 4096 ^ 4098, var4, var22, TextureOperation34.method190(var49, var41, (byte)-96, var45), TextureOperation34.method190(var49, var40, (byte)115, var44), var69 <= var62, var12, var10, var61, TextureOperation34.method190(var49, var39, (byte)58, var43), var60); + } + } + } + } + + for(var54 = (Class3_Sub11)var52.first(); var54 != null; var54 = (Class3_Sub11)var52.next()) { + if(var54.anInt2343 == 0) { + var54.unlink(); + } else { + var54.method148(); + } + } + + var17 = var52.size(); + Class3_Sub11[] var59 = new Class3_Sub11[var17]; + var52.values(var59); + long[] var55 = new long[var17]; + + for(var20 = 0; var17 > var20; ++var20) { + var55[var20] = var59[var20].linkableKey; + } + + PacketParser.method824(var55, var59, -86); + return var59; + } catch (RuntimeException var51) { + throw ClientErrorException.clientError(var51, "pi.E(" + (var0 != null?"{...}":"null") + ',' + (var1 != null?"{...}":"null") + ',' + (var2 != null?"{...}":"null") + ',' + (var3 != null?"{...}":"null") + ',' + (var4 != null?"{...}":"null") + ',' + (var5 != null?"{...}":"null") + ',' + (var6 != null?"{...}":"null") + ',' + (var7 != null?"{...}":"null") + ',' + (var8 != null?"{...}":"null") + ',' + var9 + ',' + (var10 != null?"{...}":"null") + ',' + (var11 != null?"{...}":"null") + ',' + (var12 != null?"{...}":"null") + ',' + (var13 != null?"{...}":"null") + ',' + 4096 + ')'); + } + } + + public TextureOperation7() { + super(2, false); + } + + static void method299(int var0, int var1, int var2) { + try { + if(var0 <= 92) { + method297(-6L, -85); + } + + int var3 = var1; + if(var1 > 25) { + var3 = 25; + } + + --var1; + int var4 = TextureOperation38.anIntArray3456[var1]; + int var5 = Class45.anIntArray729[var1]; + if(0 == var2) { + TextureOperation12.outgoingBuffer.putOpcode(215); + TextureOperation12.outgoingBuffer.writeByte(var3 - -var3 + 3); + } + + if(var2 == 1) { + TextureOperation12.outgoingBuffer.putOpcode(39); + TextureOperation12.outgoingBuffer.writeByte(3 + var3 - (-var3 - 14)); + } + + if(var2 == 2) { + TextureOperation12.outgoingBuffer.putOpcode(77); + TextureOperation12.outgoingBuffer.writeByte(var3 + var3 - -3); + } + + TextureOperation12.outgoingBuffer.writeByte128(ObjectDefinition.aBooleanArray1490[82]?1:0); + TextureOperation12.outgoingBuffer.writeShort(Class131.x1716 + var4); + TextureOperation12.outgoingBuffer.putShortA(Texture.y1152 + var5); + Class45.anInt733 = Class45.anIntArray729[0]; + Class65.anInt987 = TextureOperation38.anIntArray3456[0]; + + for(int var6 = 1; var3 > var6; ++var6) { + --var1; + TextureOperation12.outgoingBuffer.writeByte128(-var4 + TextureOperation38.anIntArray3456[var1]); + TextureOperation12.outgoingBuffer.write128Byte(Class45.anIntArray729[var1] + -var5); + } + + } catch (RuntimeException var7) { + throw ClientErrorException.clientError(var7, "pi.O(" + var0 + ',' + var1 + ',' + var2 + ')'); + } + } + + final void decode(int var1, DataBuffer var2) { + try { + if(var1 == 0) { + this.anInt3343 = var2.readUnsignedByte(); + } else if(var1 == 1) { + this.aBoolean2375 = var2.readUnsignedByte() == 1; + } + + if(!true) { + TextCore.aString_3339 = null; + } + + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "pi.A(" + var1 + ',' + (var2 != null?"{...}":"null") + ',' + true + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/TextureOperation8.java b/Client/src/main/java/org/runite/client/TextureOperation8.java new file mode 100644 index 000000000..ecefb2e42 --- /dev/null +++ b/Client/src/main/java/org/runite/client/TextureOperation8.java @@ -0,0 +1,244 @@ +package org.runite.client; + +final class TextureOperation8 extends TextureOperation { + + private int[] anIntArray3457; + static AbstractSprite[] aAbstractSpriteArray3458; + static int anInt3460 = 0; + private int anInt3462 = 0; + static int anInt3463; + static int anInt3464 = 0; + private final short[] aShortArray3465 = new short[257]; + static int renderDistanceTiles; + private int[] anIntArray3467; + static boolean[][] aBooleanArrayArray3468 = new boolean[][]{{true, true, true}, {false, false}, {false, true}, {true, false}, {false, true, true}, {true, false, true}, {false, true, false}, {true, false, false}}; + private int[][] anIntArrayArray3469; + + + private void method352() { + try { + int var2 = this.anInt3462; + int var3; + int var4; + int[] var5; + int[] var6; + int var7; + int var8; + int var9; + int var10; + if(2 == var2) { + for(var2 = 0; var2 < 257; ++var2) { + var4 = var2 << 4; + + for(var3 = 1; this.anIntArrayArray3469.length - 1 > var3 && this.anIntArrayArray3469[var3][0] <= var4; ++var3) { + } + + var6 = this.anIntArrayArray3469[var3]; + var5 = this.anIntArrayArray3469[var3 + -1]; + var7 = this.method356(var3 + -2)[1]; + var9 = var6[1]; + var8 = var5[1]; + int var15 = var9 - var7; + var10 = this.method356(var3 + 1)[1]; + int var11 = (var4 + -var5[0] << 12) / (var6[0] + -var5[0]); + int var13 = var10 + -var9 + -var7 + var8; + int var12 = var11 * var11 >> 12; + int var14 = var7 + (-var8 - var13); + int var19 = var15 * var11 >> 12; + int var18 = var12 * var14 >> 12; + int var17 = var12 * (var11 * var13 >> 12) >> 12; + int var20 = var8 + var18 + var17 + var19; + if(var20 <= -32768) { + var20 = -32767; + } + + if(var20 >= 32768) { + var20 = 32767; + } + + this.aShortArray3465[var2] = (short)var20; + } + } else if (var2 == 1) { + for (var2 = 0; var2 < 257; ++var2) { + var4 = var2 << 4; + + for (var3 = 1; -1 + this.anIntArrayArray3469.length > var3 && var4 >= this.anIntArrayArray3469[var3][0]; ++var3) { + } + + var5 = this.anIntArrayArray3469[-1 + var3]; + var6 = this.anIntArrayArray3469[var3]; + var7 = (var4 + -var5[0] << 12) / (-var5[0] + var6[0]); + var8 = 4096 + -Class75_Sub2.anIntArray2639[(8189 & var7) >> 5] >> 1; + var9 = -var8 + 4096; + var10 = var8 * var6[1] + var5[1] * var9 >> 12; + if (var10 <= -32768) { + var10 = -32767; + } + + if (32768 <= var10) { + var10 = 32767; + } + + this.aShortArray3465[var2] = (short) var10; + } + } else { + for (var2 = 0; var2 < 257; ++var2) { + var4 = var2 << 4; + + for (var3 = 1; -1 + this.anIntArrayArray3469.length > var3 && var4 >= this.anIntArrayArray3469[var3][0]; ++var3) { + } + + var6 = this.anIntArrayArray3469[var3]; + var5 = this.anIntArrayArray3469[-1 + var3]; + var7 = (-var5[0] + var4 << 12) / (-var5[0] + var6[0]); + var8 = -var7 + 4096; + var9 = var6[1] * var7 + var8 * var5[1] >> 12; + if (-32768 >= var9) { + var9 = -32767; + } + + if (32768 <= var9) { + var9 = 32767; + } + + this.aShortArray3465[var2] = (short) var9; + } + } + + } catch (RuntimeException var21) { + throw ClientErrorException.clientError(var21, "wi.E(" + -11 + ')'); + } + } + + final int[] method154(int var1, byte var2) { + try { + int[] var8 = this.aClass114_2382.method1709(var1); + if(this.aClass114_2382.aBoolean1580) { + int[] var5 = this.method152(0, var1); + + for(int var6 = 0; var6 < Class113.anInt1559; ++var6) { + int var4 = var5[var6] >> 4; + if(0 > var4) { + var4 = 0; + } + + if(256 < var4) { + var4 = 256; + } + + var8[var6] = this.aShortArray3465[var4]; + } + } + + return var8; + } catch (RuntimeException var7) { + throw ClientErrorException.clientError(var7, "wi.D(" + var1 + ',' + var2 + ')'); + } + } + + public TextureOperation8() { + super(1, true); + } + + static boolean method353(int var0, int var1) { + try { + if(var1 > var0) { + return false; + } else { + int var2 = TextureOperation27.aShortArray3095[var0]; + if(var2 >= 2000) { + var2 -= 2000; + } + + return var2 == 1003; + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "wi.Q(" + var0 + ',' + var1 + ')'); + } + } + + static void method354(int var1) { + try { + TextureOperation13.anInt3362 = -1; + + Scenery.anInt2251 = var1; + Class3_Sub5.method117(); + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "wi.B(" + -126 + ',' + var1 + ')'); + } + } + + final void postDecode() { + try { + if(null == this.anIntArrayArray3469) { + this.anIntArrayArray3469 = new int[][]{{0, 0}, {4096, 4096}}; + } + + if(this.anIntArrayArray3469.length < 2) { + throw new RuntimeException("Curve operation requires at least two markers"); + } else { + if(2 == this.anInt3462) { + this.method355(); + } + + Class8.method844((byte)-9); + this.method352(); + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "wi.P(" + ')'); + } + } + + private void method355() { + try { + int[] var2 = this.anIntArrayArray3469[0]; + + int[] var3 = this.anIntArrayArray3469[1]; + int[] var4 = this.anIntArrayArray3469[this.anIntArrayArray3469.length + -2]; + int[] var5 = this.anIntArrayArray3469[-1 + this.anIntArrayArray3469.length]; + this.anIntArray3457 = new int[]{var2[0] - (var3[0] + -var2[0]), -var3[1] + var2[1] + var2[1]}; + this.anIntArray3467 = new int[]{var4[0] + var4[0] + -var5[0], -var5[1] - -var4[1] + var4[1]}; + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "wi.C(" + true + ')'); + } + } + + final void decode(int var1, DataBuffer var2) { + try { + if(0 == var1) { + this.anInt3462 = var2.readUnsignedByte(); + this.anIntArrayArray3469 = new int[var2.readUnsignedByte()][2]; + + for(int var4 = 0; var4 < this.anIntArrayArray3469.length; ++var4) { + this.anIntArrayArray3469[var4][0] = var2.readUnsignedShort(); + this.anIntArrayArray3469[var4][1] = var2.readUnsignedShort(); + } + } + + if(!true) { + this.anInt3462 = -6; + } + + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "wi.A(" + var1 + ',' + (var2 != null?"{...}":"null") + ',' + true + ')'); + } + } + + private int[] method356(int var2) { + try { + if(var2 >= 0) { + if(this.anIntArrayArray3469.length <= var2) { + return this.anIntArray3467; + } else { + + return this.anIntArrayArray3469[var2]; + } + } else { + return this.anIntArray3457; + } + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "wi.F(" + (byte) -106 + ',' + var2 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/TextureOperation9.java b/Client/src/main/java/org/runite/client/TextureOperation9.java new file mode 100644 index 000000000..c4d4ec484 --- /dev/null +++ b/Client/src/main/java/org/runite/client/TextureOperation9.java @@ -0,0 +1,193 @@ +package org.runite.client; + +import org.rs09.client.util.ArrayUtils; + +import java.util.Objects; + +public final class TextureOperation9 extends TextureOperation { + + private boolean aBoolean3100 = true; + public static int anInt3102 = 0; + static int anInt3103; + private boolean aBoolean3104 = true; + static float aFloat3105; + + + final void decode(int var1, DataBuffer var2) { + try { + if(!true) { + method207(18, false, -19, 102L); + } + + if(var1 == 0) { + this.aBoolean3100 = var2.readUnsignedByte() == 1; + } else if(var1 == 1) { + this.aBoolean3104 = var2.readUnsignedByte() == 1; + } else if(var1 == 2) { + this.aBoolean2375 = var2.readUnsignedByte() == 1; + } + + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "ej.A(" + var1 + ',' + (var2 != null?"{...}":"null") + ',' + true + ')'); + } + } + + final int[][] method166(int var2) { + try { + if(-1 != -1) { + method207(-98, true, 95, 79L); + } + + int[][] var3 = this.aClass97_2376.method1594((byte)54, var2); + if(this.aClass97_2376.aBoolean1379) { + int[][] var4 = this.method162(!this.aBoolean3104?var2:-var2 + Class3_Sub20.anInt2487, 0, (byte)-105); + int[] var5 = Objects.requireNonNull(var4)[0]; + int[] var7 = var4[2]; + int[] var6 = var4[1]; + int[] var9 = var3[1]; + int[] var10 = var3[2]; + int[] var8 = var3[0]; + int var11; + if(this.aBoolean3100) { + for(var11 = 0; Class113.anInt1559 > var11; ++var11) { + var8[var11] = var5[RenderAnimationDefinition.anInt396 + -var11]; + var9[var11] = var6[-var11 + RenderAnimationDefinition.anInt396]; + var10[var11] = var7[RenderAnimationDefinition.anInt396 - var11]; + } + } else { + for(var11 = 0; var11 < Class113.anInt1559; ++var11) { + var8[var11] = var5[var11]; + var9[var11] = var6[var11]; + var10[var11] = var7[var11]; + } + } + } + + return var3; + } catch (RuntimeException var12) { + throw ClientErrorException.clientError(var12, "ej.T(" + -1 + ',' + var2 + ')'); + } + } + + static void method203(int var0) { + try { + //int var1 = 15 / ((-11 - var0) / 63); + if(Unsorted.anInt3660 == 2) { + if(TextureOperation8.anInt3460 == NPCDefinition.anInt1297 && Class38_Sub1.anInt2612 == Unsorted.anInt2099) { + Unsorted.anInt3660 = 0; + if(ClientCommands.shiftClickEnabled && ObjectDefinition.aBooleanArray1490[81] && Unsorted.menuOptionCount > 2) { + BufferedDataStream.method806(Unsorted.menuOptionCount + -2); + } else { + BufferedDataStream.method806(Unsorted.menuOptionCount + -1); + } + } + } else if(NPCDefinition.anInt1297 == Class163_Sub1.anInt2993 && Class38_Sub1.anInt2614 == Class38_Sub1.anInt2612) { + Unsorted.anInt3660 = 0; + if(ClientCommands.shiftClickEnabled && ObjectDefinition.aBooleanArray1490[81] && Unsorted.menuOptionCount > 2) { + BufferedDataStream.method806(Unsorted.menuOptionCount - 2); + } else { + BufferedDataStream.method806(Unsorted.menuOptionCount - 1); + } + } else { + Unsorted.anInt2099 = Class38_Sub1.anInt2614; + Unsorted.anInt3660 = 2; + TextureOperation8.anInt3460 = Class163_Sub1.anInt2993; + } + + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "ej.B(" + var0 + ')'); + } + } + + static void method204() { + try { + //Client Resize. + TextureOperation12.outgoingBuffer.putOpcode(243); + TextureOperation12.outgoingBuffer.writeByte(Class83.getWindowType()); + TextureOperation12.outgoingBuffer.writeShort(Class23.canvasWidth); + TextureOperation12.outgoingBuffer.writeShort(GroundItem.canvasHeight); + TextureOperation12.outgoingBuffer.writeByte(Unsorted.anInt3671); + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "ej.C(" + -3 + ')'); + } + } + + public TextureOperation9() { + super(1, false); + } + + final int[] method154(int var1, byte var2) { + try { + int[] var4 = this.aClass114_2382.method1709(var1); + if(this.aClass114_2382.aBoolean1580) { + int[] var5 = this.method152(0, !this.aBoolean3104?var1:Class3_Sub20.anInt2487 + -var1); + if(this.aBoolean3100) { + for(int var6 = 0; var6 < Class113.anInt1559; ++var6) { + var4[var6] = var5[-var6 + RenderAnimationDefinition.anInt396]; + } + } else { + ArrayUtils.arraycopy(var5, 0, var4, 0, Class113.anInt1559); + } + } + + return var4; + } catch (RuntimeException var7) { + throw ClientErrorException.clientError(var7, "ej.D(" + var1 + ',' + var2 + ')'); + } + } + + static RSString method207(int var0, boolean var1, int var2, long var3) { + try { + if(var0 >= 2 && var0 <= 36) { + if(var2 <= 71) { + aFloat3105 = 1.3008908F; + } + + long var6 = var3 / (long)var0; + + int var5; + for(var5 = 1; var6 != 0L; var6 /= var0) { + ++var5; + } + + int var8 = var5; + if(0L > var3 || var1) { + var8 = var5 + 1; + } + + byte[] var9 = new byte[var8]; + if(var3 >= 0L) { + if(var1) { + var9[0] = 43; + } + } else { + var9[0] = 45; + } + + for(int var10 = 0; var10 < var5; ++var10) { + int var11 = (int)(var3 % (long)var0); + var3 /= var0; + if(var11 < 0) { + var11 = -var11; + } + + if(var11 > 9) { + var11 += 39; + } + + var9[-1 + -var10 + var8] = (byte)(var11 + 48); + } + + RSString var13 = new RSString(); + var13.buffer = var9; + var13.length = var8; + return var13; + } else { + throw new IllegalArgumentException("Invalid radix:" + var0); + } + } catch (RuntimeException var12) { + throw ClientErrorException.clientError(var12, "ej.F(" + var0 + ',' + var1 + ',' + var2 + ',' + var3 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/TileData.java b/Client/src/main/java/org/runite/client/TileData.java new file mode 100644 index 000000000..100216f4d --- /dev/null +++ b/Client/src/main/java/org/runite/client/TileData.java @@ -0,0 +1,53 @@ +package org.runite.client; + +import org.rs09.client.Linkable; +import org.rs09.client.data.HashTable; + +final class TileData extends Linkable { + static TileData[][][] aTileDataArrayArrayArray2638; + static int anInt2218 = -1; + static HashTable aHashTable_2220 = new HashTable(32); + Class25[] aClass25Array2221 = new Class25[5]; + boolean aBoolean2222; + int anInt2223; + boolean aBoolean2225; + Class35 aClass35_2226; + int anInt2227; + int anInt2228 = 0; + int anInt2229; + Class12 aClass12_2230; + int anInt2231; + int anInt2232; + Class19 aClass19_2233; + Class70 aClass70_2234; + TileData aClass3_Sub2_2235; + boolean aBoolean2236; + int[] anIntArray2237 = new int[5]; + int anInt2238; + int anInt2239; + Class126 aClass126_2240; + int anInt2241; + int anInt2244; + Class72 aClass72_2245; + + TileData(int var1, int var2, int var3) { + try { + this.anInt2231 = var3; + this.anInt2238 = this.anInt2244 = var1; + this.anInt2239 = var2; + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "bj.(" + var1 + ',' + var2 + ',' + var3 + ')'); + } + } + + static void method103() { + try { + Client.aHashTable_2194.clear(); + Class81.aClass13_1139.clear(); + Class126.aClass13_1666.clear(); + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "bj.B(" + (byte) 24 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/TimeUtils.java b/Client/src/main/java/org/runite/client/TimeUtils.java new file mode 100644 index 000000000..7fa8ae674 --- /dev/null +++ b/Client/src/main/java/org/runite/client/TimeUtils.java @@ -0,0 +1,35 @@ +package org.runite.client; + +public final class TimeUtils { + + private static long correction; + private static long previous; + + public static synchronized long time() { + long time = System.currentTimeMillis(); + if (time < previous) { + correction += previous + -time; + } + + previous = time; + return correction + time; + } + + public static void sleep(long millis) { + if (0L < millis) { + if (0L == millis % 10L) { + sleepWrapped(millis + -1L); + sleepWrapped(1L); + } else { + sleepWrapped(millis); + } + } + } + + private static void sleepWrapped(long millis) { + try { + Thread.sleep(millis); + } catch (InterruptedException var4) { + } + } +} diff --git a/Client/src/main/java/org/runite/client/Translation.java b/Client/src/main/java/org/runite/client/Translation.java new file mode 100644 index 000000000..b4c54e75a --- /dev/null +++ b/Client/src/main/java/org/runite/client/Translation.java @@ -0,0 +1,204 @@ +package org.runite.client; + +public class Translation { + + //English + + + //Class 9 englishToFrench + static void englishToFrench() { + try { + TextCore.LoadedConfig = RSString.parse("Fichiers config charg-Bs"); + TextCore.LoadingConfig = RSString.parse("Chargement des fichiers config )2 "); + TextCore.TextColorPurple = RSString.parse("violet:"); + TextCore.HasContinue = RSString.parse("Continuer"); + TextCore.HasSkill = RSString.parse("comp-Btence "); + TextCore.HasExamine = RSString.parse("Examiner"); + TextCore.LoadingWordPack = RSString.parse("Chargement du module texte )2 "); + TextCore.TextGlowTwo = RSString.parse("brillant2:"); + TextCore.MillionM = RSString.parse("M"); + TextCore.TextFlashTwo = RSString.parse("clignotant2:"); + TextCore.TextWaveTwo = RSString.parse("ondulation2:"); + TextCore.HasAttack = RSString.parse("Attaquer"); + TextCore.HasFriendsListFull = RSString.parse("Votre liste d(Wamis est pleine (X100 noms maximum pour la version gratuite et 200 pour les abonn-Bs(Y)3"); + TextCore.HasIgnoreAlready = RSString.parse(" est d-Bj-9 dans votre liste noire)3"); + TextCore.LoadedWLD = RSString.parse("Liste des serveurs charg-Be"); + TextCore.LoadedInputHandler = RSString.parse("Gestionnaire de saisie charg-B"); + TextCore.TextColorRed = RSString.parse("rouge:"); + TextCore.TextWave = RSString.parse("ondulation:"); + TextCore.LoadingConnecting = RSString.parse("Connexion au serveur de mise -9 jour en cours"); + TextCore.HasFriendsAlready = RSString.parse(" est d-Bj-9 dans votre liste d(Wamis)3"); + TextCore.TextShake = RSString.parse("tremblement:"); + TextCore.LoadingTitleScreen = RSString.parse("Chargement de l(W-Bcran)2titre )2 "); + TextCore.HasMoreOptions = RSString.parse(" autres options"); + TextCore.OpenedTitleScreen = RSString.parse(",Mcran)2titre ouvert"); + TextCore.Started3DLibrary = RSString.parse("Librairie 3D d-Bmarr-Be"); + TextCore.LoadingPleaseWait = RSString.parse("Veuillez patienter)3)3)3"); + TextCore.HasFaceHere = RSString.parse("Regarder dans cette direction"); + TextCore.MillionM = RSString.parse("M"); + TextCore.HasLoggedIn = RSString.parse(" s(West connect-B)3"); + TextCore.TextColorCyan = RSString.parse("cyan:"); + TextCore.LoadingFonts = RSString.parse("Chargement des polices )2 "); + TextCore.TextFlashThree = RSString.parse("clignotant3:"); + TextCore.HasOK = RSString.parse("OK"); + TextCore.HasOnOwnIgnoreList = RSString.parse("Vous ne pouvez pas ajouter votre nom -9 votre liste noire)3"); + TextCore.LoadedTextures = RSString.parse("Textures charg-Bes"); + TextCore.TextGlowThree = RSString.parse("brillant3:"); + TextCore.Starting3DLibrary = RSString.parse("D-Bmarrage de la librairie 3D"); + TextCore.CheckingForUpdates = RSString.parse("V-Brification des mises -9 jour )2 "); + TextCore.AttemptingReestablish = RSString.parse("Veuillez patienter )2 tentative de r-Btablissement)3"); + TextCore.TextSlide = RSString.parse("glissement:"); + TextCore.AllocatingMemory = RSString.parse("M-Bmoire en cours d(Wattribution"); + TextCore.PreparedSoundEngine = RSString.parse("Moteur son pr-Bpar-B"); + TextCore.AllocatedMemory = RSString.parse("M-Bmoire attribu-Be"); + TextCore.HasDrop = RSString.parse("Poser"); + TextCore.Spacer = RSString.parse(" "); + TextCore.HasWalkHere = RSString.parse("Atteindre"); + TextCore.HasUnableFind = RSString.parse("Impossible de trouver "); + TextCore.LoadedTitleScreen = RSString.parse(",Mcran)2titre charg-B"); + TextCore.HasFriendsToIgnore = RSString.parse(" de votre liste d(Wamis)3"); + TextCore.LoadingSprites = RSString.parse("Chargement des sprites )2 "); + TextCore.MembersObject = RSString.parse("Objet d(Wabonn-Bs"); + TextCore.LoadedUpdateList = RSString.parse("Liste des mises -9 jour charg-Be"); + TextCore.LoadedFonts = RSString.parse("Polices charg-Bes"); + TextCore.HasTake = RSString.parse("Prendre"); + TextCore.HasRating = RSString.parse("classement "); + TextCore.HasDiscard = RSString.parse("Jeter"); + TextCore.HasClose = RSString.parse("Fermer"); + TextCore.HasWishToTrade = RSString.parse("voudrait faire un -Bchange avec vous)3"); + TextCore.TextColorYellow = RSString.parse("jaune:"); + TextCore.HasIgnoreToFriends = RSString.parse(" de votre liste noire)3"); + TextCore.TextGlowOne = RSString.parse("brillant1:"); + TextCore.HasChooseOptions = RSString.parse("Choisir une option"); + TextCore.LoadingGeneral = RSString.parse("Chargement en cours)3)3)3"); + TextCore.TextColorWhite = RSString.parse("blanc:"); + TextCore.LoadedSprites = RSString.parse("Sprites charg-Bs"); + TextCore.LoadingInterfaces = RSString.parse("Chargement des interfaces )2 "); + TextCore.HasOnOwnFriendsList = RSString.parse("Vous ne pouvez pas ajouter votre nom -9 votre liste d(Wamis)3"); + TextCore.HasPleaseRemove = RSString.parse("Veuillez commencer par supprimer "); + TextCore.HasCancel = RSString.parse("Annuler"); + TextCore.LoadedWordPack = RSString.parse("Module texte charg-B"); + TextCore.CreatedWorld = RSString.parse("Monde de jeu cr-B-B"); + TextCore.ThousandK = RSString.parse("K"); + TextCore.HasLevel = RSString.parse("niveau "); + TextCore.ThousandK = RSString.parse("K"); + TextCore.HasSelect = RSString.parse("S-Blectionner"); + TextCore.ConxLost = RSString.parse("Connexion perdue)3"); + TextCore.HasIgnoreListFull = RSString.parse("Votre liste noire est pleine (X100 noms maximum(Y)3"); + TextCore.LoadedInterfaces = RSString.parse("Interfaces charg-Bes"); + TextCore.RSLoadingPleaseWait = RSString.parse("Chargement de RuneScape en cours )2 veuillez patienter)3)3)3"); + TextCore.TextFlashOne = RSString.parse("clignotant1:"); + TextCore.HasPleaseRemove = RSString.parse("Veuillez commencer par supprimer "); + TextCore.TextColorGreen = RSString.parse("vert:"); + TextCore.HasHidden = RSString.parse("Cach-B"); + TextCore.LoadingPleaseWait2 = RSString.parse("Chargement en cours)3 Veuillez patienter)3"); + TextCore.ConxUpdateServer = RSString.parse("Connect-B au serveur de mise -9 jour"); + TextCore.HasLoggedOut = RSString.parse(" s(West d-Bconnect-B)3"); + TextCore.LoadingTextures = RSString.parse("Chargement des textures )2 "); + TextCore.HasUse = RSString.parse("Utiliser"); + TextCore.HasScroll = RSString.parse("d-Broulement:"); + TextCore.LoadingWLD = RSString.parse("Chargement de la liste des serveurs"); + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "bb.C(" + (byte) 121 + ')'); + } + } + + + //Class3_Sub28_Sub11 English to German + static void englishToGerman() { + try { + TextCore.TextWave = RSString.parse("welle:"); + TextCore.HasMoreOptions = RSString.parse(" weitere Optionen"); + TextCore.HasPleaseRemove = RSString.parse("Bitte entfernen Sie "); + TextCore.LoadedConfig = RSString.parse("Konfig geladen)3"); + TextCore.LoadedFonts = RSString.parse("Schrifts-=tze geladen)3"); + TextCore.HasFriendsToIgnore = RSString.parse(" zuerst von Ihrer Freunde)2Liste(Q"); + TextCore.HasWishToTrade = RSString.parse("m-Ochte mit Ihnen handeln)3"); + TextCore.TextFlashThree = RSString.parse("blinken3:"); + TextCore.HasFriendsListFull = RSString.parse("Ihre Freunde)2Liste ist voll(Q Maximale Eintr-=ge: Mitglieder 200)4freie Spieler 100"); + TextCore.HasOnOwnIgnoreList = RSString.parse("Sie k-Onnen sich selbst nicht selbst auf Ihre Ignorieren)2Liste setzen(Q"); + TextCore.CheckingForUpdates = RSString.parse("Suche nach Updates )2 "); + TextCore.TextColorWhite = RSString.parse("weiss:"); + TextCore.HasDrop = RSString.parse("Fallen lassen"); + TextCore.HasLoggedIn = RSString.parse(" loggt sich ein)3"); + TextCore.HasRating = RSString.parse("Kampfstufe: "); + TextCore.ThousandK = RSString.parse("T"); + TextCore.LoadingWLD = RSString.parse("Lade Liste der Welten"); + TextCore.Spacer = RSString.parse(": "); + TextCore.TextColorGreen = RSString.parse("gr-Un:"); + TextCore.TextGlowOne = RSString.parse("leuchten1:"); + TextCore.LoadedInputHandler = RSString.parse("Eingabeprozedur geladen)3"); + TextCore.TextColorRed = RSString.parse("rot:"); + TextCore.HasOK = RSString.parse("Okay"); + TextCore.RSLoadingPleaseWait = RSString.parse("RuneScape wird geladen )2 bitte warten)3)3)3"); + TextCore.TextColorPurple = RSString.parse("lila:"); + TextCore.CreatedWorld = RSString.parse("Spielwelt erstellt)3"); + TextCore.HasPleaseRemove = RSString.parse("Bitte entfernen Sie "); + TextCore.LoadingFonts = RSString.parse("Lade Schrifts-=tze )2 "); + TextCore.HasCancel = RSString.parse("Abbrechen"); + TextCore.TextShake = RSString.parse("sch-Utteln:"); + TextCore.HasIgnoreListFull = RSString.parse("Ihre Ignorieren)2Liste ist voll)1 Sie k-Onnen nur 100 Spieler darauf eintragen)3"); + TextCore.HasContinue = RSString.parse("Weiter"); + TextCore.LoadingPleaseWait2 = RSString.parse("Ladevorgang )2 bitte warten Sie)3"); + TextCore.HasAttack = RSString.parse("Angreifen"); + TextCore.LoadedSprites = RSString.parse("Sprites geladen)3"); + TextCore.LoadingTextures = RSString.parse("Lade Texturen )2 "); + TextCore.TextColorCyan = RSString.parse("blaugr-Un:"); + TextCore.HasExamine = RSString.parse("Untersuchen"); + TextCore.ConxLost = RSString.parse("Verbindung abgebrochen)3"); + TextCore.HasSkill = RSString.parse("Fertigkeit: "); + TextCore.MembersObject = RSString.parse("Gegenstand f-Ur Mitglieder"); + TextCore.LoadedWLD = RSString.parse("Liste der Welten geladen"); + TextCore.HasIgnoreToFriends = RSString.parse(" zuerst von Ihrer Ignorieren)2Liste(Q"); + TextCore.LoadingPleaseWait = RSString.parse("Bitte warten Sie)3)3)3"); + TextCore.HasLoggedOut = RSString.parse(" loggt sich aus)3"); + TextCore.Starting3DLibrary = RSString.parse("Starte 3D)2Softwarebibliothek)3"); + TextCore.ThousandK = RSString.parse("T"); + TextCore.HasSelect = RSString.parse("Ausw-=hlen"); + TextCore.TextGlowTwo = RSString.parse("leuchten2:"); + TextCore.HasTake = RSString.parse("Nehmen"); + TextCore.HasUnableFind = RSString.parse("Spieler kann nicht gefunden werden: "); + TextCore.LoadingTitleScreen = RSString.parse("Lade Titelbild )2 "); + TextCore.LoadingConnecting = RSString.parse("Verbindung mit Update)2Server)3)3)3"); + TextCore.HasWalkHere = RSString.parse("Hierhin gehen"); + TextCore.HasFaceHere = RSString.parse("Hierhin drehen"); + TextCore.LoadingSprites = RSString.parse("Lade Sprites )2 "); + TextCore.MillionM = RSString.parse("M"); + TextCore.HasChooseOptions = RSString.parse("W-=hlen Sie eine Option"); + TextCore.Started3DLibrary = RSString.parse("3D)2Softwarebibliothek gestartet)3"); + TextCore.HasUse = RSString.parse("Benutzen"); + TextCore.AllocatingMemory = RSString.parse("Speicher wird zugewiesen)3"); + TextCore.AttemptingReestablish = RSString.parse("Bitte warten Sie )2 es wird versucht)1 die Verbindung wiederherzustellen)3"); + TextCore.LoadedInterfaces = RSString.parse("Benutzeroberfl-=che geladen)3"); + TextCore.TextSlide = RSString.parse("gleiten:"); + TextCore.LoadedUpdateList = RSString.parse("Update)2Liste geladen)3"); + TextCore.TextColorYellow = RSString.parse("gelb:"); + TextCore.TextFlashTwo = RSString.parse("blinken2:"); + TextCore.TextFlashOne = RSString.parse("blinken1:"); + TextCore.LoadingGeneral = RSString.parse("Lade)3)3)3"); + TextCore.MillionM = RSString.parse("M"); + TextCore.LoadingConfig = RSString.parse("Lade Konfiguration )2 "); + TextCore.AllocatedMemory = RSString.parse("Zugewiesener Speicher)3"); + TextCore.LoadedTitleScreen = RSString.parse("Titelbild geladen)3"); + TextCore.TextGlowThree = RSString.parse("leuchten3:"); + TextCore.HasOnOwnFriendsList = RSString.parse("Sie k-Onnen sich selbst nicht auf Ihre Freunde)2Liste setzen(Q"); + TextCore.LoadedWordPack = RSString.parse("Wordpack geladen)3"); + TextCore.HasIgnoreAlready = RSString.parse(" steht bereits auf Ihrer Ignorieren)2Liste(Q"); + TextCore.ConxUpdateServer = RSString.parse("Verbindung zum Update)2Server hergestellt)3"); + TextCore.HasDiscard = RSString.parse("Ablegen"); + TextCore.HasHidden = RSString.parse("Versteckt"); + TextCore.TextWaveTwo = RSString.parse("welle2:"); + TextCore.LoadingInterfaces = RSString.parse("Lade Benutzeroberfl-=che )2 "); + TextCore.HasFriendsAlready = RSString.parse(" steht bereits auf Ihrer Freunde)2Liste(Q"); + TextCore.OpenedTitleScreen = RSString.parse("Titelbild ge-Offnet)3"); + TextCore.HasClose = RSString.parse("Schlie-8en"); + TextCore.HasScroll = RSString.parse("scrollen:"); + TextCore.LoadedTextures = RSString.parse("Texturen geladen)3"); + TextCore.LoadingWordPack = RSString.parse("Lade Wordpack )2 "); + TextCore.PreparedSoundEngine = RSString.parse("Musik)2Engine vorbereitet)3"); + TextCore.HasLevel = RSString.parse("Stufe: "); + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "lk.A(" + ')'); + } + } +} diff --git a/Client/src/main/java/org/runite/client/Unsorted.java b/Client/src/main/java/org/runite/client/Unsorted.java new file mode 100644 index 000000000..f7a56039b --- /dev/null +++ b/Client/src/main/java/org/runite/client/Unsorted.java @@ -0,0 +1,5266 @@ +package org.runite.client; + +import org.rs09.SlayerTracker; +import org.rs09.XPGainDraw; +import org.rs09.client.config.GameConfig; +import org.rs09.client.console.DeveloperConsole; +import org.rs09.client.data.HashTable; +import org.rs09.client.data.ReferenceCache; +import org.rs09.client.net.Connection; +import org.rs09.client.rendering.Toolkit; +import org.rs09.client.util.ArrayUtils; +import org.runite.client.drawcalls.*; + +import java.awt.*; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.util.Objects; + +public class Unsorted { + public static boolean aBoolean2146 = false; + public static int incomingOpcode = 0; + public static int anInt2148 = 0; + public static boolean aBoolean2154; + public static int[] anIntArray882 = new int[200]; + public static int anInt144; + public static int anInt136 = 0; + public static byte[][][] sceneryTypeMaskGrid = new byte[4][104][104]; + public static int[] anIntArray39; + public static int anInt40 = 0; + public static Connection js5Connection; + public static int anInt42 = 0; + public static RSString[] aStringArray45; + public static short aShort46 = 256; + public static boolean aBoolean47 = false; + public static int anInt48 = 2; + public static int[] anIntArray49; + public static int width1234; + public static Class33 aClass33_1238; + public static LinkedList aLinkedList_1242 = new LinkedList(); + public static int anInt1244 = -1; + public static RSInterface aClass11_1933; + public static float[] aFloatArray1934 = new float[]{0.073F, 0.169F, 0.24F, 1.0F}; + public static Class8 aClass8_1936; + public static int[] anIntArray2952 = new int[128]; + public static int anInt2958 = 0; + public static LinkedList aLinkedList_78 = new LinkedList(); + public static int anInt72 = 0; + public static boolean[] aBooleanArray73 = new boolean[200]; + public static boolean[] aBooleanArray1703; + public static int incomingPacketLength = 0; + public static int anInt1705 = 0; + public static int anInt1709 = 0; + public static int anInt1711 = -2; + public static boolean[] aBooleanArray1712 = new boolean[100]; + public static ReferenceCache aReferenceCache_1131 = new ReferenceCache(5); + public static ReferenceCache aReferenceCache_1135 = new ReferenceCache(4); + public static AbstractSprite[] minimapDotSprites; + public static int anInt1137 = 2; + public static int[] anIntArray1138; + public static int anInt3625 = 3; + public static int anInt3631; + public static Class25[] aClass25Array4060; + public static int anInt4062 = 0; + public static boolean aBoolean4063 = false; + public static boolean aBoolean4068 = true; + public static TileData[][][] aTileDataArrayArrayArray4070; + public static int anInt4073; + public static CacheIndex quickchatMenusIndex_332; + public static int[] anIntArray2591; + public static RSString[] aStringArray2596 = null; + public static Class3_Sub28_Sub3 aClass3_Sub28_Sub3_2600; + public static Class151_Sub1[] aClass151_Sub1Array2601 = new Class151_Sub1[29]; //TODO + public static boolean aBoolean1080 = false; + public static int anInt1081 = 0; + public static int anInt1082; + public static int[] anIntArray1083; + public static boolean aBoolean1084 = false; + public static int anInt1088 = 0; + public static int anInt1950; + public static boolean aBoolean1951 = false; + public static int anInt1953; + public static int anInt1881 = 0; + public static int anInt1887; + public static int anInt14 = 0; + public static int anInt15 = 0; + public static ReferenceCache aReferenceCache_21 = new ReferenceCache(64); + public static int registryStage = 0; + public static int anInt25 = 1; + public static int anInt3657; + public static int anInt3660 = 0; + public static boolean aBoolean3665 = true; + public static LinkedList aLinkedList_2468 = new LinkedList(); + public static int[] anIntArray2469; + public static int[] anIntArray2470 = new int[]{0, 0, 2, 0, 0, 2, 1, 1, 0}; + public static boolean paramJavaScriptEnabled = false; + public static int anInt3642 = 0; + public static int anInt3644 = 0; + public static int anInt59 = 0; + public static int anInt65; + public static boolean isMember = false; + public static int anInt67; + public static ShaderInterface[] anShaderInterfaceArray70; + public static boolean aBoolean742 = false; + public static ReferenceCache aReferenceCache_743 = new ReferenceCache(20); + public static CacheIndex quickChatMessages; + public static byte[][][] aByteArrayArrayArray1328; + public static int anInt3602; + public static int anInt3603; + public static boolean aBoolean3604 = true; + public static int[][][] anIntArrayArrayArray3605; + public static int viewportX; + public static int[] anIntArray3607 = new int[]{0, 2, 2, 2, 1, 1, 2, 2, 1, 3, 1, 1}; + public static ReferenceCache aReferenceCache_4043 = new ReferenceCache(64); + public static volatile int anInt4045 = 0; + public static HashTable aHashTable_4046 = new HashTable(16); + public static MouseListeningClass aClass149_4047 = new MouseListeningClass(); + public static CacheIndex modelsIndex_4048; + public static int[] anIntArray4050 = new int[1000]; + public static ReferenceCache aReferenceCache_4051 = new ReferenceCache(30); + public static int gameWindowWidth = 0; + public static Player[] players = new Player[2048]; + static int y942; + static int anInt944 = 0; + static int anInt952; + static int anInt963; + static int anInt1037; + static int anInt1038; + static Class30 aClass30_1039; + static int anInt3695; + static int anInt1042; + static CacheIndex modelsIndex_1043; + static AbstractSprite[] aAbstractSpriteArray996; + static int maskUpdateCount = 0; + static int anInt998 = 0; + static int anInt999 = -1; + static int wlPacketSize = 0; + static ReferenceCache aReferenceCache_684 = new ReferenceCache(64); + static int[] anIntArray686 = new int[2]; + static int anInt688 = 0; + static int anInt689; + static RSString[] aStringArray2566 = new RSString[200]; + static int anInt2567 = -1; + public static int clanSize; + static int[] anIntArray2574 = new int[14]; + static int anInt2577 = 0; + static boolean aBoolean29 = false; + static int anInt30; + static int anInt31 = 0; + static int anInt3671 = 0; + static boolean[] aBooleanArray3674 = new boolean[100]; + static int anInt2281 = 0; + static int anInt2309 = 128; + static boolean aBoolean2311; + static int frameWidth; + static int anInt3071 = 0; + static int anInt3070 = 0; + static int[] anIntArray3076; + static int x3155; + static WorldListEntry[] aClass44_Sub1Array3201 = new WorldListEntry[0]; + static CacheIndex interfacesIndex_3361; + static Class52 aClass52_1112 = new Class52(); + static int anInt1165 = -1; + static byte[][][] possibleHeightmap1774; + static int[][] anIntArrayArray2039 = new int[][]{{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}, {12, 8, 4, 0, 13, 9, 5, 1, 14, 10, 6, 2, 15, 11, 7, 3}, {15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0}, {3, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12}}; + public static int menuOptionCount = 0; + static boolean aBoolean11 = false; + public static Class158 aClass158_3009; + static long[] aLongArray3271 = new long[500]; + static boolean aBoolean3275 = true; + static int anInt154 = 0; + static RSInterface aClass11_2091 = null; + static int anInt2099 = 0; + + static void method2086() { + try { + int var1 = Class102.player.xAxis + TextureOperation20.anInt3216; + int var2 = Class102.player.yAxis - -anInt42; + if (-var1 + x3155 < -500 || -var1 + x3155 > 500 || y942 + -var2 < -500 || -var2 + y942 > 500) { + x3155 = var1; + y942 = var2; + } + + if (var2 != y942) { + y942 += (-y942 + var2) / 16; + } + + if (var1 != x3155) { + x3155 += (-x3155 + var1) / 16; + } + + if (AudioThread.aBoolean346) { + for (int var3 = 0; var3 < Class3_Sub23.anInt2537; ++var3) { + int var4 = Class133.inputTextCodeArray[var3]; + if (98 == var4) { + anInt2309 = -16 & anInt2309 + 47; + } else if (var4 == 99) { + anInt2309 = -16 & anInt2309 - 17; + } else if (var4 == 96) { + GraphicDefinition.CAMERA_DIRECTION = GraphicDefinition.CAMERA_DIRECTION - 65 & -128; + } else if (var4 == 97) { + GraphicDefinition.CAMERA_DIRECTION = GraphicDefinition.CAMERA_DIRECTION + 191 & -128; + } + } + } else { + if (ObjectDefinition.aBooleanArray1490[98]) { + Class27.anInt517 += (-Class27.anInt517 + 12) / 2; + } else if (!ObjectDefinition.aBooleanArray1490[99]) { + Class27.anInt517 /= 2; + } else { + Class27.anInt517 += (-Class27.anInt517 + -12) / 2; + } + + if (!ObjectDefinition.aBooleanArray1490[96]) { + if (ObjectDefinition.aBooleanArray1490[97]) { + anInt2281 += (-anInt2281 + 24) / 2; + } else { + anInt2281 /= 2; + } + } else { + anInt2281 += (-anInt2281 + -24) / 2; + } + + anInt2309 += Class27.anInt517 / 2; + GraphicDefinition.CAMERA_DIRECTION += anInt2281 / 2; + } + + clampCameraAngle(); + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "uf.B(" + (byte) 68 + ')'); + } + } + + static boolean method1529(int var0, int var1, int var2, int var3, int var4, int var6) { + try { + long var8 = Scenery.lookupTypemask0(var6, var1, var3 + var0); + int var10; + int var11; + int var12; + ObjectDefinition var13; + int var14; + int[] var15; + int var16; + if (var8 != 0) { + var10 = 3 & (int) var8 >> 20; + var11 = (508650 & (int) var8) >> 14; + var12 = Integer.MAX_VALUE & (int) (var8 >>> 32); + var13 = ObjectDefinition.getObjectDefinition(var12); + if (var13.anInt1516 == -1) { + var14 = var2; + if (var8 > 0) { + var14 = var4; + } + + var15 = Toolkit.JAVA_TOOLKIT.getBuffer(); + var16 = 4 * (-(var3 * 512) + '\uce00') + var1 * 4 + 24624; + if (var11 == 0 || var11 == 2) { + if (var10 == 0) { + var15[var16] = var14; + var15[512 + var16] = var14; + var15[var16 - -1024] = var14; + var15[1536 + var16] = var14; + } else if (var10 == 1) { + var15[var16] = var14; + var15[1 + var16] = var14; + var15[var16 - -2] = var14; + var15[var16 - -3] = var14; + } else if (var10 == 2) { + var15[var16 - -3] = var14; + var15[var16 - -3 - -512] = var14; + var15[var16 - -3 + 1024] = var14; + var15[var16 + 3 + 1536] = var14; + } else { + var15[var16 + 1536] = var14; + var15[1536 + var16 - -1] = var14; + var15[var16 + 1538] = var14; + var15[3 + var16 + 1536] = var14; + } + } + + if (var11 == 3) { + if (var10 == 0) { + var15[var16] = var14; + } else if (1 == var10) { + var15[var16 - -3] = var14; + } else if (var10 == 2) { + var15[var16 - -3 + 1536] = var14; + } else { + var15[var16 - -1536] = var14; + } + } + + if (var11 == 2) { + if (var10 == 3) { + var15[var16] = var14; + var15[var16 - -512] = var14; + var15[var16 + 1024] = var14; + var15[1536 + var16] = var14; + } else if (var10 == 0) { + var15[var16] = var14; + var15[1 + var16] = var14; + var15[2 + var16] = var14; + var15[3 + var16] = var14; + } else if (var10 == 1) { + var15[var16 - -3] = var14; + var15[512 + 3 + var16] = var14; + var15[3 + (var16 - -1024)] = var14; + var15[1536 + var16 + 3] = var14; + } else { + var15[1536 + var16] = var14; + var15[var16 - -1536 + 1] = var14; + var15[1536 + var16 + 2] = var14; + var15[var16 + 1539] = var14; + } + } + } else if (AudioThread.method888(var1, var13, var0, var3, var10)) { + return false; + } + } + + var8 = Scenery.lookupTypemask2(var6, var1, var0 + var3); + if (var8 != 0L) { + var10 = (int) var8 >> 20 & 3; + var11 = ((int) var8 & 520964) >> 14; + var12 = (int) (var8 >>> 32) & Integer.MAX_VALUE; + var13 = ObjectDefinition.getObjectDefinition(var12); + if (var13.anInt1516 != -1) { + if (AudioThread.method888(var1, var13, var0, var3, var10)) { + return false; + } + } else if (var11 == 9) { + var14 = 15658734; + if (var8 > 0) { + var14 = 15597568; + } + + var16 = var1 * 4 + (24624 - -(2048 * (103 - var3))); + var15 = Toolkit.JAVA_TOOLKIT.getBuffer(); + if (var10 == 0 || var10 == 2) { + var15[1536 + var16] = var14; + var15[var16 - -1025] = var14; + var15[var16 + 512 + 2] = var14; + var15[var16 - -3] = var14; + } else { + var15[var16] = var14; + var15[var16 - -512 - -1] = var14; + var15[var16 - -1024 - -2] = var14; + var15[1536 + var16 - -3] = var14; + } + } + } + + var8 = Scenery.lookupTypeMask3(var6, var1, var3 + var0); + if (var8 != 0L) { + var10 = (int) var8 >> 20 & 3; + var11 = (int) (var8 >>> 32) & Integer.MAX_VALUE; + ObjectDefinition var18 = ObjectDefinition.getObjectDefinition(var11); + return var18.anInt1516 == -1 || !AudioThread.method888(var1, var18, var0, var3, var10); + } + + return true; + } catch (RuntimeException var17) { + throw ClientErrorException.clientError(var17, "na.N(" + var0 + ',' + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + 0 + ',' + var6 + ',' + true + ')'); + } + } + + static int method1535(WorldListEntry var0, WorldListEntry var1, int var2, int var3, int var4, boolean var5, boolean var6) { + try { + int var7 = Class161.method2201(var1, var4, var2 + -5638, var0, var6); + if (var7 == 0) { + if (var2 != 5730) { + return -76; + } else if (var3 == -1) { + return 0; + } else { + int var8 = Class161.method2201(var1, var3, var2 ^ 5651, var0, var5); + return !var5 ? var8 : -var8; + } + } else { + return !var6 ? var7 : -var7; + } + } catch (RuntimeException var9) { + throw ClientErrorException.clientError(var9, "na.D(" + (var0 != null ? "{...}" : "null") + ',' + (var1 != null ? "{...}" : "null") + ',' + var2 + ',' + var3 + ',' + var4 + ',' + var5 + ',' + var6 + ')'); + } + } + + static SoftwareSprite method1537(CacheIndex var0, int var1) { + try { + if (GroundItem.method2029((byte) -118, var0, var1)) { + + return Class117.method1722(-93); + } else { + return null; + } + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "na.GB(" + (var0 != null ? "{...}" : "null") + ',' + var1 + ',' + false + ')'); + } + } + + static LDIndexedSprite method1539(int var2, CacheIndex var3) { + try { + // System.out.println("RSString " + var2); + return Class75_Sub4.method1351(var3, 0, var2) ? Class77.method1364() : null; + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "na.MA(" + 0 + ',' + true + ',' + var2 + ',' + (var3 != null ? "{...}" : "null") + ')'); + } + } + + public static RSString method802(int var0) { + try { + + return Class163_Sub2_Sub1.aStringArray4016[var0].length() > 0 ? RSString.stringCombiner(new RSString[]{GroundItem.aStringArray2935[var0], TextCore.Spacer, Class163_Sub2_Sub1.aStringArray4016[var0]}) : GroundItem.aStringArray2935[var0]; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "wa.RB(" + var0 + ',' + true + ')'); + } + } + + public static void method83(byte var0) { + try { + ItemDefinition.stringsStack = null; + if (var0 != 30) { + method84(null, 89); + } + + aLinkedList_78 = null; + aBooleanArray73 = null; + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "ab.H(" + var0 + ')'); + } + } + + static void calculateInterfacePosition(RSInterface iface, int parentWidth, int parentHeight) { + if (iface.verticalPos == 0) { + iface.anInt210 = iface.defY; + } else if (iface.verticalPos == 1) { + iface.anInt210 = (parentHeight - iface.height) / 2 + iface.defY; + } else if (iface.verticalPos == 2) { + iface.anInt210 = parentHeight - iface.height - iface.defY; + } else if (iface.verticalPos == 3) { + iface.anInt210 = iface.defY * parentHeight >> 14; + } else if (iface.verticalPos == 4) { + iface.anInt210 = (parentHeight * iface.defY >> 14) + (-iface.height + parentHeight) / 2; + } else { + iface.anInt210 = -(parentHeight * iface.defY >> 14) + -iface.height + parentHeight; + } + + if (0 == iface.horizontalPos) { + iface.anInt306 = iface.defX; + } else if (iface.horizontalPos == 1) { + iface.anInt306 = iface.defX + (parentWidth - iface.width) / 2; + } else if (iface.horizontalPos == 2) { + iface.anInt306 = -iface.defX + -iface.width + parentWidth; + } else if (3 == iface.horizontalPos) { + iface.anInt306 = iface.defX * parentWidth >> 14; + } else if (4 == iface.horizontalPos) { + iface.anInt306 = (iface.defX * parentWidth >> 14) + (parentWidth - iface.width) / 2; + } else { + iface.anInt306 = -(parentWidth * iface.defX >> 14) + parentWidth + -iface.width; + } + + if (ClientCommands.commandQaOpEnabled && (Client.method44(iface).anInt2205 != 0 || iface.type == 0)) { + if (iface.anInt210 < 0) { + iface.anInt210 = 0; + } else if (iface.height + iface.anInt210 > parentHeight) { + iface.anInt210 = parentHeight + -iface.height; + } + + if (0 > iface.anInt306) { + iface.anInt306 = 0; + } else if (parentWidth < iface.anInt306 - -iface.width) { + iface.anInt306 = parentWidth + -iface.width; + } + } + } + + static void method1225() { + try { + MouseListeningClass var1 = aClass149_4047; + synchronized (var1) { + + TextureOperation21.anInt3069 = GraphicDefinition.anInt549; + Class126.anInt1676 = Class3_Sub21.anInt2493; + anInt1709 = MouseListeningClass.anInt1340; + anInt3644 = Class140_Sub3.anInt2743; + Class163_Sub1.anInt2993 = RenderAnimationDefinition.anInt362; + ++anInt4045; + Class38_Sub1.anInt2614 = TextureOperation14.anInt3389; + Class75.aLong1102 = Class140_Sub6.aLong2926; + Class140_Sub3.anInt2743 = 0; + } + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "ii.D(" + 18074 + ')'); + } + } + + static void method848() { + try { + if (Class44.aFloat727 < NPC.aFloat3979) { + Class44.aFloat727 = (float) ((double) Class44.aFloat727 + (double) Class44.aFloat727 / 30.0D); + if (NPC.aFloat3979 < Class44.aFloat727) { + Class44.aFloat727 = NPC.aFloat3979; + } + + Class3_Sub5.method117(); + } else if (NPC.aFloat3979 < Class44.aFloat727) { + Class44.aFloat727 = (float) ((double) Class44.aFloat727 - (double) Class44.aFloat727 / 30.0D); + if (NPC.aFloat3979 > Class44.aFloat727) { + Class44.aFloat727 = NPC.aFloat3979; + } + + Class3_Sub5.method117(); + } + + if (Texture.anInt1150 != -1 && -1 != TextureOperation13.anInt3362) { + int var1 = -Class3_Sub28_Sub1.anInt3536 + Texture.anInt1150; + if (2 > var1 || var1 > 2) { + var1 >>= 4; + } + + int var2 = -Scenery.anInt2251 + TextureOperation13.anInt3362; + if (var2 < 2 || var2 > 2) { + var2 >>= 4; + } + + Scenery.anInt2251 -= -var2; + Class3_Sub28_Sub1.anInt3536 += var1; + if (0 == var1 && 0 == var2) { + Texture.anInt1150 = -1; + TextureOperation13.anInt3362 = -1; + } + + Class3_Sub5.method117(); + } + + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "bb.A(" + 4 + ')'); + } + } + + static int bitwiseAnd(int var0, int var1) { + try { + return var0 & var1; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "qc.C(" + var0 + ',' + var1 + ')'); + } + } + + static LDIndexedSprite[] method1281() { + try { + LDIndexedSprite[] var1 = new LDIndexedSprite[Class95.anInt1338]; + + for (int var2 = 0; Class95.anInt1338 > var2; ++var2) { + var1[var2] = new LDIndexedSprite(Class3_Sub15.anInt2426, Class133.anInt1748, Class164.anIntArray2048[var2], anIntArray2591[var2], GroundItem.anIntArray2931[var2], anIntArray3076[var2], Class163_Sub1.aByteArrayArray2987[var2], TextureOperation38.spritePalette); + } + + Class39.method1035((byte) 116); + return var1; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "jg.A(" + 0 + ')'); + } + } + + public static void method1282(int var0, int var2, int var3, int var4) { + try { + for (int var5 = 0; var5 < Class3_Sub28_Sub3.anInt3557; ++var5) { + if (var0 < AudioChannel.anIntArray1969[var5] - -Class3_Sub28_Sub18.anIntArray3768[var5] && var0 + var4 > AudioChannel.anIntArray1969[var5] && var2 < Player.anIntArray3954[var5] - -Entity.anIntArray2794[var5] && var3 + var2 > Player.anIntArray3954[var5]) { + Class163_Sub1_Sub1.aBooleanArray4008[var5] = true; + } + } + + } catch (RuntimeException var7) { + throw ClientErrorException.clientError(var7, "jg.C(" + var0 + ',' + (byte) 122 + ',' + var2 + ',' + var3 + ',' + var4 + ')'); + } + } + + static Class3_Sub15 method1245(CacheIndex var1, int var2) { + try { + + byte[] var3 = var1.method2138(var2); + return var3 != null ? new Class3_Sub15(var3) : null; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "jb.F(" + 117 + ',' + (var1 != null ? "{...}" : "null") + ',' + var2 + ')'); + } + } + + static void method1250(int var0, boolean var1) { + try { + Class3_Sub10.aByteArrayArrayArray2339 = null; + Class44.anIntArrayArrayArray720 = null; + if (var0 < 14) { + method1250(10, true); + } + + Class3_Sub28_Sub3.aClass11_3551 = null; + RenderAnimationDefinition.aByteArrayArrayArray383 = null; + Class83.anIntArray1161 = null; + CS2Script.aByteArrayArrayArray2452 = null; + if (var1 && null != aClass3_Sub28_Sub3_2600) { + Class3_Sub20.aString_3220 = aClass3_Sub28_Sub3_2600.aString_3561; + } else { + Class3_Sub20.aString_3220 = null; + } + + Class36.aByteArrayArrayArray640 = null; + TextureOperation29.aByteArrayArrayArray3390 = null; + Class29.anIntArrayArrayArray558 = null; + Class146.anIntArrayArrayArray1903 = null; + GroundItemLink.anInt2737 = 0; + aClass3_Sub28_Sub3_2600 = null; + Class84.aLinkedList_1162.clear(); + Class119.aClass131_1624 = null; + TextureOperation13.anInt3362 = -1; + Class75_Sub2.aClass33_2648 = null; + Class91.aClass33_1305 = null; + aClass33_1238 = null; + Class161.aClass33_2034 = null; + Class164_Sub2.aClass33_3019 = null; + Class99.aClass33_1399 = null; + Class75_Sub2.aClass33_2637 = null; + Class119.aClass33_1626 = null; + Class36.aAbstractSprite_637 = null; + Texture.anInt1150 = -1; + GroundItemLink.aSoftwareSprite_3221 = null; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "jb.E(" + var0 + ',' + var1 + ')'); + } + } + + public static int[] method62() { + try { + + int[] var8 = new int[2048]; + TextureOperation34 var9 = new TextureOperation34(); + var9.anInt3060 = 8; + var9.anInt3058 = 4; + var9.anInt3067 = 35; + var9.anInt3056 = 8; + var9.anInt3062 = (int) ((float) 0.4 * 4096.0F); + var9.aBoolean3065 = true; + var9.postDecode(); + TextureOperation33.method180(-106, 1, 2048); + var9.method186(0, var8); + return var8; + } catch (RuntimeException var10) { + throw ClientErrorException.clientError(var10, "qk.A(" + true + ',' + 14585 + ',' + 8 + ',' + 2048 + ',' + 4 + ',' + (float) 0.4 + ',' + 8 + ',' + 35 + ')'); + } + } + + public static int method64(int var1) { + try { + return var1 >>> 8; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "qk.D(" + true + ',' + var1 + ')'); + } + } + + public static short[] method65(short[] var1) { + try { + if (null == var1) { + return null; + } else { + short[] var2 = new short[var1.length]; + ArrayUtils.arraycopy(var1, 0, var2, 0, var1.length); + return var2; + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "vg.A(" + 23032 + ',' + "{...}" + ')'); + } + } + + public static void method66(RSString var0, int var1, int var2, byte var3, int var4) { + try { + RSInterface var5 = AbstractSprite.method638(var4, var1); + if (null != var5) { + if (var5.anObjectArray314 != null) { + CS2Script var6 = new CS2Script(); + var6.arguments = var5.anObjectArray314; + var6.aClass11_2449 = var5; + var6.aString_2439 = var0; + var6.interfaceButtons = var2; // Set to 1 for jukebox/friends/all/game chat. set to non 1 for all other chat settings + Class43.method1065(var6); + } + + boolean var8 = true; + if (0 < var5.anInt189) { + var8 = BufferedDataStream.method715(var5); + } + + if (var8) { + if (Client.method44(var5).method92(var2 - 1, (byte) -108)) { + if (1 == var2) { + TextureOperation12.outgoingBuffer.putOpcode(155); + TextureOperation12.outgoingBuffer.writeInt(var4); + TextureOperation12.outgoingBuffer.writeShort(var1); + } + + if (var3 < -7) { + if (var2 == 2) { + TextureOperation12.outgoingBuffer.putOpcode(196); + TextureOperation12.outgoingBuffer.writeInt(var4); + TextureOperation12.outgoingBuffer.writeShort(var1); + } + + if (var2 == 3) { + TextureOperation12.outgoingBuffer.putOpcode(124); + TextureOperation12.outgoingBuffer.writeInt(var4); + TextureOperation12.outgoingBuffer.writeShort(var1); + } + + if (var2 == 4) { + TextureOperation12.outgoingBuffer.putOpcode(199); + TextureOperation12.outgoingBuffer.writeInt(var4); + TextureOperation12.outgoingBuffer.writeShort(var1); + } + + if (var2 == 5) { + TextureOperation12.outgoingBuffer.putOpcode(234); + TextureOperation12.outgoingBuffer.writeInt(var4); + TextureOperation12.outgoingBuffer.writeShort(var1); + } + + if (6 == var2) { + TextureOperation12.outgoingBuffer.putOpcode(168); + TextureOperation12.outgoingBuffer.writeInt(var4); + TextureOperation12.outgoingBuffer.writeShort(var1); + } + + if (var2 == 7) { + TextureOperation12.outgoingBuffer.putOpcode(166); + TextureOperation12.outgoingBuffer.writeInt(var4); + TextureOperation12.outgoingBuffer.writeShort(var1); + } + + if (var2 == 8) { + TextureOperation12.outgoingBuffer.putOpcode(64); + TextureOperation12.outgoingBuffer.writeInt(var4); + TextureOperation12.outgoingBuffer.writeShort(var1); + } + + if (var2 == 9) { + TextureOperation12.outgoingBuffer.putOpcode(53); + TextureOperation12.outgoingBuffer.writeInt(var4); + TextureOperation12.outgoingBuffer.writeShort(var1); + } + + if (var2 == 10) { + TextureOperation12.outgoingBuffer.putOpcode(9); + TextureOperation12.outgoingBuffer.writeInt(var4); + TextureOperation12.outgoingBuffer.writeShort(var1); + } + + } + } + } + } + } catch (RuntimeException var7) { + throw ClientErrorException.clientError(var7, "vg.D(" + (var0 != null ? "{...}" : "null") + ',' + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ')'); + } + } + + public static void method68(int var0, Entity var2) { + try { + if (var2.anInt2800 <= Class44.anInt719) { + if (var2.anInt2790 >= Class44.anInt719) { + method2270(var2); + } else { + method1180((byte) -22, var2); + } + } else { + PositionedGraphicObject.method1950(var2); + } + + if (var2.xAxis < 128 || var2.yAxis < 128 || var2.xAxis >= 13184 || var2.yAxis >= 13184) { + var2.anInt2771 = -1; + var2.anInt2842 = -1; + var2.anInt2800 = 0; + var2.anInt2790 = 0; + var2.xAxis = 128 * var2.xOffsets2767[0] - -(64 * var2.getSize()); + var2.yAxis = var2.yOffsets2755[0] * 128 + var2.getSize() * 64; + var2.method1973(2279 + -2395); + } + + if (var2 == Class102.player && (var2.xAxis < 1536 || var2.yAxis < 1536 || var2.xAxis >= 11776 || var2.yAxis >= 11776)) { + var2.anInt2842 = -1; + var2.anInt2800 = 0; + var2.anInt2790 = 0; + var2.anInt2771 = -1; + var2.xAxis = var2.xOffsets2767[0] * 128 + var2.getSize() * 64; + var2.yAxis = 128 * var2.yOffsets2755[0] + 64 * var2.getSize(); + var2.method1973(-98); + } + + Class17.method904(65536, var2); + RenderAnimationDefinition.method900(var2); + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "vg.C(" + var0 + ',' + 2279 + ',' + (var2 != null ? "{...}" : "null") + ')'); + } + } + + public static void method1470(int var0, SequenceDefinition var1, int var3, boolean var4, int var5) { + try { + if (AudioHandler.currentSoundEffectCount < 50) { + if (var1.sounds != null && var1.sounds.length > var5 && null != var1.sounds[var5]) { + int var6 = var1.sounds[var5][0]; + int var7 = var6 >> 8; + int var10; + if (1 < var1.sounds[var5].length) { + var10 = (int) ((double) var1.sounds[var5].length * Math.random()); + if (0 < var10) { + var7 = var1.sounds[var5][var10]; + } + } + + int var8 = var6 >> 5 & 7; + int var9 = var6 & 31; + if (var9 == 0) { + if (var4) { + AudioHandler.soundEffectHandler(var8, var7, 0); + } + + } else if (0 != Sprites.ambientVolume) { + AudioHandler.soundEffectIDs[AudioHandler.currentSoundEffectCount] = var7; + AudioHandler.soundEffectVolumeArray[AudioHandler.currentSoundEffectCount] = var8; + int var11 = (-64 + var0) / 128; + var10 = (var3 + -64) / 128; + AudioHandler.soundEffectDelayArray[AudioHandler.currentSoundEffectCount] = 0; + AudioHandler.soundEffects[AudioHandler.currentSoundEffectCount] = null; + AudioHandler.soundEffectCoordinates[AudioHandler.currentSoundEffectCount] = var9 + (var10 << 16) + (var11 << 8); + + ++AudioHandler.currentSoundEffectCount; + } + } + } + } catch (RuntimeException var12) { + throw ClientErrorException.clientError(var12, "ma.C(" + var0 + ',' + (var1 != null ? "{...}" : "null") + ',' + var3 + ',' + var4 + ',' + var5 + ')'); + } + } + + public static void method1460(int var0, int var1, int var3, int var4, int var5, int var6) { + try { + if (Class101.anInt1425 <= var5 - var4 && Class3_Sub28_Sub18.anInt3765 >= var5 - -var4 && Class159.anInt2020 <= -var4 + var1 && Class57.anInt902 >= var4 + var1) { + TextureOperation6.method175(var6, var0, var1, var3, var4, var5); + } else { + method2275(var3, var1, var4, var6, var0, var5); + } + + } catch (RuntimeException var8) { + throw ClientErrorException.clientError(var8, "ma.A(" + var0 + ',' + var1 + ',' + (byte) -113 + ',' + var3 + ',' + var4 + ',' + var5 + ',' + var6 + ')'); + } + } + + public static void method1469(int[] var0, int var1, int var2, int var3, int var4, int var5) { + TileData var6 = TileData.aTileDataArrayArrayArray2638[var3][var4][var5]; + if (var6 != null) { + Class126 var7 = var6.aClass126_2240; + int var9; + if (var7 == null) { + Class35 var8 = var6.aClass35_2226; + if (var8 != null) { + var9 = var8.anInt611; + int var10 = var8.anInt612; + int var11 = var8.anInt626; + int var12 = var8.anInt621; + int[] var13 = TextureOperation19.anIntArrayArray3215[var9]; + int[] var14 = anIntArrayArray2039[var10]; + int var15 = 0; + int var16; + if (var11 == 0) { + for (var16 = 0; var16 < 4; ++var16) { + if (var13[var14[var15++]] != 0) { + var0[var1] = var12; + } + + if (var13[var14[var15++]] != 0) { + var0[var1 + 1] = var12; + } + + if (var13[var14[var15++]] != 0) { + var0[var1 + 2] = var12; + } + + if (var13[var14[var15++]] != 0) { + var0[var1 + 3] = var12; + } + + var1 += var2; + } + } else { + for (var16 = 0; var16 < 4; ++var16) { + var0[var1] = var13[var14[var15++]] == 0 ? var11 : var12; + var0[var1 + 1] = var13[var14[var15++]] == 0 ? var11 : var12; + var0[var1 + 2] = var13[var14[var15++]] == 0 ? var11 : var12; + var0[var1 + 3] = var13[var14[var15++]] == 0 ? var11 : var12; + var1 += var2; + } + } + + } + } else { + int var17 = var7.anInt1673; + if (var17 != 0) { + for (var9 = 0; var9 < 4; ++var9) { + var0[var1] = var17; + var0[var1 + 1] = var17; + var0[var1 + 2] = var17; + var0[var1 + 3] = var17; + var1 += var2; + } + + } + } + } + } + + public static boolean method2096(int var0, int var1, int var2, long var3) { + TileData var5 = TileData.aTileDataArrayArrayArray2638[var0][var1][var2]; + if (var5 == null) { + return false; + } else if (var5.aClass70_2234 != null && var5.aClass70_2234.aLong1048 == var3) { + return true; + } else if (var5.aClass19_2233 != null && var5.aClass19_2233.aLong428 == var3) { + return true; + } else if (var5.aClass12_2230 != null && var5.aClass12_2230.aLong328 == var3) { + return true; + } else { + for (int var6 = 0; var6 < var5.anInt2223; ++var6) { + if (var5.aClass25Array2221[var6].aLong498 == var3) { + return true; + } + } + + return false; + } + } + + public static boolean method2103(int var0, int var1) { + try { + return var1 >= -78 || (var0 == 198 || 230 == var0 || var0 == 156 || var0 == 140 || 223 == var0); + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "bg.P(" + var0 + ',' + var1 + ')'); + } + } + + public static void method2104(RSInterface var0, boolean var1, int var2) { + try { + int var4 = var0.anInt240 != 0 ? var0.anInt240 : var0.width; + int var5 = var0.anInt252 != 0 ? var0.anInt252 : var0.height; + Class158.method2183(var0.componentHash, var1, var4, var5, GameObject.interfaces1834[var0.componentHash >> 16]); + if (var0.aClass11Array262 != null) { + Class158.method2183(var0.componentHash, var1, var4, var5, var0.aClass11Array262); + } + + Class3_Sub31 var6 = TextureOperation23.aHashTable_3208.get(var0.componentHash); + if (var6 != null) { + Class75_Sub4.method1352(var5, var1, var6.anInt2602, var4); + } + + } catch (RuntimeException var7) { + throw ClientErrorException.clientError(var7, "bg.N(" + (var0 != null ? "{...}" : "null") + ',' + var1 + ',' + var2 + ')'); + } + } + + public static void method84(RSString var0, int var1) { + try { + int var2 = method1602(var0); + if (var2 != -1) { + method565(Class119.aClass131_1624.xArray1727[var2], Class119.aClass131_1624.yArray1718[var2]); + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "ab.N(" + (var0 != null ? "{...}" : "null") + ',' + var1 + ')'); + } + } + + public static void languageSetter(int var1) { + try { + if (0 != var1) { + if (var1 == 1) { + Translation.englishToGerman(); + } else { + if (2 != var1) { + throw new RuntimeException(); + } + + Translation.englishToFrench(); + } + + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "ab.K(" + ',' + var1 + ')'); + } + } + + public static Class106[] method88() { + try { + + if (Class56.aClass106Array890 == null) { + Class106[] var1 = method596(Class38.gameSignlink); + Class106[] var2 = new Class106[var1.length]; + int var3 = 0; + + label58: + for (Class106 var5 : var1) { + if ((0 >= var5.anInt1450 || var5.anInt1450 >= 24) && var5.anInt1447 >= 800 && 600 <= var5.anInt1449) { + for (int var6 = 0; var3 > var6; ++var6) { + Class106 var7 = var2[var6]; + if (var5.anInt1447 == var7.anInt1447 && var5.anInt1449 == var7.anInt1449) { + if (var7.anInt1450 < var5.anInt1450) { + var2[var6] = var5; + } + continue label58; + } + } + + var2[var3] = var5; + ++var3; + } + } + + Class56.aClass106Array890 = new Class106[var3]; + ArrayUtils.arraycopy(var2, 0, Class56.aClass106Array890, 0, var3); + int[] var9 = new int[Class56.aClass106Array890.length]; + + for (int var10 = 0; Class56.aClass106Array890.length > var10; ++var10) { + Class106 var11 = Class56.aClass106Array890[var10]; + var9[var10] = var11.anInt1449 * var11.anInt1447; + } + + Class108.method1658(var9, Class56.aClass106Array890); + } + + return Class56.aClass106Array890; + } catch (RuntimeException var8) { + throw ClientErrorException.clientError(var8, "ab.M(" + (byte) 28 + ')'); + } + } + + public static void method89(CacheIndex var1, CacheIndex var2, CacheIndex var3, CacheIndex var4) { + try { + Class12.spritesIndex_323 = var2; + Class97.fontsIndex_1378 = var1; + interfacesIndex_3361 = var3; + Class119.modelsIndex_1628 = var4; + + GameObject.interfaces1834 = new RSInterface[interfacesIndex_3361.method2121()][]; + aBooleanArray1703 = new boolean[interfacesIndex_3361.method2121()]; + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "ab.J(" + true + ',' + (var1 != null ? "{...}" : "null") + ',' + (var2 != null ? "{...}" : "null") + ',' + (var3 != null ? "{...}" : "null") + ',' + (var4 != null ? "{...}" : "null") + ')'); + } + } + + public static void method1772(int plane, int animId, int dummy, NPC var3) { + try { + if (var3.anInt2771 == animId && -1 != animId) { + SequenceDefinition var4 = SequenceDefinition.getAnimationDefinition(animId); + int var5 = var4.delayType; + if (var5 == 1) { + var3.anInt2776 = 1; + var3.anInt2832 = 0; + var3.anInt2760 = 0; + var3.anInt2773 = 0; + var3.anInt2828 = plane; + method1470(var3.yAxis, var4, var3.xAxis, false, var3.anInt2832); + } + + if (var5 == 2) { + var3.anInt2773 = 0; + } + } else if (animId == -1 || -1 == var3.anInt2771 || SequenceDefinition.getAnimationDefinition(animId).forcedPriority >= SequenceDefinition.getAnimationDefinition(var3.anInt2771).forcedPriority) { + var3.anInt2760 = 0; + var3.anInt2771 = animId; + var3.anInt2776 = 1; + var3.anInt2773 = 0; + var3.anInt2828 = plane; + var3.anInt2811 = var3.anInt2816; + var3.anInt2832 = 0; + if (var3.anInt2771 != -1) { + method1470(var3.yAxis, SequenceDefinition.getAnimationDefinition(var3.anInt2771), var3.xAxis, false, var3.anInt2832); + } + } + + if (dummy != 39) { + anInt1711 = 41; + } + + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "sc.J(" + plane + ',' + animId + ',' + dummy + ',' + (var3 != null ? "{...}" : "null") + ')'); + } + } + + public static void method1775() { + for (int var0 = 0; var0 < anInt3070; ++var0) { + Class25 var1 = SequenceDefinition.aClass25Array1868[var0]; + Class158.method2186(var1); + SequenceDefinition.aClass25Array1868[var0] = null; + } + + anInt3070 = 0; + } + + public static void method1783(Component var1) { + try { + var1.removeMouseListener(aClass149_4047); + var1.removeMouseMotionListener(aClass149_4047); + var1.removeFocusListener(aClass149_4047); + GraphicDefinition.anInt549 = 0; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "sc.M(" + (var1 != null ? "{...}" : "null") + ')'); + } + } + + public static void method1396(int var0) { + try { + int var2 = Class106.rightMargin; + int var1 = Class84.leftMargin; + int var4 = -GroundItem.canvasHeight + (Class70.frameHeight - var2); + int var3 = -var1 + frameWidth - Class23.canvasWidth; + if (~var1 < var0 || var3 > 0 || var2 > 0 || var4 > 0) { + try { + Object var5; + if (null != TextureOperation30.fullScreenFrame) { + var5 = TextureOperation30.fullScreenFrame; + } else if (GameShell.frame == null) { + var5 = Class38.gameSignlink.gameApplet; + } else { + var5 = GameShell.frame; + } + + int var7 = 0; + int var6 = 0; + if (GameShell.frame == var5) { + Insets var8 = GameShell.frame.getInsets(); + var6 = var8.left; + var7 = var8.top; + } + + Graphics var11 = ((Container) var5).getGraphics(); + var11.setColor(Color.black); + if (var1 > 0) { + var11.fillRect(var6, var7, var1, Class70.frameHeight); + } + + if (0 < var2) { + var11.fillRect(var6, var7, frameWidth, var2); + } + + if (var3 > 0) { + var11.fillRect(-var3 + var6 + frameWidth, var7, var3, Class70.frameHeight); + } + + if (var4 > 0) { + var11.fillRect(var6, -var4 + var7 + Class70.frameHeight, frameWidth, var4); + } + } catch (Exception var9) { + } + } + + } catch (RuntimeException var10) { + throw ClientErrorException.clientError(var10, "l.A(" + var0 + ')'); + } + } + + public static void method589(int var0, int var1, int var2) { + TextureOperation37.aBoolean3261 = true; + Class91.anInt1302 = var0; + Class49.anInt819 = var1; + TextureOperation18.anInt4039 = var2; + Class27.anInt515 = -1; + anInt999 = -1; + } + + public static boolean method590(byte var0, int var1, int var2) { + try { + if (11 == var2) { + var2 = 10; + } + + if (var2 >= 5 && var2 <= 8) { + var2 = 4; + } + + ObjectDefinition var4 = ObjectDefinition.getObjectDefinition(var1); + return var4.method1684(var2); + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "il.D(" + var0 + ',' + var1 + ',' + var2 + ')'); + } + } + + public static boolean method591(int var0) { + try { + KeyboardListener var1 = TextureOperation33.aClass148_3049; + synchronized (var1) { + if (Class3_Sub28_Sub9.anInt3620 == Class134.anInt1762) { + return false; + } else { + Class3_Sub28_Sub9.anInt3624 = Class129.anIntArray1693[Class3_Sub28_Sub9.anInt3620]; + TextureOperation7.anInt3342 = KeyboardListener.anIntArray1978[Class3_Sub28_Sub9.anInt3620]; + Class3_Sub28_Sub9.anInt3620 = 1 + Class3_Sub28_Sub9.anInt3620 & 127; + if (var0 < 58) { + method591(68); + } + + return true; + } + } + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "c.F(" + var0 + ')'); + } + } + + public static void method592(byte var0) { + try { + aClass25Array4060 = null; + TextCore.aString_4057 = null; + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "c.P(" + var0 + ')'); + } + } + + public static void method593(Frame var0, Signlink var2) { + try { + + while (true) { + Class64 var3 = var2.method1436(var0, 86); + + while (var3.anInt978 == 0) { + TimeUtils.sleep(10L); + } + + if (1 == var3.anInt978) { + var0.setVisible(false); + var0.dispose(); + return; + } + + TimeUtils.sleep(100L); + } + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "c.R(" + (var0 != null ? "{...}" : "null") + ',' + true + ',' + (var2 != null ? "{...}" : "null") + ')'); + } + } + + public static Class106[] method596(Signlink var1) { + try { + if (var1.method1432(false)) { + Class64 var2 = var1.method1453((byte) 8); + + while (0 == var2.anInt978) { + TimeUtils.sleep(10L); + } + + if (2 == var2.anInt978) { + return new Class106[0]; + } else { + int[] var3 = (int[]) var2.anObject974; + Class106[] var4 = new Class106[var3.length >> 2]; + + for (int var5 = 0; var5 < var4.length; ++var5) { + Class106 var6 = new Class106(); + var4[var5] = var6; + var6.anInt1447 = var3[var5 << 2]; + var6.anInt1449 = var3[(var5 << 2) + 1]; + var6.anInt1450 = var3[(var5 << 2) - -2]; + } + + return var4; + } + } else { + return new Class106[0]; + } + } catch (RuntimeException var7) { + throw ClientErrorException.clientError(var7, "pm.P(" + 10 + ',' + (var1 != null ? "{...}" : "null") + ')'); + } + } + + public static void method598(boolean var0, int var1, boolean var2, int var3, boolean var4, int var5, int var6) { + try { + if (var2) { + HDToolKit.method1842(); + } + + if (null != TextureOperation30.fullScreenFrame && (3 != var1 || TextureOperation.anInt2378 != var5 || anInt3071 != var6)) { + method593(TextureOperation30.fullScreenFrame, Class38.gameSignlink); + TextureOperation30.fullScreenFrame = null; + } + + if (3 == var1 && null == TextureOperation30.fullScreenFrame) { + TextureOperation30.fullScreenFrame = Class99.method1597(0, var6, var5, Class38.gameSignlink); + if (null != TextureOperation30.fullScreenFrame) { + anInt3071 = var6; + TextureOperation.anInt2378 = var5; + Class119.method1730(Class38.gameSignlink); + } + } + + if (var1 == 3 && TextureOperation30.fullScreenFrame == null) { + method598(true, anInt2577, true, var3, var4, -1, -1); + } else { + Container var7; + if (null == TextureOperation30.fullScreenFrame) { + if (null == GameShell.frame) { + var7 = Class38.gameSignlink.gameApplet; + } else { + var7 = GameShell.frame; + } + } else { + var7 = TextureOperation30.fullScreenFrame; + } + + frameWidth = var7.getSize().width; + Class70.frameHeight = var7.getSize().height; + Insets var8; + if (GameShell.frame == var7) { + var8 = GameShell.frame.getInsets(); + frameWidth -= var8.right + var8.left; + Class70.frameHeight -= var8.bottom + var8.top; + } + + if (var1 >= 2) { + Class23.canvasWidth = frameWidth; + GroundItem.canvasHeight = Class70.frameHeight; + Class84.leftMargin = 0; + Class106.rightMargin = 0; + } else { + Class106.rightMargin = 0; + Class84.leftMargin = (frameWidth + -765) / 2; + Class23.canvasWidth = 765; + GroundItem.canvasHeight = 503; + } + + if (var0) { + Class163_Sub1_Sub1.method2215(GameShell.canvas); + method1783(GameShell.canvas); + if (null != Class38.aClass146_668) { + Class38.aClass146_668.method2082(GameShell.canvas); + } + + Client.clientInstance.addCanvas(); + TextureOperation34.method193((byte) 97, GameShell.canvas); + ItemDefinition.method1119(GameShell.canvas, var4); + if (Class38.aClass146_668 != null) { + Class38.aClass146_668.method2084(GameShell.canvas, -103); + } + } else { + if (HDToolKit.highDetail) { + HDToolKit.method1854(Class23.canvasWidth, GroundItem.canvasHeight); + } + + GameShell.canvas.setSize(Class23.canvasWidth, GroundItem.canvasHeight); + if (GameShell.frame == var7) { + var8 = GameShell.frame.getInsets(); + GameShell.canvas.setLocation(var8.left - -Class84.leftMargin, var8.top + Class106.rightMargin); + } else { + GameShell.canvas.setLocation(Class84.leftMargin, Class106.rightMargin); + } + } + + if (0 == var1 && var3 > 0) { + System.out.println("Trying to run method1834 for HD"); + HDToolKit.method1834(GameShell.canvas); + } + + if (var2 && var1 > 0) { + GameShell.canvas.setIgnoreRepaint(true); + if (!aBoolean11) { + Class32.method995(); + aClass158_3009 = null; + aClass158_3009 = TextureOperation18.method285(GroundItem.canvasHeight, Class23.canvasWidth, GameShell.canvas); + Class74.method1320(); + if (5 == Class143.gameStage) { + StartupLoadingBar.draw(true, FontType.bold); + } else { + LoadingBox.draw(false, TextCore.LoadingPleaseWait2); + } + + try { + Graphics var11 = GameShell.canvas.getGraphics(); + aClass158_3009.method2179(var11); + } catch (Exception var9) { + } + + method1396(-1); + if (var3 == 0) { + aClass158_3009 = TextureOperation18.method285(503, 765, GameShell.canvas); + } else { + aClass158_3009 = null; + } + + Class64 var13 = Class38.gameSignlink.method1444(-43, Client.clientInstance.getClass()); + + while (var13.anInt978 == 0) { + TimeUtils.sleep(100L); + } + + if (1 == var13.anInt978) { + aBoolean11 = true; + } + } + + if (aBoolean11) { + HDToolKit.method1853(GameShell.canvas, 2 * anInt3671); + } + } + + if (!HDToolKit.highDetail && 0 < var1) { + method598(true, 0, true, var3, false, -1, -1); + } else { + if (var1 > 0 && var3 == 0) { + GameShell.aThread409.setPriority(5); + aClass158_3009 = null; + Class140_Sub1_Sub2.method1935(); + ((Class102) Class51.anInterface2_838).method1619(200); + if (Class106.aBoolean1441) { + Class51.method1137(0.7F); + } + + InvalidateData.method165(); + } else if (0 == var1 && var3 > 0) { + GameShell.aThread409.setPriority(1); + aClass158_3009 = TextureOperation18.method285(503, 765, GameShell.canvas); + Class140_Sub1_Sub2.method1938(); + ((Class102) Class51.anInterface2_838).method1619(20); + if (Class106.aBoolean1441) { + if (1 == anInt3625) { + Class51.method1137(0.9F); + } + + if (anInt3625 == 2) { + Class51.method1137(0.8F); + } + + if (3 == anInt3625) { + Class51.method1137(0.7F); + } + + if (anInt3625 == 4) { + Class51.method1137(0.6F); + } + } + + Class3_Sub11.method144(); + InvalidateData.method165(); + } + + aBoolean742 = !NPC.isHighDetail(89); + if (var2) { + Class3_Sub20.method389(); + } + + Class3_Sub15.aBoolean2427 = var1 >= 2; + + if (-1 != ConfigInventoryDefinition.anInt3655) { + Class124.method1746(true, (byte) -107); + } + + if (null != Class3_Sub15.activeConnection && (Class143.gameStage == 30 || Class143.gameStage == 25)) { + TextureOperation9.method204(); + } + + for (int var12 = 0; var12 < 100; ++var12) { + aBooleanArray3674[var12] = true; + } + + TextureOperation30.fullRedraw = true; + } + } + } catch (RuntimeException var10) { + throw ClientErrorException.clientError(var10, "pm.F(" + var0 + ',' + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + var5 + ',' + var6 + ')'); + } + } + + static void method1047(int var0, int var1, int var2, boolean var3, int var4, boolean var5) { + try { + if (var2 > var4) { + int var7 = (var2 + var4) / 2; + int var8 = var4; + WorldListEntry var9 = aClass44_Sub1Array3201[var7]; + aClass44_Sub1Array3201[var7] = aClass44_Sub1Array3201[var2]; + aClass44_Sub1Array3201[var2] = var9; + + for (int var10 = var4; var10 < var2; ++var10) { + if (method1535(var9, aClass44_Sub1Array3201[var10], 5730, var0, var1, var3, var5) <= 0) { + WorldListEntry var11 = aClass44_Sub1Array3201[var10]; + aClass44_Sub1Array3201[var10] = aClass44_Sub1Array3201[var8]; + aClass44_Sub1Array3201[var8++] = var11; + } + } + + aClass44_Sub1Array3201[var2] = aClass44_Sub1Array3201[var8]; + aClass44_Sub1Array3201[var8] = var9; + method1047(var0, var1, -1 + var8, var3, var4, var5); + method1047(var0, var1, var2, var3, var8 - -1, var5); + } + + } catch (RuntimeException var12) { + throw ClientErrorException.clientError(var12, "ge.A(" + var0 + ',' + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + var5 + ',' + false + ')'); + } + } + + static RSString method1052(long var1) { + try { + if (var1 > 0 && var1 < 6582952005840035281L) { + if (var1 % 37L == 0) { + return null; + } else { + int var3 = 0; + + for (long var4 = var1; var4 != 0L; ++var3) { + var4 /= 37L; + } + + byte[] var6 = new byte[var3]; + + while (0L != var1) { + long var7 = var1; + var1 /= 37L; + --var3; + var6[var3] = Class163_Sub1_Sub1.aByteArray4005[(int) (-(var1 * 37L) + var7)]; + } + + RSString var10 = new RSString(); + var10.buffer = var6; + var10.length = var6.length; + return var10; + } + } else { + return null; + } + } catch (RuntimeException var9) { + throw ClientErrorException.clientError(var9, "ge.B(" + -29664 + ',' + var1 + ')'); + } + } + + static void method1053(CacheIndex var1) { + try { + Class97.configurationsIndex_1372 = var1; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "ge.F(" + (byte) -117 + ',' + (var1 != null ? "{...}" : "null") + ')'); + } + } + + public static Font method880(byte[] var1) { + try { + if (null == var1) { + return null; + } else { + Object var2; + if (HDToolKit.highDetail) { + var2 = new Class3_Sub28_Sub17_Sub2(var1, Class164.anIntArray2048, anIntArray2591, GroundItem.anIntArray2931, anIntArray3076, Class163_Sub1.aByteArrayArray2987); + } else { + var2 = new Class3_Sub28_Sub17_Sub1(var1, Class164.anIntArray2048, anIntArray2591, GroundItem.anIntArray2931, anIntArray3076, Class163_Sub1.aByteArrayArray2987); + } + + Class39.method1035((byte) 106); + return (Font) var2; + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "ce.G(" + -22376 + ',' + "{...}" + ')'); + } + } + + public static void constructScenery(int plane, int y, int var2, int rotation, int x, int var5, int object_id, int typemask, int type, int var9) { + try { + Scenery var10 = null; + + for (Scenery var11 = (Scenery) Scenery.sceneryList.startIteration(); var11 != null; var11 = (Scenery) Scenery.sceneryList.nextIteration()) { + if (var11.plane == plane && var11.x == x && var11.y == y && var11.typemask == typemask) { + var10 = var11; + break; + } + } + + if (null == var10) { + var10 = new Scenery(); + var10.x = x; + var10.y = y; + var10.plane = plane; + var10.typemask = typemask; + Scenery.method1798(72, var10); + Scenery.sceneryList.pushBack(var10); + } + + var10.type = type; + var10.anInt2261 = var9; + var10.anInt2259 = var5; + var10.object_id = object_id; + var10.rotation = rotation; + } catch (RuntimeException var12) { + throw ClientErrorException.clientError(var12, "ce.J(" + plane + ',' + y + ',' + var2 + ',' + rotation + ',' + x + ',' + var5 + ',' + object_id + ',' + typemask + ',' + type + ',' + var9 + ')'); + } + } + + public static void method882() { + try { + TextureOperation36.anInt3423 = 0; + Class132.anInt1741 = -1; + anInt154 = 1; + GraphicDefinition.anInt546 = 2; + aBoolean2311 = false; + Class101.musicIndex_1423 = null; + TextureOperation8.anInt3463 = -1; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "ce.F(" + -1 + ',' + 2 + ')'); + } + } + + public static Class3_Sub28_Sub3 method884(int var0, byte var1, int var2) { + try { + Class3_Sub28_Sub3 var3 = (Class3_Sub28_Sub3) Class134.aLinkedList_1758.startIteration(); + + for (; var3 != null; var3 = (Class3_Sub28_Sub3) Class134.aLinkedList_1758.nextIteration()) { + if (var3.aBoolean3553 && var3.method537(var2, var0)) { + return var3; + } + } + + return null; + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "ce.D(" + var0 + ',' + var1 + ',' + var2 + ')'); + } + } + + static void method518(Player var0) { + try { + Class3_Sub9 var2 = (Class3_Sub9) aHashTable_4046.get(var0.displayName.toLong()); + + if (var2 == null) { + Class70.method1286(var0.yOffsets2755[0], null, 0, null, var0.xOffsets2767[0], WorldListCountry.localPlane, var0); + } else { + var2.method134(); + } + + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "rg.UA(" + (var0 != null ? "{...}" : "null") + ',' + -110 + ')'); + } + } + + static int method519(int var0, int var2, int var3) { + try { + var0 &= 3; + + return 0 != var0 ? (var0 != 1 ? (var0 == 2 ? -var3 + 7 : -var2 + 7) : var2) : var3; + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "rg.RA(" + var0 + ',' + true + ',' + var2 + ',' + var3 + ')'); + } + } + + static Class3_Sub28_Sub3 method520(byte var0) { + try { + return aClass3_Sub28_Sub3_2600; + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "rg.OA(" + var0 + ')'); + } + } + + static void method523(int var0, int var1, int var3, int var4, int var5, int var6, int var7, int var8) { + try { + int var9 = var3 - var8; + int var11 = (-var5 + var0 << 16) / var9; + int var10 = -var4 + var6; + int var12 = (var7 + -var1 << 16) / var10; + Class83.method1410(var1, var6, var4, var3, var5, var8, var12, var11); + } catch (RuntimeException var13) { + throw ClientErrorException.clientError(var13, "rg.SA(" + var0 + ',' + var1 + ',' + 0 + ',' + var3 + ',' + var4 + ',' + var5 + ',' + var6 + ',' + var7 + ',' + var8 + ')'); + } + } + + public static void method744() { + try { + + ++KeyboardListener.anInt1908; + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "wa.HA(" + true + ')'); + } + } + + public static void method746(byte var0) { + try { + Class67.aReferenceCache_1013.clear(); + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "wa.VC(" + var0 + ')'); + } + } + + public static void method777(Class91[] var0, boolean var1, int var2, int var3, int var5, int var6, byte[] var7) { + try { + int var10; + int var11; + if (!var1) { + for (int var9 = 0; 4 > var9; ++var9) { + for (var10 = 0; var10 < 64; ++var10) { + for (var11 = 0; var11 < 64; ++var11) { + if (var5 - -var10 > 0 && var10 + var5 < 103 && var3 + var11 > 0 && var11 + var3 < 103) { + var0[var9].anIntArrayArray1304[var10 + var5][var3 - -var11] = bitwiseAnd(var0[var9].anIntArrayArray1304[var10 + var5][var3 - -var11], -16777217); + } + } + } + } + } + + DataBuffer var20 = new DataBuffer(var7); + byte var8; + if (var1) { + var8 = 1; + } else { + var8 = 4; + } + + int var12; + for (var10 = 0; var8 > var10; ++var10) { + for (var11 = 0; var11 < 64; ++var11) { + for (var12 = 0; 64 > var12; ++var12) { + Class167.method2267(var2, var6, var1, var20, var12 - -var3, var5 + var11, (byte) 91, 0, var10); + } + } + } + + int var14; + int var15; + int var17; + boolean var21; + int var24; + for (var21 = false; var20.index < var20.buffer.length; var21 = true) { + var11 = var20.readUnsignedByte(); + if (var11 != 129) { + --var20.index; + break; + } + + for (var12 = 0; var12 < 4; ++var12) { + byte var13 = var20.readSignedByte(); + if (0 == var13) { + var14 = var5; + if (var5 >= 0) { + if (var5 >= 104) { + var14 = 104; + } + } else { + var14 = 0; + } + + var24 = var3; + if (var3 < 0) { + var24 = 0; + } else if (var3 >= 104) { + var24 = 104; + } + + var15 = 64 + var5; + var17 = var3 + 64; + if (var17 >= 0) { + if (var17 >= 104) { + var17 = 104; + } + } else { + var17 = 0; + } + + if (var15 < 0) { + var15 = 0; + } else if (var15 >= 104) { + var15 = 104; + } + + while (var15 > var14) { + while (var24 < var17) { + possibleHeightmap1774[var12][var14][var24] = 0; + ++var24; + } + + ++var14; + } + } else if (1 == var13) { + for (var14 = 0; var14 < 64; var14 += 4) { + for (var15 = 0; var15 < 64; var15 += 4) { + byte var16 = var20.readSignedByte(); + + for (var17 = var14 + var5; 4 + var5 + var14 > var17; ++var17) { + for (int var18 = var3 + var15; 4 + var3 + var15 > var18; ++var18) { + if (var17 >= 0 && var17 < 104 && 0 <= var18 && var18 < 104) { + possibleHeightmap1774[var12][var17][var18] = var16; + } + } + } + } + } + } else if (var13 == 2 && var12 > 0) { + var15 = var5 + 64; + var24 = var3; + var17 = var3 + 64; + if (var15 < 0) { + var15 = 0; + } else if (104 <= var15) { + var15 = 104; + } + + if (var3 >= 0) { + if (var3 >= 104) { + var24 = 104; + } + } else { + var24 = 0; + } + + if (var17 >= 0) { + if (var17 >= 104) { + var17 = 104; + } + } else { + var17 = 0; + } + + var14 = var5; + if (var5 >= 0) { + if (104 <= var5) { + var14 = 104; + } + } else { + var14 = 0; + } + + while (var15 > var14) { + while (var17 > var24) { + possibleHeightmap1774[var12][var14][var24] = possibleHeightmap1774[var12 + -1][var14][var24]; + ++var24; + } + + ++var14; + } + } + } + } + + int var23; + if (HDToolKit.highDetail && !var1) { + AtmosphereParser var22 = null; + + while (var20.buffer.length > var20.index) { + var12 = var20.readUnsignedByte(); + if (var12 == 0) { + var22 = new AtmosphereParser(var20); + } else { + if (var12 != 1) { +// throw + new IllegalStateException().printStackTrace(); + return;// + } + + var23 = var20.readUnsignedByte(); + if (0 < var23) { + for (var14 = 0; var23 > var14; ++var14) { + Class43 var25 = new Class43(var20); + if (var25.anInt705 == 31) { + Class57 var26 = Class81.method1401(var20.readUnsignedShort()); + var25.method1060((byte) -67, var26.anInt896, var26.anInt908, var26.anInt899, var26.anInt907); + } + + var25.anInt708 += var3 << 7; + var25.anInt703 += var5 << 7; + var17 = var25.anInt708 >> 7; + var24 = var25.anInt703 >> 7; + if (var24 >= 0 && 0 <= var17 && var24 < 104 && var17 < 104) { + var25.aBoolean696 = 0 != (sceneryTypeMaskGrid[1][var24][var17] & 2); + var25.anInt697 = Class44.anIntArrayArrayArray723[var25.anInt704][var24][var17] + -var25.anInt697; + Class68.method1264(var25); + } + } + } + } + } + + if (var22 == null) { + var22 = new AtmosphereParser(); + } + + for (var12 = 0; var12 < 8; ++var12) { + for (var23 = 0; var23 < 8; ++var23) { + var14 = var12 + (var5 >> 3); + var15 = (var3 >> 3) + var23; + if (0 <= var14 && var14 < 13 && var15 >= 0 && var15 < 13) { + AtmosphereParser.aAtmosphereParserArrayArray1581[var14][var15] = var22; + } + } + } + } + + if (!var21) { + for (var11 = 0; var11 < 4; ++var11) { + for (var12 = 0; 16 > var12; ++var12) { + for (var23 = 0; var23 < 16; ++var23) { + var14 = (var5 >> 2) - -var12; + var15 = var23 + (var3 >> 2); + if (0 <= var14 && 26 > var14 && 0 <= var15 && var15 < 26) { + possibleHeightmap1774[var11][var14][var15] = 0; + } + } + } + } + } + + } catch (RuntimeException var19) { + throw ClientErrorException.clientError(var19, "wa.OA(" + (var0 != null ? "{...}" : "null") + ',' + var1 + ',' + var2 + ',' + var3 + ',' + 4 + ',' + var5 + ',' + var6 + ',' + (var7 != null ? "{...}" : "null") + ')'); + } + } + + public static Class12 method784(int var0, int var1, int var2) { + TileData var3 = TileData.aTileDataArrayArrayArray2638[var0][var1][var2]; + return var3 != null && var3.aClass12_2230 != null ? var3.aClass12_2230 : null; + } + + public static void method792() { + try { + int var1 = Class137.method1817(); + if (0 == var1) { + Class158.aByteArrayArrayArray2008 = null; + Class136.method1816(0, -7); + } else if (var1 == 1) { + Class3_Sub5.method112((byte) 0); + Class136.method1816(512, -7); + TextureOperation19.method257(); + } else { + Class3_Sub5.method112((byte) (-4 + CSConfigCachefile.anInt1127 & 0xFF)); + Class136.method1816(2, -7); + } + + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "wa.AA(" + 9179409 + ')'); + } + } + + public static Font method1300(int var1, CacheIndex var3, CacheIndex var4) { + //System.out.println("Class 73 " + var1); + return !Class75_Sub4.method1351(var3, 0, var1) ? null : method880(var4.getFile(var1, 0)); + } + + public static void method1301(int plane, int regionY, int regionX, int sceneY, boolean var4, int sceneX) { + try { + if (viewportX != regionX || Class3_Sub7.viewportY != regionY || plane != Class140_Sub3.viewportZ && !NPC.isHighDetail(45)) { + viewportX = regionX; + Class3_Sub7.viewportY = regionY; + Class140_Sub3.viewportZ = plane; + if (NPC.isHighDetail(105)) { + Class140_Sub3.viewportZ = 0; + } + + if (var4) { + Class117.method1719(28); + } else { + Class117.method1719(25); + } + + LoadingBox.draw(true, TextCore.LoadingPleaseWait2); + int var8 = Texture.y1152; + int var7 = Class131.x1716; + Texture.y1152 = regionY * 8 - 48; + Class131.x1716 = 8 * (-6 + regionX); + TextureOperation37.aClass3_Sub28_Sub3_3264 = method884(8 * viewportX, (byte) 88, 8 * Class3_Sub7.viewportY); + int var10 = -var8 + Texture.y1152; + int var9 = Class131.x1716 + -var7; + TextureOperation22.aClass131_3421 = null; + int var11; + NPC var12; + int var13; + if (var4) { + Class163.localNPCCount = 0; + + for (var11 = 0; var11 < 32768; ++var11) { + var12 = NPC.npcs[var11]; + if (null != var12) { + var12.xAxis -= 128 * var9; + var12.yAxis -= 128 * var10; + if (var12.xAxis >= 0 && var12.xAxis <= 13184 && var12.yAxis >= 0 && var12.yAxis <= 13184) { + for (var13 = 0; 10 > var13; ++var13) { + var12.xOffsets2767[var13] -= var9; + var12.yOffsets2755[var13] -= var10; + } + + AudioThread.localNPCIndexes[Class163.localNPCCount++] = var11; + } else { + NPC.npcs[var11].setDefinitions(null); + NPC.npcs[var11] = null; + } + } + } + } else { + for (var11 = 0; var11 < 32768; ++var11) { + var12 = NPC.npcs[var11]; + if (null != var12) { + for (var13 = 0; var13 < 10; ++var13) { + var12.xOffsets2767[var13] -= var9; + var12.yOffsets2755[var13] -= var10; + } + + var12.xAxis -= 128 * var9; + var12.yAxis -= var10 * 128; + } + } + } + + for (var11 = 0; var11 < 2048; ++var11) { + Player var23 = players[var11]; + if (null != var23) { + for (var13 = 0; 10 > var13; ++var13) { + var23.xOffsets2767[var13] -= var9; + var23.yOffsets2755[var13] -= var10; + } + + var23.xAxis -= 128 * var9; + var23.yAxis -= 128 * var10; + } + } + + WorldListCountry.localPlane = plane; + Class102.player.updatePlayerPosition(sceneX, false, sceneY); + byte var25 = 104; + byte var24 = 0; + byte var14 = 0; + byte var16 = 1; + byte var15 = 104; + byte var26 = 1; + if (var10 < 0) { + var16 = -1; + var15 = -1; + var14 = 103; + } + + if (var9 < 0) { + var26 = -1; + var24 = 103; + var25 = -1; + } + + for (int var17 = var24; var25 != var17; var17 += var26) { + for (int var18 = var14; var18 != var15; var18 += var16) { + int var19 = var9 + var17; + int var20 = var18 + var10; + + for (int var21 = 0; 4 > var21; ++var21) { + if (var19 >= 0 && var20 >= 0 && var19 < 104 && var20 < 104) { + Class39.groundItems[var21][var17][var18] = Class39.groundItems[var21][var19][var20]; + } else { + Class39.groundItems[var21][var17][var18] = null; + } + } + } + } + + for (Scenery var27 = (Scenery) Scenery.sceneryList.startIteration(); var27 != null; var27 = (Scenery) Scenery.sceneryList.nextIteration()) { + var27.y -= var10; + var27.x -= var9; + if (0 > var27.x || var27.y < 0 || var27.x >= 104 || var27.y >= 104) { + var27.unlink(); + } + } + + if (var4) { + NPC.anInt3995 -= 128 * var9; + Class77.anInt1111 -= var10 * 128; + Class146.anInt1904 -= var10; + MouseListeningClass.anInt1923 -= var9; + Class157.anInt1996 -= var10; + anInt30 -= var9; + } else { + Class133.anInt1753 = 1; + } + + AudioHandler.currentSoundEffectCount = 0; + if (Class65.anInt987 != 0) { + Class45.anInt733 -= var10; + Class65.anInt987 -= var9; + } + + if (HDToolKit.highDetail && var4 && (Math.abs(var9) > 104 || 104 < Math.abs(var10))) { + TextureOperation31.method236(); + } + + Class58.anInt909 = -1; + TextureOperation17.aLinkedList_3177.clear(); + TextureOperation13.aLinkedList_3364.clear(); + } + } catch (RuntimeException var22) { + throw ClientErrorException.clientError(var22, "k.D(" + plane + ',' + regionY + ',' + regionX + ',' + sceneY + ',' + var4 + ',' + sceneX + ',' + true + ')'); + } + } + + public static InterfaceWidget popNextInterfaceWidget() { + try { + InterfaceWidget var1 = (InterfaceWidget) Class126.aClass13_1666.getFront(); + if (var1 == null) { + do { + var1 = (InterfaceWidget) Class81.aClass13_1139.getFront(); + if (var1 == null) { + return null; + } + + if (var1.b() > TimeUtils.time()) { + return null; + } + + var1.unlink(); + var1.unlinkNode(); + } while ((Long.MIN_VALUE & var1.nodeKey) == 0L); + + return var1; + } else { + var1.unlink(); + var1.unlinkNode(); + return var1; + } + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "k.J(" + (byte) -36 + ')'); + } + } + + public static RSString method1303(RSInterface var0, RSString var1) { + try { + if (var1.indexOf(RSString.parse("(U"), 102) == -1) { + return var1; + } else { + while (true) { + int var3 = var1.indexOf(TextCore.aString_331, 55); + if (var3 == -1) { + while (true) { + var3 = var1.indexOf(TextCore.aString_2080, 106); + if (var3 == -1) { + while (true) { + var3 = var1.indexOf(TextCore.aString_1301, 95); + if (var3 == -1) { + while (true) { + var3 = var1.indexOf(TextCore.aString_852, 57); + if (var3 == -1) { + while (true) { + var3 = var1.indexOf(TextCore.aString_3418, 113); + if (var3 == -1) { + while (true) { + var3 = var1.indexOf(TextCore.aString_1051, 50); + if (var3 == -1) { + return var1; + } + + RSString var4 = RSString.parse(""); + if (null != Class136.aClass64_1778) { + var4 = Class108.method1653(Class136.aClass64_1778.anInt979); + + if (null != Class136.aClass64_1778.anObject974) { + byte[] var5 = ((String) Class136.aClass64_1778.anObject974).getBytes(StandardCharsets.ISO_8859_1); + var4 = TextureOperation33.bufferToString(var5, var5.length, 0); + } + } + + var1 = RSString.stringCombiner(new RSString[]{var1.substring(0, var3, 0), var4, var1.substring(4 + var3)}); + } + } + + var1 = RSString.stringCombiner(new RSString[]{var1.substring(0, var3, 0), Class154.method2148(Class164_Sub2.method2247((byte) -4, 4, var0)), var1.substring(var3 - -2)}); + } + } + + var1 = RSString.stringCombiner(new RSString[]{var1.substring(0, var3, 0), Class154.method2148(Class164_Sub2.method2247((byte) -109, 3, var0)), var1.substring(2 + var3)}); + } + } + + var1 = RSString.stringCombiner(new RSString[]{var1.substring(0, var3, 0), Class154.method2148(Class164_Sub2.method2247((byte) 111, 2, var0)), var1.substring(2 + var3)}); + } + } + + var1 = RSString.stringCombiner(new RSString[]{var1.substring(0, var3, 0), Class154.method2148(Class164_Sub2.method2247((byte) 23, 1, var0)), var1.substring(var3 + 2)}); + } + } + + var1 = RSString.stringCombiner(new RSString[]{var1.substring(0, var3, 0), Class154.method2148(Class164_Sub2.method2247((byte) 107, 0, var0)), var1.substring(2 + var3)}); + } + } + } catch (RuntimeException var7) { + throw ClientErrorException.clientError(var7, "k.K(" + (var0 != null ? "{...}" : "null") + ',' + (var1 != null ? "{...}" : "null") + ',' + 0 + ')'); + } + } + + public static void method2143(byte var0, int var1, int var2, int var3, int var4) { + try { + InterfaceWidget var5 = InterfaceWidget.getWidget(8, var2); + var5.flagUpdate(); + var5.anInt3596 = var1; + if (var0 >= -120) { + anInt1950 = -14; + } + + var5.anInt3598 = var4; + var5.anInt3597 = var3; + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "ve.U(" + var0 + ',' + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ')'); + } + } + + public static void method2065(CacheIndex var1, CacheIndex var2) { + try { + TextureOperation4.configurationsIndex_3227 = var1; + SequenceDefinition.spritesIndex_1852 = var2; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "u.D(" + (byte) -125 + ',' + (var1 != null ? "{...}" : "null") + ',' + (var2 != null ? "{...}" : "null") + ')'); + } + } + + // static final void method2068(NPCDefinition var0, int var1, int var2, int var3, int var4) { + // @Splinter + public static void drawNpcRightClickOptions(NPCDefinition var0, int var1, int var2, int var3, int var4) { + try { + if (menuOptionCount < 400) { + if (var0.childNPCs != null) { + var0 = var0.method1471((byte) 66); + } + + if (null != var0) { + if (var0.aBoolean1270) { + RSString var5 = var0.NPCName; + if (0 != var0.anInt1260) { + RSString var6 = Class158.paramGameTypeID != 1 ? TextCore.HasLevel : TextCore.HasRating; + var5 = RSString.stringCombiner(new RSString[]{var5, Player.combatLevelColor(var0.anInt1260, (byte) -122, Class102.player.COMBAT_LEVEL), TextCore.LEFT_PARENTHESES, var6, RSString.stringAnimator(var0.anInt1260), TextCore.RIGHT_PARENTHESES}); + } + + if (Class164_Sub1.anInt3012 == 1) { + Class3_Sub24_Sub4.pushRightClickMenuAction(Class99.anInt1403, var3, (byte) -125, RSString.stringCombiner(new RSString[]{RenderAnimationDefinition.aString_378, ColorCore.TextColor, var5}), var1, (short) 26, TextCore.HasUse, var4); + } else if (GameObject.aBoolean1837) { + Class3_Sub28_Sub9 var12 = -1 == anInt1038 ? null : LinkedList.method1210(anInt1038); + if ((2 & Class164.anInt2051) != 0 && (var12 == null || var0.method1475(anInt1038, var12.anInt3614) != var12.anInt3614)) { + Class3_Sub24_Sub4.pushRightClickMenuAction(anInt1887, var3, (byte) -93, RSString.stringCombiner(new RSString[]{TextCore.aString_676, ColorCore.TextColor, var5}), var1, (short) 45, Class3_Sub28_Sub9.aString_3621, var4); + } + } else { + RSString[] var11 = var0.options; + if (Class123.aBoolean1656) { + var11 = Class3_Sub31.optionsArrayStringConstructor(var11); + } + + int var7; + if (var11 != null) { + for (var7 = 4; var7 >= 0; --var7) { + if (var11[var7] != null && (Class158.paramGameTypeID != 0 || !var11[var7].equalsStringIgnoreCase(TextCore.HasAttack))) { + byte var8 = 0; + if (var7 == 0) { + var8 = 17; + } + + if (var7 == 1) { + var8 = 16; + } + + int var9 = -1; + if (var7 == 2) { + var8 = 4; + } + + if (var7 == 3) { + var8 = 19; + } + + if (var0.anInt1296 == var7) { + var9 = var0.anInt1253; + } + + if (var0.anInt1289 == var7) { + var9 = var0.anInt1278; + } + + if (var7 == 4) { + var8 = 2; + } + + Class3_Sub24_Sub4.pushRightClickMenuAction(var9, var3, (byte) -103, RSString.stringCombiner(new RSString[]{ColorCore.NPCRightClickColor, var5}), var1, var8, var11[var7], var4); + } + } + } + + if (0 == Class158.paramGameTypeID && var11 != null) { + for (var7 = 4; var7 >= 0; --var7) { + if (null != var11[var7] && var11[var7].equalsStringIgnoreCase(TextCore.HasAttack)) { + short var14 = 0; + if (var0.anInt1260 > Class102.player.COMBAT_LEVEL && !GameConfig.FORCE_LEFT_CLICK_ATTACK) { + var14 = 2000; + //This var sets "attack" as a right click attack option for higher level npcs, let's make it a single click! + } + + short var13 = 0; + if (var7 == 0) { + var13 = 17; + } + + if (var7 == 1) { + var13 = 16; + } + + if (2 == var7) { + var13 = 4; + } + + if (3 == var7) { + var13 = 19; + } + + if (var7 == 4) { + var13 = 2; + } + + if (0 != var13) { + var13 += var14; + } + + Class3_Sub24_Sub4.pushRightClickMenuAction(var0.anInt1298, var3, (byte) -128, RSString.stringCombiner(new RSString[]{ColorCore.NPCRightClickColor, var5}), var1, var13, var11[var7], var4); + } + } + } + + if (GameConfig.NPC_DEBUG_ENABLED) { + Class3_Sub24_Sub4.pushRightClickMenuAction(Class131.anInt1719, var3, (byte) -73, RSString.stringCombiner(new RSString[]{ColorCore.NPCRightClickColor, var5}), var1, (short) 1007, RSString.parse("Examine" + "
" + " ID: (X" + var0.npcId + "(Y"), var4); + } else { + Class3_Sub24_Sub4.pushRightClickMenuAction(Class131.anInt1719, var3, (byte) -73, RSString.stringCombiner(new RSString[]{ColorCore.NPCRightClickColor, var5}), var1, (short) 1007, TextCore.HasExamine, var4); + } + } + + } + } + } + } catch (RuntimeException var10) { + throw ClientErrorException.clientError(var10, "u.A(" + (var0 != null ? "{...}" : "null") + ',' + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ')'); + } + } + + static void method56(int var0) { + InterfaceWidget var2 = InterfaceWidget.getWidget(6, var0); + var2.a(); + } + + static boolean loadInterface(int archive) { + if (!aBooleanArray1703[archive]) { + if (interfacesIndex_3361.method2117(archive)) { + int fileLength = interfacesIndex_3361.getFileAmount(archive); + if (0 == fileLength) { + aBooleanArray1703[archive] = true; + } else { + if (null == GameObject.interfaces1834[archive]) { + GameObject.interfaces1834[archive] = new RSInterface[fileLength]; + } + + for (int fileId = 0; fileId < fileLength; ++fileId) { + if (null == GameObject.interfaces1834[archive][fileId]) { + byte[] var4 = interfacesIndex_3361.getFile(archive, fileId); + if (var4 != null) { + RSInterface iface = GameObject.interfaces1834[archive][fileId] = new RSInterface(); + iface.componentHash = fileId + (archive << 16); + if (var4[0] == -1) { + iface.decodeScriptFormat(new DataBuffer(var4)); + } else { + iface.decodeNoScripts(new DataBuffer(var4)); + } + } + } + } + + aBooleanArray1703[archive] = true; + + } + return true; + } else { + return false; + } + } else { + return true; + } + } + + static void method60(int var0, int var1, int var2, Class91[] var3, int var4, byte var5, byte[] var6, int var7, int var8, int var9, boolean var10) { + int var13; + if (!var10) { + for (int var12 = 0; var12 < 8; ++var12) { + for (var13 = 0; 8 > var13; ++var13) { + if (0 < var1 - -var12 && var12 + var1 < 103 && var13 + var4 > 0 && var4 + var13 < 103) { + var3[var2].anIntArrayArray1304[var12 + var1][var13 + var4] = bitwiseAnd(var3[var2].anIntArrayArray1304[var12 + var1][var13 + var4], -16777217); + } + } + } + } + byte var11; + if (var10) { + var11 = 1; + } else { + var11 = 4; + } + + DataBuffer var25 = new DataBuffer(var6); + + int var14; + int var15; + for (var13 = 0; var13 < var11; ++var13) { + for (var14 = 0; var14 < 64; ++var14) { + for (var15 = 0; var15 < 64; ++var15) { + if (var13 == var7 && var9 <= var14 && 8 + var9 > var14 && var8 <= var15 && var15 < 8 + var8) { + Class167.method2267(0, 0, var10, var25, TextureOperation3.method310(var0, (byte) -117, 7 & var14, 7 & var15) + var4, method519(var0, var15 & 7, var14 & 7) + var1, (byte) 63, var0, var2); + } else { + Class167.method2267(0, 0, var10, var25, -1, -1, (byte) 123, 0, 0); + } + } + } + } + + int var17; + int var21; + int var20; + int var22; + int var29; + while (var25.index < var25.buffer.length) { + var14 = var25.readUnsignedByte(); + if (var14 != 129) { + --var25.index; + break; + } + + for (var15 = 0; var15 < 4; ++var15) { + byte var16 = var25.readSignedByte(); + int var18; + if (var16 != 0) { + if (var16 == 1) { + for (var17 = 0; 64 > var17; var17 += 4) { + for (var18 = 0; var18 < 64; var18 += 4) { + byte var19 = var25.readSignedByte(); + if (var7 >= var15) { + for (var20 = var17; var17 + 4 > var20; ++var20) { + for (var21 = var18; var21 < 4 + var18; ++var21) { + if (var9 <= var20 && 8 + var9 > var20 && var8 <= var21) { + var22 = var1 - -method519(var0, var21 & 7, var20 & 7); + int var23 = TextureOperation3.method310(var0, (byte) -97, 7 & var20, var21 & 7) + var4; + if (0 <= var22 && 104 > var22 && var23 >= 0 && var23 < 104) { + possibleHeightmap1774[var2][var22][var23] = var19; + } + } + } + } + } + } + } + } + } else if (var15 <= var7) { + var18 = 7 + var1; + var17 = var1; + var20 = var4 - -7; + if (var20 < 0) { + var20 = 0; + } else if (104 <= var20) { + var20 = 104; + } + + if (0 <= var18) { + if (var18 >= 104) { + var18 = 104; + } + } else { + var18 = 0; + } + + var29 = var4; + if (var4 < 0) { + var29 = 0; + } else if (104 <= var4) { + var29 = 104; + } + + if (var1 < 0) { + var17 = 0; + } else if (104 <= var1) { + var17 = 104; + } + + while (var18 > var17) { + while (var29 < var20) { + possibleHeightmap1774[var2][var17][var29] = 0; + ++var29; + } + + ++var17; + } + } + } + } + + int var28; + if (HDToolKit.highDetail && !var10) { + AtmosphereParser var26 = null; + + while (var25.buffer.length > var25.index) { + var15 = var25.readUnsignedByte(); + if (var15 == 0) { + var26 = new AtmosphereParser(var25); + } else { + if (var15 != 1) { + throw new IllegalStateException(); + } + + var28 = var25.readUnsignedByte(); + if (var28 > 0) { + for (var17 = 0; var28 > var17; ++var17) { + Class43 var30 = new Class43(var25); + if (var30.anInt705 == 31) { + Class57 var31 = Class81.method1401(var25.readUnsignedShort()); + var30.method1060((byte) 123, var31.anInt896, var31.anInt908, var31.anInt899, var31.anInt907); + } + + var29 = var30.anInt703 >> 7; + var20 = var30.anInt708 >> 7; + if (var30.anInt704 == var7 && var9 <= var29 && var9 - -8 > var29 && var20 >= var8 && var20 < var8 - -8) { + var21 = Class3_Sub26.method514(var0, var30.anInt703 & 1023, 1023 & var30.anInt708) + (var1 << 7); + var22 = TextureOperation28.method293(var30.anInt703 & 1023, var0, 1023 & var30.anInt708) + (var4 << 7); + var30.anInt703 = var21; + var30.anInt708 = var22; + var29 = var30.anInt703 >> 7; + var20 = var30.anInt708 >> 7; + if (var29 >= 0 && var20 >= 0 && 104 > var29 && var20 < 104) { + var30.aBoolean696 = (2 & sceneryTypeMaskGrid[1][var29][var20]) != 0; + var30.anInt697 = Class44.anIntArrayArrayArray723[var30.anInt704][var29][var20] - var30.anInt697; + Class68.method1264(var30); + } + } + } + } + } + } + + if (null == var26) { + var26 = new AtmosphereParser(); + } + + AtmosphereParser.aAtmosphereParserArrayArray1581[var1 >> 3][var4 >> 3] = var26; + } + + var14 = 7 + var1; + var15 = var4 - -7; + + for (var28 = var1; var14 > var28; ++var28) { + for (var17 = var4; var15 > var17; ++var17) { + possibleHeightmap1774[var2][var28][var17] = 0; + } + } + } + + public static int method54(int var0) { + try { + return var0 & 127; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "oe.A(" + var0 + ',' + false + ')'); + } + } + + public static LDIndexedSprite[] method619(byte var0, int var1, CacheIndex var2) { + try { + return GroundItem.method2029((byte) -119, var2, var1) ? (var0 <= 52 ? null : method1281()) : null; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "ml.A(" + var0 + ',' + var1 + ',' + (var2 != null ? "{...}" : "null") + ')'); + } + } + + public static void method383(int var0, int var1) { + try { + if (var1 == Class23.anInt453 && var1 != 0) { + ShaderInterface var2 = anShaderInterfaceArray70[var1]; + var2.method23(TextureOperation37.anInt3263); + } + + if (var0 != -32584) { + method383(60, 23); + } + + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "ka.A(" + var0 + ',' + var1 + ')'); + } + } + + public static int method599(CacheIndex var1) { + try { + int var2 = 0; + if (var1.retrieveSpriteFile(Class154.anInt1966)) { + ++var2; + } + + if (var1.retrieveSpriteFile(CSConfigCachefile.anInt1124)) { + ++var2; + } + + return var2; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "lk.F(" + -20916 + ',' + (var1 != null ? "{...}" : "null") + ')'); + } + } + + public static AbstractSprite method602(int var0, CacheIndex var1) { + try { + // System.out.println("Class3_sub28_Sub16 " + var1); + if (Class75_Sub4.method1351(var1, 0, var0)) { + return Class43.method1062((byte) -18 + 103); + } else { + return null; + } + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "lk.R(" + 0 + ',' + var0 + ',' + (var1 != null ? "{...}" : "null") + ')'); + } + } + + /** + * @param notifyScripts Whether if a listening CS2 script should be invoked if this interface is resized + */ + public static void calculateInterfaceSize(RSInterface iface, int parentWidth, int parentHeight, boolean notifyScripts) { + int oldWidth = iface.width; + int oldHeight = iface.height; + + if (iface.horizontalResize == 0) { + iface.width = iface.defWidth; + } else if (iface.horizontalResize == 1) { + iface.width = parentWidth + -iface.defWidth; + } else if (iface.horizontalResize == 2) { + iface.width = iface.defWidth * parentWidth >> 14; + } else if (iface.horizontalResize == 3) { + if (iface.type == 2) { + iface.width = iface.defWidth * 32 - -((iface.defWidth - 1) * iface.anInt285); + } else if (iface.type == 7) { + iface.width = 115 * iface.defWidth + iface.anInt285 * (-1 + iface.defWidth); + } + } + + if (iface.verticalResize == 0) { + iface.height = iface.defHeight; + } else if (iface.verticalResize == 1) { + iface.height = -iface.defHeight + parentHeight; + } else if (iface.verticalResize == 2) { + iface.height = parentHeight * iface.defHeight >> 14; + } else if (iface.verticalResize == 3) { + if (iface.type == 2) { + iface.height = (iface.defHeight + -1) * iface.anInt290 + iface.defHeight * 32; + } else if (iface.type == 7) { + iface.height = iface.defHeight * 12 + (-1 + iface.defHeight) * iface.anInt290; + } + } + + if (iface.horizontalResize == 4) { + iface.width = iface.anInt216 * iface.height / iface.anInt160; + } + + if (iface.verticalResize == 4) { + iface.height = iface.anInt160 * iface.width / iface.anInt216; + } + + if (ClientCommands.commandQaOpEnabled && (Client.method44(iface).anInt2205 != 0 || iface.type == 0)) { + if (iface.height < 5 && 5 > iface.width) { + iface.height = 5; + iface.width = 5; + } else { + if (iface.width <= 0) { + iface.width = 5; + } + + if (0 >= iface.height) { + iface.height = 5; + } + } + } + + if (iface.anInt189 == 1337) { + aClass11_2091 = iface; + } + + if (notifyScripts && null != iface.anObjectArray235 && (iface.width != oldWidth || iface.height != oldHeight)) { + CS2Script script = new CS2Script(); + script.arguments = iface.anObjectArray235; + script.aClass11_2449 = iface; + Client.aLinkedList_1471.pushBack(script); + } + } + + public static void method606(int var0, Class3_Sub9 var1, int var2, int var3, int var4, int var5) { + try { + if (var5 > 44) { + if (var1.anInt2332 != -1 || var1.anIntArray2333 != null) { + int var6 = 0; + if (var1.anInt2321 < var0) { + var6 += -var1.anInt2321 + var0; + } else if (var1.anInt2326 > var0) { + var6 += var1.anInt2326 - var0; + } + + if (var1.anInt2307 >= var4) { + if (var4 < var1.anInt2308) { + var6 += -var4 + var1.anInt2308; + } + } else { + var6 += -var1.anInt2307 + var4; + } + + if (0 != var1.anInt2328 && var6 - 64 <= var1.anInt2328 && 0 != Sprites.ambientVolume && var2 == var1.anInt2314) { + var6 -= 64; + if (var6 < 0) { + var6 = 0; + } + + int var7 = (-var6 + var1.anInt2328) * Sprites.ambientVolume / var1.anInt2328; + if (var1.aClass3_Sub24_Sub1_2312 == null) { + if (var1.anInt2332 >= 0) { + SynthSound var8 = SynthSound.create(CacheIndex.soundFXIndex, var1.anInt2332, 0); + if (null != var8) { + PcmSound var9 = var8.toPCMSound().method151(Class27.resampler); + Class3_Sub24_Sub1 var10 = Class3_Sub24_Sub1.method437(var9, var7); + Objects.requireNonNull(var10).method429(-1); + Class3_Sub26.aClass3_Sub24_Sub2_2563.method457(var10); + var1.aClass3_Sub24_Sub1_2312 = var10; + } + } + } else { + var1.aClass3_Sub24_Sub1_2312.method419(var7); + } + + if (null != var1.aClass3_Sub24_Sub1_2315) { + var1.aClass3_Sub24_Sub1_2315.method419(var7); + if (!var1.aClass3_Sub24_Sub1_2315.isLinked()) { + var1.aClass3_Sub24_Sub1_2315 = null; + } + } else if (var1.anIntArray2333 != null && ((var1.anInt2316 -= var3) <= 0)) { + int var13 = (int) ((double) var1.anIntArray2333.length * Math.random()); + SynthSound var14 = SynthSound.create(CacheIndex.soundFXIndex, var1.anIntArray2333[var13], 0); + if (null != var14) { + PcmSound var15 = var14.toPCMSound().method151(Class27.resampler); + Class3_Sub24_Sub1 var11 = Class3_Sub24_Sub1.method437(var15, var7); + Objects.requireNonNull(var11).method429(0); + Class3_Sub26.aClass3_Sub24_Sub2_2563.method457(var11); + var1.anInt2316 = (int) ((double) (-var1.anInt2310 + var1.anInt2325) * Math.random()) + var1.anInt2310; + var1.aClass3_Sub24_Sub1_2315 = var11; + } + } + + } else { + if (null != var1.aClass3_Sub24_Sub1_2312) { + Class3_Sub26.aClass3_Sub24_Sub2_2563.method461(var1.aClass3_Sub24_Sub1_2312); + var1.aClass3_Sub24_Sub1_2312 = null; + } + + if (var1.aClass3_Sub24_Sub1_2315 != null) { + Class3_Sub26.aClass3_Sub24_Sub2_2563.method461(var1.aClass3_Sub24_Sub1_2315); + var1.aClass3_Sub24_Sub1_2315 = null; + } + + } + } + } + } catch (RuntimeException var12) { + throw ClientErrorException.clientError(var12, "lk.O(" + var0 + ',' + (var1 != null ? "{...}" : "null") + ',' + var2 + ',' + var3 + ',' + var4 + ',' + var5 + ')'); + } + } + + static void method1180(byte var0, Entity var1) { + try { + RenderAnimationDefinition var2 = var1.getRenderAnimationType(); + var1.anInt2764 = var2.stand_animation; + if (var0 >= -5) { + anIntArray882 = null; + } + + if (var1.anInt2816 == 0) { + var1.anInt2824 = 0; + } else { + if (var1.anInt2771 != -1 && 0 == var1.anInt2828) { + SequenceDefinition var3 = SequenceDefinition.getAnimationDefinition(var1.anInt2771); + if (var1.anInt2811 > 0 && var3.resetWhenWalk == 0) { + ++var1.anInt2824; + return; + } + + if (var1.anInt2811 <= 0 && var3.priority == 0) { + ++var1.anInt2824; + return; + } + } + + int var18 = var1.xAxis; + int var4 = var1.yAxis; + int var5 = var1.xOffsets2767[-1 + var1.anInt2816] * 128 - -(var1.getSize() * 64); + int var6 = 128 * var1.yOffsets2755[-1 + var1.anInt2816] - -(var1.getSize() * 64); + if (var5 + -var18 > 256 || -var18 + var5 < -256 || var6 - var4 > 256 || -256 > var6 - var4) { + var1.xAxis = var5; + var1.yAxis = var6; + return; + } + + if (var5 <= var18) { + if (var18 <= var5) { + if (var6 <= var4) { + if (var6 < var4) { + var1.anInt2806 = 0; + } + } else { + var1.anInt2806 = 1024; + } + } else if (var6 > var4) { + var1.anInt2806 = 768; + } else if (var6 < var4) { + var1.anInt2806 = 256; + } else { + var1.anInt2806 = 512; + } + } else if (var6 > var4) { + var1.anInt2806 = 1280; + } else if (var4 > var6) { + var1.anInt2806 = 1792; + } else { + var1.anInt2806 = 1536; + } + + int var7 = 2047 & -var1.anInt2785 + var1.anInt2806; + int var8 = var2.walk_follow_full_turn_anim; + if (1024 < var7) { + var7 -= 2048; + } + + boolean var10 = true; + byte var11 = 1; + if (var7 >= -256 && var7 <= 256) { + var8 = var2.walk_animation; + } else if (var7 >= 256 && 768 > var7) { + var8 = var2.walk_follow_cw_turn_anim; + } else if (var7 >= -768 && -256 >= var7) { + var8 = var2.walk_follow_ccw_turn_anim; + } + + int var9 = 4; + if (var8 == -1) { + var8 = var2.walk_animation; + } + + var1.anInt2764 = var8; + if (var1 instanceof NPC) { + var10 = ((NPC) var1).definition.aBoolean1255; + } + + if (var10) { + if (var1.anInt2806 != var1.anInt2785 && var1.anInt2772 == -1 && var1.anInt2779 != 0) { + var9 = 2; + } + + if (2 < var1.anInt2816) { + var9 = 6; + } + + if (3 < var1.anInt2816) { + var9 = 8; + } + + if (var1.anInt2824 > 0 && var1.anInt2816 > 1) { + var9 = 8; + --var1.anInt2824; + } + } else { + if (1 < var1.anInt2816) { + var9 = 6; + } + + if (var1.anInt2816 > 2) { + var9 = 8; + } + + if (var1.anInt2824 > 0 && var1.anInt2816 > 1) { + --var1.anInt2824; + var9 = 8; + } + } + + if (2 == var1.aByteArray2795[var1.anInt2816 - 1]) { + var9 <<= 1; + var11 = 2; + } else if (var1.aByteArray2795[-1 + var1.anInt2816] == 0) { + var11 = 0; + var9 >>= 1; + } + + if (var9 >= 8 && -1 != var2.run_anim) { + if (var1.anInt2764 == var2.walk_follow_full_turn_anim && -1 != var2.run_follow_full_turn_anim) { + var1.anInt2764 = var2.run_follow_full_turn_anim; + } else if (var1.anInt2764 == var2.walk_follow_ccw_turn_anim && var2.run_follow_ccw_turn_anim != -1) { + var1.anInt2764 = var2.run_follow_ccw_turn_anim; + } else if (var2.walk_follow_cw_turn_anim == var1.anInt2764 && var2.run_follow_cw_turn_anim != -1) { + var1.anInt2764 = var2.run_follow_cw_turn_anim; + } else { + var1.anInt2764 = var2.run_anim; + } + } else if (var2.slow_walk_anim != -1 && var11 == 0) { + if (var1.anInt2764 == var2.walk_follow_full_turn_anim && var2.slow_walk_follow_full_turn_anim != -1) { + var1.anInt2764 = var2.slow_walk_follow_full_turn_anim; + } else if (var1.anInt2764 == var2.walk_follow_ccw_turn_anim && -1 != var2.slow_walk_follow_ccw_turn_anim) { + var1.anInt2764 = var2.slow_walk_follow_ccw_turn_anim; + } else if (var2.walk_follow_cw_turn_anim == var1.anInt2764 && -1 != var2.slow_walk_follow_cw_turn_anim) { + var1.anInt2764 = var2.slow_walk_follow_cw_turn_anim; + } else { + var1.anInt2764 = var2.slow_walk_anim; + } + } + + if (var2.movement_acceleration != -1) { + var9 <<= 7; + if (var1.anInt2816 == 1) { + int var13 = (var1.xAxis <= var5 ? var5 - var1.xAxis : -var5 + var1.xAxis) << 7; + int var12 = var1.anInt2758 * var1.anInt2758; + int var14 = (var1.yAxis > var6 ? -var6 + var1.yAxis : -var1.yAxis + var6) << 7; + int var15 = var13 > var14 ? var13 : var14; + int var16 = var2.movement_acceleration * 2 * var15; + if (var12 <= var16) { + if (var12 / 2 > var15) { + var1.anInt2758 -= var2.movement_acceleration; + if (var1.anInt2758 < 0) { + var1.anInt2758 = 0; + } + } else if (var1.anInt2758 < var9) { + var1.anInt2758 += var2.movement_acceleration; + if (var1.anInt2758 > var9) { + var1.anInt2758 = var9; + } + } + } else { + var1.anInt2758 /= 2; + } + } else if (var1.anInt2758 < var9) { + var1.anInt2758 += var2.movement_acceleration; + if (var1.anInt2758 > var9) { + var1.anInt2758 = var9; + } + } else { + var1.anInt2758 -= var2.movement_acceleration; + if (0 > var1.anInt2758) { + var1.anInt2758 = 0; + } + } + + var9 = var1.anInt2758 >> 7; + if (var9 < 1) { + var9 = 1; + } + } + + if (var5 > var18) { + var1.xAxis += var9; + if (var1.xAxis > var5) { + var1.xAxis = var5; + } + } else if (var18 > var5) { + var1.xAxis -= var9; + if (var1.xAxis < var5) { + var1.xAxis = var5; + } + } + + if (var4 >= var6) { + if (var6 < var4) { + var1.yAxis -= var9; + if (var6 > var1.yAxis) { + var1.yAxis = var6; + } + } + } else { + var1.yAxis += var9; + if (var6 < var1.yAxis) { + var1.yAxis = var6; + } + } + + if (var5 == var1.xAxis && var6 == var1.yAxis) { + --var1.anInt2816; + if (0 < var1.anInt2811) { + --var1.anInt2811; + } + } + } + + } catch (RuntimeException var17) { + throw ClientErrorException.clientError(var17, "ia.C(" + var0 + ',' + (var1 != null ? "{...}" : "null") + ')'); + } + } + + static int method1184(int var0, byte var1) { + try { + int var3 = var0 & 63; + int var4 = (var0 & 217) >> 6; + if (var3 == 18) { + if (0 == var4) { + return 1; + } + + if (var4 == 1) { + return 2; + } + + if (var4 == 2) { + return 4; + } + + return 8; + } else if (var3 == 19 || var3 == 21) { + if (var4 == 0) { + return 16; + } + + if (1 == var4) { + return 32; + } + + if (var4 == 2) { + return 64; + } + + return 128; + } + + return 0; + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "ia.A(" + var0 + ',' + var1 + ')'); + } + } + + public static boolean method73(short var0) { + try { + if (var0 != 47 && var0 != 5 && var0 != 43 && var0 != 35 && var0 != 58 && var0 != 22 && var0 != 40 && var0 != 3) { + if (var0 != 9 && var0 != 12 && var0 != 1006 && var0 != 1003) { + + return var0 == 25 || var0 == 23 || 48 == var0 || var0 == 7 || var0 == 13 || (var0 == 8 || var0 == 32 || var0 == 28 || var0 == 59 || var0 == 51 || var0 == 41); + } else { + return true; + } + } else { + return true; + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "aa.C(" + var0 + ',' + 121 + ')'); + } + } + + public static void method75(RSInterface[] var0, int var2) { + try { + for (int var3 = 0; var0.length > var3; ++var3) { + RSInterface var4 = var0[var3]; + if (null != var4) { + if (var4.type == 0) { + if (null != var4.aClass11Array262) { + method75(var4.aClass11Array262, var2); + } + + Class3_Sub31 var5 = TextureOperation23.aHashTable_3208.get(var4.componentHash); + if (null != var5) { + Class3_Sub8.method124(49, var2, var5.anInt2602); + } + } + + CS2Script var7; + if (var2 == 0 && null != var4.anObjectArray206) { + var7 = new CS2Script(); + var7.arguments = var4.anObjectArray206; + var7.aClass11_2449 = var4; + Class43.method1065(var7); + } + + if (var2 == 1 && var4.anObjectArray176 != null) { + if (var4.anInt191 >= 0) { + RSInterface var8 = getRSInterface(var4.componentHash); + if (null == var8 || null == var8.aClass11Array262 || var8.aClass11Array262.length <= var4.anInt191 || var8.aClass11Array262[var4.anInt191] != var4) { + continue; + } + } + + var7 = new CS2Script(); + var7.arguments = var4.anObjectArray176; + var7.aClass11_2449 = var4; + Class43.method1065(var7); + } + } + } + + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "aa.I(" + (var0 != null ? "{...}" : "null") + ',' + true + ',' + var2 + ')'); + } + } + + public static boolean method76(int var0, int var1, int var2, int var3, int var4, boolean var5, int var6, int var7, int var8, int var9, int var11) { + try { + int var12; + int var13; + for (var12 = 0; 104 > var12; ++var12) { + for (var13 = 0; var13 < 104; ++var13) { + Class84.anIntArrayArray1160[var12][var13] = 0; + Class97.anIntArrayArray1373[var12][var13] = 99999999; + } + } + + Class84.anIntArrayArray1160[var11][var3] = 99; + Class97.anIntArrayArray1373[var11][var3] = 0; + var13 = var3; + var12 = var11; + byte var14 = 0; + TextureOperation38.anIntArray3456[var14] = var11; + boolean var16 = false; + int var15 = 0; + int var27 = var14 + 1; + Class45.anIntArray729[var14] = var3; + int[][] var17 = AtmosphereParser.aClass91Array1182[WorldListCountry.localPlane].anIntArrayArray1304; + + int var18; + while (var15 != var27) { + var12 = TextureOperation38.anIntArray3456[var15]; + var13 = Class45.anIntArray729[var15]; + var15 = 4095 & var15 - -1; + if (var8 == var12 && var13 == var4) { + var16 = true; + break; + } + + if (var1 != 0) { + if ((5 > var1 || var1 == 10) && AtmosphereParser.aClass91Array1182[WorldListCountry.localPlane].method1488(var4, var12, var13, var8, -1 + var1, 2, var7)) { + var16 = true; + break; + } + + if (var1 < 10 && AtmosphereParser.aClass91Array1182[WorldListCountry.localPlane].method1492(var4, var1 + -1, var8, var13, 2, var7, var12, 88)) { + var16 = true; + break; + } + } + + if (0 != var0 && var6 != 0 && AtmosphereParser.aClass91Array1182[WorldListCountry.localPlane].method1498(var8, var13, var12, 2, var0, var2, var4, var6)) { + var16 = true; + break; + } + + var18 = Class97.anIntArrayArray1373[var12][var13] - -1; + if (var12 > 0 && Class84.anIntArrayArray1160[var12 + -1][var13] == 0 && 0 == (var17[-1 + var12][var13] & 19661070) && (var17[-1 + var12][var13 + 1] & 19661112) == 0) { + TextureOperation38.anIntArray3456[var27] = var12 + -1; + Class45.anIntArray729[var27] = var13; + var27 = 1 + var27 & 4095; + Class84.anIntArrayArray1160[var12 - 1][var13] = 2; + Class97.anIntArrayArray1373[-1 + var12][var13] = var18; + } + + if (102 > var12 && Class84.anIntArrayArray1160[1 + var12][var13] == 0 && 0 == (var17[2 + var12][var13] & 19661187) && 0 == (var17[var12 + 2][1 + var13] & 19661280)) { + TextureOperation38.anIntArray3456[var27] = 1 + var12; + Class45.anIntArray729[var27] = var13; + var27 = 4095 & var27 + 1; + Class84.anIntArrayArray1160[var12 - -1][var13] = 8; + Class97.anIntArrayArray1373[var12 - -1][var13] = var18; + } + + if (var13 > 0 && Class84.anIntArrayArray1160[var12][var13 + -1] == 0 && (19661070 & var17[var12][-1 + var13]) == 0 && (var17[var12 + 1][var13 - 1] & 19661187) == 0) { + TextureOperation38.anIntArray3456[var27] = var12; + Class45.anIntArray729[var27] = -1 + var13; + Class84.anIntArrayArray1160[var12][-1 + var13] = 1; + Class97.anIntArrayArray1373[var12][-1 + var13] = var18; + var27 = 4095 & 1 + var27; + } + + if (var13 < 102 && Class84.anIntArrayArray1160[var12][var13 + 1] == 0 && (var17[var12][2 + var13] & 19661112) == 0 && (var17[1 + var12][var13 + 2] & 19661280) == 0) { + TextureOperation38.anIntArray3456[var27] = var12; + Class45.anIntArray729[var27] = var13 + 1; + Class84.anIntArrayArray1160[var12][1 + var13] = 4; + var27 = 1 + var27 & 4095; + Class97.anIntArrayArray1373[var12][var13 - -1] = var18; + } + + if (var12 > 0 && var13 > 0 && Class84.anIntArrayArray1160[-1 + var12][-1 + var13] == 0 && (19661112 & var17[-1 + var12][var13]) == 0 && 0 == (var17[-1 + var12][-1 + var13] & 19661070) && 0 == (19661187 & var17[var12][-1 + var13])) { + TextureOperation38.anIntArray3456[var27] = -1 + var12; + Class45.anIntArray729[var27] = -1 + var13; + Class84.anIntArrayArray1160[-1 + var12][-1 + var13] = 3; + Class97.anIntArrayArray1373[-1 + var12][-1 + var13] = var18; + var27 = 4095 & var27 + 1; + } + + if (var12 < 102 && 0 < var13 && Class84.anIntArrayArray1160[1 + var12][var13 + -1] == 0 && (var17[var12 - -1][var13 - 1] & 19661070) == 0 && (19661187 & var17[2 + var12][var13 + -1]) == 0 && (19661280 & var17[var12 + 2][var13]) == 0) { + TextureOperation38.anIntArray3456[var27] = var12 - -1; + Class45.anIntArray729[var27] = var13 - 1; + var27 = 4095 & 1 + var27; + Class84.anIntArrayArray1160[var12 - -1][-1 + var13] = 9; + Class97.anIntArrayArray1373[1 + var12][var13 + -1] = var18; + } + + if (var12 > 0 && var13 < 102 && 0 == Class84.anIntArrayArray1160[var12 - 1][var13 + 1] && (var17[-1 + var12][var13 - -1] & 19661070) == 0 && 0 == (19661112 & var17[-1 + var12][var13 - -2]) && (19661280 & var17[var12][var13 + 2]) == 0) { + TextureOperation38.anIntArray3456[var27] = var12 - 1; + Class45.anIntArray729[var27] = 1 + var13; + Class84.anIntArrayArray1160[var12 - 1][1 + var13] = 6; + Class97.anIntArrayArray1373[-1 + var12][1 + var13] = var18; + var27 = 1 + var27 & 4095; + } + + if (var12 < 102 && var13 < 102 && Class84.anIntArrayArray1160[1 + var12][1 + var13] == 0 && (19661112 & var17[var12 - -1][2 + var13]) == 0 && (19661280 & var17[var12 + 2][var13 - -2]) == 0 && (19661187 & var17[var12 - -2][var13 + 1]) == 0) { + TextureOperation38.anIntArray3456[var27] = 1 + var12; + Class45.anIntArray729[var27] = var13 + 1; + var27 = var27 - -1 & 4095; + Class84.anIntArrayArray1160[var12 - -1][var13 + 1] = 12; + Class97.anIntArrayArray1373[1 + var12][1 + var13] = var18; + } + } + + Class129.anInt1692 = 0; + int var19; + if (!var16) { + if (!var5) { + return false; + } + + var18 = 1000; + var19 = 100; + byte var20 = 10; + + for (int var21 = -var20 + var8; var20 + var8 >= var21; ++var21) { + for (int var22 = var4 + -var20; var20 + var4 >= var22; ++var22) { + if (var21 >= 0 && var22 >= 0 && var21 < 104 && 104 > var22 && Class97.anIntArrayArray1373[var21][var22] < 100) { + int var23 = 0; + int var24 = 0; + if (var8 <= var21) { + if (-1 + var0 + var8 < var21) { + var23 = var21 + 1 + -var0 + -var8; + } + } else { + var23 = var8 - var21; + } + + if (var22 >= var4) { + if (-1 + var4 + var6 < var22) { + var24 = -var4 + -var6 + 1 + var22; + } + } else { + var24 = -var22 + var4; + } + + int var25 = var23 * var23 + var24 * var24; + if (var25 < var18 || var25 == var18 && Class97.anIntArrayArray1373[var21][var22] < var19) { + var13 = var22; + var19 = Class97.anIntArrayArray1373[var21][var22]; + var18 = var25; + var12 = var21; + } + } + } + } + + if (var18 == 1000) { + return false; + } + + if (var11 == var12 && var3 == var13) { + return false; + } + + Class129.anInt1692 = 1; + } + + byte var28 = 0; + TextureOperation38.anIntArray3456[var28] = var12; + var15 = var28 + 1; + Class45.anIntArray729[var28] = var13; + var18 = var19 = Class84.anIntArrayArray1160[var12][var13]; + + for (; var12 != var11 || var13 != var3; var18 = Class84.anIntArrayArray1160[var12][var13]) { + if (var19 != var18) { + TextureOperation38.anIntArray3456[var15] = var12; + Class45.anIntArray729[var15++] = var13; + var19 = var18; + } + + if ((var18 & 2) != 0) { + ++var12; + } else if ((8 & var18) != 0) { + --var12; + } + + if ((var18 & 1) == 0) { + if ((var18 & 4) != 0) { + --var13; + } + } else { + ++var13; + } + } + + if (var15 <= 0) { + return 1 != var9; + } else { + TextureOperation7.method299(113, var15, var9); + return true; + } + } catch (RuntimeException var26) { + throw ClientErrorException.clientError(var26, "aa.A(" + var0 + ',' + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + var5 + ',' + var6 + ',' + var7 + ',' + var8 + ',' + var9 + ',' + 127 + ',' + var11 + ')'); + } + } + + public static void method78(int var0, int var2) { + try { + TextureOperation12.outgoingBuffer.putOpcode(132); + TextureOperation12.outgoingBuffer.writeIntV1(var2); + TextureOperation12.outgoingBuffer.writeShortLE(var0); + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "aa.E(" + var0 + ',' + false + ',' + var2 + ')'); + } + } + + public static void method81(RSInterface var1) { + try { + + int var2 = var1.anInt189; + if (324 == var2) { + if (-1 == TextureOperation37.anInt3260) { + TextureOperation37.anInt3260 = var1.spriteArchiveId; + anInt1165 = var1.anInt296; + } + + if (aClass52_1112.aBoolean864) { + var1.spriteArchiveId = TextureOperation37.anInt3260; + } else { + var1.spriteArchiveId = anInt1165; + } + + } else if (var2 == 325) { + if (-1 == TextureOperation37.anInt3260) { + anInt1165 = var1.anInt296; + TextureOperation37.anInt3260 = var1.spriteArchiveId; + } + + if (aClass52_1112.aBoolean864) { + var1.spriteArchiveId = anInt1165; + } else { + var1.spriteArchiveId = TextureOperation37.anInt3260; + } + + } else if (var2 == 327) { + var1.anInt182 = 150; + var1.anInt308 = 2047 & (int) (Math.sin((double) Class44.anInt719 / 40.0D) * 256.0D); + var1.modelType = 5; + var1.itemId = -1; + } else if (var2 == 328) { + if (null == Class102.player.displayName) { + var1.itemId = 0; + } else { + var1.anInt182 = 150; + var1.anInt308 = 2047 & (int) (256.0D * Math.sin((double) Class44.anInt719 / 40.0D)); + var1.modelType = 5; + var1.itemId = 2047 + ((int) Class102.player.displayName.toLong() << 11); + var1.anInt260 = Class102.player.anInt2793; + var1.anInt267 = 0; + var1.animationId = Class102.player.anInt2764; + var1.anInt283 = Class102.player.anInt2813; + } + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "aa.H(" + (byte) -128 + ',' + (var1 != null ? "{...}" : "null") + ')'); + } + } + + public static boolean method1088(boolean var0) { + try { + if (paramJavaScriptEnabled) { + try { + TextCore.aString_106.method1577(Class38.gameSignlink.gameApplet); + return true; + } catch (Throwable var2) { + } + } + + if (var0) { + aReferenceCache_743 = null; + } + + return false; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "gn.K(" + var0 + ')'); + } + } + + public static Class3_Sub28_Sub5 method1089(CacheIndex cacheIndex0, CacheIndex var2, int frameId) { + try { + boolean var5 = true; + int[] var6 = cacheIndex0.getFileIds(frameId); + + for (int var7 = 0; var7 < Objects.requireNonNull(var6).length; ++var7) { + byte[] var8 = cacheIndex0.method2140(var6[var7], frameId); + if (var8 == null) { + var5 = false; + } else { + int var9 = (255 & var8[0]) << 8 | var8[1] & 0xFF; + byte[] var10; + var10 = var2.method2140(0, var9); + + if (null == var10) { + // System.out.println("Roar , " + var9); + var5 = false; + } + } + } + if (var5) { + try { + return new Class3_Sub28_Sub5(cacheIndex0, var2, frameId); + } catch (Exception var11) { + var11.printStackTrace(); + return null; + } + } else { + return null; + } + } catch (RuntimeException var12) { + throw ClientErrorException.clientError(var12, "gn.J(" + (cacheIndex0 != null ? "{...}" : "null") + ',' + false + ',' + (var2 != null ? "{...}" : "null") + ',' + (byte) 118 + ',' + frameId + ')'); + } + } + + public static RSString emptyString(int capacit) { + RSString str = new RSString(); + str.length = 0; + str.buffer = new byte[capacit]; + return str; + } + + public static void method1091(boolean var0, int var1) { + try { + byte var2; + byte[][] var3; + if (HDToolKit.highDetail && var0) { + var2 = 1; + var3 = Class40.aByteArrayArray3669; + } else { + var2 = 4; + var3 = Class164_Sub2.aByteArrayArray3027; + } + + int var4 = var3.length; + + int var5; + int var6; + int var7; + byte[] var8; + for (var5 = 0; var5 < var4; ++var5) { + var6 = -Class131.x1716 + 64 * (Class3_Sub24_Sub3.regionIds[var5] >> 8); + var7 = -Texture.y1152 + 64 * (255 & Class3_Sub24_Sub3.regionIds[var5]); + var8 = var3[var5]; + if (null != var8) { + Class58.method1194(); + method777(AtmosphereParser.aClass91Array1182, var0, -48 + 8 * viewportX, var7, var6, (Class3_Sub7.viewportY + -6) * 8, var8); + } + } + + var5 = 0; + if (var1 > -66) { + method1088(true); + } + + for (; var5 < var4; ++var5) { + var6 = -Class131.x1716 + 64 * (Class3_Sub24_Sub3.regionIds[var5] >> 8); + var7 = -Texture.y1152 + 64 * (255 & Class3_Sub24_Sub3.regionIds[var5]); + var8 = var3[var5]; + if (var8 == null && Class3_Sub7.viewportY < 800) { + Class58.method1194(); + + for (int var9 = 0; var9 < var2; ++var9) { + Class12.method870(var9, (byte) 102, var7, var6, 64, 64); + } + } + } + + } catch (RuntimeException var10) { + throw ClientErrorException.clientError(var10, "gn.I(" + var0 + ',' + var1 + ')'); + } + } + + public static void method1093(boolean var0) { + try { + if (var0) { + method1093(true); + } + + for (int var1 = 0; var1 < 100; ++var1) { + aBooleanArray3674[var1] = true; + } + + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "gn.H(" + var0 + ')'); + } + } + + public static void method1095(int var0, int var1, int var2, RSInterface[] var3, int var4, int var5, int var6, int var7, byte var8, int var9) { + try { + if (HDToolKit.highDetail) { + Class22.setClipping(var0, var6, var4, var7); + } else { + Class74.setClipping(var0, var6, var4, var7); + Class51.method1134(); + } + + for (RSInterface var11 : var3) { + if (var11 != null && (var5 == var11.parentId || var5 == -1412584499 && var11 == Class56.aClass11_886)) { + int var12; + if (var9 == -1) { + AudioChannel.anIntArray1969[Class3_Sub28_Sub3.anInt3557] = var2 + var11.anInt306; + Player.anIntArray3954[Class3_Sub28_Sub3.anInt3557] = var11.anInt210 - -var1; + Class3_Sub28_Sub18.anIntArray3768[Class3_Sub28_Sub3.anInt3557] = var11.width; + Entity.anIntArray2794[Class3_Sub28_Sub3.anInt3557] = var11.height; + var12 = Class3_Sub28_Sub3.anInt3557++; + } else { + var12 = var9; + } + + var11.anInt204 = Class44.anInt719; + var11.anInt292 = var12; + if (!var11.usingScripts || !Client.method51(var11)) { + if (0 < var11.anInt189) { + method81(var11); + } + + int var14 = var1 + var11.anInt210; + int alpha = var11.anInt223; + int var13 = var11.anInt306 + var2; + if (ClientCommands.commandQaOpEnabled && (0 != Client.method44(var11).anInt2205 || var11.type == 0) && alpha > 127) { + alpha = 127; + } + + int var17; + int var16; + if (var11 == Class56.aClass11_886) { + if (var5 != -1412584499 && !var11.aBoolean200) { + anInt3602 = var2; + anInt1082 = var1; + Class8.aClass11Array1836 = var3; + continue; + } + + if (NPC.aBoolean3975 && Class85.aBoolean1167) { + var17 = anInt1709; + var16 = Class126.anInt1676; + var17 -= Class95.anInt1336; + if (var17 < Class134.anInt1761) { + var17 = Class134.anInt1761; + } + + if (PacketParser.aClass11_88.height + Class134.anInt1761 < var17 + var11.height) { + var17 = -var11.height + PacketParser.aClass11_88.height + Class134.anInt1761; + } + + var14 = var17; + var16 -= anInt1881; + if (TextureOperation20.anInt3156 > var16) { + var16 = TextureOperation20.anInt3156; + } + + if (var11.width + var16 > PacketParser.aClass11_88.width + TextureOperation20.anInt3156) { + var16 = -var11.width + PacketParser.aClass11_88.width + TextureOperation20.anInt3156; + } + + var13 = var16; + } + + if (!var11.aBoolean200) { + alpha = 128; + } + } + + int var19; + int var18; + int var21; + int var20; + if (2 == var11.type) { + var19 = var7; + var18 = var4; + var17 = var6; + var16 = var0; + } else { + var17 = var6 < var14 ? var14 : var6; + var16 = var13 > var0 ? var13 : var0; + var20 = var11.width + var13; + var21 = var14 - -var11.height; + if (var11.type == 9) { + ++var21; + ++var20; + } + + var19 = var7 <= var21 ? var7 : var21; + var18 = var4 <= var20 ? var4 : var20; + } + + if (!var11.usingScripts || var16 < var18 && var19 > var17) { + int var23; + int var22; + int var25; + int var24; + int var26; + int var29; + int var28; + int var47; + if (var11.anInt189 != 0) { + if (var11.anInt189 == 1337 || var11.anInt189 == 1403 && HDToolKit.highDetail) { + aClass11_2091 = var11; + anInt2567 = var14; + Class53.anInt865 = var13; + method338(var11.height, var11.anInt189 == 1403, var13, var11.width, var14); + if (HDToolKit.highDetail) { + Class22.setClipping(var0, var6, var4, var7); + } else { + Class74.setClipping(var0, var6, var4, var7); + } + continue; + } + + if (var11.anInt189 == 1338) { + if (!var11.method855()) { + continue; + } + + Minimap.displayMinimap(var12, (byte) 59, var14, var13, var11); + if (HDToolKit.highDetail) { + Class22.setClipping(var0, var6, var4, var7); + } else { + Class74.setClipping(var0, var6, var4, var7); + } + + if (0 != Class161.anInt2028 && 3 != Class161.anInt2028 || Class38_Sub1.aBoolean2615 || var16 > NPCDefinition.anInt1297 || var17 > Class38_Sub1.anInt2612 || var18 <= NPCDefinition.anInt1297 || Class38_Sub1.anInt2612 >= var19) { + continue; + } + + var20 = NPCDefinition.anInt1297 - var13; + var21 = -var14 + Class38_Sub1.anInt2612; + var22 = var11.anIntArray207[var21]; + if (var22 > var20 || var22 + var11.anIntArray291[var21] < var20) { + continue; + } + + var21 -= var11.height / 2; + var23 = 2047 & GraphicDefinition.CAMERA_DIRECTION - -TextureOperation9.anInt3102; + var20 -= var11.width / 2; + var24 = Class51.anIntArray840[var23]; + var25 = Class51.anIntArray851[var23]; + var24 = (Class164_Sub2.anInt3020 + 256) * var24 >> 8; + var25 = (Class164_Sub2.anInt3020 - -256) * var25 >> 8; + var47 = -(var24 * var20) + var25 * var21 >> 11; + var26 = var21 * var24 - -(var20 * var25) >> 11; + var28 = Class102.player.xAxis + var26 >> 7; + var29 = -var47 + Class102.player.yAxis >> 7; + if (GameObject.aBoolean1837 && 0 != (Class164.anInt2051 & 64)) { + RSInterface var53 = AbstractSprite.method638(BufferedDataStream.anInt872, RSInterface.anInt278); + if (null == var53) { + Class25.method958((byte) -91); + } else { + Class3_Sub24_Sub4.pushRightClickMenuAction(anInt1887, 1L, (byte) -49, TextCore.aString_1724, var28, (short) 11, Class3_Sub28_Sub9.aString_3621, var29); + } + continue; + } + + if (Class158.paramGameTypeID == 1) { + Class3_Sub24_Sub4.pushRightClickMenuAction(-1, 1L, (byte) -41, RSString.parse(""), var28, (short) 36, TextCore.HasFaceHere, var29); + } + + Class3_Sub24_Sub4.pushRightClickMenuAction(-1, 1L, (byte) -125, RSString.parse(""), var28, (short) 60, TextureOperation32.aString_3353, var29); + continue; + } + + if (var11.anInt189 == 1339) { + if (var11.method855()) { + Compass.drawCompass(var13, var14, var11, var12); + if (HDToolKit.highDetail) { + Class22.setClipping(var0, var6, var4, var7); + } else { + Class74.setClipping(var0, var6, var4, var7); + } + } + continue; + } + + if (var11.anInt189 == 1400) { + GroundItemLink.drawWorldMap(var13, var14, var11.height, var11.width); + aBooleanArray3674[var12] = true; + Class163_Sub1_Sub1.aBooleanArray4008[var12] = true; + if (HDToolKit.highDetail) { + Class22.setClipping(var0, var6, var4, var7); + } else { + Class74.setClipping(var0, var6, var4, var7); + } + continue; + } + + if (var11.anInt189 == 1401) { + Class1.worldMapMinimap(var13, var11.height, var11.width, var14); + aBooleanArray3674[var12] = true; + Class163_Sub1_Sub1.aBooleanArray4008[var12] = true; + if (HDToolKit.highDetail) { + Class22.setClipping(var0, var6, var4, var7); + } else { + Class74.setClipping(var0, var6, var4, var7); + } + continue; + } + + if (1402 == var11.anInt189) { + if (!HDToolKit.highDetail) { + Class129.method1768(var13, var14); + aBooleanArray3674[var12] = true; + Class163_Sub1_Sub1.aBooleanArray4008[var12] = true; + } + continue; + } + + if (var11.anInt189 == 1405) { + if (DeveloperConsole.INSTANCE.getOpen()) { + gameWindowWidth = var11.width + var13; + } + + if (ClientCommands.fpsOverlayEnabled) { + var20 = var11.width + var13; + var21 = 15 + var14; + FontType.plainFont.drawStringRightAnchor(RSString.stringCombiner(new RSString[]{RSString.parse("Fps:"), RSString.stringAnimator(SequenceDefinition.anInt1862)}), var20, var21, 16776960, -1);//Class72.stringAnimator(SequenceDefinition.anInt1862)}), var20, var21, 16776960, -1); + var21 += 15; + Runtime var57 = Runtime.getRuntime(); + var23 = (int) ((var57.totalMemory() + -var57.freeMemory()) / 1024L); + var24 = 16776960; + if (var23 > 65536) { + var24 = 16711680; + } + + FontType.plainFont.drawStringRightAnchor(RSString.stringCombiner(new RSString[]{TextCore.aString_4057, RSString.stringAnimator(var23), TextCore.Memoryk}), var20, var21, var24, -1); + var21 += 15; + if (HDToolKit.highDetail) { + var24 = 16776960; + var25 = (Class31.anInt580 + Class31.anInt585 + Class31.memory2D) / 1024; + if (65536 < var25) { + var24 = 16711680; + } + + FontType.plainFont.drawStringRightAnchor(RSString.stringCombiner(new RSString[]{TextCore.aString_1622, RSString.stringAnimator(var25), TextCore.Memoryk}), var20, var21, var24, -1); + var21 += 15; + } + + var24 = 16776960; + var25 = 0; + var47 = 0; + var26 = 0; + + for (var28 = 0; var28 < 29; ++var28) { //TODO: + var25 += aClass151_Sub1Array2601[var28].method2108(); + var26 += aClass151_Sub1Array2601[var28].method2102(); + var47 += aClass151_Sub1Array2601[var28].method2106(); + } + + var29 = 10000 * var26 / var25; + var28 = var47 * 100 / var25; + RSString var55 = RSString.stringCombiner(new RSString[]{TextCore.aString_436, Class3_Sub23.method407(0, true, 2, var29), TextCore.aString_2498, RSString.stringAnimator(var28), RSString.parse("(U(Y")}); + FontType.smallFont.drawStringRightAnchor(var55, var20, var21, var24, -1); + aBooleanArray3674[var12] = true; + Class163_Sub1_Sub1.aBooleanArray4008[var12] = true; + continue; + } + if (ClientCommands.renderInfoOverlayEnabled) { + if (HDToolKit.highDetail) { + int vendorColor; + String vendor = HDToolKit.gl.glGetString(7936); + if (vendor.contains("NVIDIA")) { + vendorColor = 7780608; + } else if (vendor.contains("AMD")) { + vendorColor = 15539236; + } else if (vendor.contains("INTEL")) { + vendorColor = 29125; + } else { + vendorColor = 16776960; + } + var20 = var11.width + var13; + var21 = 15 + var14; + FontType.plainFont.drawStringRightAnchor(RSString.parse(HDToolKit.gl.glGetString(7938)), var20, var21, 16776960, 7); + var21 += 15; + FontType.plainFont.drawStringRightAnchor(RSString.parse(vendor), var20, var21, vendorColor, 4); + var21 += 15; + FontType.plainFont.drawStringRightAnchor(RSString.parse(HDToolKit.gl.glGetString(7937)), var20, var21, 16776960, 7); + var21 += 15; + FontType.plainFont.drawStringRightAnchor(RSString.parse("Oncard Geometry: " + Class31.anInt585), var20, var21, 16776960, 7); + var21 += 15; + FontType.plainFont.drawStringRightAnchor(RSString.parse("Oncard 2D: " + Class31.memory2D), var20, var21, 16776960, 7); + var21 += 15; + FontType.plainFont.drawStringRightAnchor(RSString.parse("Oncard Texture: " + Class31.anInt580), var20, var21, 16776960, 7); + } else { + var20 = var11.width + var13; + var21 = 15 + var14; + FontType.plainFont.drawStringRightAnchor(RSString.parse("Java Toolkit"), var20, var21, 16776960, 7); + var21 += 15; + FontType.plainFont.drawStringRightAnchor(RSString.parse(System.getProperty("java.vendor")), var20, var21, 16776960, 7); + var21 += 15; + FontType.plainFont.drawStringRightAnchor(RSString.parse(System.getProperty("java.version")), var20, var21, 16776960, 7); + } + continue; + } + XPGainDraw.drawGains(); + SlayerTracker.draw(); + continue; + } + + if (var11.anInt189 == 1406) { + ClientErrorException.anInt2115 = var14; + AbstractSprite.aClass11_3708 = var11; + TextureOperation18.anInt4041 = var13; + continue; + } + } + + if (!Class38_Sub1.aBoolean2615) { + if (var11.type == 0 && var11.aBoolean219 && NPCDefinition.anInt1297 >= var16 && var17 <= Class38_Sub1.anInt2612 && NPCDefinition.anInt1297 < var18 && Class38_Sub1.anInt2612 < var19 && !ClientCommands.commandQaOpEnabled) { + menuOptionCount = 1; + Class114.anIntArray1578[0] = Class3_Sub28_Sub5.anInt3590; + GroundItem.aStringArray2935[0] = TextCore.HasCancel; + Class163_Sub2_Sub1.aStringArray4016[0] = RSString.parse(""); + TextureOperation27.aShortArray3095[0] = 1005; + } + + if (var16 <= NPCDefinition.anInt1297 && Class38_Sub1.anInt2612 >= var17 && var18 > NPCDefinition.anInt1297 && Class38_Sub1.anInt2612 < var19) { + Class3_Sub24_Sub4.method477(Class38_Sub1.anInt2612 + -var14, -var13 + NPCDefinition.anInt1297, var11); + } + } + + if (var11.type == 0) { + if (!var11.usingScripts && Client.method51(var11) && Class107.aClass11_1453 != var11) { + continue; + } + + if (!var11.usingScripts) { + if (var11.anInt208 > -var11.height + var11.anInt252) { + var11.anInt208 = -var11.height + var11.anInt252; + } + + if (0 > var11.anInt208) { + var11.anInt208 = 0; + } + } + + method1095(var16, -var11.anInt208 + var14, -var11.anInt247 + var13, var3, var18, var11.componentHash, var17, var19, (byte) 87, var12); + if (null != var11.aClass11Array262) { + method1095(var16, -var11.anInt208 + var14, -var11.anInt247 + var13, var11.aClass11Array262, var18, var11.componentHash, var17, var19, (byte) 52, var12); + } + + Class3_Sub31 var36 = TextureOperation23.aHashTable_3208.get(var11.componentHash); + if (var36 != null) { + if (var36.anInt2603 == 0 && !Class38_Sub1.aBoolean2615 && NPCDefinition.anInt1297 >= var16 && Class38_Sub1.anInt2612 >= var17 && NPCDefinition.anInt1297 < var18 && Class38_Sub1.anInt2612 < var19 && !ClientCommands.commandQaOpEnabled) { + GroundItem.aStringArray2935[0] = TextCore.HasCancel; + menuOptionCount = 1; + Class114.anIntArray1578[0] = Class3_Sub28_Sub5.anInt3590; + TextureOperation27.aShortArray3095[0] = 1005; + Class163_Sub2_Sub1.aStringArray4016[0] = RSString.parse(""); + } + + TextureOperation12.method171(-101, var36.anInt2602, var16, var18, var13, var12, var19, var17, var14); + } + + if (HDToolKit.highDetail) { + Class22.setClipping(var0, var6, var4, var7); + } else { + Class74.setClipping(var0, var6, var4, var7); + Class51.method1134(); + } + } + + if (aBooleanArray1712[var12] || Client.rectDebugInt > 1) { + if (var11.type == 0 && !var11.usingScripts && var11.anInt252 > var11.height) { + TextureOperation24.method224(var11.anInt208, var11.anInt252, var11.width + var13, var14, var11.height); + } + + if (var11.type != 1) { + boolean var39; + boolean var46; + if (var11.type == 2) { + var20 = 0; + + for (var21 = 0; var11.defHeight > var21; ++var21) { + for (var22 = 0; var11.defWidth > var22; ++var22) { + var24 = var14 + var21 * (32 - -var11.anInt290); + var23 = (var11.anInt285 + 32) * var22 + var13; + if (var20 < 20) { + var24 += var11.anIntArray300[var20]; + var23 += var11.anIntArray272[var20]; + } + + if (var11.itemAmounts[var20] <= 0) { + if (null != var11.anIntArray197 && var20 < 20) { + AbstractSprite var58 = var11.method859(var20); + if (null == var58) { + if (RSInterface.aBoolean6) { + Class20.method909(var11); + } + } else { + var58.drawAt(var23, var24); + } + } + } else { + var47 = var11.itemAmounts[var20] + -1; + if (var0 < 32 + var23 && var4 > var23 && var24 - -32 > var6 && var7 > var24 || var11 == Class67.aClass11_1017 && var20 == PacketParser.anInt86) { + AbstractSprite var54; + if (Class164_Sub1.anInt3012 == 1 && BufferedDataStream.anInt1473 == var20 && Class3_Sub28_Sub18.anInt3764 == var11.componentHash) { + var54 = Class114.method1707(2, var47, var11.aBoolean227, var11.itemIds[var20], 0); + } else { + var54 = Class114.method1707(1, var47, var11.aBoolean227, var11.itemIds[var20], 3153952); + } + + if (Class51.aBoolean837) { + aBooleanArray3674[var12] = true; + } + + if (null == var54) { + Class20.method909(var11); + } else if (Class67.aClass11_1017 == var11 && var20 == PacketParser.anInt86) { + var25 = Class126.anInt1676 - Class129_Sub1.anInt2693; + var26 = -anInt40 + anInt1709; + if (var26 < 5 && var26 > -5) { + var26 = 0; + } + + if (var25 < 5 && var25 > -5) { + var25 = 0; + } + + if (5 > Class40.anInt677) { + var25 = 0; + var26 = 0; + } + + var54.method637(var23 + var25, var24 - -var26, 128); + if (var5 != -1) { + RSInterface var51 = var3[var5 & 65535]; + int var31; + int var30; + if (HDToolKit.highDetail) { + var31 = Class22.anInt451; + var30 = Class22.anInt448; + } else { + var30 = Toolkit.JAVA_TOOLKIT.clipTop; + var31 = Toolkit.JAVA_TOOLKIT.clipBottom; + } + + int var32; + if (var26 + var24 < var30 && var51.anInt208 > 0) { + var32 = Class106.anInt1446 * (-var26 + var30 + -var24) / 3; + if (Class106.anInt1446 * 10 < var32) { + var32 = 10 * Class106.anInt1446; + } + + if (var32 > var51.anInt208) { + var32 = var51.anInt208; + } + + var51.anInt208 -= var32; + anInt40 += var32; + Class20.method909(var51); + } + + if (var31 < 32 + var26 + var24 && var51.anInt208 < -var51.height + var51.anInt252) { + var32 = (-var31 + 32 + (var24 - -var26)) * Class106.anInt1446 / 3; + if (var32 > Class106.anInt1446 * 10) { + var32 = 10 * Class106.anInt1446; + } + + if (-var51.anInt208 + var51.anInt252 + -var51.height < var32) { + var32 = var51.anInt252 + -var51.height + -var51.anInt208; + } + + var51.anInt208 += var32; + anInt40 -= var32; + Class20.method909(var51); + } + } + } else if (var11 == aClass11_1933 && var20 == KeyboardListener.anInt1918) { + var54.method637(var23, var24, 128); + } else { + var54.drawAt(var23, var24); + } + } + } + + ++var20; + } + } + } else if (3 == var11.type) { + if (method609(var11, 26)) { + var20 = var11.anInt253; + if (Class107.aClass11_1453 == var11 && 0 != var11.anInt222) { + var20 = var11.anInt222; + } + } else { + var20 = var11.anInt218; + if (var11 == Class107.aClass11_1453 && 0 != var11.anInt228) { + var20 = var11.anInt228; + } + } + + /* INTERFACE DRAWS ALPHA/NON-ALPHA BOXES/BACKGROUNDS */ + if (alpha != 0) { + if (var11.aBoolean226) { + if (HDToolKit.highDetail) { + Toolkit.OPENGL_TOOLKIT.fillRect(var13, var14, var11.width, var11.height, var20, 256 + -(255 & alpha));//Magic book spell tool-tip hover background draw + } else { + Toolkit.JAVA_TOOLKIT.fillRect(var13, var14, var11.width, var11.height, var20, 256 + -(255 & alpha)); + } + } else if (HDToolKit.highDetail) { + Class22.method928(var13, var14, var11.width, var11.height, var20, 256 + -(alpha & 0xFF));//Interface backgrounds (includes dark areas) + } else { + Class74.method1315(var13, var14, var11.width, var11.height, var20, -(alpha & 0xFF) + 256);//Interface backgrounds (includes dark areas) + } + } else if (var11.aBoolean226) { + if (HDToolKit.highDetail) { + Toolkit.OPENGL_TOOLKIT.method934(var13, var14, var11.width, var11.height, var20);//Skill tool-tip hover background draw + } else { + Toolkit.JAVA_TOOLKIT.fillRect(var13, var14, var11.width, var11.height, var20, 255);//Skill tool-tip pop up background + } + } else if (HDToolKit.highDetail) { + Toolkit.OPENGL_TOOLKIT.drawRect(var13, var14, var11.width, var11.height, var20, 255);//Boxed border background draw + } else { + Toolkit.JAVA_TOOLKIT.drawRect(var13, var14, var11.width, var11.height, var20, 255);//Boxed border background draw + } + // TODO DRAWRECT +// if (Class3_Sub28_Sub12.method609(var11, 26)) { +// var20 = var11.anInt253; +// if (Class107.aClass11_1453 == var11 && 0 != var11.anInt222) { +// var20 = var11.anInt222; +// } +// } else { +// var20 = var11.anInt218; +// if (var11 == Class107.aClass11_1453 && 0 != var11.anInt228) { +// var20 = var11.anInt228; +// } +// } +// +// if (var15 != 0) { +// if (var11.aBoolean226) { +// Toolkit.getActiveToolkit().fillRect(var13, var14, var11.width, var11.height, var20, 256 - (var15 & 0xFF));//Background for mage book +// } else if (HDToolKit.highDetail) { +// Class22.method928(var13, var14, var11.width, var11.height, var20, 256 + -(var15 & 0xFF)); +// } else { +// Class74.method1315(var13, var14, var11.width, var11.height, var20, -(var15 & 0xFF) + 256); +// } +// } else if (var11.aBoolean226) { +// Toolkit.getActiveToolkit().method934(var13, var14, var11.width, var11.height, var20);//Fill Rectangle for skill hover +// } else { +// Toolkit.getActiveToolkit().drawRect(var13, var14, var11.width, var11.height, var20, 255);//Background border for mage book +// } + + } else { + Font var34; + if (var11.type == 4) { + // TODO RSInterfaceRenderText + var34 = var11.method868(Sprites.nameIconsSpriteArray); + if (var34 != null) { + RSString var45 = var11.text; + if (method609(var11, 97)) { + var21 = var11.anInt253; + if (Class107.aClass11_1453 == var11 && var11.anInt222 != 0) { + var21 = var11.anInt222; + } + + if (var11.aString_172.length() > 0) { + var45 = var11.aString_172; + } + } else { + var21 = var11.anInt218; + if (Class107.aClass11_1453 == var11 && var11.anInt228 != 0) { + var21 = var11.anInt228; + } + } + + if (var11.usingScripts && var11.anInt192 != -1) { + ItemDefinition var50 = ItemDefinition.getItemDefinition(var11.anInt192); + var45 = var50.name; + if (var45 == null) { + var45 = TextCore.HasNull; + } + + if ((var50.stackingType == 1 || var11.anInt271 != 1) && var11.anInt271 != -1) { + var45 = RSString.stringCombiner(new RSString[]{ColorCore.ItemInterfaceColor, var45, TextCore.aString_2306, Class36.method1013((byte) -125, var11.anInt271)}); + } + } + + if (TextureOperation27.aClass11_3087 == var11) { + var21 = var11.anInt218; + var45 = TextCore.LoadingPleaseWait; + } + + if (!var11.usingScripts) { + var45 = method1303(var11, var45); + } + + var34.method676(var45, var13, var14, var11.width, var11.height, var21, !var11.aBoolean215 ? -1 : 0, var11.anInt194, var11.anInt225, var11.anInt205); + } else if (RSInterface.aBoolean6) { + Class20.method909(var11); + } + } else if (5 == var11.type) { + AbstractSprite var37; + if (var11.usingScripts) { + if (var11.anInt192 == -1) { + var37 = var11.method866(false); + } else { + var37 = Class114.method1707(var11.anInt288, var11.anInt192, var11.aBoolean227, var11.anInt271, var11.anInt287); + } + + if (var37 == null) { + if (RSInterface.aBoolean6) { + Class20.method909(var11); + } + } else { + var21 = var37.anInt3697; + var22 = var37.anInt3706; + if (var11.aBoolean186) { + var23 = (var21 + -1 + var11.width) / var21; + var24 = (var11.height - 1 - -var22) / var22; + if (HDToolKit.highDetail) { + Class22.method931(var13, var14, var11.width + var13, var11.height + var14); + var39 = Class140_Sub6.method2021((byte) -94, var37.width); + var46 = Class140_Sub6.method2021((byte) -113, var37.height); + HDSprite var27 = (HDSprite) var37; + if (var39 && var46) { + if (alpha == 0) { + var27.method649(var13, var14, var23, var24); + } else { + var27.method646(var13, var14, -(255 & alpha) + 256, var23, var24); + } + } else if (var39) { + for (var28 = 0; var28 < var24; ++var28) { + if (alpha == 0) { + var27.method649(var13, var28 * var22 + var14, var23, 1); + } else { + var27.method646(var13, var14 + var28 * var22, 256 + -(alpha & 0xFF), var23, 1); + } + } + } else if (var46) { + for (var28 = 0; var28 < var23; ++var28) { + if (alpha == 0) { + var27.method649(var21 * var28 + var13, var14, 1, var24); + } else { + var27.method646(var21 * var28 + var13, var14, -(alpha & 0xFF) + 256, 1, var24); + } + } + } else { + for (var28 = 0; var23 > var28; ++var28) { + for (var29 = 0; var29 < var24; ++var29) { + if (alpha == 0) { + var37.drawAt(var13 - -(var21 * var28), var22 * var29 + var14); + } else { + var37.method637(var28 * var21 + var13, var22 * var29 + var14, -(255 & alpha) + 256); + } + } + } + } + + Class22.setClipping(var0, var6, var4, var7); + } else { + Class74.method1326(var13, var14, var13 - -var11.width, var14 - -var11.height); + + for (var25 = 0; var25 < var23; ++var25) { + for (var26 = 0; var24 > var26; ++var26) { + if (var11.anInt301 == 0) { + if (0 == alpha) { + var37.drawAt(var25 * var21 + var13, var22 * var26 + var14); + } else { + var37.method637(var25 * var21 + var13, var14 + var26 * var22, 256 - (255 & alpha)); + } + } else { + var37.drawScaledOrRotated(var14 - -(var22 * var26) + var22 / 2, var11.anInt301, 4096, var25 * var21 + var13 + var21 / 2); + } + } + } + + Class74.setClipping(var0, var6, var4, var7); + } + } else { + var23 = var11.width * 4096 / var21; + if (var11.anInt301 == 0) { + if (0 != alpha) { + var37.method642(var13, var14, var11.width, var11.height, -(255 & alpha) + 256); + } else if (var11.width == var21 && var11.height == var22) { + var37.drawAt(var13, var14); + } else { + var37.method639(var13, var14, var11.width, var11.height); + } + } else { + var37.drawScaledOrRotated(var14 + var11.height / 2, var11.anInt301, var23, var13 + var11.width / 2); + } + } + } + } else { + var37 = var11.method866(method609(var11, 69)); + if (null != var37) { + var37.drawAt(var13, var14); + } else if (RSInterface.aBoolean6) { + Class20.method909(var11); + } + } + } else { + ItemDefinition var42; + if (var11.type == 6) { + boolean var41 = method609(var11, 110); + Model var38 = null; + if (var41) { + var21 = var11.secondAnimationId; + } else { + var21 = var11.animationId; + } + + var23 = 0; + if (var11.anInt192 != -1) { + var42 = ItemDefinition.getItemDefinition(var11.anInt192); + var42 = var42.method1106(var11.anInt271); + SequenceDefinition var52 = var21 == -1 ? null : SequenceDefinition.getAnimationDefinition(var21); + var38 = var42.method1110(var11.anInt260, var11.anInt267, var52, 1, var11.anInt283); + if (var38 == null) { + Class20.method909(var11); + } else { + var23 = -var38.method1871() / 2; + } + } else if (5 != var11.modelType) { + if (var21 == -1) { + var38 = var11.method865(-1, null, -1, 126, 0, var41, Class102.player.class52); + if (null == var38 && RSInterface.aBoolean6) { + Class20.method909(var11); + } + } else { + SequenceDefinition var48 = SequenceDefinition.getAnimationDefinition(var21); + var38 = var11.method865(var11.anInt260, var48, var11.anInt283, 127, var11.anInt267, var41, Class102.player.class52); + if (null == var38 && RSInterface.aBoolean6) { + Class20.method909(var11); + } + } + } else if (-1 == var11.itemId) { + var38 = aClass52_1112.method1165(null, -1, null, null, 0, -1, 100, 0, -1, -1); + } else { + var24 = 2047 & var11.itemId; + if (Class3_Sub1.localIndex == var24) { + var24 = 2047; + } + + Player var49 = players[var24]; + SequenceDefinition var56 = var21 == -1 ? null : SequenceDefinition.getAnimationDefinition(var21); + if (null != var49 && (-2048 & var11.itemId) == (int) var49.displayName.toLong() << 11) { + var38 = var49.class52.method1165(null, -1, null, var56, 0, -1, -126, 0, var11.anInt283, 0); + } + } + + if (var38 != null) { + if (var11.anInt184 > 0) { + var24 = (var11.width << 8) / var11.anInt184; + } else { + var24 = 256; + } + + if (var11.anInt312 <= 0) { + var25 = 256; + } else { + var25 = (var11.height << 8) / var11.anInt312; + } + + var26 = var13 - -(var11.width / 2) - -(var24 * var11.anInt259 >> 8); + var47 = var11.height / 2 + var14 + (var25 * var11.anInt230 >> 8); + if (HDToolKit.highDetail) { + if (var11.aBoolean181) { + HDToolKit.method1855(var26, var47, var11.anInt164, var11.aShort293, var24, var25); + } else { + HDToolKit.method1821(var26, var47, var24, var25); + HDToolKit.method1825(var11.aShort169, 1.5F * (float) var11.aShort293); + } + + HDToolKit.method1846(); + HDToolKit.method1831(true); + HDToolKit.method1827(false); + TextureOperation29.method324(anInt3625); + if (aBoolean47) { + Class22.resetClipping(); + HDToolKit.method1841(); + Class22.setClipping(var0, var6, var4, var7); + aBoolean47 = false; + } + + if (var11.aBoolean309) { + HDToolKit.depthBufferWritingDisabled(); + } + + var28 = Class51.anIntArray840[var11.anInt182] * var11.anInt164 >> 16; + var29 = var11.anInt164 * Class51.anIntArray851[var11.anInt182] >> 16; + if (var11.usingScripts) { + var38.method1893(var11.anInt308, var11.anInt280, var11.anInt182, var11.anInt258, var11.anInt264 + var28 + var23, var11.anInt264 + var29); + } else { + var38.method1893(var11.anInt308, 0, var11.anInt182, 0, var28, var29); + } + + if (var11.aBoolean309) { + HDToolKit.method1830(); + } + } else { + Class51.method1145(var26, var47); + var28 = Class51.anIntArray840[var11.anInt182] * var11.anInt164 >> 16; + var29 = var11.anInt164 * Class51.anIntArray851[var11.anInt182] >> 16; + if (!var11.usingScripts) { + var38.method1893(var11.anInt308, 0, var11.anInt182, 0, var28, var29); + } else if (var11.aBoolean181) { + ((Class140_Sub1_Sub2) var38).method1946(var11.anInt308, var11.anInt280, var11.anInt182, var11.anInt258, var11.anInt264 + var23 + var28, var29 + var11.anInt264, var11.anInt164); + } else { + var38.method1893(var11.anInt308, var11.anInt280, var11.anInt182, var11.anInt258, var11.anInt264 + (var28 - -var23), var29 + var11.anInt264); + } + + Class51.method1141(); + } + } + } else { + if (var11.type == 7) { + var34 = var11.method868(Sprites.nameIconsSpriteArray); + if (var34 == null) { + if (RSInterface.aBoolean6) { + Class20.method909(var11); + } + continue; + } + + var21 = 0; + + for (var22 = 0; var22 < var11.defHeight; ++var22) { + for (var23 = 0; var23 < var11.defWidth; ++var23) { + if (0 < var11.itemAmounts[var21]) { + var42 = ItemDefinition.getItemDefinition(var11.itemAmounts[var21] + -1); + RSString var40; + if (1 != var42.stackingType && 1 == var11.itemIds[var21]) { + var40 = RSString.stringCombiner(new RSString[]{ + ColorCore.ItemInterfaceColor, var42.name, TextCore.aString_2584 + }); + } else { + var40 = RSString.stringCombiner(new RSString[]{ + ColorCore.ItemInterfaceColor, var42.name, TextCore.aString_2306, Class36.method1013((byte) -100, var11.itemIds[var21]) + }); + } + + var26 = var13 + var23 * (var11.anInt285 + 115); + var47 = (var11.anInt290 + 12) * var22 + var14; + if (var11.anInt194 == 0) { + var34.method681(var40, var26, var47, var11.anInt218, var11.aBoolean215 ? 0 : -1); + } else if (var11.anInt194 == 1) { + var34.method699(var40, 57 + var26, var47, var11.anInt218, !var11.aBoolean215 ? -1 : 0); + } else { + var34.drawStringRightAnchor(var40, -1 + var26 + 115, var47, var11.anInt218, !var11.aBoolean215 ? -1 : 0); + } + } + + ++var21; + } + } + } + + if (var11.type == 8 && Class20.aClass11_439 == var11 && TextureOperation35.anInt3323 == Class75.anInt1109) { + var21 = 0; + var20 = 0; + RSString var43 = var11.text; + Font var35 = FontType.plainFont; + var43 = method1303(var11, var43); + + RSString var44; + while (var43.length() > 0) { + var25 = var43.indexOf(TextCore.aString_2598, 62); + if (var25 == -1) { + var44 = var43; + var43 = RSString.parse(""); + } else { + var44 = var43.substring(0, var25, 0); + var43 = var43.substring(var25 + 4); + } + + var26 = var35.method682(var44); + var21 += var35.anInt3727 - -1; + if (var26 > var20) { + var20 = var26; + } + } + + var26 = var14 - -var11.height - -5; + var20 += 6; + var21 += 7; + if (var7 < var26 - -var21) { + var26 = -var21 + var7; + } + + var25 = -var20 + -5 + var13 - -var11.width; + if (var25 < 5 + var13) { + var25 = 5 + var13; + } + + if (var4 < var20 + var25) { + var25 = -var20 + var4; + } + + Toolkit.getActiveToolkit().method934(var25, var26, var20, var21, 16777120); + Toolkit.getActiveToolkit().drawRect(var25, var26, var20, var21, 0, 255); + + var43 = var11.text; + var47 = 2 + (var26 - -var35.anInt3727); + + for (var43 = method1303(var11, var43); var43.length() > 0; var47 += var35.anInt3727 + 1) { + var28 = var43.indexOf(TextCore.aString_2598, 86); + if (var28 == -1) { + var44 = var43; + var43 = RSString.parse(""); + } else { + var44 = var43.substring(0, var28, 0); + var43 = var43.substring(4 + var28); + } + + var35.method681(var44, 3 + var25, var47, 0, -1); + } + } + + if (var11.type == 9) { + if (var11.aBoolean167) { + var20 = var13; + var22 = var13 - -var11.width; + var21 = var14 - -var11.height; + var23 = var14; + } else { + var20 = var13; + var21 = var14; + var23 = var14 - -var11.height; + var22 = var13 + var11.width; + } + + if (var11.anInt250 == 1) { + if (HDToolKit.highDetail) { + Class22.method933(var20, var21, var22, var23, var11.anInt218); + } else { + Class74.method1328(var20, var21, var22, var23, var11.anInt218); + } + } else if (HDToolKit.highDetail) { + Class22.method929(var20, var21, var22, var23, var11.anInt218, var11.anInt250); + } else { + Class74.method1322(var20, var21, var22, var23, var11.anInt218, var11.anInt250); + } + } + } + } + } + } + } + } + } + } + } + + if (var8 <= 31) { + quickChatMessages = null; + } + + } catch (RuntimeException var33) { + throw ClientErrorException.clientError(var33, "gn.B(" + var0 + ',' + var1 + ',' + var2 + ',' + (var3 != null ? "{...}" : "null") + ',' + var4 + ',' + var5 + ',' + var6 + ',' + var7 + ',' + var8 + ',' + var9 + ')'); + } + } + + public static void clampCameraAngle() { + try { + if (anInt2309 < 128) { + anInt2309 = 128; + } + + if (anInt2309 > 383) { + anInt2309 = 383; + } + + GraphicDefinition.CAMERA_DIRECTION &= 2047; + + int var1 = x3155 >> 7; + int var2 = y942 >> 7; + int var3 = Scenery.sceneryPositionHash(WorldListCountry.localPlane, 1, x3155, y942); + int var4 = 0; + int x; + if (var1 > 3 && 3 < var2 && 100 > var1 && var2 < 100) { + for (x = -4 + var1; var1 - -4 >= x; ++x) { + for (int y = -4 + var2; y <= 4 + var2; ++y) { + int z = WorldListCountry.localPlane; + if (3 > z && 2 == (2 & sceneryTypeMaskGrid[1][x][y])) { + ++z; + } + + int var8 = (255 & possibleHeightmap1774[z][x][y]) * 8 - Class44.anIntArrayArrayArray723[z][x][y] + var3; + if (var8 > var4) { + var4 = var8; + } + } + } + } + + int var5 = 192 * var4; + if (var5 > 98048) { + var5 = 98048; + } + + if (var5 < 32768) { + var5 = 32768; + } + + if (var5 <= Class75_Sub4.anInt2670) { + if (Class75_Sub4.anInt2670 > var5) { + Class75_Sub4.anInt2670 += (var5 - Class75_Sub4.anInt2670) / 80; + } + } else { + Class75_Sub4.anInt2670 += (-Class75_Sub4.anInt2670 + var5) / 24; + } + + } catch (RuntimeException var9) { + throw ClientErrorException.clientError(var9, "gn.D()"); + } + } + + public static int method1100(int var0, int var2) { + try { + if (var2 == -1) { + return 12345678; + } else { + + var0 = var0 * (127 & var2) >> 7; + if (2 <= var0) { + if (126 < var0) { + var0 = 126; + } + } else { + var0 = 2; + } + + return var0 + ('\uff80' & var2); + } + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "gn.C(" + var0 + ',' + true + ',' + var2 + ')'); + } + } + + public static void method1516(int var0, int var1) { + try { + InterfaceWidget var2 = InterfaceWidget.getWidget(3, var0); + var2.a(); + if (var1 < 87) { + TextCore.aString_1326 = null; + } + + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "n.L(" + var0 + ',' + var1 + ')'); + } + } + + /** + * static final void method1517(byte var0) { + * try { + * Class139.aFontMetrics1822 = null; + * TextCore.Helvetica = null; + * if(var0 != -118) { + * method1516(64, 82); + * } + *

+ * Class129_Sub1.anImage2695 = null; + * } catch (RuntimeException var2) { + * throw Class44.method1067(var2, "n.J(" + var0 + ')'); + * } + * } + **/ + + public static void method1517() { + try { + StartupLoadingBarInitial.aFontMetrics1822 = null; + + //MillisTimer.anImage2695 = null; + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "n.J(" + (byte) -118 + ')'); + } + } + + public static int bitwiseXOR(int var0, int var1) { + try { + return var0 ^ var1; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "n.E(" + var0 + ',' + var1 + ')'); + } + } + + public static void method1525(int var1, int var2, int var3, int var4, int var5) { + try { + int var6 = Class40.method1040(Class57.anInt902, var3, Class159.anInt2020); + int var7 = Class40.method1040(Class57.anInt902, var5, Class159.anInt2020); + int var8 = Class40.method1040(Class3_Sub28_Sub18.anInt3765, var4, Class101.anInt1425); + + int var9 = Class40.method1040(Class3_Sub28_Sub18.anInt3765, var2, Class101.anInt1425); + + for (int var10 = var6; var10 <= var7; ++var10) { + TextureOperation18.method282(Class38.anIntArrayArray663[var10], var8, 3074 + -2974, var9, var1); + } + + } catch (RuntimeException var11) { + throw ClientErrorException.clientError(var11, "n.I(" + 3074 + ',' + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + var5 + ')'); + } + } + + public static SoftwareSprite loadSoftwareSprite(CacheIndex var0, int var2) { + try { + // System.out.println("Class 3_Sub28_Sub16_Sub2 " + var2); + return Class75_Sub4.method1351(var0, 0, var2) ? Class3_Sub28_Sub9.method578() : null; + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "gf.O(" + (var0 != null ? "{...}" : "null") + ',' + 0 + ',' + var2 + ',' + (byte) 39 + ')'); + } + } + + public static void parsePreferences(Signlink var0) { + try { + anInt3625 = 3; + Class25.method957(true); + aBoolean3604 = true; + TextureOperation17.stereoSound = true; + Class128.aBoolean1685 = true; + Class3_Sub28_Sub9.anInt3622 = 0; + anInt3071 = 0; + KeyboardListener.aBoolean1905 = true; + WorldListEntry.aBoolean2623 = true; + RSInterface.aBoolean236 = true; + Sprites.ambientVolume = 127; + Class38.aBoolean661 = true; + Class140_Sub6.aBoolean2910 = true; + TextureOperation.anInt2378 = 0; + anInt1137 = 2; + aBoolean3275 = true; + Class106.aBoolean1441 = true; + AudioHandler.musicVolume = 255; + Class25.aBoolean488 = true; + anInt3671 = 0; + RandomAccessFileWrapper var2 = null; + AudioHandler.soundEffectVolume = 127; + if (Class3_Sub24_Sub3.maxClientMemory >= 96) { + Class127_Sub1.method1758(2); + } else { + Class127_Sub1.method1758(0); + } + + anInt2148 = 0; + Class3_Sub20.anInt2488 = 0; + AudioThread.aBoolean346 = false; + Class163_Sub3.aBoolean3004 = true; + aBoolean2146 = false; + aBoolean1080 = false; + anInt2577 = 0; + + try { + Class64 var3 = var0.method1433("runescape", 12); + + while (0 == var3.anInt978) { + TimeUtils.sleep(1L); + } + + if (var3.anInt978 == 1) { + var2 = (RandomAccessFileWrapper) var3.anObject974; + byte[] var4 = new byte[(int) var2.getLength()]; + + int var6; + for (int var5 = 0; var4.length > var5; var5 += var6) { + var6 = var2.read(var4, var5, var4.length - var5, 0); + if (var6 == -1) { + throw new IOException("EOF"); + } + } + + CSConfigCachefile.method1390(new DataBuffer(var4)); + } + } catch (Exception var8) { + } + + try { + if (var2 != null) { + var2.close(); + } + } catch (Exception var7) { + } + + } catch (RuntimeException var9) { + throw ClientErrorException.clientError(var9, "gf.F(" + (var0 != null ? "{...}" : "null") + ',' + 0 + ')'); + } + } + + public static void method565(int var1, int var2) { + try { + Texture.anInt1150 = -TextureOperation37.anInt3256 + var1; + + int var3 = -((int) ((float) Class3_Sub28_Sub3.aClass11_3551.width / Class44.aFloat727)) + Texture.anInt1150; + int var4 = Texture.anInt1150 + (int) ((float) Class3_Sub28_Sub3.aClass11_3551.width / Class44.aFloat727); + if (var3 < 0) { + Texture.anInt1150 = (int) ((float) Class3_Sub28_Sub3.aClass11_3551.width / Class44.aFloat727); + } + + TextureOperation13.anInt3362 = Class108.anInt1460 + -1 + anInt65 + -var2; + int var6 = (int) ((float) Class3_Sub28_Sub3.aClass11_3551.height / Class44.aFloat727) + TextureOperation13.anInt3362; + int var5 = TextureOperation13.anInt3362 - (int) ((float) Class3_Sub28_Sub3.aClass11_3551.height / Class44.aFloat727); + if (Class23.anInt455 < var4) { + Texture.anInt1150 = Class23.anInt455 + -((int) ((float) Class3_Sub28_Sub3.aClass11_3551.width / Class44.aFloat727)); + } + + if (var5 < 0) { + TextureOperation13.anInt3362 = (int) ((float) Class3_Sub28_Sub3.aClass11_3551.height / Class44.aFloat727); + } + + if (var6 > Class108.anInt1460) { + TextureOperation13.anInt3362 = -((int) ((float) Class3_Sub28_Sub3.aClass11_3551.height / Class44.aFloat727)) + Class108.anInt1460; + } + + } catch (RuntimeException var7) { + throw ClientErrorException.clientError(var7, "gf.E(" + (byte) 86 + ',' + var1 + ',' + var2 + ')'); + } + } + + public static void method566(RSString var0, int var2) { + try { + InterfaceWidget var3 = InterfaceWidget.getWidget(3, var2); + var3.flagUpdate(); + var3.text = var0; + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "gf.P(" + (var0 != null ? "{...}" : "null") + ',' + 0 + ',' + var2 + ')'); + } + } + + public static void method569(int var1) { + try { + InterfaceWidget var2 = InterfaceWidget.getWidget(7, var1); + var2.a(); + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "he.C(" + -82 + ',' + var1 + ')'); + } + } + + public static RSString method1723(byte var0, boolean var1, int var3) { + try { + int var4 = 1; + + for (int var5 = var3 / 10; 0 != var5; ++var4) { + var5 /= 10; + } + + int var6 = var4; + if (var3 < 0 || var1) { + var6 = var4 + 1; + } + + byte[] var7 = new byte[var6]; + if (var3 >= 0) { + if (var1) { + var7[0] = 43; + } + } else { + var7[0] = 45; + } + + for (int var8 = 0; var4 > var8; ++var8) { + int var9 = var3 % 10; + if (var9 < 0) { + var9 = -var9; + } + + var7[var6 + -var8 + -1] = (byte) (48 + var9); + var3 /= 10; + } + + if (var0 >= -111) { + method1727((byte) 53); + } + + RSString var11 = new RSString(); + var11.buffer = var7; + var11.length = var6; + return var11; + } catch (RuntimeException var10) { + throw ClientErrorException.clientError(var10, "q.A(" + var0 + ',' + var1 + ',' + 10 + ',' + var3 + ')'); + } + } + + public static void method1724(int var0, int var1, int var2, int var3, int var4, int var5, byte var6, int var7) { + try { + if (var5 >= 128 && var2 >= 128 && var5 <= 13056 && var2 <= 13056) { + int var8 = Scenery.sceneryPositionHash(WorldListCountry.localPlane, 1, var5, var2) + -var3; + var2 -= Class77.anInt1111; + var8 -= Class7.anInt2162; + var5 -= NPC.anInt3995; + int var9 = Class51.anIntArray840[Class139.anInt1823]; + int var10 = Class51.anIntArray851[Class139.anInt1823]; + int var11 = Class51.anIntArray840[TextureOperation28.anInt3315]; + int var12 = Class51.anIntArray851[TextureOperation28.anInt3315]; + int var13 = var5 * var12 + var11 * var2 >> 16; + var2 = var2 * var12 + -(var11 * var5) >> 16; + var5 = var13; + var13 = var10 * var8 - var2 * var9 >> 16; + if (var6 <= -47) { + var2 = var2 * var10 + var8 * var9 >> 16; + if (50 > var2) { + Texture.anInt2208 = -1; + Class32.anInt590 = -1; + } else if (HDToolKit.highDetail) { + int var14 = var1 * 512 >> 8; + Class32.anInt590 = var14 * var5 / var2 + var0; + int var15 = 512 * var7 >> 8; + Texture.anInt2208 = var15 * var13 / var2 + var4; + } else { + Class32.anInt590 = (var5 << 9) / var2 + var0; + Texture.anInt2208 = (var13 << 9) / var2 + var4; + } + + } + } else { + Texture.anInt2208 = -1; + Class32.anInt590 = -1; + } + } catch (RuntimeException var16) { + throw ClientErrorException.clientError(var16, "q.C(" + var0 + ',' + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + var5 + ',' + var6 + ',' + var7 + ')'); + } + } + + public static void method1726(int var0) { + try { + TextCore.aString_1622 = null; + TextCore.aString_1617 = null; + + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "q.B(" + var0 + ')'); + } + } + + public static int method1727(byte var0) { + try { + if (var0 != 123) { + method1726(-123); + } + + return KeyboardListener.aReferenceCache_1911.hardCount(); + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "q.D(" + var0 + ')'); + } + } + + static int method1602(RSString var1) { + try { + if (Class119.aClass131_1624 == null || var1.length() == 0) { + return -1; + } else { + for (int var2 = 0; var2 < Class119.aClass131_1624.anInt1720; ++var2) { + if (Class119.aClass131_1624.aStringArray1721[var2].method1560(RSString.parse(" "), TextCore.aString_4066).method1562((byte) -32, var1)) { + return var2; + } + } + + return -1; + } + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "ni.G(" + 0 + ',' + (var1 != null ? "{...}" : "null") + ')'); + } + } + + static void method338(int var1, boolean var2, int var3, int var4, int var5) { + try { + ++CSConfigCachefile.anInt1127; + Class124.method1745(); + if(!var2) { + Class3_Sub5.method116(true); + Class102.method1611(71, true); + Class3_Sub5.method116(false); + } + + Class102.method1611(100, false); + if(!var2) { + TextureOperation32.method302(2); + } + + PositionedGraphicObject.method2067(); + if(HDToolKit.highDetail) { + Class65.method1239(var4, 125, var5, var1, var3, true); + var3 = Class163_Sub1.anInt2989; + var5 = Class3_Sub28_Sub3.anInt3564; + var4 = Class96.anInt1358; + var1 = anInt31; + } + + int var6; + int var7; + if(1 == Class133.anInt1753) { + var7 = 2047 & LinkableRSString.anInt2589 + GraphicDefinition.CAMERA_DIRECTION; + var6 = anInt2309; + if(Class75_Sub4.anInt2670 / 256 > var6) { + var6 = Class75_Sub4.anInt2670 / 256; + } + + if(WaterfallShader.aBooleanArray2169[4] && Class166.anIntArray2073[4] + 128 > var6) { + var6 = 128 + Class166.anIntArray2073[4]; + } + + PositionedGraphicObject.method1952(x3155, var1, Scenery.sceneryPositionHash(WorldListCountry.localPlane, 1, Class102.player.xAxis, Class102.player.yAxis) + -50, Client.ZOOM - -(var6 * 3), var7, y942, var6); + } + + var7 = Class7.anInt2162; + var6 = NPC.anInt3995; + int var8 = Class77.anInt1111; + int var9 = Class139.anInt1823; + int var10 = TextureOperation28.anInt3315; + + int var11; + int var12; + for(var11 = 0; 5 > var11; ++var11) { + if(WaterfallShader.aBooleanArray2169[var11]) { + var12 = (int)((double)(-TextureOperation14.anIntArray3383[var11]) + (double)(TextureOperation14.anIntArray3383[var11] * 2 + 1) * Math.random() + Math.sin((double)Class163_Sub1_Sub1.anIntArray4009[var11] * ((double) TextureOperation3.anIntArray3359[var11] / 100.0D)) * (double)Class166.anIntArray2073[var11]); + if(var11 == 3) { + TextureOperation28.anInt3315 = var12 + TextureOperation28.anInt3315 & 0x7FF; + } + + if(var11 == 4) { + Class139.anInt1823 += var12; + if(128 > Class139.anInt1823) { + Class139.anInt1823 = 128; + } + + if(Class139.anInt1823 > 383) { + Class139.anInt1823 = 383; + } + } + + if(var11 == 2) { + Class77.anInt1111 += var12; + } + + if(var11 == 1) { + Class7.anInt2162 += var12; + } + + if(var11 == 0) { + NPC.anInt3995 += var12; + } + } + } + + Class3_Sub28_Sub20.method725(); + if(HDToolKit.highDetail) { + Class22.setClipping(var3, var5, var3 + var4, var5 - -var1); + float var17 = (float)Class139.anInt1823 * 0.17578125F; + float var16 = 0.17578125F * (float) TextureOperation28.anInt3315; + if(Class133.anInt1753 == 3) { + var17 = 360.0F * InterfaceWidget.aFloat1169 / 6.2831855F; + var16 = Class45.aFloat730 * 360.0F / 6.2831855F; + } + + HDToolKit.viewport(var3, var5, var4, var1, var4 / 2 + var3, var5 - -(var1 / 2), var17, var16, anInt1705, anInt1705); + } else { + Class74.setClipping(var3, var5, var4 + var3, var1 + var5); + Class51.method1134(); + } + + if(!Class38_Sub1.aBoolean2615 && var3 <= NPCDefinition.anInt1297 && var4 + var3 > NPCDefinition.anInt1297 && var5 <= Class38_Sub1.anInt2612 && Class38_Sub1.anInt2612 < var1 + var5) { + TextureOperation36.aBoolean3094 = true; + anInt59 = 0; + var12 = Class145.screenUpperX; + int var13 = Class1.screenUpperY; + var11 = Class139.screenLowerX; + anInt3642 = var11 + (var12 - var11) * (-var3 + NPCDefinition.anInt1297) / var4; + int var14 = AtmosphereParser.screenLowerY; + RenderAnimationDefinition.anInt384 = (-var13 + var14) * (Class38_Sub1.anInt2612 - var5) / var1 + var13; + } else { + TextureOperation36.aBoolean3094 = false; + anInt59 = 0; + } + + Class58.method1194(); + byte var19 = Class137.method1817() != 2 ?1:(byte) CSConfigCachefile.anInt1127; + if(HDToolKit.highDetail) { + HDToolKit.method1846(); + HDToolKit.method1831(true); + HDToolKit.method1827(true); + if(Class143.gameStage == 10) { + var12 = BufferedDataStream.method809(Class106.anInt1446, Class77.anInt1111 >> 10, anInt3625, NPC.anInt3995 >> 10); + } else { + var12 = BufferedDataStream.method809(Class106.anInt1446, Class102.player.yOffsets2755[0] >> 3, anInt3625, Class102.player.xOffsets2767[0] >> 3); + } + + Class68.method1269(Class44.anInt719, !WorldListEntry.aBoolean2623); + HDToolKit.clearScreen(var12); + ClientErrorException.method2285(Class139.anInt1823, Class77.anInt1111, Class7.anInt2162, NPC.anInt3995, TextureOperation28.anInt3315); + HDToolKit.anInt1791 = Class44.anInt719; + Class3_Sub22.method398(NPC.anInt3995, Class7.anInt2162, Class77.anInt1111, Class139.anInt1823, TextureOperation28.anInt3315, Class158.aByteArrayArrayArray2008, anIntArray686, Class129_Sub1.anIntArray2696, Class159.anIntArray2021, Player.anIntArray3959, SequenceDefinition.anIntArray1871, WorldListCountry.localPlane + 1, var19, Class102.player.xAxis >> 7, Class102.player.yAxis >> 7); + aBoolean47 = true; + Class68.method1265(); + ClientErrorException.method2285(0, 0, 0, 0, 0); + Class58.method1194(); + method1775(); + Texture.method1405(var5, var4, var3, anInt1705, var1, anInt1705, -7397); + Class163_Sub2_Sub1.method2221(var4, var3, var1, anInt1705, anInt1705, var5); + } else { + Toolkit.JAVA_TOOLKIT.method934(var3, var5, var4, var1, 0); + Class3_Sub22.method398(NPC.anInt3995, Class7.anInt2162, Class77.anInt1111, Class139.anInt1823, TextureOperation28.anInt3315, Class158.aByteArrayArrayArray2008, anIntArray686, Class129_Sub1.anIntArray2696, Class159.anIntArray2021, Player.anIntArray3959, SequenceDefinition.anIntArray1871, WorldListCountry.localPlane - -1, var19, Class102.player.xAxis >> 7, Class102.player.yAxis >> 7); + Class58.method1194(); + method1775(); + Texture.method1405(var5, var4, var3, 256, var1, 256, -6403 + -994); + Class163_Sub2_Sub1.method2221(var4, var3, var1, 256, 256, var5); + } + + ((Class102)Class51.anInterface2_838).method1610(Class106.anInt1446); + Class65.method1235(var4, var5, var1, var3); + Class139.anInt1823 = var9; + Class77.anInt1111 = var8; + Class7.anInt2162 = var7; + NPC.anInt3995 = var6; + TextureOperation28.anInt3315 = var10; + if(TextureOperation34.aBoolean3064 && Class58.aJs5Worker_917.countPriorityRequests() == 0) { + TextureOperation34.aBoolean3064 = false; + } + + if(TextureOperation34.aBoolean3064) { + Toolkit.getActiveToolkit().method934(var3, var5, var4, var1, 0); + LoadingBox.draw(false, TextCore.LoadingPleaseWait2); + } + + if(!var2 && !TextureOperation34.aBoolean3064 && !Class38_Sub1.aBoolean2615 && var3 <= NPCDefinition.anInt1297 && var4 + var3 > NPCDefinition.anInt1297 && Class38_Sub1.anInt2612 >= var5 && var1 + var5 > Class38_Sub1.anInt2612) { + TextureOperation36.method1628(var5, var4, var1, var3, Class38_Sub1.anInt2612, NPCDefinition.anInt1297); + } + + } catch (RuntimeException var15) { + throw ClientErrorException.clientError(var15, "ui.OA(" + -6403 + ',' + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + var5 + ')'); + } + } + + static boolean method609(RSInterface var0, int var1) { + if (null == var0.anIntArray275) { + return false; + } else { + int var2 = 0; + if (var1 <= 20) { + TextCore.COMMAND_MEMORY_MANAGEMENT = null; + } + + for (; var0.anIntArray275.length > var2; ++var2) { + int var3 = Class164_Sub2.method2247((byte) 119, var2, var0); + int var4 = var0.anIntArray307[var2]; + if (var0.anIntArray275[var2] != 2) { + if (var0.anIntArray275[var2] != 3) { + if (4 == var0.anIntArray275[var2]) { + if (var4 == var3) { + return false; + } + } else if (var3 != var4) { + return false; + } + } else if (var3 <= var4) { + return false; + } + } else if (var3 >= var4) { + return false; + } + } + + return true; + } + } + + public static RSInterface getRSInterface(int interfaceHash) { + try { + int windowId = interfaceHash >> 16; + + int componentId = 65535 & interfaceHash; + if (GameObject.interfaces1834.length <= windowId || windowId < 0) { + return null; + } + if (GameObject.interfaces1834[windowId] == null || GameObject.interfaces1834[windowId].length <= componentId || null == GameObject.interfaces1834[windowId][componentId]) { + boolean var4 = loadInterface(windowId); + if (!var4) { + return null; + } + } + if (GameObject.interfaces1834[windowId].length <= componentId) { + return null; + } + return GameObject.interfaces1834[windowId][componentId]; + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "af.F(" + interfaceHash + ')'); + } + } + + static void method551(int var1, int var2) { + try { + if(4 == var2 && !Class128.aBoolean1685) { + var2 = 2; + var1 = 2; + } + + if(var2 == Class23.anInt453) { + if(0 != var2 && var1 != TextureOperation37.anInt3263) { + anShaderInterfaceArray70[var2].method23(var1); + TextureOperation37.anInt3263 = var1; + } + } else { + if(TextureOperation23.aBoolean3207) { + return; + } + + if(Class23.anInt453 != 0) { + anShaderInterfaceArray70[Class23.anInt453].method21(); + } + + if(var2 != 0) { + ShaderInterface var3 = anShaderInterfaceArray70[var2]; + var3.method22(); + var3.method23(var1); + } + + Class23.anInt453 = var2; + TextureOperation37.anInt3263 = var1; + } + + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "cb.A(" + 0 + ',' + var1 + ',' + var2 + ')'); + } + } + + static void method2275(int var0, int var2, int var3, int var4, int var5, int var6) { + try { + + int var8 = -var5 + var3; + MouseListeningClass.method2091(var3); + int var7 = 0; + if (var8 < 0) { + var8 = 0; + } + + int var9 = var3; + int var10 = -var3; + int var12 = -var8; + int var11 = var8; + int var13 = -1; + int var17; + int var16; + int var19; + int var18; + if (var2 >= Class159.anInt2020 && Class57.anInt902 >= var2) { + int[] var15 = Class38.anIntArrayArray663[var2]; + var16 = Class40.method1040(Class3_Sub28_Sub18.anInt3765, -var3 + var6, Class101.anInt1425); + var17 = Class40.method1040(Class3_Sub28_Sub18.anInt3765, var3 + var6, Class101.anInt1425); + var18 = Class40.method1040(Class3_Sub28_Sub18.anInt3765, var6 + -var8, Class101.anInt1425); + var19 = Class40.method1040(Class3_Sub28_Sub18.anInt3765, var6 - -var8, Class101.anInt1425); + TextureOperation18.method282(var15, var16, 102, var18, var4); + TextureOperation18.method282(var15, var18, -44, var19, var0); + TextureOperation18.method282(var15, var19, -61, var17, var4); + } + + int var14 = -1; + + while (var9 > var7) { + var13 += 2; + var14 += 2; + var12 += var14; + var10 += var13; + if (var12 >= 0 && var11 >= 1) { + --var11; + GameObject.anIntArray1838[var11] = var7; + var12 -= var11 << 1; + } + + ++var7; + int var21; + int var20; + int[] var22; + int var24; + if (0 <= var10) { + --var9; + var10 -= var9 << 1; + var24 = var2 + -var9; + var16 = var2 + var9; + if (var16 >= Class159.anInt2020 && var24 <= Class57.anInt902) { + if (var8 <= var9) { + var17 = Class40.method1040(Class3_Sub28_Sub18.anInt3765, var7 + var6, Class101.anInt1425); + var18 = Class40.method1040(Class3_Sub28_Sub18.anInt3765, -var7 + var6, Class101.anInt1425); + if (var16 <= Class57.anInt902) { + TextureOperation18.method282(Class38.anIntArrayArray663[var16], var18, -53, var17, var4); + } + + if (var24 >= Class159.anInt2020) { + TextureOperation18.method282(Class38.anIntArrayArray663[var24], var18, 96, var17, var4); + } + } else { + var17 = GameObject.anIntArray1838[var9]; + var18 = Class40.method1040(Class3_Sub28_Sub18.anInt3765, var7 + var6, Class101.anInt1425); + var19 = Class40.method1040(Class3_Sub28_Sub18.anInt3765, -var7 + var6, Class101.anInt1425); + var20 = Class40.method1040(Class3_Sub28_Sub18.anInt3765, var6 - -var17, Class101.anInt1425); + var21 = Class40.method1040(Class3_Sub28_Sub18.anInt3765, -var17 + var6, Class101.anInt1425); + if (Class57.anInt902 >= var16) { + var22 = Class38.anIntArrayArray663[var16]; + TextureOperation18.method282(var22, var19, 116, var21, var4); + TextureOperation18.method282(var22, var21, 125, var20, var0); + TextureOperation18.method282(var22, var20, 87, var18, var4); + } + + if (Class159.anInt2020 <= var24) { + var22 = Class38.anIntArrayArray663[var24]; + TextureOperation18.method282(var22, var19, 110, var21, var4); + TextureOperation18.method282(var22, var21, -114, var20, var0); + TextureOperation18.method282(var22, var20, -88, var18, var4); + } + } + } + } + + var24 = -var7 + var2; + var16 = var2 - -var7; + if (var16 >= Class159.anInt2020 && var24 <= Class57.anInt902) { + var17 = var6 + var9; + var18 = var6 + -var9; + if (var17 >= Class101.anInt1425 && var18 <= Class3_Sub28_Sub18.anInt3765) { + var17 = Class40.method1040(Class3_Sub28_Sub18.anInt3765, var17, Class101.anInt1425); + var18 = Class40.method1040(Class3_Sub28_Sub18.anInt3765, var18, Class101.anInt1425); + if (var7 < var8) { + var19 = var11 >= var7 ? var11 : GameObject.anIntArray1838[var7]; + var20 = Class40.method1040(Class3_Sub28_Sub18.anInt3765, var19 + var6, Class101.anInt1425); + var21 = Class40.method1040(Class3_Sub28_Sub18.anInt3765, var6 - var19, Class101.anInt1425); + if (Class57.anInt902 >= var16) { + var22 = Class38.anIntArrayArray663[var16]; + TextureOperation18.method282(var22, var18, 126, var21, var4); + TextureOperation18.method282(var22, var21, 103, var20, var0); + TextureOperation18.method282(var22, var20, -61, var17, var4); + } + + if (var24 >= Class159.anInt2020) { + var22 = Class38.anIntArrayArray663[var24]; + TextureOperation18.method282(var22, var18, 102, var21, var4); + TextureOperation18.method282(var22, var21, -94, var20, var0); + TextureOperation18.method282(var22, var20, 99, var17, var4); + } + } else { + if (var16 <= Class57.anInt902) { + TextureOperation18.method282(Class38.anIntArrayArray663[var16], var18, 94, var17, var4); + } + + if (var24 >= Class159.anInt2020) { + TextureOperation18.method282(Class38.anIntArrayArray663[var24], var18, 126, var17, var4); + } + } + } + } + } + + } catch (RuntimeException var23) { + throw ClientErrorException.clientError(var23, "wl.I(" + var0 + ',' + (byte) 109 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + var5 + ',' + var6 + ')'); + } + } + + static void method2270(Entity var0) { + try { + if (Class44.anInt719 == var0.anInt2790 || var0.anInt2771 == -1 || var0.anInt2828 != 0 || SequenceDefinition.getAnimationDefinition(var0.anInt2771).duration[var0.anInt2832] < 1 + var0.anInt2760) { + int var2 = var0.anInt2790 + -var0.anInt2800; + int var3 = Class44.anInt719 + -var0.anInt2800; + int var4 = var0.anInt2784 * 128 + 64 * var0.getSize(); + int var5 = var0.anInt2835 * 128 - -(var0.getSize() * 64); + int var6 = 128 * var0.anInt2823 + var0.getSize() * 64; + int var7 = 128 * var0.anInt2798 + var0.getSize() * 64; + var0.xAxis = (var3 * var6 + var4 * (var2 - var3)) / var2; + var0.yAxis = (var7 * var3 + var5 * (var2 - var3)) / var2; + } + + var0.anInt2824 = 0; + if (var0.anInt2840 == 0) { + var0.anInt2806 = 1024; + } + + if (1 == var0.anInt2840) { + var0.anInt2806 = 1536; + } + + if (var0.anInt2840 == 2) { + var0.anInt2806 = 0; + } + + if (var0.anInt2840 == 3) { + var0.anInt2806 = 512; + } + + var0.anInt2785 = var0.anInt2806; + } catch (RuntimeException var8) { + throw ClientErrorException.clientError(var8, "wl.K(" + (var0 != null ? "{...}" : "null") + ',' + (byte) -56 + ')'); + } + } +} diff --git a/Client/src/main/java/org/runite/client/VarpHelpers.java b/Client/src/main/java/org/runite/client/VarpHelpers.java new file mode 100644 index 000000000..7369df795 --- /dev/null +++ b/Client/src/main/java/org/runite/client/VarpHelpers.java @@ -0,0 +1,63 @@ +package org.runite.client; + +import org.rs09.CustomVars; +import org.rs09.SystemLogger; +import org.rs09.client.config.GameConfig; +import org.rs09.client.data.ReferenceCache; + +import java.util.Objects; + +public class VarpHelpers { + + static ReferenceCache varbitLookup = new ReferenceCache(64); + + static void setVarbit(byte var0, int valueToSet, int varbitID) { + try { + if (var0 >= -99) { + setVarbit((byte) 57, -14, 120); + } + + CSConfigCachefile cacheFile = CSConfigCachefile.getCSConfigFileFromVarbitID(varbitID); + int parentVarp = Objects.requireNonNull(cacheFile).parentVarpIndex; + int upperBound = cacheFile.upperBound; + int lowerBound = cacheFile.lowerBound; + int varbitSize = upperBound - lowerBound; + SystemLogger.logInfo(parentVarp + " - bitStart: " + lowerBound + " bitEnd: " + upperBound + " bitSize = " + (varbitSize + 1)); + int expectedMinimumValue = Class3_Sub6.expectedMinimumValues[varbitSize]; + SystemLogger.logInfo("emv: " + expectedMinimumValue + " || vs: " + (127 + valueToSet)); + if (valueToSet < 0|| expectedMinimumValue < valueToSet) { + SystemLogger.logInfo(expectedMinimumValue + " < " + valueToSet); + valueToSet = 0; + } + + expectedMinimumValue <<= lowerBound; + int modifiedVarpValue = valueToSet << lowerBound & expectedMinimumValue | ~expectedMinimumValue & Class57.varpArray[parentVarp]; + setVarp(modifiedVarpValue, parentVarp); + } catch (RuntimeException var8) { + throw ClientErrorException.clientError(var8, "wd.K(" + var0 + ',' + valueToSet + ',' + varbitID + ')'); + } + } + + static void setVarp(int valueToSet, int varpIndex) { + try { + Class57.varpArray[varpIndex] = valueToSet; + if(GameConfig.VARP_DEBUG) + { + SystemLogger.logInfo("[VARP] Setting " + varpIndex + " to " + valueToSet); + } + if(CustomVars.parse(varpIndex,valueToSet)){ + return; + } + Class3_Sub7 var3 = (Class3_Sub7) AtmosphereParser.aHashTable_3679.get(varpIndex); + if(null == var3) { + var3 = new Class3_Sub7(4611686018427387905L); + AtmosphereParser.aHashTable_3679.put(varpIndex, var3); + } else if (var3.aLong2295 != 4611686018427387905L) { + var3.aLong2295 = TimeUtils.time() + 500L | 4611686018427387904L; + } + + } catch (RuntimeException var4) { + throw ClientErrorException.clientError(var4, "nh.W(" + (byte) 99 + ',' + valueToSet + ',' + varpIndex + ')'); + } + } +} diff --git a/Client/src/main/java/org/runite/client/WaterMovementShader.java b/Client/src/main/java/org/runite/client/WaterMovementShader.java new file mode 100644 index 000000000..1a77f1c24 --- /dev/null +++ b/Client/src/main/java/org/runite/client/WaterMovementShader.java @@ -0,0 +1,161 @@ +package org.runite.client; + + + + +import javax.media.opengl.GL; +import java.nio.ByteBuffer; + + +final class WaterMovementShader implements ShaderInterface { + + private int anInt2177 = -1; + private static final float[] color = new float[]{0.1F, 0.1F, 0.15F, 0.1F}; + private final float[] aFloatArray2179 = new float[4]; + private int textureId = -1; + private int anInt2181 = -1; + + + private void method1699() { + byte[] var1 = new byte[]{(byte)0, (byte)-1}; + GL var2 = HDToolKit.gl; + int[] var3 = new int[1]; + var2.glGenTextures(1, var3, 0); + var2.glBindTexture(3552, var3[0]); + var2.glTexImage1D(3552, 0, 6406, 2, 0, 6406, 5121, ByteBuffer.wrap(var1)); + var2.glTexParameteri(3552, 10241, 9729); + var2.glTexParameteri(3552, 10240, 9729); + var2.glTexParameteri(3552, 10242, '\u812f'); + this.textureId = var3[0]; + } + + private void method1701() { + GL var1 = HDToolKit.gl; + this.anInt2177 = var1.glGenLists(2); + var1.glNewList(this.anInt2177, 4864); + var1.glTexEnvi(8960, '\u8590', 768); + var1.glTexEnvi(8960, '\u8581', '\u8576'); + var1.glTexEnvf(8960, '\u8573', 2.0F); + var1.glTexEnvi(8960, '\u8589', '\u8576'); + var1.glTexGeni(8192, 9472, 9217); + var1.glTexGeni(8193, 9472, 9217); + var1.glTexGenfv(8192, 9473, new float[]{9.765625E-4F, 0.0F, 0.0F, 0.0F}, 0); + var1.glTexGenfv(8193, 9473, new float[]{0.0F, 0.0F, 9.765625E-4F, 0.0F}, 0); + var1.glEnable(3168); + var1.glEnable(3169); + if(Class88.Texture3DEnabled) { + var1.glBindTexture('\u806f', Class88.anInt1228); + var1.glTexGeni(8194, 9472, 9217); + var1.glTexGeni(8195, 9472, 9217); + var1.glTexGenfv(8195, 9473, new float[]{0.0F, 0.0F, 0.0F, 1.0F}, 0); + var1.glEnable(3170); + var1.glEnable(3171); + var1.glEnable('\u806f'); + } + + var1.glActiveTexture('\u84c1'); + var1.glEnable(3552); + var1.glBindTexture(3552, this.textureId); + var1.glTexEnvi(8960, '\u8571', '\u8575'); + var1.glTexEnvi(8960, '\u8580', '\u8576'); + var1.glTexEnvi(8960, '\u8582', 5890); + var1.glTexEnvi(8960, '\u8572', '\u8575'); + var1.glTexEnvi(8960, '\u8588', '\u8576'); + var1.glTexEnvi(8960, '\u858a', 5890); + var1.glEnable(3168); + var1.glTexGeni(8192, 9472, 9216); + var1.glPushMatrix(); + var1.glLoadIdentity(); + var1.glEndList(); + var1.glNewList(this.anInt2177 + 1, 4864); + var1.glActiveTexture('\u84c1'); + var1.glDisable(3552); + var1.glDisable(3168); + var1.glTexEnvi(8960, '\u8571', 8448); + var1.glTexEnvi(8960, '\u8580', 5890); + var1.glTexEnvi(8960, '\u8582', '\u8576'); + var1.glTexEnvi(8960, '\u8572', 8448); + var1.glTexEnvi(8960, '\u8588', 5890); + var1.glTexEnvi(8960, '\u858a', '\u8576'); + var1.glActiveTexture('\u84c0'); + var1.glTexEnvi(8960, '\u8590', 768); + var1.glTexEnvi(8960, '\u8581', '\u8578'); + var1.glTexEnvf(8960, '\u8573', 1.0F); + var1.glTexEnvi(8960, '\u8589', '\u8578'); + var1.glDisable(3168); + var1.glDisable(3169); + if(Class88.Texture3DEnabled) { + var1.glDisable(3170); + var1.glDisable(3171); + var1.glDisable('\u806f'); + } + + var1.glEndList(); + } + + public final void method21() { + HDToolKit.gl.glCallList(this.anInt2177 + 1); + } + + public final void method23(int var1) { + GL var2 = HDToolKit.gl; + var2.glActiveTexture('\u84c1'); + var2.glTexEnvfv(8960, 8705, Unsorted.aFloatArray1934, 0); + var2.glActiveTexture('\u84c0'); + if((var1 & 1) == 1) { + if(Class88.Texture3DEnabled) { + if(this.anInt2181 != HDToolKit.anInt1791) { + this.aFloatArray2179[0] = 0.0F; + this.aFloatArray2179[1] = 0.0F; + this.aFloatArray2179[2] = 0.0F; + this.aFloatArray2179[3] = (float)HDToolKit.anInt1791 * 0.0050F;//Water moving speed? + var2.glTexGenfv(8194, 9473, this.aFloatArray2179, 0);//R, OBJECT_PLANE + this.anInt2181 = HDToolKit.anInt1791; + } + } else { + HDToolKit.bindTexture2D(Class88.anIntArray1224[HDToolKit.anInt1791 * 64 / 100 % 64]); + } + } else if(Class88.Texture3DEnabled) { + this.aFloatArray2179[0] = 0.0F; + this.aFloatArray2179[1] = 0.0F; + this.aFloatArray2179[2] = 0.0F; + this.aFloatArray2179[3] = 0.0F; + var2.glTexGenfv(8194, 9473, this.aFloatArray2179, 0); + } else { + HDToolKit.bindTexture2D(Class88.anIntArray1224[0]); + } + + } + + public final void method22() { + GL var1 = HDToolKit.gl; + HDToolKit.method1856(2); + HDToolKit.method1847(2); + HDToolKit.method1823(); + var1.glCallList(this.anInt2177); + float var2 = 2662.4001F; + var2 += (float)(GroundItem.anInt2938 - 128) * 0.5F; + if(var2 >= 3328.0F) { + var2 = 3327.0F; + } + + this.aFloatArray2179[0] = 0.0F; + this.aFloatArray2179[1] = 0.0F; + this.aFloatArray2179[2] = 1.0F / (var2 - 3328.0F); + this.aFloatArray2179[3] = var2 / (var2 - 3328.0F); + var1.glTexGenfv(8192, 9474, this.aFloatArray2179, 0);//GL_ENABLE_BIT, GL_EYE_PLANE + var1.glPopMatrix(); + var1.glActiveTexture('\u84c0');//GL_TEXTURE0 + var1.glTexEnvfv(8960, 8705, color, 0);//GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR + } + + public final int method24() { + return 15; + } + + public WaterMovementShader() { + this.method1699(); + this.method1701(); + } + +} diff --git a/Client/src/main/java/org/runite/client/WaterShader.java b/Client/src/main/java/org/runite/client/WaterShader.java new file mode 100644 index 000000000..6014f7c87 --- /dev/null +++ b/Client/src/main/java/org/runite/client/WaterShader.java @@ -0,0 +1,192 @@ +package org.runite.client; + + + + +import javax.media.opengl.GL; +import java.nio.ByteBuffer; + + +final class WaterShader implements ShaderInterface { + + static int anInt3285 = 128; + private final float[] aFloatArray2190 = new float[4]; + private static boolean aBoolean2191 = false; + private int anInt2192 = -1; + private int anInt2193 = -1; + + + public WaterShader() { + if(HDToolKit.maxTextureUnits >= 2) { + int[] textures = new int[1]; + byte[] pixels = new byte[8]; + int pixelsPos = 0; + while (pixelsPos < 8) { + pixels[pixelsPos] = (byte) (96 + ++pixelsPos * 159 / 8); + } +// for(int var3 = 0; var3 < 8; pixels[var3++] = (byte)(96 + var3 * 159 / 8)) { +// } + GL var4 = HDToolKit.gl; + var4.glGenTextures(1, textures, 0); + var4.glBindTexture(3552, textures[0]);//TEXTURE_1D + // TEXTURE_1D, level0, ALPHA, width8, border0, ALPHA, UNSIGNED_BYTE, pixels. + var4.glTexImage1D(3552, 0, 6406, 8, 0, 6406, 5121, ByteBuffer.wrap(pixels)); + var4.glTexParameteri(3552, 10241, 9729);//TEXTURE_1D, TEXTURE_MIN_FILTER, LINEAR + var4.glTexParameteri(3552, 10240, 9729);//TEXTURE_1D, TEXTURE_MAG_FILTER, LINEAR + var4.glTexParameteri(3552, 10242, '\u812f');//TEXTURE_1D, TEXTURE_WRAP_S, CLAMP_TO_EDGE + this.anInt2192 = textures[0]; + aBoolean2191 = HDToolKit.maxTextureUnits > 2 && HDToolKit.allows3DTextureMapping; + this.method2251(); + } + + } + + + private void method2251() { + GL var1 = HDToolKit.gl; + this.anInt2193 = var1.glGenLists(2); + var1.glNewList(this.anInt2193, 4864); + var1.glActiveTexture('\u84c1'); + if(aBoolean2191) { + var1.glBindTexture('\u806f', Class88.anInt1228); + var1.glTexEnvi(8960, '\u8571', 260); + var1.glTexEnvi(8960, '\u8590', 768); + var1.glTexEnvi(8960, '\u8572', 7681); + var1.glTexEnvi(8960, '\u8588', '\u8578'); + var1.glTexGeni(8192, 9472, 9216); + var1.glTexGeni(8194, 9472, 9216); + var1.glTexGeni(8193, 9472, 9216); + var1.glTexGeni(8195, 9472, 9217); + var1.glTexGenfv(8195, 9473, new float[]{0.0F, 0.0F, 0.0F, 1.0F}, 0); + var1.glEnable(3168); + var1.glEnable(3169); + var1.glEnable(3170); + var1.glEnable(3171); + var1.glEnable('\u806f'); + var1.glActiveTexture('\u84c2'); + var1.glTexEnvi(8960, 8704, '\u8570'); + } + + var1.glBindTexture(3552, this.anInt2192); + var1.glTexEnvi(8960, '\u8571', '\u8575'); + var1.glTexEnvi(8960, '\u8580', '\u8576'); + var1.glTexEnvi(8960, '\u8582', 5890); + var1.glTexEnvi(8960, '\u8572', 7681); + var1.glTexEnvi(8960, '\u8588', '\u8578'); + var1.glTexGeni(8192, 9472, 9216); + var1.glEnable(3552); + var1.glEnable(3168); + var1.glActiveTexture('\u84c0'); + var1.glEndList(); + var1.glNewList(this.anInt2193 + 1, 4864); + var1.glActiveTexture('\u84c1'); + if(aBoolean2191) { + var1.glTexEnvi(8960, '\u8571', 8448); + var1.glTexEnvi(8960, '\u8590', 768); + var1.glTexEnvi(8960, '\u8572', 8448); + var1.glTexEnvi(8960, '\u8588', 5890); + var1.glDisable(3168); + var1.glDisable(3169); + var1.glDisable(3170); + var1.glDisable(3171); + var1.glDisable('\u806f'); + var1.glActiveTexture('\u84c2'); + var1.glTexEnvi(8960, 8704, 8448); + } + + var1.glTexEnvfv(8960, 8705, new float[]{0.0F, 1.0F, 0.0F, 1.0F}, 0); + var1.glTexEnvi(8960, '\u8571', 8448); + var1.glTexEnvi(8960, '\u8580', 5890); + var1.glTexEnvi(8960, '\u8582', '\u8576'); + var1.glTexEnvi(8960, '\u8572', 8448); + var1.glTexEnvi(8960, '\u8588', 5890); + var1.glDisable(3552); + var1.glDisable(3168); + var1.glActiveTexture('\u84c0'); + var1.glEndList(); + } + + static int method2252() { + return aBoolean2191?'\u84c2':'\u84c1'; + } + + static void method2253() { + GL var0 = HDToolKit.gl; + var0.glClientActiveTexture(method2252()); + var0.glDisableClientState('\u8078'); + var0.glClientActiveTexture('\u84c0'); + } + + public final void method22() { + GL var1 = HDToolKit.gl; + var1.glCallList(this.anInt2193); + } + + static void method2254() { + GL var0 = HDToolKit.gl; + var0.glClientActiveTexture(method2252()); + var0.glEnableClientState('\u8078'); + var0.glClientActiveTexture('\u84c0'); + } + + public final int method24() { + return 0; + } + + public final void method21() { + GL var1 = HDToolKit.gl; + var1.glCallList(this.anInt2193 + 1); + } + + public final void method23(int var1) { + GL var2 = HDToolKit.gl; + var2.glActiveTexture('\u84c1'); + if(!aBoolean2191 && var1 < 0) { + var2.glDisable(3168); + } else { + var2.glPushMatrix(); + var2.glLoadIdentity(); + var2.glRotatef(180.0F, 1.0F, 0.0F, 0.0F); + var2.glRotatef((float)GroundItem.anInt2938 * 360.0F / 2048.0F, 1.0F, 0.0F, 0.0F); + var2.glRotatef((float) TextureOperation9.anInt3103 * 360.0F / 2048.0F, 0.0F, 1.0F, 0.0F); + var2.glTranslatef((float)(-Unsorted.anInt144), (float)(-Unsorted.anInt3695), (float)(-LinkableRSString.anInt2587)); + if(aBoolean2191) { + this.aFloatArray2190[0] = 0.0010F; + this.aFloatArray2190[1] = 9.0E-4F; + this.aFloatArray2190[2] = 0.0F; + this.aFloatArray2190[3] = 0.0F; + var2.glTexGenfv(8192, 9474, this.aFloatArray2190, 0); + this.aFloatArray2190[0] = 0.0F; + this.aFloatArray2190[1] = 9.0E-4F; + this.aFloatArray2190[2] = 0.0010F; + this.aFloatArray2190[3] = 0.0F; + var2.glTexGenfv(8193, 9474, this.aFloatArray2190, 0); + this.aFloatArray2190[0] = 0.0F; + this.aFloatArray2190[1] = 0.0F; + this.aFloatArray2190[2] = 0.0F; + this.aFloatArray2190[3] = (float)HDToolKit.anInt1791 * 0.0050F; + var2.glTexGenfv(8194, 9474, this.aFloatArray2190, 0); + var2.glActiveTexture('\u84c2'); + } + + var2.glTexEnvfv(8960, 8705, Class72.method1297(), 0); + if(var1 >= 0) { + this.aFloatArray2190[0] = 0.0F; + this.aFloatArray2190[1] = 1.0F / (float) anInt3285; + this.aFloatArray2190[2] = 0.0F; + this.aFloatArray2190[3] = 1.0F * (float)var1 / (float) anInt3285; + var2.glTexGenfv(8192, 9474, this.aFloatArray2190, 0); + var2.glEnable(3168); + } else { + var2.glDisable(3168); + } + + var2.glPopMatrix(); + } + + var2.glActiveTexture('\u84c0'); + } + + + +} diff --git a/Client/src/main/java/org/runite/client/WaterfallShader.java b/Client/src/main/java/org/runite/client/WaterfallShader.java new file mode 100644 index 000000000..32591a2ca --- /dev/null +++ b/Client/src/main/java/org/runite/client/WaterfallShader.java @@ -0,0 +1,234 @@ +package org.runite.client; + + +import org.rs09.client.config.GameConfig; + + +import javax.media.opengl.GL; +import java.util.Objects; + +final class WaterfallShader implements ShaderInterface { + + static boolean[] aBooleanArray2169 = new boolean[5]; + static CacheIndex spritesIndex_probably_2172; + static int waterfallTextureId = -1; + static RSString aString_8 = RSString.parse(""); + private int listId; + private final float[] aFloatArray2174 = new float[4]; + private static RSString aString_2175 = RSString.parse(")4a="); + + + static void method1626(byte var0) { + try { + QuickChatDefinition.aReferenceCache_3572.clear(); + Class143.aReferenceCache_1874.clear(); + if(var0 <= -124) { + Class67.aReferenceCache_1013.clear(); + } + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "ob.F(" + var0 + ')'); + } + } + + static boolean method1627(int var0, byte var1) { + try { + WorldListEntry var2 = Class3_Sub8.getWorld(97, var0); + if(var2 == null) { + return false; + } else if (Signlink.anInt1214 != 1 && Signlink.anInt1214 != 2 && Class44.paramModeWhere != 2) { + RSString var9 = aString_8; + if (Class44.paramModeWhere != 0) { + var9 = RSString.stringCombiner(new RSString[]{TextCore.aString_4007, RSString.stringAnimator(var2.worldId - -7000)}); + } + + if (var1 > -2) { + return false; + } else { + RSString var4 = aString_8; + if (Class163_Sub2.paramSettings != null) { + var4 = RSString.stringCombiner(new RSString[]{Class97.aString_1380, Class163_Sub2.paramSettings}); + } + RSString var5 = RSString.stringCombiner(new RSString[]{RSString.parse("http:)4)4"), var2.address, var9, TextCore.aString_2608, RSString.stringAnimator(Class3_Sub20.paramLanguage), aString_2175, RSString.stringAnimator(Class3_Sub26.paramAffid), var4, TextCore.aString_1133, !Unsorted.paramJavaScriptEnabled ? TextCore.aString_3013 : TextCore.aString_339, TextCore.aString_2610, !Class163_Sub2_Sub1.paramObjectTagEnabled ? TextCore.aString_3013 : TextCore.aString_339, TextCore.aString_1617, Client.paramAdvertisementSuppressed ? TextCore.aString_339 : TextCore.aString_3013}); + + try { + Objects.requireNonNull(Client.clientInstance.getAppletContext()).showDocument(var5.toURL(), "_self"); + } catch (Exception var7) { + return false; + } + + return true; + } + } else { + GameConfig.IP_ADDRESS = var2.address.toString(); + System.out.println(GameConfig.IP_ADDRESS); +// GameLaunch.SETTINGS.setIp(var2.address.toString()); + var2.address.method1568(); + Class38_Sub1.accRegistryIp = GameConfig.IP_MANAGEMENT; + CS2Script.userCurrentWorldID = var2.worldId; + if (Class44.paramModeWhere != 0) { + Class162.anInt2036 = '\u9c40' + CS2Script.userCurrentWorldID; + Class140_Sub6.accRegistryPort = Class162.anInt2036; + Client.currentPort = CS2Script.userCurrentWorldID + '\uc350'; + } + + return true; + } + } catch (RuntimeException var8) { + throw ClientErrorException.clientError(var8, "ob.E(" + var0 + ',' + var1 + ')'); + } + } + + public final int method24() { + try { + return 0; + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "ob.C()"); + } + } + + public final void method23(int var1) { + try { + GL var2 = HDToolKit.gl; + float var4 = (float)(1 + (var1 >> 3 & 3)) * 0.01F; + float var3 = -0.01F * (float)(1 + (var1 & 3)); + float var5 = 0 == (var1 & 64)?4.8828125E-4F:9.765625E-4F; + boolean var6 = (128 & var1) != 0; + if(var6) { + this.aFloatArray2174[0] = var5; + this.aFloatArray2174[1] = 0.0F; + this.aFloatArray2174[2] = 0.0F; + this.aFloatArray2174[3] = 0.0F; + } else { + this.aFloatArray2174[2] = var5; + this.aFloatArray2174[1] = 0.0F; + this.aFloatArray2174[3] = 0.0F; + this.aFloatArray2174[0] = 0.0F; + } + + var2.glActiveTexture('\u84c1'); + var2.glMatrixMode(5888); + var2.glPushMatrix(); + var2.glLoadIdentity(); + var2.glRotatef(180.0F, 1.0F, 0.0F, 0.0F); + var2.glRotatef((float)GroundItem.anInt2938 * 360.0F / 2048.0F, 1.0F, 0.0F, 0.0F); + var2.glRotatef(360.0F * (float) TextureOperation9.anInt3103 / 2048.0F, 0.0F, 1.0F, 0.0F); + var2.glTranslatef((float)(-Unsorted.anInt144), (float)(-Unsorted.anInt3695), (float)(-LinkableRSString.anInt2587)); + var2.glTexGenfv(8192, 9474, this.aFloatArray2174, 0); + this.aFloatArray2174[3] = var3 * (float)HDToolKit.anInt1791; + this.aFloatArray2174[0] = 0.0F; + this.aFloatArray2174[2] = 0.0F; + this.aFloatArray2174[1] = var5; + var2.glTexGenfv(8193, 9474, this.aFloatArray2174, 0); + var2.glPopMatrix(); + if(Class88.Texture3DEnabled) { + this.aFloatArray2174[3] = (float)HDToolKit.anInt1791 * var4; + this.aFloatArray2174[1] = 0.0F; + this.aFloatArray2174[0] = 0.0F; + this.aFloatArray2174[2] = 0.0F; + var2.glTexGenfv(8194, 9473, this.aFloatArray2174, 0); + } else { + int var7 = (int)((float)HDToolKit.anInt1791 * var4 * 64.0F); + var2.glBindTexture(3553, Class88.anIntArray1223[var7 % 64]); + } + + var2.glActiveTexture('\u84c0'); + } catch (RuntimeException var8) { + throw ClientErrorException.clientError(var8, "ob.B(" + var1 + ')'); + } + } + + public final void method21() { + try { + GL var1 = HDToolKit.gl; + var1.glCallList(1 + this.listId); + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "ob.A()"); + } + } + + public final void method22() { + try { + GL var1 = HDToolKit.gl; + var1.glCallList(this.listId); + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "ob.D()"); + } + } + + public static void method1630(byte var0) { + try { + TextCore.aString_2171 = null; + spritesIndex_probably_2172 = null; + aBooleanArray2169 = null; + if(var0 > -112) { + method1632(-116, 108, 54, -120, 44, 6); + } + aString_2175 = null; + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "ob.J(" + var0 + ')'); + } + } + + private void method1631() { + try { + GL var2 = HDToolKit.gl; + this.listId = var2.glGenLists(2); + var2.glNewList(this.listId, 4864);//COMPILE + var2.glActiveTexture('\u84c1');//TEXTURE1 + if(Class88.Texture3DEnabled) { + var2.glBindTexture('\u806f', waterfallTextureId);//TEXTURE_3D + var2.glTexGeni(8194, 9472, 9217);//R, TEXTURE_GEN_MODE, OBJECT_LINEAR + var2.glEnable(3170);//TEXTURE_GEN_R + var2.glEnable('\u806f');//TEXTURE_3D + } else { + var2.glEnable(3553);//TEXTURE_2D + } + + var2.glTexGeni(8192, 9472, 9216);//S, TEXTURE_GEN_MODE, EYE_LINEAR + var2.glTexGeni(8193, 9472, 9216);//T, TEXTURE_GEN_MODE, EYE_LINEAR + var2.glEnable(3168);//TEXTURE_GEN_S + var2.glEnable(3169);//TEXTURE_GEN_T + var2.glActiveTexture('\u84c0');//TEXTURE1 + var2.glEndList(); + var2.glNewList(this.listId + 1, 4864);//COMPILE + var2.glActiveTexture('\u84c1');//TEXTURE1 + if(Class88.Texture3DEnabled) { + var2.glDisable('\u806f');//TEXTURE_3D + var2.glDisable(3170);//TEXTURE_GEN_R + } else { + var2.glDisable(3553);//TEXTURE_2D + } + + var2.glDisable(3168);//TEXTURE_GEN_S + var2.glDisable(3169);//TEXTURE_GEN_T + var2.glActiveTexture('\u84c0');//TEXTURE0 + var2.glEndList(); + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "ob.I(" + 2 + ')'); + } + } + + public WaterfallShader() { + try { + this.method1631(); + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "ob.()"); + } + } + + static void method1632(int var0, int var1, int var2, int var3, int var4, int var5) { + try { + if(var0 <= 66) { + method1630((byte)-33); + } + + for(int var6 = var3; var6 <= var1; ++var6) { + TextureOperation18.method282(Class38.anIntArrayArray663[var6], var4, 121, var2, var5); + } + + } catch (RuntimeException var7) { + throw ClientErrorException.clientError(var7, "ob.G(" + var0 + ',' + var1 + ',' + var2 + ',' + var3 + ',' + var4 + ',' + var5 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/WorldListCountry.java b/Client/src/main/java/org/runite/client/WorldListCountry.java new file mode 100644 index 000000000..669d31d9b --- /dev/null +++ b/Client/src/main/java/org/runite/client/WorldListCountry.java @@ -0,0 +1,8 @@ +package org.runite.client; + +public final class WorldListCountry { + + public static int localPlane; + int flagId; + RSString name; +} diff --git a/Client/src/main/java/org/runite/client/WorldListEntry.java b/Client/src/main/java/org/runite/client/WorldListEntry.java new file mode 100644 index 000000000..8d6e445f8 --- /dev/null +++ b/Client/src/main/java/org/runite/client/WorldListEntry.java @@ -0,0 +1,226 @@ +package org.runite.client; + +import org.rs09.SystemLogger; +import org.rs09.client.config.GameConfig; +import org.rs09.client.rendering.Toolkit; + +import java.util.Objects; + +public final class WorldListEntry extends Class44 { + + public static int anInt2937; + public static WorldListEntry[] worldList; + public static int activeWorldListSize; + public static int updateStamp; + static WorldListCountry[] countries; + static AbstractSprite aAbstractSprite_3099; + static int anInt3351; + static AbstractSprite aAbstractSprite_1339; + static AbstractSprite aAbstractSprite_1457; + static int anInt1400; + static int anInt739; + static int anInt1126; + static int archiveID; + static int worldListArraySize; + public RSString activity; + public int worldId; + static boolean aBoolean2623 = true; + public RSString address; + static int anInt2626 = 20; + static AudioChannel aAudioChannel_2627; + + + static void method1076() { + try { + Class154.aReferenceCache_1964.clear(); + } catch (RuntimeException var2) { + throw ClientErrorException.clientError(var2, "ba.C(" + 88 + ')'); + } + } + + static void parseWorldList(DataBuffer buffer) { + try { + int var2 = buffer.getSmart(); + countries = new WorldListCountry[var2]; + + int var3; + for (var3 = 0; var3 < var2; ++var3) { + countries[var3] = new WorldListCountry(); + countries[var3].flagId = buffer.getSmart(); + countries[var3].name = buffer.getGJString2(105); + } + + Class53.worldListOffset = buffer.getSmart(); + worldListArraySize = buffer.getSmart(); + activeWorldListSize = buffer.getSmart(); + worldList = new WorldListEntry[-Class53.worldListOffset + worldListArraySize + 1]; + + for (var3 = 0; var3 < activeWorldListSize; ++var3) { + int worldId = buffer.getSmart(); + WorldListEntry var5 = worldList[worldId] = new WorldListEntry(); + var5.countryIndex = buffer.readUnsignedByte(); + var5.settings = buffer.readInt(); + var5.worldId = worldId - -Class53.worldListOffset; + var5.activity = buffer.getGJString2(98); + var5.address = buffer.getGJString2(79); + GameConfig.WORLD = worldId; +// GameLaunch.SETTINGS.setWorld(worldId); + SystemLogger.logInfo("Registering to world: " + GameConfig.WORLD); + } + updateStamp = buffer.readInt(); + Class30.loadedWorldList = true; + } catch (RuntimeException var6) { + throw ClientErrorException.clientError(var6, "hi.B(" + (buffer != null ? "{...}" : "null") + ',' + -88 + ')'); + } + } + + static void buildWorldListInterface() { + try { + int var1 = Class21.anInt1462; + int var2 = Class21.anInt3395; + int var4 = Class21.anInt3537; + int var3 = Class21.anInt3552; + if (aAbstractSprite_3099 == null || null == aAbstractSprite_1457) { + if (CacheIndex.spritesIndex.retrieveSpriteFile(archiveID) && CacheIndex.spritesIndex.retrieveSpriteFile(anInt1400)) { + aAbstractSprite_3099 = Unsorted.loadSoftwareSprite(CacheIndex.spritesIndex, archiveID); + aAbstractSprite_1457 = Unsorted.loadSoftwareSprite(CacheIndex.spritesIndex, anInt1400); + if (HDToolKit.highDetail) { + if (aAbstractSprite_3099 instanceof Class3_Sub28_Sub16_Sub2_Sub1) { + aAbstractSprite_3099 = new Class3_Sub28_Sub16_Sub1_Sub1((SoftwareSprite) aAbstractSprite_3099); + } else { + aAbstractSprite_3099 = new HDSprite((SoftwareSprite) aAbstractSprite_3099); + } + + if (aAbstractSprite_1457 instanceof Class3_Sub28_Sub16_Sub2_Sub1) { + aAbstractSprite_1457 = new Class3_Sub28_Sub16_Sub1_Sub1((SoftwareSprite) aAbstractSprite_1457); + } else { + aAbstractSprite_1457 = new HDSprite((SoftwareSprite) aAbstractSprite_1457); + } + } + } else { + Toolkit.getActiveToolkit().fillRect(var1, var2, var3, 20, InterfaceWidget.anInt3600, -Unsorted.anInt963 + 256); + } + } + + int var5; + int var6; + if (aAbstractSprite_3099 != null && aAbstractSprite_1457 != null) { + var5 = var3 / aAbstractSprite_3099.width; + + for (var6 = 0; var6 < var5; ++var6) { + aAbstractSprite_3099.drawAt(var6 * aAbstractSprite_3099.width + var1, var2); + } + + aAbstractSprite_1457.drawAt(var1, var2); + aAbstractSprite_1457.method641(-aAbstractSprite_1457.width + (var1 - -var3), var2); + } + + FontType.bold.method681(RSString.parse(GameConfig.RCM_TITLE), var1 - -3, 14 + var2, anInt3351, -1); + Toolkit.getActiveToolkit().fillRect(var1, 20 + var2, var3, var4 - 20, InterfaceWidget.anInt3600, -Unsorted.anInt963 + 256); + + var6 = Unsorted.anInt1709; + var5 = Class126.anInt1676; + int var7; + int var8; + for (var7 = 0; Unsorted.menuOptionCount > var7; ++var7) { + var8 = (-var7 + Unsorted.menuOptionCount - 1) * 15 + var2 + 35; + if (var1 < var5 && var5 < var1 - -var3 && -13 + var8 < var6 && var8 + 3 > var6) { + Toolkit.getActiveToolkit().fillRect(var1, var8 - 13, var3, 16, MouseListeningClass.anInt1926, -Class136.anInt1771 + 256); + } + } + + if ((aAbstractSprite_1339 == null || Class50.aAbstractSprite_824 == null || null == Class3_Sub26.aAbstractSprite_2560) && CacheIndex.spritesIndex.retrieveSpriteFile(anInt739) && CacheIndex.spritesIndex.retrieveSpriteFile(anInt1126) && CacheIndex.spritesIndex.retrieveSpriteFile(anInt2937)) { + aAbstractSprite_1339 = Unsorted.loadSoftwareSprite(CacheIndex.spritesIndex, anInt739); + Class50.aAbstractSprite_824 = Unsorted.loadSoftwareSprite(CacheIndex.spritesIndex, anInt1126); + Class3_Sub26.aAbstractSprite_2560 = Unsorted.loadSoftwareSprite(CacheIndex.spritesIndex, anInt2937); + if (HDToolKit.highDetail) { + if (aAbstractSprite_1339 instanceof Class3_Sub28_Sub16_Sub2_Sub1) { + aAbstractSprite_1339 = new Class3_Sub28_Sub16_Sub1_Sub1((SoftwareSprite) aAbstractSprite_1339); + } else { + aAbstractSprite_1339 = new HDSprite((SoftwareSprite) aAbstractSprite_1339); + } + + if (Class50.aAbstractSprite_824 instanceof Class3_Sub28_Sub16_Sub2_Sub1) { + Class50.aAbstractSprite_824 = new Class3_Sub28_Sub16_Sub1_Sub1((SoftwareSprite) Class50.aAbstractSprite_824); + } else { + Class50.aAbstractSprite_824 = new HDSprite((SoftwareSprite) Class50.aAbstractSprite_824); + } + + if (Class3_Sub26.aAbstractSprite_2560 instanceof Class3_Sub28_Sub16_Sub2_Sub1) { + Class3_Sub26.aAbstractSprite_2560 = new Class3_Sub28_Sub16_Sub1_Sub1((SoftwareSprite) Class3_Sub26.aAbstractSprite_2560); + } else { + Class3_Sub26.aAbstractSprite_2560 = new HDSprite((SoftwareSprite) Class3_Sub26.aAbstractSprite_2560); + } + } + } + + int var9; + if (aAbstractSprite_1339 != null && null != Class50.aAbstractSprite_824 && null != Class3_Sub26.aAbstractSprite_2560) { + var7 = var3 / aAbstractSprite_1339.width; + + for (var8 = 0; var7 > var8; ++var8) { + aAbstractSprite_1339.drawAt(var1 + aAbstractSprite_1339.width * var8, var4 + var2 + -aAbstractSprite_1339.height); + } + + var8 = (-20 + var4) / Class50.aAbstractSprite_824.height; + + for (var9 = 0; var9 < var8; ++var9) { + Class50.aAbstractSprite_824.drawAt(var1, var2 + 20 + var9 * Class50.aAbstractSprite_824.height); + Class50.aAbstractSprite_824.method641(var1 - (-var3 - -Class50.aAbstractSprite_824.width), var2 + 20 + var9 * Class50.aAbstractSprite_824.height); + } + + Class3_Sub26.aAbstractSprite_2560.drawAt(var1, var4 + (var2 - Class3_Sub26.aAbstractSprite_2560.height)); + Class3_Sub26.aAbstractSprite_2560.method641(var1 + var3 - Class3_Sub26.aAbstractSprite_2560.width, var2 - -var4 + -Class3_Sub26.aAbstractSprite_2560.height); + } + + for (var7 = 0; var7 < Unsorted.menuOptionCount; ++var7) { + var8 = 15 * (Unsorted.menuOptionCount - 1 + -var7) + var2 + 35; + var9 = anInt3351; + if (var1 < var5 && var3 + var1 > var5 && var6 > var8 - 13 && var8 - -3 > var6) { + var9 = Class154.anInt1957; + } + + FontType.bold.method681(Unsorted.method802(var7), 3 + var1, var8, var9, 0); + } + + Unsorted.method1282(Class21.anInt1462, Class21.anInt3395, Class21.anInt3537, Class21.anInt3552); + } catch (RuntimeException var10) { + throw ClientErrorException.clientError(var10, "ij.F(" + ')'); + } + } + + final WorldListCountry method1078(int var1) { + try { + return countries[this.countryIndex]; + } catch (RuntimeException var3) { + throw ClientErrorException.clientError(var3, "ba.B(" + var1 + ')'); + } + } + + static int method1079(int var0) { + try { + if (0 > var0) { + return 0; + } else { + Class3_Sub25 var2 = (Class3_Sub25) TileData.aHashTable_2220.get(var0); + if (var2 == null) { + return Objects.requireNonNull(ConfigInventoryDefinition.retrieveConfigurationInventoryFile(var0)).size; + } else { + int var3 = 0; + + for (int var4 = 0; var4 < var2.anIntArray2547.length; ++var4) { + if (var2.anIntArray2547[var4] == -1) { + ++var3; + } + } + + var3 += Objects.requireNonNull(ConfigInventoryDefinition.retrieveConfigurationInventoryFile(var0)).size + -var2.anIntArray2547.length; + return var3; + } + } + } catch (RuntimeException var5) { + throw ClientErrorException.clientError(var5, "ba.D(" + var0 + ',' + (byte) -80 + ')'); + } + } + +} diff --git a/Client/src/main/java/org/runite/client/WorldMapLOCDecoder.java b/Client/src/main/java/org/runite/client/WorldMapLOCDecoder.java new file mode 100644 index 000000000..5fa221e66 --- /dev/null +++ b/Client/src/main/java/org/runite/client/WorldMapLOCDecoder.java @@ -0,0 +1,119 @@ +package org.runite.client; + +public final class WorldMapLOCDecoder { + + static void decode(DataBuffer var1) { + try { + label134: + while (true) { + if (var1.index < var1.buffer.length) { + boolean var18 = false; + int var5 = 0; + int var6 = 0; + if (var1.readUnsignedByte() == 1) { + var5 = var1.readUnsignedByte(); + var18 = true; + var6 = var1.readUnsignedByte(); + } + + int var7 = var1.readUnsignedByte(); + int var8 = var1.readUnsignedByte(); + int var9 = -TextureOperation37.anInt3256 + 64 * var7; + int var10 = -(var8 * 64) - (-Unsorted.anInt65 - -1) + Class108.anInt1460; + int var11; + int var12; + if (var9 >= 0 && -63 + var10 >= 0 && Class23.anInt455 > var9 + 63 && var10 < Class108.anInt1460) { + var11 = var9 >> 6; + var12 = var10 >> 6; + int var13 = 0; + + while (true) { + if (var13 >= 64) { + continue label134; + } + + for (int var14 = 0; var14 < 64; ++var14) { + if (!var18 || var13 >= 8 * var5 && 8 * var5 - -8 > var13 && 8 * var6 <= var14 && var14 < var6 * 8 - -8) { + int var15 = var1.readUnsignedByte(); + if (0 != var15) { + int var2; + if (1 == (1 & var15)) { + var2 = var1.readUnsignedByte(); + if (Class36.aByteArrayArrayArray640[var11][var12] == null) { + Class36.aByteArrayArrayArray640[var11][var12] = new byte[4096]; + } + + Class36.aByteArrayArrayArray640[var11][var12][var13 + (-var14 + 63 << 6)] = (byte) var2; + } + + if (2 == (var15 & 2)) { + var2 = var1.readMedium(); + if (null == Class29.anIntArrayArrayArray558[var11][var12]) { + Class29.anIntArrayArrayArray558[var11][var12] = new int[4096]; + } + + Class29.anIntArrayArrayArray558[var11][var12][(-var14 + 63 << 6) + var13] = var2; + } + + if (4 == (var15 & 4)) { + var2 = var1.readMedium(); + if (null == Class44.anIntArrayArrayArray720[var11][var12]) { + Class44.anIntArrayArrayArray720[var11][var12] = new int[4096]; + } + + --var2; + ObjectDefinition var3 = ObjectDefinition.getObjectDefinition(var2); + if (null != var3.ChildrenIds) { + var3 = var3.method1685(0); + if (var3 == null || var3.MapIcon == -1) { + continue; + } + } + + Class44.anIntArrayArrayArray720[var11][var12][(-var14 + 63 << 6) + var13] = 1 + var3.objectId; + Class3_Sub23 var16 = new Class3_Sub23(); + var16.anInt2532 = var3.MapIcon; + var16.anInt2531 = var9; + var16.anInt2539 = var10; + Class84.aLinkedList_1162.pushBack(var16); + } + } + } + } + + ++var13; + } + } + + var11 = 0; + + while (true) { + if (var11 >= (var18 ? 64 : 4096)) { + continue label134; + } + + var12 = var1.readUnsignedByte(); + if (var12 != 0) { + if ((var12 & 1) == 1) { + ++var1.index; + } + + if (2 == (var12 & 2)) { + var1.index += 2; + } + + if (4 == (var12 & 4)) { + var1.index += 3; + } + } + + ++var11; + } + } + return; + } + } catch (RuntimeException var17) { + throw ClientErrorException.clientError(var17, "nc.A(" + (byte) -83 + ',' + (var1 != null ? "{...}" : "null") + ')'); + } + } +} diff --git a/Client/src/main/java/org/runite/client/WorldMapOverlay2Decoder.java b/Client/src/main/java/org/runite/client/WorldMapOverlay2Decoder.java new file mode 100644 index 000000000..e3371ad26 --- /dev/null +++ b/Client/src/main/java/org/runite/client/WorldMapOverlay2Decoder.java @@ -0,0 +1,62 @@ +package org.runite.client; + +public final class WorldMapOverlay2Decoder { + + static void decode(DataBuffer var1) { + try { + + while (var1.index < var1.buffer.length) { + int var4 = 0; + boolean var3 = false; + int var5 = 0; + if (var1.readUnsignedByte() == 1) { + var3 = true; + var4 = var1.readUnsignedByte(); + var5 = var1.readUnsignedByte(); + } + + int var6 = var1.readUnsignedByte(); + int var7 = var1.readUnsignedByte(); + int var8 = -TextureOperation37.anInt3256 + var6 * 64; + int var9 = Class108.anInt1460 + -1 - -Unsorted.anInt65 - 64 * var7; + byte var2; + int var10; + if (var8 >= 0 && (var9 - 63) >= 0 && Class23.anInt455 > var8 + 63 && Class108.anInt1460 > var9) { + var10 = var8 >> 6; + int var11 = var9 >> 6; + + for (int var12 = 0; 64 > var12; ++var12) { + for (int var13 = 0; var13 < 64; ++var13) { + if (!var3 || var12 >= (var4 * 8) && 8 + 8 * var4 > var12 && var13 >= var5 * 8 && 8 + var5 * 8 > var13) { + var2 = var1.readSignedByte(); + if (var2 != 0) { + if (null == TextureOperation29.aByteArrayArrayArray3390[var10][var11]) { + TextureOperation29.aByteArrayArrayArray3390[var10][var11] = new byte[4096]; + } + + TextureOperation29.aByteArrayArrayArray3390[var10][var11][(63 + -var13 << 6) + var12] = var2; + byte var14 = var1.readSignedByte(); + if (null == CS2Script.aByteArrayArrayArray2452[var10][var11]) { + CS2Script.aByteArrayArrayArray2452[var10][var11] = new byte[4096]; + } + + CS2Script.aByteArrayArrayArray2452[var10][var11][var12 + (-var13 + 63 << 6)] = var14; + } + } + } + } + } else { + for (var10 = 0; (!var3 ? 4096 : 64) > var10; ++var10) { + var2 = var1.readSignedByte(); + if (var2 != 0) { + ++var1.index; + } + } + } + } + + } catch (RuntimeException var15) { + throw ClientErrorException.clientError(var15, "sk.F(" + -21774 + ',' + (var1 != null ? "{...}" : "null") + ')'); + } + } +} diff --git a/Client/src/main/java/org/runite/client/WorldMapOverlayDecoder.java b/Client/src/main/java/org/runite/client/WorldMapOverlayDecoder.java new file mode 100644 index 000000000..e824af9cb --- /dev/null +++ b/Client/src/main/java/org/runite/client/WorldMapOverlayDecoder.java @@ -0,0 +1,62 @@ +package org.runite.client; + +public final class WorldMapOverlayDecoder { + + static void decode(DataBuffer var0) { + try { + + while(var0.buffer.length > var0.index) { + int var4 = 0; + boolean var3 = false; + int var5 = 0; + if(var0.readUnsignedByte() == 1) { + var3 = true; + var4 = var0.readUnsignedByte(); + var5 = var0.readUnsignedByte(); + } + + int var6 = var0.readUnsignedByte(); + int var7 = var0.readUnsignedByte(); + int var9 = -(var7 * 64) - (-Unsorted.anInt65 - Class108.anInt1460 + 1); + int var8 = var6 * 64 + -TextureOperation37.anInt3256; + byte var2; + int var10; + if(var8 >= 0 && (var9 - 63) >= 0 && Class23.anInt455 > (var8 + 63) && var9 < Class108.anInt1460) { + var10 = var8 >> 6; + int var11 = var9 >> 6; + + for(int var12 = 0; var12 < 64; ++var12) { + for(int var13 = 0; var13 < 64; ++var13) { + if(!var3 || (8 * var4) <= var12 && var12 < 8 + var4 * 8 && var13 >= var5 * 8 && (8 + var5 * 8) > var13) { + var2 = var0.readSignedByte(); + if(var2 != 0) { + if(RenderAnimationDefinition.aByteArrayArrayArray383[var10][var11] == null) { + RenderAnimationDefinition.aByteArrayArrayArray383[var10][var11] = new byte[4096]; + } + + RenderAnimationDefinition.aByteArrayArrayArray383[var10][var11][var12 + (-var13 + 63 << 6)] = var2; + byte var14 = var0.readSignedByte(); + if(Class3_Sub10.aByteArrayArrayArray2339[var10][var11] == null) { + Class3_Sub10.aByteArrayArrayArray2339[var10][var11] = new byte[4096]; + } + + Class3_Sub10.aByteArrayArrayArray2339[var10][var11][var12 + (63 - var13 << 6)] = var14; + } + } + } + } + } else { + for(var10 = 0; var10 < (var3 ? 64 : 4096); ++var10) { + var2 = var0.readSignedByte(); + if(0 != var2) { + ++var0.index; + } + } + } + } + + } catch (RuntimeException var15) { + throw ClientErrorException.clientError(var15, "dk.C(" + (var0 != null?"{...}":"null") + ',' + false + ')'); + } + } +} diff --git a/Client/src/main/java/org/runite/client/WorldMapUnderlayDecoder.java b/Client/src/main/java/org/runite/client/WorldMapUnderlayDecoder.java new file mode 100644 index 000000000..cec9a08f7 --- /dev/null +++ b/Client/src/main/java/org/runite/client/WorldMapUnderlayDecoder.java @@ -0,0 +1,142 @@ +package org.runite.client; + +public final class WorldMapUnderlayDecoder { + + static void decode(DataBuffer var1) { + try { + int var3 = Class158.anInt2010 >> 1; + int var2 = AudioThread.anInt4034 >> 2 << 10; + byte[][] var4 = new byte[Class23.anInt455][Class108.anInt1460]; + + int var6; + int var12; + int var14; + while (var1.index < var1.buffer.length) { + int var7 = 0; + var6 = 0; + boolean var5 = false; + if (var1.readUnsignedByte() == 1) { + var6 = var1.readUnsignedByte(); + var7 = var1.readUnsignedByte(); + var5 = true; + } + + int var8 = var1.readUnsignedByte(); + int var9 = var1.readUnsignedByte(); + int var10 = -TextureOperation37.anInt3256 + var8 * 64; + int var11 = -1 + Class108.anInt1460 - var9 * 64 + Unsorted.anInt65; + if (var10 >= 0 && 0 <= -63 + var11 && Class23.anInt455 > var10 - -63 && var11 < Class108.anInt1460) { + for (var12 = 0; var12 < 64; ++var12) { + byte[] var13 = var4[var10 - -var12]; + + for (var14 = 0; 64 > var14; ++var14) { + if (!var5 || var12 >= 8 * var6 && 8 + 8 * var6 > var12 && var14 >= var7 * 8 && var14 < 8 + 8 * var7) { + var13[var11 - var14] = var1.readSignedByte(); + } + } + } + } else if (var5) { + var1.index += 64; + } else { + var1.index += 4096; + } + } + + int var27 = Class23.anInt455; + var6 = Class108.anInt1460; + int[] var29 = new int[var6]; + int[] var28 = new int[var6]; + int[] var30 = new int[var6]; + int[] var32 = new int[var6]; + int[] var31 = new int[var6]; + + for (var12 = -5; var27 > var12; ++var12) { + int var15; + int var35; + for (int var34 = 0; var6 > var34; ++var34) { + var14 = var12 + 5; + if (var27 > var14) { + var15 = 255 & var4[var14][var34]; + if (var15 > 0) { + FloorUnderlayDefinition var16 = FloorUnderlayDefinition.method629(var15 - 1); + var28[var34] += var16.anInt1408; + var29[var34] += var16.anInt1406; + var30[var34] += var16.anInt1417; + var32[var34] += var16.anInt1418; + ++var31[var34]; + } + } + + var15 = var12 + -5; + if (var15 >= 0) { + var35 = var4[var15][var34] & 0xFF; + if (0 < var35) { + FloorUnderlayDefinition var17 = FloorUnderlayDefinition.method629(-1 + var35); + var28[var34] -= var17.anInt1408; + var29[var34] -= var17.anInt1406; + var30[var34] -= var17.anInt1417; + var32[var34] -= var17.anInt1418; + --var31[var34]; + } + } + } + + if (var12 >= 0) { + int[][] var33 = Class146.anIntArrayArrayArray1903[var12 >> 6]; + var14 = 0; + var15 = 0; + int var36 = 0; + int var18 = 0; + var35 = 0; + + for (int var19 = -5; var6 > var19; ++var19) { + int var20 = var19 - -5; + if (var6 > var20) { + var18 += var31[var20]; + var15 += var29[var20]; + var35 += var30[var20]; + var14 += var28[var20]; + var36 += var32[var20]; + } + + int var21 = -5 + var19; + if (var21 >= 0) { + var35 -= var30[var21]; + var36 -= var32[var21]; + var14 -= var28[var21]; + var18 -= var31[var21]; + var15 -= var29[var21]; + } + + if (var19 >= 0 && 0 < var18) { + int[] var22 = var33[var19 >> 6]; + int var23 = var36 != 0 ? Class3_Sub8.method129(var35 / var18, var15 / var18, var14 * 256 / var36) : 0; + if (var4[var12][var19] == 0) { + if (var22 != null) { + var22[Unsorted.bitwiseAnd(4032, var19 << 6) - -Unsorted.bitwiseAnd(var12, 63)] = 0; + } + } else { + if (var22 == null) { + var22 = var33[var19 >> 6] = new int[4096]; + } + + int var24 = var3 + (var23 & 127); + if (var24 < 0) { + var24 = 0; + } else if (var24 > 127) { + var24 = 127; + } + + int var25 = var24 + (896 & var23) + (var23 + var2 & '\ufc00'); + var22[Unsorted.bitwiseAnd(4032, var19 << 6) + Unsorted.bitwiseAnd(63, var12)] = Class51.anIntArray834[Unsorted.method1100(96, var25)]; + } + } + } + } + } + + } catch (RuntimeException var26) { + throw ClientErrorException.clientError(var26, "cj.H(" + (var1 != null ? "{...}" : "null") + ')'); + } + } +} diff --git a/Client/src/main/java/org/runite/client/drawcalls/Compass.java b/Client/src/main/java/org/runite/client/drawcalls/Compass.java new file mode 100644 index 000000000..8d2c7611f --- /dev/null +++ b/Client/src/main/java/org/runite/client/drawcalls/Compass.java @@ -0,0 +1,29 @@ +package org.runite.client.drawcalls; + +import org.runite.client.*; + +public final class Compass { + + public static void drawCompass(int var0, int var1, RSInterface var2, int var3) { + if (HDToolKit.highDetail) { + Class22.setClipping(var0, var1, var2.width + var0, var2.height + var1); + } + + if (Class161.anInt2028 >= 3) { + if (HDToolKit.highDetail) { + AbstractSprite var5 = var2.method866(false); + if (null != var5) { + var5.drawAt(var0, var1); + } + } else { + Class74.method1332(var0, var1, var2.anIntArray207, var2.anIntArray291); + } + } else if (HDToolKit.highDetail) { + ((HDSprite) Class57.aAbstractSprite_895).drawMinimapRegion(var0, var1, var2.width, var2.height, Class57.aAbstractSprite_895.width / 2, Class57.aAbstractSprite_895.height / 2, GraphicDefinition.CAMERA_DIRECTION, 256, (HDSprite) var2.method866(false)); + } else { + ((SoftwareSprite) Class57.aAbstractSprite_895).method667(var0, var1, var2.width, var2.height, Class57.aAbstractSprite_895.width / 2, Class57.aAbstractSprite_895.height / 2, GraphicDefinition.CAMERA_DIRECTION, var2.anIntArray207, var2.anIntArray291); + } + + Class163_Sub1_Sub1.aBooleanArray4008[var3] = true; + } +} diff --git a/Client/src/main/java/org/runite/client/drawcalls/ContextMenu.java b/Client/src/main/java/org/runite/client/drawcalls/ContextMenu.java new file mode 100644 index 000000000..64ef0deb0 --- /dev/null +++ b/Client/src/main/java/org/runite/client/drawcalls/ContextMenu.java @@ -0,0 +1,40 @@ +package org.runite.client.drawcalls; + +import org.rs09.client.config.GameConfig; +import org.rs09.client.rendering.Toolkit; +import org.runite.client.*; + +public final class ContextMenu { + + public static void draw() { + int x = Class21.anInt1462; + int y = Class21.anInt3395; + int width = Class21.anInt3552; + int height = Class21.anInt3537; + int contextMenuColor = 6116423; //Context Menu RGB || 6116423 Classic || Old var5 || ColorCore.getHexColors() + Toolkit.getActiveToolkit().fillRect(1 + x, y + 18, width + -2, -19 + height, GameConfig.RCM_BG_COLOR, GameConfig.getRCM_BG_OPACITY()); + if (GameConfig.RS3_CONTEXT_STYLE) { + Toolkit.getActiveToolkit().fillRect(1 + x, 2 + y, width + -2, 16, GameConfig.RCM_TITLE_COLOR, GameConfig.getRCM_TITLE_OPACITY()); + Toolkit.getActiveToolkit().drawRect(1 + x, 1 + y, width + -2, height, GameConfig.RCM_BORDER_COLOR, GameConfig.getRCM_BORDER_OPACITY()); + } else { + Toolkit.getActiveToolkit().fillRect(1 + x, 2 + y, width + -2, 16, GameConfig.RCM_TITLE_COLOR, GameConfig.getRCM_TITLE_OPACITY()); + Toolkit.getActiveToolkit().drawRect(1 + x, y + 18, width + -2, -19 + height, GameConfig.RCM_BORDER_COLOR, GameConfig.getRCM_BORDER_OPACITY()); + } + + FontType.bold.method681(RSString.parse(GameConfig.RCM_TITLE), x - -3, y + 14, contextMenuColor, -1); + int var7 = Unsorted.anInt1709; + int var6 = Class126.anInt1676; + + for (int var8 = 0; var8 < Unsorted.menuOptionCount; ++var8) { + int var9 = (-var8 + -1 + Unsorted.menuOptionCount) * 15 + y - -31; + int var10 = 16777215; + if (var6 > x && x - -width > var6 && -13 + var9 < var7 && 3 + var9 > var7) { + var10 = 16776960; + } + + FontType.bold.method681(Unsorted.method802(var8), x - -3, var9, var10, 0); + } + + Unsorted.method1282(Class21.anInt1462, Class21.anInt3395, Class21.anInt3537, Class21.anInt3552); + } +} diff --git a/Client/src/main/java/org/runite/client/drawcalls/LoadingBox.java b/Client/src/main/java/org/runite/client/drawcalls/LoadingBox.java new file mode 100644 index 000000000..8f4afb4f4 --- /dev/null +++ b/Client/src/main/java/org/runite/client/drawcalls/LoadingBox.java @@ -0,0 +1,38 @@ +package org.runite.client.drawcalls; + +import org.rs09.client.rendering.Toolkit; +import org.runite.client.*; + +import java.awt.*; + +public final class LoadingBox { + + public static void draw(boolean var1, RSString var2) { + byte var3 = 4; + int var4 = var3 + 6; + int var5 = var3 + 6; + int var6 = FontType.plainFont.method680(var2, 250); + int var7 = FontType.plainFont.method684(var2, 250) * 13; + //Used for the top left (please wait...) + Toolkit.getActiveToolkit().method934(var4 - var3, -var3 + var5, var3 + var6 - -var3, var3 + var3 + var7, 0); + Toolkit.getActiveToolkit().drawRect(-var3 + var4, -var3 + var5, var6 + var3 - -var3, var3 + var7 + var3, 16777215, 255); + + FontType.plainFont.method676(var2, var4, var5, var6, var7, 16777215, -1, 1, 1, 0); + + Class21.method1340(var4 + -var3, var6 + (var3 - -var3), -var3 + var5, var3 + var7 + var3); + if (var1) { + if (HDToolKit.highDetail) { + HDToolKit.bufferSwap(); + } else { + try { + Graphics var8 = GameShell.canvas.getGraphics(); + Unsorted.aClass158_3009.method2179(var8); + } catch (Exception var9) { + GameShell.canvas.repaint(); + } + } + } else { + Unsorted.method1282(var4, var5, var7, var6); + } + } +} diff --git a/Client/src/main/java/org/runite/client/drawcalls/Minimap.java b/Client/src/main/java/org/runite/client/drawcalls/Minimap.java new file mode 100644 index 000000000..d6fea0b44 --- /dev/null +++ b/Client/src/main/java/org/runite/client/drawcalls/Minimap.java @@ -0,0 +1,219 @@ +package org.runite.client.drawcalls; + +import org.rs09.client.rendering.Toolkit; +import org.runite.client.*; + +import java.util.Objects; + +public final class Minimap { + + public static void displayMinimap(int var0, byte var1, int var2, int var3, RSInterface var4) { + Class58.method1194(); + + if (HDToolKit.highDetail) { + Class22.setClipping(var3, var2, var3 + var4.width, var2 + var4.height); + } else { + Class74.setClipping(var3, var2, var3 - -var4.width, var2 + var4.height); + } + + if (2 != Class161.anInt2028 && 5 != Class161.anInt2028 && Class49.aAbstractSprite_812 != null) { + int var19 = TextureOperation9.anInt3102 + GraphicDefinition.CAMERA_DIRECTION & 0x7FF;//Region Rotation (relative to player camera) + int var6 = Class102.player.xAxis / 32 + 48;//Minimap X Axis (relative to player) Used as offset + int var7 = -(Class102.player.yAxis / 32) + 464;//Minimap Y Axis (relative to player) Used as offset + if (HDToolKit.highDetail) { + ((HDSprite) Class49.aAbstractSprite_812).drawMinimapRegion(var3, var2, var4.width, var4.height, var6, var7, var19, Class164_Sub2.anInt3020 + 256, (HDSprite) var4.method866(false)); + } else { + ((SoftwareSprite) Class49.aAbstractSprite_812).drawMinimapRegion(var3, var2, var4.width, var4.height, var6, var7, var19, 256 - -Class164_Sub2.anInt3020, var4.anIntArray207, var4.anIntArray291); + } + + int var9; + int var10; + int var11; + int var12; + int var13; + int var14; + int var17; + int var16; + if (null != TextureOperation22.aClass131_3421) { + for (int var8 = 0; var8 < TextureOperation22.aClass131_3421.anInt1720; ++var8) { + if (TextureOperation22.aClass131_3421.method1789(var8, var1 ^ 553)) { + var9 = 2 + 4 * (TextureOperation22.aClass131_3421.xArray1727[var8] + -Class131.x1716) + -(Class102.player.xAxis / 32); + var11 = Class51.anIntArray840[var19]; + var12 = Class51.anIntArray851[var19]; + Font var15 = FontType.smallFont; + var11 = var11 * 256 / (256 + Class164_Sub2.anInt3020); + var10 = 2 + 4 * (-Texture.y1152 + TextureOperation22.aClass131_3421.yArray1718[var8]) - Class102.player.yAxis / 32; + var12 = var12 * 256 / (256 + Class164_Sub2.anInt3020); + var14 = -(var9 * var11) + var10 * var12 >> 16; + if (TextureOperation22.aClass131_3421.method1791(var8, var1 + -51) == 1) { + var15 = FontType.plainFont; + } + + if (2 == TextureOperation22.aClass131_3421.method1791(var8, 8)) { + var15 = FontType.bold; + } + + var13 = var11 * var10 - -(var12 * var9) >> 16; + var16 = var15.method680(TextureOperation22.aClass131_3421.aStringArray1721[var8], 100); + var13 -= var16 / 2; + if (-var4.width <= var13 && var13 <= var4.width && var14 >= -var4.height && var14 <= var4.height) { + var17 = 16777215; + if (TextureOperation22.aClass131_3421.anIntArray1725[var8] != -1) { + var17 = TextureOperation22.aClass131_3421.anIntArray1725[var8]; + } + + if (HDToolKit.highDetail) { + Class22.method936((HDSprite) Objects.requireNonNull(var4.method866(false))); + } else { + Class74.method1314(var4.anIntArray207, var4.anIntArray291); + } + + var15.method693(TextureOperation22.aClass131_3421.aStringArray1721[var8], var3 + var13 + var4.width / 2, var2 + var4.height / 2 + -var14, var16, 50, var17, 0, 1, 0, 0); + if (HDToolKit.highDetail) { + Class22.method921(); + } else { + Class74.method1310(); + } + } + } + } + } + + for (var9 = 0; MouseListeningClass.anInt1924 > var9; ++var9) { + var10 = -(Class102.player.xAxis / 32) + 2 + 4 * Class84.anIntArray1163[var9]; + var11 = -(Class102.player.yAxis / 32) + 2 + (Unsorted.anIntArray4050[var9] * 4); + ObjectDefinition var20 = ObjectDefinition.getObjectDefinition(Class3_Sub19.anIntArray3693[var9]); + if (null != var20.ChildrenIds) { + var20 = var20.method1685(var1 + -59); + if (null == var20 || var20.MapIcon == -1) { + continue; + } + } + + Class38_Sub1.minimapIcons(var4, Entity.aAbstractSpriteArray2839[var20.MapIcon], var11, var10, var2, var3); + } + + for (var9 = 0; 104 > var9; ++var9) { + for (var10 = 0; var10 < 104; ++var10) { + LinkedList var25 = Class39.groundItems[WorldListCountry.localPlane][var9][var10]; + if (null != var25) { + var12 = 2 + var9 * 4 + -(Class102.player.xAxis / 32); + var13 = -(Class102.player.yAxis / 32) + 2 + 4 * var10; + Class38_Sub1.minimapIcons(var4, Unsorted.minimapDotSprites[0], var13, var12, var2, var3); + } + } + } + + for (var9 = 0; var9 < Class163.localNPCCount; ++var9) { + NPC var21 = NPC.npcs[AudioThread.localNPCIndexes[var9]]; + if (var21 != null && var21.hasDefinitions()) { + NPCDefinition var22 = var21.definition; + if (null != var22 && null != var22.childNPCs) { + var22 = var22.method1471((byte) -3); + } + + if (var22 != null && var22.aBoolean1285 && var22.aBoolean1270) { + var12 = var21.xAxis / 32 - Class102.player.xAxis / 32; + var13 = var21.yAxis / 32 + -(Class102.player.yAxis / 32); + if (var22.anInt1283 == -1) { + Class38_Sub1.minimapIcons(var4, Unsorted.minimapDotSprites[1], var13, var12, var2, var3); + } else { + Class38_Sub1.minimapIcons(var4, Entity.aAbstractSpriteArray2839[var22.anInt1283], var13, var12, var2, var3); + } + } + } + } + + for (var9 = 0; var9 < Class159.localPlayerCount; ++var9) { + Player var23 = Unsorted.players[Class56.localPlayerIndexes[var9]]; + if (null != var23 && var23.hasDefinitions()) { + var12 = var23.yAxis / 32 - Class102.player.yAxis / 32; + var11 = -(Class102.player.xAxis / 32) + var23.xAxis / 32; + long var29 = var23.displayName.toLong(); + boolean var28 = false; + + for (var16 = 0; var16 < Class8.anInt104; ++var16) { + if (Class50.aLongArray826[var16] == var29 && 0 != Unsorted.anIntArray882[var16]) { + var28 = true; + break; + } + } + + boolean var31 = false; + + for (var17 = 0; Unsorted.clanSize > var17; ++var17) { + if (var29 == PacketParser.aClass3_Sub19Array3694[var17].linkableKey) { + var31 = true; + break; + } + } + + boolean var32 = false; + if (Class102.player.teamId != 0 && 0 != var23.teamId && var23.teamId == Class102.player.teamId) { + var32 = true; + } + + if (var28) { + Class38_Sub1.minimapIcons(var4, Unsorted.minimapDotSprites[3], var12, var11, var2, var3); + } else if (var31) { + Class38_Sub1.minimapIcons(var4, Unsorted.minimapDotSprites[5], var12, var11, var2, var3); + } else if (var32) { + Class38_Sub1.minimapIcons(var4, Unsorted.minimapDotSprites[4], var12, var11, var2, var3); + } else { + Class38_Sub1.minimapIcons(var4, Unsorted.minimapDotSprites[2], var12, var11, var2, var3); + } + } + } + + Class96[] var24 = ClientErrorException.aClass96Array2114; + + for (var10 = 0; var24.length > var10; ++var10) { + Class96 var26 = var24[var10]; + if (null != var26 && var26.anInt1360 != 0 && Class44.anInt719 % 20 < 10) { + if (var26.anInt1360 == 1 && var26.anInt1359 >= 0 && var26.anInt1359 < NPC.npcs.length) { + NPC var27 = NPC.npcs[var26.anInt1359]; + if (null != var27) { + var13 = -(Class102.player.xAxis / 32) + var27.xAxis / 32; + var14 = var27.yAxis / 32 + -(Class102.player.yAxis / 32); + Class53.method1171(var26.anInt1351, var2, var3, var13, var14, var4); + } + } + + if (var26.anInt1360 == 2) { + var12 = (-Class131.x1716 + var26.anInt1356) * 4 + 2 - Class102.player.xAxis / 32; + var13 = -(Class102.player.yAxis / 32) + 2 + (-Texture.y1152 + var26.anInt1347) * 4; + Class53.method1171(var26.anInt1351, var2, var3, var12, var13, var4); + } + + if (var26.anInt1360 == 10 && var26.anInt1359 >= 0 && Unsorted.players.length > var26.anInt1359) { + Player var30 = Unsorted.players[var26.anInt1359]; + if (null != var30) { + var14 = var30.yAxis / 32 + -(Class102.player.yAxis / 32); + var13 = var30.xAxis / 32 + -(Class102.player.xAxis / 32); + Class53.method1171(var26.anInt1351, var2, var3, var13, var14, var4); + } + } + } + } + + if (Class65.anInt987 != 0) { + var9 = 4 * Class65.anInt987 + (2 - Class102.player.xAxis / 32); + var10 = 2 + 4 * Class45.anInt733 - Class102.player.yAxis / 32; + Class38_Sub1.minimapIcons(var4, Class45.aAbstractSprite_736, var10, var9, var2, var3); + } + Toolkit.getActiveToolkit().method934(-1 + (var3 - -(var4.width / 2)), -1 + var2 - -(var4.height / 2), 3, 3, 16777215); + + } else if (HDToolKit.highDetail) { + AbstractSprite var5 = var4.method866(false); + if (null != var5) { + var5.drawAt(var3, var2); + } + } else { + Class74.method1332(var3, var2, var4.anIntArray207, var4.anIntArray291); + } + + if (var1 == 59) { + Class163_Sub1_Sub1.aBooleanArray4008[var0] = true; + } + } +} diff --git a/Client/src/main/java/org/runite/client/drawcalls/StartupLoadingBar.java b/Client/src/main/java/org/runite/client/drawcalls/StartupLoadingBar.java new file mode 100644 index 000000000..34195101f --- /dev/null +++ b/Client/src/main/java/org/runite/client/drawcalls/StartupLoadingBar.java @@ -0,0 +1,26 @@ +package org.runite.client.drawcalls; + +import org.rs09.client.rendering.Toolkit; +import org.runite.client.*; + +public final class StartupLoadingBar { + + public static void draw(boolean var1, Font var2) { + int var3; + if (HDToolKit.highDetail || var1) { + var3 = GroundItem.canvasHeight; + int var4 = var3 * 956 / 503; + Class40.aAbstractSprite_680.method639((Class23.canvasWidth + -var4) / 2, 0, var4, var3); + SequenceDefinition.aClass109_1856.method1667(-(SequenceDefinition.aClass109_1856.width / 2) + Class23.canvasWidth / 2, 18); + } + + var2.method699(TextCore.RSLoadingPleaseWait, Class23.canvasWidth / 2, GroundItem.canvasHeight / 2 - 26, 16777215, -1); + var3 = GroundItem.canvasHeight / 2 + -18; + Toolkit.getActiveToolkit().drawRect(Class23.canvasWidth / 2 - 152, var3, 304, 34, 9179409, 255); + Toolkit.getActiveToolkit().drawRect(-151 + Class23.canvasWidth / 2, var3 - -1, 302, 32, 0, 255); + Toolkit.getActiveToolkit().method934(Class23.canvasWidth / 2 - 150, var3 + 2, Client.LoadingStageNumber * 3, 30, 9179409); + Toolkit.getActiveToolkit().method934(Class23.canvasWidth / 2 + -150 - -(3 * Client.LoadingStageNumber), 2 + var3, 300 + -(3 * Client.LoadingStageNumber), 30, 0); + + var2.method699(Client.loadingBarTextToDisplay, Class23.canvasWidth / 2, 4 + GroundItem.canvasHeight / 2, 16777215, -1); + } +} diff --git a/Client/src/main/java/org/runite/client/drawcalls/StartupLoadingBarInitial.java b/Client/src/main/java/org/runite/client/drawcalls/StartupLoadingBarInitial.java new file mode 100644 index 000000000..11598510a --- /dev/null +++ b/Client/src/main/java/org/runite/client/drawcalls/StartupLoadingBarInitial.java @@ -0,0 +1,63 @@ +package org.runite.client.drawcalls; + +import org.runite.client.*; + +import java.awt.*; + +public class StartupLoadingBarInitial { + + + public static FontMetrics aFontMetrics1822; + public static Image anImage2695; + + public static void draw(Color var0, boolean var2, RSString var3, int var4) { + + try { + Graphics var5 = GameShell.canvas.getGraphics(); + aFontMetrics1822 = GameShell.canvas.getFontMetrics(TextCore.Helvetica); + if (var2) { + var5.setColor(Color.black); + var5.fillRect(0, 0, Class23.canvasWidth, GroundItem.canvasHeight); + } + + try { + if (anImage2695 == null) { + anImage2695 = GameShell.canvas.createImage(304, 34); + } + + Graphics var6 = anImage2695.getGraphics(); + var6.setColor(var0); + var6.drawRect(0, 0, 303, 33); + var6.fillRect(2, 2, var4 * 3, 30); + var6.setColor(Color.black); + var6.drawRect(1, 1, 301, 31); + var6.fillRect(3 * var4 + 2, 2, -(3 * var4) + 300, 30); + var6.setFont(TextCore.Helvetica); + var6.setColor(Color.white); + var3.drawString(var6, 22, (-var3.method1575(aFontMetrics1822) + 304) / 2); + var5.drawImage(anImage2695, Class23.canvasWidth / 2 - 152, -18 + GroundItem.canvasHeight / 2, null); + } catch (Exception var9) { + int var7 = -152 + Class23.canvasWidth / 2; + int var8 = -18 + GroundItem.canvasHeight / 2; + var5.setColor(var0); + var5.drawRect(var7, var8, 303, 33); + var5.fillRect(var7 + 2, 2 + var8, 3 * var4, 30); + var5.setColor(Color.black); + var5.drawRect(1 + var7, var8 - -1, 301, 31); + var5.fillRect(3 * var4 + (var7 - -2), 2 + var8, 300 - var4 * 3, 30); + var5.setFont(TextCore.Helvetica); + var5.setColor(Color.white); + var3.drawString(var5, 22 + var8, var7 + (-var3.method1575(aFontMetrics1822) + 304) / 2); + } + + if (Class167.aString_2083 != null) { + var5.setFont(TextCore.Helvetica); + var5.setColor(Color.white); + Class167.aString_2083.drawString(var5, GroundItem.canvasHeight / 2 - 26, Class23.canvasWidth / 2 - Class167.aString_2083.method1575(aFontMetrics1822) / 2); + } + + } catch (Exception var10) { + GameShell.canvas.repaint(); + } + } +} diff --git a/Client/src/main/kotlin/org/rs09/CustomVars.kt b/Client/src/main/kotlin/org/rs09/CustomVars.kt new file mode 100644 index 000000000..a84528bf6 --- /dev/null +++ b/Client/src/main/kotlin/org/rs09/CustomVars.kt @@ -0,0 +1,30 @@ +package org.rs09 + +import org.rs09.client.config.GameConfig + +/** + * Handles custom client vars because I did it the lazy way + * @author Ceikry + */ +object CustomVars { + @JvmStatic + fun parse(varID: Int, varValue: Int): Boolean{ + return when(varID){ + 2501 -> { + GameConfig.xpDropsEnabled = (varValue and 1) == 1 + GameConfig.xpDropMode = (varValue shr 1) and 1 + GameConfig.xpTrackMode = (varValue shr 2) and 1 + true + } + 2502 -> { + GameConfig.slayerCountEnabled = true + GameConfig.slayerTaskID = varValue and 0x7F + GameConfig.setSlayerAmount((varValue shr 7) and 0xFF) + SlayerTracker.setSprite() + SystemLogger.logInfo(varValue.toString()) + true + } + else -> false + } + } +} \ No newline at end of file diff --git a/Client/src/main/kotlin/org/rs09/Discord.kt b/Client/src/main/kotlin/org/rs09/Discord.kt new file mode 100644 index 000000000..fb963e059 --- /dev/null +++ b/Client/src/main/kotlin/org/rs09/Discord.kt @@ -0,0 +1,56 @@ +package org.rs09 + +import net.arikia.dev.drpc.DiscordEventHandlers +import net.arikia.dev.drpc.DiscordRPC +import net.arikia.dev.drpc.DiscordRichPresence + +/** + * Handles discord rich presence integration + * @author Ceikry + * library thanks to Vatuu on Github + */ +object Discord { + const val APP_ID = "812421731238019073"; + var presence = DiscordRichPresence() + var initialized = false + + @JvmStatic + fun checkInitializable() : Boolean{ + val OS = System.getProperty("os.name") + if(OS.toLowerCase().startsWith("windows") || OS.toLowerCase().contains("nux")){ + val arch = System.getProperty("os.arch") + return arch != "aarch64" && !initialized + } + return false + } + + @JvmStatic + fun initialize() { + val handlers = DiscordEventHandlers.Builder().setReadyEventHandler { user -> + SystemLogger.logDiscord("Discord RPC Initialized, registered to " + user.username + "#" + user.discriminator) + }.setErroredEventHandler { errorCode, message -> + SystemLogger.logDiscord("Discord error encountered: [$errorCode] $message") + DiscordRPC.discordShutdown() + }.build() + + //On Linux, when the discord library initializes, it can crash any other client loading the same library. + //Not sure what causes this, likely a JVM bug to be honest. + DiscordRPC.discordInitialize(APP_ID, handlers, true) + initialized = true + } + + @JvmStatic + fun updatePresence(stateMessage: String,details: String,imageKey : String) { + if(presence.state == stateMessage && presence.details == details && imageKey == presence.smallImageKey) return + val newPresence = DiscordRichPresence.Builder(stateMessage).setDetails(details).build() + newPresence.startTimestamp = System.currentTimeMillis() + if(newPresence.details.startsWith("Bloating")){ + newPresence.smallImageKey = imageKey + } + newPresence.largeImageKey = "rwlogo" + newPresence.largeImageText = "*farts*" + DiscordRPC.discordUpdatePresence(newPresence) + presence = newPresence + SystemLogger.logDiscord("Updating presence ($stateMessage,$details,$imageKey)") + } +} \ No newline at end of file diff --git a/Client/src/main/kotlin/org/rs09/SlayerTracker.kt b/Client/src/main/kotlin/org/rs09/SlayerTracker.kt new file mode 100644 index 000000000..b0f2154e4 --- /dev/null +++ b/Client/src/main/kotlin/org/rs09/SlayerTracker.kt @@ -0,0 +1,151 @@ +package org.rs09 + +import org.rs09.client.config.GameConfig +import org.rs09.client.rendering.RenderingUtils +import org.rs09.client.rendering.Toolkit +import org.runite.client.* +import java.lang.Exception +import java.util.concurrent.TimeUnit + +object SlayerTracker { + const val posX = 5 + const val posY = 30 + const val textX = 7 + const val textY = 50 + const val spriteY = 30 + val boxColor = GameConfig.slayerTrackerColor.toIntOrNull(16) ?: 6116423 + + @JvmField + var lastUpdate = 0L + + var curSprite: AbstractSprite? = null + + + @JvmStatic + fun draw(){ + val timeSinceUpdate = System.currentTimeMillis() - lastUpdate + if(!GameConfig.slayerCountEnabled) return + if(GameConfig.slayerTaskAmount <= 0) return + if(timeSinceUpdate >= TimeUnit.MINUTES.toMillis(5L)) return + val tk = Toolkit.getActiveToolkit() + var rectWidth = 60 + var amountPos = textX + 40 + if(rectWidth < 90) rectWidth = 90 + if(amountPos < textX + 60) amountPos = textX + 60 + tk.fillRect(posX,posY,rectWidth,30, boxColor,GameConfig.slayerTrackerOpacity) + + curSprite?.drawAt(textX, spriteY) + RenderingUtils.drawText(GameConfig.slayerTaskAmount.toString(),amountPos, textY, -1, 2, false) + } + + @JvmStatic + fun reset(){ + GameConfig.slayerTaskAmount = 0 + GameConfig.slayerTaskID = 0 + GameConfig.slayerCountEnabled = false; + lastUpdate = 0 + } + + @JvmStatic + fun setSprite(){ + try { + SystemLogger.logInfo("Getting slayer sprite...") + val itemId: Int = when (GameConfig.slayerTaskID) { + 0 -> 4144 + 1 -> 4149 + 2 -> 560 + 3 -> 10176 + 4 -> 4135 + 5 -> 4139 + 6 -> 14072 + 7 -> 948 + 8 -> 12189 + 9 -> 3098 + 10 -> 1747 + 11 -> 4141 + 12 -> 1751 + 13 -> 11047 + 14 -> 2349 + 15 -> 9008 + 16 -> 4521 + 17 -> 4134 + 18 -> 8900 + 19 -> 4520 + 20 -> 4137 + 21 -> 1739 + 22 -> 7982 + 23 -> 10149 + 24 -> 532 + 25 -> 8141 + 26 -> 6637 + 27 -> 6695 + 28 -> 8132 + 29 -> 4145 + 30 -> 7500 + 31 -> 1422 + 32 -> 1387 + 33 -> 9011 + 34 -> 4147 + 35 -> 552 + 36 -> 6722 + 37 -> 10998 + 38 -> 9016 + 39 -> 2402 + 40 -> 1753 + 41 -> 7050 + 42 -> 8137 + 43 -> 12570 + 44 -> 8133 + 45 -> 4671 + 46 -> 4671 + 47 -> 1159 + 48 -> 4140 + 49 -> 2351 + 50 -> 4142 + 51 -> 7778 + 52 -> 8139 + 53 -> 4146 + 54 -> 2402 + 55 -> 2359 + 56 -> 12079 + 57 -> 12201 + 58 -> 12570 + 59 -> 4148 + 60 -> 4818 + 61 -> 6107 + 62 -> 4138 + 63 -> 14074 + 64 -> 4136 + 65 -> 6297 + 66 -> 10634 + 67 -> 553 + 68 -> 8135 + 69 -> 11732 + 70 -> 10284 + 71 -> 13923 + 72 -> 2353 + 73 -> 8136 + 74 -> 4143 + 75 -> 6528 + 76 -> 10109 + 77 -> 1403 + 78 -> 2952 + 79 -> 958 + 80 -> 7594 + 89 -> 6811 + else -> -1 + } + + var sprite = AbstractSprite.constructItemSprite(0, HDToolKit.highDetail, itemId, false, 1, 1, false) + if (HDToolKit.highDetail) { + if (sprite is Class3_Sub28_Sub16_Sub2_Sub1) { + sprite = Class3_Sub28_Sub16_Sub1_Sub1(sprite as SoftwareSprite) + } else { + sprite = HDSprite(sprite as SoftwareSprite) + } + } + + curSprite = sprite + } catch (ignored: Exception){} + } +} \ No newline at end of file diff --git a/Client/src/main/kotlin/org/rs09/SystemLogger.kt b/Client/src/main/kotlin/org/rs09/SystemLogger.kt new file mode 100644 index 000000000..dcaf8296b --- /dev/null +++ b/Client/src/main/kotlin/org/rs09/SystemLogger.kt @@ -0,0 +1,50 @@ +package org.rs09 + +import com.github.ajalt.mordant.terminal.Terminal +import com.github.ajalt.mordant.rendering.TextColors.* +import org.rs09.client.config.GameConfig +import java.text.SimpleDateFormat +import java.util.* + +/** + * Handles client logging + * @author Ceikry + * Thanks to Aj Alt for the awesome Mordant library! + */ +object SystemLogger { + val formatter = SimpleDateFormat("HH:mm:ss") + val t = Terminal() + + fun getTime(): String{ + return "[" + formatter.format(Date(System.currentTimeMillis())) +"]" + } + + @JvmStatic + fun logInfo(vararg messages: String){ + for(m in messages){ + if(m.isNotBlank()) t.println("${getTime()}: [INFO] $m") + } + } + + @JvmStatic + fun logErr(message: String){ + if(message.isNotBlank()) t.println("${getTime()}: ${brightRed("[ ERR] $message")}") + } + + @JvmStatic + fun logWarn(message: String){ + if(message.isNotBlank()) t.println("${getTime()}: ${yellow("[WARN] $message")}") + } + + @JvmStatic + fun logDiscord(message: String){ + t.println("${getTime()}: ${brightBlue("[DISC] $message")}") + } + + @JvmStatic + fun logVerbose(message: String){ + if(GameConfig.VERBOSE_LOGGING){ + logInfo(message) + } + } +} \ No newline at end of file diff --git a/Client/src/main/kotlin/org/rs09/XPGainDraw.kt b/Client/src/main/kotlin/org/rs09/XPGainDraw.kt new file mode 100644 index 000000000..e5aa88bb9 --- /dev/null +++ b/Client/src/main/kotlin/org/rs09/XPGainDraw.kt @@ -0,0 +1,204 @@ +package org.rs09 + +import org.rs09.client.config.GameConfig +import org.rs09.client.rendering.RenderingUtils +import org.rs09.client.rendering.Toolkit +import org.runite.client.* +import java.util.* +import kotlin.math.ceil + +/** + * Handles tracking and drawing of xp drops + * @author Ceikry + */ +object XPGainDraw { + internal class XPGain(var skillId: Int, var xpGain: Int, var currentPos: Int) + @JvmStatic + var lastXp = Array(24){0} + + @JvmStatic + private var thisLoopGains = ArrayList() + + var posX = RenderingUtils.width / 2 + var posY = RenderingUtils.height / 4 + var skillSprite: AbstractSprite? = null + var lastSkillId = 0 + + var gainsAddedThisLoop = 0 + var totalXP = 0 + var lastUpdate = 0L + var lastGain = 0L + + const val line = 110 + const val clearHeight = 60 + + @JvmStatic + fun addGain(xpGain: Int,skillId: Int){ + if(GameConfig.xpDropMode == 1){ + totalXP += xpGain + } + if(xpGain <= 0) return + if(gainsAddedThisLoop > 6) return + if(lastXp[skillId] == 0){ + if(GameConfig.xpDropMode == 0) { + totalXP += xpGain + } + return + } + var drawAt = line + if(thisLoopGains.isNotEmpty()) { + if (thisLoopGains[thisLoopGains.size - 1].currentPos + 25 > line) { + drawAt = thisLoopGains[thisLoopGains.size - 1].currentPos + 25 + } + } + thisLoopGains.add(XPGain(skillId,xpGain,drawAt)) + gainsAddedThisLoop++ + if(System.currentTimeMillis() - lastUpdate > 10000) lastUpdate = System.currentTimeMillis() + lastGain = System.currentTimeMillis() + } + + @JvmStatic + fun drawGains() { + if(!GameConfig.xpDropsEnabled){ + return + } + if(System.currentTimeMillis() - lastGain > 10000) return + posX = RenderingUtils.width / 2 + posY = RenderingUtils.height / 4 + if(posX == 382) { //Client is in fixed mode + posX += 60 + } + drawTotal() + if(GameConfig.xpTrackMode == 1) { + skillSprite?.drawAt(posX - 65, 10) + RenderingUtils.drawText(addCommas(lastXp[lastSkillId].toString()), posX - 40, 28, -1, 2, false) + } + val timeDelta = getTimeDelta() + val removeList = ArrayList() + for(gain in thisLoopGains) { + gain.currentPos -= ceil(timeDelta / 20.0).toInt() + if(gain.currentPos <= clearHeight){ + if(GameConfig.xpDropMode == 0) { + totalXP += gain.xpGain + } + removeList.add(gain) + continue; + } + + val sprite = getSprite(getSpriteArchive(gain.skillId)) + sprite?.drawAt((posX) - 25, gain.currentPos - 20) + RenderingUtils.drawText("${gain.xpGain}",posX, gain.currentPos,-1,2,false) + skillSprite = sprite + lastSkillId = gain.skillId + } + lastUpdate = System.currentTimeMillis() + thisLoopGains.removeAll(removeList) + gainsAddedThisLoop = 0 + if(Discord.initialized) { + Discord.updatePresence("In-Game", "Bloating", "skill_$lastSkillId") + } + } + + fun drawTotal() { + val tk = Toolkit.getActiveToolkit() + RenderingUtils.setClipping(0,0,RenderingUtils.width,500) + val horizontal = getSprite(822) + val horizontalTop = getSprite(820) + val tl_corner = getSprite(824) + val bl_corner = getSprite(826) + val tr_corner = getSprite(825) + val br_corner = getSprite(827) + val bg = getSprite(657) + bg?.drawAt(posX - 77,9) + tk.fillRect(posX - 75,5,140,30,0,64) + bl_corner?.drawAt(posX - 77,10) + tl_corner?.drawAt(posX - 77,5) + tr_corner?.drawAt(posX + 41,5) + br_corner?.drawAt(posX + 41,10) + horizontalTop?.drawAt(posX - 45,-8) + horizontal?.drawAt(posX - 45,22) + horizontalTop?.drawAt(posX - 15,-8) + horizontal?.drawAt(posX - 15,22) + horizontalTop?.drawAt(posX + 9,-8) + horizontal?.drawAt(posX + 9,22) + if(GameConfig.xpTrackMode == 0){ + RenderingUtils.drawText("Total XP: " + addCommas(totalXP.toString()),posX - 65,28,-1,2,false) + } + } + + fun getSpriteArchive(skillId: Int): Int{ + return when(skillId) { + 0 -> 197 + 1 -> 199 + 2 -> 198 + 3 -> 203 + 4 -> 200 + 5 -> 201 + 6 -> 202 + 7 -> 212 + 8 -> 214 + 9 -> 208 + 10 -> 211 + 11 -> 213 + 12 -> 207 + 13 -> 210 + 14 -> 209 + 15 -> 205 + 16 -> 204 + 17 -> 206 + 18 -> 216 + 19 -> 217 + 20 -> 215 + 21 -> 220 + 22 -> 221 + 23 -> 222 + else -> 222 + } + } + + fun getSprite(archiveIndex: Int): AbstractSprite? { + var rawSprite: AbstractSprite? = null + if(CacheIndex.spritesIndex.retrieveSpriteFile(archiveIndex)){ + rawSprite = Unsorted.loadSoftwareSprite(CacheIndex.spritesIndex, archiveIndex) + if(HDToolKit.highDetail){ + if(rawSprite is Class3_Sub28_Sub16_Sub2_Sub1){ + rawSprite = Class3_Sub28_Sub16_Sub1_Sub1(rawSprite as SoftwareSprite) + } else { + rawSprite = HDSprite(rawSprite as SoftwareSprite) + } + } + } + return rawSprite + } + + fun addCommas(num: String): String{ + var newString = "" + if(num.length > 9){ + return "Lots!" + } + var counter = 1 + num.reversed().forEach { + if(counter % 3 == 0 && counter != num.length){ + newString += "$it," + } else { + newString += it + } + counter++ + } + return newString.reversed() + } + + @JvmStatic + fun reset(){ + totalXP = 0 + lastXp = Array(24){0} + lastUpdate = 0 + thisLoopGains.clear() + lastSkillId = 0 + skillSprite = null + } + + fun getTimeDelta(): Long{ + return System.currentTimeMillis() - lastUpdate + } +} \ No newline at end of file diff --git a/Client/src/main/kotlin/org/rs09/client/DataBuffer.kt b/Client/src/main/kotlin/org/rs09/client/DataBuffer.kt new file mode 100644 index 000000000..2071a829a --- /dev/null +++ b/Client/src/main/kotlin/org/rs09/client/DataBuffer.kt @@ -0,0 +1,107 @@ +package org.rs09.client + +import org.rs09.client.util.ByteArrayPool +import org.runite.client.RSString + +open class DataBuffer(@JvmField val buffer: ByteArray, @JvmField var index: Int) : Linkable() { + constructor(buffer: ByteArray) : this(buffer, 0) + constructor(length: Int) : this(ByteArrayPool.getByteArray(length), 0) + + fun readUnsignedByte(): Int { + return buffer[index++].toInt() and 0xff + } + + fun readUnsignedShort(): Int { + index += 2 + return (buffer[index - 1].toInt() and 0xff) + + (buffer[index - 2].toInt() and 0xff shl 8) + } + + fun readInt(): Int { + index += 4 + return (buffer[index - 4].toInt() and 0xff shl 24) + + (buffer[index - 3].toInt() and 0xff shl 16) + + (buffer[index - 2].toInt() and 0xff shl 8) + + (buffer[index - 1].toInt() and 0xff) + } + + fun writeInt(value: Int) { + buffer[index++] = (value shr 24).toByte() + buffer[index++] = (value shr 16).toByte() + buffer[index++] = (value shr 8).toByte() + buffer[index++] = value.toByte() + } + + fun writeLong(value: Long) { + buffer[index++] = (value shr 56).toInt().toByte() + buffer[index++] = (value shr 48).toInt().toByte() + buffer[index++] = (value shr 40).toInt().toByte() + buffer[index++] = (value shr 32).toInt().toByte() + buffer[index++] = (value shr 24).toInt().toByte() + buffer[index++] = (value shr 16).toInt().toByte() + buffer[index++] = (value shr 8).toInt().toByte() + buffer[index++] = value.toInt().toByte() + } + + fun readBytes(length: Int): ByteArray { + val out = ByteArray(length) + System.arraycopy(buffer, index, out, 0, length) + index += length + return out + } + + fun write128Byte(value: Int) { + buffer[index++] = (128 - value).toByte() + } + + fun writeString(value: RSString) { + index += value.method1580(buffer, index, value.length()) + buffer[index++] = 0 + } + + /* + * TODO Refactor / rename everything beyond this point + */ + + fun method739(var2: Int, var3: Long) { + var var2 = var2 + --var2 + if (var2 >= 0 && var2 <= 7) { + var var5 = var2 * 8 + while (0 <= var5) { + buffer[index++] = (var3 shr var5).toInt().toByte() + var5 -= 8 + } + } else { + throw IllegalArgumentException() + } + } + + fun method741(): Int { + var var2 = buffer[index++].toInt() + var var3: Int + var3 = 0 + while (0 > var2) { + var3 = 127 and var2 or var3 shl 7 + var2 = buffer[index++].toInt() + } + return var2 or var3 + } + + fun method742(var2: Int) { + buffer[index + -var2 - 4] = (var2 shr 24).toByte() + buffer[index + -var2 - 3] = (var2 shr 16).toByte() + buffer[index + -var2 - 2] = (var2 shr 8).toByte() + buffer[index + -var2 - 1] = var2.toByte() + } + + fun readSignedShort128(): Int { + index += 2 + var value: Int = (buffer[index - 2].toInt() and 0xff shl 8) + + (buffer[index - 1].toInt() - 128 and 0xff) + if (value > 32767) { + value -= 65536 + } + return value + } +} \ No newline at end of file diff --git a/Client/src/main/kotlin/org/rs09/client/GameLaunch.kt b/Client/src/main/kotlin/org/rs09/client/GameLaunch.kt new file mode 100644 index 000000000..345020d43 --- /dev/null +++ b/Client/src/main/kotlin/org/rs09/client/GameLaunch.kt @@ -0,0 +1,73 @@ +package org.rs09.client + +import org.rs09.SystemLogger +import org.rs09.client.config.GameConfig +import org.runite.client.GameShell +import java.io.File +import java.io.FileOutputStream + +object GameLaunch { + + /** + * The main method. + * r @param args the arguments casted on runtime. + * r_game + */ + @JvmStatic + fun main(args: Array) { + for (i in args.indices) { + val cmd = args[i].split("=").toTypedArray() + when (cmd[0]) { + "ip" -> GameConfig.IP_ADDRESS = cmd[1] + "world" -> GameConfig.WORLD_OVERRIDE = cmd[1].toInt() + else -> GameConfig.configLocation = cmd[0] + } + } + try { + SystemLogger.logInfo("Trying to parse config at " + GameConfig.configLocation) + GameConfig.parse(GameConfig.configLocation) + GameConfig.implementHoliday() + GameConfig.extendRenderDistance() + } catch (e: Exception){ + GameConfig.IP_ADDRESS = "73.67.76.208" + GameConfig.IP_MANAGEMENT = "73.67.76.208" + GameConfig.JS5_SERVER_PORT = 43593 + GameConfig.SERVER_PORT = 43594 + GameConfig.WL_PORT = 5555 + GameConfig.RCM_STYLE_PRESET = "classic" + GameConfig.RCM_TITLE = "Choose Option" + GameConfig.HOLIDAYS_ENABLED = true + GameConfig.implementHoliday() + GameConfig.RENDER_DISTANCE_INCREASE = true + GameConfig.extendRenderDistance() + SystemLogger.logWarn("Config file ${GameConfig.configLocation} not found, using defaults.") + } + /** + * Launches the client + */ + if(System.getProperty("os.name").toLowerCase().contains("nux")){ //Fixes crashing due to XInitThreads not being called - JVM bug + val istream = javaClass.classLoader.getResourceAsStream("libfixXInitThreads.so") + val buff = ByteArray(1024) + var read = -1 + val temp = File.createTempFile("libfixXInitThreads.so","") + val fos = FileOutputStream(temp) + + read = istream.read(buff) + while(read != -1){ + fos.write(buff, 0, read) + read = istream.read(buff) + } + + fos.close() + istream.close() + + System.load(temp.absolutePath) + } + + //Force IPv4 because sometimes Windows insists on using IPv6 regardless of what a service actually offers + System.setProperty("java.net.preferIPv4Stack" , "true"); + + GameShell.launchDesktop() + } + +} \ No newline at end of file diff --git a/Client/src/main/kotlin/org/rs09/client/Linkable.kt b/Client/src/main/kotlin/org/rs09/client/Linkable.kt new file mode 100644 index 000000000..abda84756 --- /dev/null +++ b/Client/src/main/kotlin/org/rs09/client/Linkable.kt @@ -0,0 +1,21 @@ +package org.rs09.client + +open class Linkable { + @JvmField + var linkableKey = 0L + @JvmField + var next: Linkable? = null + @JvmField + var previous: Linkable? = null + + fun isLinked(): Boolean = previous != null + + fun unlink() { + if (null != previous) { + previous!!.next = next + next!!.previous = previous + previous = null + next = null + } + } +} \ No newline at end of file diff --git a/Client/src/main/kotlin/org/rs09/client/LinkableInt.kt b/Client/src/main/kotlin/org/rs09/client/LinkableInt.kt new file mode 100644 index 000000000..c04894d91 --- /dev/null +++ b/Client/src/main/kotlin/org/rs09/client/LinkableInt.kt @@ -0,0 +1,3 @@ +package org.rs09.client + +data class LinkableInt(@JvmField val value: Int = 0): Linkable() \ No newline at end of file diff --git a/Client/src/main/kotlin/org/rs09/client/Node.kt b/Client/src/main/kotlin/org/rs09/client/Node.kt new file mode 100644 index 000000000..da6a3a5a7 --- /dev/null +++ b/Client/src/main/kotlin/org/rs09/client/Node.kt @@ -0,0 +1,32 @@ +package org.rs09.client + +open class Node : Linkable() { + @JvmField + var nodeKey: Long = 0 + @JvmField + var previousNode: Node? = null + @JvmField + var nextNode: Node? = null + + fun unlinkNode() { + if (previousNode != null) { + previousNode!!.nextNode = nextNode + nextNode!!.previousNode = previousNode + nextNode = null + previousNode = null + } + } + + companion object { + @JvmStatic + fun splice(insert: Node, target: Node) { + if (target.previousNode != null) { + target.unlinkNode() + } + target.previousNode = insert + target.nextNode = insert.nextNode + target.previousNode!!.nextNode = target + target.nextNode!!.previousNode = target + } + } +} diff --git a/Client/src/main/kotlin/org/rs09/client/config/GameConfig.backup b/Client/src/main/kotlin/org/rs09/client/config/GameConfig.backup new file mode 100644 index 000000000..c657a8fb3 --- /dev/null +++ b/Client/src/main/kotlin/org/rs09/client/config/GameConfig.backup @@ -0,0 +1,349 @@ +package org.rs09.client.config + +import org.json.simple.JSONObject +import org.json.simple.parser.JSONParser +import org.rs09.SlayerTracker +import java.io.FileReader +import java.math.BigInteger +import java.util.* + +/** + * Handles the client's config loading + * @author Ceikry + */ +class GameConfig { + companion object { + + /** + * Debug Booleans + */ + @JvmField + var ITEM_DEBUG_ENABLED = false + + @JvmField + var OBJECT_DEBUG_ENABLED = false + + @JvmField + var NPC_DEBUG_ENABLED = false + + @JvmField + var HD_LOGIN_DEBUG = false + + @JvmField + var HD_LOGIN_VERBOSE = false + + @JvmField + var CACHE_DEBUG = false + + @JvmField + var WORLD_MAP_DEBUG = false + + /** + * Context Menu Presets + */ + @JvmField + var RCM_STYLE_PRESET = "classic" + + /** + * Context Menu Customization + */ + @JvmField + var RCM_BG_COLOR = 6116423 + + @JvmField + var RCM_BG_OPACITY = 255 + + @JvmField + var RCM_TITLE_COLOR = 0 + + @JvmField + var RCM_TITLE_OPACITY = 255 + + @JvmField + var RCM_BORDER_COLOR = 0 + + @JvmField + var RCM_BORDER_OPACITY = 255 + + @JvmField + var RCM_TITLE = "Choose Option" + + @JvmField + var RS3_CONTEXT_STYLE = false + + /** + * Render distance + */ + @JvmField + var RENDER_DISTANCE_INCREASE = false + + @JvmField + var RENDER_DISTANCE_VALUE = 3584f + + @JvmField + var RENDER_DISTANCE_TILE_VALUE = 28 + + @JvmField + var RENDER_DISTANCE_FOG_FIX = 3328.0f + + @JvmField + var SKYBOX_COLOR = "float" + + /** + * Client Info + * Editable + */ + @JvmField + var IP_ADDRESS = "localhost" + + @JvmField + var IP_MANAGEMENT = "localhost" + + var JS5_SERVER_PORT = 43593 + + @JvmField + var SERVER_PORT = 43594 + + @JvmField + var WL_PORT = 5555 + + @JvmField + var WORLD = 1 + + @JvmField + var WORLD_OVERRIDE = -1 + + @JvmField + var LOGIN_THEME = "redwings" + + @JvmField + var xpDropsEnabled = true + + @JvmField + var xpDropMode = 0 + + @JvmField + var xpTrackMode = 0 + + @JvmField + var slayerCountEnabled = true + + @JvmField + var slayerTaskID = 0 + + @JvmField + var slayerTaskAmount = 0 + + @JvmField + var VERBOSE_LOGGING = false + + @JvmStatic + fun setSlayerAmount(amount : Int){ + slayerTaskAmount = amount + SlayerTracker.lastUpdate = System.currentTimeMillis() + } + + /** + * Json config Parser + */ + @JvmStatic + fun parse(path: String){ + val reader = FileReader(path) + val parser = JSONParser() + val data = parser.parse(reader) as JSONObject + + //Networking + if(data.containsKey("ip_address")) IP_ADDRESS = data["ip_address"].toString() else IP_ADDRESS = "play.2009scape.org" + if(data.containsKey("ip_management")) IP_MANAGEMENT = data["ip_management"].toString() else IP_MANAGEMENT = IP_ADDRESS + if(data.containsKey("wl_port")) WL_PORT = data["wl_port"].toString().toInt() + if(data.containsKey("server_port")) SERVER_PORT = data["server_port"].toString().toInt() + if(data.containsKey("js5_port")) JS5_SERVER_PORT = data["js5_port"].toString().toInt() + if(data.containsKey("world")) WORLD = data["world"].toString().toInt() + + //Parse customization options + if(data.containsKey("customization")){ + val custom = data["customization"] as JSONObject + if(custom.containsKey("login_theme")) LOGIN_THEME = custom["login_theme"].toString() + + //Right-click menu customizations + if(custom.containsKey("right_click_menu")){ + val rcm = custom["right_click_menu"] as JSONObject + + //background + if(rcm.containsKey("background")){ + val bg = rcm["background"] as JSONObject + if(bg.containsKey("color")) RCM_BG_COLOR = bg["color"].toString().replace("#", "").toInt(16) //convert hex -> deci + if(bg.containsKey("opacity")) RCM_BG_OPACITY = bg["opacity"].toString().toInt() + } + + //title bar + if(rcm.containsKey("title_bar")){ + val tb = rcm["title_bar"] as JSONObject + if(tb.containsKey("font_color")) RCM_TITLE = RCM_TITLE.replace("0", tb["font_color"].toString().replace("#", "")) + if(tb.containsKey("color")) RCM_TITLE_COLOR = tb["color"].toString().replace("#", "").toInt(16) //convert hex -> deci + if(tb.containsKey("opacity")) RCM_TITLE_OPACITY = tb["opacity"].toString().toInt() + } + + //border + if(rcm.containsKey("border")){ + val border = rcm["border"] as JSONObject + if(border.containsKey("color")) RCM_BORDER_COLOR = border["color"].toString().replace("#", "").toInt(16) //convert hex -> deci + if(border.containsKey("opacity")) RCM_BORDER_OPACITY = border["opacity"].toString().toInt() + } + + //styles (changes how things are drawn) + if(rcm.containsKey("styles")){ + val style = rcm["styles"] as JSONObject + if(style.containsKey("presets")) RCM_STYLE_PRESET = style["presets"].toString() + if(style.containsKey("rs3border")) RS3_CONTEXT_STYLE = style["rs3border"] as Boolean + } + } + if(custom.containsKey("rendering_options")) { + val hdoptions = custom["rendering_options"] as JSONObject + + if(hdoptions.containsKey("technical")) { + val renderIncrease = hdoptions["technical"] as JSONObject + if(renderIncrease.containsKey("render_distance_increase")) RENDER_DISTANCE_INCREASE = renderIncrease["render_distance_increase"] as Boolean + } + if(hdoptions.containsKey("skybox")) { + val skyboxColor = hdoptions["skybox"] as JSONObject + if(skyboxColor.containsKey("skybox_color")) SKYBOX_COLOR + } + } + } + + //Parse debug options + if(data.containsKey("debug")){ + val debug = data["debug"] as JSONObject + if(debug.containsKey("item_debug")) ITEM_DEBUG_ENABLED = debug["item_debug"] as Boolean + if(debug.containsKey("npc_debug")) NPC_DEBUG_ENABLED = debug["npc_debug"] as Boolean + if(debug.containsKey("object_debug")) OBJECT_DEBUG_ENABLED = debug["object_debug"] as Boolean + if(debug.containsKey("hd_login_region_debug")) HD_LOGIN_DEBUG = debug["hd_login_region_debug"] as Boolean + if(debug.containsKey("hd_login_region_debug_verbose")) HD_LOGIN_VERBOSE = debug["hd_login_region_debug_verbose"] as Boolean + if(debug.containsKey("cache_debug")) CACHE_DEBUG = debug["cache_debug"] as Boolean + if(debug.containsKey("world_map_debug")) WORLD_MAP_DEBUG = debug["world_map_debug"] as Boolean + } + + + /** + * Style Overrides (Still working on this system. We should allow for maximum creativity + * The way that it will be setup is a style type 1st + * ie, classicbox, rs3, rounded, rounded2 + * Then we introduce color schemes that a user could select + * ie, classic, rs3, alternate, alternate2, custom + * @author Woah + */ + when (RCM_STYLE_PRESET) { + "classic" -> { + RS3_CONTEXT_STYLE = false + RCM_BG_COLOR = 6116423 + RCM_BG_OPACITY = 255 + RCM_TITLE = "Choose Option" + RCM_TITLE_COLOR = 0 + RCM_TITLE_OPACITY = 255 + RCM_BORDER_COLOR = 0 + RCM_BORDER_OPACITY = 255 + } + "rs3" -> { + RS3_CONTEXT_STYLE = true + RCM_BG_COLOR = 662822 + RCM_BG_OPACITY = 255 + RCM_TITLE = "Choose Option" + RCM_TITLE_COLOR = 1512718 + RCM_TITLE_OPACITY = 165 + RCM_BORDER_COLOR = 16777215 + RCM_BORDER_OPACITY = 255 + } + } + + + } + + fun extendRenderDistance() { + if (RENDER_DISTANCE_INCREASE) { + /** **DO NOT CHANGE THESE NUMBERS UNLESS YOU KNOW WHAT YOU ARE DOING** + * Render Distance Overrides + * + * (Simple formula) Tile amount * 512 + * Default: 7 * 512 = 3584 + * Extended(max): 56 * 512 = 28672 + * + * Files + methods effected by these values: + * HDToolKit METHOD viewport + * Class140_Sub1_Sub1 METHOD animate + * Class3_Sub22 METHOD method398 * value as short + * Class40 METHOD method1046 * using RENDER_DISTANCE_TILE_VALUE + */ + RENDER_DISTANCE_VALUE = if (RENDER_DISTANCE_INCREASE) 28672F else 3584.0f + RENDER_DISTANCE_TILE_VALUE = if (RENDER_DISTANCE_INCREASE) 56 else 28 + RENDER_DISTANCE_FOG_FIX = if (RENDER_DISTANCE_INCREASE) 28672F else 3328.0f + } + } + + /** + * Client Info + * Not Editable + */ + @JvmField + var CLIENT_BUILD = 530 + + @JvmField + var CLIENT_VERSION = 1 + + @JvmField + var PACKAGE_NAME = "org.runite.client" + + @JvmField + var RSA = true + + @JvmField + var ISAAC = false + + @JvmField + var EXPONENT = BigInteger("65537") + + @JvmField + var MODULUS = BigInteger("96982303379631821170939875058071478695026608406924780574168393250855797534862289546229721580153879336741968220328805101128831071152160922518190059946555203865621183480223212969502122536662721687753974815205744569357388338433981424032996046420057284324856368815997832596174397728134370577184183004453899764051") + + @JvmField + var SERVER_NAME = "2009scape" + + /** + * Path to config + */ + @JvmField + var configLocation = "config.json" + + /** + * Holiday Event Toggles + */ + @JvmField + var HOLIDAYS_ENABLED = true + + /** + * Halloween event NPC Definitions are handled inside of NPCDefinition.java + */ + @JvmField + var HALLOWEEN_EVENT_ENABLED = false + + @JvmField + var THANKSGIVING_EVENT_ENABLED = false + + @JvmField + var CHRISTMAS_EVENT_ENABLED = false + + private val calendar: Calendar = Calendar.getInstance() + private val month = calendar.get(Calendar.MONTH) + + @JvmStatic + fun implementHoliday() { + if (HOLIDAYS_ENABLED) { + when (month) { + 9 -> HALLOWEEN_EVENT_ENABLED = true + 10 -> THANKSGIVING_EVENT_ENABLED = true + 11 -> CHRISTMAS_EVENT_ENABLED = true + } + } + } + } +} \ No newline at end of file diff --git a/Client/src/main/kotlin/org/rs09/client/config/GameConfig.kt b/Client/src/main/kotlin/org/rs09/client/config/GameConfig.kt new file mode 100644 index 000000000..cc79b7313 --- /dev/null +++ b/Client/src/main/kotlin/org/rs09/client/config/GameConfig.kt @@ -0,0 +1,407 @@ +package org.rs09.client.config + +import org.json.simple.JSONObject +import org.json.simple.parser.JSONParser +import org.rs09.SlayerTracker +import java.io.FileReader +import java.math.BigInteger +import java.util.* + +/** + * Handles the client's config loading + * @author Ceikry + */ +object GameConfig { + /** + * Debug Booleans + */ + @JvmField + var ITEM_DEBUG_ENABLED = false + + @JvmField + var OBJECT_DEBUG_ENABLED = false + + @JvmField + var NPC_DEBUG_ENABLED = false + + @JvmField + var HD_LOGIN_DEBUG = false + + @JvmField + var HD_LOGIN_VERBOSE = false + + @JvmField + var CACHE_DEBUG = false + + @JvmField + var WORLD_MAP_DEBUG = false + + @JvmField + var DO_SNOW_DECEMBER = true + + @JvmField + var VARP_DEBUG = false + + /** + * Context Menu Presets + */ + @JvmField + var RCM_STYLE_PRESET = "classic" + + @JvmField + var FORCE_LEFT_CLICK_ATTACK = false + + /** + * Context Menu Customization + */ + @JvmField + var RCM_BG_COLOR = 6116423 + + @JvmStatic + var RCM_BG_OPACITY = 255 + set(value) { + if(value > 255 || value < 0) field = 255 + else field = value + } + + @JvmField + var RCM_TITLE_COLOR = 0 + + @JvmStatic + var RCM_TITLE_OPACITY = 255 + set(value) { + if(value > 255 || value < 0) field = 255 + else field = value + } + + @JvmField + var RCM_BORDER_COLOR = 0 + + @JvmStatic + var RCM_BORDER_OPACITY = 255 + set(value) { + if(value > 255 || value < 0) field = 255 + else field = value + } + + @JvmField + var RCM_TITLE = "Choose Option" + + @JvmField + var RS3_CONTEXT_STYLE = false + + /** + * Render distance + */ + @JvmField + var RENDER_DISTANCE_INCREASE = false + + @JvmField + var RENDER_DISTANCE_VALUE = 3584f + + @JvmField + var RENDER_DISTANCE_TILE_VALUE = 28 + + @JvmField + var RENDER_DISTANCE_FOG_FIX = 3328.0f + + @JvmField + var SKYBOX_COLOR = "float" + + /** + * Client Info + * Editable + */ + @JvmField + var IP_ADDRESS = "localhost" + + @JvmField + var IP_MANAGEMENT = "localhost" + + @JvmField + var JS5_SERVER_PORT = 43593 + + @JvmField + var SERVER_PORT = 43594 + + @JvmField + var WL_PORT = 5555 + + @JvmField + var WORLD = 1 + + @JvmField + var WORLD_OVERRIDE = -1 + + @JvmField + var LOGIN_THEME = "redwings" + + @JvmField + var xpDropsEnabled = true + + @JvmField + var xpDropMode = 0 + + @JvmField + var xpTrackMode = 0 + + @JvmField + var slayerCountEnabled = true + + @JvmField + var slayerTrackerColor = "#635a38" + + @JvmStatic + var slayerTrackerOpacity = 180 + set(value) { + if(value > 255 || value < 0) field = 255 + else field = value + } + + @JvmField + var slayerTaskID = 0 + + @JvmField + var slayerTaskAmount = 0 + + @JvmField + var VERBOSE_LOGGING = false + + @JvmStatic + fun setSlayerAmount(amount : Int){ + slayerTaskAmount = amount + if(slayerTaskAmount < 0) slayerTaskAmount = 0 + SlayerTracker.lastUpdate = System.currentTimeMillis() + } + + /** + * Json config Parser + */ + @JvmStatic + fun parse(path: String){ + val reader = FileReader(path) + val parser = JSONParser() + val data = parser.parse(reader) as JSONObject + + //Networking + if(data.containsKey("ip_address")) IP_ADDRESS = data["ip_address"].toString() else IP_ADDRESS = "73.67.76.208" + if(data.containsKey("ip_management")) IP_MANAGEMENT = data["ip_management"].toString() else IP_MANAGEMENT = IP_ADDRESS + if(data.containsKey("wl_port")) WL_PORT = data["wl_port"].toString().toInt() + if(data.containsKey("server_port")) SERVER_PORT = data["server_port"].toString().toInt() + if(data.containsKey("js5_port")) JS5_SERVER_PORT = data["js5_port"].toString().toInt() + if(data.containsKey("world")) WORLD = data["world"].toString().toInt() + + //Parse customization options + if(data.containsKey("customization")){ + val custom = data["customization"] as JSONObject + if(custom.containsKey("login_theme")) LOGIN_THEME = custom["login_theme"].toString() + if(custom.containsKey("december_snow")) DO_SNOW_DECEMBER = custom["december_snow"] as Boolean + + //Right-click menu customizations + if(custom.containsKey("right_click_menu")){ + val rcm = custom["right_click_menu"] as JSONObject + + if(rcm.containsKey("left_click_attack")) { + FORCE_LEFT_CLICK_ATTACK = rcm["left_click_attack"] as Boolean + } + + //background + if(rcm.containsKey("background")){ + val bg = rcm["background"] as JSONObject + if(bg.containsKey("color")) RCM_BG_COLOR = bg["color"].toString().replace("#", "").toIntOrNull(16) ?: 6116423//convert hex -> deci + if(bg.containsKey("opacity")) RCM_BG_OPACITY = bg["opacity"].toString().toInt() + } + + //title bar + if(rcm.containsKey("title_bar")){ + val tb = rcm["title_bar"] as JSONObject + if(tb.containsKey("font_color")) RCM_TITLE = RCM_TITLE.replace("0", tb["font_color"].toString().replace("#", "")) + if(tb.containsKey("color")) RCM_TITLE_COLOR = tb["color"].toString().replace("#", "").toIntOrNull(16) ?: 6116423//convert hex -> deci + if(tb.containsKey("opacity")) RCM_TITLE_OPACITY = tb["opacity"].toString().toInt() + } + + //border + if(rcm.containsKey("border")){ + val border = rcm["border"] as JSONObject + if(border.containsKey("color")) RCM_BORDER_COLOR = border["color"].toString().replace("#", "").toIntOrNull(16) ?: 6116423 //convert hex -> deci + if(border.containsKey("opacity")) RCM_BORDER_OPACITY = border["opacity"].toString().toInt() + } + + //styles (changes how things are drawn) + if(rcm.containsKey("styles")){ + val style = rcm["styles"] as JSONObject + if(style.containsKey("presets")) RCM_STYLE_PRESET = style["presets"].toString() + if(style.containsKey("rs3border")) RS3_CONTEXT_STYLE = style["rs3border"] as Boolean + } + } + + if(custom.containsKey("xpdrops")){ + val xpd = custom["xpdrops"] as JSONObject + if(xpd.containsKey("enabled")) xpDropsEnabled = xpd["enabled"] as Boolean + if(xpd.containsKey("drop_mode")) xpDropMode = xpd["drop_mode"].toString().toInt() + if(xpd.containsKey("track_mode")) xpTrackMode = xpd["track_mode"].toString().toInt() + } + + if(custom.containsKey("slayer")){ + val slayer = custom["slayer"] as JSONObject + if(slayer.containsKey("enabled")) slayerCountEnabled = slayer["enabled"] as Boolean + if(slayer.containsKey("color")) slayerTrackerColor = slayer["color"].toString().replace("#", "") + if(slayer.containsKey("opacity")) slayerTrackerOpacity = slayer["opacity"].toString().toInt() + } + + if(custom.containsKey("rendering_options")) { + val hdoptions = custom["rendering_options"] as JSONObject + + if(hdoptions.containsKey("technical")) { + val renderIncrease = hdoptions["technical"] as JSONObject + if(renderIncrease.containsKey("render_distance_increase")) RENDER_DISTANCE_INCREASE = renderIncrease["render_distance_increase"] as Boolean + } + if(hdoptions.containsKey("skybox")) { + val skyboxColor = hdoptions["skybox"] as JSONObject + if(skyboxColor.containsKey("skybox_color")) SKYBOX_COLOR + } + } + } + + //Parse debug options + if(data.containsKey("debug")){ + val debug = data["debug"] as JSONObject + if(debug.containsKey("item_debug")) ITEM_DEBUG_ENABLED = debug["item_debug"] as Boolean + if(debug.containsKey("npc_debug")) NPC_DEBUG_ENABLED = debug["npc_debug"] as Boolean + if(debug.containsKey("object_debug")) OBJECT_DEBUG_ENABLED = debug["object_debug"] as Boolean + if(debug.containsKey("hd_login_region_debug")) HD_LOGIN_DEBUG = debug["hd_login_region_debug"] as Boolean + if(debug.containsKey("hd_login_region_debug_verbose")) HD_LOGIN_VERBOSE = debug["hd_login_region_debug_verbose"] as Boolean + if(debug.containsKey("cache_debug")) CACHE_DEBUG = debug["cache_debug"] as Boolean + if(debug.containsKey("world_map_debug")) WORLD_MAP_DEBUG = debug["world_map_debug"] as Boolean + } + + + /** + * Style Overrides (Still working on this system. We should allow for maximum creativity + * The way that it will be setup is a style type 1st + * ie, classicbox, rs3, rounded, rounded2 + * Then we introduce color schemes that a user could select + * ie, classic, rs3, alternate, alternate2, custom + * @author Woah + */ + when (RCM_STYLE_PRESET) { + "classic" -> { + RS3_CONTEXT_STYLE = false + RCM_BG_COLOR = 6116423 + RCM_BG_OPACITY = 255 + RCM_TITLE = "Choose Option" + RCM_TITLE_COLOR = 0 + RCM_TITLE_OPACITY = 255 + RCM_BORDER_COLOR = 0 + RCM_BORDER_OPACITY = 255 + } + "rs3" -> { + RS3_CONTEXT_STYLE = true + RCM_BG_COLOR = 662822 + RCM_BG_OPACITY = 255 + RCM_TITLE = "Choose Option" + RCM_TITLE_COLOR = 1512718 + RCM_TITLE_OPACITY = 165 + RCM_BORDER_COLOR = 16777215 + RCM_BORDER_OPACITY = 255 + } + } + + + } + + fun extendRenderDistance() { + if (RENDER_DISTANCE_INCREASE) { + /** **DO NOT CHANGE THESE NUMBERS UNLESS YOU KNOW WHAT YOU ARE DOING** + * Render Distance Overrides + * + * (Simple formula) Tile amount * 512 + * Default: 7 * 512 = 3584 + * Extended(max): 56 * 512 = 28672 + * + * Files + methods effected by these values: + * HDToolKit METHOD viewport + * Class140_Sub1_Sub1 METHOD animate + * Class3_Sub22 METHOD method398 * value as short + * Class40 METHOD method1046 * using RENDER_DISTANCE_TILE_VALUE + */ + RENDER_DISTANCE_VALUE = if (RENDER_DISTANCE_INCREASE) 28672F else 3584.0f + RENDER_DISTANCE_TILE_VALUE = if (RENDER_DISTANCE_INCREASE) 56 else 28 + RENDER_DISTANCE_FOG_FIX = if (RENDER_DISTANCE_INCREASE) 28672F else 3328.0f + } + } + + /** + * Client Info + * Not Editable + */ + @JvmField + var CLIENT_BUILD = 530 + + @JvmField + var CLIENT_VERSION = 1 + + @JvmField + var PACKAGE_NAME = "org.runite.client" + + @JvmField + var RSA = true + + @JvmField + var ISAAC = false + + @JvmField + var EXPONENT = BigInteger("65537") + + @JvmField + var MODULUS = BigInteger("96982303379631821170939875058071478695026608406924780574168393250855797534862289546229721580153879336741968220328805101128831071152160922518190059946555203865621183480223212969502122536662721687753974815205744569357388338433981424032996046420057284324856368815997832596174397728134370577184183004453899764051") + + @JvmField + var SERVER_NAME = "FellerScape" + + /** + * Path to config + */ + @JvmField + var configLocation = "config.json" + + /** + * Holiday Event Toggles + */ + @JvmField + var HOLIDAYS_ENABLED = true + + @JvmField + var EASTER_EVENT_ENABLED = false + /** + * Halloween event NPC Definitions are handled inside of NPCDefinition.java + */ + @JvmField + var HALLOWEEN_EVENT_ENABLED = false + + @JvmField + var THANKSGIVING_EVENT_ENABLED = false + + @JvmField + var CHRISTMAS_EVENT_ENABLED = false + + private val calendar: Calendar = Calendar.getInstance() + private val month = calendar.get(Calendar.MONTH) + private val day = calendar.get(Calendar.DAY_OF_MONTH) + + @JvmStatic + fun implementHoliday() { + if (HOLIDAYS_ENABLED) { + when (month) { + 3 -> { + if (day <= 8) { + EASTER_EVENT_ENABLED = true + } + } + 9 -> HALLOWEEN_EVENT_ENABLED = true + 10 -> THANKSGIVING_EVENT_ENABLED = true + 11 -> CHRISTMAS_EVENT_ENABLED = DO_SNOW_DECEMBER + } + } + } +} \ No newline at end of file diff --git a/Client/src/main/kotlin/org/rs09/client/console/AutocompletionHints.kt b/Client/src/main/kotlin/org/rs09/client/console/AutocompletionHints.kt new file mode 100644 index 000000000..533b2bba2 --- /dev/null +++ b/Client/src/main/kotlin/org/rs09/client/console/AutocompletionHints.kt @@ -0,0 +1,7 @@ +package org.rs09.client.console + +data class AutocompletionHints( + val base: String, + val completions: List, + val totalSize: Int +) \ No newline at end of file diff --git a/Client/src/main/kotlin/org/rs09/client/console/DeveloperConsole.kt b/Client/src/main/kotlin/org/rs09/client/console/DeveloperConsole.kt new file mode 100644 index 000000000..a1c99db26 --- /dev/null +++ b/Client/src/main/kotlin/org/rs09/client/console/DeveloperConsole.kt @@ -0,0 +1,639 @@ +package org.rs09.client.console + +import org.rs09.client.LinkableInt +import org.rs09.client.config.GameConfig +import org.rs09.client.filestore.resources.configs.enums.EnumDefinitionProvider +import org.rs09.client.rendering.RenderingUtils +import org.rs09.client.rendering.Toolkit +import org.runite.client.* +import java.awt.event.KeyEvent +import java.io.ByteArrayInputStream; +import java.nio.file.FileSystems; +import java.nio.file.Files; +import java.text.SimpleDateFormat +import java.util.* +import java.util.LinkedList +import javax.sound.sampled.AudioFileFormat; +import javax.sound.sampled.AudioFormat; +import javax.sound.sampled.AudioInputStream +import javax.sound.sampled.AudioSystem; +import java.lang.reflect.*; + +fun reflectFields(o: Any?, depth: Int): StringBuilder { + if(o == null) { + return StringBuilder("null") + } + if(depth == 0) { + return StringBuilder("${o}") + } + val clazz = (o as Object).getClass() + if(clazz.isArray()) { + val len = java.lang.reflect.Array.getLength(o) + var ret = StringBuilder("[") + for(i in 0 until len) { + ret.append(reflectFields(java.lang.reflect.Array.get(o, i), depth-1)) + if(i != len-1) { + ret.append(", ") + } + } + ret.append("]") + return ret + } else if(clazz.isPrimitive() || o is Number || o is Boolean) { + return StringBuilder("${o}") + } else { + var ret = StringBuilder("${clazz.getName()} {") + val fields = clazz.getDeclaredFields() + for(i in 0 until fields.size) { + if(!fields[i].isAccessible()) { + fields[i].setAccessible(true) + } + ret.append("${fields[i].name}: ${reflectFields(fields[i].get(o), depth-1)}") + if(i != fields.size - 1) { + ret.append(", ") + } + } + ret.append("}") + return ret + } +} + +// TODO Escape characters in the string rendering - is this something we can do using RSString / the text renders? +object DeveloperConsole { + + var ENABLE_PACKETS = false + + private val CONSOLE_FONT + get() = FontType.plainFont + + private val gameWidth //Offset 5 if in-game offset 20 if on login screen + get() = Unsorted.gameWindowWidth + + private val LOCK = Any() + + private const val HEIGHT = 300 + private const val BACKGROUND_COLOR = 0x332277 + private const val MAX_LINES = 100 + private const val SCROLL_SPEED = 25 + + private val calendar = Calendar.getInstance() + private var tempBuffer: IntArray? = null + private val lines = LinkedList() + private var scrollOffset = 0 + private var str: String = "" + + var firstOpen = false + var selectedCompletion = 0 + var autocompletions: AutocompletionHints? = null + set(t) { + field = t + selectedCompletion = 0 + } + + var open = false + + fun toggle() { + open = !open + } + + fun draw() { + if (!open) return + + if (!firstOpen) { + println("This is the developer console. To close, press ALT + `") + firstOpen = true + } + + val tk = Toolkit.getActiveToolkit() + + when (Class83.getWindowType()) { + 0, 1 -> { //use gameWidth + val widthOffsets = if (Class143.gameStage <= 10) RenderingUtils.width else (gameWidth + 3) + tk.fillRect(0, 0, widthOffsets, HEIGHT, BACKGROUND_COLOR, 128) + tk.drawHorizontalLine(0, HEIGHT - 14 - 2, widthOffsets, -1) + RenderingUtils.drawTextSmall("Build: ${GameConfig.CLIENT_BUILD}", widthOffsets - 60, HEIGHT - 17, -1, 2) + RenderingUtils.drawText("--> $str", 3, HEIGHT - 2, -1, 2) + RenderingUtils.setClipping(0, 0, widthOffsets, HEIGHT - 16) + } + 2 -> { //use RenderingUtils.width + tk.fillRect(0, 0, RenderingUtils.width, HEIGHT, BACKGROUND_COLOR, 128) + tk.drawHorizontalLine(0, HEIGHT - 14 - 2, RenderingUtils.width, -1) + RenderingUtils.drawTextSmall( + "Build: ${GameConfig.CLIENT_BUILD}", + RenderingUtils.width - 60, + HEIGHT - 17, + -1, + 2 + ) + RenderingUtils.drawText("--> $str", 3, HEIGHT - 2, -1, 2) + RenderingUtils.setClipping(0, 0, RenderingUtils.width, HEIGHT - 16) + } + } + + synchronized(LOCK) { + lines.forEachIndexed { i, line -> + RenderingUtils.drawText( + line, + 7, + scrollOffset + HEIGHT - 20 - i * 14, + -1, + 2 + ) + } + } + RenderingUtils.resetClipping() + + // text height = 16 + synchronized(LOCK) { + autocompletions?.apply { + val startX = CONSOLE_FONT.method682(RSString.of("-> $str")) + val boxHeight = 24 + 8 + completions.size * 14 + val boxWidth = 8 + 8 + (completions.map { CONSOLE_FONT.method682(RSString.of(it)) }.maxOrNull() ?: 0) + + tk.fillRect(startX, HEIGHT - 16 - boxHeight, boxWidth, boxHeight, 0x323232, 255) + RenderingUtils.drawRect( + startX + 3, + HEIGHT - 16 - boxHeight + 6, + boxWidth - 6, + boxHeight - 9 - 14, + 0x646464, + 200 + ) + tk.drawHorizontalLine(startX + 8, HEIGHT - 16 - boxHeight + 6, 75, 0x323232) + RenderingUtils.drawText( + RSString.parse("Completions"), + startX + 12, + HEIGHT - 17 - boxHeight + 12, + 0xffffff + ) + RenderingUtils.drawText( + RSString.parse("${completions.size}/$totalSize sent"), + startX + 4, + HEIGHT - 20, + 0xffffff + ) + +// tk.fillRect(startX + 4, HEIGHT - 16 - boxHeight + 14, boxWidth - 8, boxHeight - 9 - 14 - 8 - 1, 0xff0000, 255) +// RenderingUtils.setClipping(startX + 4, HEIGHT - 16 - boxHeight + 14, boxWidth - 8, boxHeight - 9 - 14 - 8 - 1) + completions.forEachIndexed { i, completion -> + if (selectedCompletion == i) { + tk.fillRect(startX + 4, HEIGHT - 6 - boxHeight + 4 + i * 14, boxWidth - 8, 14, 0x2a58a8, 255) + } + RenderingUtils.drawText( + RSString.of(completion), + startX + 6, + HEIGHT - 6 - boxHeight + 14 + i * 14, + 0xffffff + ) + } +// RenderingUtils.resetClipping() + } + } + } + + fun println(line: String) { + calendar.time = Date(TimeUtils.time()) + synchronized(LOCK) { + lines.addFirst(RSString.of("${SimpleDateFormat("HH:mm:ss").format(Date(TimeUtils.time()))}: --> $line")) + + if (lines.size >= MAX_LINES) lines.removeLast() + + if (scrollOffset != 0) { + val room = HEIGHT - 20 + val max = lines.size * 14 + val diff = max - room + if (scrollOffset < diff) { + scrollOffset += 14 + if (scrollOffset > diff) scrollOffset = diff + } + } + } + } + + fun preDraw() { + if (RenderingUtils.hd) return + + val copy = IntArray(Toolkit.JAVA_TOOLKIT.buffer.size) + System.arraycopy(Toolkit.JAVA_TOOLKIT.buffer, 0, copy, 0, copy.size) + tempBuffer = copy + } + + fun postDraw() { + if (RenderingUtils.hd) return + + if (tempBuffer != null) { + System.arraycopy(tempBuffer!!, 0, Toolkit.JAVA_TOOLKIT.buffer, 0, Toolkit.JAVA_TOOLKIT.buffer.size) + } + tempBuffer = null + } + + fun onConsoleInput(str: String) { +// println("[$h:$m:$s] TODO! Handle '$str'") + + if (ENABLE_PACKETS) { + TextureOperation12.outgoingBuffer.putOpcode(51) + TextureOperation12.outgoingBuffer.writeShort(0) + val index = TextureOperation12.outgoingBuffer.index + TextureOperation12.outgoingBuffer.writeString(DeveloperConsole.str) + TextureOperation12.outgoingBuffer.finishVarshortPacket( + TextureOperation12.outgoingBuffer.index - index) + } + + println(str) + val clientCommand: MutableList + val args: Any + val command: String = str + clientCommand = command.split(' ') as MutableList + val argSize = clientCommand.size + + when (clientCommand[0]) { + "enableconsolepackets" -> { + ENABLE_PACKETS = true + println("Enabled console packets!") + } + "quests" -> { + println("~~~~~ MINIQUESTS ~~~~~") + System.out.println("~~~~~ MINIQUESTS ~~~~~") + var lookup = EnumDefinitionProvider.provide(208) + + for (i in 0..17) { + val component = (lookup.values!![i.toLong()]!! as LinkableInt).value + + val rsiface = Unsorted.getRSInterface(component) + if (rsiface == null) println("Error: couldnt find component for hash $component") + + println("$i: ${rsiface.text}") + System.out.println("name ${rsiface.text}, lookup id $i") + } + + println("~~~~~ QUESTS ~~~~~") + System.out.println("~~~~~ QUESTS ~~~~~") + lookup = EnumDefinitionProvider.provide(209) + + for (i in 0..130) { + val component = (lookup.values!![i.toLong()]!! as LinkableInt).value + + val rsiface = Unsorted.getRSInterface(component) + if (rsiface == null) println("Error: couldnt find component for hash $component") + + println("$i: ${rsiface.text}") + System.out.println("name ${rsiface.text}, lookup id $i") + } + } + "errormsg" -> { + if (argSize == 2) { + args = clientCommand[1].toIntOrNull() ?: -1 + Client.messageToDisplay = args as Int + } else { + println("Error. Displays error message on login, account creation. Use: errormsg #") + } + } + "reflectstatic" -> { + if(argSize == 3) { + try { + val className = "org.runite.client.${clientCommand[1]}" + val fieldName = clientCommand[2]; + val clazz = Class.forName(className); + val field = clazz.getDeclaredField(fieldName) + if(!field.isAccessible()) { + field.setAccessible(true) + } + val value = field.get(null); + val line = "${className}.${fieldName} == ${value} / ${reflectFields(value, 1)}" + System.out.println(line) + //println(line) + } catch(e: Exception) { + e.printStackTrace() + } + } else { + println("Usage: reflectstatic classname fieldname") + } + } + "dumpscript" -> { + if (argSize == 2) { + val i = clientCommand[1].toIntOrNull() + if(i != null) { + DumpingTools.DumpOpcodesToTextFile("script_${i}.cs2", i) + } + } else { + println("Error. Dumps a cs2 script. Use: dumpscript #") + } + } + "dumpobjs" -> { + if (argSize == 3) { + var beginID = if (clientCommand[1].toIntOrNull() == null) 0 else clientCommand[1].toInt() + var endID = if (clientCommand[2].toIntOrNull() == null) 0 else clientCommand[2].toInt() + if (beginID > endID) { + val tmp = endID; + endID = beginID; + beginID = tmp; + } + try { + for(i in beginID..endID) { + val obj = ObjectDefinition.getObjectDefinition(i) + var line = "Object ${i} - ${obj.name} - [" + for(j in 0 until obj.options.size) { + line += "${obj.options[j]}" + if(j != obj.options.size - 1) { + line += ", " + } + } + line += "]" + line += " - ${obj.ConfigFileId} - ${obj.ConfigId}" + if(obj.ChildrenIds != null) { + line += " - [" + for(j in 0 until obj.ChildrenIds.size) { + line += "${obj.ChildrenIds[j]}" + if(j != obj.ChildrenIds.size - 1) { + line += ", " + } + } + line += "]" + } + println(line) + System.out.println(line) + } + } catch(e: Throwable) { + e.printStackTrace() + } + } else { + println("Usage: dumpobjs beginID endID") + } + } + "dumpanimsforitem" -> { + if (argSize >= 2) { + var beginID = if (clientCommand[1].toIntOrNull() == null) 0 else clientCommand[1].toInt() + var endID = if(argSize > 2) clientCommand[2].toInt() else beginID + for(i in 0 until 16384) { + val anim = SequenceDefinition.getAnimationDefinition(i) + if((beginID <= anim.leftHandItem && anim.leftHandItem <= endID) || + (beginID <= anim.rightHandItem && anim.rightHandItem <= endID)) { + //System.out.println("anim ${i}, item ${anim.rightHandItem}, ${reflectFields(anim, 2)}") + val frameStr = if(anim.frames != null && anim.frames.size > 0) { anim.frames[0] shr 16 } else { "null" } + System.out.println("anim ${i}, item ${anim.rightHandItem} ${anim.leftHandItem}, ${frameStr}") + } + } + } + + } + "dumpnpcs" -> { + if (argSize == 3) { + var beginID = if (clientCommand[1].toIntOrNull() == null) 0 else clientCommand[1].toInt() + var endID = if (clientCommand[2].toIntOrNull() == null) 0 else clientCommand[2].toInt() + if (beginID > endID) { + val tmp = endID; + endID = beginID; + beginID = tmp; + } + try { + for(i in beginID..endID) { + val npc = NPCDefinition.getNPCDefinition(i) + var line = "NPC ${i} - ${npc.NPCName} - [" + for(j in 0 until npc.options.size) { + line += "${npc.options[j]}" + if(j != npc.options.size - 1) { + line += ", " + } + } + line += "]" + line += " - ${npc.configId}" + println(line) + System.out.println(line) + } + } catch(e: Throwable) {} + } else { + println("Usage: dumpnpcs beginID endID") + } + } + "playsound" -> { + if (argSize == 4) { + val soundID = if (clientCommand[1].toIntOrNull() == null) 0 else clientCommand[1].toInt() + val soundDelay = if (clientCommand[2].toIntOrNull() == null) 0 else clientCommand[2].toInt() + val soundVolume = if (clientCommand[3].toIntOrNull() == null) 0 else clientCommand[3].toInt() + AudioHandler.soundEffectHandler(soundVolume, soundID, soundDelay) + println("Playing sound: $soundID with delay: $soundDelay volume: $soundVolume") + } else { + println("Error. Plays sound effect. Use: playsound soundID soundDelay soundVolume") + } + } + "playsoundrange" -> { + if (argSize == 4) { + var beginID = if (clientCommand[1].toIntOrNull() == null) 0 else clientCommand[1].toInt() + var endID = if (clientCommand[2].toIntOrNull() == null) 0 else clientCommand[2].toInt() + var delay = if (clientCommand[3].toIntOrNull() == null) 0 else clientCommand[3].toInt() + if (beginID > endID) { + val tmp = endID; + endID = beginID; + beginID = tmp; + } + Thread(object : Runnable { + override fun run() { + for (i in beginID..endID) { + println("Playing sound effect ${i}") + AudioHandler.soundEffectHandler(1, i, 0) + Thread.sleep(delay.toLong()) + } + } + }).start() + } else { + println("Error. Plays sound effect. Use: playsoundrange beginID endID delay") + } + } + "dumpsfx" -> { + if (argSize == 3) { + var beginID = if (clientCommand[1].toIntOrNull() == null) 0 else clientCommand[1].toInt() + var endID = if (clientCommand[2].toIntOrNull() == null) 0 else clientCommand[2].toInt() + Thread(object : Runnable { + override fun run() { + Files.createDirectories(FileSystems.getDefault().getPath("sfx")) + for (i in beginID..endID) { + val sfx = SynthSound.create(CacheIndex.soundFXIndex, i, 0).toPCMSound() + println("len of ${i}: ${sfx.samples.size}") + val out = Files.newOutputStream(FileSystems.getDefault().getPath("sfx", String.format("sfx_%05d.wav", i))) + val format = AudioFormat(AudioFormat.Encoding.PCM_SIGNED, sfx.frequency.toFloat(), 8, 1, 1, sfx.frequency.toFloat(), false) + AudioSystem.write( + AudioInputStream(ByteArrayInputStream(sfx.samples), format, sfx.samples.size.toLong()), + AudioFileFormat.Type.WAVE, + out) + out.close() + } + } + }).start() + } else { + println("Error. Dumps sound effects. Use: dumpsfx beginID endID") + } + } + "playsong" -> { + if (argSize in 2..8) { + if (clientCommand[1].toIntOrNull() == null) { + clientCommand.removeFirst() + AudioHandler.musicHandler( + CacheIndex.musicIndex.getArchiveForName( + RSString.of( + clientCommand.joinToString( + " " + ) + ) + ).also { println("Playing song ID: $it - ${clientCommand.joinToString("")}") } + ) + } else { + args = clientCommand[1].toInt() + AudioHandler.musicHandler(args) + } + } else { + println("Error. Plays music. Use: playsong # OR playsong songName") + } + } + "playsfx" -> { + if (argSize == 2) { + args = clientCommand[1].toIntOrNull() ?: -1 + AudioHandler.musicEffectHandler(args as Int) + } else { + println("Error. Plays a music effect. Use: playeffectfx #") + } + } + "cstage" -> { + when (argSize) { + 1 -> { + println("Client.gameStage: " + Class143.gameStage) + println("LoginHandler.adminLoginStage: " + Class163_Sub1_Sub1.adminLoginStage) + println("LoginHandler.userLoginStage: " + LoginHandler.loginStage) + println("AccountRegistration.registryStage: " + Unsorted.registryStage) + println("WorldListMethods.worldStage: " + Class43.worldListStage) + } + 2 -> { + args = clientCommand[1] + when (args) { + "game" -> println("GameStateManager.gameState: " + Class143.gameStage) + "login" -> { + println("LoginHandler.adminLoginStage: " + Class163_Sub1_Sub1.adminLoginStage) + println("LoginHandler.userLoginStage: " + LoginHandler.loginStage) + } + "register" -> println("AccountRegistration.registryStage: " + Unsorted.registryStage) + "wl", "worldlist" -> println("WorldListMethods.worldStage: " + Class43.worldListStage) + else -> println("Error. Incorrect usage. Use clientstage or clientstage game/login/register/worldlist to see a specific stage") + } + } + else -> println("Error. Incorrect usage. Use clientstage or clientstage game/login/register/worldlist") + } + } + "worldlist" -> { + val worldArray = WorldListEntry.worldList + args = clientCommand[1] + when (args) { + "active" -> { + println("Active: ${WorldListEntry.activeWorldListSize} Update stamp: ${WorldListEntry.updateStamp}") + } + "world" -> { + if (argSize == 3) { + val worldId = clientCommand[2].toInt() + if (worldArray[worldId] != null) { + val world = worldArray[worldId] + println( + "ID: ${world.worldId} " + + "WHERE: ${world.countryIndex} " + + "MEM: ${world.isMembers} " + + "PVP: ${world.isPVP} " + + "Loot: ${world.isLootShare} " + + "QC: ${world.isQuickchat} " + + "DESC: ${world.activity} " + + "NET: ${world.address}:" + ) + } else { + println("Requested world ($worldId) is OFFLINE or NULL") + } + } else { + println("Error. Incorrect usage. Use worldlist world worldID") + } + } + "goto" -> { + if (argSize == 3) { + val worldId = clientCommand[2].toInt() + if (worldArray[worldId] != null) { + CS2Script.userCurrentWorldID = worldId + } else { + println("Requested world ($worldId) is OFFLINE or NULL") + } + } else { + println("Error. Incorrect usage. Use: worldlist goto worldID") + } + } + else -> println("World list commands: active, world ID, goto ID") + } + } + + else -> { + System.out.println("Console command: $str") + sendCommand(str) + } + } + } + + fun handleKeyDown(evt: KeyEvent) { + if (evt.keyCode == KeyEvent.VK_DOWN) { + if (autocompletions != null) { + if (selectedCompletion + 1 < autocompletions?.completions?.size ?: 0) + selectedCompletion++ + return + } + + if (scrollOffset > SCROLL_SPEED) scrollOffset -= SCROLL_SPEED else scrollOffset = 0 + } else if (evt.keyCode == KeyEvent.VK_UP) { + if (autocompletions != null) { + if (selectedCompletion > 0) selectedCompletion-- + return + } + + val room = HEIGHT - 20 + val max = lines.size * 14 + val diff = max - room + if (scrollOffset < diff) { + scrollOffset += SCROLL_SPEED + if (scrollOffset > diff) scrollOffset = diff + } + } else if (evt.keyCode == KeyEvent.VK_ESCAPE) { + synchronized(LOCK) { + autocompletions = null + } + } + } + + fun handleKeyPressed(evt: KeyEvent) { + if (evt.keyChar == '`') return + + when { + evt.keyChar == '\t' -> { + if (str.isEmpty()) return + + if (ENABLE_PACKETS) { + TextureOperation12.outgoingBuffer.putOpcode(52) + TextureOperation12.outgoingBuffer.writeShort(0) + val index = TextureOperation12.outgoingBuffer.index + TextureOperation12.outgoingBuffer.writeString(str) + TextureOperation12.outgoingBuffer.finishVarshortPacket( + TextureOperation12.outgoingBuffer.index - index) + } else if ("enableconsolepackets".startsWith(str, true)) { + autocompletions = AutocompletionHints(str, listOf("enableconsolepackets"), 1) + } + } + evt.keyChar == '\n' -> { + if (autocompletions != null) { + str += autocompletions?.completions?.get(selectedCompletion) ?: "" + autocompletions = null + return + } + + if (str.isNotBlank()) onConsoleInput(str.trim()) + str = "" + } + evt.keyChar == '\b' && str.isNotEmpty() -> str = str.substring(0, str.length - 1) + else -> str += evt.keyChar + } + } + + @JvmStatic + fun sendCommand(command: String) { + TextureOperation12.outgoingBuffer.putOpcode(44) + TextureOperation12.outgoingBuffer.writeByte(command.length + 2) + TextureOperation12.outgoingBuffer.writeString(command) + } +} diff --git a/Client/src/main/kotlin/org/rs09/client/constants/Parameter.kt b/Client/src/main/kotlin/org/rs09/client/constants/Parameter.kt new file mode 100644 index 000000000..d5fbab7b7 --- /dev/null +++ b/Client/src/main/kotlin/org/rs09/client/constants/Parameter.kt @@ -0,0 +1,47 @@ +package org.rs09.client.constants + +object Parameter { + + /** + * Modewhat + * DEFAULT: LIVE_SERVER 0 + */ + const val LIVE_SERVER = 0 + const val RELEASE_CANDIDATE = 1 + const val WORK_IN_PROGRESS = 2 + + /** + * Modewhere + * DEFAULT: LIVE_ENVIRONMENT 0 + */ + const val LIVE_ENVIRONMENT = 0 + const val OFFICE_ENVIRONMENT = 1 + const val LOCAL_ENVIRONMENT = 2 + + /** + * Language + * DEFAULT: LANGUAGE_ENGLISH 0 + */ + const val LANGUAGE_ENGLISH = 0 + const val LANGUAGE_GERMAN = 1 + const val LANGUAGE_FRENCH = 2 + + /** + * Game type + * DEFAULT: GAME_TYPE_RUNESCAPE 0 (game0) + * + * Runescape | Game type 0 has always been Runescape (current) + * Mechscape | Assuming this is what the game1 was (2007 - Oct 2009) + * Stellar Dawn | Overhaul of 'Mechscape' (July 2010 - Stuck in corporate hell) + */ + const val GAME_TYPE_RUNESCAPE = 0 + const val GAME_TYPE_MECHSCAPE = 1 + + /** + * Affiliate ID + * DEFAULT: NO_AFFILIATE 0 + */ + const val NO_AFFILIATE = 0 + const val SHARE_DETAILS_AFFILIATE = 99 + +} \ No newline at end of file diff --git a/Client/src/main/kotlin/org/rs09/client/constants/gametype/MechscapeGameAppearance.kt b/Client/src/main/kotlin/org/rs09/client/constants/gametype/MechscapeGameAppearance.kt new file mode 100644 index 000000000..8affc513e --- /dev/null +++ b/Client/src/main/kotlin/org/rs09/client/constants/gametype/MechscapeGameAppearance.kt @@ -0,0 +1,19 @@ +package org.rs09.client.constants.gametype + +object MechscapeGameAppearance { + + val aShortArrayArray1619 = arrayOf(shortArrayOf(10.toShort(), 30.toShort(), 50.toShort(), 70.toShort(), 90.toShort(), 110.toShort(), 310.toShort(), 684.toShort(), 704.toShort(), 556.toShort(), 940.toShort(), 960.toShort(), 6454.toShort(), 6952.toShort(), 6972.toShort(), 2358.toShort(), 2732.toShort(), 2752.toShort(), 10550.toShort(), 10924.toShort(), 10944.toShort(), 10310.toShort(), 10556.toShort(), 10576.toShort(), 14646.toShort(), 15020.toShort(), 15040.toShort(), 19766.toShort(), 20140.toShort(), 20160.toShort(), (-29386).toShort(), (-29012).toShort(), (-28992).toShort(), 31030.toShort(), 31276.toShort(), 31296.toShort(), (-24266).toShort(), (-23892).toShort(), (-23872).toShort(), (-19146).toShort(), (-18772).toShort(), (-18752).toShort(), (-14026).toShort(), (-13652).toShort(), (-13632).toShort(), (-6858).toShort(), (-6484).toShort(), (-6464).toShort(), 522.toShort(), 542.toShort(), 6794.toShort(), 6814.toShort(), 11018.toShort(), 11038.toShort(), 14986.toShort(), 15006.toShort(), 21130.toShort(), 21150.toShort(), (-28918).toShort(), (-28898).toShort(), (-22006).toShort(), (-21986).toShort(), (-12918).toShort(), (-12898).toShort(), 10.toShort(), 30.toShort(), 50.toShort(), 70.toShort(), 90.toShort(), 110.toShort(), 310.toShort(), 684.toShort(), 704.toShort(), 556.toShort(), 940.toShort(), 960.toShort(), 6454.toShort(), 6952.toShort(), 6972.toShort(), 2358.toShort(), 2732.toShort(), 2752.toShort(), 10550.toShort(), 10924.toShort(), 10944.toShort(), 10310.toShort(), 10556.toShort(), 10576.toShort(), 14646.toShort(), 15020.toShort(), 15040.toShort(), 19766.toShort(), 20140.toShort(), 20160.toShort(), (-29386).toShort(), (-29012).toShort(), (-28992).toShort(), 31030.toShort(), 31276.toShort(), 31296.toShort(), (-24266).toShort(), (-23892).toShort(), (-23872).toShort(), (-19146).toShort(), (-18772).toShort(), (-18752).toShort(), (-14026).toShort(), (-13652).toShort(), (-13632).toShort(), (-6858).toShort(), (-6484).toShort(), (-6464).toShort(), 522.toShort(), 542.toShort(), 6794.toShort(), 6814.toShort(), 11018.toShort(), 11038.toShort(), 14986.toShort(), 15006.toShort(), 21130.toShort(), 21150.toShort(), (-28918).toShort(), (-28898).toShort(), (-22006).toShort(), (-21986).toShort(), (-12918).toShort(), (-12898).toShort(), 10.toShort(), 30.toShort(), 50.toShort(), 70.toShort(), 90.toShort(), 110.toShort(), 310.toShort(), 684.toShort(), 704.toShort(), 556.toShort(), 940.toShort(), 960.toShort(), 6454.toShort(), 6952.toShort(), 6972.toShort(), 2358.toShort(), 2732.toShort(), 2752.toShort(), 10550.toShort(), 10924.toShort(), 10944.toShort(), 10310.toShort(), 10556.toShort(), 10576.toShort(), 14646.toShort(), 15020.toShort(), 15040.toShort(), 19766.toShort(), 20140.toShort(), 20160.toShort(), (-29386).toShort(), (-29012).toShort(), (-28992).toShort(), 31030.toShort(), 31276.toShort(), 31296.toShort(), (-24266).toShort(), (-23892).toShort(), (-23872).toShort(), (-19146).toShort(), (-18772).toShort(), (-18752).toShort(), (-14026).toShort(), (-13652).toShort(), (-13632).toShort(), (-6858).toShort(), (-6484).toShort(), (-6464).toShort(), 522.toShort(), 542.toShort(), 6794.toShort(), 6814.toShort(), 11018.toShort(), 11038.toShort(), 14986.toShort(), 15006.toShort(), 21130.toShort(), 21150.toShort(), (-28918).toShort(), (-28898).toShort(), (-22006).toShort(), (-21986).toShort(), (-12918).toShort(), (-12898).toShort(), 10.toShort(), 30.toShort(), 50.toShort(), 70.toShort(), 90.toShort(), 110.toShort(), 310.toShort(), 684.toShort(), 704.toShort(), 556.toShort(), 940.toShort(), 960.toShort(), 6454.toShort(), 6952.toShort(), 6972.toShort(), 2358.toShort(), 2732.toShort(), 2752.toShort(), 10550.toShort(), 10924.toShort(), 10944.toShort(), 10310.toShort(), 10556.toShort(), 10576.toShort(), 14646.toShort(), 15020.toShort(), 15040.toShort(), 19766.toShort(), 20140.toShort(), 20160.toShort(), (-29386).toShort(), (-29012).toShort(), (-28992).toShort(), 31030.toShort(), 31276.toShort(), 31296.toShort(), (-24266).toShort(), (-23892).toShort(), (-23872).toShort(), (-19146).toShort(), (-18772).toShort(), (-18752).toShort(), (-14026).toShort(), (-13652).toShort(), (-13632).toShort(), (-6858).toShort(), (-6484).toShort(), (-6464).toShort(), 522.toShort(), 542.toShort(), 6794.toShort(), 6814.toShort(), 11018.toShort(), 11038.toShort(), 14986.toShort(), 15006.toShort(), 21130.toShort(), 21150.toShort(), (-28918).toShort(), (-28898).toShort(), (-22006).toShort(), (-21986).toShort(), (-12918).toShort(), (-12898).toShort()), shortArrayOf(10.toShort(), 30.toShort(), 50.toShort(), 70.toShort(), 90.toShort(), 110.toShort(), 310.toShort(), 684.toShort(), 704.toShort(), 556.toShort(), 940.toShort(), 960.toShort(), 6454.toShort(), 6952.toShort(), 6972.toShort(), 2358.toShort(), 2732.toShort(), 2752.toShort(), 10550.toShort(), 10924.toShort(), 10944.toShort(), 10310.toShort(), 10556.toShort(), 10576.toShort(), 14646.toShort(), 15020.toShort(), 15040.toShort(), 19766.toShort(), 20140.toShort(), 20160.toShort(), (-29386).toShort(), (-29012).toShort(), (-28992).toShort(), 31030.toShort(), 31276.toShort(), 31296.toShort(), (-24266).toShort(), (-23892).toShort(), (-23872).toShort(), (-19146).toShort(), (-18772).toShort(), (-18752).toShort(), (-14026).toShort(), (-13652).toShort(), (-13632).toShort(), (-6858).toShort(), (-6484).toShort(), (-6464).toShort(), 522.toShort(), 542.toShort(), 6794.toShort(), 6814.toShort(), 11018.toShort(), 11038.toShort(), 14986.toShort(), 15006.toShort(), 21130.toShort(), 21150.toShort(), (-28918).toShort(), (-28898).toShort(), (-22006).toShort(), (-21986).toShort(), (-12918).toShort(), (-12898).toShort(), 10.toShort(), 30.toShort(), 50.toShort(), 70.toShort(), 90.toShort(), 110.toShort(), 310.toShort(), 684.toShort(), 704.toShort(), 556.toShort(), 940.toShort(), 960.toShort(), 6454.toShort(), 6952.toShort(), 6972.toShort(), 2358.toShort(), 2732.toShort(), 2752.toShort(), 10550.toShort(), 10924.toShort(), 10944.toShort(), 10310.toShort(), 10556.toShort(), 10576.toShort(), 14646.toShort(), 15020.toShort(), 15040.toShort(), 19766.toShort(), 20140.toShort(), 20160.toShort(), (-29386).toShort(), (-29012).toShort(), (-28992).toShort(), 31030.toShort(), 31276.toShort(), 31296.toShort(), (-24266).toShort(), (-23892).toShort(), (-23872).toShort(), (-19146).toShort(), (-18772).toShort(), (-18752).toShort(), (-14026).toShort(), (-13652).toShort(), (-13632).toShort(), (-6858).toShort(), (-6484).toShort(), (-6464).toShort(), 522.toShort(), 542.toShort(), 6794.toShort(), 6814.toShort(), 11018.toShort(), 11038.toShort(), 14986.toShort(), 15006.toShort(), 21130.toShort(), 21150.toShort(), (-28918).toShort(), (-28898).toShort(), (-22006).toShort(), (-21986).toShort(), (-12918).toShort(), (-12898).toShort(), 10.toShort(), 30.toShort(), 50.toShort(), 70.toShort(), 90.toShort(), 110.toShort(), 310.toShort(), 684.toShort(), 704.toShort(), 556.toShort(), 940.toShort(), 960.toShort(), 6454.toShort(), 6952.toShort(), 6972.toShort(), 2358.toShort(), 2732.toShort(), 2752.toShort(), 10550.toShort(), 10924.toShort(), 10944.toShort(), 10310.toShort(), 10556.toShort(), 10576.toShort(), 14646.toShort(), 15020.toShort(), 15040.toShort(), 19766.toShort(), 20140.toShort(), 20160.toShort(), (-29386).toShort(), (-29012).toShort(), (-28992).toShort(), 31030.toShort(), 31276.toShort(), 31296.toShort(), (-24266).toShort(), (-23892).toShort(), (-23872).toShort(), (-19146).toShort(), (-18772).toShort(), (-18752).toShort(), (-14026).toShort(), (-13652).toShort(), (-13632).toShort(), (-6858).toShort(), (-6484).toShort(), (-6464).toShort(), 522.toShort(), 542.toShort(), 6794.toShort(), 6814.toShort(), 11018.toShort(), 11038.toShort(), 14986.toShort(), 15006.toShort(), 21130.toShort(), 21150.toShort(), (-28918).toShort(), (-28898).toShort(), (-22006).toShort(), (-21986).toShort(), (-12918).toShort(), (-12898).toShort(), 10347.toShort(), 10582.toShort(), 10429.toShort(), 10407.toShort(), 10359.toShort(), 8414.toShort(), 9540.toShort(), 10456.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort()), shortArrayOf(10.toShort(), 30.toShort(), 50.toShort(), 70.toShort(), 90.toShort(), 110.toShort(), 310.toShort(), 684.toShort(), 704.toShort(), 556.toShort(), 940.toShort(), 960.toShort(), 6454.toShort(), 6952.toShort(), 6972.toShort(), 2358.toShort(), 2732.toShort(), 2752.toShort(), 10550.toShort(), 10924.toShort(), 10944.toShort(), 10310.toShort(), 10556.toShort(), 10576.toShort(), 14646.toShort(), 15020.toShort(), 15040.toShort(), 19766.toShort(), 20140.toShort(), 20160.toShort(), (-29386).toShort(), (-29012).toShort(), (-28992).toShort(), 31030.toShort(), 31276.toShort(), 31296.toShort(), (-24266).toShort(), (-23892).toShort(), (-23872).toShort(), (-19146).toShort(), (-18772).toShort(), (-18752).toShort(), (-14026).toShort(), (-13652).toShort(), (-13632).toShort(), (-6858).toShort(), (-6484).toShort(), (-6464).toShort(), 522.toShort(), 542.toShort(), 6794.toShort(), 6814.toShort(), 11018.toShort(), 11038.toShort(), 14986.toShort(), 15006.toShort(), 21130.toShort(), 21150.toShort(), (-28918).toShort(), (-28898).toShort(), (-22006).toShort(), (-21986).toShort(), (-12918).toShort(), (-12898).toShort(), 10.toShort(), 30.toShort(), 50.toShort(), 70.toShort(), 90.toShort(), 110.toShort(), 310.toShort(), 684.toShort(), 704.toShort(), 556.toShort(), 940.toShort(), 960.toShort(), 6454.toShort(), 6952.toShort(), 6972.toShort(), 2358.toShort(), 2732.toShort(), 2752.toShort(), 10550.toShort(), 10924.toShort(), 10944.toShort(), 10310.toShort(), 10556.toShort(), 10576.toShort(), 14646.toShort(), 15020.toShort(), 15040.toShort(), 19766.toShort(), 20140.toShort(), 20160.toShort(), (-29386).toShort(), (-29012).toShort(), (-28992).toShort(), 31030.toShort(), 31276.toShort(), 31296.toShort(), (-24266).toShort(), (-23892).toShort(), (-23872).toShort(), (-19146).toShort(), (-18772).toShort(), (-18752).toShort(), (-14026).toShort(), (-13652).toShort(), (-13632).toShort(), (-6858).toShort(), (-6484).toShort(), (-6464).toShort(), 522.toShort(), 542.toShort(), 6794.toShort(), 6814.toShort(), 11018.toShort(), 11038.toShort(), 14986.toShort(), 15006.toShort(), 21130.toShort(), 21150.toShort(), (-28918).toShort(), (-28898).toShort(), (-22006).toShort(), (-21986).toShort(), (-12918).toShort(), (-12898).toShort(), 10.toShort(), 30.toShort(), 50.toShort(), 70.toShort(), 90.toShort(), 110.toShort(), 310.toShort(), 684.toShort(), 704.toShort(), 556.toShort(), 940.toShort(), 960.toShort(), 6454.toShort(), 6952.toShort(), 6972.toShort(), 2358.toShort(), 2732.toShort(), 2752.toShort(), 10550.toShort(), 10924.toShort(), 10944.toShort(), 10310.toShort(), 10556.toShort(), 10576.toShort(), 14646.toShort(), 15020.toShort(), 15040.toShort(), 19766.toShort(), 20140.toShort(), 20160.toShort(), (-29386).toShort(), (-29012).toShort(), (-28992).toShort(), 31030.toShort(), 31276.toShort(), 31296.toShort(), (-24266).toShort(), (-23892).toShort(), (-23872).toShort(), (-19146).toShort(), (-18772).toShort(), (-18752).toShort(), (-14026).toShort(), (-13652).toShort(), (-13632).toShort(), (-6858).toShort(), (-6484).toShort(), (-6464).toShort(), 522.toShort(), 542.toShort(), 6794.toShort(), 6814.toShort(), 11018.toShort(), 11038.toShort(), 14986.toShort(), 15006.toShort(), 21130.toShort(), 21150.toShort(), (-28918).toShort(), (-28898).toShort(), (-22006).toShort(), (-21986).toShort(), (-12918).toShort(), (-12898).toShort(), 10.toShort(), 30.toShort(), 50.toShort(), 70.toShort(), 90.toShort(), 110.toShort(), 310.toShort(), 684.toShort(), 704.toShort(), 556.toShort(), 940.toShort(), 960.toShort(), 6454.toShort(), 6952.toShort(), 6972.toShort(), 2358.toShort(), 2732.toShort(), 2752.toShort(), 10550.toShort(), 10924.toShort(), 10944.toShort(), 10310.toShort(), 10556.toShort(), 10576.toShort(), 14646.toShort(), 15020.toShort(), 15040.toShort(), 19766.toShort(), 20140.toShort(), 20160.toShort(), (-29386).toShort(), (-29012).toShort(), (-28992).toShort(), 31030.toShort(), 31276.toShort(), 31296.toShort(), (-24266).toShort(), (-23892).toShort(), (-23872).toShort(), (-19146).toShort(), (-18772).toShort(), (-18752).toShort(), (-14026).toShort(), (-13652).toShort(), (-13632).toShort(), (-6858).toShort(), (-6484).toShort(), (-6464).toShort(), 522.toShort(), 542.toShort(), 6794.toShort(), 6814.toShort(), 11018.toShort(), 11038.toShort(), 14986.toShort(), 15006.toShort(), 21130.toShort(), 21150.toShort(), (-28918).toShort(), (-28898).toShort(), (-22006).toShort(), (-21986).toShort(), (-12918).toShort(), (-12898).toShort()), shortArrayOf(4300.toShort(), 3294.toShort(), 3303.toShort(), 3264.toShort(), 4506.toShort(), 4382.toShort(), 4387.toShort(), 5293.toShort(), 7622.toShort(), 7384.toShort(), 8412.toShort(), 7496.toShort(), 86.toShort(), 123.toShort(), 111.toShort(), 99.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 10.toShort(), 30.toShort(), 50.toShort(), 70.toShort(), 90.toShort(), 110.toShort(), 310.toShort(), 684.toShort(), 704.toShort(), 556.toShort(), 940.toShort(), 960.toShort(), 6454.toShort(), 6952.toShort(), 6972.toShort(), 2358.toShort(), 2732.toShort(), 2752.toShort(), 10550.toShort(), 10924.toShort(), 10944.toShort(), 10310.toShort(), 10556.toShort(), 10576.toShort(), 14646.toShort(), 15020.toShort(), 15040.toShort(), 19766.toShort(), 20140.toShort(), 20160.toShort(), (-29386).toShort(), (-29012).toShort(), (-28992).toShort(), 31030.toShort(), 31276.toShort(), 31296.toShort(), (-24266).toShort(), (-23892).toShort(), (-23872).toShort(), (-19146).toShort(), (-18772).toShort(), (-18752).toShort(), (-14026).toShort(), (-13652).toShort(), (-13632).toShort(), (-6858).toShort(), (-6484).toShort(), (-6464).toShort(), 522.toShort(), 542.toShort(), 6794.toShort(), 6814.toShort(), 11018.toShort(), 11038.toShort(), 14986.toShort(), 15006.toShort(), 21130.toShort(), 21150.toShort(), (-28918).toShort(), (-28898).toShort(), (-22006).toShort(), (-21986).toShort(), (-12918).toShort(), (-12898).toShort(), 10.toShort(), 30.toShort(), 50.toShort(), 70.toShort(), 90.toShort(), 110.toShort(), 310.toShort(), 684.toShort(), 704.toShort(), 556.toShort(), 940.toShort(), 960.toShort(), 6454.toShort(), 6952.toShort(), 6972.toShort(), 2358.toShort(), 2732.toShort(), 2752.toShort(), 10550.toShort(), 10924.toShort(), 10944.toShort(), 10310.toShort(), 10556.toShort(), 10576.toShort(), 14646.toShort(), 15020.toShort(), 15040.toShort(), 19766.toShort(), 20140.toShort(), 20160.toShort(), (-29386).toShort(), (-29012).toShort(), (-28992).toShort(), 31030.toShort(), 31276.toShort(), 31296.toShort(), (-24266).toShort(), (-23892).toShort(), (-23872).toShort(), (-19146).toShort(), (-18772).toShort(), (-18752).toShort(), (-14026).toShort(), (-13652).toShort(), (-13632).toShort(), (-6858).toShort(), (-6484).toShort(), (-6464).toShort(), 522.toShort(), 542.toShort(), 6794.toShort(), 6814.toShort(), 11018.toShort(), 11038.toShort(), 14986.toShort(), 15006.toShort(), 21130.toShort(), 21150.toShort(), (-28918).toShort(), (-28898).toShort(), (-22006).toShort(), (-21986).toShort(), (-12918).toShort(), (-12898).toShort(), 13766.toShort(), 13745.toShort(), 13726.toShort(), 13890.toShort(), 13743.toShort(), 13852.toShort(), 17602.toShort(), 18605.toShort(), 21660.toShort(), 24000.toShort(), 24997.toShort(), 24088.toShort(), 27972.toShort(), 25903.toShort(), 26904.toShort(), 27193.toShort(), 27175.toShort(), 27156.toShort(), 30020.toShort(), 28975.toShort(), 29976.toShort(), 12482.toShort(), 13485.toShort(), 10392.toShort(), 10692.toShort(), 10669.toShort(), 10776.toShort(), 6717.toShort(), 6695.toShort(), 7830.toShort(), 6971.toShort(), 6951.toShort(), 5910.toShort(), 3389.toShort(), 3369.toShort(), 3356.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort()), shortArrayOf(10.toShort(), 30.toShort(), 50.toShort(), 70.toShort(), 90.toShort(), 110.toShort(), 310.toShort(), 684.toShort(), 704.toShort(), 556.toShort(), 940.toShort(), 960.toShort(), 6454.toShort(), 6952.toShort(), 6972.toShort(), 2358.toShort(), 2732.toShort(), 2752.toShort(), 10550.toShort(), 10924.toShort(), 10944.toShort(), 10310.toShort(), 10556.toShort(), 10576.toShort(), 14646.toShort(), 15020.toShort(), 15040.toShort(), 19766.toShort(), 20140.toShort(), 20160.toShort(), (-29386).toShort(), (-29012).toShort(), (-28992).toShort(), 31030.toShort(), 31276.toShort(), 31296.toShort(), (-24266).toShort(), (-23892).toShort(), (-23872).toShort(), (-19146).toShort(), (-18772).toShort(), (-18752).toShort(), (-14026).toShort(), (-13652).toShort(), (-13632).toShort(), (-6858).toShort(), (-6484).toShort(), (-6464).toShort(), 522.toShort(), 542.toShort(), 6794.toShort(), 6814.toShort(), 11018.toShort(), 11038.toShort(), 14986.toShort(), 15006.toShort(), 21130.toShort(), 21150.toShort(), (-28918).toShort(), (-28898).toShort(), (-22006).toShort(), (-21986).toShort(), (-12918).toShort(), (-12898).toShort(), 10.toShort(), 30.toShort(), 50.toShort(), 70.toShort(), 90.toShort(), 110.toShort(), 310.toShort(), 684.toShort(), 704.toShort(), 556.toShort(), 940.toShort(), 960.toShort(), 6454.toShort(), 6952.toShort(), 6972.toShort(), 2358.toShort(), 2732.toShort(), 2752.toShort(), 10550.toShort(), 10924.toShort(), 10944.toShort(), 10310.toShort(), 10556.toShort(), 10576.toShort(), 14646.toShort(), 15020.toShort(), 15040.toShort(), 19766.toShort(), 20140.toShort(), 20160.toShort(), (-29386).toShort(), (-29012).toShort(), (-28992).toShort(), 31030.toShort(), 31276.toShort(), 31296.toShort(), (-24266).toShort(), (-23892).toShort(), (-23872).toShort(), (-19146).toShort(), (-18772).toShort(), (-18752).toShort(), (-14026).toShort(), (-13652).toShort(), (-13632).toShort(), (-6858).toShort(), (-6484).toShort(), (-6464).toShort(), 522.toShort(), 542.toShort(), 6794.toShort(), 6814.toShort(), 11018.toShort(), 11038.toShort(), 14986.toShort(), 15006.toShort(), 21130.toShort(), 21150.toShort(), (-28918).toShort(), (-28898).toShort(), (-22006).toShort(), (-21986).toShort(), (-12918).toShort(), (-12898).toShort(), 10.toShort(), 30.toShort(), 50.toShort(), 70.toShort(), 90.toShort(), 110.toShort(), 310.toShort(), 684.toShort(), 704.toShort(), 556.toShort(), 940.toShort(), 960.toShort(), 6454.toShort(), 6952.toShort(), 6972.toShort(), 2358.toShort(), 2732.toShort(), 2752.toShort(), 10550.toShort(), 10924.toShort(), 10944.toShort(), 10310.toShort(), 10556.toShort(), 10576.toShort(), 14646.toShort(), 15020.toShort(), 15040.toShort(), 19766.toShort(), 20140.toShort(), 20160.toShort(), (-29386).toShort(), (-29012).toShort(), (-28992).toShort(), 31030.toShort(), 31276.toShort(), 31296.toShort(), (-24266).toShort(), (-23892).toShort(), (-23872).toShort(), (-19146).toShort(), (-18772).toShort(), (-18752).toShort(), (-14026).toShort(), (-13652).toShort(), (-13632).toShort(), (-6858).toShort(), (-6484).toShort(), (-6464).toShort(), 522.toShort(), 542.toShort(), 6794.toShort(), 6814.toShort(), 11018.toShort(), 11038.toShort(), 14986.toShort(), 15006.toShort(), 21130.toShort(), 21150.toShort(), (-28918).toShort(), (-28898).toShort(), (-22006).toShort(), (-21986).toShort(), (-12918).toShort(), (-12898).toShort(), 10.toShort(), 30.toShort(), 50.toShort(), 70.toShort(), 90.toShort(), 110.toShort(), 310.toShort(), 684.toShort(), 704.toShort(), 556.toShort(), 940.toShort(), 960.toShort(), 6454.toShort(), 6952.toShort(), 6972.toShort(), 2358.toShort(), 2732.toShort(), 2752.toShort(), 10550.toShort(), 10924.toShort(), 10944.toShort(), 10310.toShort(), 10556.toShort(), 10576.toShort(), 14646.toShort(), 15020.toShort(), 15040.toShort(), 19766.toShort(), 20140.toShort(), 20160.toShort(), (-29386).toShort(), (-29012).toShort(), (-28992).toShort(), 31030.toShort(), 31276.toShort(), 31296.toShort(), (-24266).toShort(), (-23892).toShort(), (-23872).toShort(), (-19146).toShort(), (-18772).toShort(), (-18752).toShort(), (-14026).toShort(), (-13652).toShort(), (-13632).toShort(), (-6858).toShort(), (-6484).toShort(), (-6464).toShort(), 522.toShort(), 542.toShort(), 6794.toShort(), 6814.toShort(), 11018.toShort(), 11038.toShort(), 14986.toShort(), 15006.toShort(), 21130.toShort(), 21150.toShort(), (-28918).toShort(), (-28898).toShort(), (-22006).toShort(), (-21986).toShort(), (-12918).toShort(), (-12898).toShort())) + + val aShortArrayArray2634 = arrayOf(shortArrayOf(0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 4.toShort(), 24.toShort(), 44.toShort(), 64.toShort(), 84.toShort(), 104.toShort(), 304.toShort(), 678.toShort(), 698.toShort(), 550.toShort(), 934.toShort(), 954.toShort(), 6448.toShort(), 6946.toShort(), 6966.toShort(), 2352.toShort(), 2726.toShort(), 2746.toShort(), 10544.toShort(), 10918.toShort(), 10938.toShort(), 10304.toShort(), 10550.toShort(), 10570.toShort(), 14640.toShort(), 15014.toShort(), 15034.toShort(), 19760.toShort(), 20134.toShort(), 20154.toShort(), (-29392).toShort(), (-29018).toShort(), (-28998).toShort(), 31024.toShort(), 31270.toShort(), 31290.toShort(), (-24272).toShort(), (-23898).toShort(), (-23878).toShort(), (-19152).toShort(), (-18778).toShort(), (-18758).toShort(), (-14032).toShort(), (-13658).toShort(), (-13638).toShort(), (-6864).toShort(), (-6490).toShort(), (-6470).toShort(), 516.toShort(), 536.toShort(), 6788.toShort(), 6808.toShort(), 11012.toShort(), 11032.toShort(), 14980.toShort(), 15000.toShort(), 21124.toShort(), 21144.toShort(), (-28924).toShort(), (-28904).toShort(), (-22012).toShort(), (-21992).toShort(), (-12924).toShort(), (-12904).toShort()), shortArrayOf(0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 10339.toShort(), 10574.toShort(), 10425.toShort(), 10398.toShort(), 10345.toShort(), 7512.toShort(), 8507.toShort(), 7378.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort()), shortArrayOf(0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 4.toShort(), 24.toShort(), 44.toShort(), 64.toShort(), 84.toShort(), 104.toShort(), 304.toShort(), 678.toShort(), 698.toShort(), 550.toShort(), 934.toShort(), 954.toShort(), 6448.toShort(), 6946.toShort(), 6966.toShort(), 2352.toShort(), 2726.toShort(), 2746.toShort(), 10544.toShort(), 10918.toShort(), 10938.toShort(), 10304.toShort(), 10550.toShort(), 10570.toShort(), 14640.toShort(), 15014.toShort(), 15034.toShort(), 19760.toShort(), 20134.toShort(), 20154.toShort(), (-29392).toShort(), (-29018).toShort(), (-28998).toShort(), 31024.toShort(), 31270.toShort(), 31290.toShort(), (-24272).toShort(), (-23898).toShort(), (-23878).toShort(), (-19152).toShort(), (-18778).toShort(), (-18758).toShort(), (-14032).toShort(), (-13658).toShort(), (-13638).toShort(), (-6864).toShort(), (-6490).toShort(), (-6470).toShort(), 516.toShort(), 536.toShort(), 6788.toShort(), 6808.toShort(), 11012.toShort(), 11032.toShort(), 14980.toShort(), 15000.toShort(), 21124.toShort(), 21144.toShort(), (-28924).toShort(), (-28904).toShort(), (-22012).toShort(), (-21992).toShort(), (-12924).toShort(), (-12904).toShort()), shortArrayOf(0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 13753.toShort(), 13737.toShort(), 13719.toShort(), 13883.toShort(), 13863.toShort(), 13974.toShort(), 19643.toShort(), 18601.toShort(), 16532.toShort(), 23993.toShort(), 25121.toShort(), 24980.toShort(), 26944.toShort(), 26921.toShort(), 24854.toShort(), 27191.toShort(), 27171.toShort(), 26130.toShort(), 26941.toShort(), 28696.toShort(), 30100.toShort(), 12477.toShort(), 10407.toShort(), 10388.toShort(), 10685.toShort(), 10665.toShort(), 10646.toShort(), 6711.toShort(), 6693.toShort(), 6674.toShort(), 6965.toShort(), 7073.toShort(), 7056.toShort(), 2361.toShort(), 4387.toShort(), 3346.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort()), shortArrayOf(0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 0.toShort(), 4.toShort(), 24.toShort(), 44.toShort(), 64.toShort(), 84.toShort(), 104.toShort(), 304.toShort(), 678.toShort(), 698.toShort(), 550.toShort(), 934.toShort(), 954.toShort(), 6448.toShort(), 6946.toShort(), 6966.toShort(), 2352.toShort(), 2726.toShort(), 2746.toShort(), 10544.toShort(), 10918.toShort(), 10938.toShort(), 10304.toShort(), 10550.toShort(), 10570.toShort(), 14640.toShort(), 15014.toShort(), 15034.toShort(), 19760.toShort(), 20134.toShort(), 20154.toShort(), (-29392).toShort(), (-29018).toShort(), (-28998).toShort(), 31024.toShort(), 31270.toShort(), 31290.toShort(), (-24272).toShort(), (-23898).toShort(), (-23878).toShort(), (-19152).toShort(), (-18778).toShort(), (-18758).toShort(), (-14032).toShort(), (-13658).toShort(), (-13638).toShort(), (-6864).toShort(), (-6490).toShort(), (-6470).toShort(), 516.toShort(), 536.toShort(), 6788.toShort(), 6808.toShort(), 11012.toShort(), 11032.toShort(), 14980.toShort(), 15000.toShort(), 21124.toShort(), 21144.toShort(), (-28924).toShort(), (-28904).toShort(), (-22012).toShort(), (-21992).toShort(), (-12924).toShort(), (-12904).toShort())) + + val aShortArray63 = shortArrayOf( + 960.toShort(), + 957.toShort(), (-21568).toShort(), (-21571).toShort(), 22464.toShort() + ) + + val aShortArray2219 = shortArrayOf( + (-4160).toShort(), + (-4163).toShort(), (-8256).toShort(), (-8259).toShort(), 22461.toShort() + ) + +} \ No newline at end of file diff --git a/Client/src/main/kotlin/org/rs09/client/constants/gametype/RunescapeGameAppearance.kt b/Client/src/main/kotlin/org/rs09/client/constants/gametype/RunescapeGameAppearance.kt new file mode 100644 index 000000000..78e5ef16c --- /dev/null +++ b/Client/src/main/kotlin/org/rs09/client/constants/gametype/RunescapeGameAppearance.kt @@ -0,0 +1,181 @@ +package org.rs09.client.constants.gametype + +object RunescapeGameAppearance { + + /** + * Game type RUNESCAPE appearance values + */ + + val aShortArrayArray3654 = arrayOf( + shortArrayOf( + 6798.toShort(), + 107.toShort(), + 10283.toShort(), + 16.toShort(), + 4797.toShort(), + 7744.toShort(), + 5799.toShort(), + 4634.toShort(), + (-31839).toShort(), + 22433.toShort(), + 2983.toShort(), + (-11343).toShort(), + 8.toShort(), + 5281.toShort(), + 10438.toShort(), + 3650.toShort(), + (-27322).toShort(), + (-21845).toShort(), + 200.toShort(), + 571.toShort(), + 908.toShort(), + 21830.toShort(), + 28946.toShort(), + (-15701).toShort(), + (-14010).toShort() + ), + shortArrayOf( + 8741.toShort(), + 12.toShort(), + (-1506).toShort(), + (-22374).toShort(), + 7735.toShort(), + 8404.toShort(), + 1701.toShort(), + (-27106).toShort(), + 24094.toShort(), + 10153.toShort(), + (-8915).toShort(), + 4783.toShort(), + 1341.toShort(), + 16578.toShort(), + (-30533).toShort(), + 25239.toShort(), + 8.toShort(), + 5281.toShort(), + 10438.toShort(), + 3650.toShort(), + (-27322).toShort(), + (-21845).toShort(), + 200.toShort(), + 571.toShort(), + 908.toShort(), + 21830.toShort(), + 28946.toShort(), + (-15701).toShort(), + (-14010).toShort() + ), + shortArrayOf( + 25238.toShort(), + 8742.toShort(), + 12.toShort(), + (-1506).toShort(), + (-22374).toShort(), + 7735.toShort(), + 8404.toShort(), + 1701.toShort(), + (-27106).toShort(), + 24094.toShort(), + 10153.toShort(), + (-8915).toShort(), + 4783.toShort(), + 1341.toShort(), + 16578.toShort(), + (-30533).toShort(), + 8.toShort(), + 5281.toShort(), + 10438.toShort(), + 3650.toShort(), + (-27322).toShort(), + (-21845).toShort(), + 200.toShort(), + 571.toShort(), + 908.toShort(), + 21830.toShort(), + 28946.toShort(), + (-15701).toShort(), + (-14010).toShort() + ), + shortArrayOf(4626.toShort(), 11146.toShort(), 6439.toShort(), 12.toShort(), 4758.toShort(), 10270.toShort()), + shortArrayOf( + 4550.toShort(), + 4537.toShort(), + 5681.toShort(), + 5673.toShort(), + 5790.toShort(), + 6806.toShort(), + 8076.toShort(), + 4574.toShort() + ) + ) //Appearance Colors + + val aShortArray3349 = shortArrayOf( + (-10304).toShort(), + 9104.toShort(), (-1).toShort(), (-1).toShort(), (-1).toShort() + ) + + val aShortArrayArray435 = arrayOf( + shortArrayOf( + 6554.toShort(), + 115.toShort(), + 10304.toShort(), + 28.toShort(), + 5702.toShort(), + 7756.toShort(), + 5681.toShort(), + 4510.toShort(), + (-31835).toShort(), + 22437.toShort(), + 2859.toShort(), + (-11339).toShort(), + 16.toShort(), + 5157.toShort(), + 10446.toShort(), + 3658.toShort(), + (-27314).toShort(), + (-21965).toShort(), + 472.toShort(), + 580.toShort(), + 784.toShort(), + 21966.toShort(), + 28950.toShort(), + (-15697).toShort(), + (-14002).toShort() + ), shortArrayOf( + 9104.toShort(), + 10275.toShort(), + 7595.toShort(), + 3610.toShort(), + 7975.toShort(), + 8526.toShort(), + 918.toShort(), + (-26734).toShort(), + 24466.toShort(), + 10145.toShort(), + (-6882).toShort(), + 5027.toShort(), + 1457.toShort(), + 16565.toShort(), + (-30545).toShort(), + 25486.toShort(), + 24.toShort(), + 5392.toShort(), + 10429.toShort(), + 3673.toShort(), + (-27335).toShort(), + (-21957).toShort(), + 192.toShort(), + 687.toShort(), + 412.toShort(), + 21821.toShort(), + 28835.toShort(), + (-15460).toShort(), + (-14019).toShort() + ), ShortArray(0), ShortArray(0), ShortArray(0) + ) + + val aShortArray3011 = shortArrayOf( + 6798.toShort(), + 8741.toShort(), 25238.toShort(), 4626.toShort(), 4550.toShort() + ) +} \ No newline at end of file diff --git a/Client/src/main/kotlin/org/rs09/client/constants/login/LoginMessageToDisplay.kt b/Client/src/main/kotlin/org/rs09/client/constants/login/LoginMessageToDisplay.kt new file mode 100644 index 000000000..a33c7330a --- /dev/null +++ b/Client/src/main/kotlin/org/rs09/client/constants/login/LoginMessageToDisplay.kt @@ -0,0 +1,39 @@ +package org.rs09.client.constants.login + +object LoginMessageToDisplay { + + const val CONNECTION_TIMED_OUT = -5 + const val ERROR_CONNECTING_TO_SERVER = -4 + const val PERFORMING_LOGIN = -3 + const val ENTER_USERNAME_AND_PASSWORD = -2 + + const val COULD_NOT_DISPLAY_VIDEO_AD = 1 + const val UNEXPECTED_SERVER_RESPONSE_2 = 2 + const val INVALID_USER_OR_PASSWORD = 3 + const val ACCOUNT_DISABLED = 4 + const val ACCOUNT_STILL_LOGGED_IN = 5 + const val GAME_HAS_UPDATED = 6 + const val WORLD_IS_FULL = 7 + const val LOGIN_SERVER_OFFLINE = 8 + const val TOO_MANY_CONNECTIONS = 9 + const val BAD_SESSION_ID = 10 + const val WEAK_PASSWORD_ALERT = 11 + const val NON_MEMBERS_ACCOUNT = 12 + const val COULD_NOT_COMPLETE_LOGIN = 13 + const val SERVER_BEING_UPDATED_WAIT = 14 + const val UNEXPECTED_SERVER_RESPONSE_15 = 15 + const val MAX_INCORRECT_LOGIN_AMOUNT = 16 + const val FREE_ACCOUNT_IN_MEMBERS_AREA = 17 + const val LOCKED_ACCOUNT_STOLEN = 18 + const val FULLSCREEN_MEMBERS_ONLY = 19 + const val MALFORMED_LOGIN_PACKET = 22 + const val NO_LOGIN_SERVER_REPLY = 23 + const val ERROR_LOADING_PROFILE = 24 + const val MAC_BANNED = 26 + const val SERVICE_UNAVAILABLE = 27 + const val NON_MEMBER_MEMBER_LOGIN = 30 + + //Additive/Specialized responses displayed || LoginServerResponse REQUIREMENT_WORLD (29) + const val PVP_COMBAT_MINIMUM_LEVEL_20 = 0 + const val PVP_CARRYING_LENT_ITEMS = 1 +} \ No newline at end of file diff --git a/Client/src/main/kotlin/org/rs09/client/constants/login/LoginOutgoingOpcode.kt b/Client/src/main/kotlin/org/rs09/client/constants/login/LoginOutgoingOpcode.kt new file mode 100644 index 000000000..9b0a6f63f --- /dev/null +++ b/Client/src/main/kotlin/org/rs09/client/constants/login/LoginOutgoingOpcode.kt @@ -0,0 +1,13 @@ +package org.rs09.client.constants.login + +object LoginOutgoingOpcode { + + /** + * Networking + */ + const val INITIAL_CONNECTION = 14 + const val USER_RECONNECTING_LOGIN = 16 + const val USER_ADVERTISEMENT_FINISHED = 17 + const val USER_NORMAL_LOGIN = 18 + +} \ No newline at end of file diff --git a/Client/src/main/kotlin/org/rs09/client/constants/login/LoginReceivedOpcode.kt b/Client/src/main/kotlin/org/rs09/client/constants/login/LoginReceivedOpcode.kt new file mode 100644 index 000000000..b7f885240 --- /dev/null +++ b/Client/src/main/kotlin/org/rs09/client/constants/login/LoginReceivedOpcode.kt @@ -0,0 +1,15 @@ +package org.rs09.client.constants.login + +object LoginReceivedOpcode { + + /** + * Received server responses + */ + const val SUCCESSFUL_CONNECTION = 0 + const val DISPLAY_ADVERTISEMENT = 1 + const val SUCCESS = 2 + const val PROFILE_TRANSFERRING = 21 + const val NO_LOGIN_SERVER_REPLY = 23 + const val REQUIREMENT_WORLD = 29 + +} \ No newline at end of file diff --git a/Client/src/main/kotlin/org/rs09/client/constants/login/LoginStage.kt b/Client/src/main/kotlin/org/rs09/client/constants/login/LoginStage.kt new file mode 100644 index 000000000..544948e24 --- /dev/null +++ b/Client/src/main/kotlin/org/rs09/client/constants/login/LoginStage.kt @@ -0,0 +1,17 @@ +package org.rs09.client.constants.login + +object LoginStage { + + const val ERROR_CHECK_SET_PORTS = 0 + const val INITIALIZE_SOCKET = 1 + const val INITIATE_USER_LOGIN = 2 + const val SEND_ENCRYPT_USER_CREDENTIALS = 3 + const val RECEIVE_SERVER_RESPONSE = 4 + const val SEND_ADVERTISEMENT_TO_USER = 5 + const val FINISH_DISPLAYING_ADVERTISEMENT = 6 + const val DISPLAY_PROFILE_TRANSFERRING = 7 + const val LOGIN_ACCEPTED_GET_USER_DATA = 8 + const val FINISH_USER_LOGIN_SETUP = 9 + const val DISPLAY_REQUIREMENT_WORLD_RESPONSE = 10 + +} \ No newline at end of file diff --git a/Client/src/main/kotlin/org/rs09/client/data/HashTable.kt b/Client/src/main/kotlin/org/rs09/client/data/HashTable.kt new file mode 100644 index 000000000..591c89513 --- /dev/null +++ b/Client/src/main/kotlin/org/rs09/client/data/HashTable.kt @@ -0,0 +1,134 @@ +package org.rs09.client.data + +import org.rs09.client.Linkable +import java.util.* + +class HashTable(var capacity: Int) { + private var retrievalLinkable: Linkable? = null + private var iterationLinkable: Linkable? = null + private var retrievalKey: Long = 0 + private var iterationIndex = 0 + + var buckets: Array = arrayOfNulls(capacity) + + fun clear() { + var i = 0 + while (i < capacity) { + val bucket = buckets[i] + while (true) { + val next = bucket!!.next + if (bucket === next) { + ++i + break + } + next!!.unlink() + } + } + iterationLinkable = null + retrievalLinkable = null + } + + fun first(): T? { + iterationIndex = 0 + return next() + } + + operator fun next(): T? { + var next: Linkable? + if (iterationIndex > 0 && iterationLinkable !== buckets[iterationIndex - 1]) { + next = iterationLinkable + } else { + do { + if (capacity <= iterationIndex) { + return null + } + next = buckets[iterationIndex++]!!.next + } while (buckets[iterationIndex + -1] === next) + } + iterationLinkable = next!!.next + return next as? T + } + + fun put(key: Long, value: T) { + if (value!!.previous != null) { + value.unlink() + } + val bucket = buckets[(key and (capacity - 1).toLong()).toInt()] + value.next = bucket + value.linkableKey = key + value.previous = bucket!!.previous + value.previous!!.next = value + value.next!!.previous = value + } + + operator fun get(key: Long): T? { + retrievalKey = key + val head = Objects.requireNonNull(buckets)[(key and (capacity - 1).toLong()).toInt()]!! + retrievalLinkable = head.next + while (head !== retrievalLinkable) { + if (retrievalLinkable!!.linkableKey == key) { + val value = retrievalLinkable + retrievalLinkable = retrievalLinkable!!.next + return value as T? + } + retrievalLinkable = retrievalLinkable!!.next + } + retrievalLinkable = null + return null + } + + fun size(): Int { + var size = 0 + for (i in 0 until capacity) { + val bucket = buckets[i] + var next = bucket!!.next + while (next !== bucket) { + next = next!!.next + ++size + } + } + return size + } + + fun values(values: Array) { + var count = 0 + for (i in 0 until capacity) { + val head = buckets[i] + var next = head!!.next + while (next !== head) { + values[count++] = next as T? + next = next!!.next + } + } + } + + fun nextInBucket(): T? { + if (retrievalLinkable == null) { + return null + } + val linkable = buckets[(retrievalKey and (-1 + capacity).toLong()).toInt()] + while (linkable !== retrievalLinkable) { + if (retrievalLinkable!!.linkableKey == retrievalKey) { + val value = retrievalLinkable + retrievalLinkable = retrievalLinkable!!.next + return value as T? + } + retrievalLinkable = retrievalLinkable!!.next + } + retrievalLinkable = null + return null + } + + fun capacity(): Int { + return capacity + } + + init { + for (i in 0 until capacity) { + val bucket = Linkable() + buckets[i] = bucket + bucket.previous = bucket + bucket.next = bucket + } + } +} diff --git a/Client/src/main/kotlin/org/rs09/client/data/NodeCache.kt b/Client/src/main/kotlin/org/rs09/client/data/NodeCache.kt new file mode 100644 index 000000000..2477b4fb2 --- /dev/null +++ b/Client/src/main/kotlin/org/rs09/client/data/NodeCache.kt @@ -0,0 +1,61 @@ +package org.rs09.client.data + +import org.rs09.client.Node +import java.util.* + +// TODO Better name +class NodeCache(private val capacity: Int) { + private var empty = Node() + private val table: HashTable + private var remaining: Int + private val history = Queue() + + operator fun get(key: Long): T? { + val value = table[key] + if (value != null) { + history.offer(value) + } + return value + } + + fun first(): T? { + return table.first() + } + + fun put(key: Long, value: T) { + if (remaining == 0) { + var history: Node? = history.poll() + Objects.requireNonNull(history)!!.unlink() + history!!.unlinkNode() + if (empty === history) { + history = this.history.poll() + Objects.requireNonNull(history)!!.unlink() + history!!.unlinkNode() + } + } else { + remaining-- + } + table.put(key, value) + history.offer(value) + } + + operator fun next(): T? { + return table.next() + } + + fun clear() { + history.clear() + table.clear() + empty = Node() + this.remaining = capacity + } + + init { + this.remaining = capacity + var size = 1 + while (size - -size < remaining) { + size += size + } + table = HashTable(size) + } +} diff --git a/Client/src/main/kotlin/org/rs09/client/data/Queue.kt b/Client/src/main/kotlin/org/rs09/client/data/Queue.kt new file mode 100644 index 000000000..97f7f5dc0 --- /dev/null +++ b/Client/src/main/kotlin/org/rs09/client/data/Queue.kt @@ -0,0 +1,73 @@ +package org.rs09.client.data + +import org.rs09.client.Node + +class Queue { + private val tail = Node() + private var current: Node? = null + + fun size(): Int { + var size = 0 + var var3 = tail.nextNode + while (var3 !== tail) { + var3 = var3!!.nextNode + ++size + } + return size + } + + fun getFront(): T? { + val front = tail.nextNode + if (tail === front) { + current = null + return null + } + current = front!!.nextNode + return front as T? + } + + fun poll(): T? { + val next = tail.nextNode + if (next === tail) { + return null + } + next!!.unlinkNode() + return next as T? + } + + operator fun next(): T? { + val current = current + if (current === tail) { + this.current = null + return null + } + this.current = current!!.nextNode + return current as T? + } + + fun offer(node: T) { + if (node!!.previousNode != null) { + node.unlinkNode() + } + node.previousNode = tail.previousNode + node.nextNode = tail + node.previousNode!!.nextNode = node + node.nextNode!!.previousNode = node + } + + fun clear() { + while (true) { + val next = tail.nextNode + if (tail === next) { + current = null + return + } + next!!.unlinkNode() + } + } + + init { + tail.nextNode = tail + tail.previousNode = tail + } +} diff --git a/Client/src/main/kotlin/org/rs09/client/data/ReferenceCache.kt b/Client/src/main/kotlin/org/rs09/client/data/ReferenceCache.kt new file mode 100644 index 000000000..2ab019603 --- /dev/null +++ b/Client/src/main/kotlin/org/rs09/client/data/ReferenceCache.kt @@ -0,0 +1,125 @@ +package org.rs09.client.data + +import org.rs09.client.Node.Companion.splice +import org.rs09.client.data.reference.HardObjectReference +import org.rs09.client.data.reference.ObjectReference +import org.rs09.client.data.reference.SoftObjectReferenceTransformer.transform +import java.util.* + +class ReferenceCache(capacity: Int) { + private var remaining: Int + private val capacity: Int + private val history = Queue>() + private val table: HashTable> + + fun put(value: T, key: Long) { + this.remove(key) + if (remaining == 0) { + val last = history.poll()!! + Objects.requireNonNull(last).unlink() + last.unlinkNode() + } else { + remaining-- + } + val reference = HardObjectReference(value) + table.put(key, reference) + history.offer(reference) + reference.nodeKey = 0L + } + + // TODO I added the return value here, but is that OK or will it break things + fun remove(key: Long): T? { + val previous = table[key] + if (previous != null) { + previous.unlink() + previous.unlinkNode() + remaining++ + return previous.getValue() + } + return null + } + + fun hardCount(): Int { + var count = 0 + var reference = history.getFront() + while (reference != null) { + if (!reference.isSoftReference()) { + count++ + } + reference = history.next() + } + return count + } + + fun sweep(maximumAge: Int) { + var reference: ObjectReference? = history.getFront() + while (null != reference) { + if (!reference.isSoftReference()) { + if (++reference.nodeKey > maximumAge.toLong()) { + val soft: ObjectReference = transform(reference) + table.put(reference.linkableKey, soft) + splice(reference, soft) + reference.unlink() + reference.unlinkNode() + } + } else if (null == reference.getValue()) { + reference.unlink() + reference.unlinkNode() + ++remaining + } + reference = history.next() + } + } + + fun clearSoftReferences() { + var reference = history.getFront() + while (reference != null) { + if (reference.isSoftReference()) { + reference.unlink() + reference.unlinkNode() + remaining++ + } + reference = history.next() + } + } + + fun clear() { + history.clear() + table.clear() + remaining = capacity + } + + operator fun get(key: Long): T? { + val reference = table[key] ?: return null + val value = reference.getValue() + return if (value == null) { + reference.unlink() + reference.unlinkNode() + remaining++ + null + } else { + if (reference.isSoftReference()) { + val hard = HardObjectReference(value) + table.put(reference.linkableKey, hard) + history.offer(hard) + hard.nodeKey = 0L + reference.unlink() + reference.unlinkNode() + } else { + history.offer(reference) + reference.nodeKey = 0L + } + value + } + } + + init { + var size = 1 + while (size + size < capacity) { + size += size + } + this.capacity = capacity + remaining = capacity + table = HashTable(size) + } +} \ No newline at end of file diff --git a/Client/src/main/kotlin/org/rs09/client/data/reference/HardObjectReference.kt b/Client/src/main/kotlin/org/rs09/client/data/reference/HardObjectReference.kt new file mode 100644 index 000000000..3d10fda86 --- /dev/null +++ b/Client/src/main/kotlin/org/rs09/client/data/reference/HardObjectReference.kt @@ -0,0 +1,6 @@ +package org.rs09.client.data.reference + +class HardObjectReference(private val value: T?) : ObjectReference() { + override fun getValue(): T? = value + override fun isSoftReference(): Boolean = false +} \ No newline at end of file diff --git a/Client/src/main/kotlin/org/rs09/client/data/reference/ObjectReference.kt b/Client/src/main/kotlin/org/rs09/client/data/reference/ObjectReference.kt new file mode 100644 index 000000000..c24c40471 --- /dev/null +++ b/Client/src/main/kotlin/org/rs09/client/data/reference/ObjectReference.kt @@ -0,0 +1,8 @@ +package org.rs09.client.data.reference + +import org.rs09.client.Node + +abstract class ObjectReference: Node() { + abstract fun getValue(): T? + abstract fun isSoftReference(): Boolean +} \ No newline at end of file diff --git a/Client/src/main/kotlin/org/rs09/client/data/reference/ReferenceTransformer.kt b/Client/src/main/kotlin/org/rs09/client/data/reference/ReferenceTransformer.kt new file mode 100644 index 000000000..1ecb91561 --- /dev/null +++ b/Client/src/main/kotlin/org/rs09/client/data/reference/ReferenceTransformer.kt @@ -0,0 +1,5 @@ +package org.rs09.client.data.reference + +abstract class ReferenceTransformer { + abstract fun transform(from: ObjectReference): ObjectReference +} \ No newline at end of file diff --git a/Client/src/main/kotlin/org/rs09/client/data/reference/SoftObjectReference.kt b/Client/src/main/kotlin/org/rs09/client/data/reference/SoftObjectReference.kt new file mode 100644 index 000000000..d247115f7 --- /dev/null +++ b/Client/src/main/kotlin/org/rs09/client/data/reference/SoftObjectReference.kt @@ -0,0 +1,10 @@ +package org.rs09.client.data.reference + +import java.lang.ref.SoftReference + +class SoftObjectReference(value: T?) : ObjectReference() { + private val value = SoftReference(value) + + override fun getValue(): T? = value.get() + override fun isSoftReference(): Boolean = true +} \ No newline at end of file diff --git a/Client/src/main/kotlin/org/rs09/client/data/reference/SoftObjectReferenceTransformer.kt b/Client/src/main/kotlin/org/rs09/client/data/reference/SoftObjectReferenceTransformer.kt new file mode 100644 index 000000000..2aef55c0c --- /dev/null +++ b/Client/src/main/kotlin/org/rs09/client/data/reference/SoftObjectReferenceTransformer.kt @@ -0,0 +1,8 @@ +package org.rs09.client.data.reference + +/** + * Transforms all references it receives into soft references + */ +object SoftObjectReferenceTransformer : ReferenceTransformer() { + override fun transform(from: ObjectReference): ObjectReference = SoftObjectReference(from.getValue()) +} \ No newline at end of file diff --git a/Client/src/main/kotlin/org/rs09/client/filestore/LookupTable.kt b/Client/src/main/kotlin/org/rs09/client/filestore/LookupTable.kt new file mode 100644 index 000000000..e90c7de80 --- /dev/null +++ b/Client/src/main/kotlin/org/rs09/client/filestore/LookupTable.kt @@ -0,0 +1,40 @@ +package org.rs09.client.filestore + +class LookupTable(identifiers: IntArray) { + private val table: IntArray + + operator fun get(identifier: Int): Int { + val mask = (table.size shr 1) + -1 + var i = mask and identifier + + while (true) { + val id = table[1 + i + i] + if (id == -1) { + return -1 + } + if (identifier == table[i + i]) { + return id + } + i = i - -1 and mask + } + } + + init { + var i = 1 + while (i <= (identifiers.size shr 1) + identifiers.size) { + i = i shl 1 + } + + table = IntArray(i + i) + for (j in 0 until i + i) table[j] = -1 + + for (j in identifiers.indices) { + var k = identifiers[j] and i - 1 + while (-1 != table[1 + (k + k)]) { + k = 1 + k and i - 1 + } + table[k + k] = identifiers[j] + table[k + k + 1] = j + } + } +} diff --git a/Client/src/main/kotlin/org/rs09/client/filestore/ReferenceTable.kt b/Client/src/main/kotlin/org/rs09/client/filestore/ReferenceTable.kt new file mode 100644 index 000000000..d75a876c1 --- /dev/null +++ b/Client/src/main/kotlin/org/rs09/client/filestore/ReferenceTable.kt @@ -0,0 +1,118 @@ +package org.rs09.client.filestore + +import org.rs09.client.DataBuffer +import org.rs09.client.filestore.compression.Container +import org.rs09.client.util.CRC + +class ReferenceTable(data: ByteArray, crc: Int) { + val crc: Int = CRC.crc32(data, data.size) + var revision = 0 + var validArchiveAmount = 0 + var archiveAmount = 0 + lateinit var validArchiveIds: IntArray + lateinit var archiveRevisions: IntArray + lateinit var validFileIds: Array + lateinit var archiveCRCs: IntArray + lateinit var archiveLengths: IntArray + lateinit var archiveFileLengths: IntArray + lateinit var archiveNameHash: IntArray + var aLookupTable_949: LookupTable? = null + var aLookupTableArray962: Array? = null + var fileNameHashes: Array? = null + + private fun decode(data: ByteArray) { + val buffer = DataBuffer(Container.decode(data)) + val format = buffer.readUnsignedByte() + check(format == 5 || format == 6) { "Unexpected ReferenceTable format $format. Expected 5 or 6." } + revision = if (format >= 6) buffer.readInt() else 0 + + val fields = buffer.readUnsignedByte() + + validArchiveAmount = buffer.readUnsignedShort() + validArchiveIds = IntArray(validArchiveAmount) + + var offset = 0 + var highest = -1 + + for (i in 0 until validArchiveAmount) { + offset += buffer.readUnsignedShort() + validArchiveIds[i] = offset + if (validArchiveIds[i] > highest) + highest = validArchiveIds[i] + } + + archiveAmount = highest - -1 + archiveRevisions = IntArray(archiveAmount) + validFileIds = arrayOfNulls(archiveAmount) + archiveCRCs = IntArray(archiveAmount) + archiveLengths = IntArray(archiveAmount) + archiveFileLengths = IntArray(archiveAmount) + + if (fields != 0) { + archiveNameHash = IntArray(archiveAmount) + + for (i in 0 until archiveAmount) + archiveNameHash[i] = -1 + + for (i in 0 until validArchiveAmount) + archiveNameHash[validArchiveIds[i]] = buffer.readInt() + + aLookupTable_949 = LookupTable(archiveNameHash) + } + + for (i in 0 until validArchiveAmount) + archiveCRCs[validArchiveIds[i]] = buffer.readInt() + + for (i in 0 until validArchiveAmount) + archiveRevisions[validArchiveIds[i]] = buffer.readInt() + + for (i in 0 until validArchiveAmount) + archiveFileLengths[validArchiveIds[i]] = buffer.readUnsignedShort() + + for (i in 0 until validArchiveAmount) { + offset = 0 + val archiveId = validArchiveIds[i] + val archiveFileCount = archiveFileLengths[archiveId] + var highestFileId = -1 + validFileIds[archiveId] = IntArray(archiveFileCount) + for (file in 0 until archiveFileCount) { + offset += buffer.readUnsignedShort() + validFileIds[archiveId]!![file] = offset + if (offset > highestFileId) highestFileId = offset + } + archiveLengths[archiveId] = highestFileId + 1 + if (archiveFileCount == highestFileId + 1) + validFileIds[archiveId] = null + } + + if (fields != 0) { + val aClass69Array962 = arrayOfNulls(highest + 1) + val fileNameHashes = arrayOfNulls(highest + 1) + + for (i in 0 until validArchiveAmount) { + val archiveId = validArchiveIds[i] + val archiveFileLength = archiveFileLengths[archiveId] + val archiveFileNameHashes = IntArray(archiveLengths[archiveId]) + fileNameHashes[archiveId] = archiveFileNameHashes + + for (j in 0 until archiveLengths[archiveId]) + archiveFileNameHashes[j] = -1 + + for (j in 0 until archiveFileLength) { + val fileIndex = if (validFileIds[archiveId] == null) j else validFileIds[archiveId]!![j] + archiveFileNameHashes[fileIndex] = buffer.readInt() + } + aClass69Array962[archiveId] = LookupTable(archiveFileNameHashes) + } + + this.fileNameHashes = fileNameHashes + this.aLookupTableArray962 = aClass69Array962 + } + } + + init { + if (this.crc != crc) + throw IllegalArgumentException("CRC mismatch - expected $crc, calculated ${this.crc}") + decode(data) + } +} \ No newline at end of file diff --git a/Client/src/main/kotlin/org/rs09/client/filestore/ResourceProvider.kt b/Client/src/main/kotlin/org/rs09/client/filestore/ResourceProvider.kt new file mode 100644 index 000000000..fab705ef8 --- /dev/null +++ b/Client/src/main/kotlin/org/rs09/client/filestore/ResourceProvider.kt @@ -0,0 +1,12 @@ +package org.rs09.client.filestore + +// TODO Merge with Class151 +abstract class ResourceProvider { + abstract fun getReferenceTable(): ReferenceTable? + + abstract fun request(file: Int) + + abstract fun percentComplete(file: Int): Int + + abstract fun get(file: Int): ByteArray? +} \ No newline at end of file diff --git a/Client/src/main/kotlin/org/rs09/client/filestore/compression/Container.kt b/Client/src/main/kotlin/org/rs09/client/filestore/compression/Container.kt new file mode 100644 index 000000000..c88ac9629 --- /dev/null +++ b/Client/src/main/kotlin/org/rs09/client/filestore/compression/Container.kt @@ -0,0 +1,31 @@ +package org.rs09.client.filestore.compression + +import org.rs09.client.DataBuffer +import org.runite.client.Bzip2Decompressor + +object Container { + private const val NONE = 0 + + fun decode(data: ByteArray): ByteArray { + val buffer = DataBuffer(data) + val compression = buffer.readUnsignedByte() + val size = buffer.readInt() + + check(size >= 0) { "Container had data size of < 0: $size with compression $compression" } + + if (compression == NONE) { + return buffer.readBytes(size) + } + + val uncompressedSize = buffer.readInt() + check(uncompressedSize >= 0) { "Container had uncompressed data size of < 0: $size with compression $compression" } + + val uncompressed = ByteArray(uncompressedSize) + if (compression == 1) { + Bzip2Decompressor.decompress(uncompressed, uncompressedSize, data) + } else { + GzipDecompressor.decompress(buffer, uncompressed) + } + return uncompressed + } +} \ No newline at end of file diff --git a/Client/src/main/kotlin/org/rs09/client/filestore/compression/GzipDecompressor.kt b/Client/src/main/kotlin/org/rs09/client/filestore/compression/GzipDecompressor.kt new file mode 100644 index 000000000..089a429ed --- /dev/null +++ b/Client/src/main/kotlin/org/rs09/client/filestore/compression/GzipDecompressor.kt @@ -0,0 +1,22 @@ +package org.rs09.client.filestore.compression + +import org.rs09.client.DataBuffer +import java.util.zip.Inflater + +object GzipDecompressor { + private var inflater = Inflater(true) + + fun decompress(buffer: DataBuffer, out: ByteArray) { + if (buffer.buffer[buffer.index].toInt() != 31 || buffer.buffer[buffer.index + 1].toInt() != -117) + throw RuntimeException("Invalid GZIP header!") + + try { + inflater.setInput(buffer.buffer, buffer.index + 10, -8 - (10 + buffer.index) + buffer.buffer.size) + inflater.inflate(out) + } catch (var5: Exception) { + inflater.reset() + throw RuntimeException("Invalid GZIP compressed data!") + } + inflater.reset() + } +} \ No newline at end of file diff --git a/Client/src/main/kotlin/org/rs09/client/filestore/resources/configs/cursors/CursorDefinition.kt b/Client/src/main/kotlin/org/rs09/client/filestore/resources/configs/cursors/CursorDefinition.kt new file mode 100644 index 000000000..eeff138e6 --- /dev/null +++ b/Client/src/main/kotlin/org/rs09/client/filestore/resources/configs/cursors/CursorDefinition.kt @@ -0,0 +1,34 @@ +package org.rs09.client.filestore.resources.configs.cursors + +import org.runite.client.* + +class CursorDefinition { + var hotspotX = 0 + var hotspotY = 0 + var imageId = 0 + + fun getImage(): SoftwareSprite { + var image = Class163_Sub1.aReferenceCache_2984.get(imageId.toLong()) as? SoftwareSprite + if (image != null) return image + + image = Unsorted.loadSoftwareSprite(SequenceDefinition.spritesIndex_1852, imageId) + if (image != null) Class163_Sub1.aReferenceCache_2984.put(image, imageId.toLong()) + return image + } + + fun decode(buffer: DataBuffer) { + while (true) { + val opcode = buffer.readUnsignedByte() + if (opcode == 0) break + + when (opcode) { + 1 -> imageId = buffer.readUnsignedShort() + 2 -> { + hotspotX = buffer.readUnsignedByte() + hotspotY = buffer.readUnsignedByte() + } + else -> throw IllegalArgumentException("unknown CursorDefinition opcode $opcode") + } + } + } +} \ No newline at end of file diff --git a/Client/src/main/kotlin/org/rs09/client/filestore/resources/configs/enums/EnumDefinition.kt b/Client/src/main/kotlin/org/rs09/client/filestore/resources/configs/enums/EnumDefinition.kt new file mode 100644 index 000000000..8afa31b87 --- /dev/null +++ b/Client/src/main/kotlin/org/rs09/client/filestore/resources/configs/enums/EnumDefinition.kt @@ -0,0 +1,130 @@ +package org.rs09.client.filestore.resources.configs.enums + +import org.rs09.client.Linkable +import org.rs09.client.LinkableInt +import org.rs09.client.Node +import org.rs09.client.data.HashTable +import org.runite.client.* + +class EnumDefinition : Node() { + companion object { + private val NULL = RSString.parse("null") + } + + var keyType = 0 + var valueType = 0 + + var values: HashTable? = null + var valueLookup: HashTable? = null + + var defaultString = NULL + var defaultInt = 0 + + fun decode(buffer: DataBuffer) { + while (true) { + val opcode = buffer.readUnsignedByte() + if (opcode == 0) break + + when (opcode) { + 1 -> keyType = buffer.readUnsignedByte() + 2 -> valueType = buffer.readUnsignedByte() + 3 -> defaultString = buffer.readString() + 4 -> defaultInt = buffer.readInt() + 5, 6 -> { + val size = buffer.readUnsignedShort() + val values = HashTable(Class95.method1585(94, size)) + + for (i in 0 until size) { + val key = buffer.readInt() + + val value: Linkable = if (opcode == 5) LinkableRSString(buffer.readString()) + else LinkableInt(buffer.readInt()) + + values.put(key.toLong(), value) + } + + this.values = values + } + else -> throw IllegalArgumentException("unknown EnumDefinition opcode $opcode") + } + } + } + + fun getString(key: Int): RSString { + val values = this.values ?: return defaultString + + val value = values[key.toLong()] as LinkableRSString? + return value?.value ?: defaultString + } + + fun getInt(key: Int): Int { + val values = this.values ?: return defaultInt + + val value = values[key.toLong()] as LinkableInt? + return value?.value ?: defaultInt + } + + private fun buildIntValueLookup() { + val values = requireNotNull(this.values) + val valueLookup = HashTable(values.capacity()) + + var linkable = values.first() as LinkableInt? + while (linkable != null) { + val reversed = LinkableInt(linkable.linkableKey.toInt()) + valueLookup.put(linkable.value.toLong(), reversed) + linkable = values.next() as LinkableInt? + } + + this.valueLookup = valueLookup + } + + private fun buildStringValueLookup() { + val values = requireNotNull(this.values) + val valueLookup = HashTable(values.capacity()) + + var linkable = values.first() as LinkableRSString? + while (linkable != null) { + val reversed = Class3_Sub10(linkable.value, linkable.linkableKey.toInt()) + valueLookup.put(linkable.value.hash(), reversed) + linkable = values.next() as LinkableRSString? + } + + this.valueLookup = valueLookup + } + + fun containsValue(value: Int): Boolean { + if (values == null) { + return false + } + + if (valueLookup == null) { + buildIntValueLookup() + } + + val lookup = valueLookup ?: return false + return lookup[value.toLong()] != null + } + + fun containsValue(value: RSString): Boolean { + if (values == null) { + return false + } + + if (valueLookup == null) { + buildStringValueLookup() + } + + val lookup = valueLookup ?: return false + + var head = lookup[value.hash()] as Class3_Sub10? + while (head != null) { + if (head.value.equalsString(value)) { + return true + } + head = lookup.nextInBucket() as Class3_Sub10? + } + + return false + } + +} \ No newline at end of file diff --git a/Client/src/main/kotlin/org/rs09/client/filestore/resources/configs/enums/EnumDefinitionProvider.kt b/Client/src/main/kotlin/org/rs09/client/filestore/resources/configs/enums/EnumDefinitionProvider.kt new file mode 100644 index 000000000..b234e097c --- /dev/null +++ b/Client/src/main/kotlin/org/rs09/client/filestore/resources/configs/enums/EnumDefinitionProvider.kt @@ -0,0 +1,29 @@ +package org.rs09.client.filestore.resources.configs.enums + +import org.runite.client.CacheIndex +import org.runite.client.DataBuffer +import org.rs09.client.data.NodeCache + +object EnumDefinitionProvider { + private val cache = NodeCache(128) + private lateinit var index: CacheIndex + + @JvmStatic + fun provide(id: Int): EnumDefinition { + var def = cache.get(id.toLong()) + if (def != null) return def + + def = EnumDefinition() + val bytes = index.getFile(id ushr 8, id and 0xff) + if (bytes != null) def.decode(DataBuffer(bytes)) + + cache.put(id.toLong(), def) + return def + } + + @JvmStatic + fun setIndex(index: CacheIndex) { + this.index = index + } + +} \ No newline at end of file diff --git a/Client/src/main/kotlin/org/rs09/client/filestore/resources/configs/structs/StructDefinition.kt b/Client/src/main/kotlin/org/rs09/client/filestore/resources/configs/structs/StructDefinition.kt new file mode 100644 index 000000000..4d8590f37 --- /dev/null +++ b/Client/src/main/kotlin/org/rs09/client/filestore/resources/configs/structs/StructDefinition.kt @@ -0,0 +1,54 @@ +package org.rs09.client.filestore.resources.configs.structs + +import org.rs09.client.Linkable +import org.rs09.client.LinkableInt +import org.rs09.client.Node +import org.rs09.client.data.HashTable +import org.runite.client.Class95 +import org.runite.client.DataBuffer +import org.runite.client.LinkableRSString +import org.runite.client.RSString + +class StructDefinition: Node() { + var values: HashTable? = null + + fun decode(buffer: DataBuffer) { + while (true) { + val opcode = buffer.readUnsignedByte() + if (opcode == 0) break + + when (opcode) { + 249 -> { + val size = buffer.readUnsignedByte() + val values = HashTable(Class95.method1585(105, size)) + + for (i in 0 until size) { + val isString = buffer.readUnsignedByte() == 1 + val key = buffer.readMedium() + + val value = if (isString) LinkableRSString(buffer.readString()) + else LinkableInt(buffer.readInt()) + + values.put(key.toLong(), value) + } + + this.values = values + } + else -> throw IllegalArgumentException("unknown StructDefinition opcode $opcode") + } + } + } + + fun getInt(key: Int, orElse: Int): Int { + val values = this.values ?: return orElse + val value = values[key.toLong()] as LinkableInt? + return value?.value ?: orElse + } + + fun getString(key: Int, orElse: RSString): RSString { + val values = this.values ?: return orElse + + val value = values[key.toLong()] as LinkableRSString? + return value?.value ?: orElse + } +} \ No newline at end of file diff --git a/Client/src/main/kotlin/org/rs09/client/filestore/resources/configs/structs/StructDefinitionProvider.kt b/Client/src/main/kotlin/org/rs09/client/filestore/resources/configs/structs/StructDefinitionProvider.kt new file mode 100644 index 000000000..b14dcf822 --- /dev/null +++ b/Client/src/main/kotlin/org/rs09/client/filestore/resources/configs/structs/StructDefinitionProvider.kt @@ -0,0 +1,28 @@ +package org.rs09.client.filestore.resources.configs.structs + +import org.runite.client.CacheIndex +import org.runite.client.DataBuffer +import org.rs09.client.data.NodeCache + +object StructDefinitionProvider { + private val cache = NodeCache(64) + private lateinit var index: CacheIndex + + @JvmStatic + fun provide(id: Int): StructDefinition? { + var def = cache.get(id.toLong()) + if (def != null) return def + + def = StructDefinition() + val bytes = index.getFile(26, id) + if (bytes != null) def.decode(DataBuffer(bytes)) + + cache.put(id.toLong(), def) + return def + } + + @JvmStatic + fun setIndex(index: CacheIndex) { + this.index = index + } +} \ No newline at end of file diff --git a/Client/src/main/kotlin/org/rs09/client/net/Connection.kt b/Client/src/main/kotlin/org/rs09/client/net/Connection.kt new file mode 100644 index 000000000..15abf0b15 --- /dev/null +++ b/Client/src/main/kotlin/org/rs09/client/net/Connection.kt @@ -0,0 +1,189 @@ +package org.rs09.client.net + +import org.runite.client.Class64 +import org.runite.client.Signlink +import org.runite.client.TimeUtils +import java.io.EOFException +import java.io.IOException +import java.io.InputStream +import java.io.OutputStream +import java.net.Socket +import java.util.concurrent.locks.ReentrantLock +import kotlin.concurrent.withLock + +class Connection(val socket: Socket, val signlink: Signlink) : Runnable { + private val lock = ReentrantLock() + private val condition = lock.newCondition() + + private var inputStream: InputStream + private var outputStream: OutputStream + private var closed = false + private var writeFailed = false + private var outputBuffer: ByteArray? = null + private var writeIndex = 0 + private var someOtherIndex = 0 + private var class64: Class64? = null + + init { + socket.soTimeout = 30_000 + socket.tcpNoDelay = true + inputStream = socket.getInputStream() + outputStream = socket.getOutputStream() + } + + override fun run() { + while (true) { + var bufferOffset: Int + var transmitLength: Int + + lock.lock() + try { + if (writeIndex == someOtherIndex) { + if (closed) break + try { + condition.await() + } catch (e: InterruptedException) { + } + } + + bufferOffset = someOtherIndex + transmitLength = if (writeIndex < someOtherIndex) 5000 - someOtherIndex + else writeIndex - someOtherIndex + } finally { + lock.unlock() + } + + if (transmitLength <= 0) continue + + try { + outputStream.write(outputBuffer!!, bufferOffset, transmitLength) + } catch (e: IOException) { + e.printStackTrace() + writeFailed = true + } + + someOtherIndex = (transmitLength + someOtherIndex) % 5000 + + try { + if (someOtherIndex != writeIndex) continue + + outputStream.flush() + } catch (e: IOException) { + e.printStackTrace() + writeFailed = true + } + } + + try { + inputStream.close() + outputStream.close() + socket.close() + } catch (e: IOException) { + e.printStackTrace() + } + + outputBuffer = null + } + + @Throws(IOException::class) + fun readBytes(buffer: ByteArray, offset: Int, length: Int) { + check(offset >= 0) { "Offset <= 0 in readBytes" } + check(length >= 0) { "Read length <= 0 in readBytes" } + check(offset + length <= buffer.size) { "offset + length is greater than buffer size" } + check(!closed) { "Attempted to read from closed connection" } + + var remaining = length + var bufferOffset = offset + while (remaining > 0) { + val bytesRead = inputStream.read(buffer, bufferOffset, remaining) + if (bytesRead <= 0) + throw EOFException() + + bufferOffset += bytesRead + remaining -= bytesRead + } + } + + @Throws(IOException::class) + fun readByte(): Int { + check(!closed) { "Attempted to read from closed connection" } + return inputStream.read() + } + + @Throws(IOException::class) + fun sendBytes(buffer: ByteArray, length: Int) { + check(!closed) { "Attempted to write to closed connection" } + + if (writeFailed) { + writeFailed = false + throw IOException("Attempted to write straight after failed write!") + } + + val out = outputBuffer ?: ByteArray(5000).apply { outputBuffer = this } + + lock.withLock { + for (i in 0 until length) { + out[writeIndex] = buffer[i] + writeIndex = (writeIndex + 1) % 5000 + + if ((4900 + someOtherIndex) % 5000 == writeIndex) { + throw IOException("Buffer overflow") + } + } + + if (class64 == null) { + class64 = signlink.startThread(3, this) + } + + condition.signalAll() + } + } + + fun finalize() { + if (!closed) { + System.err.println("Finalized connection, but it wasn't closed! Did we leak?") + close() + } + } + + fun checkErrors() { + if (closed || !writeFailed) return + + writeFailed = false + throw IOException("So why are we throwing this now?") + } + + @Throws(IOException::class) + fun availableBytes(): Int = if (closed) 0 else inputStream.available() + + fun applyDummyStreams() { + if (closed) return + + inputStream = DummyInputStream() + outputStream = DummyOutputStream() + } + + fun close() { + if (closed) return + + lock.withLock { + closed = true + condition.signalAll() + } + + class64?.let { class64 -> + while (class64.anInt978 == 0) TimeUtils.sleep(1L) + + if (class64.anInt978 == 1) { + try { + (class64.anObject974 as Thread).join() + } catch (e: InterruptedException) { + e.printStackTrace() + } + } + } + + class64 = null + } + +} \ No newline at end of file diff --git a/Client/src/main/kotlin/org/rs09/client/net/DummyInputStream.kt b/Client/src/main/kotlin/org/rs09/client/net/DummyInputStream.kt new file mode 100644 index 000000000..912aaa632 --- /dev/null +++ b/Client/src/main/kotlin/org/rs09/client/net/DummyInputStream.kt @@ -0,0 +1,11 @@ +package org.rs09.client.net + +import org.runite.client.TimeUtils +import java.io.InputStream + +class DummyInputStream : InputStream() { + override fun read(): Int { + TimeUtils.sleep(30000L) + return -1 + } +} \ No newline at end of file diff --git a/Client/src/main/kotlin/org/rs09/client/net/DummyOutputStream.kt b/Client/src/main/kotlin/org/rs09/client/net/DummyOutputStream.kt new file mode 100644 index 000000000..8e7b8998a --- /dev/null +++ b/Client/src/main/kotlin/org/rs09/client/net/DummyOutputStream.kt @@ -0,0 +1,10 @@ +package org.rs09.client.net + +import java.io.IOException +import java.io.OutputStream + +class DummyOutputStream: OutputStream() { + override fun write(b: Int) { + throw IOException("Attempted to write to DummyOutputStream") + } +} \ No newline at end of file diff --git a/Client/src/main/kotlin/org/rs09/client/net/game/PacketDecoder.kt b/Client/src/main/kotlin/org/rs09/client/net/game/PacketDecoder.kt new file mode 100644 index 000000000..25f7401f4 --- /dev/null +++ b/Client/src/main/kotlin/org/rs09/client/net/game/PacketDecoder.kt @@ -0,0 +1,78 @@ +package org.rs09.client.net.game + +import org.rs09.client.net.game.inbound.ConsoleAutocompletionPacketDecoder +import org.rs09.client.net.game.inbound.ConsoleMessageDecoder +import org.rs09.client.net.game.inbound.GamePacketDecoder +import org.runite.client.* +import java.io.IOException + +object PacketDecoder { + val decoders = HashMap() + var OPCODE_OFFSET = 241 + + private fun registerCustomDecoder(size: Int, decoder: GamePacketDecoder): Int { + val opcode = OPCODE_OFFSET++ + + Class75_Sub4.incomingPacketSizes[opcode] = size + decoders[opcode] = decoder + return opcode + } + + init { + // VERY IMPORTANT - WHEN ADDING NEW PACKETS, ADD THEM AFTER THE OLD PACKETS + // OTHERWISE YOU >>WILL<< MESS UP OPCODES + + registerCustomDecoder(-2, ConsoleMessageDecoder) + registerCustomDecoder(-2, ConsoleAutocompletionPacketDecoder) +// println("NOTE > Registered ConsoleAutocompletionPacket as opcode $completion") + } + + @Throws(IOException::class) + fun decodePacket(): Boolean { + val connection = Class3_Sub15.activeConnection ?: return false + var availableBytes = connection.availableBytes() + if (availableBytes <= 0) return false + + if (Unsorted.incomingOpcode == -1) { + availableBytes-- + Class3_Sub15.activeConnection.readBytes(BufferedDataStream.incomingBuffer.buffer, 0, 1) + BufferedDataStream.incomingBuffer.index = 0 + Unsorted.incomingOpcode = BufferedDataStream.incomingBuffer.opcode + Unsorted.incomingPacketLength = Class75_Sub4.incomingPacketSizes[Unsorted.incomingOpcode] + } + + if (Unsorted.incomingPacketLength == -1) { + if (availableBytes < 1) return false + + availableBytes-- + Class3_Sub15.activeConnection.readBytes(BufferedDataStream.incomingBuffer.buffer, 0, 1) + Unsorted.incomingPacketLength = BufferedDataStream.incomingBuffer.buffer[0].toInt() and 0xff + } + + if (Unsorted.incomingPacketLength == -2) { + if (availableBytes < 2) return false + + availableBytes -= 2 + Class3_Sub15.activeConnection.readBytes(BufferedDataStream.incomingBuffer.buffer, 0, 2) + BufferedDataStream.incomingBuffer.index = 0 + Unsorted.incomingPacketLength = BufferedDataStream.incomingBuffer.readUnsignedShort() + } + + if (availableBytes < Unsorted.incomingPacketLength) return false + + BufferedDataStream.incomingBuffer.index = 0 + Class3_Sub15.activeConnection.readBytes(BufferedDataStream.incomingBuffer.buffer, 0, Unsorted.incomingPacketLength) + Class24.anInt469 = Class7.anInt2166 + Class7.anInt2166 = LinkableRSString.anInt2582 + LinkableRSString.anInt2582 = Unsorted.incomingOpcode + AbstractSprite.anInt3699 = 0 + + val decoder = decoders[Unsorted.incomingOpcode] + if (decoder == null) return PacketParser.parseIncomingPackets(); + else decoder.decode(BufferedDataStream.incomingBuffer) + + // TODO This should only happen after everything else. + Unsorted.incomingOpcode = -1 + return true + } +} \ No newline at end of file diff --git a/Client/src/main/kotlin/org/rs09/client/net/game/inbound/ConsoleAutocompletionPacketDecoder.kt b/Client/src/main/kotlin/org/rs09/client/net/game/inbound/ConsoleAutocompletionPacketDecoder.kt new file mode 100644 index 000000000..81d9d11d3 --- /dev/null +++ b/Client/src/main/kotlin/org/rs09/client/net/game/inbound/ConsoleAutocompletionPacketDecoder.kt @@ -0,0 +1,18 @@ +package org.rs09.client.net.game.inbound + +import org.rs09.client.console.AutocompletionHints +import org.rs09.client.console.DeveloperConsole +import org.runite.client.DataBuffer + +object ConsoleAutocompletionPacketDecoder: GamePacketDecoder { + override fun decode(buffer: DataBuffer) { + val line = buffer.readString().toString() + val size = buffer.readUnsignedShort() + val list = ArrayList() + for(i in 0 until size) + list += buffer.readString().toString() + val total = buffer.readInt() + + DeveloperConsole.autocompletions = AutocompletionHints(line, list, total) + } +} \ No newline at end of file diff --git a/Client/src/main/kotlin/org/rs09/client/net/game/inbound/ConsoleMessageDecoder.kt b/Client/src/main/kotlin/org/rs09/client/net/game/inbound/ConsoleMessageDecoder.kt new file mode 100644 index 000000000..d37d450ba --- /dev/null +++ b/Client/src/main/kotlin/org/rs09/client/net/game/inbound/ConsoleMessageDecoder.kt @@ -0,0 +1,12 @@ +package org.rs09.client.net.game.inbound + +import org.rs09.client.console.DeveloperConsole +import org.runite.client.DataBuffer + +object ConsoleMessageDecoder: GamePacketDecoder { + override fun decode(buffer: DataBuffer) { + val line = buffer.readString() + + DeveloperConsole.println(line.toString()) + } +} \ No newline at end of file diff --git a/Client/src/main/kotlin/org/rs09/client/net/game/inbound/GamePacketDecoder.kt b/Client/src/main/kotlin/org/rs09/client/net/game/inbound/GamePacketDecoder.kt new file mode 100644 index 000000000..d0ce6f2bd --- /dev/null +++ b/Client/src/main/kotlin/org/rs09/client/net/game/inbound/GamePacketDecoder.kt @@ -0,0 +1,7 @@ +package org.rs09.client.net.game.inbound + +import org.runite.client.DataBuffer + +interface GamePacketDecoder { + fun decode(buffer: DataBuffer) +} \ No newline at end of file diff --git a/Client/src/main/kotlin/org/rs09/client/rendering/RenderingUtils.kt b/Client/src/main/kotlin/org/rs09/client/rendering/RenderingUtils.kt new file mode 100644 index 000000000..9cf59d6ec --- /dev/null +++ b/Client/src/main/kotlin/org/rs09/client/rendering/RenderingUtils.kt @@ -0,0 +1,93 @@ +package org.rs09.client.rendering + +import org.runite.client.* + +/** + * A utility class to make rendering new things easier. This should only be used for new things. Ideally only port the + * necessary calls to this utility class. + * + * In the future, instead of utilizing this class, a toolkit system should be used. + */ +object RenderingUtils { + val hd: Boolean + get() = HDToolKit.highDetail + + // TODO Is this actually the width? + val width: Int + get() = Class23.canvasWidth + + // TODO Is this actually the height? + val height: Int + get() = GroundItem.canvasHeight + + @JvmStatic + @Deprecated("Please use the Toolkit methods instead of this delegating method", ReplaceWith("Toolkit.getActiveToolkit().fillRect(x, y, w, h, rgb, alpha)")) + fun fillRect(x: Int, y: Int, w: Int, h: Int, rgb: Int, alpha: Int) { + Toolkit.getActiveToolkit().fillRect(x, y, w, h, rgb, alpha) +// if (hd) Class22.fillRectangle(x, y, w, h, rgb, alpha) +// else Class74.fillRectangle(x, y, w, h, rgb, alpha) + } + + @JvmStatic + fun drawHorizontalLine(x: Int, y: Int, w: Int, rgb: Int) { + Toolkit.getActiveToolkit().drawHorizontalLine(x, y, w, rgb) +// if (hd) Class22.drawHorizontalLine(x, y, w, rgb) +// else Toolkit.JAVA_TOOLKIT.drawHorizontalLine(x, y, w, rgb) + } + + @JvmStatic + fun drawVerticalLine(x: Int, y: Int, h: Int, rgb: Int) { + Toolkit.getActiveToolkit().drawVerticalLine(x,y,h,rgb) +// if (hd) Class22.drawVerticalLine(x, y, h, rgb) +// else Class74.drawVerticalLine(x, y, h, rgb) + } + + @JvmStatic + fun drawRect(x: Int, y: Int, w: Int, h: Int, rgb: Int, alpha: Int) { + Toolkit.getActiveToolkit().drawRect(x, y, w, h, rgb, alpha) +// if (hd) Class22.drawRect(x, y, w, h, rgb) +// else Class74.drawRect(x, y, w, h, rgb) + } + + fun drawText(str: String, x: Int, y: Int, rgb: Int, parse: Boolean = false) { + if (parse) FontType.plainFont.method681(RSString.parse(str), x, y, rgb, -1) + else FontType.plainFont.method681(RSString.of(str), x, y, rgb, -1) + } + + fun drawText(str: String, x: Int, y: Int, rgb: Int, shadow: Int, parse: Boolean = false){ + if (parse) FontType.plainFont.method681(RSString.parse(str), x, y, rgb, shadow) + else FontType.plainFont.method681(RSString.of(str), x, y, rgb, shadow) + } + + fun drawText(str: RSString, x: Int, y: Int, rgb: Int) { + FontType.plainFont.method681(str, x, y, rgb, -1) + } + + fun drawText(str: RSString, x: Int, y: Int, rgb: Int, shadow: Int) { + FontType.plainFont.method681(str, x, y, rgb, shadow) + } + + fun drawTextSmall(str: String, x: Int, y: Int, rgb: Int, parse: Boolean = false) { + if (parse) FontType.smallFont.method681(RSString.parse(str), x, y, rgb, -1) + else FontType.smallFont.method681(RSString.of(str), x, y, rgb, -1) + } + + fun drawTextSmall(str: String, x: Int, y: Int, rgb: Int, shadow: Int, parse: Boolean = false){ + if (parse) FontType.smallFont.method681(RSString.parse(str), x, y, rgb, shadow) + else FontType.smallFont.method681(RSString.of(str), x, y, rgb, shadow) + } + + fun drawTextSmall(str: RSString, x: Int, y: Int, rgb: Int) { + FontType.smallFont.method681(str, x, y, rgb, -1) + } + + fun setClipping(left: Int, top: Int, right: Int, bottom: Int) { + if (hd) Class22.setClipping(left, top, right, bottom) + else Class74.setClipping(left, top, right, bottom) + } + + fun resetClipping() { + if (hd) Class22.resetClipping() + else Class74.resetClipping() + } +} diff --git a/Client/src/main/kotlin/org/rs09/client/rendering/Toolkit.kt b/Client/src/main/kotlin/org/rs09/client/rendering/Toolkit.kt new file mode 100644 index 000000000..abad57f8b --- /dev/null +++ b/Client/src/main/kotlin/org/rs09/client/rendering/Toolkit.kt @@ -0,0 +1,38 @@ +package org.rs09.client.rendering + +import org.rs09.client.rendering.java.JavaToolkit +import org.rs09.client.rendering.opengl.OpenGlToolkit + +/** + * Represents an abstract rendering toolkit. The toolkit should support all raw rendering operations including + * rasterization. + * + * By abstracting rendering through toolkits, additional rendering backends can be implemented in the future. + */ +abstract class Toolkit { + + companion object { + @JvmField + val OPENGL_TOOLKIT = OpenGlToolkit() + @JvmField + val JAVA_TOOLKIT = JavaToolkit() + + @JvmStatic + fun getActiveToolkit(): Toolkit { + return if (RenderingUtils.hd) OPENGL_TOOLKIT else JAVA_TOOLKIT + } + } + + abstract fun fillRect(x: Int, y: Int, w: Int, h: Int, rgb: Int, alpha: Int) + + abstract fun drawHorizontalLine(x: Int, y: Int, w: Int, rgb: Int) + + abstract fun drawVerticalLine(x: Int, y: Int, h: Int, rgb: Int) + + abstract fun drawRect(x: Int, y: Int, w: Int, h: Int, rgb: Int, alpha: Int) + + abstract fun method934(x: Int, y: Int, w: Int, h: Int, rgb: Int) + + + +} \ No newline at end of file diff --git a/Client/src/main/kotlin/org/rs09/client/rendering/java/JavaToolkit.kt b/Client/src/main/kotlin/org/rs09/client/rendering/java/JavaToolkit.kt new file mode 100644 index 000000000..676a9c179 --- /dev/null +++ b/Client/src/main/kotlin/org/rs09/client/rendering/java/JavaToolkit.kt @@ -0,0 +1,150 @@ +package org.rs09.client.rendering.java + +import org.rs09.client.rendering.Toolkit + +class JavaToolkit : Toolkit() { + var buffer: IntArray = IntArray(0) + + @JvmField + var clipLeft: Int = 0 + + @JvmField + var clipTop: Int = 0 + + @JvmField + var clipRight: Int = 0 + + @JvmField + var clipBottom: Int = 0 + + @JvmField + var width: Int = 0 + + @JvmField + var height: Int = 0 + + override fun fillRect(x: Int, y: Int, w: Int, h: Int, rgb: Int, alpha: Int) { + var x = x + var y = y + var width = w + var height = h + var rgb = rgb + + if (x < this.clipLeft) { + width -= this.clipLeft - x + x = this.clipLeft + } + + if (y < this.clipTop) { + height -= this.clipTop - y + y = this.clipTop + } + + if (x + width > this.clipRight) { + width = this.clipRight - x + } + + if (y + height > this.clipBottom) { + height = this.clipBottom - y + } + + rgb = ((rgb and 0xff00ff) * alpha shr 8 and 0xff00ff) + ((rgb and 0xff00) * alpha shr 8 and 0xff00) + val invertedOpacity = 256 - alpha + val skipPerLine = this.width - width + var offset = x + y * this.width + + for (lx in 0 until height) { + for (ly in -width..-1) { + var old = buffer[offset] + old = ((old and 0xff00ff) * invertedOpacity shr 8 and 0xff00ff) + ((old and 0xff00) * invertedOpacity shr 8 and 0xff00) + buffer[offset++] = rgb + old + } + offset += skipPerLine + } + } + + override fun drawHorizontalLine(x: Int, y: Int, w: Int, rgb: Int) { + var x = x + var width = w + + if (y < this.clipTop || y >= this.clipBottom) + return + + if (x < this.clipLeft) { + width -= this.clipLeft - x + x = this.clipLeft + } + if (x + width > this.clipRight) { + width = this.clipRight - x + } + + val var4 = x + y * this.width + for (var5 in 0 until width) { + buffer[var4 + var5] = rgb + } + } + + override fun drawVerticalLine(x: Int, y: Int, h: Int, rgb: Int) { + var y = y + var height = h + + if (x < this.clipLeft || x >= this.clipRight) + return + + if (y < this.clipTop) { + height -= this.clipTop - y + y = this.clipTop + } + if (y + height > this.clipBottom) { + height = this.clipBottom - y + } + + val var4 = x + y * this.width + for (var5 in 0 until height) { + buffer[var4 + var5 * width] = rgb + } + } + + override fun drawRect(x: Int, y: Int, w: Int, h: Int, rgb: Int, alpha: Int) { + drawHorizontalLine(x, y, w, rgb) + drawHorizontalLine(x, y + h - 1, w, rgb) + drawVerticalLine(x, y, h, rgb) + drawVerticalLine(x + w - 1, y, h, rgb) + } + + //Renamed from method1323 to match its openGL counterpart + override fun method934(x: Int, y: Int, w: Int, h: Int, rgb: Int) { + var x = x + var y = y + var width = w + var height = h + if (x < this.clipLeft) { + width -= this.clipLeft - x + x = this.clipLeft + } + if (y < this.clipTop) { + height -= this.clipTop - y + y = this.clipTop + } + if (x + w > this.clipRight) { + width = this.clipRight - x + } + if (y + h > this.clipBottom) { + height = this.clipBottom - y + } + val var5 = this.width - w + var var6 = x + y * this.width + + for (var7 in -height until 0) { + for (var8 in -width..-1) { + buffer[var6++] = rgb + } + var6 += var5; + } + } + + + fun resetBuffer() { + buffer = IntArray(0) + } +} \ No newline at end of file diff --git a/Client/src/main/kotlin/org/rs09/client/rendering/opengl/OpenGlToolkit.kt b/Client/src/main/kotlin/org/rs09/client/rendering/opengl/OpenGlToolkit.kt new file mode 100644 index 000000000..de63f8aa4 --- /dev/null +++ b/Client/src/main/kotlin/org/rs09/client/rendering/opengl/OpenGlToolkit.kt @@ -0,0 +1,87 @@ +package org.rs09.client.rendering.opengl + +import org.rs09.client.rendering.Toolkit +import org.rs09.client.rendering.opengl.enums.GLBeginMode +import org.runite.client.HDToolKit + +class OpenGlToolkit: Toolkit() { + + override fun fillRect(x: Int, y: Int, w: Int, h: Int, rgb: Int, alpha: Int) { + HDToolKit.method1835() + val var6 = x.toFloat() + val var7 = var6 + w.toFloat() + val var8 = (HDToolKit.viewHeight - y).toFloat() + val var9 = var8 - h.toFloat() + val var10 = HDToolKit.gl + + var10.glBegin(GLBeginMode.TRIANGLE_FAN) + var10.glColor4ub((rgb shr 16).toByte(), (rgb shr 8).toByte(), rgb.toByte(), if (alpha > 255) -1 else alpha.toByte()) + var10.glVertex2f(var6, var8) + var10.glVertex2f(var6, var9) + var10.glVertex2f(var7, var9) + var10.glVertex2f(var7, var8) + var10.glEnd() + } + + override fun drawHorizontalLine(x: Int, y: Int, w: Int, rgb: Int) { + HDToolKit.method1835() + val startX = x.toFloat() + 0.3f + val endX = startX + w.toFloat() + val yPos = HDToolKit.viewHeight.toFloat() - (y.toFloat() + 0.3f) + val gl = HDToolKit.gl + + gl.glBegin(GLBeginMode.LINES) + gl.glColor3ub((rgb shr 16).toByte(), (rgb shr 8).toByte(), rgb.toByte()) + gl.glVertex2f(startX, yPos) + gl.glVertex2f(endX, yPos) + gl.glEnd() + } + + override fun drawVerticalLine(x: Int, y: Int, h: Int, rgb: Int) { + HDToolKit.method1835() + val var4 = x.toFloat() + .3f + val var5 = HDToolKit.viewHeight.toFloat() - (y.toFloat() + 0.3f) + val var6 = var5 - h.toFloat() + val var7 = HDToolKit.gl + + var7.glBegin(GLBeginMode.LINES) + var7.glColor3ub((rgb shr 16).toByte(), (rgb shr 8).toByte(), rgb.toByte()) + var7.glVertex2f(var4, var5) + var7.glVertex2f(var4, var6) + var7.glEnd() + } + + override fun drawRect(x: Int, y: Int, w: Int, h: Int, rgb: Int, alpha: Int) { + HDToolKit.method1835() + val var5 = x.toFloat() + 0.3f + val var6 = var5 + (w.toFloat() - 1) + val var7 = (HDToolKit.viewHeight.toFloat() - (y.toFloat() + 0.3f)) + val var8 = var7 - (h.toFloat() - 1) + val var9 = HDToolKit.gl + + var9.glBegin(GLBeginMode.LINE_LOOP) + var9.glColor4ub((rgb shr 16).toByte(), (rgb shr 8).toByte(), rgb.toByte(), if (alpha > 255) -1 else alpha.toByte()) + var9.glVertex2f(var5, var7) + var9.glVertex2f(var5, var8) + var9.glVertex2f(var6, var8) + var9.glVertex2f(var6, var7) + var9.glEnd() + } + + override fun method934(x: Int, y: Int, w: Int, h: Int, rgb: Int) { + HDToolKit.method1835() + val var5 = x.toFloat() + val var6 = var5 + w.toFloat() + val var7 = (HDToolKit.viewHeight - y).toFloat() + val var8 = var7 - h.toFloat() + val var9 = HDToolKit.gl + + var9.glBegin(GLBeginMode.TRIANGLE_FAN) + var9.glColor3ub((rgb shr 16).toByte(), (rgb shr 8).toByte(), rgb.toByte()) + var9.glVertex2f(var5, var7) + var9.glVertex2f(var5, var8) + var9.glVertex2f(var6, var8) + var9.glVertex2f(var6, var7) + var9.glEnd() + } +} \ No newline at end of file diff --git a/Client/src/main/kotlin/org/rs09/client/rendering/opengl/enums/GLBeginMode.kt b/Client/src/main/kotlin/org/rs09/client/rendering/opengl/enums/GLBeginMode.kt new file mode 100644 index 000000000..b0182a15e --- /dev/null +++ b/Client/src/main/kotlin/org/rs09/client/rendering/opengl/enums/GLBeginMode.kt @@ -0,0 +1,17 @@ +package org.rs09.client.rendering.opengl.enums + +/** + * Source: https://opensource.apple.com/source/X11server/X11server-85/libGL/AppleSGLX-57/specs/enum.spec + */ +object GLBeginMode { + const val POINTS = 0x0000 + const val LINES = 0x0001 + const val LINE_LOOP = 0x0002 + const val LINE_STRIP = 0x0003 + const val TRIANGLES = 0x0004 + const val TRIANGLE_STRIP = 0x0005 + const val TRIANGLE_FAN = 0x0006 + const val QUADS = 0x0007 + const val QUAD_STRIP = 0x0008 + const val POLYGON = 0x0009 +} \ No newline at end of file diff --git a/Client/src/main/kotlin/org/rs09/client/util/ArrayUtils.kt b/Client/src/main/kotlin/org/rs09/client/util/ArrayUtils.kt new file mode 100644 index 000000000..9645aa1e6 --- /dev/null +++ b/Client/src/main/kotlin/org/rs09/client/util/ArrayUtils.kt @@ -0,0 +1,338 @@ +package org.rs09.client.util + +@Suppress("NAME_SHADOWING") +object ArrayUtils { + @JvmStatic + fun arraycopy(source: LongArray, sourcePos: Int, dest: LongArray, destPos: Int, count: Int) { + var sourcePos = sourcePos + var destPos = destPos + var count = count + if (source === dest) { + if (sourcePos == destPos) { + return + } + if (destPos > sourcePos && destPos < sourcePos + count) { + --count + sourcePos += count + destPos += count + count = sourcePos - count + count += 3 + while (sourcePos >= count) { + dest[destPos--] = source[sourcePos--] + dest[destPos--] = source[sourcePos--] + dest[destPos--] = source[sourcePos--] + dest[destPos--] = source[sourcePos--] + } + count -= 3 + while (sourcePos >= count) { + dest[destPos--] = source[sourcePos--] + } + return + } + } + count += sourcePos + count -= 3 + while (sourcePos < count) { + dest[destPos++] = source[sourcePos++] + dest[destPos++] = source[sourcePos++] + dest[destPos++] = source[sourcePos++] + dest[destPos++] = source[sourcePos++] + } + count += 3 + while (sourcePos < count) { + dest[destPos++] = source[sourcePos++] + } + } + + @JvmStatic + fun arraycopy(source: ByteArray, sourcePos: Int, dest: ByteArray, destPos: Int, count: Int) { + var sourcePos = sourcePos + var destPos = destPos + var count = count + if (source === dest) { + if (sourcePos == destPos) { + return + } + if (destPos > sourcePos && destPos < sourcePos + count) { + --count + sourcePos += count + destPos += count + count = sourcePos - count + count += 7 + while (sourcePos >= count) { + dest[destPos--] = source[sourcePos--] + dest[destPos--] = source[sourcePos--] + dest[destPos--] = source[sourcePos--] + dest[destPos--] = source[sourcePos--] + dest[destPos--] = source[sourcePos--] + dest[destPos--] = source[sourcePos--] + dest[destPos--] = source[sourcePos--] + dest[destPos--] = source[sourcePos--] + } + count -= 7 + while (sourcePos >= count) { + dest[destPos--] = source[sourcePos--] + } + return + } + } + count += sourcePos + count -= 7 + while (sourcePos < count) { + dest[destPos++] = source[sourcePos++] + dest[destPos++] = source[sourcePos++] + dest[destPos++] = source[sourcePos++] + dest[destPos++] = source[sourcePos++] + dest[destPos++] = source[sourcePos++] + dest[destPos++] = source[sourcePos++] + dest[destPos++] = source[sourcePos++] + dest[destPos++] = source[sourcePos++] + } + count += 7 + while (sourcePos < count) { + dest[destPos++] = source[sourcePos++] + } + } + + @JvmStatic + fun arraycopy(source: IntArray, sourcePos: Int, dest: IntArray, destPos: Int, count: Int) { + var sourcePos = sourcePos + var destPos = destPos + var count = count + if (source === dest) { + if (sourcePos == destPos) { + return + } + if (destPos > sourcePos && destPos < sourcePos + count) { + --count + sourcePos += count + destPos += count + count = sourcePos - count + count += 7 + while (sourcePos >= count) { + dest[destPos--] = source[sourcePos--] + dest[destPos--] = source[sourcePos--] + dest[destPos--] = source[sourcePos--] + dest[destPos--] = source[sourcePos--] + dest[destPos--] = source[sourcePos--] + dest[destPos--] = source[sourcePos--] + dest[destPos--] = source[sourcePos--] + dest[destPos--] = source[sourcePos--] + } + count -= 7 + while (sourcePos >= count) { + dest[destPos--] = source[sourcePos--] + } + return + } + } + count += sourcePos + count -= 7 + while (sourcePos < count) { + dest[destPos++] = source[sourcePos++] + dest[destPos++] = source[sourcePos++] + dest[destPos++] = source[sourcePos++] + dest[destPos++] = source[sourcePos++] + dest[destPos++] = source[sourcePos++] + dest[destPos++] = source[sourcePos++] + dest[destPos++] = source[sourcePos++] + dest[destPos++] = source[sourcePos++] + } + count += 7 + while (sourcePos < count) { + dest[destPos++] = source[sourcePos++] + } + } + + @JvmStatic + fun arraycopy(source: FloatArray, sourcePos: Int, dest: FloatArray, destPos: Int, count: Int) { + var sourcePos = sourcePos + var destPos = destPos + var count = count + if (source === dest) { + if (sourcePos == destPos) { + return + } + if (destPos > sourcePos && destPos < sourcePos + count) { + --count + sourcePos += count + destPos += count + count = sourcePos - count + count += 7 + while (sourcePos >= count) { + dest[destPos--] = source[sourcePos--] + dest[destPos--] = source[sourcePos--] + dest[destPos--] = source[sourcePos--] + dest[destPos--] = source[sourcePos--] + dest[destPos--] = source[sourcePos--] + dest[destPos--] = source[sourcePos--] + dest[destPos--] = source[sourcePos--] + dest[destPos--] = source[sourcePos--] + } + count -= 7 + while (sourcePos >= count) { + dest[destPos--] = source[sourcePos--] + } + return + } + } + count += sourcePos + count -= 7 + while (sourcePos < count) { + dest[destPos++] = source[sourcePos++] + dest[destPos++] = source[sourcePos++] + dest[destPos++] = source[sourcePos++] + dest[destPos++] = source[sourcePos++] + dest[destPos++] = source[sourcePos++] + dest[destPos++] = source[sourcePos++] + dest[destPos++] = source[sourcePos++] + dest[destPos++] = source[sourcePos++] + } + count += 7 + while (sourcePos < count) { + dest[destPos++] = source[sourcePos++] + } + } + + @JvmStatic + fun arraycopy(source: ShortArray, sourcePos: Int, dest: ShortArray, destPos: Int, count: Int) { + var sourcePos = sourcePos + var destPos = destPos + var count = count + if (source === dest) { + if (sourcePos == destPos) { + return + } + if (destPos > sourcePos && destPos < sourcePos + count) { + --count + sourcePos += count + destPos += count + count = sourcePos - count + count += 7 + while (sourcePos >= count) { + dest[destPos--] = source[sourcePos--] + dest[destPos--] = source[sourcePos--] + dest[destPos--] = source[sourcePos--] + dest[destPos--] = source[sourcePos--] + dest[destPos--] = source[sourcePos--] + dest[destPos--] = source[sourcePos--] + dest[destPos--] = source[sourcePos--] + dest[destPos--] = source[sourcePos--] + } + count -= 7 + while (sourcePos >= count) { + dest[destPos--] = source[sourcePos--] + } + return + } + } + count += sourcePos + count -= 7 + while (sourcePos < count) { + dest[destPos++] = source[sourcePos++] + dest[destPos++] = source[sourcePos++] + dest[destPos++] = source[sourcePos++] + dest[destPos++] = source[sourcePos++] + dest[destPos++] = source[sourcePos++] + dest[destPos++] = source[sourcePos++] + dest[destPos++] = source[sourcePos++] + dest[destPos++] = source[sourcePos++] + } + count += 7 + while (sourcePos < count) { + dest[destPos++] = source[sourcePos++] + } + } + + @JvmStatic + fun arraycopy(source: Array, sourcePos: Int, dest: Array, destPos: Int, count: Int) { + var sourcePos = sourcePos + var destPos = destPos + var count = count + if (source === dest) { + if (sourcePos == destPos) { + return + } + if (destPos > sourcePos && destPos < sourcePos + count) { + --count + sourcePos += count + destPos += count + count = sourcePos - count + count += 7 + while (sourcePos >= count) { + dest[destPos--] = source[sourcePos--] + dest[destPos--] = source[sourcePos--] + dest[destPos--] = source[sourcePos--] + dest[destPos--] = source[sourcePos--] + dest[destPos--] = source[sourcePos--] + dest[destPos--] = source[sourcePos--] + dest[destPos--] = source[sourcePos--] + dest[destPos--] = source[sourcePos--] + } + count -= 7 + while (sourcePos >= count) { + dest[destPos--] = source[sourcePos--] + } + return + } + } + count += sourcePos + count -= 7 + while (sourcePos < count) { + dest[destPos++] = source[sourcePos++] + dest[destPos++] = source[sourcePos++] + dest[destPos++] = source[sourcePos++] + dest[destPos++] = source[sourcePos++] + dest[destPos++] = source[sourcePos++] + dest[destPos++] = source[sourcePos++] + dest[destPos++] = source[sourcePos++] + dest[destPos++] = source[sourcePos++] + } + count += 7 + while (sourcePos < count) { + dest[destPos++] = source[sourcePos++] + } + } + + @JvmStatic + fun fill(arr: IntArray, offset: Int, length: Int, value: Int) { + var offset = offset + var length = length + length = offset + length - 7 + while (offset < length) { + arr[offset++] = value + arr[offset++] = value + arr[offset++] = value + arr[offset++] = value + arr[offset++] = value + arr[offset++] = value + arr[offset++] = value + arr[offset++] = value + } + length += 7 + while (offset < length) { + arr[offset++] = value + } + } + + @JvmStatic + fun zero(arr: IntArray, offset: Int, length: Int) { + var offset = offset + var length = length + length = offset + length - 7 + while (offset < length) { + arr[offset++] = 0 + arr[offset++] = 0 + arr[offset++] = 0 + arr[offset++] = 0 + arr[offset++] = 0 + arr[offset++] = 0 + arr[offset++] = 0 + arr[offset++] = 0 + } + length += 7 + while (offset < length) { + arr[offset++] = 0 + } + } +} \ No newline at end of file diff --git a/Client/src/main/kotlin/org/rs09/client/util/ByteArrayPool.kt b/Client/src/main/kotlin/org/rs09/client/util/ByteArrayPool.kt new file mode 100644 index 000000000..9a3b34d39 --- /dev/null +++ b/Client/src/main/kotlin/org/rs09/client/util/ByteArrayPool.kt @@ -0,0 +1,32 @@ +package org.rs09.client.util + +// TODO This is literally so useless because arrays are never returned to the pool... +object ByteArrayPool { + private val SMALL_BUFFERS = arrayOfNulls(1000) + private val MEDIUM_BUFFERS = arrayOfNulls(250) + private val LARGE_BUFFERS = arrayOfNulls(50) + private var SMALL_INDEX = 0 + private var MEDIUM_INDEX = 0 + private var LARGE_INDEX = 0 + + @Synchronized + fun getByteArray(size: Int): ByteArray = when { + size == 100 && SMALL_INDEX > 0 -> { + val arr = SMALL_BUFFERS[--SMALL_INDEX]!! + SMALL_BUFFERS[SMALL_INDEX] = null + arr + } + size == 5000 && MEDIUM_INDEX > 0 -> { + val arr = MEDIUM_BUFFERS[--MEDIUM_INDEX]!! + MEDIUM_BUFFERS[MEDIUM_INDEX] = null + arr + } + size == 30000 && LARGE_INDEX > 0 -> { + val arr = LARGE_BUFFERS[--LARGE_INDEX]!! + LARGE_BUFFERS[LARGE_INDEX] = null + arr + } + else -> ByteArray(size) + + } +} \ No newline at end of file diff --git a/Client/src/main/kotlin/org/rs09/client/util/CRC.kt b/Client/src/main/kotlin/org/rs09/client/util/CRC.kt new file mode 100644 index 000000000..bedc816d6 --- /dev/null +++ b/Client/src/main/kotlin/org/rs09/client/util/CRC.kt @@ -0,0 +1,35 @@ +package org.rs09.client.util + +object CRC { + private val CRC32 = IntArray(256) + private val CRC64 = LongArray(256) + + init { + // Generate CRC tables + for (i in 0 until 256) { + var var0 = i + for (var2 in 0 until 8) { + var0 = if (1 == 1 and var0) { + var0 ushr 1 xor -306674912 + } else { + var0 ushr 1 + } + } + CRC32[i] = var0 + } + + } + + fun crc32(data: ByteArray, length: Int): Int = crc32(data, 0, length) + + fun crc32(data: ByteArray, offset: Int, end: Int): Int { + var hash = -1 + var i = offset + while (end > i) { + hash = hash ushr 8 xor CRC32[hash xor data[i].toInt() and 0xff] + ++i + } + hash = hash.inv() + return hash + } +} \ No newline at end of file diff --git a/Client/src/main/resources/client.conf b/Client/src/main/resources/client.conf new file mode 100644 index 000000000..4f636b9cb --- /dev/null +++ b/Client/src/main/resources/client.conf @@ -0,0 +1 @@ +target_ip_addr:127.0.0.1 diff --git a/Client/src/main/resources/fixXinitThreads.cpp b/Client/src/main/resources/fixXinitThreads.cpp new file mode 100644 index 000000000..276e8793a --- /dev/null +++ b/Client/src/main/resources/fixXinitThreads.cpp @@ -0,0 +1,3 @@ +#include +#include +class a{public: a() { XInitThreads(); }};a X; diff --git a/Management-Server/src/main/java/ms/system/communication/ClanRepository.java b/Management-Server/src/main/java/ms/system/communication/ClanRepository.java index bfe96cbd4..006034c89 100644 --- a/Management-Server/src/main/java/ms/system/communication/ClanRepository.java +++ b/Management-Server/src/main/java/ms/system/communication/ClanRepository.java @@ -79,7 +79,7 @@ public final class ClanRepository { * @param player The player. */ public void enter(PlayerSession player) { - if (players.size() >= MAX_MEMBERS && !owner.getUsername().equals("2009scape")) { + if (players.size() >= MAX_MEMBERS && !owner.getUsername().equals("Fellerscape")) { WorldPacketRepository.sendPlayerMessage(player, "The channel you tried to join is full.:clan:"); return; } diff --git a/Management-Server/src/main/java/ms/system/communication/CommunicationInfo.java b/Management-Server/src/main/java/ms/system/communication/CommunicationInfo.java index 86afae5ec..ae8bdb74d 100644 --- a/Management-Server/src/main/java/ms/system/communication/CommunicationInfo.java +++ b/Management-Server/src/main/java/ms/system/communication/CommunicationInfo.java @@ -45,7 +45,7 @@ public final class CommunicationInfo { /** * The current clan this player is in. */ - private String currentClan = "2009scape"; + private String currentClan = "Fellerscape"; /** * The rank required for joining. diff --git a/Management-Server/src/main/java/ms/system/util/ManagementConfigParser.kt b/Management-Server/src/main/java/ms/system/util/ManagementConfigParser.kt index 90c0ce80f..7aba7f237 100644 --- a/Management-Server/src/main/java/ms/system/util/ManagementConfigParser.kt +++ b/Management-Server/src/main/java/ms/system/util/ManagementConfigParser.kt @@ -7,7 +7,7 @@ import java.io.FileReader import kotlin.system.exitProcess /** - * Class for parsing the server config, I.E default.conf + * Class for parsing the server config, I.E default.json * @param path the path to the JSON file to parse. * @author Ceikry */ @@ -68,4 +68,4 @@ class ManagementConfigParser(path: String) { return pathProduct } -} +} \ No newline at end of file diff --git a/README.md b/README.md index 5586e9424..4fb01c3d2 100644 --- a/README.md +++ b/README.md @@ -2,268 +2,46 @@

- - Logo + + Logo

An open source MMORPG emulation server

- -

Play the live server »



- Community Hosted Server + The Official 2009scape Server · - Discord Invite - · Report Bug + 2009Scape Discord Invite + · Report Bug

-

NOTE: Bug reports and support are only accepted by/offered to players of our live hosted server. We will not provide support to those running their own copies.

- ## Table of Contents -* [Live Server Information](#live-server-information) -* [History of this Codebase](#history-of-this-codebase) -* [Our Core Values](#our-core-values) -* [Contributing](#contributing) -* [Video Setup Tutorial](#video-setup-tutorial) -* [Setup for Content Developers](#content-developers-setting-up-the-project) - * [Github Setup](#github-setup) - * [Prerequisites](#prerequisites) - * [Prereq Installation](#prereq-installation) - * [Project Setup](#project-setup) - * [Running the project](#running-the-project) +* [redwings Information](#redwings-information) +* [Contributing](#contributing-to-the-redwings-codebase) * [License](#license) -* [Contact](#contact) -## Live Server Information +## redwings Information -Did you know that the 2009Scape Development Team hosts the main branch of this repo that you can connect to and play? Come join a growing community of people that love to grind out skills, quest, and hangout together. A download link for the launcher can be found here. Connecting to the live server is also one of the easiest ways to identify bugs/typos/missing features. Identifying these issues help developers, whether already on the project, or are even brand new to the project, fix bugs and issues in an expedited rate. - -## History of this Codebase - -The 2009Scape you see today has gone through a magnitude of changes. Originally starting its life as Arios498, this server saw a lot of people playing it daily, unfortunately, it was for profit and closed source. It was later upgraded to Arios530, targeting the build 530 of runescape with content in and around January 1st, 2009. Development came to a halt when a developer of the closed source project released the source code. The original developers of this server went on to create Kratos 530 back in 2015. - -This project was started out of love for the 530 revision. A small group of developers spent thousands of hours improving on the existing source that was left to the curb. Over the past year, this project has seen many developers coming and going, fixing bugs that they find either through their own server, or bugs that they find in the live game that is currently hosted. We do not accept donations of any kind. The smiles and wonderful compliments are more than enough to keep us going! Content and bugfixes are always number one on our list, and we try our best to answer any questions that you may have, provided you have read through this readme and frequently asked questions on the discord. - -## Our Core Values - -In the current climate of RSPS in general, we believe it's important to wear our core values on our sleeves and defend them with everything we have! Below are what we hold as our core, most important values: - -* **We do NOT believe in profiting off RSPS.** To many of us here at the 2009scape team, what we care about most is preserving the wonderful work of the Gower brothers in the most true-to-spirit manner possible. We do NOT do this to make a profit, and in fact **we outright refuse donations.** This is a labor of love and passion for everyone involved, a love for real RS2! This is perhaps the single most central value we have. If you want to "donate" to us, do so with your time and your dedication. That is what we desire most. - - -* **Authenticity is central to the work**. As a remake, one of the most important things to us is being true to the Gower spirit. What the Gowers brought to us in our childhood is what we are driven to preserve for the remainder of the world. +*"Captain! We are the Red Wings, the pride of Baron! Must we be thieves sent to plunder the weak?"* -* **Open Source Is Crucial**. We believe open source remakes to be crucial to preserving what we loved in our childhood, and we believe for-profit and/or closed-source servers are destined to flounder out and fail. +Welcome to redwings, powered by 2009scape. For up-to-date changes to the redwings codebase, please refer to our [CHANGELOG.md](CHANGELOG.md). + +Redwings was born from the 2009scape project in late December 2021. Restoring removed features, collaborating and sourcing data, and compensating for the lack of certain content. Where we go now isn't up to me, but whoever decides to partake in developing, free from constraints. + +The redwings logos and icons are © property of the redwings development team. -* **Be Welcoming**. One of our most important goals is to provide a community of friendly and caring people that get along and love to enjoy the game with eachother. For this reason, we do tend to be very strict when it comes to toxicity. We care about quality a whole lot more than quantity! +## Contributing to the redwings codebase +To refer to setup guides and insructions in regards to working on, and contributing to the redwings codebase, please refer to our [CONTRIBUTE.md](CONTRIBUTE.md). -## Contributing - -

Note: All merge requests MUST be made using the defaut MR template you can select from the dropdown when creating a new merge request. Merge requests that do not use this template will not be accepted.

-

More information on Kotlin can be found here.

- -There are many ways everyone can contribute! From the most seasoned programmers to those who do not have the most remote clue how code works! Below are some things that can always use some love from the community. - -* **Wiki Editors**: Did you know we have a wiki? Well it's always in need of people to fill it out and stay on top of it. Editing the wiki is one of the easiest ways you can contribute to 2009scape! If you're an active player and have the will, there's so much you could be helping out with over at the wiki. Click here to go to the wiki. - - -* **JSON editors**: Did you know that the vast majority of our drop tables, stats, examines, item info, npc info, etc is all stored in a very easy-to-modify format called JSON? This is something almost anyone can help with, especially with the tool made by Ceikry to make it simple and streamlined. If you want to know what can be done to help here, get in touch in the development channel in the discord! **JSON editors are always in need and always appreciated!!**. - - -* **Auditors**: As a remake, authenticity is central to our core values! We could always use someone to go through the game and create large lists of simple tasks that can be done to bring us closer to the authentic 2009 game! The preferred way to do this is one-area-at-a-time. If you want to see an example of some audits we've done in the past, take a look here. - - -* **Content Developers**: As a remake, we have massive amounts of content that need to be implemented or corrected. If you know how to program or are willing to learn, this is where you could be extremely helpful! We need everything from quests to dialogue to minigames to skills that still need to be corrected or implemented, and this is perhaps one of the most valuable ways someone could help out the project! If you are interested in developing content, reach out in the development channel of the Discord. - -## Content Developers: Setting Up the Project. -### Gitlab Setup - -

Note: This allows you to commit changes to the main repo (with approval)! Also, always stay up to date with the most recent updates by pulling into your copy when 2009Scape updates!

- -1. Create a gitlab account if you haven't done so already - -3. Click "Fork" in the top right hand side of our gitlab page. - -**If at anytime you have an issue with gitlab please refer to the** Gitlab help center. - -### Git LFS Setup - -To obtain large binary files for the repo such as the cache, make sure you have git lfs installed: https://git-lfs.github.com/ - -After setting up git lfs, you may need to run `git lfs pull` in the root of the cloned repo to download essential binaries. - -### Prerequisites - -

Note: It is required for a developer submitting a PR to use Intellij IDEA as your integrated development environment.

- -* Intellij IDEA -* Java SE Development Kit Version 1.8/OpenJDK 1.8 (preferred) -* Gradle (optional - Installs with Intellij on project build) -* Xampp - -## Prereq Installation - -

Windows

-
- - -1. Install JDK version 1.8 - * Scroll down until you see Windows x86 and Windows x64 - * If you are running a 64bit verison of Windows (standard), select Windows x64 - * Accept the terms and conditions, after reading them of course, and login to oracle - * Download and install like any normal application - -2. Install Intellij IDEA - * Click "Download" on the main page - * Ensure "Windows" is selected at the top - * Select "Community download" - * Download and install like any normal application - -3. Install Gradle - * Click on "Install Gradle" - * Scroll down to "Installing manually" - * Download "Binary-only" - * Scroll down until you see "Microsoft Windows users" - * Follow the instructions listed on the website - -4. Install Xampp - * Click on "Xampp for Windows" - * Download - * Install as Administrator -
- -

MacOS

-
- - -1. Install JDK version 1.8 - * Scroll down until you see macOS x64 - * select macOS x64 - * Accept the terms and conditions, after reading them of course, and login to oracle - * Download and install like any normal mac application - -2. Install Intellij IDEA - * Click "Download" on the main page - * Select "Mac" towards the top of the main page - * Select "Community download" - * Download and install like any normal application - -3. Install Gradle - * Click on "Install Gradle" - * Scroll down to "Installing manually" - * Download "Binary-only" - * Scroll down until you see "Linux & MacOS users" - * Follow the instructions listed on the website - -4. Install Xampp - * Click on "Xampp for OS X" - * Download - * Install as Administrator -
- -

Linux

-
- - -1. Install JDK version 1.8 through Oracle or through command line - * Debian, Ubuntu, etc. - ```sh - sudo apt install openjdk-8-jdk - ``` - * Fedora, Oracle Linux, Red Hat Enterprise Linux, etc. - ```sh - su -c "yum install java-1.8.0-openjdk" - ``` - -2. Install Intellij IDEA through Intellij Website or through Command Line - * Debian, Ubuntu, etc. - ```sh - sudo snap install intellij-idea-community --classic - ``` - -3. Install Gradle through the Gradle Website or through Command Line - * Click install Gradle - * If you're installing through Command Line follow : Installing with a package manager - * If you're installing through Download follow : Installing manually : Linux & MacOS users - ```sh - sdk install gradle 6.6.1 - ``` - -4. Install Xampp - * Click install "XAMPP for Linux" - * Install like any normal Linux program -
- - -### Project Setup - -1. Open Xampp - * On Windows make sure you run Xampp as administrator - * On the left hand side make sure you tick the two "Service" boxes for Apache and MySQL - * For both Apache and MySQL click "Start" under Actions - * After doing that navigate to the PHP My Admin LOCAL SITE - * Once opened, on the left hand side click the three "disks" that say "New" - * In the "Database name" bar type: global - * Press the "Create" button - * A three disk "global" should appear on the left hand side - * Click it and on the top bar select "Import" - * Under **FILE TO IMPORT** click "Browse...." - * Navigate to your 2009Scape project folder - * Go to Server/db_exports/ and import global.sql - * It may take a moment to import, when It is done importing Xampp is all set up! - -2. Open Intellij - * Select Get from Version Control - * Click on "Github", and you will be asked to login - * Change your directory to wherever you want the project to load, or keep it default - * On the right hand side you should see your Github Repository for 2009Scape - * Select it and hit "Clone" - * The project should instantly start building on import. Give it some time because it is going through and compiling alot of files - * In Intellij go to File -> Project Structure -> Project and verify your Project SDK is set to JDK "1.8" - * Setup through Intellij should now be finished! - -### Running the project - -1. Navigate to the right hand side of Intellij where it says "Gradle" - * Gradle is very useful when it comes to running and compiling the project - * The only tabs we are concerned about are "Management-Server" and "Server" - * Each of these have a "Tasks" folder and an "application" folder inside of "Tasks" -
-2. Click on the "application" folder for the Management-Server and double-click "run" - * The management server is used for things such as player data(not saves), highscores, and world information -
-3. Click on the "application" folder for the Server and double-click "run" - * Please note this may take a minute or two to build, it is compiling a lot of files! - * If you receive an error on server start, check and make sure that your worldprops/default.conf is pointing to the correct paths - * * Server debug mode/other information can be changed in worldprops/default.conf -
-4. Clone the legacy-client repo and follow the same Intellij setup steps - * Click on the "application" folder for the Client and double-click "run" - * If you receive an error on client run open your build.gradle to verify that the mainClassName is set to the correct location - * Due to client work that is on going a lot of files get changed and new paths for the main class are created - * **FIX** In your build.gradle change the mainClassName and Main-Class attributes to 'org.runite.jagex.Client' - * If Gradle run still does not work, launch the Client by navigating to Client/src/main/java/org.runite/jagex/Client - * Right click on the client and select Run 'Client.main()' - * Client debugging options can be found inside of config.json ### License -We use the AGPL 3.0 license, which can be found here. Please read and understand the license. Failure to follow the guidelines outlined in the license will result in legal action. If you know or hear of anyone breaking this license, please send a report, with proof, to Red Bracket#8151, ceikry#2724, or woahscam#8535 on discord or email woahscam@hotmail.com. **We WILL NOT change the license to fit your needs.** - -### Contact - -

Reminder: There is no official support for setting up your own server. Do not ping/dm developers about setting up your server. Community support is available in the discord server.

- -### Video Setup Tutorial -Occexe made a nice video showing you how to set it up if you'd prefer that. Please note many things have changed since this was filmed and the steps are no longer strictly accurate. Check it out here: - -[![View Tutorial](http://img.youtube.com/vi/3oQcsZdrRcE/0.jpg)](http://www.youtube.com/watch?v=3oQcsZdrRcE "2009Scape Setup") - +The redwings codebase is licensed under the AGPL 3.0 license, which can be found here. [license-shield]: https://img.shields.io/badge/license-AGPL--3.0-informational diff --git a/Server/data/botdata/bot_dialogue.json b/Server/data/botdata/bot_dialogue.json index 48bee0a54..b05353e32 100644 --- a/Server/data/botdata/bot_dialogue.json +++ b/Server/data/botdata/bot_dialogue.json @@ -359,8 +359,8 @@ "Sounds tricky.", "Guthiiiiiiiiiiiiiiiiiiiiiiiiiiiiiixxx!!!!!!", "530 gang for life", - "${real.username}, have you read the rules?", - "${real.username}, have you checked out the Discord?", + "@name, have you read the rules?", + "@name, have you checked out the Discord?", "why are the leprechauns moving?", "I am beyond the point of no return!", "Nothin' personnel, kid.", @@ -399,7 +399,7 @@ "Firmly grasp it!", "My legs!", "Build more farms.", - "B sale at Varrock ${real.username}, don't miss out!", + "B sale at Varrock @name, don't miss out!", "Drop party follow me", "Ryan where is barbass, you said two days Ryan", "Barbass never", @@ -412,14 +412,14 @@ "Bwuh", "I'm literally just mothin' bro", "Certified 2009scape classic.", - "Make sure to like, comment and subscribe ${real.username} it really helps", + "Make sure to like, comment and subscribe @name it really helps", "Real 2009scape hours!!! Murder that like if you up!!!!", "W00t!", "Owned!", "Pwned!", "Lol n00b", - "Epic ownage ${real.username}", - "Gielinor is a strange place, ${real.username}. Best have your wits about you.", + "Epic ownage @name", + "Gielinor is a strange place, @name. Best have your wits about you.", "Mad bloggers bro", "Vibe check", "Drip check", @@ -434,7 +434,7 @@ "yeah i got funnies", "read muv luv", "Why doesn't she love me bros?", - "${real.username} is off the goop don't listen to the clown", + "@name is off the goop don't listen to the clown", "do yall got laptops", "cfunny play the alien warp sound effect", "Ware to all whom doom hither, where cope is all yet constant.", @@ -444,20 +444,20 @@ "based", "where is she", "*S N I I I I I I I I I F F F F F F F F F F F*", - "Hey ${real.username}, who was in Paris?", + "Hey @name, who was in Paris?", "Huh whuh?", "who's lone?", "who *is* he?", - "Hi ${real.username}, I'm Dad!", + "Hi @name, I'm Dad!", "anyone wanna play melty blood after I high alch these bows?", "buru nyaaaa", "Number 15, Taverley Dungeon Black Dragons.", - "House party at Rimmington! Host: ${real.username}!", + "House party at Rimmington! Host: @name!", "Spending 200m! Trade me, no junk!", - "Surprise exam, ${real.username}!", - "Nice outfit ${real.username}, does it come in mens?", - "Nice outfit ${real.username}, does it come in womens?", - "Nice outfit ${real.username}, does it come in children's size 12?", + "Surprise exam, @name!", + "Nice outfit @name, does it come in mens?", + "Nice outfit @name, does it come in womens?", + "Nice outfit @name, does it come in children's size 12?", ":)", ":D", "die screaming", @@ -473,27 +473,41 @@ "Help I just died to Evil Chicken and I lost my stuff!", "Can you fight Bandos in this game?", "one bad gloop", - "${real.username} is not cute or funny", + "@name is not cute or funny", "You have committed crimes against Gielinor and her people. What say you?", "Barrows trauma", "Uhuhuhuhuhu please Barrows give me the K top ahhhhhh", "Selling rare lobby 1m", "Rise and grind bloatscapers, let's get this bread", "Nice", - "Sandwiches, ${real.username}!", + "Sandwiches, @name!", "What a grand and intoxicating innocence!", "With this character's death, the thread of prophecy is severed.", "You must gather your party before venturing forth.", "Praise Andrew Gower", "Please help me I can't stop playing 2009scape", - "Are you ignoring me, ${real.username}?!", + "Are you ignoring me, @name?!", + "Uooooooooooooooooooooooooooohhhhhhhhhhhhhhhhhhhhhhhhhh", + "Look where I'm pointing right now, @name", + "God I wish that were me", + "where is she", + "im gonna brown!!!!!!", + "hey... babe", + "Run", + "w*men when they hit me with the training sword and i give them the lumbridge general store stare", + "selling deez", + "buying deez", + "Gotta bloat up", + "le content has arrived", + "schlop schlop schlop schlop schlop schlop schlop", + "meow meow meow oorah", "i agree with this rfc can we put it in the game please" ], "halloween": [ "Trick or treat!!!", "Boo! Hahahahaha!!", - "Have you got your costume on, ${real.username}?", - "How much candy did you get, ${real.username}?", + "Have you got your costume on, @name?", + "How much candy did you get, @name?", "Don't dead open inside", "Costume party at my POH!! Follow me!", "Trick, then!", @@ -505,17 +519,17 @@ "Watch out for Skeleton Jack!", "The headless-what-man? Horse? Never heard of those.", "Bring me their souls!", - "I'll take any sweets you don't want, ${real.username}", + "I'll take any sweets you don't want, @name", "Whatever you do, don't come to Draynor Manor on this spooky night.", - "Ahhhh! ${real.username}, you scared me! :(", + "Ahhhh! @name, you scared me! :(", "I'm making soup from some leftover pumpkins, want any?", "I'm gonna be so sick from eating all these sweets...", "Rise from the grave, my minions! Tis' Hallowe'en!", "This Scream Fortress 2 update hits kinda different...", "Nice costume Woah", - "Nice costume, ${real.username}!", + "Nice costume, @name!", "Ooh, a piece of candy.", - "Time to join the skeleton war, ${real.username}.", + "Time to join the skeleton war, @name.", "Spooky scary skeletons!", "Spooky scary skeletons!", "Spooky scary skeletons!", @@ -615,7 +629,8 @@ "I saw Kermit kissing santaaaa claus", "You are a mean one, Mr. Grinch", "Deck the hallsss", - "ITS BEGINNING TO LOOK A LOT LIKE CHRISTAAMASSSSS" + "ITS BEGINNING TO LOOK A LOT LIKE CHRISTAAMASSSSS", + "Where were you when Phil saved Fellers Xmas?" ], "christmas_eve": [ "I cant wait for christmas tomorrow @name!!", @@ -639,6 +654,10 @@ "I hate when its cold outside @name", "You need to put some warm clothes on @name", "Wanna build a snowman @name?", + "Merry Christmas to all the Fellers!", + "Merry Christmas to all the Fellers!", + "Merry Christmas to all the Fellers!", + "Merry Christmas to all the Fellers!", "Do you like christmas @name?" ], "new_years_eve": [ diff --git a/Server/data/configs/drop_tables.json b/Server/data/configs/drop_tables.json index abd2d0fac..021864beb 100644 --- a/Server/data/configs/drop_tables.json +++ b/Server/data/configs/drop_tables.json @@ -1639,7 +1639,7 @@ { "minAmount": "1", "weight": "25.0", - "id": "2683", + "id": "1", "maxAmount": "1" } ] @@ -2249,7 +2249,7 @@ { "minAmount": "1", "weight": "12.0", - "id": "2727", + "id": "12070", "maxAmount": "1" }, { @@ -2308,7 +2308,7 @@ } ], "ids": "50,2642", - "description": "", + "description": "King Black Dragon (Boss)", "main": [ { "minAmount": "1", @@ -2444,7 +2444,7 @@ }, { "minAmount": "1", - "weight": "0.154", + "weight": "0.1641", "id": "11286", "maxAmount": "1" }, @@ -2456,8 +2456,8 @@ }, { "minAmount": "1", - "weight": "200.0", - "id": "0", + "weight": "0.547", + "id": "14723", "maxAmount": "1" } ] @@ -14236,34 +14236,6 @@ } ] }, - { - "default": [ - { - "minAmount": "1", - "weight": "100.0", - "id": "526", - "maxAmount": "1" - } - ], - "charm": [], - "ids": "281", - "description": "", - "main": [] - }, - { - "default": [ - { - "minAmount": "1", - "weight": "100.0", - "id": "526", - "maxAmount": "1" - } - ], - "charm": [], - "ids": "283", - "description": "", - "main": [] - }, { "default": [ { @@ -17987,7 +17959,7 @@ { "minAmount": "1", "weight": "25.0", - "id": "2837", + "id": "5733", "maxAmount": "1" }, { @@ -39165,6 +39137,12 @@ "weight": "8.0", "id": "5733", "maxAmount": "1" + }, + { + "minAmount": "1", + "weight": "4.6", + "id": "14723", + "maxAmount": "1" } ] }, @@ -44656,7 +44634,7 @@ { "minAmount": "1", "weight": "5.0", - "id": "2683", + "id": "1", "maxAmount": "1" }, { @@ -45096,7 +45074,7 @@ { "minAmount": "1", "weight": "25.0", - "id": "2727", + "id": "12070", "maxAmount": "1" }, { @@ -47389,7 +47367,7 @@ { "minAmount": "1", "weight": "25.0", - "id": "2727", + "id": "12070", "maxAmount": "1" }, { @@ -51171,7 +51149,7 @@ { "minAmount": "1", "weight": "5.0", - "id": "2727", + "id": "12070", "maxAmount": "1" }, { @@ -51595,7 +51573,7 @@ { "minAmount": "1", "weight": "5.0", - "id": "2727", + "id": "12070", "maxAmount": "1" }, { @@ -52205,7 +52183,7 @@ { "minAmount": "1", "weight": "50.0", - "id": "2727", + "id": "12070", "maxAmount": "1" } ] @@ -59648,7 +59626,7 @@ { "minAmount": "1", "weight": "5.0", - "id": "2727", + "id": "12070", "maxAmount": "1" }, { @@ -60263,7 +60241,7 @@ { "minAmount": "1", "weight": "25.0", - "id": "2727", + "id": "12070", "maxAmount": "1" }, { @@ -64115,5 +64093,151 @@ "maxAmount": "1" } ] + }, + { + "default": [], + "charm": [], + "ids": "8591", + "description": "Venenatis (Wilderness Boss)", + "main": [ + { + "minAmount": "1", + "weight": "2.03", + "id": "14731", + "maxAmount": "1" + }, + { + "minAmount": "1", + "weight": "36.0", + "id": "1093", + "maxAmount": "1" + }, + { + "minAmount": "1", + "weight": "36.0", + "id": "1319", + "maxAmount": "1" + }, + { + "minAmount": "1", + "weight": "4.05", + "id": "14723", + "maxAmount": "1" + }, + { + "minAmount": "1", + "weight": "4.05", + "id": "7158", + "maxAmount": "1" + }, + { + "minAmount": "150", + "weight": "100.0", + "id": "562", + "maxAmount": "150" + }, + { + "minAmount": "100", + "weight": "100.0", + "id": "560", + "maxAmount": "100" + }, + { + "minAmount": "75", + "weight": "100.0", + "id": "565", + "maxAmount": "75" + }, + { + "minAmount": "100", + "weight": "17.0", + "id": "445", + "maxAmount": "100" + }, + { + "minAmount": "25", + "weight": "17.0", + "id": "224", + "maxAmount": "25" + }, + { + "minAmount": "7", + "weight": "9.4", + "id": "9194", + "maxAmount": "25" + }, + { + "minAmount": "100", + "weight": "9.4", + "id": "3052", + "maxAmount": "100" + }, + { + "minAmount": "15000", + "weight": "220.0", + "id": "995", + "maxAmount": "19999" + }, + { + "minAmount": "2", + "weight": "100.0", + "id": "7208", + "maxAmount": "2" + }, + { + "minAmount": "8", + "weight": "100.0", + "id": "2297", + "maxAmount": "8" + }, + { + "minAmount": "10", + "weight": "38.0", + "id": "5953", + "maxAmount": "10" + }, + { + "minAmount": "1", + "weight": "17.0", + "id": "31", + "maxAmount": "1" + }, + { + "minAmount": "2", + "weight": "8.0", + "id": "5297", + "maxAmount": "2" + }, + { + "minAmount": "1", + "weight": "8.0", + "id": "5315", + "maxAmount": "1" + }, + { + "minAmount": "1", + "weight": "8.0", + "id": "12070", + "maxAmount": "1" + }, + { + "minAmount": "1", + "weight": "2.59", + "id": "10976", + "maxAmount": "1" + }, + { + "minAmount": "1", + "weight": "0.259", + "id": "10977", + "maxAmount": "1" + }, + { + "minAmount": "1", + "weight": "100.0", + "id": "3024", + "maxAmount": "1" + } + ] } -] +] \ No newline at end of file diff --git a/Server/data/configs/item_configs.json b/Server/data/configs/item_configs.json index d29bc0c9f..2f1fe533e 100644 --- a/Server/data/configs/item_configs.json +++ b/Server/data/configs/item_configs.json @@ -15669,9 +15669,9 @@ "high_alchemy": "900", "weight": "2.2", "weapon_interface": "1", + "equip_audio": "2230", "render_anim": "28", "attack_audios": "2555,0,0,0", - "equip_audio": "2230", "name": "Staff of air" }, { @@ -15708,9 +15708,9 @@ "high_alchemy": "900", "weight": "2.2", "weapon_interface": "1", + "equip_audio": "2230", "render_anim": "28", "attack_audios": "2555,0,0,0", - "equip_audio": "2230", "name": "Staff of water" }, { @@ -15747,9 +15747,9 @@ "high_alchemy": "900", "weight": "2.2", "weapon_interface": "1", + "equip_audio": "2230", "render_anim": "28", "attack_audios": "2555,0,0,0", - "equip_audio": "2230", "name": "Staff of earth" }, { @@ -15786,9 +15786,9 @@ "high_alchemy": "900", "weight": "2.2", "weapon_interface": "1", + "equip_audio": "2230", "render_anim": "1426", "attack_audios": "2555,0,0,0", - "equip_audio": "2230", "name": "Staff of fire" }, { @@ -15903,9 +15903,9 @@ "high_alchemy": "9300", "weight": "2.25", "weapon_interface": "1", + "equip_audio": "2230", "render_anim": "28", "attack_audios": "2555,0,0,0", - "equip_audio": "2230", "name": "Fire battlestaff" }, { @@ -15942,9 +15942,9 @@ "high_alchemy": "9300", "weight": "2.2", "weapon_interface": "1", + "equip_audio": "2230", "render_anim": "28", "attack_audios": "2555,0,0,0", - "equip_audio": "2230", "name": "Water battlestaff" }, { @@ -15982,9 +15982,9 @@ "high_alchemy": "9300", "weight": "2.25", "weapon_interface": "1", + "equip_audio": "2230", "render_anim": "28", "attack_audios": "2555,0,0,0", - "equip_audio": "2230", "name": "Air battlestaff" }, { @@ -16022,9 +16022,9 @@ "high_alchemy": "9300", "weight": "2.2", "weapon_interface": "1", + "equip_audio": "2230", "render_anim": "28", "attack_audios": "2555,0,0,0", - "equip_audio": "2230", "name": "Earth battlestaff" }, { @@ -28833,7 +28833,7 @@ "tradeable": "true", "archery_ticket_price": "0", "id": "2653", - "bonuses": "0,0,0,-30,-10,82,80,72,-6,80,40,0,0,0,0" + "bonuses": "0,0,0,-30,-10,82,80,72,-6,80,40,0,1,0,0" }, { "ge_buy_limit": "2", @@ -28860,7 +28860,7 @@ "tradeable": "true", "archery_ticket_price": "0", "id": "2655", - "bonuses": "0,0,0,-21,-7,51,49,47,-4,49,15,0,0,0,0" + "bonuses": "0,0,0,-21,-7,51,49,47,-4,49,15,0,1,0,0" }, { "ge_buy_limit": "2", @@ -28889,7 +28889,7 @@ "tradeable": "true", "archery_ticket_price": "0", "id": "2657", - "bonuses": "0,0,0,-6,-2,30,32,27,-1,30,7,0,0,0,1" + "bonuses": "0,0,0,-6,-2,30,32,27,-1,30,7,0,1,0,1" }, { "ge_buy_limit": "2", @@ -28916,7 +28916,7 @@ "tradeable": "true", "archery_ticket_price": "0", "id": "2659", - "bonuses": "0,0,0,-8,-2,44,48,46,-1,46,40,0,0,0,0" + "bonuses": "0,0,0,-8,-2,44,48,46,-1,46,40,0,1,0,0" }, { "ge_buy_limit": "2", @@ -28944,7 +28944,7 @@ "tradeable": "true", "archery_ticket_price": "0", "id": "2661", - "bonuses": "0,0,0,-30,-10,82,80,72,-6,80,40,0,0,0,0" + "bonuses": "0,0,0,-30,-10,82,80,72,-6,80,40,0,1,0,0" }, { "ge_buy_limit": "2", @@ -28971,7 +28971,7 @@ "tradeable": "true", "archery_ticket_price": "0", "id": "2663", - "bonuses": "0,0,0,-21,-7,51,49,47,-4,49,15,0,0,0,0" + "bonuses": "0,0,0,-21,-7,51,49,47,-4,49,15,0,1,0,0" }, { "ge_buy_limit": "2", @@ -29000,7 +29000,7 @@ "tradeable": "true", "archery_ticket_price": "0", "id": "2665", - "bonuses": "0,0,0,-6,-2,30,32,27,-1,30,7,0,0,0,0" + "bonuses": "0,0,0,-6,-2,30,32,27,-1,30,7,0,1,0,1" }, { "ge_buy_limit": "2", @@ -29027,7 +29027,7 @@ "tradeable": "true", "archery_ticket_price": "0", "id": "2667", - "bonuses": "0,0,0,-8,-2,44,48,46,-1,46,40,0,0,0,0" + "bonuses": "0,0,0,-8,-2,44,48,46,-1,46,40,0,1,0,0" }, { "ge_buy_limit": "2", @@ -29055,7 +29055,7 @@ "tradeable": "true", "archery_ticket_price": "0", "id": "2669", - "bonuses": "0,0,0,-30,-10,82,80,72,-6,80,40,0,0,0,0" + "bonuses": "0,0,0,-30,-10,82,80,72,-6,80,40,0,1,0,0" }, { "ge_buy_limit": "2", @@ -29082,7 +29082,7 @@ "tradeable": "true", "archery_ticket_price": "0", "id": "2671", - "bonuses": "0,0,0,-21,-7,51,49,47,-4,49,15,0,0,0,0" + "bonuses": "0,0,0,-21,-7,51,49,47,-4,49,15,0,1,0,0" }, { "ge_buy_limit": "2", @@ -29138,7 +29138,7 @@ "tradeable": "true", "archery_ticket_price": "0", "id": "2675", - "bonuses": "0,0,0,-8,-2,44,48,46,-1,46,40,0,0,0,0" + "bonuses": "0,0,0,-8,-2,44,48,46,-1,46,40,0,1,0,0" }, { "ge_buy_limit": "2", @@ -32518,9 +32518,9 @@ "high_alchemy": "10200", "weight": "2.2", "weapon_interface": "1", + "equip_audio": "2230", "render_anim": "28", "attack_audios": "2555,0,0,0", - "equip_audio": "2230", "name": "Lava battlestaff" }, { @@ -32549,9 +32549,9 @@ "high_alchemy": "27000", "weight": "2", "weapon_interface": "1", + "equip_audio": "2230", "render_anim": "28", "attack_audios": "2555,0,0,0", - "equip_audio": "2230", "name": "Mystic lava staff" }, { @@ -32667,6 +32667,7 @@ "attack_speed": "4", "two_handed": "true", "weapon_interface": "9", + "equip_audio": "1003", "render_anim": "2583", "defence_anim": "397", "equipment_slot": "3", @@ -32676,7 +32677,6 @@ "tradeable": "true", "archery_ticket_price": "0", "id": "3095", - "equip_audio": "1003", "bonuses": "3,4,-4,0,0,1,2,1,0,0,0,5,0,0,0" }, { @@ -32690,6 +32690,7 @@ "attack_speed": "4", "two_handed": "true", "weapon_interface": "9", + "equip_audio": "1003", "render_anim": "2583", "defence_anim": "397", "equipment_slot": "3", @@ -32699,7 +32700,6 @@ "tradeable": "true", "archery_ticket_price": "0", "id": "3096", - "equip_audio": "1003", "bonuses": "4,6,-4,0,0,2,3,1,0,0,0,7,0,0,0" }, { @@ -32714,6 +32714,7 @@ "attack_speed": "4", "two_handed": "true", "weapon_interface": "9", + "equip_audio": "1003", "render_anim": "2583", "defence_anim": "397", "equipment_slot": "3", @@ -32723,7 +32724,6 @@ "tradeable": "true", "archery_ticket_price": "0", "id": "3097", - "equip_audio": "1003", "bonuses": "8,11,-4,0,0,3,6,2,0,0,0,12,0,0,0" }, { @@ -32737,6 +32737,7 @@ "attack_speed": "4", "two_handed": "true", "weapon_interface": "9", + "equip_audio": "1003", "render_anim": "2583", "defence_anim": "397", "equipment_slot": "3", @@ -32746,7 +32747,6 @@ "tradeable": "true", "archery_ticket_price": "0", "id": "3098", - "equip_audio": "1003", "bonuses": "10,14,-4,0,0,4,7,2,0,0,0,14,0,0,0" }, { @@ -32760,6 +32760,7 @@ "attack_speed": "4", "two_handed": "true", "weapon_interface": "9", + "equip_audio": "1003", "render_anim": "2583", "defence_anim": "397", "equipment_slot": "3", @@ -32769,7 +32770,6 @@ "tradeable": "true", "archery_ticket_price": "0", "id": "3099", - "equip_audio": "1003", "bonuses": "11,16,-4,0,0,4,8,2,0,0,0,17,0,0,0" }, { @@ -32782,6 +32782,7 @@ "attack_speed": "4", "two_handed": "true", "weapon_interface": "9", + "equip_audio": "1003", "render_anim": "2583", "defence_anim": "397", "equipment_slot": "3", @@ -32791,7 +32792,6 @@ "tradeable": "true", "archery_ticket_price": "0", "id": "3100", - "equip_audio": "1003", "bonuses": "18,23,-4,0,0,6,12,3,0,0,0,24,0,0,0" }, { @@ -32806,6 +32806,7 @@ "attack_speed": "4", "two_handed": "true", "weapon_interface": "9", + "equip_audio": "1003", "render_anim": "2583", "defence_anim": "397", "equipment_slot": "3", @@ -32816,7 +32817,6 @@ "tradeable": "true", "archery_ticket_price": "0", "id": "3101", - "equip_audio": "1003", "bonuses": "26,38,-4,0,0,10,19,5,0,0,0,39,0,0,0" }, { @@ -36042,7 +36042,7 @@ "tradeable": "true", "archery_ticket_price": "0", "id": "3478", - "bonuses": "0,0,0,-21,-7,51,49,47,-4,49,15,0,0,0,0" + "bonuses": "0,0,0,-21,-7,51,49,47,-4,49,15,0,1,0,0" }, { "requirements": "{1,40}", @@ -36060,7 +36060,7 @@ "tradeable": "true", "archery_ticket_price": "0", "id": "3479", - "bonuses": "0,0,0,-21,-7,51,49,47,-4,49,15,0,0,0,0" + "bonuses": "0,0,0,-21,-7,51,49,47,-4,49,15,0,1,0,0" }, { "requirements": "{1,40}", @@ -36078,7 +36078,7 @@ "tradeable": "true", "archery_ticket_price": "0", "id": "3480", - "bonuses": "0,0,0,-21,-7,51,49,47,-4,49,15,0,0,0,0" + "bonuses": "0,0,0,-21,-7,51,49,47,-4,49,15,0,1,0,0" }, { "requirements": "{1,40}", @@ -38104,6 +38104,7 @@ { "examine": "A sword used only by Fremennik warriors.", "durability": null, + "has_special": "true", "low_alchemy": "2000", "high_alchemy": "3000", "weight": "1.8", @@ -40581,10 +40582,10 @@ "high_alchemy": "72000", "weight": "0.45", "weapon_interface": "11", + "equip_audio": "2249", "render_anim": "620", "lendable": "true", "attack_audios": "2720,0,0,0", - "equip_audio": "2249", "name": "Abyssal whip" }, { @@ -63492,9 +63493,9 @@ "high_alchemy": "10200", "weight": "2.2", "weapon_interface": "1", + "equip_audio": "2230", "render_anim": "28", "attack_audios": "2555,0,0,0", - "equip_audio": "2230", "name": "Mud battlestaff" }, { @@ -63782,6 +63783,7 @@ "attack_speed": "4", "two_handed": "true", "weapon_interface": "9", + "equip_audio": "1003", "render_anim": "2583", "defence_anim": "397", "equipment_slot": "3", @@ -63791,7 +63793,6 @@ "tradeable": "true", "archery_ticket_price": "0", "id": "6587", - "equip_audio": "1003", "bonuses": "10,14,-4,0,0,4,7,2,0,0,0,14,1,0,0" }, { @@ -93656,7 +93657,7 @@ "tradeable": "true", "archery_ticket_price": "0", "id": "10368", - "bonuses": "0,0,0,-10,11,6,5,7,8,0,6,0,0,0,0" + "bonuses": "0,0,0,-10,11,6,5,7,8,0,6,0,1,0,0" }, { "ge_buy_limit": "2", @@ -93683,7 +93684,7 @@ "tradeable": "true", "archery_ticket_price": "0", "id": "10370", - "bonuses": "0,0,0,-15,30,55,47,60,50,55,55,0,0,0,0" + "bonuses": "0,0,0,-15,30,55,47,60,50,55,55,0,1,0,0" }, { "ge_buy_limit": "2", @@ -93709,7 +93710,7 @@ "tradeable": "true", "archery_ticket_price": "0", "id": "10372", - "bonuses": "0,0,0,-10,17,31,25,33,28,31,30,0,0,0,0" + "bonuses": "0,0,0,-10,17,31,25,33,28,31,30,0,1,0,0" }, { "ge_buy_limit": "2", @@ -93735,7 +93736,7 @@ "tradeable": "true", "archery_ticket_price": "0", "id": "10374", - "bonuses": "0,0,0,-1,7,4,7,10,4,8,8,0,0,0,0" + "bonuses": "0,0,0,-1,7,4,7,10,4,8,8,0,1,0,0" }, { "ge_buy_limit": "2", @@ -93760,7 +93761,7 @@ "tradeable": "true", "archery_ticket_price": "0", "id": "10376", - "bonuses": "0,0,0,-10,11,6,5,7,8,0,6,0,0,0,0" + "bonuses": "0,0,0,-10,11,6,5,7,8,0,6,0,1,0,0" }, { "ge_buy_limit": "2", @@ -93788,7 +93789,7 @@ "tradeable": "true", "archery_ticket_price": "0", "id": "10378", - "bonuses": "0,0,0,-15,30,55,47,60,50,55,55,0,0,0,0" + "bonuses": "0,0,0,-15,30,55,47,60,50,55,55,0,1,0,0" }, { "ge_buy_limit": "2", @@ -93814,7 +93815,7 @@ "tradeable": "true", "archery_ticket_price": "0", "id": "10380", - "bonuses": "0,0,0,-10,17,31,25,33,28,31,30,0,0,0,0" + "bonuses": "0,0,0,-10,17,31,25,33,28,31,30,0,1,0,0" }, { "ge_buy_limit": "2", @@ -93841,7 +93842,7 @@ "tradeable": "true", "archery_ticket_price": "0", "id": "10382", - "bonuses": "0,0,0,-1,7,4,7,10,4,8,8,0,0,0,0" + "bonuses": "0,0,0,-1,7,4,7,10,4,8,8,0,1,0,0" }, { "ge_buy_limit": "2", @@ -93866,7 +93867,7 @@ "tradeable": "true", "archery_ticket_price": "0", "id": "10384", - "bonuses": "0,0,0,-10,11,6,5,7,8,0,6,0,0,0,0" + "bonuses": "0,0,0,-10,11,6,5,7,8,0,6,0,1,0,0" }, { "ge_buy_limit": "2", @@ -93895,7 +93896,7 @@ "tradeable": "true", "archery_ticket_price": "0", "id": "10386", - "bonuses": "0,0,0,-15,30,55,47,60,50,55,55,0,0,0,0" + "bonuses": "0,0,0,-15,30,55,47,60,50,55,55,0,1,0,0" }, { "ge_buy_limit": "2", @@ -93920,7 +93921,7 @@ "tradeable": "true", "archery_ticket_price": "0", "id": "10388", - "bonuses": "0,0,0,-10,17,31,25,33,28,31,30,0,0,0,0" + "bonuses": "0,0,0,-10,17,31,25,33,28,31,30,0,1,0,0" }, { "ge_buy_limit": "2", @@ -93946,7 +93947,7 @@ "tradeable": "true", "archery_ticket_price": "0", "id": "10390", - "bonuses": "0,0,0,-1,7,4,7,10,4,8,8,0,0,0,0" + "bonuses": "0,0,0,-1,7,4,7,10,4,8,8,0,1,0,0" }, { "ge_buy_limit": "2", @@ -95042,6 +95043,7 @@ "turn90ccw_anim": "822", "weapon_interface": "12", "turn180_anim": "5438", + "equip_audio": "3277", "render_anim": "1171", "equipment_slot": "3", "stand_anim": "5363", @@ -95050,7 +95052,6 @@ "archery_ticket_price": "0", "id": "10487", "stand_turn_anim": "823", - "equip_audio": "3277", "bonuses": "-100,-100,-50,0,0,0,0,0,0,0,0,-10,0,0,0" }, { @@ -95161,29 +95162,29 @@ "high_alchemy": "461", "destroy": "true", "weight": "4.5", + "equip_audio": "3284", "equipment_slot": "1", "destroy_message": "I can buy a replacement from Ava in Draynor Manor; she will charge me 999 coins for this service.", "name": "Ava's attractor", "tradeable": "false", "archery_ticket_price": "0", "id": "10498", - "equip_audio": "3284", "bonuses": "0,0,0,0,2,0,0,0,2,0,0,0,0,0,0" }, { - "destroy_message": "I can obtain a replacement for this from Ava in Draynor Manor. She will need 999 coins to buy the lower", "shop_price": "999", "examine": "A superior bagged chicken ready to serve you, magnet in claw.", "durability": null, - "name": "Ava's accumulator", - "tradeable": "false", "destroy": "true", "weight": "4.5", + "equip_audio": "3284", + "equipment_slot": "1", + "destroy_message": "I can obtain a replacement for this from Ava in Draynor Manor. She will need 999 coins to buy the lower", + "name": "Ava's accumulator", + "tradeable": "false", "archery_ticket_price": "0", "id": "10499", - "bonuses": "0,0,0,0,4,0,1,0,4,0,0,0,0,0,0", - "equip_audio": "3284", - "equipment_slot": "1" + "bonuses": "0,0,0,0,4,0,1,0,4,0,0,0,0,0,0" }, { "destroy_message": "I can obtain a replacement for this from the crone who lives west of the Port Phasmatys farm.", @@ -98248,7 +98249,7 @@ "tradeable": "true", "archery_ticket_price": "0", "id": "10780", - "bonuses": "0,0,0,-30,-10,82,80,72,-6,80,0,0,0,0,0" + "bonuses": "0,0,0,-30,-10,82,80,72,-6,80,0,0,0,0,1" }, { "examine": "Rune platebody with complete gold trim & plating.", @@ -102227,10 +102228,10 @@ "high_alchemy": "72001", "weight": "1.9", "weapon_interface": "16", + "equip_audio": "3738", "render_anim": "1", "lendable": "true", "attack_audios": "3731,0,0,0", - "equip_audio": "3738", "name": "Dark bow" }, { @@ -106231,9 +106232,9 @@ "high_alchemy": "10200", "weight": "2", "weapon_interface": "1", + "equip_audio": "2230", "render_anim": "28", "attack_audios": "2555,0,0,0", - "equip_audio": "2230", "name": "Steam battlestaff" }, { @@ -122887,15 +122888,15 @@ "two_handed": "true", "weapon_interface": "16", "absorb": "0,0,0", + "equip_audio": "3738", "render_anim": "303", "lendable": "true", "destroy_message": "Drop", "grand_exchange_price": "86850", + "attack_audios": "3731,0,0,0", "name": "Dark bow", "archery_ticket_price": "0", "id": "13405", - "attack_audios": "3731,0,0,0", - "equip_audio": "3738", "bonuses": "0,0,0,0,95,0,0,0,0,0,0,0,0,0,0" }, { @@ -128239,13 +128240,13 @@ "two_handed": "true", "weapon_interface": "9", "absorb": "0,0,0", + "equip_audio": "1003", "lendable": "true", "destroy_message": "Drop", "grand_exchange_price": "6535", "name": "Rune claws", "archery_ticket_price": "0", "id": "13764", - "equip_audio": "1003", "bonuses": "26,38,-4,0,0,10,19,5,0,0,0,39,0,0,0" }, { @@ -130641,7 +130642,7 @@ "shop_price": "300000", "durability": null, "high_alchemy": "180000", - "destroy": "false", + "destroy": "true", "weight": "4.2", "weapon_interface": "14", "render_anim": "28", @@ -130654,7 +130655,7 @@ "durability": null, "low_alchemy": "120000", "high_alchemy": "180000", - "destroy": "false", + "destroy": "true", "attack_speed": "4", "two_handed": "true", "destroy_message": "Drop", @@ -137782,9 +137783,9 @@ "high_alchemy": "40500", "destroy": "true", "weapon_interface": "9", + "equip_audio": "1003", "render_anim": "2583", "lendable": "true", - "equip_audio": "1003", "name": "Dragon claws" }, { @@ -137815,13 +137816,13 @@ "two_handed": "true", "weapon_interface": "9", "absorb": "0,0,0", + "equip_audio": "1003", "lendable": "true", "destroy_message": "Drop", "grand_exchange_price": "1472441", "name": "Dragon claws", "archery_ticket_price": "0", "id": "14486", - "equip_audio": "1003", "bonuses": "41,57,-4,0,0,13,26,7,0,0,0,56,0,0,0" }, { @@ -139667,5 +139668,1055 @@ "examine": "Item container for C. Ele Minor Drop Table. You should not be able to obtain this item.", "name": "C. Ele Minor Drop Table", "id": "799" + }, + { + "shop_price": "160", + "ge_buy_limit": "500", + "examine": "Provides excellent protection.", + "durability": null, + "low_alchemy": "64", + "high_alchemy": "96", + "weight": "9.5", + "equipment_slot": "4", + "remove_sleeves": "true", + "grand_exchange_price": "36", + "name": "Bronze platebody (g)", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14658", + "bonuses": "0,0,0,-30,-10,15,14,9,-6,14,5,0,0,0,0" + }, + { + "ge_buy_limit": "500", + "grand_exchange_price": "36", + "durability": null, + "name": "Bronze platebody (g)", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14659" + }, + { + "shop_price": "80", + "ge_buy_limit": "100", + "examine": "These look pretty heavy.", + "durability": null, + "low_alchemy": "32", + "high_alchemy": "48", + "weight": "9", + "equipment_slot": "7", + "grand_exchange_price": "34", + "name": "Bronze platelegs (g)", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14660", + "bonuses": "0,0,0,-21,-7,8,7,6,-4,7,0,0,0,0,0" + }, + { + "ge_buy_limit": "100", + "grand_exchange_price": "34", + "durability": null, + "name": "Bronze platelegs (g)", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14661" + }, + { + "shop_price": "80", + "ge_buy_limit": "100", + "examine": "Designer leg protection.", + "durability": null, + "low_alchemy": "32", + "high_alchemy": "48", + "weight": "8.1", + "equipment_slot": "7", + "grand_exchange_price": "113", + "name": "Bronze plateskirt (g)", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14662", + "bonuses": "0,0,0,-21,-7,8,7,6,-4,7,0,0,0,0,0" + }, + { + "ge_buy_limit": "100", + "grand_exchange_price": "113", + "durability": null, + "name": "Bronze plateskirt (g)", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14663" + }, + { + "remove_head": "true", + "shop_price": "44", + "ge_buy_limit": "100", + "examine": "A full face helmet.", + "durability": null, + "low_alchemy": "17", + "high_alchemy": "26", + "weight": "2.7", + "remove_beard": "true", + "equipment_slot": "0", + "grand_exchange_price": "67", + "name": "Bronze full helm (g)", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14664", + "bonuses": "0,0,0,-6,-2,4,5,3,-1,4,0,0,0,0,0" + }, + { + "ge_buy_limit": "100", + "grand_exchange_price": "67", + "durability": null, + "name": "Bronze full helm (g)", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14665" + }, + { + "shop_price": "86", + "ge_buy_limit": "100", + "examine": "A large metal shield.", + "durability": null, + "low_alchemy": "27", + "high_alchemy": "40", + "weight": "5.4", + "equipment_slot": "5", + "grand_exchange_price": "18", + "name": "Bronze kiteshield (g)", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14666", + "bonuses": "0,0,0,-8,-2,5,7,6,-1,6,1,0,0,0,0" + }, + { + "ge_buy_limit": "100", + "grand_exchange_price": "18", + "durability": null, + "name": "Bronze kiteshield (g)", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14667" + }, + { + "remove_head": "true", + "shop_price": "24", + "ge_buy_limit": "100", + "examine": "A medium sized helmet.", + "durability": null, + "low_alchemy": "9", + "high_alchemy": "14", + "weight": "1.8", + "equipment_slot": "0", + "grand_exchange_price": "39", + "name": "Bronze med helm (g)", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14668", + "bonuses": "0,0,0,-3,-1,3,4,2,-1,3,0,0,0,0,0" + }, + { + "ge_buy_limit": "100", + "grand_exchange_price": "39", + "durability": null, + "name": "Bronze med helm (g)", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14669" + }, + { + "shop_price": "48", + "ge_buy_limit": "100", + "examine": "A medium square shield.", + "durability": null, + "low_alchemy": "19", + "high_alchemy": "28", + "weight": "3", + "equipment_slot": "5", + "grand_exchange_price": "12", + "name": "Bronze sq shield (g)", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14670", + "bonuses": "0,0,0,-6,-2,5,6,4,0,5,0,0,0,0,0" + }, + { + "ge_buy_limit": "100", + "grand_exchange_price": "12", + "durability": null, + "name": "Bronze sq shield (g)", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14671" + }, + { + "shop_price": "160", + "ge_buy_limit": "500", + "examine": "Provides excellent protection.", + "durability": null, + "low_alchemy": "64", + "high_alchemy": "96", + "weight": "9.5", + "equipment_slot": "4", + "remove_sleeves": "true", + "grand_exchange_price": "36", + "name": "Iron platebody (g)", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14672", + "bonuses": "0,0,0,-30,-10,15,14,9,-6,14,5,0,0,0,0" + }, + { + "ge_buy_limit": "500", + "grand_exchange_price": "36", + "durability": null, + "name": "Iron platebody (g)", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14673" + }, + { + "shop_price": "80", + "ge_buy_limit": "100", + "examine": "These look pretty heavy.", + "durability": null, + "low_alchemy": "32", + "high_alchemy": "48", + "weight": "9", + "equipment_slot": "7", + "grand_exchange_price": "34", + "name": "Iron platelegs (g)", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14674", + "bonuses": "0,0,0,-21,-7,8,7,6,-4,7,0,0,0,0,0" + }, + { + "ge_buy_limit": "100", + "grand_exchange_price": "34", + "durability": null, + "name": "Iron platelegs (g)", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14675" + }, + { + "shop_price": "80", + "ge_buy_limit": "100", + "examine": "Designer leg protection.", + "durability": null, + "low_alchemy": "32", + "high_alchemy": "48", + "weight": "8.1", + "equipment_slot": "7", + "grand_exchange_price": "113", + "name": "Iron plateskirt (g)", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14676", + "bonuses": "0,0,0,-21,-7,8,7,6,-4,7,0,0,0,0,0" + }, + { + "ge_buy_limit": "100", + "grand_exchange_price": "113", + "durability": null, + "name": "Iron plateskirt (g)", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14677" + }, + { + "remove_head": "true", + "shop_price": "44", + "ge_buy_limit": "100", + "examine": "A full face helmet.", + "durability": null, + "low_alchemy": "17", + "high_alchemy": "26", + "weight": "2.7", + "remove_beard": "true", + "equipment_slot": "0", + "grand_exchange_price": "67", + "name": "Iron full helm (g)", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14678", + "bonuses": "0,0,0,-6,-2,4,5,3,-1,4,0,0,0,0,0" + }, + { + "ge_buy_limit": "100", + "grand_exchange_price": "67", + "durability": null, + "name": "Iron full helm (g)", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14679" + }, + { + "shop_price": "86", + "ge_buy_limit": "100", + "examine": "A large metal shield.", + "durability": null, + "low_alchemy": "27", + "high_alchemy": "40", + "weight": "5.4", + "equipment_slot": "5", + "grand_exchange_price": "18", + "name": "Iron kiteshield (g)", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14680", + "bonuses": "0,0,0,-8,-2,5,7,6,-1,6,1,0,0,0,0" + }, + { + "ge_buy_limit": "100", + "grand_exchange_price": "18", + "durability": null, + "name": "Iron kiteshield (g)", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14681" + }, + { + "remove_head": "true", + "shop_price": "24", + "ge_buy_limit": "100", + "examine": "A medium sized helmet.", + "durability": null, + "low_alchemy": "9", + "high_alchemy": "14", + "weight": "1.8", + "equipment_slot": "0", + "grand_exchange_price": "39", + "name": "Iron med helm (g)", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14682", + "bonuses": "0,0,0,-3,-1,3,4,2,-1,3,0,0,0,0,0" + }, + { + "ge_buy_limit": "100", + "grand_exchange_price": "39", + "durability": null, + "name": "Iron med helm (g)", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14683" + }, + { + "shop_price": "48", + "ge_buy_limit": "100", + "examine": "A medium square shield.", + "durability": null, + "low_alchemy": "19", + "high_alchemy": "28", + "weight": "3", + "equipment_slot": "5", + "grand_exchange_price": "12", + "name": "Iron sq shield (g)", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14684", + "bonuses": "0,0,0,-6,-2,5,6,4,0,5,0,0,0,0,0" + }, + { + "ge_buy_limit": "100", + "grand_exchange_price": "12", + "durability": null, + "name": "Iron sq shield (g)", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14685" + }, + { + "shop_price": "160", + "ge_buy_limit": "500", + "examine": "Provides excellent protection.", + "durability": null, + "low_alchemy": "64", + "high_alchemy": "96", + "weight": "9.5", + "equipment_slot": "4", + "remove_sleeves": "true", + "grand_exchange_price": "36", + "name": "Mithril platebody (g)", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14700", + "bonuses": "0,0,0,-30,-10,46,44,38,-6,44,20,0,0,0,0" + }, + { + "ge_buy_limit": "500", + "grand_exchange_price": "36", + "durability": null, + "name": "Mithril platebody (g)", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14701" + }, + { + "shop_price": "80", + "ge_buy_limit": "100", + "examine": "These look pretty heavy.", + "durability": null, + "low_alchemy": "32", + "high_alchemy": "48", + "weight": "9", + "equipment_slot": "7", + "grand_exchange_price": "34", + "name": "Mithril platelegs (g)", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14702", + "bonuses": "0,0,0,-21,-7,24,22,20,-4,22,5,0,0,0,0" + }, + { + "ge_buy_limit": "100", + "grand_exchange_price": "34", + "durability": null, + "name": "Mithril platelegs (g)", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14703" + }, + { + "shop_price": "80", + "ge_buy_limit": "100", + "examine": "Designer leg protection.", + "durability": null, + "low_alchemy": "32", + "high_alchemy": "48", + "weight": "8.1", + "equipment_slot": "7", + "grand_exchange_price": "113", + "name": "Mithril plateskirt (g)", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14704", + "bonuses": "0,0,0,-21,-7,24,22,20,-4,22,5,0,0,0,0" + }, + { + "ge_buy_limit": "100", + "grand_exchange_price": "113", + "durability": null, + "name": "Mithril plateskirt (g)", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14705" + }, + { + "remove_head": "true", + "shop_price": "44", + "ge_buy_limit": "100", + "examine": "A full face helmet.", + "durability": null, + "low_alchemy": "17", + "high_alchemy": "26", + "weight": "2.7", + "remove_beard": "true", + "equipment_slot": "0", + "grand_exchange_price": "67", + "name": "Mithril full helm (g)", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14706", + "bonuses": "0,0,0,-6,-2,13,14,11,-1,13,5,0,0,0,0" + }, + { + "ge_buy_limit": "100", + "grand_exchange_price": "67", + "durability": null, + "name": "Mithril full helm (g)", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14707" + }, + { + "shop_price": "86", + "ge_buy_limit": "100", + "examine": "A large metal shield.", + "durability": null, + "low_alchemy": "27", + "high_alchemy": "40", + "weight": "5.4", + "equipment_slot": "5", + "grand_exchange_price": "18", + "name": "Mithril kiteshield (g)", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14708", + "bonuses": "0,0,0,-8,-2,18,22,20,-1,20,20,0,0,0,0" + }, + { + "ge_buy_limit": "100", + "grand_exchange_price": "18", + "durability": null, + "name": "Mithril kiteshield (g)", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14709" + }, + { + "remove_head": "true", + "shop_price": "24", + "ge_buy_limit": "100", + "examine": "A medium sized helmet.", + "durability": null, + "low_alchemy": "9", + "high_alchemy": "14", + "weight": "1.8", + "equipment_slot": "0", + "grand_exchange_price": "39", + "name": "Mithril med helm (g)", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14710", + "bonuses": "0,0,0,-3,-1,10,11,9,-1,10,5,0,0,0,0" + }, + { + "ge_buy_limit": "100", + "grand_exchange_price": "39", + "durability": null, + "name": "Mithril med helm (g)", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14711" + }, + { + "shop_price": "48", + "ge_buy_limit": "100", + "examine": "A medium square shield.", + "durability": null, + "low_alchemy": "19", + "high_alchemy": "28", + "weight": "3", + "equipment_slot": "5", + "grand_exchange_price": "12", + "name": "Mithril sq shield (g)", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14712", + "bonuses": "0,0,0,-6,-2,17,19,15,0,17,18,0,0,0,0" + }, + { + "ge_buy_limit": "100", + "grand_exchange_price": "12", + "durability": null, + "name": "Mithril sq shield (g)", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14713" + }, + { + "shop_price": "160", + "ge_buy_limit": "500", + "examine": "Provides excellent protection.", + "durability": null, + "low_alchemy": "64", + "high_alchemy": "96", + "weight": "9.5", + "equipment_slot": "4", + "remove_sleeves": "true", + "grand_exchange_price": "36", + "name": "Steel platebody (g)", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14686", + "bonuses": "0,0,0,-30,-10,32,31,24,-6,31,5,0,0,0,0" + }, + { + "ge_buy_limit": "500", + "grand_exchange_price": "36", + "durability": null, + "name": "Steel platebody (g)", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14687" + }, + { + "shop_price": "80", + "ge_buy_limit": "100", + "examine": "These look pretty heavy.", + "durability": null, + "low_alchemy": "32", + "high_alchemy": "48", + "weight": "9", + "equipment_slot": "7", + "grand_exchange_price": "34", + "name": "Steel platelegs (g)", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14688", + "bonuses": "0,0,0,-21,-7,17,16,15,-4,16,2,0,0,0,0" + }, + { + "ge_buy_limit": "100", + "grand_exchange_price": "34", + "durability": null, + "name": "Steel platelegs (g)", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14689" + }, + { + "shop_price": "80", + "ge_buy_limit": "100", + "examine": "Designer leg protection.", + "durability": null, + "low_alchemy": "32", + "high_alchemy": "48", + "weight": "8.1", + "equipment_slot": "7", + "grand_exchange_price": "113", + "name": "Steel plateskirt (g)", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14690", + "bonuses": "0,0,0,-21,-7,17,16,15,-4,16,2,0,0,0,0" + }, + { + "ge_buy_limit": "100", + "grand_exchange_price": "113", + "durability": null, + "name": "Steel plateskirt (g)", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14691" + }, + { + "remove_head": "true", + "shop_price": "44", + "ge_buy_limit": "100", + "examine": "A full face helmet.", + "durability": null, + "low_alchemy": "17", + "high_alchemy": "26", + "weight": "2.7", + "remove_beard": "true", + "equipment_slot": "0", + "grand_exchange_price": "67", + "name": "Steel full helm (g)", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14692", + "bonuses": "0,0,0,-6,-2,9,10,7,-1,9,3,0,0,0,0" + }, + { + "ge_buy_limit": "100", + "grand_exchange_price": "67", + "durability": null, + "name": "Steel full helm (g)", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14693" + }, + { + "shop_price": "86", + "ge_buy_limit": "100", + "examine": "A large metal shield.", + "durability": null, + "low_alchemy": "27", + "high_alchemy": "40", + "weight": "5.4", + "equipment_slot": "5", + "grand_exchange_price": "18", + "name": "Steel kiteshield (g)", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14694", + "bonuses": "0,0,0,-8,-2,13,15,14,-1,14,5,0,0,0,0" + }, + { + "ge_buy_limit": "100", + "grand_exchange_price": "18", + "durability": null, + "name": "Steel kiteshield (g)", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14695" + }, + { + "remove_head": "true", + "shop_price": "24", + "ge_buy_limit": "100", + "examine": "A medium sized helmet.", + "durability": null, + "low_alchemy": "9", + "high_alchemy": "14", + "weight": "1.8", + "equipment_slot": "0", + "grand_exchange_price": "39", + "name": "Steel med helm (g)", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14696", + "bonuses": "0,0,0,-3,-1,7,8,6,-1,7,3,0,0,0,0" + }, + { + "ge_buy_limit": "100", + "grand_exchange_price": "39", + "durability": null, + "name": "Steel med helm (g)", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14697" + }, + { + "shop_price": "48", + "ge_buy_limit": "100", + "examine": "A medium square shield.", + "durability": null, + "low_alchemy": "19", + "high_alchemy": "28", + "weight": "3", + "equipment_slot": "5", + "grand_exchange_price": "12", + "name": "Steel sq shield (g)", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14698", + "bonuses": "0,0,0,-6,-2,12,13,11,0,12,4,0,0,0,0" + }, + { + "ge_buy_limit": "100", + "grand_exchange_price": "12", + "durability": null, + "name": "Steel sq shield (g)", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14699" + }, + { + "shop_price": "5", + "ge_buy_limit": "500", + "examine": "The platebody of a forgotten warrior, corrupted by the dark altar.", + "durability": null, + "low_alchemy": "224", + "high_alchemy": "336", + "weight": "9.95", + "equipment_slot": "4", + "remove_sleeves": "true", + "grand_exchange_price": "434", + "name": "Corrupted platebody", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14714", + "bonuses": "0,0,0,-30,-10,21,20,12,-6,20,5,0,0,0,0" + }, + { + "shop_price": "280", + "ge_buy_limit": "100", + "examine": "The platelegs of a forgotten warrior, corrupted by the dark altar.", + "durability": null, + "low_alchemy": "112", + "high_alchemy": "168", + "weight": "9", + "absorb": "1,0,1", + "equipment_slot": "7", + "grand_exchange_price": "55", + "name": "Corrupted platelegs", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14715", + "bonuses": "0,0,0,-21,-7,11,10,10,-4,10,0,0,0,0,0" + }, + { + "shop_price": "280", + "ge_buy_limit": "100", + "examine": "The plateskirt of a forgotten warrior, corrupted by the dark altar.", + "durability": null, + "low_alchemy": "112", + "high_alchemy": "168", + "weight": "8.1", + "equipment_slot": "7", + "grand_exchange_price": "86", + "name": "Corrupted plateskirt", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14716", + "bonuses": "0,0,0,-21,-7,11,10,10,-4,10,0,0,0,0,0" + }, + { + "remove_head": "true", + "shop_price": "61", + "ge_buy_limit": "100", + "examine": "The helmet of a forgotton warrior, corrupted by the dark altar.", + "durability": null, + "low_alchemy": "61", + "high_alchemy": "92", + "weight": "2.7", + "remove_beard": "true", + "equipment_slot": "0", + "grand_exchange_price": "56", + "name": "Corrupted full helm", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14717", + "bonuses": "0,0,0,-6,-2,6,7,5,-1,6,0,0,0,0,0" + }, + { + "shop_price": "233", + "ge_buy_limit": "100", + "examine": "The kiteshield of a forgotton warrior, corrupted by the dark altar.", + "durability": null, + "low_alchemy": "95", + "high_alchemy": "142", + "weight": "5.4", + "equipment_slot": "5", + "grand_exchange_price": "57", + "name": "Corrupted kiteshield", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14718", + "bonuses": "0,0,0,-8,-2,8,10,9,-1,9,2,0,0,0,0" + }, + { + "examine": "They seem to be not quite of this world...", + "durability": null, + "name": "Corrupted boots", + "low_alchemy": "120", + "high_alchemy": "180", + "archery_ticket_price": "0", + "id": "14719", + "bonuses": "0,0,0,2,0,0,0,0,2,0,0,0,0,0,0", + "equipment_slot": "10" + }, + { + "remove_head": "true", + "examine": "A ghostly hood, fit for a ghostly head.", + "durability": null, + "name": "Corrupted hood", + "low_alchemy": "120", + "high_alchemy": "180", + "archery_ticket_price": "0", + "id": "14720", + "bonuses": "0,0,0,3,0,0,0,0,3,0,0,0,0,0,0", + "equipment_slot": "0" + }, + { + "examine": "They seem to fade in and out of existence...", + "durability": null, + "name": "Corrupted gloves", + "low_alchemy": "120", + "high_alchemy": "180", + "archery_ticket_price": "0", + "id": "14721", + "bonuses": "0,0,0,2,0,0,0,0,2,0,0,0,0,0,0", + "equipment_slot": "9" + }, + { + "examine": "Made of a strange, ghostly material...", + "durability": null, + "name": "Corrupted cloak", + "low_alchemy": "100", + "high_alchemy": "150", + "archery_ticket_price": "0", + "id": "14722", + "bonuses": "0,0,0,5,0,0,0,0,5,0,0,0,0,0,0", + "equipment_slot": "1" + }, + { + "requirements": "{0,60}-{14,61}", + "shop_price": "1320000", + "ge_buy_limit": "40", + "examine": "If rocks could feel fear, they'd fear this.", + "durability": null, + "has_special": "true", + "rare_item": "true", + "low_alchemy": "55000", + "high_alchemy": "75000", + "weight": "2.4", + "attack_speed": "5", + "weapon_interface": "4", + "defence_anim": "403", + "equipment_slot": "3", + "attack_anims": "401,401,400,401", + "lendable": "true", + "grand_exchange_price": "19500", + "attack_audios": "2508,2508,2508,2508", + "name": "Dragon pickaxe", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14723", + "bonuses": "38,-2,32,0,0,0,1,0,0,0,0,42,0,0,0" + }, + { + "ge_buy_limit": "100", + "grand_exchange_price": "19500", + "durability": null, + "name": "Dragon pickaxe", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14724" + }, + { + "requirements": "{0,60}-{1,60}", + "examine": "A defensive weapon.", + "durability": null, + "name": "Dragon defender", + "weight": "0.4", + "archery_ticket_price": "0", + "id": "14725", + "bonuses": "25,24,23,-3,-2,25,24,23,-3,-2,8,6,0,0,0", + "defence_anim": "4177", + "equipment_slot": "5" + }, + { + "ge_buy_limit": "8", + "turn90cw_anim": "821", + "examine": "A magical elven sword.", + "walk_anim": "1146", + "has_special": "false", + "low_alchemy": "40000", + "turn90ccw_anim": "822", + "attack_speed": "4", + "turn180_anim": "820", + "defence_anim": "397", + "equipment_slot": "3", + "attack_anims": "390,390,381,390", + "grand_exchange_price": "155280944", + "stand_anim": "809", + "tradeable": "true", + "run_anim": "1210", + "archery_ticket_price": "0", + "id": "14726", + "stand_turn_anim": "823", + "bonuses": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", + "requirements": "{0,75}", + "shop_price": "100000", + "durability": null, + "high_alchemy": "60000", + "weight": "1.8", + "weapon_interface": "6", + "render_anim": "28", + "lendable": "false", + "attack_audios": "2500,2500,2517,2500", + "name": "Blade of saeldor (inactive)" + }, + { + "ge_buy_limit": "10", + "grand_exchange_price": "60200", + "durability": null, + "name": "Blade of saeldor (inactive)", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14727" + }, + { + "turn90cw_anim": "821", + "examine": "A magical elven sword.", + "walk_anim": "1146", + "has_special": "true", + "low_alchemy": "40000", + "turn90ccw_anim": "822", + "attack_speed": "4", + "turn180_anim": "820", + "defence_anim": "397", + "equipment_slot": "3", + "attack_anims": "390,390,381,390", + "stand_anim": "809", + "tradeable": "false", + "run_anim": "1210", + "archery_ticket_price": "0", + "id": "14728", + "stand_turn_anim": "823", + "bonuses": "55,94,0,0,0,0,0,0,0,0,0,89,0,0,0", + "requirements": "{0,75}", + "shop_price": "100000", + "durability": null, + "high_alchemy": "60000", + "weight": "1.8", + "weapon_interface": "6", + "render_anim": "28", + "lendable": "false", + "attack_audios": "2500,2500,2517,2500", + "name": "Blade of saeldor" + }, + { + "shop_price": "50000", + "examine": "An ancient ring said to bring you closer to the Gods.", + "durability": null, + "low_alchemy": "20000", + "high_alchemy": "30000", + "destroy": "false", + "absorb": "0,0,0", + "equipment_slot": "12", + "destroy_message": "", + "name": "Ring of the gods", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14729", + "bonuses": "0,0,0,0,0,1,1,1,1,1,1,0,4,0,0" + }, + { + "durability": null, + "name": "Ring of the gods", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14730" + }, + { + "shop_price": "50000", + "examine": "A razor sharp ring.", + "durability": null, + "rare_item": "true", + "low_alchemy": "20000", + "high_alchemy": "30000", + "destroy": "false", + "absorb": "0,0,0", + "equipment_slot": "12", + "destroy_message": "", + "name": "Treasonous ring", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14731", + "bonuses": "4,0,0,0,0,4,0,0,0,0,0,0,0,0,0" + }, + { + "durability": null, + "name": "Treasonous ring", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14732" + }, + { + "shop_price": "50000", + "examine": "An incredibly heavy ring.", + "durability": null, + "low_alchemy": "20000", + "high_alchemy": "30000", + "destroy": "false", + "absorb": "0,0,0", + "equipment_slot": "12", + "destroy_message": "", + "name": "Tyrannical ring", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14733", + "bonuses": "0,0,4,0,0,0,0,4,0,0,0,0,0,0,0" + }, + { + "durability": null, + "name": "Tyrannical ring", + "tradeable": "true", + "archery_ticket_price": "0", + "id": "14734" + }, + { + "remove_head": "true", + "shop_price": "61", + "ge_buy_limit": "100", + "examine": "A gift from Neitiznot's Burgher enhanced with the jaw of a Basilisk.", + "durability": null, + "low_alchemy": "61", + "high_alchemy": "92", + "weight": "2.7", + "remove_beard": "true", + "equipment_slot": "0", + "grand_exchange_price": "56", + "name": "Neitiznot faceguard", + "tradeable": "false", + "archery_ticket_price": "0", + "id": "14735", + "bonuses": "0,0,0,0,0,36,34,38,3,34,0,6,3,0,0" } ] \ No newline at end of file diff --git a/Server/data/configs/npc_configs.json b/Server/data/configs/npc_configs.json index a7682ca76..d52a3bab9 100644 --- a/Server/data/configs/npc_configs.json +++ b/Server/data/configs/npc_configs.json @@ -1762,7 +1762,7 @@ "name": "Wolf", "defence_level": "52", "safespot": null, - "lifepoints": "15", + "lifepoints": "69", "strength_level": "55", "id": "95", "range_level": "1", @@ -13171,6 +13171,7 @@ "lifepoints": "51", "strength_level": "1", "id": "1265", + "bonuses": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", "clue_level": "0", "range_level": "1", "attack_level": "1" @@ -13209,6 +13210,7 @@ "strength_level": "1", "id": "1267", "aggressive": "true", + "bonuses": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0", "clue_level": "0", "range_level": "1", "attack_level": "1" @@ -37018,7 +37020,7 @@ "attack_level": "1" }, { - "examine": "Not man's best friend.", + "examine": "They say inside you there are two wolves...", "melee_animation": "6559", "range_animation": "6559", "combat_audio": "481,491,490", @@ -37031,7 +37033,7 @@ "name": "Wolf", "defence_level": "9", "safespot": null, - "lifepoints": "15", + "lifepoints": "69", "strength_level": "1", "id": "4413", "bonuses": "7,7,7,7,7,7,7,7,7,7,7,7,7,7,7", @@ -37039,7 +37041,7 @@ "attack_level": "1" }, { - "examine": "Not man's best friend.", + "examine": "They say inside you there are two wolves...", "melee_animation": "6559", "range_animation": "6559", "combat_audio": "481,491,490", @@ -233414,5 +233416,28 @@ "examine": "Moley, moley, moley!", "name": "Baby Mole", "id": "3343" + }, + { + "examine": "That'll get your arachnophobia going...", + "melee_animation": "5319", + "attack_speed": "5", + "poisonous": "true", + "magic_level": "150", + "respawn_delay": "50", + "defence_animation": "5320", + "slayer_exp": "388", + "poison_amount": "8", + "magic_animation": "5319", + "death_animation": "5321", + "name": "Venenatis", + "defence_level": "490", + "poison_immune": "true", + "lifepoints": "255", + "strength_level": "490", + "id": "8591", + "aggressive": "true", + "bonuses": "0,0,0,0,0,260,260,260,850,100,50,0,0,0,0", + "range_level": "1", + "attack_level": "470" } ] \ No newline at end of file diff --git a/Server/data/configs/npc_spawns.json b/Server/data/configs/npc_spawns.json index 9c0315f89..2b80df23c 100644 --- a/Server/data/configs/npc_spawns.json +++ b/Server/data/configs/npc_spawns.json @@ -10967,6 +10967,10 @@ "npc_id": "800", "loc_data": "{2884,9765,0,1,0}-{2890,9766,0,1,0}-{2894,9764,0,1,0}" }, + { + "npc_id": "8591", + "loc_data": "{3178,3893,0,1,0}" + }, { "npc_id": "3322", "loc_data": "{2384,4439,0,1,0}" diff --git a/Server/data/configs/shops.json b/Server/data/configs/shops.json index f8bef5fb2..4fcf8b0f7 100644 --- a/Server/data/configs/shops.json +++ b/Server/data/configs/shops.json @@ -2151,11 +2151,20 @@ "stock": "{2028,10}-{2030,10}-{2032,10}-{2034,10}-{2036,10}-{2038,10}-{2040,10}" }, { - "npcs": "2565", + "npcs": "4568", "high_alch": "0", "currency": "995", "general_store": "false", "id": "244", + "title": "Forgotten Relix", + "stock": "{7409,5}-{4081,5}-{10588,5}-{1409,5}-{11061,5}-{10887,5}-{9625,5}-{6714,5}-{10886,5}-{11200,5}-{4502,5}-{5763,20}" + }, + { + "npcs": "2565", + "high_alch": "0", + "currency": "995", + "general_store": "false", + "id": "245", "title": "The Armour Store", "stock": "{1147,0}-{1163,0}-{1127,0}-{1093,0}-{1185,0}-{1201,0}-{1113,0}-{1079,0}-{1145,0}-{1161,0}-{1123,0}-{1091,0}-{1183,0}-{1199,0}-{1111,0}-{1073,0}-{1143,0}-{1159,0}-{1121,0}-{1085,0}-{1181,0}-{1197,0}-{1109,0}-{1071,0}" }, @@ -2164,7 +2173,7 @@ "high_alch": "0", "currency": "995", "general_store": "false", - "id": "245", + "id": "246", "title": "Gift Shop", "stock": "{590,10}-{2866,100}-{2878,10}-{314,1000}-{1351,10}-{954,10}-{1931,30}-{1925,30}-{2347,10}-{946,10}-{12561,10}-{12563,10}-{12565,0}-{12567,0}-{12568,0}-{12559,0}-{12570,0}" }, @@ -2173,7 +2182,7 @@ "high_alch": "0", "currency": "995", "general_store": "false", - "id": "246", + "id": "247", "title": "Miscellanian Food Shop", "stock": "{2309,5}-{1985,5}-{1965,5}-{1942,5}-{1957,5}-{1933,5}-{1973,5}-{1927,5}" }, @@ -2182,7 +2191,7 @@ "high_alch": "0", "currency": "995", "general_store": "false", - "id": "247", + "id": "248", "title": "The Esoterican Arms", "stock": "{1917,10}-{5763,10}-{1993,5}-{1798,5}" }, @@ -2191,7 +2200,7 @@ "high_alch": "0", "currency": "995", "general_store": "false", - "id": "248", + "id": "249", "title": "Miscellanian Clothes Shop", "stock": "{3767,5}-{3769,5}-{3771,5}-{3773,5}-{3775,5}-{3795,5}-{5050,3}-{5052,3}-{5038,3}-{5040,3}-{5044,3}-{5046,3}-{5026,3}-{5028,3}-{5032,3}-{5034,3}" }, @@ -2200,7 +2209,7 @@ "high_alch": "0", "currency": "995", "general_store": "false", - "id": "249", + "id": "250", "title": "Island Fishmonger", "stock": "{303,5}-{307,5}-{309,5}-{311,2}-{301,2}-{313,1500}-{314,1000}-{305,5}-{317,0}-{325,200}-{345,0}-{353,0}-{341,0}-{321,0}-{335,0}-{349,0}-{331,0}-{359,0}-{377,0}-{363,0}-{371,0}-{383,0}" }, @@ -2209,7 +2218,7 @@ "high_alch": "0", "currency": "995", "general_store": "false", - "id": "250", + "id": "251", "title": "Greengrocer of Miscellania", "stock": "{1965,10}-{1942,10}-{1957,10}-{1982,10}-{1550,2}" }, @@ -2218,7 +2227,7 @@ "high_alch": "0", "currency": "995", "general_store": "false", - "id": "251", + "id": "252", "title": "Legends Guild General Store", "stock": "{373,20}-{2323,5}-{121,3}-{886,500}" }, @@ -2227,7 +2236,7 @@ "high_alch": "0", "currency": "995", "general_store": "false", - "id": "252", + "id": "253", "title": "Two Feet Charley's Fish Shop", "stock": "{317,10}-{327,10}-{345,10}-{353,10}-{341,10}-{321,10}-{359,0}-{377,0}-{363,0}-{377,0}" }, @@ -2236,7 +2245,7 @@ "high_alch": "0", "currency": "995", "general_store": "false", - "id": "253", + "id": "254", "title": "Fremennik Fur Trader", "stock": "{948,10}-{958,10}-{10117,0}-{10121,0}-{10119,0}-{10123,0}-{10093,0}-{10095,0}-{10097,0}-{10099,0}-{10101,0}-{10103,0}" } diff --git a/Server/data/eco/grandexchange.db b/Server/data/eco/grandexchange.db new file mode 100644 index 000000000..f3254e0c8 Binary files /dev/null and b/Server/data/eco/grandexchange.db differ diff --git a/Server/data/eco/offer_dispatch.json b/Server/data/eco/offer_dispatch.json new file mode 100644 index 000000000..cf2789833 --- /dev/null +++ b/Server/data/eco/offer_dispatch.json @@ -0,0 +1,239 @@ +{ + "offers": [ + { + "completedAmount": "0", + "timeStamp": "1646694252244", + "uid": "1", + "itemId": "379", + "sale": false, + "amount": "100", + "withdrawItems": [], + "offeredValue": "334", + "playerUID": "524363194", + "offerState": "1", + "totalCoinExchange": "0" + }, + { + "completedAmount": "0", + "timeStamp": "1646694257643", + "uid": "2", + "itemId": "379", + "sale": false, + "amount": "100", + "withdrawItems": [], + "offeredValue": "334", + "playerUID": "524363194", + "offerState": "1", + "totalCoinExchange": "0" + }, + { + "completedAmount": "0", + "timeStamp": "1646694264843", + "uid": "3", + "itemId": "385", + "sale": false, + "amount": "100", + "withdrawItems": [], + "offeredValue": "1682", + "playerUID": "524363194", + "offerState": "1", + "totalCoinExchange": "0" + }, + { + "completedAmount": "0", + "timeStamp": "1646694269041", + "uid": "4", + "itemId": "379", + "sale": false, + "amount": "100", + "withdrawItems": [], + "offeredValue": "334", + "playerUID": "524363194", + "offerState": "1", + "totalCoinExchange": "0" + }, + { + "completedAmount": "0", + "timeStamp": "1646694274445", + "uid": "5", + "itemId": "379", + "sale": false, + "amount": "100", + "withdrawItems": [], + "offeredValue": "334", + "playerUID": "524363194", + "offerState": "1", + "totalCoinExchange": "0" + }, + { + "completedAmount": "0", + "timeStamp": "1646694291847", + "uid": "6", + "itemId": "379", + "sale": false, + "amount": "100", + "withdrawItems": [], + "offeredValue": "334", + "playerUID": "524363194", + "offerState": "1", + "totalCoinExchange": "0" + }, + { + "completedAmount": "0", + "timeStamp": "1646695358127", + "uid": "7", + "itemId": "379", + "sale": false, + "amount": "100", + "withdrawItems": [], + "offeredValue": "334", + "playerUID": "524363194", + "offerState": "1", + "totalCoinExchange": "0" + }, + { + "completedAmount": "0", + "timeStamp": "1646695376133", + "uid": "8", + "itemId": "373", + "sale": false, + "amount": "100", + "withdrawItems": [], + "offeredValue": "501", + "playerUID": "524363194", + "offerState": "1", + "totalCoinExchange": "0" + }, + { + "completedAmount": "0", + "timeStamp": "1646695379130", + "uid": "9", + "itemId": "379", + "sale": false, + "amount": "100", + "withdrawItems": [], + "offeredValue": "334", + "playerUID": "524363194", + "offerState": "1", + "totalCoinExchange": "0" + }, + { + "completedAmount": "0", + "timeStamp": "1646695380930", + "uid": "10", + "itemId": "379", + "sale": false, + "amount": "100", + "withdrawItems": [], + "offeredValue": "334", + "playerUID": "524363194", + "offerState": "1", + "totalCoinExchange": "0" + }, + { + "completedAmount": "0", + "timeStamp": "1646695382733", + "uid": "11", + "itemId": "385", + "sale": false, + "amount": "100", + "withdrawItems": [], + "offeredValue": "1682", + "playerUID": "524363194", + "offerState": "1", + "totalCoinExchange": "0" + }, + { + "completedAmount": "0", + "timeStamp": "1646695394136", + "uid": "12", + "itemId": "373", + "sale": false, + "amount": "100", + "withdrawItems": [], + "offeredValue": "501", + "playerUID": "524363194", + "offerState": "1", + "totalCoinExchange": "0" + }, + { + "completedAmount": "0", + "timeStamp": "1646890783469", + "uid": "13", + "itemId": "379", + "sale": false, + "amount": "100", + "withdrawItems": [], + "offeredValue": "334", + "playerUID": "524363194", + "offerState": "1", + "totalCoinExchange": "0" + }, + { + "completedAmount": "0", + "timeStamp": "1646890790017", + "uid": "14", + "itemId": "379", + "sale": false, + "amount": "100", + "withdrawItems": [], + "offeredValue": "334", + "playerUID": "524363194", + "offerState": "1", + "totalCoinExchange": "0" + }, + { + "completedAmount": "0", + "timeStamp": "1646890797218", + "uid": "15", + "itemId": "373", + "sale": false, + "amount": "100", + "withdrawItems": [], + "offeredValue": "501", + "playerUID": "524363194", + "offerState": "1", + "totalCoinExchange": "0" + }, + { + "completedAmount": "0", + "timeStamp": "1646890808026", + "uid": "16", + "itemId": "373", + "sale": false, + "amount": "100", + "withdrawItems": [], + "offeredValue": "501", + "playerUID": "524363194", + "offerState": "1", + "totalCoinExchange": "0" + }, + { + "completedAmount": "0", + "timeStamp": "1646890815224", + "uid": "17", + "itemId": "385", + "sale": false, + "amount": "100", + "withdrawItems": [], + "offeredValue": "1682", + "playerUID": "524363194", + "offerState": "1", + "totalCoinExchange": "0" + }, + { + "completedAmount": "0", + "timeStamp": "1646890824831", + "uid": "18", + "itemId": "385", + "sale": false, + "amount": "100", + "withdrawItems": [], + "offeredValue": "1682", + "playerUID": "524363194", + "offerState": "1", + "totalCoinExchange": "0" + } + ], + "offsetUID": "19" +} \ No newline at end of file diff --git a/Server/data/global_kill_stats.json b/Server/data/global_kill_stats.json new file mode 100644 index 000000000..9afc43307 --- /dev/null +++ b/Server/data/global_kill_stats.json @@ -0,0 +1 @@ +{"kills":{"Arrowmind9":{"397":1},"April7":{"1767":1},"Superjoden7":{"81":1},"Jellyfishes9":{"397":1}},"rare_drops":{}} \ No newline at end of file diff --git a/Server/data/kratoscache/cache/main_file_cache.idx27 b/Server/data/kratoscache/cache/main_file_cache.idx27 new file mode 100644 index 000000000..ce542efaa --- /dev/null +++ b/Server/data/kratoscache/cache/main_file_cache.idx27 @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Server/data/serverstore/daily-deaths-global.json b/Server/data/serverstore/daily-deaths-global.json new file mode 100644 index 000000000..1560b481a --- /dev/null +++ b/Server/data/serverstore/daily-deaths-global.json @@ -0,0 +1,3 @@ +{ + "lumbridge-cows": 4 +} \ No newline at end of file diff --git a/Server/data/serverstore/shooting-star.json b/Server/data/serverstore/shooting-star.json new file mode 100644 index 000000000..af73bd5a4 --- /dev/null +++ b/Server/data/serverstore/shooting-star.json @@ -0,0 +1,5 @@ +{ + "level": 3, + "isDiscovered": false, + "location": "South-west Varrock mine" +} \ No newline at end of file diff --git a/Server/data/serverstore/weekly-penguinhns.json b/Server/data/serverstore/weekly-penguinhns.json new file mode 100644 index 000000000..0479321ea --- /dev/null +++ b/Server/data/serverstore/weekly-penguinhns.json @@ -0,0 +1,14 @@ +{ + "spawned-penguins": [ + 17, + 8, + 1, + 14, + 2, + 7, + 20, + 23, + 16, + 12 + ] +} \ No newline at end of file diff --git a/Server/scripts/dialogue/anna_isaakson.asc b/Server/scripts/dialogue/anna_isaakson.asc new file mode 100644 index 000000000..392b58148 --- /dev/null +++ b/Server/scripts/dialogue/anna_isaakson.asc @@ -0,0 +1,5 @@ +@dialogue npc:5512 + npc("Hello visitor, how are you?") + player("Better than expected. Its a lot...nicer...here than I was", "expecting. Everyone seems pretty happy.") + npc("Of course, the Burgher is strong and wise, and looks", "after us well") + player("I think some of those Jatizso citizens have got", "the wrong idea about this place.") \ No newline at end of file diff --git a/Server/scripts/dialogue/ardougne_baker.asc b/Server/scripts/dialogue/ardougne_baker.asc new file mode 100644 index 000000000..8ac900b31 --- /dev/null +++ b/Server/scripts/dialogue/ardougne_baker.asc @@ -0,0 +1,10 @@ +@dialogue npc:571 + +npc("Good day, monsieur. Would you like ze nice", "freshly-baked bread? Or perhaps a nice piece of cake?") +option("Let's see what you have.", "No, thank you.") +@option1 { + openshop(571) +} +@option2 { + player("No, thank you.") +} \ No newline at end of file diff --git a/Server/scripts/dialogue/bandit.asc b/Server/scripts/dialogue/bandit.asc new file mode 100644 index 000000000..bcf67804b --- /dev/null +++ b/Server/scripts/dialogue/bandit.asc @@ -0,0 +1,2 @@ +@dialogue npc:1926, 1925, 1927, 1928, 1929, 1930, 1931 +npc("Get out of this village.", "You are not welcome here."); \ No newline at end of file diff --git a/Server/scripts/dialogue/bandit_shopkeeper.asc b/Server/scripts/dialogue/bandit_shopkeeper.asc new file mode 100644 index 000000000..14a3f7795 --- /dev/null +++ b/Server/scripts/dialogue/bandit_shopkeeper.asc @@ -0,0 +1,15 @@ +@dialogue npc:1917 +player("Hello.") +npc("Stuff for sale.", "You buying?") +>options + +options: { + option("Yes", "No") + @option1{ + openshop(1917) + } + @option2{ + npc("No?", "'Bye then.") + } + +} \ No newline at end of file diff --git a/Server/scripts/dialogue/centaur.asc b/Server/scripts/dialogue/centaur.asc new file mode 100644 index 000000000..08374f6e5 --- /dev/null +++ b/Server/scripts/dialogue/centaur.asc @@ -0,0 +1,2 @@ +@dialogue npc:4439,4438 +npc("Welcome to the land of extreme donators."); \ No newline at end of file diff --git a/Server/scripts/dialogue/fridleif_shieldson.asc b/Server/scripts/dialogue/fridleif_shieldson.asc new file mode 100644 index 000000000..561f3f4ae --- /dev/null +++ b/Server/scripts/dialogue/fridleif_shieldson.asc @@ -0,0 +1,4 @@ +@dialogue npc:5505 + + + npc("Congratulations, Champion Larlim Far-strider. Thank you", "for defeating the Troll King.") \ No newline at end of file diff --git a/Server/scripts/dialogue/ghost_guard.asc b/Server/scripts/dialogue/ghost_guard.asc new file mode 100644 index 000000000..f4cc09d09 --- /dev/null +++ b/Server/scripts/dialogue/ghost_guard.asc @@ -0,0 +1,15 @@ +@dialogue npc:1706 +npc("All visitors to Port Phasmatys must pay a toll charge of", "2 Ectotokens.") +>options + +options: { + option("I don't have that many Ectotokens.", "Where can I get Ecototokens?") + @option 1 { + player("I don't have that many Ectotokens.") + npc("In that case, you need to go to the Temple and earn", "some. Talk to the disciples - they will tell you how.") + } + @option 2 { + player("Where can I get my Ectotokens?") + npc("You need to go to the Temple and earn some.", "Talk to the disciples - they will tell you how.") + } +} \ No newline at end of file diff --git a/Server/scripts/dialogue/ghosty_dialogue.asc b/Server/scripts/dialogue/ghosty_dialogue.asc new file mode 100644 index 000000000..2d621ea48 --- /dev/null +++ b/Server/scripts/dialogue/ghosty_dialogue.asc @@ -0,0 +1,3 @@ +@dialogue type:"ghosty dialogue": +npc("Woooo wooo wooooo woooo") +plainmessage("You cannot understand the ghost.") \ No newline at end of file diff --git a/Server/scripts/dialogue/gnometraveller.asc b/Server/scripts/dialogue/gnometraveller.asc new file mode 100644 index 000000000..dd931f897 --- /dev/null +++ b/Server/scripts/dialogue/gnometraveller.asc @@ -0,0 +1,6 @@ +@dialogue npc:2138 +npc(FacialExpression.OLD_NORMAL, "Hello I am a gnome traveller visiting Keldagrim in search", "of low-level skilling supplies.", "I'll offer you an increased buying price,", "higher than any other merchants here can match."); +npc(FacialExpression.OLD_NORMAL, "If you happen to have any, use them on me and I will", "give you a reasonable amount of gold coins."); +player("What items, specifically, do you buy?"); +npc(FacialExpression.OLD_NORMAL, "Logs, Oak logs, Willow logs, Clay, Copper ore, Tin ore,", "Iron ore, Shrimps, Sardines, Anchovies, Trout,", "Guam leaves, Tarromin leaves, Harralander leaves", "Bronze bars, Iron bars, and Arrow shafts..."); +npc(FacialExpression.OLD_NORMAL, "... are some of the items I am looking for.", "When it comes to fish, I will pay more if it's cooked.", "I also accept clean or grimy herbs.", "I am also accepting items in regular or bank note form."); diff --git a/Server/scripts/dialogue/gunnar_holdstrom.asc b/Server/scripts/dialogue/gunnar_holdstrom.asc new file mode 100644 index 000000000..15ce77c01 --- /dev/null +++ b/Server/scripts/dialogue/gunnar_holdstrom.asc @@ -0,0 +1,7 @@ +@dialogue npc:5511 + + + npc("Ah, isn't it a lovely day?") + player("It's not bad. What puts you in such a good mood?") + npc("Oh, I just love my job. The smell of the sea breeze, the", "smell of the arctic pine sap, the smell of the yaks. I find it", All so bracing.") + player("Bracing? Hmmm. I think I might have chosen a different word.") \ No newline at end of file diff --git a/Server/scripts/dialogue/gunnjorn.asc b/Server/scripts/dialogue/gunnjorn.asc new file mode 100644 index 000000000..3029b91e8 --- /dev/null +++ b/Server/scripts/dialogue/gunnjorn.asc @@ -0,0 +1,3 @@ +@dialogue npc:607 +npc("Haha welcome to my obstacle course. Have fun, but", "remember this isn't a child's playground. People have", "died here."); +npc("The best way to train, is to go round the course in a", "clockwise direction.") diff --git a/Server/scripts/dialogue/irksol.asc b/Server/scripts/dialogue/irksol.asc new file mode 100644 index 000000000..7083a6350 --- /dev/null +++ b/Server/scripts/dialogue/irksol.asc @@ -0,0 +1,17 @@ +@dialogue npc:566 +npc("Selling ruby rings! The best deals on rings in over", "twenty four hundred planes of existence!") +>options + +options: { + option("I'm interested in these deals.", "No thanks, just browsing.") + @option 1 { + player("I'm interested in these deals.") + npc("Aha! A connoisseur! Check out these beauties!") + openshop(566) + } + @option 2 { + player("No thanks, just browsing.") + npc("Fair enough.") + + } +} \ No newline at end of file diff --git a/Server/scripts/dialogue/jimmy_wg.asc b/Server/scripts/dialogue/jimmy_wg.asc new file mode 100644 index 000000000..3a18ffb4a --- /dev/null +++ b/Server/scripts/dialogue/jimmy_wg.asc @@ -0,0 +1,41 @@ +@dialogue npc:4298 +npc("'Ello there."); +>options + +options: { + option("Tell me about this room.", "Tell me how to balance kegs.", "May I claim my tokens please?", "Bye!"); + @option1 { + player("Tell me about this room?"); + npc("Well... s'like thish..."); + npc("Thish here'sh a shtore room right?"); + player("A store room you mean?"); + npc("That'sh what I said! *HIC* A shtore room..... Now", "technic'ly shpeaking, I should be outshide guarding it..."); + player("But you just nipped in to have a quick drink?"); + npc("Yep... and to practish."); + player("Practish? I mean.. practise what?"); + npc("Keg balancin. I'm the besht."); + >options + } + @option2 { + player("Tell me how to balance kegs?"); + npc("Yer very very shtrange. But.... you pick the keg up,", "and balance it on yer head, then you pick another keg", "up and put that on top. S'really very eashy."); + player("Eashy?"); + npc("Yesh. Eashy."); + pause(2) + npc("But you couldn't ever balansh ash many ash meee!"); + player("That sounds like a challenge, I'll show you!"); + >options + } + @option3 { + player("May I claim my tokens please?"); + npc("Well... err.. ish not offishal or anyfin... but I got the", "ledger of tokensh 'ere. I'll jus' err.. write it in!"); + player("Won't they know?"); + npc("Nah... hic.... I'm a wizsh at copyin' signaturesh. Jus'", "ashk an offishal mem'er of shtaff like Shloane fer yer", "tokensh."); + plainmessage("The rather drunk Jimmy scribbles the tokens you've earned from", "Keg Balancing in the Ledger so that you can claim them from an", "official member of training staff."); + } + @option4 { + player("Bye!"); + npc("Shure you wouldn't like an ickle drinkie fore yer go?"); + player("No thanks, got things to do, people to see, tokens to", "earn..."); + } +} diff --git a/Server/scripts/dialogue/jofridr_moedstatter.asc b/Server/scripts/dialogue/jofridr_moedstatter.asc new file mode 100644 index 000000000..81f3e069d --- /dev/null +++ b/Server/scripts/dialogue/jofridr_moedstatter.asc @@ -0,0 +1,28 @@ +@dialogue npc:5509 + +npc("Hello there. Would you like to see the good I have", "for sale?") +>options +options: { +option("Yes please, Jofridr", "No thank you, Jofridr", "Why do you have so much wool in your store?) +@option1 { +player("Yes please, Jofridr.") +openshop(5509) +} + +@option2 { + player("No thank you, Jofridr") + npc("Fair thee well.") +} +@option3 { + player("Why do you have so much wool in", "your store?") + npc("Ah, I have contacts on the mainland. I have a", "sailor friend who brings me crates of", "wool on a regular basis.") + player("What do you trade for it?") + npc("Rope of course! What else can we sell? Fish", "would go off before it got so far south.") + player("Where does all this rope go?") + npc("Err, I don't remember the name of the place", "very well. Dreinna? Drennor? Something like that.") + player("That's very interesting. Thanks Jofridr.") + } + } + + + \ No newline at end of file diff --git a/Server/scripts/dialogue/jukat.asc b/Server/scripts/dialogue/jukat.asc new file mode 100644 index 000000000..938ddb6f7 --- /dev/null +++ b/Server/scripts/dialogue/jukat.asc @@ -0,0 +1,15 @@ +@dialogue npc:564 +npc("Dragon swords! Here, Dragon swords! Straight from", "Frenaskrae!") +>options + +options: { + option("Yes please.", "No thanks, I'm just browsing.") + @option 1 { + player("Yes please!") + openshop(564) + } + @option 2 { + player("No thanks, I'm just browsing.") + } +} + diff --git a/Server/scripts/dialogue/kjedelig_uppsen.asc b/Server/scripts/dialogue/kjedelig_uppsen.asc new file mode 100644 index 000000000..2b5b1dad5 --- /dev/null +++ b/Server/scripts/dialogue/kjedelig_uppsen.asc @@ -0,0 +1,7 @@ +@dialogue npc:5518 + + +npc("Ho, Larlim Far-strider! The brave warrior returns!") + player("It was a hard-fought battle, but we Fremennik prevailed!") + npc("I expect we'll be hearing songs about the 'slayer of the", "Troll king' for many years to come") + player("It would be an honour to be remembered in such a way!", "Thanks.") \ No newline at end of file diff --git a/Server/scripts/dialogue/lisse_isaakson.asc b/Server/scripts/dialogue/lisse_isaakson.asc new file mode 100644 index 000000000..6c6b04746 --- /dev/null +++ b/Server/scripts/dialogue/lisse_isaakson.asc @@ -0,0 +1,10 @@ +@dialogue npc:5513 + + npc("Hello, visitor!") + player("Hello. What are you up to?") + npc("Ah, I was about to collect some yak's milk to make", "yak cheese.") + player("Eughr! Though I am curious. Can I try some?") + npc("Sorry, no. The last outlander who ate my cheese", "was ill for a month") + player("So why don't you get ill as well?") + npc("Well, we eat yak milk products every day, from", "when we're born. So I suppose we're used to it. Anyways I", "should stop yakking - Haha - and get on with my work") + player("I'm glad to see that puns are common", "everywhere in Keldagrim; even here") \ No newline at end of file diff --git a/Server/scripts/dialogue/melina.asc b/Server/scripts/dialogue/melina.asc new file mode 100644 index 000000000..45f5389b7 --- /dev/null +++ b/Server/scripts/dialogue/melina.asc @@ -0,0 +1,2 @@ +@dialogue npc:2935 +npc("Leave me be.") \ No newline at end of file diff --git a/Server/scripts/dialogue/molly.asc b/Server/scripts/dialogue/molly.asc new file mode 100644 index 000000000..ad71aba80 --- /dev/null +++ b/Server/scripts/dialogue/molly.asc @@ -0,0 +1,41 @@ +@dialogue npc:3892,3893,3894,3895,3896,3897,3898,3899,3900,3901,3902,3903,3904,3905,3906,3907,3908,3909,3910,3911 + +npc("Thanks for coming!") +player("It's not like I had a lot of choice you know!") +npc("I'm sorry for abducting you like that, but I really need", "your help >playername<.") +player("What's the problem then?") +>event_info + +event_info:{ + npc("It's my evil twin sister! She's been galavanting around", "Keldagrim commiting crimes and now I'm getting the", "blame!") + player("Well what's all this got to do with me then?") + npc("I'm glad you asked!") + npc("Through that door is a room with a cage and a control", "panel that operates a giant mechanical claw.") + npc("I lured my sister into the room so I could imprison her", "in the cage by using the claw. The problem is my sister", "managed to herd some innocent civilians in there with", "her.") + player("So what do you need me to do?") + npc("I need you to go next door and use the claw to catch", "my sister.") + npc("Once she's in prison, she won't be causing me anymore", "bother!") + player("Sounds easy enough to me.") + npc("Fabulous! Now take a good long look at me because the", "door will be locked behind you. My twin looks exactly", "like me, even her clothes!") + npc("One more thing to make your life difficult; the magic", "powering the claw is running low so you'll only have", "two attempts to catch her.") + player("I'll do my best then!") + npc("By the way, would you like me to run through the", "controls for you, or do you think you'll manage?") + setattribute("/save:ame:evil_twin_info", true); + option("Yes please.", "No thanks.") + @option1{ + player("Yes please. I mean, it's always best to be prepared,", "right?") + npc("Ok, when you turn the machine on you'll see the", "glowing mark on the floor where the claw is currently", "aiming, and you'll see a lever and button on the right", "hand side of your screen.") + npc("To move the claw's current location, click on the", "direction you want it to move in, as indicated on the", "right hand panel.") + npc("You'll know which way the claw will go as the lever will", "point that way to show you.") + npc("When you see someone on top of the glowing mark,", "then hit the button on the right hand panel, as this will", "send the claw down to pick them up.") + npc("Do be careful and make sure that there is someone on", "the mark, and not just walking past it.") + npc("Oh, and make sure the person is my sister, so you", "don't end up catching a random civilian.") + npc("Does that help?") + player("Yes, that covers everything. Thanks!") + npc("Good luck!") + } + @option2{ + player("No thanks, I should be able to work it out.") + npc("Good luck!") + } +} \ No newline at end of file diff --git a/Server/scripts/dialogue/morten_holdstrom.asc b/Server/scripts/dialogue/morten_holdstrom.asc new file mode 100644 index 000000000..8b0f0eb01 --- /dev/null +++ b/Server/scripts/dialogue/morten_holdstrom.asc @@ -0,0 +1,11 @@ +@dialogue npc:5510 + + + npc("Good day to you.") + player("Hello. What are you up to?") + npc("Ah, Today is surstromming day! The herring I buried", "six months ago is ready to be dug up.") + player("Eughr! What are you going to do with it?") + npc("Eat it, of course! It will be fermented just-right by now.") + player("Fermented? You eat rotten fish?") + npc("Hmmm, tasty. I'm guessing you don't want to", "come round and try it?") + player("You guess correctly.") \ No newline at end of file diff --git a/Server/scripts/dialogue/peer_the_seer.asc b/Server/scripts/dialogue/peer_the_seer.asc new file mode 100644 index 000000000..53da493d0 --- /dev/null +++ b/Server/scripts/dialogue/peer_the_seer.asc @@ -0,0 +1,4 @@ +@dialogue npc:1288 +npc("Hey! Outerlander! That is my house! Who do you", "think you are to just barge into my home without", "asking?") +player("Um... My name is @name.") +npc("It was a rhetorical question, outerlander. Now get lost.", "I do not appreciate intruders in my home.") diff --git a/Server/scripts/dialogue/private_paldon.asc b/Server/scripts/dialogue/private_paldon.asc new file mode 100644 index 000000000..9b44ca0ba --- /dev/null +++ b/Server/scripts/dialogue/private_paldon.asc @@ -0,0 +1,6 @@ +@dialogue npc:5031 +player("Hi") +npc("Shhh. Don't talk to me.") +player("What? Why?") +npc("If I'm seen slacking off by talking to you, I'll be in", "deep trouble!") +player("Oh... Sorry.") \ No newline at end of file diff --git a/Server/scripts/dialogue/private_pendron.asc b/Server/scripts/dialogue/private_pendron.asc new file mode 100644 index 000000000..d35e10b01 --- /dev/null +++ b/Server/scripts/dialogue/private_pendron.asc @@ -0,0 +1,5 @@ +@dialogue npc:5032 +player("Hi there.") +npc("Don't suppose you've seen a battleaxe around here?") +player("A battleaxe? Nope, afraid not.") +npc("The captain is going to kill me if he finds out I've lost", "my weapon.") diff --git a/Server/scripts/dialogue/private_pierreb.asc b/Server/scripts/dialogue/private_pierreb.asc new file mode 100644 index 000000000..4c76ea8e0 --- /dev/null +++ b/Server/scripts/dialogue/private_pierreb.asc @@ -0,0 +1,4 @@ +@dialogue npc:5033 +player("Hello. So you're just a private?") +npc("Show some respect! It's more than you'll achieve.") +player("I beg to differ. I'm in perfect shape!") diff --git a/Server/scripts/dialogue/robin.asc b/Server/scripts/dialogue/robin.asc new file mode 100644 index 000000000..3a3995208 --- /dev/null +++ b/Server/scripts/dialogue/robin.asc @@ -0,0 +1,11 @@ +@dialogue npc:1694 +player("It's nice to see another human face around here.") +npc("Leave me be, peasant - I am relaxing.") +player("Well, that's nice!") +npc("Do you know who I am?") +player("I'm sorry, I haven't had the privilege.") +npc("I, peasant, am Robin, Master Bowman. I am very", "famous you know.") +player("Oh, Robin, Master Bowman, I see.") +npc("So have you heard of me?") +player("No.") + diff --git a/Server/scripts/dialogue/simon_templeton.asc b/Server/scripts/dialogue/simon_templeton.asc new file mode 100644 index 000000000..9d5dc9b79 --- /dev/null +++ b/Server/scripts/dialogue/simon_templeton.asc @@ -0,0 +1,38 @@ +@dialogue npc:3123 +player("Hello, Simon.") +npc("G'day, @name.") +player("How's it going?") +$hasitem(6970, 1) { + npc("Not bad, mate, not bad at all. Got any artefacts for", "me?") + >sellOptions +} +npc("I've been contracted to retrieve artefacts from the top", "of this magnificent pyramid.") +player("So, why are you down here and not up there then?") +npc("Well, it's me back - an old injury I picked up in", "Sophanem has come back to haunt me. I was working", "for the Museum of Varrock, and the gold I had been", "given wasn't enough to pay for the carpet rides, let") +npc("alone any decent equipment. But that was a long time", "ago... I can't even lift a chisel right now. There's no", "way I can climb all the way up there.") +player("How on earth did you get down the cliff face, then?") +npc("That's what set off the injury. I was fine before I", "scrabbed down the pesky slope. I think it will be a while", "before I can climb back up again; I must be getting", "old.") +npc("Hang on a second... You look like you're pretty agile", "and up for a challenge. How about you retrieve it for", "me?") +npc("I'll tell you what, I'll give you 1000 coins for every", "artefact you get for me.") +player("I'll see what I can do.") +npc("Good on ya, mate!") + +sellOptions: { + option("Sell it.", "Keep it.") + @option1{ + player("I have one here I'll sell you.") + $removeitem(6970, 1) { + additem(995, 1000) + itemmessage(6970, "You hand over the artefact(s) and Simon hands you 1000 coins.") + npc("Ripper! Thanks a bundle mate! Thanks to you I can", "fulfill me contract. You're a true blue! The boss will be", "pleased.") + player("Glad I was able to help... but who is your boss? I", "thought you worked for the museum?") + npc("Mind your own bizzo, mate. But if you get any more,", "you know where I am!") + } + } + @option2{ + player("I have one, but I want to keep it for now.") + npc("Careful, mate, people come looking for a thing like", "that!") + player("Thanks for the advice, but I'll hang onto it for now.") + npc("Bye, cobber.") + } +} \ No newline at end of file diff --git a/Server/scripts/dialogue/slug_hemligssen.asc b/Server/scripts/dialogue/slug_hemligssen.asc new file mode 100644 index 000000000..3742d17e0 --- /dev/null +++ b/Server/scripts/dialogue/slug_hemligssen.asc @@ -0,0 +1,5 @@ +@dialogue npc:5520 + + + npc("Shh. Go away. I'm not allowed to talk to you.") + player("Fine, Whatever...") \ No newline at end of file diff --git a/Server/scripts/dialogue/spirit_spider.asc b/Server/scripts/dialogue/spirit_spider.asc new file mode 100644 index 000000000..d864fc823 --- /dev/null +++ b/Server/scripts/dialogue/spirit_spider.asc @@ -0,0 +1,7 @@ +@dialogue npc:6841, 6842 +npc("Where are we going?") +player("I've not decided yet.") +npc("Fine, don't tell me...") +player("Oh, okay, well we are going...") +npc("Don't want to know now.") +player("Siiiigh...spiders.") \ No newline at end of file diff --git a/Server/scripts/dialogue/test.asc b/Server/scripts/dialogue/test.asc new file mode 100644 index 000000000..88a630011 --- /dev/null +++ b/Server/scripts/dialogue/test.asc @@ -0,0 +1 @@ +message("Roar") \ No newline at end of file diff --git a/Server/scripts/dialogue/thakkrad_sigmundson.asc b/Server/scripts/dialogue/thakkrad_sigmundson.asc new file mode 100644 index 000000000..228288cbb --- /dev/null +++ b/Server/scripts/dialogue/thakkrad_sigmundson.asc @@ -0,0 +1,6 @@ +@dialogue npc:5506 + +npc("Thank you for leading the Burgher's militia against the", "Troll King.") + npc("Now that the trolls are leaderless I have repaired the", "bridge to the central isle for you as best I can.") + player("Thanks Thakkrad. Does that mean I have access to the", "runite ores on that island?") + npc("Yes, You should be able to mine runite there if you wish.") \ No newline at end of file diff --git a/Server/scripts/dialogue/trogen_konungarde.asc b/Server/scripts/dialogue/trogen_konungarde.asc new file mode 100644 index 000000000..367a6428a --- /dev/null +++ b/Server/scripts/dialogue/trogen_konungarde.asc @@ -0,0 +1,7 @@ +@dialogue npc:5519 + + +npc("Ho, Larlim Far-strider! The brave warrior returns!") + player("It was a hard-fought battle, but we Fremennik prevailed!") + npc("I expect we'll be hearing songs about the 'slayer of the", "Troll king' for many years to come") + player("It would be an honour to be remembered in such a way!", "Thanks.") \ No newline at end of file diff --git a/Server/scripts/dialogue/yanille_bartender.asc b/Server/scripts/dialogue/yanille_bartender.asc new file mode 100644 index 000000000..a9da9908b --- /dev/null +++ b/Server/scripts/dialogue/yanille_bartender.asc @@ -0,0 +1,25 @@ +@dialogue npc:739 +npc("What can I get you?") +player("What's on the menu?") +npc("Dragon Bitter and Greenman's Ale, oh and some cheap", "beer.") +>options + +options: { + option("I'll give it a miss I think", "I'll try the Dragon Bitter.", "Can I have some Greenman's Ale?", "One cheap beer please!") + @option1 { + + } + @option2 { + + } + @option3 { + + } + @option4 { + + } +} + +buy:(id, cost) { + +} \ No newline at end of file diff --git a/Server/scripts/dialogue/zanaris_gatekeeper.asc b/Server/scripts/dialogue/zanaris_gatekeeper.asc new file mode 100644 index 000000000..c79e44646 --- /dev/null +++ b/Server/scripts/dialogue/zanaris_gatekeeper.asc @@ -0,0 +1,6 @@ +@dialogue npc:3321, 3307 +player("What happened to the old man who used to be the", "doorman?") +npc("You mean my father? He went into retirement, I've", "taken over the family business instead.") +player("Your father! But you don't look anything like him!") +npc("No, fortunately for me I inherited my good looks from", "my mother.") + diff --git a/Server/src/main/java/core/cache/def/impl/ItemDefinition.java b/Server/src/main/java/core/cache/def/impl/ItemDefinition.java index 80c4c15b7..bf222cbff 100644 --- a/Server/src/main/java/core/cache/def/impl/ItemDefinition.java +++ b/Server/src/main/java/core/cache/def/impl/ItemDefinition.java @@ -18,11 +18,14 @@ import core.plugin.Plugin; import core.tools.StringUtils; import rs09.game.system.SystemLogger; import rs09.game.system.config.ItemConfigParser; +import org.rs09.consts.Items; import java.nio.ByteBuffer; import java.text.DecimalFormat; import java.util.HashMap; +import java.util.HashSet; import java.util.Map; +import java.util.Arrays; /** * Represents an item's definitions. @@ -678,39 +681,72 @@ public class ItemDefinition extends Definition { } /** - * The allowed names. + * The allowed ids. */ - private static final String[] allowedNames = new String[] { "cape", "robe", "hat", "potion" }; + private static final HashSet allowedItems = new HashSet(Arrays.asList( + Items.PENANCE_GLOVES_10553, + Items.ICE_GLOVES_1580, + Items.BOOTS_OF_LIGHTNESS_88, + Items.CLIMBING_BOOTS_3105, + Items.SPOTTED_CAPE_10069, + Items.SPOTTIER_CAPE_10071, + Items.SARADOMIN_CAPE_2412, + Items.ZAMORAK_CAPE_2414, + Items.GUTHIX_CAPE_2413, + Items.SARADOMIN_CLOAK_10446, + Items.ZAMORAK_CLOAK_10450, + Items.GUTHIX_CLOAK_10448, + Items.HOLY_BOOK_3840, + Items.DAMAGED_BOOK_3839, + Items.UNHOLY_BOOK_3842, + Items.DAMAGED_BOOK_3841, + Items.BOOK_OF_BALANCE_3844, + Items.DAMAGED_BOOK_3843, + Items.WIZARD_BOOTS_2579, + Items.COMBAT_BRACELET1_11124, + Items.COMBAT_BRACELET2_11122, + Items.COMBAT_BRACELET3_11120, + Items.COMBAT_BRACELET4_11118, + Items.REGEN_BRACELET_11133, + Items.WARLOCK_CLOAK_14081, + Items.WARLOCK_LEGS_14077, + Items.WARLOCK_TOP_14076 + )); + private static final HashSet bannedItems = new HashSet(Arrays.asList( + /**Items.BUTTERFLY_NET_10010, easing the restriction until barehanded implementation**/ + Items.DWARF_CANNON_SET_11967, + Items.CANNON_BARRELS_10, + Items.CANNON_BASE_6, + Items.CANNON_STAND_8, + Items.CANNON_FURNACE_12, + Items.COOKING_GAUNTLETS_775, + Items.CHAOS_GAUNTLETS_777, + Items.GOLDSMITH_GAUNTLETS_776, + Items.KARAMJA_GLOVES_1_11136, + Items.KARAMJA_GLOVES_2_11138, + Items.KARAMJA_GLOVES_3_11140, + Items.VYREWATCH_TOP_9634, + Items.VYREWATCH_LEGS_9636, + Items.VYREWATCH_SHOES_9638 + )); + /** * Checks if the item is allowed on entrana. * @return {@code True} if so. */ public boolean isAllowedOnEntrana() { - if (getId() == 946) { + if(allowedItems.contains(getId())) { return true; } - if (getName().equals("Boots")) { - return true; + if(bannedItems.contains(getId())) { + return false; } if (getName().toLowerCase().startsWith("ring") || getName().toLowerCase().startsWith("amulet")) { return true; } - if (getName().toLowerCase().contains("spotted") || getName().toLowerCase().equals("spottier")) { - return true; - } - if (getName().equals("Boots of lightness")) { - return true; - } - if(getName().toLowerCase().contains("arrow") || getName().toLowerCase().contains("bolt")){ - return false; - } - for (String name : allowedNames) { - if (getName().toLowerCase().contains(name)) { - return true; - } - } - return getConfiguration(ItemConfigParser.BONUS) == null; + int[] bonuses = getConfiguration(ItemConfigParser.BONUS); + return bonuses == null || Arrays.stream(bonuses).allMatch(x -> x == 0); } /** @@ -1661,4 +1697,4 @@ public class ItemDefinition extends Definition { public void setMaleWornModelId4(int maleWornModelId4) { this.maleWornModelId4 = maleWornModelId4; } -} \ No newline at end of file +} diff --git a/Server/src/main/java/core/game/content/activity/guild/CraftingGuildPlugin.java b/Server/src/main/java/core/game/content/activity/guild/CraftingGuildPlugin.java deleted file mode 100644 index dd3aedb80..000000000 --- a/Server/src/main/java/core/game/content/activity/guild/CraftingGuildPlugin.java +++ /dev/null @@ -1,293 +0,0 @@ -package core.game.content.activity.guild; - -import core.cache.def.impl.NPCDefinition; -import core.cache.def.impl.SceneryDefinition; -import core.game.content.dialogue.DialoguePlugin; -import core.game.content.global.Skillcape; -import core.game.content.global.action.DoorActionHandler; -import core.game.node.entity.skill.Skills; -import core.game.node.entity.skill.crafting.TanningProduct; -import core.game.interaction.OptionHandler; -import core.game.node.Node; -import core.game.node.entity.npc.NPC; -import core.game.node.entity.player.Player; -import core.game.node.item.Item; -import core.game.node.scenery.Scenery; -import core.game.world.map.Location; -import core.plugin.Initializable; -import core.plugin.Plugin; - -/** - * Represents the plugin used for the crafting guild. - * @author 'Vexia - * @version 1.0 - */ -@Initializable -public final class CraftingGuildPlugin extends OptionHandler { - - /** - * Represents the brown apron item. - */ - private static final Item BROWN_APRON = new Item(1757); - - @Override - public Plugin newInstance(Object arg) throws Throwable { - SceneryDefinition.forId(2647).getHandlers().put("option:open", this); - NPCDefinition.forId(804).getHandlers().put("option:trade", this); - new MasterCrafterDialogue().init(); - new TannerDialogue().init(); - return this; - } - - @Override - public boolean handle(Player player, Node node, String option) { - final int id = node instanceof Scenery ? ((Scenery) node).getId() : ((NPC) node).getId(); - switch (option) { - case "open": - switch (id) { - case 2647: - if (player.getLocation().getY() >= 3289) { - if (player.getSkills().getStaticLevel(Skills.CRAFTING) < 40) { - player.getDialogueInterpreter().sendDialogues(805, null, "Sorry, only experienced crafters are allowed in here.", "You must be level 40 or above to enter."); - return true; - } - if (!player.getEquipment().containsItem(BROWN_APRON)) { - player.getDialogueInterpreter().open(805, true, true); - return true; - } - player.getDialogueInterpreter().sendDialogues(805, null, "Welcome to the Guild of Master Craftsmen."); - DoorActionHandler.handleAutowalkDoor(player, (Scenery) node); - } else { - DoorActionHandler.handleAutowalkDoor(player, (Scenery) node); - return true; - } - break; - } - return true; - case "trade": - switch (id) { - case 804: - TanningProduct.open(player, 804); - break; - } - return true; - } - return true; - } - - @Override - public Location getDestination(Node node, Node n) { - if (n instanceof Scenery) { - return DoorActionHandler.getDestination((Player) node, (Scenery) n); - } - return null; - } - - /** - * Represents the dialogue plugin used for the crafting master. - * @author 'Vexia - * @version 1.0 - */ - public final class MasterCrafterDialogue extends DialoguePlugin { - - /** - * Constructs a new {@code MasterCrafterDialogue} {@code Object}. - */ - public MasterCrafterDialogue() { - /** - * empty. - */ - } - - /** - * Constructs a new {@code MasterCrafterDialogue} {@code Object}. - * @param player the player. - */ - public MasterCrafterDialogue(final Player player) { - super(player); - } - - @Override - public DialoguePlugin newInstance(Player player) { - return new MasterCrafterDialogue(player); - } - - @Override - public boolean open(Object... args) { - if (args.length == 2) { - npc("Where's your brown apron? You can't come in here", "unless you're wearing one."); - stage = 100; - return true; - } - npc = (NPC) args[0]; - npc("Hello, and welcome to the Crafting Guild. Accomplished", "crafters from all over the land come here to use our", "top notch workshops."); - stage = 0; - return true; - } - - @Override - public boolean handle(int interfaceId, int buttonId) { - switch (stage) { - case 0: - if (npc.getId() == 805) { - if (Skillcape.isMaster(player, Skills.CRAFTING)) { - player("Hey, could I buy a Skillcape of Crafting?"); - stage = 3; - } else { - player("Hey, what is that cape you're wearing?", "I don't recognise it."); - stage = 1; - } - } else { - end(); - } - break; - case 1: - npc("This? This is a Skillcape of Crafting. It is a symbol of", "my ability and standing here in the Crafting Guild. If", "you should ever achieve level 99 Crafting come and talk", "to me and we'll see if we can sort you out with one."); - stage = 2; - break; - case 2: - end(); - break; - case 3: - npc("Certainly! Right after you pay me 99000 coins."); - stage = 4; - break; - case 4: - options("Okay, here you go.", "No, thanks."); - stage = 5; - break; - case 5: - switch (buttonId) { - case 1: - player("Okay, here you go."); - stage = 6; - break; - case 2: - end(); - break; - } - break; - case 6: - if (Skillcape.purchase(player, Skills.CRAFTING)) { - npc("There you go! Enjoy."); - } - stage = 7; - break; - case 7: - end(); - break; - case 100: - npc("Where's your borwn apron? You can't come in here", "unless you're wearing one."); - stage = 101; - break; - case 101: - player("Err... I haven't got one."); - stage = 102; - break; - case 102: - end(); - break; - } - return true; - } - - @Override - public int[] getIds() { - return new int[] { 805, 2732, 2733 }; - } - - } - - /** - * Represents the dialogue used for the tanner npc. - * @author 'Vexia - * @version 1.0 - */ - public final class TannerDialogue extends DialoguePlugin { - - /** - * Constructs a new {@code TannerDialogue} {@code Object}. - */ - public TannerDialogue() { - /** - * empty. - */ - } - - /** - * Constructs a new {@code TannerDialogue} {@code Object}. - * @param player the player. - */ - public TannerDialogue(final Player player) { - super(player); - } - - @Override - public DialoguePlugin newInstance(Player player) { - return new TannerDialogue(player); - } - - @Override - public boolean open(Object... args) { - npc("Greetings friend. I am a manufacturer of leather."); - stage = 0; - return true; - } - - @Override - public boolean handle(int interfaceId, int buttonId) { - switch (stage) { - case 0: - options("Can I buy some leather then?", "Leather is rather weak stuff."); - stage = 1; - break; - case 1: - switch (buttonId) { - case 1: - player("Can I buy some leather then?"); - stage = 10; - break; - case 2: - player("Leather is rather weak stuff."); - stage = 20; - break; - } - break; - case 10: - npc("Certainly!"); - stage = 11; - break; - case 11: - end(); - TanningProduct.open(player, 804); - break; - case 20: - npc("Normal leather may be quite weak, but it's very cheap -", "I make it from cowhides for only 1 gp per hide - and", "it's so easy to craft that anyone can work with it."); - stage = 21; - break; - case 21: - npc("Alternatively you could try hard leather. It's not so", "easy to craft, but I only charge 3gp per cowhide to", "prepare it, and it makes much studier armour."); - stage = 22; - break; - case 22: - npc("I can also tan snake hides and dragonhides, suitable for", "crafting into the highest quality armour for rangers."); - stage = 23; - break; - case 23: - player("Thanks, I'll bear it in mind."); - stage = 24; - break; - case 24: - end(); - break; - } - return true; - } - - @Override - public int[] getIds() { - return new int[] { 804 }; - } - - } -} diff --git a/Server/src/main/java/core/game/content/activity/guild/FishingGuild.java b/Server/src/main/java/core/game/content/activity/guild/FishingGuild.java index 93802cf69..8b5d07ee1 100644 --- a/Server/src/main/java/core/game/content/activity/guild/FishingGuild.java +++ b/Server/src/main/java/core/game/content/activity/guild/FishingGuild.java @@ -30,9 +30,10 @@ public final class FishingGuild extends OptionHandler { @Override public boolean handle(Player player, Node node, String option) { + final int id = ((Scenery) node).getId(); switch (option) { case "open": - switch (node.getId()) { + switch (id) { case 2025: if (player.getSkills().getDynamicLevels()[Skills.FISHING] < 68 && player.getLocation().withinDistance(new Location(2611, 3394, 0))) { player.getDialogueInterpreter().sendDialogues(308, null, "Hello, I'm afraid only the top fishers are allowed to use", "our premier fishing facilities."); diff --git a/Server/src/main/java/core/game/content/activity/pyramidplunder/PlunderZones.java b/Server/src/main/java/core/game/content/activity/pyramidplunder/PlunderZones.java index 2f3fbcf9c..6a2e2de5b 100644 --- a/Server/src/main/java/core/game/content/activity/pyramidplunder/PlunderZones.java +++ b/Server/src/main/java/core/game/content/activity/pyramidplunder/PlunderZones.java @@ -9,7 +9,6 @@ import core.game.node.entity.npc.NPC; import core.game.node.entity.player.Player; import core.game.node.entity.skill.Skills; import core.game.node.item.Item; -import core.game.node.scenery.Scenery; import core.game.node.scenery.SceneryBuilder; import core.game.system.task.LocationLogoutTask; import core.game.system.task.LogoutTask; @@ -198,9 +197,9 @@ public class PlunderZones implements Plugin { } return true; } - PlunderObject object = target instanceof Scenery ? new PlunderObject(target.asScenery()) : null; + PlunderObject object = target instanceof NPC ? null : new PlunderObject(target.asScenery()); //PlunderObject(target.getId(),target.getLocation()); PlunderObjectManager manager = player.getPlunderObjectManager(); - if(object == null || manager == null) return super.interact(e, target, option); + if(manager == null) return super.interact(e, target, option); boolean alreadyOpened = manager.openedMap.getOrDefault(object.getLocation(),false); boolean charmed = manager.charmedMap.getOrDefault(object.getLocation(),false); boolean success = success(player, Skills.THIEVING); @@ -212,7 +211,7 @@ public class PlunderZones implements Plugin { case 16517: //Spear trap if(!checkRequirements(player,room)){ player.getPacketDispatch().sendMessage("You need to be at least level " + room.reqLevel + " thieving."); - return true; + break; } player.getLocks().lockInteractions(2); player.animate(animations[success ? 1 : 0]); @@ -226,18 +225,18 @@ public class PlunderZones implements Plugin { } else { player.getPacketDispatch().sendMessage("You fail to pass the spears."); } - return true; + break; case 16503: case 16502: case 16501: // Urns if (optionName.equals("search")) { if (!checkRequirements(player,room)){ player.getPacketDispatch().sendMessage("You need to be at least level " + room.reqLevel + " thieving."); - return true; + break; } if (alreadyOpened){ player.getPacketDispatch().sendMessage("You've already looted this."); - return true; + break; } player.animate(animations[success ? 1 : 0]); @@ -260,7 +259,7 @@ public class PlunderZones implements Plugin { SceneryBuilder.replace(target.asScenery(), target.asScenery().transform(object.snakeId), 5); } } - return true; + break; case 16509: case 16510: case 16511: // Snake urns @@ -272,17 +271,17 @@ public class PlunderZones implements Plugin { player.getImpactHandler().manualHit(player, RandomFunction.random(2, 8), ImpactHandler.HitsplatType.NORMAL); player.getPacketDispatch().sendMessage("The snake bites you."); } - return true; + break; case 16473: // Chest if(optionName.equals("search")) { boolean willSpawnSwarm = (RandomFunction.random(1,20) == 10); if(!checkRequirements(player,room)){ player.getPacketDispatch().sendMessage("You need at least level " + room.reqLevel + " thieving to loot this."); - return true; + break; } if (alreadyOpened){ player.getPacketDispatch().sendMessage("You've already looted this."); - return true; + break; } player.getPacketDispatch().sendMessage("You search the chest..."); player.animate(animations[1]); @@ -301,16 +300,16 @@ public class PlunderZones implements Plugin { manager.registerOpened(object); //ObjectBuilder.replace(target.asObject(), target.asObject().transform(object.openId), 5); } - return true; + break; case 16495: //Sarcophagus if(optionName.equals("open")) { if (!checkRequirements(player,room)){ player.getPacketDispatch().sendMessage("You need to be at least level " + room.reqLevel + " thieving."); - return true; + break; } if (alreadyOpened){ player.getPacketDispatch().sendMessage("You've already looted this."); - return true; + break; } boolean willSpawnMummy = (RandomFunction.random(1,5) == 3); player.animate(animations[1]); @@ -329,12 +328,12 @@ public class PlunderZones implements Plugin { manager.registerOpened(object); //ObjectBuilder.replace(target.asObject(), target.asObject().transform(object.openId), 5); } - return true; + break; case 16475: //doors if(optionName.equals("pick-lock") && roomnum < 8) { if (!checkRequirements(player,room)){ player.getPacketDispatch().sendMessage("You need to be at least level " + room.reqLevel + " thieving."); - return true; + break; } player.animate(animations[1]); player.getLocks().lockInteractions(2); @@ -355,13 +354,14 @@ public class PlunderZones implements Plugin { } else if(roomnum == 8) { ClimbActionHandler.climb(player, ClimbActionHandler.CLIMB_UP, Location.create(3288, 2801, 0)); } - return true; + break; case 16476: player.getDialogueInterpreter().sendDialogue("This door doesn't seem to lead","anywhere."); - return true; + break; default: return super.interact(e, target, option); } + return true; } } } diff --git a/Server/src/main/java/core/game/content/activity/wguild/cyclopes/CyclopesRoom.java b/Server/src/main/java/core/game/content/activity/wguild/cyclopes/CyclopesRoom.java index 4ef808d96..27d279fbb 100644 --- a/Server/src/main/java/core/game/content/activity/wguild/cyclopes/CyclopesRoom.java +++ b/Server/src/main/java/core/game/content/activity/wguild/cyclopes/CyclopesRoom.java @@ -41,7 +41,7 @@ public final class CyclopesRoom extends MapZone implements Plugin { /** * The defenders. */ - private static final int[] DEFENDERS = { 8844, 8845, 8846, 8847, 8848, 8849, 8850}; + private static final int[] DEFENDERS = { 8844, 8845, 8846, 8847, 8848, 8849, 8850, 14725}; /** * The players in the room. @@ -262,7 +262,7 @@ public final class CyclopesRoom extends MapZone implements Plugin { case 0: player.setAttribute("sent_dialogue", true); if (defenderId == DEFENDERS.length - 1) { - npc(4289, "I'll release some cyclopes which might drop the same", "rune defender for you as there isn't any higher! Have", "fun in there."); + npc(4289, "I'll release some cyclopes which might drop the same", "dragon defender for you as there isn't any higher! Have", "fun in there."); } else if (defenderId == -1) { npc(4289, "I'll release some cyclopes which might drop bronze", "defenders for you to start off with, unless you show me", "another. Have fun in there."); } else { diff --git a/Server/src/main/java/core/game/content/dialogue/BananaCrateDialogue.java b/Server/src/main/java/core/game/content/dialogue/BananaCrateDialogue.java deleted file mode 100644 index e6b7dbb3c..000000000 --- a/Server/src/main/java/core/game/content/dialogue/BananaCrateDialogue.java +++ /dev/null @@ -1,85 +0,0 @@ -package core.game.content.dialogue; - -import core.game.node.entity.player.Player; -import core.game.node.item.Item; -import core.plugin.Initializable; -import core.game.world.update.flag.context.Animation; - -/** - * Represents the banana crate dialogue. - * @author 'Vexia - * @version 1.0 - */ -@Initializable -public final class BananaCrateDialogue extends DialoguePlugin { - - /** - * Represents the dialogue id. - */ - public static final int ID = 9682749; - - /** - * Represents the animation to use. - */ - private static final Animation ANIMATION = new Animation(832); - - /** - * Represents the banana item. - */ - private static final Item BANANA = new Item(1963); - - /** - * Constructs a new {@code BananaCrateDialogue} {@code Object}. - */ - public BananaCrateDialogue() { - /** - * empty. - */ - } - - /** - * Constructs a new {@code BananaCrateDialogue} {@code Object}. - * @param player the player. - */ - public BananaCrateDialogue(Player player) { - super(player); - } - - @Override - public DialoguePlugin newInstance(Player player) { - return new BananaCrateDialogue(player); - } - - @Override - public boolean open(Object... args) { - interpreter.sendOptions("Do you want to take a banana?", "Yes.", "No."); - stage = 0; - return true; - } - - @Override - public boolean handle(int interfaceId, int buttonId) { - switch (stage) { - case 0: - switch (buttonId) { - case 1: - if (player.getInventory().add(BANANA)) { - player.animate(ANIMATION); - player.getPacketDispatch().sendMessage("You take a banana."); - } - end(); - break; - case 2: - end(); - break; - } - break; - } - return true; - } - - @Override - public int[] getIds() { - return new int[] { ID }; - } -} diff --git a/Server/src/main/java/core/game/content/dialogue/BillTeachDialogue.java b/Server/src/main/java/core/game/content/dialogue/BillTeachDialogue.java new file mode 100644 index 000000000..4d7840258 --- /dev/null +++ b/Server/src/main/java/core/game/content/dialogue/BillTeachDialogue.java @@ -0,0 +1,219 @@ +package core.game.content.dialogue; + +import core.plugin.Initializable; +import core.game.node.entity.npc.NPC; +import core.game.node.entity.player.Player; +import core.game.world.map.Location; + +/** + * Represents the dialogue plugin used for Bill Teach + * @author Charlie + * @version 1.0 + */ +@Initializable +public final class BillTeachDialogue extends DialoguePlugin { + + /** + * Constructs a new {@code BarfyBill} {@code Object}. + */ + public BillTeachDialogue() { + /** + * empty. + */ + } + + /** + * Constructs a new {@code BarfyBill} {@code Object}. + * @param player the player. + */ + public BillTeachDialogue(Player player) { + super(player); + } + + @Override + public DialoguePlugin newInstance(Player player) { + return new BillTeachDialogue(player); + } + + @Override + public boolean open(Object... args) { + npc = new NPC(3155); + player("Hello there."); + stage = 0; + return true; + } + + @Override + public boolean handle(int interfaceId, int buttonId) { + switch (stage) { + case 0: + npc("Arr'! Avast ye' scallywag!", "You be lookin' to get somewhere " + (player.isMale() ? "lad?" : "lass?")); + stage = 1; + break; + case 1: + interpreter.sendOptions("Select an Option", "Yes", "No, thank you"); + stage = 2; + break; + case 2: + switch (buttonId) { + case 1: + player("Yes, where can you take me?"); + stage = 1000; + break; + case 2: + npc("Arr'! You be wastin' my time again.."); + stage = 7; + break; + } + break; + case 1000: + npc("Aye, take a browse through me options."); + stage++; + break; + case 1001: + interpreter.sendOptions("Select an Option", "Slayer Tower", "Zanaris Fairy Ring", "Gnome Stronghold", "Rellekka", "More"); + stage = 2000; + break; + case 2000: + switch (buttonId) { + case 1: + if(!player.getQuestRepository().isComplete("Priest in Peril")) { + npc("Aye, sorry there " + pirateGender() + ", but you'll be needing to ", "help King Roald with something first."); + stage = 7; + } else { + end(); + player.teleport(new Location(3429, 3526, 0)); + } + break; + case 2: + if(!player.getQuestRepository().isComplete("Lost City")) { + npc("Aye, sorry there " + pirateGender() + ", but you'll be needing to ", "discover Zanaris first."); + stage = 7; + } else { + end(); + player.teleport(new Location(2412, 4433, 0)); + } + break; + case 3: + end(); + player.teleport(new Location(2461, 3444, 0)); + break; + case 4: + end(); + player.teleport(new Location(2669, 3631, 0)); + break; + case 5: + interpreter.sendOptions("Select an Option", "Kalphite Lair", "Asgarnian Ice Dungeon", "Fremmenik Dungeon", "Taverley Dungeon", "More"); + stage = 3000; + break; + } + break; + case 3000: + switch (buttonId) { + case 1: + end(); + player.teleport(new Location(3227, 3107, 0)); + break; + case 2: + end(); + player.teleport(new Location(3007, 9550, 0)); + break; + case 3: + end(); + player.teleport(new Location(2808, 10002, 0)); + break; + case 4: + end(); + player.teleport(new Location(2884, 9798, 0)); + break; + case 5: + interpreter.sendOptions("Select an Option", "Waterfall Dungeon", "Brimhaven Dungeon", "Ape Atoll Dungeon", "God Wars Dungeon", "More"); + stage = 4000; + break; + } + break; + case 4000: + switch (buttonId) { + case 1: + end(); + player.teleport(new Location(2575, 9861, 0)); + break; + case 2: + end(); + player.teleport(new Location(2713, 9564, 0)); + break; + case 3: + end(); + player.teleport(new Location(2715, 9184, 0)); + break; + case 4: + end(); + player.teleport(new Location(2898, 3710, 0)); + break; + case 5: + interpreter.sendOptions("Select an Option", "Shilo Village", "Yanille", "Zul-Andra", "Piscatoris Fishing Colony", "More"); + stage = 5000; + break; + } + break; + case 5000: + switch (buttonId) { + case 1: + end(); + player.teleport(new Location(2867, 2952, 0)); + break; + case 2: + end(); + player.teleport(new Location(2544, 3096, 0)); + break; + case 3: + end(); + player.teleport(new Location(2193, 3055, 0)); + break; + case 4: + end(); + player.teleport(new Location(2343, 3663, 0)); + break; + case 5: + interpreter.sendOptions("Select an Option", "Bandit Camp", "Miscellenia", "Mort'ton", "Feldip Hills", "Back"); + stage = 6000; + break; + } + break; + case 6000: + switch (buttonId) { + case 1: + end(); + player.teleport(new Location(3176, 2987, 0)); + break; + case 2: + end(); + player.teleport(new Location(2581, 3845, 0)); + break; + case 3: + end(); + player.teleport(new Location(3488, 3296, 0)); + break; + case 4: + end(); + player.teleport(new Location(2525, 2915, 0)); + break; + case 5: + interpreter.sendOptions("Select an Option", "Slayer Tower", "Zanaris Fairy Ring", "Gnome Stronghold", "Rellekka", "More"); + stage = 2000; + break; + } + break; + case 7: + end(); + break; + } + return true; + } + + @Override + public int[] getIds() { + return new int[] { 3155 }; + } + +} diff --git a/Server/src/main/java/core/game/content/dialogue/DenulthDialogue.java b/Server/src/main/java/core/game/content/dialogue/DenulthDialogue.java deleted file mode 100644 index 453b01d3f..000000000 --- a/Server/src/main/java/core/game/content/dialogue/DenulthDialogue.java +++ /dev/null @@ -1,76 +0,0 @@ -package core.game.content.dialogue; - -import core.game.node.entity.npc.NPC; -import core.plugin.Initializable; -import core.game.node.entity.player.Player; - -/** - * Represents the denulth dialogue plugin. - * @author 'Vexia - * @version 1.0 - */ -@Initializable -public final class DenulthDialogue extends DialoguePlugin { - - /** - * Constructs a new {@code DenulthDialogue} {@code Object}. - */ - public DenulthDialogue() { - /** - * empty. - */ - } - - /** - * Constructs a new {@code DenulthDialogue} {@code Object}. - * @param player the player. - */ - public DenulthDialogue(Player player) { - super(player); - } - - @Override - public DialoguePlugin newInstance(Player player) { - return new DenulthDialogue(player); - } - - @Override - public boolean open(Object... args) { - npc = (NPC) args[0]; - interpreter.sendDialogues(player, FacialExpression.HALF_GUILTY, "Hello!"); - stage = 0; - return true; - } - - @Override - public boolean handle(int interfaceId, int buttonId) { - switch (stage) { - case 0: - interpreter.sendDialogues(npc, FacialExpression.HALF_GUILTY, "Welcome back friend!"); - stage = 1; - break; - case 1: - interpreter.sendDialogues(player, FacialExpression.HALF_GUILTY, "How goes your fight with trolls?"); - stage = 2; - break; - case 2: - interpreter.sendDialogues(npc, FacialExpression.HALF_GUILTY, "Very good! We are winning."); - stage = 3; - break; - case 3: - interpreter.sendDialogues(player, FacialExpression.HALF_GUILTY, "Good luck!"); - stage = 4; - break; - case 4: - end(); - break; - } - return true; - } - - @Override - public int[] getIds() { - return new int[] { 1060 }; - } - -} diff --git a/Server/src/main/java/core/game/content/dialogue/FacialExpression.java b/Server/src/main/java/core/game/content/dialogue/FacialExpression.java index 8ecf1ed26..a4d32afdf 100644 --- a/Server/src/main/java/core/game/content/dialogue/FacialExpression.java +++ b/Server/src/main/java/core/game/content/dialogue/FacialExpression.java @@ -50,6 +50,7 @@ public enum FacialExpression { //Chatheads from 2009? NOD_YES(9741), + DISAGREE(9742), WORRIED(9743), HALF_WORRIED(9745), //Not on the wiki, first half of worried AMAZED(9746), diff --git a/Server/src/main/java/core/game/content/dialogue/HansDialoguePlugin.java b/Server/src/main/java/core/game/content/dialogue/HansDialoguePlugin.java index 9e052bd37..25384d331 100644 --- a/Server/src/main/java/core/game/content/dialogue/HansDialoguePlugin.java +++ b/Server/src/main/java/core/game/content/dialogue/HansDialoguePlugin.java @@ -134,9 +134,9 @@ public final class HansDialoguePlugin extends DialoguePlugin { switch(buttonId){ case 1: if(player.getAttributes().containsKey("permadeath")){ - options("1.0x", "2.5x", "Stay 5.0x", "(HCIM Only) 10x"); + options("1.0x", "2.5x", "Stay 5.0x", "(HCIM Only) 10x", "20x"); } else { - options("1.0x", "2.5x", "Stay 5.0x"); + options("1.0x", "2.5x", "Stay 5.0x", "10x", "20x"); } stage++; break; @@ -176,7 +176,14 @@ public final class HansDialoguePlugin extends DialoguePlugin { } else { stage = 15; } - break; + break; + case 5: + if (player.newPlayer) { + player.getSkills().experienceMutiplier = 20.0; + stage = 14; + } else { + stage = 15; + } } npc("One moment, please..."); break; diff --git a/Server/src/main/java/core/game/content/dialogue/SkullSceptreDialogue.java b/Server/src/main/java/core/game/content/dialogue/SkullSceptreDialogue.java deleted file mode 100644 index 9661657ee..000000000 --- a/Server/src/main/java/core/game/content/dialogue/SkullSceptreDialogue.java +++ /dev/null @@ -1,69 +0,0 @@ -package core.game.content.dialogue; - -import core.plugin.Initializable; -import core.game.node.entity.player.Player; - -/** - * @author 'Vexia - */ -@Initializable -public class SkullSceptreDialogue extends DialoguePlugin { - - public SkullSceptreDialogue() { - - } - - public SkullSceptreDialogue(Player player) { - super(player); - } - - @Override - public int[] getIds() { - return new int[] { 78489 }; - } - - @Override - public boolean handle(int interfaceId, int buttonId) { - end(); - return true; - } - - @Override - public DialoguePlugin newInstance(Player player) { - return new SkullSceptreDialogue(player); - } - - @Override - public boolean open(Object... args) { - interpreter.sendItemMessage(9009, "The two halves of the skull fit perfectly."); - if (args.length == 1) { - interpreter.sendItemMessage(9012, "The two halves of the sceptre fit perfectly.");// The - // Sceptre", "appears - // to - // be - // designed - // to - // have - // something - // on - // top."); - return true; - } - if (args.length == 2) { - interpreter.sendItemMessage(9013, "The skull fits perfectly atop the Sceptre.");// The - // Sceptre", "appears - // to - // be - // designed - // to - // have - // something - // on - // top."); - return true; - } - stage = 0; - return true; - } - -} diff --git a/Server/src/main/java/core/game/content/global/BossKillCounter.java b/Server/src/main/java/core/game/content/global/BossKillCounter.java index 319b0dcdb..dc8f12368 100644 --- a/Server/src/main/java/core/game/content/global/BossKillCounter.java +++ b/Server/src/main/java/core/game/content/global/BossKillCounter.java @@ -32,7 +32,7 @@ public enum BossKillCounter { }, "Tormented demon", -1), CALLISTO(new int[] { 8610 }, "Callisto", 14658), SCORPIA(new int[] { 8611 }, "Scorpia", 14661), - VENENATIS(new int[] { 8612 }, "Venenatis", 14657), + VENENATIS(new int[] { 8591 }, "Venenatis", 14657), VETION(new int[] { 8613 }, "Vet'ion", 14659), KRAKEN(new int[] { 8614 }, "Cave Kraken", 14651), diff --git a/Server/src/main/java/core/game/content/global/EnchantedJewellery.java b/Server/src/main/java/core/game/content/global/EnchantedJewellery.java index 0d6b92af9..f1af710e1 100644 --- a/Server/src/main/java/core/game/content/global/EnchantedJewellery.java +++ b/Server/src/main/java/core/game/content/global/EnchantedJewellery.java @@ -23,7 +23,7 @@ public enum EnchantedJewellery { DIGSITE_PENDANT(new String[] {}, new Location[] { Location.create(3342, 3445, 0) }, true, 11194, 11193, 11192, 11191, 11190), COMBAT_BRACELET(new String[] { "Champions' Guild", "Monastery", "Ranging Guild", "Warriors' Guild", "Nowhere." }, new Location[] { Location.create(3191, 3365, 0), Location.create(3052, 3472, 0), Location.create(2657, 3439, 0), Location.create(2878, 3546, 0) }, 11118, 11120, 11122, 11124, 11126), SKILLS_NECKLACE(new String[] { "Fishing Guild", "Mining Guild", "Crafting Guild", "Cooking Guild", "Nowhere." }, new Location[] { Location.create(2611, 3392, 0), Location.create(3016, 3338, 0), Location.create(2933, 3290, 0), Location.create(3143, 3442, 0) }, 11105, 11107, 11109, 11111, 11113), - RING_OF_WEALTH(new String[] {"Grand Exchange","Nowhere."}, new Location[] {Location.create(3163, 3464, 0)},14646,14644,14642,14640,14638); + RING_OF_WEALTH(new String[] {"Miscellania", "Grand Exchange", "Falador Park", "Dondakan's Rock", "Nowhere."}, new Location[] {Location.create(2533, 3864, 0), Location.create(3163, 3464, 0), Location.create(2995, 3375, 0), Location.create(2829, 10166, 0)},14646,14644,14642,14640,14638); /** * Represents the teleport animation. diff --git a/Server/src/main/java/core/game/content/quest/members/thetouristrap/MercenaryCaptainDialogue.java b/Server/src/main/java/core/game/content/quest/members/thetouristrap/MercenaryCaptainDialogue.java index 43f74baf4..02b7a751f 100644 --- a/Server/src/main/java/core/game/content/quest/members/thetouristrap/MercenaryCaptainDialogue.java +++ b/Server/src/main/java/core/game/content/quest/members/thetouristrap/MercenaryCaptainDialogue.java @@ -194,7 +194,9 @@ public final class MercenaryCaptainDialogue extends DialoguePlugin { player.getInventory().add(TouristTrap.METAL_KEY, player); player.getDialogueInterpreter().sendItemMessage(TouristTrap.METAL_KEY, "The mercenary captain drops a metal key on the floor.", "You quickly grab the key and add it to your inventory."); } - quest.setStage(player, 20); + if(quest.getStage(player) < 20) { + quest.setStage(player, 20); + } break; } } diff --git a/Server/src/main/java/core/game/content/ttrail/ClueLevel.java b/Server/src/main/java/core/game/content/ttrail/ClueLevel.java index 85a8a76b9..9ea5e4775 100644 --- a/Server/src/main/java/core/game/content/ttrail/ClueLevel.java +++ b/Server/src/main/java/core/game/content/ttrail/ClueLevel.java @@ -26,6 +26,31 @@ import java.util.List; public enum ClueLevel { EASY(new Item(2714), 1 << 16 | 5, + // bronze (g) + new ChanceItem(14664, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(14658, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(14660, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(14662, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(14666, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(14668, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(14670, 1, 1, DropFrequency.UNCOMMON), + // iron (g) + new ChanceItem(14678, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(14672, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(14674, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(14676, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(14680, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(14682, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(14684, 1, 1, DropFrequency.UNCOMMON), + // steel (g) + new ChanceItem(14692, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(14686, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(14688, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(14690, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(14694, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(14696, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(14698, 1, 1, DropFrequency.UNCOMMON), + // berets new ChanceItem(Items.BLUE_BERET_2633, 1, 1, DropFrequency.UNCOMMON), new ChanceItem(Items.BLACK_BERET_2635, 1, 1, DropFrequency.UNCOMMON), new ChanceItem(Items.WHITE_BERET_2637, 1, 1, DropFrequency.UNCOMMON), @@ -170,6 +195,14 @@ public enum ClueLevel { new ChanceItem(Items.STUDDED_BODY_1133, 1, 1, DropFrequency.COMMON)), MEDIUM(new Item(2717), 1 << 16 | 6, + // mithril (g) + new ChanceItem(14706, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(14700, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(14702, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(14704, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(14708, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(14710, 1, 1, DropFrequency.UNCOMMON), + new ChanceItem(14712, 1, 1, DropFrequency.UNCOMMON), // Trimmed // addy // shit diff --git a/Server/src/main/java/core/game/content/zone/fremmenik/FremmenikPlugin.java b/Server/src/main/java/core/game/content/zone/fremmenik/FremmenikPlugin.java deleted file mode 100644 index ff42e1fdb..000000000 --- a/Server/src/main/java/core/game/content/zone/fremmenik/FremmenikPlugin.java +++ /dev/null @@ -1,30 +0,0 @@ -package core.game.content.zone.fremmenik; - -import core.cache.def.impl.NPCDefinition; -import core.game.interaction.OptionHandler; -import core.game.node.Node; -import core.game.node.entity.player.Player; -import core.plugin.Plugin; - -/** - * Handles the fremmenik plugin. - * @author Vexia - */ -public class FremmenikPlugin extends OptionHandler { - - @Override - public Plugin newInstance(Object arg) throws Throwable { - NPCDefinition.forId(5508).getHandlers().put("option:ferry-neitiznot", this); - return this; - } - - @Override - public boolean handle(Player player, Node node, String option) { - switch (option) { - case "ferry-neitiznot": - return true; - } - return true; - } - -} diff --git a/Server/src/main/java/core/game/content/zone/rellekka/RellekkaZone.java b/Server/src/main/java/core/game/content/zone/rellekka/RellekkaZone.java index 9aca35a5c..370b54464 100644 --- a/Server/src/main/java/core/game/content/zone/rellekka/RellekkaZone.java +++ b/Server/src/main/java/core/game/content/zone/rellekka/RellekkaZone.java @@ -76,9 +76,6 @@ public final class RellekkaZone extends MapZone implements Plugin { * (option.equals("Trade") ? "buy clothes here" : * "change their shoes here") + "."); return true; */ - //case 4148: - // player.getDialogueInterpreter().sendDialogues(1278, null, "Hey, outerlander. You can't go through there. Talent", "only, backstage."); - // return true; case 100: player.getDialogueInterpreter().sendDialogue("You try to open the trapdoor but it won't budge! It looks like the", "trapdoor can only be opened from the other side."); return true; diff --git a/Server/src/main/java/core/game/interaction/item/withitem/CapeDyeingPlugin.java b/Server/src/main/java/core/game/interaction/item/withitem/CapeDyeingPlugin.java deleted file mode 100644 index 861a1e27b..000000000 --- a/Server/src/main/java/core/game/interaction/item/withitem/CapeDyeingPlugin.java +++ /dev/null @@ -1,165 +0,0 @@ -/* -package core.game.interaction.item.withitem; - -import org.rs09.consts.Items; -import core.game.content.global.Dyes; -import core.game.content.global.action.SpecialLadders; -import core.game.interaction.NodeUsageEvent; -import core.game.interaction.UseWithHandler; -import core.game.node.entity.player.Player; -import core.game.node.entity.player.link.diary.DiaryType; -import core.game.node.item.Item; -import core.game.world.map.Location; -import core.plugin.InitializablePlugin; -import core.plugin.Plugin; - -import java.util.Arrays; -import java.util.HashMap; -import java.util.stream.Stream; - -*/ -/** - * Handles the dyeing of a cape. - * @author afaroutdude - *//* - -@InitializablePlugin -public final class CapeDyeingPlugin extends UseWithHandler { - - */ -/** - * Constructs a new {@code CapeDyeingPlugin} {@code Object}. - *//* - - public CapeDyeingPlugin() { - super(Cape.getIds()); - } - - @Override - public Plugin newInstance(Object arg) throws Throwable { - for (Cape c : Cape.values()) { - addHandler(c.getDye().getItem().getId(), ITEM_TYPE, this); - } - return this; - } - - @Override - public boolean handle(NodeUsageEvent event) { - final Player player = event.getPlayer(); - final boolean testCape = Cape.isCape(event.getBaseItem()); - final Item cape = Cape.isCape(event.getBaseItem()) ? event.getBaseItem() : event.getUsedItem(); - final Item dye = Cape.isCape(event.getBaseItem()) ? event.getUsedItem() : event.getBaseItem(); - final Item dyedCape = MAP_DYE_TO_CAPE.get(dye); - if (dyedCape == null) { - return false; - } - if (!cape.equals(dyedCape) && player.getInventory().containsItems(dye, cape) && player.getInventory().remove(dye, cape)) { - player.getInventory().add(dyedCape); - if (dye.equals(Dyes.BLACK.getItem())) { - player.getInventory().add(new Item(Items.VIAL_229)); - } - if (dye.equals(Dyes.PINK.getItem()) && !player.getAchievementDiaryManager().getDiary(DiaryType.FALADOR).isComplete(2,5)) { - player.getAchievementDiaryManager().getDiary(DiaryType.FALADOR).updateTask(player,2,5,true); - } - } - return true; - } - - */ -/** - * A cape to dye. - * @author Vexia - *//* - - public enum Cape { - BLACK(Dyes.BLACK, new Item(1019)), - RED(Dyes.RED, new Item(1007)), - BLUE(Dyes.BLUE, new Item(1021)), - YELLOW(Dyes.YELLOW, new Item(1023)), - GREEN(Dyes.GREEN, new Item(1027)), - PURPLE(Dyes.PURPLE, new Item(1029)), - ORANGE(Dyes.ORANGE, new Item(1031)), - PINK(Dyes.PINK, new Item(6959)); - - */ -/** - * The dye for the cape. - *//* - - private final Dyes dye; - - */ -/** - * The cape item. - *//* - - private final Item cape; - - */ -/** - * Constructs a new {@code Cape} {@code Object}. - * @param dye the dye. - * @param cape the cape. - *//* - - Cape(Dyes dye, Item cape) { - this.dye = dye; - this.cape = cape; - } - - */ -/** - * Gets the dye. - * @return The dye. - *//* - - public Dyes getDye() { - return dye; - } - - */ -/** - * Gets the cape. - * @return The cape. - *//* - - public Item getCape() { - return cape; - } - - */ -/** - * @return an int array of all cape IDs - *//* - - static public int[] getIds() { - return Stream.of(Cape.values()) - .map(Cape::getCape) - .map(Item::getId) - .mapToInt(Integer::intValue).toArray(); - } - - */ -/** - * @param potentiallyCape - * @return true if passed item is a cape that we can handle - *//* - - static public boolean isCape(Item potentiallyCape){ - for (Cape c : Cape.values()) { - if (c.getCape().getId() == potentiallyCape.getId()) { - return true; - } - } - return false; - } - } - - public static HashMap MAP_DYE_TO_CAPE = new HashMap<>(); - static { - for (Cape c : Cape.values()) { - MAP_DYE_TO_CAPE.putIfAbsent(c.getDye().getItem(), c.getCape()); - } - } -} -*/ diff --git a/Server/src/main/java/core/game/interaction/item/withitem/ChestKeyPlugin.java b/Server/src/main/java/core/game/interaction/item/withitem/ChestKeyPlugin.java deleted file mode 100644 index c3bb454f3..000000000 --- a/Server/src/main/java/core/game/interaction/item/withitem/ChestKeyPlugin.java +++ /dev/null @@ -1,56 +0,0 @@ -package core.game.interaction.item.withitem; - -import core.game.interaction.NodeUsageEvent; -import core.game.interaction.UseWithHandler; -import core.game.node.entity.player.Player; -import core.game.node.item.Item; -import core.game.node.scenery.Scenery; -import core.game.node.scenery.SceneryBuilder; -import core.plugin.Initializable; -import core.plugin.Plugin; - -/** - * Represents the plugin used to handle the usage of a chest key on the chest. - * @author 'Vexia - * @version 1.0 - */ -@Initializable -public final class ChestKeyPlugin extends UseWithHandler { - - /** - * Represents the chest key item. - */ - private static final Item CHEST_KEY = new Item(432); - - /** - * Represents the pirate message item. - */ - private static final Item PIRATE_MESSAGE = new Item(433); - - /** - * Constructs a new {@code ChestKeyPlugin} {@code Object}. - */ - public ChestKeyPlugin() { - super(432); - } - - @Override - public Plugin newInstance(Object arg) throws Throwable { - addHandler(2079, OBJECT_TYPE, this); - return this; - } - - @Override - public boolean handle(NodeUsageEvent event) { - final Player player = event.getPlayer(); - if (player.getInventory().remove(CHEST_KEY)) { - SceneryBuilder.replace((Scenery) event.getUsedWith(), ((Scenery) event.getUsedWith()).transform(2080), 3); - player.getInventory().add(PIRATE_MESSAGE); - player.getPacketDispatch().sendMessage("You unlock the chest."); - player.getPacketDispatch().sendMessage("All that's in the chest is a message..."); - player.getPacketDispatch().sendMessage("You take the message from the chest."); - } - return true; - } - -} diff --git a/Server/src/main/java/core/game/interaction/item/withitem/CrystalKeyCreatePlugin.java b/Server/src/main/java/core/game/interaction/item/withitem/CrystalKeyCreatePlugin.java deleted file mode 100644 index 63e8275c0..000000000 --- a/Server/src/main/java/core/game/interaction/item/withitem/CrystalKeyCreatePlugin.java +++ /dev/null @@ -1,46 +0,0 @@ -package core.game.interaction.item.withitem; - -import core.game.interaction.NodeUsageEvent; -import core.game.interaction.UseWithHandler; -import core.game.node.entity.player.Player; -import core.game.node.item.Item; -import core.plugin.Initializable; -import core.plugin.Plugin; - -/** - * Represents the plugin used to handle the creation of a crystal key. - * @author 'Vexia - * @version 1.0 - */ -@Initializable -public final class CrystalKeyCreatePlugin extends UseWithHandler { - - /** - * Represents the crystal key item. - */ - private static final Item KEY = new Item(989, 1); - - /** - * Constructs a new {@code CrystalKeyCreatePlugin} {@code Object}. - */ - public CrystalKeyCreatePlugin() { - super(985); - } - - @Override - public boolean handle(NodeUsageEvent event) { - final Player player = event.getPlayer(); - if (player.getInventory().remove(event.getBaseItem(), event.getUsedItem())) { - player.getInventory().add(KEY); - player.getPacketDispatch().sendMessage("You join the loop half of a key and the tooth half of a key to make a crystal key."); - } - return true; - } - - @Override - public Plugin newInstance(Object arg) throws Throwable { - addHandler(987, ITEM_TYPE, this); - return this; - } - -} diff --git a/Server/src/main/java/core/game/interaction/item/withitem/DarkBowDyePlugin.java b/Server/src/main/java/core/game/interaction/item/withitem/DarkBowDyePlugin.java deleted file mode 100644 index 881f75e7c..000000000 --- a/Server/src/main/java/core/game/interaction/item/withitem/DarkBowDyePlugin.java +++ /dev/null @@ -1,121 +0,0 @@ -package core.game.interaction.item.withitem; -import core.game.content.dialogue.DialogueAction; -import core.game.interaction.NodeUsageEvent; -import core.game.interaction.UseWithHandler; -import core.game.node.entity.player.Player; -import core.game.node.item.Item; -import core.plugin.Plugin; -import core.plugin.Initializable; -import rs09.plugin.PluginManager; - -/** - * The plugin used to dye a dark bow into a more one. - * @author Splinter - * @version 1.0 - */ -@Initializable -public final class DarkBowDyePlugin extends UseWithHandler { - - - /** - * Constructs a new {@code DarkBowDyePlugin} {@code Object}. - */ - public DarkBowDyePlugin() { - super(11235); - } - - @Override - public Plugin newInstance(Object arg) throws Throwable { - addHandler(14795, ITEM_TYPE, this); - addHandler(14797, ITEM_TYPE, this); - addHandler(14799, ITEM_TYPE, this); - addHandler(14801, ITEM_TYPE, this); - PluginManager.definePlugin(new DarkBowCleanPlugin()); - return this; - } - - @Override - public boolean handle(final NodeUsageEvent event) { - final Player player = event.getPlayer(); - player.getDialogueInterpreter().sendOptions("Apply "+event.getUsedItem().getName().replace("dark bow paint", "paint?").toLowerCase(), "Yes", "No"); - player.getDialogueInterpreter().addAction(new DialogueAction() { - - @Override - public void handle(Player player, int buttonId) { - switch (buttonId) { - case 2: - if (player.getInventory().remove(event.getBaseItem()) && player.getInventory().remove(event.getUsedItem())) { - player.getInventory().add(getResult(event.getUsedItem().getId())); - player.sendMessage("You dye the bow into a more fashionable version."); - } - break; - } - } - - }); - return true; - } - - /** - * Gets the resulting colored dark bow. - * @return the item - */ - private Item getResult(int dyeId){ - switch(dyeId){ - case 14797: - return new Item(14803, 1); - case 14795: - return new Item(14804, 1); - case 14799: - return new Item(14805, 1); - case 14801: - return new Item(14806, 1); - } - return null; - } - - /** - * Cleans the dark bow and removes the paint. - * @author Andrew - */ - public final class DarkBowCleanPlugin extends UseWithHandler { - - /** - * Constructs a new {@code DarkBowCleanPlugin} {@code Object}. - */ - public DarkBowCleanPlugin() { - super(3188); - } - - @Override - public Plugin newInstance(Object arg) throws Throwable { - addHandler(14803, ITEM_TYPE, this); - addHandler(14804, ITEM_TYPE, this); - addHandler(14805, ITEM_TYPE, this); - addHandler(14806, ITEM_TYPE, this); - return this; - } - - @Override - public boolean handle(final NodeUsageEvent event) { - final Player player = event.getPlayer(); - player.getDialogueInterpreter().sendOptions("Wipe the paint off?", "Yes", "No"); - player.getDialogueInterpreter().addAction(new DialogueAction() { - - @Override - public void handle(Player player, int buttonId) { - switch (buttonId) { - case 2: - if (player.getInventory().remove(event.getBaseItem()) && player.getInventory().remove(event.getUsedItem())) { - player.getInventory().add(new Item(11235, 1)); - player.sendMessage("You wipe the paint off with the cleaning cloth, then toss it away."); - } - break; - } - } - - }); - return true; - } - } -} diff --git a/Server/src/main/java/core/game/interaction/item/withitem/FruitCuttingDialogue.java b/Server/src/main/java/core/game/interaction/item/withitem/FruitCuttingDialogue.java new file mode 100644 index 000000000..9ca809b57 --- /dev/null +++ b/Server/src/main/java/core/game/interaction/item/withitem/FruitCuttingDialogue.java @@ -0,0 +1,150 @@ +package core.game.interaction.item.withitem; + +import static api.ContentAPIKt.*; +import core.game.component.Component; +import core.plugin.Initializable; +import kotlin.Unit; +import org.rs09.consts.Items; +import core.game.content.dialogue.DialoguePlugin; +import core.game.interaction.NodeUsageEvent; +import core.game.interaction.UseWithHandler; +import core.game.node.entity.player.Player; +import core.game.node.entity.player.link.RunScript; +import core.game.node.item.Item; +import core.game.world.update.flag.context.Animation; +import core.plugin.Plugin; +import rs09.game.interaction.item.withitem.FruitSlicing; + +/** + * Represents the fruit cutting plugin. + * @author 'Vexia + * @version 1.0 + */ +@Initializable +public final class FruitCuttingDialogue extends DialoguePlugin { + + /** + * Represents the component interface. + */ + private static final Component COMPONENT = new Component(140); + + /** + * Represents the fruit. + */ + private FruitSlicing.Fruit fruit; + + /** + * Represents the fruit to cut. + */ + private Item item; + + /** + * Represents if its a sliced cut. + */ + private boolean slice; + + /** + * Constructs a new {@code FruitCuttingDialogue} {@code Object}. + */ + public FruitCuttingDialogue() { + /** + * empty. + */ + } + + /** + * Constructs a new {@code FruitCuttingDialogue} {@code Object}. + * @param player the player. + */ + public FruitCuttingDialogue(Player player) { + super(player); + } + + @Override + public DialoguePlugin newInstance(Player player) { + return new FruitCuttingDialogue(player); + } + + @Override + public boolean open(Object... args) { + fruit = ((FruitSlicing.Fruit) args[0]); + player.getPacketDispatch().sendString("Would you like to...", 140, 4); + player.getPacketDispatch().sendItemOnInterface(fruit.getSliced().getId(), 1, 140, 5); + player.getPacketDispatch().sendItemOnInterface(fruit.getDiced().getId(), 1, 140, 6); + player.getPacketDispatch().sendString("Slice the " + fruit.getBase().getName().toLowerCase() + ".", 140, 2); + player.getPacketDispatch().sendString("Dice the " + fruit.getBase().getName().toLowerCase() + ".", 140, 3); + player.getInterfaceManager().openChatbox(COMPONENT); + stage = 0; + return true; + } + + @Override + public boolean handle(int interfaceId, int buttonId) { + switch (stage) { + case 0: + player.getInterfaceManager().openChatbox(309); + player.getPacketDispatch().sendItemZoomOnInterface(1, 160, 309, 2); + slice = buttonId == 2 ? false : true; + item = buttonId == 2 ? fruit.getDiced() : fruit.getSliced(); + player.getPacketDispatch().sendString("



" + item.getName(), 309, 6); + player.getPacketDispatch().sendItemZoomOnInterface(item.getId(), 175, 309, 2); + stage = 1; + break; + case 1: + int amount = 0; + switch (buttonId) { + case 6: + amount = 1; + break; + case 5: + amount = 5; + break; + case 4: + sendInputDialogue(player, false, "Enter the amount:", (value) -> { + String s = value.toString(); + s = s.replace("k","000"); + s = s.replace("K","000"); + int val = Integer.parseInt(s); + cut(player, val, slice); + return Unit.INSTANCE; + }); + return true; + case 3: + amount = player.getInventory().getAmount(fruit.getBase()); + break; + } + cut(player, amount, slice); + break; + } + return true; + } + + @Override + public int[] getIds() { + return new int[] { 31237434 }; + } + + /** + * Method used to cut a fruit. + * @param player the player. + * @param amount the amount. + * @param slice if its sliced. + */ + private final void cut(final Player player, int amount, boolean slice) { + if (amount > player.getInventory().getAmount(fruit.getBase())) { + amount = player.getInventory().getAmount(fruit.getBase()); + } + end(); + final Item remove = new Item(fruit.getBase().getId(), amount); + if (!player.getInventory().containsItem(remove)) { + return; + } + if (player.getInventory().remove(remove)) { + player.getPacketDispatch().sendMessage("You cut the " + fruit.name().toLowerCase() + " into " + (slice ? fruit == FruitSlicing.Fruit.PINEAPPLE ? "rings" : "slices" : "chunks") + "."); + for (int i = 0; i < amount; i++) { + player.getInventory().add(slice ? fruit.getSliced() : fruit.getDiced()); + } + } + } + +} \ No newline at end of file diff --git a/Server/src/main/java/core/game/interaction/item/withitem/FruitCuttingPlugin.java b/Server/src/main/java/core/game/interaction/item/withitem/FruitCuttingPlugin.java deleted file mode 100644 index 6b0fc2829..000000000 --- a/Server/src/main/java/core/game/interaction/item/withitem/FruitCuttingPlugin.java +++ /dev/null @@ -1,273 +0,0 @@ -package core.game.interaction.item.withitem; - -import static api.ContentAPIKt.*; -import core.game.component.Component; -import core.plugin.Initializable; -import kotlin.Unit; -import org.rs09.consts.Items; -import core.game.content.dialogue.DialoguePlugin; -import core.game.interaction.NodeUsageEvent; -import core.game.interaction.UseWithHandler; -import core.game.node.entity.player.Player; -import core.game.node.entity.player.link.RunScript; -import core.game.node.item.Item; -import core.game.world.update.flag.context.Animation; -import core.plugin.Plugin; - -/** - * Represents the fruit cutting plugin. - * @author 'Vexia - * @version 1.0 - */ -@Initializable -public final class FruitCuttingPlugin extends UseWithHandler { - - /** - * Represents the cutting banana animation. - */ - private static final Animation ANIMATION = new Animation(1192); - - /** - * Constructs a new {@code FruitCuttingPlugin} {@code Object}. - */ - public FruitCuttingPlugin() { - super(946); - } - - @Override - public Plugin newInstance(Object arg) throws Throwable { - for (Fruit fruit : Fruit.values()) { - addHandler(fruit.getBase().getId(), ITEM_TYPE, this); - } - new FruitCuttingDialogue().init(); - return this; - } - - @Override - public boolean handle(NodeUsageEvent event) { - final Player player = event.getPlayer(); - final Fruit fruit = Fruit.forBase(event.getUsedItem()); - if (fruit == Fruit.BANANA || fruit == Fruit.LEMON) { - if (player.getInventory().remove(fruit.getBase())) { - player.lock(2); - player.animate(ANIMATION); - player.getInventory().add(fruit.getSliced()); - player.getPacketDispatch().sendMessage("You deftly chop the "+ fruit.name().toLowerCase() + " into slices."); - } - return true; - } - player.getDialogueInterpreter().open(31237434, fruit); - return true; - } - - /** - * Represents the a fruit to cut. - * @author 'Vexia - * @date 30/11/2013 - */ - public enum Fruit { - PINEAPPLE(new Item(2114), new Item(2116), new Item(2118, 4)), - BANANA(new Item(1963), null, new Item(3162)), - LEMON(new Item(2102), new Item(Items.LEMON_CHUNKS_2104), new Item(2106)), - LIME(new Item(Items.LIME_2120),new Item(Items.LIME_CHUNKS_2122), new Item(Items.LIME_SLICES_2124)), - ORANGE(new Item(2108), new Item(2110), new Item(2112)); - - /** - * Constructs a new {@code FruitCuttingPlugin.java} {@code Object}. - * @param base the base item. - * @param diced the diced item. - * @param sliced the sliced item. - */ - Fruit(Item base, Item diced, Item sliced) { - this.base = base; - this.diced = diced; - this.sliced = sliced; - } - - /** - * Represents the base item. - */ - private final Item base; - - /** - * Represents the diced item. - */ - private final Item diced; - - /** - * Represents the sliced item. - */ - private final Item sliced; - - /** - * Gets the base. - * @return The base. - */ - public Item getBase() { - return base; - } - - /** - * Gets the diced. - * @return The diced. - */ - public Item getDiced() { - return diced; - } - - /** - * Gets the sliced. - * @return The sliced. - */ - public Item getSliced() { - return sliced; - } - - /** - * Method used to get the fruit for the base item. - * @param item the item. - * @return the fruit. - */ - public static Fruit forBase(final Item item) { - for (Fruit fruit : values()) { - if (fruit.getBase().getId() == item.getId()) { - return fruit; - } - } - return null; - } - } - - /** - * Represents the dialogue plugin used to cut fruit. - * @author 'Vexia - * @version 1.0 - */ - public static final class FruitCuttingDialogue extends DialoguePlugin { - - /** - * Represents the component interface. - */ - private static final Component COMPONENT = new Component(140); - - /** - * Represents the fruit. - */ - private Fruit fruit; - - /** - * Represents the fruit to cut. - */ - private Item item; - - /** - * Represents if its a sliced cut. - */ - private boolean slice; - - /** - * Constructs a new {@code FruitCuttingDialogue} {@code Object}. - */ - public FruitCuttingDialogue() { - /** - * empty. - */ - } - - /** - * Constructs a new {@code FruitCuttingDialogue} {@code Object}. - * @param player the player. - */ - public FruitCuttingDialogue(Player player) { - super(player); - } - - @Override - public DialoguePlugin newInstance(Player player) { - return new FruitCuttingDialogue(player); - } - - @Override - public boolean open(Object... args) { - fruit = ((Fruit) args[0]); - player.getPacketDispatch().sendString("Would you like to...", 140, 4); - player.getPacketDispatch().sendItemOnInterface(fruit.getSliced().getId(), 1, 140, 5); - player.getPacketDispatch().sendItemOnInterface(fruit.getDiced().getId(), 1, 140, 6); - player.getPacketDispatch().sendString("Slice the " + fruit.getBase().getName().toLowerCase() + ".", 140, 2); - player.getPacketDispatch().sendString("Dice the " + fruit.getBase().getName().toLowerCase() + ".", 140, 3); - player.getInterfaceManager().openChatbox(COMPONENT); - stage = 0; - return true; - } - - @Override - public boolean handle(int interfaceId, int buttonId) { - switch (stage) { - case 0: - player.getInterfaceManager().openChatbox(309); - player.getPacketDispatch().sendItemZoomOnInterface(1, 160, 309, 2); - slice = buttonId == 2 ? false : true; - item = buttonId == 2 ? fruit.getDiced() : fruit.getSliced(); - player.getPacketDispatch().sendString("



" + item.getName(), 309, 6); - player.getPacketDispatch().sendItemZoomOnInterface(item.getId(), 175, 309, 2); - stage = 1; - break; - case 1: - int amount = 0; - switch (buttonId) { - case 6: - amount = 1; - break; - case 5: - amount = 5; - break; - case 4: - sendInputDialogue(player, false, "Enter the amount:", (value) -> { - String s = value.toString(); - s = s.replace("k","000"); - s = s.replace("K","000"); - int val = Integer.parseInt(s); - cut(player, val, slice); - return Unit.INSTANCE; - }); - return true; - case 3: - amount = player.getInventory().getAmount(fruit.getBase()); - break; - } - cut(player, amount, slice); - break; - } - return true; - } - - @Override - public int[] getIds() { - return new int[] { 31237434 }; - } - - /** - * Method used to cut a fruit. - * @param player the player. - * @param amount the amount. - * @param slice if its sliced. - */ - private final void cut(final Player player, int amount, boolean slice) { - if (amount > player.getInventory().getAmount(fruit.getBase())) { - amount = player.getInventory().getAmount(fruit.getBase()); - } - end(); - final Item remove = new Item(fruit.getBase().getId(), amount); - if (!player.getInventory().containsItem(remove)) { - return; - } - if (player.getInventory().remove(remove)) { - player.getPacketDispatch().sendMessage("You cut the " + fruit.name().toLowerCase() + " into " + (slice ? fruit == Fruit.PINEAPPLE ? "rings" : "slices" : "chunks") + "."); - for (int i = 0; i < amount; i++) { - player.getInventory().add(slice ? fruit.getSliced() : fruit.getDiced()); - } - } - } - - } -} diff --git a/Server/src/main/java/core/game/interaction/item/withitem/GodswordHiltAttachPlugin.java b/Server/src/main/java/core/game/interaction/item/withitem/GodswordHiltAttachPlugin.java deleted file mode 100644 index 67804f9a1..000000000 --- a/Server/src/main/java/core/game/interaction/item/withitem/GodswordHiltAttachPlugin.java +++ /dev/null @@ -1,57 +0,0 @@ -package core.game.interaction.item.withitem; - -import core.game.interaction.NodeUsageEvent; -import core.game.interaction.UseWithHandler; -import core.game.node.entity.player.Player; -import core.game.node.item.Item; -import core.plugin.Plugin; -import core.plugin.Initializable; -import core.tools.StringUtils; - -/** - * Handles the attaching of a hilt on the godsword blade. - * @author Emperor - * @version 1.0 - */ -@Initializable -public final class GodswordHiltAttachPlugin extends UseWithHandler { - - /** - * Constructs a new {@code GodswordHiltAttachPlugin} {@code Object}. - */ - public GodswordHiltAttachPlugin() { - super(11702, 11704, 11706, 11708); - } - - @Override - public boolean handle(NodeUsageEvent event) { - Item item = event.getUsedItem(); - if (item == null) - return false; - Item baseItem = event.getBaseItem(); - Player player = event.getPlayer(); - if (!player.getInventory().containsItem(item) || !player.getInventory().containsItem(baseItem)) { - return false; - } - if (player.getInventory().replace(null, item.getSlot(), false) != item || player.getInventory().replace(null, baseItem.getSlot(), false) != baseItem) { - player.getInventory().update(); - return false; - } - item = new Item(item.getId() - 8); - player.getInventory().add(item); - String name = item.getDefinition().getName(); - player.getPacketDispatch().sendMessage("You attach the hilt to the blade and make a" + (StringUtils.isPlusN(name) ? "n " : " ") + name + "."); - return true; - } - - @Override - public Plugin newInstance(Object arg) throws Throwable { - // In case of item-on-item: register the lowest item id - in this case - // godsword blade) - // (eg. if one item is 1521 and the other is 842 -> 842 should be - // registered) - addHandler(11690, ITEM_TYPE, this); - return this; - } - -} diff --git a/Server/src/main/java/core/game/interaction/item/withitem/GraniteMaulPlugin.java b/Server/src/main/java/core/game/interaction/item/withitem/GraniteMaulPlugin.java deleted file mode 100644 index b2cddcb7a..000000000 --- a/Server/src/main/java/core/game/interaction/item/withitem/GraniteMaulPlugin.java +++ /dev/null @@ -1,100 +0,0 @@ -package core.game.interaction.item.withitem; - -import core.cache.def.impl.ItemDefinition; -import core.plugin.Initializable; -import core.game.content.dialogue.DialogueAction; -import core.game.interaction.NodeUsageEvent; -import core.game.interaction.OptionHandler; -import core.game.interaction.UseWithHandler; -import core.game.node.Node; -import core.game.node.entity.player.Player; -import core.game.node.item.Item; -import core.plugin.Plugin; -import rs09.plugin.PluginManager; - -/** - * The plugin used to make the granite maul into the ornamental version. - * @author Splinter - * @version 1.0 - */ -@Initializable -public final class GraniteMaulPlugin extends UseWithHandler { - - - /** - * Constructs a new {@code GraniteMaulPlugin} {@code Object}. - */ - public GraniteMaulPlugin() { - super(4153); - } - - @Override - public Plugin newInstance(Object arg) throws Throwable { - PluginManager.definePlugin(new GraniteMaulRevertHandler()); - addHandler(14793, ITEM_TYPE, this); - return this; - } - - @Override - public boolean handle(final NodeUsageEvent event) { - final Player player = event.getPlayer(); - player.getDialogueInterpreter().sendOptions("Attach the clamp?", "Yes", "No"); - player.getDialogueInterpreter().addAction(new DialogueAction() { - - @Override - public void handle(Player player, int buttonId) { - switch (buttonId) { - case 2: - if (player.getInventory().remove(event.getBaseItem()) && player.getInventory().remove(event.getUsedItem())) { - player.getInventory().add(new Item(14792, 1)); - player.sendMessage("You attach the clamp to the granite maul, making it slightly more fashionable."); - } - break; - } - } - - }); - return true; - } - - /** - * Handles the removal of the ornamental kit. - * @author Splinter - */ - public final class GraniteMaulRevertHandler extends OptionHandler { - - @Override - public Plugin newInstance(Object arg) throws Throwable { - ItemDefinition.forId(14792).getHandlers().put("option:revert", this); - return null; - } - - @Override - public boolean handle(Player player, Node node, String option) { - final Item item = (Item) node; - player.getDialogueInterpreter().sendOptions("Remove the clamp?", "Yes", "No"); - player.getDialogueInterpreter().addAction(new DialogueAction() { - - @Override - public void handle(Player player, int buttonId) { - switch (buttonId) { - case 2: - if(player.getInventory().remove(item)){ - player.getInventory().add(new Item(4153, 1)); - player.sendMessage("You remove the clamp from your maul, and in the process, it is destroyed."); - } - break; - } - } - - }); - return true; - } - - @Override - public boolean isWalk() { - return false; - } - } - -} diff --git a/Server/src/main/java/core/game/interaction/item/withitem/GraniteSplittingPlugin.java b/Server/src/main/java/core/game/interaction/item/withitem/GraniteSplittingPlugin.java deleted file mode 100644 index 46bccd928..000000000 --- a/Server/src/main/java/core/game/interaction/item/withitem/GraniteSplittingPlugin.java +++ /dev/null @@ -1,64 +0,0 @@ -package core.game.interaction.item.withitem; - -import core.game.interaction.NodeUsageEvent; -import core.game.interaction.UseWithHandler; -import core.game.node.item.Item; -import core.plugin.Initializable; -import core.plugin.Plugin; - -/** - * Used to handle the reward of splitting granite with a chisel in to smaller - * pieces. - * @author Splinter - */ -@Initializable -public class GraniteSplittingPlugin extends UseWithHandler { - - public GraniteSplittingPlugin() { - super(1755); - } - - /** - * Represents the 5kg granite - */ - private static final Item FIVE_KG = new Item(6983, 1); - - /** - * Represents the 2kg granite - */ - private static final Item TWO_KG = new Item(6981, 1); - - @Override - public boolean handle(NodeUsageEvent event) { - if (event.getUsedItem().getId() == 6981) { - if (event.getPlayer().getInventory().freeSlots() < 4) { - event.getPlayer().getPacketDispatch().sendMessage("You need four inventory slots to split this."); - } else { - if (event.getPlayer().getInventory().remove(TWO_KG)) { - event.getPlayer().getInventory().add(new Item(6979, 4)); - event.getPlayer().getPacketDispatch().sendMessage("You chisel the 2kg granite into four smaller pieces."); - } - } - } - if (event.getUsedItem().getId() == 6983) { - if (event.getPlayer().getInventory().freeSlots() < 4) { - event.getPlayer().getPacketDispatch().sendMessage("You need four inventory slots to split this."); - } else { - if (event.getPlayer().getInventory().remove(FIVE_KG)) { - event.getPlayer().getInventory().add(new Item(6981, 2)); - event.getPlayer().getInventory().add(new Item(6979, 2)); - event.getPlayer().getPacketDispatch().sendMessage("You chisel the 5kg granite into four smaller pieces."); - } - } - } - return true; - } - - @Override - public Plugin newInstance(Object arg) throws Throwable { - addHandler(6981, ITEM_TYPE, this); - addHandler(6983, ITEM_TYPE, this); - return this; - } - -} diff --git a/Server/src/main/java/core/game/interaction/item/withitem/ImpJarCreatePlugin.java b/Server/src/main/java/core/game/interaction/item/withitem/ImpJarCreatePlugin.java deleted file mode 100644 index 30b90a001..000000000 --- a/Server/src/main/java/core/game/interaction/item/withitem/ImpJarCreatePlugin.java +++ /dev/null @@ -1,161 +0,0 @@ -package core.game.interaction.item.withitem; - -import core.game.interaction.NodeUsageEvent; -import core.game.interaction.UseWithHandler; -import core.game.node.entity.player.Player; -import core.game.node.item.Item; -import core.game.node.scenery.Scenery; -import core.plugin.Initializable; -import core.plugin.Plugin; - -/** - * Handles the creating of an imp jar. - * @author Vexia - */ -@Initializable -public final class ImpJarCreatePlugin extends UseWithHandler { - - /** - * The flower ids. - */ - private static final int[] FLOWERS = new int[] { 2460, 2461, 2462, 2463, 2464, 2465, 2466, 2467, 2468, 2469, 2470, 2471, 2472, 2473, 2474, 2475, 2476, 2477 }; - - /** - * Constructs a new {@code ImpJarCreatePlugin} {@code Object}. - */ - public ImpJarCreatePlugin() { - super(6097, 11264, 1939, 4525, 4535, 4546, 4700, 11262, 10012); - } - - @Override - public Plugin newInstance(Object arg) throws Throwable { - addHandler(11266, ITEM_TYPE, this); - for (int i : FLOWERS) { - addHandler(i, ITEM_TYPE, this); - } - for (int i : getValidChildren(5908)) { - addHandler(i, OBJECT_TYPE, this); - } - addHandler(5909, OBJECT_TYPE, this); - return this; - } - - @Override - public boolean handle(NodeUsageEvent event) { - Player player = event.getPlayer(); - if (event.getUsedWith() instanceof Scenery) { - if ((event.getUsedItem().getId() >= 4525 && event.getUsedItem().getId() <= 4700) || event.getUsedItem().getId() == 1939 || event.getUsedItem().getId() == 11262 || event.getUsedItem().getId() == 10012) { - fillOilStill(player, event.getUsedItem()); - } - return true; - } - if (((Item) event.getUsedWith()).getId() == 6097) { - makeOil(player); - } else if (event.getUsedItem().getId() == 11264) { - makeRepellent(player, event.getUsedItem(), (Item) event.getUsedWith()); - } - return true; - } - - /** - * Fills the oil still. - * @param player the player. - */ - private void fillOilStill(Player player, Item used) { - int configValue = player.getConfigManager().get(425); - if (used.getId() == 11262 || used.getId() == 10012) { - if (configValue == 0 && used.getId() == 11262) { - player.getInventory().replace(new Item(229), used.getSlot()); - player.sendMessage("You refine some imp repellent."); - player.getConfigManager().set(425, 64, true); - return; - } else if (configValue == 32) { - player.sendMessage("There is already lamp oil in the still."); - return; - } else if (configValue == 64) { - if (used.getId() == 11262) { - player.sendMessage("There is already imp repellent in the still."); - } else { - player.getInventory().replace(new Item(11260), used.getSlot()); - player.getConfigManager().set(425, 0, true); - player.sendMessage("You turn the butterfly jar into an impling jar."); - } - return; - } - player.sendMessage("There is no refined imp repellent in the still."); - return; - } - if (configValue == 64) { - player.sendMessage("There is already imp repellent in the still."); - return; - } - if (configValue == 32 && used.getId() == 1939) { - player.sendMessage("There is already lamp oil in the still."); - return; - } - if (used.getId() == 1939) { - if (player.getInventory().remove(new Item(1939))) { - player.getConfigManager().set(425, 32, true); - player.sendMessage("You refine some swamp tar into lamp oil."); - } - } else { - if (configValue == 0) { - player.sendMessage("There is no oil in the still."); - } else { - if (player.getInventory().contains(4525, 1) || player.getInventory().contains(4535, 1) || player.getInventory().contains(4546, 1) || player.getInventory().contains(4700, 1)) { - Item replace = new Item(used.getId() == 4525 ? 4522 : used.getId() == 4535 ? 4537 : used.getId() == 4546 ? 4548 : 4701); - player.getInventory().replace(replace, used.getSlot()); - player.getConfigManager().set(425, 0, true); - player.sendMessage("You fill the item with oil."); - } - } - } - } - - /** - * Makes imp repellent. - * @param player the player. - * @param usedWith the used item. - */ - private void makeRepellent(Player player, Item oil, Item usedWith) { - if (isFlower(usedWith.getId())) { - if (player.getInventory().remove(usedWith)) { - player.getInventory().replace(new Item(11262), oil.getSlot()); - player.sendMessage("You mix the flower petals with the anchovy oil to make a very strange-smelling concoction."); - ; - } - } - } - - /** - * Makes anchovy oil. - * @param player the player. - */ - private void makeOil(Player player) { - if (!player.getInventory().contains(229, 1)) { - player.sendMessage("You need an empty vial to put your anchovy oil into."); - return; - } - if (!player.getInventory().contains(11266, 8)) { - player.sendMessage("You need 8 anchovy paste's in order to make anchovy oil."); - return; - } - if (player.getInventory().remove(new Item(11266, 8), new Item(229))) { - player.getInventory().add(new Item(11264)); - } - } - - /** - * Checks if the id is a flower. - * @param id the id. - * @return {@code True} if so. - */ - private boolean isFlower(int id) { - for (int i : FLOWERS) { - if (i == id) { - return true; - } - } - return false; - } -} diff --git a/Server/src/main/java/core/game/interaction/item/withitem/KaramjanSilkPlugin.java b/Server/src/main/java/core/game/interaction/item/withitem/KaramjanSilkPlugin.java deleted file mode 100644 index f0441e4c3..000000000 --- a/Server/src/main/java/core/game/interaction/item/withitem/KaramjanSilkPlugin.java +++ /dev/null @@ -1,51 +0,0 @@ -package core.game.interaction.item.withitem; - -import core.game.interaction.NodeUsageEvent; -import core.game.interaction.UseWithHandler; -import core.game.node.entity.player.Player; -import core.game.node.item.Item; -import core.plugin.Initializable; -import core.plugin.Plugin; - -/** - * Represents the karamjan silk plugin. - * @author 'Vexia - * @version 1.0 - */ -@Initializable -public final class KaramjanSilkPlugin extends UseWithHandler { - - /** - * Represents the cloth item. - */ - private static final Item CLOTH = new Item(3188); - - /** - * Represents the silk item. - */ - private static final Item SILK = new Item(950); - - /** - * Constructs a new {@code KaramjanSilkPlugin} {@code Object}. - */ - public KaramjanSilkPlugin() { - super(950); - } - - @Override - public Plugin newInstance(Object arg) throws Throwable { - addHandler(431, ITEM_TYPE, this); - return this; - } - - @Override - public boolean handle(NodeUsageEvent event) { - final Player player = event.getPlayer(); - if (player.getInventory().remove(SILK)) { - player.getInventory().add(CLOTH); - player.getPacketDispatch().sendMessage("You pour some of the Karamjan rum over the silk."); - } - return true; - } - -} diff --git a/Server/src/main/java/core/game/interaction/item/withitem/LavaScalePlugin.java b/Server/src/main/java/core/game/interaction/item/withitem/LavaScalePlugin.java deleted file mode 100644 index e445ef51c..000000000 --- a/Server/src/main/java/core/game/interaction/item/withitem/LavaScalePlugin.java +++ /dev/null @@ -1,105 +0,0 @@ -package core.game.interaction.item.withitem; - -import core.game.node.entity.skill.Skills; -import core.game.interaction.NodeUsageEvent; -import core.game.interaction.UseWithHandler; -import core.game.node.entity.player.Player; -import core.game.node.item.Item; -import core.game.world.update.flag.context.Animation; -import core.plugin.Plugin; -import rs09.plugin.PluginManager; -import core.plugin.Initializable; -import core.tools.RandomFunction; - -/** - * Handles the grinding of Lava Scales. - * @author Splinter - * @version 1.0 - */ -@Initializable -public final class LavaScalePlugin extends UseWithHandler { - - /** - * Constructs a new {@code LavaScalePlugin} {@code Object}. - */ - public LavaScalePlugin() { - super(14695); - } - - @Override - public Plugin newInstance(Object arg) throws Throwable { - addHandler(233, ITEM_TYPE, this); - PluginManager.definePlugin(new AntifireMakePlugin()); - return this; - } - - @Override - public boolean handle(NodeUsageEvent event) { - Player player = event.getPlayer(); - if(player.getInventory().remove(new Item(14695))){ - player.getInventory().add(new Item(14768, RandomFunction.random(3, 6))); - player.animate(new Animation(364)); - player.sendMessage("You grind the scales into fine shards."); - } - return true; - } - - /** - * Handles the making of the Extended antifire potion. - * It's apparently not made like regular potions. - * @author Splinter - * @version 1.0 - */ - public final class AntifireMakePlugin extends UseWithHandler { - - /** - * Constructs a new {@code LavaScalePlugin} {@code Object}. - */ - public AntifireMakePlugin() { - super(2454, 2456, 2458, 2452); - } - - @Override - public Plugin newInstance(Object arg) throws Throwable { - addHandler(14768, ITEM_TYPE, this); - return this; - } - - @Override - public boolean handle(NodeUsageEvent event) { - Player player = event.getPlayer(); - int count = player.getInventory().getAmount(event.getUsedWith().asItem()); - int total = count * getReq(event.getUsedWith().asItem().getId()); - if(player.getInventory().contains(14768, total)){ - player.getInventory().remove(new Item(14768, total), new Item(event.getUsedWith().getId(), count)); - player.getInventory().add(new Item(event.getUsedWith().getId() + 12301, count)); - player.animate(new Animation(363)); - player.getSkills().addExperience(Skills.HERBLORE, 27.5 * total); - player.sendMessages("You drop a total of "+(total)+" lava scales in the potions and upgrade all of the", "potions of the same dose into extended antifire potions."); - } else { - player.sendMessage("You don't have enough shards to upgrade all your potions of that dose."); - } - return true; - } - - } - - /** - * Get the required amount of shards. - * @return - */ - public int getReq(int id){ - switch(id){ - case 2452: - return 4; - case 2454: - return 3; - case 2456: - return 2; - case 2458: - return 1; - } - return 4; - } - -} diff --git a/Server/src/main/java/core/game/interaction/item/withitem/SeasonedSardinePlugin.java b/Server/src/main/java/core/game/interaction/item/withitem/SeasonedSardinePlugin.java deleted file mode 100644 index d27da8c40..000000000 --- a/Server/src/main/java/core/game/interaction/item/withitem/SeasonedSardinePlugin.java +++ /dev/null @@ -1,46 +0,0 @@ -package core.game.interaction.item.withitem; - -import core.game.interaction.NodeUsageEvent; -import core.game.interaction.UseWithHandler; -import core.game.node.entity.player.Player; -import core.game.node.item.Item; -import core.plugin.Initializable; -import core.plugin.Plugin; - -/** - * Represents the plugin to make seasoned sardines. - * @author 'Vexia - * @date Oct 6, 2013 - */ -@Initializable -public class SeasonedSardinePlugin extends UseWithHandler { - - /** - * Represents the seasoned sardine. - */ - private final Item SEASONED_SARDINE = new Item(1552); - - /** - * Constructs a new {@code SeasonedSardinePlugina} {@code Object}. - */ - public SeasonedSardinePlugin() { - super(327); - } - - @Override - public Plugin newInstance(Object arg) throws Throwable { - addHandler(1573, ITEM_TYPE, this); - return this; - } - - @Override - public boolean handle(NodeUsageEvent event) { - final Player player = event.getPlayer(); - if (player.getInventory().remove(event.getUsedItem()) && player.getInventory().remove(event.getBaseItem())) { - player.getDialogueInterpreter().sendDialogue("You rub the doogle leaves over the sardine."); - player.getInventory().add(SEASONED_SARDINE); - } - return true; - } - -} diff --git a/Server/src/main/java/core/game/interaction/item/withitem/SkullSceptrePlugin.java b/Server/src/main/java/core/game/interaction/item/withitem/SkullSceptrePlugin.java deleted file mode 100644 index 450933140..000000000 --- a/Server/src/main/java/core/game/interaction/item/withitem/SkullSceptrePlugin.java +++ /dev/null @@ -1,53 +0,0 @@ -package core.game.interaction.item.withitem; - -import core.game.interaction.NodeUsageEvent; -import core.game.interaction.UseWithHandler; -import core.game.node.item.Item; -import core.plugin.Initializable; -import core.plugin.Plugin; - -/** - * @author 'Vexia - */ -@Initializable -public class SkullSceptrePlugin extends UseWithHandler { - - public SkullSceptrePlugin() { - super(9008, 9009, 9011); - } - - @Override - public boolean handle(NodeUsageEvent event) { - if (event.getUsedItem().getId() == 9008 && ((Item) event.getUsedWith()).getId() == 9007) { - event.getPlayer().getInventory().remove(new Item(9008, 1)); - event.getPlayer().getInventory().remove(new Item(9007, 1)); - event.getPlayer().getInventory().add(new Item(9009, 1)); - event.getPlayer().getDialogueInterpreter().open(78489); - return true; - } - if (event.getUsedItem().getId() == 9011 && ((Item) event.getUsedWith()).getId() == 9010) { - event.getPlayer().getInventory().remove(new Item(9010, 1)); - event.getPlayer().getInventory().remove(new Item(9011, 1)); - event.getPlayer().getInventory().add(new Item(9012, 1)); - event.getPlayer().getDialogueInterpreter().open(78489, true); - return true; - } - if (event.getUsedItem().getId() == 9012 && ((Item) event.getUsedWith()).getId() == 9009) { - event.getPlayer().getInventory().remove(new Item(9009, 1)); - event.getPlayer().getInventory().remove(new Item(9012, 1)); - event.getPlayer().getInventory().add(new Item(9013, 1)); - event.getPlayer().getDialogueInterpreter().open(78489, true, true); - return true; - } - return true; - } - - @Override - public Plugin newInstance(Object arg) throws Throwable { - addHandler(9007, ITEM_TYPE, this); - addHandler(9010, ITEM_TYPE, this); - addHandler(9012, ITEM_TYPE, this); - return this; - } - -} diff --git a/Server/src/main/java/core/game/interaction/item/withitem/WaterSkinPlugin.java b/Server/src/main/java/core/game/interaction/item/withitem/WaterSkinPlugin.java deleted file mode 100644 index eabcda331..000000000 --- a/Server/src/main/java/core/game/interaction/item/withitem/WaterSkinPlugin.java +++ /dev/null @@ -1,57 +0,0 @@ -package core.game.interaction.item.withitem; - -import core.game.interaction.NodeUsageEvent; -import core.game.interaction.UseWithHandler; -import core.game.node.item.Item; -import core.plugin.Initializable; -import core.plugin.Plugin; - -/** - * Represents the water skin refilling plugin. - * @author 'Vexia - * @version 1.0 - */ -@Initializable -public final class WaterSkinPlugin extends UseWithHandler { - - /** - * Represents the full skill item. - */ - private final Item FULL_SKIN = new Item(1823); - - /** - * Represents data of water skin filling vessils. - */ - private final int[][] data = new int[][] { { 1937, 1935 }, { 1929, 1925 }, { 1921, 1923 }, { 227, 229 } }; - - /** - * Constructs a new {@code WaterSkinPlugin} {@code Object}. - */ - public WaterSkinPlugin() { - super(1825, 1827, 1829, 1831); - } - - @Override - public Plugin newInstance(Object arg) throws Throwable { - for (int i = 0; i < data.length; i++) { - addHandler(data[i][0], ITEM_TYPE, this); - } - return this; - } - - @Override - public boolean handle(NodeUsageEvent event) { - final Item waterSkin = event.getUsedItem().getName().contains("skin") ? event.getUsedItem() : event.getBaseItem(); - final Item vessil = !event.getUsedItem().getName().contains("skin") ? event.getUsedItem() : event.getBaseItem(); - if (event.getPlayer().getInventory().remove(waterSkin)) { - event.getPlayer().getInventory().add(vessil.getId() == 227 ? new Item(waterSkin.getId() - 2) : FULL_SKIN); - for (int i = 0; i < data.length; i++) { - if (data[i][0] == vessil.getId() && event.getPlayer().getInventory().remove(vessil)) { - event.getPlayer().getInventory().add(new Item(data[i][1])); - } - } - } - return true; - } - -} diff --git a/Server/src/main/java/core/game/interaction/item/withnpc/GertrudeCatUsePlugin.java b/Server/src/main/java/core/game/interaction/item/withnpc/GertrudeCatUsePlugin.java deleted file mode 100644 index 1275872c5..000000000 --- a/Server/src/main/java/core/game/interaction/item/withnpc/GertrudeCatUsePlugin.java +++ /dev/null @@ -1,106 +0,0 @@ -package core.game.interaction.item.withnpc; - -import core.game.interaction.NodeUsageEvent; -import core.game.interaction.UseWithHandler; -import core.game.node.entity.npc.NPC; -import core.game.node.entity.player.Player; -import core.game.node.entity.player.link.quest.Quest; -import core.game.node.item.Item; -import core.game.system.task.Pulse; -import rs09.game.world.GameWorld; -import core.game.world.map.Location; -import core.game.world.map.path.Path; -import core.game.world.map.path.Pathfinder; -import core.game.world.update.flag.context.Animation; -import core.plugin.Initializable; -import core.plugin.Plugin; - -/** - * Represents the plugin used to handle the use with interactions. - * @author 'Vexia - * @version 1.0 - */ -@Initializable -public final class GertrudeCatUsePlugin extends UseWithHandler { - - /** - * Represents the animation of bending down. - */ - private static final Animation BEND_DOWN = Animation.create(827); - - /** - * Represents the empty bucket. - */ - private static final Item EMPTY_BUCKET = new Item(1925); - - /** - * Constructs a new {@code GertrudeCatUsePlugin} {@code Object}. - */ - public GertrudeCatUsePlugin() { - super(1927, 1552, 327, 13236); - } - - @Override - public Plugin newInstance(Object arg) throws Throwable { - addHandler(2997, NPC_TYPE, this); - return this; - } - - @Override - public boolean handle(NodeUsageEvent event) { - final Player player = event.getPlayer(); - final NPC npc = ((NPC) event.getUsedWith()); - final Quest quest = player.getQuestRepository().getQuest("Gertrude's Cat"); - if (event.getUsedItem().getId() == 1927 && quest.getStage(player) == 20) { - if (player.getInventory().remove(event.getUsedItem())) { - player.getInventory().add(EMPTY_BUCKET); - player.animate(BEND_DOWN); - npc.sendChat("Mew!"); - quest.setStage(player, 30); - } - } else if (event.getUsedItem().getId() == 1552 && quest.getStage(player) == 30) { - if (player.getInventory().remove(event.getUsedItem())) { - player.animate(BEND_DOWN); - npc.sendChat("Mew!"); - quest.setStage(player, 40); - } - } else if (event.getUsedItem().getId() == 327 && quest.getStage(player) == 50) { - player.getDialogueInterpreter().sendDialogue("The cat doesn't seem interested in that."); - } else if (event.getUsedItem().getId() == 13236) { - if (player.getInventory().remove(event.getUsedItem())) { - quest.setStage(player, 60); - player.lock(5); - GameWorld.getPulser().submit(new Pulse(1) { - int count = 0; - final NPC kitten = NPC.create(761, player.getLocation()); - - @Override - public boolean pulse() { - switch (count) { - case 0: - kitten.init(); - kitten.face(npc); - npc.face(kitten); - npc.sendChat("Pur..."); - kitten.sendChat("Pur..."); - final Path path = Pathfinder.find(npc, new Location(3310, 3510, 1)); - path.walk(npc); - final Path pathh = Pathfinder.find(kitten, new Location(3310, 3510, 1)); - pathh.walk(kitten); - break; - case 5: - kitten.clear(); - player.setAttribute("hidefluff", System.currentTimeMillis() + 60000); - break; - } - count++; - return count == 6; - } - - }); - } - } - return true; - } - -} diff --git a/Server/src/main/java/core/game/interaction/item/withnpc/LadyKeliRopePlugin.java b/Server/src/main/java/core/game/interaction/item/withnpc/LadyKeliRopePlugin.java deleted file mode 100644 index ec0b56dec..000000000 --- a/Server/src/main/java/core/game/interaction/item/withnpc/LadyKeliRopePlugin.java +++ /dev/null @@ -1,57 +0,0 @@ -package core.game.interaction.item.withnpc; - -import core.game.interaction.NodeUsageEvent; -import core.game.interaction.UseWithHandler; -import core.game.node.entity.player.Player; -import core.game.node.entity.player.link.quest.Quest; -import core.game.node.item.Item; -import rs09.game.world.GameWorld; -import core.plugin.Initializable; -import core.plugin.Plugin; - -/** - * Represents the plugin used to tie up lady keli. - * @author 'Vexia - * @version 1.0 - */ -@Initializable -public final class LadyKeliRopePlugin extends UseWithHandler { - - /** - * Represents the rope item. - */ - private static final Item ROPE = new Item(954); - - /** - * Constructs a new {@code LadyKeliRopePlugin} {@code Object}. - */ - public LadyKeliRopePlugin() { - super(954); - } - - @Override - public Plugin newInstance(Object arg) throws Throwable { - addHandler(919, NPC_TYPE, this); - return this; - } - - @Override - public boolean handle(NodeUsageEvent event) { - final Player player = event.getPlayer(); - final Quest quest = player.getQuestRepository().getQuest("Prince Ali Rescue"); - if (quest.getStage(player) >= 40 && player.getAttribute("guard-drunk", false) && quest.getStage(player) != 100) { - if (player.getInventory().remove(ROPE)) { - player.getDialogueInterpreter().sendDialogue("You overpower Keli, tie her up, and put her in a cupboard."); - quest.setStage(player, 50); - player.setAttribute("keli-gone", GameWorld.getTicks() + 350); - } - } else { - if (quest.getStage(player) == 40) { - player.getPacketDispatch().sendMessage("You need to do something about the guard first."); - } - return true; - } - return true; - } - -} diff --git a/Server/src/main/java/core/game/interaction/object/WildernessObeliskPlugin.java b/Server/src/main/java/core/game/interaction/object/WildernessObeliskPlugin.java deleted file mode 100644 index 75ea82f6e..000000000 --- a/Server/src/main/java/core/game/interaction/object/WildernessObeliskPlugin.java +++ /dev/null @@ -1,151 +0,0 @@ -package core.game.interaction.object; - -import core.cache.def.impl.SceneryDefinition; -import core.game.interaction.OptionHandler; -import core.game.node.Node; -import core.game.node.entity.player.Player; -import core.game.node.entity.player.link.TeleportManager.TeleportType; -import core.game.node.scenery.Scenery; -import core.game.node.scenery.SceneryBuilder; -import core.game.system.task.Pulse; -import rs09.game.world.GameWorld; -import core.game.world.map.Location; -import core.game.world.map.RegionManager; -import core.game.world.update.flag.chunk.GraphicUpdateFlag; -import core.game.world.update.flag.context.Graphics; -import core.plugin.Initializable; -import core.plugin.Plugin; -import core.tools.RandomFunction; - -/** - * Represents the wilderness obelisk plugin. - * @author 'Vexia - * @version 1.0 - */ -@Initializable -public final class WildernessObeliskPlugin extends OptionHandler { - - @Override - public Plugin newInstance(Object arg) throws Throwable { - SceneryDefinition.forId(14829).getHandlers().put("option:activate", this); - SceneryDefinition.forId(14826).getHandlers().put("option:activate", this); - SceneryDefinition.forId(14827).getHandlers().put("option:activate", this); - SceneryDefinition.forId(14828).getHandlers().put("option:activate", this); - SceneryDefinition.forId(14830).getHandlers().put("option:activate", this); - SceneryDefinition.forId(14831).getHandlers().put("option:activate", this); - return this; - } - - @Override - public boolean handle(final Player player, final Node node, String option) { - final Scenery nodeObject = (Scenery) node; - final Obelisk stationObelisk = Obelisk.forLocation(player.getLocation()); - if (stationObelisk == null) { - return false; - } - for (int i = 0; i < 4; i++) { - int x = stationObelisk.getLocation().getX(); - int y = stationObelisk.getLocation().getY(); - int z = stationObelisk.getLocation().getZ(); - switch (i) { - case 0: - x = x + 2; - y = y + 2; - SceneryBuilder.replace(new Scenery(nodeObject.getId(), Location.create(x, y, z)), new Scenery(14825, Location.create(x, y, 0)), 6); - break; - case 1: - x = x - 2; - y = y + 2; - SceneryBuilder.replace(new Scenery(nodeObject.getId(), Location.create(x, y, z)), new Scenery(14825, Location.create(x, y, 0)), 6); - break; - case 2: - x = x - 2; - y = y - 2; - SceneryBuilder.replace(new Scenery(nodeObject.getId(), Location.create(x, y, z)), new Scenery(14825, Location.create(x, y, 0)), 6); - break; - case 3: - x = x + 2; - y = y - 2; - SceneryBuilder.replace(new Scenery(nodeObject.getId(), Location.create(x, y, z)), new Scenery(14825, Location.create(x, y, 0)), 6); - break; - } - } - player.getAudioManager().send(204); - GameWorld.getPulser().submit(new Pulse(6, player) { - @Override - public boolean pulse() { - final Location center = stationObelisk.getLocation(); - if (getDelay() == 1) { - for (int x = center.getX() - 1; x <= center.getX() + 1; x++) { - for (int y = center.getY() - 1; y <= center.getY() + 1; y++) { - Location l = Location.create(x, y, 0); - RegionManager.getRegionChunk(l).flag(new GraphicUpdateFlag(Graphics.create(342), l)); - } - } - return true; - } - int index = RandomFunction.random(Obelisk.values().length); - Obelisk newObelisk = Obelisk.values()[index]; - if (newObelisk == stationObelisk) { - newObelisk = Obelisk.values()[index++ % Obelisk.values().length]; - } - for (Player player : RegionManager.getLocalPlayers(center, 1)) { - player.getPacketDispatch().sendMessage("Ancient magic teleports you somewhere in the wilderness."); - int xDif = stationObelisk.getLocation().getX() - player.getLocation().getX(); - int yDif = stationObelisk.getLocation().getY() - player.getLocation().getY(); - if (xDif > 0 || yDif > 0) { - player.getTeleporter().send(Location.create(newObelisk.getLocation().getX() - xDif, newObelisk.getLocation().getY() - yDif, 0), TeleportType.OBELISK, 2); - } else { - player.getTeleporter().send(Location.create(newObelisk.getLocation().getX() + xDif, newObelisk.getLocation().getY() + yDif, 0), TeleportType.OBELISK, 2); - } - } - super.setDelay(1); - return false; - } - - }); - return true; - } - - /** - * Represents an obelisk type. - * @author 'Vexia - * @version 1.0 - */ - public enum Obelisk { - LEVEL_13(new Location(3156, 3620, 0)), LEVEL_19(new Location(3219, 3656, 0)), LEVEL_27(new Location(3035, 3732, 0)), LEVEL_35(new Location(3106, 3794, 0)), LEVEL_44(new Location(2980, 3866, 0)), LEVEL_50(new Location(3307, 3916, 0)); - - /** - * Represents the location to teleport to. - */ - private Location location; - - /** - * Constructs a new {@code Obelisk} {@code Object}. - * @param location the location. - */ - Obelisk(Location location) { - this.location = location; - } - - /** - * Gets the location. - * @return the location - */ - public Location getLocation() { - return location; - } - - /** - * Gets the obelisk by location. - * @param location the location. - * @return the obelisk. - */ - public static Obelisk forLocation(Location location) { - for (Obelisk obelisk : Obelisk.values()) - if (obelisk.getLocation().getDistance(location) <= 20) - return obelisk; - return null; - } - } -} diff --git a/Server/src/main/java/core/game/interaction/object/dmc/DMCHandler.java b/Server/src/main/java/core/game/interaction/object/dmc/DMCHandler.java index 90242a3ad..34f6eb528 100644 --- a/Server/src/main/java/core/game/interaction/object/dmc/DMCHandler.java +++ b/Server/src/main/java/core/game/interaction/object/dmc/DMCHandler.java @@ -110,13 +110,13 @@ public final class DMCHandler { } player.getPacketDispatch().sendSceneryAnimation(cannon, Animation.create(direction.getAnimationId())); Location l = cannon.getLocation().transform(1, 1, 0); - player.getAudioManager().send(new Audio(2877), true, l); + player.getAudioManager().send(new Audio(2877), true); direction = DMCRevolution.values()[(direction.ordinal() + 1) % DMCRevolution.values().length]; for (NPC npc : RegionManager.getLocalNpcs(l, 10)) { if (direction.isInSight(npc.getLocation().getX() - l.getX(), npc.getLocation().getY() - l.getY()) && npc.isAttackable(player, CombatStyle.RANGE, false) && CombatSwingHandler.isProjectileClipped(npc, l, false)) { int speed = (int) (25 + (l.getDistance(npc.getLocation()) * 10)); Projectile.create(l, npc.getLocation(), 53, 40, 36, 20, speed, 0, 128).send(); - player.getAudioManager().send(new Audio(1667), true, l); + player.getAudioManager().send(new Audio(1667), true); cannonballs--; int hit = 0; if (player.getSwingHandler(false).isAccurateImpact(player, npc, CombatStyle.RANGE, 1.2, 1.0)) { @@ -236,7 +236,7 @@ public final class DMCHandler { case 0: object = SceneryBuilder.add(new Scenery(7, spawn)); player.getPacketDispatch().sendMessage("You place the cannon base on the ground."); - break; + return count++ == 666; case 1: player.getPacketDispatch().sendMessage("You add the stand."); break; @@ -249,11 +249,11 @@ public final class DMCHandler { handler.configure(SceneryBuilder.add(object = object.transform(6))); return true; } - player.getAudioManager().send(new Audio(2876), true); - if(count != 0) { - SceneryBuilder.remove(object); - SceneryBuilder.add(object = object.transform(object.getId() + 1)); - } + player.getAudioManager().send(new Audio(2876), true); + if(count != 0) { + SceneryBuilder.remove(object); + SceneryBuilder.add(object = object.transform(object.getId() + 1)); + } return ++count == 4; } }); diff --git a/Server/src/main/java/core/game/node/entity/combat/special/ArmadylCrossbowSpecialHandler.java b/Server/src/main/java/core/game/node/entity/combat/special/ArmadylCrossbowSpecialHandler.java new file mode 100644 index 000000000..3b22367e6 --- /dev/null +++ b/Server/src/main/java/core/game/node/entity/combat/special/ArmadylCrossbowSpecialHandler.java @@ -0,0 +1,70 @@ +package core.game.node.entity.combat.special; + +import core.game.node.entity.Entity; +import core.game.node.entity.combat.BattleState; +import core.game.node.entity.combat.CombatStyle; +import rs09.game.node.entity.combat.handlers.RangeSwingHandler; +import core.game.node.entity.impl.Projectile; +import core.game.node.entity.impl.Animator.Priority; +import core.game.node.entity.player.Player; +import core.game.world.update.flag.context.Animation; +import core.plugin.Plugin; +import core.plugin.Initializable; +import core.tools.RandomFunction; + +/** + * Represents the new Armadyl C'bow special attack. + * @author Splinter + * @version 1.0 + */ +@Initializable +public final class ArmadylCrossbowSpecialHandler extends RangeSwingHandler implements Plugin { + + /** + * The special energy required. + */ + private static final int SPECIAL_ENERGY = 50; + + /** + * The attack animation. + */ + private static final Animation ANIMATION = new Animation(4230, Priority.HIGH); + + @Override + public Object fireEvent(String identifier, Object... args) { + return null; + } + + @Override + public Plugin newInstance(Object arg) throws Throwable { + CombatStyle.RANGE.getSwingHandler().register(9185, this); + return this; + } + + @Override + public int swing(Entity entity, Entity victim, BattleState state) { + Player p = (Player) entity; + configureRangeData(p, state); + if (state.getWeapon() == null || !Companion.hasAmmo(entity, state)) { + entity.getProperties().getCombatPulse().stop(); + p.getSettings().toggleSpecialBar(); + return -1; + } + if (!((Player) entity).getSettings().drainSpecial(SPECIAL_ENERGY)) { + return -1; + } + int hit = 0; + if (isAccurateImpact(entity, victim, CombatStyle.RANGE, 2.0, 1.0)) {//2x the accuracy + hit = RandomFunction.random(calculateHit(entity, victim, 1.0)); + } + Companion.useAmmo(entity, state, victim.getLocation()); + state.setEstimatedHit(hit); + return 1; + } + + @Override + public void visualize(Entity entity, Entity victim, BattleState state) { + entity.animate(ANIMATION); + Projectile.create(entity, victim, 698, 36, 25, 35, 50).send(); + } +} diff --git a/Server/src/main/java/core/game/node/entity/combat/special/DragonPickaxeSpecialHandler.java b/Server/src/main/java/core/game/node/entity/combat/special/DragonPickaxeSpecialHandler.java new file mode 100644 index 000000000..5e5d12eb5 --- /dev/null +++ b/Server/src/main/java/core/game/node/entity/combat/special/DragonPickaxeSpecialHandler.java @@ -0,0 +1,61 @@ +package core.game.node.entity.combat.special; + +import core.game.node.entity.skill.Skills; +import core.game.node.entity.Entity; +import core.game.node.entity.combat.BattleState; +import core.game.node.entity.combat.CombatStyle; +import rs09.game.node.entity.combat.handlers.MeleeSwingHandler; +import core.game.node.entity.player.Player; +import core.plugin.Initializable; +import core.plugin.Plugin; + +/** + * Handles the Dragon pickaxe's special attack. + * @author Crash + */ +@Initializable +public final class DragonPickaxeSpecialHandler extends MeleeSwingHandler implements Plugin { + + /** + * The special energy required. + */ + private static final int SPECIAL_ENERGY = 100; + + /** + * The attack animation. + */ + //private static final Animation ANIMATION = new Animation(1057, Priority.HIGH); + + /** + * The graphic. + */ + //private static final Graphics GRAPHIC = new Graphics(247); + + @Override + public Object fireEvent(String identifier, Object... args) { + switch (identifier) { + case "instant_spec": + case "ncspec": + return true; + } + return null; + } + + @Override + public Plugin newInstance(Object arg) throws Throwable { + CombatStyle.MELEE.getSwingHandler().register(14723, this); + return this; + } + + @Override + public int swing(Entity entity, Entity victim, BattleState state) { + Player p = (Player) entity; + if (!p.getSettings().drainSpecial(SPECIAL_ENERGY)) + return -1; + p.sendChat("Smashing!"); + //p.visualize(ANIMATION, GRAPHIC); + p.getSkills().updateLevel(Skills.MINING, 3, p.getSkills().getStaticLevel(Skills.MINING) + 3); + return -1; + } + +} diff --git a/Server/src/main/java/core/game/node/entity/combat/special/OGClobberSpecialHandler.java b/Server/src/main/java/core/game/node/entity/combat/special/OGClobberSpecialHandler.java new file mode 100644 index 000000000..b560e1c6c --- /dev/null +++ b/Server/src/main/java/core/game/node/entity/combat/special/OGClobberSpecialHandler.java @@ -0,0 +1,75 @@ +package core.game.node.entity.combat.special; + +import core.game.node.entity.skill.Skills; +import core.game.node.entity.Entity; +import core.game.node.entity.combat.BattleState; +import core.game.node.entity.combat.CombatStyle; +import rs09.game.node.entity.combat.handlers.MeleeSwingHandler; +import core.game.node.entity.impl.Animator.Priority; +import core.game.node.entity.player.Player; +import core.game.world.update.flag.context.Animation; +import core.game.world.update.flag.context.Graphics; +import core.plugin.Initializable; +import core.plugin.Plugin; +import core.tools.RandomFunction; + +/** + * Represents the original dragon axe's special attack, Clobber. + * @author Emperor + * @version 1.0 + */ +@Initializable +public final class OGClobberSpecialHandler extends MeleeSwingHandler implements Plugin { + + /** + * The special energy required. + */ + private static final int SPECIAL_ENERGY = 100; + + /** + * The attack animation. + */ + private static final Animation ANIMATION = new Animation(2876, Priority.HIGH); + + /** + * The graphic. + */ + private static final Graphics GRAPHIC = new Graphics(479, 96); + + @Override + public Object fireEvent(String identifier, Object... args) { + return null; + } + + @Override + public Plugin newInstance(Object arg) throws Throwable { + CombatStyle.MELEE.getSwingHandler().register(3757, this); + return this; + } + + @Override + public int swing(Entity entity, Entity victim, BattleState state) { + if (!((Player) entity).getSettings().drainSpecial(SPECIAL_ENERGY)) { + return -1; + } + int hit = 0; + //if (entity instanceof Player) { + // entity.asPlayer().sendChat("Chop chop!"); + //} + if (isAccurateImpact(entity, victim, CombatStyle.MELEE, 1.05, 1.0)) { + hit = RandomFunction.random(calculateHit(entity, victim, 1.0)); + if (hit > 9) { + int amount = hit / 10; + victim.getSkills().updateLevel(Skills.DEFENCE, -amount, 0); + victim.getSkills().updateLevel(Skills.MAGIC, -amount, 0); + } + } + state.setEstimatedHit(hit); + return 1; + } + + @Override + public void visualize(Entity entity, Entity victim, BattleState state) { + entity.visualize(ANIMATION, GRAPHIC); + } +} diff --git a/Server/src/main/java/core/game/node/entity/combat/special/SaeldorsStrikeSpecialHandler.java b/Server/src/main/java/core/game/node/entity/combat/special/SaeldorsStrikeSpecialHandler.java new file mode 100644 index 000000000..fb9d291fd --- /dev/null +++ b/Server/src/main/java/core/game/node/entity/combat/special/SaeldorsStrikeSpecialHandler.java @@ -0,0 +1,118 @@ +package core.game.node.entity.combat.special; + +import core.game.node.entity.Entity; +import core.game.node.entity.combat.BattleState; +import core.game.node.entity.combat.CombatStyle; +import rs09.game.node.entity.combat.handlers.MeleeSwingHandler; +import core.game.node.entity.impl.Animator.Priority; +import core.game.node.entity.player.Player; +import core.game.node.entity.state.EntityState; +import core.game.world.map.Direction; +import core.game.world.map.Location; +import core.game.world.map.Point; +import core.game.world.map.path.Pathfinder; +import core.game.world.update.flag.context.Animation; +import core.game.world.update.flag.context.Graphics; +import core.plugin.Initializable; +import core.plugin.Plugin; + +/** + * Handles the Blade of Saeldor's special attack. + * @author Crash + */ +@Initializable +public final class SaeldorsStrikeSpecialHandler extends MeleeSwingHandler implements Plugin { + + /** + * The special energy required. + */ + private static final int SPECIAL_ENERGY = 100; + + /** + * The attack animation. + */ + private static final Animation ANIMATION = new Animation(1872, Priority.HIGH); + + /** + * The graphic. + */ + private static final Graphics GRAPHIC = new Graphics(347, 96); + + /** + * The stun animation. + */ + private static Animation STUN_ANIM = new Animation(424); + + @Override + public Object fireEvent(String identifier, Object... args) { + return null; + } + + @Override + public Plugin newInstance(Object arg) throws Throwable { + CombatStyle.MELEE.getSwingHandler().register(14728, this); + return this; + } + + @Override + public int swing(Entity entity, final Entity victim, BattleState state) { + if (victim.size() > 1) { + ((Player) entity).getPacketDispatch().sendMessage("That creature is too large to knock back!"); + ((Player) entity).getSettings().toggleSpecialBar(); + return -1; + } + if (!((Player) entity).getSettings().drainSpecial(SPECIAL_ENERGY)) { + return -1; + } + state.setEstimatedHit(-1); + Direction dir = null; + int vx = victim.getLocation().getX(); + int vy = victim.getLocation().getY(); + int sx = entity.getLocation().getX(); + int sy = entity.getLocation().getY(); + if (vx == sx && vy > sy) { + dir = Direction.NORTH; + } else if (vx == sx && vy < sy) { + dir = Direction.SOUTH; + } else if (vx > sx && vy == sy) { + dir = Direction.EAST; + } else if (vx < sx && vy == sy) { + dir = Direction.WEST; + } else if (vx > sx && vy > sy) { + dir = Direction.NORTH_EAST; + } else if (vx < sx && vy > sy) { + dir = Direction.NORTH_WEST; + } else if (vx > sx && vy < sy) { + dir = Direction.SOUTH_EAST; + } else if (vx < sx && vy < sy) { + dir = Direction.SOUTH_WEST; + } + victim.getWalkingQueue().reset(); + victim.getPulseManager().clear(); + victim.animate(STUN_ANIM); + victim.getStateManager().set(EntityState.STUNNED, 5); + if (dir != null) { + Point p = Direction.getWalkPoint(dir); + Location dest = victim.getLocation().transform(p.getX(), p.getY(), 0); + if (Pathfinder.find(victim, dest, false, Pathfinder.DUMB).isSuccessful()) { + victim.getWalkingQueue().addPath(dest.getX(), dest.getY()); + } + } + entity.asPlayer().getAudioManager().send(2533); + return 1; + } + + @Override + public void visualize(Entity entity, Entity victim, BattleState state) { + entity.visualize(ANIMATION, GRAPHIC); + } + + @Override + public void visualizeImpact(Entity entity, Entity victim, BattleState state) { + } + + @Override + public void impact(Entity entity, Entity victim, BattleState state) { + } + +} diff --git a/Server/src/main/java/core/game/node/entity/combat/special/ShoveSpecialHandler.java b/Server/src/main/java/core/game/node/entity/combat/special/ShoveSpecialHandler.java index ae67f2a0c..90dc747be 100644 --- a/Server/src/main/java/core/game/node/entity/combat/special/ShoveSpecialHandler.java +++ b/Server/src/main/java/core/game/node/entity/combat/special/ShoveSpecialHandler.java @@ -17,7 +17,7 @@ import core.plugin.Initializable; import core.plugin.Plugin; /** - * Handles the dragon spear special attack. + * Handles the dragon spear and zamorakian spear special attack, Shove. * @author Emperor */ @Initializable diff --git a/Server/src/main/java/core/game/node/entity/npc/NPC.java b/Server/src/main/java/core/game/node/entity/npc/NPC.java index a7368a983..594dca73c 100644 --- a/Server/src/main/java/core/game/node/entity/npc/NPC.java +++ b/Server/src/main/java/core/game/node/entity/npc/NPC.java @@ -470,14 +470,14 @@ public class NPC extends Entity { } } } - if (shop != null) { - if (shop.getLastRestock() < GameWorld.getTicks()) { - if (shop.isRestock()) { - shop.restock(); - shop.setLastRestock(GameWorld.getTicks() + 100); - } - } - } + // if (shop != null) { + // if (shop.getLastRestock() < GameWorld.getTicks()) { + // if (shop.isRestock()) { + // shop.restock(); + // shop.setLastRestock(GameWorld.getTicks() + 100); + // } + // } + // } if (forceTalk != null && getAttribute("lastForceTalk", 0) < GameWorld.getTicks()) { sendChat(forceTalk); setAttribute("lastForceTalk", GameWorld.getTicks() + RandomFunction.random(15, 30)); diff --git a/Server/src/main/java/core/game/node/entity/npc/bosses/wilderness/CrazyArchaeologistNPC.java b/Server/src/main/java/core/game/node/entity/npc/bosses/wilderness/CrazyArchaeologistNPC.java new file mode 100644 index 000000000..29779e4ce --- /dev/null +++ b/Server/src/main/java/core/game/node/entity/npc/bosses/wilderness/CrazyArchaeologistNPC.java @@ -0,0 +1,207 @@ +package core.game.node.entity.npc.bosses.wilderness; + +import java.util.ArrayList; +import java.util.List; + +import core.game.content.global.BossKillCounter; +import core.game.node.entity.Entity; +import core.game.node.entity.combat.BattleState; +import core.game.node.entity.combat.CombatStyle; +import rs09.game.node.entity.combat.CombatSwingHandler; +import core.game.node.entity.combat.ImpactHandler.HitsplatType; +import core.game.node.entity.combat.equipment.SwitchAttack; +import rs09.game.node.entity.combat.handlers.MultiSwingHandler; +import core.game.node.entity.impl.Projectile; +import core.game.node.entity.npc.AbstractNPC; +import core.game.node.entity.player.Player; +import core.game.world.map.Location; +import core.game.world.map.RegionManager; +import core.game.world.update.flag.context.Animation; +import core.plugin.Initializable; +import core.tools.RandomFunction; + +/** + * Handles the Crazy Archaeologist NPC. + * @author Vexia + * + */ +@Initializable +public class CrazyArchaeologistNPC extends AbstractNPC { + + /** + * The quotes for the crazy archaeologist. + */ + private static final String[] QUOTES = new String[] {"I'm Bellock - respect me!", "Get off my site!", "No-one messes with Bellock's dig!", "These ruins are mine!", "Taste my knowledge!", "You belong in a museum!"}; + + /** + * The multi swing handler. + */ + private static final MultiSwingHandler COMBAT_HANDLER = new ArchaeologistHandler(); + + /** + * Constructs a new @{Code CrazyArchaeologistNPC} object. + * @param id The id. + * @param location The location. + */ + public CrazyArchaeologistNPC(int id, Location location) { + super(id, location); + } + + /** + * Constructs a new @{Code CrazyArchaeologistNPC} object. + */ + public CrazyArchaeologistNPC() { + super(-1, null); + } + + @Override + public void init() { + super.init(); + configureBossData(); + } + + @Override + public void sendImpact(BattleState state) { + if (state.getEstimatedHit() > 24) { + state.setEstimatedHit(24); + } + super.sendImpact(state); + } + + @Override + public void commenceDeath(Entity killer) { + sendChat("Ow!"); + super.commenceDeath(killer); + } + + @Override + public void finalizeDeath(Entity killer) { + super.finalizeDeath(killer); + BossKillCounter.addtoKillcount((Player) killer, this.getId()); + } + + @Override + public CombatSwingHandler getSwingHandler(boolean swing) { + return COMBAT_HANDLER; + } + + @Override + public AbstractNPC construct(int id, Location location, Object... objects) { + return new CrazyArchaeologistNPC(id, location); + } + + @Override + public int[] getIds() { + return new int[] {997}; + } + + /** + * Handles the Crazy Archaeologist combat handler. + * @author Vexia + */ + public static class ArchaeologistHandler extends MultiSwingHandler { + + /** + * The switch attacks. + */ + private static final SwitchAttack[] ATTACKS = new SwitchAttack[] {new SwitchAttack(CombatStyle.MELEE), new SwitchAttack(CombatStyle.RANGE.getSwingHandler(), new Animation(1162))}; + + /** + * The exposion locations. + */ + private final List locs = new ArrayList<>(); + + /** + * If the special attack is used. + */ + private boolean special; + + /** + * Constructs a new @{Code ChaosCombatHandler} object. + */ + public ArchaeologistHandler() { + super(ATTACKS); + } + + @Override + public int swing(Entity entity, Entity victim, BattleState state) { + if (state.getStyle() == CombatStyle.RANGE && RandomFunction.random(10) == 1) { + special = true; + } + return super.swing(entity, victim, state); + } + + @Override + public void impact(Entity entity, Entity victim, BattleState state) { + if (special) { + special = false; + for (Location l : locs) { + if (l == null) { + continue; + } + for (Player p : RegionManager.getLocalPlayers(l, 3)) { + p.getImpactHandler().manualHit(entity, RandomFunction.random(1, 24), HitsplatType.NORMAL); + } + } + locs.clear(); + return; + } + super.impact(entity, victim, state); + } + + @Override + public void visualizeImpact(Entity entity, Entity victim, BattleState state) { + if (state.getStyle() == CombatStyle.RANGE && special) { + entity.sendChat("Rain of knowledge!"); + Location loc = null; + for (int i = 0; i < 3; i++) { + loc = getRandomLoc(entity); + if (!RegionManager.isTeleportPermitted(loc)) { + loc = getRandomLoc(entity); + } + if (locs.contains(loc)) { + loc = getRandomLoc(entity); + } + if (!RegionManager.isTeleportPermitted(loc)) { + loc = getRandomLoc(entity); + } + if (!locs.contains(loc)) { + locs.add(loc); + } + } + for (Location l : locs) { + if (l == null || entity == null) { + continue; + } + Projectile p = Projectile.create(entity, null, 156, 40, 10, 30, 90); + p.setEndLocation(l); + p.send(); + } + entity.animate(new Animation(1167)); + } else { + if (state.getStyle() == CombatStyle.RANGE) { + Projectile p = Projectile.ranged(entity, victim, 156, 40, 30, 0, 15); + p.setSpeed(40); + p.send(); + } + entity.sendChat(RandomFunction.getRandomElement(QUOTES)); + } + if (state.getStyle() == CombatStyle.MELEE) { + super.visualizeImpact(entity, victim, state); + } + } + + /** + * Gets the random loc. + * @param entity the entity. + * @return the loc. + */ + public Location getRandomLoc(Entity entity) { + Location l = entity.getLocation(); + boolean negative = RandomFunction.random(2) == 1; + return l.getLocation().transform((negative ? RandomFunction.random(-3, 3) : RandomFunction.random(0, 3)), (negative ? RandomFunction.random(-3, 3) : RandomFunction.random(3, 3)), 0); + } + + } + +} diff --git a/Server/src/main/java/core/game/node/entity/npc/bosses/wilderness/VenenatisNPC.java b/Server/src/main/java/core/game/node/entity/npc/bosses/wilderness/VenenatisNPC.java new file mode 100644 index 000000000..f43cba29a --- /dev/null +++ b/Server/src/main/java/core/game/node/entity/npc/bosses/wilderness/VenenatisNPC.java @@ -0,0 +1,208 @@ +package core.game.node.entity.npc.bosses.wilderness; + +import core.game.content.global.BossKillCounter; +import core.game.node.entity.Entity; +import core.game.node.entity.combat.BattleState; +import core.game.node.entity.combat.CombatStyle; +import rs09.game.node.entity.combat.CombatSwingHandler; +import core.game.node.entity.combat.InteractionType; +import core.game.node.entity.combat.ImpactHandler.HitsplatType; +import core.game.node.entity.impl.Projectile; +import core.game.node.entity.npc.AbstractNPC; +import core.game.node.entity.player.Player; +import core.game.node.entity.state.EntityState; +import core.game.world.map.Location; +import core.game.world.update.flag.context.Graphics; +import core.plugin.Initializable; +import core.tools.RandomFunction; + +/** + * Handles the Venenatis NPC. + * @author Vexia + * + */ +@Initializable +public class VenenatisNPC extends AbstractNPC { + + /** + * The venenatis combat swing handler. + */ + private final VenenatisCombatSwingHandler handler = new VenenatisCombatSwingHandler(); + + /** + * Constructs a new @{Code VenenatisNPC} object. + */ + public VenenatisNPC() { + super(-1, null); + } + + /** + * Constructs a new @{Code VenenatisNPC} object. + * @param id The id. + * @param location The location. + */ + public VenenatisNPC(int id, Location location) { + super(id, location); + } + + @Override + public void init() { + super.init(); + super.setAggressive(true); + super.setDefaultBehavior(); + configureBossData(); + } + + @Override + public AbstractNPC construct(int id, Location location, Object... objects) { + return new VenenatisNPC(id, location); + } + + @Override + public void finalizeDeath(Entity killer) { + super.finalizeDeath(killer); + if (killer instanceof Player) { + BossKillCounter.addtoKillcount((Player) killer, this.getId()); + } + } + + @Override + public void sendImpact(BattleState state) { + if (state.getEstimatedHit() > 50) { + state.setEstimatedHit(RandomFunction.random(40, 50)); + } else if (state.getSecondaryHit() > 50) { + state.setEstimatedHit(RandomFunction.random(40, 50)); + } + super.sendImpact(state); + } + + @Override + public void checkImpact(BattleState state) { + super.checkImpact(state); + } + + @Override + public CombatSwingHandler getSwingHandler(boolean swing) { + return handler; + } + + @Override + public int[] getIds() { + return new int[] {8591}; + } + + /** + * Handles the combat for the npc Venenatis. + * @author Vexia + * + */ + public class VenenatisCombatSwingHandler extends CombatSwingHandler { + + /** + * The current combat style. + */ + private CombatStyle style = CombatStyle.MAGIC; + + /** + * If the special attack is launched. + */ + private boolean special; + + /** + * If the player drain attack is launched. + */ + private boolean prayerDrain; + + /** + * Constructs a new @{Code VenenatisCombatSwingHandler} object. + */ + public VenenatisCombatSwingHandler() { + super(CombatStyle.MAGIC); + } + + @Override + public InteractionType canSwing(Entity entity, Entity victim) { + return style.getSwingHandler().canSwing(entity, victim); + } + + @Override + public int swing(Entity entity, Entity victim, BattleState state) { + if (style == CombatStyle.MAGIC) { + return 2 + (int) Math.floor(entity.getLocation().getDistance(victim.getLocation()) * 0.5); + } + return style.getSwingHandler().swing(entity, victim, state); + } + + @Override + public void impact(Entity entity, Entity victim, BattleState state) { + if (victim instanceof Player) { + Player p = (Player) victim; + if (special) { + int hit = style.getSwingHandler().calculateHit(entity, victim, 1.0); + if (hit < 10) { + hit = RandomFunction.random(10, 30); + } + if (hit > 50) { + hit = 50; + } + p.getStateManager().register(EntityState.STUNNED, true, 5, "Venenatis hurls her web at you, sticking you to the ground."); + p.getImpactHandler().manualHit(entity, hit, HitsplatType.NORMAL); + special = false; + } else if (prayerDrain) { + Projectile.create(entity, victim, 109).send(); // Curse projectile? + p.getSkills().decrementPrayerPoints(p.getSkills().getPrayerPoints() * 0.30); + p.sendMessage("Your prayer has been drained!"); + prayerDrain = false; + } + } + style.getSwingHandler().impact(entity, victim, state); + if (RandomFunction.random(2) == 1) { + style = CombatStyle.MAGIC; + } else { + style = CombatStyle.MELEE; + } + this.setType(style); + } + + @Override + public void visualizeImpact(Entity entity, Entity victim, BattleState state) { + if ((style == CombatStyle.MAGIC || style == CombatStyle.MELEE) && RandomFunction.random(20) == 1) { + special = true; + } + switch (style) { + case MAGIC: + Projectile.create(entity, victim, 165).send(); + break; + case MELEE: + if (!special && victim.getSkills().getPrayerPoints() > 0 && RandomFunction.random(20) == 1) { + prayerDrain = true; + } + return; + default: + break; + } + style.getSwingHandler().visualizeImpact(entity, victim, state); + } + + @Override + public int calculateAccuracy(Entity entity) { + return style.getSwingHandler().calculateAccuracy(entity); + } + + @Override + public int calculateHit(Entity entity, Entity victim, double modifier) { + return style.getSwingHandler().calculateHit(entity, victim, modifier); + } + + @Override + public int calculateDefence(Entity entity, Entity attacker) { + return style.getSwingHandler().calculateDefence(entity, attacker); + } + + @Override + public double getSetMultiplier(Entity e, int skillId) { + return style.getSwingHandler().getSetMultiplier(e, skillId); + } + + } +} diff --git a/Server/src/main/java/core/game/node/entity/player/Player.java b/Server/src/main/java/core/game/node/entity/player/Player.java index d8d27a98b..cc94d24e3 100644 --- a/Server/src/main/java/core/game/node/entity/player/Player.java +++ b/Server/src/main/java/core/game/node/entity/player/Player.java @@ -402,6 +402,7 @@ public class Player extends Entity { getProperties().setSpawnLocation(ServerConstants.HOME_LOCATION); getDetails().getSession().setObject(this); getDetails().getSession().setLastPing(System.currentTimeMillis() + 10_000L); + this.varpManager.get(678).setVarbit(0,3).send(this); } super.init(); LoginConfiguration.configureLobby(this); @@ -633,6 +634,10 @@ public class Player extends Entity { setAttribute("dead", true); } if (this.isArtificial() && killer instanceof NPC) { + /* Re-enable for bots to be "killed" by npcs + * this is causing NPE's and should be left disabled until bots are fixed. + setAttribute("dead", true); + */ return; } getPacketDispatch().sendMessage("Oh dear, you are dead!"); diff --git a/Server/src/main/java/core/game/node/entity/player/link/spawn/SpawnData.java b/Server/src/main/java/core/game/node/entity/player/link/spawn/SpawnData.java index e15ee014e..ff127b19a 100644 --- a/Server/src/main/java/core/game/node/entity/player/link/spawn/SpawnData.java +++ b/Server/src/main/java/core/game/node/entity/player/link/spawn/SpawnData.java @@ -419,10 +419,6 @@ public class SpawnData { if (GameWorld.isEconomyWorld()) { return; } - if (killer.isArtificial() || killed.isArtificial() || killer.getDetails().getInfo().getIp().equals(killed.getDetails().getInfo().getIp()) || killed.getDetails().getInfo().getMac().equals(killer.getDetails().getInfo().getMac())) { - killer.sendMessage("You can't kill someone from your own computer address."); - return; - } SpawnData killedInfo = killed.getSavedData().getSpawnData(); int increment = getStreakPoints(killer); if (killedInfo.getKillStreak() > 4) { diff --git a/Server/src/main/java/core/game/node/entity/skill/cooking/CookingRewrite.kt b/Server/src/main/java/core/game/node/entity/skill/cooking/CookingRewrite.kt index e9018f88e..5bdc73c21 100644 --- a/Server/src/main/java/core/game/node/entity/skill/cooking/CookingRewrite.kt +++ b/Server/src/main/java/core/game/node/entity/skill/cooking/CookingRewrite.kt @@ -1,10 +1,11 @@ package core.game.node.entity.skill.cooking -import core.game.node.scenery.Scenery import core.game.node.entity.player.Player import core.game.node.item.Item +import core.game.node.scenery.Scenery import org.rs09.consts.Items import org.rs09.consts.Items.BREAD_DOUGH_2307 +import org.rs09.consts.Items.RAW_BEAR_MEAT_2136 import org.rs09.consts.Items.RAW_BEEF_2132 import org.rs09.consts.Items.SEAWEED_401 import org.rs09.consts.Items.UNCOOKED_CAKE_1889 @@ -31,8 +32,8 @@ class CookingRewrite : InteractionListener() { val obj = with.asScenery() val range = obj.name.toLowerCase().contains("range") when (item.id) { - RAW_BEEF_2132 -> if (range) { - player.dialogueInterpreter.open(CookingDialogue(item.id,9436,true,obj)) + RAW_BEEF_2132, RAW_BEAR_MEAT_2136 -> if (range) { + player.dialogueInterpreter.open(CookingDialogue(item.id,Items.SINEW_9436,obj)) return@onUseWith true } BREAD_DOUGH_2307, UNCOOKED_CAKE_1889 -> if (!range) { @@ -49,7 +50,7 @@ class CookingRewrite : InteractionListener() { } companion object { - val COOKING_OBJs = intArrayOf(24313,21302, 13528, 13529, 13533, 13531, 13536, 13539, 13542, 2728, 2729, 2730, 2731, 2732, 2859, 3038, 3039, 3769, 3775, 4265, 4266, 5249, 5499, 5631, 5632, 5981, 9682, 10433, 11404, 11405, 11406, 12102, 12796, 13337, 13881, 14169, 14919, 15156, 20000, 20001, 21620, 21792, 22713, 22714, 23046, 24283, 24284, 25155, 25156, 25465, 25730, 27297, 29139, 30017, 32099, 33500, 34495, 34546, 36973, 37597, 37629, 37726, 114, 4172, 5275, 8750, 16893, 22154, 34410, 34565, 114, 9085, 9086, 9087, 12269, 15398, 25440, 25441, 2724, 2725, 2726, 4618, 4650, 5165, 6093, 6094, 6095, 6096, 8712, 9374, 9439, 9440, 9441, 10824, 17640, 17641, 17642, 17643, 18039, 21795, 24285, 24329, 27251, 33498, 35449, 36815, 36816, 37426, 40110) + val COOKING_OBJs = intArrayOf(24313,21302, 13528, 13529, 13533, 13531, 13536, 13539, 13542, 2728, 2729, 2730, 2731, 2732, 2859, 3038, 3039, 3769, 3775, 4265, 4266, 5249, 5499, 5631, 5632, 5981, 9682, 10433, 11404, 11405, 11406, 12102, 12796, 13337, 13881, 14169, 14919, 15156, 20000, 20001, 21620, 21792, 22713, 22714, 23046, 24283, 24284, 25155, 25156, 25465, 25730, 27297, 29139, 30017, 32099, 33500, 34495, 34546, 36973, 37597, 37629, 37726, 114, 4172, 5275, 8750, 16893, 22154, 34410, 34565, 114, 9085, 9086, 9087, 12269, 15398, 25440, 25441, 2724, 2725, 2726, 4618, 4650, 5165, 6093, 6094, 6095, 6096, 8712, 9374, 9439, 9440, 9441, 10824, 17640, 17641, 17642, 17643, 18039, 21795, 24285, 24329, 27251, 33498, 35449, 36815, 36816, 37426, 40110, 10377) @JvmStatic fun cook(player: Player, `object`: Scenery?, initial: Int, product: Int, amount: Int) { @@ -60,6 +61,8 @@ class CookingRewrite : InteractionListener() { player.pulseManager.run(PieCookingPulse(player, `object`, initial, product, amount)) } else if (CookableItems.intentionalBurn(initial)) { player.pulseManager.run(IntentionalBurnPulse(player, `object`, initial, product, amount)) + } else if (product == Items.SINEW_9436) { // This pulse overrides the StandardCookingPulse + player.pulseManager.run(SinewCookingPulse(player, `object`, initial, product, amount)) } else { player.pulseManager.run(StandardCookingPulse(player, `object`, initial, product, amount)) } diff --git a/Server/src/main/java/core/game/node/entity/skill/fletching/Fletching.java b/Server/src/main/java/core/game/node/entity/skill/fletching/Fletching.java index 55c26e67d..bf28158e3 100644 --- a/Server/src/main/java/core/game/node/entity/skill/fletching/Fletching.java +++ b/Server/src/main/java/core/game/node/entity/skill/fletching/Fletching.java @@ -266,11 +266,11 @@ public class Fletching { } private enum Items{ STANDARD(1511,FletchingItems.ARROW_SHAFT, FletchingItems.SHORT_BOW, FletchingItems.LONG_BOW, FletchingItems.WOODEN_STOCK), - OAK(1521, FletchingItems.OAK_SHORTBOW, FletchingItems.OAK_LONGBOW, FletchingItems.OAK_STOCK), - WILLOW(1519, FletchingItems.WILLOW_SHORTBOW, FletchingItems.WILLOW_LONGBOW, FletchingItems.WILLOW_STOCK), - MAPLE(1517, FletchingItems.MAPLE_SHORTOW, FletchingItems.MAPLE_LONGBOW, FletchingItems.MAPLE_STOCK), - YEW(1515, FletchingItems.YEW_SHORTBOW, FletchingItems.YEW_LONGBOW, FletchingItems.YEW_STOCK), - MAGIC(1513, FletchingItems.MAGIC_SHORTBOW, FletchingItems.MAGIC_LONGBOW), + OAK(1521, FletchingItems.O_ARROW_SHAFT, FletchingItems.OAK_SHORTBOW, FletchingItems.OAK_LONGBOW, FletchingItems.OAK_STOCK), + WILLOW(1519, FletchingItems.W_ARROW_SHAFT, FletchingItems.WILLOW_SHORTBOW, FletchingItems.WILLOW_LONGBOW, FletchingItems.WILLOW_STOCK), + MAPLE(1517, FletchingItems.M_ARROW_SHAFT, FletchingItems.MAPLE_SHORTOW, FletchingItems.MAPLE_LONGBOW, FletchingItems.MAPLE_STOCK), + YEW(1515, FletchingItems.Y_ARROW_SHAFT, FletchingItems.YEW_SHORTBOW, FletchingItems.YEW_LONGBOW, FletchingItems.YEW_STOCK), + MAGIC(1513, FletchingItems.MAG_ARROW_SHAFT, FletchingItems.MAGIC_SHORTBOW, FletchingItems.MAGIC_LONGBOW), TEAK(6333, FletchingItems.TEAK_STOCK), MAHOGANY(6332, FletchingItems.MAHOGANY_STOCK); @@ -302,26 +302,31 @@ public class Fletching { WOODEN_STOCK(9440, 6, 9, 1), //Oak logs + O_ARROW_SHAFT(52, 7.5, 15, 25), OAK_SHORTBOW(54, 16.5, 20, 1), OAK_LONGBOW(56,25,25,1), OAK_STOCK(9442, 16, 24, 1), //Willow logs + W_ARROW_SHAFT(52, 12.5, 30, 35), WILLOW_SHORTBOW(60, 33.3, 35, 1), WILLOW_LONGBOW(58, 41.5, 40, 1), WILLOW_STOCK(9444, 22, 39, 1), //Maple logs + M_ARROW_SHAFT(52, 25, 45, 50), MAPLE_SHORTOW(64, 50, 50, 1), MAPLE_LONGBOW(62, 58.3, 55, 1), MAPLE_STOCK(9448, 32, 54, 1), //Yew logs + Y_ARROW_SHAFT(52, 43, 60, 65), YEW_SHORTBOW(68, 67.5, 65, 1), YEW_LONGBOW(66, 75, 70, 1), YEW_STOCK(9452, 50, 69, 1), //Magic logs + MAG_ARROW_SHAFT(52, 61, 75, 80), MAGIC_SHORTBOW(72, 83.3, 80,1), MAGIC_LONGBOW(70, 91.5, 85, 1), diff --git a/Server/src/main/java/core/game/node/entity/skill/gather/SkillingTool.java b/Server/src/main/java/core/game/node/entity/skill/gather/SkillingTool.java index a77366987..c1083041d 100644 --- a/Server/src/main/java/core/game/node/entity/skill/gather/SkillingTool.java +++ b/Server/src/main/java/core/game/node/entity/skill/gather/SkillingTool.java @@ -79,6 +79,11 @@ public enum SkillingTool { * Represents a rune pickaxe (mining). */ RUNE_PICKAXE(1275, 41, 0.65D, new Animation(624)), + + /** + * Represents the Dragon Pickaxe (mining). + */ + DRAGON_PICKAXE(14723, 61, 1.0D, new Animation(11155)), /** * Represents the Inferno Adze (woodcutting) @@ -88,7 +93,7 @@ public enum SkillingTool { /** * Represents the Inferno Adze (mining) */ - INFERNO_ADZE2(13661, 61, 1.0D, new Animation(10222)), + INFERNO_ADZE2(13661, 61, 0.65D, new Animation(10222)), HATCHET_CLASS1(Items.HATCHET_CLASS_1_14132, 1, 0.1, new Animation(10603)), HATCHET_CLASS2(Items.HATCHET_CLASS_2_14134, 20, 0.3, new Animation(10604)), @@ -206,6 +211,7 @@ public enum SkillingTool { SkillingTool[] pickaxePriority = new SkillingTool[] { SkillingTool.PICKAXE_CLASS5, SkillingTool.PICKAXE_CLASS4, + SkillingTool.DRAGON_PICKAXE, SkillingTool.RUNE_PICKAXE, SkillingTool.PICKAXE_CLASS3, SkillingTool.ADAMANT_PICKAXE, diff --git a/Server/src/main/java/core/game/node/entity/skill/slayer/Master.java b/Server/src/main/java/core/game/node/entity/skill/slayer/Master.java index 83ee6be4d..c45680435 100644 --- a/Server/src/main/java/core/game/node/entity/skill/slayer/Master.java +++ b/Server/src/main/java/core/game/node/entity/skill/slayer/Master.java @@ -177,6 +177,15 @@ public enum Master { new Task(Tasks.BANSHEE, 5), new Task(Tasks.CAVE_CRAWLERS, 5)), DURADEL(8275, 100, 50, new int[]{50, 199}, new int[]{15, 75, 225}, + //new Task(Tasks.JAD, 1), - to remain disabled until boss tasks have lower kill amounts + new Task(Tasks.COMMANDER_ZILYANA,1), + new Task(Tasks.CHAOS_ELEMENTAL, 1), + new Task(Tasks.GENERAL_GRARDOOR,1), + new Task(Tasks.GIANT_MOLE,1), + new Task(Tasks.KING_BLACK_DRAGON,1), + new Task(Tasks.KRIL_TSUTSAROTH,1), + new Task(Tasks.KREE_ARRA,1), + new Task(Tasks.VENENATIS,1), new Task(Tasks.ABYSSAL_DEMONS,12), new Task(Tasks.DARK_BEASTS,11), new Task(Tasks.TZHAAR, 10), diff --git a/Server/src/main/java/core/game/node/entity/skill/slayer/Tasks.java b/Server/src/main/java/core/game/node/entity/skill/slayer/Tasks.java index b3307bada..4f7c565ad 100644 --- a/Server/src/main/java/core/game/node/entity/skill/slayer/Tasks.java +++ b/Server/src/main/java/core/game/node/entity/skill/slayer/Tasks.java @@ -93,13 +93,14 @@ public enum Tasks { WOLVES(20, new int[] { 95, 96, 97, 141, 142, 143, 839, 1198, 1330, 1558, 1559, 1951, 1952, 1953, 1954, 1955, 1956, 4413, 4414, 6046, 6047, 6048, 6049, 6050, 6051, 6052, 6829, 6830, 7005 }, new String[] { "Wolves are more agressive then dog's." }, 1, false), ZOMBIES(10, new int[] { 73, 74, 75, 76, 2058, 2714, 2863, 2866, 2869, 2878, 3622, 4392, 4393, 4394, 5293, 5294, 5295, 5296, 5297, 5298, 5299, 5300, 5301, 5302, 5303, 5304, 5305, 5306, 5307, 5308, 5309, 5310, 5311, 5312, 5313, 5314, 5315, 5316, 5317, 5318, 5319, 5320, 5321, 5322, 5323, 5324, 5325, 5326, 5327, 5328, 5329, 5330, 5331, 5375, 5376, 5377, 5378, 5379, 5380, 5393, 5394, 5395, 5396, 5397, 5398, 5399, 5400, 5401, 5402, 5403, 5404, 5405, 5406, 5407, 5408, 5409, 5410, 6099, 6100, 6131, }, new String[] { "Zombies are creatures with no brain, they do hit farley", "high though." }, 1, true), JAD(90, new int[] { }, new String[] { "TzTok-Jad is the king of the Fight Caves." }, 1, false, 1 | 1 << 16), - CHAOS_ELEMENTAL(90, new int[] { 3200 }, new String[] { "The Chaos Elemental is located in the deep Wilderness." }, 1, false, 5 | 25 << 16), + CHAOS_ELEMENTAL(75, new int[] { 3200 }, new String[] { "The Chaos Elemental is located in the deep Wilderness." }, 1, false, 5 | 25 << 16), GIANT_MOLE(75, new int[] { 3340 }, new String[] { "Fighting the Giant Mole will require a light source." }, 1, false, 5 | 25 << 16), KING_BLACK_DRAGON(75, new int[] { 50 }, new String[] { "The King Black Dragon is located in the deep wilderness." }, 1, false, 5 | 25 << 16), COMMANDER_ZILYANA(90, new int[] { 6247 }, new String[] { "Commander Zilyana is one of the four Godwars bosses." }, 1, false, 5 | 25 << 16), GENERAL_GRARDOOR(90, new int[] { 6260 }, new String[] { "General Grardoor is one of the four Godwars bosses." }, 1, false, 5 | 25 << 16), KRIL_TSUTSAROTH(90, new int[] { 6203 }, new String[] { "Kril Tsutsaroth is one of the four Godwars bosses." }, 1, false, 5 | 25 << 16), KREE_ARRA(90, new int[] { 6222 }, new String[] { "Kree'arra is one of the four Godwars bosses." }, 1, false, 5 | 25 << 16), + VENENATIS(75, new int[] { 8591 }, new String[] { "Venenatis is located in the deep Wilderness." }, 1, false, 5 | 25 << 16), SKELETAL_WYVERN(70, new int[] { 3068, 3069, 3070, 3071 }, new String[] { "A skeletal wyvern requires an elemental, mirror", "or dragonfire shield." }, 72, false, 24 | 39 << 16); static final HashMap taskMap = new HashMap<>(); diff --git a/Server/src/main/java/core/game/system/SystemManager.java b/Server/src/main/java/core/game/system/SystemManager.java index 48685fdb3..67c942e5d 100644 --- a/Server/src/main/java/core/game/system/SystemManager.java +++ b/Server/src/main/java/core/game/system/SystemManager.java @@ -1,6 +1,7 @@ package core.game.system; import core.game.system.security.EncryptionManager; +import gui.ServerMonitor; import rs09.game.world.GameWorld; /** diff --git a/Server/src/main/java/core/game/world/map/zone/impl/WildernessZone.java b/Server/src/main/java/core/game/world/map/zone/impl/WildernessZone.java index 104b85204..bab217784 100644 --- a/Server/src/main/java/core/game/world/map/zone/impl/WildernessZone.java +++ b/Server/src/main/java/core/game/world/map/zone/impl/WildernessZone.java @@ -254,7 +254,7 @@ public final class WildernessZone extends MapZone { } else if (e instanceof NPC) { NPC n = (NPC) e; if (n.getDefinition().hasAttackOption() && n.isAggressive()) { - //n.setAggressive(true); + n.setAggressive(true); n.setAggressiveHandler(new AggressiveHandler(n, AggressiveBehavior.WILDERNESS)); } } diff --git a/Server/src/main/java/core/net/packet/in/IdlePacketHandler.java b/Server/src/main/java/core/net/packet/in/IdlePacketHandler.java index 0acb48c24..ec542a2a2 100644 --- a/Server/src/main/java/core/net/packet/in/IdlePacketHandler.java +++ b/Server/src/main/java/core/net/packet/in/IdlePacketHandler.java @@ -14,13 +14,14 @@ public final class IdlePacketHandler implements IncomingPacket { @Override public void decode(Player player, int opcode, IoBuffer buffer) { - if (player.getDetails().getRights() != Rights.ADMINISTRATOR) { + /**if (player.getDetails().getRights() != Rights.ADMINISTRATOR) { GeneralBotCreator.BotScriptPulse pulse = player.getAttribute("botting:script",null); if(pulse != null && pulse.isRunning()){ return; } player.getPacketDispatch().sendLogout(); - } + return; + }*/ } } \ No newline at end of file diff --git a/Server/src/main/kotlin/api/God.kt b/Server/src/main/kotlin/api/God.kt index 6bbeaa0d0..106ba9ad2 100644 --- a/Server/src/main/kotlin/api/God.kt +++ b/Server/src/main/kotlin/api/God.kt @@ -1,3 +1,4 @@ + package api enum class God(vararg val validItems: Int) { diff --git a/Server/src/main/kotlin/rs09/game/ai/general/scriptrepository/GreenDragonKiller.kt b/Server/src/main/kotlin/rs09/game/ai/general/scriptrepository/GreenDragonKiller.kt index 7142f2d1d..25b46b670 100644 --- a/Server/src/main/kotlin/rs09/game/ai/general/scriptrepository/GreenDragonKiller.kt +++ b/Server/src/main/kotlin/rs09/game/ai/general/scriptrepository/GreenDragonKiller.kt @@ -22,6 +22,7 @@ import rs09.game.node.entity.combat.CombatSwingHandler import rs09.game.node.entity.combat.handlers.MagicSwingHandler import rs09.game.node.entity.combat.handlers.MeleeSwingHandler import rs09.game.node.entity.combat.handlers.RangeSwingHandler +import rs09.game.world.GameWorld import kotlin.random.Random /** @@ -36,13 +37,8 @@ class GreenDragonKiller(val style: CombatStyle, area: ZoneBorders? = null) : Scr var lootDelay = 0 var offerMade = false - var food = if (Random.nextBoolean()){ - Items.LOBSTER_379 - } else if(Random.nextBoolean()){ - Items.SWORDFISH_373 - } else { - Items.SHARK_385 - } + var food = Items.SWORDFISH_373 + var myBorders: ZoneBorders? = null val type = when(style){ @@ -97,7 +93,7 @@ class GreenDragonKiller(val style: CombatStyle, area: ZoneBorders? = null) : Scr State.LOOTING -> { lootDelay = 0 - val items = AIRepository.groundItems.get(bot) + val items = AIRepository.groundItems[bot] if(items.isNullOrEmpty()) {state = State.KILLING; return} if(bot.inventory.isFull) { if(bot.inventory.containsItem(Item(food))){ @@ -107,7 +103,7 @@ class GreenDragonKiller(val style: CombatStyle, area: ZoneBorders? = null) : Scr } return } - items.forEach {it: Item -> scriptAPI.takeNearestGroundItem(it.id)} + items.toTypedArray().forEach {it: Item -> scriptAPI.takeNearestGroundItem(it.id)} } State.TO_BANK -> { @@ -145,7 +141,7 @@ class GreenDragonKiller(val style: CombatStyle, area: ZoneBorders? = null) : Scr bot.inventory.clear() state = if(bot.bank.getAmount(food) < 10) State.TO_GE - else + else State.TO_DRAGONS for(item in inventory) bot.inventory.add(item) @@ -156,28 +152,6 @@ class GreenDragonKiller(val style: CombatStyle, area: ZoneBorders? = null) : Scr }) } - State.BUYING_FOOD -> { - if(!offerMade) - { - scriptAPI.buyFromGE(bot, food, 100) - offerMade = true - } else - { - val offer = AIRepository.getOffer(bot) - if (offer == null) { - offerMade = false - } else { - if (offer.completedAmount == offer.amount) { - state = State.TO_DRAGONS - offer.offerState = OfferState.REMOVED - bot.bank.add(Item(offer.itemID, offer.completedAmount)) - bot.bank.refresh() - scriptAPI.withdraw(food, 10) - } - } - } - } - State.TO_DRAGONS -> { offerMade = false if(bot.location.x >= 3143){ @@ -225,14 +199,19 @@ class GreenDragonKiller(val style: CombatStyle, area: ZoneBorders? = null) : Scr State.SELL_GE -> { scriptAPI.sellAllOnGe() - state = State.BUYING_FOOD + GameWorld.Pulser.submit(object : Pulse() { + override fun pulse(): Boolean { + bot.bank.add(Item(Items.SWORDFISH_373, 100)) + return true + } + }) + state = State.BANKING } State.REFRESHING -> { running = false return } - } } @@ -257,7 +236,6 @@ class GreenDragonKiller(val style: CombatStyle, area: ZoneBorders? = null) : Scr TO_GE, SELL_GE, REFRESHING, - BUYING_FOOD } @@ -295,4 +273,4 @@ class GreenDragonKiller(val style: CombatStyle, area: ZoneBorders? = null) : Scr return super.canSwing(entity, victim) } } -} +} \ No newline at end of file diff --git a/Server/src/main/kotlin/rs09/game/content/activity/blastfurnace/BlastFurnaceListeners.kt b/Server/src/main/kotlin/rs09/game/content/activity/blastfurnace/BlastFurnaceListeners.kt index 870fa7e33..059cad2dd 100644 --- a/Server/src/main/kotlin/rs09/game/content/activity/blastfurnace/BlastFurnaceListeners.kt +++ b/Server/src/main/kotlin/rs09/game/content/activity/blastfurnace/BlastFurnaceListeners.kt @@ -321,60 +321,40 @@ class BlastFurnaceListeners : InteractionListener() { /**The sequel to Limp Bizkits hit single, "Fix shit"*/ - on(brokenPotPipe,SCENERY,"repair"){ player, _ -> - if(player.getSkills().getLevel(Skills.CRAFTING) >= 30){ - if(inInventory(player,Items.HAMMER_2347,1)) { - rewardXP(player, Skills.CRAFTING, 50.0) - BlastFurnace.potPipeBroken = false - } - else { - sendMessage(player, "I need a hammer to do this!") - } + on(brokenPotPipe,SCENERY,"repair"){ player, node -> + if(inInventory(player,Items.HAMMER_2347,1) && player.getSkills().getLevel(Skills.CRAFTING) >= 30){ + rewardXP(player,Skills.CRAFTING, 50.0) + BlastFurnace.potPipeBroken = false }else{ sendDialogue(player,"I need 30 Craft in order to do this") } return@on true } - on(brokenPumpPipe,SCENERY, "repair"){ player, _ -> - if(player.getSkills().getLevel(Skills.CRAFTING) >= 30){ - if(inInventory(player,Items.HAMMER_2347,1)) { - rewardXP(player, Skills.CRAFTING, 50.0) - BlastFurnace.pumpPipeBroken = false - } - else { - sendMessage(player, "I need a hammer to do this!") - } + on(brokenPumpPipe,SCENERY, "repair"){ player, node -> + if(inInventory(player,Items.HAMMER_2347,1) && player.getSkills().getLevel(Skills.CRAFTING) >= 30){ + rewardXP(player,Skills.CRAFTING, 50.0) + BlastFurnace.pumpPipeBroken = false }else{ sendDialogue(player,"I need 30 Craft in order to do this") } return@on true } - on(brokenBelt,SCENERY,"repair"){ player, _ -> - if(player.getSkills().getLevel(Skills.CRAFTING) >= 30){ - if(inInventory(player,Items.HAMMER_2347,1)) { - rewardXP(player, Skills.CRAFTING, 50.0) - BlastFurnace.beltBroken = false - } - else { - sendMessage(player, "I need a hammer to do this!") - } + on(brokenBelt,SCENERY,"repair"){ player, node -> + if(inInventory(player,Items.HAMMER_2347,1) && player.getSkills().getLevel(Skills.CRAFTING) >= 30){ + rewardXP(player,Skills.CRAFTING, 50.0) + BlastFurnace.beltBroken = false }else{ sendDialogue(player,"I need 30 Craft in order to do this") } return@on true } - on(brokenCog,SCENERY,"repair"){ player, _ -> - if(player.getSkills().getLevel(Skills.CRAFTING) >= 30){ - if(inInventory(player,Items.HAMMER_2347,1)) { - rewardXP(player, Skills.CRAFTING, 50.0) - BlastFurnace.cogBroken = false - } - else { - sendMessage(player, "I need a hammer to do this!") - } + on(brokenCog,SCENERY,"repair"){ player, node -> + if(inInventory(player,Items.HAMMER_2347,1) && player.getSkills().getLevel(Skills.CRAFTING) >= 30){ + rewardXP(player,Skills.CRAFTING, 50.0) + BlastFurnace.cogBroken = false }else{ sendDialogue(player,"I need 30 Craft in order to do this") } diff --git a/Server/src/main/kotlin/rs09/game/content/activity/blastfurnace/BlastFurnaceZone.kt b/Server/src/main/kotlin/rs09/game/content/activity/blastfurnace/BlastFurnaceZone.kt index 291c33ee0..7c51956f9 100644 --- a/Server/src/main/kotlin/rs09/game/content/activity/blastfurnace/BlastFurnaceZone.kt +++ b/Server/src/main/kotlin/rs09/game/content/activity/blastfurnace/BlastFurnaceZone.kt @@ -14,9 +14,7 @@ import core.plugin.Plugin * operate and run its logic if there are actual players in this zone * @author phil lips*/ - -//Remove this once the funny dupe gets fixed -//@Initializable +@Initializable class BlastFurnaceZone : MapZone("Blast Furnace Zone",true), Plugin { var pulseStarted = false diff --git a/Server/src/main/kotlin/rs09/game/content/activity/guild/crafting/CraftingGuildListeners.kt b/Server/src/main/kotlin/rs09/game/content/activity/guild/crafting/CraftingGuildListeners.kt new file mode 100644 index 000000000..2e404533e --- /dev/null +++ b/Server/src/main/kotlin/rs09/game/content/activity/guild/crafting/CraftingGuildListeners.kt @@ -0,0 +1,43 @@ +package rs09.game.content.activity.guild.crafting + +import api.* +import core.game.content.dialogue.FacialExpression +import core.game.content.global.action.DoorActionHandler +import core.game.node.entity.skill.Skills +import org.rs09.consts.NPCs +import rs09.game.content.dialogue.region.craftingguild.MasterCrafterDialogue +import rs09.game.content.dialogue.region.craftingguild.TheDoorDialogues +import rs09.game.interaction.InteractionListener + +/** + * @author bushtail + */ + +class CraftingGuildListeners : InteractionListener() { + private val GUILD_DOOR = 2647 + private val APRON = 1757 + private val CAPE = 9780 + val master = NPCs.MASTER_CRAFTER_805 + + override fun defineListeners() { + on(GUILD_DOOR, SCENERY, "open" ) { player, door -> + if(hasLevelStat(player, Skills.CRAFTING, 40)) { + if(inEquipment(player, APRON)) { + openDialogue(player, TheDoorDialogues(2)) + DoorActionHandler.handleAutowalkDoor(player, door.asScenery()) + return@on true + } else if(inEquipment(player, CAPE)) { + openDialogue(player, TheDoorDialogues(2)) + DoorActionHandler.handleAutowalkDoor(player, door.asScenery()) + return@on true + } else { + openDialogue(player, TheDoorDialogues(1)) + return@on false + } + } else { + openDialogue(player, TheDoorDialogues(0)) + return@on false + } + } + } +} \ No newline at end of file diff --git a/Server/src/main/kotlin/rs09/game/content/dialogue/region/burthorpe/DenulthDialogue.kt b/Server/src/main/kotlin/rs09/game/content/dialogue/region/burthorpe/DenulthDialogue.kt new file mode 100644 index 000000000..77d49106b --- /dev/null +++ b/Server/src/main/kotlin/rs09/game/content/dialogue/region/burthorpe/DenulthDialogue.kt @@ -0,0 +1,35 @@ +package rs09.game.content.dialogue.region.burthorpe + +import api.openDialogue +import core.game.content.dialogue.DialoguePlugin +import core.game.node.entity.npc.NPC +import core.game.node.entity.player.Player +import core.plugin.Initializable +import org.rs09.consts.NPCs +import rs09.game.content.quest.members.deathplateau.DenulthDialogueFile + +/** + * @author qmqz + */ + +@Initializable +class DenulthDialogue(player: Player? = null) : DialoguePlugin(player){ + + override fun open(vararg args: Any?): Boolean { + npc = args[0] as NPC + openDialogue(player, DenulthDialogueFile()) + return true + } + + override fun handle(interfaceId: Int, buttonId: Int): Boolean { + return true + } + + override fun newInstance(player: Player?): DialoguePlugin { + return DenulthDialogue(player) + } + + override fun getIds(): IntArray { + return intArrayOf(NPCs.DENULTH_1060) + } +} diff --git a/Server/src/main/kotlin/rs09/game/content/dialogue/region/burthorpe/EohricDialogue.kt b/Server/src/main/kotlin/rs09/game/content/dialogue/region/burthorpe/EohricDialogue.kt new file mode 100644 index 000000000..5e1abad6d --- /dev/null +++ b/Server/src/main/kotlin/rs09/game/content/dialogue/region/burthorpe/EohricDialogue.kt @@ -0,0 +1,35 @@ +package rs09.game.content.dialogue.region.burthorpe + +import api.openDialogue +import core.game.content.dialogue.DialoguePlugin +import core.game.node.entity.npc.NPC +import core.game.node.entity.player.Player +import core.plugin.Initializable +import org.rs09.consts.NPCs +import rs09.game.content.quest.members.deathplateau.EohricDialogueFile + +/** + * @author qmqz + */ + +@Initializable +class EohricDialogue(player: Player? = null) : DialoguePlugin(player){ + + override fun open(vararg args: Any?): Boolean { + npc = args[0] as NPC + openDialogue(player, EohricDialogueFile()) + return true + } + + override fun handle(interfaceId: Int, buttonId: Int): Boolean { + return true + } + + override fun newInstance(player: Player?): DialoguePlugin { + return EohricDialogue(player) + } + + override fun getIds(): IntArray { + return intArrayOf(NPCs.EOHRIC_1080) + } +} diff --git a/Server/src/main/kotlin/rs09/game/content/dialogue/region/craftingguild/MasterCrafterDialogue.kt b/Server/src/main/kotlin/rs09/game/content/dialogue/region/craftingguild/MasterCrafterDialogue.kt new file mode 100644 index 000000000..7dc380090 --- /dev/null +++ b/Server/src/main/kotlin/rs09/game/content/dialogue/region/craftingguild/MasterCrafterDialogue.kt @@ -0,0 +1,62 @@ +package rs09.game.content.dialogue.region.craftingguild + +import api.* +import core.game.content.dialogue.DialoguePlugin +import core.game.content.dialogue.FacialExpression +import core.game.content.global.Skillcape +import core.game.node.entity.npc.NPC +import core.game.node.entity.player.Player +import core.game.node.entity.skill.Skills +import core.game.node.item.Item +import core.plugin.Initializable +import rs09.tools.END_DIALOGUE + +/** + * @author bushtail + */ + +@Initializable +class MasterCrafterDialogue(player: Player? = null) : DialoguePlugin(player) { + + override fun newInstance(player: Player) : DialoguePlugin { + return MasterCrafterDialogue(player) + } + + override fun open(vararg args: Any?) : Boolean { + npc = args[0] as NPC + stage = 0 + return true + } + + override fun handle(interfaceId: Int, buttonId: Int) : Boolean { + when(stage) { + 0 -> if(hasLevelStat(player, Skills.CRAFTING, 99)) { + player(FacialExpression.ASKING, "Hey, could I buy a Skillcape of Crafting?").also{ stage = 10 } + } else { + player(FacialExpression.ASKING,"Hey, what is that cape you're wearing? I don't recognize it.").also { stage++ } + } + 1 -> npcl(FacialExpression.FRIENDLY, "This? This is a Skillcape of Crafting. It is a symbol of my ability and standing here in the Crafting Guild. If you should ever achieve level 99 Crafting come and talk to me and we'll see if we can sort you out with one.").also{ stage = END_DIALOGUE } + 10 -> npcl(FacialExpression.HAPPY, "Certainly! Right after you pay me 99000 coins.").also{ stage++ } + 11 -> options("Okay, here you go.", "No thanks.").also{ stage++ } + 12 -> when(buttonId) { + 1 -> player(FacialExpression.FRIENDLY, "Okay, here you go.").also{ stage++ } + 2 -> player(FacialExpression.HALF_THINKING, "No, thanks.").also{ stage = END_DIALOGUE } + } + 13 -> if(inInventory(player, 617, 99000)) { + removeItem(player, Item(617, 99000), Container.INVENTORY) + addItem(player, 9780, 1) + npcl(FacialExpression.HAPPY, "There you go! Enjoy.").also{ stage = END_DIALOGUE } + } else { + npcl(FacialExpression.DISAGREE, "You don't have enough coins for a cape.").also{ stage = END_DIALOGUE } + } + 20 -> npcl(FacialExpression.DISAGREE, "Where's your brown apron? You can't come in here unless you're wearing one.").also{ stage++ } + 21 -> player(FacialExpression.HALF_GUILTY, "Err... I haven't got one.").also{ stage = END_DIALOGUE } + } + return true + } + + override fun getIds() : IntArray { + return intArrayOf(805) + } + +} \ No newline at end of file diff --git a/Server/src/main/kotlin/rs09/game/content/dialogue/region/craftingguild/TannerDialogue.kt b/Server/src/main/kotlin/rs09/game/content/dialogue/region/craftingguild/TannerDialogue.kt new file mode 100644 index 000000000..c462f50ce --- /dev/null +++ b/Server/src/main/kotlin/rs09/game/content/dialogue/region/craftingguild/TannerDialogue.kt @@ -0,0 +1,49 @@ +package rs09.game.content.dialogue.region.craftingguild + +import core.game.content.dialogue.DialoguePlugin +import core.game.content.dialogue.FacialExpression +import core.game.node.entity.npc.NPC +import core.game.node.entity.player.Player +import core.plugin.Initializable +import rs09.tools.END_DIALOGUE + +/** + * @author bushtail + */ + +@Initializable +class TannerDialogue(player: Player? = null) : DialoguePlugin(player) { + + override fun newInstance(player: Player) : DialoguePlugin { + return TannerDialogue(player) + } + + override fun open(vararg args: Any?) : Boolean { + npc = args[0] as NPC + npcl(FacialExpression.NEUTRAL, "Greetings friend. I am a manufacturer of leather.") + stage = 0 + return true + } + + override fun handle(interfaceId: Int, buttonId: Int) : Boolean { + when(stage) { + 0 -> options("Can I buy some leather then?", "Leather is rather weak stuff.").also{ stage++ } + 1 -> when(buttonId) { + 1 -> player(FacialExpression.ASKING,"Can I buy some leather then?").also{ stage = 10 } + 2 -> player(FacialExpression.SUSPICIOUS, "Leather is rather weak stuff.").also { stage = 20 } + } + + 10 -> npcl(FacialExpression.FRIENDLY, "Certainly!").also { stage = END_DIALOGUE; npc.openShop(player) } + + 20 -> npcl(FacialExpression.NOD_YES, "Normal leather may be quite weak, but it's very cheap - I make it from cowhides for only 1 gp per hide - and it's so easy to craft that anyone can work with it.").also{ stage++ } + 21 -> npcl(FacialExpression.HALF_THINKING, "Alternatively you could try hard leather. It's not so easy to craft, but I only charge 3 gp per cowhide to prepare it, and it makes much sturdier armour.").also{ stage++ } + 22 -> npcl(FacialExpression.FRIENDLY, "I can also tan snake hides and dragonhides, suitable for craftinginto the highest quality armour for rangers.").also{ stage++ } + 23 -> player(FacialExpression.NEUTRAL, "Thanks, I'll bear it in mind.").also{ stage = END_DIALOGUE } + } + return true + } + override fun getIds() : IntArray { + return intArrayOf(804) + } + +} \ No newline at end of file diff --git a/Server/src/main/kotlin/rs09/game/content/dialogue/region/craftingguild/TheDoorDialogues.kt b/Server/src/main/kotlin/rs09/game/content/dialogue/region/craftingguild/TheDoorDialogues.kt new file mode 100644 index 000000000..fe369eb48 --- /dev/null +++ b/Server/src/main/kotlin/rs09/game/content/dialogue/region/craftingguild/TheDoorDialogues.kt @@ -0,0 +1,37 @@ +package rs09.game.content.dialogue.region.craftingguild + +import core.game.content.dialogue.FacialExpression +import core.game.node.entity.npc.NPC +import core.game.world.map.Location +import rs09.game.content.activity.guild.crafting.CraftingGuildListeners +import rs09.game.content.dialogue.DialogueFile +import rs09.tools.END_DIALOGUE + +/** + * @author bushtail + */ + +class TheDoorDialogues(val it: Int) : DialogueFile() { + var i = CraftingGuildListeners() + var n = NPC(i.master) + var l = Location.create(2933,3289,0) + + override fun handle(interfaceId: Int, buttonId: Int) { + npc = n + when(it) { + 0 -> when(stage) { + 0 -> npcl(FacialExpression.DISAGREE, "Sorry, only experienced crafters are allowed in here. You must be level 40 or above to enter.").also{ stage = END_DIALOGUE} + } + + 1 -> when(stage) { + 0 -> npcl(FacialExpression.DISAGREE, "Where's your brown apron? You can't come in here unless you're wearing one.").also{ stage = END_DIALOGUE } + } + + 2 -> when(stage) { + 0 -> if(player!!.location == l) { + npcl(FacialExpression.FRIENDLY, "Welcome to the Guild of Master Craftsmen.").also{ stage = END_DIALOGUE } + } + } + } + } +} \ No newline at end of file diff --git a/Server/src/main/kotlin/rs09/game/content/dialogue/ZandarHorfyreDialogue.kt b/Server/src/main/kotlin/rs09/game/content/dialogue/region/darkwizardstower/ZandarHorfyreDialogue.kt similarity index 89% rename from Server/src/main/kotlin/rs09/game/content/dialogue/ZandarHorfyreDialogue.kt rename to Server/src/main/kotlin/rs09/game/content/dialogue/region/darkwizardstower/ZandarHorfyreDialogue.kt index ef87e4042..f34dd4fac 100644 --- a/Server/src/main/kotlin/rs09/game/content/dialogue/ZandarHorfyreDialogue.kt +++ b/Server/src/main/kotlin/rs09/game/content/dialogue/region/darkwizardstower/ZandarHorfyreDialogue.kt @@ -1,4 +1,4 @@ -package rs09.game.content.dialogue +package rs09.game.content.dialogue.region.darkwizardstower import api.teleport import core.game.content.dialogue.DialoguePlugin @@ -10,10 +10,13 @@ import core.game.world.map.Location import core.plugin.Initializable import rs09.tools.END_DIALOGUE +/** + * @author bushtail + */ @Initializable class ZandarHorfyreDialogue(player: Player? = null) : DialoguePlugin(player) { - override fun newInstance(player: Player): DialoguePlugin { + override fun newInstance(player: Player) : DialoguePlugin { return ZandarHorfyreDialogue(player) } @@ -33,8 +36,7 @@ class ZandarHorfyreDialogue(player: Player? = null) : DialoguePlugin(player) { 2 -> player("No, I think I'll stay for a bit.").also{ stage = 20 } } - 10 -> npcl(FacialExpression.NEUTRAL,"Good! And don't forget to close the door behind you!").also{ stage++ } - 11 -> stage = END_DIALOGUE + 10 -> npcl(FacialExpression.NEUTRAL,"Good! And don't forget to close the door behind you!").also{ stage = END_DIALOGUE } 20 -> npcl(FacialExpression.ANNOYED,"Actually, that wasn't an invitation. I've tried being polite, now we'll do it the hard way!").also{ teleport(player, Location.create(3217, 3177, 0), TeleportManager.TeleportType.INSTANT) }.also{ stage++ } 21 -> player(FacialExpression.ANGRY, "Zamorak curse that mage!").also{ stage++ } diff --git a/Server/src/main/kotlin/rs09/game/content/dialogue/region/falador/ApprenticeWorkmanDialogue.kt b/Server/src/main/kotlin/rs09/game/content/dialogue/region/falador/ApprenticeWorkmanDialogue.kt index 197313549..d53acd0fa 100644 --- a/Server/src/main/kotlin/rs09/game/content/dialogue/region/falador/ApprenticeWorkmanDialogue.kt +++ b/Server/src/main/kotlin/rs09/game/content/dialogue/region/falador/ApprenticeWorkmanDialogue.kt @@ -24,7 +24,7 @@ class ApprenticeWorkmanDialogue(player: Player? = null) : DialoguePlugin(player) when(stage){ 0 -> { npc(FacialExpression.FRIENDLY, "Sorry, I haven't got time to chat.", - "We've only just finished a collossal order of furniture", + "We've only just finished a colossal order of furniture", "for the Varrock area, and already there's more work", "coming in.").also { stage++ } } diff --git a/Server/src/main/kotlin/rs09/game/content/global/action/PickupHandler.kt b/Server/src/main/kotlin/rs09/game/content/global/action/PickupHandler.kt index c480faab5..f07ac7b4b 100644 --- a/Server/src/main/kotlin/rs09/game/content/global/action/PickupHandler.kt +++ b/Server/src/main/kotlin/rs09/game/content/global/action/PickupHandler.kt @@ -74,9 +74,14 @@ object PickupHandler { player.achievementDiaryManager.updateTask(player, DiaryType.KARAMJA, 2, 7, palms >= 5) } GroundItemManager.destroy(item) + /* Re-enable for bots to drop items, however + * this is causing NPE's and should be left disabled until bots are fixed. + if (item.dropper?.isArtificial == true) { getItems(item.dropper)?.remove(item) } + */ + player.audioManager.send(Audio(2582, 10, 1)) } return true diff --git a/Server/src/main/kotlin/rs09/game/content/global/worldevents/holiday/christmas/GiftRollPlugin.kt b/Server/src/main/kotlin/rs09/game/content/global/worldevents/holiday/christmas/GiftRollPlugin.kt index 3d61e59a6..4cdbd584d 100644 --- a/Server/src/main/kotlin/rs09/game/content/global/worldevents/holiday/christmas/GiftRollPlugin.kt +++ b/Server/src/main/kotlin/rs09/game/content/global/worldevents/holiday/christmas/GiftRollPlugin.kt @@ -18,6 +18,7 @@ import rs09.tools.stringtools.colorize import java.time.Month import java.util.* +//@Initializable - uncomment this to re enable cope boxes class GiftRollPlugin : XPGainPlugin() { override fun run(player: Player, skill: Int, amount: Double) { val numDaily = getDailyGifts(player) @@ -26,7 +27,7 @@ class GiftRollPlugin : XPGainPlugin() { if(System.currentTimeMillis() < cooldown) return player.setAttribute("/save:christmas-cooldown", System.currentTimeMillis() + 5000L) - if(System.currentTimeMillis() > cooldown && numDaily < 10 && RandomFunction.roll(15).also { player.debug("Rolling gift: $it") } && amount > 20) { + if(System.currentTimeMillis() > cooldown && numDaily < 28 && RandomFunction.roll(15).also { player.debug("Rolling gift: $it") } && amount > 20) { incrementDailyGifts(player) addItemOrDrop(player, Items.MYSTERY_BOX_6199) diff --git a/Server/src/main/kotlin/rs09/game/content/quest/members/clocktower/BrotherKojo.kt b/Server/src/main/kotlin/rs09/game/content/quest/members/clocktower/BrotherKojo.kt new file mode 100644 index 000000000..7dcb6ed62 --- /dev/null +++ b/Server/src/main/kotlin/rs09/game/content/quest/members/clocktower/BrotherKojo.kt @@ -0,0 +1,108 @@ +package rs09.game.content.quest.members.clocktower + +import api.getAttribute +import api.questStage +import api.setAttribute +import api.setQuestStage +import core.game.content.dialogue.DialoguePlugin +import core.game.content.dialogue.FacialExpression +import core.game.node.entity.npc.NPC +import core.game.node.entity.player.Player +import core.game.node.entity.player.link.quest.QuestRepository +import core.plugin.Initializable +import org.rs09.consts.Items +import org.rs09.consts.NPCs +import rs09.game.content.quest.members.monksfriend.setQuest +import rs09.game.content.quest.members.thefremenniktrials.cleanupAttributes +import rs09.tools.END_DIALOGUE + +/** + * @author qmqz + */ + +@Initializable +class BrotherKojo(player: Player? = null) : DialoguePlugin(player){ + + override fun open(vararg args: Any?): Boolean { + npc = args[0] as NPC + + when(questStage(player, "Clock Tower")) { + 0 -> player(FacialExpression.FRIENDLY,"Hello, monk.").also { stage = 0 } + 1, 2 -> { + when (getAttribute(player, "quest:clocktower-cogsplaced", 0)) { + 0 -> player(FacialExpression.FRIENDLY, "Hello again.").also { stage = 50 } + 1 -> player(FacialExpression.FRIENDLY, "I've placed a cog!").also { stage = 60 } + 2 -> player(FacialExpression.FRIENDLY, "Two down!").also { stage = 65 } + 3 -> npc(FacialExpression.FRIENDLY, "One left.").also { stage = END_DIALOGUE } + 4 -> player(FacialExpression.FRIENDLY, "I have replaced all the cogs!").also { stage = 100 } + } + } + 100 -> player(FacialExpression.FRIENDLY, "Hello again Brother Kojo.").also { stage = 400 } + } + + return true + } + + override fun handle(interfaceId: Int, buttonId: Int): Boolean { + when(stage) { + + 0 -> npcl(FacialExpression.FRIENDLY, "Hello adventurer. My name is Brother Kojo. Do you happen to know the time?").also { stage++ } + 1 -> player(FacialExpression.SAD, "No, sorry, I don't.").also { stage++ } + 2 -> npcl(FacialExpression.NEUTRAL, "Exactly! This clock tower has recently broken down, and without it nobody can tell the correct time. I must fix it before the town people become too angry!").also { stage++ } + 3 -> npcl(FacialExpression.ASKING, "I don't suppose you could assist me in the repairs? I'll pay you for your help.").also { stage++ } + 4 -> options("OK old monk, what can I do?", "How much reward are we talking?", "Not now old monk.").also { stage++ } + 5 -> when(buttonId) { + 1 -> player(FacialExpression.FRIENDLY, "Ok old monk, what can I do?").also { stage = 20 } + 2 -> player(FacialExpression.ASKING, "So... how much reward are we talking then?").also { stage = 200 } + 3 -> player(FacialExpression.FRIENDLY, "Not now old monk.").also { stage = 300 } + } + + 20 -> npc(FacialExpression.HAPPY, "Oh, thank you kind ${if (player.isMale) "sir" else "madam"}!", + "In the cellar below, you'll find four cogs.", + "They're too heavy for me, but you should be able to", + "carry them one at a time.").also { stage++ } + 21 -> npcl(FacialExpression.THINKING, "I know one goes on each floor... but I can't exactly remember which goes where specifically. Oh well, I'm sure you can figure it out fairly easily.").also { stage++} + 22 -> player(FacialExpression.FRIENDLY, "Well, I'll do my best.").also { stage++ } + 23 -> npcl(FacialExpression.HAPPY, "Thank you again! And remember to be careful, the cellar is full of strange beasts!").also { + stage = END_DIALOGUE + setQuestStage(player, "Clock Tower", 1) + setAttribute(player, "/save:quest:clocktower-cogsplaced", 0) + } + + 50 -> npcl(FacialExpression.ASKING, "Oh hello, are you having trouble? The cogs are in four rooms below us. Place one cog on a pole on each of the four tower levels.").also { stage++ } + 51 -> player(FacialExpression.FRIENDLY, "Right, gotcha. I'll do that then.").also { stage = END_DIALOGUE } + + 60 -> npcl(FacialExpression.FRIENDLY, "That's great. Come see me when you've done the other three.").also { stage = END_DIALOGUE } + 65 -> npc(FacialExpression.FRIENDLY, "Two to go.").also { stage = END_DIALOGUE } + + 100 -> npcl(FacialExpression.FRIENDLY, "Really..? Wait, listen! Well done, well done! Yes yes yes, you've done it! You ARE clever!").also { stage++ } + 101 -> npcl(FacialExpression.FRIENDLY, "The townsfolk will all be able to know the correct time now! Thank you so much for all of your help! And as promised, here is your reward!").also { stage++ } + 102 -> { + end() + player.questRepository.getQuest("Clock Tower").finish(player) + player.removeAttribute("quest:clocktower-cogsplaced") + player.removeAttribute("quest:clocktower-blackcogplaced") + player.removeAttribute("quest:clocktower-redcogplaced") + player.removeAttribute("quest:clocktower-bluecogplaced") + player.removeAttribute("quest:clocktower-whitecogplaced") + player.removeAttribute("quest:clocktower-poisonplaced") + } + + 200 -> npcl(FacialExpression.STRUGGLE, "Well, I'm only a monk so I'm not exactly rich, but I assure you I will give you a fair reward for the time spent assisting me in repairing the clock.").also { stage = 4 } + + 300 -> npcl(FacialExpression.FRIENDLY, "OK then. Come back and let me know if you change your mind.").also { stage = END_DIALOGUE } + + 400 -> npcl(FacialExpression.FRIENDLY, "Oh hello there traveller. You've done a grand job with the clock. It's just like new.").also { stage = END_DIALOGUE } + + } + return true + } + + override fun newInstance(player: Player?): DialoguePlugin { + return BrotherKojo(player) + } + + override fun getIds(): IntArray { + return intArrayOf(NPCs.BROTHER_KOJO_223) + } +} diff --git a/Server/src/main/kotlin/rs09/game/content/quest/members/clocktower/ClockTower.kt b/Server/src/main/kotlin/rs09/game/content/quest/members/clocktower/ClockTower.kt new file mode 100644 index 000000000..ffa566304 --- /dev/null +++ b/Server/src/main/kotlin/rs09/game/content/quest/members/clocktower/ClockTower.kt @@ -0,0 +1,80 @@ +package rs09.game.content.quest.members.clocktower + +import api.addItemOrDrop +import api.getAttribute +import core.game.node.entity.player.Player +import core.game.node.entity.player.link.quest.Quest +import core.plugin.Initializable +import org.rs09.consts.Items + +/** + * @author qmqz + */ + +@Initializable +class ClockTower : Quest("Clock Tower",36, 37, 1, 10, 0, 1, 8) { + + /** + *todo: + * be able to walk through gate Id: 39 after poisoning rattos and they die + * figure out levers + * stop people from just walking through the gate left of levers + **/ + + override fun drawJournal(player: Player?, stage: Int) { + super.drawJournal(player, stage) + + var line = 12 + var stage = getStage(player) + + when (stage) { + 0 -> { + line(player, "I can start this quest by speaking to !!Brother Kojo?? at the", line++) + line(player, "!!Clock Tower?? which is located !!South?? of !!Ardougne??", line++) + } + + 1, 2 -> { + line(player, "I spoke to Brother Kojo at the Clock Tower South of", line++, true) + line(player, "Ardougne and agreed to help him repair the clock.", line++, true) + line(player,"To repair the clock I need to find the four coloured cogs", line++, getAttribute(player!!, "quest:clocktower-cogsplaced", 0) >= 4) + line(player,"and place them on the four correctly coloured spindles.", line++, getAttribute(player!!, "quest:clocktower-cogsplaced", 0) >= 4) + line(player, if (getAttribute(player!!, "quest:clocktower-bluecogplaced", false)) "I placed the !!Blue Cog?? on it's !!spindle??." else "I haven't placed the !!Blue Cog?? on it's !!spindle?? yet.", line++, getAttribute(player!!, "quest:clocktower-bluecogplaced", false)) + line(player, if (getAttribute(player!!, "quest:clocktower-blackcogplaced", false)) "I placed the !!Black Cog?? on it's !!spindle??." else "I haven't placed the !!Black Cog?? on it's !!spindle?? yet.", line++, getAttribute(player!!, "quest:clocktower-blackcogplaced", false)) + line(player, if (getAttribute(player!!, "quest:clocktower-blackwhiteplaced", false)) "I placed the !!White Cog?? on it's !!spindle??." else "I haven't placed the !!White Cog?? on it's !!spindle?? yet.", line++, getAttribute(player!!, "quest:clocktower-whitecogplaced", false)) + line(player, if (getAttribute(player!!, "quest:clocktower-blackredplaced", false)) "I placed the !!Red Cog?? on it's !!spindle??." else "I haven't placed the !!Red Cog?? on it's !!spindle?? yet.", line++, getAttribute(player!!, "quest:clocktower-redcogplaced", false)) + } + + 100 -> { + line(player, "I spoke to Brother Kojo at the Clock Tower South of", line++, true) + line(player, "Ardougne and agreed to help him repair the clock.", line++, true) + line(player,"To repair the clock I need to find the four coloured cogs", line++, true) + line(player,"and place them on the four correctly coloured spindles.", line++, true) + line(player,"I placed the !!Blue Cog?? on it's !!spindle??.", line++, true) + line(player,"I placed the !!Black Cog?? on it's !!spindle??.", line++, true) + line(player,"I placed the !!White Cog?? on it's !!spindle??.", line++, true) + line(player,"I placed the !!Red Cog?? on it's !!spindle??.", line++, true) + line(player, "QUEST COMPLETE!", line++ +1) + } + + //line(player,"", line++) + + } + } + + override fun finish(player: Player) { + var ln = 10 + super.finish(player) + player.packetDispatch.sendString("You have completed the Clock Tower Quest!", 277, 4) + player.packetDispatch.sendItemZoomOnInterface(1891, 240, 277, 5) + + drawReward(player,"1 Quest Point", ln++) + drawReward(player,"500 coins", ln++) + + addItemOrDrop(player, Items.COINS_995, 500) + + } + + override fun newInstance(`object`: Any?): Quest { + return this + } +} \ No newline at end of file diff --git a/Server/src/main/kotlin/rs09/game/content/quest/members/clocktower/ClockTowerObjInterationDialogueFile.kt b/Server/src/main/kotlin/rs09/game/content/quest/members/clocktower/ClockTowerObjInterationDialogueFile.kt new file mode 100644 index 000000000..28ee4e6c1 --- /dev/null +++ b/Server/src/main/kotlin/rs09/game/content/quest/members/clocktower/ClockTowerObjInterationDialogueFile.kt @@ -0,0 +1,30 @@ +package rs09.game.content.quest.members.clocktower + +import api.* +import core.game.node.entity.player.link.TeleportManager +import core.game.node.item.GroundItem +import core.game.node.item.GroundItemManager +import core.game.node.item.Item +import org.rs09.consts.Items +import rs09.game.content.dialogue.DialogueFile +import rs09.tools.END_DIALOGUE + +/** + * @author qmqz + */ + +class ClockTowerObjInterationDialogueFile(val it: Int) : DialogueFile() { + + override fun handle(interfaceId: Int, buttonId: Int) { + when (it) { + 0 -> when (stage) { + 0 -> sendDialogue(player!!, "The death throes of the rats seem to have shaken the door loose of its hinges. You pick it up and go through.").also { stage++ } + 1 -> { + end() + //forceWalk(player!!, location(2578, 9656, 0), "clip") + //teleport(player!!, location(2578, 9656, 0), TeleportManager.TeleportType.INSTANT) + } + } + } + } +} \ No newline at end of file diff --git a/Server/src/main/kotlin/rs09/game/content/quest/members/deathplateau/DeathPlateau.kt b/Server/src/main/kotlin/rs09/game/content/quest/members/deathplateau/DeathPlateau.kt new file mode 100644 index 000000000..6e09ad2fe --- /dev/null +++ b/Server/src/main/kotlin/rs09/game/content/quest/members/deathplateau/DeathPlateau.kt @@ -0,0 +1,54 @@ +package rs09.game.content.quest.members.deathplateau + +import api.addItemOrDrop +import api.setAttribute +import core.game.node.entity.player.Player +import core.game.node.entity.player.link.quest.Quest +import core.game.node.entity.skill.Skills +import core.plugin.Initializable +import org.rs09.consts.Items + +/** + * @author qmqz + */ + +@Initializable +class DeathPlateau : Quest("Death Plateau",314, 43, 1, 314, 0, 1, 80) { + + override fun drawJournal(player: Player?, stage: Int) { + super.drawJournal(player, stage) + + var line = 12 + var stage = getStage(player) + + when (stage) { + 0 -> { + line(player, "I can start this quest by speaking to !!Denulth?? who is in his", line++) + line(player, "tent at the !!Imperial Guard camp?? in !!Burthorpe", line++) + } + + //line(player,"", line++) + + } + } + + override fun finish(player: Player) { + var ln = 10 + super.finish(player) + player.packetDispatch.sendString("You have completed the Death Plateau Quest!", 277, 4) + player.packetDispatch.sendItemZoomOnInterface(1891, 240, 277, 5) + + drawReward(player,"1 Quest Point", ln++) + drawReward(player,"3,000 Attack XP", ln++) + drawReward(player,"Some Steel Claws", ln++) + drawReward(player,"Ability to make Claws", ln++) + + addItemOrDrop(player, Items.STEEL_CLAWS_3097, 1) + player.skills.addExperience(Skills.ATTACK, 3000.0) + + } + + override fun newInstance(`object`: Any?): Quest { + return this + } +} \ No newline at end of file diff --git a/Server/src/main/kotlin/rs09/game/content/quest/members/deathplateau/Death_Plateau_Door_Dialogue_File.kt b/Server/src/main/kotlin/rs09/game/content/quest/members/deathplateau/Death_Plateau_Door_Dialogue_File.kt new file mode 100644 index 000000000..6e7774123 --- /dev/null +++ b/Server/src/main/kotlin/rs09/game/content/quest/members/deathplateau/Death_Plateau_Door_Dialogue_File.kt @@ -0,0 +1,29 @@ +package rs09.game.content.quest.members.deathplateau + +import api.getScenery +import api.sendDialogue +import core.game.content.dialogue.FacialExpression +import core.game.content.global.action.DoorActionHandler +import core.game.node.entity.npc.NPC +import org.rs09.consts.NPCs +import rs09.game.content.dialogue.DialogueFile + +/** + * @author qmqz + */ + +class Death_Plateau_Door_Dialogue_File() : DialogueFile() { + override fun handle(interfaceId: Int, buttonId: Int) { + npc = NPC(NPCs.HAROLD_1078) + when (stage) { + 0 -> sendDialogue(player!!,"You knock on the door.").also { stage++ } + 1 -> npc(FacialExpression.FRIENDLY, "Come on in!").also { stage++ } + 2 -> { + end() + DoorActionHandler.handleAutowalkDoor(player, getScenery(2906, 3543, 1)) + } + } + + } +} + diff --git a/Server/src/main/kotlin/rs09/game/content/quest/members/deathplateau/Death_Plateau_Door_Interaction_Listener.kt b/Server/src/main/kotlin/rs09/game/content/quest/members/deathplateau/Death_Plateau_Door_Interaction_Listener.kt new file mode 100644 index 000000000..14a603eb0 --- /dev/null +++ b/Server/src/main/kotlin/rs09/game/content/quest/members/deathplateau/Death_Plateau_Door_Interaction_Listener.kt @@ -0,0 +1,27 @@ +package rs09.game.content.quest.members.deathplateau + +import api.getScenery +import api.location +import api.openDialogue +import core.game.content.global.action.DoorActionHandler +import org.rs09.consts.Scenery +import rs09.game.interaction.InteractionListener + +/** + * @author qmqz + */ + +class Death_Plateau_Door_Interaction_Listener : InteractionListener() { + + override fun defineListeners() { + on(Scenery.DOOR_3747, SCENERY, "open") { player, _ -> + if (player.location == location(2906, 3543, 1)) { + openDialogue(player, Death_Plateau_Door_Dialogue_File()) + } else { + DoorActionHandler.handleAutowalkDoor(player, getScenery(2906, 3543, 1)) + } + + return@on true + } + } +} \ No newline at end of file diff --git a/Server/src/main/kotlin/rs09/game/content/quest/members/deathplateau/DenulthDialogueFile.kt b/Server/src/main/kotlin/rs09/game/content/quest/members/deathplateau/DenulthDialogueFile.kt new file mode 100644 index 000000000..439633b96 --- /dev/null +++ b/Server/src/main/kotlin/rs09/game/content/quest/members/deathplateau/DenulthDialogueFile.kt @@ -0,0 +1,72 @@ +package rs09.game.content.quest.members.deathplateau + +import api.questStage +import api.setQuestStage +import core.game.content.dialogue.FacialExpression +import core.game.node.entity.npc.NPC +import org.rs09.consts.NPCs +import rs09.game.content.dialogue.DialogueFile +import rs09.tools.END_DIALOGUE + +/** + * @author qmqz + */ + +class DenulthDialogueFile() : DialogueFile() { + + override fun handle(interfaceId: Int, buttonId: Int) { + npc = NPC(NPCs.DENULTH_1060) + + when(questStage(player!!, "Death Plateau")) { + 0 -> when (stage) { + 0 -> player(FacialExpression.FRIENDLY, "Hello!").also { stage++ } + 1 -> npc(FacialExpression.FRIENDLY, "Hello citizen, how can I help you?").also { stage++ } + 2 -> options("Do you have any quests for me?", "What is this place?", "You can't, thanks.").also { stage++ } + 3 -> when (buttonId) { + 1 -> player(FacialExpression.FRIENDLY, "Do you have any quests for me?").also { stage = 10 } + 3 -> player(FacialExpression.FRIENDLY, "You can't, thanks.").also { stage = END_DIALOGUE } + } + + 10 -> npc(FacialExpression.FRIENDLY, "I don't know if you can help us!").also { stage++ } + 11 -> npcl(FacialExpression.FRIENDLY, "The trolls have taken up camp on the Death Plateau! " + + "They are using it to launch raids at night on the village." + + "We have tried to attack the camp, but the main path is heavily guarded!").also { stage++ } + 12 -> player(FacialExpression.ASKING, "Perhaps there is a way you can sneak up at night?").also { stage++ } + 13 -> npc(FacialExpression.FRIENDLY, "If there is another way, I do not know of it.").also { stage++ } + 14 -> npc(FacialExpression.FRIENDLY, "Do you know of such a path?").also { stage++ } + 15 -> options("No, but perhaps I could try and find one?", "No, sorry.").also { stage++ } + 16 -> when (buttonId) { + 1 -> player(FacialExpression.FRIENDLY, "No, but perhaps I could try and find one?").also { stage = 20 } + } + + 20 -> npc(FacialExpression.FRIENDLY, "Citizen you would be well rewarded!").also { stage++ } + 21 -> npcl(FacialExpression.FRIENDLY, "If you go up to Death Plateau, be very careful as the trolls will attack you on sight!").also { stage++ } + 22 -> player(FacialExpression.FRIENDLY, "I'll be careful.").also { stage++ } + 23 -> npc(FacialExpression.FRIENDLY, "One other thing.").also { stage++ } + 24 -> player(FacialExpression.FRIENDLY, "What's that?").also { stage++ } + 25 -> npc(FacialExpression.FRIENDLY, "All of our equipment is kept in the castle on the hill.").also { stage++ } + 26 -> npcl(FacialExpression.FRIENDLY, "The stupid guard that was on duty last night lost the combination to the lock!" + + "I told the Prince that the Imperial Guard should've been in charge of security!").also { stage++ } + 27 -> player(FacialExpression.ASKING, "No problem, what does the combination look like?").also { stage++ } + 28 -> npcl(FacialExpression.FRIENDLY, "The equipment room is unlocked when the stone balls are placed in the correct order on the stone mechanism outside it." + + "The right order is written on a piece of paper the guard had.").also { stage++ } + 29 -> player(FacialExpression.FRIENDLY, "A stone what...?!").also { stage++ } + 30 -> npcl(FacialExpression.FRIENDLY, "Well citizen, the Prince is fond of puzzles. Why we couldn't just have a key is beyond me!").also { stage++ } + 31 -> player(FacialExpression.SUSPICIOUS, "I'll get on it right away!").also { stage++ } + 32 -> { + setQuestStage(player!!, "Clock Tower", 1) + END_DIALOGUE + } + + + } + /* + npc(FacialExpression.FRIENDLY, "").also { stage++ } + player(FacialExpression.FRIENDLY, "").also { stage++ } + + npcl(FacialExpression.FRIENDLY, "").also { stage++ } + playerl(FacialExpression.FRIENDLY, "").also { stage++ } + */ + } + } +} \ No newline at end of file diff --git a/Server/src/main/kotlin/rs09/game/content/quest/members/deathplateau/EohricDialogueFile.kt b/Server/src/main/kotlin/rs09/game/content/quest/members/deathplateau/EohricDialogueFile.kt new file mode 100644 index 000000000..551ca75f2 --- /dev/null +++ b/Server/src/main/kotlin/rs09/game/content/quest/members/deathplateau/EohricDialogueFile.kt @@ -0,0 +1,63 @@ +package rs09.game.content.quest.members.deathplateau + +import api.questStage +import core.game.content.dialogue.FacialExpression +import core.game.node.entity.npc.NPC +import org.rs09.consts.NPCs +import rs09.game.content.dialogue.DialogueFile +import rs09.tools.END_DIALOGUE + +/** + * @author qmqz + */ + +class EohricDialogueFile() : DialogueFile() { + + override fun handle(interfaceId: Int, buttonId: Int) { + npc = NPC(NPCs.EOHRIC_1080) + + when(questStage(player!!, "Death Plateau")) { + 0 -> when (stage) { + 0 -> npc(FacialExpression.ASKING, "Hello. Can I help?").also { stage++ } + 1 -> options("What is this place?", "That's quite an outfit.", "Goodbye.").also { stage++ } + 2 -> when (buttonId) { + 1 -> npcl(FacialExpression.FRIENDLY, "This is Burthorpe Castle, home to His Royal Highness Prince Anlaf, heir to the throne of Asgarnia.").also { stage = 10 } + 2 -> npcl(FacialExpression.HAPPY, "Why, thank you. I designed it myself. I've always found purple such a cheerful colour!").also { stage = 1 } + 3 -> player(FacialExpression.FRIENDLY, "Goodbye.").also { stage = END_DIALOGUE } + } + 10 -> npc(FacialExpression.FRIENDLY, "No doubt you're impressed.").also { stage++ } + 11 -> options("Where is the prince?", "Goodbye.").also { stage++ } + 12 -> when (buttonId) { + 1 -> npcl(FacialExpression.SUSPICIOUS, "I cannot disclose the prince's exact whereabouts for fear of compromising his personal safety.").also { stage = 20 } + 2 -> player(FacialExpression.FRIENDLY, "Goodbye.").also { stage = END_DIALOGUE } + } + 20 -> npcl(FacialExpression.FRIENDLY, "But rest assured that he is working tirelessly to maintain the safety and wellbeing of Burthorpe's people.").also { stage = 1 } + } + + 1 -> when (stage) { + 0 -> player(FacialExpression.FRIENDLY, "Hi!").also { stage++ } + 1 -> npc(FacialExpression.FRIENDLY, "Hi, can I help?").also { stage++ } + 2 -> options("I'm looking for the guard that was on the last night.", + "Do you know of another way up Death Plateau?", + "No, I'm just looking around.").also { stage++ } + 3 -> when (buttonId) { + 1 -> player(FacialExpression.THINKING, "I'm looking for the guard that was on the last night.").also { stage = 10 } + 3 -> player(FacialExpression.FRIENDLY, "No, I'm just looking around.").also { stage = END_DIALOGUE } + + 10 -> npcl(FacialExpression.FRIENDLY, "There was only one guard on last night. Harold. He's a nice lad, if a little dim.").also { stage++ } + 11 -> player(FacialExpression.FRIENDLY, "Do you know where he is staying?").also { stage++ } + 12 -> npc(FacialExpression.FRIENDLY, "Harold is staying at the Toad and Chicken.").also { stage++ } + 13 -> player(FacialExpression.FRIENDLY, "Thanks!").also { stage = END_DIALOGUE } + } + + } + /* + npc(FacialExpression.FRIENDLY, "").also { stage++ } + player(FacialExpression.FRIENDLY, "").also { stage++ } + + npcl(FacialExpression.FRIENDLY, "").also { stage++ } + playerl(FacialExpression.FRIENDLY, "").also { stage++ } + */ + } + } +} \ No newline at end of file diff --git a/Server/src/main/kotlin/rs09/game/content/quest/members/deserttreasure/DesertTreasure.kt b/Server/src/main/kotlin/rs09/game/content/quest/members/deserttreasure/DesertTreasure.kt index f42498ac6..e245290dc 100644 --- a/Server/src/main/kotlin/rs09/game/content/quest/members/deserttreasure/DesertTreasure.kt +++ b/Server/src/main/kotlin/rs09/game/content/quest/members/deserttreasure/DesertTreasure.kt @@ -1,103 +1,103 @@ -//package rs09.game.content.quest.members.deserttreasure +package rs09.game.content.quest.members.deserttreasure -//import core.game.node.entity.player.Player -//import core.game.node.entity.player.link.quest.Quest -//import core.game.node.entity.skill.Skills -//import core.plugin.Initializable +import core.game.node.entity.player.Player +import core.game.node.entity.player.link.quest.Quest +import core.game.node.entity.skill.Skills +import core.plugin.Initializable /** * @author qmqz */ -//@Initializable -//class DesertTreasure : Quest("Desert Treasure",15, 44, 3, 440, 0, 1, 15){ +@Initializable +class DesertTreasure : Quest("Desert Treasure",43, 44, 3, 440, 0, 1, 15){ - //override fun drawJournal(player: Player?, stage: Int) { - // super.drawJournal(player, stage) - // var line = 12 + override fun drawJournal(player: Player?, stage: Int) { + super.drawJournal(player, stage) + var line = 12 - //val stage = player?.questRepository?.getStage("Desert Treasure")!! + val stage = player?.questRepository?.getStage("Desert Treasure")!! - //when (stage) { - // 0 -> { - // line(player,"I can start this quest by speaking to !!The Archaeologist??", line++) - // line(player,"who is exploring the !!Bedabin Camp?? South West of the", line++) - // line(player,"!!Shantay Pass.??", line++) - // line(player,"To complete this quest I will need:", line++) - // if (player.skills.getStaticLevel(Skills.SLAYER) < 10) { - // line(player,"Level 10 Slayer", line++) - // } else { - // line(player,"---Level 10 Slayer/--", line++) - // } - // if (player.skills.getStaticLevel(Skills.SLAYER) < 10) { - // line(player,"Level 50 Firemaking", line++) - // } - // if (player.skills.getStaticLevel(Skills.SLAYER) < 10) { - // line(player,"Level 50 Magic", line++) - // } - // if (player.skills.getStaticLevel(Skills.SLAYER) < 10) { - // line(player,"Level 53 Thieving", line++) - // } - // line(player,"I must have completed the following quests:", line++) + when (stage) { + 0 -> { + line(player,"I can start this quest by speaking to !!The Archaeologist??", line++) + line(player,"who is exploring the !!Bedabin Camp?? South West of the", line++) + line(player,"!!Shantay Pass.??", line++) + line(player,"To complete this quest I will need:", line++) + if (player.skills.getStaticLevel(Skills.SLAYER) < 10) { + line(player,"Level 10 Slayer", line++) + } else { + line(player,"---Level 10 Slayer/--", line++) + } + if (player.skills.getStaticLevel(Skills.SLAYER) < 10) { + line(player,"Level 50 Firemaking", line++) + } + if (player.skills.getStaticLevel(Skills.SLAYER) < 10) { + line(player,"Level 50 Magic", line++) + } + if (player.skills.getStaticLevel(Skills.SLAYER) < 10) { + line(player,"Level 53 Thieving", line++) + } + line(player,"I must have completed the following quests:", line++) - // if (player.questRepository.isComplete("The Digsite Quest")) { - // line(player,"---!!The digsite Quest??/--", line++) - // } else { - // line(player,"!!The digsite Quest??", line++) - // } + if (player.questRepository.isComplete("The Digsite Quest")) { + line(player,"---!!The digsite Quest??/--", line++) + } else { + line(player,"!!The digsite Quest??", line++) + } - // if (player.questRepository.isComplete("The Tourist Trap")) { - // line(player,"---!!The Tourist Trap??/--", line++) - // } else { - // line(player,"!!The Tourist Trap??", line++) - // } + if (player.questRepository.isComplete("The Tourist Trap")) { + line(player,"---!!The Tourist Trap??/--", line++) + } else { + line(player,"!!The Tourist Trap??", line++) + } - // if (player.questRepository.isComplete("The Temple of Ikov")) { - // line(player,"---!!The Temple of Ikov??/--", line++) - // } else { - // line(player,"!!The Temple of Ikov??", line++) - // } + if (player.questRepository.isComplete("The Temple of Ikov")) { + line(player,"---!!The Temple of Ikov??/--", line++) + } else { + line(player,"!!The Temple of Ikov??", line++) + } - // if (player.questRepository.isComplete("Priest In Peril")) { - // line(player,"---!!Priest In Peril??/--", line++) - // } else { - // line(player,"!!Priest In Peril??", line++) - // } + if (player.questRepository.isComplete("Priest In Peril")) { + line(player,"---!!Priest In Peril??/--", line++) + } else { + line(player,"!!Priest In Peril??", line++) + } - // if (player.questRepository.isComplete("Waterfall Quest")) { - // line(player,"---!!Waterfall Quest??/--", line++) - // } else { - // line(player,"!!Waterfall Quest??", line++) - // } + if (player.questRepository.isComplete("Waterfall Quest")) { + line(player,"---!!Waterfall Quest??/--", line++) + } else { + line(player,"!!Waterfall Quest??", line++) + } - // if (player.questRepository.isComplete("Troll Stronghold")) { - // line(player,"---!!Troll Stronghold??/--", line++) - // } else { - // line(player,"!!Troll Stronghold??", line++) - // } + if (player.questRepository.isComplete("Troll Stronghold")) { + line(player,"---!!Troll Stronghold??/--", line++) + } else { + line(player,"!!Troll Stronghold??", line++) + } - // line(player,"", line++) - //} - // } - //} + line(player,"", line++) + } + } + } - // override fun finish(player: Player) { - // var ln = 10 - // super.finish(player) - // player.packetDispatch.sendString("You have completed Desert Treasure!", 277, 4) - // player.packetDispatch.sendItemZoomOnInterface(1891, 240, 277, 5) -// - // drawReward(player,"3 Quest Points", ln++) - // drawReward(player,"20,000 Magic XP", ln++) - // drawReward(player,"Ability to use", ln++) - // drawReward(player,"Ancient Magicks", ln) + override fun finish(player: Player) { + var ln = 10 + super.finish(player) + player.packetDispatch.sendString("You have completed Desert Treasure!", 277, 4) + player.packetDispatch.sendItemZoomOnInterface(1891, 240, 277, 5) - // player.skills.addExperience(Skills.MAGIC, 20000.0) + drawReward(player,"3 Quest Points", ln++) + drawReward(player,"20,000 Magic XP", ln++) + drawReward(player,"Ability to use", ln++) + drawReward(player,"Ancient Magicks", ln) - // } + player.skills.addExperience(Skills.MAGIC, 20000.0) - // override fun newInstance(`object`: Any?): Quest { - // return this - // } -//} \ No newline at end of file + } + + override fun newInstance(`object`: Any?): Quest { + return this + } +} \ No newline at end of file diff --git a/Server/src/main/kotlin/rs09/game/content/quest/members/monksfriend/MonkBalloonSpawner.kt b/Server/src/main/kotlin/rs09/game/content/quest/members/monksfriend/MonkBalloonSpawner.kt new file mode 100644 index 000000000..695751b3f --- /dev/null +++ b/Server/src/main/kotlin/rs09/game/content/quest/members/monksfriend/MonkBalloonSpawner.kt @@ -0,0 +1,209 @@ +package rs09.game.content.quest.members.monksfriend + +import core.cache.def.impl.SceneryDefinition +import core.game.content.activity.partyroom.PartyRoomPlugin +import core.game.interaction.OptionHandler +import core.game.node.Node +import core.game.node.entity.player.Player +import core.game.node.item.GroundItem +import core.game.node.item.Item +import core.game.node.scenery.Scenery +import core.game.node.scenery.SceneryBuilder +import core.game.system.task.Pulse +import core.game.world.map.Location +import core.game.world.map.RegionManager.getObject +import core.game.world.map.RegionManager.isTeleportPermitted +import core.plugin.Plugin +import core.tools.RandomFunction +import rs09.game.world.GameWorld.Pulser + +/** + * Manages the dropped party balloons. + * @author Kya + */ +class MonkBalloonSpawner : OptionHandler() { +/** + * Constructs a new {@Code BalloonManager} {@Code Object} + */ + + + @Throws(Throwable::class) + override fun newInstance(arg: Any): Plugin { + for (balloon in PartyBalloon.values()) { + SceneryDefinition.forId(balloon.balloonId).handlers["option:burst"] = this + } + return this + } + + override fun handle(player: Player, node: Node, option: String): Boolean { + when (option) { + "burst" -> { + PartyBalloon.forId(node.id)!!.burst(player, node) + return true + } + } + return true + } + + override fun getDestination(node: Node, n: Node): Location { + return n.location + } + + /** + * Drops the balloons. + */ + fun drop() { + balloons.clear() + Pulser.submit(object : Pulse(1) { + var waves = 0 + override fun pulse(): Boolean { + if (waves == 0 || waves == 3 || waves == 5 || waves == 8 || waves == 10 || waves == 12 || waves == 15 || waves == 18 || waves == 20) { + for (i in 0..10) { + val balloon = balloon + if (balloon != null) { + balloons.add(balloon) + SceneryBuilder.add(balloon, RandomFunction.random(20, 30)) + } + } + } + return ++waves > 20 + } + }) + } + + /** + * Gets the balloon drop. + * @return the balloon. + */ + private val balloon: Scenery? + get() { + val location = Location(2602 + RandomFunction.randomSign(RandomFunction.getRandom(8)), 3208 + RandomFunction.randomSign(RandomFunction.getRandom(6)), 0) + return if (!isTeleportPermitted(location) || getObject(location) != null) { + null + } else Scenery(PartyBalloon.values()[RandomFunction.random(PartyBalloon.values().size)].balloonId, location) + } + /** + * A party balloon. + * @author Vexia + */ + internal enum class PartyBalloon( + /** + * The balloon id. + */ + val balloonId: Int, + /** + * The popping id. + */ + private val popId: Int) { + YELLOW(115, 123), RED(116, 124), BLUE(117, 125), GREEN(118, 126), PURPLE(119, 127), WHITE(120, 128), GREEN_BLUE(121, 129), TRI(122, 130); + /** + * Gets the balloonId. + * @return the balloonId + */ + /** + * Gets the popId. + * @return the popId + */ + + /** + * Constructs a new {@Code PartyBalloon} {@Code Object} + * @param balloonId the balloon id. + * @param popId the pop id. + */ + + /** + * Bursts a party balloon. + * @param player the player. + * @param object the object. + */ + fun burst(player: Player, balloon: Node) { + player.sendChat("woopsie!") +/* + + val popped = `object`.transform(popId) + if (!balloons.contains(`object`)) { + player.lock(2) + SceneryBuilder.remove(`object`) + SceneryBuilder.remove(popped) + player.animate(Animation.create(10017)) + player.sendMessage("Error! Balloon not registered.") + return + } + player.lock(2) + SceneryBuilder.remove(`object`) + SceneryBuilder.add(popped) + balloons.remove(`object`) + player.animate(Animation.create(10017)) + + // Pop a party balloon + Pulser.submit(object : Pulse(1) { + var counter = 0 + override fun pulse(): Boolean { + when (++counter) { + 1 -> { + SceneryBuilder.remove(popped) + return true + } + } + return false + } + }) + + */ + } + + /** + * Gets the ground item. + * @param location the location. + * @param player the player. + * @return the ground item. + */ + private fun getGround(location: Location, player: Player): GroundItem? { + val item = PartyRoomPlugin.getPartyChest().toArray()[RandomFunction.random(PartyRoomPlugin.getPartyChest().itemCount())] + ?: return null + if (PartyRoomPlugin.getPartyChest().remove(item)) { + val dropItem: Item + val newamt: Int + if (item.amount > 1) { + newamt = RandomFunction.random(1, item.amount) + if (item.amount - newamt > 0) { + val newItem = Item(item.id, item.amount - newamt) + PartyRoomPlugin.getPartyChest().add(newItem) + } + dropItem = Item(item.id, newamt) + } else { + dropItem = item + } + return GroundItem(dropItem, location, player) + } + return null + } + + companion object { + /** + * Gets a party balloon. + * @param id the id. + * @return the balloon. + */ + fun forId(id: Int): PartyBalloon? { + for (balloon in values()) { + if (balloon.balloonId == id) { + return balloon + } + } + return null + } + } + } + + companion object { + /** + * Gets the balloons. + * @return the balloons + */ + /** + * The list of dropped balloons. + */ + val balloons: MutableList = ArrayList(20) + } +} \ No newline at end of file diff --git a/Server/src/main/kotlin/rs09/game/content/quest/members/mountaindaughter/MountainDaughterListeners.kt b/Server/src/main/kotlin/rs09/game/content/quest/members/mountaindaughter/MountainDaughterListeners.kt new file mode 100644 index 000000000..955974892 --- /dev/null +++ b/Server/src/main/kotlin/rs09/game/content/quest/members/mountaindaughter/MountainDaughterListeners.kt @@ -0,0 +1,77 @@ +package rs09.game.content.quest.members.mountaindaughter + +import org.rs09.consts.Items +import rs09.game.interaction.InteractionListener + +class MountainDaughterListeners : InteractionListener(){ + + val rockSlide = 5847 + val boulder = 5842 + val tallTree = 5848 + val rockCluster = 5849 + val flatStoneOne = 5850 + val flatStoneTwo = 5851 + val shiningPool = 5897 + + + val plank = Items.PLANK_960 + val pole = Items.POLE_4494 + val rope = Items.ROPE_954 + val mud = Items.MUD_4490 + + + override fun defineListeners() { + + on(rockSlide, SCENERY,"Climb-over"){player, node -> + + return@on true + } + + on(tallTree, SCENERY,"Climb"){player, node -> + + return@on true + } + + on(shiningPool, SCENERY,"Listen-to"){ player, node -> + + return@on true + } + + on(flatStoneOne, SCENERY,"Jump-across"){ player, node -> + + return@on true + } + + on(flatStoneTwo, SCENERY,"Jump-across"){ player, node -> + + return@on true + } + + onUseWith(SCENERY,boulder,rope){player, used, with -> + + return@onUseWith true + } + + onUseWith(SCENERY,tallTree,mud){player, used, with -> + + return@onUseWith true + } + + onUseWith(SCENERY,flatStoneOne,plank){player, used, with -> + + return@onUseWith true + } + + onUseWith(SCENERY,flatStoneTwo,plank){player, used, with -> + + return@onUseWith true + } + + onUseWith(SCENERY,rockCluster,pole){player, used, with -> + + return@onUseWith true + } + + + } +} \ No newline at end of file diff --git a/Server/src/main/kotlin/rs09/game/content/quest/members/mountaindaughter/MountainDaughterQuest.kt b/Server/src/main/kotlin/rs09/game/content/quest/members/mountaindaughter/MountainDaughterQuest.kt new file mode 100644 index 000000000..e53e80e9f --- /dev/null +++ b/Server/src/main/kotlin/rs09/game/content/quest/members/mountaindaughter/MountainDaughterQuest.kt @@ -0,0 +1,44 @@ +package rs09.game.content.quest.members.mountaindaughter + +import core.game.content.quest.fremtrials.FremennikTrials +import core.game.node.entity.player.Player +import core.game.node.entity.player.link.quest.Quest +import core.game.node.entity.skill.Skills +import org.rs09.consts.Items + +class MountainDaughterQuest : Quest("Mountain Daughter",74,89,2,423,0,1,70){ + + class SkillRequirement(val skill: Int?, val level: Int?) + + val requirements = arrayListOf() + + override fun drawJournal(player: Player?, stage: Int) { + super.drawJournal(player, stage) + var line = 11 + val started = player?.questRepository?.getStage("Mountain Daughter")!! > 0 + + if(!started){ + line(player,"Requirements to complete quest:",line++) + line += 1 + line(player,"Level 20 Agility",line++, player.skills.getStaticLevel(Skills.WOODCUTTING) >= 40) + line(player,"The ability to defeat a !!level 70 monster??",line++) + } + } + override fun finish(player: Player?) { + super.finish(player) + player ?: return + var ln = 10 + player.packetDispatch.sendItemZoomOnInterface(Items.BEARHEAD_4502, 235, 277, 5) + drawReward(player, "2 Quest Points", ln++) + drawReward(player, "2,000 Prayer XP",ln++) + drawReward(player, "1,000 Attack XP", ln++) + drawReward(player, "A Bearhead", ln++) + player.skills.addExperience(Skills.PRAYER, 2000.0) + player.skills.addExperience(Skills.ATTACK, 1000.0) + player.questRepository.syncronizeTab(player) + } + override fun newInstance(`object`: Any?): Quest { + requirements.add(MountainDaughterQuest.SkillRequirement(Skills.AGILITY, 20)) + return this + } +} \ No newline at end of file diff --git a/Server/src/main/kotlin/rs09/game/content/zone/keldagrim/KeldagrimPlugin.kt b/Server/src/main/kotlin/rs09/game/content/zone/keldagrim/KeldagrimPlugin.kt index 770a316ae..38998fb2a 100644 --- a/Server/src/main/kotlin/rs09/game/content/zone/keldagrim/KeldagrimPlugin.kt +++ b/Server/src/main/kotlin/rs09/game/content/zone/keldagrim/KeldagrimPlugin.kt @@ -117,14 +117,12 @@ class BlastFurnaceDoorDialogue : DialogueFile(){ var init = true override fun handle(componentID: Int, buttonID: Int) { if (init) { - //stage = if (player!!.getSkills().getLevel(Skills.SMITHING) >= 60) { - // 100 - //}else{ - // 5 - //} - //init = false - //uncomment the above out when BF gets fixed. - stage = 69 + stage = if (player!!.getSkills().getLevel(Skills.SMITHING) >= 60) { + 100 + }else{ + 5 + } + init = false } when(stage){ 5 -> sendDialogue(player!!,"You must be Smithing Level 60 or higher in order to enter the Blast Furnace").also { stage = 10 } @@ -146,7 +144,6 @@ class BlastFurnaceDoorDialogue : DialogueFile(){ 20 -> sendDialogue(player!!,"Then get out of here!").also { stage = 40 } } 40 -> end() - 69 -> sendDialogue(player!!,"The Blast Furnace is temporarily closed down for maintenance.").also { end() } //Remove this line when BF gets fixed 100 -> player?.properties?.teleportLocation = Location.create(1940, 4958, 0).also { stage = 40 } } } diff --git a/Server/src/main/kotlin/rs09/game/interaction/inter/FairyRingInterface.kt b/Server/src/main/kotlin/rs09/game/interaction/inter/FairyRingInterface.kt index 800217ab5..738565883 100644 --- a/Server/src/main/kotlin/rs09/game/interaction/inter/FairyRingInterface.kt +++ b/Server/src/main/kotlin/rs09/game/interaction/inter/FairyRingInterface.kt @@ -110,8 +110,8 @@ class FairyRingInterface : InterfaceListener(){ val code = "${RING_1[ring1index]}${RING_2[ring2index]}${RING_3[ring3index]}" val ring: FairyRing? = FairyRing.valueOf(code.toUpperCase()) var tile = ring?.tile - if(ring == FairyRing.CIP){ - sendDialogue(player, "The ring seems to reject you.") + if(ring == FairyRing.CIP && !player.getQuestRepository().isComplete("The Fremennik Trials")){ + sendDialogue(player, "You need to have completed The Fremennik Trials to access this fairy ring.") } if (ring == null || tile == null) { val center = Location(2412, 4434, 0) @@ -157,7 +157,7 @@ class FairyRingInterface : InterfaceListener(){ enum class FairyRing(val tile: Location?, val tip: String = "", val childId: Int = -1) { AIQ(Location.create(2996, 3114, 0), "Asgarnia: Mudskipper Point", 15), AIR(Location.create(2700, 3247, 0), "Islands: South of Witchaven", 16), - AJQ(Location.create(2735, 5221, 0), "Dungeons: Dark cave south of Dorgesh-Kaann", 19), + AJQ(Location.create(2735, 5221, 0), "Dungeons: Dark cave south of Dorgesh-Kaan", 19), //Requires completion of "Death to the Dorgeshuun" ALR(Location.create(3059, 4875, 0), "Other realms: Abyssal Area", 28), AJR(Location.create(2780, 3613, 0), "Kandarin: Slayer cave south-east of Rellekka", 20), AJS(Location.create(2500, 3896, 0), "Islands: Penguins near Miscellania", 21), @@ -168,14 +168,14 @@ enum class FairyRing(val tile: Location?, val tip: String = "", val childId: Int BIP(Location.create(3410, 3324, 0), "Islands: River Salve", 30), BIQ(Location.create(3251, 3095, 0), "Kharidian Desert: Near Kalphite hive", 31), BIS(Location.create(2635, 3266, 0), "Kandarin: Ardougne Zoo unicorns", 33), - BJR(null, "Other Realms: Realm of the Fisher King", 36), + BJR(null, "Other Realms: Realm of the Fisher King", 36), //Requires completion of "Holy Grail" BKP(Location.create(2385, 3035, 0), "Feldip Hills: South of Castle Wars", 38), BKQ(Location.create(3041, 4532, 0), "Other realms: Enchanted Valley", 39), BKR(Location.create(3469, 3431, 0), "Morytania: Mort Myre, south of Canifis", 40), BLP(Location.create(2437, 5126, 0), "Dungeons: TzHaar area", 42), - BLQ(null, "Yu'biusk", 43),//Location.create(2229, 4244, 1) + BLQ(null, "Yu'biusk", 43),//Location.create(2229, 4244, 1) Requires completion of "Land of the Goblins" BLR(Location.create(2740, 3351, 0), "Kandarin: Legends' Guild", 44), - CIP(null, "Islands: Miscellania", 46), //Location.create(2513, 3884, 0) + CIP(Location.create(2513, 3884, 0), "Islands: Miscellania", 46), //Requires completion of "The Fremennik Trials" CIQ(Location.create(2528, 3127, 0), "Kandarin: North-west of Yanille", 47), CJR(Location.create(2705, 3576, 0), "Kandarin: Sinclair Mansion", 52), CKP(Location.create(2075, 4848, 0), "Other realms: Cosmic Entity's plane", 54), diff --git a/Server/src/main/kotlin/rs09/game/interaction/item/CulChestItems.kt b/Server/src/main/kotlin/rs09/game/interaction/item/CulChestItems.kt deleted file mode 100644 index 042674d99..000000000 --- a/Server/src/main/kotlin/rs09/game/interaction/item/CulChestItems.kt +++ /dev/null @@ -1,56 +0,0 @@ -package rs09.game.interaction.item - -import api.* -import core.game.node.Node -import core.game.node.entity.player.Player -import core.game.node.item.GroundItemManager -import core.game.node.item.Item -import org.rs09.consts.Items -import rs09.game.interaction.InteractionListener - -class CulChestItems: InteractionListener() { - - override fun defineListeners() { - - onEquip(Items.CLEAVER_7451){player, node -> - alchemize(player,node) - } - - onEquip(Items.MEAT_TENDERISER_7449){player, node -> - alchemize(player,node) - } - - onEquip(Items.GLOVES_7458){player, node -> - alchemize(player,node) - } - - onEquip(Items.GLOVES_7459){player, node -> - alchemize(player,node) - } - - onEquip(Items.GLOVES_7460){player, node -> - alchemize(player,node) - } - - onEquip(Items.GLOVES_7461){player,node -> - alchemize(player,node) - } - - onEquip(Items.GLOVES_7462){player, node -> - alchemize(player,node) - } - - } - - fun alchemize(player: Player, node: Node): Boolean{ - val amount = amountInInventory(player, node.id) + amountInEquipment(player, node.id) - val coins = amount * itemDefinition(node.id).value - - removeAll(player, node.id, api.Container.INVENTORY) - removeItem(player, node.id, api.Container.EQUIPMENT) - addItemOrDrop(player, 995, coins) - - sendDialogue(player, "The item instantly alchemized itself!") - return false //tell equip handler not to equip the gloves at all if they still even exist lel - } -} \ No newline at end of file diff --git a/Server/src/main/kotlin/rs09/game/interaction/item/withitem/ChiselOnGranite.kt b/Server/src/main/kotlin/rs09/game/interaction/item/withitem/ChiselOnGranite.kt new file mode 100644 index 000000000..999891f37 --- /dev/null +++ b/Server/src/main/kotlin/rs09/game/interaction/item/withitem/ChiselOnGranite.kt @@ -0,0 +1,33 @@ +package rs09.game.interaction.item.withitem + +import api.* +import org.rs09.consts.Items +import rs09.game.interaction.InteractionListener + +class ChiselOnGranite : InteractionListener() { + override fun defineListeners() { + val granite = intArrayOf(Items.GRANITE_5KG_6983, Items.GRANITE_2KG_6981) + + onUseWith(ITEM, granite, Items.CHISEL_1755) {player, used, _ -> + if (freeSlots(player) < 3) { + sendMessage(player, "You need four inventory slots to do this.") + } else { + if(removeItem(player, used, Container.INVENTORY)) { + when (used.id) { + Items.GRANITE_5KG_6983 -> { + sendMessage(player, "You chisel the 5kg granite into four smaller pieces.") + addItemOrDrop(player, Items.GRANITE_2KG_6981, 2) + addItemOrDrop(player, Items.GRANITE_500G_6979, 2) + } + + Items.GRANITE_2KG_6981 -> { + sendMessage(player, "You chisel the 2kg granite into four smaller pieces.") + addItemOrDrop(player, Items.GRANITE_500G_6979, 4) + } + } + } + } + return@onUseWith true + } + } +} \ No newline at end of file diff --git a/Server/src/main/kotlin/rs09/game/interaction/item/withitem/CombineCrystalKey.kt b/Server/src/main/kotlin/rs09/game/interaction/item/withitem/CombineCrystalKey.kt new file mode 100644 index 000000000..184d694bd --- /dev/null +++ b/Server/src/main/kotlin/rs09/game/interaction/item/withitem/CombineCrystalKey.kt @@ -0,0 +1,17 @@ +package rs09.game.interaction.item.withitem + +import org.rs09.consts.Items +import rs09.game.interaction.InteractionListener +import api.* + +class CombineCrystalKey : InteractionListener() { + override fun defineListeners() { + onUseWith(ITEM, Items.LOOP_HALF_OF_A_KEY_987, Items.TOOTH_HALF_OF_A_KEY_985){player, used, with -> + if(removeItem(player, used, Container.INVENTORY) && removeItem(player,with,Container.INVENTORY)) { + addItem(player, Items.CRYSTAL_KEY_989) + sendMessage(player, "You join the loop half of a key and the tooth half of a key to make a crystal key.") + } + return@onUseWith true + } + } +} \ No newline at end of file diff --git a/Server/src/main/kotlin/rs09/game/interaction/item/withitem/FruitSlicing.kt b/Server/src/main/kotlin/rs09/game/interaction/item/withitem/FruitSlicing.kt new file mode 100644 index 000000000..854d0d409 --- /dev/null +++ b/Server/src/main/kotlin/rs09/game/interaction/item/withitem/FruitSlicing.kt @@ -0,0 +1,55 @@ +package rs09.game.interaction.item.withitem + +import api.* +import core.game.node.item.Item +import org.rs09.consts.Items +import org.rs09.consts.Items.LEMON_CHUNKS_2104 +import org.rs09.consts.Items.LIME_2120 +import org.rs09.consts.Items.LIME_CHUNKS_2122 +import org.rs09.consts.Items.LIME_SLICES_2124 +import rs09.game.content.dialogue.DialogueFile +import rs09.game.interaction.InteractionListener + +class FruitSlicing : InteractionListener() { + + override fun defineListeners() { + val fruits = Fruit.values().map { it.base.id } .toIntArray() + + onUseWith(ITEM, fruits, Items.KNIFE_946) {player, used, with -> + val fruit = Fruit.forBase(used.id) ?: return@onUseWith false + + if ((fruit == Fruit.BANANA || fruit == Fruit.LEMON)) { + if (removeItem(player, used.asItem(), Container.INVENTORY)) { + lock(player, 2) + animate(player, 1192) + addItem(player, fruit.sliced.id, fruit.sliced.amount) + sendMessage(player, "You deftly chop the " + fruit.name.toLowerCase() + " into slices.") + } + } else { + //TODO: Below Dialogue is still located in FruitCuttingDialogue.java. Convert to DialogueFile and make this not so garbage. + openDialogue(player,31237434, fruit) + } + return@onUseWith true + } + } + + enum class Fruit(val base: Item, val diced: Item?, val sliced: Item) { + PINEAPPLE(Item(2114), Item(2116), Item(2118, 4)), + BANANA(Item(1963), null, Item(3162)), + LEMON(Item(2102), Item(LEMON_CHUNKS_2104), Item(2106)), + LIME(Item(LIME_2120), Item(LIME_CHUNKS_2122), Item(LIME_SLICES_2124)), + ORANGE(Item(2108), Item(2110), Item(2112)); + + companion object { + val fruitMap = values().map { it.base.id to it }.toMap() + /** + * Method used to get the fruit for the base item. + * @param item the item. + * @return the fruit. + */ + fun forBase(item: Int): Fruit? { + return fruitMap[item] + } + } + } +} \ No newline at end of file diff --git a/Server/src/main/kotlin/rs09/game/interaction/item/withitem/GroundCogs.kt b/Server/src/main/kotlin/rs09/game/interaction/item/withitem/GroundCogs.kt new file mode 100644 index 000000000..af62a8010 --- /dev/null +++ b/Server/src/main/kotlin/rs09/game/interaction/item/withitem/GroundCogs.kt @@ -0,0 +1,136 @@ +package rs09.game.interaction.item.withitem + +import api.* +import core.game.node.entity.npc.NPC +import core.game.node.item.GroundItem +import core.game.node.item.Item +import core.game.world.map.Location +import core.game.world.map.path.Pathfinder +import org.rs09.consts.Items +import org.rs09.consts.NPCs +import org.rs09.consts.Scenery +import rs09.game.content.quest.members.clocktower.ClockTowerObjInterationDialogueFile +import rs09.game.interaction.InteractionListener + +class GroundCogs : InteractionListener() { + + override fun defineListeners() { + on(Items.BLACK_COG_21, GROUNDITEM, "take") { player, groundItem -> + if (!inInventory(player, Items.BUCKET_OF_WATER_1929, 1) && !inEquipment(player, Items.ICE_GLOVES_1580)){ + sendDialogue(player, "The cog is red hot from the flames. You cannot pick it up.") + } else if(hasSpaceFor(player, Item(Items.BLACK_COG_21)) && getAttribute(player, "quest:clocktower-blackcogcooled", false)) { + addItem(player, Items.BLACK_COG_21) + removeGroundItem(groundItem as GroundItem) + setAttribute(player, "/save:quest:clocktower-blackcogcooled", false) + setQuestStage(player, "Clock Tower", 2) + } else if(hasSpaceFor(player, Item(Items.BLACK_COG_21)) && (inInventory(player, Items.BUCKET_OF_WATER_1929, 1) || inEquipment(player, Items.ICE_GLOVES_1580)) && !getAttribute(player, "quest:clocktower-blackcogcooled", false)) { + if(!inEquipment(player, Items.ICE_GLOVES_1580) && removeItem(player, Items.BUCKET_OF_WATER_1929)) { + sendDialogue(player!!, "You pour water over the cog. It quickly cools down enough to take.") + addItem(player!!, Items.BUCKET_1925) + addItem(player!!, Items.BLACK_COG_21) + setQuestStage(player!!, "Clock Tower", 2) + setAttribute(player, "/save:quest:clocktower-blackcogcooled", true) + removeGroundItem(groundItem as GroundItem) + } else if(inEquipment(player, Items.ICE_GLOVES_1580) && !inInventory(player, Items.BUCKET_OF_WATER_1929)) { + sendDialogue(player, "You grab the cog with your ice gloves. It quickly cools down enough to take.") + setAttribute(player, "/save:quest:clocktower-blackcogcooled", true) + removeGroundItem(groundItem as GroundItem) + addItem(player, Items.BLACK_COG_21) + setQuestStage(player, "Clock Tower", 2) + } + } + return@on true + } + + onUseWith(SCENERY, Items.BLACK_COG_21, Scenery.CLOCK_SPINDLE_30) { player, _, _ -> + sendMessage(player, "The cog fits perfectly.") + removeItem(player, Items.BLACK_COG_21) + setAttribute(player,"/save:quest:clocktower-blackcogplaced", true) + player.incrementAttribute("/save:quest:clocktower-cogsplaced") + return@onUseWith true + } + + onUseWith(SCENERY, Items.BLUE_COG_22, Scenery.CLOCK_SPINDLE_32) { player, _, _ -> + sendMessage(player, "The cog fits perfectly.") + removeItem(player, Items.BLUE_COG_22) + setAttribute(player,"/save:quest:clocktower-bluecogplaced", true) + player.incrementAttribute("/save:quest:clocktower-cogsplaced") + return@onUseWith true + } + + onUseWith(SCENERY, Items.WHITE_COG_20, Scenery.CLOCK_SPINDLE_31) { player, _, _ -> + sendMessage(player, "The cog fits perfectly.") + removeItem(player, Items.WHITE_COG_20) + setAttribute(player,"/save:quest:clocktower-whitecogplaced", true) + player.incrementAttribute("/save:quest:clocktower-cogsplaced") + return@onUseWith true + } + + onUseWith(SCENERY, Items.RED_COG_23, Scenery.CLOCK_SPINDLE_29) { player, _, _ -> + sendMessage(player, "The cog fits perfectly.") + removeItem(player, Items.RED_COG_23) + setAttribute(player,"/save:quest:clocktower-redcogplaced", true) + player.incrementAttribute("/save:quest:clocktower-cogsplaced") + return@onUseWith true + } + + onUseWith(SCENERY, Items.RAT_POISON_24, Scenery.FOOD_TROUGH_40) { player, _, _ -> + val loc = location(2579, 9656, 0) + + sendMessage(player, "The rats swarm towards the poisoned food...") + sendMessage(player, "... and devour it hungrily.") + sendMessage(player, "You see them smashing against the gates in a panic.") + sendMessage(player, "They seem to be dying.") + removeItem(player, Items.RAT_POISON_24) + setAttribute(player,"/save:quest:clocktower-poisonplaced", true) + runTask(player, 1) { + val rattos = findLocalNPCs(player, intArrayOf(NPCs.DUNGEON_RAT_224)) + rattos.forEach{rat -> + if(rat.location.withinDistance(loc,20)) { + var a = 0 + var b = 0 + var c = false + + for(rat in rattos) { + Pathfinder.find(rat.location, location(loc.x + a, loc.y + b, loc.z), true, Pathfinder.SMART).walk(rat) + a++ + if (a == 4) { + c = true + a = 0 + } + if (c) { + b = 1 + } + } + runTask(rat, 15) { + rat.startDeath(player) + } + } + } + } + return@onUseWith true + } + + val levers = intArrayOf(Scenery.LEVER_33, Scenery.LEVER_34) + on(levers, SCENERY, "pull") { player, node -> + if (node.asScenery().location.equals(2591, 9661, 0)) { + setAttribute(player, "clocktower:raiseLowerLever", true) + //also opens door id 37, location: 2595, 9657, 0 + } + + if (node.asScenery().location.equals(2593, 9661, 0)) { + setAttribute(player, "clocktower:lowerUpperLever", true) + } + return@on true + } + + on(Scenery.GATE_39, SCENERY, "go-through") { player, node -> + if (node.asScenery().location.equals(2579, 9656, 0) && player.location.equals(2579, 9656, 0)) { + openDialogue(player, ClockTowerObjInterationDialogueFile(0)) + } + return@on true + } + + + } +} \ No newline at end of file diff --git a/Server/src/main/kotlin/rs09/game/interaction/item/withitem/HiltOnBlade.kt b/Server/src/main/kotlin/rs09/game/interaction/item/withitem/HiltOnBlade.kt new file mode 100644 index 000000000..d85d52422 --- /dev/null +++ b/Server/src/main/kotlin/rs09/game/interaction/item/withitem/HiltOnBlade.kt @@ -0,0 +1,22 @@ +package rs09.game.interaction.item.withitem + +import api.* +import core.tools.StringUtils +import org.rs09.consts.Items +import rs09.game.interaction.InteractionListener + +class HiltOnBlade : InteractionListener() { + override fun defineListeners() { + val HILTS = intArrayOf(Items.ARMADYL_HILT_11702, Items.ZAMORAK_HILT_11708, Items.BANDOS_HILT_11704, Items.SARADOMIN_HILT_11706) + + onUseWith(ITEM, HILTS, Items.GODSWORD_BLADE_11690) {player, used, with -> + if (removeItem(player, used.asItem(), Container.INVENTORY) && removeItem(player, with.asItem(), Container.INVENTORY)) { + val godsword = if(used.id > 11690) used.id - 8 else with.id - 8 + addItem(player, godsword) + sendMessage(player, "You attach the hilt to the blade and make a ${if(StringUtils.isPlusN(getItemName(godsword))) "an" else "a"} ${getItemName(godsword)}.") + } + + return@onUseWith true + } + } +} \ No newline at end of file diff --git a/Server/src/main/kotlin/rs09/game/interaction/item/withitem/KeyOnPirateChest.kt b/Server/src/main/kotlin/rs09/game/interaction/item/withitem/KeyOnPirateChest.kt new file mode 100644 index 000000000..feb26428f --- /dev/null +++ b/Server/src/main/kotlin/rs09/game/interaction/item/withitem/KeyOnPirateChest.kt @@ -0,0 +1,22 @@ +package rs09.game.interaction.item.withitem + +import api.* +import org.rs09.consts.Items +import org.rs09.consts.Scenery +import rs09.game.interaction.InteractionListener + +class KeyOnPirateChest : InteractionListener() { + override fun defineListeners() { + onUseWith(SCENERY, Items.CHEST_KEY_432, Scenery.CHEST_2079){player, used, with -> + val scenery = with as core.game.node.scenery.Scenery + if(removeItem(player, used, Container.INVENTORY)){ + replaceScenery(scenery, 2080, 3) + addItemOrDrop(player, Items.PIRATE_MESSAGE_433) + sendMessage(player, "You unlock the chest.") + sendMessage(player, "All that's in the chest is a message...") + sendMessage(player, "You take the message from the chest.") + } + return@onUseWith true + } + } +} \ No newline at end of file diff --git a/Server/src/main/kotlin/rs09/game/interaction/item/withitem/OilStillListeners.kt b/Server/src/main/kotlin/rs09/game/interaction/item/withitem/OilStillListeners.kt new file mode 100644 index 000000000..f4eaaaa2c --- /dev/null +++ b/Server/src/main/kotlin/rs09/game/interaction/item/withitem/OilStillListeners.kt @@ -0,0 +1,98 @@ +package rs09.game.interaction.item.withitem + +import api.* +import core.game.node.entity.player.Player +import org.rs09.consts.Items +import org.rs09.consts.Scenery +import rs09.game.interaction.InteractionListener + +class OilStillListeners : InteractionListener() { + override fun defineListeners() { + val flowers = (Items.FLOWERS_2460..Items.FLOWERS_2477).toIntArray() + val stills = intArrayOf(*getChildren(5908), 5909) + val fillableItems = mapOf( + Items.OIL_LAMP_4525 to Items.OIL_LAMP_4522, + Items.OIL_LANTERN_4535 to Items.OIL_LANTERN_4537, + Items.BULLSEYE_LANTERN_4546 to Items.BULLSEYE_LANTERN_4548, + Items.SAPPHIRE_LANTERN_4700 to Items.SAPPHIRE_LANTERN_4701 + ) + + onUseWith(ITEM, flowers, Items.ANCHOVY_OIL_11264) { player, used, with -> + if (removeItem(player, used, Container.INVENTORY)) { + replaceSlot(player, with.asItem().slot, Items.IMP_REPELLENT_11262.asItem()) + sendMessage(player, "You mix the flower petals with the anchovy oil to make a very strange-smelling concoction.") + } + return@onUseWith true + } + + onUseWith(SCENERY, Items.SWAMP_TAR_1939, *stills) {player, used, _ -> + if(checkStillEmpty(player)){ + removeItem(player, used) + setVarbit(player, 425, 4, 2, save = true) + sendMessage(player, "You refine some swamp tar into lamp oil.") + } else { + sendStillFull(player) + } + return@onUseWith true + } + + onUseWith(SCENERY, fillableItems.keys.toIntArray(), *stills){player, used, _ -> + when { + checkStillEmpty(player) -> sendMessage(player, "There is no oil in the sill.") + getStillState(player) == 2 -> { + val replacement = fillableItems[used.id]?.asItem() ?: return@onUseWith false + replaceSlot(player, used.asItem().slot, replacement) + setVarbit(player, 425, 4, 0) + sendMessage(player, "You fill the ${replacement.name.toLowerCase()} with oil.") + } + else -> sendMessage(player, "There is refined imp repellent in this still, not lamp oil.") + } + return@onUseWith true + } + + onUseWith(SCENERY, Items.IMP_REPELLENT_11262, *stills){player, used, _ -> + when { + checkStillEmpty(player) -> { + replaceSlot(player, used.asItem().slot, Items.VIAL_229.asItem()) + sendMessage(player, "You refine some imp repellent.") + setVarbit(player, 425, 4, 4) + } + else -> sendStillFull(player) + } + return@onUseWith true + } + + onUseWith(SCENERY, Items.BUTTERFLY_JAR_10012, *stills){player, used, _ -> + when { + checkStillEmpty(player) -> sendMessage(player, "There is no refined imp repellent in the still.") + getStillState(player) == 2 -> { + replaceSlot(player, used.asItem().slot, Items.IMPLING_JAR_11260.asItem()) + setVarbit(player, 425, 4, 0) + sendMessage(player, "You turn the butterfly jar into an impling jar.") + } + else -> sendMessage(player, "There is lamp oil in this still, not refined imp repellent.") + } + return@onUseWith true + } + } + + private fun checkStillEmpty(player: Player) : Boolean { + val stillState = getStillState(player) + return stillState == 0 + } + + private fun sendStillFull(player: Player) { + val stillState = getStillState(player) + + if(stillState != 0) { + when(stillState) { + 2 -> sendMessage(player, "There is already lamp oil in the still.") + 4 -> sendMessage(player, "There is already imp repellent in the still.") + } + } + } + + private fun getStillState(player: Player): Int { + return getVarbitValue(player, 425, 4) + } +} \ No newline at end of file diff --git a/Server/src/main/kotlin/rs09/game/interaction/item/withitem/SardineSeasoner.kt b/Server/src/main/kotlin/rs09/game/interaction/item/withitem/SardineSeasoner.kt new file mode 100644 index 000000000..cef852817 --- /dev/null +++ b/Server/src/main/kotlin/rs09/game/interaction/item/withitem/SardineSeasoner.kt @@ -0,0 +1,19 @@ +package rs09.game.interaction.item.withitem + +import api.addItem +import api.removeItem +import api.sendDialogue +import org.rs09.consts.Items +import rs09.game.interaction.InteractionListener + +class SardineSeasoner : InteractionListener() { + override fun defineListeners() { + onUseWith(ITEM, Items.DOOGLE_LEAVES_1573, Items.RAW_SARDINE_327) {player, used, with -> + if(removeItem(player, used.asItem()) && removeItem(player, with.asItem())){ + addItem(player, Items.DOOGLE_SARDINE_1552) + sendDialogue(player, "You rub the doogle leaves over the sardine.") + } + return@onUseWith true + } + } +} \ No newline at end of file diff --git a/Server/src/main/kotlin/rs09/game/interaction/item/withitem/SilkRumListener.kt b/Server/src/main/kotlin/rs09/game/interaction/item/withitem/SilkRumListener.kt new file mode 100644 index 000000000..457e41748 --- /dev/null +++ b/Server/src/main/kotlin/rs09/game/interaction/item/withitem/SilkRumListener.kt @@ -0,0 +1,17 @@ +package rs09.game.interaction.item.withitem + +import api.asItem +import api.replaceSlot +import api.sendMessage +import org.rs09.consts.Items +import rs09.game.interaction.InteractionListener + +class SilkRumListener : InteractionListener() { + override fun defineListeners() { + onUseWith(ITEM, Items.KARAMJAN_RUM_431, Items.SILK_950){player, _, with -> + replaceSlot(player, with.asItem().slot, Items.CLEANING_CLOTH_3188.asItem()) + sendMessage(player, "You pour some of the Karamjan rum over the silk.") + return@onUseWith true + } + } +} \ No newline at end of file diff --git a/Server/src/main/kotlin/rs09/game/interaction/item/withitem/SkullSceptreCombiner.kt b/Server/src/main/kotlin/rs09/game/interaction/item/withitem/SkullSceptreCombiner.kt new file mode 100644 index 000000000..08db102bf --- /dev/null +++ b/Server/src/main/kotlin/rs09/game/interaction/item/withitem/SkullSceptreCombiner.kt @@ -0,0 +1,35 @@ +package rs09.game.interaction.item.withitem + +import api.addItem +import api.removeItem +import api.sendDialogue +import org.rs09.consts.Items +import rs09.game.interaction.InteractionListener + +class SkullSceptreCombiner : InteractionListener() { + override fun defineListeners() { + onUseWith(ITEM, Items.LEFT_SKULL_HALF_9008, Items.RIGHT_SKULL_HALF_9007) {player, used, with -> + if(removeItem(player, used.asItem()) && removeItem(player, with.asItem())){ + addItem(player, Items.STRANGE_SKULL_9009) + sendDialogue(player, "The two halves of the skull fit perfectly.") + } + return@onUseWith true + } + + onUseWith(ITEM, Items.BOTTOM_OF_SCEPTRE_9011, Items.TOP_OF_SCEPTRE_9010) {player, used, with -> + if(removeItem(player, used.asItem()) && removeItem(player, with.asItem())){ + addItem(player, Items.RUNED_SCEPTRE_9012) + sendDialogue(player, "The two halves of the sceptre fit perfectly.") + } + return@onUseWith true + } + + onUseWith(ITEM, Items.RUNED_SCEPTRE_9012, Items.STRANGE_SKULL_9009) {player, used, with -> + if(removeItem(player, used.asItem()) && removeItem(player, with.asItem())){ + addItem(player, Items.SKULL_SCEPTRE_9013) + sendDialogue(player,"The skull fits perfectly on top of the sceptre.") + } + return@onUseWith true + } + } +} \ No newline at end of file diff --git a/Server/src/main/kotlin/rs09/game/interaction/item/withobject/WaterSourceListener.kt b/Server/src/main/kotlin/rs09/game/interaction/item/withobject/WaterSourceListener.kt index 03834186d..6c0be65fc 100644 --- a/Server/src/main/kotlin/rs09/game/interaction/item/withobject/WaterSourceListener.kt +++ b/Server/src/main/kotlin/rs09/game/interaction/item/withobject/WaterSourceListener.kt @@ -2,6 +2,7 @@ package rs09.game.interaction.item.withobject import api.* import core.game.node.entity.player.link.diary.DiaryType +import core.game.system.task.Pulse import core.game.world.update.flag.context.Animation import org.rs09.consts.Items import rs09.game.interaction.InteractionListener @@ -35,14 +36,17 @@ class WaterSourceListener : InteractionListener() { player.achievementDiaryManager.getDiary(DiaryType.FALADOR).updateTask(player, 0, 7, true) } - runTask(player, 1){ - if(removeItem(player, used)) - { - animate(player, animation) - sendMessage(player, formatMsgText(used.name, vessel.fillMsg)) - addItemOrDrop(player, vessel.output) + player.pulseManager.run(object : Pulse(1){ + override fun pulse(): Boolean { + if(removeItem(player, used.id)) + { + animate(player, animation) + sendMessage(player, formatMsgText(used.name, vessel.fillMsg)) + addItemOrDrop(player, vessel.output) + } + return !vessel.autofill || amountInInventory(player, used.id) == 0 } - } + }) return@onUseWith true } @@ -69,7 +73,7 @@ class WaterSourceListener : InteractionListener() { return sb.toString() } - internal enum class WaterVessel(val inputs: IntArray, val output: Int, val wellable: Boolean = false, val fillMsg: String = "You fill the @.") + internal enum class WaterVessel(val inputs: IntArray, val output: Int, val wellable: Boolean = false, val autofill: Boolean = true, val fillMsg: String = "You fill the @.") { BUCKET( inputs = intArrayOf(Items.BUCKET_1925), @@ -78,7 +82,7 @@ class WaterSourceListener : InteractionListener() { ), VIAL( inputs = intArrayOf(Items.VIAL_229), - output = Items.VIAL_OF_WATER_227 + output = Items.VIAL_OF_WATER_227, ), JUG( inputs = intArrayOf(Items.JUG_1935), @@ -88,14 +92,8 @@ class WaterSourceListener : InteractionListener() { inputs = intArrayOf(Items.BOWL_1923), output = Items.BOWL_OF_WATER_1921 ), - CLAY( - inputs = intArrayOf(Items.CLAY_434), - output = Items.SOFT_CLAY_1761, - wellable = false, - fillMsg = "You mix the clay and water. You now have some soft, workable clay." - ), WATERING_CAN( - inputs = intArrayOf(Items.WATERING_CAN1_5333, Items.WATERING_CAN2_5334, Items.WATERING_CAN3_5335, Items.WATERING_CAN4_5336, Items.WATERING_CAN5_5337, Items.WATERING_CAN6_5338, Items.WATERING_CAN7_5339), + inputs = intArrayOf(Items.WATERING_CAN_5331,Items.WATERING_CAN1_5333, Items.WATERING_CAN2_5334, Items.WATERING_CAN3_5335, Items.WATERING_CAN4_5336, Items.WATERING_CAN5_5337, Items.WATERING_CAN6_5338, Items.WATERING_CAN7_5339), output = Items.WATERING_CAN8_5340 ), WATER_SKIN( diff --git a/Server/src/main/kotlin/rs09/game/interaction/object/WildernessObeliskListener.kt b/Server/src/main/kotlin/rs09/game/interaction/object/WildernessObeliskListener.kt new file mode 100644 index 000000000..d857f4ea3 --- /dev/null +++ b/Server/src/main/kotlin/rs09/game/interaction/object/WildernessObeliskListener.kt @@ -0,0 +1,97 @@ +package rs09.game.interaction.`object` + +import core.game.node.Node +import core.game.node.entity.player.link.TeleportManager +import core.game.node.scenery.Scenery +import core.game.node.scenery.SceneryBuilder +import core.game.system.task.Pulse +import core.game.world.map.Location +import core.game.world.map.RegionManager.getLocalPlayersMaxNorm +import core.game.world.map.RegionManager.getRegionChunk +import core.game.world.update.flag.chunk.GraphicUpdateFlag +import core.game.world.update.flag.context.Graphics +import org.rs09.consts.Scenery.OBELISK_14825 +import org.rs09.consts.Scenery.OBELISK_14826 +import org.rs09.consts.Scenery.OBELISK_14827 +import org.rs09.consts.Scenery.OBELISK_14828 +import org.rs09.consts.Scenery.OBELISK_14829 +import org.rs09.consts.Scenery.OBELISK_14830 +import org.rs09.consts.Scenery.OBELISK_14831 +import rs09.game.interaction.InteractionListener +import rs09.game.system.SystemLogger +import rs09.game.world.GameWorld +import java.util.* + +/** + * Interaction listener for the Wilderness Obelisks + * @author Woah + */ +private val OBELISKS: HashMap = hashMapOf( + Pair(OBELISK_14829, Location(3156, 3620, 0)), // Level 13 + Pair(OBELISK_14830, Location(3219, 3656, 0)), // Level 19 + Pair(OBELISK_14827, Location(3035, 3732, 0)), // Level 27 + Pair(OBELISK_14828, Location(3106, 3794, 0)), // Level 35 + Pair(OBELISK_14826, Location(2980, 3866, 0)), // Level 44 + Pair(OBELISK_14831, Location(3307, 3916, 0)) // Level 50 +) +private val REPLACEMENT_OBELISK = OBELISK_14825 +private val OBELISK_TELEPORT_AUDIO = 204 +private val OBELISK_TELEPORT_GFX = 342 +private val random = Random() + +class WildernessObeliskListener : InteractionListener() { + + override fun defineListeners() { + + on(OBELISKS.keys.toIntArray(), SCENERY, "activate") { player, node -> + val selectedObelisk = OBELISKS[node.id] + if (selectedObelisk != null) { + val obelisks = getSurroundingObeliskScenery(node, selectedObelisk) + obelisks.forEach { obj -> // Replace the scenery with the animated obelisk object + SceneryBuilder.replace(obj, obj.transform(REPLACEMENT_OBELISK), 6) + } + player.audioManager.send(OBELISK_TELEPORT_AUDIO) + GameWorld.Pulser.submit(object : Pulse(6, player) { + override fun pulse(): Boolean { + if (delay == 1) { + // Send the graphic in a 3x3 square + selectedObelisk.get3x3Tiles().forEach { + getRegionChunk(it).flag(GraphicUpdateFlag(Graphics.create(OBELISK_TELEPORT_GFX), it)) + } + return true + } + // Choose new location to teleport players to + val newObeliskLoc = OBELISKS.random() + + // Get all the players in a 3x3 square + for (player in getLocalPlayersMaxNorm(selectedObelisk, 1)) { + val surroundingLoc = newObeliskLoc.value.get3x3Tiles() + player.packetDispatch.sendMessage("Ancient magic teleports you somewhere in the wilderness.") + player.teleporter.send(surroundingLoc.random(), TeleportManager.TeleportType.OBELISK, 2) + } + super.setDelay(1) + return false + } + + }) + return@on true + } else { + SystemLogger.logErr("Selected Obelisk is null!") + return@on true + } + } + } + + // Retrieves the scenery at the four corners of the Obelisk square + private fun getSurroundingObeliskScenery(node: Node, selectedObelisk: Location): Array { + return arrayOf( + Scenery(node.id, Location(selectedObelisk.x - 5 / 2, selectedObelisk.y - 5 / 2, 0)), + Scenery(node.id, Location(selectedObelisk.x + 5 / 2, selectedObelisk.y - 5 / 2, 0)), + Scenery(node.id, Location(selectedObelisk.x - 5 / 2, selectedObelisk.y + 5 / 2, 0)), + Scenery(node.id, Location(selectedObelisk.x + 5 / 2, selectedObelisk.y + 5 / 2, 0)) + ) + } + + // Helper random method + private fun Map.random(): Map.Entry = entries.elementAt(random.nextInt(size)) +} \ No newline at end of file diff --git a/Server/src/main/kotlin/rs09/game/node/entity/player/info/login/PlayerSaveParser.kt b/Server/src/main/kotlin/rs09/game/node/entity/player/info/login/PlayerSaveParser.kt index c972d77e0..ca9733392 100644 --- a/Server/src/main/kotlin/rs09/game/node/entity/player/info/login/PlayerSaveParser.kt +++ b/Server/src/main/kotlin/rs09/game/node/entity/player/info/login/PlayerSaveParser.kt @@ -16,6 +16,7 @@ import org.json.simple.parser.JSONParser import rs09.ServerConstants import rs09.game.node.entity.skill.farming.CompostBins import rs09.game.node.entity.skill.farming.FarmingPatch +import rs09.game.world.GameWorld import rs09.game.system.SystemLogger import java.io.FileReader import java.util.* @@ -387,14 +388,6 @@ class PlayerSaveParser(val player: Player) { player.skills.parse(skillData) player.skills.experienceGained = saveFile!!["totalEXP"].toString().toDouble() player.skills.experienceMutiplier = saveFile!!["exp_multiplier"].toString().toDouble() - if (GameWorld.settings?.default_xp_rate != 5.0) { - player.skills.experienceMutiplier = GameWorld.settings?.default_xp_rate!! - } - val divisor: Double - if(player.skills.experienceMutiplier >= 10 && !player.attributes.containsKey("permadeath")){ //exclude permadeath HCIMs from XP squish - divisor = player.skills.experienceMutiplier / 5.0 - player.skills.correct(divisor) - } if (saveFile!!.containsKey("milestone")) { val milestone: JSONObject = saveFile!!["milestone"] as JSONObject player.skills.combatMilestone = (milestone.get("combatMilestone")).toString().toInt() diff --git a/Server/src/main/kotlin/rs09/game/node/entity/player/info/stats/StatsCommandSet.kt b/Server/src/main/kotlin/rs09/game/node/entity/player/info/stats/StatsCommandSet.kt index 69d9a7e8b..0d76e6625 100644 --- a/Server/src/main/kotlin/rs09/game/node/entity/player/info/stats/StatsCommandSet.kt +++ b/Server/src/main/kotlin/rs09/game/node/entity/player/info/stats/StatsCommandSet.kt @@ -27,7 +27,7 @@ val MITHRIL_DRAGON_IDS = intArrayOf(NPCs.MITHRIL_DRAGON_5363, NPCs.MITHRIL_DRAGO val SKELETAL_WYVERN_IDS = intArrayOf(NPCs.SKELETAL_WYVERN_3068, NPCs.SKELETAL_WYVERN_3069, NPCs.SKELETAL_WYVERN_3070, NPCs.SKELETAL_WYVERN_3071) val SPACER = " "; -val NUM_PAGES = 3 +val NUM_PAGES = 4 fun sendStats(player: Player, other: Player, page: Int){ prepareInterface(player, other, page) @@ -41,7 +41,7 @@ fun sendStats(player: Player, other: Player, page: Int){ 68 -> sendLine(player,"Medium Clues: ${other.treasureTrailManager.completedClues[1]}",i) 69 -> sendLine(player,"Hard Clues: ${other.treasureTrailManager.completedClues[2]}",i) 70 -> sendLine(player,SPACER,i) - 71 -> sendLine(player,"Slayer Tasks: ${other.slayer.totalTasks}",i) + 71 -> sendLine(player,"Slayer Tasks: ${other.slayer.flags.completedTasks}",i) 72 -> sendLine(player,"Quest Points: ${other.questRepository.points}",i) 73 -> sendLine(player,"Ironman Mode: ${other.ironmanManager.mode.name.toLowerCase()}",i) 74 -> sendLine(player,"Deaths: ${other.getAttribute("$STATS_BASE:$STATS_DEATHS",0)}",i) @@ -138,6 +138,40 @@ fun sendStats(player: Player, other: Player, page: Int){ else -> sendLine(player,"",i) } } + 3 -> { + when(i) { + 97 -> sendLine(player, "Venenatis KC: ${globalData.bossCounters.get(BossKillCounter.VENENATIS.ordinal)}",i) + 68 -> sendLine(player,SPACER,i) + 69 -> sendLine(player,SPACER,i) + 70 -> sendLine(player, "Dragon pickaxe: ${GlobalKillCounter.getRareDrops(other, 14723)}", i) + 71 -> sendLine(player, "Treasonous ring: ${GlobalKillCounter.getRareDrops(other, 14731)}", i) + 72 -> sendLine(player,SPACER,i) + 73 -> sendLine(player,SPACER,i) + 74 -> sendLine(player,SPACER,i) + 75 -> sendLine(player,SPACER,i) + 76 -> sendLine(player,SPACER,i) + 77 -> sendLine(player,SPACER,i) + 78 -> sendLine(player,SPACER,i) + 79 -> sendLine(player,SPACER,i) + 80 -> sendLine(player,SPACER,i) + + 82 -> sendLine(player,SPACER,i) + 83 -> sendLine(player,SPACER,i) + 84 -> sendLine(player,SPACER,i) + 85 -> sendLine(player,SPACER,i) + 86 -> sendLine(player,SPACER,i) + 87 -> sendLine(player,SPACER,i) + 88 -> sendLine(player,SPACER,i) + 89 -> sendLine(player,SPACER,i) + 90 -> sendLine(player,SPACER,i) + 91 -> sendLine(player,SPACER,i) + 92 -> sendLine(player,SPACER,i) + 93 -> sendLine(player,SPACER,i) + 94 -> sendLine(player,SPACER,i) + 95 -> sendLine(player,SPACER,i) + else -> sendLine(player,"",i) + } + } } } player.interfaceManager.open(Component(26)) diff --git a/Server/src/main/kotlin/rs09/game/node/entity/skill/cooking/CookingDialogue.kt b/Server/src/main/kotlin/rs09/game/node/entity/skill/cooking/CookingDialogue.kt index 52720e2a8..9422d099b 100644 --- a/Server/src/main/kotlin/rs09/game/node/entity/skill/cooking/CookingDialogue.kt +++ b/Server/src/main/kotlin/rs09/game/node/entity/skill/cooking/CookingDialogue.kt @@ -1,14 +1,14 @@ package rs09.game.node.entity.skill.cooking -import api.* +import api.sendInputDialogue import core.cache.def.impl.ItemDefinition -import core.game.node.scenery.Scenery -import core.game.node.entity.player.link.RunScript import core.game.node.entity.skill.cooking.CookableItems import core.game.node.entity.skill.cooking.CookingRewrite.Companion.cook +import core.game.node.scenery.Scenery import core.net.packet.PacketRepository import core.net.packet.context.ChildPositionContext import core.net.packet.out.RepositionChild +import org.rs09.consts.Items import rs09.game.content.dialogue.DialogueFile import rs09.tools.START_DIALOGUE @@ -16,7 +16,6 @@ class CookingDialogue(vararg val args: Any) : DialogueFile(){ var initial = 0 var product = 0 var `object`: Scenery? = null - var sinew = false override fun handle(componentID: Int, buttonID: Int) { when(stage){ START_DIALOGUE -> { @@ -30,12 +29,11 @@ class CookingDialogue(vararg val args: Any) : DialogueFile(){ } `object` = args.get(1) as Scenery } - 4 -> { - initial = args.get(0) as Int - product = args.get(1) as Int - sinew = args.get(2) as Boolean - `object` = args.get(3) as Scenery - if (sinew) { + 3 -> { + initial = args[0] as Int + product = args[1] as Int + `object` = args[2] as Scenery + if (product == Items.SINEW_9436) { player!!.dialogueInterpreter.sendOptions( "Select one", "Dry the meat into sinew", @@ -67,7 +65,7 @@ class CookingDialogue(vararg val args: Any) : DialogueFile(){ 100 -> { when (buttonID) { - 1 -> cook(player!!, `object`, initial, product, 1) + 1 -> display() 2 -> { product = CookableItems.forId(initial).cooked display() @@ -91,8 +89,8 @@ class CookingDialogue(vararg val args: Any) : DialogueFile(){ player!!.interfaceManager.openChatbox(307) PacketRepository.send(RepositionChild::class.java, ChildPositionContext(player, 307, 3, 60, 90)) PacketRepository.send(RepositionChild::class.java, ChildPositionContext(player, 307, 2, 208, 20)) - player!!.packetDispatch.sendItemZoomOnInterface(product, 160, 307, 2) - player!!.packetDispatch.sendString(ItemDefinition.forId(product).name, 307, 3) + player!!.packetDispatch.sendItemZoomOnInterface(initial, 160, 307, 2) + player!!.packetDispatch.sendString(ItemDefinition.forId(initial).name, 307, 3) stage = 1 } diff --git a/Server/src/main/kotlin/rs09/game/system/SystemLogger.kt b/Server/src/main/kotlin/rs09/game/system/SystemLogger.kt index af4dcfc35..1d3f19615 100644 --- a/Server/src/main/kotlin/rs09/game/system/SystemLogger.kt +++ b/Server/src/main/kotlin/rs09/game/system/SystemLogger.kt @@ -3,6 +3,7 @@ package rs09.game.system import com.github.ajalt.mordant.rendering.TextColors import com.github.ajalt.mordant.terminal.Terminal import gui.GuiEvent +import gui.ServerMonitor import rs09.ServerConstants import java.io.* import java.text.SimpleDateFormat @@ -46,6 +47,7 @@ object SystemLogger { val msg = "${getTime()}: [INFO] $m" if(m.isNotBlank()) { t.println(msg) + ServerMonitor.eventQueue.add(GuiEvent.AddDefaultMessage(msg)) } } } @@ -55,6 +57,7 @@ object SystemLogger { val msg = "${getTime()}: [ ERR] $message" if(message.isNotBlank()) { t.println(msg) + ServerMonitor.eventQueue.add(GuiEvent.AddDebugMessage(msg)) } } @@ -63,6 +66,7 @@ object SystemLogger { val msg = "${getTime()}: [WARN] $message" if(message.isNotBlank()) { t.println(msg) + ServerMonitor.eventQueue.add(GuiEvent.AddDebugMessage(msg)) } } @@ -71,6 +75,7 @@ object SystemLogger { val msg = "${getTime()}: [ALRT] $message" if(message.isNotBlank()) { t.println(msg) + ServerMonitor.eventQueue.add(GuiEvent.AddDebugMessage(msg)) } } @@ -79,6 +84,7 @@ object SystemLogger { val msg = "${getTime()}: [AIPL] $message" if(message.isNotBlank()) { t.println(msg) + ServerMonitor.eventQueue.add(GuiEvent.AddAIPMessage(msg)) } } diff --git a/Server/src/main/kotlin/rs09/game/system/command/rottenpotato/RottenPotatoOptionHandler.kt b/Server/src/main/kotlin/rs09/game/system/command/rottenpotato/RottenPotatoOptionHandler.kt index 777ec29fa..cf30b98c1 100644 --- a/Server/src/main/kotlin/rs09/game/system/command/rottenpotato/RottenPotatoOptionHandler.kt +++ b/Server/src/main/kotlin/rs09/game/system/command/rottenpotato/RottenPotatoOptionHandler.kt @@ -1,15 +1,12 @@ package rs09.game.system.command.rottenpotato -import api.removeItem import core.cache.def.impl.ItemDefinition import core.game.interaction.OptionHandler import core.game.node.Node import core.game.node.entity.player.Player -import core.game.node.entity.player.info.Rights import core.plugin.Initializable import core.plugin.Plugin import org.rs09.consts.Items -import rs09.game.system.SystemLogger import rs09.game.system.command.CommandSystem import rs09.tools.stringtools.colorize @@ -32,14 +29,6 @@ class RottenPotatoOptionHandler : OptionHandler() { node ?: return false option ?: return false - // re-add the fucking check because some fucking moron removed it at some point - if(player.rights != Rights.ADMINISTRATOR) - { - removeItem(player, Items.ROTTEN_POTATO_5733) - SystemLogger.logAlert("Player ${player.username} had a rotten potato. It has been removed.") - return false - } - when(option){ "rs hd" -> player.dialogueInterpreter.open(RottenPotatoRSHDDialogue().ID) "heal" -> player.fullRestore().also { player.sendMessage(colorize("%RAll healed!")) } diff --git a/Server/src/main/kotlin/rs09/game/system/command/sets/MusicCommandSet.kt b/Server/src/main/kotlin/rs09/game/system/command/sets/MusicCommandSet.kt index a1b27b7c1..3c341980e 100644 --- a/Server/src/main/kotlin/rs09/game/system/command/sets/MusicCommandSet.kt +++ b/Server/src/main/kotlin/rs09/game/system/command/sets/MusicCommandSet.kt @@ -6,6 +6,7 @@ import core.net.packet.context.MusicContext import core.net.packet.out.MusicPacket import core.plugin.Initializable import rs09.game.system.command.Command +import rs09.game.world.zone.fellercellar.FellerCellar @Initializable class MusicCommandSet : CommandSet(Command.Privilege.STANDARD){ @@ -48,5 +49,9 @@ class MusicCommandSet : CommandSet(Command.Privilege.STANDARD){ player.musicPlayer.unlock(me.id) } } + + define("forceshuffle") { player, _ -> + FellerCellar.songTime = 0 + } } } \ No newline at end of file diff --git a/Server/src/main/kotlin/rs09/game/system/config/ServerConfigParser.kt b/Server/src/main/kotlin/rs09/game/system/config/ServerConfigParser.kt index 451479703..040e7709b 100644 --- a/Server/src/main/kotlin/rs09/game/system/config/ServerConfigParser.kt +++ b/Server/src/main/kotlin/rs09/game/system/config/ServerConfigParser.kt @@ -98,7 +98,7 @@ object ServerConfigParser { ServerConstants.HOME_LOCATION = parseLocation(data.getString("world.home_location")) ServerConstants.START_LOCATION = parseLocation(data.getString("world.new_player_location")) ServerConstants.DAILY_RESTART = data.getBoolean("world.daily_restart") - ServerConstants.GRAND_EXCHANGE_DATA_PATH = data.getPath("paths.eco_data") + ServerConstants.GRAND_EXCHANGE_DATA_PATH = data.getPath("paths.grand_exchange_data_path") ServerConstants.CELEDT_DATA_PATH = data.getPath("paths.cele_drop_table_path") } diff --git a/Server/src/main/kotlin/rs09/game/system/config/ShopParser.kt b/Server/src/main/kotlin/rs09/game/system/config/ShopParser.kt index 3a0768eeb..8fcd110be 100644 --- a/Server/src/main/kotlin/rs09/game/system/config/ShopParser.kt +++ b/Server/src/main/kotlin/rs09/game/system/config/ShopParser.kt @@ -1,13 +1,16 @@ package rs09.game.system.config +import api.submitWorldPulse import core.game.content.global.shop.Shop import core.game.node.entity.player.Player import core.game.node.item.Item +import core.game.system.task.Pulse import org.json.simple.JSONArray import org.json.simple.JSONObject import org.json.simple.parser.JSONParser import rs09.ServerConstants import rs09.game.system.SystemLogger +import rs09.game.world.repository.Repository import java.io.FileReader class ShopParser{ @@ -50,6 +53,15 @@ class ShopParser{ } count++ } + + submitWorldPulse(object : Pulse(100) + { + override fun pulse(): Boolean { + Repository.npcs.asSequence().filter { it.shop != null }.forEach { it.shop.restock() } + return false + } + }) + SystemLogger.logInfo("Parsed $count shops.") } diff --git a/Server/src/main/kotlin/rs09/game/system/config/XteaParser.kt b/Server/src/main/kotlin/rs09/game/system/config/XteaParser.kt index 5ff740263..256af6e20 100644 --- a/Server/src/main/kotlin/rs09/game/system/config/XteaParser.kt +++ b/Server/src/main/kotlin/rs09/game/system/config/XteaParser.kt @@ -13,14 +13,10 @@ class XteaParser { companion object{ val REGION_XTEA = HashMap() val DEFAULT_REGION_KEYS = intArrayOf(14881828, -6662814, 58238456, 146761213) - fun getRegionXTEA(regionId: Int): IntArray? { //Uses the xtea's from the sql to unlock regions - // System.out.println("USING SQL REGION KEYS");//Confirms we have unlocked those regions - return REGION_XTEA[regionId] - ?: // System.out.println("USING DEFAULT REGION KEYS FOR REGION " + regionId);//Used to check for missing regions - return DEFAULT_REGION_KEYS //This one grabs the keys from the SQL - // return DEFAULT_REGION_KEYS;//This one only uses the default keys at the top,{ 14881828, -6662814, 58238456, 146761213 }. Unsure why they chose these numbers. + fun getRegionXTEA(regionId: Int): IntArray? { + return intArrayOf(0, 0, 0, 0) } - } + } val parser = JSONParser() var reader: FileReader? = null diff --git a/Server/src/main/kotlin/rs09/game/world/ImmerseWorld.kt b/Server/src/main/kotlin/rs09/game/world/ImmerseWorld.kt index 6423a3cbf..7336dfecb 100644 --- a/Server/src/main/kotlin/rs09/game/world/ImmerseWorld.kt +++ b/Server/src/main/kotlin/rs09/game/world/ImmerseWorld.kt @@ -21,10 +21,10 @@ object ImmerseWorld { immerseSeersAndCatherby() immerseLumbridgeDraynor() immerseVarrock() - // immerseWilderness() temp disabled due to unbalanced exchange rates + immerseWilderness() immerseFishingGuild() immerseAdventurer() - // immerseSlayer() + immerseSlayer() } } diff --git a/Server/src/main/kotlin/rs09/game/world/zone/fellercellar/FellerCellar.kt b/Server/src/main/kotlin/rs09/game/world/zone/fellercellar/FellerCellar.kt new file mode 100644 index 000000000..4f81abf1f --- /dev/null +++ b/Server/src/main/kotlin/rs09/game/world/zone/fellercellar/FellerCellar.kt @@ -0,0 +1,62 @@ +package rs09.game.world.zone.fellercellar + +import core.game.node.entity.player.Player +import core.game.system.task.Pulse +import core.net.packet.PacketRepository +import core.net.packet.context.MusicContext +import core.net.packet.out.MusicPacket +import core.tools.RandomFunction +import rs09.tools.stringtools.colorize + +object FellerCellar { + val SONG_LENGTHS = intArrayOf(222,222,100,225,430,400,147,575,141,275,146,635) + val SONG_NAMES = arrayOf("Red Wings","Clocktower","Pizza Time","Clash On The Big Bridge","Pokke Village","Corridors of Time","Cirno's Theme", + "Golden Sneer","Crash 3 Warp Room","Slider Theme","Fun Naming","Fight On!") + var FellerCellarPlayerList = ArrayList() + var random = RandomFunction.getRandom(11) + var lastRoll = random + var songTime = SONG_LENGTHS[random] + + var fellerPulse = object : Pulse() { + override fun pulse(): Boolean { + if(songTime <= 0){ + random = RandomFunction.getRandom(11) + while(random == lastRoll){ + random = RandomFunction.getRandom(11) + } + lastRoll = random + songTime = SONG_LENGTHS[random] + FellerCellarPlayerList.forEach { player -> + shuffleTracks(player, random) + } + for (player in FellerCellarPlayerList) { + if(random == 7){ + player.sendMessage(colorize("%RNow playing: ${SONG_NAMES[random]}")) + } + else player.sendMessage(colorize("%GNow playing: ${SONG_NAMES[random]}")) + } + } + songTime-- + return false + } + } + + fun shuffleTracks(player: Player, random: Int) { + when(random){ + 0 -> PacketRepository.send(MusicPacket::class.java, MusicContext(player,668)) + 1 -> PacketRepository.send(MusicPacket::class.java, MusicContext(player,669)) + 2 -> PacketRepository.send(MusicPacket::class.java, MusicContext(player,670)) + 3 -> PacketRepository.send(MusicPacket::class.java, MusicContext(player,671)) + 4 -> PacketRepository.send(MusicPacket::class.java, MusicContext(player,672)) + 5 -> PacketRepository.send(MusicPacket::class.java, MusicContext(player,673)) + 6 -> PacketRepository.send(MusicPacket::class.java, MusicContext(player,674)) + 7 -> PacketRepository.send(MusicPacket::class.java, MusicContext(player,675)) + 8 -> PacketRepository.send(MusicPacket::class.java, MusicContext(player,676)) + 9 -> PacketRepository.send(MusicPacket::class.java, MusicContext(player,677)) + 10 -> PacketRepository.send(MusicPacket::class.java, MusicContext(player,678)) + 11 -> PacketRepository.send(MusicPacket::class.java, MusicContext(player,679)) + } + + } + +} \ No newline at end of file diff --git a/Server/src/main/kotlin/rs09/game/world/zone/fellercellar/FellerCellarZone.kt b/Server/src/main/kotlin/rs09/game/world/zone/fellercellar/FellerCellarZone.kt new file mode 100644 index 000000000..963178ac3 --- /dev/null +++ b/Server/src/main/kotlin/rs09/game/world/zone/fellercellar/FellerCellarZone.kt @@ -0,0 +1,54 @@ +package rs09.game.world.zone.fellercellar + +import api.sendMessage +import api.submitWorldPulse +import core.game.node.entity.Entity +import core.game.world.map.zone.MapZone +import core.game.world.map.zone.ZoneBorders +import core.game.world.map.zone.ZoneBuilder +import core.plugin.Initializable +import core.plugin.Plugin +import core.tools.RandomFunction +import rs09.tools.stringtools.colorize + +@Initializable +class FellerCellarZone : MapZone("Feller Cellar Zone",true), Plugin { + + var pulseStarted = false + + override fun newInstance(arg: Any?): Plugin { + ZoneBuilder.configure(this) + return this + } + + override fun fireEvent(identifier: String?, vararg args: Any?): Any { + return Unit + } + + override fun configure() { + super.register(ZoneBorders(3207,9614,3220,9626)) + } + override fun enter(e: Entity?): Boolean { + if(!pulseStarted){ + submitWorldPulse(FellerCellar.fellerPulse) + pulseStarted = true + } + if (e != null && e.isPlayer) { + FellerCellar.shuffleTracks(e.asPlayer(), FellerCellar.random) + FellerCellar.FellerCellarPlayerList.add(e.asPlayer()) + if(FellerCellar.random == 7){ + e.asPlayer().sendMessage(colorize("%RNow playing: ${FellerCellar.SONG_NAMES[FellerCellar.random]}")) + } + else sendMessage(e.asPlayer(), colorize("%GNow Playing: ${FellerCellar.SONG_NAMES[FellerCellar.random]}")) + } + return super.enter(e) + } + + override fun leave(e: Entity?, logout: Boolean): Boolean { + if (e != null && e.isPlayer) { + FellerCellar.FellerCellarPlayerList.remove(e.asPlayer()) + } + return super.leave(e, logout) + } + +} \ No newline at end of file diff --git a/Server/src/main/kotlin/rs09/net/event/LoginReadEvent.kt b/Server/src/main/kotlin/rs09/net/event/LoginReadEvent.kt index c4addd162..d1911e0e8 100644 --- a/Server/src/main/kotlin/rs09/net/event/LoginReadEvent.kt +++ b/Server/src/main/kotlin/rs09/net/event/LoginReadEvent.kt @@ -66,6 +66,7 @@ class LoginReadEvent * @param buffer The buffer to read from. */ private fun decodeWorld(opcode: Int, session: IoSession, buffer: ByteBuffer) { + SystemLogger.logInfo("decodeWorld") var buffer = buffer val d = buffer.get() // Memory? val e = buffer.get() // no advertisement = 1 @@ -105,28 +106,26 @@ class LoginReadEvent session.isaacPair = ISAACPair(inCipher, outCipher) session.clientInfo = ClientInfo(displayMode, windowMode, screenWidth, screenHeight) val b = buffer - SystemLogger.logInfo("spawning thread to handle login") TaskExecutor.executeSQL { - SystemLogger.logInfo("login thread start") + SystemLogger.logInfo("spawning thread to handle login") Thread.currentThread().name = "Login Password Response" - SystemLogger.logInfo("login thread named") try { + SystemLogger.logInfo("about to grab the username") val username = StringUtils.longToString(b.long) - SystemLogger.logInfo("got username") + SystemLogger.logInfo(username) val password = ByteBufferUtils.getString(b) - SystemLogger.logInfo("got password") + SystemLogger.logInfo("im not logging the fucking password") val response = PlayerSQLManager.getCredentialResponse(username, password) - SystemLogger.logInfo("got sql response") + SystemLogger.logInfo(response.toString()) if (response != Response.SUCCESSFUL) { - SystemLogger.logInfo("not success :(") + SystemLogger.logInfo("why isnt it fucking successful") session.write(response, true) return@executeSQL } - SystemLogger.logInfo("great success, attempting login") + SystemLogger.logInfo("YOU SHOULD BE LOGGING IN NOW") login(PlayerDetails(username, password), session, b, opcode) - SystemLogger.logInfo("done") + SystemLogger.logInfo("YOU SHOULD NOW BE LOGGED IN") } catch (e: Exception) { - SystemLogger.logInfo("big whoops") e.printStackTrace() session.write(Response.COULD_NOT_LOGIN) } @@ -136,7 +135,8 @@ class LoginReadEvent /** * Handles the login procedure after we check an acc is registered & certified. - * @param details the player's details. + * @param username the username. + * @param password the password. * @param session the session. * @param buffer the byte buffer. * @param opcode the opcode. @@ -163,6 +163,7 @@ class LoginReadEvent */ @JvmStatic fun getISAACSeed(buffer: ByteBuffer): IntArray { + SystemLogger.logInfo("getISAACSeed") val seed = IntArray(4) for (i in 0..3) { seed[i] = buffer.int diff --git a/Server/src/main/kotlin/rs09/net/packet/PacketWriteQueue.kt b/Server/src/main/kotlin/rs09/net/packet/PacketWriteQueue.kt index e97f1e956..445ad9f9f 100644 --- a/Server/src/main/kotlin/rs09/net/packet/PacketWriteQueue.kt +++ b/Server/src/main/kotlin/rs09/net/packet/PacketWriteQueue.kt @@ -3,6 +3,7 @@ package rs09.net.packet import core.net.packet.OutgoingPacket import core.net.packet.out.* import gui.GuiEvent +import gui.ServerMonitor import rs09.game.system.SystemLogger import java.util.* @@ -29,6 +30,7 @@ object PacketWriteQueue { @JvmStatic fun flush(){ + ServerMonitor.eventQueue.add(GuiEvent.UpdateQueuedPackets(PacketsToWrite.size)) while(!PacketsToWrite.isEmpty()){ val p = PacketsToWrite.poll() ?: continue write(p.out,p.context) diff --git a/Server/src/main/kotlin/rs09/worker/MajorUpdateWorker.kt b/Server/src/main/kotlin/rs09/worker/MajorUpdateWorker.kt index b42a41011..cfa5c1de5 100644 --- a/Server/src/main/kotlin/rs09/worker/MajorUpdateWorker.kt +++ b/Server/src/main/kotlin/rs09/worker/MajorUpdateWorker.kt @@ -119,8 +119,8 @@ class MajorUpdateWorker { } val end = System.currentTimeMillis() - ServerMonitor.eventQueue.add(GuiEvent.UpdateTickTime(end - start)) - ServerMonitor.eventQueue.add(GuiEvent.UpdatePulseCount(GameWorld.Pulser.TASKS.size)) + //ServerMonitor.eventQueue.add(GuiEvent.UpdateTickTime(end - start)) + //ServerMonitor.eventQueue.add(GuiEvent.UpdatePulseCount(GameWorld.Pulser.TASKS.size)) Thread.sleep(max(600 - (end - start), 0)) } } @@ -130,7 +130,7 @@ class MajorUpdateWorker { worker.start() } - //if (ServerConstants.ALLOW_GUI) - // ServerMonitor.open() + if (ServerConstants.ALLOW_GUI) + ServerMonitor.open() } } \ No newline at end of file diff --git a/Server/worldprops/default.conf b/Server/worldprops/default.conf index 932c45714..b7ef36905 100644 --- a/Server/worldprops/default.conf +++ b/Server/worldprops/default.conf @@ -14,7 +14,7 @@ database_port = "3306" [world] -name = "2009scape" +name = "FellerScape" debug = true dev = true start_gui = false @@ -24,10 +24,10 @@ world_id = "1" country_id = "0" members = true #activity as displayed on the world list -activity = "2009scape classic." +activity = "Fellers?" pvp = false default_xp_rate = 5.0 -allow_slayer_reroll = false +allow_slayer_reroll = true #enables a default clan for players to join automatically. Should be an account with the same name as @name, with a clan set up already. enable_default_clan = true enable_bots = true @@ -43,9 +43,9 @@ autostock_ge = false allow_token_purchase = true skillcape_perks = true increased_door_time = false -enable_botting = false +enable_botting = true max_adv_bots = 100 -wild_pvp_enabled = false +wild_pvp_enabled = true [paths] #path to the data folder, which contains the cache subfolder and such @@ -65,5 +65,4 @@ cele_drop_table_path = "@data/CELEDT.xml" object_parser_path = "@data/ObjectParser.xml" #path logs are written to logs_path = "@data/logs" -bot_data = "@data/botdata" -eco_data = "@data/eco" \ No newline at end of file +bot_data = "@data/botdata" \ No newline at end of file diff --git a/build.sh b/build.sh new file mode 100644 index 000000000..dcdabc084 --- /dev/null +++ b/build.sh @@ -0,0 +1,2 @@ +cd Server +gradle jar diff --git a/dumps/530/animations b/dumps/530/animations.txt similarity index 100% rename from dumps/530/animations rename to dumps/530/animations.txt diff --git a/make-release.py b/make-release.py deleted file mode 100755 index b9855d3c7..000000000 --- a/make-release.py +++ /dev/null @@ -1,172 +0,0 @@ -#!/usr/bin/env python3 - -import subprocess -import datetime -import os - - -WEB_REPO = '../2009scape.github.io' -NEWS_DIR = 'services/m=news/archives' -LOG_DELIMITER = ';;;;;' -DEBUG = False - - -class Tag: - def __init__(self, tag_name, last_tag): - self.tag_name = tag_name - self.last_tag = last_tag - - -def make_tag() -> Tag: - tag_name = datetime.datetime.now().strftime('%b-%d-%Y') - print('new release tag:', tag_name) - last_tag = subprocess.check_output(['git', 'describe', '--tags', '--abbrev=0']).decode('utf8').strip() - print('last release tag:', last_tag) - if not DEBUG: - subprocess.run(['git', 'tag', tag_name]) - return Tag(tag_name, last_tag) - - -def get_changelog_html(tag: Tag) -> str: - if DEBUG: - log_period = f'{tag.last_tag}..HEAD' - else: - log_period = f'{tag.last_tag}..{tag.tag_name}' - changelog = subprocess.check_output(['git', 'log', log_period, f'--format=%B{LOG_DELIMITER}']).decode('utf8').split(LOG_DELIMITER) - changelog_html = ''.join(['
  • ' + change.strip().replace('\n', '
    \n') + '
  • \n' for change in changelog if change.strip()]) - changelog_html = f'
      \n{changelog_html}
    ' - print('generated changelog:', changelog_html, sep='\n') - return changelog_html - - -def make_news_post(tag: Tag) -> None: - changelog_html = get_changelog_html(tag) - os.chdir(os.path.join(WEB_REPO, NEWS_DIR)) - current_date = datetime.datetime.now().strftime('%Y-%m-%d') - news_filename = current_date + '.html' - print('news filename:', news_filename) - news_post = news_template(current_date, changelog_html) - if DEBUG: - print('generated news post:', news_post) - else: - if news_filename in os.listdir(): - raise FileExistsError(news_filename) - with open(news_filename, 'wt') as news_handle: - news_handle.write(news_post) - - -def news_template(current_date: str, changelog: str) -> str: - return '''--- -title: More Changes in Gielinor -tags: news -layout: newspost -collection: Game Updates -date: '''+ current_date + ''' 00:00:00 +0000 -authors: ryannathans -excerpt: "There have been some more changes in Gielinor..." ---- -
    -
    -
    -
    -
    -

    - {{ page.date | date: '%d-%B-%Y' }} -

    -
    -
    -
    -
    -
    -
    -
    -
    -
    {{ page.title }} -
    -
    -
    -
    - - - - - - - - -
    - -
    -
    -
    - - - - - - - - -
    -
    - {{ page.authors }} -
    - -
    ???
    -
    - -
    -
    -
    -
    - {{ page.date | date: '%d-%B-%Y' }} -
    -
    -
    -

    Greetings Explorers

    -

    There have been some more changes in Gielinor:

    ''' + changelog + ''' -
    -
    -
    -
    - - - - - - - - -
    - -
    -
    -
    -
    -
    -
    ''' - - -def main() -> None: - tag = make_tag() - make_news_post(tag) - - -if __name__ == '__main__': - main() diff --git a/run.sh b/run.sh new file mode 100644 index 000000000..6d3861c11 --- /dev/null +++ b/run.sh @@ -0,0 +1,46 @@ +#!/bin/bash +echo "Make sure you have built the server before running this command." +if [ $# -eq 0 ]; then + echo "Usage: $0 [--build] type" + echo "Example: $0 ms" + echo "Example: $0 server Server/worldprops/default.json" + echo "Example: $0 client" + echo "Example: $0 --build server Server/worldprops/default.json" + exit +fi +readIndex=1 +propsFile="$1" +doBuild=false +function run_server { + Server/bin/Server "$1" +} +run_ms(){ + exec "Management-Server/bin/Management-Server" +} +run_client(){ + exec "Client/bin/Client" +} +if [ "$1" = "--build" ]; then + readIndex="$((readIndex + 1))" + doBuild=true + if [ $# -lt 2 ]; then + echo "You must supply a type." + echo "If you just want to build without running, use build.sh" + exit + fi +fi + +type="${!readIndex}" +if [ $doBuild = true ]; then + ./build.sh "$type" +fi +if [ "$type" = "server" ]; then + readIndex="$((readIndex + 1))" + propsFile="${!readIndex}" + echo $propsFile + run_server "$propsFile" +elif [ "$type" = "ms" ]; then + run_ms +elif [ "$type" = "client" ]; then + run_client +fi diff --git a/telecoordinates b/telecoordinates new file mode 100644 index 000000000..1c21db96c --- /dev/null +++ b/telecoordinates @@ -0,0 +1,1326 @@ +Big water fall ::tele 2534,3511 +Very back of wild ::tele 3100,3957 +Varrock east bank ::tele 3250,3423 +Varrock ::tele 3210,3424 +Falador ::tele 2964,3378 +Lumbridge ::tele 3222,3218 +Camelot ::tele 2757,3477 +East Ardougne ::tele 2662,3305 +West Ardougne ::tele 2529,3307 +King Lathas Training Grounds ::tele 2516,3369 +Tree Gnome Stronghold ::tele 2461,3443 +Al Kharid ::tele 3293,3174 +Shantays Pass ::tele 3304,3116 +Kalphite Lair ::tele 3226,3107 +Pyramid ::tele 3233,2902 +Pollnivneach ::tele 3359,2910 +Menaphos/Sophanem ::tele 3274,2784 +Yanille ::tele 2606,3093 +Gul'Tanoth ::tele 2516,3044 +Tutorial Island ::tele 3094,3107 +Barbarian Village ::tele 3082,3420 +Entrana ::tele 2834,3335 +Heroes Guild ::tele 2902,3510 +Rangers Guild ::tele 2658,3439 +Coal Trucks ::tele 2582,3481 +Goblin Village ::tele 2956,3506 +Druids Circle ::tele 2926,3482 +Burthorpe ::tele 2926,3559 +White wolf mountain ::tele 2848,3498 +Catherby ::tele 2813,3447 +Seers village ::tele 2708,3492 +Fishing guild ::tele 2603,3414 +Barbarian Agility Course ::tele 2541,3546 +Prifddinas ::tele 2242,3278 +Elf camp (Tirannwn) ::tele 2197,3252 +Isafdar (Tirannwn) ::tele 2241,3238 +Duel arena ::tele 3360,3213 +Desert mining camp ::tele 3286,3023 +Bedabin camp ::tele 3171,3026 +Bandit camp ::tele 3176,2987 +Sophanem ::tele 3305,2755 +Ruins of Uzer ::tele 3490,3090 +Mort'ton ::tele 3489,3288 +Canifis ::tele 3506,3496 +Port Phasmatys ::tele 3687,3502 +Fenkenstrain's castle ::tele 3550,3548 +Dig site ::tele 3354,3402 +Exam centre ::tele 3354,3344 +Edgeville ::tele 3093,3493 +Crafting guild ::tele 2933,3285 +Port Sarim ::tele 3023,3208 +Rimmington ::tele 2957,3214 +Draynor village ::tele 3093,3244 +Fight arena ::tele 2585,3150 +Tree gnome village ::tele 2525,3167 +Port Khazard ::tele 2665,3161 +Monastery ::tele 3051,3490 +Karamja ::tele 2948,3147 +Crandor ::tele 2851,3238 +King Black Dragon Lair ::tele 2717,9816 +KQ Lair ::tele 3487,9493 +Underground pass level 2 ::tele 2337,9798 +Weird water place ::tele 2676,3008 +Members Karajama ::tele 2815,3182 +Grave island ::tele 3504,3575 +HAM camp ::tele 3165,9629 +Pyramid under Sophanem ::tele 3277,9171 +Juna the snake (Press Burst of Strength a few times to get to it) ::tele 3251,9517 +Smoky tunnels/dark room (This place needs more tests) 3206,9379 +Underground pass level 1 ::tele 2495,9715 +Mage Arena ::tele 3107,3937 +Ape Atoll ::tele 2755,2784 +Jungle demon area bottom level ::tele 2714,9183 +Jungle demon area top level (use Burst of Strength) ::tele 2703,9178 +Wilderness Agility Course ::tele 3003,3934 +Keldagram ::tele 2937,9999 (and run north for a little while) +(Alternate) Keldagram, if you tele to 2937,3763 then Press Clarity of Thought then you will be able to walk around in Keldagrim! +Agility arena on Karamja ::tele 2761,9557 +Metal dragon dungeon (back) ::tele 2713,9459 +Metal dragon dungeon (front) ::tele 2713,9564 +Inside the desert treasure pyramid ::tele 3233,9315 +Tree gnome hanger ::tele 2390,9886 +Fishing platform ::tele 2782,3273 +Boat crash island place ::tele 2795,3321 +Legends quest jungle dungeon ::tele 2772,9341 +TzHaar ::tele 2480,5175 +Essence mine ::tele 2911,4832 +Morings end part 1 mine ::tele 2044,4649 +Dwarf cut scene meeting area ::tele 2035,4529 +New KBD lair ::tele 2273,4695 +Elven forest cut scene area ::tele 2309,4597 +Gold mine rock ::tele 2358,4959 +White knight tasks area ::tele 2443,4956 +Rouge maze (Press Burst of Strength) ::tele 3050,5071 +The shadow guys dungeon ::tele 2738,5081 +Barrows top ::tele 3564,3288 +Barrows tunnel ::tele 3568,9695 (Press Burst of Strength a few times to get to the barrows bros coffins) +Barrows chest ::tele 3551,9694 +CW bank= 2441,3090 +CW center= 2400,3103 +Blue dragons= 2910,9801 +Black demons= 2860 9775 +Hell Hounds= 2867,9844 +Black dragons= 2829,9826 +Chaos rune crafting alter ::tele 2269,4843 +Legends dungeon prt2 ::tele 2375,4705 +Mage arena dungeon ::tele 2519,4719 +Evil Bobs island "scaperune" ::tele 2525,4776 +Distant kingdom (alive) 2576,4655 +Distant kingdom (dead) 2803,4723 +Forester random event ::tele 2602,4775 +Alt area ::tele 2527,4547 +Fremmy maze ::tele 2652,9999 +Death rune altar ::tele 2207,4836 +Cosmic alter ::tele 2162,4833 +Middle of under ground pass (Press Burst of Strength) ::tele 2168 4726 +Quiz random event ::tele 1952,4768 +Trawler boat ::tele 2013,4820 +Sunk trawler mini game boat ::tele 1951,4825 +Trawler boat empty of water ::tele 1886,4830 +Mime stage ::tele 2008,4762 +"Draynor" ::tele 2130,4913 +Game room ::tele 2196,4961 +Mind alter ::tele 2796,4818 +Air Alter ::tele 2845,4832 +Water Alter ::tele 2713,4836 +Earth Alter ::tele 2660,4839 +Fire Alter ::tele 2584,4836 +Body Alter ::tele 2527,4833 +Law Alter ::tele 2464,4834 +Nature Alter ::tele 2398,4841 +Gas hole ::tele 2464,4782 +Edge of maze ::tele 2885,4550 +Center of maze ::tele 2912,4576 +Falador mine ::tele 3038,9800 +2867 9955 - Ice Queen Lair +3429 3538 - Slayer Tower +2710 9466 - Brimhaven Dungeon +2856 3812 - Ice Path +2480 3437 - Gnome Agility Training +3281 2765 - Pyramid Plunder room +3345 3251 - Duel Arena +2717 9808 - King Black Dragon Cave +3044 4973 - Rouges Den +2979 3611 - Green Dragons +Big water fall ::tele 2534,3511 +Very back of wild ::tele 3100,3957 +Varrock east bank ::tele 3250,3423 +Varrock ::tele 3210,3424 +Falador ::tele 2964,3378 +Lumbridge ::tele 3222,3218 +Camelot ::tele 2757,3477 +East Ardougne ::tele 2662,3305 +West Ardougne ::tele 2529,3307 +King Lathas Training Grounds ::tele 2516,3369 +Tree Gnome Stronghold ::tele 2461,3443 +Al Kharid ::tele 3293,3174 +Shantays Pass ::tele 3304,3116 +Kalphite Lair ::tele 3226,3107 +Pyramid ::tele 3233,2902 +Pollnivneach ::tele 3359,2910 +Menaphos/Sophanem ::tele 3274,2784 +Yanille ::tele 2606,3093 +Gul'Tanoth ::tele 2516,3044 +Tutorial Island ::tele 3094,3107 +Barbarian Village ::tele 3082,3420 +Entrana ::tele 2834,3335 +Heroes Guild ::tele 2902,3510 +Rangers Guild ::tele 2658,3439 +Coal Trucks ::tele 2582,3481 +Goblin Village ::tele 2956,3506 +Druids Circle ::tele 2926,3482 +Burthorpe ::tele 2926,3559 +White wolf mountain ::tele 2848,3498 +Catherby ::tele 2813,3447 +Seers village ::tele 2708,3492 +Fishing guild ::tele 2603,3414 +Barbarian Agility Course ::tele 2541,3546 +Prifddinas ::tele 2242,3278 +Elf camp (Tirannwn) ::tele 2197,3252 +Isafdar (Tirannwn) ::tele 2241,3238 +Duel arena ::tele 3360,3213 +Desert mining camp ::tele 3286,3023 +Bedabin camp ::tele 3171,3026 +Bandit camp ::tele 3176,2987 +Sophanem ::tele 3305,2755 +Ruins of Uzer ::tele 3490,3090 +Mort'ton ::tele 3489,3288 +Canifis ::tele 3506,3496 +Port Phasmatys ::tele 3687,3502 +Fenkenstrain's castle ::tele 3550,3548 +Dig site ::tele 3354,3402 +Exam centre ::tele 3354,3344 +Edgeville ::tele 3093,3493 +Crafting guild ::tele 2933,3285 +Port Sarim ::tele 3023,3208 +Rimmington ::tele 2957,3214 +Draynor village ::tele 3093,3244 +Fight arena ::tele 2585,3150 +Tree gnome village ::tele 2525,3167 +Port Khazard ::tele 2665,3161 +Monastery ::tele 3051,3490 +Karamja ::tele 2948,3147 +Crandor ::tele 2851,3238 +King Black Dragon Lair ::tele 2717,9816 +KQ Lair ::tele 3487,9493 +Underground pass level 2 ::tele 2337,9798 +Weird water place ::tele 2676,3008 +Members Karajama ::tele 2815,3182 +Grave island ::tele 3504,3575 +HAM camp ::tele 3165,9629 +Pyramid under Sophanem ::tele 3277,9171 +Juna the snake ::tele 3251,9517 +Smoky tunnels/dark room (This place needs more tests) 3206,9379 +Underground pass level 1 ::tele 2495,9715 +Mage Arena ::tele 3107,3937 +Ape Atoll ::tele 2755,2784 +Jungle demon area bottom level ::tele 2714,9183 +Jungle demon area top level (use Burst of Strength) ::tele 2703,9178 +Wilderness Agility Course ::tele 3003,3934 +Keldagram ::tele 2937,9999 +Agility arena on Karamja ::tele 2761,9557 +Metal dragon dungeon (back) ::tele 2713,9459 +Metal dragon dungeon (front) ::tele 2713,9564 +Inside the desert treasure pyramid ::tele 3233,9315 +Tree gnome hanger ::tele 2390,9886 +Fishing platform ::tele 2782,3273 +Boat crash island place ::tele 2795,3321 +Legends quest jungle dungeon ::tele 2772,9341 +TzHaar ::tele 2480,5175 +Essence mine ::tele 2911,4832 +Morings end part 1 mine ::tele 2044,4649 +Dwarf cut scene meeting area ::tele 2035,4529 +New KBD lair ::tele 2273,4695 +Elven forest cut scene area ::tele 2309,4597 +Gold mine rock ::tele 2358,4959 +White knight tasks area ::tele 2443,4956 +Rouge maze (Press Burst of Strength) ::tele 3050,5071 +The shadow guys dungeon ::tele 2738,5081 +Barrows top ::tele 3564,3288 +Barrows tunnel ::tele 3568,9695 +Barrows chest ::tele 3551,9694 +CW bank= 2441,3090 +CW center= 2400,3103 +Blue dragons= 2910,9801 +Black demons= 2860 9775 +Hell Hounds= 2867,9844 +Black dragons= 2829,9826 +Chaos rune crafting alter ::tele 2269,4843 +Legends dungeon prt2 ::tele 2375,4705 +Mage arena dungeon ::tele 2519,4719 +Evil Bobs island "scaperune" ::tele 2525,4776 +Distant kingdom (alive) 2576,4655 +Distant kingdom (dead) 2803,4723 +Forester random event ::tele 2602,4775 +Alt area ::tele 2527,4547 +Fremmy maze ::tele 2652,9999 +Death rune altar ::tele 2207,4836 +Cosmic alter ::tele 2162,4833 +Middle of under ground pass ::tele 2168 4726 +Quiz random event ::tele 1952,4768 +Trawler boat ::tele 2013,4820 +Sunk trawler mini game boat ::tele 1951,4825 +Trawler boat empty of water ::tele 1886,4830 +Mime stage ::tele 2008,4762 +"Draynor" ::tele 2130,4913 +Game room ::tele 2196,4961 +Mind alter ::tele 2796,4818 +Air Alter ::tele 2845,4832 +Water Alter ::tele 2713,4836 +Earth Alter ::tele 2660,4839 +Fire Alter ::tele 2584,4836 +Body Alter ::tele 2527,4833 +Law Alter ::tele 2464,4834 +Nature Alter ::tele 2398,4841 +Gas hole ::tele 2464,4782 +Edge of maze ::tele 2885,4550 +Center of maze ::tele 2912,4576 +Falador mine ::tele 3038,9800 +::tele 3157 4822 = drill deamon camp + +::tele 2477 4768 = frog cave + +::tele 2596 4780 = freaky forester + +::tele 2095 4428 = prison pete + +::tele 1952 4764 = quiz show + +::tele 2338 4747 = Lost and found + +::tele 1960 4824 = Twarler Mini-Game + +::tele 2015 4826 = twarler mini-game inside + +::tele 1971 5001 = WIERD CHRUCH! NOT ON RUNESCAPE! + +::tele 1928 5002 = Grave digger + +::tele 2584 4838 = fire alter + +::tele 2966 9633 = somekind of rat-hole never seen this + +::tele 2929 9649 = dragon slayer mace + +::tele 2907 9705 = quest place (dont remember (or newer seen) what quest) + +::tele 2981 9914 = recipes goblin cook place + +::tele 2916 9912 = heroes guild cave + +::tele 2932 9848 = chaos druids + +::tele 2898 9766 = baby bluedragons + +::tele 3048 9582 = ice-warriors & giants + +::tele 2977 9515 = recipes crabs + +::tele 2973 9505 = recipe water "mini-quest" + +::tele 2783 9574 = agility arena + +::tele 2835 9562 = karamja lessers + +::tele 1891 4947 = quest place (dont remember (or newer seen) what quest) + +::tele 2007 4431 = x-mas workshop event wooot! + +::tele 2400 4850 = nature altar! + +::tele 3421 9622 = quest place (dont remember (or newer seen) what quest) + +::tele 1865 5330 = recipe the lum kitchen when started recipe near the secret sky must check if it is possible to see in rs. + +::tele 1860 5345 = same as above but no barrier & no chairs expet one why? + +::tele 2393 4713 = i don't know prob: quest place (dont remember (or newer seen) what quest) + +::tele 2385 4685 = have a relation to the place above what is that? + +::tele 2525 4776 = evil bob's island + +::tele 2633 4700 = quest place (dont remember (or newer seen) what quest) + +::tele 2650 4565 = monkey sadness fight the jungle demon? + +::tele 2650 4508 = monkey sadness the gnome glider puzzle! + +::tele 3300 9825 = A Soul's Bane quest + +::tele 3345 9715 = mage training arena (telegrab) ftw + +::tele 3350 9680 = mage training arena (telegrab) ftw another one + +::tele 3345 9712 = mage training arena (telegrab) ftw another one NOTE: if you see the same arenas try changin height level! + +::tele 2152 5095 = Secret island + +::tele 2721 4828 = water alter + +::tele 2784 4840 = mind alter + +::tele 2842 4835 = air alter + +::tele 2898 4819 = rune essent mining + +::tele 3029 4834 = abyss + +::tele 2528 4833 = wierd alter + +::tele 2471 4838 = law alter + +::tele 1823 4835 = two ships + +::tele 3105 3930 = mage arena + +::tele 1894 5333 = secret sky + +::tele 1865 5341 = recipie for desaster feast + +::tele 3424 9891 = under passage way to canfis + +::tele 3681 9889 = ecto plasm floor + +::tele 2470 9899 = under gnomes grand tree + +::tele 2319 9804 = i'bans trap drop + +::tele 2856 3809 = slippery ice path + +::tele 3551 9693 = barrows chest + +::tele 3177 9753 = under draynore mannor + +::tele 3040 9741 = faladore mining guild + +::tele 3079 9505 = toturial mining + +::tele 3110 9512 = toturial combat train + +::tele 3232 2896 = top of piramid for desert tresure + +::tele 3291 2764 = desert city + +::tele 3298 9179 = under desert city + +::tele 2861 3165 = volcano + +::tele 2863 9570 = under volcano + +::tele 2835 3268 = candor + +::tele 2766 3277 = fishing docks + +::tele 2446 10147 = daganoth cave ( go to "::tele 2446 9999" then keep walking the right direction then ul get there ) + +::tele 2438 5172 = volcano lava + +::tele 2395 5154 = fight pits + +::tele 3234 9896 = wierd place + +::tele 3132 9909 = under edgevill + +::tele 3233 9313 = under piramid at acent alter + +::tele 3363 9639 = mage train up ( shapes ) + +::tele 3363 9637 = mage train up ( bones ) + +::tele 3365 9637 = mage train up ( alching ) + +::tele 3363 2984 = a desert city + +::tele 2396 5093 = fight caves + +::tele 3559 9895 = football traning corse + +::tele 3541 9891 = jumping corse + +::tele 3528 9871 = zip line + +::tele 3539 9872 = jumping steps + +::tele 3555 9947 = cave + +::tele 2972 9507 = Under water + +::tele 2545 4715 = mage arena room + +::tele 2505 4707 = mage arena statues + +::tele 3551 9712 = barrows coffins + +::tele 2716 9816 = black king dragon + +::tele 3487 9493 = kaphite queen place + +::tele 2744 3444 = camalot flax + +::tele 2273 4695 = king black drags + +::tele 2516 4646 = daganoth quest place mother + +::tele 2121 4918 = Draynor private from map + +::tele 2142 4834 = cosmic alter + +::tele 2134 4717 = slave cages ( look up to see them,,cannot be walked on ) + +::tele 2091 3210 = wierd grass land?? + + +/*Guilds*/ +rangeguild = 2657 3439 +rangingguild = 2657 3439 + +fishguild = 2611 3393 +fishingguild = 2611 3393 + +mineguild = 3016 3339 +miningguild = 3016 3339 + +craftguild = 2933 3289 +craftingguild = 2933 3289 + +heroguild = 2902 3510 +herosguild = 2902 3510 +heroesguild = 2902 3510 + +/*End Guilds*/ + +crystalchest = 2914 3450 + +/*Altars*/ +deathaltar = 2207 4836 +cosmicaltar = 2162 4833 +chaosaltar = 2269 4843 +mindaltar = 2796 4818 +airaltar = 2845 4832 +wateraltar = 2713 4836 +earthaltar = 2660 4839 +firealtar = 2584 4836 +bodyaltar = 2527 4833 +lawaltar = 2464 4834 +naturealtar = 2398 4841 + +/*End Altars*/ + +falador = 2965 3380 +goblinvillage = 2956 3506 +druidscircle = 2926 3482 +burthrope = 2926 3561 + +whitewolf = 2848 3498 +catherby = 2815 3447 +camelotcastle = 2758 3495 +seersvillage = 2708 3492 + + +barbagil = 2541 3546 +grandtree1 = 2480 3488 +grandtree2 = 2466 3490 +treegnome = 2441 3429 +westardy = 2535 3305 +eastardy = 2659 3308 +prifddinas = 2242 3278 +elfcamp = 2197 3252 +isafdar = 2241 3238 +duelarena = 3360 3213 +alkharid = 3288 3189 +desertmine = 3286 3023 +bedabincamp = 3171 3026 +banditcamp = 3176 2987 +pollnivneach = 3365 2970 +pyramid = 3233 2901 +sophanem = 3305 2755 +uzer = 3490 3090 +mortton = 3489 3288 +canifis = 3506 3496 +phasmatys = 3687 3502 +fenkencastle = 3550 3548 +digsite = 3354 3402 +examcentre = 3354 3344 +varrock = 3214 3424 +barbvillage = 3081 3424 +edgeville = 3093 3493 + +sarim = 3023 3208 +rimmington = 2957 3214 +draynor = 3093 3244 +lumbridge = 3223 3218 +fightarena = 2585 3150 +gnomevillage1 = 2521 3177 +gnomevillage2 = 2525 3167 +khazard = 2665 3161 +yanille = 2569 3098 +monestary = 3051 3490 +karamja = 2814 3182 +crandor = 2851 3238 +tutisland = 3123 3100 +tzhaar = 2480 5175 +mineess = 2911 4832 +bobsiland = 2526 4777 + +membersdungeon = 2884 9798 +dramentree = 2861 9736 +karamjadungeon = 2843 9636 +steeldragons = 2719 9433 +bluedragons = 2591 9439 +theogre = 2584 9737 +shadowwarrior = 2705 9758 +subwhitewolf = 2822 9882 +gloryfountain = 2918 9895 +spampdungeon = 3168 9572 +barrowscenter = 3551 9693 +canifis = 3477 9845 +werewol***il = 3549 9865 +eledungeon = 2715 9889 +blurite = 3007 9550 +miniagil = 2759 9557 +runerocks = 3061 3886 +kalphites = 3485 9509 +smokedungeon = 3207 9377 +pyramid4 = 3233 9313 +crashisland = 2893 2724 +apeatoll = 2801 2704 +marimpray = 2807 9201 +marimcreate = 2764 9164 +apeatolldungeon = 2805 9142 +kharazi = 2822 2911 +jungledemon = 2657 4568 +hangar = 2584 4516 +gnomedungeon = 2596 4435 +purplecrystal = 2792 4427 +submage = 2538 4717 +godpray = 2507 4718 +lighttower = 2519 4642 +bigdwarfs = 2776 10162 +bigdwarfs2 = 2838 10126 +bigdwarfs3 = 2923 10191 +waterfall = 2534 3511 +endwild = 3100 3957 +eastbank = 3250 3423 +varrock = 3210 3424 +falador2 = 2964 3378 +lumbridge = 3222 3218 +camelot = 2757 3477 +eardy2 = 2662 3305 +wardy2 = 2529 3307 +lathas = 2516 3369 +gnomestrong = 2461 3443 +kharid = 3293 3174 +shantay = 3304 3116 +kalphlair = 3226 3107 +pyramid2 = 3233 2902 +pollnivneach = 3359 2910 +menaphos = 3274 2784 +yanille = 2606 3093 +gultanoth = 2516 3044 +tutisland2 = 3094 3107 +barbarins = 3082 3420 +entrana = 2834 3335 + +coaltrucks = 2582 3481 +gvillage = 2956 3506 +stonehenge2 = 2926 3482 +burth = 2926 3559 +wwolf = 2848 3498 +catherb = 2813 3447 +seers = 2708 3492 +barbyagil = 2541 3546 +prifdinas = 2242 3278 +elfcamp2 = 2197 3252 +isafdar2 = 2241 3238 +darena = 3360 3213 +dminecamp = 3286 3023 +bedcamp = 3171 3026 +bandcamp = 3176 2987 +soph = 3305 2755 +uzerruins = 3490 3090 +morton = 3489 3288 +canif = 3506 3496 +portp = 3687 3502 +fenken = 3550 3548 +dsite = 3354 3402 +ecentre = 3354 3344 +edgeville = 3093 3493 + +psarim = 3023 3208 +rimm = 2957 3214 +farena = 2585 3150 +tgvill = 2525 3167 +pkhazard = 2665 3161 +monkies = 3051 3490 +karamj = 2948 3147 +crandor2 = 2851 3238 +thekbd = 2717 9816 +thebigkq = 3487 9493 +thepass2 = 2337 9798 +wiredwater = 2676 3008 +karamja4memb = 2815 3182 +meetjuna = 3251 9517 +darkroom = 3206 9379 +thepass1 = 2495 9715 +magicarena = 3107 3937 +aatoll = 2755 2784 +jungledemonb = 2714 9183 +jungledemont = 2703 9178 +wagility = 3003 3934 +keldagrim = 2937 9999 +karamjaagil = 2761 9557 +metaldragback = 2713 9459 +metaldragfront = 2713 9564 +desertpyramid = 3233 9315 +thehangar = 2390 9886 +fishplatform = 2782 3273 +boatcrash = 2795 3321 +legendsjungle = 2772 9341 +tzhaar2 = 2480 5175 +mineess2 = 2911 4832 +morningsend = 2044 4649 +dwarfs = 2035 4529 +kbdlair = 2273 4695 +elvenforest = 2309 4597 +goldmine = 2358 4959 +initiate = 2443 4956 +shadowguys = 2738 5081 +barrowstop = 3564 3288 +barrowstunnel = 3568 9695 +barrowschest = 3551 9694 +cwbank = 2441 3090 +castlewars = 2400 3103 +bluedrags = 2910 9801 +blackdemons = 2860 9775 +hellhounds = 2867 9844 +blackdrags = 2829 9826 + +legends2 = 2377 4705 +magearena = 2519 4719 +scaperune = 2525 4776 +forester = 2602 4775 +theisland = 2527 4547 +fremmymaze = 2652 9999 + +quizgame = 1952 4768 +trawler = 2013 4820 +sunktrawler = 1951 4825 +emptytrawler = 1886 4830 +mimestage = 2008 4762 +draynor = 2130 4913 +gameroom = 2196 4961 +gashole = 2464 4782 +shilo = 2827 2995 +karamja1 = 2973 2890 +karamja2 = 2973 2910 +greater = 3288 3886 +wildpalace = 3288 3886 +slayertower = 3428 3535 +misc = 2512 3860 +shilo = 2852 2955 + +party = 2739 3472 +rellaka = 2659 3661 +trollheim = 2910 3612 +tears of guthix = 3257 9517 + +Pest Control Game: X 2667 Y 2594 +Pest Control Bank: X 2658 Y 2649 + +2867 9955 - Ice Queen Lair +3429 3538 - Slayer Tower +2710 9466 - Brimhaven Dungeon +2856 3812 - Ice Path +2480 3437 - Gnome Agility Training +3281 2765 - Pyramid Plunder room +3345 3251 - Duel Arena +2717 9808 - King Black Dragon Cave +3044 4973 - Rouges Den +2979 3611 - Green Dragons +Big water fall ::tele 2534,3511 +Very back of wild ::tele 3100,3957 +Varrock east bank ::tele 3250,3423 +Varrock ::tele 3210,3424 +Falador ::tele 2964,3378 +Lumbridge ::tele 3222,3218 +Camelot ::tele 2757,3477 +East Ardougne ::tele 2662,3305 +West Ardougne ::tele 2529,3307 +King Lathas Training Grounds ::tele 2516,3369 +Tree Gnome Stronghold ::tele 2461,3443 +Al Kharid ::tele 3293,3174 +Shantays Pass ::tele 3304,3116 +Kalphite Lair ::tele 3226,3107 +Pyramid ::tele 3233,2902 +Pollnivneach ::tele 3359,2910 +Menaphos/Sophanem ::tele 3274,2784 +Yanille ::tele 2606,3093 +Gul'Tanoth ::tele 2516,3044 +Tutorial Island ::tele 3094,3107 +Barbarian Village ::tele 3082,3420 +Entrana ::tele 2834,3335 +Heroes Guild ::tele 2902,3510 +Rangers Guild ::tele 2658,3439 +Coal Trucks ::tele 2582,3481 +Goblin Village ::tele 2956,3506 +Druids Circle ::tele 2926,3482 +Burthorpe ::tele 2926,3559 +White wolf mountain ::tele 2848,3498 +Catherby ::tele 2813,3447 +Seers village ::tele 2708,3492 +Fishing guild ::tele 2603,3414 +Barbarian Agility Course ::tele 2541,3546 +Prifddinas ::tele 2242,3278 +Elf camp (Tirannwn) ::tele 2197,3252 +Isafdar (Tirannwn) ::tele 2241,3238 +Duel arena ::tele 3360,3213 +Desert mining camp ::tele 3286,3023 +Bedabin camp ::tele 3171,3026 +Bandit camp ::tele 3176,2987 +Sophanem ::tele 3305,2755 +Ruins of Uzer ::tele 3490,3090 +Mort'ton ::tele 3489,3288 +Canifis ::tele 3506,3496 +Port Phasmatys ::tele 3687,3502 +Fenkenstrain's castle ::tele 3550,3548 +Dig site ::tele 3354,3402 +Exam centre ::tele 3354,3344 +Edgeville ::tele 3093,3493 +Crafting guild ::tele 2933,3285 +Port Sarim ::tele 3023,3208 +Rimmington ::tele 2957,3214 +Draynor village ::tele 3093,3244 +Fight arena ::tele 2585,3150 +Tree gnome village ::tele 2525,3167 +Port Khazard ::tele 2665,3161 +Monastery ::tele 3051,3490 +Karamja ::tele 2948,3147 +Crandor ::tele 2851,3238 +King Black Dragon Lair ::tele 2717,9816 +KQ Lair ::tele 3487,9493 +Underground pass level 2 ::tele 2337,9798 +Weird water place ::tele 2676,3008 +Members Karajama ::tele 2815,3182 +Grave island ::tele 3504,3575 +HAM camp ::tele 3165,9629 +Pyramid under Sophanem ::tele 3277,9171 +Juna the snake ::tele 3251,9517 +Smoky tunnels/dark room (This place needs more tests) 3206,9379 +Underground pass level 1 ::tele 2495,9715 +Mage Arena ::tele 3107,3937 +Ape Atoll ::tele 2755,2784 +Jungle demon area bottom level ::tele 2714,9183 +Jungle demon area top level (use Burst of Strength) ::tele 2703,9178 +Wilderness Agility Course ::tele 3003,3934 +Keldagram ::tele 2937,9999 +Agility arena on Karamja ::tele 2761,9557 +Metal dragon dungeon (back) ::tele 2713,9459 +Metal dragon dungeon (front) ::tele 2713,9564 +Inside the desert treasure pyramid ::tele 3233,9315 +Tree gnome hanger ::tele 2390,9886 +Fishing platform ::tele 2782,3273 +Boat crash island place ::tele 2795,3321 +Legends quest jungle dungeon ::tele 2772,9341 +TzHaar ::tele 2480,5175 +Essence mine ::tele 2911,4832 +Morings end part 1 mine ::tele 2044,4649 +Dwarf cut scene meeting area ::tele 2035,4529 +New KBD lair ::tele 2273,4695 +Elven forest cut scene area ::tele 2309,4597 +Gold mine rock ::tele 2358,4959 +White knight tasks area ::tele 2443,4956 +Rouge maze (Press Burst of Strength) ::tele 3050,5071 +The shadow guys dungeon ::tele 2738,5081 +Barrows top ::tele 3564,3288 +Barrows tunnel ::tele 3568,9695 +Barrows chest ::tele 3551,9694 +CW bank= 2441,3090 +CW center= 2400,3103 +Blue dragons= 2910,9801 +Black demons= 2860 9775 +Hell Hounds= 2867,9844 +Black dragons= 2829,9826 +Chaos rune crafting alter ::tele 2269,4843 +Legends dungeon prt2 ::tele 2375,4705 +Mage arena dungeon ::tele 2519,4719 +Evil Bobs island "scaperune" ::tele 2525,4776 +Distant kingdom (alive) 2576,4655 +Distant kingdom (dead) 2803,4723 +Forester random event ::tele 2602,4775 +Alt area ::tele 2527,4547 +Fremmy maze ::tele 2652,9999 +Death rune altar ::tele 2207,4836 +Cosmic alter ::tele 2162,4833 +Middle of under ground pass ::tele 2168 4726 +Quiz random event ::tele 1952,4768 +Trawler boat ::tele 2013,4820 +Sunk trawler mini game boat ::tele 1951,4825 +Trawler boat empty of water ::tele 1886,4830 +Mime stage ::tele 2008,4762 +"Draynor" ::tele 2130,4913 +Game room ::tele 2196,4961 +Mind alter ::tele 2796,4818 +Air Alter ::tele 2845,4832 +Water Alter ::tele 2713,4836 +Earth Alter ::tele 2660,4839 +Fire Alter ::tele 2584,4836 +Body Alter ::tele 2527,4833 +Law Alter ::tele 2464,4834 +Nature Alter ::tele 2398,4841 +Gas hole ::tele 2464,4782 +Edge of maze ::tele 2885,4550 +Center of maze ::tele 2912,4576 +Falador mine ::tele 3038,9800 +::tele 3157 4822 = drill deamon camp + +::tele 2477 4768 = frog cave + +::tele 2596 4780 = freaky forester + +::tele 2095 4428 = prison pete + +::tele 1952 4764 = quiz show + +::tele 2338 4747 = Lost and found + +::tele 1960 4824 = Twarler Mini-Game + +::tele 2015 4826 = twarler mini-game inside + +::tele 1971 5001 = WIERD CHRUCH! NOT ON RUNESCAPE! + +::tele 1928 5002 = Grave digger + +::tele 2584 4838 = fire alter + +::tele 2966 9633 = somekind of rat-hole never seen this + +::tele 2929 9649 = dragon slayer mace + +::tele 2907 9705 = quest place (dont remember (or newer seen) what quest) + +::tele 2981 9914 = recipes goblin cook place + +::tele 2916 9912 = heroes guild cave + +::tele 2932 9848 = chaos druids + +::tele 2898 9766 = baby bluedragons + +::tele 3048 9582 = ice-warriors & giants + +::tele 2977 9515 = recipes crabs + +::tele 2973 9505 = recipe water "mini-quest" + +::tele 2783 9574 = agility arena + +::tele 2835 9562 = karamja lessers + +::tele 1891 4947 = quest place (dont remember (or newer seen) what quest) + +::tele 2007 4431 = x-mas workshop event wooot! + +::tele 2400 4850 = nature altar! + +::tele 3421 9622 = quest place (dont remember (or newer seen) what quest) + +::tele 1865 5330 = recipe the lum kitchen when started recipe near the secret sky must check if it is possible to see in rs. + +::tele 1860 5345 = same as above but no barrier & no chairs expet one why? + +::tele 2393 4713 = i don't know prob: quest place (dont remember (or newer seen) what quest) + +::tele 2385 4685 = have a relation to the place above what is that? + +::tele 2525 4776 = evil bob's island + +::tele 2633 4700 = quest place (dont remember (or newer seen) what quest) + +::tele 2650 4565 = monkey sadness fight the jungle demon? + +::tele 2650 4508 = monkey sadness the gnome glider puzzle! + +::tele 3300 9825 = A Soul's Bane quest + +::tele 3345 9715 = mage training arena (telegrab) ftw + +::tele 3350 9680 = mage training arena (telegrab) ftw another one + +::tele 3345 9712 = mage training arena (telegrab) ftw another one NOTE: if you see the same arenas try changin height level! + +::tele 2152 5095 = Secret island + +::tele 2721 4828 = water alter + +::tele 2784 4840 = mind alter + +::tele 2842 4835 = air alter + +::tele 2898 4819 = rune essent mining + +::tele 3029 4834 = abyss + +::tele 2528 4833 = wierd alter + +::tele 2471 4838 = law alter + +::tele 1823 4835 = two ships + +::tele 3105 3930 = mage arena + +::tele 1894 5333 = secret sky + +::tele 1865 5341 = recipie for desaster feast + +::tele 3424 9891 = under passage way to canfis + +::tele 3681 9889 = ecto plasm floor + +::tele 2470 9899 = under gnomes grand tree + +::tele 2319 9804 = i'bans trap drop + +::tele 2856 3809 = slippery ice path + +::tele 3551 9693 = barrows chest + +::tele 3177 9753 = under draynore mannor + +::tele 3040 9741 = faladore mining guild + +::tele 3079 9505 = toturial mining + +::tele 3110 9512 = toturial combat train + +::tele 3232 2896 = top of piramid for desert tresure + +::tele 3291 2764 = desert city + +::tele 3298 9179 = under desert city + +::tele 2861 3165 = volcano + +::tele 2863 9570 = under volcano + +::tele 2835 3268 = candor + +::tele 2766 3277 = fishing docks + +::tele 2446 10147 = daganoth cave ( go to "::tele 2446 9999" then keep walking the right direction then ul get there ) + +::tele 2438 5172 = volcano lava + +::tele 2395 5154 = fight pits + +::tele 3234 9896 = wierd place + +::tele 3132 9909 = under edgevill + +::tele 3233 9313 = under piramid at acent alter + +::tele 3363 9639 = mage train up ( shapes ) + +::tele 3363 9637 = mage train up ( bones ) + +::tele 3365 9637 = mage train up ( alching ) + +::tele 3363 2984 = a desert city + +::tele 2396 5093 = fight caves + +::tele 3559 9895 = football traning corse + +::tele 3541 9891 = jumping corse + +::tele 3528 9871 = zip line + +::tele 3539 9872 = jumping steps + +::tele 3555 9947 = cave + +::tele 2972 9507 = Under water + +::tele 2545 4715 = mage arena room + +::tele 2505 4707 = mage arena statues + +::tele 3551 9712 = barrows coffins + +::tele 2716 9816 = black king dragon + +::tele 3487 9493 = kaphite queen place + +::tele 2744 3444 = camalot flax + +::tele 2273 4695 = king black drags + +::tele 2516 4646 = daganoth quest place mother + +::tele 2121 4918 = Draynor private from map + +::tele 2142 4834 = cosmic alter + +::tele 2134 4717 = slave cages ( look up to see them,,cannot be walked on ) + +::tele 2091 3210 = wierd grass land?? + + +/*Guilds*/ +rangeguild = 2657 3439 +rangingguild = 2657 3439 + +fishguild = 2611 3393 +fishingguild = 2611 3393 + +mineguild = 3016 3339 +miningguild = 3016 3339 + +craftguild = 2933 3289 +craftingguild = 2933 3289 + +heroguild = 2902 3510 +herosguild = 2902 3510 +heroesguild = 2902 3510 + +/*End Guilds*/ + +crystalchest = 2914 3450 + +/*Altars*/ +deathaltar = 2207 4836 +cosmicaltar = 2162 4833 +chaosaltar = 2269 4843 +mindaltar = 2796 4818 +airaltar = 2845 4832 +wateraltar = 2713 4836 +earthaltar = 2660 4839 +firealtar = 2584 4836 +bodyaltar = 2527 4833 +lawaltar = 2464 4834 +naturealtar = 2398 4841 + +/*End Altars*/ + +falador = 2965 3380 +goblinvillage = 2956 3506 +druidscircle = 2926 3482 +burthrope = 2926 3561 + +whitewolf = 2848 3498 +catherby = 2815 3447 +camelotcastle = 2758 3495 +seersvillage = 2708 3492 + + +barbagil = 2541 3546 +grandtree1 = 2480 3488 +grandtree2 = 2466 3490 +treegnome = 2441 3429 +westardy = 2535 3305 +eastardy = 2659 3308 +prifddinas = 2242 3278 +elfcamp = 2197 3252 +isafdar = 2241 3238 +duelarena = 3360 3213 +alkharid = 3288 3189 +desertmine = 3286 3023 +bedabincamp = 3171 3026 +banditcamp = 3176 2987 +pollnivneach = 3365 2970 +pyramid = 3233 2901 +sophanem = 3305 2755 +uzer = 3490 3090 +mortton = 3489 3288 +canifis = 3506 3496 +phasmatys = 3687 3502 +fenkencastle = 3550 3548 +digsite = 3354 3402 +examcentre = 3354 3344 +varrock = 3214 3424 +barbvillage = 3081 3424 +edgeville = 3093 3493 + +sarim = 3023 3208 +rimmington = 2957 3214 +draynor = 3093 3244 +lumbridge = 3223 3218 +fightarena = 2585 3150 +gnomevillage1 = 2521 3177 +gnomevillage2 = 2525 3167 +khazard = 2665 3161 +yanille = 2569 3098 +monestary = 3051 3490 +karamja = 2814 3182 +crandor = 2851 3238 +tutisland = 3123 3100 +tzhaar = 2480 5175 +mineess = 2911 4832 +bobsiland = 2526 4777 + +membersdungeon = 2884 9798 +dramentree = 2861 9736 +karamjadungeon = 2843 9636 +steeldragons = 2719 9433 +bluedragons = 2591 9439 +theogre = 2584 9737 +shadowwarrior = 2705 9758 +subwhitewolf = 2822 9882 +gloryfountain = 2918 9895 +spampdungeon = 3168 9572 +barrowscenter = 3551 9693 +canifis = 3477 9845 +werewol***il = 3549 9865 +eledungeon = 2715 9889 +blurite = 3007 9550 +miniagil = 2759 9557 +runerocks = 3061 3886 +kalphites = 3485 9509 +smokedungeon = 3207 9377 +pyramid4 = 3233 9313 +crashisland = 2893 2724 +apeatoll = 2801 2704 +marimpray = 2807 9201 +marimcreate = 2764 9164 +apeatolldungeon = 2805 9142 +kharazi = 2822 2911 +jungledemon = 2657 4568 +hangar = 2584 4516 +gnomedungeon = 2596 4435 +purplecrystal = 2792 4427 +submage = 2538 4717 +godpray = 2507 4718 +lighttower = 2519 4642 +bigdwarfs = 2776 10162 +bigdwarfs2 = 2838 10126 +bigdwarfs3 = 2923 10191 +waterfall = 2534 3511 +endwild = 3100 3957 +eastbank = 3250 3423 +varrock = 3210 3424 +falador2 = 2964 3378 +lumbridge = 3222 3218 +camelot = 2757 3477 +eardy2 = 2662 3305 +wardy2 = 2529 3307 +lathas = 2516 3369 +gnomestrong = 2461 3443 +kharid = 3293 3174 +shantay = 3304 3116 +kalphlair = 3226 3107 +pyramid2 = 3233 2902 +pollnivneach = 3359 2910 +menaphos = 3274 2784 +yanille = 2606 3093 +gultanoth = 2516 3044 +tutisland2 = 3094 3107 +barbarins = 3082 3420 +entrana = 2834 3335 + +coaltrucks = 2582 3481 +gvillage = 2956 3506 +stonehenge2 = 2926 3482 +burth = 2926 3559 +wwolf = 2848 3498 +catherb = 2813 3447 +seers = 2708 3492 +barbyagil = 2541 3546 +prifdinas = 2242 3278 +elfcamp2 = 2197 3252 +isafdar2 = 2241 3238 +darena = 3360 3213 +dminecamp = 3286 3023 +bedcamp = 3171 3026 +bandcamp = 3176 2987 +soph = 3305 2755 +uzerruins = 3490 3090 +morton = 3489 3288 +canif = 3506 3496 +portp = 3687 3502 +fenken = 3550 3548 +dsite = 3354 3402 +ecentre = 3354 3344 +edgeville = 3093 3493 + +psarim = 3023 3208 +rimm = 2957 3214 +farena = 2585 3150 +tgvill = 2525 3167 +pkhazard = 2665 3161 +monkies = 3051 3490 +karamj = 2948 3147 +crandor2 = 2851 3238 +thekbd = 2717 9816 +thebigkq = 3487 9493 +thepass2 = 2337 9798 +wiredwater = 2676 3008 +karamja4memb = 2815 3182 +meetjuna = 3251 9517 +darkroom = 3206 9379 +thepass1 = 2495 9715 +magicarena = 3107 3937 +aatoll = 2755 2784 +jungledemonb = 2714 9183 +jungledemont = 2703 9178 +wagility = 3003 3934 +keldagrim = 2937 9999 +karamjaagil = 2761 9557 +metaldragback = 2713 9459 +metaldragfront = 2713 9564 +desertpyramid = 3233 9315 +thehangar = 2390 9886 +fishplatform = 2782 3273 +boatcrash = 2795 3321 +legendsjungle = 2772 9341 +tzhaar2 = 2480 5175 +mineess2 = 2911 4832 +morningsend = 2044 4649 +dwarfs = 2035 4529 +kbdlair = 2273 4695 +elvenforest = 2309 4597 +goldmine = 2358 4959 +initiate = 2443 4956 +shadowguys = 2738 5081 +barrowstop = 3564 3288 +barrowstunnel = 3568 9695 +barrowschest = 3551 9694 +cwbank = 2441 3090 +castlewars = 2400 3103 +bluedrags = 2910 9801 +blackdemons = 2860 9775 +hellhounds = 2867 9844 +blackdrags = 2829 9826 + +legends2 = 2377 4705 +magearena = 2519 4719 +scaperune = 2525 4776 +forester = 2602 4775 +theisland = 2527 4547 +fremmymaze = 2652 9999 + +quizgame = 1952 4768 +trawler = 2013 4820 +sunktrawler = 1951 4825 +emptytrawler = 1886 4830 +mimestage = 2008 4762 +draynor = 2130 4913 +gameroom = 2196 4961 +gashole = 2464 4782 +shilo = 2827 2995 +karamja1 = 2973 2890 +karamja2 = 2973 2910 +greater = 3288 3886 +wildpalace = 3288 3886 +slayertower = 3428 3535 +misc = 2512 3860 +shilo = 2852 2955 + +party = 2739 3472 +rellaka = 2659 3661 +trollheim = 2910 3612 +tears of guthix = 3257 9517 + +Pest Control Game: X 2667 Y 2594 +Pest Control Bank: X 2658 Y 2649 diff --git a/test b/test new file mode 100644 index 000000000..9b79d200a --- /dev/null +++ b/test @@ -0,0 +1,217 @@ +package core + +import core.game.system.SystemShutdownHook +import core.game.system.mysql.SQLManager +import core.game.world.map.Location +import core.tools.mysql.Database +import core.tools.secondsToTicks +import org.json.simple.JSONObject +import java.io.File +import java.math.BigInteger + +/** + * A class holding various variables for the server. + * @author Ceikry + */ +class ServerConstants { + companion object { + @JvmField + var SHUTDOWN_HOOK: Thread = Thread(SystemShutdownHook()) + + @JvmField + var DATA_PATH: String? = null + + //path to the cache + @JvmField + var CACHE_PATH: String? = null + + //path for the server store (obsolete, but kept for the sake of system sanity.) + @JvmField + var STORE_PATH: String? = null + + //path for player saves + @JvmField + var PLAYER_SAVE_PATH: String? = null + + @JvmField + var PLAYER_ATTRIBUTE_PATH = "ish"; + + //path to the various config files, such as npc_spawns.json + var CONFIG_PATH: String? = null + + @JvmField + var GRAND_EXCHANGE_DATA_PATH: String? = null + + @JvmField + var RDT_DATA_PATH: String? = null + + @JvmField + var OBJECT_PARSER_PATH: String? = null + + @JvmField + var SCRIPTS_PATH: String? = null + + @JvmField + var DIALOGUE_SCRIPTS_PATH: String? = null + + @JvmField + var LOGS_PATH: String? = null + + @JvmField + var BOT_DATA_PATH: String? = null + + //the max number of players. + @JvmField + var MAX_PLAYERS = 0 + + //the max number of NPCs + @JvmField + var MAX_NPCS = 0 + + //the location where new players are placed on login. + @JvmField + var START_LOCATION: Location? = null + + //Location for all home teleports/respawn location + @JvmField + var HOME_LOCATION: Location? = null + + //the name for the database + @JvmField + var DATABASE_NAME: String? = null + + //username for the database + @JvmField + var DATABASE_USER: String? = null + + //password for the database + @JvmField + var DATABASE_PASS: String? = null + + //address for the database + @JvmField + var DATABASE_ADDRESS: String? = null + + @JvmField + var DATABASE_PORT: String? = null + + @JvmField + var WRITE_LOGS: Boolean = false + + @JvmField + var BANK_SIZE: Int = 496 + + @JvmField + var GE_AUTOSAVE_FREQUENCY = secondsToTicks(3600) //1 hour + + @JvmField + var GE_AUTOSTOCK_ENABLED = false + + //location names for the ::to command. + val TELEPORT_DESTINATIONS = arrayOf( + arrayOf(Location.create(2974, 4383, 2), "corp", "corporal", "corporeal"), + arrayOf(Location.create(2659, 2649, 0), "pc", "pest control", "pest"), + arrayOf(Location.create(3293, 3184, 0), "al kharid", "alkharid", "kharid"), + arrayOf(Location.create(3222, 3217, 0), "lumbridge", "lumby"), + arrayOf(Location.create(3110, 3168, 0), "wizard tower", "wizards tower", "tower", "wizards"), + arrayOf(Location.create(3083, 3249, 0), "draynor", "draynor village"), + arrayOf(Location.create(3019, 3244, 0), "port sarim", "sarim"), + arrayOf(Location.create(2956, 3209, 0), "rimmington"), + arrayOf(Location.create(2965, 3380, 0), "fally", "falador"), + arrayOf(Location.create(2895, 3436, 0), "taverley"), + arrayOf(Location.create(3080, 3423, 0), "barbarian village", "barb"), + arrayOf(Location.create(3213, 3428, 0), "varrock"), + arrayOf(Location.create(3164, 3485, 0), "grand exchange", "ge"), + arrayOf(Location.create(2917, 3175, 0), "karamja"), + arrayOf(Location.create(2450, 5165, 0), "tzhaar"), + arrayOf(Location.create(2795, 3177, 0), "brimhaven"), + arrayOf(Location.create(2849, 2961, 0), "shilo village", "shilo"), + arrayOf(Location.create(2605, 3093, 0), "yanille"), + arrayOf(Location.create(2663, 3305, 0), "ardougne", "ardy"), + arrayOf(Location.create(2450, 3422, 0), "gnome stronghold", "gnome"), + arrayOf(Location.create(2730, 3485, 0), "camelot", "cammy", "seers"), + arrayOf(Location.create(2805, 3435, 0), "catherby"), + arrayOf(Location.create(2659, 3657, 0), "rellekka"), + arrayOf(Location.create(2890, 3676, 0), "trollheim"), + arrayOf(Location.create(2914, 3746, 0), "godwars", "gwd", "god wars"), + arrayOf(Location.create(3180, 3684, 0), "bounty hunter", "bh"), + arrayOf(Location.create(3272, 3687, 0), "clan wars", "clw"), + arrayOf(Location.create(3090, 3957, 0), "mage arena", "mage", "magearena", "arena"), + arrayOf(Location.create(3069, 10257, 0), "king black dragon", "kbd"), + arrayOf(Location.create(3359, 3416, 0), "digsite"), + arrayOf(Location.create(3488, 3489, 0), "canifis"), + arrayOf(Location.create(3428, 3526, 0), "slayer tower", "slayer"), + arrayOf(Location.create(3502, 9483, 2), "kalphite queen", "kq", "kalphite hive", "kalphite"), + arrayOf(Location.create(3233, 2913, 0), "pyramid"), + arrayOf(Location.create(3419, 2917, 0), "nardah"), + arrayOf(Location.create(3482, 3090, 0), "uzer"), + arrayOf(Location.create(3358, 2970, 0), "pollnivneach", "poln"), + arrayOf(Location.create(3305, 2788, 0), "sophanem"), + arrayOf(Location.create(2898, 3544, 0), "burthorpe", "burthorp"), + arrayOf(Location.create(3088, 3491, 0), "edge", "edgeville"), + arrayOf(Location.create(3169, 3034, 0), "bedabin"), + arrayOf(Location.create(3565, 3289, 0), "barrows"), + arrayOf(Location.create(3016, 3513, 0), "bkf", "black knights fortress"), + arrayOf(Location.create(3052, 3481, 0), "monastery") + ) + + @JvmField + var DATABASE: Database? = null + + //if SQL is enabled + @JvmField + var MYSQL = true + + //the server name + @JvmField + var SERVER_NAME: String = "" + + //The RSA_KEY for the server. + @JvmField + var EXPONENT = BigInteger("109343860332353211924482133180092752644123222251570035818592399718899543340247882615012834369709881454157761178411602406231525266135486523035643931381979724348736863559735931163013508521663192459153115214061347330689961869574877386212674606945486858607548180282077056338048348202722564364196572081666257569141") + + //The MODULUS for the server. + @JvmField + var MODULUS = BigInteger("96982303379631821170939875058071478695026608406924780574168393250855797534862289546229721580153879336741968220328805101128831071152160922518190059946555203865621183480223212969502122536662721687753974815205744569357388338433981424032996046420057284324856368815997832596174397728134370577184183004453899764051") + + /** + * Parses a JSONObject and retrieves the values for all settings in this file. + * @author Ceikry + * @param data : The JSONObject to parse. + */ + fun parse(data: JSONObject) { + MAX_PLAYERS = data["max_players"].toString().toInt() + MAX_NPCS = data["max_npcs"].toString().toInt() + + START_LOCATION = JSONUtils.parseLocation(data["new_player_location"].toString()) + HOME_LOCATION = JSONUtils.parseLocation(data["home_location"].toString()) + + DATA_PATH = JSONUtils.parsePath(data["data_path"].toString()) + CACHE_PATH = JSONUtils.parsePath(data["cache_path"].toString()) + STORE_PATH = JSONUtils.parsePath(data["store_path"].toString()) + PLAYER_SAVE_PATH = JSONUtils.parsePath(data["save_path"].toString()) + CONFIG_PATH = JSONUtils.parsePath(data["configs_path"].toString()) + PLAYER_ATTRIBUTE_PATH = PLAYER_SAVE_PATH + "attributes" + File.separator + GRAND_EXCHANGE_DATA_PATH = JSONUtils.parsePath(data["grand_exchange_data_path"].toString()) + BOT_DATA_PATH = JSONUtils.parsePath(data["bot_data_path"].toString()) + RDT_DATA_PATH = JSONUtils.parsePath(data["rare_drop_table_path"].toString()) + OBJECT_PARSER_PATH = JSONUtils.parsePath(data["object_parser_path"].toString()) + SCRIPTS_PATH = JSONUtils.parsePath(data["scripts_path"].toString()) + DIALOGUE_SCRIPTS_PATH = JSONUtils.parsePath(data["dialogue_scripts_path"].toString()) + if(data.containsKey("logs_path")){ + LOGS_PATH = data["logs_path"].toString() + } + if(data.containsKey("writeLogs")){ + WRITE_LOGS = data["writeLogs"] as Boolean + } + + DATABASE_NAME = data["database_name"].toString() + DATABASE_USER = data["database_username"].toString() + DATABASE_PASS = data["database_password"].toString() + DATABASE_ADDRESS = data["database_address"].toString() + DATABASE_PORT = data["database_port"].toString() + + DATABASE = Database(DATABASE_ADDRESS, DATABASE_NAME, DATABASE_USER, DATABASE_PASS) + } + } +} \ No newline at end of file