home *** CD-ROM | disk | FTP | other *** search
/ 404 Jogos / CLJG.iso / Aventura / MindScape.swf / scripts / __Packages / Enemy9.as < prev    next >
Encoding:
Text File  |  2007-12-04  |  13.4 KB  |  364 lines

  1. class Enemy9 extends MovieClip
  2. {
  3.    var walkSpeed = 11.5;
  4.    var xStep = 0;
  5.    var yStep = 0;
  6.    var onGround = false;
  7.    var targetRot = 0;
  8.    var walking = false;
  9.    function Enemy9()
  10.    {
  11.       super();
  12.    }
  13.    function onLoad()
  14.    {
  15.       var _loc1_ = this;
  16.       _root.bonusScore = 7500;
  17.       var _loc3_ = _loc1_._name.split("_");
  18.       _loc1_.id = Number(_loc3_[1]);
  19.       var _loc2_ = _loc1_._parent.spawnPoints[9][_loc1_.id].split(":");
  20.       _loc1_._x = _loc2_[0] * _loc1_._parent.cellsize;
  21.       _loc1_._y = _loc2_[1] * _loc1_._parent.cellsize;
  22.       _loc1_._parent.cells[_loc2_[0]][_loc2_[1]].spawn = undefined;
  23.       _loc1_.onGround = false;
  24.       if(_loc1_._parent.cells[_loc2_[0]][_loc2_[1]].gravType > 0)
  25.       {
  26.          _loc1_.gravType = _loc1_._parent.cells[_loc2_[0]][_loc2_[1]].gravType;
  27.          _loc1_._rotation = 90 * (_loc1_.gravType - 1);
  28.       }
  29.       else
  30.       {
  31.          _loc1_.gravType = 1;
  32.       }
  33.       _loc1_.createEmptyMovieClip("sprite",1);
  34.       _loc1_.sprite._y = _loc1_._parent.cellsize / 2;
  35.       _loc1_.enemyStatus = "boss3_running_1";
  36.       _loc1_.sprite.attachMovie(_loc1_.enemyStatus,"sprite",1);
  37.       _loc1_.walking = true;
  38.       _loc1_._xscale = -100;
  39.       _loc1_.xStep = 0;
  40.    }
  41.    function onEnterFrame()
  42.    {
  43.       var _loc1_ = this;
  44.       var _loc2_ = _root;
  45.       if(_loc2_.bonusScore >= 3)
  46.       {
  47.          _loc2_.bonusScore -= 3;
  48.       }
  49.       if(_loc2_.currLvl == 103 && _loc2_.jukebox.music.position > 7520)
  50.       {
  51.          _loc1_.xStep = _loc1_.walkSpeed;
  52.       }
  53.       if(_loc1_.yStep != 0)
  54.       {
  55.          _loc1_.onGround = false;
  56.       }
  57.       if(_loc1_.onGround && _loc1_.enemyStatus != "boss3_running_1")
  58.       {
  59.          _loc1_.enemyStatus = "boss3_running_1";
  60.          _loc1_.sprite.attachMovie(_loc1_.enemyStatus,"sprite",1);
  61.       }
  62.       if(_loc1_.hitTest(_loc1_._parent.player))
  63.       {
  64.          _loc2_.endSuccess = true;
  65.          _loc2_.gotoAndPlay("cinematics");
  66.       }
  67.       _loc1_.xCell = Math.floor(_loc1_._x / _loc1_._parent.cellsize + 0.5);
  68.       _loc1_.yCell = Math.floor(_loc1_._y / _loc1_._parent.cellsize + 0.5);
  69.       if(_loc1_._parent.cells[_loc1_.xCell][_loc1_.yCell].clip == undefined)
  70.       {
  71.          if(_loc1_._parent.cells[_loc1_.xCell][_loc1_.yCell].tile == 2)
  72.          {
  73.             _loc1_.yCell = _loc1_.yCell + 1;
  74.          }
  75.          else if(_loc1_._parent.cells[_loc1_.xCell][_loc1_.yCell].tile == 3)
  76.          {
  77.             _loc1_.xCell = _loc1_.xCell - 1;
  78.          }
  79.          else if(_loc1_._parent.cells[_loc1_.xCell][_loc1_.yCell].tile == 4)
  80.          {
  81.             _loc1_.yCell = _loc1_.yCell - 1;
  82.          }
  83.          else if(_loc1_._parent.cells[_loc1_.xCell][_loc1_.yCell].tile == 5)
  84.          {
  85.             _loc1_.xCell = _loc1_.xCell + 1;
  86.          }
  87.          _loc1_._parent.spawnPoints[9][_loc1_.id] = _loc1_.xCell + ":" + _loc1_.yCell;
  88.          _loc1_._parent.cells[_loc1_.xCell][_loc1_.yCell].spawn = 9;
  89.          _loc1_._parent.cells[_loc1_.xCell][_loc1_.yCell].spawnId = _loc1_.id;
  90.          ┬º┬ºpush(_loc1_.removeMovieClip());
  91.       }
  92.       if((_loc1_._parent.cells[_loc1_.xCell + 4][_loc1_.yCell].edges[3] == 1 || _loc1_._parent.cells[_loc1_.xCell + 3][_loc1_.yCell].edges[3] == 1 || _loc1_._parent.cells[_loc1_.xCell + 2][_loc1_.yCell].edges[3] == 1 || _loc1_._parent.cells[_loc1_.xCell + 1][_loc1_.yCell].edges[3] == 1) && _loc1_.onGround)
  93.       {
  94.          _loc1_.yStep = -13;
  95.          if(_loc1_.enemyStatus != "boss3_jump_1")
  96.          {
  97.             _loc1_.enemyStatus = "boss3_jump_1";
  98.             _loc1_.sprite.attachMovie(_loc1_.enemyStatus,"sprite",1);
  99.          }
  100.       }
  101.       else if((_loc1_._parent.cells[_loc1_.xCell + 4][_loc1_.yCell - 1].edges[3] == 1 || _loc1_._parent.cells[_loc1_.xCell + 3][_loc1_.yCell - 1].edges[3] == 1 || _loc1_._parent.cells[_loc1_.xCell + 2][_loc1_.yCell - 1].edges[3] == 1 || _loc1_._parent.cells[_loc1_.xCell + 1][_loc1_.yCell - 1].edges[3] == 1) && _loc1_.onGround)
  102.       {
  103.          _loc1_.yStep = -13;
  104.          if(_loc1_.enemyStatus != "boss3_jump_1")
  105.          {
  106.             _loc1_.enemyStatus = "boss3_jump_1";
  107.             _loc1_.sprite.attachMovie(_loc1_.enemyStatus,"sprite",1);
  108.          }
  109.       }
  110.       if(_loc1_._parent.cells[_loc1_.xCell + 1][_loc1_.yCell].clip == undefined || _loc1_._parent.cells[_loc1_.xCell - 1][_loc1_.yCell].clip == undefined)
  111.       {
  112.          _loc1_.xStep = 0;
  113.       }
  114.       if(_loc1_._parent.gravity < _loc1_._parent.maxspeed)
  115.       {
  116.          _loc1_.yStep += _loc1_._parent.gravity;
  117.       }
  118.       if(_loc1_.gravType == 1)
  119.       {
  120.          _loc1_.futureY = _loc1_._y + _loc1_.yStep;
  121.          _loc1_.futureX = _loc1_._x + _loc1_.xStep;
  122.          _loc1_.targetRot = 0;
  123.       }
  124.       else if(_loc1_.gravType == 2)
  125.       {
  126.          _loc1_.futureY = _loc1_._y + _loc1_.xStep;
  127.          _loc1_.futureX = _loc1_._x - _loc1_.yStep;
  128.          _loc1_.targetRot = 90;
  129.       }
  130.       else if(_loc1_.gravType == 3)
  131.       {
  132.          _loc1_.futureY = _loc1_._y - _loc1_.yStep;
  133.          _loc1_.futureX = _loc1_._x - _loc1_.xStep;
  134.          if(_loc1_._rotation <= -90)
  135.          {
  136.             _loc1_.targetRot = -180;
  137.          }
  138.          else
  139.          {
  140.             _loc1_.targetRot = 180;
  141.          }
  142.       }
  143.       else if(_loc1_.gravType == 4)
  144.       {
  145.          _loc1_.futureY = _loc1_._y - _loc1_.xStep;
  146.          _loc1_.futureX = _loc1_._x + _loc1_.yStep;
  147.          if(_loc1_._rotation >= 180)
  148.          {
  149.             _loc1_.targetRot = 270;
  150.          }
  151.          else
  152.          {
  153.             _loc1_.targetRot = -90;
  154.          }
  155.       }
  156.       if((_loc1_.targetRot - _loc1_._rotation) * (_loc1_.targetRot - _loc1_._rotation) > 5)
  157.       {
  158.          _loc1_._rotation += (_loc1_.targetRot - _loc1_._rotation) / 2;
  159.       }
  160.       else
  161.       {
  162.          _loc1_._rotation = _loc1_.targetRot;
  163.          if(_loc1_._rotation == -180)
  164.          {
  165.             _loc1_._rotation = 180;
  166.          }
  167.          if(_loc1_._rotation == 270)
  168.          {
  169.             _loc1_._rotation = -90;
  170.          }
  171.       }
  172.       _loc1_.xCell = Math.floor(_loc1_.futureX / _loc1_._parent.cellsize + 0.5);
  173.       _loc1_.yCell = Math.floor(_loc1_.futureY / _loc1_._parent.cellsize + 0.5);
  174.       if(_loc1_._parent.cells[_loc1_.xCell][_loc1_.yCell].gravType != 0 && _loc1_._parent.cells[_loc1_.xCell][_loc1_.yCell].gravType != undefined)
  175.       {
  176.          if(_loc1_._parent.cells[_loc1_.xCell][_loc1_.yCell].gravType <= 4)
  177.          {
  178.             _loc1_.gravType = _loc1_._parent.cells[_loc1_.xCell][_loc1_.yCell].gravType;
  179.             _loc1_.shiftGrav = 0;
  180.          }
  181.          else if(_loc1_.shiftGrav != _loc1_._parent.cells[_loc1_.xCell][_loc1_.yCell].gravType - 4)
  182.          {
  183.             _loc1_.shiftGrav = _loc1_._parent.cells[_loc1_.xCell][_loc1_.yCell].gravType - 4;
  184.             if(_loc1_.shiftGrav == _loc1_.gravType)
  185.             {
  186.                if(_loc1_.gravType < 4)
  187.                {
  188.                   _loc1_.gravType = _loc1_.gravType + 1;
  189.                }
  190.                else
  191.                {
  192.                   _loc1_.gravType = 1;
  193.                }
  194.             }
  195.             else if(_loc1_.gravType > 1)
  196.             {
  197.                _loc1_.gravType = _loc1_.gravType - 1;
  198.             }
  199.             else
  200.             {
  201.                _loc1_.gravType = 4;
  202.             }
  203.          }
  204.       }
  205.       _loc1_.rawHitTest();
  206.       _loc1_._y = _loc1_.futureY;
  207.       _loc1_._x = _loc1_.futureX;
  208.    }
  209.    function rawHitTest()
  210.    {
  211.       var _loc1_ = this;
  212.       var _loc3_ = -1;
  213.       while(_loc3_ <= 1)
  214.       {
  215.          var _loc2_ = -1;
  216.          while(_loc2_ <= 1)
  217.          {
  218.             if(_loc1_.xCell != 0 && _loc1_.yCell != 0)
  219.             {
  220.                _loc1_.detailHitTest(_loc1_.xCell + _loc3_,_loc1_.yCell + _loc2_);
  221.             }
  222.             else if(_loc1_.xCell == 0 && _loc1_.yCell != 0 && _loc3_ >= 0)
  223.             {
  224.                _loc1_.detailHitTest(_loc1_.xCell + _loc3_,_loc1_.yCell + _loc2_);
  225.             }
  226.             else if(_loc1_.xCell != 0 && _loc1_.yCell == 0 && _loc2_ >= 0)
  227.             {
  228.                _loc1_.detailHitTest(_loc1_.xCell + _loc3_,_loc1_.yCell + _loc2_);
  229.             }
  230.             else if(_loc3_ >= 0 && _loc2_ >= 0)
  231.             {
  232.                _loc1_.detailHitTest(_loc1_.xCell + _loc3_,_loc1_.yCell + _loc2_);
  233.             }
  234.             _loc2_ = _loc2_ + 1;
  235.          }
  236.          _loc3_ = _loc3_ + 1;
  237.       }
  238.    }
  239.    function detailHitTest(tmpX, tmpY)
  240.    {
  241.       var _loc1_ = this;
  242.       var _loc2_ = tmpX;
  243.       var _loc3_ = tmpY;
  244.       _loc2_;
  245.       _loc3_;
  246.       var tile = _loc1_._parent.cells[_loc2_][_loc3_].tile;
  247.       if(tile >= 1 && tile <= 5)
  248.       {
  249.          var left = _loc1_.futureX - _loc1_._width / 2;
  250.          var right = _loc1_.futureX + _loc1_._width / 2;
  251.          var top = _loc1_.futureY - _loc1_._height / 2;
  252.          var bottom = _loc1_.futureY + _loc1_._height / 2;
  253.          if(tile == 1)
  254.          {
  255.             var cLeft = _loc1_._parent.cells[_loc2_][_loc3_].clip._x - _loc1_._parent.cellsize / 2;
  256.             var cRight = _loc1_._parent.cells[_loc2_][_loc3_].clip._x + _loc1_._parent.cellsize / 2;
  257.             var cTop = _loc1_._parent.cells[_loc2_][_loc3_].clip._y - _loc1_._parent.cellsize / 2;
  258.             var cBottom = _loc1_._parent.cells[_loc2_][_loc3_].clip._y + _loc1_._parent.cellsize / 2;
  259.          }
  260.          else if(tile == 2)
  261.          {
  262.             var cLeft = _loc1_._parent.cells[_loc2_][_loc3_].clip._x - _loc1_._parent.cellsize / 2;
  263.             var cRight = _loc1_._parent.cells[_loc2_][_loc3_].clip._x + _loc1_._parent.cellsize / 2;
  264.             var cTop = _loc1_._parent.cells[_loc2_][_loc3_].clip._y - _loc1_._parent.cellsize / 2;
  265.             var cBottom = _loc1_._parent.cells[_loc2_][_loc3_].clip._y;
  266.          }
  267.          else if(tile == 3)
  268.          {
  269.             var cLeft = _loc1_._parent.cells[_loc2_][_loc3_].clip._x;
  270.             var cRight = _loc1_._parent.cells[_loc2_][_loc3_].clip._x + _loc1_._parent.cellsize / 2;
  271.             var cTop = _loc1_._parent.cells[_loc2_][_loc3_].clip._y - _loc1_._parent.cellsize / 2;
  272.             var cBottom = _loc1_._parent.cells[_loc2_][_loc3_].clip._y + _loc1_._parent.cellsize / 2;
  273.          }
  274.          else if(tile == 4)
  275.          {
  276.             var cLeft = _loc1_._parent.cells[_loc2_][_loc3_].clip._x - _loc1_._parent.cellsize / 2;
  277.             var cRight = _loc1_._parent.cells[_loc2_][_loc3_].clip._x + _loc1_._parent.cellsize / 2;
  278.             var cTop = _loc1_._parent.cells[_loc2_][_loc3_].clip._y;
  279.             var cBottom = _loc1_._parent.cells[_loc2_][_loc3_].clip._y + _loc1_._parent.cellsize / 2;
  280.          }
  281.          else if(tile == 5)
  282.          {
  283.             var cLeft = _loc1_._parent.cells[_loc2_][_loc3_].clip._x - _loc1_._parent.cellsize / 2;
  284.             var cRight = _loc1_._parent.cells[_loc2_][_loc3_].clip._x;
  285.             var cTop = _loc1_._parent.cells[_loc2_][_loc3_].clip._y - _loc1_._parent.cellsize / 2;
  286.             var cBottom = _loc1_._parent.cells[_loc2_][_loc3_].clip._y + _loc1_._parent.cellsize / 2;
  287.          }
  288.          if(bottom > cTop && top < cBottom && left < cRight && right > cLeft)
  289.          {
  290.             var projUp = cTop - _loc1_._height / 2 - _loc1_.futureY;
  291.             var projDown = cBottom + _loc1_._height / 2 - _loc1_.futureY;
  292.             var projLeft = cLeft - _loc1_._width / 2 - _loc1_.futureX;
  293.             var projRight = cRight + _loc1_._width / 2 - _loc1_.futureX;
  294.             if(Math.sqrt(projUp * projUp) < Math.sqrt(projDown * projDown))
  295.             {
  296.                var projY = projUp;
  297.             }
  298.             else
  299.             {
  300.                var projY = projDown;
  301.             }
  302.             if(Math.sqrt(projLeft * projLeft) < Math.sqrt(projRight * projRight))
  303.             {
  304.                var projX = projLeft;
  305.             }
  306.             else
  307.             {
  308.                var projX = projRight;
  309.             }
  310.             if(Math.sqrt(projX * projX) < Math.sqrt(projY * projY))
  311.             {
  312.                if(!(_loc1_.gravType == 1 || _loc1_.gravType == 3))
  313.                {
  314.                   if(_loc1_.gravType == 2 || _loc1_.gravType == 4)
  315.                   {
  316.                      _loc1_.yStep = 0;
  317.                   }
  318.                }
  319.                _loc1_.futureX += projX;
  320.                if(projX == projRight && _loc1_.gravType == 2)
  321.                {
  322.                   if(!_loc1_.onGround)
  323.                   {
  324.                      _loc1_.onGround = true;
  325.                   }
  326.                }
  327.                else if(projX == projLeft && _loc1_.gravType == 4)
  328.                {
  329.                   if(!_loc1_.onGround)
  330.                   {
  331.                      _loc1_.onGround = true;
  332.                   }
  333.                }
  334.             }
  335.             else
  336.             {
  337.                if(_loc1_.gravType == 1 || _loc1_.gravType == 3)
  338.                {
  339.                   _loc1_.yStep = 0;
  340.                }
  341.                else if(_loc1_.gravType == 2 || _loc1_.gravType == 4)
  342.                {
  343.                }
  344.                _loc1_.futureY += projY;
  345.                if(projY == projUp && _loc1_.gravType == 1)
  346.                {
  347.                   if(!_loc1_.onGround)
  348.                   {
  349.                      _loc1_.onGround = true;
  350.                   }
  351.                }
  352.                else if(projY == projDown && _loc1_.gravType == 3)
  353.                {
  354.                   if(!_loc1_.onGround)
  355.                   {
  356.                      _loc1_.onGround = true;
  357.                   }
  358.                }
  359.             }
  360.          }
  361.       }
  362.    }
  363. }
  364.