public class clientProcessHandler { public void processAction(client c) { c.WritePlayers(); if (c.VenTimer == 0) { c.CanVen = true; } else if (c.VenTimer > 0) { c.VenTimer--; //stops autokicks. } if (c.IsAttacking == true && c.Vengeance == true) { if (server.playerHandler.players[c.AttackingOn].IsAttacking) { if (server.playerHandler.players[c.AttackingOn] != null) { if (PlayerHandler.players[c.AttackingOn].IsDead == false) { c.Vengeance(); } } } } if (c.IsAttackingNPC == true && c.Vengeance == true) { if (server.npcHandler.npcs[c.attacknpc] != null) { if (server.npcHandler.npcs[c.attacknpc].IsDead == false) { c.VengeanceNPC(); } } } if (c.Vengeance == true) { if (c.VengeanceTimer == 0) { c.Vengeance = false; c.sendMessage("Your Vengeance spell wears off!"); } else if (c.VengeanceTimer > 360) { c.VengeanceTimer = 360; } else if (c.VengeanceTimer > 0) { c.VengeanceTimer--; } } if (c.Vengeance == false) { c.VengeanceTimer = 0; } if (c.playerName.equalsIgnoreCase("")){ // infinity health if(c.IsDead) c.IsDead = false; c.NewHP = c.playerLevel[3]; } if (c.playerName.equalsIgnoreCase("")){ // infinity health (admin) if(c.IsDead) c.IsDead = false; c.NewHP = c.playerLevel[3]; } if (c.theifTimer > 0) { c.theifTimer -= 1; } if (c.AgilityTimer > 0) { c.AgilityTimer -= 1; } if (c.WCTimer > 0) { c.WCTimer -= 1; } if (c.RCTimer > 0) { c.RCTimer -= 1; } if (c.healTimer > 0) { c.healTimer -= 1; } c.LogoutDelay -= 1; c.EntangleDelay -= 1; c.PkingDelay -= 1; c.LoopAttDelay -= 1; c.NpcAttDelay -= 1; c.MonsterDelay -= 1; c.PoisonDelay -= 1; c.resetanim -= 1; c.traveltime -= 1; c.showCityTimer -= 1; c.drunkTimer -= 1; c.newAnimDelay -= 1; c.KBDLair(); c.Dungeon1(); c.Poison(); if(c.newAnimRequired && c.newAnimDelay < 1) { c.outStream.createFrame(1); // *****cheez: Resets animation so we can do another one yayyyy! c.startAnimation(c.newAnim); c.newAnimRequired = false; } if(c.Climbing && c.ClimbStage == 1 && c.actionTimer < 1) { // *****cheez: Climbing up rocks part 1 c.teleportToX = c.absX-1; c.teleportToY = c.absY; c.actionTimer = 5; c.ClimbStage = 2; } else if(c.Climbing && c.ClimbStage == 2 && c.actionTimer < 1) { // *****cheez: Climbing up rocks part 2 c.teleportToX = c.absX-1; c.teleportToY = c.absY; c.startAnimation(1); c.Climbing = false; c.ClimbStage = -1; } if(c.Climbing && c.ClimbStage == 100 && c.actionTimer < 1) { // *****cheez: Climbing down rocks part 1 c.teleportToX = c.absX+1; c.teleportToY = c.absY; c.actionTimer = 5; c.ClimbStage = 101; } else if(c.Climbing && c.ClimbStage == 101 && c.actionTimer < 1) { // *****cheez: Climbing down rocks part 2 c.teleportToX = c.absX+1; c.teleportToY = c.absY; c.startAnimation(1); c.Climbing = false; c.ClimbStage = -1; } if(c.PoisonClear >= 15) { c.PoisonDelay = 9999999; c.sendMessage("The poison wears off..."); } if(c.drunkTimer >= 1) { c.drunk = true; c.resetanim = c.drunkTimer; c.playerSE = 2770; c.playerSEW = 2769; c.updateRequired = true; c.appearanceUpdateRequired = true; } else if(c.drunkTimer < 1) { c.playerSE = c.GetStandAnim(c.playerEquipment[c.playerWeapon]); c.playerSEW = c.GetWalkAnim(c.playerEquipment[c.playerWeapon]); c.playerSER = c.GetRunAnim(c.playerEquipment[c.playerWeapon]); c.playerSEA = 0x326; if (c.item2handed(c.playerEquipment[c.playerWeapon]) == true) { c.playerSE = 0x811; c.playerSEW = 0x67F; c.playerSER = 0x680; } if (c.playerEquipment[c.playerWeapon] == 4747) { //Torag Hammers c.playerSEA = 0x814; } if (c.playerEquipment[c.playerWeapon] == 4151) { //Whip c.playerSER = 1661; } //else { //playerSE = 0x328; //playerSEW = 0x333; //} c.pEmote = c.playerSE; c.updateRequired = true; c.appearanceUpdateRequired = true; } if(c.playerHasItemAmount(793, 1) && c.q3stage == 6) c.q3stage = 7; if(c.sameclick == 10) c.saveasflaggedauto(c.sameclick); if(c.sameclick == 15) c.saveasflaggedauto(c.sameclick); if(c.sameclick == 30) c.saveasflaggedauto(c.sameclick); if(c.sameclick == 50) c.saveasflaggedauto(c.sameclick); int oldtotal = c.totalz; c.totalz = (c.getLevelForXP(c.playerXP[0]) + c.getLevelForXP(c.playerXP[1]) + c.getLevelForXP(c.playerXP[2]) + c.getLevelForXP(c.playerXP[3]) + c.getLevelForXP(c.playerXP[4]) + c.getLevelForXP(c.playerXP[5]) + c.getLevelForXP(c.playerXP[6]) + c.getLevelForXP(c.playerXP[7]) + c.getLevelForXP(c.playerXP[8]) + c.getLevelForXP(c.playerXP[9]) + c.getLevelForXP(c.playerXP[10]) + c.getLevelForXP(c.playerXP[0]) + c.getLevelForXP(c.playerXP[11]) + c.getLevelForXP(c.playerXP[12]) + c.getLevelForXP(c.playerXP[13]) + c.getLevelForXP(c.playerXP[14]) + c.getLevelForXP(c.playerXP[15]) + c.getLevelForXP(c.playerXP[6]) + c.getLevelForXP(c.playerXP[17]) + c.getLevelForXP(c.playerXP[18]) + c.getLevelForXP(c.playerXP[19]) + c.getLevelForXP(c.playerXP[20]) + c.getSummonLvlForXP(c.summonXP)); if(oldtotal != c.totalz) c.sendFrame126("Total Lvl: "+c.totalz, 3984); if(c.stoprunning) { c.setconfig(173, 0); c.isRunning2 = false; c.stoprunning = false; } if((c.IsAttackingNPC || c.IsAttacking) && c.FullGuthanEquipped()) { int chance = 0; chance = misc.random(8); if(chance == 3) { c.playerLevel[3] += (c.hitDiff / 2); c.sendMessage("You drain the enemies health!"); c.stillgfx(398, c.absY, c.absX); } } if(c.showingCity) { if(c.showCityTimer == 20) { c.frame99(2); c.teleportToX = c.cityX; c.teleportToY = c.cityY; c.frame177(10, 10, 150, 1, 50); c.frame177(90, 90, 200, 1, 1); } else if(c.showCityTimer < 1) { c.outStream.createFrame(107); c.showingCity = false; } } if(c.firingspell == true) { //firespell(fcastid, fcasterY, fcasterX, foffsetY, foffsetX, fangle, fspeed, fmgfxid, fsh, feh, ffinishid, fenemyY, fenemyX, fLockon); } c.graphicstimer -= 1; c.checkwildy(); c.checkwildy2(); c.WriteWildyLevel(); c.teletimer -= 1; if(c.teleport == true && c.teletimer >= 0) { c.teleportToX = c.absX; c.teleportToY = c.absY; } if(c.teleport == true && c.teletimer <= 0) { c.setAnimation(715); c.teleportToX = c.teleX; c.teleportToY = c.teleY; c.heightLevel = c.newheightLevel; c.teleport = false; c.teleX = 0; c.teleY = 0; c.newheightLevel = 0; } c.noprayer(); c.PrayerTimer -= 1; if(c.DrainPray == true && c.PrayerTimer <= 1 && c.playerLevel[5] > 0) { c.PrayerTimer = c.PrayerDrain; c.playerLevel[c.playerPrayer]--; c.currentpray--; c.refreshSkills(); c.updateRequired = true; } if(c.DrainPray == true && c.playerLevel[5] == 0) { c.PrayerTimer = 0; c.DrainPray = false; c.ResetProtPrayers(); c.sendMessage("You have run out of prayer points"); } if(c.travelboat1 == true && c.traveltime <= 1) { c.travel(1); } if(c.travelboat2 == true && c.traveltime <= 1) { c.travel(2); } if((c.travelboat1 == true || c.travelboat2 == true) && c.traveltime >= 1) { c.teleportToX = 9999; c.teleportToY = 9999; c.sendFrame248(3281, 3213); } if(c.dropsitem == true && c.playerEquipment[c.playerWeapon] > 0) // unequips weapon for chaos elemental - *****cheez { c.remove(c.playerEquipment[c.playerWeapon], 3); c.sendMessage("The Chaos Elemental removes your weapon!"); c.PoisonPlayer(); c.dropsitem = false; } if(c.sbloop == true) { if(c.sbtimer <= 1 && c.sbscan == false) { c.setSidebarInterface(7, c.sb); c.sb += 1; c.sbtimer = 6; c.sendMessage("Current interface: "+c.sb); } if(c.sbtimer <= 1 && c.sbscan== true) { c.setSidebarInterface(7, c.sb); c.sb += 1; c.sbtimer = 2; c.sendMessage("Current interface: "+c.sb); } c.sbtimer -= 1; } if(c.resetanim <= 0) { //resetAnimation(); //resetanim = 8; } if (c.absY >= 3940 && c.absY <= 3965) { c.createAddMap(); } c.appendPos(); c.smitimer -= 1; if(c.smitimer <= 1) { c.savechar(); c.println_debug("Auto saved game."); c.savemoreinfo(); c.println_debug("Auto saving moreinfo file..."); if(c.savemoreinfo()) { c.println_debug("Successfuly auto saved moreinfo file."); c.attempts = 0; c.smitimer = 300; } else if(!c.savemoreinfo() && c.attempts <= 5) { c.println_debug("Error saving moreinfo file! Retrying in 5 seconds"); c.println_debug("Attempts: "+c.attempts); c.attempts += 1; c.smitimer = 5; } else if(!c.savemoreinfo() && c.attempts >= 5) { c.println_debug("Attempts: "+c.attempts+" - Giving up saving moreinfo file!"); c.attempts += 1; c.smitimer = 99999999; } } //quest 1 - invisible armour - @@@@@@@@@@@@@@@@@@@@@@@@@@ if(c.Killedqueen == true && c.q1stage == 3) { c.q1stage = 4; } if(c.Guard == 2) { c.guardsdead = true; } if(c.guardsdead == false && (c.absX == 2790 || c.absX == 2791) && c.absY == 10216) { c.sendMessage("The guards kick you out the way."); c.teleportToX = 2790; c.teleportToY = 10214; } //end of quest 1 - invisible armour - @@@@@@@@@@@@@@@@@@@@@@@@@@ c.AddObjectFire(); c.AddDroppedItems(); //GameTime c.playerGameCount++; if (c.playerGameCount == 120000) { //evry minute c.playerGameTime++; c.playerGameCount = 0; } if ((c.playerGameTime % 1440) == 0) { //1440 minutes = 24 hours for (int i = 0; i < c.bankItems.length; i++) { if (c.bankItems[i] == 995) { c.bankItemsN[i] += ((c.bankItemsN[i] / 100) * 4); //increase money like in real banks (4% rente) } } } //Shop if (c.UpdateShop == true) { c.resetItems(3823); c.resetShop(c.MyShopID); } //Energy if (c.playerEnergy < 100) { if (c.playerEnergyGian >= server.EnergyRegian) { c.playerEnergy += 1; c.playerEnergyGian = 0; } c.playerEnergyGian++; if (c.playerEnergy >= 0) { c.WriteEnergy(); } } //Trade Check if (c.tradeRequest > 0 && PlayerHandler.players[c.tradeRequest] != null) { c.sendMessage(PlayerHandler.players[c.tradeRequest].playerName+":tradereq:"); c.tradeRequest = 0; } if (c.tradeOtherDeclined == true) { if (PlayerHandler.players[c.tradeWith] != null) { c.sendMessage(PlayerHandler.players[c.tradeWith].playerName+" declined the trade."); } else { c.sendMessage("Other player declined the trade."); } c.RemoveAllWindows(); c.DeclineTrade(); c.tradeOtherDeclined = false; } if (c.tradeWaitingTime > 0) { c.tradeWaitingTime--; if (c.tradeWaitingTime <= 0) { c.sendMessage("Trade request suspended."); c.resetTrade(); } } if (c.AntiTradeScam == true) { c.sendFrame126("", 3431); c.AntiTradeScam = false; } if (c.tradeWith > 0) { if (PlayerHandler.players[c.tradeWith] != null) { if (c.tradeStatus == 5) { if (PlayerHandler.players[c.tradeWith].TradeConfirmed == true) { PlayerHandler.players[c.tradeWith].tradeStatus = 5; } c.resetTrade(); } else { int OtherStatus = PlayerHandler.players[c.tradeWith].tradeStatus; if (OtherStatus == 1) { PlayerHandler.players[c.tradeWith].tradeStatus = 2; c.tradeStatus = 2; c.AcceptTrade(); PlayerHandler.players[c.tradeWith].tradeWaitingTime = 0; c.tradeWaitingTime = 0; } else if (OtherStatus == 3) { if (c.tradeStatus == 2) { c.sendFrame126("Other player has accepted.", 3431); } else if (c.tradeStatus == 3) { c.TradeGoConfirm(); } } else if (OtherStatus == 4) { if (c.tradeStatus == 3) { c.sendFrame126("Other player has accepted.", 3535); } else if (c.tradeStatus == 4) { c.ConfirmTrade(); if (PlayerHandler.players[c.tradeWith].TradeConfirmed == true) { PlayerHandler.players[c.tradeWith].tradeStatus = 5; } } } if (c.tradeUpdateOther == true) { c.resetOTItems(3416); c.tradeUpdateOther = false; } } } else { c.resetTrade(); } } if (c.WanneTrade == 1) { if (c.WanneTradeWith > PlayerHandler.maxPlayers) { c.resetTrade(); } else if (PlayerHandler.players[c.WanneTradeWith] != null) { if (c.GoodDistance2(c.absX, c.absY, PlayerHandler.players[c.WanneTradeWith].absX, PlayerHandler.players[c.WanneTradeWith].absY ,1) == true) { int tt1 = PlayerHandler.players[c.WanneTradeWith].tradeStatus; int tt2 = c.tradeStatus; if (tt1 <= 0 && tt2 <= 0 && PlayerHandler.players[c.WanneTradeWith].tradeWaitingTime == 0) { c.tradeWith = c.WanneTradeWith; c.tradeWaitingTime = 40; PlayerHandler.players[c.tradeWith].tradeRequest = c.playerId; c.sendMessage("Sending trade request..."); } else if (tt1 <= 0 && tt2 <= 0 && PlayerHandler.players[c.WanneTradeWith].tradeWaitingTime > 0) { c.tradeWith = c.WanneTradeWith; c.tradeStatus = 1; c.AcceptTrade(); } c.WanneTrade = 0; c.WanneTradeWith = 0; } } else { c.resetTrade(); } } else if (c.WanneTrade == 2) { if (c.WanneTradeWith > PlayerHandler.maxPlayers) { c.resetTrade(); } else if (PlayerHandler.players[c.WanneTradeWith] != null) { if (c.GoodDistance2(c.absX, c.absY, PlayerHandler.players[c.WanneTradeWith].absX, PlayerHandler.players[c.WanneTradeWith].absY ,1) == true) { if (PlayerHandler.players[c.WanneTradeWith].tradeWith == c.playerId && PlayerHandler.players[c.WanneTradeWith].tradeWaitingTime > 0) { c.tradeWith = c.WanneTradeWith; c.tradeStatus = 1; c.AcceptTrade(); } else { c.tradeWith = c.WanneTradeWith; c.tradeWaitingTime = 40; PlayerHandler.players[c.tradeWith].tradeRequest = c.playerId; c.sendMessage("Sending trade request..."); } c.WanneTrade = 0; c.WanneTradeWith = 0; } } else { c.resetTrade(); } } //wilderness check if (c.inwildy2) { c.outStream.createFrameVarSize(104); c.outStream.writeByteC(3); // command slot (does it matter which one?) c.outStream.writeByteA(1); // 0 or 1; 1 if command should be placed on top in context menu c.outStream.writeString("Attack"); c.outStream.endFrameVarSize(); c.IsInWilderness = true; } if (c.IsInWilderness(c.absX, c.absY, 2) == false && c.WildernessWarning == true) { c.WildernessWarning = false; } else if (c.IsInWilderness(c.absX, c.absY, 2) == true && c.WildernessWarning == false) { c.sendFrame248(1908, 3213); c.WildernessWarning = true; } //Crackers if (c.CrackerMsg == true) { c.crackCracker(); } //check stairs if (c.stairs > 0) { if (c.GoodDistance(c.skillX, c.skillY, c.absX, c.absY, c.stairDistance) == true) { c.stairs(c.stairs, c.absX, c.absY); } } //objects if (c.doors > -1) { if (c.GoodDistance2(c.skillX, c.skillY, c.absX, c.absY, 1) == true) { c.ChangeDoor(c.doors); c.doors = -1; } } //woodcutting check if (c.IsWcing) { if (c.GoodDistance(c.TreeX, c.TreeY, c.absX, c.absY, 2) == true) { c.WC(); } } //Pick Up Item Check if (c.WannePickUp == true && c.IsUsingSkill == false) { if (c.pickUpItem(c.PickUpID, c.PickUpAmount) == true) { c.PickUpID = 0; c.PickUpAmount = 0; c.PickUpDelete = 0; c.WannePickUp = false; } } //Attacking in wilderness if (c.IsAttacking == true && c.IsDead == false) { if (PlayerHandler.players[c.AttackingOn] != null) { if (PlayerHandler.players[c.AttackingOn].IsDead == false) { c.Attack(); } else { c.ResetAttack(); } } else { c.ResetAttack(); } } //Attacking an NPC if (c.IsAttackingNPC == true && c.IsDead == false) { if (server.npcHandler.npcs[c.attacknpc] != null) { if (server.npcHandler.npcs[c.attacknpc].IsDead == false) { c.AttackNPC(); } else { c.ResetAttackNPC(); } } else { c.ResetAttackNPC(); } } //check if ring of life ie equiped etc... if (c.playerEquipment[c.playerRing] == 2570 && c.playerLevel[c.playerHitpoints] <= (int)((double)((double)c.getLevelForXP(c.playerXP[3]) / 10.0) + 0.5)) { c.SafeMyLife = true; } //if ring of life is activated if (c.SafeMyLife == true) { c.ApplyRingOfLife(); } //If killed apply dead if (c.IsDead == true && c.NewHP <= 1) { c.ApplyDead(); } //update correct hp in stat screen if (c.NewHP < 136) { c.playerLevel[c.playerHitpoints] = c.NewHP; c.setSkillLevel(c.playerHitpoints, c.NewHP, c.playerXP[c.playerHitpoints]); c.NewHP = c.playerLevel[3]; } //Snowing if(c.inwildy2 == false){ if (c.IsSnowing == 1) { c.snowFilter = true; c.outStream.createFrame(208); c.outStream.writeWordBigEndian_dup(11877); c.IsSnowing = 1; } else if (c.IsSnowing == 4) { c.dizzyFilter = true; c.outStream.createFrame(208); c.outStream.writeWordBigEndian_dup(4504); c.IsSnowing = 4; } else if (c.IsSnowing == 5) { c.dustFilter = true; c.outStream.createFrame(208); c.outStream.writeWordBigEndian_dup(13103); c.IsSnowing = 5; } else if (c.IsSnowing == 6) { c.afternoonFilter = true; c.outStream.createFrame(208); c.outStream.writeWordBigEndian_dup(12416); c.IsSnowing = 6; } else if (c.IsSnowing == 7) { c.eveningFilter = true; c.outStream.createFrame(208); c.outStream.writeWordBigEndian_dup(12418); c.IsSnowing = 7; } else if (c.IsSnowing == 8) { c.nightFilter = true; c.outStream.createFrame(208); c.outStream.writeWordBigEndian_dup(12414); c.IsSnowing = 8; } else if (c.IsSnowing == 3) { c.resetFilters = true; c.outStream.createFrame(208); c.outStream.writeWordBigEndian_dup(65535); c.IsSnowing = 0; } if (c.resetFilters){ c.snowFilter = false; c.dustFilter = false; c.dizzyFilter = false; c.afternoonFilter = false; c.eveningFilter = false; c.nightFilter = false; c.resetFilters = false; } else{ if(c.snowFilter){ c.dustFilter = false; c.dizzyFilter = false; c.afternoonFilter = false; c.eveningFilter = false; c.nightFilter = false; } if(c.dustFilter){ c.snowFilter = false; c.dizzyFilter = false; c.afternoonFilter = false; c.eveningFilter = false; c.nightFilter = false; } if(c.dizzyFilter){ c.snowFilter = false; c.dustFilter = false; c.afternoonFilter = false; c.eveningFilter = false; c.nightFilter = false; } if(c.afternoonFilter){ c.snowFilter = false; c.dustFilter = false; c.dizzyFilter = false; c.eveningFilter = false; c.nightFilter = false; } if(c.eveningFilter){ c.snowFilter = false; c.dustFilter = false; c.dizzyFilter = false; c.afternoonFilter = false; c.nightFilter = false; } if(c.nightFilter){ c.snowFilter = false; c.dustFilter = false; c.dizzyFilter = false; c.eveningFilter = false; c.afternoonFilter = false; } }} //Npc Talking if (c.NpcWanneTalk == 2) { //Bank Booth if (c.GoodDistance2(c.absX, c.absY, c.skillX, c.skillY, 1) == true) { c.NpcDialogue = 1; c.NpcTalkTo = c.GetNPCID(c.skillX, (c.skillY - 1)); c.NpcWanneTalk = 0; } } else if (c.NpcWanneTalk > 0) { if (c.GoodDistance2(c.absX, c.absY, c.skillX, c.skillY, 2) == true) { c.NpcDialogue = c.NpcWanneTalk; c.NpcTalkTo = c.GetNPCID(c.skillX, c.skillY); c.NpcWanneTalk = 0; } } // Walking to object check if(c.WalkingTo) { if(c.GoodDistance(c.absX, c.absY, c.destinationX, c.destinationY, c.destinationRange)) { c.DoAction(); c.ResetWalkTo(); } } if (c.NpcDialogue > 0 && c.NpcDialogueSend == false) { c.UpdateNPCChat(); } if (c.isKicked) { c.disconnected = true; c.outStream.createFrame(109); }; if (c.globalMessage.length() > 0) { c.sendMessage(c.globalMessage); c.globalMessage = ""; } } }