Section 1
//ag_intro_mc_134 (MedievalMercenary_fla.ag_intro_mc_134)
package MedievalMercenary_fla {
import flash.display.*;
public dynamic class ag_intro_mc_134 extends MovieClip {
public function ag_intro_mc_134(){
addFrameScript(0, frame1, 216, frame217);
}
function frame217(){
stop();
MovieClip(parent).play();
MovieClip(parent).removeChild(this);
}
function frame1(){
MovieClip(parent).stop();
gotoAndPlay(2);
}
}
}//package MedievalMercenary_fla
Section 2
//MainTimeline (MedievalMercenary_fla.MainTimeline)
package MedievalMercenary_fla {
import flash.events.*;
import flash.display.*;
import flash.net.*;
public dynamic class MainTimeline extends MovieClip {
public var loader:MovieClip;
public var ag2:MovieClip;
public var ag1:MovieClip;
public function MainTimeline(){
addFrameScript(0, frame1, 17, frame18);
}
public function myloading(_arg1:Event){
var _local2:*;
var _local3:*;
var _local4:*;
trace("loading..");
_local2 = stage.loaderInfo.bytesTotal;
_local3 = stage.loaderInfo.bytesLoaded;
_local4 = Math.round(((_local3 * 100) / _local2));
if (_local3 >= _local2){
trace("loaded");
removeEventListener(MouseEvent.CLICK, pressed);
removeEventListener(Event.ENTER_FRAME, myloading);
loader.visible = false;
ag1.visible = false;
ag2.visible = false;
gotoAndPlay(2);
};
}
public function pressed(_arg1:MouseEvent){
navigateToURL(new URLRequest("http://www.armorgames.com"), "_blank");
}
function frame18(){
stop();
}
function frame1(){
stop();
addEventListener(MouseEvent.CLICK, pressed);
addEventListener(Event.ENTER_FRAME, myloading);
}
}
}//package MedievalMercenary_fla
Section 3
//Achievements (Achievements)
package {
public class Achievements {
static var list:Array;
public static function TestAtLevelComplete(){
var _local1:Achievement;
var _local2:Boolean;
var _local3:AchievementItem;
var _local4:Boolean;
for each (_local1 in list) {
if (_local1.complete == false){
_local2 = true;
for each (_local3 in _local1.items) {
_local4 = _local3.Test();
if (_local4 == false){
_local2 = false;
};
};
if (_local2){
_local1.complete = true;
trace((("ACHIEVEMENT: " + _local1.name) + " COMPLETED"));
} else {
trace((("ACHIEVEMENT: " + _local1.name) + " FAILED"));
};
};
};
}
public static function InitOnce(){
var _local1:XML;
var _local2:int;
var _local3:int;
var _local4:int;
var _local5:XML;
var _local6:Achievement;
var _local7:int;
var _local8:XML;
var _local9:AchievementItem;
list = new Array();
_local1 = ExternalData.xml;
_local2 = _local1.achievement.length();
_local3 = 0;
_local4 = 0;
_local3 = 0;
while (_local3 < _local2) {
_local5 = _local1.achievement[_local3];
_local6 = new Achievement();
_local6.name = _local5.@name;
list.push(_local6);
_local7 = _local5.item.length();
_local4 = 0;
while (_local4 < _local7) {
_local8 = _local5.item[_local4];
_local9 = new AchievementItem();
_local9.id = int(_local8.@id);
_local9.levelName = _local8.@level;
_local9.variableName = _local8.@variable;
_local9.condition = _local8.@condition;
_local9.value = _local8.@value;
_local6.items.push(_local9);
_local4++;
};
_local3++;
};
}
}
}//package
class AchievementItem {
private var variableName:String;
private var id:int;
private var levelName:String;
private var value:String;
private var condition:String;
public static const CONDITION_EQUALS:String = "equals";
public static const CONDITION_GREATERTHANEQUAL:String = "greaterthanequal";
public static const CONDITION_LESSTHANEQUAL:String = "lessthanequal";
public static const CONDITION_GREATERTHAN:String = "greaterthan";
public static const CONDITION_LESSTHAN:String = "lessthan";
private function AchievementItem(){
}
public function Test():Boolean{
var _local1:int;
var _local2:int;
return (false);
}
}
class Achievement {
private var items:Array;
private var complete:Boolean;
private var name:String;
private function Achievement(){
items = new Array();
name = "";
complete = false;
}
}
Section 4
//AnimDef (AnimDef)
package {
public class AnimDef {
var graphicID:int;
var f0:int;
var f1:int;
var name:String;
var eventList:Array;
var vel:Number;
public function AnimDef(_arg1:String, _arg2:int, _arg3:int, _arg4:int, _arg5:Number){
name = _arg1;
graphicID = _arg2;
f0 = (_arg3 - 1);
f1 = (_arg4 - 1);
vel = _arg5;
eventList = new Array();
}
public function AddEvent(_arg1:AnimEvent){
eventList.push(_arg1);
}
}
}//package
Section 5
//AnimEvent (AnimEvent)
package {
public class AnimEvent {
var functionName:String;
var frame:int;
public function AnimEvent(_arg1:int, _arg2:String){
frame = _arg1;
functionName = _arg2;
}
}
}//package
Section 6
//AnimPoint (AnimPoint)
package {
public class AnimPoint {
var frame:int;
var blank:Boolean;
var rot:Number;
var x:Number;
var y:Number;
public function AnimPoint(_arg1:int, _arg2:Number=0, _arg3:Number=0, _arg4:Number=0, _arg5:Boolean=false){
x = _arg2;
y = _arg3;
rot = _arg4;
frame = _arg1;
blank = _arg5;
}
}
}//package
Section 7
//AnimPoints (AnimPoints)
package {
public class AnimPoints {
static var anims:Array;
static var xml2:XML = <data>
<Motion duration="325">
<source>
<Source frameRate="12" x="0.9" y="0.1" scaleX="1.393" scaleY="1.393" rotation="-48.4" elementType="movie clip" instanceName="swordend" symbolName="marker1">
<dimensions>
<Rectangle left="-5.9" top="-5.9" width="10.9" height="10.9"/>
</dimensions>
<transformationPoint>
<Point x="0.536697247706422" y="0.5504587155963303"/>
</transformationPoint>
</Source>
</source>
<Keyframe index="0" blank="true"/>
<Keyframe index="1" blank="true"/>
<Keyframe index="2" blank="true"/>
<Keyframe index="3" blank="true"/>
<Keyframe index="4" blank="true"/>
<Keyframe index="5" blank="true"/>
<Keyframe index="6" blank="true"/>
<Keyframe index="7" blank="true"/>
<Keyframe index="8" blank="true"/>
<Keyframe index="9" blank="true"/>
<Keyframe index="10" blank="true"/>
<Keyframe index="11" blank="true"/>
<Keyframe index="12" blank="true"/>
<Keyframe index="13" blank="true"/>
<Keyframe index="14" blank="true"/>
<Keyframe index="15" blank="true"/>
<Keyframe index="16" blank="true"/>
<Keyframe index="17" blank="true"/>
<Keyframe index="18" blank="true"/>
<Keyframe index="19" blank="true"/>
<Keyframe index="20" blank="true"/>
<Keyframe index="21" blank="true"/>
<Keyframe index="22" blank="true"/>
<Keyframe index="23" blank="true"/>
<Keyframe index="24" blank="true"/>
<Keyframe index="25" blank="true"/>
<Keyframe index="26" blank="true"/>
<Keyframe index="27" blank="true"/>
<Keyframe index="28" blank="true"/>
<Keyframe index="29" blank="true"/>
<Keyframe index="30" blank="true"/>
<Keyframe index="31" blank="true"/>
<Keyframe index="32" blank="true"/>
<Keyframe index="33" blank="true"/>
<Keyframe index="34" blank="true"/>
<Keyframe index="35" blank="true"/>
<Keyframe index="36" blank="true"/>
<Keyframe index="37" blank="true"/>
<Keyframe index="38" blank="true"/>
<Keyframe index="39" blank="true"/>
<Keyframe index="40" blank="true"/>
<Keyframe index="41" blank="true"/>
<Keyframe index="42" blank="true"/>
<Keyframe index="43" blank="true"/>
<Keyframe index="44" blank="true"/>
<Keyframe index="45" blank="true"/>
<Keyframe index="46" blank="true"/>
<Keyframe index="47" blank="true"/>
<Keyframe index="48" blank="true"/>
<Keyframe index="49" blank="true"/>
<Keyframe index="50" blank="true"/>
<Keyframe index="51" blank="true"/>
<Keyframe index="52" blank="true"/>
<Keyframe index="53" blank="true"/>
<Keyframe index="54" blank="true"/>
<Keyframe index="55" blank="true"/>
<Keyframe index="56" blank="true"/>
<Keyframe index="57" blank="true"/>
<Keyframe index="58" blank="true"/>
<Keyframe index="59" blank="true"/>
<Keyframe index="60" blank="true"/>
<Keyframe index="61" blank="true"/>
<Keyframe index="62" blank="true"/>
<Keyframe index="63" blank="true"/>
<Keyframe index="64" blank="true"/>
<Keyframe index="65" blank="true"/>
<Keyframe index="66" blank="true"/>
<Keyframe index="67" blank="true"/>
<Keyframe index="68" blank="true"/>
<Keyframe index="69" blank="true"/>
<Keyframe index="70" blank="true"/>
<Keyframe index="71" blank="true"/>
<Keyframe index="72" blank="true"/>
<Keyframe index="73" blank="true"/>
<Keyframe index="74" blank="true"/>
<Keyframe index="75" blank="true"/>
<Keyframe index="76" blank="true"/>
<Keyframe index="77" blank="true"/>
<Keyframe index="78" blank="true"/>
<Keyframe index="79" blank="true"/>
<Keyframe index="80" blank="true"/>
<Keyframe index="81" blank="true"/>
<Keyframe index="82" blank="true"/>
<Keyframe index="83" blank="true"/>
<Keyframe index="84" blank="true"/>
<Keyframe index="85" blank="true"/>
<Keyframe index="86" blank="true"/>
<Keyframe index="87" blank="true"/>
<Keyframe index="88" blank="true"/>
<Keyframe index="89" blank="true"/>
<Keyframe index="90" blank="true"/>
<Keyframe index="91" blank="true"/>
<Keyframe index="92" blank="true"/>
<Keyframe index="93" blank="true"/>
<Keyframe index="94" blank="true"/>
<Keyframe index="95" blank="true"/>
<Keyframe index="96" blank="true"/>
<Keyframe index="97" blank="true"/>
<Keyframe index="98" blank="true"/>
<Keyframe index="99" blank="true"/>
<Keyframe index="100" blank="true"/>
<Keyframe index="101" blank="true"/>
<Keyframe index="102" blank="true"/>
<Keyframe index="103" blank="true"/>
<Keyframe index="104" blank="true"/>
<Keyframe index="105" blank="true"/>
<Keyframe index="106" blank="true"/>
<Keyframe index="107" blank="true"/>
<Keyframe index="108" blank="true"/>
<Keyframe index="109" blank="true"/>
<Keyframe index="110" blank="true"/>
<Keyframe index="111" blank="true"/>
<Keyframe index="112" blank="true"/>
<Keyframe index="113" blank="true"/>
<Keyframe index="114" blank="true"/>
<Keyframe index="115" blank="true"/>
<Keyframe index="116" blank="true"/>
<Keyframe index="117" blank="true"/>
<Keyframe index="118" blank="true"/>
<Keyframe index="119" blank="true"/>
<Keyframe index="120" blank="true"/>
<Keyframe index="121" blank="true"/>
<Keyframe index="122" x="74.1" y="-84.75">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="123" x="57.7" y="-119.05" scaleX="0.9992821249102656" scaleY="0.9992821249102656" rotation="-22.800000000000004">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="124" x="25" y="-136.7" scaleX="0.9985642498205313" scaleY="0.9985642498205313" rotation="-55.699999999999996">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="125" x="-2.45" y="-136.04999999999998" scaleX="0.9978463747307967" scaleY="0.9978463747307967" rotation="-74.5">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="126" x="-24.65" y="-124.69999999999999" scaleX="1" scaleY="1" rotation="-91.1">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="127" x="-9.3" y="-135.45" scaleX="0.9978463747307967" scaleY="0.9978463747307967" rotation="-78.69999999999999">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="128" x="29.6" y="-137.7" scaleX="0.9992821249102656" scaleY="0.9992821249102656" rotation="-53.1">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="129" x="59.7" y="-122.69999999999999" rotation="-34.300000000000004">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="130" x="79.85" y="-99.69999999999999" rotation="-15.100000000000001">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="131" x="90.35" y="-61.550000000000004" scaleX="0.996410624551328" scaleY="0.996410624551328" rotation="19.599999999999998">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="132" x="83.25" y="-72.85" scaleX="0.9971284996410624" scaleY="0.9971284996410624" rotation="13.799999999999997">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="133" x="80.6" y="-77.39999999999999" scaleX="0.9978463747307967" scaleY="0.9978463747307967" rotation="4.199999999999996">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="134" x="77.14999999999999" y="-81.44999999999999" rotation="6.799999999999997">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="135" x="74.1" y="-84.94999999999999" scaleX="1" scaleY="1" rotation="0"/>
<Keyframe index="136" x="27.200000000000003" y="-44.2">
<tweens>
<SimpleEase ease="1"/>
</tweens>
</Keyframe>
<Keyframe index="137" x="27.25" y="-45.15" scaleX="0.9985642498205313" scaleY="0.9985642498205313" rotation="-6">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="138" x="27.5" y="-46" rotation="-11">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="139" y="-46.6" scaleX="0.9978463747307967" scaleY="0.9978463747307967" rotation="-14.800000000000004">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="140" x="27.650000000000002" y="-47.050000000000004" rotation="-17.500000000000007">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="141" x="27.6" y="-47.300000000000004" rotation="-19.1">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="142" x="27.700000000000003" y="-47.45" scaleX="0.9992821249102656" scaleY="0.9992821249102656" rotation="-19.6">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="143" x="18.25" y="-46.85" scaleX="0.9978463747307967" scaleY="0.9978463747307967" rotation="29.599999999999998">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="144" x="14.35" y="-53.35" scaleX="0.996410624551328" scaleY="0.996410624551328" rotation="78.7">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="145" x="21.85" y="-58.95" scaleX="0.9978463747307967" scaleY="0.9978463747307967" rotation="127.9">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="146" x="26.3" y="-55.1" scaleX="0.867910983488873" scaleY="0.9956927494615937" skewX="167.2" skewY="166">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="147" x="20.55" y="-47.95" scaleX="0.7394113424264178" skewX="206.8" skewY="204.3">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="148" x="5.3" y="-45.75" scaleX="0.6116295764536971" scaleY="0.996410624551328" skewX="-113.79999999999998" skewY="-117.5">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="149" x="9.9" y="-44.9" scaleX="0.6511127063890884" scaleY="0.9949748743718592" skewX="217.1" skewY="213.6">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="150" x="14.5" y="-44" scaleX="0.6913137114142139" scaleY="0.9942569992821249" skewX="188" skewY="184.3">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="151" x="19.150000000000002" y="-43.300000000000004" scaleX="0.7315147164393395" skewX="158.9" skewY="155.2">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="152" x="23.75" y="-42.4" scaleX="0.7724335965541996" scaleY="0.9949748743718592" skewX="129.8" skewY="126.19999999999999">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="153" x="24.950000000000003" y="-43" scaleX="0.8470926058865756" skewX="86.5" skewY="84">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="154" x="26.05" y="-43.6" scaleX="0.923905240488155" scaleY="0.9978463747307967" skewX="43.4" skewY="42.1">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="155" x="27.200000000000003" y="-44.2" scaleX="1" scaleY="1" rotation="0"/>
<Keyframe index="156" blank="true"/>
<Keyframe index="157" blank="true"/>
<Keyframe index="158" blank="true"/>
<Keyframe index="159" blank="true"/>
<Keyframe index="160" blank="true"/>
<Keyframe index="161" blank="true"/>
<Keyframe index="162" blank="true"/>
<Keyframe index="163" blank="true"/>
<Keyframe index="164" blank="true"/>
<Keyframe index="165" blank="true"/>
<Keyframe index="166" blank="true"/>
<Keyframe index="167" blank="true"/>
<Keyframe index="168" blank="true"/>
<Keyframe index="169" blank="true"/>
<Keyframe index="170" blank="true"/>
<Keyframe index="171" blank="true"/>
<Keyframe index="172" blank="true"/>
<Keyframe index="173" blank="true"/>
<Keyframe index="174" blank="true"/>
<Keyframe index="175" blank="true"/>
<Keyframe index="176" blank="true"/>
<Keyframe index="177" blank="true"/>
<Keyframe index="178" blank="true"/>
<Keyframe index="179" blank="true"/>
<Keyframe index="180" x="16.1" y="-37.300000000000004">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="181" x="23.900000000000002" y="-51" scaleX="0.9992821249102656" scaleY="0.9992821249102656" rotation="-28.300000000000004">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="182" x="31.85" y="-64.55" scaleX="0.9985642498205313" scaleY="0.9985642498205313" rotation="-56.199999999999996">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="183" x="39.75" y="-78.14999999999999" scaleX="0.9978463747307967" scaleY="0.9978463747307967" rotation="-84.5">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="184" x="47.75" y="-91.69999999999999" scaleX="0.9992821249102656" scaleY="0.9992821249102656" rotation="-112.6">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="185" x="45.050000000000004" y="-78.39999999999999" scaleX="0.9971284996410624" scaleY="0.9971284996410624" rotation="-90">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="186" x="42.2" y="-65.14999999999999" scaleX="0.9978463747307967" scaleY="0.9978463747307967" rotation="-67.4">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="187" x="39.45" y="-51.85" scaleX="0.9985642498205313" scaleY="0.9985642498205313" rotation="-44.6">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="188" x="36.7" y="-38.550000000000004" scaleX="0.9992821249102656" scaleY="0.9992821249102656" rotation="-22.1">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="189" x="33.300000000000004" y="-38.35" scaleX="0.9978463747307967" scaleY="0.9978463747307967" rotation="-18.500000000000007">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="190" x="29.85" y="-38.15" rotation="-14.800000000000004">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="191" x="26.35" y="-37.95" scaleX="0.9985642498205313" scaleY="0.9985642498205313" rotation="-11">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="192" x="22.950000000000003" y="-37.75" rotation="-7.5">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="193" x="19.5" y="-37.5" rotation="-3.700000000000003">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="194" x="16.1" y="-37.300000000000004" scaleX="1" scaleY="1" rotation="0">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="195" x="20.200000000000003" y="-47" scaleX="0.9992821249102656" scaleY="0.9992821249102656" rotation="-24.1">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="196" x="24.400000000000002" y="-56.75" scaleX="1" scaleY="1" rotation="-48.1">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="197" x="28.55" y="-66.5" scaleX="0.9985642498205313" scaleY="0.9985642498205313" rotation="-72.19999999999999">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="198" x="32.75" y="-76.19999999999999" scaleX="1" scaleY="1" rotation="-96.29999999999998">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="199" x="29.75" y="-71.85" scaleX="0.9971284996410624" scaleY="0.9971284996410624" rotation="-88.9">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="200" x="25.400000000000002" y="-63.4" scaleX="0.9956927494615937" scaleY="0.9956927494615937" rotation="-64.4">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="201" x="21.1" y="-54.95" rotation="-39.800000000000004">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="202" x="16.75" y="-46.6" rotation="-15.300000000000004">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="203" x="17.8" y="-54.1" scaleX="0.9985642498205313" scaleY="0.9985642498205313" rotation="33.3">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="204" x="23.8" y="-60.6" scaleX="0.9956927494615937" scaleY="0.9956927494615937" rotation="91">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="205" x="29.75" y="-67.1" scaleX="0.996410624551328" scaleY="0.996410624551328" rotation="148.9">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="206" x="30.8" y="-60.6" scaleX="0.9956927494615937" scaleY="0.9956927494615937" rotation="180.8">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="207" x="31.800000000000004" y="-54.1" scaleX="0.9985642498205313" scaleY="0.9985642498205313" rotation="212.8">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="208" x="29.200000000000003" y="-59.6" scaleX="0.9956927494615937" scaleY="0.9956927494615937" rotation="189.6">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="209" x="26.55" y="-65.14999999999999" rotation="166.2">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="210" x="24" y="-70.64999999999999" scaleX="0.996410624551328" scaleY="0.996410624551328" rotation="143.2">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="211" x="21.35" y="-59.45" scaleX="0.9956927494615937" scaleY="0.9956927494615937" rotation="86.69999999999999">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="212" x="18.75" y="-48.35" scaleX="0.9978463747307967" scaleY="0.9978463747307967" rotation="30.299999999999997">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="213" x="16.1" y="-37.300000000000004" scaleX="1" scaleY="1" rotation="0">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="214">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="215" x="14.15" y="-56.25" scaleX="0.9985642498205313" scaleY="0.9985642498205313" rotation="61.7">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="216" x="12.049999999999999" y="-75.14999999999999" scaleX="0.9978463747307967" scaleY="0.9978463747307967" rotation="123.80000000000001">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="217" x="6.75" y="-65.8" scaleX="0.9985642498205313" scaleY="0.9985642498205313" rotation="143.9">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="218" x="1.4" y="-56.45" scaleX="0.9978463747307967" scaleY="0.9978463747307967" rotation="164">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="219" x="-3.9" y="-47.1" scaleX="1" scaleY="1" rotation="184.3">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="220" x="-0.4" y="-52.6" scaleX="0.9971284996410624" scaleY="0.9971284996410624" rotation="168">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="221" x="3.0500000000000003" y="-58.1" rotation="151.7">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="222" x="6.6" y="-63.550000000000004" scaleX="0.996410624551328" scaleY="0.996410624551328" rotation="135.4">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="223" x="9.45" y="-58.35" scaleX="0.9956927494615937" scaleY="0.9956927494615937" rotation="94">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="224" x="12.35" y="-53.25" scaleX="0.9985642498205313" scaleY="0.9985642498205313" rotation="52.5">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="225" x="15.15" y="-48" scaleX="0.9992821249102656" scaleY="0.9992821249102656" rotation="11.299999999999997">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="226" x="23.05" y="-49.95" scaleX="0.996410624551328" scaleY="0.996410624551328" rotation="-6.5">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="227" x="23.35" y="-50.25" scaleX="0.9956927494615937" scaleY="0.9956927494615937" rotation="-10">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="228" x="23.650000000000002" y="-50.65" scaleX="0.9971284996410624" scaleY="0.9971284996410624" rotation="-13.200000000000003">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="229" x="21.150000000000002" y="-46.15" rotation="-8.800000000000004">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="230" x="18.6" y="-41.7" scaleX="0.9978463747307967" scaleY="0.9978463747307967" rotation="-4.5">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="231" x="16.1" y="-37.300000000000004" scaleX="1" scaleY="1" rotation="0">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="232" x="13.85" y="-39" scaleX="0.9985642498205313" scaleY="0.9985642498205313" rotation="23.599999999999998">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="233" x="11.5" y="-40.6" scaleX="0.9992821249102656" scaleY="0.9992821249102656" rotation="47.4">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="234" x="9.2" y="-42.2" rotation="70.9">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="235" x="16.1" y="-39.85" scaleX="0.9956927494615937" scaleY="0.9956927494615937" rotation="54.699999999999996">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="236" x="8.1" y="-38.7" scaleX="0.9928212491026561" scaleY="0.9928212491026561" rotation="58.7">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="237" x="-9.9" y="-38.65" scaleX="0.9913854989231874" scaleY="0.9913854989231874" rotation="66.9">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="238" x="-23.95" y="-71" scaleX="0.9942569992821249" scaleY="0.9942569992821249" rotation="136.9">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="239" x="-15.9" y="-35.35" scaleX="0.9978463747307967" scaleY="0.9978463747307967" rotation="206.5">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="240">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="241" x="12.1" y="-23.35">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="242" x="46.1" y="-27.35">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="243" x="81.1" y="-28.35">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="244" x="119.05" y="-35.35">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="245" x="62.050000000000004" y="-94.35" scaleX="0.9971284996410624" scaleY="0.9971284996410624" rotation="106.5">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="246" x="43.95" y="-95.35" scaleX="0.9956927494615937" scaleY="0.9956927494615937" rotation="42.3">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="247" scaleX="0.9942569992821249" scaleY="0.9942569992821249" rotation="6.699999999999996">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="248" x="38.95" y="-89.35" rotation="3.1999999999999957">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="249">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="250" x="82.89999999999999" y="-47.35" scaleX="0.9921033740129217" scaleY="0.9921033740129217" rotation="-45.199999999999996">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="251">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="252" x="86.89999999999999" y="-40.35">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="253" x="91.89999999999999" y="-9.35">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="254" x="60.800000000000004" y="-72.44999999999999" scaleX="0.9913854989231874" scaleY="0.9913854989231874" rotation="106.69999999999999">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="255" x="74.85" y="-87.39999999999999" scaleX="0.9892318736539841" scaleY="0.9892318736539841" rotation="158.9">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="256" y="-87.44999999999999" scaleX="0.9885139985642498" scaleY="0.9885139985642498" rotation="226.1">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="257" x="67.85" y="-96.5" scaleX="0.9863603732950468" scaleY="0.9863603732950468" rotation="-84.29999999999998">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="258" x="56.9" y="-89.64999999999999" scaleX="0.9856424982053122" scaleY="0.9856424982053122" rotation="-16.1">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="259" scaleX="0.9842067480258435" scaleY="0.9842067480258435" rotation="24.7">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="260" y="-89.6" scaleX="0.9827709978463747" scaleY="0.9827709978463747" rotation="61.599999999999994">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="261" scaleX="0.9813352476669059" scaleY="0.9813352476669059" rotation="88.9">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="262" y="-89.5" scaleX="0.9798994974874372" scaleY="0.9798994974874372" rotation="124.69999999999999">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="263" y="-76.5" scaleX="0.9784637473079684" scaleY="0.9784637473079684" rotation="139.2">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="264" x="54.95" y="-119.55" scaleX="0.9770279971284996" scaleY="0.9770279971284996" rotation="108.1">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="265" x="0.9999999999999999" y="-126.6" scaleX="0.9755922469490308" scaleY="0.9755922469490308" rotation="49.4">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="266" x="-36.949999999999996" y="-141.6">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="267" x="-75.95" y="-135.6">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="268" x="-93.95" y="-136.6">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="269">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="270" x="-28.95" y="-145.6">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="271" x="41" y="-119.6">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="272" x="57" y="-56.6">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="273" y="-56.65" scaleX="0.9741564967695621" scaleY="0.9741564967695621" rotation="93.8">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="274" y="-56.7" scaleX="0.9727207465900933" scaleY="0.9727207465900933" rotation="123.4">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="275" x="63" y="-71.69999999999999" scaleX="0.972002871500359" scaleY="0.972002871500359" rotation="141.9">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="276" y="-73.69999999999999" rotation="146.7">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="277" blank="true" tweenSync="true"/>
<Keyframe index="278" blank="true" tweenSync="true"/>
<Keyframe index="279" blank="true" tweenSync="true"/>
<Keyframe index="280" blank="true" tweenSync="true"/>
<Keyframe index="281" blank="true" tweenSync="true"/>
<Keyframe index="282" blank="true" tweenSync="true"/>
<Keyframe index="283" blank="true" tweenSync="true"/>
<Keyframe index="284" blank="true" tweenSync="true"/>
<Keyframe index="285" blank="true" tweenSync="true"/>
<Keyframe index="286" blank="true" tweenSync="true"/>
<Keyframe index="287" blank="true" tweenSync="true"/>
<Keyframe index="288" blank="true" tweenSync="true"/>
<Keyframe index="289" blank="true" tweenSync="true"/>
<Keyframe index="290" blank="true" tweenSync="true"/>
<Keyframe index="291" blank="true" tweenSync="true"/>
<Keyframe index="292" blank="true" tweenSync="true"/>
<Keyframe index="293" blank="true" tweenSync="true"/>
<Keyframe index="294" blank="true" tweenSync="true"/>
<Keyframe index="295" blank="true" tweenSync="true"/>
<Keyframe index="296" blank="true" tweenSync="true"/>
<Keyframe index="297" blank="true" tweenSync="true"/>
<Keyframe index="298" blank="true" tweenSync="true"/>
<Keyframe index="299" blank="true" tweenSync="true"/>
<Keyframe index="300" blank="true" tweenSync="true"/>
<Keyframe index="301" blank="true" tweenSync="true"/>
<Keyframe index="302" blank="true" tweenSync="true"/>
<Keyframe index="303" blank="true" tweenSync="true"/>
<Keyframe index="304" blank="true" tweenSync="true"/>
<Keyframe index="305" blank="true" tweenSync="true"/>
<Keyframe index="306" blank="true" tweenSync="true"/>
<Keyframe index="307" blank="true" tweenSync="true"/>
<Keyframe index="308" blank="true" tweenSync="true"/>
<Keyframe index="309" blank="true" tweenSync="true"/>
<Keyframe index="310" blank="true" tweenSync="true"/>
<Keyframe index="311" blank="true" tweenSync="true"/>
<Keyframe index="312" blank="true" tweenSync="true"/>
<Keyframe index="313" blank="true" tweenSync="true"/>
<Keyframe index="314" blank="true" tweenSync="true"/>
<Keyframe index="315" blank="true" tweenSync="true"/>
<Keyframe index="316" blank="true" tweenSync="true"/>
<Keyframe index="317" blank="true" tweenSync="true"/>
<Keyframe index="318" blank="true" tweenSync="true"/>
<Keyframe index="319" blank="true" tweenSync="true"/>
<Keyframe index="320" blank="true" tweenSync="true"/>
<Keyframe index="321" blank="true" tweenSync="true"/>
<Keyframe index="322" blank="true" tweenSync="true"/>
<Keyframe index="323" blank="true" tweenSync="true"/>
<Keyframe index="324" blank="true" tweenSync="true"/>
</Motion>
</data>
;
static var xml1:XML = <data>
<Motion duration="325">
<source>
<Source frameRate="34" x="36" y="-53.8" scaleX="1.395" scaleY="1.395" rotation="-54.2" elementType="movie clip" instanceName="head" symbolName="marker1">
<dimensions>
<Rectangle left="-5.9" top="-5.9" width="10.9" height="10.9"/>
</dimensions>
<transformationPoint>
<Point x="0.5412844036697247" y="0.5412844036697247"/>
</transformationPoint>
</Source>
</source>
<Keyframe index="0">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="1" y="-0.10000000000000142" scaleX="0.9985663082437276" scaleY="0.9985663082437276">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="2" y="-0.25">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="3" y="-0.4000000000000057">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="4" y="-0.5">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="5" y="-0.6500000000000057">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="6" y="-0.8000000000000043">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="7" x="0" y="-1" scaleX="1" scaleY="1">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="8" y="-0.8000000000000043" scaleX="0.9985663082437276" scaleY="0.9985663082437276">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="9" y="-0.6500000000000057">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="10" y="-0.5">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="11" y="-0.4000000000000057">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="12" y="-0.25">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="13" y="-0.10000000000000142">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="14" y="0" scaleX="1" scaleY="1"/>
<Keyframe index="15" x="-9.5" y="-12.5" scaleX="0.9992831541218637" scaleY="0.9992831541218637" rotation="-14.299999999999997">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="16" x="-13.05" y="-9.650000000000006" scaleX="0.9971326164874552" scaleY="0.9971326164874552" rotation="-5">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="17" x="-16.65" y="-6.650000000000006" rotation="4.600000000000001">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="18" x="-20.3" y="-3.75" scaleX="0.996415770609319" scaleY="0.996415770609319" rotation="14.100000000000001">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="19" x="-23.85" y="-0.8000000000000043" rotation="23.6">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="20" x="-27.5" y="2.0999999999999943" scaleX="0.9971326164874552" scaleY="0.9971326164874552" rotation="32.900000000000006">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="21" x="-21.75" y="0.3999999999999986" scaleX="0.9949820788530465" scaleY="0.9949820788530465" rotation="20.800000000000004">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="22" x="-15.95" y="-1.25" scaleX="0.9942652329749104" scaleY="0.9942652329749104" rotation="8.600000000000001">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="23" x="-10.25" y="-3" scaleX="0.9956989247311828" scaleY="0.9956989247311828" rotation="-3.6999999999999957">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="24" x="-8.95" y="-8.150000000000006" scaleX="0.9935483870967741" scaleY="0.9935483870967741" rotation="-12.700000000000003">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="25" x="-7.699999999999999" y="-13.299999999999997" rotation="-21.700000000000003">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="26" x="-6.5" y="-18.5" scaleX="0.9942652329749104" scaleY="0.9942652329749104" rotation="-30.5">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="27" x="-8.05" y="-21.549999999999997" scaleX="0.9935483870967741" scaleY="0.9935483870967741" rotation="-36.099999999999994">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="28" x="-9.55" y="-24.5" scaleX="0.992831541218638" scaleY="0.992831541218638" rotation="-41.599999999999994">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="29" x="-10.75" y="-21.900000000000006" rotation="-47.39999999999999">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="30" x="-10.55" y="-19.60000000000001" scaleX="0.9942652329749104" scaleY="0.9942652329749104" rotation="-39.099999999999994">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="31" x="-10.149999999999999" y="-17.200000000000003" scaleX="0.9956989247311828" scaleY="0.9956989247311828" rotation="-31">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="32" x="-9.8" y="-14.850000000000009" scaleX="0.9971326164874552" scaleY="0.9971326164874552" rotation="-22.700000000000003">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="33" x="-9.5" y="-12.5" scaleX="0.9992831541218637" scaleY="0.9992831541218637" rotation="-14.299999999999997"/>
<Keyframe index="34" x="4.5" y="-3.4000000000000057" scaleX="0.996415770609319" scaleY="0.996415770609319" rotation="28.300000000000004">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="35" x="5.049999999999997" y="-3.700000000000003" scaleX="0.9949820788530465" scaleY="0.9949820788530465" rotation="28.400000000000002">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="36" x="5.5" y="-4.100000000000001">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="37" x="6" y="-4.5">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="38" x="6.450000000000003" y="-4.900000000000006">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="39" x="6.950000000000003" y="-5.300000000000004">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="40" x="7.399999999999999" y="-5.700000000000003">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="41" x="7.899999999999999" y="-6.100000000000001">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="42" x="8.350000000000001" y="-6.5">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="43" x="8.850000000000001" y="-6.900000000000006">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="44" x="9.25" y="-7.400000000000006" scaleX="0.996415770609319" scaleY="0.996415770609319" rotation="28.300000000000004">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="45" x="8.700000000000003" y="-6.900000000000006" scaleX="0.9949820788530465" scaleY="0.9949820788530465" rotation="28.400000000000002">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="46" x="8.200000000000003" y="-6.450000000000003">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="47" x="7.649999999999999" y="-6">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="48" x="7.149999999999999" y="-5.550000000000004">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="49" x="6.600000000000001" y="-5.150000000000006">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="50" x="6.100000000000001" y="-4.700000000000003">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="51" x="5.549999999999997" y="-4.25">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="52" x="5.049999999999997" y="-3.8000000000000043">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="53" x="4.5" y="-3.4000000000000057" scaleX="0.996415770609319" scaleY="0.996415770609319" rotation="28.300000000000004"/>
<Keyframe index="54" tweenSnap="true" tweenSync="true" x="0" y="0" scaleX="1" scaleY="1" rotation="0">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="55" tweenSnap="true" tweenSync="true" y="8" scaleX="0.9985663082437276" scaleY="0.9978494623655914" rotation="12.300000000000004">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="56" tweenSnap="true" tweenSync="true" x="-0.04999999999999716" y="16.049999999999997" scaleX="0.9978494623655914" rotation="24.6">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="57" tweenSnap="true" tweenSync="true" y="24.049999999999997" scaleX="0.9985663082437276" scaleY="0.9985663082437276" rotation="37.1">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="58" tweenSnap="true" tweenSync="true" x="0" y="31.999999999999996" rotation="49.400000000000006">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="59" tweenSync="true" y="40" rotation="61.6"/>
<Keyframe index="60" tweenSync="true"/>
<Keyframe index="61" tweenSync="true"/>
<Keyframe index="62" tweenSync="true"/>
<Keyframe index="63" tweenSync="true"/>
<Keyframe index="64" tweenSync="true"/>
<Keyframe index="65" tweenSync="true"/>
<Keyframe index="66" tweenSync="true"/>
<Keyframe index="67" tweenSync="true"/>
<Keyframe index="68" blank="true"/>
<Keyframe index="69" blank="true"/>
<Keyframe index="70" blank="true"/>
<Keyframe index="71" blank="true"/>
<Keyframe index="72" blank="true"/>
<Keyframe index="73" blank="true"/>
<Keyframe index="74" blank="true"/>
<Keyframe index="75" blank="true"/>
<Keyframe index="76" blank="true"/>
<Keyframe index="77" blank="true"/>
<Keyframe index="78" blank="true"/>
<Keyframe index="79" blank="true"/>
<Keyframe index="80" blank="true"/>
<Keyframe index="81" blank="true"/>
<Keyframe index="82" blank="true"/>
<Keyframe index="83" blank="true"/>
<Keyframe index="84" blank="true"/>
<Keyframe index="85" blank="true"/>
<Keyframe index="86" blank="true"/>
<Keyframe index="87" x="-0.6499999999999986" y="-0.6500000000000057" scaleX="0.9992831541218637" scaleY="0.9992831541218637" rotation="0">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="88" x="-0.7999999999999972" y="-1.8000000000000043" scaleX="0.9978494623655914" scaleY="0.9978494623655914" rotation="-7.699999999999996">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="89" x="-1.0499999999999972" y="-3" rotation="-15.5">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="90" x="-1.2999999999999972" y="-4.150000000000006" rotation="-23.299999999999997">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="91" x="-1.3999999999999986" y="-5.450000000000003" rotation="-31">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="92" x="-1.6499999999999986" y="-6.600000000000001" rotation="-38.599999999999994">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="93" x="-1.7999999999999972" y="-7.850000000000001" rotation="-46.099999999999994">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="94" x="-2.049999999999997" y="-9.050000000000004" scaleX="0.9971326164874552" scaleY="0.9971326164874552" rotation="-53.89999999999999">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="95" x="-2.200000000000003" y="-10.200000000000003" scaleX="0.996415770609319" scaleY="0.996415770609319" rotation="-61.599999999999994">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="96" x="-2.450000000000003" y="-11.450000000000003" rotation="-69.39999999999999">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="97" x="-2.6499999999999986" y="-12.650000000000006" scaleX="0.9971326164874552" scaleY="0.9971326164874552" rotation="-77.10000000000001">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="98" x="-2.75" y="-13" scaleX="0.9956989247311828" scaleY="0.9956989247311828">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="99" y="-13.400000000000006">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="100" x="-2.799999999999997" y="-13.799999999999997">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="101" x="-2.8500000000000014" y="-14.150000000000006">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="102" x="-2.8999999999999986" y="-14.549999999999997">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="103" y="-14.950000000000003">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="104" y="-15.400000000000006" scaleX="0.9971326164874552" scaleY="0.9971326164874552">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="105" x="-2.8500000000000014" y="-14.950000000000003" scaleX="0.9956989247311828" scaleY="0.9956989247311828">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="106" y="-14.549999999999997">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="107" x="-2.799999999999997" y="-14.150000000000006">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="108" x="-2.75" y="-13.799999999999997">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="109" x="-2.700000000000003" y="-13.400000000000006">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="110" y="-13">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="111" x="-2.6499999999999986" y="-12.650000000000006" scaleX="0.9971326164874552" scaleY="0.9971326164874552"/>
<Keyframe index="112">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="113" x="-2.5" y="-11.299999999999997" scaleX="0.996415770609319" scaleY="0.996415770609319" rotation="-68.39999999999999">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="114" x="-2.200000000000003" y="-10" rotation="-59.89999999999999">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="115" x="-2.049999999999997" y="-8.650000000000006" scaleX="0.9971326164874552" scaleY="0.9971326164874552" rotation="-51.3">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="116" x="-1.7999999999999972" y="-7.300000000000004" scaleX="0.9978494623655914" scaleY="0.9978494623655914" rotation="-42.8">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="117" x="-1.5499999999999972" y="-5.950000000000003" scaleX="0.9985663082437276" scaleY="0.9985663082437276" rotation="-34.3">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="118" x="-1.2999999999999972" y="-4.650000000000006" scaleX="0.9978494623655914" scaleY="0.9978494623655914" rotation="-25.799999999999997">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="119" x="-1.1499999999999986" y="-3.3000000000000043" rotation="-17.200000000000003">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="120" x="-0.8500000000000014" y="-2" rotation="-8.699999999999996">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="121" x="-0.6499999999999986" y="-0.6500000000000057" scaleX="0.9992831541218637" scaleY="0.9992831541218637" rotation="0">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="122" blank="true" tweenSync="true"/>
<Keyframe index="123" blank="true" tweenSync="true"/>
<Keyframe index="124" blank="true" tweenSync="true"/>
<Keyframe index="125" blank="true" tweenSync="true"/>
<Keyframe index="126" blank="true" tweenSync="true"/>
<Keyframe index="127" blank="true" tweenSync="true"/>
<Keyframe index="128" blank="true" tweenSync="true"/>
<Keyframe index="129" blank="true" tweenSync="true"/>
<Keyframe index="130" blank="true" tweenSync="true"/>
<Keyframe index="131" blank="true" tweenSync="true"/>
<Keyframe index="132" blank="true" tweenSync="true"/>
<Keyframe index="133" blank="true" tweenSync="true"/>
<Keyframe index="134" blank="true" tweenSync="true"/>
<Keyframe index="135" blank="true" tweenSync="true"/>
<Keyframe index="136" blank="true" tweenSync="true"/>
<Keyframe index="137" blank="true" tweenSync="true"/>
<Keyframe index="138" blank="true" tweenSync="true"/>
<Keyframe index="139" blank="true" tweenSync="true"/>
<Keyframe index="140" blank="true" tweenSync="true"/>
<Keyframe index="141" blank="true" tweenSync="true"/>
<Keyframe index="142" blank="true" tweenSync="true"/>
<Keyframe index="143" blank="true" tweenSync="true"/>
<Keyframe index="144" blank="true" tweenSync="true"/>
<Keyframe index="145" blank="true" tweenSync="true"/>
<Keyframe index="146" blank="true" tweenSync="true"/>
<Keyframe index="147" blank="true" tweenSync="true"/>
<Keyframe index="148" blank="true" tweenSync="true"/>
<Keyframe index="149" blank="true" tweenSync="true"/>
<Keyframe index="150" blank="true" tweenSync="true"/>
<Keyframe index="151" blank="true" tweenSync="true"/>
<Keyframe index="152" blank="true" tweenSync="true"/>
<Keyframe index="153" blank="true" tweenSync="true"/>
<Keyframe index="154" blank="true" tweenSync="true"/>
<Keyframe index="155" blank="true" tweenSync="true"/>
<Keyframe index="156" blank="true" tweenSync="true"/>
<Keyframe index="157" blank="true" tweenSync="true"/>
<Keyframe index="158" blank="true" tweenSync="true"/>
<Keyframe index="159" blank="true" tweenSync="true"/>
<Keyframe index="160" blank="true" tweenSync="true"/>
<Keyframe index="161" blank="true" tweenSync="true"/>
<Keyframe index="162" blank="true" tweenSync="true"/>
<Keyframe index="163" blank="true" tweenSync="true"/>
<Keyframe index="164" blank="true" tweenSync="true"/>
<Keyframe index="165" blank="true" tweenSync="true"/>
<Keyframe index="166" blank="true" tweenSync="true"/>
<Keyframe index="167" blank="true" tweenSync="true"/>
<Keyframe index="168" blank="true" tweenSync="true"/>
<Keyframe index="169" blank="true" tweenSync="true"/>
<Keyframe index="170" blank="true" tweenSync="true"/>
<Keyframe index="171" blank="true" tweenSync="true"/>
<Keyframe index="172" blank="true" tweenSync="true"/>
<Keyframe index="173" blank="true" tweenSync="true"/>
<Keyframe index="174" blank="true" tweenSync="true"/>
<Keyframe index="175" blank="true" tweenSync="true"/>
<Keyframe index="176" blank="true" tweenSync="true"/>
<Keyframe index="177" blank="true" tweenSync="true"/>
<Keyframe index="178" blank="true" tweenSync="true"/>
<Keyframe index="179" blank="true" tweenSync="true"/>
<Keyframe index="180" blank="true" tweenSync="true"/>
<Keyframe index="181" blank="true" tweenSync="true"/>
<Keyframe index="182" blank="true" tweenSync="true"/>
<Keyframe index="183" blank="true" tweenSync="true"/>
<Keyframe index="184" blank="true" tweenSync="true"/>
<Keyframe index="185" blank="true" tweenSync="true"/>
<Keyframe index="186" blank="true" tweenSync="true"/>
<Keyframe index="187" blank="true" tweenSync="true"/>
<Keyframe index="188" blank="true" tweenSync="true"/>
<Keyframe index="189" blank="true" tweenSync="true"/>
<Keyframe index="190" blank="true" tweenSync="true"/>
<Keyframe index="191" blank="true" tweenSync="true"/>
<Keyframe index="192" blank="true" tweenSync="true"/>
<Keyframe index="193" blank="true" tweenSync="true"/>
<Keyframe index="194" blank="true" tweenSync="true"/>
<Keyframe index="195" blank="true" tweenSync="true"/>
<Keyframe index="196" blank="true" tweenSync="true"/>
<Keyframe index="197" blank="true" tweenSync="true"/>
<Keyframe index="198" blank="true" tweenSync="true"/>
<Keyframe index="199" blank="true" tweenSync="true"/>
<Keyframe index="200" blank="true" tweenSync="true"/>
<Keyframe index="201" blank="true" tweenSync="true"/>
<Keyframe index="202" blank="true" tweenSync="true"/>
<Keyframe index="203" blank="true" tweenSync="true"/>
<Keyframe index="204" blank="true" tweenSync="true"/>
<Keyframe index="205" blank="true" tweenSync="true"/>
<Keyframe index="206" blank="true" tweenSync="true"/>
<Keyframe index="207" blank="true" tweenSync="true"/>
<Keyframe index="208" blank="true" tweenSync="true"/>
<Keyframe index="209" blank="true" tweenSync="true"/>
<Keyframe index="210" blank="true" tweenSync="true"/>
<Keyframe index="211" blank="true" tweenSync="true"/>
<Keyframe index="212" blank="true" tweenSync="true"/>
<Keyframe index="213" blank="true" tweenSync="true"/>
<Keyframe index="214" blank="true" tweenSync="true"/>
<Keyframe index="215" blank="true" tweenSync="true"/>
<Keyframe index="216" blank="true" tweenSync="true"/>
<Keyframe index="217" blank="true" tweenSync="true"/>
<Keyframe index="218" blank="true" tweenSync="true"/>
<Keyframe index="219" blank="true" tweenSync="true"/>
<Keyframe index="220" blank="true" tweenSync="true"/>
<Keyframe index="221" blank="true" tweenSync="true"/>
<Keyframe index="222" blank="true" tweenSync="true"/>
<Keyframe index="223" blank="true" tweenSync="true"/>
<Keyframe index="224" blank="true" tweenSync="true"/>
<Keyframe index="225" blank="true" tweenSync="true"/>
<Keyframe index="226" blank="true" tweenSync="true"/>
<Keyframe index="227" blank="true" tweenSync="true"/>
<Keyframe index="228" blank="true" tweenSync="true"/>
<Keyframe index="229" blank="true" tweenSync="true"/>
<Keyframe index="230" blank="true" tweenSync="true"/>
<Keyframe index="231" blank="true" tweenSync="true"/>
<Keyframe index="232" blank="true" tweenSync="true"/>
<Keyframe index="233" blank="true" tweenSync="true"/>
<Keyframe index="234" blank="true" tweenSync="true"/>
<Keyframe index="235" blank="true" tweenSync="true"/>
<Keyframe index="236" blank="true" tweenSync="true"/>
<Keyframe index="237" blank="true" tweenSync="true"/>
<Keyframe index="238" blank="true" tweenSync="true"/>
<Keyframe index="239" blank="true" tweenSync="true"/>
<Keyframe index="240" blank="true" tweenSync="true"/>
<Keyframe index="241" blank="true" tweenSync="true"/>
<Keyframe index="242" blank="true" tweenSync="true"/>
<Keyframe index="243" blank="true" tweenSync="true"/>
<Keyframe index="244" blank="true" tweenSync="true"/>
<Keyframe index="245" blank="true" tweenSync="true"/>
<Keyframe index="246" blank="true" tweenSync="true"/>
<Keyframe index="247" blank="true" tweenSync="true"/>
<Keyframe index="248" blank="true" tweenSync="true"/>
<Keyframe index="249" blank="true" tweenSync="true"/>
<Keyframe index="250" blank="true" tweenSync="true"/>
<Keyframe index="251" blank="true" tweenSync="true"/>
<Keyframe index="252" blank="true" tweenSync="true"/>
<Keyframe index="253" blank="true" tweenSync="true"/>
<Keyframe index="254" blank="true" tweenSync="true"/>
<Keyframe index="255" blank="true" tweenSync="true"/>
<Keyframe index="256" blank="true" tweenSync="true"/>
<Keyframe index="257" blank="true" tweenSync="true"/>
<Keyframe index="258" blank="true" tweenSync="true"/>
<Keyframe index="259" blank="true" tweenSync="true"/>
<Keyframe index="260" blank="true" tweenSync="true"/>
<Keyframe index="261" blank="true" tweenSync="true"/>
<Keyframe index="262" blank="true" tweenSync="true"/>
<Keyframe index="263" blank="true" tweenSync="true"/>
<Keyframe index="264" blank="true" tweenSync="true"/>
<Keyframe index="265" blank="true" tweenSync="true"/>
<Keyframe index="266" blank="true" tweenSync="true"/>
<Keyframe index="267" blank="true" tweenSync="true"/>
<Keyframe index="268" blank="true" tweenSync="true"/>
<Keyframe index="269" blank="true" tweenSync="true"/>
<Keyframe index="270" blank="true" tweenSync="true"/>
<Keyframe index="271" blank="true" tweenSync="true"/>
<Keyframe index="272" blank="true" tweenSync="true"/>
<Keyframe index="273" blank="true" tweenSync="true"/>
<Keyframe index="274" blank="true" tweenSync="true"/>
<Keyframe index="275" blank="true" tweenSync="true"/>
<Keyframe index="276" blank="true" tweenSync="true"/>
<Keyframe index="277" blank="true"/>
<Keyframe index="278" blank="true"/>
<Keyframe index="279" blank="true"/>
<Keyframe index="280" blank="true"/>
<Keyframe index="281" blank="true"/>
<Keyframe index="282" blank="true"/>
<Keyframe index="283" blank="true"/>
<Keyframe index="284" blank="true"/>
<Keyframe index="285" blank="true"/>
<Keyframe index="286" blank="true"/>
<Keyframe index="287" blank="true"/>
<Keyframe index="288" blank="true"/>
<Keyframe index="289" blank="true"/>
<Keyframe index="290" blank="true"/>
<Keyframe index="291" blank="true" tweenSync="true"/>
<Keyframe index="292" blank="true" tweenSync="true"/>
<Keyframe index="293" blank="true" tweenSync="true"/>
<Keyframe index="294" blank="true" tweenSync="true"/>
<Keyframe index="295" blank="true" tweenSync="true"/>
<Keyframe index="296" blank="true" tweenSync="true"/>
<Keyframe index="297" blank="true" tweenSync="true"/>
<Keyframe index="298" blank="true" tweenSync="true"/>
<Keyframe index="299" blank="true" tweenSync="true"/>
<Keyframe index="300" blank="true" tweenSync="true"/>
<Keyframe index="301" blank="true" tweenSync="true"/>
<Keyframe index="302" blank="true" tweenSync="true"/>
<Keyframe index="303" blank="true" tweenSync="true"/>
<Keyframe index="304" blank="true" tweenSync="true"/>
<Keyframe index="305" blank="true" tweenSync="true"/>
<Keyframe index="306" blank="true" tweenSync="true"/>
<Keyframe index="307" blank="true" tweenSync="true"/>
<Keyframe index="308" blank="true" tweenSync="true"/>
<Keyframe index="309" blank="true" tweenSync="true"/>
<Keyframe index="310" blank="true" tweenSync="true"/>
<Keyframe index="311" blank="true" tweenSync="true"/>
<Keyframe index="312" blank="true" tweenSync="true"/>
<Keyframe index="313" blank="true" tweenSync="true"/>
<Keyframe index="314" blank="true" tweenSync="true"/>
<Keyframe index="315" blank="true" tweenSync="true"/>
<Keyframe index="316" blank="true" tweenSync="true"/>
<Keyframe index="317" blank="true" tweenSync="true"/>
<Keyframe index="318" blank="true" tweenSync="true"/>
<Keyframe index="319" blank="true" tweenSync="true"/>
<Keyframe index="320" blank="true" tweenSync="true"/>
<Keyframe index="321" x="0" y="0" scaleX="1" scaleY="1">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="322" x="-14.75" y="6.599999999999994" scaleX="0.9985663082437276" scaleY="0.9985663082437276" rotation="21.5">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="323" x="-7.350000000000001" y="3.299999999999997" scaleX="0.9978494623655914" scaleY="0.9978494623655914" rotation="10.800000000000004">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="324" x="0" y="0" scaleX="1" scaleY="1" rotation="0">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
</Motion>
</data>
;
public static function GetFramePoint(_arg1:int, _arg2:int):AnimPoint{
var _local3:Array;
var _local4:AnimPoint;
_local3 = anims[_arg1];
for each (_local4 in _local3) {
if (_local4.frame == _arg2){
return (_local4);
};
};
return (null);
}
public static function InitOnce(){
anims = new Array();
XML.ignoreWhitespace = true;
GetAnim(xml1);
GetAnim(xml2);
}
static function GetAnim(_arg1:XML){
var _local2:Array;
var _local3:XML;
var _local4:int;
var _local5:int;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:XML;
var _local12:Boolean;
var _local13:AnimPoint;
_local2 = new Array();
_local3 = new XML(_arg1);
_local4 = _local3.Motion.Keyframe.length();
_local6 = 0;
_local7 = 0;
_local8 = 0;
_local9 = Number(_local3.Motion.source.Source.@x);
_local10 = Number(_local3.Motion.source.Source.@y);
_local5 = 0;
while (_local5 < _local4) {
_local11 = _local3.Motion.Keyframe[_local5];
if (_local11.attribute("x") != undefined){
_local6 = Number(_local11.@x);
};
if (_local11.attribute("y") != undefined){
_local7 = Number(_local11.@y);
};
if (_local11.attribute("rotation") != undefined){
_local8 = Number(_local11.@rotation);
_local8 = (((Math.PI * 2) / 360) * _local8);
};
_local12 = false;
if (_local11.attribute("blank") != undefined){
_local12 = true;
};
if (!_local12){
_local13 = new AnimPoint(int(_local11.@index), (_local6 + _local9), (_local7 + _local10), _local8);
_local2.push(_local13);
};
_local5++;
};
anims.push(_local2);
}
}
}//package
Section 8
//arrow (arrow)
package {
import flash.display.*;
public dynamic class arrow extends MovieClip {
}
}//package
Section 9
//arrowfire1 (arrowfire1)
package {
import flash.media.*;
public dynamic class arrowfire1 extends Sound {
}
}//package
Section 10
//arrowfire2 (arrowfire2)
package {
import flash.media.*;
public dynamic class arrowfire2 extends Sound {
}
}//package
Section 11
//arrowhit (arrowhit)
package {
import flash.media.*;
public dynamic class arrowhit extends Sound {
}
}//package
Section 12
//arrowkill (arrowkill)
package {
import flash.media.*;
public dynamic class arrowkill extends Sound {
}
}//package
Section 13
//BatPoo (BatPoo)
package {
import flash.display.*;
public dynamic class BatPoo extends MovieClip {
}
}//package
Section 14
//belch0 (belch0)
package {
import flash.media.*;
public dynamic class belch0 extends Sound {
}
}//package
Section 15
//belch1 (belch1)
package {
import flash.media.*;
public dynamic class belch1 extends Sound {
}
}//package
Section 16
//belch2 (belch2)
package {
import flash.media.*;
public dynamic class belch2 extends Sound {
}
}//package
Section 17
//BerzerkerBar (BerzerkerBar)
package {
import flash.display.*;
public dynamic class BerzerkerBar extends MovieClip {
}
}//package
Section 18
//bezerk_screen (bezerk_screen)
package {
import flash.display.*;
public dynamic class bezerk_screen extends MovieClip {
}
}//package
Section 19
//blood1 (blood1)
package {
import flash.display.*;
public dynamic class blood1 extends MovieClip {
}
}//package
Section 20
//blood2 (blood2)
package {
import flash.display.*;
public dynamic class blood2 extends MovieClip {
}
}//package
Section 21
//BloodParticle (BloodParticle)
package {
import flash.display.*;
public dynamic class BloodParticle extends MovieClip {
}
}//package
Section 22
//Collision (Collision)
package {
import flash.geom.*;
public class Collision {
public static var stats_numPolyCollisionTests:int;
public static var stats_numBBTests:int;
public static var closestX:Number = 0;
public static var closestY:Number = 0;
public static var main:Main;
public static var stats_numIntersections:int;
static var PolyCollision_LineHit:Line;
public static var IntersectionX:Number = 0;
public static var IntersectionY:Number = 0;
public static var closestInfiniteX:Number = 0;
public static var closestInfiniteY:Number = 0;
public static function EnemyPointInPolyCollision(_arg1:Poly, _arg2:GameObj){
var _local3:GameObj;
for each (_local3 in GameObjects.objs) {
if (((_local3.active) && (_local3.colFlag_isEnemy))){
if (GameObjectInPolyBoundingBox(_local3, _arg1)){
if (PointInConvexPoly(_local3.xpos, _local3.ypos, _arg1.lineList)){
_local3.EnemyHitByBullet(_arg2, true);
};
};
};
};
}
static function DotProduct(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
var _local5:Number;
_local5 = ((_arg1 * _arg3) + (_arg2 * _arg4));
return (_local5);
}
static function PolyCollision(_arg1:GameObj, _arg2:Poly, _arg3:Number, _arg4:Number, _arg5:Number):Boolean{
var _local6:Array;
var _local7:Array;
var _local8:Line;
var _local9:Boolean;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Line;
var _local16:int;
var _local17:int;
var _local18:*;
var _local19:Number;
var _local20:Number;
var _local21:Line;
var _local22:Line;
stats_numPolyCollisionTests++;
_local6 = new Array();
_local7 = new Array();
_local11 = (_arg1.xpos + _arg3);
_local12 = (_arg1.ypos + _arg4);
_local13 = _arg5;
_local14 = (_arg5 * _local13);
for each (_local15 in _arg2.lineList) {
_local9 = SideOfLine(_local15.x0, _local15.y0, _local15.x1, _local15.y1, _local11, _local12);
if (_local9 == true){
_local10 = Dist2ToLine(_local15.x0, _local15.y0, _local15.x1, _local15.y1, _local11, _local12);
if (_local10 < _local14){
_local6.push(_local15);
_local7.push(_local10);
};
};
};
_local18 = _local6.length;
_local16 = 0;
while (_local16 < (_local18 - 1)) {
_local17 = _local16;
while (_local17 < _local18) {
_local19 = _local7[_local16];
_local20 = _local7[_local17];
_local21 = _local6[_local16];
_local22 = _local6[_local17];
if (_local20 < _local19){
_local7[_local16] = _local20;
_local7[_local17] = _local19;
_local6[_local16] = _local22;
_local6[_local17] = _local21;
};
_local17++;
};
_local16++;
};
_local16 = 0;
while (_local16 < _local18) {
_local8 = _local6[_local16];
_local9 = SideOfLine(_local8.x0, _local8.y0, _local8.x1, _local8.y1, _local11, _local12);
if (_local9 == true){
_local10 = Dist2ToLine(_local8.x0, _local8.y0, _local8.x1, _local8.y1, _local11, _local12);
if (_local10 < _local14){
stats_numIntersections++;
Intersected(_arg1, _local8, closestX, closestY, _arg3, _arg4, _arg5);
PolyCollision_LineHit = _local8;
return (true);
};
};
return (true);
_local16++;
};
return (false);
}
public static function ClosestPointOnLine(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number):void{
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
_local7 = (_arg5 - _arg1);
_local8 = (_arg6 - _arg2);
_local9 = (_arg3 - _arg1);
_local10 = (_arg4 - _arg2);
_local11 = ((_local9 * _local9) + (_local10 * _local10));
_local12 = ((_local7 * _local9) + (_local8 * _local10));
_local13 = (_local12 / _local11);
closestInfiniteX = (_arg1 + (_local9 * _local13));
closestInfiniteY = (_arg2 + (_local10 * _local13));
if (_local13 < 0){
_local13 = 0;
};
if (_local13 > 1){
_local13 = 1;
};
closestX = (_arg1 + (_local9 * _local13));
closestY = (_arg2 + (_local10 * _local13));
}
public static function GetSwitchInRange(_arg1:GameObj):GameObj{
var _local2:GameObj;
return (null);
return (null);
}
static function SideOfLine1(_arg1:Line, _arg2:Number, _arg3:Number):Boolean{
var _local4:Number;
_local4 = DotProduct((_arg1.x1 - _arg1.x0), (_arg1.y1 - _arg1.y0), (_arg2 - _arg1.x0), (_arg3 - _arg1.y0));
if (_local4 < 0){
return (false);
};
return (true);
}
public static function ManAttackCollision():void{
var _local1:GameObj;
var _local2:GameObj;
var _local3:Array;
var _local4:Array;
var _local5:Point;
_local3 = new Array();
_local4 = new Array();
for each (_local1 in GameObjects.objs) {
if (((_local1.active) && (_local1.colFlag_canGiveMelee))){
_local3.push(_local1);
};
if (((_local1.active) && (_local1.colFlag_canReceiveMelee))){
_local4.push(_local1);
};
};
for each (_local1 in _local3) {
_local5 = _local1.GetMeleeHitPoint();
if (_local5 != null){
for each (_local2 in _local4) {
if (_local1 != _local2){
if (Math.abs((_local1.ypos - _local2.ypos)) < 40){
if (Math.abs((_local1.xpos - _local2.xpos)) < 60){
if (_local1.xflip){
if (_local2.xpos < _local1.xpos){
_local2.MeleeHit(_local1);
};
} else {
if (_local2.xpos > _local1.xpos){
_local2.MeleeHit(_local1);
};
};
};
};
};
};
};
};
}
public static function XflipRectangle(_arg1:Rectangle):Rectangle{
var _local2:Number;
var _local3:Number;
var _local4:Number;
_local2 = _arg1.x;
_local3 = _arg1.width;
_local4 = (_local2 + _local3);
_arg1.x = -(_local4);
return (_arg1);
}
public static function PlayerDeathZoneCollision():void{
var _local1:GameObj;
var _local2:Poly;
if (Game.goPlayer.colFlag_playercanbekilled == false){
return;
};
_local1 = Game.goPlayer;
for each (_local2 in Game.polygonList) {
if (((((_local2.active) && ((_local2.type == Poly.polytype_ZONE)))) && ((_local2.subTypeName == "Death")))){
if (GameObjectInPolyBoundingBox(_local1, _local2)){
if (PointInConvexPoly(_local1.xpos, _local1.ypos, _local2.lineList)){
_local1.PlayerHitEnemy(null);
return;
};
};
};
};
}
public static function ProbeFloorCollision(_arg1:Line):Boolean{
var _local2:Poly;
var _local3:Line;
for each (var _local6 in Game.polygonList) {
_local2 = _local6;
_local6;
if (_local2.active){
for each (var _local8 in _local2.lineList) {
_local3 = _local8;
_local8;
if (LineLineIntersection(_local3, _arg1)){
return (true);
};
};
};
};
return (false);
}
public static function GetNearestEnemy(_arg1:Number, _arg2:Number):GameObj{
var _local3:GameObj;
var _local4:Number;
var _local5:GameObj;
var _local6:Number;
_local3 = null;
_local4 = 99999999;
for each (_local5 in GameObjects.objs) {
if (((_local5.active) && (_local5.colFlag_isEnemy))){
_local6 = Utils.Dist2BetweenPoints(_arg1, _arg2, _local5.xpos, _local5.ypos);
if (_local6 < _local4){
_local4 = _local6;
_local3 = _local5;
};
};
};
return (_local3);
}
static function Dist2Between(_arg1:GameObj, _arg2:GameObj):Number{
var _local3:Number;
var _local4:Number;
_local3 = (_arg2.xpos - _arg1.xpos);
_local4 = (_arg2.ypos - _arg1.ypos);
return (((_local3 * _local3) + (_local4 * _local4)));
}
public static function FindPathByIndex(_arg1:int):Poly{
var _local2:int;
var _local3:Poly;
_local2 = 0;
for each (_local3 in Game.polygonList) {
if (((_local3.active) && ((_local3.type == Poly.polytype_PATH)))){
if (_local2 == _arg1){
return (_local3);
};
_local2++;
};
};
return (null);
}
static function Dist2BetweenPoints(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
var _local5:Number;
var _local6:Number;
_local5 = (_arg3 - _arg1);
_local6 = (_arg4 - _arg2);
return (((_local5 * _local5) + (_local6 * _local6)));
}
public static function FindNearestPathStartPointToPos(_arg1:Number, _arg2:Number):Poly{
var _local3:Poly;
var _local4:Number;
var _local5:Poly;
var _local6:Point;
var _local7:*;
_local3 = null;
_local4 = 99999999;
for each (_local5 in Game.polygonList) {
if (((_local5.active) && ((_local5.type == Poly.polytype_PATH)))){
_local6 = _local5.GetPoint(0);
_local7 = Utils.Dist2BetweenPoints(_local6.x, _local6.y, _arg1, _arg2);
if (_local7 < _local4){
_local4 = _local7;
_local3 = _local5;
};
};
};
return (_local3);
}
static function SideOfLine(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number):Boolean{
var _local7:Number;
_local7 = DotProduct((_arg3 - _arg1), (_arg4 - _arg2), (_arg5 - _arg1), (_arg6 - _arg2));
if (_local7 < 0){
return (false);
};
return (true);
}
static function PlayerObjectRectangleCollision(_arg1:GameObj):Boolean{
var _local2:GameObj;
var _local3:ObjectDef;
var _local4:ObjectDef;
var _local5:Rectangle;
var _local6:Rectangle;
_local2 = Game.goPlayer;
_local3 = _local2.objectDef;
_local4 = _arg1.objectDef;
_local5 = _local3.colRects[0].clone();
_local6 = _local4.colRects[0].clone();
_local5.x = (_local5.x + _local2.xpos);
_local5.y = (_local5.y + _local2.ypos);
_local6.x = (_local6.x + _arg1.xpos);
_local6.y = (_local6.y + _arg1.ypos);
return (_local5.intersects(_local6));
}
static function GameObjectInPolyBoundingBox(_arg1:GameObj, _arg2:Poly):Boolean{
var _local3:Number;
var _local4:Number;
var _local5:Number;
_local3 = (_arg1.radius + 50);
_local4 = _arg1.xpos;
_local5 = _arg1.ypos;
if (_arg2.boundingRectangle == null){
return (false);
};
stats_numBBTests++;
if (_local4 < (_arg2.boundingRectangle.left - _local3)){
return (false);
};
if (_local4 > (_arg2.boundingRectangle.right + _local3)){
return (false);
};
if (_local5 < (_arg2.boundingRectangle.top - _local3)){
return (false);
};
if (_local5 > (_arg2.boundingRectangle.bottom + _local3)){
return (false);
};
return (true);
}
public static function PlayerEnemyBulletCollision(){
var _local1:GameObj;
var _local2:Rectangle;
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:GameObj;
var _local7:Number;
var _local8:Number;
var _local9:Rectangle;
_local1 = Game.goPlayer;
_local2 = _local1.objectDef.colRects[0].clone();
if (_local1.xflip){
_local2 = XflipRectangle(_local2);
};
_local2.x = (_local2.x + _local1.xpos);
_local2.y = (_local2.y + _local1.ypos);
for each (_local6 in GameObjects.objs) {
if (((_local6.active) && (_local6.colFlag_isEnemyBullet))){
_local7 = _local6.xpos;
_local8 = _local6.ypos;
_local9 = _local1.GetObjectRectangle().clone();
if (_local6.xflip){
_local9 = XflipRectangle(_local9);
};
_local9.x = (_local9.x + _local6.xpos);
_local9.y = (_local9.y + _local6.ypos);
if (_local9.intersects(_local2)){
_local1.PlayerHitEnemyBullet(_local6);
};
};
};
}
public static function BulletEnemyCollision(){
var _local1:Number;
var _local2:Number;
var _local3:Number;
var _local4:Rectangle;
var _local5:Rectangle;
var _local6:GameObj;
var _local7:Number;
var _local8:Number;
var _local9:Rectangle;
var _local10:int;
var _local11:GameObj;
var _local12:ObjectDef;
for each (_local6 in GameObjects.objs) {
if (((_local6.active) && (_local6.colFlag_isPlayerBullet))){
_local7 = _local6.xpos;
_local8 = _local6.ypos;
_local9 = _local6.objectDef.colRects[0].clone();
if (_local6.xflip){
_local9 = XflipRectangle(_local9);
};
_local9.x = (_local9.x + _local6.xpos);
_local9.y = (_local9.y + _local6.ypos);
_local10 = 0;
for each (_local11 in GameObjects.objs) {
if (((((_local11.active) && (_local11.colFlag_isEnemy))) && (!((_local11.controlMode == GameObj.generic_controlMode_hit))))){
_local12 = _local11.objectDef;
if (_local11.colFlag_vulnerable){
for each (_local4 in _local12.vulnerableColRects) {
_local5 = _local4.clone();
if (_local11.xflip){
_local5 = XflipRectangle(_local5);
};
_local5.x = (_local5.x + _local11.xpos);
_local5.y = (_local5.y + _local11.ypos);
if (_local5.intersects(_local9)){
if (_local11.EnemyHitByBullet(_local6, false, true)){
};
};
};
} else {
for each (_local4 in _local12.colRects) {
_local5 = _local4.clone();
if (_local11.xflip){
_local5 = XflipRectangle(_local5);
};
_local5.x = (_local5.x + _local11.xpos);
_local5.y = (_local5.y + _local11.ypos);
if (_local5.intersects(_local9)){
if (_local11.EnemyHitByBullet(_local6)){
_local10++;
};
};
};
};
};
};
if (_local10 > 0){
Game.hitStringNum = _local10;
Game.hitStringTime = (Game.hitStringTimeMax = 50);
Game.hitStringX = _local6.xpos;
Game.hitStringY = _local6.ypos;
Game.hitStringAng = Utils.RandBetweenFloat(-0.2, 0.2);
};
};
};
}
public static function ObjectFallingSurfaceCollision(_arg1:GameObj, _arg2:int=3):Boolean{
var _local3:Array;
var _local4:int;
var _local5:Boolean;
var _local6:Poly;
var _local7:Line;
var _local8:Point;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
_local3 = new Array();
_local3.push(new Point(0, 0));
_local3.push(new Point(-10, 0));
_local3.push(new Point(10, 0));
if (_arg1.yvel < 0){
return (false);
};
for each (var _local16 in Game.polygonList) {
_local6 = _local16;
_local16;
if (_local6.active){
for each (var _local18 in _local6.lineList) {
_local7 = _local18;
_local18;
_local4 = 0;
while (_local4 < _arg2) {
_local8 = _local3[_local4];
_local9 = (_arg1.xpos + _local8.x);
_local10 = (_arg1.ypos + _local8.y);
if ((((_local9 >= _local7.x0)) && ((_local9 <= _local7.x1)))){
_local11 = ((1 / (_local7.x1 - _local7.x0)) * (_local9 - _local7.x0));
_local12 = (_local7.y0 + (_local7.dy * _local11));
_local13 = _local10;
if ((((_local13 >= _local12)) && ((_local13 <= (_local12 + 20))))){
(_arg1.ypos = (_local12 - _local8.y));
return (true);
};
};
_local4++;
};
};
};
};
return (false);
}
public static function LineLineIntersection(_arg1:Line, _arg2:Line):Boolean{
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:Number;
var _local18:Number;
_local3 = _arg1.x0;
_local4 = _arg1.y0;
_local5 = _arg1.x1;
_local6 = _arg1.y1;
_local7 = _arg2.x0;
_local8 = _arg2.y0;
_local9 = _arg2.x1;
_local10 = _arg2.y1;
_local11 = (_local5 - _local3);
_local12 = (_local9 - _local7);
_local13 = ((_local6 - _local4) / _local11);
_local14 = ((_local10 - _local8) / _local12);
_local15 = (_local4 - (_local13 * _local3));
_local16 = (_local8 - (_local14 * _local7));
_local17 = ((_local15 - _local16) / (_local14 - _local13));
_local18 = (((_local13 * (_local16 - _local15)) / (_local13 - _local14)) + _local15);
if (_arg1.boundingRect.contains(_local17, _local18)){
if (_arg2.boundingRect.contains(_local17, _local18)){
IntersectionX = _local17;
IntersectionY = _local18;
return (true);
};
};
return (false);
}
public static function FindHighestFloorPos(_arg1:Number):Number{
var _local2:Number;
var _local3:Boolean;
var _local4:Poly;
var _local5:Line;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
for each (_local4 in Game.polygonList) {
if (_local4.active){
for each (_local5 in _local4.lineList) {
_local6 = _arg1;
_local7 = 0;
if ((((_local6 >= _local5.x0)) && ((_local6 <= _local5.x1)))){
_local8 = ((1 / (_local5.x1 - _local5.x0)) * (_local6 - _local5.x0));
_local9 = (_local5.y0 + (_local5.dy * _local8));
return (_local9);
};
};
};
};
return (999999);
}
public static function PlayerPickupCollision(){
var _local1:GameObj;
var _local2:Number;
var _local3:Number;
var _local4:GameObj;
var _local5:Number;
_local1 = Game.goPlayer;
if (_local1.isDead){
return;
};
_local2 = _local1.xpos;
_local3 = _local1.ypos;
for each (_local4 in GameObjects.objs) {
if (((_local4.active) && (_local4.colFlag_canBePickedUp))){
_local5 = Utils.Dist2BetweenPoints(_local4.xpos, _local4.ypos, _local2, _local3);
if (_local5 < (30 * 30)){
_local4.PickupPickedUp();
};
};
};
}
public static function PlayerPowerupCollision(){
var _local1:GameObj;
if (Game.goPlayer.colFlag_playercanbekilled == false){
return;
};
for each (_local1 in GameObjects.objs) {
if (((_local1.active) && (_local1.colFlag_isPowerup))){
if (PlayerObjectRectangleCollision(_local1)){
};
};
};
}
static function Dist2ToLine(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number):Number{
var _local7:Number;
var _local8:Number;
ClosestPointOnLine(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6);
_local7 = (closestX - _arg5);
_local8 = (closestY - _arg6);
return (((_local7 * _local7) + (_local8 * _local8)));
}
static function Intersected(_arg1:GameObj, _arg2:Line, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number):void{
var _local8:int;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:int;
var _local15:Number;
_local8 = 50;
_local9 = ((_arg1.oldxpos + _arg5) - _arg3);
_local10 = ((_arg1.oldypos + _arg6) - _arg4);
_local9 = (_local9 / Number(_local8));
_local10 = (_local10 / Number(_local8));
_local11 = (_arg1.xpos + _arg5);
_local12 = (_arg1.ypos + _arg6);
_local13 = (_arg7 * _arg7);
_local14 = 0;
while (_local14 < _local8) {
_local11 = (_local11 + _local9);
_local12 = (_local12 + _local10);
_local15 = Dist2ToLine(_arg2.x0, _arg2.y0, _arg2.x1, _arg2.y1, _local11, _local12);
if (_local15 > _local13){
_arg1.xpos = (_local11 - _arg5);
_arg1.ypos = (_local12 - _arg6);
return;
};
_local14++;
};
}
public static function SingleObjectZoneCollision(_arg1:GameObj):Poly{
var _local2:Poly;
for each (_local2 in Game.polygonList) {
if (((_local2.active) && ((_local2.type == Poly.polytype_ZONE)))){
if (GameObjectInPolyBoundingBox(_arg1, _local2)){
if (PointInConvexPoly(_arg1.xpos, _arg1.ypos, _local2.lineList)){
return (_local2);
};
};
};
};
return (null);
}
static function DistBetween(_arg1:GameObj, _arg2:GameObj):Number{
var _local3:Number;
var _local4:Number;
_local3 = (_arg2.xpos - _arg1.xpos);
_local4 = (_arg2.ypos - _arg1.ypos);
return (Math.sqrt(((_local3 * _local3) + (_local4 * _local4))));
}
public static function BulletEnemyProjectileCollision(){
var _local1:Number;
var _local2:Number;
var _local3:Number;
var _local4:Rectangle;
var _local5:Rectangle;
var _local6:GameObj;
var _local7:Number;
var _local8:Number;
var _local9:Rectangle;
var _local10:int;
var _local11:GameObj;
var _local12:ObjectDef;
for each (_local6 in GameObjects.objs) {
if (((_local6.active) && (_local6.colFlag_isPlayerBullet))){
_local7 = _local6.xpos;
_local8 = _local6.ypos;
_local9 = _local6.objectDef.colRects[0].clone();
if (_local6.xflip){
_local9 = XflipRectangle(_local9);
};
_local9.x = (_local9.x + _local6.xpos);
_local9.y = (_local9.y + _local6.ypos);
_local10 = 0;
for each (_local11 in GameObjects.objs) {
if (((((_local11.active) && (_local11.colFlag_isEnemyBullet))) && (_local11.colFlag_isEnemyProjectile))){
_local12 = _local11.objectDef;
for each (_local4 in _local12.colRects) {
_local5 = _local4.clone();
if (_local11.xflip){
_local5 = XflipRectangle(_local5);
};
_local5.x = (_local5.x + _local11.xpos);
_local5.y = (_local5.y + _local11.ypos);
if (_local5.intersects(_local9)){
if (_local11.EnemyProjectileHitByBullet(_local6)){
_local10++;
};
};
};
};
};
};
};
}
static function DistBetweenPoints(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
var _local5:Number;
var _local6:Number;
_local5 = (_arg3 - _arg1);
_local6 = (_arg4 - _arg2);
return (Math.sqrt(((_local5 * _local5) + (_local6 * _local6))));
}
public static function PointInConvexPoly(_arg1:Number, _arg2:Number, _arg3:Array):Boolean{
var _local4:int;
var _local5:int;
var _local6:Line;
var _local7:Number;
_local4 = _arg3.length;
_local5 = 0;
while (_local5 < _local4) {
_local6 = _arg3[_local5];
_local7 = DotProduct((_local6.x0 - _arg1), (_local6.y0 - _arg2), _local6.nx, _local6.ny);
if (_local7 < 0){
return (false);
};
_local5++;
};
return (true);
}
public static function Update(_arg1:Main){
(main = _arg1);
(stats_numIntersections = 0);
(stats_numBBTests = 0);
(stats_numPolyCollisionTests = 0);
BulletEnemyCollision();
BulletEnemyProjectileCollision();
PlayerPickupCollision();
PlayerEnemyBulletCollision();
}
static function DistToLine(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number):Number{
var _local7:Number;
var _local8:Number;
var _local9:Number;
ClosestPointOnLine(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6);
_local7 = (closestX - _arg5);
_local8 = (closestY - _arg6);
_local9 = Math.sqrt(((_local7 * _local7) + (_local8 * _local8)));
return (_local9);
}
public static function SingleObjectPlatformCollision(_arg1:GameObj):GameObj{
var _local2:Number;
var _local3:Number;
var _local4:GameObj;
var _local5:Rectangle;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
_local2 = _arg1.xpos;
_local3 = _arg1.ypos;
for each (_local4 in GameObjects.objs) {
if (((_local4.active) && (_local4.colFlag_isPlatform))){
_local5 = _local4.GetObjectRectangle();
_local6 = (_local4.xpos + _local5.x);
_local7 = (_local6 + _local5.width);
_local8 = (_local4.ypos + _local5.y);
_local9 = (_local8 + 15);
if ((((((((((_local2 >= _local6)) && ((_local2 <= _local7)))) && ((_arg1.yvel >= 0)))) && ((_local3 >= _local8)))) && ((_local3 <= _local9)))){
return (_local4);
};
};
};
return (null);
}
public static function GetPickupNearObject(_arg1:GameObj):GameObj{
var _local2:GameObj;
for each (_local2 in GameObjects.objs) {
if (((((_local2.active) && (_local2.isPickup))) && (!(_local2.isBeingCarried)))){
if (Utils.DistBetweenPoints(_arg1.xpos, _arg1.ypos, _local2.xpos, _local2.ypos) < 30){
return (_local2);
};
};
};
return (null);
}
}
}//package
Section 23
//Debug (Debug)
package {
public class Debug {
public static var debugMode:int = 0;
public static function RenderCollision(){
var _local1:Number;
var _local2:Number;
var _local3:int;
var _local4:uint;
var _local5:Line;
var _local6:Line;
var _local7:int;
var _local8:Poly;
return;
}
public static function Toggle(_arg1:int){
if ((debugMode & _arg1)){
debugMode = 0;
} else {
debugMode = (debugMode | _arg1);
};
}
}
}//package
Section 24
//Defs (Defs)
package {
import flash.geom.*;
public class Defs {
public static const zpos_PICKUP = 1100;
public static const zpos_ENEMY = 1000;
public static const displayarea_w = 640;
public static const zpos_OVERLAY = 500;
public static const zpos_FAR = 10000;
public static const zpos_PLAYER = 1000;
public static const fps:Number = 34;
public static const platformW2 = 15;
public static const fps2:Number = 68;
public static const zpos_BACKGROUND = 10000;
public static const displayarea_h = 480;
public static var pointZero:Point = new Point(0, 0);
public static var screenRect:Rectangle = new Rectangle(0, 0, displayarea_w, displayarea_h);
}
}//package
Section 25
//DisplayObj (DisplayObj)
package {
import flash.events.*;
import flash.geom.*;
import flash.display.*;
import flash.text.*;
import flash.filters.*;
public dynamic class DisplayObj {
var currentSetupFrame:int;
var flags:int;
var mc:MovieClip;
var ready:Boolean;
var frames:Array;
public var frame:int;
public function DisplayObj(_arg1:MovieClip, _arg2:int, _arg3:Boolean=false):void{
frames = null;
flags = _arg2;
mc = _arg1;
ready = false;
frame = 0;
currentSetupFrame = 1;
if (_arg3){
if (mc != null){
GraphicObjects.totalFramesDone = (GraphicObjects.totalFramesDone + CreateBitmapsFromMovieClip(mc, flags));
ready = true;
};
};
}
public function GetBitmap():Bitmap{
return (frames[frame].bitmap);
}
public function CreateFont(_arg1:TextFormat):void{
var _local2:int;
var _local3:int;
var _local4:int;
var _local5:int;
var _local6:Matrix;
var _local7:Rectangle;
var _local8:Bitmap;
var _local9:BitmapData;
var _local10:Array;
var _local11:TextField;
var _local12:*;
frames = new Array();
_local10 = CreateAsciiStringTable();
_local2 = 0;
while (_local2 < _local10.length) {
_local11 = new TextField();
_local11.textColor = 4294967295;
_local11.selectable = false;
_local11.embedFonts = true;
_local11.autoSize = TextFieldAutoSize.LEFT;
_local11.x = 0;
_local11.y = 0;
_local11.text = _local10[_local2];
_local11.setTextFormat(_arg1);
_local12 = new DisplayObjFrame();
_local12.bitmaps = new Array();
_local12.xoffsets = new Array();
_local12.yoffsets = new Array();
_local12.mat = new Matrix();
_local12.colTrans = new ColorTransform();
_local7 = _local11.getBounds(null);
_local6 = new Matrix();
_local12.xoffsets.push(0);
_local12.yoffsets.push(0);
_local8 = new Bitmap();
_local9 = new BitmapData(_local7.width, _local7.height, true, 0);
_local9.draw(_local11, _local6);
_local8.bitmapData = _local9;
_local12.bitmaps.push(_local8);
frames.push(_local12);
_local2++;
};
}
public function RenderAt(_arg1:BitmapData, _arg2:Number, _arg3:Number, _arg4:Boolean=false):void{
frames[frame].RenderAt(_arg1, _arg2, _arg3, _arg4);
}
public function GetMaxFrames():int{
return (frames.length);
}
public function GetFrame():int{
return (frame);
}
public function SetFrame(_arg1:int){
frame = _arg1;
if (frame < 0){
frame = 0;
};
if (frame >= frames.length){
frame = (frames.length - 1);
};
}
public function GetXOffset():Number{
return (frames[frame].xoffset);
}
public function CreateBitmapsFromMovieClip(_arg1:MovieClip, _arg2:int):int{
var _local3:Boolean;
var _local4:Boolean;
var _local5:Boolean;
var _local6:int;
var _local7:int;
var _local8:int;
var _local9:int;
var _local10:Matrix;
var _local11:Rectangle;
var _local12:Bitmap;
var _local13:BitmapData;
var _local14:Bitmap;
var _local15:BitmapData;
var _local16:ColorTransform;
var _local17:*;
var _local18:BlurFilter;
_local3 = true;
_local4 = false;
if (_arg2 == 2){
_local4 = true;
_arg2 = 0;
};
if (_arg2 == 4){
_local3 = false;
};
_local5 = false;
if (_arg2 == 6){
_local5 = true;
};
if (frames == null){
};
frames = new Array();
_local16 = new ColorTransform(1, 1, 1, 1, 0xFF, 0xFF, 0xFF, 0);
_arg1.gotoAndStop(1);
_local6 = 0;
while (_local6 < _arg1.totalFrames) {
_local17 = new DisplayObjFrame();
_local17.bitmaps = new Array();
_local17.xoffsets = new Array();
_local17.yoffsets = new Array();
_local17.mat = new Matrix();
_local17.colTrans = new ColorTransform();
_local11 = _arg1.getBounds(null);
_local11.x = Math.floor(_local11.x);
_local11.y = Math.floor(_local11.y);
_local11.width = Math.floor((_local11.width + 1));
_local11.height = Math.floor((_local11.height + 1));
_local9 = Math.floor(_local9);
_local10 = new Matrix();
_local8 = _local11.left;
_local9 = _local11.top;
_local10.translate(-(_local8), -(_local9));
_local17.xoffsets.push(Number(_local8));
_local17.yoffsets.push(Number(_local9));
if (((!((_arg1.width == 0))) && (!((_arg1.height == 0))))){
_local12 = new Bitmap();
_local13 = new BitmapData(_local11.width, _local11.height, true, 0);
if (_local5){
_local13.draw(_arg1, _local10, _local16);
_local18 = new BlurFilter();
_local13.applyFilter(_local13, new Rectangle(0, 0, _local13.width, _local13.height), Defs.pointZero, _local18);
_local12.bitmapData = _local13;
_local17.bitmaps.push(_local12);
} else {
_local13.draw(_arg1, _local10);
_local12.bitmapData = _local13;
_local17.bitmaps.push(_local12);
};
} else {
_local17.bitmaps.push(null);
};
if (_local4){
_local11 = _arg1.getBounds(null);
_local11.x = Math.floor(_local11.x);
_local11.y = Math.floor(_local11.y);
_local11.width = Math.floor((_local11.width + 1));
_local11.height = Math.floor((_local11.height + 1));
_local9 = Math.floor(_local9);
_local10 = new Matrix();
_local8 = _local11.left;
_local9 = _local11.top;
_local10.translate(-(_local8), -(_local9));
_local10.scale(-1, 1);
_local10.translate(_local11.width, 0);
_local17.xoffsets.push(Number(-(_local11.right)));
_local17.yoffsets.push(Number(_local9));
if (((!((_arg1.width == 0))) && (!((_arg1.height == 0))))){
_local12 = new Bitmap();
_local13 = new BitmapData(_local11.width, _local11.height, true, 0);
if (_local5){
_local13.draw(_arg1, _local10, _local16);
_local18 = new BlurFilter();
_local13.applyFilter(_local13, new Rectangle(0, 0, _local13.width, _local13.height), Defs.pointZero, _local18);
_local12.bitmapData = _local13;
_local17.bitmaps.push(_local12);
} else {
_local13.draw(_arg1, _local10);
_local12.bitmapData = _local13;
_local17.bitmaps.push(_local12);
};
} else {
_local17.bitmaps.push(null);
};
};
frames.push(_local17);
_arg1.nextFrame();
_local6++;
};
return (_arg1.totalFrames);
}
public function GetYOffset():Number{
return (frames[frame].yoffset);
}
function CreateAsciiStringTable():Array{
var _local1:Array;
_local1 = new Array();
_local1.push("");
_local1.push("");
_local1.push("");
_local1.push("");
_local1.push("");
_local1.push("");
_local1.push("");
_local1.push("");
_local1.push("");
_local1.push("");
_local1.push("");
_local1.push("");
_local1.push("");
_local1.push("");
_local1.push("");
_local1.push("");
_local1.push("");
_local1.push("");
_local1.push("");
_local1.push("");
_local1.push("");
_local1.push("");
_local1.push("");
_local1.push("");
_local1.push("");
_local1.push("");
_local1.push("");
_local1.push("");
_local1.push("");
_local1.push("");
_local1.push("");
_local1.push("");
_local1.push(" ");
_local1.push("!");
_local1.push("'");
_local1.push("#");
_local1.push("$");
_local1.push("%");
_local1.push("&");
_local1.push("'");
_local1.push("(");
_local1.push(")");
_local1.push("*");
_local1.push("+");
_local1.push(",");
_local1.push("-");
_local1.push(".");
_local1.push("/");
_local1.push("0");
_local1.push("1");
_local1.push("2");
_local1.push("3");
_local1.push("4");
_local1.push("5");
_local1.push("6");
_local1.push("7");
_local1.push("8");
_local1.push("9");
_local1.push(":");
_local1.push(";");
_local1.push("<");
_local1.push("=");
_local1.push(">");
_local1.push("?");
_local1.push("@");
_local1.push("A");
_local1.push("B");
_local1.push("C");
_local1.push("D");
_local1.push("E");
_local1.push("F");
_local1.push("G");
_local1.push("H");
_local1.push("I");
_local1.push("J");
_local1.push("K");
_local1.push("L");
_local1.push("M");
_local1.push("N");
_local1.push("O");
_local1.push("P");
_local1.push("Q");
_local1.push("R");
_local1.push("S");
_local1.push("T");
_local1.push("U");
_local1.push("V");
_local1.push("W");
_local1.push("X");
_local1.push("Y");
_local1.push("Z");
_local1.push("[");
_local1.push("\\");
_local1.push("]");
_local1.push("^");
_local1.push("_");
_local1.push("'");
_local1.push("a");
_local1.push("b");
_local1.push("c");
_local1.push("d");
_local1.push("e");
_local1.push("f");
_local1.push("g");
_local1.push("h");
_local1.push("i");
_local1.push("j");
_local1.push("k");
_local1.push("l");
_local1.push("m");
_local1.push("n");
_local1.push("o");
_local1.push("p");
_local1.push("q");
_local1.push("r");
_local1.push("s");
_local1.push("t");
_local1.push("u");
_local1.push("v");
_local1.push("w");
_local1.push("x");
_local1.push("y");
_local1.push("z");
_local1.push("{");
_local1.push("|");
_local1.push("}");
_local1.push("~");
return (_local1);
}
public function CreateBitmapsFromMovieClip1(_arg1:MovieClip, _arg2:int):int{
var _local3:Boolean;
var _local4:Boolean;
var _local5:Boolean;
var _local6:Boolean;
var _local7:Boolean;
var _local8:int;
var _local9:int;
var _local10:int;
var _local11:int;
var _local12:Matrix;
var _local13:Rectangle;
var _local14:Bitmap;
var _local15:BitmapData;
var _local16:Bitmap;
var _local17:BitmapData;
var _local18:Matrix;
var _local19:ColorTransform;
var _local20:ColorTransform;
var _local21:int;
var _local22:*;
var _local23:BlurFilter;
var _local24:Bitmap;
var _local25:BitmapData;
_local3 = false;
_local4 = true;
_local5 = true;
if (_arg2 == 2){
_local3 = true;
_arg2 = 0;
};
if (_arg2 == 4){
_local4 = false;
};
if (_arg2 == 5){
_local4 = false;
_local5 = false;
};
if (_arg2 == 3){
};
_local6 = false;
if (_arg2 == 6){
_local6 = true;
};
if (frames == null){
currentSetupFrame = 1;
frames = new Array();
};
_local7 = false;
_local12 = new Matrix();
_local18 = new Matrix();
_local19 = new ColorTransform(0, 0, 0, 0.5, 0, 0, 0, 0);
_local20 = new ColorTransform(1, 1, 1, 1, 0xFF, 0xFF, 0xFF, 0);
_local21 = 0;
if (currentSetupFrame < (_arg1.totalFrames + 1)){
_arg1.gotoAndStop(currentSetupFrame);
_local22 = new DisplayObjFrame();
_local22.bitmaps = new Array();
_local22.shadowBitmaps = new Array();
_local22.xoffsets = new Array();
_local22.yoffsets = new Array();
_local22.mat = new Matrix();
_local22.colTrans = new ColorTransform();
_local13 = _arg1.getBounds(null);
_local13.x = Math.floor(_local13.x);
_local13.y = Math.floor(_local13.y);
_local13.width = Math.floor((_local13.width + 1));
_local13.height = Math.floor((_local13.height + 1));
_local11 = Math.floor(_local11);
_local12.identity();
_local10 = _local13.left;
_local11 = _local13.top;
_local12.translate(-(_local10), -(_local11));
_local22.xoffsets.push(Number(_local10));
_local22.yoffsets.push(Number(_local11));
if (((!((_arg1.width == 0))) && (!((_arg1.height == 0))))){
_local14 = new Bitmap();
_local15 = new BitmapData(_local13.width, _local13.height, _local5, 0);
if (_local6){
_local15.draw(_arg1, _local12, _local20);
_local23 = new BlurFilter();
_local15.applyFilter(_local15, new Rectangle(0, 0, _local15.width, _local15.height), Defs.pointZero, _local23);
_local14.bitmapData = _local15;
_local22.bitmaps.push(_local14);
} else {
_local15.draw(_arg1, _local12);
_local14.bitmapData = _local15;
_local22.bitmaps.push(_local14);
};
if (_local4){
_local24 = new Bitmap();
_local25 = new BitmapData(_local13.width, _local13.height, _local5, 0);
_local25.draw(_local15, null, _local19);
_local24.bitmapData = _local25;
_local22.shadowBitmaps.push(_local24);
};
} else {
_local22.bitmaps.push(null);
_local22.shadowBitmaps.push(null);
};
if (_local3){
_local13 = _arg1.getBounds(null);
_local13.x = Math.floor(_local13.x);
_local13.y = Math.floor(_local13.y);
_local13.width = Math.floor((_local13.width + 1));
_local13.height = Math.floor((_local13.height + 1));
_local11 = Math.floor(_local11);
_local12 = new Matrix();
_local10 = _local13.left;
_local11 = _local13.top;
_local12.translate(-(_local10), -(_local11));
_local12.scale(-1, 1);
_local12.translate(_local13.width, 0);
_local22.xoffsets.push(Number(-(_local13.right)));
_local22.yoffsets.push(Number(_local11));
if (((!((_arg1.width == 0))) && (!((_arg1.height == 0))))){
_local14 = new Bitmap();
_local15 = new BitmapData(_local13.width, _local13.height, true, 0);
if (_local6){
_local15.draw(_arg1, _local12, _local20);
_local23 = new BlurFilter();
_local15.applyFilter(_local15, new Rectangle(0, 0, _local15.width, _local15.height), Defs.pointZero, _local23);
_local14.bitmapData = _local15;
_local22.bitmaps.push(_local14);
} else {
_local15.draw(_arg1, _local12);
_local14.bitmapData = _local15;
_local22.bitmaps.push(_local14);
};
} else {
_local22.bitmaps.push(null);
};
};
frames.push(_local22);
currentSetupFrame++;
_local21++;
};
_local12 = null;
_local19 = null;
return (_local21);
}
public function GetFrameWidth(_arg1:int):Number{
return (frames[_arg1].bitmap.width);
}
public function RenderAtRot(_arg1:BitmapData, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Boolean):void{
if (_arg5){
frames[frame].RenderAtRotBurned(_arg1, _arg2, _arg3, _arg4);
} else {
frames[frame].RenderAtRot(_arg1, _arg2, _arg3, _arg4);
};
}
public function RenderAtColTrans(_arg1:BitmapData, _arg2:Number, _arg3:Number, _arg4:ColorTransform, _arg5:Boolean=false):void{
frames[frame].RenderAtColTrans(_arg1, _arg2, _arg3, _arg4, _arg5);
}
public function GetWidth():Number{
return (frames[frame].bitmap.width);
}
public function GetHeight():Number{
return (frames[frame].bitmap.height);
}
public function GetScaledBitmap():Bitmap{
return (frames[frame].scaledBitmap);
}
}
}//package
import flash.geom.*;
import flash.display.*;
class DisplayObjFrame {
public var colTrans:ColorTransform;
public var mat:Matrix;
public var shadowBitmaps:Array;
public var yoffsets:Array;
public var xoffsets:Array;
public var bitmaps:Array;
private function DisplayObjFrame(){
}
public function RenderAtScaled(_arg1:BitmapData, _arg2:Number, _arg3:Number, _arg4:Boolean=false, _arg5:Number=1):void{
var _local6:Bitmap;
var _local7:Number;
var _local8:Number;
_local6 = bitmaps[0];
_local7 = xoffsets[0];
_local8 = yoffsets[0];
if (_arg4){
_local6 = bitmaps[1];
_local7 = xoffsets[1];
_local8 = yoffsets[1];
};
mat.identity();
mat.scale(_arg5, _arg5);
mat.translate((_arg2 + (_local7 * _arg5)), (_arg3 + (_local8 * _arg5)));
if (_local6 != null){
if (_local6.bitmapData != null){
_arg1.draw(_local6.bitmapData, mat);
};
};
}
public function RenderAtShadow(_arg1:BitmapData, _arg2:Number, _arg3:Number, _arg4:Boolean=false):void{
var _local5:Bitmap;
var _local6:Number;
var _local7:Number;
_local5 = shadowBitmaps[0];
_local6 = xoffsets[0];
_local7 = yoffsets[0];
if (_arg4){
_local5 = shadowBitmaps[1];
_local6 = xoffsets[1];
_local7 = yoffsets[1];
};
_arg1.copyPixels(_local5.bitmapData, new Rectangle(0, 0, _local5.width, _local5.height), new Point((_arg2 + _local6), (_arg3 + _local7)), null, null, true);
}
public function RenderAt(_arg1:BitmapData, _arg2:Number, _arg3:Number, _arg4:Boolean=false):void{
var _local5:Bitmap;
var _local6:Number;
var _local7:Number;
_local5 = bitmaps[0];
_local6 = xoffsets[0];
_local7 = yoffsets[0];
if (_arg4){
_local5 = bitmaps[1];
_local6 = xoffsets[1];
_local7 = yoffsets[1];
};
_arg1.copyPixels(_local5.bitmapData, new Rectangle(0, 0, _local5.width, _local5.height), new Point((_arg2 + _local6), (_arg3 + _local7)), null, null, true);
}
public function RenderAtSplit(_arg1:BitmapData, _arg2:Number, _arg3:Number):void{
var _local4:int;
var _local5:Bitmap;
var _local6:Number;
var _local7:Number;
_local4 = 0;
while (_local4 < bitmaps.length) {
_local5 = bitmaps[_local4];
_local6 = xoffsets[_local4];
_local7 = yoffsets[_local4];
_arg1.copyPixels(_local5.bitmapData, new Rectangle(0, 0, _local5.width, _local5.height), new Point((_arg2 + _local6), (_arg3 + _local7)), null, null, true);
_local4++;
};
}
public function RenderAtAlpha(_arg1:BitmapData, _arg2:Number, _arg3:Number, _arg4:Number):void{
var _local5:Bitmap;
var _local6:Number;
var _local7:Number;
_local5 = bitmaps[0];
_local6 = xoffsets[0];
_local7 = yoffsets[0];
mat.identity();
mat.translate((_arg2 + _local6), (_arg3 + _local7));
colTrans.alphaMultiplier = _arg4;
if (_local5 != null){
if (_local5.bitmapData != null){
_arg1.draw(_local5.bitmapData, mat, colTrans);
};
};
}
public function RenderAtFunction(_arg1:BitmapData, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:String):void{
var _local6:Bitmap;
var _local7:Number;
var _local8:Number;
_local6 = bitmaps[0];
_local7 = xoffsets[0];
_local8 = yoffsets[0];
mat.identity();
mat.translate((_arg2 + _local7), (_arg3 + _local8));
colTrans.alphaMultiplier = _arg4;
if (_local6 != null){
if (_local6.bitmapData != null){
_arg1.draw(_local6.bitmapData, mat, colTrans, _arg5);
};
};
}
public function RenderAtRotScaled(_arg1:BitmapData, _arg2:Number, _arg3:Number, _arg4:Boolean=false, _arg5:Number=1, _arg6:Number=0):void{
var _local7:Bitmap;
var _local8:Number;
var _local9:Number;
_local7 = bitmaps[0];
_local8 = xoffsets[0];
_local9 = yoffsets[0];
if (_arg4){
_local7 = bitmaps[1];
_local8 = xoffsets[1];
_local9 = yoffsets[1];
};
mat.identity();
mat.translate(_local8, _local9);
mat.rotate(_arg6);
mat.translate(-(_local8), -(_local9));
mat.scale(_arg5, _arg5);
mat.translate((_arg2 + (_local8 * _arg5)), (_arg3 + (_local9 * _arg5)));
if (_local7 != null){
if (_local7.bitmapData != null){
_arg1.draw(_local7.bitmapData, mat);
};
};
}
public function RenderAtRot(_arg1:BitmapData, _arg2:Number, _arg3:Number, _arg4:Number):void{
var _local5:int;
var _local6:int;
var _local7:Bitmap;
var _local8:Number;
var _local9:Number;
_arg4 = (_arg4 - 0.01);
_local5 = bitmaps.length;
_arg4 = ((Number(_local5) / (Math.PI * 2)) * _arg4);
_local6 = _arg4;
while (_local6 < 0) {
_local6 = (_local6 + _local5);
};
while (_local6 > (_local5 - 1)) {
_local6 = (_local6 - _local5);
};
_local6 = ((_local5 - 1) - _local6);
_local7 = bitmaps[_local6];
_local8 = xoffsets[_local6];
_local9 = yoffsets[_local6];
_arg1.copyPixels(_local7.bitmapData, new Rectangle(0, 0, _local7.width, _local7.height), new Point((_arg2 + _local8), (_arg3 + _local9)));
}
public function RenderAtRotScaledColTrans(_arg1:BitmapData, _arg2:Number, _arg3:Number, _arg4:Boolean=false, _arg5:Number=1, _arg6:Number=0, _arg7:ColorTransform=null):void{
var _local8:Bitmap;
var _local9:Number;
var _local10:Number;
_local8 = bitmaps[0];
_local9 = xoffsets[0];
_local10 = yoffsets[0];
if (_arg4){
_local8 = bitmaps[1];
_local9 = xoffsets[1];
_local10 = yoffsets[1];
};
mat.identity();
mat.translate(_local9, _local10);
mat.rotate(_arg6);
mat.translate(-(_local9), -(_local10));
mat.scale(_arg5, _arg5);
mat.translate((_arg2 + (_local9 * _arg5)), (_arg3 + (_local10 * _arg5)));
if (_local8 != null){
if (_local8.bitmapData != null){
_arg1.draw(_local8.bitmapData, mat, _arg7);
};
};
}
public function RenderAtColTrans(_arg1:BitmapData, _arg2:Number, _arg3:Number, _arg4:Boolean=false, _arg5:ColorTransform=null, _arg6:String=null):void{
var _local7:Bitmap;
var _local8:Number;
var _local9:Number;
_local7 = bitmaps[0];
_local8 = xoffsets[0];
_local9 = yoffsets[0];
if (_arg4){
_local7 = bitmaps[1];
_local8 = xoffsets[1];
_local9 = yoffsets[1];
};
mat.identity();
mat.translate((_arg2 + _local8), (_arg3 + _local9));
if (_local7 != null){
if (_local7.bitmapData != null){
_arg1.draw(_local7.bitmapData, mat, _arg5, _arg6);
};
};
}
public function RenderAtAdditive(_arg1:BitmapData, _arg2:Number, _arg3:Number, _arg4:Number):void{
var _local5:Bitmap;
var _local6:Number;
var _local7:Number;
_local5 = bitmaps[0];
_local6 = xoffsets[0];
_local7 = yoffsets[0];
mat.identity();
mat.translate((_arg2 + _local6), (_arg3 + _local7));
colTrans.alphaMultiplier = _arg4;
if (_local5 != null){
if (_local5.bitmapData != null){
_arg1.draw(_local5.bitmapData, mat, colTrans, "add");
};
};
}
}
Section 26
//Domain (Domain)
package {
public class Domain {
public static function GetDomain():String{
var _local1:String;
var _local2:Number;
var _local3:Number;
var _local4:String;
var _local5:Number;
var _local6:Number;
_local1 = Main.theStage.loaderInfo.url;
_local2 = (_local1.indexOf("://") + 3);
_local3 = _local1.indexOf("/", _local2);
_local4 = _local1.substring(_local2, _local3);
_local5 = (_local4.lastIndexOf(".") - 1);
_local6 = (_local4.lastIndexOf(".", _local5) + 1);
_local4 = _local4.substring(_local6, _local4.length);
return (_local4);
}
public static function IsLockedOut():Boolean{
var _local1:String;
_local1 = GetDomain();
if (((!((_local1 == "flashgamelicense.com"))) && (!((_local1 == "longanimalsgames.com"))))){
return (true);
};
return (false);
}
}
}//package
Section 27
//dragonfireball (dragonfireball)
package {
import flash.media.*;
public dynamic class dragonfireball extends Sound {
}
}//package
Section 28
//drink0 (drink0)
package {
import flash.media.*;
public dynamic class drink0 extends Sound {
}
}//package
Section 29
//Enemy1 (Enemy1)
package {
import flash.display.*;
public dynamic class Enemy1 extends MovieClip {
}
}//package
Section 30
//Enemy1_deadBits (Enemy1_deadBits)
package {
import flash.display.*;
public dynamic class Enemy1_deadBits extends MovieClip {
}
}//package
Section 31
//Enemy2 (Enemy2)
package {
import flash.display.*;
public dynamic class Enemy2 extends MovieClip {
}
}//package
Section 32
//Enemy2_deadBits (Enemy2_deadBits)
package {
import flash.display.*;
public dynamic class Enemy2_deadBits extends MovieClip {
}
}//package
Section 33
//Enemy3 (Enemy3)
package {
import flash.display.*;
public dynamic class Enemy3 extends MovieClip {
}
}//package
Section 34
//Enemy3_arrow (Enemy3_arrow)
package {
import flash.display.*;
public dynamic class Enemy3_arrow extends MovieClip {
}
}//package
Section 35
//Enemy3_deadBits (Enemy3_deadBits)
package {
import flash.display.*;
public dynamic class Enemy3_deadBits extends MovieClip {
}
}//package
Section 36
//Enemy4 (Enemy4)
package {
import flash.display.*;
public dynamic class Enemy4 extends MovieClip {
}
}//package
Section 37
//Enemy4_deadBits (Enemy4_deadBits)
package {
import flash.display.*;
public dynamic class Enemy4_deadBits extends MovieClip {
}
}//package
Section 38
//Enemy4_MagicBullet (Enemy4_MagicBullet)
package {
import flash.display.*;
public dynamic class Enemy4_MagicBullet extends MovieClip {
}
}//package
Section 39
//Enemy5 (Enemy5)
package {
import flash.display.*;
public dynamic class Enemy5 extends MovieClip {
}
}//package
Section 40
//Enemy5_deadBits (Enemy5_deadBits)
package {
import flash.display.*;
public dynamic class Enemy5_deadBits extends MovieClip {
}
}//package
Section 41
//Enemy6 (Enemy6)
package {
import flash.display.*;
public dynamic class Enemy6 extends MovieClip {
}
}//package
Section 42
//Enemy6_deadBits (Enemy6_deadBits)
package {
import flash.display.*;
public dynamic class Enemy6_deadBits extends MovieClip {
}
}//package
Section 43
//Enemy7 (Enemy7)
package {
import flash.display.*;
public dynamic class Enemy7 extends MovieClip {
}
}//package
Section 44
//Enemy7_deadBits (Enemy7_deadBits)
package {
import flash.display.*;
public dynamic class Enemy7_deadBits extends MovieClip {
}
}//package
Section 45
//Enemy7_fireball (Enemy7_fireball)
package {
import flash.display.*;
public dynamic class Enemy7_fireball extends MovieClip {
}
}//package
Section 46
//Enemy7_fireExplosion (Enemy7_fireExplosion)
package {
import flash.display.*;
public dynamic class Enemy7_fireExplosion extends MovieClip {
}
}//package
Section 47
//ExternalData (ExternalData)
package {
import flash.events.*;
import flash.net.*;
public class ExternalData {
static var f:Function;
static var xml:XML;
static var xxx:XML = <data>
<general>
<pickup health="20" gold="300" berzerker="20" time="5"/>
<player hit="30" duckhit="5"/>
</general>
<playerweapon name="Sword" cost="3000" objname1="PlayerSwordBullet" objname2="PlayerSwordBullet2" objname3="PlayerSwordBullet">
<sound name="sword0"/>
<level id="0" damage="2" speed="1" cost="0"/>
<level id="1" damage="3" speed="1" cost="4000"/>
<level id="2" damage="4" speed="1" cost="5000"/>
</playerweapon>
<playerweapon name="Axe" cost="9000" objname1="PlayerAxeBullet" objname2="PlayerAxeBullet2" objname3="PlayerAxeBullet3">
<sound name="sword0"/>
<level id="0" damage="4" speed="1" cost="0"/>
<level id="1" damage="5" speed="1" cost="10000"/>
<level id="2" damage="6" speed="1" cost="11000"/>
</playerweapon>
<playerweapon name="Flail" cost="15000" objname1="PlayerFlailBullet" objname2="PlayerFlailBullet2" objname3="PlayerFlailBullet3">
<sound name="sword0"/>
<level id="0" damage="6" speed="1" cost="0"/>
<level id="1" damage="7" speed="1" cost="16000"/>
<level id="2" damage="8" speed="1" cost="17000"/>
</playerweapon>
<playerweapon name="Sling" cost="0" objname1="PlayerSlingBullet" objname2="PlayerSlingBullet" objname3="PlayerSlingBullet">
<sound name="sling0"/>
<level id="0" damage="1" speed="1" reload="1" cost="0"/>
<level id="1" damage="1.5" speed="1" reload="0.9" cost="1000"/>
<level id="2" damage="2" speed="1" reload="0.8" cost="2000"/>
</playerweapon>
<playerweapon name="Bow" cost="6000" objname1="PlayerBowBullet" objname2="PlayerBowBullet" objname3="PlayerBowBullet">
<sound name="arrow0"/>
<level id="0" damage="2" speed="1" reload="1" cost="0"/>
<level id="1" damage="2.5" speed="1" reload="0.9" cost="7000"/>
<level id="2" damage="3" speed="1" reload="0.8" cost="8000"/>
</playerweapon>
<playerweapon name="Crossbow" cost="12000" objname1="PlayerCrossbowBullet" objname2="PlayerCrossbowBullet" objname3="PlayerCrossbowBullet">
<sound name="arrow0"/>
<level id="0" damage="3" speed="1" reload="1" cost="0"/>
<level id="1" damage="3.5" speed="1" reload="0.9" cost="13000"/>
<level id="2" damage="4" speed="1" reload="0.8" cost="14000"/>
</playerweapon>
<objdef name="Player" gen="cpu" description="player">
<booty score="400" num="1" type="0"/>
<collisionrect x0="-20" y0="-100" x1="20" y1="0"/>
<control initfunc="InitPlayer"/>
<anim id="idle" graphic="Player" f0="1" f1="15" speed="1"/>
<anim id="walk" graphic="Player" f0="16" f1="33" speed="1"/>
<anim id="jump" graphic="Player" f0="35" f1="54" speed="1"/>
<anim id="die" graphic="Player" f0="55" f1="68" speed="1"/>
<anim id="jumpattack" graphic="Player" f0="69" f1="87" speed="1">
<event frame="5" func="Event_PlayerGenerateBullet"/>
</anim>
<anim id="standtoduck" graphic="Player" f0="88" f1="97" speed="1"/>
<anim id="duck" graphic="Player" f0="98" f1="112" speed="1"/>
<anim id="ducktostand" graphic="Player" f0="113" f1="122" speed="1"/>
<anim id="attack" graphic="Player" f0="123" f1="136" speed="1">
<event frame="5" func="Event_PlayerGenerateBullet"/>
</anim>
<anim id="attack2" graphic="Player" f0="137" f1="156" speed="1">
<event frame="5" func="Event_PlayerGenerateBullet"/>
</anim>
<anim id="slingattack" graphic="Player" f0="157" f1="168" speed="1">
<event frame="5" func="Event_PlayerGenerateBullet"/>
</anim>
<anim id="jumpslingattack" graphic="Player" f0="169" f1="180" speed="1">
<event frame="5" func="Event_PlayerGenerateBullet"/>
</anim>
<anim id="axeattack" graphic="Player" f0="181" f1="194" speed="1">
<event frame="5" func="Event_PlayerGenerateBullet"/>
</anim>
<anim id="axeattack2" graphic="Player" f0="195" f1="214" speed="1">
<event frame="5" func="Event_PlayerGenerateBullet"/>
</anim>
<anim id="axeattack3" graphic="Player" f0="215" f1="234" speed="1">
<event frame="5" func="Event_PlayerGenerateBullet"/>
</anim>
<anim id="jumpaxeattack" graphic="Player" f0="215" f1="234" speed="1">
<event frame="5" func="Event_PlayerGenerateBullet"/>
</anim>
<anim id="flailattack" graphic="Player" f0="235" f1="251" speed="1">
<event frame="5" func="Event_PlayerGenerateBullet"/>
</anim>
<anim id="flailattack2" graphic="Player" f0="252" f1="263" speed="1">
<event frame="5" func="Event_PlayerGenerateBullet"/>
</anim>
<anim id="flailattack3" graphic="Player" f0="267" f1="277" speed="1">
<event frame="5" func="Event_PlayerGenerateBullet"/>
</anim>
<anim id="jumpflailattack" graphic="Player" f0="278" f1="291" speed="1">
<event frame="5" func="Event_PlayerGenerateBullet"/>
</anim>
<anim id="bowattack" graphic="Player" f0="292" f1="300" speed="1">
<event frame="5" func="Event_PlayerGenerateBullet"/>
</anim>
<anim id="jumpbowattack" graphic="Player" f0="301" f1="309" speed="1">
<event frame="5" func="Event_PlayerGenerateBullet"/>
</anim>
<anim id="crossbowattack" graphic="Player" f0="310" f1="315" speed="1">
<event frame="5" func="Event_PlayerGenerateBullet"/>
</anim>
<anim id="jumpcrossbowattack" graphic="Player" f0="316" f1="321" speed="1">
<event frame="5" func="Event_PlayerGenerateBullet"/>
</anim>
<anim id="hit" graphic="Player" f0="322" f1="325" speed="0.2"/>
<data health="20" damage="1"/>
</objdef>
<objdef name="Knight" gen="cpu" description="">
<soundtype name="Knight"/>
<healthbar y="-130"/>
<booty score="1000" num="1" type="0"/>
<collisionrect x0="-20" y0="-100" x1="20" y1="0"/>
<control initfunc="InitEnemy_Knight"/>
<anim id="idle" graphic="Enemy6" f0="1" f1="15" speed="1"/>
<anim id="walk" graphic="Enemy6" f0="16" f1="34" speed="1"/>
<anim id="attack" graphic="Enemy6" f0="35" f1="54" speed="1">
<event frame="12" func="Event_EnemyKnightGenerateBullet"/>
</anim>
<anim id="attack2" graphic="Enemy6" f0="55" f1="86" speed="1">
<event frame="18" func="Event_EnemyKnightGenerateBullet1"/>
</anim>
<anim id="hit" graphic="Enemy6" f0="87" f1="97" speed="1"/>
<data health="1" damage="1"/>
<death bloodmin="3" bloodmax="4" gutsmin="0" gutsmax="1" graphic="Enemy6_deadBits">
<piece x="0" y="-50" frame="0" spurt="0"/>
<piece x="0" y="-100" frame="1" spurt="1"/>
<piece x="0" y="-100" frame="2" spurt="0"/>
<piece x="0" y="-80" frame="3" spurt="0"/>
<piece x="0" y="-50" frame="4" spurt="0"/>
<piece x="0" y="-40" frame="5" spurt="0"/>
<piece x="0" y="-30" frame="6" spurt="0"/>
<piece x="0" y="-30" frame="7" spurt="0"/>
</death>
</objdef>
<objdef name="VampireBat" gen="cpu" description="">
<soundtype name="Bat"/>
<healthbar y="-60"/>
<booty score="1000" num="1" type="0"/>
<collisionrect x0="-20" y0="-20" x1="20" y1="20"/>
<control initfunc="InitEnemy_VampireBat"/>
<anim id="idle" graphic="Enemy2" f0="1" f1="10" speed="1"/>
<anim id="attack" graphic="Enemy2" f0="11" f1="12" speed="1"/>
<anim id="hit" graphic="Enemy2" f0="67" f1="68" speed="0.1"/>
<data health="1" damage="0.33"/>
<death bloodmin="3" bloodmax="4" gutsmin="0" gutsmax="1" graphic="Enemy2_deadBits">
<piece x="0" y="0" frame="0" spurt="1"/>
<piece x="0" y="0" frame="1" spurt="0"/>
</death>
</objdef>
<objdef name="VampireBatNoPoo" gen="cpu" description="">
<soundtype name="Bat"/>
<healthbar y="-60"/>
<booty score="1000" num="1" type="0"/>
<collisionrect x0="-20" y0="-20" x1="20" y1="20"/>
<control initfunc="InitEnemy_VampireBat" var0="1"/>
<anim id="idle" graphic="Enemy2" f0="1" f1="10" speed="1"/>
<anim id="attack" graphic="Enemy2" f0="11" f1="12" speed="1"/>
<anim id="hit" graphic="Enemy2" f0="67" f1="68" speed="0.1"/>
<data health="1" damage="0.33"/>
<death bloodmin="3" bloodmax="4" gutsmin="0" gutsmax="1" graphic="Enemy2_deadBits">
<piece x="0" y="0" frame="0" spurt="1"/>
<piece x="0" y="0" frame="1" spurt="0"/>
</death>
</objdef>
<objdef name="VampireBatNoSwoop" gen="cpu" description="">
<soundtype name="Bat"/>
<healthbar y="-60"/>
<booty score="1000" num="1" type="0"/>
<collisionrect x0="-20" y0="-20" x1="20" y1="20"/>
<control initfunc="InitEnemy_VampireBat" var0="2"/>
<anim id="idle" graphic="Enemy2" f0="1" f1="10" speed="1"/>
<anim id="attack" graphic="Enemy2" f0="11" f1="12" speed="1"/>
<anim id="hit" graphic="Enemy2" f0="67" f1="68" speed="0.1"/>
<data health="1" damage="0.33"/>
<death bloodmin="3" bloodmax="4" gutsmin="0" gutsmax="1" graphic="Enemy2_deadBits">
<piece x="0" y="0" frame="0" spurt="1"/>
<piece x="0" y="0" frame="1" spurt="0"/>
</death>
</objdef>
<objdef name="BabyDragon" gen="cpu" description="">
<soundtype name="Dragon"/>
<healthbar y="-60"/>
<booty score="1000" num="1" type="0"/>
<collisionrect x0="-20" y0="-20" x1="20" y1="20"/>
<control initfunc="InitEnemy_BabyDragon"/>
<anim id="idle" graphic="Enemy7" f0="1" f1="11" speed="1"/>
<anim id="attack" graphic="Enemy7" f0="12" f1="27" speed="1">
<event frame="10" func="Event_EnemyBabyDragonGenerateBullet"/>
</anim>
<anim id="hit" graphic="Enemy7" f0="28" f1="38" speed="1"/>
<data health="1" damage="1"/>
<death bloodmin="3" bloodmax="4" gutsmin="0" gutsmax="1" graphic="Enemy7_deadBits">
<piece x="0" y="0" frame="0" spurt="0"/>
<piece x="0" y="0" frame="1" spurt="1"/>
<piece x="0" y="0" frame="2" spurt="0"/>
<piece x="0" y="0" frame="3" spurt="0"/>
</death>
</objdef>
<objdef name="BabyDragon_NoFire" gen="cpu" description="">
<soundtype name="Dragon"/>
<healthbar y="-60"/>
<booty score="1000" num="1" type="0"/>
<collisionrect x0="-20" y0="-20" x1="20" y1="20"/>
<control initfunc="InitEnemy_BabyDragon" var0="1"/>
<anim id="idle" graphic="Enemy7" f0="1" f1="11" speed="1"/>
<anim id="attack" graphic="Enemy7" f0="12" f1="27" speed="1">
<event frame="10" func="Event_EnemyBabyDragonGenerateBullet"/>
</anim>
<anim id="hit" graphic="Enemy7" f0="28" f1="38" speed="1"/>
<data health="1" damage="1"/>
<death bloodmin="3" bloodmax="4" gutsmin="0" gutsmax="1" graphic="Enemy7_deadBits">
<piece x="0" y="0" frame="0" spurt="0"/>
<piece x="0" y="0" frame="1" spurt="1"/>
<piece x="0" y="0" frame="2" spurt="0"/>
<piece x="0" y="0" frame="3" spurt="0"/>
</death>
</objdef>
<objdef name="Troll" gen="cpu" description="Big bastard who can only be hit after his swipe move.">
<soundtype name="Troll"/>
<healthbar y="-200"/>
<booty score="1000" num="1" type="0"/>
<collisionrect x0="-40" y0="-160" x1="40" y1="0"/>
<vulnerablecollisionrect x0="-30" y0="-100" x1="30" y1="-30"/>
<control initfunc="InitEnemy_Troll"/>
<anim id="idle" graphic="Enemy5" f0="1" f1="16" speed="1"/>
<anim id="walk" graphic="Enemy5" f0="17" f1="32" speed="1"/>
<anim id="raiseclub" graphic="Enemy5" f0="33" f1="40" speed="1"/>
<anim id="raiseclubidle" graphic="Enemy5" f0="41" f1="45" speed="1"/>
<anim id="swingclub" graphic="Enemy5" f0="46" f1="62" speed="1">
<event frame="8" func="Event_EnemyTrollGenerateBullet"/>
</anim>
<anim id="attackidle" graphic="Enemy5" f0="63" f1="64" speed="1"/>
<anim id="attack" graphic="Enemy5" f0="63" f1="77" speed="1">
<event frame="3" func="Event_EnemyTrollGenerateBullet1"/>
</anim>
<anim id="hit" graphic="Enemy5" f0="78" f1="91" speed="1"/>
<data health="10" damage="1"/>
<death bloodmin="2" bloodmax="3" gutsmin="3" gutsmax="4" graphic="Enemy5_deadBits">
<piece x="0" y="-100" frame="0" spurt="1"/>
<piece x="0" y="-50" frame="1" spurt="0"/>
<piece x="0" y="-70" frame="2" spurt="0"/>
<piece x="0" y="-30" frame="3" spurt="0"/>
</death>
</objdef>
<objdef name="Gnome" gen="cpu" description="little guy with spiky helmet, shoots from a distance and does occasional run attack">
<soundtype name="Gnome"/>
<healthbar y="-100"/>
<booty score="1000" num="1" type="0"/>
<collisionrect x0="-20" y0="-80" x1="20" y1="0"/>
<control initfunc="InitEnemy_Gnome"/>
<anim id="idle" graphic="Enemy3" f0="1" f1="19" speed="1"/>
<anim id="walk" graphic="Enemy3" f0="20" f1="37" speed="1"/>
<anim id="attack" graphic="Enemy3" f0="38" f1="67" speed="1">
<event frame="5" func="Event_EnemyGnomeGenerateBullet"/>
</anim>
<anim id="run" graphic="Enemy3" f0="68" f1="85" speed="1"/>
<anim id="hit" graphic="Enemy3" f0="86" f1="110" speed="1"/>
<anim id="die" graphic="Enemy3" f0="1" f1="2" speed="1"/>
<data health="1" damage="1"/>
<death bloodmin="3" bloodmax="4" gutsmin="0" gutsmax="1" graphic="Enemy3_deadBits">
<piece x="0" y="-100" frame="0" spurt="1"/>
<piece x="0" y="-70" frame="1" spurt="0"/>
<piece x="0" y="-70" frame="2" spurt="0"/>
<piece x="0" y="-30" frame="3" spurt="0"/>
<piece x="0" y="-30" frame="5" spurt="0"/>
</death>
</objdef>
<objdef name="Gnome_Arrows" gen="cpu" description="little guy with spiky helmet, shoots from a distance">
<soundtype name="Gnome"/>
<healthbar y="-100"/>
<booty score="1000" num="1" type="0"/>
<collisionrect x0="-20" y0="-80" x1="20" y1="0"/>
<control initfunc="InitEnemy_Gnome" var0="1"/>
<anim id="idle" graphic="Enemy3" f0="1" f1="19" speed="1"/>
<anim id="walk" graphic="Enemy3" f0="20" f1="37" speed="1"/>
<anim id="attack" graphic="Enemy3" f0="38" f1="67" speed="1">
<event frame="5" func="Event_EnemyGnomeGenerateBullet"/>
</anim>
<anim id="run" graphic="Enemy3" f0="68" f1="85" speed="1"/>
<anim id="hit" graphic="Enemy3" f0="86" f1="110" speed="1"/>
<anim id="die" graphic="Enemy3" f0="1" f1="2" speed="1"/>
<data health="1" damage="1"/>
<death bloodmin="3" bloodmax="4" gutsmin="0" gutsmax="1" graphic="Enemy3_deadBits">
<piece x="0" y="-100" frame="0" spurt="1"/>
<piece x="0" y="-70" frame="1" spurt="0"/>
<piece x="0" y="-70" frame="2" spurt="0"/>
<piece x="0" y="-30" frame="3" spurt="0"/>
<piece x="0" y="-30" frame="5" spurt="0"/>
</death>
</objdef>
<objdef name="Gnome_Running" gen="cpu" description="little guy with spiky helmet, shoots from a distance">
<soundtype name="Gnome"/>
<healthbar y="-100"/>
<booty score="1000" num="1" type="0"/>
<collisionrect x0="-20" y0="-80" x1="20" y1="0"/>
<control initfunc="InitEnemy_Gnome" var0="2"/>
<anim id="idle" graphic="Enemy3" f0="1" f1="19" speed="1"/>
<anim id="walk" graphic="Enemy3" f0="20" f1="37" speed="1"/>
<anim id="attack" graphic="Enemy3" f0="38" f1="67" speed="1">
<event frame="5" func="Event_EnemyGnomeGenerateBullet"/>
</anim>
<anim id="run" graphic="Enemy3" f0="68" f1="85" speed="1"/>
<anim id="hit" graphic="Enemy3" f0="86" f1="110" speed="1"/>
<anim id="die" graphic="Enemy3" f0="1" f1="2" speed="1"/>
<data health="1" damage="1"/>
<death bloodmin="3" bloodmax="4" gutsmin="0" gutsmax="1" graphic="Enemy3_deadBits">
<piece x="0" y="-100" frame="0" spurt="1"/>
<piece x="0" y="-70" frame="1" spurt="0"/>
<piece x="0" y="-70" frame="2" spurt="0"/>
<piece x="0" y="-30" frame="3" spurt="0"/>
<piece x="0" y="-30" frame="5" spurt="0"/>
</death>
</objdef>
<objdef name="Pixie" gen="cpu" description="">
<soundtype name="Pixie"/>
<healthbar y="-100"/>
<booty score="1000" num="1" type="0"/>
<collisionrect x0="-20" y0="-100" x1="20" y1="20"/>
<control initfunc="InitEnemy_Pixie"/>
<anim id="idle" graphic="Enemy1" f0="1" f1="15" speed="1"/>
<anim id="walk" graphic="Enemy1" f0="16" f1="34" speed="1"/>
<anim id="attack" graphic="Enemy1" f0="35" f1="57" speed="1">
<event frame="5" func="Event_EnemyPixieGenerateBullet"/>
</anim>
<anim id="hit" graphic="Enemy1" f0="1" f1="2" speed="0.1"/>
<anim id="die" graphic="Enemy1" f0="1" f1="2" speed="1"/>
<data health="1" damage="1"/>
<death bloodmin="3" bloodmax="4" gutsmin="0" gutsmax="1" graphic="Enemy1_deadBits">
<piece x="0" y="-100" frame="0" spurt="1"/>
<piece x="0" y="-70" frame="1" spurt="0"/>
<piece x="0" y="-70" frame="2" spurt="0"/>
<piece x="0" y="-30" frame="3" spurt="0"/>
</death>
</objdef>
<objdef name="Jester" gen="cpu" description="bouncy little bastard">
<soundtype name="Jester"/>
<healthbar y="-100"/>
<booty score="1000" num="1" type="0"/>
<collisionrect x0="-20" y0="-70" x1="20" y1="40"/>
<control initfunc="InitEnemy_Jester"/>
<anim id="idle" graphic="Enemy4" f0="1" f1="11" speed="1"/>
<anim id="walk" graphic="Enemy4" f0="1" f1="11" speed="1"/>
<anim id="prejump" graphic="Enemy4" f0="12" f1="18" speed="1"/>
<anim id="postjump" graphic="Enemy4" f0="12" f1="18" speed="-1"/>
<anim id="jump" graphic="Enemy4" f0="19" f1="26" speed="1"/>
<anim id="hit" graphic="Enemy4" f0="27" f1="35" speed="1"/>
<anim id="die" graphic="Enemy4" f0="1" f1="2" speed="1"/>
<data health="1" damage="1"/>
<death bloodmin="3" bloodmax="4" gutsmin="0" gutsmax="1" graphic="Enemy4_deadBits">
<piece x="0" y="-30" frame="0" spurt="1"/>
<piece x="0" y="-20" frame="1" spurt="0"/>
<piece x="0" y="-20" frame="2" spurt="0"/>
<piece x="0" y="-10" frame="3" spurt="0"/>
</death>
</objdef>
<objdef name="PixieBullet" gen="cpu" description="">
<collisionrect x0="-50" y0="-40" x1="50" y1="40"/>
<control initfunc="Init_EnemySwordBullet"/>
<offset x="50" y="-50"/>
<data health="1" damage="1"/>
</objdef>
<objdef name="GnomeBullet" gen="cpu" description="">
<collisionrect x0="-20" y0="-5" x1="20" y1="5"/>
<control initfunc="Init_EnemyProjectileBullet"/>
<anim id="idle" graphic="Enemy3_arrow" f0="1" f1="1" speed="1"/>
<offset x="0" y="-50"/>
<data health="1" damage="1"/>
</objdef>
<objdef name="JesterBullet" gen="cpu" description="">
<collisionrect x0="-10" y0="-10" x1="10" y1="10"/>
<control initfunc="Init_EnemyProjectileBulletToPlayer"/>
<anim id="idle" graphic="Enemy4_MagicBullet" f0="1" f1="17" speed="1"/>
<offset x="0" y="-50"/>
<data health="1" damage="1"/>
</objdef>
<objdef name="TrollBullet" gen="cpu" description="">
<collisionrect x0="-80" y0="-40" x1="80" y1="40"/>
<control initfunc="Init_EnemySwordBullet"/>
<offset x="80" y="-50"/>
<data health="1" damage="1"/>
</objdef>
<objdef name="TrollBullet1" gen="cpu" description="">
<collisionrect x0="-50" y0="-40" x1="50" y1="40"/>
<control initfunc="Init_EnemySwordBullet"/>
<offset x="70" y="-90"/>
<data health="1" damage="1"/>
</objdef>
<objdef name="KnightBullet" gen="cpu" description="">
<collisionrect x0="-50" y0="-40" x1="50" y1="40"/>
<control initfunc="Init_EnemySwordBullet"/>
<offset x="70" y="-50"/>
<data health="1" damage="1"/>
</objdef>
<objdef name="KnightBullet1" gen="cpu" description="">
<collisionrect x0="-50" y0="-40" x1="50" y1="40"/>
<control initfunc="Init_EnemySwordBullet"/>
<offset x="60" y="-40"/>
<data health="1" damage="1"/>
</objdef>
<objdef name="BabyDragonBullet" gen="cpu" description="">
<collisionrect x0="-50" y0="-40" x1="50" y1="40"/>
<control initfunc="Init_EnemyBabyDragonBullet"/>
<anim id="idle" graphic="Enemy7_fireball" f0="1" f1="16" speed="1"/>
<offset x="20" y="0"/>
<data health="1" damage="1"/>
</objdef>
<objdef name="BabyDragonFireballExplosion" gen="cpu" description="">
<collisionrect x0="-50" y0="-40" x1="50" y1="40"/>
<control initfunc="Init_Generic_PlayOnce_Stationary"/>
<anim id="idle" graphic="Enemy7_fireExplosion" f0="1" f1="31" speed="0.5"/>
<offset x="0" y="0"/>
<data health="1" damage="1"/>
</objdef>
<!-- Misc -->
<objdef name="BatPoo" gen="cpu" description="">
<collisionrect x0="-10" y0="-10" x1="10" y1="10"/>
<control initfunc="InitBatPoo"/>
<anim id="fall" graphic="BatPoo" f0="1" f1="10" speed="1"/>
<anim id="splat" graphic="BatPoo" f0="11" f1="18" speed="1"/>
<data health="1" damage="0.333"/>
</objdef>
<!-- Pickups -->
<objdef name="PickupHealth" gen="cpu" description="">
<booty score="1000" num="1" type="0"/>
<collisionrect x0="-20" y0="-20" x1="20" y1="20"/>
<control initfunc="InitPickupHealth"/>
<anim id="idle" graphic="Pickup_Health" f0="1" f1="3" speed="1"/>
<data health="20"/>
</objdef>
<objdef name="PickupGold" gen="cpu" description="">
<booty score="1000" num="1" type="0"/>
<collisionrect x0="-20" y0="-20" x1="20" y1="20"/>
<control initfunc="InitPickupGold"/>
<anim id="idle" graphic="Pickup_Gold" f0="1" f1="3" speed="0.5"/>
<anim id="land" graphic="Pickup_Gold" f0="4" f1="14" speed="0.5"/>
<data health="20"/>
</objdef>
<objdef name="PickupBerzerker" gen="cpu" description="">
<booty score="1000" num="1" type="0"/>
<collisionrect x0="-20" y0="-20" x1="20" y1="20"/>
<control initfunc="InitPickupBerzerker"/>
<anim id="idle" graphic="Pickup_Berzerker" f0="1" f1="8" speed="0.5"/>
<data health="20"/>
</objdef>
<!-- Bullets (weapons)-->
<objdef name="PlayerSwordBullet" gen="cpu" description="">
<soundtype name="PlayerSword"/>
<collisionrect x0="-50" y0="-50" x1="50" y1="50"/>
<control initfunc="Init_PlayerSwordBullet"/>
<offset x="50" y="-100"/>
<data health="20"/>
</objdef>
<objdef name="PlayerSwordBullet2" gen="cpu" description="">
<soundtype name="PlayerSword"/>
<collisionrect x0="-50" y0="-50" x1="50" y1="50"/>
<control initfunc="Init_PlayerSwordBullet"/>
<offset x="50" y="-50"/>
<data health="20"/>
</objdef>
<objdef name="PlayerAxeBullet" gen="cpu" description="">
<soundtype name="PlayerAxe"/>
<collisionrect x0="-50" y0="-50" x1="50" y1="90"/>
<control initfunc="Init_PlayerSwordBullet"/>
<offset x="50" y="-100"/>
<data health="20"/>
</objdef>
<objdef name="PlayerAxeBullet2" gen="cpu" description="">
<soundtype name="PlayerAxe"/>
<collisionrect x0="-50" y0="-50" x1="50" y1="120"/>
<control initfunc="Init_PlayerSwordBullet"/>
<offset x="50" y="-100"/>
<data health="20"/>
</objdef>
<objdef name="PlayerAxeBullet3" gen="cpu" description="">
<soundtype name="PlayerAxe"/>
<collisionrect x0="00" y0="-50" x1="100" y1="120"/>
<control initfunc="Init_PlayerSwordBullet"/>
<offset x="00" y="-100"/>
<data health="20"/>
</objdef>
<objdef name="PlayerFlailBullet" gen="cpu" description="sweep up from floor">
<soundtype name="PlayerFlail"/>
<collisionrect x0="-50" y0="-20" x1="130" y1="100"/>
<control initfunc="Init_PlayerSwordBullet"/>
<offset x="0" y="-100"/>
<data health="20"/>
</objdef>
<objdef name="PlayerFlailBullet2" gen="cpu" description="twirl round">
<soundtype name="PlayerFlail"/>
<collisionrect x0="-70" y0="-70" x1="50" y1="50"/>
<control initfunc="Init_PlayerSwordBullet"/>
<offset x="80" y="-100"/>
<data health="20"/>
</objdef>
<objdef name="PlayerFlailBullet3" gen="cpu" description="down from top">
<soundtype name="PlayerFlail"/>
<collisionrect x0="-50" y0="-50" x1="100" y1="100"/>
<control initfunc="Init_PlayerSwordBullet"/>
<offset x="50" y="-100"/>
<data health="20"/>
</objdef>
<objdef name="PlayerSlingBullet" gen="cpu" description="">
<soundtype name="PlayerSling"/>
<collisionrect x0="-5" y0="-5" x1="5" y1="5"/>
<control initfunc="Init_PlayerSlingBullet"/>
<offset x="50" y="-100"/>
<data health="20"/>
</objdef>
<objdef name="PlayerBowBullet" gen="cpu" description="">
<soundtype name="PlayerArrow"/>
<collisionrect x0="-5" y0="-5" x1="5" y1="5"/>
<control initfunc="Init_PlayerBowBullet"/>
<offset x="50" y="-70"/>
<data health="20"/>
</objdef>
<objdef name="PlayerCrossbowBullet" gen="cpu" description="">
<soundtype name="PlayerArrow"/>
<collisionrect x0="-5" y0="-5" x1="5" y1="5"/>
<control initfunc="Init_PlayerCrossbowBullet"/>
<offset x="50" y="-74"/>
<data health="20"/>
</objdef>
<!-- LEVELS -->
<!--
Enemy types:
Pixie (runs around and walks up and attacks)
Gnome (fires arrows and runs at you)
Gnome_Arrows (only fires arrows)
Gnome_Running (only runs)
Jester
VampireBat
VampireBatNoPoo
VampireBatNoSwoop
Knight
Troll
BabyDragon
BabyDragon_NoFire
-->
<level background="-1" notes="a" displaytext="Dratted Pixies!">
<enemy type="Pixie" max="3" delay="0" aggression="0" speed="0" health="1"/>
</level>
<level background="-1" notes="b" displaytext="Gnomes - watch out for arrows">
<enemy type="Gnome_Arrows" max="2" delay="0" aggression="0" speed="0" health="1"/>
</level>
<level background="-1" notes="c" displaytext="They're ganging up on me">
<enemy type="Gnome_Arrows" max="2" delay="0" aggression="0" speed="0" health="1"/>
<enemy type="Pixie" max="2" delay="0" aggression="0" speed="0" health="1"/>
</level>
<level background="-1" notes="d" displaytext="Bats!">
<enemy type="VampireBatNoPoo" max="3" delay="0" aggression="0" speed="0" health="1"/>
</level>
<level background="-1" notes="" displaytext="Gnomes - with attitude!">
<enemy type="Gnome_Running" max="2" delay="0" aggression="0.5" speed="0" health="1"/>
</level>
<level background="-1" notes="" displaytext="What the? Just not funny">
<enemy type="Jester" max="4" delay="0" aggression="0" speed="0" health="1"/>
</level>
<level background="-1" notes="" displaytext="They're getting harder!">
<enemy type="Pixie" max="3" delay="0" aggression="0.5" speed="0.5" health="2"/>
</level>
<level background="-1" notes="d" displaytext="Insane onslaught">
<enemy type="VampireBatNoPoo" max="3" delay="0" aggression="0" speed="0" health="1"/>
<enemy type="Jester" max="4" delay="0" aggression="0" speed="0" health="1"/>
</level>
<level background="-1" notes="" displaytext="nasty gnomes">
<enemy type="Gnome_Running" max="4" delay="0" aggression="0.5" speed="0.5" health="2"/>
</level>
<level background="-1" notes="" displaytext="Knights">
<enemy type="Knight" max="3" delay="0" aggression="0" speed="0" health="5"/>
</level>
<level background="-1" notes="d" displaytext="Stinking Bats!">
<enemy type="VampireBatNoSwoop" max="5" delay="0" aggression="0.5" speed="0" health="2"/>
</level>
<level background="-1" notes="" displaytext="Mixed up">
<enemy type="Pixie" max="1" delay="0" aggression="0.5" speed="0.5" health="2"/>
<enemy type="Gnome" max="1" delay="0" aggression="0.5" speed="0.5" health="2"/>
<enemy type="Jester" max="1" delay="0" aggression="0" speed="0" health="2"/>
<enemy type="VampireBatNoPoo" max="1" delay="0" aggression="0" speed="0" health="2"/>
<enemy type="Knight" max="1" delay="0" aggression="0" speed="0" health="5"/>
</level>
<level background="-1" notes="a" displaytext="Swarming!">
<enemy type="Pixie" max="4" delay="0" aggression="0.5" speed="0" health="2"/>
<enemy type="Pixie" max="4" delay="0" aggression="0.5" speed="1" health="2"/>
</level>
<level background="-1" notes="Trollllll" displaytext="Trollllll">
<enemy type="Troll" max="1" delay="0" aggression="0" speed="0" health="5"/>
</level>
<level background="-1" notes="b" displaytext="Gnomes Onslaught">
<enemy type="Gnome_Arrows" max="5" delay="0" aggression="0" speed="0" health="3"/>
<enemy type="Gnome_Arrows" max="5" delay="10" aggression="0" speed="0" health="3"/>
</level>
<level background="-1" notes="b" displaytext="Bouncing">
<enemy type="Knight" max="3" delay="0" aggression="0" speed="0" health="4"/>
<enemy type="Jester" max="5" delay="0" aggression="0" speed="0" health="3"/>
</level>
<level background="-1" notes="b" displaytext="Bouncing harder">
<enemy type="Knight" max="3" delay="0" aggression="0.5" speed="0" health="4"/>
<enemy type="Jester" max="5" delay="0" aggression="0.5" speed="0" health="3"/>
</level>
<level background="-1" notes="Bat alert" displaytext="Bat alert">
<enemy type="VampireBat" max="5" delay="0" aggression="1" speed="1" health="3"/>
</level>
<level background="-1" notes="" displaytext="Gnomes - with more attitude!">
<enemy type="Gnome_Running" max="6" delay="0" aggression="0.5" speed="0.5" health="5"/>
</level>
<level background="-1" notes="" displaytext="Troll and friends">
<enemy type="Troll" max="1" delay="0" aggression="0.2" speed="0" health="5"/>
<enemy type="Jester" max="8" delay="0" aggression="0.5" speed="0" health="3"/>
</level>
<level background="-1" notes="a" displaytext="Harder Pixies!">
<enemy type="Pixie" max="4" delay="0" aggression="1" speed="0" health="5"/>
<enemy type="Pixie" max="4" delay="0" aggression="1" speed="0.5" health="5"/>
</level>
<level background="-1" notes="" displaytext="Mixed up more">
<enemy type="Pixie" max="2" delay="0" aggression="0.5" speed="0.5" health="4"/>
<enemy type="Gnome" max="2" delay="0" aggression="0.5" speed="0.5" health="5"/>
<enemy type="Jester" max="2" delay="0" aggression="0" speed="0" health="5"/>
<enemy type="VampireBat" max="2" delay="0" aggression="0" speed="0" health="4"/>
<enemy type="Knight" max="2" delay="0" aggression="0" speed="0" health="7"/>
</level>
<level background="-1" notes="b" displaytext="Knight attack">
<enemy type="Knight" max="3" delay="0" aggression="0.5" speed="0" health="7"/>
<enemy type="Knight" max="3" delay="0" aggression="0.5" speed="0.5" health="7"/>
<enemy type="Knight" max="3" delay="0" aggression="0.5" speed="1" health="7"/>
</level>
<level background="-1" notes="" displaytext="Bats and Gnomes">
<enemy type="VampireBat" max="35" delay="0" aggression="1" speed="1" health="4"/>
<enemy type="VampireBatNoSwoop" max="3" delay="0" aggression="0.5" speed="0" health="4"/>
<enemy type="Gnome_Arrows" max="5" delay="0" aggression="0" speed="0" health="6"/>
</level>
<level background="-1" notes="jimp" displaytext="'Ard as Nails">
<enemy type="Pixie" max="4" delay="0" aggression="0.5" speed="0" health="4"/>
<enemy type="Knight" max="3" delay="0" aggression="0" speed="0" health="5"/>
<enemy type="Troll" max="1" delay="20" aggression="0" speed="0" health="5"/>
</level>
<level background="-1" notes="" displaytext="Here be Dragons!">
<enemy type="BabyDragon_NoFire" max="5" delay="0" aggression="1" speed="1" health="3"/>
</level>
<level background="-1" notes="jimp" displaytext="Dragon Breath">
<enemy type="Gnome" max="2" delay="0" aggression="0.5" speed="0.5" health="3"/>
<enemy type="Pixie" max="3" delay="20" aggression="0.5" speed="0" health="2"/>
<enemy type="BabyDragon" max="3" delay="0" aggression="1" speed="1" health="3"/>
</level>
<level background="-1" notes="jimp" displaytext="Troll in the park">
<enemy type="Troll" max="2" delay="0" aggression="0" speed="0" health="5"/>
<enemy type="Knight" max="3" delay="0" aggression="0.5" speed="0.5" health="5"/>
<enemy type="BabyDragon" max="3" delay="15" aggression="1" speed="1" health="3"/>
</level>
<level background="-1" notes="jimp" displaytext="Cash Cow">
<enemy type="Gnome_Running" max="4" delay="0" aggression="1" speed="1" health="3"/>
<enemy type="Pixie" max="6" delay="0" aggression="1" speed="0.5" health="2"/>
<enemy type="Pixie" max="6" delay="0" aggression="1" speed="0.5" health="2"/>
<enemy type="Pixie" max="6" delay="0" aggression="1" speed="0.5" health="2"/>
<enemy type="Gnome" max="4" delay="0" aggression="1" speed="1" health="3"/>
</level>
<level background="-1" notes="jimp" displaytext="Paradigm Shift">
<enemy type="Gnome" max="3" delay="0" aggression="0.5" speed="0.5" health="3"/>
<enemy type="Pixie" max="3" delay="0" aggression="0.5" speed="0" health="2"/>
<enemy type="Troll" max="1" delay="10" aggression="0" speed="0" health="5"/>
<enemy type="Jester" max="3" delay="20" aggression="0" speed="1" health="2"/>
<enemy type="Knight" max="3" delay="0" aggression="0" speed="0" health="10"/>
<enemy type="BabyDragon" max="4" delay="20" aggression="1" speed="1" health="3"/>
</level>
<level background="-1" notes="b" displaytext="A Knight To Remember">
<enemy type="Knight" max="3" delay="10" aggression="1" speed="0.5" health="10"/>
<enemy type="Knight" max="3" delay="0" aggression="0.5" speed="1" health="10"/>
<enemy type="VampireBat" max="2" delay="0" aggression="0.5" speed="0.5" health="4"/>
</level>
<level background="-1" notes="b" displaytext="Air Force One">
<enemy type="BabyDragon_NoFire" max="4" delay="0" aggression="0" speed="1" health="10"/>
<enemy type="BabyDragon_NoFire" max="4" delay="0" aggression="0" speed="0" health="10"/>
<enemy type="VampireBat" max="5" delay="0" aggression="0.5" speed="0.5" health="10"/>
</level>
<level background="-1" notes="" displaytext="Pixie death.">
<enemy type="Pixie" max="8" delay="0" aggression="0.7" speed="0" health="9"/>
<enemy type="Pixie" max="8" delay="0" aggression="0.7" speed="1" health="9"/>
</level>
<level background="-1" notes="jimp" displaytext="Bat-ery">
<enemy type="Gnome_Arrows" max="2" delay="0" aggression="0.75" speed="0.5" health="6"/>
<enemy type="VampireBat" max="4" delay="0" aggression="1" speed="1" health="8"/>
<enemy type="VampireBatNoSwoop" max="2" delay="15" aggression="0.5" speed="0.5" health="6"/>
<enemy type="Pixie" max="2" delay="0" aggression="1" speed="0.5" health="4"/>
<enemy type="Pixie" max="2" delay="20" aggression="1" speed="1" health="4"/>
</level>
<level background="-1" notes="jimp" displaytext="Nothing Hostile...">
<enemy type="Gnome_Arrows" max="2" delay="0" aggression="0.75" speed="0.5" health="6"/>
<enemy type="VampireBat" max="2" delay="0" aggression="1" speed="1" health="3"/>
<enemy type="Knight" max="3" delay="0" aggression="0.5" speed="0" health="10"/>
<enemy type="Pixie" max="2" delay="20" aggression="1" speed="0.5" health="4"/>
<enemy type="Pixie" max="2" delay="20" aggression="1" speed="0.5" health="4"/>
<enemy type="Pixie" max="2" delay="20" aggression="1" speed="0.5" health="4"/>
<enemy type="Pixie" max="2" delay="20" aggression="1" speed="0.5" health="4"/>
</level>
<level background="-1" notes="jimp" displaytext="Bouncing JERK">
<enemy type="Gnome" max="4" delay="0" aggression="0.75" speed="0" health="4"/>
<enemy type="BabyDragon" max="2" delay="0" aggression="1" speed="1" health="8"/>
<enemy type="Jester" max="1" delay="0" aggression="1" speed="1" health="30"/>
<enemy type="Pixie" max="3" delay="0" aggression="0.5" speed="0.5" health="5"/>
</level>
<level background="3" notes="jimp - valley bg" displaytext="The battle for middle earth">
<enemy type="Gnome" max="4" delay="0" aggression="0.75" speed="0" health="4"/>
<enemy type="BabyDragon" max="2" delay="0" aggression="1" speed="1" health="8"/>
<enemy type="Knight" max="3" delay="0" aggression="1" speed="0" health="10"/>
<enemy type="Pixie" max="3" delay="0" aggression="0.5" speed="0.5" health="5"/>
<enemy type="Pixie" max="3" delay="0" aggression="0.5" speed="0.5" health="5"/>
<enemy type="Pixie" max="3" delay="0" aggression="0.5" speed="0.5" health="5"/>
<enemy type="Troll" max="2" delay="10" aggression="0" speed="0" health="10"/>
</level>
<level background="-1" notes="jimp - bridge bg" displaytext="Sea of Fire">
<enemy type="Gnome" max="2" delay="0" aggression="0.75" speed="0" health="6"/>
<enemy type="BabyDragon" max="6" delay="0" aggression="1" speed="1" health="8"/>
<enemy type="BabyDragon" max="6" delay="0" aggression="1" speed="1" health="8"/>
<enemy type="Pixie" max="2" delay="20" aggression="0.5" speed="0.5" health="8"/>
<enemy type="Pixie" max="2" delay="20" aggression="0.5" speed="0.5" health="8"/>
</level>
<level background="-1" notes="jimp" displaytext="Pixieland">
<enemy type="Pixie" max="2" delay="0" aggression="0.5" speed="1" health="8"/>
<enemy type="Pixie" max="2" delay="0" aggression="1" speed="0.5" health="8"/>
<enemy type="Pixie" max="2" delay="0" aggression="0.5" speed="0.5" health="8"/>
<enemy type="Pixie" max="2" delay="0" aggression="0.5" speed="1" health="8"/>
<enemy type="Pixie" max="2" delay="0" aggression="1" speed="0.75" health="8"/>
<enemy type="Pixie" max="2" delay="0" aggression="0.5" speed="0.5" health="8"/>
<enemy type="Pixie" max="2" delay="0" aggression="0.5" speed="0.5" health="8"/>
<enemy type="Pixie" max="2" delay="0" aggression="1" speed="0.5" health="8"/>
</level>
<level background="-1" notes="jimp" displaytext="Knight Knight">
<enemy type="Knight" max="2" delay="0" aggression="0.5" speed="1" health="20"/>
<enemy type="Knight" max="2" delay="0" aggression="1" speed="1" health="20"/>
<enemy type="Pixie" max="2" delay="0" aggression="0.5" speed="0.5" health="8"/>
<enemy type="Pixie" max="2" delay="20" aggression="1" speed="0.75" health="8"/>
<enemy type="Pixie" max="2" delay="20" aggression="0.5" speed="0.5" health="8"/>
<enemy type="Knight" max="2" delay="0" aggression="0.5" speed="0.5" health="20"/>
<enemy type="Knight" max="2" delay="0" aggression="1" speed="0.5" health="20"/>
</level>
<level background="-1" notes="jimp" displaytext="Royal Rumble">
<enemy type="Gnome" max="2" delay="0" aggression="0.75" speed="0" health="6"/>
<enemy type="BabyDragon" max="6" delay="0" aggression="1" speed="1" health="8"/>
<enemy type="Pixie" max="2" delay="0" aggression="0.5" speed="0.5" health="8"/>
<enemy type="Troll" max="1" delay="0" aggression="0" speed="0" health="20"/>
<enemy type="Knight" max="2" delay="0" aggression="1" speed="0" health="15"/>
<enemy type="Jester" max="2" delay="0" aggression="1" speed="1" health="10"/>
<enemy type="VampireBat" max="2" delay="0" aggression="1" speed="1" health="8"/>
</level>
<!-- Test levels -->
<level background="0" notes="test level:Vampire Bats">
<enemy type="VampireBat" max="5" delay="0" aggression="1" speed="1" health="1"/>
</level>
<level background="1" notes="test level: Pixies">
<enemy type="Pixie" max="5" delay="0" aggression="1" speed="1" health="1"/>
</level>
<level background="1" notes="test level: Knights">
<enemy type="Knight" max="5" delay="0" aggression="1" speed="1" health="1"/>
</level>
<level background="2" notes="test level: Trolls">
<enemy type="Troll" max="1" delay="0" aggression="1" speed="1" health="1"/>
</level>
<level background="2" notes="test level: Jesters">
<enemy type="Jester" max="5" delay="0" aggression="1" speed="1" health="1"/>
</level>
<level background="3" notes="test level: Baby Dragons">
<enemy type="BabyDragon" max="5" delay="0" aggression="1" speed="1" health="3"/>
</level>
<level background="3" notes="test level A">
<enemy type="Troll" max="1" delay="0" aggression="1" speed="1" health="1"/>
<enemy type="Jester" max="1" delay="0" aggression="1" speed="1" health="1"/>
<enemy type="Gnome" max="3" delay="0" aggression="1" speed="1" health="1"/>
<enemy type="VampireBat" max="3" delay="0" aggression="1" speed="1" health="1"/>
</level>
<level background="2" notes="test level B">
<enemy type="Pixie" max="3" delay="0" aggression="1" speed="1" health="1"/>
<enemy type="BabyDragon" max="1" delay="0" aggression="1" speed="1" health="1"/>
<enemy type="Gnome" max="3" delay="0" aggression="1" speed="1" health="1"/>
<enemy type="VampireBat" max="3" delay="0" aggression="1" speed="1" health="1"/>
</level>
<achievementcondition name="equals"/>
<achievementcondition name="lessthan"/>
<achievementcondition name="lessthanequal"/>
<achievementcondition name="greaterthan"/>
<achievementcondition name="greaterthanequal"/>
<achievementvariable name="kills"/>
<achievementvariable name="time"/>
<achievementvariable name="damage"/>
<achievementvariable name="cash"/>
<achievement name="Achievement 1">
<item id="0" level="Break You In Easy" variable="kills" condition="greaterthanequal" value="50"/>
</achievement>
<achievement name="Achievement 2">
<item id="0" level="Break You In Easy" variable="damage" condition="equals" value="0"/>
</achievement>
<achievement name="Achievement 3">
<item id="0" level="Break You In Easy" variable="time" condition="lessthan" value="20"/>
</achievement>
</data>
;
static var xmlLoader:URLLoader;
public static function InitOnce(_arg1:Function){
f = _arg1;
XmlLoadedInternal();
}
public static function xmlLoaded(_arg1:Event){
XML.ignoreWhitespace = true;
xml = new XML(_arg1.target.data);
f();
}
public static function XmlLoadedInternal(){
XML.ignoreWhitespace = true;
xml = new XML(xxx);
f();
}
}
}//package
Section 48
//Font1 (Font1)
package {
import flash.text.*;
public dynamic class Font1 extends Font {
}
}//package
Section 49
//Game (Game)
package {
import flash.events.*;
import flash.geom.*;
import flash.display.*;
import flash.filters.*;
public class Game {
static const levelState_Dead = 4;
static const levelFinishedState_WON = 1;
static const levelFinishedState_NOT = 0;
static const levelFinishedState_LOST = 2;
static const levelState_Play = 1;
static const levelState_BonusTime = 2;
static const levelState_LevelStart = 0;
static const levelState_EndSequence = 3;
static var backgroundBD:BitmapData;
static var dibsSpeechTimer:int;
static var highScore:int;
static var panelRect:Rectangle = new Rectangle(0, 0, 10, 10);
static var levelFinishedState:int;
static var levelTimer:int;
static var playerHealthDec:Number;
static var currentBackgroundFrame:int;
public static var currentPortalGroup:int;
static var offsett:Number = -40;
static var goBackground:GameObj;
public static var gravity;
static var currentBackgroundFrameIndex:int;
public static var firstTime_Powerup3:Boolean;
public static var firstTime_Powerup1:Boolean;
public static var firstTime_Powerup2:Boolean;
public static var firstTime_Powerup4:Boolean;
public static var currentStartPointIndex:int;
static var invincibleTimer:int;
public static var levelstart_score:int;
static var hitStringTime:int = 0;
static var playerHealthDecDuck:Number;
static var pickupBerzerker:Number;
public static var maxFallSpeed;
static var berzerkerTime:int;
static var numLevels:int;
static var currentScore:int;
static var ed:ExternalData;
public static var playerExtraJumpYvel = -4;
public static var LevelUpdateCallback:Object;
public static var heightMap:Array;
public static var animDefs:Array;
public static var mouseMapX:Number;
public static var mouseMapY:Number;
static var showingOverlay:Boolean;
static var levelTimeCount1:int;
static var backgroundB:Bitmap;
static var lastObjectGenerator:GameObj;
static var bgMusic:int = 1;
public static var numEnemiesActive:int;
static var enemyCounts:Array;
public static var normalHeight = 100;
public static var bulletTime:int;
static var currentWeapon:int;
public static var polygonList:Array;
public static var bloodMap:Array;
static var pickupGold:Number;
static var numCreds:int;
public static var bossGO:GameObj;
static var numWeenies:int;
public static var scrollH:Number;
static var invincibleTimerMax:int;
static var numLives:int;
static var showingOverlayID:int;
static var speedupTimerMax:int;
public static var scrollW:Number;
public static var scrollX:Number;
public static var scrollY:Number;
static var levelTimeCount:int;
static var cash:int;
static var pickupList:Array;
static var speedupTimer:int;
public static var particleMode:int;
static var hitStringTimeMax:int = 0;
static var hitStringY:int = 0;
public static var levelstart_shotsfired:int;
static var startLevelMC:MovieClip;
static var hitStringX:int = 0;
static var map:BitmapData = null;
static var hitStringNum:int = 0;
static var pickupTime:Number;
static var levelState:int;
public static var levelstart_cash:int;
public static var numKilledInWaveList:Array;
public static var level:Level;
static var currentLevel:int;
static var levelsCompleted:Boolean;
static var dibsSpeechFlag:Boolean;
static var waveDefs:Array;
static var main:Main;
static var multiplier:int;
static var lastEnemyGenDef:LevelEnemyGen;
public static var startPointObjs:Array;
public static var startPointY:Number;
static var hitStringAng:Number = 0;
static var genTimer:int;
static var pickupType:int;
public static var startPointX:Number;
public static var playerJumpYvel;
static var do_continue:Boolean = false;
static var levelStateTimer:int;
public static var startPoints:Array;
static var overlayMC:MovieClip;
static var scrollMaxX;
static var goPlayer:GameObj;
static var enemyGenTypeCounts:Array;
static var scrollMaxY;
static var berzerkerPickupAmt:int;
static var pause:Boolean;
static var pickupHealth:Number;
static var portalDef:PortalDef;
static function InitEnemyGen(){
genTimer = 30;
}
public static function InitAnimDefs():void{
animDefs = new Array();
}
public static function HandleMouseWheel(_arg1:int){
}
static function GetWeaponGroupById(_arg1):PlayerWeaponGroup{
return (null);
}
public static function GetHeightMapHeight(_arg1:int):Number{
var _local2:Number;
if (_arg1 < 2){
_arg1 = 2;
};
if (_arg1 > (2000 - 3)){
_arg1 = (2000 - 3);
};
_local2 = 0;
_local2 = (_local2 + heightMap[(_arg1 - 2)]);
_local2 = (_local2 + heightMap[(_arg1 - 1)]);
_local2 = (_local2 + heightMap[_arg1]);
_local2 = (_local2 + heightMap[(_arg1 + 1)]);
_local2 = (_local2 + heightMap[(_arg1 + 2)]);
_local2 = (_local2 / 5);
return (_local2);
}
static function AddBerzerker(_arg1:int){
berzerkerPickupAmt = (berzerkerPickupAmt + _arg1);
if (berzerkerPickupAmt >= 100){
berzerkerPickupAmt = 0;
berzerkerTime = (Defs.fps * 10);
};
if (berzerkerPickupAmt < 0){
berzerkerPickupAmt = 0;
};
}
public static function UpdateGameplay():void{
var _local1:int;
var _local2:int;
if (pause){
return;
};
if (KeyReader.Pressed(KeyReader.KEY_P)){
PauseMenu.Pause();
};
mouseMapX = (MouseControl.mousePosX + Game.scrollX);
mouseMapY = (MouseControl.mousePosY + Game.scrollY);
if (LevelUpdateCallback != null){
LevelUpdateCallback();
};
_local1 = 1;
if (levelState == levelState_LevelStart){
levelStateTimer--;
if (levelStateTimer <= 0){
startLevelMC.visible = false;
InitLevelState(levelState_Play);
};
};
if (levelState == levelState_BonusTime){
if (CountActiveEnemies() == 0){
InitLevelState(levelState_EndSequence);
};
};
if (levelState == levelState_EndSequence){
levelStateTimer--;
if (levelStateTimer <= 0){
Shop.Init(true);
};
};
if (levelState == levelState_Dead){
};
numEnemiesActive = CountActiveEnemies();
if (invincibleTimer > 0){
invincibleTimer--;
};
if (berzerkerTime > 0){
berzerkerTime--;
};
_local2 = 0;
while (_local2 < _local1) {
if (bulletTime > 0){
bulletTime--;
};
if ((((((((levelState == levelState_Play)) || ((levelState == levelState_BonusTime)))) || ((levelState == levelState_LevelStart)))) || ((levelState == levelState_EndSequence)))){
levelTimer++;
UpdateScroll();
};
if (levelState == levelState_Play){
levelTimeCount1--;
if (levelTimeCount1 <= 0){
levelTimeCount1 = Defs.fps;
levelTimeCount--;
if (levelTimeCount <= 0){
InitLevelState(levelState_BonusTime);
};
if (levelTimeCount < 29){
};
};
UpdateEnemyGen();
};
GameObjects.Update();
Collision.Update(main);
Particles.Update(1);
_local2++;
};
if ((((((levelState == levelState_Play)) || ((levelState == levelState_BonusTime)))) || ((levelState == levelState_LevelStart)))){
if (goPlayer.health < 0){
goPlayer.health = 0;
InitLevelState(levelState_Dead);
};
};
}
public static function IsBerzerkerMode():Boolean{
return ((berzerkerTime > 0));
}
public static function InitLevel(_arg1:Boolean=true){
var _local2:GameObj;
var _local3:Level;
pause = true;
main.screenBD.fillRect(Defs.screenRect, 0);
Debug.debugMode = 0;
KeyReader.InitOnce(main.stage);
MusicPlayer.StartMusic(bgMusic);
Levels.InitOnce();
if (_arg1){
InitGeneralStuff();
};
ObjectDefs.Init();
Particles.Reset();
GameObjects.ClearAll();
levelFinishedState = levelFinishedState_NOT;
LevelDef1.Init(main);
scrollX = 0;
scrollY = 0;
LevelUpdateCallback = null;
scrollW = 2000;
scrollH = 800;
scrollMaxX = (scrollW - Defs.displayarea_w);
scrollMaxY = (scrollH - Defs.displayarea_h);
playerJumpYvel = -20;
gravity = 1;
maxFallSpeed = 20;
showingOverlay = false;
showingOverlayID = 0;
invincibleTimer = 0;
invincibleTimerMax = (Defs.fps * 2);
speedupTimer = 0;
speedupTimerMax = (Defs.fps * 10);
numWeenies = 0;
numCreds = 0;
dibsSpeechFlag = false;
dibsSpeechTimer = 0;
firstTime_Powerup1 = false;
firstTime_Powerup2 = false;
firstTime_Powerup3 = false;
firstTime_Powerup4 = false;
InitLevelState(levelState_LevelStart);
bossGO = null;
bulletTime = 0;
_local3 = GetCurrentLevel();
if (_local3.backgroundID == -1){
currentBackgroundFrame = currentBackgroundFrameIndex;
} else {
currentBackgroundFrame = _local3.backgroundID;
};
backgroundBD.fillRect(new Rectangle(0, 0, 2000, 800), 0);
goBackground = GameObjects.AddObj(400, 400, 10000);
goBackground.InitBackground(currentBackgroundFrame);
numEnemiesActive = 0;
levelstart_score = currentScore;
levelstart_cash = cash;
currentPortalGroup = 0;
levelTimer = 0;
Stats.StartLevel();
particleMode = 0;
InitHeightMap();
goPlayer = GameObjects.AddObj(300, 400, 1000);
goPlayer.InitFromObjectDef("Player");
ScrollToPlayer();
berzerkerTime = 0;
InitEnemyGen();
pause = false;
levelTimeCount = 30;
levelTimeCount1 = Defs.fps;
startLevelMC.visible = true;
startLevelMC.x = 180;
main.addChild(startLevelMC);
startLevelMC.textLevelName.text = ("Level " + int((currentLevel + 1)).toString());
startLevelMC.textLevelDescription.text = _local3.displayText;
}
public static function GetPolyByName(_arg1:String):Poly{
var _local2:Poly;
for each (_local2 in polygonList) {
if (((_local2.active) && ((_local2.name == _arg1)))){
return (_local2);
};
};
return (null);
}
public static function UpdatePortals():void{
var _local1:PortalGroup;
for each (_local1 in portalDef.portalGroups) {
_local1.Update();
};
}
public static function GetBloodMap(_arg1:int):int{
if (_arg1 < 0){
_arg1 = 0;
};
if (_arg1 > (2000 - 1)){
_arg1 = (2000 - 1);
};
return (bloodMap[_arg1]);
}
public static function BossKilled():void{
InitLevelState(levelState_BonusTime);
}
public static function ShowSign(_arg1:int){
if (showingOverlay){
return;
};
showingOverlay = true;
showingOverlayID = _arg1;
}
public static function RemoveGO(_arg1:String){
var _local2:GameObj;
_local2 = GetGOByName(_arg1);
if (_local2){
_local2.active = false;
};
}
public static function RemovePoly(_arg1:String){
var _local2:Poly;
_local2 = GetPolyByName(_arg1);
if (_local2){
_local2.active = false;
};
}
public static function AddScore(_arg1:int):void{
multiplier = 1;
if (levelState == levelState_BonusTime){
multiplier = 2;
};
currentScore = (currentScore + (_arg1 * multiplier));
Stats.levelScore = (Stats.levelScore + (_arg1 * multiplier));
if (currentScore > highScore){
highScore = currentScore;
};
}
public static function ReloadDataAndRestartLevel(){
ExternalData.InitOnce(ReloadDataAndRestartLevel1);
}
public static function ReloadDataAndRestartLevel1(){
InitLevel();
}
static function UpdateEnemyGen(){
var _local1:Level;
var _local2:Array;
var _local3:int;
var _local4:LevelEnemyGen;
var _local5:GameObj;
var _local6:Number;
numEnemiesActive = CountActiveEnemies();
_local1 = GetCurrentLevel();
_local2 = GetEnemyList();
if (_local2.length == 0){
return;
};
genTimer--;
if (genTimer <= 0){
genTimer = 40;
_local3 = Utils.RandBetweenInt(0, (_local2.length - 1));
_local4 = _local2[_local3];
if (Utils.RandBool()){
_local6 = scrollX;
} else {
_local6 = (scrollX + Defs.displayarea_w);
};
lastEnemyGenDef = _local4;
_local5 = GameObjects.AddObj(_local6, 400, 1000);
_local5.InitFromObjectDef(_local4.typeName);
_local5.genTypeIndex = _local4.index;
lastEnemyGenDef = null;
};
}
public static function InitLevelState(_arg1:int){
var _local2:Particle;
var _local3:GameObj;
levelState = _arg1;
levelStateTimer = 0;
if (levelState == levelState_LevelStart){
levelStateTimer = (Defs.fps * 2);
};
if (levelState == levelState_Play){
startLevelMC.visible = false;
};
if (levelState == levelState_BonusTime){
startLevelMC.visible = true;
main.addChild(startLevelMC);
startLevelMC.textLevelName.text = "";
startLevelMC.textLevelDescription.text = "Put an end to the lives of these miserable creatures!";
};
if (levelState == levelState_EndSequence){
startLevelMC.visible = true;
main.addChild(startLevelMC);
startLevelMC.textLevelName.text = "Complete";
startLevelMC.textLevelDescription.text = "Collect all you can before visiting Merlin";
levelStateTimer = (Defs.fps * 4);
};
if (levelState == levelState_Dead){
startLevelMC.visible = false;
TitleScreenState.InitGameOver();
};
}
public static function CountInstallations():int{
var _local1:int;
var _local2:GameObj;
_local1 = 0;
for each (_local2 in GameObjects.objs) {
if (((_local2.active) && (_local2.colFlag_isInstallation))){
_local1++;
};
};
return (_local1);
}
public static function GenerateEnemies():void{
}
public static function GetRandomEdge(_arg1:Number):Point{
var _local2:Point;
_local2 = new Point();
if (Utils.RandBool()){
_local2.x = RandWorldX();
if (Utils.RandBool()){
_local2.y = (0 - _arg1);
} else {
_local2.y = (1000 + _arg1);
};
} else {
_local2.y = RandWorldY();
if (Utils.RandBool()){
_local2.x = (0 - _arg1);
} else {
_local2.x = (1000 + _arg1);
};
};
return (_local2);
}
public static function buttonOverlayClosedPressed(_arg1:MouseEvent){
Overlay_Remove();
InitLevelState(levelState_Play);
}
static function RenderMiniMap(){
var _local1:BitmapData;
var _local2:Number;
var _local3:Number;
var _local4:Number;
var _local5:Rectangle;
var _local6:GameObj;
_local1 = main.screenBD;
_local2 = 0;
_local3 = 0;
_local4 = 0.05;
_local5 = new Rectangle(_local2, _local3, (1000 * _local4), (1000 * _local4));
_local1.fillRect(_local5, 4286611584);
for each (_local6 in GameObjects.objs) {
if (_local6.active){
if (_local6.colFlag_isEnemy){
_local1.setPixel32((_local6.xpos * _local4), (_local6.ypos * _local4), 4294901760);
};
};
};
_local6 = Game.goPlayer;
_local1.setPixel32((_local6.xpos * _local4), (_local6.ypos * _local4), 4294967295);
}
static function UpdateScroll(){
var _local1:Number;
var _local2:Number;
var _local3:Number;
var _local4:Number;
var _local5:Number;
_local1 = scrollX;
_local2 = scrollY;
_local3 = 0;
_local4 = goPlayer.xpos;
_local5 = goPlayer.ypos;
_local4 = (_local4 - 320);
_local5 = (_local5 - 240);
scrollX = (scrollX + ((_local4 - scrollX) * 0.4));
scrollY = (scrollY + ((_local5 - scrollY) * 0.4));
if (scrollX < 10){
scrollX = 10;
};
if (scrollY < 10){
scrollY = 10;
};
if (scrollX > (scrollMaxX - 10)){
scrollX = (scrollMaxX - 10);
};
if (scrollY > (scrollMaxY - 10)){
scrollY = (scrollMaxY - 10);
};
}
public static function Init(_arg1:Main){
main = _arg1;
currentScore = 0;
multiplier = 1;
numLevels = 8;
currentLevel = 0;
highScore = 0;
}
public static function TestPausePressed(){
if (MouseControl.buttonPressed){
if (MouseControl.mousePosX > (Defs.displayarea_w - 32)){
if (MouseControl.mousePosY > (Defs.displayarea_h - 32)){
if (PauseMenu.IsPaused() == false){
PauseMenu.Pause();
MouseControl.buttonPressed = false;
};
};
};
};
}
static function Portal_SetAppearPos(_arg1:GameObj):Boolean{
_arg1.xpos = Utils.RandBetweenFloat((scrollX + 50), ((scrollX + Defs.displayarea_w) - 50));
_arg1.ypos = Utils.RandBetweenFloat((scrollY + 50), ((scrollY + Defs.displayarea_h) - 50));
if (Utils.Dist2BetweenPoints(_arg1.xpos, _arg1.ypos, goPlayer.xpos, goPlayer.ypos) < (100 * 100)){
return (false);
};
return (true);
}
static function InitGeneralStuff(){
var _local1:XML;
_local1 = ExternalData.xml.general[0];
pickupHealth = Number(_local1.pickup.@health);
pickupGold = Number(_local1.pickup.@gold);
pickupBerzerker = Number(_local1.pickup.@berzerker);
pickupTime = Number(_local1.pickup.@time);
playerHealthDec = Number(_local1.player.@hit);
playerHealthDecDuck = Number(_local1.player.@duckhit);
}
public static function GetAnimDefByName(_arg1:String):AnimDef{
var _local2:AnimDef;
for each (_local2 in animDefs) {
if (_local2.name == _arg1){
return (_local2);
};
};
trace(("ERROR: AnimDef not found: " + _arg1));
return (animDefs[0]);
}
public static function InitGame(_arg1:Boolean=false){
do_continue = _arg1;
Debug.debugMode = 0;
numLives = 3;
InitAnimDefs();
Achievements.InitOnce();
levelsCompleted = false;
polygonList = new Array();
startPoints = new Array();
startPointObjs = new Array();
currentStartPointIndex = 0;
WaveDefs.InitOnce();
currentLevel = 0;
backgroundBD = new BitmapData(2000, 800, true, 0);
Stats.InitOnce();
AnimPoints.InitOnce();
enemyCounts = new Array(100);
enemyGenTypeCounts = new Array(100);
PlayerWeapons.InitOnce();
if (_arg1){
SaveData.Load();
};
trace(("Level: " + currentLevel));
pickupType = 0;
pickupList = new Array(0, 1, 1, 0, 1, 1, 2, 1, 1);
berzerkerPickupAmt = 0;
lastEnemyGenDef = null;
currentBackgroundFrameIndex = 0;
currentWeapon = 3;
startLevelMC = new levelintro();
}
public static function GetLevelXml(_arg1:int):XML{
var _local2:XML;
var _local3:int;
var _local4:XML;
_local2 = ExternalData.xml;
_local3 = int(_local2.leveldef.length());
_arg1 = (_arg1 % _local3);
_local4 = _local2.leveldef[_arg1];
return (_local4);
}
static function AddCash(_arg1:int){
cash = (cash + _arg1);
Stats.levelCash = (Stats.levelCash + _arg1);
Stats.totalCash = (Stats.totalCash + _arg1);
}
public static function IncreaseMapHeight(_arg1:int):void{
if (_arg1 < 0){
_arg1 = 0;
};
if (_arg1 > (2000 - 1)){
_arg1 = (2000 - 1);
};
bloodMap[_arg1] = int(1);
}
static function InitHeightMap(){
var _local1:int;
var _local2:Array;
var _local3:Array;
var _local4:Array;
var _local5:Array;
var _local6:Array;
var _local7:Array;
var _local8:Array;
var _local9:Array;
var _local10:Poly;
var _local11:Number;
_local2 = new Array();
_local2.push(new Point(0, 700));
_local2.push(new Point(2000, 700));
_local3 = new Array();
_local3.push(new Point(0, 700));
_local3.push(new Point(2000, 700));
_local4 = new Array();
_local4.push(new Point(0, 700));
_local4.push(new Point(2000, 700));
_local5 = new Array();
_local5.push(new Point(0, 622));
_local5.push(new Point(478, 612));
_local5.push(new Point(673, 639));
_local5.push(new Point(844, 645));
_local5.push(new Point(1023, 649));
_local5.push(new Point(1244, 635));
_local5.push(new Point(1393, 610));
_local5.push(new Point(1604, 572));
_local5.push(new Point(1779, 590));
_local5.push(new Point(1875, 605));
_local5.push(new Point(2098, 584));
_local6 = new Array();
_local6.push(new Point(0, 630));
_local6.push(new Point(2000, 630));
_local7 = new Array();
_local7.push(new Point(-11, 488));
_local7.push(new Point(111, 551));
_local7.push(new Point(244, 600));
_local7.push(new Point(383, 653));
_local7.push(new Point(503, 690));
_local7.push(new Point(683, 730));
_local7.push(new Point(876, 762));
_local7.push(new Point(1181, 760));
_local7.push(new Point(1389, 743));
_local7.push(new Point(1626, 721));
_local7.push(new Point(1866, 654));
_local7.push(new Point(2025, 587));
_local7.push(new Point(2097, 545));
_local8 = new Array();
_local8.push(new Point(0, 535));
_local8.push(new Point(675, 649));
_local8.push(new Point(695, 671));
_local8.push(new Point(2051, 697));
if (currentBackgroundFrame == 0){
_local9 = _local2;
};
if (currentBackgroundFrame == 1){
_local9 = _local3;
};
if (currentBackgroundFrame == 2){
_local9 = _local4;
};
if (currentBackgroundFrame == 3){
_local9 = _local5;
};
if (currentBackgroundFrame == 4){
_local9 = _local6;
};
if (currentBackgroundFrame == 5){
_local9 = _local7;
};
if (currentBackgroundFrame == 6){
_local9 = _local8;
};
trace(("initing bg frame " + currentBackgroundFrame));
_local1 = 0;
_local10 = new Poly("", 0, _local9[_local1].x, _local9[_local1].y);
_local1 = 0;
while (_local1 < (_local9.length - 1)) {
_local10.AddLine(_local9[_local1].x, _local9[_local1].y, _local9[(_local1 + 1)].x, _local9[(_local1 + 1)].y);
_local1++;
};
_local10.Finish(false);
polygonList = new Array();
polygonList.push(_local10);
bloodMap = new Array();
heightMap = new Array();
_local1 = 0;
while (_local1 < 2000) {
_local11 = Collision.FindHighestFloorPos(_local1);
heightMap.push(_local11);
bloodMap.push(int(0));
_local1++;
};
}
public static function InitDibsSpeech(_arg1:int){
}
static function ScrollToPlayer(){
var _local1:int;
_local1 = 0;
while (_local1 < 100) {
UpdateScroll();
_local1++;
};
}
public static function GetGOFrame(_arg1:String):int{
var _local2:GameObj;
_local2 = GetGOByName(_arg1);
if (_local2){
return (int(_local2.frame));
};
return (-1);
}
public static function CountActiveEnemies():int{
var _local1:int;
var _local2:int;
var _local3:GameObj;
_local2 = 0;
while (_local2 < enemyCounts.length) {
enemyCounts[_local2] = 0;
_local2++;
};
_local2 = 0;
while (_local2 < enemyGenTypeCounts.length) {
enemyGenTypeCounts[_local2] = 0;
_local2++;
};
_local1 = 0;
_local2 = 0;
while (_local2 < GameObjects.objs.length) {
_local3 = GameObjects.objs[_local2];
if ((((_local3.active == true)) && (_local3.colFlag_isEnemy))){
_local1++;
var _local4 = enemyCounts;
var _local5 = _local3.objectDef.index;
var _local6 = (_local4[_local5] + 1);
_local4[_local5] = _local6;
if (_local3.genTypeIndex != -1){
_local4 = enemyGenTypeCounts;
_local5 = _local3.genTypeIndex;
_local6 = (_local4[_local5] + 1);
_local4[_local5] = _local6;
};
};
_local2++;
};
return (_local1);
}
public static function Overlay_Remove(){
if (overlayMC != null){
main.removeChild(overlayMC);
overlayMC = null;
KeyReader.InitOnce(main.stage);
};
}
public static function RandWorldX():Number{
return (Utils.RandBetweenFloat(0, 1000));
}
public static function RandWorldY():Number{
return (Utils.RandBetweenFloat(0, 1000));
}
public static function GetEnemyList():Array{
var _local1:Level;
var _local2:Array;
var _local3:LevelEnemyGen;
var _local4:int;
_local1 = GetCurrentLevel();
_local2 = new Array();
for each (_local3 in _local1.enemyGens) {
_local4 = enemyGenTypeCounts[_local3.index];
if (_local4 < _local3.max){
if (levelTimer >= _local3.delay){
_local2.push(_local3);
};
};
};
return (_local2);
}
static function RenderBackground(){
var _local1:Number;
var _local2:Number;
var _local3:Bitmap;
var _local4:BitmapData;
_local1 = goBackground.xpos;
_local2 = goBackground.ypos;
_local3 = GraphicObjects.GetBitmap((GraphicObjects.gfx_backgroundscroll1 + currentBackgroundFrame), 0);
_local4 = _local3.bitmapData;
main.backScreenBD.copyPixels(_local4, new Rectangle(0, 0, 2000, 800), new Point(_local1, _local2), null, null, true);
main.backScreenBD.copyPixels(backgroundBD, new Rectangle(0, 0, 2000, 800), new Point(_local1, _local2), null, null, false);
}
static function Render(){
var _local1:Number;
RenderBackground();
main.screenBD.fillRect(Defs.screenRect, 0);
GameObjects.Render();
if (IsBerzerkerMode()){
main.screenBD.applyFilter(main.screenBD, Defs.screenRect, Defs.pointZero, new GlowFilter(0xFF0000, 1, 8, 8, 5, 1));
_local1 = (Math.cos((Number(berzerkerTime) * 0.3)) * 0.1);
_local1 = (_local1 + 1.1);
GraphicObjects.RenderAtRotScaled(GraphicObjects.gfx_berzerkscreen, 0, main.screenBD, 320, 240, false, _local1);
GraphicObjects.RenderStringAt(main.screenBD, GraphicObjects.gfx_font2, 200, 50, "BERZERK!", -2);
};
RenderPanel();
}
public static function Overlay_Show(_arg1:int){
}
public static function GetGOByName(_arg1:String):GameObj{
var _local2:GameObj;
for each (_local2 in GameObjects.objs) {
if (((_local2.active) && ((_local2.name == _arg1)))){
return (_local2);
};
};
return (null);
}
public static function GetCurrentLevel():Level{
return (Levels.list[currentLevel]);
}
static function RenderPanel(){
var _local1:Level;
var _local2:String;
var _local3:PlayerWeapon;
var _local4:int;
var _local5:Number;
var _local6:int;
var _local7:Number;
_local1 = GetCurrentLevel();
if (levelState == levelState_LevelStart){
};
if (levelState == levelState_Dead){
return;
};
if (startLevelMC.visible == false){
GraphicObjects.RenderAt(GraphicObjects.gfx_timerunderlay, 0, main.screenBD, 320, 20);
_local2 = levelTimeCount.toString();
if (levelTimeCount == 30){
GraphicObjects.RenderStringAt(main.screenBD, GraphicObjects.gfx_font2, (320 - 27), 30, _local2);
} else {
if (levelTimeCount > 9){
GraphicObjects.RenderStringAt(main.screenBD, GraphicObjects.gfx_font2, (320 - 24), 30, _local2);
} else {
GraphicObjects.RenderStringAt(main.screenBD, GraphicObjects.gfx_font2, (320 - 12), 30, _local2);
};
};
};
_local3 = PlayerWeapons.weaponList[currentWeapon];
if (hitStringTime > 0){
_local6 = (hitStringNum - 1);
if (_local6 > 8){
_local6 = 8;
};
_local7 = 1;
if (hitStringTime < 10){
_local7 = (_local7 + (Number((hitStringTimeMax - 10)) * 0.01));
_local7 = (_local7 - (Number((10 - hitStringTime)) * 0.1));
if (_local7 < 0){
(_local7 == 0);
};
} else {
_local7 = (_local7 + (Number((hitStringTimeMax - hitStringTime)) * 0.01));
};
GraphicObjects.RenderAtRotScaled(GraphicObjects.gfx_kill, _local6, main.screenBD, (hitStringX - scrollX), (hitStringY - scrollY), false, _local7, hitStringAng);
hitStringTime--;
};
_local4 = GraphicObjects.gfx_interface_healthbar;
_local5 = Utils.ScaleTo((GraphicObjects.GetNumFrames(_local4) - 1), 0, 0, 100, goPlayer.health);
GraphicObjects.RenderAt(_local4, int(_local5), main.screenBD, 10, 10);
_local4 = GraphicObjects.gfx_interface_berzerkerbar;
_local5 = Utils.ScaleTo((GraphicObjects.GetNumFrames(_local4) - 1), 0, 0, 100, berzerkerPickupAmt);
GraphicObjects.RenderAt(_local4, int(_local5), main.screenBD, 450, 10);
_local2 = cash.toString();
GraphicObjects.RenderStringAt(main.screenBD, GraphicObjects.gfx_font1, 55, 64, _local2, -3);
_local2 = currentScore.toString();
GraphicObjects.RenderStringAt(main.screenBD, GraphicObjects.gfx_font1, 44, 94, _local2, -3);
GraphicObjects.RenderAt(GraphicObjects.gfx_interface_hudweapon, currentWeapon, main.screenBD, (450 + 145), (10 + 64));
}
public static function ExitDibsSpeech(){
}
}
}//package
Section 50
//GameObj (GameObj)
package {
import flash.events.*;
import flash.geom.*;
import flash.display.*;
public class GameObj {
var attackMode:int;
var man_acc:Number;
public var colFlag_isInstallation:Boolean;
public var xvel:Number;
var path:Poly;
public var todir:Number;
var modifier0:Number;
var modifier1:Number;
var modifier2:Number;
var modifier3:Number;
var speedModifier:Number;
var isPickup:Boolean;
public var speed:Number;
var genTypeIndex:int;
public var colFlag_isEnemy:Boolean;
var objectDef:ObjectDef;
var startx:Number;
public var ypos2:Number;
var startz:Number;
var hasShadow:Boolean;
var starty:Number;
var doneAction:Boolean;
public var colFlag_vulnerable:Boolean;
var frame1:Number;
public var movementVec:Vec;
var bobAdder:Number;
var currentPathNode:int;
public var visible:Boolean;
public var dieFunction:Function;
var enemyGenMode:int;
var particleColor:uint;
public var colFlag_playercanbekilled:Boolean;
var currentAnimDef:AnimDef;
public var yvel:Number;
var acc:Number;
public var dir:Number;
public var radius:Number;
public var hitTimerMax:int;
public var controlMode:int;
public var colFlag_isEnemyProjectile:Boolean;
var isPlayer:Boolean;
var oscillator:Number;
var isDead:Boolean;
var maxhealth:Number;
var EnemyHitByBulletFunctionCallback:Function;
var EnemyUpdateFunctionCallback:Function;
public var shadowRenderFunction:Function;
var pressedExtraWeapon:Boolean;// = false
var objectIndex:int;
var currentAnimName:String;
public var xpos2:Number;
public var colFlag_isPlatform:Boolean;
var pressedWeapon:Boolean;// = false
var bobDistance:Number;
public var zvel:Number;
var xflip:Boolean;
public var accel:Number;
var currentPoly:Poly;
var currentWeaponSlotID:int;
var boss3_PathIndex:int;
public var colFlag_killPlayer:Boolean;
var shotControllers:Array;
public var xacc:Number;
public var count:int;
var minSpeed:Number;
var movementState:String;
var height:Number;
public var colFlag_isEnemyBullet:Boolean;
public var colFlag_jumpon:Boolean;
var flashTimer:int;
public var colFlag_invincible:Boolean;
var ss_minFrame:int;
var rotVelMax:Number;
var ss_controlMode:int;
public var colFlag_isPlayerBullet:Boolean;
var maxSpeed:Number;
public var dir1:Number;
var scale:Number;
var healthModifier:Number;
var man_runMaxVel:Number;
var hit_xvel:Number;
var fireOffsetDir:Number;
var alpha:Number;
public var colFlag_UseRadius:Boolean;
public var yacc:Number;
var frame:Number;
var healthBarTimer:int;
var ss_maxFrame:int;
public var controlIndex:int;
var pressedFire:Boolean;// = false
public var subtype:int;
var portal_genFreqency:int;
var currentEventID:int;
public var oldxpos:Number;
var shootingFlag:Boolean;
var doublePressedRight:Boolean;// = false
var timer1:Number;
var portal_mode:int;
public var toPosY:Number;
public var toPosX:Number;
public var driveVec:Vec;
var dist:Number;
var prevToPosX:Number;
var prevToPosY:Number;
var main:Main;
public var colFlag_isShop:Boolean;
var bobInitialHeight:Number;
var inFrontZone:Poly;
var pressedFire1:Boolean;// = false
var currentMaxSpeed:Number;
var portal_genType:String;
public var oldypos:Number;
var pressedCycle:Boolean;// = false
var ss_frameVel:int;
var graphicID:int;
var weapon:PlayerWeapon;
var collisionPoly:Poly;
var gutsList:Array;
var pressedCyclePrev:Boolean;// = false
var minFrame:int;
var rotVel:Number;
var yoffset:Number;
public var colFlag_canBeShot:Boolean;
var health:Number;
var pressedUp:Boolean;// = false
var maxFrame:int;
var pressedWeaponID:int;// = 0
var bulletPlayerWeapon:PlayerWeapon;
public var name:String;
public var toSpeed:Number;
var graphicID1:int;
var bobTimer:Number;
public var colFlag_canBePickedUp:Boolean;
public var colFlag_isPowerup:Boolean;
public var colFlag_isCheckpoint:Boolean;
public var origspeed:Number;
var actionTimer:int;
var hitEnemyFunction:Function;
var doublePressedLeft:Boolean;// = false
var boss3_numPaths:int;
public var depth:Number;
var man_walkMaxVel:Number;
var ss_frame:Number;
var particleType:int;
public var xpos:Number;
var ss_graphicID:int;
public var frameVel:Number;
var carriedObject:GameObj;
var xoffset:Number;
public var active:Boolean;
public var colFlag_canReceiveMelee:Boolean;
var weaponGroups:Array;
var pressedRight:Boolean;// = false
var genBloodFlag:Boolean;
var pathSpeed:Number;
var toOffsetY:Number;
var toOffsetX:Number;
public var type:int;
public var ypos:Number;
var aggression:Number;
var timer:Number;
var colorTransform:ColorTransform;
public var colFlag_canGiveMelee:Boolean;
var pressedLeft:Boolean;// = false
var pressedJump:Boolean;// = false
var numWeapons:int;
var isBeingCarried:Boolean;
public var hitTimer:int;
var flashFlag:Boolean;
var toHeight:Number;
public var renderFunction:Function;
public var zpos:Number;
public var colFlag_shielded:Boolean;
public var colFlag_isBouncyPad:Boolean;
var heightVar1:Number;
var tailPieces:Array;
var isBoss:Boolean;
var portal_genAmount:int;
var playerWeapons:Array;
var heightVar0:Number;
public var updateFunction:Function;
public var externalVec:Vec;
public var bulletTestCollisionExtraFunction:Function;
public var zpos2:Number;
var usesBulletTime:Boolean;
var timerMax:Number;
var dodgeBullets:Boolean;
var pressedDown:Boolean;// = false
var parentObj:GameObj;
var flashTimerMax:int;
var actionList:Array;
var pathPos:Number;
public static const generic_controlMode_hit:int = 100;
static var ct:ColorTransform = new ColorTransform();
public function GameObj(_arg1, _arg2, _arg3, _arg4:int){
doublePressedLeft = false;
doublePressedRight = false;
pressedLeft = false;
pressedRight = false;
pressedUp = false;
pressedDown = false;
pressedJump = false;
pressedFire = false;
pressedFire1 = false;
pressedCycle = false;
pressedCyclePrev = false;
pressedExtraWeapon = false;
pressedWeapon = false;
pressedWeaponID = 0;
super();
xpos = _arg2;
ypos = _arg3;
zpos = 1;
starty = _arg2;
startx = _arg2;
active = false;
main = _arg1;
zpos = 0;
graphicID = 0;
frame = 0;
frameVel = 0;
controlIndex = 0;
timer = 0;
timer1 = 0;
radius = 14;
minFrame = 0;
maxFrame = 0;
movementVec = new Vec();
externalVec = new Vec();
objectIndex = _arg4;
colorTransform = new ColorTransform();
}
public function UpdateEnemy9(){
xpos = (xpos + movementVec.GetXComponent());
ypos = (ypos + movementVec.GetYComponent());
UpdateExternalVel();
if (IsInWorld(64) == false){
active = false;
};
CycleAnimationEx();
}
public function InitMagicParticle(_arg1:int){
updateFunction = UpdateMagicParticle;
graphicID = GraphicObjects.gfx_magicsparkle;
if (_arg1 == 1){
graphicID = GraphicObjects.gfx_magicsparkle2;
};
frame = 0;
frameVel = Utils.RandBetweenFloat(0.5, 1);
yvel = -(Utils.RandBetweenFloat(0, 1));
xvel = Utils.RandBetweenFloat(-1, 1);
}
function RenderCollisionPoly():void{
var _local1:Number;
var _local2:Number;
var _local3:Line;
if ((Debug.debugMode & 4) == 0){
return;
};
if (collisionPoly == null){
return;
};
_local1 = Math.floor(Game.scrollX);
_local2 = Math.floor(Game.scrollY);
for each (_local3 in collisionPoly.lineList) {
Utils.RenderDotLine(main.screenBD, (_local3.x0 - _local1), (_local3.y0 - _local2), (_local3.x1 - _local1), (_local3.y1 - _local2), 100, 4294967295);
};
}
function InitEnemy_Troll(){
aggression = Game.lastEnemyGenDef.aggression;
speedModifier = Game.lastEnemyGenDef.speed;
colFlag_invincible = true;
colFlag_isEnemy = true;
updateFunction = UpdateEnemy_Troll;
SetAnim("walk");
controlMode = 0;
maxSpeed = Util_GetRandWithModifier(1, 2, 3, 4, speedModifier);
controlMode = 0;
Util_SetToFloorPos();
count = 0;
colFlag_vulnerable = false;
}
function ManUpdateXvels(_arg1:Number):void{
xvel = (xvel + xacc);
xvel = Utils.LimitNumber(-(_arg1), _arg1, xvel);
xpos = (xpos + xvel);
}
public function UpdateBob(){
var _local1:Number;
bobTimer = (bobTimer + bobAdder);
_local1 = (Math.sin(bobTimer) * bobDistance);
height = (bobInitialHeight + _local1);
}
function Init_EnemySwordBullet(){
var _local1:GameObj;
colFlag_isEnemyBullet = true;
visible = true;
updateFunction = Update_EnemySwordBullet;
timer = 10;
_local1 = Game.lastObjectGenerator;
xpos = (_local1.xpos + objectDef.offsetX);
if (_local1.xflip){
xpos = (_local1.xpos - objectDef.offsetX);
};
ypos = (_local1.ypos + objectDef.offsetY);
}
function InitEnemy_Pixie(){
aggression = Game.lastEnemyGenDef.aggression;
speedModifier = Game.lastEnemyGenDef.speed;
healthModifier = Game.lastEnemyGenDef.health;
colFlag_isEnemy = true;
updateFunction = UpdateEnemy_Pixie;
SetAnim("walk");
controlMode = 0;
modifier0 = 2;
modifier1 = 3;
modifier2 = 4;
modifier3 = 5;
maxSpeed = Util_GetRandWithModifier(modifier0, modifier1, modifier2, modifier3, speedModifier);
controlMode = 0;
Util_SetToFloorPos();
}
public function UpdateEnemy_Helicopter(){
var _local1:Number;
var _local2:Poly;
var _local3:Point;
timer1 = (timer1 + xvel);
timer = (timer + yvel);
_local1 = Math.sin(timer);
_local1 = (_local1 + Math.sin(timer1));
_local1 = Utils.NormalizeUnit(_local1);
_local2 = currentPoly;
if (_local2 == null){
return;
};
_local3 = _local2.GetPointOnCatmullRom(_local1);
toPosX = (Game.goPlayer.xpos + _local3.x);
toPosY = (Game.goPlayer.ypos + _local3.y);
xpos = (xpos + ((toPosX - xpos) * 0.005));
ypos = (ypos + ((toPosY - ypos) * 0.005));
dir = Math.atan2((Game.goPlayer.ypos - ypos), (Game.goPlayer.xpos - xpos));
dir1 = (dir1 + 0.4);
}
public function InitEnemy_AccelStraight(){
EnemyUpdateFunctionCallback = UpdateEnemy_AccelStraight;
controlMode = 0;
UpdateEnemy_TurnAndMoveToPoint_GetPosNearPlayer();
SetToRequiredRot();
if (enemyGenMode == 0){
toPosX = Game.goPlayer.xpos;
toPosY = Game.goPlayer.ypos;
SetToRequiredRot();
} else {
movementVec.rot = Utils.RandCircle();
};
movementVec.speed = Utils.RandBetweenFloat(objectDef.NumParamA, objectDef.NumParamB);
accel = Utils.RandBetweenFloat(objectDef.NumParamC, objectDef.NumParamD);
}
function Util_XDistToPlayer():Number{
return (Math.abs((xpos - Game.goPlayer.xpos)));
}
function UpdateEnemy(){
var _local1:ShotController;
if (EnemyUpdateFunctionCallback != null){
EnemyUpdateFunctionCallback();
};
if (shootingFlag){
for each (_local1 in shotControllers) {
if (_local1.active){
_local1.Update(this);
};
};
};
UpdateActions();
if (IsInWorld(200) == false){
active = false;
};
if (flashTimer > 0){
flashTimer--;
};
if (healthBarTimer > 0){
healthBarTimer--;
};
}
function UpdateEnemy_TurnAndMoveToPoint_GetPosNearPlayer(){
var _local1:Point;
_local1 = Utils.RandPointInCircle(50);
toPosX = (Game.goPlayer.xpos + _local1.x);
toPosY = (Game.goPlayer.ypos + _local1.y);
}
function Die_PlayerArrow(){
var _local1:Number;
var _local2:int;
controlMode = 1;
_local1 = -(Utils.RandBetweenFloat(0.1, 0.5));
xvel = (xvel * _local1);
yvel = Utils.RandBetweenFloat(-2, -6);
rotVel = (rotVel * _local1);
colFlag_isPlayerBullet = false;
_local2 = Utils.RandBetweenInt(0, 2);
if (_local2 == 0){
frame = 0;
};
if (_local2 == 1){
frame = 11;
};
if (_local2 == 2){
frame = 12;
};
}
public function InitEnemy_RandomlyFlyRoundMap(){
EnemyUpdateFunctionCallback = UpdateEnemy_RandomlyFlyRoundMap;
rotVel = Utils.RandBetweenFloat(objectDef.NumParamA, objectDef.NumParamB);
toSpeed = Utils.RandBetweenFloat(objectDef.NumParamC, objectDef.NumParamD);
speed = 0;
InitEnemyRot_TakeFromPortalDef();
InitBob();
}
function GnomeHitPlayerWhenRunning(){
controlMode = 3;
xflip = Util_SideOfPlayer();
SetAnim("hit");
}
function RenderPlayer(){
var _local1:Number;
var _local2:Number;
var _local3:Number;
var _local4:Number;
var _local5:String;
var _local6:AnimPoint;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:int;
var _local11:Number;
_local1 = Math.floor(Game.scrollX);
_local2 = Math.floor(Game.scrollY);
_local3 = (Math.floor(xpos) - _local1);
_local4 = (Math.floor(ypos) - _local2);
_local5 = currentAnimDef.name;
if ((((((((((((((((_local5 == "idle")) || ((_local5 == "walk")))) || ((_local5 == "jump")))) || ((_local5 == "die")))) || ((_local5 == "standtoduck")))) || ((_local5 == "duck")))) || ((_local5 == "ducktostand")))) || ((_local5 == "hit")))){
_local6 = AnimPoints.GetFramePoint(0, frame);
if (_local6 != null){
_local7 = (_local6.rot - (Math.PI * 0.5));
_local8 = (_local3 + _local6.x);
_local9 = (_local4 + _local6.y);
if (xflip){
_local7 = -(_local7);
_local8 = (_local3 - _local6.x);
};
_local10 = (GraphicObjects.gfx_carryweapon_sword + Game.currentWeapon);
GraphicObjects.RenderAtRotScaled(_local10, 0, main.screenBD, _local8, _local9, xflip, 1, _local7);
};
};
if ((((hitTimer > 0)) && ((hitTimer & 2)))){
_local11 = Utils.ScaleTo(1, 4, 0, hitTimerMax, hitTimer);
colorTransform.redMultiplier = _local11;
_local11 = Utils.ScaleTo(1, 0, 0, hitTimerMax, hitTimer);
colorTransform.greenMultiplier = _local11;
colorTransform.blueMultiplier = _local11;
GraphicObjects.RenderAtColTrans(graphicID, frame, main.screenBD, _local3, _local4, xflip, colorTransform);
} else {
GraphicObjects.RenderAt(graphicID, frame, main.screenBD, _local3, _local4, xflip);
};
}
function InitPlayer():void{
health = 100;
isDead = false;
isPlayer = true;
colFlag_canGiveMelee = true;
colFlag_canReceiveMelee = true;
updateFunction = UpdatePlayer;
renderFunction = RenderPlayer;
frame = 0;
graphicID = GraphicObjects.gfx_player;
particleColor = 4294967295;
particleType = 0;
xvel = 0;
yvel = 0;
frameVel = 1;
SetManMovementState("idle");
SetManDirection(1);
man_walkMaxVel = 5;
man_runMaxVel = 6;
man_acc = 0.5;
carriedObject = null;
Util_SetToFloorPos();
}
function Init_BabyDragonBullet(){
}
function Init_PlayerCrossbowBullet(){
var _local1:GameObj;
colFlag_isPlayerBullet = true;
_local1 = Game.lastObjectGenerator;
weapon = PlayerWeapons.weaponList[Game.currentWeapon];
SoundPlayer.PlayRandomBetween("arrowfire1", "arrowfire2");
visible = true;
updateFunction = Update_PlayerCrossbowBullet;
graphicID = GraphicObjects.gfx_player_arrow;
frame = 0;
xpos = (_local1.xpos + objectDef.offsetX);
xvel = 30;
if (_local1.xflip){
xpos = (_local1.xpos - objectDef.offsetX);
xvel = -(xvel);
};
ypos = (_local1.ypos + objectDef.offsetY);
rotVel = Utils.RandBetweenFloat(-0.3, 0.3);
dieFunction = Die_PlayerArrow;
controlMode = 0;
frameVel = 1;
type = weapon.currentLevel;
if (type == 0){
minFrame = 0;
maxFrame = 0;
};
if (type == 1){
minFrame = 1;
maxFrame = 5;
};
if (type == 2){
minFrame = 6;
maxFrame = 10;
};
}
function UpdateBatPoo(){
if (controlMode == 0){
xpos = (xpos + xvel);
depth = (depth + zvel);
if (Util_UpdateYvel()){
controlMode = 1;
SetAnim("splat");
};
PlayAnimationEx();
} else {
if (controlMode == 1){
if (PlayAnimationEx()){
RenderToBackground();
active = false;
};
};
};
}
function InitShop():void{
objectDef = ObjectDefs.GetObjectDefByExportName("Shop");
graphicID = objectDef.GetAnimIDFromName("idle");
updateFunction = UpdateShop;
graphicID;
colFlag_isShop = true;
yvel = 2;
xvel = 0;
}
function UpdatePlayer1():void{
var _local1:Number;
var _local2:Number;
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:PlayerWeapon;
var _local8:int;
var _local9:GameObj;
var _local10:AnimPoint;
var _local11:Number;
var _local12:Number;
var _local13:Number;
doublePressedLeft = false;
doublePressedRight = false;
pressedLeft = false;
pressedRight = false;
pressedUp = false;
pressedDown = false;
pressedJump = false;
pressedFire = false;
pressedFire1 = false;
pressedCycle = false;
pressedCyclePrev = false;
pressedExtraWeapon = false;
pressedWeapon = false;
if (KeyReader.Down(KeyReader.KEY_LEFT)){
pressedLeft = true;
};
if (KeyReader.Down(KeyReader.KEY_RIGHT)){
pressedRight = true;
};
if (KeyReader.Down(KeyReader.KEY_UP)){
pressedUp = true;
};
if (KeyReader.Down(KeyReader.KEY_DOWN)){
pressedDown = true;
};
if (KeyReader.Down(KeyReader.KEY_A)){
pressedLeft = true;
};
if (KeyReader.Down(KeyReader.KEY_D)){
pressedRight = true;
};
if (KeyReader.Down(KeyReader.KEY_W)){
pressedUp = true;
};
if (KeyReader.Down(KeyReader.KEY_S)){
pressedDown = true;
};
if (KeyReader.Pressed(KeyReader.KEY_SPACE)){
pressedFire = true;
};
if (KeyReader.Pressed(KeyReader.KEY_Z)){
pressedFire = true;
};
if (KeyReader.Pressed(KeyReader.KEY_2)){
pressedFire1 = true;
};
if (KeyReader.Pressed(KeyReader.KEY_Q)){
pressedCyclePrev = true;
};
if (KeyReader.Pressed(KeyReader.KEY_E)){
pressedCycle = true;
};
if (KeyReader.Pressed(KeyReader.KEY_1)){
pressedWeapon = true;
pressedWeaponID = 0;
};
if (KeyReader.Pressed(KeyReader.KEY_2)){
pressedWeapon = true;
pressedWeaponID = 1;
};
if (KeyReader.Pressed(KeyReader.KEY_3)){
pressedWeapon = true;
pressedWeaponID = 2;
};
if (KeyReader.Pressed(KeyReader.KEY_4)){
pressedWeapon = true;
pressedWeaponID = 3;
};
if (KeyReader.Pressed(KeyReader.KEY_5)){
pressedWeapon = true;
pressedWeaponID = 4;
};
if (KeyReader.Pressed(KeyReader.KEY_6)){
pressedWeapon = true;
pressedWeaponID = 5;
};
if (pressedCyclePrev){
Game.currentWeapon = PlayerWeapons.NextWeapon(-1, Game.currentWeapon);
};
if (pressedCycle){
Game.currentWeapon = PlayerWeapons.NextWeapon(1, Game.currentWeapon);
};
if (pressedWeapon){
Game.currentWeapon = PlayerWeapons.SetWeaponNumber(pressedWeaponID, Game.currentWeapon);
};
_local1 = man_acc;
_local2 = man_walkMaxVel;
_local3 = man_runMaxVel;
_local4 = man_runMaxVel;
_local5 = 1;
if (movementState == "idle"){
if (((pressedLeft) || (pressedRight))){
SetManMovementState("walk");
};
CycleAnimationEx();
ManUpdateDecel();
} else {
if (movementState == "duck"){
if (controlMode == 0){
if (PlayAnimationEx()){
controlMode = 1;
SetAnim("duck");
};
} else {
if (controlMode == 1){
if (!pressedDown){
controlMode = 2;
SetAnim("ducktostand");
};
CycleAnimationEx();
} else {
if (controlMode == 2){
if (PlayAnimationEx()){
SetManMovementState("idle");
};
};
};
};
ManUpdateDecel();
} else {
if (movementState == "walk"){
xacc = 0;
if (pressedLeft){
xacc = -(_local1);
ManUpdateXvels(_local2);
SetManDirection(0);
} else {
if (pressedRight){
xacc = _local1;
ManUpdateXvels(_local2);
SetManDirection(1);
} else {
if (ManUpdateDecel()){
SetManMovementState("idle");
};
};
};
CycleAnimationEx();
} else {
if (movementState == "jump"){
xacc = 0;
if (pressedLeft){
xacc = -(_local1);
ManUpdateXvels(_local3);
SetManDirection(0);
} else {
if (pressedRight){
xacc = _local1;
ManUpdateXvels(_local3);
SetManDirection(1);
} else {
ManUpdateDecel();
};
};
CycleAnimationEx();
} else {
if (movementState == "attack"){
ManUpdateDecel();
if (PlayAnimationEx()){
SetManMovementState("idle");
};
} else {
if (movementState == "jumpattack"){
xacc = 0;
if (pressedLeft){
xacc = -(_local1);
ManUpdateXvels(_local3);
SetManDirection(0);
} else {
if (pressedRight){
xacc = _local1;
ManUpdateXvels(_local3);
SetManDirection(1);
} else {
ManUpdateDecel();
};
};
if (PlayAnimationEx()){
SetManMovementState("jump");
};
} else {
if (movementState == "hit"){
if (PlayAnimationEx()){
_local6 = Game.GetHeightMapHeight(xpos);
if (ypos >= _local6){
SetManMovementState("idle");
} else {
SetManMovementState("jump");
};
};
timer++;
ManUpdateDecel();
} else {
if (movementState == "die"){
PlayAnimationEx();
PlayerUpdateDeadParticles();
timer++;
ManUpdateDecel();
};
};
};
};
};
};
};
};
if ((((((movementState == "walk")) || ((movementState == "idle")))) || ((movementState == "jump")))){
if (movementState != "jump"){
if (pressedUp){
SetManMovementState("jump");
yvel = Game.playerJumpYvel;
};
};
if (pressedFire){
if (movementState == "jump"){
SetManMovementState("jumpattack");
} else {
SetManMovementState("attack");
};
};
if (pressedDown){
if (movementState != "jump"){
controlMode = 0;
SetManMovementState("duck");
};
};
};
xpos = Utils.LimitNumber(0, Game.scrollW, xpos);
yvel = (yvel + Game.gravity);
yvel = Utils.LimitNumber(-100, Game.maxFallSpeed, yvel);
ypos = (ypos + yvel);
_local6 = Game.GetHeightMapHeight(xpos);
if (ypos > _local6){
ypos = _local6;
if ((((movementState == "jump")) || ((movementState == "jumpattack")))){
if (Game.GetBloodMap(xpos) != 0){
_local8 = 0;
while (_local8 < 10) {
_local9 = GameObjects.AddObj(xpos, ypos, zpos);
_local9.InitMiniBloodParticle();
_local9.depth = depth;
_local8++;
};
};
SetManMovementState("idle");
};
};
UpdateAnimEvents();
_local7 = PlayerWeapons.weaponList[Game.currentWeapon];
if (_local7.currentLevel > 0){
_local10 = AnimPoints.GetFramePoint(1, frame);
if (_local10 != null){
_local11 = (_local10.rot - (Math.PI * 0.5));
_local12 = (xpos + _local10.x);
_local13 = (ypos + _local10.y);
if (xflip){
_local11 = -(_local11);
_local12 = (xpos - _local10.x);
};
_local9 = GameObjects.AddObj(_local12, _local13, zpos);
_local9.InitMagicParticle((_local7.currentLevel - 1));
_local9.depth = depth;
};
};
}
function Event_EnemyPixieGenerateBullet(){
var _local1:GameObj;
_local1 = GameObjects.AddObj(xpos, ypos, (zpos - 10));
_local1.InitFromObjectDef("PixieBullet", this);
}
function SetXflipFromVel(){
xflip = false;
if (xvel < 0){
xflip = true;
};
}
function UpdateAnimEvents():void{
var _local1:AnimDef;
var _local2:AnimEvent;
var _local3:int;
_local1 = currentAnimDef;
if (currentEventID >= _local1.eventList.length){
return;
};
_local2 = _local1.eventList[currentEventID];
_local3 = (int(frame) - minFrame);
if (_local3 == _local2.frame){
if (_local2.functionName != ""){
var _local4 = this;
_local4[_local2.functionName]();
};
currentEventID++;
};
}
function Event_EnemyKnightGenerateBullet1(){
var _local1:GameObj;
_local1 = GameObjects.AddObj(xpos, ypos, (zpos - 10));
_local1.InitFromObjectDef("KnightBullet1", this);
}
public function InitMiniBloodParticle(_arg1:int=0){
updateFunction = UpdateMiniBloodParticle;
graphicID = GraphicObjects.gfx_bloodparticle;
frame = Utils.RandBetweenInt(2, 3);
xvel = Utils.RandBetweenFloat(-3, 3);
yvel = Utils.RandBetweenFloat(-4, -8);
zvel = Utils.RandBetweenFloat(-0.5, 0.5);
dir = Utils.RandBetweenFloat(0, 10);
}
function Init_PlayerBowBullet(){
var _local1:GameObj;
colFlag_isPlayerBullet = true;
_local1 = Game.lastObjectGenerator;
weapon = PlayerWeapons.weaponList[Game.currentWeapon];
SoundPlayer.PlayRandomBetween("arrowfire1", "arrowfire2");
visible = true;
updateFunction = Update_PlayerBowBullet;
graphicID = GraphicObjects.gfx_player_arrow;
frame = 0;
xpos = (_local1.xpos + objectDef.offsetX);
xvel = 20;
yvel = Utils.RandBetweenFloat(-4, -3);
if (_local1.xflip){
xpos = (_local1.xpos - objectDef.offsetX);
xvel = -(xvel);
};
ypos = (_local1.ypos + objectDef.offsetY);
rotVel = Utils.RandBetweenFloat(-0.3, 0.3);
dieFunction = Die_PlayerArrow;
controlMode = 0;
frameVel = 1;
type = weapon.currentLevel;
if (type == 0){
minFrame = 0;
maxFrame = 0;
};
if (type == 1){
minFrame = 1;
maxFrame = 5;
};
if (type == 2){
minFrame = 6;
maxFrame = 10;
};
}
function InitWeaponGroups(){
}
function BulletCollision_SnakeTail(_arg1:GameObj):Boolean{
var _local2:Number;
var _local3:Number;
var _local4:Number;
var _local5:int;
var _local6:TailPiece;
var _local7:int;
_local2 = _arg1.xpos;
_local3 = _arg1.ypos;
_local4 = (16 * 16);
_local5 = tailPieces.length;
_local7 = 0;
while (_local7 < _local5) {
_local6 = tailPieces[_local7];
if (Utils.Dist2BetweenPoints(_local6.xpos, _local6.ypos, _local2, _local3) < _local4){
_arg1.health--;
if (_arg1.health <= 0){
_arg1.active = false;
return (true);
};
return (false);
};
_local7++;
};
return (false);
}
public function InitDeadBitParticle(_arg1:int, _arg2:int, _arg3:Number, _arg4:Number){
genBloodFlag = false;
updateFunction = UpdateDeadBitParticle;
graphicID = _arg1;
frame = _arg2;
frameVel = 1;
xvel = Utils.RandBetweenFloat(-7, 7);
yvel = Utils.RandBetweenFloat(-5, -9);
zvel = Utils.RandBetweenFloat(-1, 1);
controlMode = 0;
dir = 0;
xpos = (xpos + _arg3);
ypos = (ypos + _arg4);
}
function UpdateCarriedObject():void{
var _local1:int;
var _local2:int;
var _local3:AnimPoint;
if (carriedObject == null){
return;
};
_local1 = GraphicObjects.GetWidth(graphicID, frame);
_local2 = GraphicObjects.GetHeight(graphicID, frame);
_local3 = AnimPoints.GetFramePoint(1, int(frame));
if (_local3 == null){
return;
};
if (xflip){
carriedObject.xpos = (xpos - _local3.x);
carriedObject.ypos = (ypos + _local3.y);
carriedObject.dir = -(_local3.rot);
} else {
carriedObject.xpos = (xpos + _local3.x);
carriedObject.ypos = (ypos + _local3.y);
carriedObject.dir = _local3.rot;
};
}
function InitEnemyRot_TakeFromPortalDef(){
if (enemyGenMode == 0){
toPosX = Game.goPlayer.xpos;
toPosY = Game.goPlayer.ypos;
SetToRequiredRot();
} else {
movementVec.rot = Utils.RandCircle();
};
}
function InitFromObjectDef(_arg1:String, _arg2:GameObj=null){
Game.lastObjectGenerator = _arg2;
objectDef = ObjectDefs.GetObjectDefByExportName(_arg1);
health = objectDef.maxHealth;
if (Game.lastEnemyGenDef != null){
health = (health * Game.lastEnemyGenDef.health);
};
maxhealth = health;
if (objectDef.initFuncName != ""){
var _local3 = this;
_local3[objectDef.initFuncName]();
};
}
function UpdateBloodParticle(){
var _local1:Number;
var _local2:int;
var _local3:GameObj;
yvel = (yvel + Game.gravity);
xpos = (xpos + xvel);
ypos = (ypos + yvel);
depth = (depth + zvel);
_local1 = Game.GetHeightMapHeight(int(xpos));
if (ypos > _local1){
Game.IncreaseMapHeight(xpos);
ypos = _local1;
_local2 = 0;
while (_local2 < 5) {
_local3 = GameObjects.AddObj(xpos, ypos, zpos);
_local3.InitMiniBloodParticle();
_local3.depth = depth;
_local2++;
};
RenderToBackground();
active = false;
};
if (ypos > 1000){
active = false;
};
dir = (dir + (xvel * 0.1));
scale = (1 + (depth * 0.005));
}
public function InitEnemy(_arg1:String, _arg2:int=0){
var _local3:ShotController;
var _local4:ShotController;
enemyGenMode = _arg2;
usesBulletTime = true;
height = Game.normalHeight;
hasShadow = true;
shotControllers = new Array();
updateFunction = UpdateEnemy;
renderFunction = RenderEnemy;
colFlag_killPlayer = true;
colFlag_canBeShot = true;
colFlag_isEnemy = true;
objectDef = ObjectDefs.GetObjectDefByExportName(_arg1);
graphicID = objectDef.GetAnimIDFromName("idle");
health = objectDef.maxHealth;
radius = 100;
actionTimer = 0;
actionList = new Array();
shootingFlag = true;
for each (_local3 in objectDef.shotControllers) {
_local4 = _local3.clone();
_local4.Reset();
shotControllers.push(_local4);
};
if (objectDef.initFuncName != ""){
var _local5 = this;
_local5[objectDef.initFuncName]();
};
dodgeBullets = objectDef.dodgeFlag;
}
function UpdatePickupObject():void{
var _local1:Number;
if (controlMode == 0){
xpos = (xpos + xvel);
if (Util_UpdateYvel()){
colFlag_canBePickedUp = true;
xvel = 0;
timer = (Defs.fps * Game.pickupTime);
controlMode = 1;
if (type == 1){
controlMode = 2;
SetAnim("land");
};
};
if (type == 1){
_local1 = Math.abs(yvel);
_local1 = Utils.LimitNumber(0, 8, _local1);
frame = Math.floor((_local1 / 3));
} else {
CycleAnimationEx();
};
} else {
if (controlMode == 1){
timer--;
if (timer < 0){
active = false;
};
CycleAnimationEx();
} else {
if (controlMode == 2){
timer--;
if (timer < 0){
active = false;
};
PlayAnimationEx();
} else {
if (controlMode == 3){
scale = (scale - 0.1);
if (scale <= 0.1){
active = false;
};
};
};
};
};
}
function RenderBlockCollision():void{
var _local1:Rectangle;
var _local2:Rectangle;
if ((Debug.debugMode & 4) == 0){
return;
};
if (objectDef == null){
return;
};
if (objectDef.colRects.length == 0){
return;
};
for each (_local2 in objectDef.shieldColRects) {
_local1 = _local2.clone();
if (xflip){
_local1 = Collision.XflipRectangle(_local1);
};
_local1.x = (_local1.x + xpos);
_local1.y = (_local1.y + ypos);
_local1.x = (_local1.x - Game.scrollX);
_local1.y = (_local1.y - Game.scrollY);
main.screenBD.fillRect(_local1, 1082163200);
};
for each (_local2 in objectDef.colRects) {
_local1 = _local2.clone();
if (xflip){
_local1 = Collision.XflipRectangle(_local1);
};
_local1.x = (_local1.x + xpos);
_local1.y = (_local1.y + ypos);
_local1.x = (_local1.x - Game.scrollX);
_local1.y = (_local1.y - Game.scrollY);
main.screenBD.fillRect(_local1, 1082163328);
};
}
function Util_SetValFromSideOfPos(_arg1:Number, _arg2:Number):Number{
var _local3:Number;
_local3 = 0;
if (xpos < _arg1){
_local3 = _arg2;
} else {
_local3 = -(_arg2);
};
return (_local3);
}
public function EnemyHitByBullet(_arg1:GameObj, _arg2:Boolean=false, _arg3:Boolean=false):Boolean{
var _local4:Boolean;
var _local5:Number;
_local4 = false;
if (_arg3 == false){
_local5 = _arg1.weapon.GetDamage();
} else {
_local5 = (_arg1.weapon.GetDamage() * 10);
};
health = (health - _local5);
if (health <= 0){
if (_arg1 != null){
PlayHitSound(this, _arg1, true);
};
Game.AddScore(100);
GenerateDeadParticles();
GeneratePickup();
active = false;
_local4 = true;
} else {
if (_arg1 != null){
PlayHitSound(this, _arg1, false);
};
healthBarTimer = Defs.fps;
GenerateHitParticles();
Util_SaveState();
controlMode = generic_controlMode_hit;
hit_xvel = 5;
if (_arg1.xpos > xpos){
hit_xvel = (hit_xvel * -1);
};
SetAnim("hit");
};
if (_arg1.dieFunction != null){
_arg1.dieFunction();
} else {
_arg1.active = false;
};
return (_local4);
}
function UpdateEnemy_Path(){
var _local1:Boolean;
_local1 = Path_GetToPos();
if (_local1){
pathPos = 0;
};
pathPos = (pathPos + pathSpeed);
xpos = toPosX;
ypos = toPosY;
}
function GeneratePickup(){
var _local1:int;
var _local2:String;
var _local3:GameObj;
_local1 = Game.pickupList[Game.pickupType];
Game.pickupType++;
if (Game.pickupType >= Game.pickupList.length){
Game.pickupType = 0;
};
if (_local1 == -1){
return;
};
if (_local1 == 0){
_local2 = "PickupHealth";
};
if (_local1 == 1){
_local2 = "PickupGold";
};
if (_local1 == 2){
_local2 = "PickupBerzerker";
};
_local3 = GameObjects.AddObj(xpos, (ypos - 50), (zpos - 10));
_local3.InitFromObjectDef(_local2);
}
function RenderNormally(){
var _local1:Number;
var _local2:Number;
var _local3:Number;
var _local4:Number;
var _local5:Number;
_local1 = Math.floor(Game.scrollX);
_local2 = Math.floor(Game.scrollY);
_local3 = (Math.floor(xpos) - _local1);
_local4 = (Math.floor(ypos) - _local2);
_local5 = depth;
if (alpha != 1){
ct.alphaMultiplier = alpha;
GraphicObjects.RenderAtRotScaledColTrans(graphicID, frame, main.screenBD, _local3, (_local4 + _local5), xflip, scale, dir, ct);
} else {
if (((!((dir == 0))) || (!((scale == 1))))){
GraphicObjects.RenderAtRotScaled(graphicID, frame, main.screenBD, _local3, (_local4 + _local5), xflip, scale, dir);
} else {
GraphicObjects.RenderAtColTrans(graphicID, frame, main.screenBD, _local3, (_local4 + _local5), xflip, colorTransform);
};
};
RenderHealthBar();
}
function Event_EnemyGnomeGenerateBullet(){
var _local1:GameObj;
_local1 = GameObjects.AddObj(xpos, ypos, (zpos - 10));
_local1.InitFromObjectDef("GnomeBullet", this);
}
function InitEnemy_Jester(){
aggression = Game.lastEnemyGenDef.aggression;
speedModifier = Game.lastEnemyGenDef.speed;
colFlag_isEnemy = true;
updateFunction = UpdateEnemy_Jester;
SetAnim("prejump");
controlMode = 0;
maxSpeed = Utils.RandBetweenFloat(2, 3);
controlMode = 0;
Util_SetToFloorPos();
}
function InitEnemy_Knight(){
aggression = Game.lastEnemyGenDef.aggression;
speedModifier = Game.lastEnemyGenDef.speed;
healthModifier = Game.lastEnemyGenDef.health;
colFlag_isEnemy = true;
updateFunction = UpdateEnemy_Knight;
SetAnim("walk");
controlMode = 0;
modifier0 = 2;
modifier1 = 3;
modifier2 = 4;
modifier3 = 5;
maxSpeed = Util_GetRandWithModifier(modifier0, modifier1, modifier2, modifier3, speedModifier);
controlMode = 0;
Util_SetToFloorPos();
}
function RenderPreRotated(){
var _local1:Number;
var _local2:Number;
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:int;
_local1 = Math.floor(Game.scrollX);
_local2 = Math.floor(Game.scrollY);
_local3 = (Math.floor(xpos) - _local1);
_local4 = (Math.floor(ypos) - _local2);
_local5 = GraphicObjects.GetNumFrames(graphicID);
_local6 = dir;
_local6 = (_local6 - (Math.PI / 2));
while (_local6 < 0) {
_local6 = (_local6 + (Math.PI * 2));
};
while (_local6 > (Math.PI * 2)) {
_local6 = (_local6 - (Math.PI * 2));
};
_local7 = ((_local5 / (Math.PI * 2)) * _local6);
GraphicObjects.RenderAt(graphicID, _local7, main.screenBD, _local3, (_local4 - (height * 0.1)), false);
}
function SetManDirection(_arg1:int){
xflip = false;
if (_arg1 == 0){
xflip = true;
};
}
public function InitEnemy_FollowPlayer2(){
var _local1:Point;
EnemyUpdateFunctionCallback = UpdateEnemy_RotateToPlayer2;
rotVel = Utils.RandBetweenFloat(objectDef.NumParamA, objectDef.NumParamB);
speed = Utils.RandBetweenFloat(objectDef.NumParamC, objectDef.NumParamD);
_local1 = Utils.RandPointInCircle(objectDef.NumParamG);
toOffsetX = _local1.x;
toOffsetY = _local1.y;
toPosX = (Game.goPlayer.xpos + toOffsetX);
toPosY = (Game.goPlayer.ypos + toOffsetY);
timer = (Utils.RandBetweenFloat(objectDef.NumParamE, objectDef.NumParamF) * Defs.fps2);
SetToRequiredRot();
InitBob();
}
public function InitEnemy_Tank(){
var _local1:Point;
EnemyUpdateFunctionCallback = UpdateEnemy_Tank;
movementVec.Set(Utils.RandCircle(), speed);
frame1 = (frame1 + 0.02);
graphicID1 = objectDef.GetAnimIDFromName("turret");
renderFunction = RenderEnemy_Tank;
height = 0;
rotVel = Utils.RandBetweenFloat(objectDef.NumParamA, objectDef.NumParamB);
speed = Utils.RandBetweenFloat(objectDef.NumParamC, objectDef.NumParamD);
_local1 = Game.GetRandomEdge(32);
xpos = _local1.x;
ypos = _local1.y;
toOffsetX = Utils.RandBetweenFloat(-100, 100);
toOffsetY = Utils.RandBetweenFloat(-100, 100);
toPosX = Game.goPlayer.xpos;
toPosY = Game.goPlayer.ypos;
SetToRequiredRot();
}
public function UpdateEnemy_SplineRoundPlayer_Stepper(){
var _local1:Poly;
var _local2:Point;
timer = (timer + rotVel);
if (timer >= 1){
timer = 0;
};
_local1 = currentPoly;
if (_local1 == null){
return;
};
_local2 = _local1.GetPointOnCatmullRom(timer);
toPosX = (Game.goPlayer.xpos + _local2.x);
toPosY = (Game.goPlayer.ypos + _local2.y);
xpos2 = (xpos2 + ((toPosX - xpos) * 0.005));
ypos2 = (ypos2 + ((toPosY - ypos) * 0.005));
timer1--;
if (timer1 <= 0){
timer1 = 10;
xpos = xpos2;
ypos = ypos2;
dir = Math.atan2((Game.goPlayer.ypos - ypos), (Game.goPlayer.xpos - xpos));
};
}
public function EnemyProjectileHitByBullet(_arg1:GameObj, _arg2:Boolean=false):Boolean{
var _local3:Boolean;
_local3 = false;
_local3 = true;
if (dieFunction != null){
dieFunction();
} else {
active = false;
};
_arg1.active = false;
return (_local3);
}
function IsInWorld(_arg1:Number):Boolean{
if (xpos < (0 - _arg1)){
return (false);
};
if (ypos < (0 - _arg1)){
return (false);
};
if (xpos > (Game.scrollW + _arg1)){
return (false);
};
if (ypos > (Game.scrollH + _arg1)){
return (false);
};
return (true);
}
function Event_EnemyKnightGenerateBullet(){
var _local1:GameObj;
_local1 = GameObjects.AddObj(xpos, ypos, (zpos - 10));
_local1.InitFromObjectDef("KnightBullet", this);
}
function InitPlayer_DeadHead():void{
updateFunction = UpdatePlayer_DeadHead;
yvel = -10;
frame = 0;
graphicID = GraphicObjects.gfx_player_deadbits;
dir = 0;
}
public function InitStaticBlood(_arg1:int, _arg2:Boolean){
updateFunction = UpdateStaticBlood;
graphicID = (GraphicObjects.gfx_blood1 + _arg1);
frame = 0;
frameVel = 0.5;
xflip = _arg2;
}
function Event_PlayerGenerateBullet(){
var _local1:GameObj;
if (attackMode == 0){
_local1 = GameObjects.AddObj(xpos, ypos, (zpos - 10));
_local1.InitFromObjectDef(PlayerWeapons.weaponList[Game.currentWeapon].objName, this);
} else {
if (attackMode == 1){
_local1 = GameObjects.AddObj(xpos, ypos, (zpos - 10));
_local1.InitFromObjectDef(PlayerWeapons.weaponList[Game.currentWeapon].objName2, this);
} else {
_local1 = GameObjects.AddObj(xpos, ypos, (zpos - 10));
_local1.InitFromObjectDef(PlayerWeapons.weaponList[Game.currentWeapon].objName3, this);
};
};
}
public function Update():void{
oldxpos = xpos;
oldypos = ypos;
if (updateFunction != null){
updateFunction();
};
if (healthBarTimer > 0){
healthBarTimer--;
};
zpos2 = (zpos - depth);
}
public function UpdateMagicParticle(){
xpos = (xpos + xvel);
yvel = (yvel + -0.1);
ypos = (ypos + yvel);
if (PlayAnimation()){
active = false;
};
}
function Util_UpdateXvel():void{
xvel = (xvel + xacc);
xvel = Utils.LimitNumber(-(maxSpeed), maxSpeed, xvel);
xpos = (xpos + xvel);
}
function Update_EnemyProjectileBullet(){
if (controlMode == 0){
xpos = (xpos + xvel);
timer--;
if (timer <= 0){
active = false;
};
PlayAnimationEx();
} else {
if (controlMode == 1){
dir = (dir + (rotVel * xvel));
xpos = (xpos + xvel);
if (Util_UpdateYvel()){
Util_SetToFloorPos();
timer = 50;
controlMode = 2;
};
} else {
if (controlMode == 2){
if (TimerDecrement()){
active = false;
};
};
};
};
}
public function UpdateEnemy_Snake(){
var _local1:Number;
var _local2:Vec;
movementVec.speed = speed;
toPosX = Game.goPlayer.xpos;
toPosY = Game.goPlayer.ypos;
RotateToRequiredRot(rotVel);
dir = movementVec.rot;
oscillator = (oscillator + objectDef.NumParamG);
_local1 = (Math.sin(oscillator) * objectDef.NumParamH);
_local2 = new Vec();
_local2.FromVec(movementVec);
_local2.AddRot(_local1);
dir = _local2.rot;
xpos = (xpos + _local2.GetXComponent());
ypos = (ypos + _local2.GetYComponent());
UpdateExternalVel();
UpdateTailPieces();
}
public function Action_Shoot(_arg1:Number){
if (_arg1 == 0){
shootingFlag = false;
};
if (_arg1 == 1){
shootingFlag = true;
};
}
function InitTailPieces(_arg1:int, _arg2:int){
var _local3:int;
var _local4:TailPiece;
tailPieces = new Array();
_local3 = 0;
while (_local3 < _arg1) {
_local4 = new TailPiece();
_local4.xpos = (xpos + (_local3 * 10));
_local4.ypos = ypos;
_local4.dir = dir;
_local4.frame = 0;
_local4.graphicID = _arg2;
tailPieces.push(_local4);
_local3++;
};
}
function InitEnemy_BabyDragon(){
var _local1:GameObj;
aggression = Game.lastEnemyGenDef.aggression;
speedModifier = Game.lastEnemyGenDef.speed;
colFlag_isEnemyBullet = true;
colFlag_isEnemy = true;
updateFunction = UpdateEnemy_BabyDragon;
SetAnim("idle");
controlMode = 0;
controlMode = 0;
_local1 = Game.goPlayer;
xvel = Util_SetValFromSideOfPos(_local1.xpos, Util_GetRandWithModifier(3, 4, 5, 6, speedModifier));
ypos = (_local1.ypos - Utils.RandBetweenFloat(70, 200));
startx = xpos;
starty = ypos;
modifier0 = Utils.RandBetweenFloat(0.05, 0.1);
modifier1 = Utils.RandBetweenFloat(0.05, 0.1);
modifier2 = Utils.RandBetweenFloat(10, 30);
modifier3 = Utils.RandBetweenFloat(20, 40);
}
public function RenderEnemy_SnakeShadow(){
RenderShadowPreRotated();
RenderTailPiecesShadow();
}
function Util_SaveState(){
ss_controlMode = controlMode;
ss_frame = frame;
ss_graphicID = graphicID;
ss_frameVel = frameVel;
ss_minFrame = minFrame;
ss_maxFrame = maxFrame;
}
function InitEnemy_Gnome(){
var _local1:GameObj;
aggression = Game.lastEnemyGenDef.aggression;
speedModifier = Game.lastEnemyGenDef.speed;
colFlag_isEnemy = true;
updateFunction = UpdateEnemy_Gnome;
SetAnim("walk");
controlMode = 0;
maxSpeed = Util_GetRandWithModifier(2, 3, 4, 5, speedModifier);
_local1 = Game.goPlayer;
dist = -(Util_SetValFromSideOfPos(_local1.xpos, Utils.RandBetweenFloat(200, 300)));
dieFunction = GnomeHitPlayerWhenRunning;
controlMode = 0;
Util_SetToFloorPos();
}
function Util_XDistToToPos():Number{
return (Math.abs((xpos - toPosX)));
}
public function InitEnemy_SplineRoundPlayer(){
var _local1:Array;
var _local2:Number;
var _local3:Number;
var _local4:int;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Point;
EnemyUpdateFunctionCallback = UpdateEnemy_SplineRoundPlayer;
rotVel = 0.025;
controlMode = 0;
_local1 = new Array();
_local2 = 50;
_local3 = 0;
while (_local3 < (Math.PI * 2)) {
_local5 = Utils.RandBetweenFloat(objectDef.NumParamA, objectDef.NumParamB);
_local6 = (Math.cos(_local3) * _local5);
_local7 = (Math.sin(_local3) * _local5);
_local6 = (_local6 + Utils.RandBetweenFloat(-(_local2), _local2));
_local7 = (_local7 + Utils.RandBetweenFloat(-(_local2), _local2));
_local8 = new Point(_local6, _local7);
_local1.push(_local8);
_local3 = (_local3 + 0.6);
};
_local4 = 0;
currentPoly = new Poly("", 0, _local1[_local4].x, _local1[_local4].y);
_local4 = 1;
while (_local4 < _local1.length) {
currentPoly.AddLine(_local1[_local4].x, _local1[_local4].y, _local1[_local4].x, _local1[_local4].y);
_local4++;
};
currentPoly.Finish(false);
timer = Utils.RandBetweenFloat(0, 1);
rotVel = Utils.RandBetweenFloat(objectDef.NumParamC, objectDef.NumParamD);
}
public function UpdateEnemy_BallsFromEdges(){
dir = 0;
if (height == 0){
if (Utils.RandBetweenInt(0, 1000) < 50){
zvel = 7;
height = 0.1;
};
} else {
zvel = (zvel + -0.1);
height = (height + zvel);
if (height <= 0){
height = 0;
};
};
xpos = (xpos + movementVec.GetXComponent());
ypos = (ypos + movementVec.GetYComponent());
UpdateExternalVel();
if (IsInWorld(64) == false){
active = false;
};
CycleAnimation();
}
public function PlayHitSound(_arg1:GameObj, _arg2:GameObj, _arg3:Boolean){
if (_arg3){
if (((!((_arg2 == null))) && (!((_arg2.objectDef == null))))){
if (_arg2.objectDef.soundTypeName == "PlayerSword"){
SoundPlayer.Play("swordhit");
} else {
if (_arg2.objectDef.soundTypeName == "PlayerAxe"){
SoundPlayer.Play("swordhit");
} else {
if (_arg2.objectDef.soundTypeName == "PlayerFlail"){
SoundPlayer.Play("macehit");
} else {
if (_arg2.objectDef.soundTypeName == "PlayerSling"){
SoundPlayer.Play("slingfire");
} else {
if (_arg2.objectDef.soundTypeName == "PlayerArrow"){
SoundPlayer.Play("arrowkill");
};
};
};
};
};
};
if (Utils.RandBetweenInt(0, 1000) < 500){
SoundPlayer.PlayRandomBetween("splat0", "splat2");
};
if (((!((_arg1 == null))) && (!((_arg1.objectDef == null))))){
if (_arg1.objectDef.soundTypeName == "Knight"){
SoundPlayer.PlayRandomBetween("killenemy1", "killenemy2");
} else {
if (_arg1.objectDef.soundTypeName == "Bat"){
SoundPlayer.PlayRandomBetween("killenemy1", "killenemy2");
} else {
if (_arg1.objectDef.soundTypeName == "Dragon"){
SoundPlayer.PlayRandomBetween("killenemy1", "killenemy2");
} else {
if (_arg1.objectDef.soundTypeName == "Troll"){
SoundPlayer.Play("trolldead");
} else {
if (_arg1.objectDef.soundTypeName == "Gnome"){
SoundPlayer.PlayRandomBetween("killenemy1", "killenemy2");
SoundPlayer.Play("goblinscreech");
} else {
if (_arg1.objectDef.soundTypeName == "Pixie"){
SoundPlayer.PlayRandomBetween("killenemy1", "killenemy2");
SoundPlayer.Play("goblinscreech");
} else {
if (_arg1.objectDef.soundTypeName == "Jester"){
SoundPlayer.PlayRandomBetween("killenemy1", "killenemy2");
SoundPlayer.Play("goblinscreech");
};
};
};
};
};
};
};
};
} else {
if (((!((_arg1 == null))) && (!((_arg1.objectDef == null))))){
if (_arg1.objectDef.soundTypeName == "Knight"){
SoundPlayer.Play("hurtknight");
} else {
if (_arg1.objectDef.soundTypeName == "Bat"){
SoundPlayer.Play("hurtenemy");
} else {
if (_arg1.objectDef.soundTypeName == "Dragon"){
SoundPlayer.Play("hurtenemy");
} else {
if (_arg1.objectDef.soundTypeName == "Troll"){
if (Utils.RandBetweenInt(0, 1000) < 500){
SoundPlayer.Play("trollhurt");
};
} else {
if (_arg1.objectDef.soundTypeName == "Gnome"){
SoundPlayer.Play("hurtenemy");
SoundPlayer.Play("goblinscreech");
} else {
if (_arg1.objectDef.soundTypeName == "Pixie"){
SoundPlayer.Play("hurtenemy");
SoundPlayer.Play("goblinscreech");
} else {
if (_arg1.objectDef.soundTypeName == "Jester"){
SoundPlayer.Play("hurtenemy");
SoundPlayer.Play("goblinscreech");
};
};
};
};
};
};
};
};
};
}
function UpdateGravity(){
yvel = (yvel + Game.gravity);
if (yvel > Game.maxFallSpeed){
yvel = Game.maxFallSpeed;
};
ypos = (ypos + yvel);
}
function GutsParticleRender(_arg1:Boolean=false){
var _local2:Number;
var _local3:Number;
var _local4:BitmapData;
var _local5:GutsPiece;
var _local6:Number;
var _local7:Number;
var _local8:Number;
_local2 = Math.floor(Game.scrollX);
_local3 = Math.floor(Game.scrollY);
_local4 = main.screenBD;
if (_arg1){
_local4 = Game.backgroundBD;
_local2 = 0;
_local3 = 0;
};
for each (_local5 in gutsList) {
_local6 = (Math.floor(_local5.xpos) - _local2);
_local7 = (Math.floor(_local5.ypos) - _local3);
_local8 = 0;
if (_arg1){
_local8 = _local5.zpos;
};
dir = _local5.dir;
frame = 0;
if (((!((dir == 0))) || (!((scale == 1))))){
GraphicObjects.RenderAtRotScaled(graphicID, frame, _local4, _local6, (_local7 + _local8), xflip, scale, dir);
} else {
GraphicObjects.RenderAt(graphicID, frame, _local4, _local6, (_local7 + _local8), xflip);
};
};
}
function UpdatePlayer():void{
if (hitTimer > 0){
hitTimer--;
};
UpdatePlayer1();
if (Game.IsBerzerkerMode()){
UpdatePlayer1();
};
}
public function Init(_arg1:int):void{
var _local2:int;
var _local3:Number;
_local2 = 0;
_local3 = 0;
type = _arg1;
controlMode = _local2;
xvel = _local3;
yvel = _local3;
frame = _local3;
frameVel = _local3;
timer = _local3;
hitTimer = _local3;
flashTimer = _local2;
flashFlag = false;
dir = 0;
todir = 0;
health = 1;
maxhealth = 1;
zvel = 0;
name = "";
scale = 1;
objectDef = null;
xflip = false;
updateFunction = null;
renderFunction = null;
shadowRenderFunction = null;
dieFunction = null;
visible = true;
ClearColFlags();
isBoss = false;
hasShadow = false;
isPlayer = false;
height = 0;
usesBulletTime = false;
collisionPoly = null;
hitEnemyFunction = null;
healthBarTimer = 0;
fireOffsetDir = 0;
dodgeBullets = false;
isDead = false;
bulletTestCollisionExtraFunction = null;
isPickup = false;
currentAnimName = "";
depth = 0;
currentEventID = 0;
genTypeIndex = -1;
alpha = 1;
}
public function UpdateEnemy_Tank(){
var _local1:GameObj;
movementVec.speed = speed;
toPosX = (Game.goPlayer.xpos + toOffsetX);
toPosY = (Game.goPlayer.ypos + toOffsetY);
RotateToRequiredRot(rotVel);
dir = movementVec.rot;
xpos = (xpos + movementVec.GetXComponent());
ypos = (ypos + movementVec.GetYComponent());
UpdateExternalVel();
_local1 = Game.goPlayer;
dir1 = Math.atan2((_local1.ypos - ypos), (_local1.xpos - xpos));
fireOffsetDir = (dir1 - (Math.PI * 0.5));
}
function Util_SetValFromXVel(_arg1:Number):Number{
var _local2:Number;
_local2 = 0;
if (xvel < 0){
_local2 = -(_arg1);
} else {
_local2 = _arg1;
};
return (_local2);
}
function InitPickupBerzerker():void{
InitPickupObject(2);
}
public function InitEnemy_FollowPlayer_AdjustRotvelByDist(){
EnemyUpdateFunctionCallback = FollowPlayer_AdjustRotvelByDist;
rotVel = Utils.RandBetweenFloat(objectDef.NumParamA, objectDef.NumParamB);
rotVelMax = Utils.RandBetweenFloat(objectDef.NumParamE, objectDef.NumParamF);
speed = Utils.RandBetweenFloat(objectDef.NumParamC, objectDef.NumParamD);
InitEnemyRot_TakeFromPortalDef();
InitBob();
}
function Die_EnemyProjectileBullet(){
colFlag_isEnemyBullet = false;
colFlag_isEnemyProjectile = false;
controlMode = 1;
timer = 50;
xvel = (xvel * -0.5);
yvel = -(Utils.RandBetweenFloat(2, 6));
rotVel = Utils.RandBetweenFloat(0.01, 0.04);
}
public function FollowPlayer_AdjustRotvelByDist(){
var _local1:GameObj;
var _local2:Number;
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
_local1 = Game.goPlayer;
movementVec.speed = speed;
toPosX = _local1.xpos;
toPosY = _local1.ypos;
_local2 = rotVel;
_local3 = rotVelMax;
_local4 = objectDef.NumParamG;
_local5 = objectDef.NumParamH;
_local6 = Utils.DistBetweenPoints(xpos, ypos, toPosX, toPosY);
_local6 = Utils.LimitNumber(_local4, _local5, _local6);
_local7 = Utils.ScaleTo(_local2, _local3, _local4, _local5, _local6);
RotateToRequiredRot(_local7);
dir = movementVec.rot;
xpos = (xpos + movementVec.GetXComponent());
ypos = (ypos + movementVec.GetYComponent());
UpdateExternalVel();
UpdateBob();
}
public function UpdateEnemy_SplineRoundPlayer(){
var _local1:Poly;
var _local2:Point;
timer = (timer + rotVel);
if (timer >= 1){
timer = 0;
};
_local1 = currentPoly;
if (_local1 == null){
return;
};
_local2 = _local1.GetPointOnCatmullRom(timer);
toPosX = (Game.goPlayer.xpos + _local2.x);
toPosY = (Game.goPlayer.ypos + _local2.y);
xpos = (xpos + ((toPosX - xpos) * 0.005));
ypos = (ypos + ((toPosY - ypos) * 0.005));
dir = Math.atan2((Game.goPlayer.ypos - ypos), (Game.goPlayer.xpos - xpos));
}
function InitPickupHealth():void{
InitPickupObject(0);
}
function UpdateGutsParticle(){
var _local1:Number;
yvel = (yvel + Game.gravity);
xpos = (xpos + xvel);
ypos = (ypos + yvel);
depth = (depth + zvel);
_local1 = Game.GetHeightMapHeight(int(xpos));
if (ypos > _local1){
};
if (ypos > 1000){
active = false;
};
dir = (dir + (xvel * 0.1));
scale = (1 + (depth * 0.005));
GutsParticleUpdateList();
}
function RenderShadowNormally(){
var _local1:Number;
var _local2:Number;
var _local3:Number;
var _local4:Number;
var _local5:int;
_local1 = Math.floor(Game.scrollX);
_local2 = Math.floor(Game.scrollY);
_local3 = (Math.floor(xpos) - _local1);
_local4 = (Math.floor(ypos) - _local2);
_local5 = GraphicObjects.idList[graphicID];
GraphicObjects.graphicobjs[_local5].frames[int(frame)].RenderAtShadow(Game.main.screenBD, _local3, (_local4 + 3), false);
}
function SetStartEdgePosFrom8Way(_arg1:int){
var _local2:Array;
var _local3:int;
var _local4:int;
var _local5:Number;
var _local6:Number;
_local2 = new Array();
if (_arg1 == 0){
_local2.push(0);
};
if (_arg1 == 1){
_local2.push(0);
_local2.push(1);
};
if (_arg1 == 2){
_local2.push(1);
};
if (_arg1 == 3){
_local2.push(1);
_local2.push(2);
};
if (_arg1 == 4){
_local2.push(2);
};
if (_arg1 == 5){
_local2.push(2);
_local2.push(3);
};
if (_arg1 == 6){
_local2.push(3);
};
if (_arg1 == 7){
_local2.push(3);
_local2.push(0);
};
_local3 = Utils.RandBetweenInt(0, (_local2.length - 1));
_local4 = _local2[_local3];
_local5 = Utils.RandBetweenFloat(0, 1000);
_local6 = 32;
if (_local4 == 0){
xpos = _local5;
ypos = -(_local6);
};
if (_local4 == 1){
xpos = -(_local6);
ypos = _local5;
};
if (_local4 == 2){
xpos = _local5;
ypos = (1000 + _local6);
};
if (_local4 == 3){
xpos = (1000 + _local6);
ypos = _local5;
};
}
function Update_EnemyProjectileBulletToPlayer(){
movementVec.speed = (movementVec.speed + 0.1);
if (movementVec.speed > 8){
movementVec.speed = 8;
};
xpos = (xpos + movementVec.GetXComponent());
ypos = (ypos + movementVec.GetYComponent());
timer--;
if (timer <= 0){
active = false;
};
CycleAnimationEx();
}
public function CycleAnimation():void{
var _local1:Number;
var _local2:int;
_local1 = frameVel;
_local2 = GraphicObjects.GetNumFrames(graphicID);
frame = (frame + _local1);
if (frame >= _local2){
frame = (frame - _local2);
};
if (frame < 0){
frame = (frame + _local2);
};
}
function Util_UpdateYvel(_arg1:Boolean=true):Boolean{
yvel = (yvel + Game.gravity);
yvel = Utils.LimitNumber(-100, Game.maxFallSpeed, yvel);
ypos = (ypos + yvel);
if (_arg1){
return (Util_FloorCollision());
};
return (false);
}
function RenderShadowPreRotated(){
var _local1:Number;
var _local2:Number;
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:int;
var _local8:int;
_local1 = Math.floor(Game.scrollX);
_local2 = Math.floor(Game.scrollY);
_local3 = (Math.floor(xpos) - _local1);
_local4 = (Math.floor(ypos) - _local2);
_local5 = GraphicObjects.GetNumFrames(graphicID);
_local6 = dir;
_local6 = (Math.PI - _local6);
if (isPlayer){
_local6 = (_local6 + (Math.PI * 0.5));
};
_local6 = (_local6 - (Math.PI / 2));
while (_local6 < 0) {
_local6 = (_local6 + (Math.PI * 2));
};
while (_local6 > (Math.PI * 2)) {
_local6 = (_local6 - (Math.PI * 2));
};
_local7 = ((_local5 / (Math.PI * 2)) * _local6);
_local8 = GraphicObjects.idList[graphicID];
GraphicObjects.graphicobjs[_local8].frames[_local7].RenderAtShadow(Game.main.screenBD, _local3, (_local4 + 3), false);
}
function UpdateEnemy_VampireBat(){
var _local1:Number;
var _local2:GameObj;
_local2 = Game.goPlayer;
if (controlMode == 0){
toPosX = (xoffset + _local2.xpos);
toPosY = (yoffset + _local2.ypos);
startx = (startx + ((toPosX - startx) * 0.2));
starty = (starty + ((toPosY - starty) * 0.2));
toPosX = startx;
toPosY = starty;
UpdateFollowVels(speed, acc);
_local1 = Utils.ScaleTo(5, 50, 0, 1, aggression);
if (objectDef.initVar0 == "2"){
if (Utils.RandBetweenInt(0, 1000) < _local1){
xoffset = Utils.RandBetweenFloat(-200, 200);
};
} else {
if (Utils.RandBetweenInt(0, 1000) < _local1){
controlMode = 1;
yvel = Util_GetRandWithModifier(11, 12, 12, 13, speedModifier);
xvel = Util_GetRandWithModifier(3, 4, 5, 6, speedModifier);
if (xpos > _local2.xpos){
xvel = (xvel * -1);
};
SetAnim("attack");
};
};
SetXflipFromFacePlayer();
if (objectDef.initVar0 != "1"){
_local1 = Utils.ScaleTo(2, 10, 0, 1, aggression);
if (Utils.RandBetweenInt(0, 1000) < _local1){
Util_GenerateObj("BatPoo");
};
};
CycleAnimationEx();
} else {
if (controlMode == 1){
yvel = (yvel + -0.3);
ypos = (ypos + yvel);
xpos = (xpos + xvel);
if ((((yvel < 0)) && ((ypos < (_local2.ypos - 200))))){
SetAnim("idle");
controlMode = 0;
if (xpos > _local2.xpos){
xoffset = Utils.RandBetweenFloat(100, 200);
} else {
xoffset = Utils.RandBetweenFloat(-100, -200);
};
yoffset = Utils.RandBetweenFloat(-200, -300);
};
SetXflipFromVel();
CycleAnimationEx();
} else {
if (controlMode == generic_controlMode_hit){
hit_xvel = (hit_xvel * 0.9);
xpos = (xpos + hit_xvel);
if (PlayAnimationEx()){
Util_RestoreState();
};
};
};
};
}
function Die_PlayerSlingBullet(){
var _local1:Number;
controlMode = 1;
_local1 = -(Utils.RandBetweenFloat(0.1, 0.5));
xvel = (xvel * _local1);
yvel = Utils.RandBetweenFloat(-2, -6);
rotVel = (rotVel * _local1);
colFlag_isPlayerBullet = false;
}
function SetAnim(_arg1):void{
var _local2:AnimDef;
if (_arg1 == currentAnimName){
return;
};
currentAnimName = _arg1;
_local2 = objectDef.GetAnimFromName(_arg1);
currentAnimDef = _local2;
minFrame = _local2.f0;
maxFrame = _local2.f1;
frameVel = _local2.vel;
frame = minFrame;
graphicID = _local2.graphicID;
currentEventID = 0;
}
function Update_EnemySwordBullet(){
timer--;
if (timer <= 0){
active = false;
};
}
public function UpdateEnemy_FollowPlayer_FlyLike(){
var _local1:Number;
timer--;
if (timer <= 0){
UpdateEnemy_FollowPlayer_FlyLike_GetNewToPos();
};
_local1 = 0.1;
xpos = (xpos + ((toPosX - xpos) * _local1));
ypos = (ypos + ((toPosY - ypos) * _local1));
height = (height + ((toHeight - height) * 0.1));
dir = movementVec.rot;
UpdateExternalVel();
}
function UpdateTailPieces():void{
var _local1:Number;
var _local2:Number;
var _local3:int;
var _local4:TailPiece;
var _local5:int;
var _local6:Number;
var _local7:Number;
_local1 = xpos;
_local2 = ypos;
_local3 = tailPieces.length;
_local5 = 0;
while (_local5 < _local3) {
_local4 = tailPieces[_local5];
_local6 = Math.atan2((_local2 - _local4.ypos), (_local1 - _local4.xpos));
_local7 = 20;
_local4.xpos = (_local1 - (Math.cos(_local6) * _local7));
_local4.ypos = (_local2 - (Math.sin(_local6) * _local7));
_local6 = Math.atan2((_local2 - _local4.ypos), (_local1 - _local4.xpos));
_local4.dir = _local6;
_local1 = _local4.xpos;
_local2 = _local4.ypos;
_local5++;
};
}
function UpdateFollowVels(_arg1:Number, _arg2:Number){
var _local3:Number;
var _local4:Number;
var _local5:Number;
_local3 = _arg1;
_local4 = -(_arg2);
if (xpos < toPosX){
_local4 = _arg2;
};
xvel = (xvel + _local4);
if (xvel >= _local3){
xvel = _local3;
};
if (xvel <= -(_local3)){
xvel = -(_local3);
};
_local5 = -(_arg2);
if (ypos < toPosY){
_local5 = _arg2;
};
yvel = (yvel + _local5);
if (yvel >= _local3){
yvel = _local3;
};
if (yvel <= -(_local3)){
yvel = -(_local3);
};
xpos = (xpos + xvel);
ypos = (ypos + yvel);
}
function Update_EnemyBabyDragonBullet(){
var _local1:Number;
var _local2:GameObj;
xpos = (xpos + xvel);
ypos = (ypos + yvel);
timer--;
if (timer <= 0){
active = false;
};
_local1 = Game.GetHeightMapHeight(xpos);
if (ypos > _local1){
ypos = _local1;
_local2 = GameObjects.AddObj(xpos, ypos, (zpos - 10));
_local2.InitFromObjectDef("BabyDragonFireballExplosion", this);
active = false;
};
PlayAnimationEx();
}
function MeleeHit(_arg1:GameObj){
colFlag_canReceiveMelee = false;
health--;
if (health <= 0){
SetManMovementState("die");
} else {
SetManMovementState("recoil");
};
}
function UpdateMiniBloodParticle(){
var _local1:Number;
yvel = (yvel + Game.gravity);
xpos = (xpos + xvel);
ypos = (ypos + yvel);
depth = (depth + zvel);
_local1 = Game.GetHeightMapHeight(int(xpos));
if (ypos > _local1){
Game.IncreaseMapHeight(xpos);
ypos = _local1;
RenderToBackground();
active = false;
};
if (ypos > 1000){
active = false;
};
scale = (1 + (depth * 0.005));
}
function Update_PlayerSlingBullet(){
if (controlMode == 0){
xpos = (xpos + xvel);
if (Util_UpdateYvel()){
xvel = 0;
active = false;
};
dir = (dir + rotVel);
} else {
if (controlMode == 1){
xpos = (xpos + xvel);
if (Util_UpdateYvel()){
xvel = 0;
active = false;
};
dir = (dir + rotVel);
};
};
}
public function Render():void{
if (visible == false){
return;
};
if (renderFunction != null){
renderFunction();
} else {
RenderNormally();
};
}
public function RenderEnemy_Tank(){
var _local1:Number;
RenderEnemy();
_local1 = dir1;
dir1 = (Math.PI - dir1);
RenderPreRotated1();
dir1 = _local1;
}
public function UpdateInstallation(){
if (healthBarTimer > 0){
healthBarTimer--;
};
}
function Event_EnemyTrollGenerateBullet(){
var _local1:GameObj;
_local1 = GameObjects.AddObj(xpos, ypos, (zpos - 10));
_local1.InitFromObjectDef("TrollBullet", this);
}
function Update_PlayerSwordBullet(){
timer--;
if (timer <= 0){
active = false;
};
}
function RenderPickupObject():void{
if ((((((controlMode == 1)) || ((controlMode == 2)))) && ((timer < 50)))){
if ((timer & 2)){
RenderNormally();
};
} else {
RenderNormally();
};
}
public function InitPortal(_arg1:int){
subtype = _arg1;
usesBulletTime = false;
height = 0;
hasShadow = false;
shotControllers = new Array();
updateFunction = UpdatePortal;
renderFunction = RenderNormally;
if (subtype == 0){
objectDef = ObjectDefs.GetObjectDefByExportName("Portal");
colFlag_isEnemy = true;
colFlag_isInstallation = true;
health = objectDef.maxHealth;
};
if (subtype == 1){
objectDef = ObjectDefs.GetObjectDefByExportName("Portal1");
visible = false;
hasShadow = false;
};
graphicID = objectDef.GetAnimIDFromName("idle");
timer = Game.portalDef.GetRandomTime();
controlMode = 0;
frame = 0;
frameVel = 1;
}
function Die_EnemyBabyDragonBullet(){
var _local1:GameObj;
_local1 = GameObjects.AddObj(xpos, ypos, (zpos - 10));
_local1.InitFromObjectDef("BabyDragonFireballExplosion", this);
active = false;
}
public function InitEnemy_TurnAndMoveToPoint(){
var _local1:Point;
EnemyUpdateFunctionCallback = UpdateEnemy_TurnAndMoveToPoint;
rotVel = Utils.RandBetweenFloat(objectDef.NumParamA, objectDef.NumParamB);
accel = 0.1;
maxSpeed = Utils.RandBetweenFloat(objectDef.NumParamC, objectDef.NumParamD);
minSpeed = 1;
controlMode = 0;
UpdateEnemy_TurnAndMoveToPoint_GetPosNearPlayer();
if (enemyGenMode == 0){
UpdateEnemy_TurnAndMoveToPoint_GetPosNearPlayer();
SetToRequiredRot();
} else {
movementVec.rot = Utils.RandCircle();
_local1 = Utils.RandPointInCircle(200);
toPosX = (xpos + _local1.x);
toPosY = (ypos + _local1.y);
};
controlMode = 1;
speed = 0;
InitBob();
}
function TimerIncrement(_arg1:Number):Boolean{
timer++;
if (timer > _arg1){
return (true);
};
return (false);
}
function UpdateEnemy_FollowPlayer_FlyLike_GetNewToPos(){
var _local1:Number;
var _local2:Number;
var _local3:Number;
_local1 = Math.atan2((Game.goPlayer.ypos - ypos), (Game.goPlayer.xpos - xpos));
_local2 = Utils.RandBetweenFloat(objectDef.NumParamA, objectDef.NumParamB);
if (Utils.RandBool()){
_local2 = -(_local2);
};
_local1 = (_local1 + _local2);
_local3 = Utils.RandBetweenFloat(objectDef.NumParamC, objectDef.NumParamD);
movementVec.Set(_local1, _local3);
toPosX = (xpos + movementVec.GetXComponent());
toPosY = (ypos + movementVec.GetYComponent());
timer = (Utils.RandBetweenFloat(objectDef.NumParamE, objectDef.NumParamF) * Defs.fps2);
toHeight = Utils.RandBetweenFloat(20, 170);
}
public function PlayerHitEnemy(_arg1:GameObj){
}
public function UpdateEnemy_FollowPlayerVels(){
var _local1:Number;
var _local2:Number;
var _local3:Number;
_local1 = speed;
_local2 = -(acc);
if (xpos < Game.goPlayer.xpos){
_local2 = acc;
};
xvel = (xvel + _local2);
if (xvel >= _local1){
xvel = _local1;
};
if (xvel <= -(_local1)){
xvel = -(_local1);
};
_local3 = -(acc);
if (ypos < Game.goPlayer.ypos){
_local3 = acc;
};
yvel = (yvel + _local3);
if (yvel >= _local1){
yvel = _local1;
};
if (yvel <= -(_local1)){
yvel = -(_local1);
};
xpos = (xpos + xvel);
ypos = (ypos + yvel);
dir = (dir + 0.1);
dir = Utils.NormalizeRot(dir);
heightVar0 = (heightVar0 + heightVar1);
height = (Game.normalHeight + (Math.sin(heightVar0) * 30));
}
public function PickupPickedUp(){
var _local1:*;
Game.AddScore(100);
if (type == 0){
Game.goPlayer.health = (Game.goPlayer.health + Game.pickupHealth);
if (Game.goPlayer.health > 100){
Game.goPlayer.health = 100;
};
SoundPlayer.PlayRandomBetween("belch0", "belch2");
};
if (type == 1){
Game.AddCash(Game.pickupGold);
SoundPlayer.Play("pickupmoney");
};
if (type == 2){
Game.AddBerzerker(Game.pickupBerzerker);
SoundPlayer.Play("drink0");
};
controlMode = 3;
colFlag_canBePickedUp = false;
}
public function GetVelFromDir(_arg1:Number){
xvel = (Math.cos(dir) * _arg1);
yvel = (Math.sin(dir) * _arg1);
}
function UpdateEnemyBullet():void{
xpos = (xpos + xvel);
ypos = (ypos + yvel);
if (IsInWorld(32) == false){
active = false;
};
CycleAnimation();
timer++;
if (timer > 3){
timer = 0;
};
}
function Init_EnemyProjectileBullet(){
var _local1:GameObj;
colFlag_isEnemyBullet = true;
colFlag_isEnemyProjectile = true;
visible = true;
updateFunction = Update_EnemyProjectileBullet;
timer = 100;
SetAnim("idle");
_local1 = Game.lastObjectGenerator;
xpos = (_local1.xpos + objectDef.offsetX);
xvel = 10;
if (_local1.xflip){
xpos = (_local1.xpos - objectDef.offsetX);
xvel = -(xvel);
xflip = true;
};
ypos = (_local1.ypos + objectDef.offsetY);
dieFunction = Die_EnemyProjectileBullet;
controlMode = 0;
}
function RenderTailPieces():void{
var _local1:Number;
var _local2:Number;
var _local3:int;
var _local4:TailPiece;
var _local5:int;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:int;
_local1 = Math.floor(Game.scrollX);
_local2 = Math.floor(Game.scrollY);
_local3 = tailPieces.length;
_local5 = 0;
while (_local5 < _local3) {
_local4 = tailPieces[_local5];
_local6 = (Math.floor(_local4.xpos) - _local1);
_local7 = (Math.floor(_local4.ypos) - _local2);
_local8 = GraphicObjects.GetNumFrames(_local4.graphicID);
_local9 = _local4.dir;
_local9 = (_local9 + (Math.PI / 2));
_local9 = (Math.PI - _local9);
while (_local9 < 0) {
_local9 = (_local9 + (Math.PI * 2));
};
while (_local9 > (Math.PI * 2)) {
_local9 = (_local9 - (Math.PI * 2));
};
_local10 = ((_local8 / (Math.PI * 2)) * _local9);
GraphicObjects.RenderAt(_local4.graphicID, _local10, main.screenBD, _local6, (_local7 - (height * 0.1)), false);
_local5++;
};
}
public function UpdatePortal_Type1(){
}
public function RenderEnemy_Snake(){
var _local1:Number;
_local1 = dir;
dir = (Math.PI - dir);
RenderPreRotated();
dir = _local1;
RenderTailPieces();
}
function Update_PlayerBowBullet(){
if (controlMode == 0){
xpos = (xpos + xvel);
if (Util_UpdateYvel()){
xvel = 0;
active = false;
};
dir = Math.atan2((ypos - oldypos), (xpos - oldxpos));
CycleAnimationEx();
} else {
if (controlMode == 1){
frame = 0;
xpos = (xpos + xvel);
if (Util_UpdateYvel()){
xvel = 0;
active = false;
};
dir = (dir + rotVel);
};
};
}
public function UpdatePortal_Type0(){
}
function Update_PlayerCrossbowBullet(){
if (controlMode == 0){
xpos = (xpos + xvel);
if (IsInWorld(50) == false){
active = false;
};
dir = Math.atan2((ypos - oldypos), (xpos - oldxpos));
CycleAnimationEx();
} else {
if (controlMode == 1){
xpos = (xpos + xvel);
if (Util_UpdateYvel()){
xvel = 0;
active = false;
};
dir = (dir + rotVel);
};
};
}
function InitPickupObject(_arg1:int):void{
colFlag_canBePickedUp = false;
updateFunction = UpdatePickupObject;
renderFunction = RenderPickupObject;
type = _arg1;
if (_arg1 == 0){
graphicID = GraphicObjects.gfx_pickup_health;
};
if (_arg1 == 1){
graphicID = GraphicObjects.gfx_pickup_gold;
};
if (_arg1 == 2){
graphicID = GraphicObjects.gfx_pickup_berzerker;
};
frame = 0;
xvel = Utils.RandBetweenFloat(-7, 7);
yvel = Utils.RandBetweenFloat(-10, -15);
controlMode = 0;
SetAnim("idle");
}
public function InitOnScreenBlood(){
var _local1:GameObj;
_local1 = Game.goPlayer;
updateFunction = UpdateOnScreenBlood;
renderFunction = RenderOnScreenBlood;
type = Utils.RandBetweenInt(0, 3);
graphicID = (GraphicObjects.gfx_onscreenblood1 + type);
frame = 0;
frameVel = 1;
alpha = 1;
xpos = (xpos - Game.scrollX);
ypos = (ypos - Game.scrollY);
ypos = (ypos - 50);
xpos = (xpos + Utils.RandBetweenFloat(-50, 50));
ypos = (ypos + Utils.RandBetweenFloat(-50, 50));
if ((((type == 1)) || ((type == 3)))){
} else {
dir = Utils.RandCircle();
};
yvel = 0;
zpos = 100;
depth = 0;
}
function Init_PlayerSlingBullet(){
var _local1:GameObj;
_local1 = Game.lastObjectGenerator;
weapon = PlayerWeapons.weaponList[Game.currentWeapon];
SoundPlayer.Play("slingfire");
colFlag_isPlayerBullet = true;
visible = true;
updateFunction = Update_PlayerSlingBullet;
graphicID = GraphicObjects.gfx_slingstone;
frame = (weapon.currentLevel * 4);
frame = (frame + Utils.RandBetweenInt(0, 3));
xpos = (_local1.xpos + objectDef.offsetX);
xvel = 10;
yvel = Utils.RandBetweenFloat(-3, -5);
if (_local1.xflip){
xpos = (_local1.xpos - objectDef.offsetX);
xvel = -(xvel);
};
ypos = (_local1.ypos + objectDef.offsetY);
dir = Utils.RandBetweenFloat(0, 10);
rotVel = Utils.RandBetweenFloat(-0.3, 0.3);
dieFunction = Die_PlayerSlingBullet;
controlMode = 0;
}
function Event_EnemyBabyDragonGenerateBullet(){
var _local1:GameObj;
_local1 = GameObjects.AddObj(xpos, ypos, (zpos - 10));
_local1.InitFromObjectDef("BabyDragonBullet", this);
}
function Init_Generic_PlayOnce_Stationary(){
SetAnim("idle");
updateFunction = Update_Generic_PlayOnce_Stationary;
}
function SetManMovementState(_arg1):void{
var _local2:int;
movementState = _arg1;
controlMode = 0;
if (movementState == "idle"){
SetAnim("idle");
} else {
if (movementState == "walk"){
SetAnim("walk");
} else {
if (movementState == "jump"){
SetAnim("jump");
} else {
if (movementState == "jumpattack"){
SetAnim("jumpattack");
if (Game.currentWeapon == 1){
SetAnim("jumpaxeattack");
};
if (Game.currentWeapon == 2){
SetAnim("jumpflailattack");
};
if (Game.currentWeapon == 3){
SetAnim("jumpslingattack");
};
if (Game.currentWeapon == 4){
SetAnim("jumpbowattack");
};
if (Game.currentWeapon == 5){
SetAnim("jumpcrossbowattack");
};
} else {
if (movementState == "attack"){
_local2 = Utils.RandBetweenInt(0, 2);
attackMode = _local2;
if (_local2 == 0){
SetAnim("attack");
if (Game.currentWeapon == 1){
SetAnim("axeattack");
};
if (Game.currentWeapon == 2){
SetAnim("flailattack");
};
if (Game.currentWeapon == 3){
SetAnim("slingattack");
};
if (Game.currentWeapon == 4){
SetAnim("bowattack");
};
if (Game.currentWeapon == 5){
SetAnim("crossbowattack");
};
} else {
if (_local2 == 1){
SetAnim("attack2");
if (Game.currentWeapon == 1){
SetAnim("axeattack2");
};
if (Game.currentWeapon == 2){
SetAnim("flailattack2");
};
if (Game.currentWeapon == 3){
SetAnim("slingattack");
};
if (Game.currentWeapon == 4){
SetAnim("bowattack");
};
if (Game.currentWeapon == 5){
SetAnim("crossbowattack");
};
} else {
if (_local2 == 2){
SetAnim("attack");
if (Game.currentWeapon == 1){
SetAnim("axeattack3");
};
if (Game.currentWeapon == 2){
SetAnim("flailattack3");
};
if (Game.currentWeapon == 3){
SetAnim("slingattack");
};
if (Game.currentWeapon == 4){
SetAnim("bowattack");
};
if (Game.currentWeapon == 5){
SetAnim("crossbowattack");
};
};
};
};
} else {
if (movementState == "duck"){
SetAnim("standtoduck");
} else {
if (movementState == "hit"){
SetAnim("hit");
} else {
if (movementState == "die"){
isDead = true;
SetAnim("die");
} else {
trace(("UNKNOWN MOVEMENT STATE: " + _arg1));
};
};
};
};
};
};
};
};
}
function GutsParticleSetRotation(){
var _local1:int;
var _local2:GutsPiece;
var _local3:GutsPiece;
var _local4:Number;
var _local5:Number;
_local1 = 0;
while (_local1 < (gutsList.length - 1)) {
_local2 = gutsList[_local1];
_local3 = gutsList[(_local1 + 1)];
_local4 = (_local3.xpos - _local2.xpos);
_local5 = (_local3.ypos - _local2.ypos);
_local2.dir = Math.atan2(_local5, _local4);
_local2.dir = (_local2.dir + (Math.PI * 0.5));
_local1++;
};
_local3.dir = _local2.dir;
}
function Init_PlayerSwordBullet(){
var _local1:GameObj;
SoundPlayer.Play("swordswish0");
_local1 = Game.lastObjectGenerator;
weapon = PlayerWeapons.weaponList[Game.currentWeapon];
colFlag_isPlayerBullet = true;
visible = false;
updateFunction = Update_PlayerSwordBullet;
timer = 5;
xflip = _local1.xflip;
xpos = (_local1.xpos + objectDef.offsetX);
if (_local1.xflip){
xpos = (_local1.xpos - objectDef.offsetX);
};
ypos = (_local1.ypos + objectDef.offsetY);
}
public function EnemyHitByPlayer(_arg1:GameObj){
}
function InitPickupGold():void{
InitPickupObject(1);
}
public function GetOffsetObjectRectangle():Rectangle{
var _local1:Rectangle;
_local1 = objectDef.colRects[0].clone();
_local1.x = (_local1.x + xpos);
_local1.y = (_local1.y + ypos);
return (_local1);
}
function RenderBullet(){
var _local1:Number;
_local1 = dir;
dir = (Math.PI - dir);
dir = (dir - (Math.PI * 0.5));
RenderPreRotated();
dir = _local1;
}
public function InitEnemy_Snake(){
var _local1:int;
bulletTestCollisionExtraFunction = BulletCollision_SnakeTail;
EnemyUpdateFunctionCallback = UpdateEnemy_Snake;
rotVel = Utils.RandBetweenFloat(objectDef.NumParamA, objectDef.NumParamB);
speed = Utils.RandBetweenFloat(objectDef.NumParamC, objectDef.NumParamD);
toPosX = Game.goPlayer.xpos;
toPosY = Game.goPlayer.ypos;
SetToRequiredRot();
_local1 = Utils.RandBetweenInt(objectDef.NumParamE, objectDef.NumParamF);
InitTailPieces(_local1, objectDef.GetAnimIDFromName("tail"));
renderFunction = RenderEnemy_Snake;
shadowRenderFunction = RenderEnemy_SnakeShadow;
oscillator = 0;
}
public function EnemyHitByBulletShielded(_arg1:GameObj){
var _local2:int;
var _local3:Particle;
_arg1.active = false;
_local2 = 0;
while (_local2 < 3) {
_local2++;
};
}
function UpdateShipAppearTube(){
}
function Util_FloorCollision():Boolean{
var _local1:Number;
_local1 = Game.GetHeightMapHeight(xpos);
if (ypos > _local1){
ypos = _local1;
return (true);
};
return (false);
}
function InitShipAppearTube(){
}
public function InitBob(){
bobTimer = 0;
bobAdder = Utils.RandBetweenFloat(0.02, 0.05);
bobDistance = Utils.RandBetweenFloat(20, 40);
bobInitialHeight = height;
}
public function InitEnemy_Helicopter(){
InitEnemy_SplineRoundPlayer();
renderFunction = RenderEnemy_Helicopter;
EnemyUpdateFunctionCallback = UpdateEnemy_Helicopter;
dir1 = 0;
frame1 = 0;
graphicID1 = objectDef.GetAnimIDFromName("turret");
timer = Utils.RandCircle();
timer1 = Utils.RandCircle();
xvel = Utils.RandBetweenFloat(0.0005, 0.002);
yvel = Utils.RandBetweenFloat(0.0005, 0.002);
}
function RenderWallCollision():void{
var _local1:int;
var _local2:Number;
var _local3:Number;
var _local4:Number;
if ((Debug.debugMode & 8) == 0){
return;
};
if (objectDef == null){
return;
};
if (objectDef.collisionCircleOffsets.length == 0){
return;
};
_local1 = 0;
while (_local1 < objectDef.collisionCircleOffsets.length) {
_local2 = objectDef.collisionCircleOffsets[_local1].x;
_local3 = objectDef.collisionCircleOffsets[_local1].y;
_local4 = objectDef.collisionCircleRadii[_local1];
_local2 = (_local2 + xpos);
_local2 = (_local2 - Game.scrollX);
_local3 = (_local3 + ypos);
_local3 = (_local3 - Game.scrollY);
Utils.RenderCircle(main.screenBD, _local2, _local3, _local4, 4294967295);
_local1++;
};
}
public function InitEnemy_Portal(){
EnemyUpdateFunctionCallback = UpdatePortal_Type0;
renderFunction = RenderNormally;
controlMode = 0;
colFlag_isInstallation = true;
trace("InitEnemy_PORTAL");
graphicID = objectDef.GetAnimIDFromName("idle");
timer = Game.portalDef.GetRandomTime();
controlMode = 0;
frame = 0;
frameVel = 1;
height = 0;
}
public function PlayerHitEnemyBullet(_arg1:GameObj){
var _local2:Boolean;
var _local3:Number;
var _local4:GameObj;
_local2 = true;
if (hitTimer > 0){
_local2 = false;
};
if (isDead){
_local2 = false;
};
if (Game.IsBerzerkerMode()){
_local2 = false;
};
if (_local2){
SoundPlayer.PlayRandomBetween("playerhit0", "playerhit3");
if (movementState == "duck"){
hitTimer = (hitTimerMax = 50);
_local3 = (Game.playerHealthDecDuck * _arg1.objectDef.damage);
trace(("Damage: " + _local3));
health = (health - _local3);
} else {
hitTimer = (hitTimerMax = 100);
_local3 = (Game.playerHealthDec * _arg1.objectDef.damage);
trace(("Damage: " + _local3));
health = (health - _local3);
};
if (health <= 0){
health = 0;
SetManMovementState("die");
_local4 = GameObjects.AddObj(xpos, (ypos - 100), (zpos - 10));
_local4.InitPlayer_DeadHead();
Game.InitLevelState(Game.levelState_Dead);
} else {
if (movementState != "duck"){
SetManMovementState("hit");
};
};
};
if (_arg1.colFlag_isEnemy){
if (_arg1.dieFunction != null){
_arg1.dieFunction();
};
} else {
_arg1.health--;
if (_arg1.health <= 0){
if (_arg1.dieFunction != null){
_arg1.dieFunction();
} else {
_arg1.active = false;
};
};
};
}
function ClearColFlags(){
colFlag_jumpon = false;
colFlag_killPlayer = false;
colFlag_playercanbekilled = false;
colFlag_canBePickedUp = false;
colFlag_canBeShot = false;
colFlag_isPlayerBullet = false;
colFlag_isPlatform = false;
colFlag_isPowerup = false;
colFlag_isBouncyPad = false;
colFlag_isCheckpoint = false;
colFlag_isShop = false;
colFlag_isEnemyBullet = false;
colFlag_isEnemyProjectile = false;
colFlag_isEnemy = false;
colFlag_isInstallation = false;
colFlag_UseRadius = false;
colFlag_canGiveMelee = false;
colFlag_canReceiveMelee = false;
colFlag_invincible = false;
colFlag_shielded = false;
colFlag_vulnerable = false;
}
function RenderShadow(){
if (shadowRenderFunction != null){
shadowRenderFunction();
return;
};
RenderShadowPreRotated();
}
function InitBackground(_arg1:int):void{
graphicID = (GraphicObjects.gfx_backgroundscroll1 + _arg1);
updateFunction = UpdateBackground;
renderFunction = null;
visible = false;
}
function Update_Generic_PlayOnce_Stationary(){
if (PlayAnimationEx()){
active = false;
};
}
function Util_GetRandWithModifier(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number):Number{
var _local6:Number;
var _local7:Number;
var _local8:Number;
_local6 = Utils.RandBetweenFloat(_arg1, _arg2);
_local7 = Utils.RandBetweenFloat(_arg3, _arg4);
_local8 = Utils.ScaleTo(_local6, _local7, 0, 1, _arg5);
return (_local8);
}
function Util_GenerateObj(_arg1:String){
var _local2:GameObj;
_local2 = GameObjects.AddObj(xpos, ypos, (zpos - 10));
_local2.InitFromObjectDef(_arg1, this);
}
function RotateToRequiredRot(_arg1:Number):Boolean{
var _local2:Number;
var _local3:Number;
var _local4:Number;
_local2 = Math.atan2((toPosY - ypos), (toPosX - xpos));
_local3 = (_local2 + (Math.PI / 2));
_local4 = Utils.DotProduct(Math.cos(movementVec.rot), Math.sin(movementVec.rot), Math.cos(_local3), Math.sin(_local3));
if (movementVec.NearRot(_local2, _arg1)){
movementVec.rot = _local2;
return (true);
};
if (_local4 < 0){
movementVec.AddRot(_arg1);
} else {
movementVec.AddRot(-(_arg1));
};
return (false);
}
function GutsParticleMoveTogether(){
var _local1:int;
var _local2:Array;
var _local3:Array;
var _local4:GutsPiece;
var _local5:GutsPiece;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:Number;
var _local18:Point3;
_local2 = new Array();
_local3 = new Array();
_local1 = 0;
while (_local1 < gutsList.length) {
_local2.push(new Point3(0, 0, 0));
_local3.push(new Point3(0, 0, 0));
_local1++;
};
_local15 = 0;
_local16 = 0;
_local17 = 5;
_local1 = 0;
while (_local1 < (gutsList.length - 1)) {
_local4 = gutsList[_local1];
_local5 = gutsList[(_local1 + 1)];
_local10 = ((_local4.xpos + _local5.xpos) * 0.5);
_local11 = ((_local4.ypos + _local5.ypos) * 0.5);
_local16 = ((_local4.zpos + _local5.zpos) * 0.5);
_local7 = (_local4.xpos - _local10);
_local6 = (_local4.ypos - _local11);
_local15 = (_local4.zpos - _local16);
_local18 = new Point3(_local7, _local6, _local15);
_local18.Normalize();
_local12 = (_local10 + (_local18.x * _local17));
_local13 = (_local11 + (_local18.y * _local17));
_local14 = (_local16 + (_local18.z * _local17));
_local2[_local1].x = (_local12 - _local4.xpos);
_local2[_local1].y = (_local13 - _local4.ypos);
_local2[_local1].z = (_local14 - _local4.zpos);
_local7 = (_local5.xpos - _local10);
_local6 = (_local5.ypos - _local11);
_local15 = (_local5.zpos - _local16);
_local18 = new Point3(_local7, _local6, _local15);
_local18.Normalize();
_local12 = (_local10 + (_local18.x * _local17));
_local13 = (_local11 + (_local18.y * _local17));
_local14 = (_local16 + (_local18.z * _local17));
_local3[(_local1 + 1)].x = (_local12 - _local5.xpos);
_local3[(_local1 + 1)].y = (_local13 - _local5.ypos);
_local3[(_local1 + 1)].z = (_local14 - _local5.zpos);
_local1++;
};
_local1 = 0;
while (_local1 < gutsList.length) {
_local4 = gutsList[_local1];
gutsList[_local1].xpos = (_local4.xpos + _local2[_local1].x);
_local4.ypos = (_local4.ypos + _local2[_local1].y);
_local4.zpos = (_local4.zpos + _local2[_local1].z);
_local4.xpos = (_local4.xpos + _local3[_local1].x);
_local4.ypos = (_local4.ypos + _local3[_local1].y);
_local4.zpos = (_local4.zpos + _local3[_local1].z);
_local1++;
};
}
function GenerateHitParticles(){
var _local1:Number;
var _local2:Number;
var _local3:ObjectDeath;
var _local4:int;
var _local5:GameObj;
var _local6:int;
_local1 = xpos;
_local2 = (ypos - 40);
_local3 = objectDef.objectDeath;
if (_local3 == null){
return;
};
_local6 = Utils.RandBetweenInt(_local3.numBloodMin, _local3.numBloodMax);
_local4 = 0;
while (_local4 < _local6) {
_local5 = GameObjects.AddObj(_local1, _local2, 1000);
_local5.InitBloodParticle();
_local4++;
};
_local5 = GameObjects.AddObj(_local1, _local2, 900);
_local5.InitStaticBlood(Utils.RandBetweenInt(0, 1), xflip);
}
public function PlayAnimation():Boolean{
var _local1:int;
_local1 = (GraphicObjects.GetNumFrames(graphicID) - 1);
frame = (frame + frameVel);
if (frame > _local1){
frame = _local1;
return (true);
};
return (false);
}
public function GetDirBetween(_arg1, _arg2, _arg3, _arg4):Number{
var _local5:*;
_local5 = Math.atan2((_arg4 - _arg2), (_arg3 - _arg1));
return (_local5);
}
public function UpdateEnemy_RandomlyFlyRoundMap(){
timer--;
if (timer <= 0){
timer = Utils.RandBetweenInt(50, 100);
toPosX = Utils.RandBetweenFloat(0, 1000);
toPosY = Utils.RandBetweenFloat(0, 1000);
toSpeed = Utils.RandBetweenFloat(objectDef.NumParamC, objectDef.NumParamD);
};
speed = (speed + ((toSpeed - speed) * 0.005));
movementVec.speed = speed;
RotateToRequiredRot(rotVel);
dir = movementVec.rot;
xpos = (xpos + movementVec.GetXComponent());
ypos = (ypos + movementVec.GetYComponent());
UpdateExternalVel();
if (Utils.Dist2BetweenPoints(xpos, ypos, toPosX, toPosY) <= (30 * 30)){
timer = 0;
};
UpdateBob();
}
public function UpdateEnemy_TurnAndMoveToPoint(){
var _local1:Number;
if (controlMode == 0){
if (RotateToRequiredRot(rotVel)){
controlMode = 1;
speed = 0;
};
} else {
if (controlMode == 1){
_local1 = Utils.Dist2BetweenPoints(xpos, ypos, toPosX, toPosY);
if (_local1 < (60 * 60)){
speed = (speed - accel);
if (speed < minSpeed){
speed = minSpeed;
};
} else {
speed = (speed + accel);
if (speed > maxSpeed){
speed = maxSpeed;
};
};
movementVec.speed = speed;
RotateToRequiredRot(rotVel);
xpos = (xpos + movementVec.GetXComponent());
ypos = (ypos + movementVec.GetYComponent());
if (_local1 < (20 * 20)){
UpdateEnemy_TurnAndMoveToPoint_GetPosNearPlayer();
controlMode = 0;
};
};
};
dir = movementVec.rot;
UpdateExternalVel();
UpdateBob();
}
function Init_EnemyBabyDragonBullet(){
var _local1:GameObj;
SoundPlayer.Play("dragonfireball");
colFlag_isEnemyBullet = true;
colFlag_isEnemyProjectile = true;
visible = true;
updateFunction = Update_EnemyBabyDragonBullet;
timer = 100;
SetAnim("idle");
_local1 = Game.lastObjectGenerator;
xpos = (_local1.xpos + objectDef.offsetX);
xvel = 5;
yvel = 5;
if (_local1.xflip){
xpos = (_local1.xpos - objectDef.offsetX);
xvel = -(xvel);
};
ypos = (_local1.ypos + objectDef.offsetY);
dir = 1.2;
dir = (Math.atan2(yvel, xvel) - (Math.PI / 2));
dieFunction = Die_EnemyBabyDragonBullet;
}
function MakeCollisionPoly(){
}
public function CycleAnimationEx():Boolean{
var _local1:Boolean;
_local1 = false;
frame = (frame + frameVel);
if (frame > maxFrame){
frame = minFrame;
currentEventID = 0;
_local1 = true;
};
if (frame < minFrame){
frame = maxFrame;
currentEventID = 0;
_local1 = true;
};
return (_local1);
}
public function UpdatePortal(){
if (subtype == 0){
UpdatePortal_Type0();
};
if (subtype == 1){
UpdatePortal_Type1();
};
if (healthBarTimer > 0){
healthBarTimer--;
};
}
public function InitEnemy_FollowPlayer(){
EnemyUpdateFunctionCallback = UpdateEnemy_RotateToPlayer;
rotVel = Utils.RandBetweenFloat(objectDef.NumParamA, objectDef.NumParamB);
speed = Utils.RandBetweenFloat(objectDef.NumParamC, objectDef.NumParamD);
InitEnemyRot_TakeFromPortalDef();
InitBob();
}
function UpdateEnemy_Pixie(){
var _local1:Number;
var _local2:GameObj;
_local2 = Game.goPlayer;
if (controlMode == 0){
xacc = Util_SetValFromSideOfPos(_local2.xpos, 1);
if (Util_XDistToPlayer() < 80){
SetAnim("attack");
controlMode = 1;
};
Util_UpdateXvel();
CycleAnimationEx();
_local1 = Utils.ScaleTo(50, 0, 0, 1, aggression);
if (Utils.RandBetweenInt(0, 1000) < _local1){
toPosX = (_local2.xpos - Util_SetValFromSideOfPos(_local2.xpos, Utils.RandBetweenFloat(150, 300)));
controlMode = 3;
};
} else {
if (controlMode == 1){
SetXflipFromFacePlayer();
if (PlayAnimationEx()){
if (Utils.RandBetweenInt(0, 1000) < 500){
SetAnim("walk");
controlMode = 3;
toPosX = Utils.RandBetweenFloat(150, 200);
if (Utils.RandBool()){
toPosX = (toPosX * -1);
};
toPosX = (toPosX + _local2.xpos);
} else {
SetAnim("idle");
controlMode = 2;
timer = Utils.RandBetweenInt(30, 50);
};
};
Util_UpdateXvel_Stop();
} else {
if (controlMode == 2){
if (TimerDecrement()){
SetAnim("walk");
maxSpeed = Util_GetRandWithModifier(modifier0, modifier1, modifier2, modifier3, speedModifier);
controlMode = 0;
};
SetXflipFromFacePlayer();
Util_UpdateXvel_Stop();
CycleAnimationEx();
} else {
if (controlMode == 3){
xacc = Util_SetValFromSideOfPos(toPosX, 1);
if (Util_XDistToToPos() < 20){
SetAnim("walk");
maxSpeed = Util_GetRandWithModifier(modifier0, modifier1, modifier2, modifier3, speedModifier);
controlMode = 0;
};
Util_UpdateXvel();
SetXflipFromVel();
CycleAnimationEx();
} else {
if (controlMode == generic_controlMode_hit){
hit_xvel = (hit_xvel * 0.9);
xpos = (xpos + hit_xvel);
if (PlayAnimationEx()){
Util_RestoreState();
};
};
};
};
};
};
Util_UpdateYvel();
UpdateAnimEvents();
SetXflipFromVel();
}
function UpdateEnemy_Troll(){
var _local1:GameObj;
_local1 = Game.goPlayer;
if (controlMode == 0){
colFlag_vulnerable = false;
xacc = Util_SetValFromSideOfPos(_local1.xpos, 1);
Util_UpdateXvel();
CycleAnimationEx();
SetXflipFromVel();
if (Utils.DistBetweenPoints(xpos, 0, _local1.xpos, 0) < 150){
count++;
count = (count % 2);
if (count == 1){
frameVel = 1;
SetAnim("raiseclub");
controlMode = 1;
} else {
frameVel = 1;
timer = Util_GetRandWithModifier(100, 100, 20, 20, aggression);
SetAnim("attackidle");
controlMode = 5;
};
};
} else {
if (controlMode == 1){
Util_UpdateXvel_Stop();
SetXflipFromFacePlayer();
if (PlayAnimationEx()){
SetAnim("raiseclubidle");
controlMode = 2;
timer = Util_GetRandWithModifier(100, 100, 20, 20, aggression);
colFlag_vulnerable = true;
};
} else {
if (controlMode == 2){
Util_UpdateXvel_Stop();
SetXflipFromFacePlayer();
CycleAnimationEx();
if (TimerDecrement()){
SetAnim("swingclub");
controlMode = 3;
colFlag_vulnerable = true;
};
} else {
if (controlMode == 3){
Util_UpdateXvel_Stop();
SetXflipFromFacePlayer();
if (PlayAnimationEx()){
SetAnim("idle");
controlMode = 4;
timer = Util_GetRandWithModifier(100, 150, 10, 20, aggression);
colFlag_vulnerable = false;
};
} else {
if (controlMode == 4){
Util_UpdateXvel_Stop();
CycleAnimationEx();
SetXflipFromFacePlayer();
if (TimerDecrement()){
controlMode = 0;
SetAnim("walk");
colFlag_vulnerable = false;
};
} else {
if (controlMode == 5){
Util_UpdateXvel_Stop();
SetXflipFromFacePlayer();
CycleAnimationEx();
if (TimerDecrement()){
SetAnim("attack");
controlMode = 3;
colFlag_vulnerable = false;
};
} else {
if (controlMode == generic_controlMode_hit){
hit_xvel = (hit_xvel * 0.9);
xpos = (xpos + hit_xvel);
if (PlayAnimationEx()){
SetAnim("walk");
controlMode = 0;
colFlag_vulnerable = false;
};
};
};
};
};
};
};
};
Util_UpdateYvel();
UpdateAnimEvents();
}
public function Action_Pause(_arg1:Number){
timer = _arg1;
controlMode = 1;
}
function Jester_GenerateBullets(){
var _local1:int;
var _local2:Number;
var _local3:GameObj;
_local1 = Utils.RandBetweenInt(0, 1000);
_local2 = Utils.ScaleTo(2, 10, 0, 1, aggression);
if (_local1 <= _local2){
_local3 = GameObjects.AddObj(xpos, ypos, (zpos - 10));
_local3.InitFromObjectDef("JesterBullet", this);
};
}
function UpdateEnemy_Jester(){
var _local1:Number;
var _local2:GameObj;
var _local3:Number;
var _local4:Number;
var _local5:Number;
_local2 = Game.goPlayer;
if (controlMode == 0){
Util_UpdateXvel_Stop();
Util_UpdateYvel();
if (PlayAnimationEx()){
controlMode = 1;
SetAnim("jump");
_local1 = Utils.ScaleTo(200, 800, 0, 1, aggression);
if (Utils.RandBetweenInt(0, 1000) < _local1){
toPosX = (_local2.xpos + (_local2.xpos - xpos));
xvel = ((toPosX - xpos) * 0.01);
yvel = Utils.RandBetweenFloat(-26, -30);
} else {
toPosX = Utils.RandBetweenFloat((xpos - 50), (xpos + 50));
_local3 = Util_GetRandWithModifier(0.02, 0.05, 0.05, 0.08, speedModifier);
xvel = ((toPosX - xpos) * _local3);
yvel = Utils.RandBetweenFloat(-14, -17);
};
};
} else {
if (controlMode == 1){
CycleAnimationEx();
xpos = (xpos + xvel);
SetXflipFromVel();
_local4 = Util_SetValFromXVel(0.2);
dir = (dir + _local4);
Util_UpdateYvel(false);
if (yvel > 0){
_local5 = (Game.GetHeightMapHeight(xpos) - 20);
if (ypos > _local5){
ypos = _local5;
SetAnim("postjump");
frame = maxFrame;
controlMode = 2;
dir = 0;
};
};
};
};
if (controlMode == 2){
Util_UpdateXvel_Stop();
Util_UpdateYvel();
if (PlayAnimationEx()){
controlMode = 0;
SetAnim("prejump");
};
} else {
if (controlMode == generic_controlMode_hit){
hit_xvel = (hit_xvel * 0.9);
xpos = (xpos + hit_xvel);
if (PlayAnimationEx()){
Util_RestoreState();
};
};
};
Jester_GenerateBullets();
UpdateAnimEvents();
}
function UpdateEnemy_Knight(){
var _local1:Number;
var _local2:GameObj;
_local2 = Game.goPlayer;
if (controlMode == 0){
xacc = Util_SetValFromSideOfPos(_local2.xpos, 1);
if (Util_XDistToPlayer() < 100){
if (Utils.RandBetweenInt(0, 1000) < 500){
SetAnim("attack");
} else {
SetAnim("attack2");
};
controlMode = 1;
};
Util_UpdateXvel();
CycleAnimationEx();
_local1 = Utils.ScaleTo(50, 5, 0, 1, aggression);
if (Utils.RandBetweenInt(0, 1000) < _local1){
toPosX = (_local2.xpos - Util_SetValFromSideOfPos(_local2.xpos, Utils.RandBetweenFloat(150, 300)));
controlMode = 3;
};
} else {
if (controlMode == 1){
SetXflipFromFacePlayer();
if (PlayAnimationEx()){
if (Utils.RandBetweenInt(0, 1000) < 500){
SetAnim("walk");
controlMode = 3;
toPosX = (_local2.xpos - Util_SetValFromSideOfPos(_local2.xpos, Utils.RandBetweenFloat(150, 300)));
} else {
SetAnim("idle");
controlMode = 2;
timer = Utils.RandBetweenInt(30, 50);
};
};
Util_UpdateXvel_Stop();
} else {
if (controlMode == 2){
if (TimerDecrement()){
SetAnim("walk");
maxSpeed = Util_GetRandWithModifier(modifier0, modifier1, modifier2, modifier3, speedModifier);
controlMode = 0;
};
SetXflipFromFacePlayer();
Util_UpdateXvel_Stop();
CycleAnimationEx();
} else {
if (controlMode == 3){
xacc = Util_SetValFromSideOfPos(toPosX, 1);
if (Util_XDistToToPos() < 20){
SetAnim("walk");
maxSpeed = Util_GetRandWithModifier(modifier0, modifier1, modifier2, modifier3, speedModifier);
controlMode = 0;
};
Util_UpdateXvel();
SetXflipFromVel();
CycleAnimationEx();
} else {
if (controlMode == generic_controlMode_hit){
hit_xvel = (hit_xvel * 0.9);
xpos = (xpos + hit_xvel);
if (PlayAnimationEx()){
Util_RestoreState();
};
};
};
};
};
};
Util_UpdateYvel();
UpdateAnimEvents();
SetXflipFromVel();
}
function Util_SetToFloorPos():void{
ypos = Game.GetHeightMapHeight(xpos);
}
public function InitEnemy_FollowPlayerVels(){
EnemyUpdateFunctionCallback = UpdateEnemy_FollowPlayerVels;
acc = Utils.RandBetweenFloat(objectDef.NumParamA, objectDef.NumParamB);
speed = Utils.RandBetweenFloat(objectDef.NumParamC, objectDef.NumParamD);
heightVar0 = 0;
heightVar1 = Utils.RandBetweenFloat(0.02, 0.1);
}
function UpdateEnemy_BabyDragon(){
var _local1:GameObj;
var _local2:int;
var _local3:*;
_local1 = Game.goPlayer;
if (controlMode == 0){
startx = (startx + xvel);
starty = (starty + yvel);
xpos = (startx + (Math.cos((timer * modifier0)) * modifier2));
ypos = (starty + (Math.sin((timer * modifier1)) * modifier3));
timer++;
SetXflipFromVel();
if (CycleAnimationEx()){
_local2 = Utils.RandBetweenInt(0, 1000);
_local3 = Utils.ScaleTo(0, 300, 0, 1, aggression);
if (objectDef.initVar0 == "1"){
_local3 = 0;
};
if (_local2 < _local3){
SetAnim("attack");
controlMode = 1;
};
};
if (xvel < 0){
if (xpos < (0 - 50)){
active = false;
};
} else {
if (xpos > (Game.scrollW + 50)){
active = false;
};
};
} else {
if (controlMode == 1){
startx = (startx + xvel);
starty = (starty + yvel);
xpos = (startx + (Math.cos((timer * modifier0)) * modifier2));
ypos = (starty + (Math.sin((timer * modifier1)) * modifier3));
timer++;
SetXflipFromVel();
if (PlayAnimationEx()){
SetAnim("idle");
controlMode = 0;
};
} else {
if (controlMode == generic_controlMode_hit){
hit_xvel = (hit_xvel * 0.9);
xpos = (xpos + hit_xvel);
if (PlayAnimationEx()){
Util_RestoreState();
};
};
};
};
UpdateAnimEvents();
}
function RenderToBackground():void{
var _local1:Number;
var _local2:Number;
var _local3:Number;
_local1 = Math.floor(xpos);
_local2 = Math.floor(ypos);
_local3 = depth;
if (((!((dir == 0))) || (!((scale == 1))))){
GraphicObjects.RenderAtRotScaled(graphicID, frame, Game.backgroundBD, _local1, (_local2 + _local3), xflip, scale, dir);
} else {
GraphicObjects.RenderAt(graphicID, frame, Game.backgroundBD, _local1, (_local2 + _local3), xflip);
};
}
public function GetObjectRectangle():Rectangle{
return (objectDef.colRects[0]);
}
function TimerDecrement():Boolean{
timer--;
if (timer <= 0){
return (true);
};
return (false);
}
public function InitGutsParticle(){
var _local1:*;
var _local2:int;
var _local3:GutsPiece;
var _local4:Number;
updateFunction = UpdateGutsParticle;
renderFunction = GutsParticleRender;
graphicID = GraphicObjects.gfx_gutsparticle;
frame = Utils.RandBetweenInt(0, 2);
frameVel = 1;
xvel = Utils.RandBetweenFloat(-7, 7);
yvel = Utils.RandBetweenFloat(-5, -9);
zvel = Utils.RandBetweenFloat(-1, 1);
dir = Utils.RandBetweenFloat(0, 10);
_local1 = Utils.RandBetweenInt(5, 10);
gutsList = new Array(_local1);
_local2 = 0;
while (_local2 < _local1) {
_local3 = new GutsPiece();
_local3.xpos = xpos;
_local3.ypos = ypos;
_local3.zpos = depth;
_local4 = (_local2 - 5);
_local3.xvel = Utils.RandBetweenFloat(-10, 10);
_local3.yvel = Utils.RandBetweenFloat(-5, -13);
_local3.zvel = Utils.RandBetweenFloat(-1, 1);
_local3.dir = 0;
gutsList[_local2] = _local3;
_local2++;
};
}
public function RenderEnemy_Helicopter(){
var _local1:Number;
RenderEnemy();
_local1 = dir1;
dir1 = (Math.PI - dir1);
RenderPreRotated1();
dir1 = _local1;
}
function Util_UpdateXvel_Stop():void{
xvel = (xvel * 0.5);
xpos = (xpos + xvel);
}
function Path_GetToPos():Boolean{
var _local1:Boolean;
var _local2:Point;
var _local3:Point;
var _local4:Number;
var _local5:Number;
_local1 = false;
if (pathPos >= currentPoly.GetCatmullRomLength()){
_local1 = true;
};
_local4 = ((1 / currentPoly.GetCatmullRomLength()) * pathPos);
_local3 = currentPoly.GetPointOnCatmullRom(_local4);
_local5 = (_local4 - 0.01);
if (_local5 < 0){
_local5 = 0;
};
_local2 = currentPoly.GetPointOnCatmullRom(_local5);
toPosX = _local3.x;
toPosY = _local3.y;
prevToPosX = _local2.x;
prevToPosY = _local2.y;
return (_local1);
}
function UpdateBackground():void{
xpos = -(Game.scrollX);
ypos = -(Game.scrollY);
}
function RenderHealthBar(_arg1:Boolean=false){
var _local2:Number;
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Point;
var _local8:Number;
var _local9:Number;
var _local10:*;
var _local11:Rectangle;
if (_arg1 == false){
if (healthBarTimer <= 0){
return;
};
} else {
if (health > 20){
if (healthBarTimer <= 0){
return;
};
};
};
_local2 = Math.floor(Game.scrollX);
_local3 = Math.floor(Game.scrollY);
_local4 = (Math.floor(xpos) - _local2);
_local5 = (Math.floor(ypos) - _local3);
_local6 = 0;
if (objectDef != null){
_local6 = objectDef.healthBarOffset;
};
_local7 = new Point(0, _local6);
_local4 = (_local4 + _local7.x);
_local5 = (_local5 + _local7.y);
_local8 = 20;
_local9 = 3;
_local10 = (_local8 * 0.5);
_local4 = (_local4 - _local10);
_local11 = new Rectangle();
_local11.x = _local4;
_local11.y = _local5;
_local11.width = _local8;
_local11.height = _local9;
if (_arg1){
main.screenBD.fillRect(_local11, 4280295520);
} else {
main.screenBD.fillRect(_local11, 4286578688);
};
_local11.x = _local4;
_local11.y = _local5;
_local11.width = ((_local8 / maxhealth) * health);
_local11.height = _local9;
if (_arg1){
main.screenBD.fillRect(_local11, 4282401023);
} else {
main.screenBD.fillRect(_local11, 4294901760);
};
}
public function InitEnemy_Installation(){
height = 0;
hasShadow = true;
EnemyUpdateFunctionCallback = UpdateInstallation;
renderFunction = RenderNormally;
colFlag_isEnemy = true;
colFlag_isInstallation = true;
graphicID = objectDef.GetAnimIDFromName("idle");
}
function Event_EnemyTrollGenerateBullet1(){
var _local1:GameObj;
_local1 = GameObjects.AddObj(xpos, ypos, (zpos - 10));
_local1.InitFromObjectDef("TrollBullet1", this);
}
function RenderTailPiecesShadow():void{
var _local1:Number;
var _local2:Number;
var _local3:int;
var _local4:TailPiece;
var _local5:int;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:int;
var _local11:int;
_local1 = Math.floor(Game.scrollX);
_local2 = Math.floor(Game.scrollY);
_local3 = tailPieces.length;
_local5 = 0;
while (_local5 < _local3) {
_local4 = tailPieces[_local5];
_local6 = (Math.floor(_local4.xpos) - _local1);
_local7 = (Math.floor(_local4.ypos) - _local2);
_local8 = GraphicObjects.GetNumFrames(_local4.graphicID);
_local9 = _local4.dir;
_local9 = (_local9 + (Math.PI / 2));
_local9 = (Math.PI - _local9);
while (_local9 < 0) {
_local9 = (_local9 + (Math.PI * 2));
};
while (_local9 > (Math.PI * 2)) {
_local9 = (_local9 - (Math.PI * 2));
};
_local10 = ((_local8 / (Math.PI * 2)) * _local9);
_local11 = GraphicObjects.idList[_local4.graphicID];
GraphicObjects.graphicobjs[_local11].frames[_local10].RenderAtShadow(Game.main.screenBD, _local6, (_local7 + 3), false);
_local5++;
};
}
public function InitEnemy_FollowPlayer_FlyLike(){
EnemyUpdateFunctionCallback = UpdateEnemy_FollowPlayer_FlyLike;
UpdateEnemy_FollowPlayer_FlyLike_GetNewToPos();
}
function RenderEnemyBullet(){
RenderNormally();
}
function RenderPreRotated1(){
var _local1:Number;
var _local2:Number;
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:int;
_local1 = Math.floor(Game.scrollX);
_local2 = Math.floor(Game.scrollY);
_local3 = (Math.floor(xpos) - _local1);
_local4 = (Math.floor(ypos) - _local2);
_local5 = GraphicObjects.GetNumFrames(graphicID1);
_local6 = dir1;
_local6 = (_local6 - (Math.PI / 2));
while (_local6 < 0) {
_local6 = (_local6 + (Math.PI * 2));
};
while (_local6 > (Math.PI * 2)) {
_local6 = (_local6 - (Math.PI * 2));
};
_local7 = ((_local5 / (Math.PI * 2)) * _local6);
GraphicObjects.RenderAt(graphicID1, _local7, main.screenBD, _local3, (_local4 - (height * 0.1)), false);
}
public function InitEnemy9(){
var _local1:int;
var _local2:Number;
EnemyUpdateFunctionCallback = UpdateEnemy9;
speed = Utils.RandBetweenFloat(0.5, 1);
renderFunction = RenderNormally;
frameVel = 0.2;
height = 0;
_local1 = Utils.RandBetweenInt(0, 7);
_local2 = (-(((Math.PI / 4) * Number(_local1))) + (Math.PI / 2));
movementVec.Set(_local2, speed);
SetStartEdgePosFrom8Way(_local1);
minFrame = (frame = (_local1 * 10));
maxFrame = (minFrame + 9);
}
public function UpdateEnemy_RotateToPlayer2(){
var _local1:Point;
timer--;
if (timer <= 0){
_local1 = Utils.RandPointInCircle(objectDef.NumParamG);
toOffsetX = _local1.x;
toOffsetY = _local1.y;
timer = (Utils.RandBetweenFloat(objectDef.NumParamE, objectDef.NumParamF) * Defs.fps2);
};
movementVec.speed = speed;
toPosX = (Game.goPlayer.xpos + toOffsetX);
toPosY = (Game.goPlayer.ypos + toOffsetY);
RotateToRequiredRot(rotVel);
dir = movementVec.rot;
xpos = (xpos + movementVec.GetXComponent());
ypos = (ypos + movementVec.GetYComponent());
UpdateExternalVel();
UpdateBob();
}
function GutsParticleUpdateList(){
var _local1:GutsPiece;
var _local2:int;
var _local3:Boolean;
var _local4:Number;
for each (_local1 in gutsList) {
_local1.yvel = (_local1.yvel + Game.gravity);
_local1.xpos = (_local1.xpos + _local1.xvel);
_local1.ypos = (_local1.ypos + _local1.yvel);
_local1.zpos = (_local1.zpos + _local1.zvel);
_local4 = Game.GetHeightMapHeight(int(_local1.xpos));
if (_local1.ypos > _local4){
_local1.ypos = _local4;
_local1.landed = true;
};
};
_local2 = 0;
while (_local2 < 10) {
GutsParticleMoveTogether();
_local2++;
};
GutsParticleSetRotation();
_local3 = true;
for each (_local1 in gutsList) {
if (!_local1.landed){
_local3 = false;
};
};
if (_local3){
GutsParticleRender(true);
active = false;
};
}
function RenderWithAlpha(){
var _local1:Number;
var _local2:Number;
var _local3:Number;
var _local4:Number;
_local1 = Math.floor(Game.scrollX);
_local2 = Math.floor(Game.scrollY);
_local3 = (Math.floor(xpos) - _local1);
_local4 = (Math.floor(ypos) - _local2);
GraphicObjects.RenderAtAlpha(graphicID, frame, main.screenBD, _local3, (_local4 - (height * 0.1)), alpha);
}
public function UpdateEnemy_Edge8Way(){
xpos = (xpos + movementVec.GetXComponent());
ypos = (ypos + movementVec.GetYComponent());
UpdateExternalVel();
if (IsInWorld(64) == false){
active = false;
};
CycleAnimationEx();
}
public function UpdateOnScreenBlood(){
PlayAnimation();
alpha = (alpha - 0.01);
if (alpha <= 0){
alpha = 0;
active = false;
};
}
public function InitEnemy_Edge8Way(){
var _local1:int;
var _local2:Number;
EnemyUpdateFunctionCallback = UpdateEnemy_Edge8Way;
speed = Utils.RandBetweenFloat(objectDef.NumParamA, objectDef.NumParamB);
renderFunction = RenderNormally;
shadowRenderFunction = RenderShadowNormally;
frameVel = 0.2;
height = 0;
_local1 = Utils.RandBetweenInt(0, 7);
_local2 = (-(((Math.PI / 4) * Number(_local1))) + (Math.PI / 2));
movementVec.Set(_local2, speed);
SetStartEdgePosFrom8Way(_local1);
minFrame = (frame = (_local1 * 10));
maxFrame = (minFrame + 9);
}
function Util_SideOfPlayer():Boolean{
return ((xpos > Game.goPlayer.xpos));
}
function UpdateExternalVel(){
xpos = (xpos + externalVec.GetXComponent());
ypos = (ypos + externalVec.GetYComponent());
externalVec.speed = (externalVec.speed - 0.25);
if (externalVec.speed <= 0){
externalVec.speed = 0;
};
}
function GenerateDeadParticles(){
var _local1:Number;
var _local2:Number;
var _local3:ObjectDeath;
var _local4:int;
var _local5:GameObj;
var _local6:int;
var _local7:ObjectDeathPiece;
_local1 = xpos;
_local2 = (ypos - 40);
_local3 = objectDef.objectDeath;
if (_local3 == null){
return;
};
_local6 = Utils.RandBetweenInt(_local3.numBloodMin, _local3.numBloodMax);
_local4 = 0;
while (_local4 < _local6) {
_local5 = GameObjects.AddObj(_local1, _local2, 1000);
_local5.InitBloodParticle();
_local4++;
};
_local6 = Utils.RandBetweenInt(_local3.numGutsMin, _local3.numGutsMax);
_local4 = 0;
while (_local4 < _local6) {
_local5 = GameObjects.AddObj(_local1, _local2, 1000);
_local5.InitGutsParticle();
_local4++;
};
for each (_local7 in _local3.pieces) {
_local5 = GameObjects.AddObj(_local1, _local2, 1000);
_local5.InitDeadBitParticle(_local3.graphicID, _local7.frame, _local7.x, _local7.y);
if (_local7.spurt != 0){
_local5.genBloodFlag = true;
_local5.toOffsetX = 0;
_local5.toOffsetY = 30;
};
};
_local5 = GameObjects.AddObj(_local1, _local2, 900);
_local5.InitStaticBlood(Utils.RandBetweenInt(0, 1), xflip);
if (Utils.RandBetweenInt(0, 1000) < 500){
_local5 = GameObjects.AddObj(_local1, _local2, 900);
_local5.InitOnScreenBlood();
};
}
function ManUpdateDecel():Boolean{
var _local1:Number;
_local1 = 0.25;
if (xvel > 0){
xacc = -(_local1);
xvel = (xvel + xacc);
xvel = Utils.LimitNumber(0, 1000, xvel);
} else {
if (xvel < 0){
xacc = _local1;
xvel = (xvel + xacc);
xvel = Utils.LimitNumber(-1000, 0, xvel);
};
};
xpos = (xpos + xvel);
if (xvel == 0){
return (true);
};
return (false);
}
function SetToRequiredRot():void{
var _local1:Number;
_local1 = Math.atan2((toPosY - ypos), (toPosX - xpos));
movementVec.rot = _local1;
}
function UpdateBullet():void{
}
function InitBatPoo(){
colFlag_isEnemyBullet = true;
yvel = 0;
xvel = Utils.RandBetweenFloat(-1, 1);
zvel = Utils.RandBetweenFloat(-1, 1);
SetAnim("fall");
controlMode = 0;
updateFunction = UpdateBatPoo;
}
public function InitBloodParticle(){
updateFunction = UpdateBloodParticle;
graphicID = GraphicObjects.gfx_bloodparticle;
frame = Utils.RandBetweenInt(0, 1);
frameVel = 1;
xvel = Utils.RandBetweenFloat(-7, 7);
yvel = Utils.RandBetweenFloat(-5, -9);
zvel = Utils.RandBetweenFloat(-1, 1);
dir = Utils.RandBetweenFloat(0, 10);
}
function InitEnemyBullet(_arg1:ShotController, _arg2:ShotControllerShot, _arg3:GameObj):void{
var _local4:GameObj;
var _local5:Number;
var _local6:Number;
var _local7:Number;
usesBulletTime = true;
objectDef = ObjectDefs.GetObjectDefByExportName(_arg1.type);
colFlag_isEnemyBullet = true;
updateFunction = UpdateEnemyBullet;
renderFunction = RenderEnemyBullet;
graphicID = objectDef.GetAnimIDFromName("idle");
if (_arg2.type == ShotControllerShot.type_atplayer){
_local4 = Game.goPlayer;
_local5 = (_local4.xpos - xpos);
_local6 = (_local4.ypos - ypos);
_local7 = Math.atan2(_local6, _local5);
_local7 = (_local7 + _arg2.offset);
movementVec.Set(_local7, _arg1.speed);
} else {
if (_arg2.type == ShotControllerShot.type_absolute){
_local7 = _arg2.offset;
movementVec.Set(_local7, _arg1.speed);
} else {
if (_arg2.type == ShotControllerShot.type_dir){
_local7 = _arg2.offset;
_local7 = (_local7 + _arg3.dir);
movementVec.Set(_local7, _arg1.speed);
};
};
};
frame = 0;
frameVel = 0.5;
timer = Utils.RandBetweenInt(0, 4);
xvel = movementVec.GetXComponent();
yvel = movementVec.GetYComponent();
}
function Init_EnemyProjectileBulletToPlayer(){
var _local1:GameObj;
var _local2:GameObj;
colFlag_isEnemyBullet = true;
colFlag_isEnemyProjectile = true;
visible = true;
updateFunction = Update_EnemyProjectileBulletToPlayer;
timer = 100;
SetAnim("idle");
_local1 = Game.goPlayer;
movementVec.SetAngFromDxDy((_local1.xpos - xpos), (_local1.ypos - ypos));
movementVec.speed = 1;
_local2 = Game.lastObjectGenerator;
xpos = (_local2.xpos + objectDef.offsetX);
ypos = (_local2.ypos + objectDef.offsetY);
}
public function PlayAnimationEx():Boolean{
var _local1:Boolean;
_local1 = false;
frame = (frame + frameVel);
if (frame > maxFrame){
frame = maxFrame;
currentEventID = 0;
_local1 = true;
};
if (frame < minFrame){
frame = minFrame;
currentEventID = 0;
_local1 = true;
};
return (_local1);
}
function Anim_FromVel():void{
var _local1:int;
var _local2:Number;
var _local3:Number;
var _local4:*;
_local1 = GraphicObjects.GetNumFrames(graphicID);
_local2 = xvel;
_local3 = yvel;
_local4 = Math.atan2(_local3, _local2);
frame = ((_local1 / (Math.PI * 2)) * -(_local4));
if (frame < 0){
frame = (frame + _local1);
};
if (frame > _local1){
frame = (frame - _local1);
};
frame = (frame + (_local1 / 2));
if (frame > _local1){
frame = (frame - _local1);
};
}
function UpdateShop():void{
ypos = (ypos + yvel);
xpos = (xpos + xvel);
if (ypos >= (Defs.displayarea_h + 32)){
active = false;
};
}
public function RenderOnScreenBlood(){
ct.alphaMultiplier = alpha;
GraphicObjects.RenderAtRotScaledColTrans(graphicID, frame, main.screenBD, xpos, ypos, xflip, scale, dir, ct);
}
function RenderEnemy(){
var _local1:Number;
_local1 = dir;
dir = (Math.PI - dir);
RenderPreRotated();
dir = _local1;
RenderHealthBar();
}
public function UpdateStaticBlood(){
if (PlayAnimation()){
active = false;
};
}
public function RenderInfo():void{
RenderBlockCollision();
}
function UpdateDeadBitParticle(){
var _local1:Number;
var _local2:GameObj;
var _local3:Number;
var _local4:Number;
if (controlMode == 0){
yvel = (yvel + Game.gravity);
xpos = (xpos + xvel);
ypos = (ypos + yvel);
depth = (depth + zvel);
_local1 = Game.GetHeightMapHeight(int(xpos));
if (ypos > _local1){
ypos = _local1;
if (yvel > 3){
yvel = (yvel * -0.4);
xvel = (xvel * 0.6);
} else {
controlMode = 1;
timer = Utils.RandBetweenInt(75, 125);
};
};
if (ypos > 1000){
if (ypos > 1000){
active = false;
};
};
dir = (dir + (xvel * 0.05));
} else {
if (controlMode == 1){
timer--;
if (timer < 0){
controlMode = 2;
};
} else {
if (controlMode == 2){
alpha = (alpha - 0.025);
if (alpha <= 0){
active = false;
};
};
};
};
if (genBloodFlag){
_local2 = GameObjects.AddObj(xpos, ypos, zpos);
_local2.InitMiniBloodParticle(1);
_local2.depth = depth;
_local3 = Utils.RandBetweenFloat(10, 12);
_local4 = (dir + (Math.PI * 0.5));
_local4 = (_local4 + Utils.RandBetweenFloat(-0.01, 0.01));
_local2.xvel = (Math.cos(_local4) * _local3);
_local2.yvel = (Math.sin(_local4) * _local3);
};
scale = (1 + (depth * 0.005));
}
function RenderBackground():void{
var _local1:Number;
var _local2:Number;
_local1 = Math.floor(xpos);
_local2 = Math.floor(ypos);
GraphicObjects.RenderAt(graphicID, 0, main.screenBD, _local1, _local2);
}
public function InitEnemy_SplineRoundPlayer_Stepper(){
var _local1:Array;
var _local2:Number;
var _local3:Number;
var _local4:int;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Point;
EnemyUpdateFunctionCallback = UpdateEnemy_SplineRoundPlayer_Stepper;
rotVel = 0.025;
controlMode = 0;
_local1 = new Array();
_local2 = 50;
_local3 = 0;
while (_local3 < (Math.PI * 2)) {
_local5 = Utils.RandBetweenFloat(objectDef.NumParamA, objectDef.NumParamB);
_local6 = (Math.cos(_local3) * _local5);
_local7 = (Math.sin(_local3) * _local5);
_local6 = (_local6 + Utils.RandBetweenFloat(-(_local2), _local2));
_local7 = (_local7 + Utils.RandBetweenFloat(-(_local2), _local2));
_local8 = new Point(_local6, _local7);
_local1.push(_local8);
_local3 = (_local3 + 0.6);
};
_local4 = 0;
currentPoly = new Poly("", 0, _local1[_local4].x, _local1[_local4].y);
_local4 = 1;
while (_local4 < _local1.length) {
currentPoly.AddLine(_local1[_local4].x, _local1[_local4].y, _local1[_local4].x, _local1[_local4].y);
_local4++;
};
currentPoly.Finish(false);
timer = Utils.RandBetweenFloat(0, 1);
rotVel = Utils.RandBetweenFloat(objectDef.NumParamC, objectDef.NumParamD);
timer1 = 0;
xpos2 = xpos;
ypos2 = ypos;
}
public function DodgeBullet(_arg1:GameObj){
var _local2:Number;
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Vec;
_local2 = (_arg1.xpos - xpos);
_local3 = (_arg1.ypos - ypos);
_local4 = Utils.DistBetweenPoints(xpos, ypos, _arg1.xpos, _arg1.ypos);
if (_local4 < objectDef.dodgeDist){
_local5 = Utils.ScaleTo(objectDef.dodgeMax, objectDef.dodgeMin, 0, objectDef.dodgeDist, _local4);
_local6 = new Vec();
_local6.SetAngFromDxDy(_local2, _local3);
_local6.speed = _local5;
xpos = (xpos - _local6.GetXComponent());
ypos = (ypos - _local6.GetYComponent());
};
}
function PlayerUpdateDeadParticles(){
var _local1:GameObj;
_local1 = GameObjects.AddObj(xpos, (ypos - 60), 1000);
_local1.InitBloodParticle();
_local1.xvel = Utils.RandBetweenFloat(-7, 7);
_local1.yvel = Utils.RandBetweenFloat(-10, -20);
_local1.zvel = Utils.RandBetweenFloat(-1, 1);
}
function SetXflipFromFacePlayer(){
xflip = false;
if (xpos > Game.goPlayer.xpos){
xflip = true;
};
}
function InitEnemy_VampireBat(){
var _local1:GameObj;
aggression = Game.lastEnemyGenDef.aggression;
speedModifier = Game.lastEnemyGenDef.speed;
colFlag_isEnemyBullet = true;
colFlag_isEnemy = true;
updateFunction = UpdateEnemy_VampireBat;
SetAnim("idle");
controlMode = 0;
maxSpeed = Util_GetRandWithModifier(2, 3, 4, 5, speedModifier);
controlMode = 0;
_local1 = Game.goPlayer;
if (xpos > _local1.xpos){
xoffset = Utils.RandBetweenFloat(100, 200);
} else {
xoffset = Utils.RandBetweenFloat(-100, -200);
};
yoffset = Utils.RandBetweenFloat(-200, -300);
startx = xpos;
starty = ypos;
speed = Util_GetRandWithModifier(2, 3, 4, 5, speedModifier);
acc = Util_GetRandWithModifier(0.1, 0.2, 0.3, 0.4, speedModifier);
}
function RenderNormallyToBackground(){
var _local1:Number;
var _local2:Number;
_local1 = Math.floor(xpos);
_local2 = Math.floor(ypos);
if (((!((dir == 0))) || (!((scale == 1))))){
GraphicObjects.RenderAtRotScaled(graphicID, frame, Game.backgroundBD, _local1, _local2, xflip, scale, dir);
} else {
trace("render here");
GraphicObjects.RenderAt(graphicID, frame, Game.backgroundBD, _local1, _local2, xflip);
};
}
function GetMeleeHitPoint():Point{
var _local1:Point;
if (((!((currentAnimName == "man_punch"))) && (!((currentAnimName == "man_kick"))))){
return (null);
};
if (frame < 15){
return (null);
};
_local1 = new Point(0, 0);
_local1.y = (ypos - 40);
if (xflip){
_local1.x = (xpos - 20);
} else {
_local1.x = (xpos + 20);
};
return (_local1);
}
function UpdateEnemy_Gnome(){
var _local1:Number;
var _local2:GameObj;
_local2 = Game.goPlayer;
if (controlMode == 0){
xacc = Util_SetValFromSideOfPos((_local2.xpos + dist), 1);
Util_UpdateXvel();
frameVel = Util_SetValFromSideOfPos(_local2.xpos, 1);
CycleAnimationEx();
SetXflipFromFacePlayer();
if (Utils.DistBetweenPoints(xpos, 0, (_local2.xpos + dist), 0) < 5){
_local1 = Utils.ScaleTo(100, 500, 0, 1, aggression);
if (objectDef.initVar0 == "2"){
_local1 = 0;
};
if (Utils.RandBetweenInt(0, 1000) < _local1){
frameVel = 1;
SetAnim("attack");
controlMode = 1;
} else {
dist = -(Util_SetValFromSideOfPos(_local2.xpos, Utils.RandBetweenFloat(200, 300)));
};
} else {
if (objectDef.initVar0 != "1"){
_local1 = Utils.ScaleTo(10, 100, 0, 1, aggression);
if (Utils.RandBetweenInt(0, 1000) < _local1){
SetAnim("run");
maxSpeed = Util_GetRandWithModifier(8, 10, 12, 14, speedModifier);
controlMode = 2;
xacc = Util_SetValFromSideOfPos(_local2.xpos, 1);
colFlag_isEnemyProjectile = true;
colFlag_isEnemyBullet = true;
};
};
};
} else {
if (controlMode == 1){
if (PlayAnimationEx()){
maxSpeed = Util_GetRandWithModifier(2, 3, 4, 5, speedModifier);
SetAnim("walk");
controlMode = 0;
dist = -(Util_SetValFromSideOfPos(_local2.xpos, Utils.RandBetweenFloat(200, 300)));
};
Util_UpdateXvel_Stop();
SetXflipFromFacePlayer();
} else {
if (controlMode == 2){
Util_UpdateXvel();
if (Util_XDistToPlayer() > 300){
controlMode = 0;
maxSpeed = Util_GetRandWithModifier(2, 3, 4, 5, speedModifier);
SetAnim("walk");
dist = Utils.RandBetweenFloat(200, 300);
if (Util_SideOfPlayer() == false){
dist = -(dist);
};
colFlag_isEnemyProjectile = false;
colFlag_isEnemyBullet = false;
};
CycleAnimationEx();
SetXflipFromVel();
} else {
if (controlMode == 3){
if (xflip){
xpos = (xpos + 3);
} else {
xpos = (xpos - 3);
};
if (PlayAnimationEx()){
controlMode = 0;
maxSpeed = Util_GetRandWithModifier(2, 3, 4, 5, speedModifier);
SetAnim("walk");
dist = Utils.RandBetweenFloat(200, 300);
if (Util_SideOfPlayer() == false){
dist = -(dist);
};
colFlag_isEnemyProjectile = false;
colFlag_isEnemyBullet = false;
};
} else {
if (controlMode == generic_controlMode_hit){
hit_xvel = (hit_xvel * 0.9);
xpos = (xpos + hit_xvel);
if (PlayAnimationEx()){
Util_RestoreState();
};
};
};
};
};
};
Util_UpdateYvel();
UpdateAnimEvents();
}
public function UpdateEnemy_AccelStraight(){
movementVec.speed = (movementVec.speed + accel);
xpos = (xpos + movementVec.GetXComponent());
ypos = (ypos + movementVec.GetYComponent());
dir = movementVec.rot;
UpdateExternalVel();
}
function Event_EnemyJesterGenerateBullet(){
var _local1:GameObj;
_local1 = GameObjects.AddObj(xpos, ypos, (zpos - 10));
_local1.InitFromObjectDef("GnomeBullet", this);
}
function Util_RestoreState(){
controlMode = ss_controlMode;
frame = ss_frame;
graphicID = ss_graphicID;
frameVel = ss_frameVel;
minFrame = ss_minFrame;
maxFrame = ss_maxFrame;
}
function RenderRotated(){
var _local1:Number;
var _local2:Number;
var _local3:Number;
var _local4:Number;
_local1 = Math.floor(Game.scrollX);
_local2 = Math.floor(Game.scrollY);
_local3 = (Math.floor(xpos) - _local1);
_local4 = (Math.floor(ypos) - _local2);
GraphicObjects.RenderAtRotScaled(graphicID, frame, main.screenBD, _local3, (_local4 - (height * 0.1)), false, scale, dir);
}
function UpdateActions(){
var _local1:ObjAction;
for each (_local1 in actionList) {
if ((((_local1.done == false)) && ((actionTimer == _local1.time)))){
trace("Action_Pause");
_local1.actionFunction(_local1.param0);
};
};
actionTimer++;
}
public function InitEnemy_BallsFromEdges(){
var _local1:Number;
var _local2:int;
EnemyUpdateFunctionCallback = UpdateEnemy_BallsFromEdges;
speed = Utils.RandBetweenFloat(objectDef.NumParamA, objectDef.NumParamB);
renderFunction = RenderNormally;
frame = 0;
frameVel = 1;
height = 0;
_local2 = int(objectDef.NumParamC);
if (_local2 == 0){
_local1 = Utils.RandBetweenFloat(0.2, 0.3);
if (Utils.RandBetweenInt(0, 1000) < 500){
xpos = -20;
ypos = Game.RandWorldY();
} else {
ypos = (0 - 20);
xpos = Game.RandWorldX();
};
} else {
if (_local2 == 1){
_local1 = Utils.RandBetweenFloat(0.6, 0.7);
if (Utils.RandBetweenInt(0, 1000) < 500){
xpos = (1000 + 20);
ypos = Game.RandWorldY();
} else {
ypos = (0 - 20);
xpos = Game.RandWorldX();
};
} else {
if (_local2 == 2){
frameVel = -1;
_local1 = Utils.RandBetweenFloat(1.3, 1.4);
if (Utils.RandBetweenInt(0, 1000) < 500){
xpos = (1000 + 20);
ypos = Game.RandWorldY();
} else {
ypos = (1000 + 20);
xpos = Game.RandWorldX();
};
} else {
if (_local2 == 3){
frameVel = -1;
_local1 = Utils.RandBetweenFloat(1.7, 1.8);
if (Utils.RandBetweenInt(0, 1000) < 500){
xpos = -20;
ypos = Game.RandWorldY();
} else {
ypos = (1000 + 20);
xpos = Game.RandWorldX();
};
};
};
};
};
movementVec.Set((Math.PI * _local1), speed);
}
public function InitEnemy_Path(){
pathSpeed = 5;
pathPos = 0;
}
public function UpdateEnemy_RotateToPlayer(){
movementVec.speed = speed;
toPosX = Game.goPlayer.xpos;
toPosY = Game.goPlayer.ypos;
RotateToRequiredRot(rotVel);
dir = movementVec.rot;
xpos = (xpos + movementVec.GetXComponent());
ypos = (ypos + movementVec.GetYComponent());
UpdateExternalVel();
UpdateBob();
}
function UpdatePlayer_DeadHead():void{
var _local1:GameObj;
var _local2:GameObj;
var _local3:Number;
var _local4:Number;
_local1 = Game.goPlayer;
starty = (_local1.ypos - 150);
startx = _local1.xpos;
yvel = (yvel + Game.gravity);
ypos = (ypos + yvel);
xpos = (xpos + xvel);
if (ypos >= starty){
yvel = (yvel - Utils.RandBetweenFloat(3, 5));
xvel = (xvel + Utils.RandBetweenFloat(-1, 1));
};
yvel = Utils.LimitNumber(-20, 20, yvel);
if (xpos > startx){
xvel = (xvel - 1);
} else {
xvel = (xvel + 1);
};
xvel = Utils.LimitNumber(-10, 10, xvel);
CycleAnimation();
dir = (dir + ((xvel * 0.1) * Utils.RandBetweenFloat(0, 2)));
_local2 = GameObjects.AddObj(xpos, ypos, zpos);
_local2.InitMiniBloodParticle(1);
_local2.depth = depth;
_local3 = Utils.RandBetweenFloat(10, 13);
_local4 = (dir + (Math.PI * 0.5));
_local4 = (_local4 + Utils.RandBetweenFloat(-0.01, 0.01));
_local2.xvel = (Math.cos(_local4) * _local3);
_local2.yvel = (Math.sin(_local4) * _local3);
}
function DropCarriedObject():void{
carriedObject.yvel = 0;
carriedObject.isBeingCarried = false;
carriedObject.controlMode = 0;
carriedObject = null;
}
static function InitBullet(_arg1:GameObj, _arg2:GameObj, _arg3:PlayerWeapon):void{
}
}
}//package
Section 51
//GameObjects (GameObjects)
package {
import flash.events.*;
class GameObjects {
public static var numobjs;
static var m:Main;
public static var dummyObj:GameObj;
public static var objs1:Array;
public static var objs2:Array;
public static var objs:Array;
public function GameObjGroup(){
}
public static function Update():void{
var _local1:Boolean;
var _local2:int;
var _local3:GameObj;
_local1 = !((Game.bulletTime == 0));
_local2 = 0;
while (_local2 < objs.length) {
_local3 = objs[_local2];
if (_local3.active){
_local3.Update();
if (!_local1){
if (((_local3.active) && (_local3.usesBulletTime))){
_local3.Update();
};
};
};
_local2++;
};
}
public static function Render():void{
var _local1:GameObj;
var _local2:Array;
_local2 = new Array();
for each (_local1 in objs) {
if (_local1.active){
_local2.push(_local1);
};
};
_local2.sortOn("zpos2", (Array.NUMERIC | Array.DESCENDING));
for each (_local1 in _local2) {
_local1.Render();
};
for each (_local1 in _local2) {
_local1.RenderInfo();
};
}
public static function ForEachActive(_arg1:Function):void{
var _local2:GameObj;
var _local3:Array;
_local3 = new Array();
for each (_local2 in objs) {
if (_local2.active){
_arg1(_local2);
};
};
}
public static function InitOnce(_arg1:Main, _arg2:int){
var _local3:*;
numobjs = _arg2;
m = _arg1;
objs = new Array();
_local3 = 0;
while (_local3 < numobjs) {
objs.push(new GameObj(m, 0, 0, _local3));
_local3++;
};
dummyObj = new GameObj(m, 0, 0, 0);
}
public static function ClearAll(){
var _local1:int;
_local1 = 0;
while (_local1 < numobjs) {
objs[_local1].active = false;
_local1++;
};
}
public static function AddObj(_arg1:Number, _arg2:Number, _arg3:Number):GameObj{
var _local4:int;
var _local5:GameObj;
_local4 = 0;
while (_local4 < numobjs) {
if (objs[_local4].active == false){
_local5 = objs[_local4];
_local5.active = true;
_local5.zpos = _arg3;
_local5.xpos = _arg1;
_local5.ypos = _arg2;
_local5.startx = _arg1;
_local5.starty = _arg2;
_local5.startz = _arg3;
_local5.Init(0);
return (objs[_local4]);
};
_local4++;
};
trace("ERROR! NO FREE OBJECTS");
return (dummyObj);
}
public static function CountActiveObjects():int{
var _local1:int;
var _local2:int;
_local1 = 0;
_local2 = 0;
while (_local2 < objs.length) {
if (objs[_local2].active == true){
_local1++;
};
_local2++;
};
return (_local1);
}
}
}//package
Section 52
//GameOverScreen (GameOverScreen)
package {
import flash.display.*;
import flash.text.*;
public dynamic class GameOverScreen extends MovieClip {
public var textHighScore:TextField;
public var buttonQuit:SimpleButton;
public var textFinalScore:TextField;
public var buttonContinue:SimpleButton;
}
}//package
Section 53
//goblinscreech (goblinscreech)
package {
import flash.media.*;
public dynamic class goblinscreech extends Sound {
}
}//package
Section 54
//GraphicObjects (GraphicObjects)
package {
import flash.geom.*;
import flash.display.*;
import flash.text.*;
import flash.utils.*;
public class GraphicObjects {
public static const gfx_carryweapon_axe = 151;
public static const gfx_enemy6_deadbits = 75;
public static const gfx_enemy1 = 60;
public static const gfx_enemy2 = 61;
public static const gfx_enemy3 = 62;
public static const gfx_enemy4 = 63;
public static const gfx_enemy5 = 64;
public static const gfx_enemy7_deadbits = 76;
public static const gfx_enemy7 = 66;
public static const gfx_carryweapon_flail = 152;
public static const gfx_player_arrow = 133;
public static const gfx_pickup_health = 130;
public static const gfx_fireballexplosion = 135;
public static const gfx_enemy6 = 65;
public static const gfx_interface_berzerkerbar = 141;
public static const gfx_player_deadbits = 11;
public static const gfx_magicsparkle2 = 40;
public static const gfx_fireball = 134;
public static const gfx_bloodparticle = 30;
public static const gfx_carryweapon_sling = 153;
public static const gfx_player = 10;
public static const gfx_enemy4_magicbullet = 122;
public static const gfx_kill = 42;
public static const gfx_carryweapon_sword = 150;
public static const gfx_gutsparticle = 31;
public static const gfx_enemy1_deadbits = 70;
public static const gfx_font1 = 190;
public static const gfx_pickup_gold = 131;
public static const gfx_font3 = 192;
public static const gfx_enemy3_arrow = 121;
public static const gfx_interface_hudweapon = 142;
public static const gfx_font2 = 191;
public static const gfx_enemy2_deadbits = 71;
public static const gfx_batpoo = 32;
public static const gfx_pickup_berzerker = 132;
public static const gfx_slingstone = 120;
public static const gfx_berzerkscreen = 41;
public static const gfx_enemy3_deadbits = 72;
public static const gfx_carryweapon_longbow = 154;
public static const gfx_onscreenblood1 = 36;
public static const gfx_onscreenblood2 = 37;
public static const gfx_fontblack = 193;
public static const gfx_onscreenblood4 = 39;
public static const gfx_magicsparkle = 33;
public static const gfx_backgroundscroll1 = 100;
public static const gfx_backgroundscroll2 = 101;
public static const gfx_backgroundscroll3 = 102;
public static const gfx_backgroundscroll4 = 103;
public static const gfx_backgroundscroll5 = 104;
public static const gfx_backgroundscroll6 = 105;
public static const gfx_backgroundscroll7 = 106;
public static const gfx_enemy4_deadbits = 73;
public static const gfx_carryweapon_crossbow = 155;
public static const gfx_onscreenblood3 = 38;
public static const gfx_timerunderlay = 43;
public static const gfx_interface_healthbar = 140;
public static const gfx_enemy5_deadbits = 74;
public static const gfx_blood1 = 34;
public static const gfx_blood2 = 35;
static var count:int;
public static var stringCharBitmap:Bitmap;
public static var stringCharX:Number;
static var graphicobjs:Array;
static var idList:Array;
public static var stringCharY:Number;
static var totalFramesToDo:int = 1000;
static var totalFramesDone:int = 0;
static var main:Main;
static var everythingDone:Boolean = false;
static var nameList:Array;
public static function GetHeight(_arg1:int, _arg2:int):int{
var _local3:int;
_local3 = idList[_arg1];
return (graphicobjs[_local3].frames[_arg2].bitmaps[0].height);
}
public static function GetBitmap(_arg1:int, _arg2:int):Bitmap{
var _local3:int;
_local3 = idList[_arg1];
return (graphicobjs[_local3].frames[_arg2].bitmaps[0]);
}
public static function RenderAtSplit(_arg1:int, _arg2:int, _arg3:BitmapData, _arg4:Number, _arg5:Number){
var _local6:int;
_local6 = idList[_arg1];
graphicobjs[_local6].frames[_arg2].RenderAtSplit(_arg3, _arg4, _arg5);
}
public static function RenderStringAt(_arg1:BitmapData, _arg2:int, _arg3:Number, _arg4:Number, _arg5:String, _arg6:int=0){
var _local7:int;
var _local8:int;
stringCharX = _arg3;
stringCharY = _arg4;
_local7 = 0;
while (_local7 < _arg5.length) {
_local8 = int(_arg5.charCodeAt(_local7));
if (_local8 < 0){
_local8 = 0;
};
if (_local8 > 127){
_local8 = 127;
};
RenderAt(_arg2, _local8, _arg1, stringCharX, stringCharY);
stringCharBitmap = GetBitmap(_arg2, _local8);
stringCharX = (stringCharX + stringCharBitmap.width);
stringCharX = (stringCharX + _arg6);
_local7++;
};
}
public static function GetPixelAt(_arg1:int, _arg2:int, _arg3:int, _arg4:int):uint{
var _local5:int;
var _local6:Bitmap;
var _local7:uint;
_local5 = idList[_arg1];
_local6 = graphicobjs[_local5].frames[_arg2].bitmaps[0];
_local7 = _local6.bitmapData.getPixel32(_arg3, _arg4);
return (_local7);
}
public static function GetYoffset(_arg1:int, _arg2:int):int{
var _local3:int;
_local3 = idList[_arg1];
return (graphicobjs[_local3].frames[_arg2].yoffsets[0]);
}
public static function GetNumFrames(_arg1:int):int{
var _local2:int;
_local2 = idList[_arg1];
return (graphicobjs[_local2].frames.length);
}
public static function GetWidth(_arg1:int, _arg2:int):int{
var _local3:int;
_local3 = idList[_arg1];
return (graphicobjs[_local3].frames[_arg2].bitmaps[0].width);
}
public static function RenderAtAlpha(_arg1:int, _arg2:int, _arg3:BitmapData, _arg4:Number, _arg5:Number, _arg6:Number){
var _local7:int;
_local7 = idList[_arg1];
graphicobjs[_local7].frames[_arg2].RenderAtAlpha(_arg3, _arg4, _arg5, _arg6);
}
public static function RenderNumberAt(_arg1:BitmapData, _arg2:int, _arg3:Number, _arg4:Number, _arg5:int){
var _local6:Array;
var _local7:int;
var _local8:int;
var _local9:Boolean;
var _local10:int;
var _local11:int;
var _local12:Bitmap;
_local6 = new Array();
_local7 = _arg5;
_local8 = 0;
while (_local8 < 11) {
_local10 = (_local7 % 10);
_local6.push(_local10);
_local7 = (_local7 / 10);
_local8++;
};
_local9 = false;
_local8 = (_local6.length - 1);
while (_local8--) {
_local11 = _local6[_local8];
if ((((_local9 == false)) && (!((_local11 == 0))))){
_local9 = true;
};
if (_local9){
RenderAt(_arg2, (_local11 + 48), _arg1, _arg3, _arg4);
_local12 = GetBitmap(_arg2, (_local11 + 48));
_arg3 = (_arg3 + _local12.width);
};
(_local8 >= 0);
};
return (_arg3);
}
public static function RenderAtScaled(_arg1:int, _arg2:int, _arg3:BitmapData, _arg4:Number, _arg5:Number, _arg6:Boolean=false, _arg7:Number=1){
var _local8:int;
_local8 = idList[_arg1];
graphicobjs[_local8].frames[_arg2].RenderAtScaled(_arg3, _arg4, _arg5, _arg6, _arg7);
}
public static function GetIdFromName(_arg1:String):int{
var _local2:int;
var _local3:String;
_local2 = 0;
while (_local2 < nameList.length) {
_local3 = nameList[_local2];
if (_local3 == _arg1){
return (_local2);
};
_local2++;
};
return (-1);
}
public static function RenderAtAdditive(_arg1:int, _arg2:int, _arg3:BitmapData, _arg4:Number, _arg5:Number, _arg6:Number){
var _local7:int;
_local7 = idList[_arg1];
graphicobjs[_local7].frames[_arg2].RenderAtAdditive(_arg3, _arg4, _arg5, _arg6);
}
public static function AddFont(_arg1:int, _arg2:TextFormat):void{
var _local3:DisplayObj;
_local3 = new DisplayObj(null, 0, false);
_local3.CreateFont(_arg2);
idList[_arg1] = count;
graphicobjs.push(_local3);
count++;
}
public static function UpdateOncePerFrame():Boolean{
var _local1:DisplayObj;
var _local2:int;
var _local3:int;
if (everythingDone){
return (true);
};
for each (_local1 in graphicobjs) {
if (_local1.ready == false){
if (_local1.mc != null){
_local2 = 0;
while (_local2 < 20) {
_local3 = _local1.CreateBitmapsFromMovieClip1(_local1.mc, _local1.flags);
totalFramesDone = (totalFramesDone + _local3);
if (_local3 == 0){
_local1.mc = null;
_local1.ready = true;
_local2 = 99999;
};
_local2++;
};
TitleScreenState.SetFrameUpdateText(totalFramesDone, totalFramesToDo);
return (false);
};
};
};
everythingDone = true;
return (true);
}
public static function RenderAtRot(_arg1:int, _arg2:int, _arg3:BitmapData, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Boolean){
var _local8:int;
_local8 = idList[_arg1];
if (_arg7){
graphicobjs[_local8].frames[_arg2].RenderAtRotBurned(_arg3, _arg4, _arg5, _arg6);
} else {
graphicobjs[_local8].frames[_arg2].RenderAtRot(_arg3, _arg4, _arg5, _arg6);
};
}
public static function RenderAtRotScaled(_arg1:int, _arg2:int, _arg3:BitmapData, _arg4:Number, _arg5:Number, _arg6:Boolean=false, _arg7:Number=1, _arg8:Number=0){
var _local9:int;
_local9 = idList[_arg1];
graphicobjs[_local9].frames[_arg2].RenderAtRotScaled(_arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
}
public static function RenderAt(_arg1:int, _arg2:int, _arg3:BitmapData, _arg4:Number, _arg5:Number, _arg6:Boolean=false){
var _local7:int;
_local7 = idList[_arg1];
graphicobjs[_local7].frames[_arg2].RenderAt(_arg3, _arg4, _arg5, _arg6);
}
public static function RenderAtRotScaledColTrans(_arg1:int, _arg2:int, _arg3:BitmapData, _arg4:Number, _arg5:Number, _arg6:Boolean=false, _arg7:Number=1, _arg8:Number=0, _arg9:ColorTransform=null){
var _local10:int;
_local10 = idList[_arg1];
graphicobjs[_local10].frames[_arg2].RenderAtRotScaledColTrans(_arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9);
}
public static function Add(_arg1:int, _arg2:DisplayObj, _arg3:String=""):void{
idList[_arg1] = count;
nameList[_arg1] = _arg3;
graphicobjs.push(_arg2);
count++;
}
public static function RenderAtFunction(_arg1:int, _arg2:int, _arg3:BitmapData, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:String){
var _local8:int;
_local8 = idList[_arg1];
graphicobjs[_local8].frames[_arg2].RenderAtFunction(_arg3, _arg4, _arg5, _arg6, _arg7);
}
public static function CaclulateTotalFrames(){
var _local1:int;
var _local2:DisplayObj;
_local1 = 0;
for each (_local2 in graphicobjs) {
if (_local2.mc != null){
_local1 = (_local1 + _local2.mc.totalFrames);
};
};
totalFramesToDo = _local1;
}
public static function CompleteBitmapCreation(){
var _local1:DisplayObj;
if (everythingDone){
return (true);
};
for each (_local1 in graphicobjs) {
if (_local1.ready == false){
if (_local1.mc != null){
_local1.CreateBitmapsFromMovieClip(_local1.mc, _local1.flags);
_local1.mc = null;
_local1.ready = true;
};
};
};
everythingDone = true;
}
public static function InitOnce(_arg1:Main):void{
main = _arg1;
graphicobjs = new Array();
idList = new Array(200);
nameList = new Array(200);
count = 0;
totalFramesDone = 0;
AddFont(gfx_font1, main.tf_scorespr);
AddFont(gfx_font2, main.tf_scorespr1);
AddFont(gfx_fontblack, main.tf_scoresprblack);
Add(gfx_backgroundscroll1, new DisplayObj(new level1_background(), 0, true));
Add(gfx_backgroundscroll2, new DisplayObj(new level2_background(), 0, true));
Add(gfx_backgroundscroll3, new DisplayObj(new level3_background(), 0, true));
Add(gfx_backgroundscroll4, new DisplayObj(new level4_background(), 0, true));
Add(gfx_backgroundscroll5, new DisplayObj(new level5_background(), 0, true));
Add(gfx_backgroundscroll6, new DisplayObj(new level6_background(), 0, true));
Add(gfx_backgroundscroll7, new DisplayObj(new level7_background(), 0, true));
Add(gfx_bloodparticle, new DisplayObj(new BloodParticle(), 0, false));
Add(gfx_gutsparticle, new DisplayObj(new GutsParticle(), 0, false));
Add(gfx_slingstone, new DisplayObj(new SlingStone(), 2, false), "SlingStone");
Add(gfx_enemy3_arrow, new DisplayObj(new Enemy3_arrow(), 2, false), "Enemy3_arrow");
Add(gfx_player_arrow, new DisplayObj(new arrow(), 2, false), "arrow");
Add(gfx_enemy4_magicbullet, new DisplayObj(new Enemy4_MagicBullet(), 2, false), "Enemy4_MagicBullet");
Add(gfx_fireball, new DisplayObj(new Enemy7_fireball(), 2, false), "Enemy7_fireball");
Add(gfx_fireballexplosion, new DisplayObj(new Enemy7_fireExplosion(), 2, false), "Enemy7_fireExplosion");
Add(gfx_pickup_health, new DisplayObj(new Pickup_Health(), 0, false), "Pickup_Health");
Add(gfx_pickup_gold, new DisplayObj(new Pickup_Gold(), 0, false), "Pickup_Gold");
Add(gfx_pickup_berzerker, new DisplayObj(new Pickup_Berzerker(), 0, false), "Pickup_Berzerker");
Add(gfx_interface_healthbar, new DisplayObj(new HealthBar(), 0, false));
Add(gfx_interface_berzerkerbar, new DisplayObj(new BerzerkerBar(), 0, false));
Add(gfx_interface_hudweapon, new DisplayObj(new HUD_weapon(), 0, false));
Add(gfx_carryweapon_sword, new DisplayObj(new weapon_sword(), 2, false));
Add(gfx_carryweapon_axe, new DisplayObj(new weapon_axe(), 2, false));
Add(gfx_carryweapon_flail, new DisplayObj(new weapon_flail(), 2, false));
Add(gfx_carryweapon_sling, new DisplayObj(new weapon_sling(), 2, false));
Add(gfx_carryweapon_longbow, new DisplayObj(new weapon_longbow(), 2, false));
Add(gfx_carryweapon_crossbow, new DisplayObj(new weapon_crossbow(), 2, false));
Add(gfx_player, new DisplayObj(new Player(), 2, false), "Player");
Add(gfx_enemy1, new DisplayObj(new Enemy1(), 2, true), "Enemy1");
Add(gfx_enemy2, new DisplayObj(new Enemy2(), 2, true), "Enemy2");
Add(gfx_enemy3, new DisplayObj(new Enemy3(), 2, true), "Enemy3");
Add(gfx_enemy4, new DisplayObj(new Enemy4(), 2, true), "Enemy4");
Add(gfx_enemy5, new DisplayObj(new Enemy5(), 2, true), "Enemy5");
Add(gfx_enemy6, new DisplayObj(new Enemy6(), 2, true), "Enemy6");
Add(gfx_enemy7, new DisplayObj(new Enemy7(), 2, false), "Enemy7");
Add(gfx_player_deadbits, new DisplayObj(new player_head_Dead(), 0, false));
Add(gfx_enemy1_deadbits, new DisplayObj(new Enemy1_deadBits(), 0, false), "Enemy1_deadBits");
Add(gfx_enemy2_deadbits, new DisplayObj(new Enemy2_deadBits(), 0, false), "Enemy2_deadBits");
Add(gfx_enemy3_deadbits, new DisplayObj(new Enemy3_deadBits(), 0, false), "Enemy3_deadBits");
Add(gfx_enemy4_deadbits, new DisplayObj(new Enemy4_deadBits(), 0, false), "Enemy4_deadBits");
Add(gfx_enemy5_deadbits, new DisplayObj(new Enemy5_deadBits(), 0, false), "Enemy5_deadBits");
Add(gfx_enemy6_deadbits, new DisplayObj(new Enemy6_deadBits(), 0, false), "Enemy6_deadBits");
Add(gfx_enemy7_deadbits, new DisplayObj(new Enemy7_deadBits(), 0, false), "Enemy7_deadBits");
Add(gfx_batpoo, new DisplayObj(new BatPoo(), 0, false), "BatPoo");
Add(gfx_magicsparkle, new DisplayObj(new magic_sparkle(), 0, false));
Add(gfx_magicsparkle2, new DisplayObj(new magic_sparkle2(), 0, false));
Add(gfx_berzerkscreen, new DisplayObj(new bezerk_screen(), 0, false));
Add(gfx_blood1, new DisplayObj(new blood1(), 2, false));
Add(gfx_blood2, new DisplayObj(new blood2(), 2, false));
Add(gfx_onscreenblood1, new DisplayObj(new onscreen_blood1(), 0, false));
Add(gfx_onscreenblood2, new DisplayObj(new onscreen_blood2(), 0, false));
Add(gfx_onscreenblood3, new DisplayObj(new onscreen_blood3(), 0, false));
Add(gfx_onscreenblood4, new DisplayObj(new onscreen_blood4(), 0, false));
Add(gfx_kill, new DisplayObj(new killmc(), 0, false));
Add(gfx_timerunderlay, new DisplayObj(new timerunderlay(), 0, false));
CaclulateTotalFrames();
}
public static function RenderAtColTrans(_arg1:int, _arg2:int, _arg3:BitmapData, _arg4:Number, _arg5:Number, _arg6:Boolean=false, _arg7:ColorTransform=null, _arg8:String=null){
var _local9:int;
_local9 = idList[_arg1];
graphicobjs[_local9].frames[_arg2].RenderAtColTrans(_arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
}
public static function GetXoffset(_arg1:int, _arg2:int):int{
var _local3:int;
_local3 = idList[_arg1];
return (graphicobjs[_local3].frames[_arg2].xoffsets[0]);
}
}
}//package
Section 55
//GutsParticle (GutsParticle)
package {
import flash.display.*;
public dynamic class GutsParticle extends MovieClip {
}
}//package
Section 56
//GutsPiece (GutsPiece)
package {
public class GutsPiece {
var zvel:Number;
var yvel:Number;
var xvel:Number;
var dir:Number;
var landed:Boolean;
var zpos:Number;
var ypos:Number;
var xpos:Number;
}
}//package
Section 57
//HealthBar (HealthBar)
package {
import flash.display.*;
public dynamic class HealthBar extends MovieClip {
}
}//package
Section 58
//HUD_weapon (HUD_weapon)
package {
import flash.display.*;
public dynamic class HUD_weapon extends MovieClip {
}
}//package
Section 59
//hurtenemy (hurtenemy)
package {
import flash.media.*;
public dynamic class hurtenemy extends Sound {
}
}//package
Section 60
//hurtknight (hurtknight)
package {
import flash.media.*;
public dynamic class hurtknight extends Sound {
}
}//package
Section 61
//KeyReader (KeyReader)
package {
import flash.events.*;
import flash.display.*;
public class KeyReader {
static const KEY_LEFT = 37;
static const KEY_UP = 38;
static const KEY_DOWN = 40;
static const KEY_3 = 51;
static const KEY_5 = 53;
static const KEY_7 = 55;
static const KEY_1 = 49;
static const KEY_2 = 50;
static const KEY_4 = 52;
static const KEY_6 = 54;
static const KEY_8 = 56;
static const KEY_9 = 57;
static const KEY_A = 65;
static const KEY_B = 66;
static const KEY_C = 67;
static const KEY_E = 69;
static const KEY_F = 70;
static const KEY_G = 71;
static const KEY_H = 72;
static const KEY_I = 73;
static const KEY_J = 74;
static const KEY_D = 68;
static const KEY_M = 77;
static const KEY_N = 78;
static const KEY_O = 79;
static const KEY_P = 80;
static const KEY_Q = 81;
static const KEY_R = 82;
static const KEY_L = 76;
static const KEY_T = 84;
static const KEY_U = 85;
static const KEY_V = 86;
static const KEY_W = 87;
static const KEY_X = 88;
static const KEY_Y = 89;
static const KEY_K = 75;
static const KEY_0 = 58;
static const KEY_Z = 90;
static const KEY_S = 83;
static const KEY_SPACE = 32;
static const KEY_RIGHT = 39;
static var keysPressed:Array;
static var keysDown:Array;
public static function Pressed(_arg1:int):Boolean{
return (keysPressed[_arg1]);
}
public static function Reset(){
var _local1:int;
_local1 = 0;
while (_local1 < 0x0100) {
keysDown[_local1] = int(0);
keysPressed[_local1] = Boolean(false);
_local1++;
};
}
static function keyUpListener(_arg1:KeyboardEvent):void{
var _local2:int;
_local2 = _arg1.keyCode;
keysDown[_local2] = 0;
}
public static function Down(_arg1:int):Boolean{
return (!((keysDown[_arg1] == 0)));
}
static function keyDownListener(_arg1:KeyboardEvent):void{
var _local2:int;
_local2 = _arg1.keyCode;
var _local3 = keysDown;
var _local4 = _local2;
var _local5 = (_local3[_local4] + 1);
_local3[_local4] = _local5;
}
public static function UpdateOncePerFrame():void{
var _local1:int;
_local1 = 0;
while (_local1 < 0x0100) {
if (keysDown[_local1] == 1){
keysPressed[_local1] = true;
var _local2 = keysDown;
var _local3 = _local1;
var _local4 = (_local2[_local3] + 1);
_local2[_local3] = _local4;
} else {
keysPressed[_local1] = false;
};
_local1++;
};
}
public static function InitOnce(_arg1:Stage){
var _local2:int;
_arg1.addEventListener(KeyboardEvent.KEY_DOWN, keyDownListener);
_arg1.addEventListener(KeyboardEvent.KEY_UP, keyUpListener);
_arg1.focus = _arg1;
keysDown = new Array(0x0100);
keysPressed = new Array(0x0100);
_local2 = 0;
while (_local2 < 0x0100) {
keysDown[_local2] = int(0);
keysPressed[_local2] = Boolean(false);
_local2++;
};
}
}
}//package
Section 62
//killenemy1 (killenemy1)
package {
import flash.media.*;
public dynamic class killenemy1 extends Sound {
}
}//package
Section 63
//killenemy2 (killenemy2)
package {
import flash.media.*;
public dynamic class killenemy2 extends Sound {
}
}//package
Section 64
//killmc (killmc)
package {
import flash.display.*;
public dynamic class killmc extends MovieClip {
}
}//package
Section 65
//Level (Level)
package {
public class Level {
public var notes:String;
public var backgroundID:int;
public var enemyGens:Array;
public var displayText:String;
public function Level(_arg1:int, _arg2:String, _arg3:String){
enemyGens = new Array();
backgroundID = _arg1;
notes = _arg2;
displayText = _arg3;
}
public function GetEnemyList():Array{
var _local1:Array;
var _local2:LevelEnemyGen;
_local1 = new Array();
for each (_local2 in enemyGens) {
_local1.push(_local2);
};
return (_local1);
}
}
}//package
Section 66
//level1_background (level1_background)
package {
import flash.display.*;
public dynamic class level1_background extends MovieClip {
}
}//package
Section 67
//level2_background (level2_background)
package {
import flash.display.*;
public dynamic class level2_background extends MovieClip {
}
}//package
Section 68
//level3_background (level3_background)
package {
import flash.display.*;
public dynamic class level3_background extends MovieClip {
}
}//package
Section 69
//level4_background (level4_background)
package {
import flash.display.*;
public dynamic class level4_background extends MovieClip {
}
}//package
Section 70
//level5_background (level5_background)
package {
import flash.display.*;
public dynamic class level5_background extends MovieClip {
}
}//package
Section 71
//level6_background (level6_background)
package {
import flash.display.*;
public dynamic class level6_background extends MovieClip {
}
}//package
Section 72
//level7_background (level7_background)
package {
import flash.display.*;
public dynamic class level7_background extends MovieClip {
}
}//package
Section 73
//LevelDef_Level1 (LevelDef_Level1)
package {
public class LevelDef_Level1 {
public static function Init(){
SetupScript.LineStart("", -7, 764, 0, "Collision", "", "", "");
SetupScript.LineAdd(77, 762, 0);
SetupScript.LineAdd(120, 763, 0);
SetupScript.LineAdd(191, 762, 0);
SetupScript.LineAdd(252, 749, 0);
SetupScript.LineAdd(299, 747, 0);
SetupScript.LineAdd(342, 746, 0);
SetupScript.LineAdd(387, 751, 0);
SetupScript.LineAdd(441, 760, 0);
SetupScript.LineAdd(473, 758, 0);
SetupScript.LineAdd(508, 767, 0);
SetupScript.LineAdd(555, 774, 0);
SetupScript.LineAdd(586, 773, 0);
SetupScript.LineAdd(621, 779, 0);
SetupScript.LineAdd(656, 783, 0);
SetupScript.LineAdd(695, 787, 0);
SetupScript.LineAdd(748, 793, 0);
SetupScript.LineAdd(825, 781, 0);
SetupScript.LineAdd(923, 776, 0);
SetupScript.LineAdd(948, 783, 0);
SetupScript.LineAdd(968, 779, 0);
SetupScript.LineAdd(992, 762, 0);
SetupScript.LineAdd(1015, 755, 0);
SetupScript.LineAdd(1065, 755, 0);
SetupScript.LineAdd(1091, 765, 0);
SetupScript.LineAdd(1127, 776, 0);
SetupScript.LineAdd(1186, 790, 0);
SetupScript.LineAdd(1209, 787, 0);
SetupScript.LineAdd(1267, 800, 0);
SetupScript.LineAdd(1296, 804, 0);
SetupScript.LineAdd(1317, 821, 0);
SetupScript.LineAdd(1345, 807, 0);
SetupScript.LineAdd(1378, 801, 0);
SetupScript.LineAdd(1433, 796, 0);
SetupScript.LineAdd(1463, 805, 0);
SetupScript.LineAdd(1492, 821, 0);
SetupScript.LineAdd(1540, 821, 0);
SetupScript.LineAdd(1585, 827, 0);
SetupScript.LineAdd(1640, 820, 0);
SetupScript.LineAdd(1677, 807, 0);
SetupScript.LineAdd(1708, 803, 0);
SetupScript.LineAdd(1761, 796, 0);
SetupScript.LineAdd(1820, 773, 0);
SetupScript.LineAdd(1831, 781, 0);
SetupScript.LineAdd(1873, 795, 0);
SetupScript.LineAdd(1938, 798, 0);
SetupScript.LineAdd(1988, 794, 0);
SetupScript.LineAdd(2044, 774, 0);
SetupScript.LineAdd(2076, 763, 0);
SetupScript.LineAdd(2135, 0x0303, 0);
SetupScript.LineAdd(2171, 780, 0);
SetupScript.LineAdd(2228, 781, 0);
SetupScript.LineAdd(2295, 780, 0);
SetupScript.LineAdd(2358, 788, 0);
SetupScript.LineAdd(2397, 781, 0);
SetupScript.LineAdd(2425, 782, 0);
SetupScript.LineAdd(2488, 793, 0);
SetupScript.LineAdd(2539, 794, 0);
SetupScript.LineAdd(2595, 792, 0);
SetupScript.LineAdd(2677, 793, 0);
SetupScript.LineAdd(2737, 791, 0);
SetupScript.LineAdd(2859, 788, 0);
SetupScript.LineEnd(false);
}
}
}//package
Section 74
//LevelDef1 (LevelDef1)
package {
public class LevelDef1 {
static var main:Main;
public static function Init(_arg1:Main){
var _local2:GameObj;
main = _arg1;
LevelDef_Level1.Init();
}
}
}//package
Section 75
//LevelEnemyGen (LevelEnemyGen)
package {
public class LevelEnemyGen {
var delay:int;
var max:int;
var typeName:String;
var speed:Number;
var index:int;
var aggression:Number;
var health:Number;
public function LevelEnemyGen(_arg1:String, _arg2:int, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number){
index = 0;
typeName = _arg1;
max = _arg2;
delay = (_arg3 * Defs.fps);
aggression = _arg4;
speed = _arg5;
health = _arg6;
}
}
}//package
Section 76
//levelintro (levelintro)
package {
import flash.display.*;
import flash.text.*;
public dynamic class levelintro extends MovieClip {
public var textLevelDescription:TextField;
public var textLevelName:TextField;
}
}//package
Section 77
//Levels (Levels)
package {
public class Levels {
static var list:Array;
public static function InitOnce(){
var _local1:XML;
var _local2:XML;
var _local3:XML;
var _local4:int;
var _local5:int;
var _local6:Level;
var _local7:LevelEnemyGen;
list = new Array();
_local1 = ExternalData.xml;
_local4 = 0;
while (_local4 < _local1.level.length()) {
_local2 = _local1.level[_local4];
_local6 = new Level(int(_local2.@background), _local2.@notes, _local2.@displaytext);
_local5 = 0;
while (_local5 < _local2.enemy.length()) {
_local3 = _local2.enemy[_local5];
_local7 = new LevelEnemyGen(_local3.@type, int(_local3.@max), Number(_local3.@delay), Number(_local3.@aggression), Number(_local3.@speed), Number(_local3.@health));
_local7.index = _local5;
_local6.enemyGens.push(_local7);
_local5++;
};
list.push(_local6);
_local4++;
};
}
public static function AddToLevelId(_arg1:int, _arg2:int):int{
_arg1 = (_arg1 + _arg2);
if (_arg1 < 0){
_arg1 = 0;
};
if (_arg1 >= list.length){
_arg1 = (list.length - 5);
};
return (_arg1);
}
}
}//package
Section 78
//Line (Line)
package {
import flash.geom.*;
public class Line {
public var udx:Number;
public var nx:Number;
public var ny:Number;
public var dir:Number;
public var udy:Number;
public var dy:Number;
public var y0:Number;
public var y1:Number;
public var dx:Number;
public var normalDir:Number;
public var length:Number;
public var boundingRect:Rectangle;
public var x0:Number;
public var x1:Number;
public function Line(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number){
x0 = _arg1;
y0 = _arg2;
x1 = _arg3;
y1 = _arg4;
CalcNormal();
CalcBoundingRect();
}
function CalcNormal():void{
dir = Math.atan2((y1 - y0), (x1 - x0));
normalDir = (dir - (Math.PI * 0.5));
nx = Math.cos(normalDir);
ny = Math.sin(normalDir);
dx = (x1 - x0);
dy = (y1 - y0);
length = Math.sqrt(((dx * dx) + (dy * dy)));
udx = Math.cos(dir);
udy = Math.sin(dir);
}
function CalcBoundingRect():void{
var _local1:Number;
var _local2:Number;
var _local3:Number;
var _local4:Number;
_local1 = x0;
_local2 = x1;
if (_local1 > _local2){
_local1 = x1;
_local2 = x0;
};
_local3 = y0;
_local4 = y1;
if (_local3 > _local4){
_local3 = y1;
_local4 = y0;
};
boundingRect = new Rectangle(_local1, _local3, ((_local2 - _local1) + 1), ((_local4 - _local3) + 1));
}
}
}//package
Section 79
//macehit (macehit)
package {
import flash.media.*;
public dynamic class macehit extends Sound {
}
}//package
Section 80
//magic_sparkle (magic_sparkle)
package {
import flash.display.*;
public dynamic class magic_sparkle extends MovieClip {
}
}//package
Section 81
//magic_sparkle2 (magic_sparkle2)
package {
import flash.display.*;
public dynamic class magic_sparkle2 extends MovieClip {
}
}//package
Section 82
//Main (Main)
package {
import flash.events.*;
import flash.display.*;
import flash.text.*;
import flash.utils.*;
import flash.ui.*;
public class Main extends MovieClip {
public var tf_scorespr:TextFormat;
public var tf_scorespr2:TextFormat;
var cheatMode:Boolean;
var levelTimer:Number;
var ftime:Number;
var framecounter:int;// = 0
var scrollY:Number;// = 0
public var tf_scorespr1:TextFormat;
private var screenB:Bitmap;
public var backgroundMC:MovieClip;
private var backScreenB:Bitmap;
var levelTimerMax:Number;
public var mochiScores;
public var screenBD:BitmapData;
public var backScreenBD:BitmapData;
var gameState:int;// = 0
var currentTime:Number;// = 0
var secondCounter:Number;// = 0
public var fps:Number;
public var tf_scoresprblack:TextFormat;
static const gameState_HIGHSCORES = 5;
static const gameState_TITLE = 0;
static const gameState_LEVEL_PLAY = 2;
public static var theStage:Stage;
static var theRoot:MovieClip;
public function Main(){
currentTime = 0;
gameState = gameState_TITLE;
scrollY = 0;
framecounter = 0;
secondCounter = 0;
super();
theRoot = this;
theStage = this.root.stage;
SetEverythingUpOnce();
}
function calcFrameTime(){
var _local1:Number;
_local1 = currentTime;
currentTime = getTimer();
if (currentTime < _local1){
_local1 = (currentTime - 100);
};
if (currentTime > (_local1 + (100 * 10))){
_local1 = (100 * 10);
};
ftime = ((1 / (1000 / Defs.fps)) * (currentTime - _local1));
framecounter++;
secondCounter = (secondCounter + (currentTime - _local1));
if (secondCounter > 1000){
fps = ((Number(framecounter) / secondCounter) * 1000);
framecounter = 0;
secondCounter = 0;
};
ftime = 1;
}
function appDeactivateHandler(_arg1:Event):void{
KeyReader.Reset();
}
private function CreateTextField(_arg1:TextFormat, _arg2:Number, _arg3:Number, _arg4:String):TextField{
var _local5:TextField;
_local5 = new TextField();
_local5.selectable = false;
_local5.embedFonts = true;
_local5.autoSize = TextFieldAutoSize.CENTER;
_local5.x = _arg2;
_local5.y = _arg3;
_local5.text = _arg4;
_local5.setTextFormat(_arg1);
addChild(_local5);
return (_local5);
}
function AddMovieClip(_arg1:Number, _arg2:Number, _arg3:MovieClip):MovieClip{
_arg3.x = _arg1;
_arg3.y = _arg2;
addChild(_arg3);
return (_arg3);
}
function InitLevel(){
InitStageForGame();
Particles.Reset();
MouseControl.Reset();
Particles.Reset();
GameObjects.ClearAll();
Game.InitLevel();
}
function run(_arg1:Event):void{
KeyReader.UpdateOncePerFrame();
GraphicObjects.UpdateOncePerFrame();
SoundPlayer.UpdateOncePerFrame();
if (Domain.IsLockedOut()){
};
calcFrameTime();
switch (gameState){
case gameState_TITLE:
TitleScreenState.Update(this);
break;
case gameState_HIGHSCORES:
break;
case gameState_LEVEL_PLAY:
RunLevel();
break;
};
}
function InitStageNoBackground(){
var _local1:int;
_local1 = (this.numChildren - 1);
while (_local1 >= 0) {
removeChildAt(_local1);
_local1--;
};
}
function SetEverythingUpOnce1():void{
theRoot = this;
theStage = this.root.stage;
addEventListener(Event.ENTER_FRAME, run);
MusicPlayer.InitOnce();
KeyReader.InitOnce(theStage);
MouseControl.InitOnce(theStage);
theStage.addEventListener(Event.DEACTIVATE, appDeactivateHandler);
SoundPlayer.InitOnce(this);
PauseMenu.InitOnce(this);
Particles.InitOnce(this, 10);
GameObjects.InitOnce(this, 1000);
InitDrawScreen();
InitFonts();
GraphicObjects.InitOnce(this);
InitStage();
Game.Init(this);
SetGameState(gameState_TITLE);
}
function RunTitle(){
}
function SetEverythingUpOnce():void{
ExternalData.InitOnce(SetEverythingUpOnce1);
trace("aaaa");
}
function InitFonts():void{
var _local1:Font;
_local1 = new Font1();
tf_scorespr = new TextFormat();
tf_scorespr1 = new TextFormat();
tf_scorespr2 = new TextFormat();
tf_scoresprblack = new TextFormat();
tf_scorespr.font = _local1.fontName;
tf_scorespr.size = 10;
tf_scorespr.color = 4294967295;
tf_scorespr1.font = _local1.fontName;
tf_scorespr1.size = 35;
tf_scorespr1.color = 4294967295;
tf_scorespr2.font = _local1.fontName;
tf_scorespr2.size = 10;
tf_scorespr2.color = 4294967295;
tf_scoresprblack.font = _local1.fontName;
tf_scoresprblack.size = 10;
tf_scoresprblack.color = 0;
}
function InitStage(){
var _local1:int;
_local1 = (this.numChildren - 1);
while (_local1 >= 0) {
removeChildAt(_local1);
_local1--;
};
addChild(screenB);
screenB.x = 0;
screenB.y = 0;
}
function Render(){
var _local1:Number;
var _local2:Number;
this.x = 0;
this.y = 0;
_local1 = 4;
_local2 = 4;
Game.Render();
}
function InitDrawScreen():void{
screenBD = new BitmapData(Defs.displayarea_w, Defs.displayarea_h, true, 0);
screenB = new Bitmap(screenBD);
backScreenBD = new BitmapData(Defs.displayarea_w, Defs.displayarea_h, false, 0);
backScreenB = new Bitmap(backScreenBD);
}
function SetGameState(_arg1:int):void{
gameState = _arg1;
Mouse.show();
switch (gameState){
case gameState_TITLE:
TitleScreenState.Init(this);
break;
case gameState_HIGHSCORES:
break;
case gameState_LEVEL_PLAY:
InitLevel();
break;
};
}
function InitStageForGame(){
var _local1:int;
_local1 = (this.numChildren - 1);
while (_local1 >= 0) {
removeChildAt(_local1);
_local1--;
};
addChild(backScreenB);
addChild(screenB);
screenB.x = 0;
screenB.y = 0;
}
function RunLevel(){
if (PauseMenu.IsPaused() == false){
Game.UpdateGameplay();
};
Render();
}
}
}//package
Section 83
//MouseControl (MouseControl)
package {
import flash.events.*;
import flash.display.*;
public class MouseControl {
public static var mouseVelX:Number = 0;
public static var mouseVelY:Number = 0;
public static var mouseOldPosX:Number = 0;
public static var mouseOldPosY:Number = 0;
public static var mousePosX:Number = 0;
public static var mousePosY:Number = 0;
public static var buttonPressed:Boolean = false;
public static var buttonReleased:Boolean = false;
public static function MouseHandler(_arg1:MouseEvent):void{
mousePosX = _arg1.stageX;
mousePosY = _arg1.stageY;
mouseVelX = (mousePosX - mouseOldPosX);
mouseVelY = (mousePosY - mouseOldPosY);
mouseOldPosX = mousePosX;
mouseOldPosY = mousePosY;
}
public static function InitOnce(_arg1:Stage):void{
_arg1.addEventListener(MouseEvent.MOUSE_MOVE, MouseHandler);
_arg1.addEventListener(MouseEvent.MOUSE_DOWN, MouseClickHandler);
_arg1.addEventListener(MouseEvent.MOUSE_UP, MouseUpHandler);
_arg1.addEventListener(MouseEvent.MOUSE_WHEEL, MouseWheelHandler);
}
public static function MouseUpHandler(_arg1:MouseEvent):void{
buttonPressed = false;
buttonReleased = true;
}
public static function MouseWheelHandler(_arg1:MouseEvent):void{
Game.HandleMouseWheel(_arg1.delta);
}
public static function Reset():void{
buttonPressed = false;
buttonReleased = false;
}
public static function MouseClickHandler(_arg1:MouseEvent):void{
buttonPressed = true;
buttonReleased = false;
}
}
}//package
Section 84
//Music_InGame1 (Music_InGame1)
package {
import flash.media.*;
public dynamic class Music_InGame1 extends Sound {
}
}//package
Section 85
//Music_InGame2 (Music_InGame2)
package {
import flash.media.*;
public dynamic class Music_InGame2 extends Sound {
}
}//package
Section 86
//Music_InGame3 (Music_InGame3)
package {
import flash.media.*;
public dynamic class Music_InGame3 extends Sound {
}
}//package
Section 87
//Music_Shop (Music_Shop)
package {
import flash.media.*;
public dynamic class Music_Shop extends Sound {
}
}//package
Section 88
//MusicPlayer (MusicPlayer)
package {
import flash.media.*;
public class MusicPlayer {
static var musicChannel:SoundChannel = null;
static var musicSound1:Sound;
static var musicSoundTransform:SoundTransform;
static var musicSound:Sound;
static var musicSoundTransform1:SoundTransform;
static var lastMusicID = -1;
static var musicChannel1:SoundChannel = null;
static var currentMusicID:int = -1;
static var doMusic:Boolean = true;
public static function PauseMusic(){
musicChannel.stop();
}
public static function StartMusic(_arg1:int){
if (doMusic == false){
return;
};
if (musicChannel != null){
musicChannel.stop();
};
if (musicChannel1 != null){
musicChannel1.stop();
};
if (_arg1 == 0){
musicSoundTransform = new SoundTransform(0.75, 0);
musicSound = new Music_Shop();
musicChannel = musicSound.play(0, 999999, musicSoundTransform);
};
if (_arg1 == 3){
musicSoundTransform = new SoundTransform(0.5, 0);
musicSound = new Music_InGame1();
musicChannel = musicSound.play(0, 999999, musicSoundTransform);
};
if (_arg1 == 1){
musicSoundTransform = new SoundTransform(1.6, 0);
musicSound = new Music_InGame2();
musicChannel = musicSound.play(0, 999999, musicSoundTransform);
};
if (_arg1 == 2){
musicSoundTransform = new SoundTransform(0.75, 0);
musicSound = new Music_InGame3();
musicChannel = musicSound.play(0, 999999, musicSoundTransform);
};
lastMusicID = _arg1;
}
public static function InitOnce():void{
doMusic = true;
lastMusicID = -1;
currentMusicID = -1;
}
public static function ResumeMusic(){
currentMusicID = (lastMusicID - 1);
StartMusic(lastMusicID);
}
}
}//package
Section 89
//ObjAction (ObjAction)
package {
public class ObjAction {
var done:Boolean;
var param0:Number;
var time:int;
var actionFunction:Function;
public function ObjAction(_arg1:int, _arg2:Function, _arg3:Number){
time = _arg1;
actionFunction = _arg2;
done = false;
param0 = _arg3;
}
}
}//package
Section 90
//ObjectDeath (ObjectDeath)
package {
public class ObjectDeath {
var graphicID:int;
var numBloodMin:int;
var pieces:Array;
var numBloodMax:int;
var numGutsMax:int;
var numGutsMin:int;
public function ObjectDeath(){
numBloodMin = 0;
numBloodMax = 0;
numGutsMin = 0;
numGutsMax = 0;
graphicID = 0;
pieces = new Array();
}
public function AddPiece(_arg1:Number, _arg2:Number, _arg3:int, _arg4:int){
var _local5:ObjectDeathPiece;
_local5 = new ObjectDeathPiece();
_local5.x = _arg1;
_local5.y = _arg2;
_local5.frame = _arg3;
_local5.spurt = _arg4;
pieces.push(_local5);
}
}
}//package
Section 91
//ObjectDeathPiece (ObjectDeathPiece)
package {
public class ObjectDeathPiece {
var spurt:int;
var frame:int;
var x:Number;
var y:Number;
}
}//package
Section 92
//ObjectDef (ObjectDef)
package {
import flash.geom.*;
public class ObjectDef {
var NumParamG:Number;
var healthBarOffset:Number;
var dodgeMax:Number;
var booty_num:int;
var damage:Number;
var score:int;
var soundTypeName:String;
var initVar0:String;
var initVar1:String;
var dodgeDist:Number;
var initFuncName:String;
var offsetX:Number;
var offsetY:Number;
var pathAnimType:int;
var booty_type:int;
var type:int;
var animDefs:Array;
var index:int;
var particleExplodeID:int;
var vulnerableColRects:Array;
var NumParamA:Number;
var NumParamB:Number;
var NumParamC:Number;
var NumParamD:Number;
var NumParamF:Number;
var maxHealth:Number;
var NumParamH:Number;
var dodgeFlag:Boolean;
var NumParamE:Number;
var collisionCircleOffsets:Array;
var exportName:String;
var colRects:Array;
var collisionCircleRadii:Array;
var objectDeath:ObjectDeath;
var shieldColRects:Array;
var dodgeMin:Number;
var shotControllers:Array;
public function ObjectDef(_arg1:int, _arg2:String, _arg3:int, _arg4:Rectangle){
index = _arg1;
animDefs = new Array();
colRects = new Array();
shieldColRects = new Array();
vulnerableColRects = new Array();
collisionCircleOffsets = new Array();
collisionCircleRadii = new Array();
exportName = _arg2;
type = _arg3;
colRects.push(_arg4.clone());
maxHealth = 1;
initFuncName = "";
shotControllers = new Array();
particleExplodeID = 0;
NumParamA = 0;
NumParamB = 0;
NumParamC = 0;
NumParamD = 0;
NumParamE = 0;
NumParamF = 0;
NumParamG = 0;
NumParamH = 0;
booty_num = 0;
booty_type = 0;
score = 0;
dodgeFlag = false;
offsetX = 0;
offsetY = 0;
objectDeath = null;
initVar0 = "";
initVar1 = "";
damage = 0;
soundTypeName = "";
healthBarOffset = 0;
}
public function SetParticle(_arg1:int){
particleExplodeID = _arg1;
}
public function SetInitFunc(_arg1:String, _arg2:String, _arg3:String){
initFuncName = _arg1;
initVar0 = _arg2;
initVar1 = _arg3;
}
public function SetOffset(_arg1:Number, _arg2:Number){
offsetX = _arg1;
offsetY = _arg2;
}
public function GetAnimFromName(_arg1:String):AnimDef{
var _local2:int;
var _local3:int;
_local2 = animDefs.length;
_local3 = 0;
while (_local3 < _local2) {
if (animDefs[_local3].name == _arg1){
return (animDefs[_local3]);
};
_local3++;
};
trace(((("ERROR: Can't find anim name " + _arg1) + " on object ") + exportName));
return (null);
}
public function AddShotController(_arg1:String, _arg2:int, _arg3:int, _arg4:Number, _arg5:Number, _arg6:Number):ShotController{
var _local7:ShotController;
_local7 = new ShotController();
_local7.Set(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6);
shotControllers.push(_local7);
return (_local7);
}
public function SetInitParams(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Number){
NumParamA = _arg1;
NumParamB = _arg2;
NumParamC = _arg3;
NumParamD = _arg4;
NumParamE = _arg5;
NumParamF = _arg6;
NumParamG = _arg7;
NumParamH = _arg8;
}
public function AddVulnerableColRect(_arg1:Rectangle){
vulnerableColRects.push(_arg1.clone());
}
public function SetPathAnimType(_arg1:int){
pathAnimType = _arg1;
}
public function SetDodge(_arg1:Number, _arg2:Number, _arg3:Number){
dodgeFlag = true;
dodgeDist = _arg1;
dodgeMin = _arg2;
dodgeMax = _arg3;
}
public function GetAnimIDFromName(_arg1:String):int{
var _local2:int;
var _local3:int;
_local2 = animDefs.length;
_local3 = 0;
while (_local3 < _local2) {
if (animDefs[_local3].name == _arg1){
return (animDefs[_local3].graphicID);
};
_local3++;
};
return (0);
}
public function SetBooty(_arg1:int, _arg2:int, _arg3:int){
booty_num = _arg1;
booty_type = _arg2;
score = _arg3;
}
public function AddColRect(_arg1:Rectangle){
colRects.push(_arg1.clone());
}
public function DoesAnimIDExist(_arg1:String):Boolean{
var _local2:int;
var _local3:int;
_local2 = animDefs.length;
_local3 = 0;
while (_local3 < _local2) {
if (animDefs[_local3].name == _arg1){
return (true);
};
_local3++;
};
return (false);
}
public function SetDamage(_arg1:Number){
damage = _arg1;
}
public function AddAnim(_arg1:AnimDef){
animDefs.push(_arg1);
}
public function SetHealthBarOffset(_arg1:Number){
healthBarOffset = _arg1;
}
public function AddShieldColRect(_arg1:Rectangle){
shieldColRects.push(_arg1.clone());
}
public function SetHealth(_arg1:Number){
maxHealth = _arg1;
}
public function AddCollisionCircle(_arg1:Number, _arg2:Number, _arg3:Number){
collisionCircleOffsets.push(new Point(_arg1, _arg2));
collisionCircleRadii.push(_arg3);
}
}
}//package
Section 93
//ObjectDefs (ObjectDefs)
package {
import flash.geom.*;
public class ObjectDefs {
static var list:Array;
public static function Init(){
list = new Array();
AddFromXml();
}
public static function AddFromXml(){
var _local1:XML;
var _local2:XML;
var _local3:ObjectDef;
var _local4:Rectangle;
var _local5:int;
var _local6:int;
var _local7:int;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:XML;
var _local13:AnimDef;
var _local14:XML;
var _local15:XML;
var _local16:XML;
var _local17:ShotController;
var _local18:XML;
var _local19:ObjectDeath;
var _local20:XML;
_local1 = ExternalData.xml;
_local5 = 0;
while (_local5 < _local1.objdef.length()) {
_local2 = _local1.objdef[_local5];
_local8 = Number(_local2.collisionrect.@x0);
_local9 = Number(_local2.collisionrect.@y0);
_local10 = (Number(_local2.collisionrect.@x1) - _local8);
_local11 = Number((_local2.collisionrect.@y1 - _local9));
_local4 = new Rectangle(_local8, _local9, _local10, _local11);
_local3 = new ObjectDef(_local5, _local2.@name, 0, _local4);
if (_local2.shieldcollisionrect[0] == undefined){
} else {
_local8 = Number(_local2.shieldcollisionrect.@x0);
_local9 = Number(_local2.shieldcollisionrect.@y0);
_local10 = (Number(_local2.shieldcollisionrect.@x1) - _local8);
_local11 = Number((_local2.shieldcollisionrect.@y1 - _local9));
_local4 = new Rectangle(_local8, _local9, _local10, _local11);
_local3.AddShieldColRect(_local4);
};
if (_local2.vulnerablecollisionrect[0] == undefined){
} else {
_local8 = Number(_local2.vulnerablecollisionrect.@x0);
_local9 = Number(_local2.vulnerablecollisionrect.@y0);
_local10 = (Number(_local2.vulnerablecollisionrect.@x1) - _local8);
_local11 = Number((_local2.vulnerablecollisionrect.@y1 - _local9));
_local4 = new Rectangle(_local8, _local9, _local10, _local11);
_local3.AddVulnerableColRect(_local4);
};
if (_local2.soundtype[0] != undefined){
_local3.soundTypeName = _local2.soundtype.@name;
};
if (_local2.healthbar[0] != undefined){
_local3.SetHealthBarOffset(Number(_local2.healthbar.@y));
};
_local3.SetInitFunc(_local2.control.@initfunc, _local2.control.@var0, _local2.control.var1);
_local3.SetParticle(int(_local2.control.@particleid));
_local3.SetInitParams(Number(_local2.control.@a), Number(_local2.control.@b), Number(_local2.control.@c), Number(_local2.control.@d), Number(_local2.control.@e), Number(_local2.control.@f), Number(_local2.control.@g), Number(_local2.control.@h));
_local3.SetHealth(Number(_local2.data.@health));
_local3.SetDamage(Number(_local2.data.@damage));
_local6 = 0;
while (_local6 < _local2.anim.length()) {
_local12 = _local2.anim[_local6];
_local13 = new AnimDef(_local12.@id, GraphicObjects.GetIdFromName(_local12.@graphic), int(_local12.@f0), int(_local12.@f1), Number(_local12.@speed));
_local7 = 0;
while (_local7 < _local12.event.length()) {
_local14 = _local12.event[_local7];
_local13.AddEvent(new AnimEvent(int(_local14.@frame), _local14.@func));
_local7++;
};
_local3.AddAnim(_local13);
_local6++;
};
if (_local2.dodge.length() != 0){
_local3.SetDodge(Number(_local2.dodge.@dist), Number(_local2.dodge.@min), Number(_local2.dodge.@max));
};
if (_local2.offset.length() != 0){
_local3.SetOffset(Number(_local2.offset.@x), Number(_local2.offset.@y));
};
_local6 = 0;
while (_local6 < _local2.booty.length()) {
_local15 = _local2.booty[_local6];
_local3.SetBooty(int(_local15.@num), int(_local15.@type), int(_local15.@score));
_local6++;
};
_local6 = 0;
while (_local6 < _local2.shotcontroller.length()) {
_local16 = _local2.shotcontroller[_local6];
_local17 = _local3.AddShotController(_local16.@bullettype, (Number(_local16.@minfreq) * Defs.fps2), (Number(_local16.@maxfreq) * Defs.fps2), Number(_local16.@speed), 0, 0);
_local7 = 0;
while (_local7 < _local16.shot.length()) {
_local18 = _local16.shot[_local7];
_local17.AddShot(_local18.@type, Number(_local18.@offset), Number(_local18.@delay));
_local7++;
};
if (_local16.offset.length() != 0){
_local17.SetFireOffset(Number(_local16.offset.@x), Number(_local16.offset.@y));
};
_local6++;
};
if (_local2.death.length() != 0){
_local19 = new ObjectDeath();
_local19.numBloodMin = int(_local2.death.@bloodmin);
_local19.numBloodMax = int(_local2.death.@bloodmax);
_local19.numGutsMin = int(_local2.death.@gutsmin);
_local19.numGutsMax = int(_local2.death.@gutsmax);
_local19.graphicID = GraphicObjects.GetIdFromName(_local2.death.@graphic);
_local6 = 0;
while (_local6 < _local2.death.piece.length()) {
_local20 = _local2.death.piece[_local6];
_local19.AddPiece(Number(_local20.@x), Number(_local20.@y), int(_local20.@frame), int(_local20.@spurt));
_local6++;
};
_local3.objectDeath = _local19;
};
list.push(_local3);
_local5++;
};
}
public static function GetObjectDefByExportName(_arg1:String){
var _local2:ObjectDef;
var _local3:int;
var _local4:int;
_local4 = list.length;
_local3 = 0;
while (_local3 < _local4) {
_local2 = list[_local3];
if (_local2.exportName == _arg1){
return (_local2);
};
_local3++;
};
trace(("ERROR: ObjectDefs can't find object exportname " + _arg1));
return (null);
}
}
}//package
Section 94
//onscreen_blood1 (onscreen_blood1)
package {
import flash.display.*;
public dynamic class onscreen_blood1 extends MovieClip {
}
}//package
Section 95
//onscreen_blood2 (onscreen_blood2)
package {
import flash.display.*;
public dynamic class onscreen_blood2 extends MovieClip {
}
}//package
Section 96
//onscreen_blood3 (onscreen_blood3)
package {
import flash.display.*;
public dynamic class onscreen_blood3 extends MovieClip {
}
}//package
Section 97
//onscreen_blood4 (onscreen_blood4)
package {
import flash.display.*;
public dynamic class onscreen_blood4 extends MovieClip {
}
}//package
Section 98
//Particle (Particle)
package {
import flash.display.*;
class Particle {
var graphicID:int;
public var yvel:Number;
var active:Boolean;
var maxframe:int;
var dir:Number;
var zpos:Number;
var controlMode:int;
public var xvel:Number;
var ypos:Number;
var updateFunction:Function;
var timer:Number;
var speed:Number;
var scale:Number;
var startx:Number;
var starty:Number;
var zpos2:Number;
var xpos:Number;
var alpha:Number;
public var zvel:Number;
var yacc:Number;
var alphaAdd:Number;
var frame:Number;
var frameVel:Number;
var visible:Boolean;
var color:uint;
var counter:int;
function RenderAt(_arg1:BitmapData, _arg2:Number, _arg3:Number, _arg4:Number){
var _local5:Number;
_local5 = 1;
_local5 = (_local5 + (zpos * 0.005));
if (((!((dir == 0))) || (!((_local5 == 1))))){
GraphicObjects.RenderAtRotScaled(graphicID, frame, _arg1, _arg2, (_arg3 + _arg4), false, _local5, dir);
} else {
GraphicObjects.RenderAt(graphicID, frame, _arg1, _arg2, (_arg3 + _arg4), false);
};
}
function PlayAnimation():Boolean{
frame = (frame + frameVel);
if (frame >= maxframe){
frame = maxframe;
return (true);
};
return (false);
}
function UpdateVelsTimer(){
xpos = (xpos + xvel);
ypos = (ypos + yvel);
timer--;
if (timer <= 0){
active = false;
};
}
function Render():void{
var _local1:Number;
var _local2:Number;
var _local3:BitmapData;
var _local4:Number;
var _local5:Number;
var _local6:Number;
_local1 = Game.scrollX;
_local2 = Game.scrollY;
_local3 = Game.main.screenBD;
_local4 = (xpos - _local1);
_local5 = (ypos - _local2);
_local6 = zpos;
trace(((((_local4 + " ") + _local5) + " ") + _local6));
}
function RenderToBackground():void{
RenderAt(Game.backgroundBD, xpos, ypos, zpos);
}
function CycleAnimation():Boolean{
frame = (frame + frameVel);
if (frame >= maxframe){
frame = 0;
return (true);
};
return (false);
}
function UpdateAnimAndStop(){
xpos = (xpos + xvel);
ypos = (ypos + yvel);
if (PlayAnimation()){
active = false;
};
}
}
}//package
Section 99
//Particles (Particles)
package {
import flash.geom.*;
import flash.display.*;
public class Particles {
public static const type_dust = 0;
static var max:int;
static var list:Array;
static var main:Main;
static var nextIndex:int;
public function Particles():void{
}
public static function Add(_arg1:Number, _arg2:Number):Particle{
var _local3:Number;
var _local4:Number;
var _local5:Particle;
_local5 = list[nextIndex];
nextIndex++;
if (nextIndex >= max){
nextIndex = 0;
};
_local5.active = true;
_local5.timer = 0;
_local5.alpha = 1;
_local5.alphaAdd = 0;
_local5.visible = true;
_local5.xpos = _arg1;
_local5.ypos = _arg2;
_local5.scale = 1;
_local5.dir = 0;
_local5.zpos = 0;
return (_local5);
}
public static function GetNextIndex():int{
return (nextIndex);
}
public static function Reset(){
var _local1:int;
nextIndex = 0;
_local1 = 0;
while (_local1 < max) {
list[_local1].active = false;
_local1++;
};
}
public static function Update(_arg1:Number){
var _local2:int;
var _local3:Particle;
_local2 = 0;
while (_local2 < max) {
_local3 = list[_local2];
if (_local3.active == true){
_local3.updateFunction();
};
_local2++;
};
}
public static function InitOnce(_arg1:Main, _arg2:int):void{
var _local3:int;
main = _arg1;
max = _arg2;
nextIndex = 0;
list = new Array(max);
_local3 = 0;
while (_local3 < max) {
list[_local3] = new Particle();
list[_local3].active = false;
_local3++;
};
}
public static function CountActive():int{
var _local1:int;
var _local2:int;
_local1 = 0;
_local2 = 0;
while (_local2 < max) {
if (list[_local2].active){
_local1++;
};
_local2++;
};
return (_local1);
}
public static function Render(_arg1:Main){
var _local2:Number;
var _local3:Number;
var _local4:BitmapData;
var _local5:Number;
var _local6:int;
var _local7:Particle;
var _local8:Number;
var _local9:Number;
var _local10:Number;
_local2 = Game.scrollX;
_local3 = Game.scrollY;
_local4 = _arg1.screenBD;
_local6 = 0;
while (_local6 < max) {
_local7 = list[_local6];
if (((_local7.active) && (_local7.visible))){
_local8 = (_local7.xpos - _local2);
_local9 = (_local7.ypos - _local3);
_local10 = _local7.zpos;
_local7.RenderAt(_local4, _local8, _local9, _local10);
};
_local6++;
};
}
}
}//package
Section 100
//PauseMenu (PauseMenu)
package {
import flash.events.*;
import flash.geom.*;
import flash.display.*;
import flash.text.*;
import flash.net.*;
import flash.ui.*;
public class PauseMenu {
static var active:Boolean;
static var pauseMC:MovieClip;
static var main:Main;
public function PauseMenu():void{
}
public static function buttonQuitPressed(_arg1:MouseEvent){
Unpause();
Game.main.SetGameState(Main.gameState_TITLE);
}
public static function buttonSoundPressed(_arg1:MouseEvent){
var _local2:Boolean;
_local2 = MusicPlayer.doMusic;
if (_local2 == true){
MusicPlayer.PauseMusic();
MusicPlayer.doMusic = false;
} else {
MusicPlayer.doMusic = true;
MusicPlayer.ResumeMusic();
};
_local2 = SoundPlayer.doSFX;
SoundPlayer.doSFX = (_local2 == false);
if (MusicPlayer.doMusic){
pauseMC.selectedSound.visible = true;
} else {
pauseMC.selectedSound.visible = false;
};
}
public static function buttonContinuePressed(_arg1:MouseEvent){
Unpause();
}
public static function buttonHelpPressed(_arg1:MouseEvent){
TitleScreenState.InitHelpText1();
}
public static function InitOnce(_arg1:Main):void{
main = _arg1;
active = false;
}
public static function Pause():void{
Game.pause = true;
Mouse.show();
pauseMC = TitleScreenState.mc_PauseScreen;
main.addChild(pauseMC);
pauseMC.x = 320;
pauseMC.y = 240;
pauseMC.buttonSound.addEventListener(MouseEvent.CLICK, buttonSoundPressed, false, 0, true);
pauseMC.buttonQuit.addEventListener(MouseEvent.CLICK, buttonQuitPressed, false, 0, true);
pauseMC.buttonContinue.addEventListener(MouseEvent.CLICK, buttonContinuePressed, false, 0, true);
pauseMC.buttonMoreGames.addEventListener(MouseEvent.CLICK, TitleScreenState.buttonArmorGamesPressed, false, 0, true);
active = true;
if (MusicPlayer.doMusic){
pauseMC.selectedSound.visible = true;
} else {
pauseMC.selectedSound.visible = false;
};
}
public static function Unpause():void{
active = false;
Game.main.removeChild(pauseMC);
pauseMC = null;
KeyReader.InitOnce(Game.main.stage);
Game.pause = false;
}
public static function IsPaused():Boolean{
return (active);
}
}
}//package
Section 101
//PauseScreen (PauseScreen)
package {
import flash.display.*;
public dynamic class PauseScreen extends MovieClip {
public var selectedSound:MovieClip;
public var buttonMoreGames:SimpleButton;
public var buttonQuit:SimpleButton;
public var buttonContinue:SimpleButton;
public var buttonSound:SimpleButton;
}
}//package
Section 102
//Pickup_Berzerker (Pickup_Berzerker)
package {
import flash.display.*;
public dynamic class Pickup_Berzerker extends MovieClip {
}
}//package
Section 103
//Pickup_Gold (Pickup_Gold)
package {
import flash.display.*;
public dynamic class Pickup_Gold extends MovieClip {
}
}//package
Section 104
//Pickup_Health (Pickup_Health)
package {
import flash.display.*;
public dynamic class Pickup_Health extends MovieClip {
}
}//package
Section 105
//pickupmoney (pickupmoney)
package {
import flash.media.*;
public dynamic class pickupmoney extends Sound {
}
}//package
Section 106
//Player (Player)
package {
import flash.display.*;
public dynamic class Player extends MovieClip {
public var swordend:MovieClip;
public var head:MovieClip;
}
}//package
Section 107
//player_head_Dead (player_head_Dead)
package {
import flash.display.*;
public dynamic class player_head_Dead extends MovieClip {
}
}//package
Section 108
//playerhit0 (playerhit0)
package {
import flash.media.*;
public dynamic class playerhit0 extends Sound {
}
}//package
Section 109
//playerhit1 (playerhit1)
package {
import flash.media.*;
public dynamic class playerhit1 extends Sound {
}
}//package
Section 110
//playerhit2 (playerhit2)
package {
import flash.media.*;
public dynamic class playerhit2 extends Sound {
}
}//package
Section 111
//playerhit3 (playerhit3)
package {
import flash.media.*;
public dynamic class playerhit3 extends Sound {
}
}//package
Section 112
//PlayerWeapon (PlayerWeapon)
package {
public class PlayerWeapon {
var name:String;
var cost:int;
var objName2:String;
var objName3:String;
var currentLevel:int;
var objName:String;
var owned:Boolean;
var soundID:int;
var levels:Array;
public function PlayerWeapon(_arg1:String, _arg2:String, _arg3:String, _arg4:String, _arg5:int){
name = _arg1;
objName = _arg2;
objName2 = _arg3;
objName3 = _arg4;
cost = _arg5;
levels = new Array();
owned = false;
currentLevel = 0;
soundID = 0;
}
public function GetDamage():Number{
var _local1:PlayerWeaponLevel;
if (owned == false){
return (0);
};
_local1 = levels[currentLevel];
return (_local1.damage);
}
public function CanUpgrade():Boolean{
var _local1:PlayerWeaponLevel;
if (owned == false){
return (false);
};
if (currentLevel == 2){
return (false);
};
_local1 = levels[(currentLevel + 1)];
if (Game.cash < _local1.cost){
return (false);
};
return (true);
}
public function Buy():void{
Game.cash = (Game.cash - cost);
owned = true;
currentLevel = 0;
}
public function CanBuy():Boolean{
if (owned == true){
return (false);
};
if (Game.cash < cost){
return (false);
};
return (true);
}
public function GetUpgradeCost():int{
var _local1:PlayerWeaponLevel;
if (owned == false){
return (0);
};
if (currentLevel == 2){
return (0);
};
_local1 = levels[(currentLevel + 1)];
return (_local1.cost);
}
public function Upgrade():void{
var _local1:PlayerWeaponLevel;
if (currentLevel > 1){
return;
};
_local1 = levels[(currentLevel + 1)];
Game.cash = (Game.cash - _local1.cost);
currentLevel++;
}
}
}//package
Section 113
//PlayerWeaponGroup (PlayerWeaponGroup)
package {
public class PlayerWeaponGroup {
var timer:int;
var reloadTime:int;
var name:String;
var fireSoundID:int;
var weapons:Array;
var id:int;
var firerate:int;
var speed:Number;
var mode:int;
var shotTime:int;
var frame:int;
var damage:Number;
var shotDim:int;
var shots:Number;
var maxShots:int;
var shotDimRate:Number;
public function PlayerWeaponGroup(){
id = 0;
mode = 0;
timer = 0;
weapons = new Array();
shots = 0;
maxShots = 0;
reloadTime = 0;
shotDim = 0;
fireSoundID = 0;
frame = 0;
name = "";
damage = 0;
firerate = 0;
speed = 0;
shotTime = 0;
}
}
}//package
Section 114
//PlayerWeaponLevel (PlayerWeaponLevel)
package {
public class PlayerWeaponLevel {
var cost:int;
var speed:Number;
var damage:Number;
var id:int;
}
}//package
Section 115
//PlayerWeapons (PlayerWeapons)
package {
public class PlayerWeapons {
public static var weaponList:Array;
public static function InitOnce(){
var _local1:XML;
var _local2:XML;
var _local3:int;
var _local4:int;
var _local5:PlayerWeapon;
var _local6:XML;
var _local7:PlayerWeaponLevel;
weaponList = new Array();
_local1 = ExternalData.xml;
_local3 = 0;
while (_local3 < _local1.playerweapon.length()) {
_local2 = _local1.playerweapon[_local3];
_local5 = new PlayerWeapon(_local2.@name, _local2.@objname1, _local2.@objname2, _local2.@objname3, int(_local2.@cost));
_local5.soundID = SoundPlayer.GetId(_local2.sound[0].@name);
_local4 = 0;
while (_local4 < _local2.level.length()) {
_local6 = _local2.level[_local4];
_local7 = new PlayerWeaponLevel();
_local7.id = int(_local6.@id);
_local7.damage = Number(_local6.@damage);
_local7.speed = Number(_local6.@speed);
_local7.cost = int(_local6.@cost);
_local5.levels.push(_local7);
_local4++;
};
weaponList.push(_local5);
_local3++;
};
weaponList[3].owned = true;
}
public static function NextWeapon(_arg1:int, _arg2:int):int{
var _local3:int;
var _local4:PlayerWeapon;
_local3 = 0;
while (_local3 < weaponList.length) {
_arg2 = (_arg2 + _arg1);
if (_arg2 >= weaponList.length){
_arg2 = 0;
};
if (_arg2 < 0){
_arg2 = (weaponList.length - 1);
};
_local4 = weaponList[_arg2];
if (_local4.owned){
return (_arg2);
};
_local3++;
};
return (_arg2);
}
public static function SetWeaponNumber(_arg1:int, _arg2:int):int{
var _local3:PlayerWeapon;
_local3 = weaponList[_arg1];
if (_local3.owned){
return (_arg1);
};
return (_arg2);
}
}
}//package
Section 116
//Point3 (Point3)
package {
public class Point3 {
public var x:Number;
public var y:Number;
public var z:Number;
public function Point3(_arg1:Number, _arg2:Number, _arg3:Number){
x = _arg1;
y = _arg2;
z = _arg3;
}
public function Normalize(){
var _local1:Number;
_local1 = Math.sqrt((((x * x) + (y * y)) + (z * z)));
x = (x / _local1);
y = (y / _local1);
z = (z / _local1);
}
public function Magnitude():Number{
var _local1:Number;
_local1 = Math.sqrt((((x * x) + (y * y)) + (z * z)));
return (_local1);
}
}
}//package
Section 117
//Poly (Poly)
package {
import flash.geom.*;
import flash.display.*;
public class Poly {
var param0:String;
var param1:String;
var subTypeName:String;
var active:Boolean;
var name:String;
var pointList:Array;
var typeName:String;
var boundingRectangle:Rectangle;
var iparam0:int;
var lineList:Array;
var closed:Boolean;
var hitCallback:Object;
var type:int;
var catmullRomLength:Number;
public static const polytype_WALL = 1;
public static const polytype_CEILING = 6;
public static const polytype_ZONE = 3;
public static const polytype_PATH = 0;
public static const polytype_FLOOR = 5;
public static const polytype_OVERLAY = 4;
public static const polytype_TRIGGER = 2;
public function Poly(_arg1:String, _arg2:int, _arg3:Number, _arg4:Number):void{
lineList = new Array();
active = true;
type = _arg2;
name = _arg1;
boundingRectangle = null;
hitCallback = null;
closed = false;
pointList = new Array();
pointList.push(new Point(_arg3, _arg4));
}
function PointOnCurve(_arg1:Number, _arg2:Point, _arg3:Point, _arg4:Point, _arg5:Point):Point{
var _local6:Point;
var _local7:Number;
var _local8:Number;
_local6 = new Point();
_local7 = (_arg1 * _arg1);
_local8 = (_local7 * _arg1);
_local6.x = (0.5 * ((((2 * _arg3.x) + ((-(_arg2.x) + _arg4.x) * _arg1)) + (((((2 * _arg2.x) - (5 * _arg3.x)) + (4 * _arg4.x)) - _arg5.x) * _local7)) + ((((-(_arg2.x) + (3 * _arg3.x)) - (3 * _arg4.x)) + _arg5.x) * _local8)));
_local6.y = (0.5 * ((((2 * _arg3.y) + ((-(_arg2.y) + _arg4.y) * _arg1)) + (((((2 * _arg2.y) - (5 * _arg3.y)) + (4 * _arg4.y)) - _arg5.y) * _local7)) + ((((-(_arg2.y) + (3 * _arg3.y)) - (3 * _arg4.y)) + _arg5.y) * _local8)));
return (_local6);
}
public function GetPoint(_arg1:int):Point{
return (new Point(pointList[_arg1].x, pointList[_arg1].y));
}
public function GetPointNormal(_arg1:int):Point{
return (new Point(lineList[_arg1].nx, lineList[_arg1].ny));
}
public function GetPointOnCatmullRom(_arg1:Number):Point{
var _local2:int;
var _local3:int;
var _local4:Point;
var _local5:Point;
var _local6:Point;
var _local7:Point;
var _local8:Number;
var _local9:int;
var _local10:int;
var _local11:int;
var _local12:int;
var _local13:int;
var _local14:int;
var _local15:Number;
var _local16:Number;
var _local17:Number;
var _local18:Point;
_local2 = GetNumPoints();
if (_local2 < 4){
return (new Point(0, 0));
};
_local3 = (_local2 - 1);
_local8 = (Number(_local3) * _arg1);
_local9 = _local8;
_local10 = (_local9 - 1);
_local11 = _local9;
_local12 = (_local9 + 1);
_local13 = (_local9 + 2);
if (_local10 < 0){
_local10 = 0;
};
if (_local12 > (_local2 - 1)){
_local12 = (_local2 - 1);
};
if (_local13 > (_local2 - 1)){
_local13 = (_local2 - 1);
};
_local4 = pointList[_local10];
_local5 = pointList[_local11];
_local6 = pointList[_local12];
_local7 = pointList[_local13];
_local14 = (_local9 + 1);
_local15 = ((1 / Number(_local3)) * _local9);
_local16 = ((1 / Number(_local3)) * _local14);
_local17 = ((1 / (_local16 - _local15)) * (_arg1 - _local15));
_local18 = PointOnCurve(_local17, _local4, _local5, _local6, _local7);
return (_local18);
}
public function AddLine(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):void{
var _local5:Line;
var _local6:Rectangle;
_local5 = new Line(_arg1, _arg2, _arg3, _arg4);
lineList.push(_local5);
pointList.push(new Point(_arg3, _arg4));
if (boundingRectangle == null){
boundingRectangle = _local5.boundingRect;
} else {
_local6 = boundingRectangle.clone();
boundingRectangle = _local6.union(_local5.boundingRect);
};
}
public function GetLine(_arg1:int):Line{
return (lineList[_arg1]);
}
public function CalculateCatmullRomLength(){
var _local1:Array;
var _local2:int;
var _local3:int;
var _local4:Number;
var _local5:Point;
var _local6:Point;
var _local7:Point;
_local1 = new Array();
_local3 = GetNumPoints();
if (_local3 < 4){
catmullRomLength = 0;
} else {
_local4 = 0;
while (_local4 < 1) {
_local5 = GetPointOnCatmullRom(_local4);
_local1.push(_local5);
_local4 = (_local4 + 0.025);
};
};
catmullRomLength = 0;
_local2 = 0;
while (_local2 < (_local1.length - 2)) {
_local6 = _local1[_local2];
_local7 = _local1[(_local2 + 1)];
catmullRomLength = (catmullRomLength + Utils.DistBetweenPoints(_local6.x, _local6.y, _local7.x, _local7.y));
_local2++;
};
_local1 = null;
}
public function Finish(_arg1:Boolean){
var _local2:Line;
var _local3:Line;
var _local4:Line;
var _local5:Rectangle;
if (_arg1){
_local2 = lineList[0];
_local3 = lineList[(lineList.length - 1)];
_local4 = new Line(_local3.x1, _local3.y1, _local2.x0, _local2.y0);
lineList.push(_local4);
_local5 = boundingRectangle.clone();
boundingRectangle = _local5.union(_local4.boundingRect);
};
closed = _arg1;
}
public function GetCatmullRomLength():Number{
return (catmullRomLength);
}
public function GetNumLines():int{
return (lineList.length);
}
public function OffsetFromStartPoint(){
var _local1:*;
var _local2:*;
var _local3:int;
var _local4:Line;
_local1 = -(pointList[0].x);
_local2 = -(pointList[0].y);
_local3 = 0;
while (_local3 < pointList.length) {
pointList[_local3].x = (pointList[_local3].x + _local1);
pointList[_local3].y = (pointList[_local3].y + _local2);
_local3++;
};
_local3 = 0;
while (_local3 < lineList.length) {
_local4 = lineList[_local3];
lineList[_local3].x0 = (_local4.x0 + _local1);
_local4.x1 = (_local4.x1 + _local1);
_local4.y0 = (_local4.y0 + _local2);
_local4.y1 = (_local4.y1 + _local2);
_local3++;
};
}
public function DrawCatmullRom(_arg1:BitmapData, _arg2:uint, _arg3:Number, _arg4:Number){
var _local5:int;
var _local6:Number;
var _local7:Point;
_local5 = GetNumPoints();
if (_local5 < 4){
return;
};
_local6 = 0;
while (_local6 < 1) {
_local7 = GetPointOnCatmullRom(_local6);
_arg1.setPixel32((_local7.x + _arg3), (_local7.y + _arg4), _arg2);
_local6 = (_local6 + 0.001);
};
}
public function GetNumPoints():int{
return (pointList.length);
}
public static function PolyFromPointList(_arg1:Array):Poly{
var _local2:Point;
var _local3:Point;
var _local4:Poly;
var _local5:int;
var _local6:int;
_local2 = _arg1[0];
_local4 = new Poly("", 0, _local2.x, _local2.y);
_local5 = _arg1.length;
_local6 = 0;
while (_local6 < (_local5 - 1)) {
_local2 = _arg1[_local6];
_local3 = _arg1[(_local6 + 1)];
_local4.AddLine(_local2.x, _local2.y, _local3.x, _local3.y);
_local6++;
};
_local4.Finish(true);
return (_local4);
}
public static function FindAllByType(_arg1:int, _arg2:Array):Array{
var _local3:Array;
var _local4:Poly;
_local3 = new Array();
for each (_local4 in _arg2) {
if (_local4.type == _arg1){
_local3.push(_local4);
};
};
return (_local3);
}
public static function FindByName(_arg1:String, _arg2:Array):Poly{
var _local3:Poly;
for each (_local3 in _arg2) {
if (_local3.name == _arg1){
return (_local3);
};
};
return (null);
}
public static function FindIndexByName(_arg1:String, _arg2:Array):int{
var _local3:int;
var _local4:Poly;
_local3 = 0;
for each (_local4 in _arg2) {
if (_local4.name == _arg1){
return (_local3);
};
_local3++;
};
return (-1);
}
}
}//package
Section 118
//PortalDef (PortalDef)
package {
public class PortalDef {
var portalGroups:Array;
var numPortals:int;
var maxtime:int;
var index:int;
var type:int;
var mintime:int;
public function PortalDef(_arg1:int, _arg2:Number, _arg3:Number){
type = 0;
portalGroups = new Array();
numPortals = _arg1;
mintime = (_arg2 * Defs.fps2);
maxtime = (_arg3 * Defs.fps2);
}
public function GetName():String{
return (portalGroups[index].enemyName);
}
public function AddGroup(_arg1:PortalGroup){
portalGroups.push(_arg1);
}
public function GetRandomTime():int{
return (Utils.RandBetweenInt(mintime, maxtime));
}
public function GetFrequency():int{
return (portalGroups[index].frequency);
}
public function GetMax():int{
return (portalGroups[index].maxGen);
}
public function GetNextIndex(){
var _local1:Array;
var _local2:int;
var _local3:PortalGroup;
_local1 = new Array();
_local2 = 0;
for each (_local3 in portalGroups) {
if (_local3.timer <= 0){
_local1.push(_local2);
};
_local2++;
};
if (_local1.length == 0){
index = 0;
} else {
Game.currentPortalGroup++;
if (Game.currentPortalGroup >= _local1.length){
Game.currentPortalGroup = 0;
};
index = _local1[Game.currentPortalGroup];
};
}
public function Randomise(){
var _local1:Array;
var _local2:int;
var _local3:PortalGroup;
var _local4:int;
_local1 = new Array();
_local2 = 0;
for each (_local3 in portalGroups) {
if (_local3.timer <= 0){
_local1.push(_local2);
};
_local2++;
};
_local4 = Utils.RandBetweenInt(0, (_local1.length - 1));
index = _local1[_local4];
}
public function GetMode():int{
return (portalGroups[index].mode);
}
public function GetMin():int{
return (portalGroups[index].minGen);
}
}
}//package
Section 119
//PortalGroup (PortalGroup)
package {
public class PortalGroup {
var maxGen:int;
var mode:int;
var enemyName:String;
var timer:int;
var frequency:int;
var minGen:int;
var initialDelay:int;
public static const mode_atplayer = 0;
public static const mode_random = 1;
public function PortalGroup(){
timer = 0;
}
public function Update(){
if (timer > 0){
timer--;
};
}
public function Init(_arg1:String, _arg2:int, _arg3:int, _arg4:Number, _arg5:Number, _arg6:String){
enemyName = _arg1;
minGen = _arg2;
maxGen = _arg3;
frequency = (_arg4 * Defs.fps);
initialDelay = (_arg5 * Defs.fps);
timer = initialDelay;
mode = mode_atplayer;
if (_arg6 == "atplayer"){
mode = mode_atplayer;
};
if (_arg6 == "random"){
mode = mode_random;
};
}
}
}//package
Section 120
//SaveData (SaveData)
package {
import flash.net.*;
public class SaveData {
static var id:String = "MedievalMercenary02";
public static function Clear():void{
var _local1:SharedObject;
_local1 = SharedObject.getLocal(id);
_local1.clear();
_local1.close();
_local1.flush();
trace("SaveData Data Cleared");
trace(("len: " + _local1.size));
}
public static function Save():void{
var _local1:int;
var _local2:SharedObject;
var _local3:Object;
var _local4:PlayerWeapon;
_local2 = SharedObject.getLocal(id);
if (_local2 == null){
trace("SO null");
return;
};
if (_local2.size == 0){
trace("SO size 0");
};
_local2.clear();
_local2.data.currentScore = Game.currentScore;
_local2.data.cash = Game.cash;
_local2.data.currentLevel = Game.currentLevel;
_local2.data.levelsCompleted = Game.levelsCompleted;
_local3 = new Object();
_local3.owned = new Array(6);
_local3.level = new Array(6);
_local1 = 0;
while (_local1 < 6) {
_local4 = PlayerWeapons.weaponList[_local1];
_local3.owned[_local1] = _local4.owned;
_local3.level[_local1] = _local4.currentLevel;
_local1++;
};
_local2.data.weapons = _local3;
_local2.close();
trace("Saved Data OK");
}
public static function Load():void{
var _local1:SharedObject;
var _local2:int;
_local1 = SharedObject.getLocal(id);
if (_local1 == null){
trace((("Shared Object: " + id) + " is null"));
return;
};
if (_local1.size == 0){
trace((("Shared Object: " + id) + " size=0"));
_local1.close();
return;
};
Game.cash = _local1.data.cash;
Game.currentLevel = _local1.data.currentLevel;
Game.levelsCompleted = _local1.data.levelsCompleted;
_local2 = 0;
while (_local2 < 6) {
PlayerWeapons.weaponList[_local2].owned = _local1.data.weapons.owned[_local2];
PlayerWeapons.weaponList[_local2].currentLevel = _local1.data.weapons.level[_local2];
_local2++;
};
_local1.close();
trace("Loaded data OK");
}
public static function DontLoad():void{
}
public static function Exists():Boolean{
var _local1:SharedObject;
_local1 = SharedObject.getLocal(id);
if (_local1 == null){
trace((("Shared Object: " + id) + " null"));
return (false);
};
if (_local1.size == 0){
trace((("Shared Object: " + id) + " size 0"));
_local1.close();
return (false);
};
_local1.close();
return (true);
}
public static function DontSave():void{
}
}
}//package
Section 121
//SetupScript (SetupScript)
package {
import flash.geom.*;
public class SetupScript {
static const outputMessages:Boolean = false;
static var main:Main;
static var lastGOGeneratedX;
static var lastGOGeneratedY;
static var lineStartX:int;
static var lineStartY:int;
static var lineType:int;
static var lineRectangle:Rectangle;
static var currentPoly:Poly;
static var lastGOGenerated;
static var lineList:Array;
public static function InitOnce(_arg1:Main){
main = _arg1;
}
static function AddPickup(_arg1:int, _arg2:int):void{
}
static function AddEnemy(_arg1:String, _arg2:int, _arg3:int, _arg4:int):void{
}
static function AddObject(_arg1:String, _arg2:int, _arg3:int, _arg4:String, _arg5:String, _arg6:String, _arg7:int=0, _arg8:int=0, _arg9:Number=0, _arg10:Number=0):void{
var _local11:GameObj;
if (outputMessages){
trace((((((("SetupScript.AddObject(" + _arg2) + ", ") + _arg3) + ", ") + _arg4) + ");"));
};
if (_arg5 == "obj"){
if (_arg4 == "StartPoint"){
Game.startPoints.push(new Point(_arg2, _arg3));
};
if (_arg4 == "Exit"){
};
};
lastGOGenerated = _local11;
lastGOGeneratedX = _arg2;
lastGOGeneratedY = _arg3;
}
static function LineEnd(_arg1:Boolean){
if (outputMessages){
trace((("SetupScript.LineEnd(" + _arg1) + ");"));
};
currentPoly.Finish(_arg1);
Game.polygonList.push(currentPoly);
}
static function LineStart(_arg1:String, _arg2:int, _arg3:int, _arg4:int, _arg5:String="", _arg6:String="", _arg7:String="", _arg8:String=""){
if (outputMessages){
trace((((((("SetupScript.LineStart(" + _arg2) + ", ") + _arg3) + ", ") + _arg4) + ");"));
};
lineStartX = _arg2;
lineStartY = _arg3;
lineType = _arg4;
currentPoly = new Poly(_arg1, _arg4, _arg2, _arg3);
currentPoly.typeName = _arg5;
currentPoly.subTypeName = _arg6;
currentPoly.iparam0 = int(_arg7);
}
static function LineAdd(_arg1:int, _arg2:int, _arg3:int){
if (outputMessages){
trace((((((("SetupScript.LineAdd(" + _arg1) + ", ") + _arg2) + ", ") + _arg3) + ");"));
};
currentPoly.AddLine(lineStartX, lineStartY, _arg1, _arg2);
lineStartX = _arg1;
lineStartY = _arg2;
}
static function AddExit(_arg1:int, _arg2:int):void{
}
}
}//package
Section 122
//Shop (Shop)
package {
import flash.events.*;
import flash.display.*;
public class Shop {
static var endOfLevel:Boolean;
static var mc:MovieClip;
public static function buttonWeaponBuyPressed(_arg1:MouseEvent){
var _local2:int;
var _local3:MovieClip;
var _local4:PlayerWeapon;
_local2 = GetPressedItemIndex(_arg1);
_local3 = mc[_arg1.currentTarget.parent.name];
_local4 = PlayerWeapons.weaponList[_local2];
if (_local4.CanBuy()){
_local4.Buy();
};
UpdateStuff();
}
static function UpdateStuff():void{
var _local1:int;
var _local2:MovieClip;
var _local3:MovieClip;
var _local4:PlayerWeapon;
mc.textCash.text = Game.cash;
_local1 = 0;
while (_local1 < 6) {
_local3 = mc[("item" + _local1.toString())];
_local4 = PlayerWeapons.weaponList[_local1];
_local3.textName.text = _local4.name;
if (_local4.owned){
_local3.tick.visible = true;
_local3.textLevel.text = ("LEVEL " + int((_local4.currentLevel + 1)).toString());
} else {
_local3.tick.visible = false;
_local3.textLevel.text = "";
};
_local3.buttonBuy.visible = false;
_local3.buttonUpgrade.visible = false;
_local3.textCost.text = "";
if (_local4.owned == false){
_local3.textCost.text = _local4.cost;
if (_local4.cost == 0){
_local3.textCost.text = "";
};
if (_local4.CanBuy()){
_local3.buttonBuy.visible = true;
};
} else {
_local3.textCost.text = _local4.GetUpgradeCost();
if (_local4.GetUpgradeCost() == 0){
_local3.textCost.text = "";
};
if (_local4.CanUpgrade()){
_local3.buttonUpgrade.visible = true;
};
};
_local1++;
};
}
public static function Init(_arg1:Boolean){
MusicPlayer.StartMusic(0);
SaveData.Save();
endOfLevel = _arg1;
Game.pause = true;
mc = Game.main.AddMovieClip(0, 0, new ShopScreen());
mc.buttonOK.addEventListener(MouseEvent.CLICK, buttonExitPressed, false, 0, true);
mc.buttonMoreGames.addEventListener(MouseEvent.CLICK, TitleScreenState.buttonArmorGamesPressed);
InitStuff();
UpdateStuff();
}
public static function InitOnce(){
}
static function GetPressedItemIndex(_arg1:MouseEvent):int{
var _local2:String;
var _local3:String;
_local2 = _arg1.currentTarget.parent.name;
_local3 = _local2.slice(4);
return (int(_local3));
}
public static function buttonWeaponUpgradePressed(_arg1:MouseEvent){
var _local2:int;
var _local3:MovieClip;
var _local4:PlayerWeapon;
_local2 = GetPressedItemIndex(_arg1);
_local3 = mc[_arg1.currentTarget.parent.name];
_local4 = PlayerWeapons.weaponList[_local2];
if (_local4.CanUpgrade()){
_local4.Upgrade();
};
UpdateStuff();
}
public static function buttonExitPressed(_arg1:MouseEvent){
Game.main.removeChild(mc);
mc = null;
if (!endOfLevel){
Game.pause = false;
} else {
Game.currentLevel = Levels.AddToLevelId(Game.currentLevel, 1);
SaveData.Save();
Game.currentBackgroundFrameIndex++;
if (Game.currentBackgroundFrameIndex > 6){
Game.currentBackgroundFrameIndex = 0;
};
Game.bgMusic++;
if (Game.bgMusic > 3){
Game.bgMusic = 1;
};
Game.InitLevel(false);
};
}
static function InitStuff():void{
var _local1:int;
var _local2:MovieClip;
var _local3:MovieClip;
var _local4:PlayerWeapon;
_local1 = 0;
while (_local1 < 6) {
_local3 = mc[("item" + _local1.toString())];
_local3.buttonBuy.addEventListener(MouseEvent.CLICK, buttonWeaponBuyPressed, false, 0, true);
_local3.buttonUpgrade.addEventListener(MouseEvent.CLICK, buttonWeaponUpgradePressed, false, 0, true);
_local4 = PlayerWeapons.weaponList[_local1];
_local1++;
};
}
}
}//package
Section 123
//ShopItem (ShopItem)
package {
import flash.display.*;
import flash.text.*;
public dynamic class ShopItem extends MovieClip {
public var buttonBuy:SimpleButton;
public var textLevel:TextField;
public var textName:TextField;
public var buttonUpgrade:SimpleButton;
public var textCost:TextField;
public var tick:MovieClip;
}
}//package
Section 124
//ShopScreen (ShopScreen)
package {
import flash.display.*;
import flash.text.*;
public dynamic class ShopScreen extends MovieClip {
public var textCash:TextField;
public var buttonMoreGames:SimpleButton;
public var item2:ShopItem;
public var item0:ShopItem;
public var item3:ShopItem;
public var item4:ShopItem;
public var item5:ShopItem;
public var buttonOK:SimpleButton;
public var item1:ShopItem;
}
}//package
Section 125
//ShotController (ShotController)
package {
import flash.geom.*;
public class ShotController {
public var timer:int;
public var active:Boolean;
public var speed:Number;
public var yoff:Number;
var numShotsFired:int;
public var controlMode:int;
public var fireOffset:Point;
public var minFreq:int;
public var xoff:Number;
public var shots:Array;
public var type:String;
public var maxFreq:int;
public var freq:int;
public function Set(_arg1:String, _arg2:int, _arg3:int, _arg4:Number, _arg5:Number, _arg6:Number){
timer = 0;
type = _arg1;
minFreq = _arg2;
maxFreq = _arg3;
xoff = _arg5;
yoff = _arg6;
speed = _arg4;
freq = 0;
controlMode = 0;
shots = new Array();
numShotsFired = 0;
active = true;
fireOffset = new Point(0, 0);
}
public function SetFireOffset(_arg1:Number, _arg2:Number){
trace(((("set fire offset " + _arg1) + " ") + _arg2));
fireOffset.x = _arg1;
fireOffset.y = _arg2;
}
public function clone():ShotController{
var _local1:ShotController;
var _local2:ShotControllerShot;
_local1 = new ShotController();
_local1.timer = timer;
_local1.xoff = xoff;
_local1.yoff = yoff;
_local1.minFreq = minFreq;
_local1.maxFreq = maxFreq;
_local1.type = type;
_local1.freq = freq;
_local1.speed = speed;
_local1.controlMode = controlMode;
_local1.numShotsFired = numShotsFired;
_local1.active = active;
_local1.shots = new Array();
_local1.fireOffset = fireOffset.clone();
for each (_local2 in shots) {
_local1.shots.push(_local2.clone());
};
return (_local1);
}
public function AddShot(_arg1:String, _arg2:Number, _arg3:Number){
var _local4:ShotControllerShot;
_local4 = new ShotControllerShot();
_local4.offset = (((Math.PI * 2) / 360) * _arg2);
_local4.delay = (_arg3 * Defs.fps2);
if (_arg1 == "atplayer"){
_local4.type = ShotControllerShot.type_atplayer;
};
if (_arg1 == "absolute"){
_local4.type = ShotControllerShot.type_absolute;
};
if (_arg1 == "dir"){
_local4.type = ShotControllerShot.type_dir;
};
shots.push(_local4);
}
public function Reset(){
var _local1:ShotControllerShot;
timer = Utils.RandBetweenInt(0, minFreq);
for each (_local1 in shots) {
_local1.timer = timer;
};
controlMode = 0;
}
public function Update(_arg1:GameObj){
var _local2:Number;
var _local3:Number;
var _local4:ShotControllerShot;
var _local5:GameObj;
var _local6:Matrix;
var _local7:Point;
_local2 = 0;
_local3 = 0;
if (controlMode == 0){
timer++;
if (timer >= freq){
timer = 0;
freq = Utils.RandBetweenInt(minFreq, maxFreq);
numShotsFired = 0;
controlMode = 1;
for each (_local4 in shots) {
_local4.fired = false;
_local4.timer = 0;
};
};
} else {
if (controlMode == 1){
for each (_local4 in shots) {
if (_local4.fired == false){
_local4.timer++;
if (_local4.timer >= _local4.delay){
_local4.fired = true;
_local4.timer = 0;
if (((!((fireOffset.x == 0))) || (!((fireOffset.y == 0))))){
_local6 = new Matrix();
_local6.rotate(_arg1.fireOffsetDir);
_local7 = _local6.transformPoint(fireOffset);
_local2 = _local7.x;
_local3 = _local7.y;
};
_local5 = GameObjects.AddObj(((_arg1.xpos + xoff) + _local2), ((_arg1.ypos + yoff) + _local3), (_arg1.zpos - 10));
_local5.InitEnemyBullet(this, _local4, _arg1);
if (_local5.objectDef.particleExplodeID != 0){
};
numShotsFired++;
};
};
};
if (numShotsFired >= shots.length){
controlMode = 0;
};
};
};
}
}
}//package
Section 126
//ShotControllerShot (ShotControllerShot)
package {
public class ShotControllerShot {
var delay:int;
var timer:int;
var fired:Boolean;
var offset:Number;
var type:int;
static const type_atplayer = 0;
static const type_absolute = 1;
static const type_dir = 2;
public function ShotControllerShot(){
type = 0;
offset = 0;
delay = 0;
timer = 0;
fired = false;
}
public function clone():ShotControllerShot{
var _local1:ShotControllerShot;
_local1 = new ShotControllerShot();
_local1.type = type;
_local1.offset = offset;
_local1.delay = delay;
_local1.timer = timer;
_local1.fired = fired;
return (_local1);
}
}
}//package
Section 127
//ShotDef (ShotDef)
package {
public class ShotDef {
var spreadRange:Number;
var name:String;
var spreadAng:Number;
var intervalTicks:Number;
var numShots:int;
var type:int;
public function ShotDef(_arg1:String){
name = _arg1;
type = 0;
intervalTicks = 0;
}
public function SetSpreadPulse(_arg1:Number, _arg2:int, _arg3:Number, _arg4=-1){
intervalTicks = (Defs.fps * _arg1);
type = 1;
numShots = _arg2;
spreadRange = Utils.DegToRad(_arg3);
spreadAng = -1;
if (_arg4 != -1){
spreadAng = Utils.DegToRad(_arg4);
};
}
public function SetNormal(_arg1:Number){
intervalTicks = (Defs.fps * _arg1);
type = 0;
}
}
}//package
Section 128
//slingfire (slingfire)
package {
import flash.media.*;
public dynamic class slingfire extends Sound {
}
}//package
Section 129
//SlingStone (SlingStone)
package {
import flash.display.*;
public dynamic class SlingStone extends MovieClip {
}
}//package
Section 130
//SoundPlayer (SoundPlayer)
package {
import flash.media.*;
import flash.utils.*;
public class SoundPlayer {
public static const minPlayTime = 3;
static var doSFX:Boolean;
static var channel:SoundChannel;
public static var startTimes:Array;
static var timer:Timer;
static var active = false;
public static var sounds:Array;
public static var timers:Array;
public static var sound:Sound;
public static var volumes:Array;
public static var lengths:Array;
public static var soundTransform:SoundTransform;
static var Instances:Array;
public static var names:Array;
public static var soundTransforms:Array;
static var main:Main;
static var playingFlag:Boolean;
public static var soundChannels:Array;
public static function InitOnce(_arg1:Main):void{
doSFX = true;
main = _arg1;
startTimes = new Array();
lengths = new Array();
sounds = new Array();
timers = new Array();
names = new Array();
volumes = new Array();
soundChannels = new Array();
soundTransforms = new Array();
AddSound("arrowhit");
AddSound("arrowfire1");
AddSound("arrowfire2");
AddSound("arrowkill");
AddSound("belch0");
AddSound("belch1");
AddSound("belch2");
AddSound("dragonfireball");
AddSound("drink0");
AddSound("goblinscreech");
AddSound("hurtenemy");
AddSound("hurtknight");
AddSound("killenemy1");
AddSound("killenemy2");
AddSound("pickupmoney");
AddSound("slingfire");
AddSound("splat0");
AddSound("splat1");
AddSound("splat2");
AddSound("swordhit");
AddSound("macehit");
AddSound("trollattack");
AddSound("trolldead");
AddSound("trollhurt");
AddSound("swordswish0");
AddSound("playerhit0");
AddSound("playerhit1");
AddSound("playerhit2");
AddSound("playerhit3");
soundTransform = new SoundTransform(1, 0);
active = true;
playingFlag = false;
}
public static function UpdateOncePerFrame():void{
var _local1:int;
_local1 = 0;
while (_local1 < timers.length) {
if (timers[_local1] > 0){
var _local2 = timers;
var _local3 = _local1;
var _local4 = (_local2[_local3] - 1);
_local2[_local3] = _local4;
};
_local1++;
};
}
static function AddSound(_arg1:String){
var classRef:Class;
var s:Sound;
var _soundName = _arg1;
try {
classRef = (getDefinitionByName(_soundName) as Class);
} catch(e:Object) {
classRef = null;
};
if (classRef == null){
trace(("AddSound Error: Can't find sound " + _soundName));
sounds.push(null);
} else {
s = (new (classRef) as Sound);
sounds.push(s);
};
names.push(_soundName);
startTimes.push(0);
lengths.push(0);
volumes.push(1);
timers.push(int(0));
}
public static function PlayRandomBetween(_arg1:String, _arg2:String):void{
var _local3:int;
var _local4:int;
var _local5:int;
if (doSFX == false){
return;
};
_local3 = names.indexOf(_arg1);
_local4 = names.indexOf(_arg2);
_local5 = Utils.RandBetweenInt(_local3, _local4);
PlayById(_local5);
}
public static function Play(_arg1:String):void{
var _local2:int;
if (doSFX == false){
return;
};
_local2 = names.indexOf(_arg1);
PlayById(_local2);
}
public static function PlayById(_arg1:int):void{
var _local2:SoundTransform;
var _local3:Sound;
if (doSFX == false){
return;
};
if (timers[_arg1] == 0){
if (sounds[_arg1] != null){
_local3 = sounds[_arg1];
_local2 = new SoundTransform();
_local3.play(0);
timers[_arg1] = 10;
} else {
trace(("SoundPlayer: Cant find sound " + _arg1));
};
};
}
public static function GetId(_arg1:String):int{
var _local2:int;
_local2 = names.indexOf(_arg1);
return (_local2);
}
}
}//package
import flash.events.*;
import flash.media.*;
import flash.utils.*;
class SoundPlay {
private var channel:SoundChannel;
private var timer:Timer;
private var playingFlag;
private function SoundPlay(){
}
private function timerHandler(_arg1:TimerEvent):void{
timer.stop();
channel.stop();
playingFlag = false;
}
public function Clear():void{
playingFlag = false;
timer = null;
}
public function Active():Boolean{
return (playingFlag);
}
public function Play(_arg1:int):void{
channel = SoundPlayer.sound.play(SoundPlayer.startTimes[_arg1], 1, SoundPlayer.soundTransform);
timer = new Timer(SoundPlayer.lengths[_arg1]);
timer.addEventListener(TimerEvent.TIMER, timerHandler);
timer.start();
playingFlag = true;
}
}
Section 131
//splat0 (splat0)
package {
import flash.media.*;
public dynamic class splat0 extends Sound {
}
}//package
Section 132
//splat1 (splat1)
package {
import flash.media.*;
public dynamic class splat1 extends Sound {
}
}//package
Section 133
//splat2 (splat2)
package {
import flash.media.*;
public dynamic class splat2 extends Sound {
}
}//package
Section 134
//Stats (Stats)
package {
public class Stats {
static var highestLevel:int;
static var topScore:int;
public static var levelNumKills:int;
static var totalCash:int;
public static var levelDamage:int;
static var levels_bestTime:Array;
static var numLevel:int;
static var levels_mostCash:Array;
static var numKills:int;
public static var levelTime:int;
static var numWeaponsOwned:int;
public static var levelCash:int;
public static var levelScore:int;
static var levels_bestScore:Array;
public static function EndLevel(){
var _local1:int;
_local1 = Game.currentLevel;
levelTime = Game.levelTimer;
if (levelCash > levels_mostCash[_local1]){
levels_mostCash[_local1] = levelCash;
};
if (levelScore > levels_bestScore[_local1]){
levels_bestScore[_local1] = levelScore;
};
if (levelTime < levels_bestTime[_local1]){
levels_bestTime[_local1] = levelTime;
};
if ((Game.currentLevel + 1) > highestLevel){
highestLevel = (Game.currentLevel + 1);
};
if (Game.currentScore > topScore){
topScore = Game.currentScore;
};
}
public static function StartLevel(){
levelNumKills = 0;
levelScore = 0;
levelTime = 0;
levelCash = 0;
levelDamage = 0;
}
public static function InitOnce(){
var _local1:int;
levels_mostCash = new Array();
levels_bestScore = new Array();
levels_bestTime = new Array();
_local1 = 0;
while (_local1 < 100) {
levels_bestScore.push(int(0));
levels_mostCash.push(int(0));
levels_bestTime.push(int(99999999));
_local1++;
};
topScore = 0;
numKills = 0;
numWeaponsOwned = 0;
highestLevel = 0;
totalCash = 0;
levelNumKills = 0;
levelScore = 0;
levelTime = 0;
levelCash = 0;
}
}
}//package
Section 135
//swordhit (swordhit)
package {
import flash.media.*;
public dynamic class swordhit extends Sound {
}
}//package
Section 136
//swordswish0 (swordswish0)
package {
import flash.media.*;
public dynamic class swordswish0 extends Sound {
}
}//package
Section 137
//TailPiece (TailPiece)
package {
public class TailPiece {
var graphicID:int;
var frame:int;
var dir:Number;
var ypos:Number;
var xpos:Number;
}
}//package
Section 138
//timerunderlay (timerunderlay)
package {
import flash.display.*;
public dynamic class timerunderlay extends MovieClip {
}
}//package
Section 139
//title (title)
package {
import flash.display.*;
import flash.text.*;
public dynamic class title extends MovieClip {
public var textFrameUpdate:TextField;
public var buttonLongAnimals:SimpleButton;
public var buttonStart:SimpleButton;
public var buttonMoreGames:SimpleButton;
public var buttonArmorGames:SimpleButton;
}
}//package
Section 140
//TitleScreenClip (TitleScreenClip)
package {
import flash.display.*;
public dynamic class TitleScreenClip extends MovieClip {
}
}//package
Section 141
//TitleScreenState (TitleScreenState)
package {
import flash.events.*;
import flash.display.*;
import flash.net.*;
public class TitleScreenState {
static var mc_allocateWeapon:MovieClip;
static var mc_TitlePage:MovieClip;
static var veryFirstTime:Boolean = true;
static var mc_weaponDetails:MovieClip;
static var mc_instructions:MovieClip;
static var mc_StartOrContinueScreen:MovieClip;
static var creditsMC:MovieClip;
static var main:Main;
static var mc_PauseScreen:MovieClip;
static var mc_instructions0:MovieClip;
static var mc_instructions1:MovieClip;
static var helpTextFristTime:Boolean;
static var mc_WeaponScreen:MovieClip;
static var mc_AllLevelsCompleteScreen:MovieClip;
static var mc_PreLevelScreen:MovieClip;
static var mc_GameOverScreen:MovieClip;
static var overlayMC:MovieClip;
static var mc_LevelCompleteScreen:MovieClip;
static var titleMC:MovieClip;
static var blockerOverlay:MovieClip;
static var blockerFunction:Function;
static function buttonLonganimalsPressed(_arg1:MouseEvent){
navigateToURL(new URLRequest("http://www.longanimalsgames.com"), "_blank");
}
public static function buttonCreditsPressed(_arg1:MouseEvent){
Game.main.addChild(creditsMC);
creditsMC.buttonBack.addEventListener(MouseEvent.CLICK, buttonCreditsBackPressed);
}
public static function InitPreLevelScreen_SetText(){
}
public static function buttonCreditsBackPressed(_arg1:MouseEvent){
Game.main.removeChild(creditsMC);
creditsMC = null;
}
public static function InitLevelComplete(){
var _local1:XML;
var _local2:int;
Stats.EndLevel();
Achievements.TestAtLevelComplete();
MusicPlayer.StartMusic(0);
titleMC = main.AddMovieClip(0, 0, mc_LevelCompleteScreen);
titleMC.buttonContinue.addEventListener(MouseEvent.CLICK, InitLevelComplete_buttonContinuePressed);
titleMC.textLevelComplete.text = (("Level " + int((Game.currentLevel + 1)).toString()) + " complete!");
titleMC.textStats.text = ((("You scored " + Stats.levelScore) + " points and earned $") + Stats.levelCash);
Game.currentLevel++;
_local1 = ExternalData.xml;
_local2 = int(_local1.leveldef.length());
if ((((Game.levelsCompleted == false)) && ((Game.currentLevel >= _local2)))){
Game.levelsCompleted = true;
Game.currentLevel = 0;
InitAllLevelsCompleteScreen();
};
SaveData.Save();
}
static function InitHelpText3(){
overlayMC = main.AddMovieClip(0, 0, mc_instructions1);
overlayMC.buttonContinue.addEventListener(MouseEvent.CLICK, InitHelpText3_buttonContinuePressed, false, 0, true);
}
static function InitHelpText1(_arg1:Boolean=false){
helpTextFristTime = _arg1;
overlayMC = main.AddMovieClip(0, 0, mc_instructions0);
overlayMC.buttonContinue.addEventListener(MouseEvent.CLICK, InitHelpText1_buttonContinuePressed, false, 0, true);
}
static function mouseOutLevel(_arg1:MouseEvent):void{
titleMC.textLevelInfo.text = "";
titleMC.textLevelTime.text = "";
titleMC.textLevelScore.text = "";
titleMC.textLevelCash.text = "";
}
public static function AllLevelsCompleteScreen_buttonContinuePressed(_arg1:MouseEvent){
Game.main.removeChild(overlayMC);
overlayMC = null;
}
static function buttonGameOverContinuePressed(_arg1:MouseEvent){
main.removeChild(titleMC);
titleMC = null;
Game.currentScore = 0;
Game.InitLevel();
}
public static function MovieFinished(){
Game.InitGame();
main.SetGameState(Main.gameState_LEVEL_PLAY);
}
static function buttonStartPressed_Complete1(){
}
static function InitHelpText2(){
overlayMC = main.AddMovieClip(0, 0, mc_instructions);
overlayMC.buttonContinue.addEventListener(MouseEvent.CLICK, InitHelpText2_buttonContinuePressed, false, 0, true);
}
public static function buttonStartPressed(_arg1:MouseEvent){
GraphicObjects.CompleteBitmapCreation();
Game.main.removeChild(titleMC);
titleMC = null;
Game.InitGame(false);
main.SetGameState(Main.gameState_LEVEL_PLAY);
}
public static function InitGameOver(){
Game.cash = Game.levelstart_cash;
blockerFunction = null;
titleMC = main.AddMovieClip(0, 0, mc_GameOverScreen);
titleMC.buttonContinue.addEventListener(MouseEvent.CLICK, buttonGameOverContinuePressed);
titleMC.buttonQuit.addEventListener(MouseEvent.CLICK, buttonGameOverQuitPressed);
titleMC.textFinalScore.text = ("Score: " + Game.currentScore);
titleMC.textHighScore.text = ("High Score: " + Game.highScore);
}
static function InitLevelComplete_buttonContinuePressed(_arg1:MouseEvent){
main.removeChild(titleMC);
titleMC = null;
Game.ReloadDataAndRestartLevel();
KeyReader.InitOnce(Game.main.stage);
}
static function buttonShopPressed(_arg1:MouseEvent){
ExitPreLevelScreen();
main.removeChild(titleMC);
titleMC = null;
Shop.Init(true);
}
public static function InitPreLevelScreen(){
}
static function PreLevelScreen_buttonContinuePressed(_arg1:MouseEvent){
ExitPreLevelScreen();
main.removeChild(titleMC);
titleMC = null;
KeyReader.InitOnce(Game.main.stage);
Game.pause = false;
}
public static function Init(_arg1:Main){
MusicPlayer.StartMusic(0);
main = _arg1;
InitAll();
titleMC = new title();
main.addChild(titleMC);
titleMC.buttonStart.addEventListener(MouseEvent.CLICK, buttonStartPressed);
titleMC.buttonMoreGames.addEventListener(MouseEvent.CLICK, buttonArmorGamesPressed);
titleMC.buttonArmorGames.addEventListener(MouseEvent.CLICK, buttonArmorGamesPressed);
titleMC.buttonLongAnimals.addEventListener(MouseEvent.CLICK, buttonLonganimalsPressed);
}
public static function SetFrameUpdateText(_arg1:int, _arg2:int){
if (titleMC == null){
return;
};
titleMC.textFrameUpdate.text = ((("anim frames: " + _arg1) + " / ") + _arg2);
}
public static function StartOrContinue_buttonStartPressed(_arg1:MouseEvent){
Game.main.removeChild(overlayMC);
overlayMC = null;
Game.InitGame(false);
InitHelpText1(true);
}
static function buttonStartPressed_Complete(){
Game.InitGame(false);
main.SetGameState(Main.gameState_LEVEL_PLAY);
}
static function PlayBlockerIn(_arg1:Function){
blockerFunction = _arg1;
Game.main.addChild(blockerOverlay);
}
public static function InitHelpText3_buttonContinuePressed(_arg1:MouseEvent){
Game.main.removeChild(overlayMC);
overlayMC = null;
if (helpTextFristTime == true){
GraphicObjects.CompleteBitmapCreation();
Game.main.removeChild(titleMC);
titleMC = null;
main.SetGameState(Main.gameState_LEVEL_PLAY);
};
}
public static function ExitPreLevelScreen(){
var _local1:XML;
var _local2:int;
var _local3:int;
var _local4:DisplayObject;
_local1 = ExternalData.xml;
_local2 = int(_local1.leveldef.length());
_local3 = 0;
while (_local3 < _local2) {
_local4 = titleMC.getChildAt(_local3);
_local4.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverLevel);
_local4.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutLevel);
if (Game.levelsCompleted){
_local4.removeEventListener(MouseEvent.CLICK, mouseClickLevel);
};
_local4 = null;
_local3++;
};
}
static function InitAllLevelsCompleteScreen(){
overlayMC = main.AddMovieClip(0, 0, mc_AllLevelsCompleteScreen);
overlayMC.buttonContinue.addEventListener(MouseEvent.CLICK, AllLevelsCompleteScreen_buttonContinuePressed, false, 0, true);
}
public static function InitHelpText1_buttonContinuePressed(_arg1:MouseEvent){
Game.main.removeChild(overlayMC);
overlayMC = null;
InitHelpText2();
}
static function mouseClickLevel(_arg1:MouseEvent):void{
var _local2:String;
var _local3:int;
_local2 = _arg1.currentTarget.name;
_local3 = int(_local2);
Game.currentLevel = _local3;
InitPreLevelScreen_SetText();
}
static function InitStartOrContinueScreen(){
overlayMC = main.AddMovieClip(0, 0, mc_StartOrContinueScreen);
overlayMC.buttonNewGame.addEventListener(MouseEvent.CLICK, StartOrContinue_buttonStartPressed, false, 0, true);
overlayMC.buttonContinue.addEventListener(MouseEvent.CLICK, StartOrContinue_buttonContinuePressed, false, 0, true);
}
public static function Update(_arg1:Main){
}
static function mouseOverLevel(_arg1:MouseEvent):void{
var _local2:XML;
var _local3:int;
var _local4:String;
var _local5:int;
var _local6:String;
var _local7:int;
_local2 = ExternalData.xml;
_local3 = int(_local2.leveldef.length());
_local4 = _arg1.currentTarget.name;
_local5 = int(_local4);
_local6 = _local2.leveldef[_local5].info.@name;
titleMC.textLevelInfo.text = _local6;
_local7 = Stats.levels_bestTime[_local5];
if (_local7 >= 999999){
titleMC.textLevelTime.text = "----";
} else {
titleMC.textLevelTime.text = _local7;
};
titleMC.textLevelScore.text = Stats.levels_bestScore[_local5];
titleMC.textLevelCash.text = Stats.levels_mostCash[_local5];
}
public static function BlockerOutComplete(){
if (blockerFunction != null){
blockerOverlay.stop();
Game.main.removeChild(blockerOverlay);
blockerOverlay = null;
blockerFunction();
blockerFunction = null;
};
}
public static function buttonArmorGamesPressed(_arg1:MouseEvent){
navigateToURL(new URLRequest("http://www.armorgames.com"), "_blank");
}
static function PlayBlockerOut(_arg1:Function){
blockerFunction = _arg1;
Game.main.addChild(blockerOverlay);
}
public static function buttonContinuePressed(_arg1:MouseEvent){
GraphicObjects.CompleteBitmapCreation();
Game.main.removeChild(titleMC);
titleMC = null;
Game.InitGame(true);
main.SetGameState(Main.gameState_LEVEL_PLAY);
}
public static function InitAll(){
if (veryFirstTime == false){
return;
};
veryFirstTime = true;
mc_GameOverScreen = new GameOverScreen();
mc_PauseScreen = new PauseScreen();
}
public static function BlockerInComplete(){
if (blockerFunction != null){
blockerOverlay.stop();
Game.main.removeChild(blockerOverlay);
blockerOverlay = null;
blockerFunction();
blockerFunction = null;
};
}
static function buttonGameOverQuitPressed(_arg1:MouseEvent){
main.removeChild(titleMC);
titleMC = null;
main.SetGameState(Main.gameState_TITLE);
}
public static function StartOrContinue_buttonContinuePressed(_arg1:MouseEvent){
Game.main.removeChild(overlayMC);
overlayMC = null;
Game.InitGame(true);
InitHelpText1(true);
}
public static function InitHelpText2_buttonContinuePressed(_arg1:MouseEvent){
Game.main.removeChild(overlayMC);
overlayMC = null;
InitHelpText3();
}
}
}//package
Section 142
//trollattack (trollattack)
package {
import flash.media.*;
public dynamic class trollattack extends Sound {
}
}//package
Section 143
//trolldead (trolldead)
package {
import flash.media.*;
public dynamic class trolldead extends Sound {
}
}//package
Section 144
//trollhurt (trollhurt)
package {
import flash.media.*;
public dynamic class trollhurt extends Sound {
}
}//package
Section 145
//Utils (Utils)
package {
import flash.geom.*;
import flash.display.*;
public class Utils {
public static function RandPointInCircle(_arg1:Number):Point{
var _local2:Point;
var _local3:Number;
var _local4:Number;
_local2 = new Point();
_local3 = RandBetweenFloat(0, _arg1);
_local4 = (Math.random() * (Math.PI * 2));
_local2.x = (Math.cos(_local4) * _local3);
_local2.y = (Math.sin(_local4) * _local3);
return (_local2);
}
public static function DegToRad(_arg1:Number):Number{
return ((((Math.PI * 2) / 360) * _arg1));
}
public static function LimitNumber(_arg1:Number, _arg2:Number, _arg3:Number):Number{
if (_arg3 < _arg1){
_arg3 = _arg1;
};
if (_arg3 > _arg2){
_arg3 = _arg2;
};
return (_arg3);
}
public static function ScaleTo(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number):Number{
var _local6:Number;
var _local7:Number;
var _local8:Number;
_local6 = (_arg4 - _arg3);
_local7 = (_arg2 - _arg1);
_local8 = ((1 / _local6) * (_arg5 - _arg3));
_local8 = ((_local7 * _local8) + _arg1);
return (_local8);
}
public static function DP2(_arg1:Number):Number{
var _local2:Number;
_local2 = (Math.ceil((_arg1 * 100)) / 100);
return (_local2);
}
static function RenderDotLine(_arg1:BitmapData, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:int, _arg7:uint):void{
var _local8:int;
var _local9:int;
var _local10:Number;
var _local11:Number;
_local9 = _arg6;
_local10 = ((_arg4 - _arg2) / Number(_local9));
_local11 = ((_arg5 - _arg3) / Number(_local9));
_local8 = 0;
while (_local8 < _local9) {
_arg2 = (_arg2 + _local10);
_arg3 = (_arg3 + _local11);
_arg1.setPixel32(int(_arg2), int(_arg3), _arg7);
_local8++;
};
}
static function RenderRectangle(_arg1:BitmapData, _arg2:Rectangle, _arg3:uint):void{
RenderDotLine(_arg1, _arg2.left, _arg2.top, _arg2.right, _arg2.top, 100, _arg3);
RenderDotLine(_arg1, _arg2.left, _arg2.bottom, _arg2.right, _arg2.bottom, 100, _arg3);
RenderDotLine(_arg1, _arg2.left, _arg2.top, _arg2.left, _arg2.bottom, 100, _arg3);
RenderDotLine(_arg1, _arg2.right, _arg2.top, _arg2.right, _arg2.bottom, 100, _arg3);
}
public static function NumberToString2DP(_arg1:Number):String{
var _local2:String;
var _local3:int;
var _local4:int;
_local2 = DP2(_arg1).toString();
_local3 = _local2.lastIndexOf(".");
if (_local3 == -1){
_local2.concat(".00");
} else {
_local4 = _local2.length;
if (_local3 == (_local4 - 1)){
_local2.concat("0");
};
};
return (_local2);
}
public static function NormalizeRot(_arg1:Number):Number{
while (_arg1 < 0) {
_arg1 = (_arg1 + (Math.PI * 2));
};
while (_arg1 > (Math.PI * 2)) {
_arg1 = (_arg1 - (Math.PI * 2));
};
return (_arg1);
}
static function RandBetweenInt(_arg1:int, _arg2:int):int{
var _local3:int;
_local3 = (Math.random() * ((_arg2 - _arg1) + 1));
_local3 = (_local3 + _arg1);
return (_local3);
}
static function DotProduct(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
var _local5:Number;
_local5 = ((_arg1 * _arg3) + (_arg2 * _arg4));
return (_local5);
}
static function RandBool():Boolean{
if (Math.random() < 0.5){
return (true);
};
return (false);
}
static function SideOfLine(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number):Boolean{
var _local7:Number;
_local7 = DotProduct((_arg3 - _arg1), (_arg4 - _arg2), (_arg5 - _arg1), (_arg6 - _arg2));
if (_local7 < 0){
return (false);
};
return (true);
}
static function RenderCircle(_arg1:BitmapData, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:uint):void{
var _local6:int;
var _local7:Number;
var _local8:int;
var _local9:Number;
var _local10:Number;
var _local11:Number;
_local6 = 100;
_local7 = ((Math.PI * 2) / _local6);
_local9 = 0;
_local8 = 0;
while (_local8 < _local6) {
_local10 = (_arg2 + (Math.cos(_local9) * _arg4));
_local11 = (_arg3 + (Math.sin(_local9) * _arg4));
_local9 = (_local9 + _local7);
_arg1.setPixel32(int(_local10), int(_local11), _arg5);
_local8++;
};
}
public static function DP1(_arg1:Number):Number{
var _local2:Number;
_local2 = (Math.ceil((_arg1 * 10)) / 10);
return (_local2);
}
public static function RandCircle():Number{
return ((Math.random() * (Math.PI * 2)));
}
public static function RadToDeg(_arg1:Number):Number{
return (((360 / (Math.PI * 2)) * _arg1));
}
public static function NormalizeUnit(_arg1:Number):Number{
while (_arg1 < 0) {
_arg1 = (_arg1 + 1);
};
while (_arg1 > 1) {
_arg1--;
};
return (_arg1);
}
static function RandBetweenFloat(_arg1:Number, _arg2:Number):Number{
var _local3:Number;
_local3 = (Math.random() * (_arg2 - _arg1));
_local3 = (_local3 + _arg1);
return (_local3);
}
public static function LineLength(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
var _local5:Number;
var _local6:Number;
_local5 = (_arg3 - _arg1);
_local6 = (_arg4 - _arg2);
return (Math.sqrt(((_local5 * _local5) + (_local6 * _local6))));
}
static function DotProductAng(_arg1:Number, _arg2:Number):Number{
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
_local3 = Math.cos(_arg1);
_local4 = Math.sin(_arg1);
_local5 = Math.cos(_arg2);
_local6 = Math.sin(_arg2);
_local7 = ((_local3 * _local5) + (_local4 * _local6));
return (_local7);
}
static function DistBetweenPoints(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
var _local5:Number;
var _local6:Number;
_local5 = (_arg3 - _arg1);
_local6 = (_arg4 - _arg2);
return (Math.sqrt(((_local5 * _local5) + (_local6 * _local6))));
}
public static function ScaleBetween(_arg1:Number, _arg2:Number, _arg3:Number):Number{
var _local4:Number;
_local4 = ((_arg2 - _arg1) * _arg3);
_local4 = (_arg1 + _local4);
return (_local4);
}
static function Dist2BetweenPoints(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
var _local5:Number;
var _local6:Number;
_local5 = (_arg3 - _arg1);
_local6 = (_arg4 - _arg2);
return (((_local5 * _local5) + (_local6 * _local6)));
}
}
}//package
Section 146
//Vec (Vec)
package {
import flash.geom.*;
public class Vec {
public var speed:Number;
public var rot:Number;
public function Vec(){
rot = 0;
speed = 0;
}
public function Set(_arg1:Number, _arg2:Number){
rot = _arg1;
speed = _arg2;
}
public function GetUnitYComponent():Number{
return (Math.sin(rot));
}
public function dotRot(_arg1:Number):Number{
var _local2:Number;
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
_local2 = Math.cos(rot);
_local3 = Math.sin(rot);
_local4 = Math.cos(_arg1);
_local5 = Math.sin(_arg1);
_local6 = ((_local2 * _local4) + (_local3 * _local5));
return (_local6);
}
public function Add(_arg1:Vec){
var _local2:Number;
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
_local2 = (Math.cos(rot) * speed);
_local3 = (Math.sin(rot) * speed);
_local4 = (Math.cos(_arg1.rot) * _arg1.speed);
_local5 = (Math.sin(_arg1.rot) * _arg1.speed);
_local6 = (_local2 + _local4);
_local7 = (_local3 + _local5);
rot = Math.atan2(_local7, _local6);
speed = Math.sqrt(((_local6 * _local6) + (_local7 * _local7)));
}
public function FromVec(_arg1:Vec){
rot = _arg1.rot;
speed = _arg1.speed;
}
public function SetAngFromDxDy(_arg1:Number, _arg2:Number){
rot = Math.atan2(_arg2, _arg1);
}
function NormalizeRot():void{
while (rot < 0) {
rot = (rot + (Math.PI * 2));
};
while (rot > (Math.PI * 2)) {
rot = (rot - (Math.PI * 2));
};
}
public function GetUnitTangent():Point{
var _local1:Number;
var _local2:Point;
_local1 = (rot + (Math.PI * 0.5));
_local2 = new Point(Math.cos(_local1), Math.sin(_local1));
return (_local2);
}
public function SetAng(_arg1:Number){
rot = _arg1;
}
public function GetYComponent():Number{
return ((Math.sin(rot) * speed));
}
public function GetXComponent():Number{
return ((Math.cos(rot) * speed));
}
public function AddRot(_arg1:Number):void{
rot = (rot + _arg1);
NormalizeRot();
}
public function NearRot(_arg1:Number, _arg2:Number):Boolean{
var _local3:Number;
var _local4:Number;
_local3 = (rot - _arg1);
_local4 = Math.abs(_local3);
if (_local3 > Math.PI){
if (_arg1 < rot){
_arg1 = (_arg1 + (Math.PI * 2));
} else {
_arg1 = (_arg1 - (Math.PI * 2));
};
_local3 = (rot - _arg1);
};
if (Math.abs(_local3) <= _arg2){
return (true);
};
return (false);
}
public function GetUnitXComponent():Number{
return (Math.cos(rot));
}
}
}//package
Section 147
//WaveDef (WaveDef)
package {
public class WaveDef {
public var timer:int;
public var active:Boolean;
public var state:int;
public var numRepeats:int;
public var maxAtOnce:int;
public var frequency:int;
public var enemyTimer:int;
public var initialDelay:int;
public var enemyType:String;
public var length:int;
public var repeatDelay:int;
public var repeatCount:int;
function Reset(){
active = true;
timer = 0;
enemyTimer = 0;
state = 0;
repeatCount = 0;
}
function InitFromXml(_arg1:XML){
initialDelay = (Number(_arg1.@initialdelay) * Defs.fps);
frequency = (Number(_arg1.@frequency) * Defs.fps);
length = (Number(_arg1.@length) * Defs.fps);
enemyType = _arg1.@type;
maxAtOnce = int(_arg1.@max);
numRepeats = int(_arg1.@numrepeats);
repeatDelay = (Number(_arg1.@repeatdelay) * Defs.fps);
Reset();
}
}
}//package
Section 148
//WaveDefs (WaveDefs)
package {
public class WaveDefs {
static const s_bxf = 4;
static const p_sm = 1;
static const s_b = 3;
static const s_txf = 5;
static const s_l = 0;
static const s_r = 1;
static const p_sp = 2;
static const s_t = 2;
static const p_ln = 0;
static var startTime:int;
static var startPos:int;
static var waveID:int;
public static var currentPos:int;
static var list:Array;
static var currentTime:int;
static var shotDefList:Array;
public static var nextWaveDef:WaveDef;
public static function GetCurrentDef():WaveDef{
return (nextWaveDef);
}
public static function InitOnce(){
var _local1:ShotDef;
shotDefList = new Array();
_local1 = new ShotDef("atplayer_5");
_local1.SetNormal(0.1);
shotDefList.push(_local1);
_local1 = new ShotDef("atplayer_4");
_local1.SetNormal(0.25);
shotDefList.push(_local1);
_local1 = new ShotDef("atplayer_3");
_local1.SetNormal(0.5);
shotDefList.push(_local1);
_local1 = new ShotDef("atplayer_2");
_local1.SetNormal(1);
shotDefList.push(_local1);
_local1 = new ShotDef("atplayer_1");
_local1.SetNormal(1.5);
shotDefList.push(_local1);
_local1 = new ShotDef("atplayer_0");
_local1.SetNormal(5);
shotDefList.push(_local1);
_local1 = new ShotDef("atplayer_multi_3");
_local1.SetSpreadPulse(0.25, 5, 90);
shotDefList.push(_local1);
_local1 = new ShotDef("atplayer_multi_2");
_local1.SetSpreadPulse(0.5, 5, 90);
shotDefList.push(_local1);
_local1 = new ShotDef("atplayer_multi_1");
_local1.SetSpreadPulse(1, 5, 90);
shotDefList.push(_local1);
_local1 = new ShotDef("atplayer_multi_0");
_local1.SetSpreadPulse(2, 5, 90);
shotDefList.push(_local1);
_local1 = new ShotDef("down_multi_3");
_local1.SetSpreadPulse(25, 10, 140, 90);
shotDefList.push(_local1);
_local1 = new ShotDef("down_multi_2");
_local1.SetSpreadPulse(0.5, 10, 140, 90);
shotDefList.push(_local1);
_local1 = new ShotDef("down_multi_1");
_local1.SetSpreadPulse(1, 10, 140, 90);
shotDefList.push(_local1);
_local1 = new ShotDef("down_multi_0");
_local1.SetSpreadPulse(2, 10, 140, 90);
shotDefList.push(_local1);
_local1 = new ShotDef("down_3");
_local1.SetSpreadPulse(25, 1, 0, 90);
shotDefList.push(_local1);
_local1 = new ShotDef("down_2");
_local1.SetSpreadPulse(0.5, 1, 0, 90);
shotDefList.push(_local1);
_local1 = new ShotDef("down_1");
_local1.SetSpreadPulse(1, 1, 0, 90);
shotDefList.push(_local1);
_local1 = new ShotDef("down_0");
_local1.SetSpreadPulse(2, 1, 0, 90);
shotDefList.push(_local1);
_local1 = new ShotDef("biglaser_0");
_local1.SetNormal(3);
shotDefList.push(_local1);
}
public static function GetShotDefIndexByName(_arg1:String):int{
var _local2:int;
var _local3:int;
var _local4:ShotDef;
_local3 = shotDefList.length;
_local2 = 0;
while (_local2 < _local3) {
_local4 = shotDefList[_local2];
if (_local4.name == _arg1){
return (_local2);
};
_local2++;
};
return (0);
}
public static function AdvanceWave(){
currentPos++;
if (currentPos >= list.length){
nextWaveDef = null;
};
nextWaveDef = list[currentPos];
}
public static function Reset(){
currentPos = startPos;
nextWaveDef = list[currentPos];
}
}
}//package
Section 149
//weapon_axe (weapon_axe)
package {
import flash.display.*;
public dynamic class weapon_axe extends MovieClip {
}
}//package
Section 150
//weapon_crossbow (weapon_crossbow)
package {
import flash.display.*;
public dynamic class weapon_crossbow extends MovieClip {
}
}//package
Section 151
//weapon_flail (weapon_flail)
package {
import flash.display.*;
public dynamic class weapon_flail extends MovieClip {
}
}//package
Section 152
//weapon_longbow (weapon_longbow)
package {
import flash.display.*;
public dynamic class weapon_longbow extends MovieClip {
}
}//package
Section 153
//weapon_sling (weapon_sling)
package {
import flash.display.*;
public dynamic class weapon_sling extends MovieClip {
}
}//package
Section 154
//weapon_sword (weapon_sword)
package {
import flash.display.*;
public dynamic class weapon_sword extends MovieClip {
}
}//package