Advertisement
PaladinTEAM

MapUserInput.as

Jul 12th, 2023
1,844
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package com.company.assembleegameclient.game {
  2. import com.company.assembleegameclient.map.Map;
  3. import com.company.assembleegameclient.map.Square;
  4. import com.company.assembleegameclient.objects.Character;
  5. import com.company.assembleegameclient.objects.GameObject;
  6. import com.company.assembleegameclient.objects.GuildHallPortal;
  7. import com.company.assembleegameclient.objects.ObjectLibrary;
  8. import com.company.assembleegameclient.objects.Player;
  9. import com.company.assembleegameclient.objects.Portal;
  10. import com.company.assembleegameclient.parameters.Parameters;
  11. import com.company.assembleegameclient.ui.options.Options;
  12. import com.company.assembleegameclient.util.TextureRedrawer;
  13. import com.company.util.KeyCodes;
  14. import flash.desktop.Clipboard;
  15. import flash.desktop.ClipboardFormats;
  16. import flash.display.Sprite;
  17. import flash.display.StageScaleMode;
  18. import flash.geom.Point;
  19. import flash.geom.Vector3D;
  20. import flash.utils.Dictionary;
  21. import kabam.rotmg.chat.control.ParseChatMessageSignal;
  22. import kabam.rotmg.chat.control.TextHandler;
  23. import kabam.rotmg.servers.api.Server;
  24. import kabam.rotmg.ui.view.HUDView;
  25.  
  26. import flash.display.Stage;
  27. import flash.display.StageDisplayState;
  28. import flash.events.Event;
  29. import flash.events.KeyboardEvent;
  30. import flash.events.MouseEvent;
  31. import flash.system.Capabilities;
  32. import flash.utils.getTimer;
  33.  
  34. import kabam.rotmg.application.api.ApplicationSetup;
  35. import kabam.rotmg.chat.model.ChatMessage;
  36. import kabam.rotmg.constants.GeneralConstants;
  37. import kabam.rotmg.constants.UseType;
  38. import kabam.rotmg.core.StaticInjectorContext;
  39. import kabam.rotmg.core.view.Layers;
  40. import kabam.rotmg.dialogs.control.CloseDialogsSignal;
  41. import kabam.rotmg.dialogs.control.OpenDialogSignal;
  42. import kabam.rotmg.friends.view.FriendListView;
  43. import kabam.rotmg.game.model.PotionInventoryModel;
  44. import kabam.rotmg.game.model.UseBuyPotionVO;
  45. import kabam.rotmg.game.signals.AddTextLineSignal;
  46. import kabam.rotmg.game.signals.ExitGameSignal;
  47. import kabam.rotmg.game.signals.GiftStatusUpdateSignal;
  48. import kabam.rotmg.game.signals.SetTextBoxVisibilitySignal;
  49. import kabam.rotmg.game.signals.UseBuyPotionSignal;
  50. import kabam.rotmg.game.view.components.StatsTabHotKeyInputSignal;
  51. import kabam.rotmg.messaging.impl.GameServerConnection;
  52. import kabam.rotmg.minimap.control.MiniMapZoomSignal;
  53. import kabam.rotmg.pets.controller.reskin.ReskinPetFlowStartSignal;
  54. import kabam.rotmg.ui.UIUtils;
  55. import com.company.assembleegameclient.game.events.ReconnectEvent;
  56. import kabam.rotmg.maploading.view.MapLoadingView;
  57.  
  58. import net.hires.debug.Stats;
  59.  
  60. import org.swiftsuspenders.Injector;
  61.  
  62. public class MapUserInput {
  63.  
  64.     private static var stats_:Stats = new Stats();
  65.     private static const MOUSE_DOWN_WAIT_PERIOD:uint = 175;
  66.     private static var arrowWarning_:Boolean = false;
  67.    
  68.     public static var reconRealm:ReconnectEvent;
  69.     public static var reconDung:ReconnectEvent;
  70.     public static var reconVault:ReconnectEvent;
  71.     public static var reconRandom:ReconnectEvent;
  72.     public static var dungTime:uint = 0;
  73.     public static var skipRender:Boolean = false;
  74.     public var lightSpeed:Boolean = false;
  75.     private var maxprism:Boolean = false;
  76.     private var spaceSpam:int = 0; //makes sure you don't dc when spamming
  77.     public static var optionsOpen:Boolean = false;
  78.     public var ninjaTapped:Boolean = false;
  79.     public static var inputting:Boolean = false;
  80.  
  81.     public var gs_:GameSprite;
  82.     private var moveLeft_:int = 0;
  83.     private var moveRight_:int = 0;
  84.     private var moveUp_:int = 0;
  85.     private var moveDown_:int = 0;
  86.     private var rotateLeft_:int = 0;
  87.     private var rotateRight_:int = 0;
  88.     public var mouseDown_:Boolean = false;
  89.     public var autofire_:Boolean = false;
  90.     private var currentString:String = "";
  91.     public var specialKeyDown_:Boolean = false;
  92.     private var enablePlayerInput_:Boolean = true;
  93.     private var giftStatusUpdateSignal:GiftStatusUpdateSignal;
  94.     private var addTextLine:AddTextLineSignal;
  95.     private var setTextBoxVisibility:SetTextBoxVisibilitySignal;
  96.     private var statsTabHotKeyInputSignal:StatsTabHotKeyInputSignal;
  97.     private var miniMapZoom:MiniMapZoomSignal;
  98.     private var useBuyPotionSignal:UseBuyPotionSignal;
  99.     private var potionInventoryModel:PotionInventoryModel;
  100.     private var openDialogSignal:OpenDialogSignal;
  101.     private var closeDialogSignal:CloseDialogsSignal;
  102.     private var layers:Layers;
  103.     private var exitGame:ExitGameSignal;
  104.     private var areFKeysAvailable:Boolean;
  105.     private var reskinPetFlowStart:ReskinPetFlowStartSignal;
  106.     private var parseChatMessage:ParseChatMessageSignal;
  107.  
  108.     public function MapUserInput(_arg_1:GameSprite) {
  109.         this.gs_ = _arg_1;
  110.         this.gs_.addEventListener(Event.ADDED_TO_STAGE, this.onAddedToStage);
  111.         this.gs_.addEventListener(Event.REMOVED_FROM_STAGE, this.onRemovedFromStage);
  112.         var _local_2:Injector = StaticInjectorContext.getInjector();
  113.         this.giftStatusUpdateSignal = _local_2.getInstance(GiftStatusUpdateSignal);
  114.         this.reskinPetFlowStart = _local_2.getInstance(ReskinPetFlowStartSignal);
  115.         this.addTextLine = _local_2.getInstance(AddTextLineSignal);
  116.         this.setTextBoxVisibility = _local_2.getInstance(SetTextBoxVisibilitySignal);
  117.         this.miniMapZoom = _local_2.getInstance(MiniMapZoomSignal);
  118.         this.useBuyPotionSignal = _local_2.getInstance(UseBuyPotionSignal);
  119.         this.potionInventoryModel = _local_2.getInstance(PotionInventoryModel);
  120.         this.layers = _local_2.getInstance(Layers);
  121.         this.statsTabHotKeyInputSignal = _local_2.getInstance(StatsTabHotKeyInputSignal);
  122.         this.exitGame = _local_2.getInstance(ExitGameSignal);
  123.         this.openDialogSignal = _local_2.getInstance(OpenDialogSignal);
  124.         this.closeDialogSignal = _local_2.getInstance(CloseDialogsSignal);
  125.         this.parseChatMessage = _local_2.getInstance(ParseChatMessageSignal);
  126.         var _local_3:ApplicationSetup = _local_2.getInstance(ApplicationSetup);
  127.         this.areFKeysAvailable = _local_3.areDeveloperHotkeysEnabled();
  128.         this.gs_.map.signalRenderSwitch.add(this.onRenderSwitch);
  129.     }
  130.  
  131.     public function onRenderSwitch(_arg_1:Boolean):void {
  132.         if (_arg_1) {
  133.             this.gs_.stage.removeEventListener(MouseEvent.MOUSE_DOWN, this.onMouseDown);
  134.             this.gs_.stage.removeEventListener(MouseEvent.MOUSE_UP, this.onMouseUp);
  135.             this.gs_.map.addEventListener(MouseEvent.MOUSE_DOWN, this.onMouseDown);
  136.             this.gs_.map.addEventListener(MouseEvent.MOUSE_UP, this.onMouseUp);
  137.         }
  138.         else {
  139.             this.gs_.map.removeEventListener(MouseEvent.MOUSE_DOWN, this.onMouseDown);
  140.             this.gs_.map.removeEventListener(MouseEvent.MOUSE_UP, this.onMouseUp);
  141.             this.gs_.stage.addEventListener(MouseEvent.MOUSE_DOWN, this.onMouseDown);
  142.             this.gs_.stage.addEventListener(MouseEvent.MOUSE_UP, this.onMouseUp);
  143.         }
  144.     }
  145.  
  146.     public function clearInput():void {
  147.         this.moveLeft_ = 0;
  148.         this.moveRight_ = 0;
  149.         this.moveUp_ = 0;
  150.         this.moveDown_ = 0;
  151.         this.rotateLeft_ = 0;
  152.         this.rotateRight_ = 0;
  153.         this.mouseDown_ = false;
  154.         this.autofire_ = false;
  155.         this.lightSpeed = false;
  156.         this.maxprism = false;
  157.         this.setPlayerMovement();
  158.     }
  159.  
  160.     public function setEnablePlayerInput(_arg_1:Boolean):void {
  161.         if (this.enablePlayerInput_ != _arg_1) {
  162.             this.enablePlayerInput_ = _arg_1;
  163.             this.clearInput();
  164.         }
  165.     }
  166.  
  167.     private function onAddedToStage(_arg_1:Event):void {
  168.         var _local_2:Stage = this.gs_.stage;
  169.         _local_2.addEventListener(Event.ACTIVATE, this.onActivate);
  170.         _local_2.addEventListener(Event.DEACTIVATE, this.onDeactivate);
  171.         _local_2.addEventListener(KeyboardEvent.KEY_DOWN, this.onKeyDown);
  172.         _local_2.addEventListener(KeyboardEvent.KEY_UP, this.onKeyUp);
  173.         _local_2.addEventListener(MouseEvent.MOUSE_WHEEL, this.onMouseWheel);
  174.         //
  175.         _local_2.addEventListener(MouseEvent.MOUSE_DOWN, this.onMouseDown);
  176.         _local_2.addEventListener(MouseEvent.MOUSE_UP, this.onMouseUp);
  177.         //this.gs_.map.addEventListener(MouseEvent.MOUSE_DOWN, this.onMouseDown);
  178.         //this.gs_.map.addEventListener(MouseEvent.MOUSE_UP, this.onMouseUp);
  179.         _local_2.addEventListener(Event.ENTER_FRAME, this.onEnterFrame);
  180.         _local_2.addEventListener(MouseEvent.RIGHT_CLICK, this.disableRightClick); //right click
  181.     }
  182.  
  183.     public function disableRightClick(_arg_1:MouseEvent):void {
  184.         gs_.map.player_.mapLightSpeed = !gs_.map.player_.mapLightSpeed;
  185.     }
  186.  
  187.     private function onRemovedFromStage(_arg_1:Event):void {
  188.         var _local_2:Stage = this.gs_.stage;
  189.         _local_2.removeEventListener(Event.ACTIVATE, this.onActivate);
  190.         _local_2.removeEventListener(Event.DEACTIVATE, this.onDeactivate);
  191.         _local_2.removeEventListener(KeyboardEvent.KEY_DOWN, this.onKeyDown);
  192.         _local_2.removeEventListener(KeyboardEvent.KEY_UP, this.onKeyUp);
  193.         _local_2.removeEventListener(MouseEvent.MOUSE_WHEEL, this.onMouseWheel);
  194.         //
  195.         _local_2.removeEventListener(MouseEvent.MOUSE_DOWN, this.onMouseDown);
  196.         _local_2.removeEventListener(MouseEvent.MOUSE_UP, this.onMouseUp);
  197.         //this.gs_.map.removeEventListener(MouseEvent.MOUSE_DOWN, this.onMouseDown);
  198.         //this.gs_.map.removeEventListener(MouseEvent.MOUSE_UP, this.onMouseUp);
  199.         _local_2.removeEventListener(Event.ENTER_FRAME, this.onEnterFrame);
  200.         _local_2.removeEventListener(MouseEvent.RIGHT_CLICK, this.disableRightClick);
  201.     }
  202.  
  203.     private function onActivate(_arg_1:Event):void {
  204.     }
  205.  
  206.     private function onDeactivate(_arg_1:Event):void {
  207.         this.clearInput();
  208.     }
  209.  
  210.     public function onMouseDown(_arg_1:MouseEvent):void {
  211.         //addTextLine.dispatch(ChatMessage.make(Parameters.CLIENT_CHAT_NAME, "mouse down x: "+gs_.mouseX + " y: "+gs_.mouseY));
  212.         if (gs_.hudView != null && gs_.mouseX >= gs_.hudView.x) {
  213.             return;
  214.         }
  215.         if (optionsOpen) {
  216.             return;
  217.         }
  218.         this.mouseDown_ = true;
  219.         var _local_3:Number;
  220.         var _local_4:int;
  221.         var _local_5:XML;
  222.         var _local_6:Number;
  223.         var _local_7:Number;
  224.         var _local_2:Player = gs_.map.player_;
  225.         if (_local_2 == null) {
  226.             return;
  227.         }
  228.         if (!this.enablePlayerInput_) {
  229.             return;
  230.         }
  231.         if (_arg_1.shiftKey) {
  232.             _local_4 = _local_2.equipment_[1];
  233.             if (_local_4 == -1) {
  234.                 return;
  235.             }
  236.             _local_5 = ObjectLibrary.xmlLibrary_[_local_4];
  237.             if ((((_local_5 == null)) || (_local_5.hasOwnProperty("EndMpCost")))) {
  238.                 return;
  239.             }
  240.             if (_local_2.isUnstable()) {
  241.                 _local_6 = ((Math.random() * 600) - 300);
  242.                 _local_7 = ((Math.random() * 600) - 325);
  243.             }
  244.             else {
  245.                 _local_6 = this.gs_.map.mouseX;
  246.                 _local_7 = this.gs_.map.mouseY;
  247.             }
  248.             if (Parameters.isGpuRender()) {
  249.                 if ((((((_arg_1.currentTarget == _arg_1.target)) || ((_arg_1.target == this.gs_.map)))) || ((_arg_1.target == this.gs_)))) {
  250.                     _local_2.useAltWeapon(_local_6, _local_7, UseType.START_USE);
  251.                 }
  252.             }
  253.             else {
  254.                 _local_2.useAltWeapon(_local_6, _local_7, UseType.START_USE);
  255.             }
  256.             return;
  257.         }
  258.         if (Parameters.isGpuRender()) {
  259.             if ((((((((_arg_1.currentTarget == _arg_1.target)) || ((_arg_1.target == this.gs_.map)))) || ((_arg_1.target == this.gs_)))) || ((_arg_1.currentTarget == this.gs_.chatBox_.list)))) {
  260.                 _local_3 = Math.atan2(this.gs_.map.mouseY, this.gs_.map.mouseX);
  261.             }
  262.             else {
  263.                 return;
  264.             }
  265.         }
  266.         else {
  267.             _local_3 = Math.atan2(this.gs_.map.mouseY, this.gs_.map.mouseX);
  268.         }
  269.         if (_local_2.isUnstable()) {
  270.             _local_2.attemptAttackAngle((Math.random() * 360));
  271.         }
  272.         else {
  273.             _local_2.attemptAttackAngle(_local_3);
  274.         }
  275.     }
  276.  
  277.     public function onMouseUp(_arg_1:MouseEvent):void {
  278.         this.mouseDown_ = false;
  279.         var _local_2:Player = this.gs_.map.player_;
  280.         if (_local_2 == null) {
  281.             return;
  282.         }
  283.         _local_2.isShooting = false;
  284.     }
  285.  
  286.     private function onMouseWheel(_arg_1:MouseEvent):void {
  287.         if (_arg_1.delta > 0) {
  288.             this.miniMapZoom.dispatch(MiniMapZoomSignal.IN);
  289.         }
  290.         else {
  291.             this.miniMapZoom.dispatch(MiniMapZoomSignal.OUT);
  292.         }
  293.     }
  294.  
  295.     private function onEnterFrame(_arg_1:Event):void {
  296.         var _local_2:Player;
  297.         var _local_3:Number;
  298.         if (enablePlayerInput_ && (mouseDown_ || autofire_) || Parameters.data_.AAOn) {
  299.             _local_2 = this.gs_.map.player_;
  300.             if (_local_2 != null) {
  301.                 if (_local_2.isUnstable()) {
  302.                     _local_2.attemptAttackAngle((Math.random() * 360));
  303.                 }
  304.                 else {
  305.                     _local_3 = Math.atan2(this.gs_.map.mouseY, this.gs_.map.mouseX);
  306.                     _local_2.attemptAttackAngle(_local_3);
  307.                 }
  308.             }
  309.         }
  310.     }
  311.    
  312.     private function handleAutoAbil(player:Player):Boolean {
  313.         if (!(player.objectType_ == 0x0300 || player.objectType_ == 0x031d || player.objectType_ == 0x031f || (player.objectType_ == 0x0310 && Parameters.data_.priestAA))) {
  314.             return false; //not rogue, warrior, paladin, priest
  315.         }
  316.         if (spaceSpam >= getTimer()) {
  317.             if (player.mapAutoAbil) {
  318.                 player.mapAutoAbil = false
  319.                 player.notifyPlayer("Auto Ability: Disabled", 0x00FF00, 1500);
  320.             }
  321.             return true; //not time yet
  322.         }
  323.         spaceSpam = getTimer() + 500;
  324.         switch(player.equipment_[1]) {
  325.             case 0xb27: //ghostly
  326.             case 0xae1: //twi
  327.             case 0xb29: //ggen
  328.             case 0xa6b: //ghelm
  329.             case 0xc08: //jugg
  330.             case 0xb26: //gcookie
  331.             case 0xa55: //zseal
  332.             case 0x21a2: //drape
  333.             case 0xc1e: //prot
  334.             case 0x16de: //ice prot
  335.                 player.mapAutoAbil = !player.mapAutoAbil;
  336.                 player.notifyPlayer(player.mapAutoAbil ? "Auto Ability: Enabled" : "Auto Ability: Disabled", 0x00FF00, 1500);
  337.                 return true;
  338.             case 0xa52: //T0 seal
  339.             case 0xad9: //T1 seal
  340.             case 0xa53: //T2 seal
  341.             case 0xada: //T3 seal
  342.             case 0xa54: //T4 seal
  343.            
  344.             case 0xa33: //T4 tome
  345.             case 0xa5b: //T5 tome
  346.             case 0xb25: //T6 tome
  347.             case 0xc09: //puri
  348.                 if (Parameters.data_.palaSpam) {
  349.                     player.mapAutoAbil = !player.mapAutoAbil;
  350.                     player.notifyPlayer(player.mapAutoAbil ? "Auto Ability: Enabled" : "Auto Ability: Disabled", 0x00FF00, 1500);
  351.                     return true;
  352.                 }
  353.         }
  354.         return false;
  355.     }
  356.    
  357.     private function isIgnored(igtype:int):Boolean {
  358.         for each (var type:int in Parameters.data_.AAIgnore) {
  359.             if (igtype == type) {
  360.                 return true;
  361.             }
  362.         }
  363.         if (Parameters.data_.tombHack && igtype >= 3366 && igtype <= 3368) { //tomb bosses
  364.             if (igtype != Parameters.data_.curBoss) {
  365.                 return true;
  366.             }
  367.         }
  368.         return false;
  369.     }
  370.    
  371.     private function handlePerfectAim(player:Player):void {
  372.         var po:Point = player.sToW(gs_.map.mouseX,gs_.map.mouseY);
  373.         var target:GameObject;
  374.         var obj:GameObject;
  375.         var distSq:int = int.MAX_VALUE;
  376.         var temp:int;
  377.         var projspd:Number = 0.015;
  378.         //find closest target to mouse with at least 1000 health
  379.         for each (obj in gs_.map.goDict_) {
  380.             if (obj.props_.isEnemy_ && obj.maxHP_ >= 1000 && !isIgnored(obj.objectType_)) {
  381.                 temp = (obj.x_ - po.x) * (obj.x_ - po.x) + (obj.y_ - po.y) * (obj.y_ - po.y);
  382.                 if (temp < distSq) {
  383.                     distSq = temp;
  384.                     target = obj;
  385.                 }
  386.             }
  387.         }
  388.         if (target == null) {
  389.             player.notifyPlayer("No targets nearby!", 0x00FF00, 1500);
  390.         }
  391.         else { //TODO see if enemy is too far
  392.             player.notifyPlayer(ObjectLibrary.typeToDisplayId_[target.objectType_], 0x00FF00, 1500);
  393.             if (!Parameters.data_.perfectLead) {
  394.                 aimAt(player, new Vector3D(target.x_, target.y_));
  395.             }
  396.             else {
  397.                 if (player.objectType_ == 798 || player.equipment_[1] == 0x1413) {
  398.                     projspd = 0.016;
  399.                 }
  400.                 if (player.equipment_[1] == 0x0d43) {
  401.                     projspd = 0.014;
  402.                 }
  403.                 aimAt(player, player.leadPos(new Vector3D(player.x_,player.y_), new Vector3D(target.x_,target.y_), new Vector3D(target.moveVec_.x,target.moveVec_.y), projspd));
  404.             }
  405.         }
  406.     }
  407.    
  408.     private function aimAt(player:Player, t:Vector3D):void {
  409.         if (Parameters.data_.inaccurate) {
  410.             t.x = int(t.x) + 0.5;
  411.             t.y = int(t.y) + 0.5;
  412.         }
  413.         gs_.gsc_.useItem(getTimer(), player.objectId_, 1, player.equipment_[1], t.x, t.y, UseType.START_USE);
  414.         player.doShoot(getTimer(), player.equipment_[1], ObjectLibrary.xmlLibrary_[player.equipment_[1]], Math.atan2(t.y - player.y_, t.x - player.x_), false);
  415.     }
  416.    
  417.     private function handlePerfectBomb(player:Player):Boolean {
  418.         if ((Parameters.data_.perfectQuiv && player.objectType_ == 775) || (Parameters.data_.perfectStun && player.objectType_ == 798)) {
  419.             handlePerfectAim(player);
  420.             return true;
  421.         }
  422.         if (!(player.objectType_ == 782 || player.objectType_ == 800)) { //wiz assassin
  423.             return false;
  424.         }
  425.         var target:GameObject;
  426.         var obj:GameObject;
  427.         var distSq:int;
  428.         //get target within 15 tiles that has the most health and at least 1000 health
  429.         for each (obj in gs_.map.goDict_) {
  430.             if (obj.props_.isEnemy_ && obj.maxHP_ >= 1000 && !isIgnored(obj.objectType_)) {
  431.                 distSq = (obj.x_ - player.x_) * (obj.x_ - player.x_) + (obj.y_ - player.y_) * (obj.y_ - player.y_);
  432.                 if (distSq < 225) {
  433.                     if (target == null || obj.maxHP_ > target.maxHP_) {
  434.                         target = obj;
  435.                     }
  436.                 }
  437.             }
  438.         }
  439.         if (target == null) {
  440.             player.notifyPlayer("No targets nearby!", 0x00FF00, 1500);
  441.         }
  442.         else if (target.isInvincible() || target.isInvulnerable() || target.isStasis()) {
  443.             player.notifyPlayer(ObjectLibrary.typeToDisplayId_[target.objectType_]+": Invulnerable", 0x00FF00, 1500);
  444.         }
  445.         else {
  446.             player.notifyPlayer(ObjectLibrary.typeToDisplayId_[target.objectType_], 0x00FF00, 1500);
  447.             if (Parameters.data_.inaccurate) {
  448.                 gs_.gsc_.useItem(getTimer(), player.objectId_, 1, player.equipment_[1], int(target.x_) + 1/2, int(target.y_) + 1/2, UseType.START_USE);
  449.             }
  450.             else {
  451.                 gs_.gsc_.useItem(getTimer(), player.objectId_, 1, player.equipment_[1], target.x_, target.y_, UseType.START_USE);
  452.             }
  453.         }
  454.         return true;
  455.     }
  456.    
  457.     private function handleCooldown(player:Player, abilXML:XML):void {
  458.         var cd:int = 500; //base cooldown
  459.         if (abilXML.hasOwnProperty("Cooldown")) {
  460.             cd = (Number(abilXML.Cooldown) * 1000);
  461.         }
  462.         player.lastAltAttack_ = getTimer();
  463.         player.nextAltAttack_ = getTimer() + cd;
  464.     }
  465.    
  466.     private function ninjaTap(player:Player):Boolean {
  467.         if (player.objectType_ != 0x0326) {
  468.             return false;
  469.         }
  470.         ninjaTapped = !ninjaTapped;
  471.         if (ninjaTapped) {
  472.             player.useAltWeapon(gs_.map.mouseX, gs_.map.mouseY, UseType.START_USE)
  473.         }
  474.         else {
  475.             player.useAltWeapon(gs_.map.mouseX, gs_.map.mouseY, UseType.END_USE)
  476.         }
  477.         return true;
  478.     }
  479.    
  480.     private function abilityUsed(player:Player, abilXML:XML):void {
  481.         specialKeyDown_ = true;
  482.         if (player == null)
  483.             return;
  484.         if (Parameters.data_.autoAbil && handleAutoAbil(player)) {
  485.             return;
  486.         }
  487.         if (player.nextAltAttack_ >= getTimer()) {
  488.             return;
  489.         }
  490.         if (int(abilXML.MpCost) > player.mp_) {
  491.             return;
  492.         }
  493.         if (Parameters.data_.perfectBomb && handlePerfectBomb(player)) {
  494.             handleCooldown(player, abilXML);
  495.             return;
  496.         }
  497.         if (Parameters.data_.ninjaTap && ninjaTap(player)) { //Parameter.data_.ninjaTap
  498.             return;
  499.         }
  500.         if (maxprism && (player.objectType_ == 804 || player.equipment_[1] == 0xa5a)) { //trickster or plane
  501.             var angle:Number = Math.atan2(gs_.map.mouseX, gs_.map.mouseY);
  502.             if (angle < 0) {
  503.                 angle += Math.PI * 2;
  504.             }
  505.             var desX:Number = 13 * 50 * Math.sin(angle); //hypotenuse 13 -> how far is the teleport used
  506.             var desY:Number = 13 * 50 * Math.cos(angle);
  507.             player.useAltWeapon(desX, desY, UseType.START_USE);
  508.             return;
  509.         }
  510.         if (player.isUnstable() && Parameters.data_.dbUnstableAbil) {
  511.             player.useAltWeapon(Math.random() * 600 - 300, Math.random() * 600 - 325, UseType.START_USE)
  512.         }
  513.         else {
  514.             player.useAltWeapon(gs_.map.mouseX, gs_.map.mouseY, UseType.START_USE)
  515.         }
  516.     }
  517.  
  518.     private function onKeyDown(_arg_1:KeyboardEvent):void {
  519.         var player:Player = gs_.map.player_;
  520.         var obj:GameObject;
  521.         var dist:int;
  522.         switch (_arg_1.keyCode) {
  523.             case KeyCodes.F1:
  524.             case KeyCodes.F2:
  525.             case KeyCodes.F3:
  526.             case KeyCodes.F4:
  527.             case KeyCodes.F5:
  528.             case KeyCodes.F6:
  529.             case KeyCodes.F7:
  530.             case KeyCodes.F8:
  531.             case KeyCodes.F9:
  532.             case KeyCodes.F10:
  533.             case KeyCodes.F11:
  534.             case KeyCodes.F12:
  535.             case KeyCodes.INSERT:
  536.             case KeyCodes.ALTERNATE:
  537.                 break;
  538.             default:
  539.                 if (gs_.stage.focus != null) {
  540.                     return;
  541.                 }
  542.         }
  543.         switch (_arg_1.keyCode) {
  544.             case Parameters.data_.moveUp:
  545.                 this.moveUp_ = 1;
  546.                 break;
  547.             case Parameters.data_.moveDown:
  548.                 this.moveDown_ = 1;
  549.                 break;
  550.             case Parameters.data_.moveLeft:
  551.                 this.moveLeft_ = 1;
  552.                 break;
  553.             case Parameters.data_.moveRight:
  554.                 this.moveRight_ = 1;
  555.                 break;
  556.             case Parameters.data_.useSpecial:
  557.                 abilityUsed(player, ObjectLibrary.xmlLibrary_[player.equipment_[1]]);
  558.                 break;
  559.             case Parameters.data_.QuestTeleport:
  560.                 var quest:GameObject = gs_.map.quest_.getObject(1);
  561.                 if(quest != null)
  562.                 {
  563.                     dist = int.MAX_VALUE;
  564.                     var _targetPlayer:String = "";
  565.                     for each(obj in gs_.map.goDict_) {
  566.                         if (obj is Player) {
  567.                             var _distSquared:int = (obj.x_ - quest.x_) * (obj.x_ - quest.x_) + (obj.y_ - quest.y_) * (obj.y_ - quest.y_);
  568.                             if (_distSquared < dist) {
  569.                                 dist = _distSquared;
  570.                                 _targetPlayer = obj.name_;
  571.                             }
  572.                             /*if ((_obj as Player).isInvisible()) { //invis check TODO
  573.                                
  574.                             }*/
  575.                         }
  576.                     }
  577.                     if (_targetPlayer == player.name_) {
  578.                         player.notifyPlayer("You are the closest!",0x00FF00,1500);
  579.                         break;
  580.                     }
  581.                     gs_.gsc_.teleport(_targetPlayer);
  582.                     //player.notifyPlayer("Teleporting to " + _targetPlayer,0x00FF00,1500);
  583.                 }
  584.                 else
  585.                 {
  586.                     player.notifyPlayer("You have no quest!",0x00FF00,1500);
  587.                 }
  588.                 break;
  589.             case Parameters.data_.enterPortal:
  590.                 dist = int.MAX_VALUE;
  591.                 var _targetPortal:int = -1;
  592.                 for each(obj in gs_.map.goDict_)
  593.                 {
  594.                     if(obj is Portal || obj is GuildHallPortal)
  595.                     {
  596.                         var _distSquared2:int = (obj.x_ - player.x_) * (obj.x_ - player.x_) + (obj.y_ - player.y_) * (obj.y_ - player.y_);
  597.                         if(_distSquared2 < dist)
  598.                         {
  599.                             dist = _distSquared2;
  600.                             _targetPortal = obj.objectId_;
  601.                         }
  602.                     }
  603.                 }
  604.                 if(_targetPortal == -1)
  605.                 {
  606.                     player.notifyPlayer("No portals to enter!",0x00FF00,1500);
  607.                     break;
  608.                 }
  609.                 //addTextLine.dispatch(ChatMessage.make(Parameters.CLIENT_CHAT_NAME, "entering "+_targetPortal));
  610.                 gs_.gsc_.usePortal(_targetPortal);
  611.                 break;
  612.             case Parameters.data_.incFinder:
  613.                 var holders:Array = new Array();
  614.                 for each(obj in gs_.map.goDict_)
  615.                 {
  616.                     if(obj is Player)
  617.                     {
  618.                         var thisPlayer:Player = obj as Player;
  619.                         for each (var item:int in thisPlayer.equipment_) {
  620.                             if (item == 1826) {
  621.                                 holders.push(thisPlayer.name_);
  622.                                 break;
  623.                             }
  624.                         }
  625.                     }
  626.                 }
  627.                 if(holders.length == 0)
  628.                 {
  629.                     player.notifyPlayer("No one has an inc!",0x00FF00,1500);
  630.                     break;
  631.                 }
  632.                 else {
  633.                     var k:int = 0;
  634.                     var msg:String = "Inc Holders:\n";
  635.                     for each (var name:String in holders) {
  636.                         msg = msg + name + "\n";
  637.                         k++;
  638.                     }
  639.                     player.notifyPlayer(msg,0x00FF00,1000 + 500 * k);
  640.                 }
  641.                 break;
  642.             case Parameters.data_.rotateLeft:
  643.                 if (!Parameters.data_.allowRotation) break;
  644.                 this.rotateLeft_ = 1;
  645.                 break;
  646.             case Parameters.data_.rotateRight:
  647.                 if (!Parameters.data_.allowRotation) break;
  648.                 this.rotateRight_ = 1;
  649.                 break;
  650.             case Parameters.data_.resetToDefaultCameraAngle:
  651.                 Parameters.data_.cameraAngle = Parameters.data_.defaultCameraAngle;
  652.                 Parameters.save();
  653.                 break;
  654.             case Parameters.data_.autofireToggle:
  655.                 player.isShooting = (this.autofire_ = !(this.autofire_));
  656.                 break;
  657.             case Parameters.data_.toggleHPBar:
  658.                 Parameters.data_.HPBar = !(Parameters.data_.HPBar);
  659.                 break;
  660.             case Parameters.data_.useInvSlot1:
  661.                 this.useItem(4);
  662.                 break;
  663.             case Parameters.data_.useInvSlot2:
  664.                 this.useItem(5);
  665.                 break;
  666.             case Parameters.data_.useInvSlot3:
  667.                 this.useItem(6);
  668.                 break;
  669.             case Parameters.data_.useInvSlot4:
  670.                 this.useItem(7);
  671.                 break;
  672.             case Parameters.data_.useInvSlot5:
  673.                 this.useItem(8);
  674.                 break;
  675.             case Parameters.data_.useInvSlot6:
  676.                 this.useItem(9);
  677.                 break;
  678.             case Parameters.data_.useInvSlot7:
  679.                 this.useItem(10);
  680.                 break;
  681.             case Parameters.data_.useInvSlot8:
  682.                 this.useItem(11);
  683.                 break;
  684.             case Parameters.data_.useHealthPotion:
  685.                 if (this.potionInventoryModel.getPotionModel(PotionInventoryModel.HEALTH_POTION_ID).available) {
  686.                     this.useBuyPotionSignal.dispatch(new UseBuyPotionVO(PotionInventoryModel.HEALTH_POTION_ID, UseBuyPotionVO.CONTEXTBUY));
  687.                 }
  688.                 break;
  689.             case Parameters.data_.useMagicPotion:
  690.                 if (this.potionInventoryModel.getPotionModel(PotionInventoryModel.MAGIC_POTION_ID).available) {
  691.                     this.useBuyPotionSignal.dispatch(new UseBuyPotionVO(PotionInventoryModel.MAGIC_POTION_ID, UseBuyPotionVO.CONTEXTBUY));
  692.                 }
  693.                 break;
  694.             case Parameters.data_.miniMapZoomOut:
  695.                 this.miniMapZoom.dispatch(MiniMapZoomSignal.OUT);
  696.                 break;
  697.             case Parameters.data_.miniMapZoomIn:
  698.                 this.miniMapZoom.dispatch(MiniMapZoomSignal.IN);
  699.                 break;
  700.             case Parameters.data_.togglePerformanceStats:
  701.                 this.togglePerformanceStats();
  702.                 break;
  703.             case Parameters.data_.escapeToNexus:
  704.             case Parameters.data_.escapeToNexus2:
  705.                 this.exitGame.dispatch();
  706.                 this.gs_.gsc_.escape();
  707.                 break;
  708.             case Parameters.data_.friendList:
  709.                 Parameters.data_.friendListDisplayFlag = !(Parameters.data_.friendListDisplayFlag);
  710.                 if (Parameters.data_.friendListDisplayFlag) {
  711.                     this.openDialogSignal.dispatch(new FriendListView());
  712.                 }
  713.                 else {
  714.                     this.closeDialogSignal.dispatch();
  715.                 }
  716.                 break;
  717.             case Parameters.data_.options:
  718.                 openOptions();
  719.                 break;
  720.             case Parameters.data_.toggleCentering:
  721.                 Parameters.data_.centerOnPlayer = !(Parameters.data_.centerOnPlayer);
  722.                 Parameters.save();
  723.                 break;
  724.             case Parameters.data_.switchTabs:
  725.                 //this.statsTabHotKeyInputSignal.dispatch();
  726.                 gs_.hudView.toggleStats();
  727.                 break;
  728.             //ADDITIONS
  729.             case Parameters.data_.ReconRealm:
  730.                 if (reconRealm != null) {
  731.                     reconRealm.charId_ = gs_.gsc_.charId_;
  732.                     gs_.dispatchEvent(reconRealm);
  733.                 }
  734.                 else {
  735.                     var tocon:Server = new Server();
  736.                     tocon.setName(Parameters.data_.servName);
  737.                     tocon.setAddress(Parameters.data_.servAddr);
  738.                     tocon.setPort(2050);
  739.                     var paramRecon:ReconnectEvent = new ReconnectEvent(
  740.                         tocon,
  741.                         Parameters.data_.reconGID,
  742.                         false,
  743.                         gs_.gsc_.charId_,
  744.                         Parameters.data_.reconTime,
  745.                         Parameters.data_.reconKey,
  746.                         false
  747.                     );
  748.                     gs_.dispatchEvent(paramRecon);
  749.                 }
  750.                 break;
  751.             case Parameters.data_.ReconRandom:
  752.                 if (reconVault != null) {
  753.                     reconRandom = reconVault;
  754.                     reconRandom.charId_ = gs_.gsc_.charId_;
  755.                     reconRandom.server_.name = "Random";
  756.                     reconRandom.gameId_ = -3;
  757.                     gs_.dispatchEvent(reconRandom);
  758.                 }
  759.             case Parameters.data_.ReconDung:
  760.                 if (reconDung != null) {
  761.                     if (getTimer() - dungTime < 180000) {
  762.                         reconDung.charId_ = gs_.gsc_.charId_;
  763.                         gs_.dispatchEvent(reconDung);
  764.                     }
  765.                 }
  766.                 else if (getTimer() - Parameters.data_.dreconTime < 180000) {
  767.                     var tocon2:Server = new Server();
  768.                     tocon2.setName(Parameters.data_.dservName);
  769.                     tocon2.setAddress(Parameters.data_.dservAddr);
  770.                     tocon2.setPort(2050);
  771.                     var paramRecon2:ReconnectEvent = new ReconnectEvent(
  772.                         tocon2,
  773.                         Parameters.data_.dreconGID,
  774.                         false,
  775.                         gs_.gsc_.charId_,
  776.                         Parameters.data_.dreconTime,
  777.                         Parameters.data_.dreconKey,
  778.                         false
  779.                     );
  780.                     gs_.dispatchEvent(paramRecon2);
  781.                 }
  782.                 break;
  783.             case Parameters.data_.ReconVault:
  784.                 if (reconVault != null) {
  785.                     reconVault.charId_ = gs_.gsc_.charId_;
  786.                     gs_.dispatchEvent(reconVault);
  787.                 }
  788.                 break;
  789.             //
  790.             case Parameters.data_.tpto:
  791.                 gs_.gsc_.teleport(TextHandler.caller);
  792.                 break;
  793.             case Parameters.data_.TextPause:
  794.                 gs_.gsc_.playerText("/pause");
  795.                 break;
  796.             case Parameters.data_.TextThessal:
  797.                 gs_.gsc_.playerText("He lives and reigns and conquers the world");
  798.                 break;
  799.             //
  800.             case Parameters.data_.msg1key:
  801.                 if (Parameters.data_.msg1 == null)
  802.                     break;
  803.                    
  804.                 parseChatMessage.dispatch(Parameters.data_.msg1);
  805.                 break;
  806.             case Parameters.data_.msg2key:
  807.                 if (Parameters.data_.msg2 == null)
  808.                     break;
  809.                    
  810.                 parseChatMessage.dispatch(Parameters.data_.msg2);
  811.                 break;
  812.             case Parameters.data_.msg3key:
  813.                 if (Parameters.data_.msg3 == null)
  814.                     break;
  815.                    
  816.                 parseChatMessage.dispatch(Parameters.data_.msg3);
  817.                 break;
  818.             //
  819.             case Parameters.data_.SkipRenderKey:
  820.                 MapUserInput.skipRender = !MapUserInput.skipRender;
  821.                 break;
  822.             case Parameters.data_.maxPrism:
  823.                 maxprism = !maxprism;
  824.                 player.notifyPlayer(maxprism ? "Max Prism: Enabled" : "Max Prism: Disabled",0x00FF00,1500);
  825.                 break;
  826.             case Parameters.data_.SWLightKey:
  827.                 player.mapLightSpeed = (this.lightSpeed = !(this.lightSpeed));
  828.                 break;
  829.             case Parameters.data_.Cam45DegInc:
  830.                 Parameters.data_.cameraAngle = Parameters.data_.cameraAngle - 0.785398163397448;
  831.                 Parameters.save();
  832.                 break;
  833.             case Parameters.data_.Cam45DegDec:
  834.                 Parameters.data_.cameraAngle = Parameters.data_.cameraAngle + 0.785398163397448;
  835.                 Parameters.save();
  836.                 break;
  837.             case Parameters.data_.cam2quest:
  838.                 var po:Point = gs_.map.quest_.getLoc();
  839.                 Parameters.data_.cameraAngle = Math.atan2(player.y_ - po.y, player.x_ - po.x) - 1.57079632679;
  840.                 Parameters.save();
  841.                 break;
  842.             case Parameters.data_.AAHotkey:
  843.                 Parameters.data_.AAOn = !Parameters.data_.AAOn;
  844.                 player.levelUpEffect(Parameters.data_.AAOn ? "Auto Aim: On" : "Auto Aim: Off");
  845.                 break;
  846.             case Parameters.data_.AAModeHotkey:
  847.                 selectAimMode();
  848.                 break;
  849.             case Parameters.data_.tombCycle:
  850.                 Parameters.data_.curBoss++;
  851.                 if (Parameters.data_.curBoss > 3368) {
  852.                     Parameters.data_.curBoss = 3366;
  853.                 }
  854.                 Parameters.save()
  855.                 player.notifyPlayer("Active boss: "+ObjectLibrary.typeToDisplayId_[Parameters.data_.curBoss],0x00FF00,1500);
  856.                 break;
  857.             case Parameters.data_.kautoSprite:
  858.                 Parameters.data_.autoSprite = !Parameters.data_.autoSprite;
  859.                 Parameters.save();
  860.                 player.notifyPlayer(Parameters.data_.autoSprite ? "Auto Sprite: On" : "Auto Sprite: Off", 0x00ff00, 1500);
  861.                 break;
  862.             case Parameters.data_.kdbPetrify:
  863.                 Parameters.data_.dbPetrify = !Parameters.data_.dbPetrify;
  864.                 Parameters.save();
  865.                 player.notifyPlayer(Parameters.data_.dbPetrify ? "Petrify: On" : "Petrify: Off", Parameters.data_.dbPetrify ? 0xff0000 : 0x00ff00, 1500);
  866.                 break;
  867.             case Parameters.data_.kdbArmorBroken:
  868.                 Parameters.data_.dbArmorBroken = !Parameters.data_.dbArmorBroken;
  869.                 Parameters.save();
  870.                 player.notifyPlayer(Parameters.data_.dbArmorBroken ? "Armor Broken: On" : "Armor Broken: Off", Parameters.data_.dbArmorBroken ? 0xff0000 : 0x00ff00, 1500);
  871.                 break;
  872.             case Parameters.data_.kdbBleeding:
  873.                 Parameters.data_.dbBleeding = !Parameters.data_.dbBleeding;
  874.                 Parameters.save();
  875.                 player.notifyPlayer(Parameters.data_.dbBleeding ? "Bleeding: On" : "Bleeding: Off", Parameters.data_.dbBleeding ? 0xff0000 : 0x00ff00, 1500);
  876.                 break;
  877.             case Parameters.data_.kdbDazed:
  878.                 Parameters.data_.dbDazed = !Parameters.data_.dbDazed;
  879.                 Parameters.save();
  880.                 player.notifyPlayer(Parameters.data_.dbDazed ? "Dazed: On" : "Dazed: Off", Parameters.data_.dbDazed ? 0xff0000 : 0x00ff00, 1500);
  881.                 break;
  882.             case Parameters.data_.kdbParalyzed:
  883.                 Parameters.data_.dbParalyzed = !Parameters.data_.dbParalyzed;
  884.                 Parameters.save();
  885.                 player.notifyPlayer(Parameters.data_.dbParalyzed ? "Paralyzed: On" : "Paralyzed: Off", Parameters.data_.dbParalyzed ? 0xff0000 : 0x00ff00, 1500);
  886.                 break;
  887.             case Parameters.data_.kdbSick:
  888.                 Parameters.data_.dbSick = !Parameters.data_.dbSick;
  889.                 Parameters.save();
  890.                 player.notifyPlayer(Parameters.data_.dbSick ? "Sick: On" : "Sick: Off", Parameters.data_.dbSick ? 0xff0000 : 0x00ff00, 1500);
  891.                 break;
  892.             case Parameters.data_.kdbSlowed:
  893.                 Parameters.data_.dbSlowed = !Parameters.data_.dbSlowed;
  894.                 Parameters.save();
  895.                 player.notifyPlayer(Parameters.data_.dbSlowed ? "Slowed: On" : "Slowed: Off", Parameters.data_.dbSlowed ? 0xff0000 : 0x00ff00, 1500);
  896.                 break;
  897.             case Parameters.data_.kdbStunned:
  898.                 Parameters.data_.dbStunned = !Parameters.data_.dbStunned;
  899.                 Parameters.save();
  900.                 player.notifyPlayer(Parameters.data_.dbStunned ? "Stunned: On" : "Stunned: Off", Parameters.data_.dbStunned ? 0xff0000 : 0x00ff00, 1500);
  901.                 break;
  902.             case Parameters.data_.kdbWeak:
  903.                 Parameters.data_.dbWeak = !Parameters.data_.dbWeak;
  904.                 Parameters.save();
  905.                 player.notifyPlayer(Parameters.data_.dbWeak ? "Weak: On" : "Weak: Off", Parameters.data_.dbWeak ? 0xff0000 : 0x00ff00, 1500);
  906.                 break;
  907.             case Parameters.data_.kdbQuiet:
  908.                 Parameters.data_.dbQuiet = !Parameters.data_.dbQuiet;
  909.                 Parameters.save();
  910.                 player.notifyPlayer(Parameters.data_.dbQuiet ? "Quiet: On" : "Quiet: Off", Parameters.data_.dbQuiet ? 0xff0000 : 0x00ff00, 1500);
  911.                 break;
  912.             case Parameters.data_.kdbPetStasis:
  913.                 Parameters.data_.dbPetStasis = !Parameters.data_.dbPetStasis;
  914.                 Parameters.save();
  915.                 player.notifyPlayer(Parameters.data_.dbPetStasis ? "Pet Stasis: On" : "Pet Stasis: Off", Parameters.data_.dbPetStasis ? 0xff0000 : 0x00ff00, 1500);
  916.                 break;
  917.             case Parameters.data_.kdbAll:
  918.                 Parameters.data_.dbAll = !Parameters.data_.dbAll;
  919.                 Parameters.data_.dbPetrify = Parameters.data_.dbAll;
  920.                 Parameters.data_.dbArmorBroken = Parameters.data_.dbAll;
  921.                 Parameters.data_.dbBleeding = Parameters.data_.dbAll;
  922.                 Parameters.data_.dbDazed = Parameters.data_.dbAll;
  923.                 Parameters.data_.dbParalyzed = Parameters.data_.dbAll;
  924.                 Parameters.data_.dbSick = Parameters.data_.dbAll;
  925.                 Parameters.data_.dbSlowed = Parameters.data_.dbAll;
  926.                 Parameters.data_.dbStunned = Parameters.data_.dbAll;
  927.                 Parameters.data_.dbWeak = Parameters.data_.dbAll;
  928.                 Parameters.data_.dbQuiet = Parameters.data_.dbAll;
  929.                 Parameters.data_.dbPetStasis = Parameters.data_.dbAll;
  930.                 Parameters.save();
  931.                 player.notifyPlayer(Parameters.data_.dbAll ? "All: On" : "All: Off", Parameters.data_.dbAll ? 0xff0000 : 0x00ff00, 1500);
  932.                 break;
  933.             case Parameters.data_.kdbPre1:
  934.                 activatePreset(1);
  935.                 break;
  936.             case Parameters.data_.kdbPre2:
  937.                 activatePreset(2);
  938.                 break;
  939.             case Parameters.data_.kdbPre3:
  940.                 activatePreset(3);
  941.                 break;
  942.             case Parameters.data_.resetCHP:
  943.                 player.chp = player.hp_;
  944.                 player.cmaxhp = player.maxHP_;
  945.                 player.cmaxhpboost = player.maxHPBoost_;
  946.                 break;
  947.             case Parameters.data_.pbToggle:
  948.                 Parameters.data_.perfectBomb = !Parameters.data_.perfectBomb;
  949.                 Parameters.save();
  950.                 player.notifyPlayer(Parameters.data_.perfectBomb ? "Spell Bomb Aim: On" : "Spell Bomb Aim: Off", 0x00ff00, 1500);
  951.                 break;
  952.             case Parameters.data_.tPassCover:
  953.                 Parameters.data_.PassesCover = !Parameters.data_.PassesCover;
  954.                 Parameters.save();
  955.                 player.notifyPlayer(Parameters.data_.PassesCover ? "Proj No-Clip: On" : "Proj No-Clip: Off", 0x00ff00, 1500);
  956.                 break;
  957.         }
  958.         this.setPlayerMovement();
  959.     }
  960.    
  961.     public function openOptions():void {
  962.         closeDialogSignal.dispatch();
  963.         clearInput();
  964.         GameSprite.hidePreloader();
  965.         layers.overlay.addChild(new Options(gs_));
  966.     }
  967.    
  968.     public function activatePreset(preset:int, setstate:int = -1):void { //very nice code indeed
  969.         var effTotal:int;
  970.         var state:Boolean;
  971.         var name:String;
  972.         switch (preset) {
  973.             case 1:
  974.                 name = Parameters.data_.dbPre1[0];
  975.                 effTotal = Parameters.data_.dbPre1[1];
  976.                 break;
  977.             case 2:
  978.                 name = Parameters.data_.dbPre2[0];
  979.                 effTotal = Parameters.data_.dbPre2[1];
  980.                 break;
  981.             case 3:
  982.                 name = Parameters.data_.dbPre3[0];
  983.                 effTotal = Parameters.data_.dbPre3[1];
  984.                 break;
  985.         }
  986.         if (effTotal == 0) {
  987.             return;
  988.         }
  989.         if (setstate == -1) {
  990.             switch (preset) {
  991.                 case 1:
  992.                     Parameters.data_.dbPre1[2] = !Parameters.data_.dbPre1[2];
  993.                     state = Parameters.data_.dbPre1[2];
  994.                     break;
  995.                 case 2:
  996.                     Parameters.data_.dbPre2[2] = !Parameters.data_.dbPre2[2];
  997.                     state = Parameters.data_.dbPre2[2];
  998.                     break;
  999.                 case 3:
  1000.                     Parameters.data_.dbPre3[2] = !Parameters.data_.dbPre3[2];
  1001.                     state = Parameters.data_.dbPre3[2];
  1002.                     break;
  1003.             }
  1004.         }
  1005.         else if (setstate == 0) { //off
  1006.             switch (preset) {
  1007.                 case 1:
  1008.                     Parameters.data_.dbPre1[2] = false;
  1009.                     state = Parameters.data_.dbPre1[2];
  1010.                     break;
  1011.                 case 2:
  1012.                     Parameters.data_.dbPre2[2] = false;
  1013.                     state = Parameters.data_.dbPre2[2];
  1014.                     break;
  1015.                 case 3:
  1016.                     Parameters.data_.dbPre3[2] = false;
  1017.                     state = Parameters.data_.dbPre3[2];
  1018.                     break;
  1019.             }
  1020.         }
  1021.         else if (setstate == 1) {
  1022.             switch (preset) {
  1023.                 case 1:
  1024.                     Parameters.data_.dbPre1[2] = true;
  1025.                     state = Parameters.data_.dbPre1[2];
  1026.                     break;
  1027.                 case 2:
  1028.                     Parameters.data_.dbPre2[2] = true;
  1029.                     state = Parameters.data_.dbPre2[2];
  1030.                     break;
  1031.                 case 3:
  1032.                     Parameters.data_.dbPre3[2] = true;
  1033.                     state = Parameters.data_.dbPre3[2];
  1034.                     break;
  1035.             }
  1036.         }
  1037.         for (var i:int = 0; i < 11; i++) {
  1038.             if ((effTotal & 1 << i) != 0) {
  1039.                 switch (i) {
  1040.                     case 0:
  1041.                         Parameters.data_.dbArmorBroken = state;
  1042.                         break;
  1043.                     case 1:
  1044.                         Parameters.data_.dbBleeding = state;
  1045.                         break;
  1046.                     case 2:
  1047.                         Parameters.data_.dbDazed = state;
  1048.                         break;
  1049.                     case 3:
  1050.                         Parameters.data_.dbParalyzed = state;
  1051.                         break;
  1052.                     case 4:
  1053.                         Parameters.data_.dbSick = state;
  1054.                         break;
  1055.                     case 5:
  1056.                         Parameters.data_.dbSlowed = state;
  1057.                         break;
  1058.                     case 6:
  1059.                         Parameters.data_.dbStunned = state;
  1060.                         break;
  1061.                     case 7:
  1062.                         Parameters.data_.dbWeak = state;
  1063.                         break;
  1064.                     case 8:
  1065.                         Parameters.data_.dbQuiet = state;
  1066.                         break;
  1067.                     case 9:
  1068.                         Parameters.data_.dbPetStasis = state;
  1069.                         break;
  1070.                     case 10:
  1071.                         Parameters.data_.dbPetrify = state;
  1072.                         break;
  1073.                 }
  1074.             }
  1075.         }
  1076.         Parameters.save();
  1077.         if (setstate != 0) {
  1078.             gs_.map.player_.notifyPlayer(state ? name+": On" : name+": Off", state ? 0xff0000 : 0x00ff00, 1500);
  1079.         }
  1080.     }
  1081.    
  1082.     private function selectAimMode() : void
  1083.     {
  1084.         var _loc1_:int = 0;
  1085.         var _loc2_:String = "";
  1086.         if (Parameters.data_.aimMode == undefined) {
  1087.             _loc1_ = 1;
  1088.         }
  1089.         else {
  1090.             _loc1_ = (Parameters.data_.aimMode + 1) % 3;
  1091.         }
  1092.         switch(_loc1_) {
  1093.             case 1:
  1094.                 _loc2_ = "Aim Assist Mode: Highest HP";
  1095.                 break;
  1096.             case 2:
  1097.                 _loc2_ = "Aim Assist Mode: Closest";
  1098.                 break;
  1099.             case 0:
  1100.                 _loc2_ = "Aim Assist Mode: Closest to Cursor";
  1101.         }
  1102.         gs_.map.player_.levelUpEffect(_loc2_);
  1103.         Parameters.data_.aimMode = _loc1_;
  1104.     }
  1105.  
  1106.     private function onKeyUp(_arg_1:KeyboardEvent):void {
  1107.         var _local_2:Number;
  1108.         var _local_3:Number;
  1109.         switch (_arg_1.keyCode) {
  1110.             case Parameters.data_.moveUp:
  1111.                 this.moveUp_ = 0;
  1112.                 break;
  1113.             case Parameters.data_.moveDown:
  1114.                 this.moveDown_ = 0;
  1115.                 break;
  1116.             case Parameters.data_.moveLeft:
  1117.                 this.moveLeft_ = 0;
  1118.                 break;
  1119.             case Parameters.data_.moveRight:
  1120.                 this.moveRight_ = 0;
  1121.                 break;
  1122.             case Parameters.data_.rotateLeft:
  1123.                 this.rotateLeft_ = 0;
  1124.                 break;
  1125.             case Parameters.data_.rotateRight:
  1126.                 this.rotateRight_ = 0;
  1127.                 break;
  1128.             case Parameters.data_.useSpecial:
  1129.                 this.specialKeyDown_ = false;
  1130.                 if (!Parameters.data_.ninjaTap && !inputting) {
  1131.                     gs_.map.player_.useAltWeapon(gs_.map.mouseX, gs_.map.mouseY, UseType.END_USE)
  1132.                 }
  1133.                 break;
  1134.         }
  1135.         this.setPlayerMovement();
  1136.     }
  1137.  
  1138.     private function setPlayerMovement():void {
  1139.         var _local_1:Player = this.gs_.map.player_;
  1140.         if (_local_1 != null) {
  1141.             if (enablePlayerInput_) {
  1142.                 _local_1.setRelativeMovement(rotateRight_ - rotateLeft_, moveRight_ - moveLeft_, moveDown_ - moveUp_);
  1143.             }
  1144.             else {
  1145.                 _local_1.setRelativeMovement(0, 0, 0);
  1146.             }
  1147.         }
  1148.     }
  1149.  
  1150.     private function useItem(_arg_1:int):void {
  1151.         /*if (this.tabStripModel.currentSelection == TabStripModel.BACKPACK) {
  1152.             _arg_1 = (_arg_1 + GeneralConstants.NUM_INVENTORY_SLOTS);
  1153.         }*/
  1154.         GameServerConnection.instance.useItem_new(this.gs_.map.player_, _arg_1);
  1155.     }
  1156.  
  1157.     private function togglePerformanceStats():void {
  1158.         if (this.gs_.contains(stats_)) {
  1159.             this.gs_.removeChild(stats_);
  1160.             this.gs_.removeChild(this.gs_.gsc_.jitterWatcher_);
  1161.             this.gs_.gsc_.disableJitterWatcher();
  1162.         }
  1163.         else {
  1164.             this.gs_.addChild(stats_);
  1165.             this.gs_.gsc_.enableJitterWatcher();
  1166.             this.gs_.gsc_.jitterWatcher_.y = stats_.height;
  1167.             this.gs_.addChild(this.gs_.gsc_.jitterWatcher_);
  1168.         }
  1169.     }
  1170.  
  1171.     private function toggleScreenShotMode():void {
  1172.         Parameters.screenShotMode_ = !(Parameters.screenShotMode_);
  1173.         if (Parameters.screenShotMode_) {
  1174.             this.gs_.hudView.visible = false;
  1175.             this.setTextBoxVisibility.dispatch(false);
  1176.         }
  1177.         else {
  1178.             this.gs_.hudView.visible = true;
  1179.             this.setTextBoxVisibility.dispatch(true);
  1180.         }
  1181.     }
  1182.  
  1183.  
  1184. }
  1185. }//package com.company.assembleegameclient.game
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement