Frame 1
loadedBytes = _root.getBytesLoaded();
totalBytes = _root.getBytesTotal();
_root.loading_screen.loaderBar._width = (loadedBytes / totalBytes) * 670;
if (_framesloaded >= _totalframes) {
_root.loading_screen.play_game_button._visible = true;
if (_root.g_play_game) {
gotoAndPlay (4);
}
}
Frame 2
gotoAndPlay (1);
Frame 4
_global._colorDefinitions = {grey1:13421772, grey2:10066329, grey3:6710886, grey4:3355443, black:0, midnightblue:1644912, dodgerblue:2003199, lightseagreen:2142890, forestgreen:2263842, seagreen:3050327, darkslategray:3100495, darkslategrey:3100495, limegreen:3329330, mediumseagreen:3978097, turquoise:4251856, royalblue:4286945, steelblue:4620980, darkslateblue:4734347, mediumturquoise:4772300, indigo:525488, darkolivegreen:5597999, cadetblue:6266528, darkgreen:25600, cornflowerblue:6591981, mediumaquamarine:6737322, dimgray:6908265, dimgrey:6908265, slateblue:6970061, olivedrab:7048739, slategrey:7372944, slategray:7372944, lightslategray:7833753, lightslategrey:7833753, mediumslateblue:8087790, lawngreen:8190976, chartreuse:8388352, aquamarine:8388564, navy:128, maroon:8388608, green:65280, purple:8388736, olive:8421376, teal:32896, grey:8421504, gray:8421504, skyblue:8900331, lightskyblue:8900346, blueviolet:9055202, darkblue:9109504, darkred:9109504, darkmagenta:9109643, saddlebrown:9127187, darkcyan:9145088, darkseagreen:9419919, lightgreen:9498256, mediumpurple:9662683, darkviolet:9699539, palegreen:10025880, darkorchid:10040012, yellowgreen:10145074, sienna:10506797, brown:10824234, darkgrey:11119017, darkgray:11119017, lightblue:11393254, greenyellow:11403055, paleturquoise:11529966, lightsteelblue:11584734, powderblue:11591910, firebrick:11674146, darkgoldenrod:12092939, mediumorchid:12211667, rosybrown:12357519, darkkhaki:12433259, deepskyblue:12582656, silver:12632256, mediumvioletred:13047173, mediumblue:13434880, indianred:13458524, peru:13468991, darkturquoise:13553920, chocolate:13789470, tan:13808780, lightgray:13882323, lightgrey:13882323, thistle:14204888, orchid:14315734, goldenrod:14329120, palevioletred:14381203, crimson:14423100, gainsboro:14474460, plum:14524637, burlywood:14596231, lightcyan:14745599, lavender:15132410, darksalmon:15308410, violet:15631086, palegoldenrod:15657130, lightcoral:15761536, khaki:15787660, aliceblue:15792383, honeydew:15794160, azure:15794175, sandybrown:16032864, wheat:16113331, beige:16119260, whitesmoke:16119285, mintcream:16121850, ghostwhite:16316671, salmon:16416882, mediumspringgreen:16423424, antiquewhite:16444375, linen:16445670, lightgoldenrodyellow:16448210, oldlace:16643558, red:16711680, lime:65280, blue:255, fuchsia:16711935, magenta:16711935, deeppink:16716947, orangered:16729344, tomato:16737095, hotpink:16738740, springgreen:65407, coral:16744272, darkorange:16747520, lightsalmon:16752762, orange:16753920, lightpink:16758465, pink:16761035, gold:16766720, peachpuff:16767673, navajowhite:16768685, moccasin:16770229, bisque:16770244, mistyrose:16770273, blanchedalmond:16772045, papayawhip:16773077, lavenderblush:16773365, seashell:16774638, cornsilk:16775388, lemonchiffon:16775885, floralwhite:16775920, snow:16775930, yellow:16776960, cyan:65535, aqua:16776960, lightyellow:16777184, ivory:16777200, white:16777215};
getColor = function () {
var _local3;
var _local2;
var _local4 = new Color(this).getRGB();
for (_local3 in _colorDefinitions) {
if (_local4 == _colorDefinitions[_local3]) {
return(_local3);
}
if (_local4 < _colorDefinitions[_local3]) {
_local2 = "0x" + _local4.toString(16);
while (_local2.length < 8) {
_local2 = _local2 + "0";
}
return(_local2);
}
}
_local2 = "0x" + _local4.toString(16);
while (_local2.length < 8) {
_local2 = _local2 + "0";
}
return(_local2);
};
setColor = function (col) {
if (typeof(col) == "string") {
if (col.charAt(0) == "0") {
new Color(this).setRGB(parseInt(col));
} else {
new Color(this).setRGB(_colorDefinitions[col]);
}
} else {
new Color(this).setRGB(col);
}
};
MovieClip.prototype.addProperty("_color", getColor, setColor);
stop();
stopAllSounds();
var gameApp = new GameApp();
function __com_mochibot__(swfid, mc, lv, trk) {
var x;
var g;
var s;
var fv;
var sb;
var u;
var res;
var mb;
var mbc;
mb = "__mochibot__";
mbc = "mochibot.com";
g = (_global ? (_global) : (_level0._root));
if (g[mb + swfid]) {
return(g[mb + swfid]);
}
s = System.security;
x = mc._root.getSWFVersion;
fv = (x ? (mc.getSWFVersion()) : ((_global ? 6 : 5)));
if (!s) {
s = {};
}
sb = s.sandboxType;
if (sb == "localWithFile") {
return(null);
}
x = s.allowDomain;
if (x) {
s.allowDomain(mbc);
}
x = s.allowInsecureDomain;
if (x) {
s.allowInsecureDomain(mbc);
}
u = (((((((((((("http://" + mbc) + "/my/core.swf?mv=7&fv=") + fv) + "&v=") + escape(getVersion())) + "&swfid=") + escape(swfid)) + "&l=") + lv) + "&f=") + mc) + (sb ? ("&sb=" + sb) : "")) + (trk ? "&t=1" : "");
lv = ((fv > 6) ? (mc.getNextHighestDepth()) : ((g[mb + "level"] ? (g[mb + "level"] + 1) : (lv))));
g[mb + "level"] = lv;
if (fv == 5) {
res = "_level" + lv;
if (!eval (res)) {
loadMovieNum (u, lv);
}
} else {
res = mc.createEmptyMovieClip(mb + swfid, lv);
res.loadMovie(u);
}
return(res);
}
__com_mochibot__("f508c4fa", this, 10301, true);
Instance of Symbol 4 MovieClip in Symbol 5 MovieClip Frame 1
onClipEvent (load) {
_color = _root.g_goodArmyColor;
}
Instance of Symbol 136 MovieClip in Symbol 139 MovieClip [arrow_hero] Frame 1
onClipEvent (load) {
_color = GameVars.g_goodArmyColor2;
}
Instance of Symbol 138 MovieClip in Symbol 139 MovieClip [arrow_hero] Frame 1
onClipEvent (load) {
_color = GameVars.g_goodArmyColor2;
}
Symbol 141 Button
on (rollOver) {
explain.text = m_view.explainBasicArrow();
}
Instance of Symbol 136 MovieClip in Symbol 143 MovieClip [arrow_fire] Frame 1
onClipEvent (load) {
_color = GameVars.g_goodArmyColor2;
}
Instance of Symbol 138 MovieClip in Symbol 143 MovieClip [arrow_fire] Frame 1
onClipEvent (load) {
_color = GameVars.g_goodArmyColor2;
}
Symbol 145 Button
on (release) {
m_view.purchaseFireArrow();
}
on (rollOver) {
explain.text = m_view.explainFireArrow();
}
Symbol 150 Button
on (release) {
m_view.purchaseFireWave();
}
on (rollOver) {
explain.text = m_view.explainFireWave();
}
Symbol 157 Button
on (release) {
m_view.purchaseHealWave();
}
on (rollOver) {
explain.text = m_view.explainHealWave();
}
Instance of Symbol 136 MovieClip in Symbol 159 MovieClip [arrow_ice] Frame 1
onClipEvent (load) {
_color = GameVars.g_goodArmyColor2;
}
Instance of Symbol 138 MovieClip in Symbol 159 MovieClip [arrow_ice] Frame 1
onClipEvent (load) {
_color = GameVars.g_goodArmyColor;
}
Symbol 161 Button
on (release) {
m_view.purchaseIceArrow();
}
on (rollOver) {
explain.text = m_view.explainIceArrow();
}
Symbol 165 Button
on (release) {
m_view.purchaseMeteor();
}
on (rollOver) {
explain.text = m_view.explainMeteor();
}
Symbol 169 Button
on (release) {
m_view.purchaseThunderArrow();
}
on (rollOver) {
explain.text = m_view.explainThunderArrow();
}
Symbol 178 Button
on (release) {
m_view.purchaseBombWaveArrow();
}
on (rollOver) {
explain.text = m_view.explainBombWaveArrow();
}
Symbol 182 Button
on (release) {
m_view.purchaseComet();
}
on (rollOver) {
explain.text = m_view.explainComet();
}
Symbol 188 Button
on (release) {
m_view.purchaseIceWave();
}
on (rollOver) {
explain.text = m_view.explainIceWave();
}
Instance of Symbol 136 MovieClip in Symbol 190 MovieClip [arrow_flak_bomb] Frame 1
onClipEvent (load) {
_color = GameVars.g_goodArmyColor2;
}
Instance of Symbol 138 MovieClip in Symbol 190 MovieClip [arrow_flak_bomb] Frame 1
onClipEvent (load) {
_color = GameVars.g_goodArmyColor2;
}
Symbol 192 Button
on (release) {
m_view.purchaseFlakBombArrow();
}
on (rollOver) {
explain.text = m_view.explainFlakBombArrow();
}
Instance of Symbol 136 MovieClip in Symbol 194 MovieClip [arrow_bomb] Frame 1
onClipEvent (load) {
_color = GameVars.g_goodArmyColor2;
}
Instance of Symbol 138 MovieClip in Symbol 194 MovieClip [arrow_bomb] Frame 1
onClipEvent (load) {
_color = GameVars.g_goodArmyColor;
}
Symbol 196 Button
on (release) {
m_view.purchaseBombArrow();
}
on (rollOver) {
explain.text = m_view.explainBombArrow();
}
Instance of Symbol 205 MovieClip in Symbol 207 MovieClip Frame 1
onClipEvent (load) {
_color = GameVars.g_goodArmyColor2;
}
Instance of Symbol 209 MovieClip in Symbol 211 MovieClip Frame 1
onClipEvent (load) {
_color = GameVars.g_goodArmyColor;
}
Instance of Symbol 210 MovieClip in Symbol 211 MovieClip Frame 1
onClipEvent (load) {
_color = GameVars.g_goodArmyColor2;
}
Instance of Symbol 214 MovieClip in Symbol 217 MovieClip Frame 1
onClipEvent (load) {
_color = GameVars.g_goodArmyColor;
}
Instance of Symbol 216 MovieClip in Symbol 217 MovieClip Frame 1
onClipEvent (load) {
_color = GameVars.g_goodArmyColor2;
}
Instance of Symbol 224 MovieClip in Symbol 225 MovieClip Frame 1
onClipEvent (load) {
_color = GameVars.g_goodArmyColor;
}
Instance of Symbol 228 MovieClip in Symbol 229 MovieClip Frame 1
onClipEvent (load) {
_color = GameVars.g_goodArmyColor;
}
Instance of Symbol 240 MovieClip in Symbol 241 MovieClip Frame 1
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 242 MovieClip in Symbol 243 MovieClip [skill_icon_archer] Frame 1
onClipEvent (load) {
gotoAndStop (39);
}
Symbol 244 Button
on (release) {
m_view.purchaseArcherSkill();
}
on (rollOver) {
explain.text = m_view.explainArcherSkill();
}
Instance of Symbol 258 MovieClip in Symbol 259 MovieClip Frame 1
onClipEvent (load) {
_color = GameVars.g_goodArmyColor;
}
Instance of Symbol 262 MovieClip in Symbol 263 MovieClip Frame 1
onClipEvent (load) {
_color = GameVars.g_goodArmyColor2;
}
Instance of Symbol 267 MovieClip in Symbol 268 MovieClip Frame 1
onClipEvent (load) {
_color = GameVars.g_goodArmyColor;
}
Instance of Symbol 274 MovieClip in Symbol 275 MovieClip Frame 1
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 276 MovieClip in Symbol 277 MovieClip [skill_icon_grunt] Frame 1
onClipEvent (load) {
gotoAndStop (24);
}
Symbol 278 Button
on (release) {
m_view.purchaseGruntSkill();
}
on (rollOver) {
explain.text = m_view.explainGruntSkill();
}
Instance of Symbol 290 MovieClip in Symbol 292 MovieClip Frame 1
onClipEvent (load) {
_color = _root.g_goodArmyColor;
}
Instance of Symbol 295 MovieClip in Symbol 297 MovieClip Frame 1
onClipEvent (load) {
_color = GameVars.g_goodArmyColor;
}
Instance of Symbol 303 MovieClip in Symbol 305 MovieClip Frame 1
onClipEvent (load) {
_color = GameVars.g_goodArmyColor;
}
Instance of Symbol 312 MovieClip in Symbol 313 MovieClip Frame 1
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 314 MovieClip in Symbol 315 MovieClip [skill_icon_grunt2] Frame 1
onClipEvent (load) {
gotoAndStop (20);
}
Symbol 316 Button
on (release) {
m_view.purchaseTallGruntSkill();
}
on (rollOver) {
explain.text = m_view.explainTallGruntSkill();
}
Instance of Symbol 329 MovieClip in Symbol 330 MovieClip Frame 1
onClipEvent (load) {
_color = GameVars.g_goodArmyColor;
}
Instance of Symbol 340 MovieClip in Symbol 343 MovieClip Frame 1
onClipEvent (load) {
_color = GameVars.g_goodArmyColor;
}
Instance of Symbol 342 MovieClip in Symbol 343 MovieClip Frame 1
onClipEvent (load) {
_color = GameVars.g_goodArmyColor2;
}
Instance of Symbol 345 MovieClip in Symbol 346 MovieClip Frame 1
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 368 MovieClip in Symbol 369 MovieClip [skill_icon_mount] Frame 1
onClipEvent (load) {
gotoAndStop (8);
}
Symbol 370 Button
on (release) {
m_view.purchaseMountSkill();
}
on (rollOver) {
explain.text = m_view.explainMountSkill();
}
Instance of Symbol 378 MovieClip in Symbol 383 MovieClip Frame 1
onClipEvent (load) {
_color = GameVars.g_goodArmyColor2;
}
Instance of Symbol 380 MovieClip in Symbol 383 MovieClip Frame 1
onClipEvent (load) {
_color = GameVars.g_goodArmyColor;
}
Instance of Symbol 382 MovieClip in Symbol 383 MovieClip Frame 1
onClipEvent (load) {
_color = GameVars.g_goodArmyColor2;
}
Instance of Symbol 386 MovieClip in Symbol 389 MovieClip Frame 1
onClipEvent (load) {
_color = GameVars.g_goodArmyColor2;
}
Instance of Symbol 388 MovieClip in Symbol 389 MovieClip Frame 1
onClipEvent (load) {
_color = GameVars.g_goodArmyColor;
}
Instance of Symbol 392 MovieClip in Symbol 396 MovieClip Frame 1
onClipEvent (load) {
_color = GameVars.g_goodArmyColor;
}
Instance of Symbol 394 MovieClip in Symbol 396 MovieClip Frame 1
onClipEvent (load) {
_color = GameVars.g_goodArmyColor2;
}
Instance of Symbol 401 MovieClip in Symbol 402 MovieClip Frame 1
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 402 MovieClip "arrow_guide" in Symbol 403 MovieClip Frame 1
onClipEvent (load) {
var scaleFactor = 0.38;
var xOffset = -59.6;
var yOffset = 15.3;
}
onClipEvent (enterFrame) {
_rotation = (-_parent.anim.arrow_guide._rotation);
_x = ((-(_parent.anim.arrow_guide._x - xOffset)) * scaleFactor);
_y = ((_parent.anim.arrow_guide._y - yOffset) * scaleFactor);
}
Instance of Symbol 403 MovieClip in Symbol 404 MovieClip [skill_icon_priest] Frame 1
onClipEvent (load) {
gotoAndStop (102);
}
Symbol 405 Button
on (release) {
m_view.purchasePriestSkill();
}
on (rollOver) {
explain.text = m_view.explainPriestSkill();
}
Instance of Symbol 410 MovieClip in Symbol 412 MovieClip Frame 1
onClipEvent (load) {
_color = GameVars.g_goodArmyColor;
}
Instance of Symbol 413 MovieClip in Symbol 414 MovieClip Frame 1
onClipEvent (load) {
var temp = attachMovie(GameVars.g_goodArmyIcon, "good_icon", 1);
temp._xscale = (temp._yscale = 150);
temp.paint._color = GameVars.g_goodArmyIconColor1;
}
Instance of Symbol 416 MovieClip in Symbol 417 MovieClip Frame 1
onClipEvent (load) {
_color = GameVars.g_goodArmyColor;
}
Instance of Symbol 419 MovieClip in Symbol 420 MovieClip Frame 1
onClipEvent (load) {
_color = GameVars.g_goodArmyColor2;
}
Instance of Symbol 422 MovieClip in Symbol 423 MovieClip Frame 1
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 424 MovieClip "anim" in Symbol 425 MovieClip [skill_icon_catapult] Frame 1
onClipEvent (load) {
gotoAndStop (1);
}
Symbol 426 Button
on (release) {
m_view.purchaseTrebuchetSkill();
}
on (rollOver) {
explain.text = m_view.explainTrebuchetSkill();
}
Symbol 430 Button
on (release) {
m_view.purchasePierceArrow();
}
on (rollOver) {
explain.text = m_view.explainPierceArrow();
}
Symbol 436 Button
on (release) {
m_view.closeWindow();
}
Symbol 440 MovieClip [window_upgrades] Frame 1
var m_view;
var m_game;
Instance of Symbol 439 MovieClip in Symbol 440 MovieClip [window_upgrades] Frame 1
onClipEvent (load) {
count = 0;
}
onClipEvent (enterFrame) {
if (_root.g_autoPilot && ((count++) > 20)) {
_parent.m_view.closeWindow();
}
}
Symbol 442 MovieClip [window_unlockables] Frame 1
var m_view;
var m_game;
Symbol 444 MovieClip [window_settings] Frame 1
var m_view;
var m_game;
Symbol 452 Button
on (release) {
if (name_text.text != "") {
m_view.createProfile(name_text.text);
m_view.closeWindow();
}
}
Symbol 454 Button
on (release) {
m_view.closeWindow();
}
Instance of Symbol 456 MovieClip in Symbol 457 MovieClip [layer_clip] Frame 1
onClipEvent (load) {
_alpha = 0;
}
Symbol 464 MovieClip Frame 1
stop();
Symbol 472 MovieClip Frame 1
stop();
Symbol 478 MovieClip Frame 1
stop();
Symbol 480 Button
on (release) {
unselectAll();
g1.gotoAndStop("on");
active = g1;
}
Symbol 481 Button
on (release) {
unselectAll();
g2.gotoAndStop("on");
active = g2;
}
Symbol 482 Button
on (release) {
unselectAll();
b1.gotoAndStop("on");
active = b1;
}
Symbol 483 Button
on (release) {
unselectAll();
b2.gotoAndStop("on");
active = b2;
}
Symbol 484 Button
on (release) {
unselectAll();
gf.gotoAndStop("on");
active = gf;
}
Symbol 485 Button
on (release) {
unselectAll();
bf.gotoAndStop("on");
active = bf;
}
Symbol 486 MovieClip [army_chooser_color_activator] Frame 1
function unselectAll() {
g1.gotoAndStop("off");
g2.gotoAndStop("off");
b1.gotoAndStop("off");
b2.gotoAndStop("off");
gf.gotoAndStop("off");
bf.gotoAndStop("off");
trace("active was: " + active);
}
function updateColor(clr) {
if ((active != gf) && (active != bf)) {
active.color_box._color = clr;
if (active == g1) {
gf.inner._color = clr;
gc1 = clr;
} else if (active == g2) {
gf.trim._color = clr;
gc2 = clr;
} else if (active == b1) {
bf.inner._color = clr;
bc1 = clr;
} else if (active == b2) {
bf.trim._color = clr;
bc2 = clr;
}
} else if (active == gf) {
trace("painting good army logo");
goodLogo.paint._color = clr;
goodIconColor = clr;
} else if (active == bf) {
trace("painting bad army logo");
badLogo.paint._color = clr;
badIconColor = clr;
}
}
function updateIcon(icn) {
if (((active == gf) || (active == g1)) || (active == g2)) {
goodLogo = gf.icon_spot.attachMovie(icn, icn, 1);
gf.icon_name = icn;
goodLogo.paint._color = goodIconColor;
active = gf;
} else {
badLogo = bf.icon_spot.attachMovie(icn, icn, 1);
bf.icon_name = icn;
badLogo.paint._color = badIconColor;
active = bf;
}
}
active = g1;
g1.gotoAndStop("on");
gc1 = "blue";
gc2 = "cyan";
goodIconColor = "white";
bc1 = "black";
bc2 = "red";
badIconColor = "white";
g1.color_box._color = gc1;
g2.color_box._color = gc2;
trace("in army_graphics clip, gc2: " + gc2);
b1.color_box._color = bc1;
b2.color_box._color = bc2;
gf.inner._color = gc1;
gf.trim._color = gc2;
bf.inner._color = bc1;
bf.trim._color = bc2;
goodLogo = gf.icon_spot.attachMovie("icon_good_cross", "icon_good_cross", 1);
gf.icon_name = "icon_good_cross";
goodLogo.paint._color = goodIconColor;
badLogo = bf.icon_spot.attachMovie("icon_skull", "icon_skull", 1);
bf.icon_name = "icon_skull";
badLogo.paint._color = badIconColor;
Symbol 491 MovieClip Frame 1
stop();
Symbol 492 Button
on (release) {
unselectAll();
auto_aim.gotoAndStop("on");
help_text = auto_aim_text;
active = auto_aim;
shootingMethod = "auto_aim";
}
Symbol 493 Button
on (release) {
unselectAll();
point_aim.gotoAndStop("on");
help_text = point_aim_text;
active = point_aim;
shootingMethod = "point_aim";
}
Symbol 494 Button
on (release) {
unselectAll();
pull_string.gotoAndStop("on");
help_text = pull_string_text;
active = pull_string;
shootingMethod = "drag_circle";
}
Symbol 495 Button
on (release) {
unselectAll();
drag_anywhere.gotoAndStop("on");
help_text = drag_anywhere_text;
active = drag_anywhere;
shootingMethod = "drag_anywhere";
}
Symbol 501 MovieClip Frame 1
function unselectAll() {
auto_aim.gotoAndStop("off");
point_aim.gotoAndStop("off");
pull_string.gotoAndStop("off");
drag_anywhere.gotoAndStop("off");
trace("active was: " + active);
}
active = pull_string;
pull_string.gotoAndStop("on");
shootingMethod = "drag_circle";
auto_aim_text = "Auto Aim allows you to click anywhere on the screen and your arrow will travel there. This is the easiest method for aiming and is recommended for beginners. This shooting method comes with two modes: high angle and low angle shots. You can switch between the two modes by clicking on the H and L buttons. You may also adjust the shot power, although it is likely that you won't need to. Also note that if you click somewhere that is out of range the arrow will not be shot.";
point_aim_text = "Point aim allows you to click anywhere on the screen and your BowMaster will shoot in the direction of your mouse using the specified bow power (slider bar). This is more challenging than Auto Aim because you'll have to manually point your crosshair up to adjust for gravity. However, this method is not as challenging as \"drag anywhere\" or \"pull string\" modes. This shooting method is recommended for novice players.";
pull_string_text = "The Pull String shooting method is the same method used in BowMaster 1. This method requires you to click and hold a green circle button, then drag the button, then release. This method simulates pulling a bow string. The power is determined by the distance of how far back you pull the string and and the angle is determined by the rotation of your bow. This method is for veteran BowMasters that are used to the BowMaster 1 shooting style or for new players that want a more challenging shooting method than \"Auto Aim\" or \"Point Aim.\"";
drag_anywhere_text = "The Drag Anywhere shooting option is the most advance method. It is similar to the Pull String method in that you click-hold-drag-release but the difference is you can click and drag from anywhere on the screen. There is no green circle to click on like the Pull String method. When you click and drag, a red line appears to indicate your power and angle, but the shot will still start from your hero unit. This method can be tricky to master at first, especially if you're used to the classic bowmaster Pull String method, but if you learn to master this method you will be able to fire shots more quickly than the Pull String method.";
help_text = pull_string_text;
Symbol 504 MovieClip [window_profilecreator] Frame 1
var m_view;
var m_game;
Symbol 506 Button
on (release) {
m_view.setActiveIcon(m_icon);
}
Symbol 507 MovieClip [icon_button_clip] Frame 1
var m_view;
var m_icon;
Symbol 508 Button
on (release) {
m_view.setActiveColor(m_color);
}
Symbol 509 MovieClip [color_button_clip] Frame 1
var m_view;
var m_color;
Symbol 531 MovieClip Frame 1
stop();
Symbol 532 MovieClip Frame 1
function setPercent(num) {
bar._width = num;
}
Symbol 554 MovieClip Frame 1
var profileName;
var profileClass;
var profileSkills;
var profileMission;
var profileStory;
var profileRatio;
var profileRank;
Symbol 566 Button
on (release) {
_parent.m_game.highscores.displayWindow();
}
Symbol 568 Button
on (release) {
getURL ("http://www.dragongamez.com", "_blank");
}
Symbol 570 Button
on (release) {
_parent._parent.m_game.profileManager.deleteActiveProfile();
_visible = false;
}
Symbol 572 Button
on (release) {
_visible = false;
}
Symbol 577 Button
on (release) {
_visible = false;
}
Symbol 578 MovieClip Frame 1
_parent.m_game.profileManager.deleteActiveProfile();
Symbol 578 MovieClip Frame 2
stop();
Symbol 581 Button
on (release) {
_parent.m_game.levelManager.displayWindow();
}
Symbol 583 Button
on (release) {
_parent.m_game.credits.displayWindow();
}
Symbol 585 Button
on (release) {
_parent.m_game.attemptDisplayProfileCreator();
}
Symbol 587 Button
on (release) {
confirmProfileDelete._visible = true;
if (_parent.m_game.profileManager.m_profiles.length == 1) {
confirmProfileDelete.gotoAndStop(2);
} else {
confirmProfileDelete.gotoAndStop(1);
}
confirmProfileDelete.prof_name.text = _parent.m_game.profileManager.m_active.m_name;
}
Symbol 589 Button
on (release) {
_parent.m_game.helpMenu.displayWindow();
}
Instance of Symbol 578 MovieClip "confirmProfileDelete" in Symbol 590 MovieClip Frame 1
onClipEvent (load) {
_visible = false;
}
Symbol 600 MovieClip [window_main] Frame 1
var m_view;
var m_game;
_root._quality = "HIGH";
_global.g_myVersion = "0.2";
if (!_global.announcement_loaded) {
_global.announcement_loaded = true;
loadMovie ("http://www.lostvectors.com/prelude/announcement.swf", profile_view.announcement);
}
Instance of Symbol 592 MovieClip "version_checker" in Symbol 600 MovieClip [window_main] Frame 1
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 599 MovieClip "profile_limit_msg" in Symbol 600 MovieClip [window_main] Frame 1
onClipEvent (load) {
_visible = false;
count = 0;
}
onClipEvent (enterFrame) {
if (_visible) {
if ((count++) > 100) {
_visible = false;
count = 0;
}
}
}
Symbol 604 Button
on (release) {
m_manager.setActiveProfile(m_id);
}
Symbol 605 MovieClip [profile_button] Frame 1
var m_name;
var m_id;
var m_manager;
Symbol 610 Button
on (release) {
m_view.purchaseUpgrades();
}
Symbol 612 Button
on (release) {
m_view.nextRound();
}
Symbol 614 Button
on (release) {
m_view.nextRound();
}
Symbol 628 MovieClip [window_levelsummary] Frame 1
var m_view;
var m_game;
var m_gold;
var m_xp;
var m_accuracy;
var m_civility;
var m_economy;
var m_salvage;
var m_msg;
Symbol 629 MovieClip [level_summary_stepper] Frame 1
var m_view;
Instance of Symbol 439 MovieClip in Symbol 629 MovieClip [level_summary_stepper] Frame 1
onClipEvent (enterFrame) {
_parent.m_view.step();
updateAfterEvent();
}
Symbol 632 MovieClip Frame 1
stop();
auto_aim_text = "Auto Aim allows you to click anywhere on the screen and your arrow will travel there. This is the easiest method for aiming and is recommended for beginners. This shooting method comes with two modes: high angle and low angle shots. You can switch between the two modes by clicking on the H and L buttons. You may also adjust the shot power, although it is likely that you won't need to. Also note that if you click somewhere that is out of range the arrow will not be shot.";
point_aim_text = "Point aim allows you to click anywhere on the screen and your BowMaster will shoot in the direction of your mouse using the specified bow power (slider bar). This is more challenging than Auto Aim because you'll have to manually point your crosshair up to adjust for gravity. However, this method is not as challenging as \"drag anywhere\" or \"pull string\" modes. This shooting method is recommended for novice players.";
pull_string_text = "The Pull String shooting method is the same method used in BowMaster 1. This method requires you to click and hold a green circle button, then drag the button, then release. This method simulates pulling a bow string. The power is determined by the distance of how far back you pull the string and and the angle is determined by the rotation of your bow. This method is for veteran BowMasters that are used to the BowMaster 1 shooting style or for new players that want a more challenging shooting method than \"Auto Aim\" or \"Point Aim.\"";
drag_anywhere_text = "The Drag Anywhere shooting option is the most advance method. It is similar to the Pull String method in that you click-hold-drag-release but the difference is you can click and drag from anywhere on the screen. There is no green circle to click on like the Pull String method. When you click and drag, a red line appears to indicate your power and angle, but the shot will still start from your hero unit. This method can be tricky to master at first, especially if you're used to the classic bowmaster Pull String method, but if you learn to master this method you will be able to fire shots more quickly than the Pull String method.";
Symbol 635 Button
on (release) {
gotoAndStop ("objective");
}
Symbol 638 Button
on (release) {
gotoAndStop ("troops");
}
Symbol 641 Button
on (release) {
gotoAndStop ("shooting");
}
Symbol 644 Button
on (release) {
gotoAndStop ("gold_xp");
}
Symbol 647 Button
on (release) {
gotoAndStop ("hero");
}
Symbol 650 Button
on (release) {
gotoAndStop ("skills");
}
Symbol 653 Button
on (release) {
gotoAndStop ("structures");
}
Symbol 656 Button
on (release) {
gotoAndStop ("saving");
}
Symbol 658 MovieClip Frame 1
stop();
auto_aim_text = "Auto Aim allows you to click anywhere on the screen and your arrow will travel there. This is the easiest method for aiming and is recommended for beginners. This shooting method comes with two modes: high angle and low angle shots. You can switch between the two modes by clicking on the H and L buttons. You may also adjust the shot power, although it is likely that you won't need to. Also note that if you click somewhere that is out of range the arrow will not be shot.";
point_aim_text = "Point aim allows you to click anywhere on the screen and your BowMaster will shoot in the direction of your mouse using the specified bow power (slider bar). This is more challenging than Auto Aim because you'll have to manually point your crosshair up to adjust for gravity. However, this method is not as challenging as \"drag anywhere\" or \"pull string\" modes. This shooting method is recommended for novice players.";
pull_string_text = "The Pull String shooting method is the same method used in BowMaster 1. This method requires you to click and hold a green circle button, then drag the button, then release. This method simulates pulling a bow string. The power is determined by the distance of how far back you pull the string and and the angle is determined by the rotation of your bow. This method is for veteran BowMasters that are used to the BowMaster 1 shooting style or for new players that want a more challenging shooting method than \"Auto Aim\" or \"Point Aim.\"";
drag_anywhere_text = "The Drag Anywhere shooting option is the most advance method. It is similar to the Pull String method in that you click-hold-drag-release but the difference is you can click and drag from anywhere on the screen. There is no green circle to click on like the Pull String method. When you click and drag, a red line appears to indicate your power and angle, but the shot will still start from your hero unit. This method can be tricky to master at first, especially if you're used to the classic bowmaster Pull String method, but if you learn to master this method you will be able to fire shots more quickly than the Pull String method.";
Symbol 663 Button
on (release) {
gotoAndStop ("basic_info");
}
Symbol 666 Button
on (release) {
gotoAndStop ("trebuchet");
}
Symbol 669 Button
on (release) {
gotoAndStop ("grunt");
}
Symbol 672 Button
on (release) {
gotoAndStop ("big_grunt");
}
Symbol 675 Button
on (release) {
gotoAndStop ("mounted");
}
Symbol 678 Button
on (release) {
gotoAndStop ("priest");
}
Symbol 681 Button
on (release) {
gotoAndStop ("other");
}
Symbol 684 Button
on (release) {
gotoAndStop ("archer");
}
Instance of Symbol 694 MovieClip in Symbol 695 MovieClip Frame 1
onClipEvent (load) {
_color = GameVars.g_badArmyColor;
}
Instance of Symbol 413 MovieClip in Symbol 696 MovieClip Frame 1
onClipEvent (load) {
var temp = attachMovie(GameVars.g_badArmyIcon, "bad_icon", 1);
temp._xscale = (temp._yscale = 150);
temp.paint._color = GameVars.g_badArmyIconColor1;
}
Instance of Symbol 699 MovieClip in Symbol 700 MovieClip Frame 1
onClipEvent (load) {
_color = GameVars.g_badArmyColor;
}
Instance of Symbol 701 MovieClip in Symbol 703 MovieClip Frame 1
onClipEvent (load) {
_color = GameVars.g_badArmyColor2;
}
Instance of Symbol 705 MovieClip in Symbol 706 MovieClip Frame 1
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 719 MovieClip in Symbol 720 MovieClip Frame 1
onClipEvent (load) {
_color = GameVars.g_badArmyColor;
}
Instance of Symbol 723 MovieClip in Symbol 725 MovieClip Frame 1
onClipEvent (load) {
_color = GameVars.g_badArmyColor;
}
Instance of Symbol 724 MovieClip in Symbol 725 MovieClip Frame 1
onClipEvent (load) {
_color = GameVars.g_badArmyColor2;
}
Instance of Symbol 729 MovieClip in Symbol 733 MovieClip Frame 1
onClipEvent (load) {
_color = GameVars.g_badArmyColor;
}
Instance of Symbol 732 MovieClip in Symbol 733 MovieClip Frame 1
onClipEvent (load) {
_color = GameVars.g_badArmyColor;
}
Instance of Symbol 739 MovieClip in Symbol 740 MovieClip Frame 1
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 753 MovieClip in Symbol 754 MovieClip Frame 1
onClipEvent (load) {
_color = GameVars.g_badArmyColor;
}
Instance of Symbol 757 MovieClip in Symbol 761 MovieClip Frame 1
onClipEvent (load) {
_color = GameVars.g_badArmyColor;
}
Instance of Symbol 759 MovieClip in Symbol 761 MovieClip Frame 1
onClipEvent (load) {
_color = GameVars.g_badArmyColor2;
}
Instance of Symbol 765 MovieClip in Symbol 769 MovieClip Frame 1
onClipEvent (load) {
_color = GameVars.g_badArmyColor;
}
Instance of Symbol 768 MovieClip in Symbol 769 MovieClip Frame 1
onClipEvent (load) {
_color = GameVars.g_badArmyColor;
}
Instance of Symbol 775 MovieClip in Symbol 776 MovieClip Frame 1
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 788 MovieClip in Symbol 789 MovieClip Frame 1
onClipEvent (load) {
_color = GameVars.g_badArmyColor;
}
Instance of Symbol 790 MovieClip in Symbol 792 MovieClip Frame 1
onClipEvent (load) {
_color = GameVars.g_badArmyColor;
}
Instance of Symbol 791 MovieClip in Symbol 792 MovieClip Frame 1
onClipEvent (load) {
_color = GameVars.g_badArmyColor;
}
Instance of Symbol 800 MovieClip in Symbol 802 MovieClip Frame 1
onClipEvent (load) {
_color = GameVars.g_badArmyColor;
}
Instance of Symbol 801 MovieClip in Symbol 802 MovieClip Frame 1
onClipEvent (load) {
_color = GameVars.g_badArmyColor2;
}
Instance of Symbol 804 MovieClip in Symbol 805 MovieClip Frame 1
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 818 MovieClip in Symbol 821 MovieClip Frame 1
onClipEvent (load) {
_color = GameVars.g_badArmyColor2;
}
Instance of Symbol 820 MovieClip in Symbol 821 MovieClip Frame 1
onClipEvent (load) {
_color = GameVars.g_badArmyColor;
}
Instance of Symbol 824 MovieClip in Symbol 827 MovieClip Frame 1
onClipEvent (load) {
_color = GameVars.g_badArmyColor2;
}
Instance of Symbol 826 MovieClip in Symbol 827 MovieClip Frame 1
onClipEvent (load) {
_color = GameVars.g_badArmyColor;
}
Instance of Symbol 834 MovieClip in Symbol 835 MovieClip Frame 1
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 835 MovieClip "arrow_guide" in Symbol 836 MovieClip Frame 1
onClipEvent (load) {
var scaleFactor = 0.38;
var xOffset = -59.6;
var yOffset = 15.3;
}
onClipEvent (enterFrame) {
_rotation = (-_parent.anim.arrow_guide._rotation);
_x = ((-(_parent.anim.arrow_guide._x - xOffset)) * scaleFactor);
_y = ((_parent.anim.arrow_guide._y - yOffset) * scaleFactor);
}
Instance of Symbol 847 MovieClip in Symbol 849 MovieClip Frame 1
onClipEvent (load) {
_color = GameVars.g_badArmyColor;
}
Instance of Symbol 848 MovieClip in Symbol 849 MovieClip Frame 1
onClipEvent (load) {
_color = GameVars.g_badArmyColor2;
}
Instance of Symbol 852 MovieClip in Symbol 854 MovieClip Frame 1
onClipEvent (load) {
_color = GameVars.g_badArmyColor;
}
Instance of Symbol 853 MovieClip in Symbol 854 MovieClip Frame 1
onClipEvent (load) {
_color = GameVars.g_badArmyColor2;
}
Instance of Symbol 861 MovieClip in Symbol 862 MovieClip Frame 1
onClipEvent (load) {
_color = GameVars.g_badArmyColor;
}
Instance of Symbol 871 MovieClip in Symbol 872 MovieClip Frame 1
onClipEvent (load) {
_visible = false;
}
Symbol 877 MovieClip Frame 1
stop();
Instance of Symbol 242 MovieClip in Symbol 877 MovieClip Frame 7
onClipEvent (load) {
}
Symbol 882 Button
on (release) {
gotoAndStop ("aa");
}
Symbol 885 Button
on (release) {
gotoAndStop ("pa");
}
Symbol 888 Button
on (release) {
gotoAndStop ("ps");
}
Symbol 891 Button
on (release) {
gotoAndStop ("da");
}
Instance of Symbol 897 MovieClip in Symbol 900 MovieClip [cross_hair] Frame 1
onClipEvent (load) {
_color = _root.g_goodArmyColor;
}
Instance of Symbol 899 MovieClip in Symbol 900 MovieClip [cross_hair] Frame 1
onClipEvent (load) {
_color = _root.g_goodArmyColor2;
}
Symbol 903 Button
on (press) {
_parent.holding_slider = true;
}
on (release) {
_parent.holding_slider = false;
}
on (releaseOutside) {
_parent.holding_slider = false;
}
Instance of Symbol 904 MovieClip "ball" in Symbol 908 MovieClip [slider_bar] Frame 1
onClipEvent (load) {
if (_parent.outof <= 0) {
_parent.outof = 100;
}
_x = 210;
_parent.val = 50 + Math.floor(((_x / 210) * _parent.outof) * 0.5);
}
onClipEvent (enterFrame) {
if (_parent.holding_slider) {
_x = _parent._xmouse;
if (_x > 210) {
_x = 210;
}
if (_x < 0) {
_x = 0;
}
_parent.val = 50 + Math.floor(((_x / 210) * _parent.outof) * 0.5);
}
}
Symbol 911 MovieClip Frame 1
stop();
Symbol 916 Button
on (release) {
high.gotoAndStop("on");
low.gotoAndStop("off");
amt = 0;
}
Symbol 917 Button
on (release) {
high.gotoAndStop("off");
low.gotoAndStop("on");
amt = 1;
}
Instance of Symbol 911 MovieClip "high" in Symbol 918 MovieClip [angle_mode] Frame 1
onClipEvent (load) {
gotoAndStop ("off");
trace("loaded");
}
Instance of Symbol 911 MovieClip "low" in Symbol 918 MovieClip [angle_mode] Frame 1
onClipEvent (load) {
gotoAndStop ("on");
}
Symbol 947 MovieClip Frame 1
stop();
auto_aim_text = "Auto Aim allows you to click anywhere on the screen and your arrow will travel there. This is the easiest method for aiming and is recommended for beginners. This shooting method comes with two modes: high angle and low angle shots. You can switch between the two modes by clicking on the H and L buttons. You may also adjust the shot power, although it is likely that you won't need to. Also note that if you click somewhere that is out of range the arrow will not be shot.";
point_aim_text = "Point aim allows you to click anywhere on the screen and your BowMaster will shoot in the direction of your mouse using the specified bow power (slider bar). This is more challenging than Auto Aim because you'll have to manually point your crosshair up to adjust for gravity. However, this method is not as challenging as \"drag anywhere\" or \"pull string\" modes. This shooting method is recommended for novice players.";
pull_string_text = "The Pull String shooting method is the same method used in BowMaster 1. This method requires you to click and hold a green circle button, then drag the button, then release. This method simulates pulling a bow string. The power is determined by the distance of how far back you pull the string and and the angle is determined by the rotation of your bow. This method is for veteran BowMasters that are used to the BowMaster 1 shooting style or for new players that want a more challenging shooting method than \"Auto Aim\" or \"Point Aim.\"";
drag_anywhere_text = "The Drag Anywhere shooting option is the most advance method. It is similar to the Pull String method in that you click-hold-drag-release but the difference is you can click and drag from anywhere on the screen. There is no green circle to click on like the Pull String method. When you click and drag, a red line appears to indicate your power and angle, but the shot will still start from your hero unit. This method can be tricky to master at first, especially if you're used to the classic bowmaster Pull String method, but if you learn to master this method you will be able to fire shots more quickly than the Pull String method.";
Symbol 950 MovieClip Frame 1
stop();
auto_aim_text = "Auto Aim allows you to click anywhere on the screen and your arrow will travel there. This is the easiest method for aiming and is recommended for beginners. This shooting method comes with two modes: high angle and low angle shots. You can switch between the two modes by clicking on the H and L buttons. You may also adjust the shot power, although it is likely that you won't need to. Also note that if you click somewhere that is out of range the arrow will not be shot.";
point_aim_text = "Point aim allows you to click anywhere on the screen and your BowMaster will shoot in the direction of your mouse using the specified bow power (slider bar). This is more challenging than Auto Aim because you'll have to manually point your crosshair up to adjust for gravity. However, this method is not as challenging as \"drag anywhere\" or \"pull string\" modes. This shooting method is recommended for novice players.";
pull_string_text = "The Pull String shooting method is the same method used in BowMaster 1. This method requires you to click and hold a green circle button, then drag the button, then release. This method simulates pulling a bow string. The power is determined by the distance of how far back you pull the string and and the angle is determined by the rotation of your bow. This method is for veteran BowMasters that are used to the BowMaster 1 shooting style or for new players that want a more challenging shooting method than \"Auto Aim\" or \"Point Aim.\"";
drag_anywhere_text = "The Drag Anywhere shooting option is the most advance method. It is similar to the Pull String method in that you click-hold-drag-release but the difference is you can click and drag from anywhere on the screen. There is no green circle to click on like the Pull String method. When you click and drag, a red line appears to indicate your power and angle, but the shot will still start from your hero unit. This method can be tricky to master at first, especially if you're used to the classic bowmaster Pull String method, but if you learn to master this method you will be able to fire shots more quickly than the Pull String method.";
Instance of Symbol 959 MovieClip in Symbol 960 MovieClip Frame 1
onClipEvent (load) {
_color = GameVars.g_goodArmyColor2;
}
Instance of Symbol 962 MovieClip in Symbol 964 MovieClip Frame 1
onClipEvent (load) {
_color = GameVars.g_goodArmyColor2;
}
Instance of Symbol 963 MovieClip in Symbol 964 MovieClip Frame 1
onClipEvent (load) {
_color = GameVars.g_goodArmyColor2;
}
Instance of Symbol 971 MovieClip in Symbol 972 MovieClip Frame 1
onClipEvent (load) {
_color = GameVars.g_goodArmyColor;
}
Instance of Symbol 975 MovieClip in Symbol 977 MovieClip Frame 1
onClipEvent (load) {
_color = GameVars.g_goodArmyColor;
}
Instance of Symbol 991 MovieClip in Symbol 995 MovieClip Frame 1
onClipEvent (load) {
_color = GameVars.g_goodArmyColor2;
}
Instance of Symbol 993 MovieClip in Symbol 995 MovieClip Frame 1
onClipEvent (load) {
_color = GameVars.g_goodArmyColor;
}
Instance of Symbol 996 MovieClip in Symbol 997 MovieClip Frame 1
onClipEvent (load) {
_visible = false;
}
Symbol 999 MovieClip Frame 1
stop();
auto_aim_text = "Auto Aim allows you to click anywhere on the screen and your arrow will travel there. This is the easiest method for aiming and is recommended for beginners. This shooting method comes with two modes: high angle and low angle shots. You can switch between the two modes by clicking on the H and L buttons. You may also adjust the shot power, although it is likely that you won't need to. Also note that if you click somewhere that is out of range the arrow will not be shot.";
point_aim_text = "Point aim allows you to click anywhere on the screen and your BowMaster will shoot in the direction of your mouse using the specified bow power (slider bar). This is more challenging than Auto Aim because you'll have to manually point your crosshair up to adjust for gravity. However, this method is not as challenging as \"drag anywhere\" or \"pull string\" modes. This shooting method is recommended for novice players.";
pull_string_text = "The Pull String shooting method is the same method used in BowMaster 1. This method requires you to click and hold a green circle button, then drag the button, then release. This method simulates pulling a bow string. The power is determined by the distance of how far back you pull the string and and the angle is determined by the rotation of your bow. This method is for veteran BowMasters that are used to the BowMaster 1 shooting style or for new players that want a more challenging shooting method than \"Auto Aim\" or \"Point Aim.\"";
drag_anywhere_text = "The Drag Anywhere shooting option is the most advance method. It is similar to the Pull String method in that you click-hold-drag-release but the difference is you can click and drag from anywhere on the screen. There is no green circle to click on like the Pull String method. When you click and drag, a red line appears to indicate your power and angle, but the shot will still start from your hero unit. This method can be tricky to master at first, especially if you're used to the classic bowmaster Pull String method, but if you learn to master this method you will be able to fire shots more quickly than the Pull String method.";
Symbol 1004 Button
on (release) {
gotoAndStop ("overview");
}
Symbol 1007 Button
on (release) {
gotoAndStop ("action_bar");
}
Symbol 1010 Button
on (release) {
gotoAndStop ("arrows");
}
Symbol 1013 Button
on (release) {
gotoAndStop ("troops");
}
Symbol 1016 Button
on (release) {
gotoAndStop ("detonation");
}
Symbol 1019 Button
on (release) {
gotoAndStop ("skill_xp");
}
Symbol 1031 MovieClip Frame 1
stop();
Symbol 1036 MovieClip Frame 1
stop();
Symbol 1037 MovieClip Frame 1
function setPercent(num) {
bar._width = num;
}
Symbol 1040 MovieClip Frame 1
stop();
Symbol 1049 MovieClip Frame 1
stop();
auto_aim_text = "Auto Aim allows you to click anywhere on the screen and your arrow will travel there. This is the easiest method for aiming and is recommended for beginners. This shooting method comes with two modes: high angle and low angle shots. You can switch between the two modes by clicking on the H and L buttons. You may also adjust the shot power, although it is likely that you won't need to. Also note that if you click somewhere that is out of range the arrow will not be shot.";
point_aim_text = "Point aim allows you to click anywhere on the screen and your BowMaster will shoot in the direction of your mouse using the specified bow power (slider bar). This is more challenging than Auto Aim because you'll have to manually point your crosshair up to adjust for gravity. However, this method is not as challenging as \"drag anywhere\" or \"pull string\" modes. This shooting method is recommended for novice players.";
pull_string_text = "The Pull String shooting method is the same method used in BowMaster 1. This method requires you to click and hold a green circle button, then drag the button, then release. This method simulates pulling a bow string. The power is determined by the distance of how far back you pull the string and and the angle is determined by the rotation of your bow. This method is for veteran BowMasters that are used to the BowMaster 1 shooting style or for new players that want a more challenging shooting method than \"Auto Aim\" or \"Point Aim.\"";
drag_anywhere_text = "The Drag Anywhere shooting option is the most advance method. It is similar to the Pull String method in that you click-hold-drag-release but the difference is you can click and drag from anywhere on the screen. There is no green circle to click on like the Pull String method. When you click and drag, a red line appears to indicate your power and angle, but the shot will still start from your hero unit. This method can be tricky to master at first, especially if you're used to the classic bowmaster Pull String method, but if you learn to master this method you will be able to fire shots more quickly than the Pull String method.";
Instance of Symbol 1043 MovieClip in Symbol 1049 MovieClip Frame 6
onClipEvent (load) {
attachMovie("skill_icon_mount", "skill_icon_mount", 1);
}
Instance of Symbol 1043 MovieClip in Symbol 1049 MovieClip Frame 6
onClipEvent (load) {
this.xp_bar.bar._width = 100;
this.xp_bar.bar.gotoAndStop(2);
this.rank_bar.bar._width = 100;
this.rank_bar.bar.gotoAndStop(2);
attachMovie("skill_icon_mount", "skill_icon_mount", 1);
}
Instance of Symbol 1053 MovieClip in Symbol 1054 MovieClip Frame 1
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 1060 MovieClip "flame" in Symbol 1062 MovieClip Frame 1
onClipEvent (load) {
_visible = false;
}
Symbol 1065 MovieClip [meeter_hp] Frame 1
function setPercent(num) {
bar._width = num;
}
Instance of Symbol 1063 MovieClip "hitbox" in Symbol 1066 MovieClip [castle_bad01] Frame 1
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 1060 MovieClip "flame" in Symbol 1069 MovieClip Frame 1
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 1063 MovieClip "hitbox" in Symbol 1070 MovieClip [castle_good01] Frame 1
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 1060 MovieClip "flame" in Symbol 1075 MovieClip Frame 1
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 1063 MovieClip "hitbox" in Symbol 1076 MovieClip [tower1] Frame 1
onClipEvent (load) {
_visible = false;
}
Symbol 1078 MovieClip Frame 1
stop();
auto_aim_text = "Auto Aim allows you to click anywhere on the screen and your arrow will travel there. This is the easiest method for aiming and is recommended for beginners. This shooting method comes with two modes: high angle and low angle shots. You can switch between the two modes by clicking on the H and L buttons. You may also adjust the shot power, although it is likely that you won't need to. Also note that if you click somewhere that is out of range the arrow will not be shot.";
point_aim_text = "Point aim allows you to click anywhere on the screen and your BowMaster will shoot in the direction of your mouse using the specified bow power (slider bar). This is more challenging than Auto Aim because you'll have to manually point your crosshair up to adjust for gravity. However, this method is not as challenging as \"drag anywhere\" or \"pull string\" modes. This shooting method is recommended for novice players.";
pull_string_text = "The Pull String shooting method is the same method used in BowMaster 1. This method requires you to click and hold a green circle button, then drag the button, then release. This method simulates pulling a bow string. The power is determined by the distance of how far back you pull the string and and the angle is determined by the rotation of your bow. This method is for veteran BowMasters that are used to the BowMaster 1 shooting style or for new players that want a more challenging shooting method than \"Auto Aim\" or \"Point Aim.\"";
drag_anywhere_text = "The Drag Anywhere shooting option is the most advance method. It is similar to the Pull String method in that you click-hold-drag-release but the difference is you can click and drag from anywhere on the screen. There is no green circle to click on like the Pull String method. When you click and drag, a red line appears to indicate your power and angle, but the shot will still start from your hero unit. This method can be tricky to master at first, especially if you're used to the classic bowmaster Pull String method, but if you learn to master this method you will be able to fire shots more quickly than the Pull String method.";
Symbol 1082 MovieClip [help_window] Frame 1
stop();
Symbol 1083 MovieClip [window_help] Frame 1
var m_view;
var m_game;
Symbol 1085 Button
on (press) {
GameVars.g_holding = true;
}
on (release) {
GameVars.g_holding = false;
}
on (releaseOutside) {
GameVars.g_holding = false;
}
Symbol 1091 MovieClip Frame 1
stop();
Symbol 1103 Button
on (keyPress "-") {
m_view.m_skillManager.changeSkillBarUp();
}
on (release) {
m_view.m_skillManager.changeSkillBarUp();
}
Symbol 1105 Button
on (keyPress "=") {
m_view.m_skillManager.changeSkillBarDown();
}
on (release) {
m_view.m_skillManager.changeSkillBarDown();
}
Symbol 1108 MovieClip Frame 1
function setPercent(num) {
bar._width = num;
}
Symbol 1116 Button
on (release) {
m_view.togglePause();
}
on (keyPress "P") {
m_view.togglePause();
}
on (keyPress "~") {
trace("cheating....");
m_game.profileManager.addGoldCheat();
}
Symbol 1121 Button
on (release) {
m_view.displayOptions("help");
}
Symbol 1124 Button
on (release) {
getURL ("http://www.dragongamez.com", "_blank");
}
Symbol 1129 Button
on (release) {
m_view.displayOptions("general");
}
Symbol 1132 Button
on (release) {
m_view.displayOptions("quit_to_menu");
}
Symbol 1139 MovieClip [window_gameplayer] Frame 1
var m_view;
var m_game;
var m_levelNum;
var m_fps;
var ui_badScore;
var ui_goodScore;
var tst_shooting_mode;
var tst_stickyArray;
var m_profileName;
var m_rank;
var friend_reinforcements;
var ammo;
var gold;
var tst_stat_txt;
Symbol 1152 Button
on (release) {
m_view.m_levelManager.m_game.profileManager.saveData();
m_view.m_levelManager.m_game.mainMenu.displayWindow();
}
Symbol 1154 Button
on (release) {
m_view.m_gameOptions.closeWindow();
}
Symbol 1156 Button
on (release) {
getURL ("http://www.dragongamez.com", "_blank");
}
Symbol 1158 MovieClip [quit_menu] Frame 1
var m_view;
Symbol 1162 MovieClip Frame 1
stop();
Symbol 1165 MovieClip Frame 1
stop();
Symbol 1169 MovieClip Frame 1
stop();
Symbol 1172 MovieClip Frame 1
stop();
Symbol 1175 MovieClip Frame 1
stop();
Symbol 1177 Button
on (release) {
setLow();
}
on (rollOver) {
_parent.help_text = _parent.help_blood_amount_low;
}
on (rollOut) {
_parent.help_text = _parent.default_text;
}
Symbol 1178 Button
on (release) {
setMed();
}
on (rollOver) {
_parent.help_text = _parent.help_blood_amount_med;
}
on (rollOut) {
_parent.help_text = _parent.default_text;
}
Symbol 1179 Button
on (release) {
setHigh();
}
on (rollOver) {
_parent.help_text = _parent.help_blood_amount_high;
}
on (rollOut) {
_parent.help_text = _parent.default_text;
}
Symbol 1180 Button
on (release) {
setInsane();
}
on (rollOver) {
_parent.help_text = _parent.help_blood_amount_insane;
}
on (rollOut) {
_parent.help_text = _parent.default_text;
}
Symbol 1181 Button
on (release) {
setNone();
}
on (rollOver) {
_parent.help_text = _parent.help_blood_amount_none;
}
on (rollOut) {
_parent.help_text = _parent.default_text;
}
Symbol 1182 MovieClip Frame 1
function resetClips() {
clip_none.gotoAndStop("no_glow");
clip_low.gotoAndStop("no_glow");
clip_med.gotoAndStop("no_glow");
clip_high.gotoAndStop("no_glow");
clip_insane.gotoAndStop("no_glow");
}
function setNone() {
val = "none";
resetClips();
clip_none.gotoAndStop("glow");
}
function setLow() {
val = "low";
resetClips();
clip_low.gotoAndStop("glow");
}
function setMed() {
val = "med";
resetClips();
clip_med.gotoAndStop("glow");
}
function setHigh() {
val = "high";
resetClips();
clip_high.gotoAndStop("glow");
}
function setInsane() {
val = "insane";
resetClips();
clip_insane.gotoAndStop("glow");
}
function setVal(arg) {
if (arg == "none") {
setNone();
} else if (arg == "low") {
setLow();
} else if (arg == "med") {
setMed();
} else if (arg == "high") {
setHigh();
} else if (arg == "insane") {
setInsane();
} else {
setNone();
}
}
var val = "low";
resetClips();
Symbol 1183 Button
on (release) {
setLow();
}
on (rollOver) {
_parent.help_text = _parent.help_detail_low;
}
on (rollOut) {
_parent.help_text = _parent.default_text;
}
Symbol 1184 Button
on (release) {
setMed();
}
on (rollOver) {
_parent.help_text = _parent.help_detail_med;
}
on (rollOut) {
_parent.help_text = _parent.default_text;
}
Symbol 1185 Button
on (release) {
setHigh();
}
on (rollOver) {
_parent.help_text = _parent.help_detail_high;
}
on (rollOut) {
_parent.help_text = _parent.default_text;
}
Symbol 1186 MovieClip Frame 1
function resetClips() {
clip_low.gotoAndStop("no_glow");
clip_med.gotoAndStop("no_glow");
clip_high.gotoAndStop("no_glow");
}
function setLow() {
val = "LOW";
resetClips();
clip_low.gotoAndStop("glow");
}
function setMed() {
val = "MEDIUM";
resetClips();
clip_med.gotoAndStop("glow");
}
function setHigh() {
val = "HIGH";
resetClips();
clip_high.gotoAndStop("glow");
}
function setVal(arg) {
if (arg == "LOW") {
setLow();
} else if (arg == "MEDIUM") {
setMed();
} else if (arg == "HIGH") {
setHigh();
} else {
setLow();
}
}
var val = "LOW";
resetClips();
Symbol 1189 MovieClip Frame 1
stop();
Symbol 1192 MovieClip Frame 1
stop();
Symbol 1193 Button
on (release) {
setLow();
}
on (rollOver) {
_parent.help_text = _parent.help_difficulty_easy;
}
on (rollOut) {
_parent.help_text = _parent.default_text;
}
Symbol 1194 Button
on (release) {
setMed();
}
on (rollOver) {
_parent.help_text = _parent.help_difficulty_med;
}
on (rollOut) {
_parent.help_text = _parent.default_text;
}
Symbol 1195 Button
on (release) {
setHigh();
}
on (rollOver) {
_parent.help_text = _parent.help_difficulty_hard;
}
on (rollOut) {
_parent.help_text = _parent.default_text;
}
Symbol 1196 Button
on (release) {
setInsane();
}
on (rollOver) {
_parent.help_text = _parent.help_difficulty_insane;
}
on (rollOut) {
_parent.help_text = _parent.default_text;
}
Symbol 1197 MovieClip Frame 1
function resetClips() {
clip_low.gotoAndStop("no_glow");
clip_med.gotoAndStop("no_glow");
clip_high.gotoAndStop("no_glow");
clip_insane.gotoAndStop("no_glow");
}
function setLow() {
val = "easy";
resetClips();
clip_low.gotoAndStop("glow");
}
function setMed() {
val = "med";
resetClips();
clip_med.gotoAndStop("glow");
}
function setHigh() {
val = "hard";
resetClips();
clip_high.gotoAndStop("glow");
}
function setInsane() {
val = "insane";
resetClips();
clip_insane.gotoAndStop("glow");
}
function setVal(arg) {
if (arg == "easy") {
setLow();
} else if (arg == "med") {
setMed();
} else if (arg == "hard") {
setHigh();
} else if (arg == "insane") {
setInsane();
} else {
setLow();
}
}
var val = "easy";
resetClips();
Symbol 1206 MovieClip Frame 1
stop();
Symbol 1209 MovieClip Frame 1
stop();
Symbol 1212 MovieClip Frame 1
stop();
Symbol 1215 MovieClip Frame 1
stop();
Symbol 1216 Button
on (release) {
setOptionOne();
}
on (rollOver) {
_parent.help_text = _parent.help_auto_aim;
}
on (rollOut) {
_parent.help_text = _parent.default_text;
}
Symbol 1217 Button
on (release) {
setOptionFour();
}
on (rollOver) {
_parent.help_text = _parent.help_drag_anywhere;
}
on (rollOut) {
_parent.help_text = _parent.default_text;
}
Symbol 1218 Button
on (release) {
setOptionThree();
}
on (rollOver) {
_parent.help_text = _parent.help_pull_string;
}
on (rollOut) {
_parent.help_text = _parent.default_text;
}
Symbol 1219 Button
on (release) {
setOptionTwo();
}
on (rollOver) {
_parent.help_text = _parent.help_point_click;
}
on (rollOut) {
_parent.help_text = _parent.default_text;
}
Symbol 1220 MovieClip Frame 1
function resetClips() {
clip_01.gotoAndStop("no_glow");
clip_02.gotoAndStop("no_glow");
clip_03.gotoAndStop("no_glow");
clip_04.gotoAndStop("no_glow");
}
function setOptionOne() {
val = opt_01;
resetClips();
clip_01.gotoAndStop("glow");
}
function setOptionTwo() {
val = opt_02;
resetClips();
clip_02.gotoAndStop("glow");
}
function setOptionThree() {
val = opt_03;
resetClips();
clip_03.gotoAndStop("glow");
}
function setOptionFour() {
val = opt_04;
resetClips();
clip_04.gotoAndStop("glow");
}
function setVal(arg) {
if (arg == opt_01) {
setOptionOne();
} else if (arg == opt_02) {
setOptionTwo();
} else if (arg == opt_03) {
setOptionThree();
} else if (arg == opt_04) {
setOptionFour();
} else {
setOptionOne();
}
}
var opt_01 = "auto_aim";
var opt_02 = "point_aim";
var opt_03 = "drag_circle";
var opt_04 = "drag_anywhere";
var val = opt_01;
resetClips();
Symbol 1223 MovieClip Frame 1
stop();
Symbol 1226 MovieClip Frame 1
stop();
Symbol 1227 Button
on (release) {
setOn();
}
on (rollOver) {
_parent.help_text = _parent.help_on;
}
on (rollOut) {
_parent.help_text = _parent.default_text;
}
Symbol 1228 Button
on (release) {
setOff();
}
on (rollOver) {
_parent.help_text = _parent.help_off;
}
on (rollOut) {
_parent.help_text = _parent.default_text;
}
Symbol 1229 MovieClip Frame 1
function setOn() {
val = "on";
clip_on.gotoAndStop("glow");
clip_off.gotoAndStop("no_glow");
}
function setOff() {
val = "off";
clip_off.gotoAndStop("glow");
clip_on.gotoAndStop("no_glow");
}
function setVal(arg) {
if (arg == "on") {
setOn();
} else if (arg == "off") {
setOff();
}
}
var val = "off";
setVal("off");
Symbol 1232 Button
on (release) {
m_view.applyChanges();
SoundManager.playSoundForced("Level Up.wav");
}
Symbol 1234 MovieClip [general_game_options] Frame 1
var default_text = "Mouse over an option to get more information about it. Click on the option value text to change the options.";
var help_text = default_text;
var help_off = "Toggles this option off.";
var help_on = "Toggles this option on.";
var help_blood_amount_low = "The number of blood drops ejected from arrow impacts is set to 1-2";
var help_blood_amount_med = "The number of blood drops ejected from arrow impacts is set to 2-4";
var help_blood_amount_high = "The number of blood drops ejected from arrow impacts is set to 4-8";
var help_blood_amount_insane = "The number of blood drops ejected from arrow impacts is set to 8-16";
var help_detail_low = "Game resolution is reduced to low. Choose this option to get the best frame rate.";
var help_detail_med = "Game resolution is set to medium. Changing the detail from high to medium slightly reduces the game resolution but may improve your frame rate.";
var help_detail_high = "Game resolution is set to high. This option sets the resolution to its highest setting. Slower computers may experience less than maximum frame rates.";
var help_difficulty_easy = "Easy difficulty is recommended for new players. Enemy hit points and movement are set to low. Score multiplier is x0.5";
var help_difficulty_med = "Medium difficulty is recommended for novice players. Enemy hit points and movement are set to medium. Score multiplier is x1.0";
var help_difficulty_hard = "Hard difficulty is recommended for veteran players or new players that want a challenge. Enemy hit points and movement are set to hard. Score multiplier is x1.5";
var help_difficulty_insane = "Insane difficulty is recommended for expert players or new players that are gaming wizards. Enemy hit points and movement are set to insane. Score multiplier is x2.0";
var help_auto_aim = "Auto Aim allows you to click anywhere on the screen and your arrow will travel there. This is the easiest method for aiming and is recommended for beginners. This shooting method comes with two modes: high angle and low angle shots. You can switch between the two modes by clicking on the H and L buttons. You may also adjust the shot power, although it is likely that you won't need to. Also note that if you click somewhere that is out of range the arrow will not be shot.";
var help_point_click = "Point aim allows you to click anywhere on the screen and your BowMaster will shoot in the direction of your mouse using the specified bow power (slider bar). This is more challenging than Auto Aim because you'll have to manually point your crosshair up to adjust for gravity. However, this method is not as challenging as \"drag anywhere\" or \"pull string\" modes. This shooting method is recommended for novice players.";
var help_pull_string = "The Pull String shooting method is the same method used in BowMaster 1. This method requires you to click and hold a green circle button, then drag the button, then release. This method simulates pulling a bow string. The power is determined by the distance of how far back you pull the string and and the angle is determined by the rotation of your bow. This method is for veteran BowMasters that are used to the BowMaster 1 shooting style or for new players that want a more challenging shooting method than \"Auto Aim\" or \"Point Aim.\"";
var help_drag_anywhere = "The Drag Anywhere shooting option is the most advance method. It is similar to the Pull String method in that you click-hold-drag-release but the difference is you can click and drag from anywhere on the screen. There is no green circle to click on like the Pull String method. When you click and drag, a red line appears to indicate your power and angle, but the shot will still start from your hero unit. This method can be tricky to master at first, especially if you're used to the classic bowmaster Pull String method, but if you learn to master this method you will be able to fire shots more quickly than the Pull String method.";
Instance of Symbol 1239 MovieClip in Symbol 1240 MovieClip Frame 1
onClipEvent (load) {
_alpha = 0;
}
Symbol 1244 Button
on (release) {
m_view.displayGeneralOptions();
}
Symbol 1248 Button
on (release) {
m_view.displayActionBarSetup();
}
Symbol 1252 Button
on (release) {
m_view.displayQuitToMenu();
}
Symbol 1255 Button
on (release) {
m_view.closeWindow();
}
Symbol 1256 Button
on (release) {
m_view.displayHelpMenu();
}
Symbol 1257 MovieClip [game_options_menu] Frame 1
var m_view;
Symbol 1270 MovieClip [action_bar_setup] Frame 1
var m_view;
Symbol 1275 MovieClip [level_stepper] Frame 1
var m_view;
Instance of Symbol 439 MovieClip in Symbol 1275 MovieClip [level_stepper] Frame 1
onClipEvent (enterFrame) {
if (!_parent.m_view.m_paused) {
_parent.m_view.step();
} else {
_parent.m_view.stepMenus();
}
updateAfterEvent();
}
Symbol 1289 Button
on (release) {
_parent.m_game.levelManager.displayWindow();
}
Symbol 1293 Button
on (release) {
_parent.m_game.mainMenu.displayWindow();
}
Symbol 1294 Button
on (release) {
_parent.m_game.upgradeManager.displayWindow();
}
Symbol 1298 Button
on (release) {
getURL ("http://www.dragongamez.com/", "_blank");
}
Symbol 1300 MovieClip [window_gameover] Frame 1
var m_view;
var m_game;
Instance of Symbol 439 MovieClip in Symbol 1300 MovieClip [window_gameover] Frame 1
onClipEvent (load) {
count = 0;
}
onClipEvent (enterFrame) {
if (_root.g_autoPilot && ((count++) > 20)) {
_parent.m_game.levelManager.displayWindow();
}
}
Symbol 1305 MovieClip Frame 1
stop();
Symbol 1305 MovieClip Frame 160
stop();
Symbol 1332 MovieClip Frame 1
function step() {
if ((strikeTimer--) < 0) {
strikeTimer = random(500);
showRandomBolt();
}
stepBolts();
}
function showRandomBolt() {
do {
curBolt = bolts[random(bolts.length)];
} while (lastBolt == curBolt);
curBolt._alpha = 100;
var _local1 = random(521);
curBolt._x = _local1;
if (_local1 > 388) {
c3._alpha = 100;
br3._alpha = 100;
} else if (_local1 > 95) {
c2._alpha = 100;
br2._alpha = 100;
} else {
c1._alpha = 100;
br1._alpha = 100;
}
lastBolt = curBolt;
}
function hideAllBolts() {
var _local1 = 0;
while (_local1 < bolts.length) {
bolts[_local1]._alpha = 0;
_local1++;
}
_local1 = 0;
while (_local1 < glows.length) {
glows[_local1]._alpha = 0;
_local1++;
}
_local1 = 0;
while (_local1 < brights.length) {
brights[_local1]._alpha = 0;
_local1++;
}
}
function stepBolts() {
var _local1;
var _local2 = 0;
while (_local2 < bolts.length) {
_local1 = bolts[_local2];
if (_local1._alpha > 0) {
_local1._alpha = _local1._alpha - 5;
}
_local2++;
}
_local2 = 0;
while (_local2 < glows.length) {
_local1 = glows[_local2];
if (_local1._alpha > 0) {
_local1._alpha = _local1._alpha - 5;
}
_local2++;
}
_local2 = 0;
while (_local2 < brights.length) {
_local1 = brights[_local2];
if (_local1._alpha > 0) {
_local1._alpha = _local1._alpha - 5;
}
_local2++;
}
}
var bolts = new Array(b1, b2, b3, b4, b5);
var glows = new Array(c1, c2, c3);
var brights = new Array(br1, br2, br3);
var strikeTimer = (300 + random(300));
var waitTimer = (50 + random(50));
var dark = true;
var boltTimer = 0;
var curBolt;
var lastBolt;
hideAllBolts();
Instance of Symbol 1325 MovieClip in Symbol 1332 MovieClip Frame 1
onClipEvent (load) {
_alpha = 0;
}
onClipEvent (enterFrame) {
_parent.step();
}
Symbol 1371 MovieClip Frame 70
gotoAndPlay (1);
Symbol 1372 MovieClip Frame 1
function step() {
_x = (_x - 1);
if (_x < -400) {
_x = 2200;
}
}
Instance of Symbol 1371 MovieClip in Symbol 1372 MovieClip Frame 1
onClipEvent (load) {
gotoAndPlay(random(69));
}
onClipEvent (enterFrame) {
_parent.step();
}
Instance of Symbol 1374 MovieClip in Symbol 1375 MovieClip Frame 1
onClipEvent (load) {
orig_y = _y;
dy = 3;
count = random(5);
}
onClipEvent (enterFrame) {
if ((count++) > 5) {
count = 0;
_y = (_y + dy);
dy = dy * -1;
}
}
Instance of Symbol 1377 MovieClip in Symbol 1378 MovieClip Frame 1
onClipEvent (load) {
orig_y = _y;
dy = 3;
count = random(5);
}
onClipEvent (enterFrame) {
if ((count++) > 5) {
count = 0;
_y = (_y + dy);
dy = dy * -1;
}
}
Symbol 1380 MovieClip Frame 1
function step() {
_x = (_x - 1);
if (_x < -300) {
_x = 2200;
}
}
Instance of Symbol 1379 MovieClip in Symbol 1380 MovieClip Frame 1
onClipEvent (enterFrame) {
_parent.step();
}
Instance of Symbol 1382 MovieClip in Symbol 1383 MovieClip Frame 1
onClipEvent (load) {
orig_y = _y;
dy = 3;
count = random(5);
}
onClipEvent (enterFrame) {
if ((count++) > 5) {
count = 0;
_y = (_y + dy);
dy = dy * -1;
}
}
Symbol 1385 MovieClip Frame 1
function step() {
_x = (_x - 1);
if (_x < -300) {
_x = 2200;
}
}
Instance of Symbol 1384 MovieClip in Symbol 1385 MovieClip Frame 1
onClipEvent (enterFrame) {
_parent.step();
}
Instance of Symbol 1305 MovieClip in Symbol 1386 MovieClip Frame 1
onClipEvent (load) {
count = 0;
maxFrame = 160;
curFrame = 1;
delt = 1;
delay = 10;
}
onClipEvent (enterFrame) {
if (curFrame < maxFrame) {
if ((count++) > delay) {
count = 0;
curFrame = curFrame + delt;
if (curFrame > maxFrame) {
curFrame = maxFrame;
}
gotoAndStop(curFrame);
}
}
}
Symbol 1404 MovieClip [window_credits] Frame 1
var m_view;
var m_game;
var c1_loaded = false;
var c2_loaded = false;
var upRate = 3;
_root._quality = "MEDIUM";
Instance of Symbol 1396 MovieClip in Symbol 1404 MovieClip [window_credits] Frame 1
onClipEvent (load) {
rate = _parent.upRate;
allUp = false;
_x = 1000;
}
onClipEvent (enterFrame) {
if (_y > -20) {
_y = (_y - rate);
if ((!_parent.c1_loaded) && (_y <= 900)) {
_parent.c1_loaded = true;
}
}
}
Instance of Symbol 1401 MovieClip in Symbol 1404 MovieClip [window_credits] Frame 1
onClipEvent (load) {
rate = _parent.upRate;
_x = 1000;
}
onClipEvent (enterFrame) {
if (_parent.c1_loaded && (_y > -20)) {
_y = (_y - rate);
if ((!_parent.c2_loaded) && (_y < 900)) {
_parent.c2_loaded = true;
}
}
}
Instance of Symbol 1403 MovieClip in Symbol 1404 MovieClip [window_credits] Frame 1
onClipEvent (load) {
rate = _parent.upRate;
_x = 1000;
}
onClipEvent (enterFrame) {
if (_parent.c2_loaded && (_y > -20)) {
_y = (_y - rate);
}
}
Symbol 1411 MovieClip [msg_txt] Frame 1
Symbol 1414 MovieClip [good_dmg_txt] Frame 1
Symbol 1417 MovieClip [bad_dmg_txt] Frame 1
Instance of Symbol 1425 MovieClip "paint" in Symbol 1426 MovieClip [icon_good_cross] Frame 1
onClipEvent (load) {
}
Symbol 1461 Button
on (release) {
getURL ("http://www.lostvectors.com", "_self");
}
Symbol 1469 MovieClip [cutscene002] Frame 1
var m_view;
var m_game;
stop();
Instance of Symbol 1428 MovieClip in Symbol 1469 MovieClip [cutscene002] Frame 1
onClipEvent (enterFrame) {
_parent.m_view.step();
}
Instance of Symbol 1468 MovieClip in Symbol 1469 MovieClip [cutscene002] Frame 261
on (release) {
getURL ("http://www.lostvectors.com", "_blank");
}
Symbol 1474 Button
on (release) {
m_view.closeWindow();
}
Instance of Symbol 1498 MovieClip "flame" in Symbol 1499 MovieClip Frame 1
onClipEvent (load) {
gotoAndPlay(random(10) + 1);
}
Instance of Symbol 1501 MovieClip in Symbol 1502 MovieClip Frame 1
onClipEvent (load) {
orig_y = _y;
dy = 3;
count = random(5);
}
onClipEvent (enterFrame) {
if ((count++) > 5) {
count = 0;
_y = (_y + dy);
dy = dy * -1;
}
}
Instance of Symbol 1504 MovieClip in Symbol 1505 MovieClip Frame 1
onClipEvent (load) {
orig_y = _y;
dy = 3;
count = random(5);
}
onClipEvent (enterFrame) {
if ((count++) > 5) {
count = 0;
_y = (_y + dy);
dy = dy * -1;
}
}
Symbol 1508 MovieClip Frame 1
troop_speed = 1;
Instance of Symbol 1491 MovieClip in Symbol 1508 MovieClip Frame 1
onClipEvent (load) {
speed = _parent.troop_speed / 4;
}
onClipEvent (enterFrame) {
_x = (_x - speed);
}
Instance of Symbol 1506 MovieClip in Symbol 1508 MovieClip Frame 1
onClipEvent (enterFrame) {
_x = (_x - _parent.troop_speed);
}
Instance of Symbol 1506 MovieClip in Symbol 1508 MovieClip Frame 1
onClipEvent (enterFrame) {
_x = (_x - _parent.troop_speed);
}
Instance of Symbol 1506 MovieClip in Symbol 1508 MovieClip Frame 1
onClipEvent (enterFrame) {
_x = (_x - _parent.troop_speed);
}
Instance of Symbol 1506 MovieClip in Symbol 1508 MovieClip Frame 1
onClipEvent (enterFrame) {
_x = (_x - _parent.troop_speed);
}
Symbol 1553 MovieClip Frame 120
stop();
Symbol 1565 MovieClip Frame 115
stop();
Instance of Symbol 1568 MovieClip in Symbol 1570 MovieClip [good_flag] Frame 1
onClipEvent (load) {
_color = GameVars.g_goodArmyColor2;
}
Instance of Symbol 1569 MovieClip in Symbol 1570 MovieClip [good_flag] Frame 1
onClipEvent (load) {
_color = GameVars.g_goodArmyColor;
}
Instance of Symbol 413 MovieClip in Symbol 1570 MovieClip [good_flag] Frame 1
onClipEvent (load) {
temp = attachMovie(GameVars.g_goodArmyIcon, "good_icon", 1);
temp.paint._color = GameVars.g_goodArmyIconColor1;
}
Instance of Symbol 368 MovieClip in Symbol 1571 MovieClip Frame 1
onClipEvent (load) {
gotoAndStop (7);
}
Instance of Symbol 314 MovieClip in Symbol 1571 MovieClip Frame 1
onClipEvent (load) {
gotoAndStop ("attack");
}
Instance of Symbol 242 MovieClip in Symbol 1571 MovieClip Frame 1
onClipEvent (load) {
gotoAndStop (37);
}
Instance of Symbol 424 MovieClip in Symbol 1571 MovieClip Frame 1
onClipEvent (load) {
gotoAndStop (1);
}
Instance of Symbol 403 MovieClip in Symbol 1571 MovieClip Frame 1
onClipEvent (load) {
gotoAndStop (108);
}
Instance of Symbol 276 MovieClip in Symbol 1571 MovieClip Frame 1
onClipEvent (load) {
gotoAndStop (8);
}
Symbol 1575 MovieClip [cutscene001] Frame 1
var m_view;
var m_game;
stop();
Instance of Symbol 1428 MovieClip in Symbol 1575 MovieClip [cutscene001] Frame 1
onClipEvent (enterFrame) {
_parent.m_view.step();
}
Symbol 1575 MovieClip [cutscene001] Frame 22
SoundManager.playSound("cs_01.wav");
Symbol 1575 MovieClip [cutscene001] Frame 78
SoundManager.playSound("cs_02.wav");
Symbol 1575 MovieClip [cutscene001] Frame 135
SoundManager.playSound("cs_03.wav");
Symbol 1575 MovieClip [cutscene001] Frame 193
SoundManager.playSound("cs_04.wav");
Symbol 1575 MovieClip [cutscene001] Frame 235
SoundManager.playSound("cs_05.wav");
Symbol 1575 MovieClip [cutscene001] Frame 261
SoundManager.playSound("cs_06.wav");
Symbol 1575 MovieClip [cutscene001] Frame 284
SoundManager.playSound("cs_07.wav");
Symbol 1575 MovieClip [cutscene001] Frame 495
SoundManager.playSound("cs_08.wav");
Symbol 1575 MovieClip [cutscene001] Frame 585
SoundManager.playSound("cs_09.wav");
Symbol 1575 MovieClip [cutscene001] Frame 665
SoundManager.playSound("cs_10.wav");
Symbol 1575 MovieClip [cutscene001] Frame 772
stop();
Instance of Symbol 1584 MovieClip in Symbol 1585 MovieClip Frame 1
onClipEvent (load) {
_color = _root.g_badArmyColor;
}
Instance of Symbol 1586 MovieClip in Symbol 1588 MovieClip Frame 1
onClipEvent (load) {
_color = _root.g_badArmyColor;
}
Instance of Symbol 1587 MovieClip in Symbol 1588 MovieClip Frame 1
onClipEvent (load) {
_color = _root.g_badArmyColor;
}
Instance of Symbol 1595 MovieClip in Symbol 1597 MovieClip Frame 1
onClipEvent (load) {
_color = _root.g_badArmyColor;
}
Instance of Symbol 1596 MovieClip in Symbol 1597 MovieClip Frame 1
onClipEvent (load) {
_color = _root.g_badArmyColor2;
}
Instance of Symbol 1599 MovieClip in Symbol 1600 MovieClip Frame 1
onClipEvent (load) {
_visible = false;
}
Symbol 1647 Button
on (release) {
getURL ("http://www.lostvectors.com/", "_blank");
}
Symbol 1650 Button
on (release) {
_root.g_play_game = true;
}
Instance of Symbol 1468 MovieClip in Symbol 1652 MovieClip Frame 1
on (release) {
getURL ("http://www.lostvectors.com", "_blank");
}
Instance of Symbol 1651 MovieClip "play_game_button" in Symbol 1652 MovieClip Frame 1
onClipEvent (load) {
_visible = false;
}
Symbol 2482 MovieClip [__Packages.GameWindow] Frame 0
class GameWindow
{
var m_game, m_clipName, m_depth, m_target, m_clip;
function GameWindow (game, clipName, depth, targetClip) {
m_game = game;
m_clipName = clipName;
m_depth = depth;
m_target = targetClip;
}
function displayWindow() {
trace("Displaying: " + m_clipName);
m_game.setCurrentWindow(this);
m_clip = m_target.attachMovie(m_clipName, m_clipName + "_id_1", m_depth);
m_clip.m_view = this;
m_clip.m_game = m_game;
}
function closeWindow() {
trace("Closing window: " + m_clipName);
m_clip.unloadMovie();
trace("attempting to reload previous window...");
m_game.reloadPreviousWindow();
}
}
Symbol 2483 MovieClip [__Packages.GameApp] Frame 0
class GameApp
{
var levelEditor, upgradeManager, gameOver, levelManager, mainMenu, profileManager, profileCreator, helpMenu, credits, unlockables, settings, deletor, highscores, levelSummary, currentWindow, previousWindow, m_mouseListenerDown, m_mouseListenerUp, m_mouseListenerWheel;
function GameApp () {
loadMouseListeners();
loadSharedData();
levelEditor = new LevelEditor(this, "window_leveleditor", 1, _root.clip_main);
upgradeManager = new UpgradeManager(this, "window_upgrades", 1, _root.clip_main);
gameOver = new GameOver(this, "window_gameover", 1, _root.clip_main);
levelManager = new LevelManager(this, "window_gameplayer", 1, _root.clip_main);
mainMenu = new MainMenu(this, "window_main", 1, _root.clip_main);
profileManager = new ProfileManager(mainMenu, levelManager);
profileCreator = new ProfileCreator(this, "window_profilecreator", 1, _root.clip_main);
helpMenu = new HelpMenu(this, "window_help", 1, _root.clip_main);
credits = new Credits(this, "window_credits", 1, _root.clip_main);
unlockables = new Unlockables(this, "window_unlockables", 1, _root.clip_main);
settings = new Settings(this, "window_settings", 1, _root.clip_main);
deletor = new ProfileDeletor(this, "window_profiledeletor", 1, _root.clip_main);
highscores = new HighScoreMenu(this, "window_highscores", 1, _root.clip_main);
levelSummary = new LevelSummary(this, "window_levelsummary", 1, _root.clip_main);
currentWindow = mainMenu;
previousWindow = mainMenu;
startGame();
}
function setCurrentWindow(newWindow) {
previousWindow = currentWindow;
currentWindow = newWindow;
trace("previous window: " + previousWindow.m_clipName);
}
function reloadPreviousWindow() {
currentWindow = previousWindow;
currentWindow.displayWindow();
}
function loadSharedData() {
}
function startGame() {
mainMenu.displayWindow();
}
function loadMouseListeners() {
m_mouseListenerDown = new Object();
m_mouseListenerDown.onMouseDown = function () {
_root.mouse_down = true;
};
Mouse.addListener(m_mouseListenerDown);
m_mouseListenerUp = new Object();
m_mouseListenerUp.onMouseUp = function () {
_root.mouse_down = false;
};
Mouse.addListener(m_mouseListenerUp);
m_mouseListenerWheel = new Object();
m_mouseListenerWheel.onMouseWheel = function (delta) {
_root.wheel_delta = delta;
};
Mouse.addListener(m_mouseListenerWheel);
}
function unloadMouseListeners() {
Mouse.removeListener(m_mouseListenerDown);
Mouse.removeListener(m_mouseListenerUp);
}
function getMouseDown() {
return(_root.mouse_down);
}
function getMouseWheelDelta() {
return(_root.wheel_delta);
}
function resetMouseWheelDelta() {
_root.wheel_delta = 0;
}
static function getRandomTreeName() {
return(g_treeSet[random(g_treeSet.length)]);
}
static function getRandomRockName() {
return(g_rockSet[random(g_rockSet.length)]);
}
static function getReflectionAngle(ang, pvx, pvy) {
var _local12 = Math.cos((Math.PI/180) * ang) * 100;
var _local11 = Math.sin((Math.PI/180) * ang) * 100;
var _local17 = 0;
var _local16 = 0;
var _local5 = -_local12;
var _local8 = -_local11;
var _local1 = _local12 + (_local5 / 2);
var _local4 = _local11 + (_local8 / 2);
var _local7 = _local1 - pvx;
var _local10 = _local4 - pvy;
var _local3 = _local7 - _local1;
var _local6 = _local10 - _local4;
var _local21 = Math.sqrt((_local3 * _local3) + (_local6 * _local6));
var _local2 = 0;
if (_local5 < 0) {
_local2 = 57.2957795130823 * Math.atan(_local8 / _local5);
} else {
_local2 = 180 + (57.2957795130823 * Math.atan(_local8 / _local5));
}
var _local13 = _local2 - 90;
var _local14 = 0;
if (_local3 > 0) {
_local14 = 57.2957795130823 * Math.atan(_local6 / _local3);
} else {
_local14 = 180 + (57.2957795130823 * Math.atan(_local6 / _local3));
}
var _local18 = _local1 + (Math.cos((Math.PI/180) * _local13) * 10);
var _local19 = _local4 + (Math.sin((Math.PI/180) * _local13) * 10);
var _local15 = getAngleBetweenVectors(_local1, _local4, _local17, _local16, _local7, _local10);
var _local20 = getAngleBetweenVectors(_local1, _local4, _local7, _local10, _local18, _local19);
var _local9 = 0;
if (_local20 > 90) {
_local9 = _local2 + _local15;
} else {
_local9 = _local2 - _local15;
}
return(_local9);
}
static function getAngleBetweenVectors(x1, y1, x2, y2, x3, y3) {
var _local3 = x2 - x1;
var _local2 = y2 - y1;
var _local1 = x3 - x1;
var _local4 = y3 - y1;
var _local5 = (_local3 * _local1) + (_local2 * _local4);
var _local7 = Math.sqrt((_local3 * _local3) + (_local2 * _local2));
var _local6 = Math.sqrt((_local1 * _local1) + (_local4 * _local4));
return(57.2957795130823 * Math.acos(_local5 / (_local7 * _local6)));
}
function attemptDisplayProfileCreator() {
if (profileManager.getNumProfiles() < 9) {
profileCreator.displayWindow();
} else {
mainMenu.m_clip.profile_limit_msg._visible = true;
mainMenu.m_clip.profile_limit_msg._x = _root._xmouse;
mainMenu.m_clip.profile_limit_msg._y = _root._ymouse;
}
}
static var KEY_W = 87;
static var KEY_A = 65;
static var KEY_S = 83;
static var KEY_D = 68;
static var KEY_X = 67;
static var KEY_C = 88;
static var KEY_J = 74;
static var KEY_K = 75;
static var KEY_L = 76;
static var KEY_U = 85;
static var KEY_0 = 48;
static var KEY_1 = 49;
static var KEY_2 = 50;
static var KEY_3 = 51;
static var KEY_4 = 52;
static var KEY_5 = 53;
static var KEY_6 = 54;
static var KEY_7 = 55;
static var KEY_8 = 56;
static var KEY_9 = 57;
static var KEY_SPACEBAR = 32;
static var g_treeSet = new Array("tree_juni_01", "tree_juni_02", "tree_juni_03", "tree_palm_01", "tree_palm_02", "tree_palm_03", "tree_poplar_01", "tree_poplar_02", "tree_poplar_03");
static var g_rockSet = new Array("rock_01", "rock_02", "rock_03", "rock_04");
static var m_gSpeed = 2;
static var g_width = 2000;
static var g_ground = 1000;
static var g_halfWidth = g_width / 2;
}
Symbol 2484 MovieClip [__Packages.LevelEditor] Frame 0
class LevelEditor extends GameWindow
{
var m_game, m_clipName, m_depth, m_target;
function LevelEditor (game, clipName, depth, targetClip) {
super();
m_game = game;
m_clipName = clipName;
m_depth = depth;
m_target = targetClip;
}
}
Symbol 2485 MovieClip [__Packages.UpgradeManager] Frame 0
class UpgradeManager extends GameWindow
{
var m_game, m_clipName, m_depth, m_target, m_clip;
function UpgradeManager (game, clipName, depth, targetClip) {
super();
m_game = game;
m_clipName = clipName;
m_depth = depth;
m_target = targetClip;
}
function displayWindow() {
trace("Displaying: " + m_clipName);
m_game.setCurrentWindow(this);
m_clip = m_target.attachMovie(m_clipName, m_clipName + "_id_1", m_depth);
m_clip.m_view = this;
m_clip.m_game = m_game;
m_clip.gold.text = m_game.profileManager.m_active.m_gold;
m_clip.rank.text = m_game.profileManager.m_active.m_rank;
}
function purchaseFireArrow() {
if ((m_game.profileManager.m_active.m_gold > m_cost_fireArrow) && (!m_game.profileManager.m_active.m_hasFireArrow)) {
m_game.profileManager.m_active.m_hasFireArrow = true;
m_game.profileManager.m_active.m_gold = m_game.profileManager.m_active.m_gold - m_cost_fireArrow;
m_clip.gold.text = m_game.profileManager.m_active.m_gold;
m_game.profileManager.testAddFireArrowSkill();
SoundManager.playSound("Coin Drop Large Loud.wav");
} else {
SoundManager.playSound("Armor Richochet.wav");
}
}
function purchasePierceArrow() {
if ((m_game.profileManager.m_active.m_gold > m_cost_pierceSkill) && (!m_game.profileManager.m_active.m_hasPierceArrow)) {
m_game.profileManager.m_active.m_hasPierceArrow = true;
m_game.profileManager.m_active.m_gold = m_game.profileManager.m_active.m_gold - m_cost_pierceSkill;
m_clip.gold.text = m_game.profileManager.m_active.m_gold;
m_game.profileManager.testAddPierceArrowSkill();
SoundManager.playSound("Coin Drop Large Loud.wav");
} else {
SoundManager.playSound("Armor Richochet.wav");
}
}
function purchaseBombWaveArrow() {
if ((m_game.profileManager.m_active.m_gold > m_cost_bombWaveArrow) && (!m_game.profileManager.m_active.m_hasBombWaveArrow)) {
m_game.profileManager.m_active.m_hasBombWaveArrow = true;
m_game.profileManager.m_active.m_gold = m_game.profileManager.m_active.m_gold - m_cost_bombWaveArrow;
m_clip.gold.text = m_game.profileManager.m_active.m_gold;
m_game.profileManager.testAddBombWaveArrowSkill();
SoundManager.playSound("Coin Drop Large Loud.wav");
} else {
SoundManager.playSound("Armor Richochet.wav");
}
}
function purchaseComet() {
if ((m_game.profileManager.m_active.m_gold > m_cost_comet) && (!m_game.profileManager.m_active.m_hasComet)) {
m_game.profileManager.m_active.m_hasComet = true;
m_game.profileManager.m_active.m_gold = m_game.profileManager.m_active.m_gold - m_cost_comet;
m_clip.gold.text = m_game.profileManager.m_active.m_gold;
m_game.profileManager.testAddCometSkill();
SoundManager.playSound("Coin Drop Large Loud.wav");
} else {
SoundManager.playSound("Armor Richochet.wav");
}
}
function purchaseFireWave() {
if ((m_game.profileManager.m_active.m_gold > m_cost_fireWaveArrow) && (!m_game.profileManager.m_active.m_hasFireWave)) {
m_game.profileManager.m_active.m_hasFireWave = true;
m_game.profileManager.m_active.m_gold = m_game.profileManager.m_active.m_gold - m_cost_fireWaveArrow;
m_clip.gold.text = m_game.profileManager.m_active.m_gold;
m_game.profileManager.testAddFireWaveSkill();
SoundManager.playSound("Coin Drop Large Loud.wav");
} else {
SoundManager.playSound("Armor Richochet.wav");
}
}
function purchaseHealWave() {
if ((m_game.profileManager.m_active.m_gold > m_cost_healWaveArrow) && (!m_game.profileManager.m_active.m_hasHealWave)) {
m_game.profileManager.m_active.m_hasHealWave = true;
m_game.profileManager.m_active.m_gold = m_game.profileManager.m_active.m_gold - m_cost_healWaveArrow;
m_clip.gold.text = m_game.profileManager.m_active.m_gold;
m_game.profileManager.testAddHealWaveSkill();
SoundManager.playSound("Coin Drop Large Loud.wav");
} else {
SoundManager.playSound("Armor Richochet.wav");
}
}
function purchaseIceArrow() {
if ((m_game.profileManager.m_active.m_gold > m_cost_iceArrow) && (!m_game.profileManager.m_active.m_hasIceArrow)) {
m_game.profileManager.m_active.m_hasIceArrow = true;
m_game.profileManager.m_active.m_gold = m_game.profileManager.m_active.m_gold - m_cost_iceArrow;
m_clip.gold.text = m_game.profileManager.m_active.m_gold;
m_game.profileManager.testAddIceArrowSkill();
SoundManager.playSound("Coin Drop Large Loud.wav");
} else {
SoundManager.playSound("Armor Richochet.wav");
}
}
function purchaseMeteor() {
if ((m_game.profileManager.m_active.m_gold > m_cost_meteor) && (!m_game.profileManager.m_active.m_hasMeteor)) {
m_game.profileManager.m_active.m_hasMeteor = true;
m_game.profileManager.m_active.m_gold = m_game.profileManager.m_active.m_gold - m_cost_meteor;
m_clip.gold.text = m_game.profileManager.m_active.m_gold;
m_game.profileManager.testAddMeteorSkill();
SoundManager.playSound("Coin Drop Large Loud.wav");
} else {
SoundManager.playSound("Armor Richochet.wav");
}
}
function purchaseThunderArrow() {
if ((m_game.profileManager.m_active.m_gold > m_cost_thunderArrow) && (!m_game.profileManager.m_active.m_hasThunderArrow)) {
m_game.profileManager.m_active.m_hasThunderArrow = true;
m_game.profileManager.m_active.m_gold = m_game.profileManager.m_active.m_gold - m_cost_thunderArrow;
m_clip.gold.text = m_game.profileManager.m_active.m_gold;
m_game.profileManager.testAddThunderArrowSkill();
SoundManager.playSound("Coin Drop Large Loud.wav");
} else {
SoundManager.playSound("Armor Richochet.wav");
}
}
function purchaseIceWave() {
if ((m_game.profileManager.m_active.m_gold > m_cost_iceWaveArrow) && (!m_game.profileManager.m_active.m_hasIceWave)) {
m_game.profileManager.m_active.m_hasIceWave = true;
m_game.profileManager.m_active.m_gold = m_game.profileManager.m_active.m_gold - m_cost_iceWaveArrow;
m_clip.gold.text = m_game.profileManager.m_active.m_gold;
m_game.profileManager.testAddIceWaveSkill();
SoundManager.playSound("Coin Drop Large Loud.wav");
} else {
SoundManager.playSound("Armor Richochet.wav");
}
}
function purchaseFlakBombArrow() {
if ((m_game.profileManager.m_active.m_gold > m_cost_flakBombArrow) && (!m_game.profileManager.m_active.m_hasFlakBombArrow)) {
m_game.profileManager.m_active.m_hasFlakBombArrow = true;
m_game.profileManager.m_active.m_gold = m_game.profileManager.m_active.m_gold - m_cost_flakBombArrow;
m_clip.gold.text = m_game.profileManager.m_active.m_gold;
m_game.profileManager.testAddFlakBombArrowSkill();
SoundManager.playSound("Coin Drop Large Loud.wav");
} else {
SoundManager.playSound("Armor Richochet.wav");
}
}
function purchaseBombArrow() {
if ((m_game.profileManager.m_active.m_gold > m_cost_bombArrow) && (!m_game.profileManager.m_active.m_hasBombArrow)) {
m_game.profileManager.m_active.m_hasBombArrow = true;
m_game.profileManager.m_active.m_gold = m_game.profileManager.m_active.m_gold - m_cost_bombArrow;
m_clip.gold.text = m_game.profileManager.m_active.m_gold;
m_game.profileManager.testAddBombArrowSkill();
SoundManager.playSound("Coin Drop Large Loud.wav");
} else {
SoundManager.playSound("Armor Richochet.wav");
}
}
function purchaseArcherSkill() {
if ((m_game.profileManager.m_active.m_gold > m_cost_archerSkill) && (!m_game.profileManager.m_active.m_hasArcher)) {
m_game.profileManager.m_active.m_hasArcher = true;
m_game.profileManager.m_active.m_gold = m_game.profileManager.m_active.m_gold - m_cost_archerSkill;
m_clip.gold.text = m_game.profileManager.m_active.m_gold;
m_game.profileManager.testAddArcherSkill();
SoundManager.playSound("Coin Drop Large Loud.wav");
} else {
SoundManager.playSound("Armor Richochet.wav");
}
}
function purchaseGruntSkill() {
if ((m_game.profileManager.m_active.m_gold > m_cost_gruntSkill) && (!m_game.profileManager.m_active.m_hasGrunt)) {
m_game.profileManager.m_active.m_hasGrunt = true;
m_game.profileManager.m_active.m_gold = m_game.profileManager.m_active.m_gold - m_cost_gruntSkill;
m_clip.gold.text = m_game.profileManager.m_active.m_gold;
m_game.profileManager.testAddGruntSkill();
SoundManager.playSound("Coin Drop Large Loud.wav");
} else {
SoundManager.playSound("Armor Richochet.wav");
}
}
function purchaseTallGruntSkill() {
if ((m_game.profileManager.m_active.m_gold > m_cost_tallGruntSkill) && (!m_game.profileManager.m_active.m_hasTallGrunt)) {
m_game.profileManager.m_active.m_hasTallGrunt = true;
m_game.profileManager.m_active.m_gold = m_game.profileManager.m_active.m_gold - m_cost_tallGruntSkill;
m_clip.gold.text = m_game.profileManager.m_active.m_gold;
m_game.profileManager.testAddTallGruntSkill();
SoundManager.playSound("Coin Drop Large Loud.wav");
} else {
SoundManager.playSound("Armor Richochet.wav");
}
}
function purchaseMountSkill() {
if ((m_game.profileManager.m_active.m_gold > m_cost_mountSkill) && (!m_game.profileManager.m_active.m_hasMount)) {
m_game.profileManager.m_active.m_hasMount = true;
m_game.profileManager.m_active.m_gold = m_game.profileManager.m_active.m_gold - m_cost_mountSkill;
m_clip.gold.text = m_game.profileManager.m_active.m_gold;
m_game.profileManager.testAddMountSkill();
SoundManager.playSound("Coin Drop Large Loud.wav");
} else {
SoundManager.playSound("Armor Richochet.wav");
}
}
function purchaseTrebuchetSkill() {
if ((m_game.profileManager.m_active.m_gold > m_cost_trebuchetSkill) && (!m_game.profileManager.m_active.m_hasTrebuchet)) {
m_game.profileManager.m_active.m_hasTrebuchet = true;
m_game.profileManager.m_active.m_gold = m_game.profileManager.m_active.m_gold - m_cost_trebuchetSkill;
m_clip.gold.text = m_game.profileManager.m_active.m_gold;
m_game.profileManager.testAddTrebuchetSkill();
SoundManager.playSound("Coin Drop Large Loud.wav");
} else {
SoundManager.playSound("Armor Richochet.wav");
}
}
function purchasePriestSkill() {
if ((m_game.profileManager.m_active.m_gold > m_cost_priestSkill) && (!m_game.profileManager.m_active.m_hasPriest)) {
m_game.profileManager.m_active.m_hasPriest = true;
m_game.profileManager.m_active.m_gold = m_game.profileManager.m_active.m_gold - m_cost_priestSkill;
m_clip.gold.text = m_game.profileManager.m_active.m_gold;
m_game.profileManager.testAddPriestSkill();
SoundManager.playSound("Coin Drop Large Loud.wav");
} else {
SoundManager.playSound("Armor Richochet.wav");
}
}
function explainBasicArrow() {
var _local1 = "";
_local1 = _local1 + "You are already equiped with the Basic Arrow. You earn money and xp when your basic arrow hits your enemies. With this money you can buy new skills and abilities.\n\nDamage Type: Pierce";
return(_local1);
}
function explainFireArrow() {
var _local2 = "";
if (m_game.profileManager.m_active.m_hasFireArrow) {
_local2 = _local2 + "** ALREADY PURCHASED ** \n\n";
}
_local2 = _local2 + (("Cost: " + m_cost_fireArrow) + " gold.\n\n");
_local2 = _local2 + "The Fire Arrow does fire damage and can cause your target to be set on fire. Ice can cancel out fire.\n\nDamage Type: Fire";
return(_local2);
}
function explainBombWaveArrow() {
var _local2 = "";
if (m_game.profileManager.m_active.m_hasBombWaveArrow) {
_local2 = _local2 + "** ALREADY PURCHASED ** \n\n";
}
_local2 = _local2 + (("Cost: " + m_cost_bombWaveArrow) + " gold.\n\n");
_local2 = _local2 + "The Bomb Wave Arrow causes a series of explosions to occur across the land where the bomb impacts. There is no direct impact damage from the arrow, but each bomb blast causes damage to all enemies within each blast.\n\nDamage Type: Blunt";
return(_local2);
}
function explainComet() {
var _local2 = "";
if (m_game.profileManager.m_active.m_hasComet) {
_local2 = _local2 + "** ALREADY PURCHASED ** \n\n";
}
_local2 = _local2 + (("Cost: " + m_cost_comet) + " gold.\n\n");
_local2 = _local2 + "The Comet Arrow summons a powerful comet from space to land at the spot the Comet Arrow landed at. The comet moves pretty fast but there's still a delay.\n\nDamage Type: Ice";
return(_local2);
}
function explainFireWave() {
var _local2 = "";
if (m_game.profileManager.m_active.m_hasFireWave) {
_local2 = _local2 + "** ALREADY PURCHASED ** \n\n";
}
_local2 = _local2 + (("Cost: " + m_cost_fireWaveArrow) + " gold.\n\n");
_local2 = _local2 + "The Fire Wave Arrow causes a wave of fire to move accross the ground where it lands. There is no direct impact damage from the arrow, but each flame in the wave causes fire damage.\n\nDamage Type: Fire";
return(_local2);
}
function explainHealWave() {
var _local2 = "";
if (m_game.profileManager.m_active.m_hasHealWave) {
_local2 = _local2 + "** ALREADY PURCHASED ** \n\n";
}
_local2 = _local2 + (("Cost: " + m_cost_healWaveArrow) + " gold.\n\n");
_local2 = _local2 + "The Heal Wave Arrow allows you to summon a wave of healing where this arrow lands which is useful for healing your allied troops.";
return(_local2);
}
function explainIceArrow() {
var _local2 = "";
if (m_game.profileManager.m_active.m_hasIceArrow) {
_local2 = _local2 + "** ALREADY PURCHASED ** \n\n";
}
_local2 = _local2 + (("Cost: " + m_cost_iceArrow) + " gold.\n\n");
_local2 = _local2 + "The Ice Arrow does ice damage and can cause a unit to slow its movement speed.\n\nDamage Type: Ice";
return(_local2);
}
function explainMeteor() {
var _local2 = "";
if (m_game.profileManager.m_active.m_hasMeteor) {
_local2 = _local2 + "** ALREADY PURCHASED ** \n\n";
}
_local2 = _local2 + (("Cost: " + m_cost_meteor) + " gold.\n\n");
_local2 = _local2 + "The Meteor Arrow summons a powerful meteor to land at the spot the Meteor Arrow landed at. The meteor moves pretty fast but there's still a delay.\n\nDamage Type: Fire & Blunt";
return(_local2);
}
function explainThunderArrow() {
var _local2 = "";
if (m_game.profileManager.m_active.m_hasThunderArrow) {
_local2 = _local2 + "** ALREADY PURCHASED ** \n\n";
}
_local2 = _local2 + (("Cost: " + m_cost_thunderArrow) + " gold.\n\n");
_local2 = _local2 + "The Thunder Arrow allows you to summon a thunder cloud that will shoot bolts of lightning down. You have to hit SPACEBAR to detonate the arrow while it is in flight. Where the arrow is when you hit spacebar is where the cloud will be summoned.\n\nDamage Type: Lightning";
return(_local2);
}
function explainIceWave() {
var _local2 = "";
if (m_game.profileManager.m_active.m_hasIceWave) {
_local2 = _local2 + "** ALREADY PURCHASED ** \n\n";
}
_local2 = _local2 + (("Cost: " + m_cost_iceWaveArrow) + " gold.\n\n");
_local2 = _local2 + "The Ice Wave Arrow causes a wave of ice shards to move across the ground where the arrow lands. There is no direct impact damage from the arrow itself, but each ice shard causes ice damage.\n\nDamage Type: Ice";
return(_local2);
}
function explainFlakBombArrow() {
var _local2 = "";
if (m_game.profileManager.m_active.m_hasFlakBombArrow) {
_local2 = _local2 + "** ALREADY PURCHASED ** \n\n";
}
_local2 = _local2 + (("Cost: " + m_cost_flakBombArrow) + " gold.\n\n");
_local2 = _local2 + "The Flak Bomb Arrow is great for taking down tricky air units that are hard to hit with any standard arrow. Shoot the arrow like you would a normal arrow and then hit the SPACEBAR to detonate the arrow while in flight. A series of flak explosions will occur in the general area damaging all enemies in the area.\n\nDamage Type: Flak";
return(_local2);
}
function explainBombArrow() {
var _local2 = "";
if (m_game.profileManager.m_active.m_hasBombArrow) {
_local2 = _local2 + "** ALREADY PURCHASED ** \n\n";
}
_local2 = _local2 + (("Cost: " + m_cost_bombArrow) + " gold.\n\n");
_local2 = _local2 + "The Bomb Arrow explodes on contact damaging all things within its blast radius. Theres a damage bonus for a direct hit.\n\nDamage Type: Blunt";
return(_local2);
}
function explainArcherSkill() {
var _local2 = "";
if (m_game.profileManager.m_active.m_hasArcher) {
_local2 = _local2 + "** ALREADY PURCHASED ** \n\n";
}
_local2 = _local2 + (("Cost: " + m_cost_archerSkill) + " gold.\n\n");
_local2 = _local2 + ("This skill allows you to summon a squad of Archers.\n\nDamage Type: Pierce" + m_troopHelp);
return(_local2);
}
function explainGruntSkill() {
var _local2 = "";
if (m_game.profileManager.m_active.m_hasGrunt) {
_local2 = _local2 + "** ALREADY PURCHASED ** \n\n";
}
_local2 = _local2 + (("Cost: " + m_cost_gruntSkill) + " gold.\n\n");
_local2 = _local2 + ("This skill allows you to summon a squad of Foot Soldiers.\n\nDamage Type: Slice" + m_troopHelp);
return(_local2);
}
function explainTallGruntSkill() {
var _local2 = "";
if (m_game.profileManager.m_active.m_hasTallGrunt) {
_local2 = _local2 + "** ALREADY PURCHASED ** \n\n";
}
_local2 = _local2 + (("Cost: " + m_cost_tallGruntSkill) + " gold.\n\n");
_local2 = _local2 + ("This skill allows you to summon a squad of Heavy Soldiers.\n\nDamage Type: Blunt" + m_troopHelp);
return(_local2);
}
function explainMountSkill() {
var _local2 = "";
if (m_game.profileManager.m_active.m_hasMount) {
_local2 = _local2 + "** ALREADY PURCHASED ** \n\n";
}
_local2 = _local2 + (("Cost: " + m_cost_mountSkill) + " gold.\n\n");
_local2 = _local2 + ("This skill allows you to summon a squad of fast moving Horse Riders.\n\nDamage Type: Slice" + m_troopHelp);
return(_local2);
}
function explainTrebuchetSkill() {
var _local2 = "";
if (m_game.profileManager.m_active.m_hasTrebuchet) {
_local2 = _local2 + "** ALREADY PURCHASED ** \n\n";
}
_local2 = _local2 + (("Cost: " + m_cost_trebuchetSkill) + " gold.\n\n");
_local2 = _local2 + ("This skill allows you to summon a Trebuchet - a long distance seige weapon that does massive damage on impact.\n\nDamage Type: Blunt" + m_troopHelp);
return(_local2);
}
function explainPriestSkill() {
var _local2 = "";
if (m_game.profileManager.m_active.m_hasPriest) {
_local2 = _local2 + "** ALREADY PURCHASED ** \n\n";
}
_local2 = _local2 + (("Cost: " + m_cost_priestSkill) + " gold.\n\n");
_local2 = _local2 + ("This skill allows you to summon a squad of Priests. Priests heal nearby injured or poisoned allied units." + m_troopHelp);
return(_local2);
}
function explainPierceArrow() {
var _local2 = "";
if (m_game.profileManager.m_active.m_hasPierceArrow) {
_local2 = _local2 + "** ALREADY PURCHASED ** \n\n";
}
_local2 = _local2 + (("Cost: " + m_cost_pierceSkill) + " gold.\n\n");
_local2 = _local2 + "The Pierce Arrow can penetrate through multiple enemies but does less damage for each enemy than the basic arrow.";
return(_local2);
}
var m_cost_fireArrow = 1000;
var m_cost_bombWaveArrow = 3000;
var m_cost_comet = 5000;
var m_cost_fireWaveArrow = 3000;
var m_cost_healWaveArrow = 1500;
var m_cost_iceArrow = 1000;
var m_cost_meteor = 5000;
var m_cost_thunderArrow = 5000;
var m_cost_iceWaveArrow = 3000;
var m_cost_flakBombArrow = 2000;
var m_cost_bombArrow = 2000;
var m_cost_archerSkill = 1000;
var m_cost_trebuchetSkill = 2500;
var m_cost_mountSkill = 1500;
var m_cost_gruntSkill = 1000;
var m_cost_tallGruntSkill = 1500;
var m_cost_priestSkill = 2000;
var m_cost_pierceSkill = 3000;
var m_troopHelp = "\n\nNote: Troops cost money and population to summon. Once you purchase the ability to summon a type of unit you'll be able to summon a squad of that type of unit only if you have enough money and population. Also note that you can toggle between autocast and manual cast for summoning units (by clicking the oval shaped button above the action icon, red = manual, green = autocast), but even if you're in autocast mode you won't be able to summon troops if you don't have the resources.";
}
Symbol 2486 MovieClip [__Packages.SoundManager] Frame 0
class SoundManager
{
static var m_musicTrack;
var m_sounds, m_limit, m_deathSounds, m_hitSounds, m_armorSounds;
function SoundManager () {
m_sounds = new Array();
m_limit = 3;
m_soundOn = true;
m_musicOn = true;
m_deathSounds = new Array("Enemies Getting Hurt 01.wav", "Enemies Getting Hurt 02.wav", "Enemies Getting Hurt 04.wav", "Enemies Getting Hurt 09.wav", "Enemies Getting Hurt 10.wav", "Enemies Getting Hurt 11.wav", "Enemies Getting Hurt 12.wav", "Enemies Getting Hurt 13.wav", "Enemies Getting Hurt 03.wav", "Enemies Getting Hurt 05.wav", "Enemies Getting Hurt 06.wav", "Enemies Getting Hurt 08.wav", "oof.wav", "oreh.wav", "doeh.wav");
m_hitSounds = new Array("hit01.wav", "hit02.wav", "hit03.wav", "hit04.wav", "hit05.wav", "hit06.wav", "hit07.wav", "hit08.wav");
m_armorSounds = new Array("Armor Ricochet.wav");
}
function addSound(soundName) {
m_sounds.push(soundName);
}
function step() {
if (m_soundOn) {
var _local2 = 0;
while ((_local2 < m_sounds.length) && (_local2 < m_limit)) {
playSound(m_sounds[_local2]);
_local2++;
}
m_sounds = new Array();
}
if ((!m_musicOn) && (m_musicTrack != null)) {
m_musicTrack.stop();
m_musicTrack = null;
} else if (m_musicOn && (m_musicTrack == null)) {
playDefaultMusic();
}
}
static function playSound(soundName) {
if (m_soundOn) {
var _local1 = new Sound();
_local1.attachSound(soundName);
_local1.start(0, 1);
}
}
static function playSoundForced(soundName) {
var _local1 = new Sound();
_local1.attachSound(soundName);
_local1.start(0, 1);
}
static function playDefaultMusic() {
trace("Playing Music...................................................");
trace("m_song: " + m_song);
playMusic(m_song);
}
static function playMusic(musicName) {
if (m_musicOn) {
m_musicTrack = new Sound();
m_musicTrack.attachSound(musicName);
m_musicTrack.start(0, 1);
m_musicTrack.onSoundComplete = playDefaultMusic;
}
}
function startMusic() {
if (m_musicOn) {
stopAllSounds();
playMusic(m_song);
}
}
static function setSoundOption(soundOn) {
m_soundOn = soundOn;
}
static function setMusicOption(musicOn) {
m_musicOn = musicOn;
}
function addRandomHitSound(hitType) {
if (hitType == "armor") {
m_sounds.push(m_armorSounds[random(m_armorSounds.length)]);
} else if (hitType == "no_sound") {
} else {
m_sounds.push(m_hitSounds[random(m_hitSounds.length)]);
}
}
function addRandomDeathSound() {
m_sounds.push(m_deathSounds[random(m_deathSounds.length)]);
}
function playRandomSong() {
playMusic(m_tracks[random(m_tracks.length)]);
}
static var m_soundOn = true;
static var m_musicOn = true;
static var m_song = "intro_music.mp3";
static var m_tracks = new Array("intro_music.mp3");
}
Symbol 2487 MovieClip [__Packages.GameOver] Frame 0
class GameOver extends GameWindow
{
var m_game, m_clipName, m_depth, m_target;
function GameOver (game, clipName, depth, targetClip) {
super();
m_game = game;
m_clipName = clipName;
m_depth = depth;
m_target = targetClip;
}
}
Symbol 2488 MovieClip [__Packages.LevelManager] Frame 0
class LevelManager extends GameWindow
{
var m_game, m_clipName, m_depth, m_target, m_paused, m_sceneNum, m_levelNum, m_terrainClip, m_markers, m_gameObjects, m_reactiveElements, m_foregroundObjects, m_goodTeam, m_badTeam, m_actionBarHitTested, m_activationObjects, m_skillManager, m_stickyManager, m_sceneryManager, m_soundManager, m_goodReinforcementManager, m_numLevels, m_levels, m_numEnemiesOnScreen, m_timeToAddEnemy, m_numFriendReinforcements, m_hero, m_populationGiven, m_numFriendsOnScreen, m_timeToAddFriend, m_reinforcementTimer, m_clip, m_objectLayer, m_debrisManager, m_spellManager, m_waveManager, m_actionButtons, m_actionButtonGlows, m_airUnits, m_structures, m_badStructures, m_goodStructures, m_neutralStructures, m_garrisonBuildings, level_over, m_shotsFired, m_bodyShots, m_headShots, m_goldEarned, m_goldSpent, m_curLevel, m_curLevelType, m_stepper, m_uiListener, lvl_ui, m_structure_lvl, m_goodCastle, m_badCastle, m_enemyList, m_enemyListNdx, m_numEnemyReinforcements, m_goodFlag, m_badFlag, m_shooter, prevTime, curTime, elapsedTime, elaps, timeCount, frameCount, framesPerSecond, m_overFlowArray, m_heightField, m_bg_lvl, m_fg_lvl, m_numGrunts, m_rotationField, m_maxHeightField, m_popupTextOn, m_gameOptions, m_shootingMode, m_musicOn, m_soundOn, m_bloodAmt, m_detailLevel, m_difficultyLevel;
function LevelManager (game, clipName, depth, targetClip) {
super();
GameVars.g_holding = false;
GameVars.g_classic_shooting = true;
GameVars.g_autoPilot = false;
GameVars.g_badArmyIcon = "icon_skull";
GameVars.g_goodArmyIcon = "icon_good_cross";
GameVars.g_goodArmyColor = "white";
GameVars.g_goodArmyColor2 = "white";
GameVars.g_badArmyColor = "white";
GameVars.g_badArmyColor2 = "white";
GameVars.g_goodArmyIconColor1 = "black";
GameVars.g_badArmyIconColor1 = "black";
m_game = game;
m_clipName = clipName;
m_depth = depth;
m_target = targetClip;
initLevels();
m_paused = false;
m_sceneNum = 1;
m_levelNum = 1;
m_gameOver = false;
m_terrainClip = null;
m_markers = new Array();
m_gameObjects = null;
m_reactiveElements = null;
m_foregroundObjects = null;
m_goodTeam = null;
m_badTeam = null;
m_actionBarHitTested = false;
m_activationObjects = new Array();
m_skillManager = new SkillManager(this);
m_stickyManager = new StickyManager();
m_sceneryManager = new SceneryManager();
m_soundManager = new SoundManager();
m_goodReinforcementManager = new ReinforcementManager(this);
}
function initLevels() {
m_numLevels = 33;
m_levels = new Array(m_numLevels);
m_levels[0] = new CutScene(m_game, "cutscene001", 1, _root.clip_main);
m_levels[0].setTimeLeft(2030);
m_levels[0].setDuration(2030);
m_levels[1] = new GameLevel("level_lowlands_22", "bg_lowlands_dawn", CTF, "oaks");
m_levels[2] = new GameLevel("level_lowlands_30", "bg_lowlands_noon", CTF, "oaks");
m_levels[3] = new GameLevel("level_lowlands_21", "bg_lowlands", CTF, "oaks");
m_levels[4] = new GameLevel("level_lowlands_10", "bg_lowlands_dusk", CTF, "oaks");
m_levels[5] = new GameLevel("level_lowlands_02", "bg_lowlands_night", CTF, "oaks");
m_levels[6] = new GameLevel("level_lowlands_03", "bg_lowlands_dawn", CTF, "oaks");
m_levels[7] = new GameLevel("level_lowlands_04", "bg_lowlands_noon", CTF, "lowlands");
m_levels[8] = new GameLevel("level_lowlands_11", "bg_lowlands", CTF, "lowlands");
m_levels[9] = new GameLevel("level_lowlands_12", "bg_lowlands_dusk", CTF, "lowlands");
m_levels[10] = new GameLevel("level_lowlands_25", "bg_lowlands_night", CTF, "lowlands");
m_levels[11] = new GameLevel("level_lowlands_17", "bg_lowlands_dawn", CTF, "lowlands");
m_levels[12] = new GameLevel("level_lowlands_16", "bg_lowlands_noon", CTF, "lowlands");
m_levels[13] = new GameLevel("level_lowlands_19", "bg_lowlands", CTF, "lowlands");
m_levels[14] = new GameLevel("level_lowlands_01", "bg_lowlands_dusk", CTF, "lowlands");
m_levels[15] = new GameLevel("level_lowlands_20", "bg_lowlands_night", CTF, "lowlands");
m_levels[16] = new GameLevel("level_lowlands_06", "bg_lowlands_dawn", CTF, "pines");
m_levels[17] = new GameLevel("level_lowlands_07", "bg_lowlands_noon", CTF, "pines");
m_levels[18] = new GameLevel("level_lowlands_05", "bg_lowlands", CTF, "pines");
m_levels[19] = new GameLevel("level_lowlands_09", "bg_lowlands_dusk", CTF, "pines");
m_levels[20] = new GameLevel("level_lowlands_23", "bg_lowlands_night", CTF, "pines");
m_levels[21] = new GameLevel("level_lowlands_26", "bg_lowlands_dawn", CTF, "pines");
m_levels[22] = new GameLevel("level_lowlands_27", "bg_lowlands_noon", CTF, "pines");
m_levels[23] = new GameLevel("level_lowlands_28", "bg_lowlands", CTF, "pines");
m_levels[24] = new GameLevel("level_lowlands_29", "bg_lowlands_dusk", CTF, "wasteland");
m_levels[25] = new GameLevel("level_lowlands_15", "bg_lowlands_night", CTF, "wasteland");
m_levels[26] = new GameLevel("level_lowlands_13", "bg_lowlands_dawn", CTF, "wasteland");
m_levels[27] = new GameLevel("level_lowlands_24", "bg_lowlands_noon", CTF, "wasteland");
m_levels[28] = new GameLevel("level_lowlands_08", "bg_lowlands", CTF, "wasteland");
m_levels[29] = new GameLevel("level_lowlands_18", "bg_lowlands_dusk", CTF, "wasteland");
m_levels[30] = new GameLevel("level_lowlands_14", "bg_lowlands_night", CTF, "wasteland");
m_levels[31] = new CutScene(m_game, "cutscene002", 1, _root.clip_main);
m_levels[31].setTimeLeft(1050);
m_levels[31].setDuration(1050);
m_levels[32] = new HighScoreMenu(m_game, "window_highscores", 1, _root.clip_main);
}
function beatGame() {
trace("beat game?");
trace("m_sceneNum: " + m_sceneNum);
trace("m_numLevels: " + m_numLevels);
return(m_sceneNum >= (m_numLevels - 1));
}
function setTimers() {
m_numEnemiesOnScreen = 0;
m_timeToAddEnemy = 0;
m_numFriendReinforcements = 10 + Math.floor(m_hero.getRank() * 10);
m_populationGiven = m_numFriendReinforcements;
m_numFriendsOnScreen = 0;
m_timeToAddFriend = 0;
m_reinforcementTimer = 2000;
refreshReinforcements();
}
function displayWindow() {
m_game.setCurrentWindow(this);
m_clip = m_target.attachMovie(m_clipName, m_clipName + "_id_1", m_depth);
m_clip.m_view = this;
m_clip.m_game = m_game;
m_clip.m_levelNum = 1;
m_stickyManager.setLayer(m_clip.sticky_layer);
m_clip.gold = m_game.profileManager.m_active.m_gold;
m_clip.m_profileName = m_game.profileManager.m_active.m_name;
m_objectLayer = m_clip.object_layer;
trace("m_objectLayer = " + m_clip.object_layer);
m_debrisManager = new DebrisManager(m_clip.debris_layer, m_clip.bg_debris_layer, this);
m_spellManager = new SpellManager(this);
m_waveManager = new WaveManager(this);
resetLevelDepths();
m_actionBarHitTested = false;
initActionButtons();
initActionButtonGlows();
refreshActionBarSetup();
updateXPBar();
startGame();
}
function refreshActionBarSetup() {
var _local2 = getBoundSkills(m_game.profileManager.getActiveProfile().m_skills);
m_skillManager.init(_local2);
initSkills();
}
function tstSkewActionBarSetup() {
var _local5;
var _local3 = new Array(30);
var _local6;
var _local4 = _local3.length;
var _local2 = 0;
while (_local2 < _local4) {
_local3[_local2] = _local2;
_local2++;
}
var _local7 = m_game.profileManager.getActiveProfile().m_skills;
_local4 = _local7.length;
_local2 = 0;
while (_local2 < _local4) {
_local5 = _local7[_local2];
_local6 = _local3.splice(random(_local3.length), 1)[0];
_local5.setActionBarID(_local6);
_local2++;
}
refreshActionBarSetup();
}
function getBoundSkills(skills) {
var _local2;
var _local3;
var _local5 = new Array(MAX_BOUND_SKILLS);
var _local1 = 0;
while (_local1 < skills.length) {
_local2 = skills[_local1];
_local3 = _local2.getActionBarID();
if (_local2.isBound()) {
_local5[_local3] = _local2;
}
_local1++;
}
return(_local5);
}
function getCurrentSceneNum(levelNum) {
var _local4 = 0;
var _local2 = 0;
while ((_local2 < m_levels.length) && (levelNum > 0)) {
if (m_levels[_local2] instanceof GameLevel) {
levelNum--;
}
_local4++;
_local2++;
}
return(_local4);
}
function initActionButtons() {
m_actionButtons = new Array(10);
m_actionButtons[0] = new ActionButton(m_clip.actionButton01, GameApp.KEY_1, 0);
m_actionButtons[1] = new ActionButton(m_clip.actionButton02, GameApp.KEY_2, 1);
m_actionButtons[2] = new ActionButton(m_clip.actionButton03, GameApp.KEY_3, 2);
m_actionButtons[3] = new ActionButton(m_clip.actionButton04, GameApp.KEY_4, 3);
m_actionButtons[4] = new ActionButton(m_clip.actionButton05, GameApp.KEY_5, 4);
m_actionButtons[5] = new ActionButton(m_clip.actionButton06, GameApp.KEY_6, 5);
m_actionButtons[6] = new ActionButton(m_clip.actionButton07, GameApp.KEY_7, 6);
m_actionButtons[7] = new ActionButton(m_clip.actionButton08, GameApp.KEY_8, 7);
m_actionButtons[8] = new ActionButton(m_clip.actionButton09, GameApp.KEY_9, 8);
m_actionButtons[9] = new ActionButton(m_clip.actionButton00, GameApp.KEY_0, 9);
var _local2 = 0;
while (_local2 < m_actionButtons.length) {
m_actionButtons[_local2].initAutoCastButton();
_local2++;
}
}
function initActionButtonGlows() {
m_actionButtonGlows = new Array(10);
m_actionButtonGlows[0] = m_clip.ab_glow_1;
m_actionButtonGlows[1] = m_clip.ab_glow_2;
m_actionButtonGlows[2] = m_clip.ab_glow_3;
m_actionButtonGlows[3] = m_clip.ab_glow_4;
m_actionButtonGlows[4] = m_clip.ab_glow_5;
m_actionButtonGlows[5] = m_clip.ab_glow_6;
m_actionButtonGlows[6] = m_clip.ab_glow_7;
m_actionButtonGlows[7] = m_clip.ab_glow_8;
m_actionButtonGlows[8] = m_clip.ab_glow_9;
m_actionButtonGlows[9] = m_clip.ab_glow_0;
}
function stepActionButtons() {
var _local5 = false;
var _local4;
var _local6 = m_actionButtons.length;
if ((m_game.getMouseDown() && (!m_actionBarHitTested)) && (_root._ymouse > 850)) {
m_actionBarHitTested = true;
var _local3 = 0;
while ((_local3 < _local6) && (!_local5)) {
_local4 = m_actionButtons[_local3];
if (_local4.hitButton(_root._xmouse, _root._ymouse)) {
_local4.activateButton();
_local5 = true;
} else if (_local4.checkHitAutoCast(_root._xmouse, _root._ymouse)) {
_local5 = true;
}
_local3++;
}
} else if (!m_game.getMouseDown()) {
m_actionBarHitTested = false;
}
_local6 = m_actionButtons.length;
var _local3 = 0;
while (_local3 < _local6) {
m_actionButtons[_local3].step();
_local3++;
}
}
function setActionButtonGlow(num) {
var _local3 = m_actionButtonGlows.length;
var _local2 = 0;
while (_local2 < _local3) {
m_actionButtonGlows[_local2].gotoAndStop("not_active");
_local2++;
}
m_actionButtonGlows[num].gotoAndStop("active");
}
function initSkills() {
m_skillManager.initSkillButtons();
}
function startGame() {
m_paused = false;
m_gameObjects = new Array();
m_reactiveElements = new Array();
m_foregroundObjects = new Array();
m_goodTeam = new Array();
m_badTeam = new Array();
m_airUnits = new Array();
m_structures = new Array();
m_badStructures = new Array();
m_goodStructures = new Array();
m_neutralStructures = new Array();
m_garrisonBuildings = new Array();
m_goodReinforcementManager.reset();
level_over = false;
m_shotsFired = 0;
m_bodyShots = 0;
m_headShots = 0;
m_populationGiven = 0;
m_goldEarned = 0;
m_goldSpent = 0;
initInGameOptions();
m_levelNum = m_game.profileManager.m_active.m_maxLevelReached;
m_sceneNum = m_game.profileManager.m_active.m_maxSceneReached;
m_clip.m_levelNum = m_levelNum;
m_waveManager.setMaxNumUnits(5 + m_levelNum);
var _local2 = getNextGameLevel();
if (_local2 instanceof GameLevel) {
m_soundManager.startMusic();
m_curLevel = _local2;
m_curLevelType = m_curLevel.getLevelType();
loadTerrain();
loadTerrainFeatures();
initFriends();
initShooter();
setTimers();
initLevelTypeSpecificVars(m_curLevelType);
m_stepper = m_clip.attachMovie("level_stepper", "level_stepper_id_" + DEPTH_STEPPER, DEPTH_STEPPER);
m_stepper.m_view = this;
m_stepper._x = -100;
m_stepper._visible = false;
m_uiListener = m_clip.attachMovie("ui_listener", "lui_listener_id_" + DEPTH_UILISTENER, DEPTH_UILISTENER);
m_uiListener._x = -100;
m_uiListener._visible = false;
trace("Starting Game");
} else if (_local2 instanceof CutScene) {
m_sceneNum++;
m_game.profileManager.m_active.checkScene(m_sceneNum);
_local2.displayWindow();
} else if (_local2 instanceof HighScoreMenu) {
m_game.profileManager.retireActiveProfile();
_local2.displayWindow();
} else {
trace("Unknown instance... program aborting...");
}
}
function getNextUILevel() {
return(lvl_ui++);
}
function initLevelTypeSpecificVars(gameType) {
var _local2;
m_structure_lvl = 1;
if (gameType == ELIMINATION) {
_local2 = getNextUILevel();
m_clip.ui_layer.attachMovie("gtype_elimination_score", "gtype_elimination_score_id_" + _local2, _local2);
m_clip.ui_badScore = 0;
m_clip.ui_goodScore = 0;
m_goodScore = 0;
m_badScore = 0;
} else if (gameType == MODE_CASTLE) {
_local2 = getNextStructureLevel();
m_goodCastle = new Castle(this, "castle_good01", 200, getElevation(200), m_clip.castle_layer, _local2, 300);
m_goodCastle.m_clip.lvl = _local2;
m_goodCastle.setShotOffsets(0, -200);
m_goodCastle.setFlagSpots(0, -200);
m_goodCastle.setPermanentTeam(Fighter.GOOD);
m_goodCastle.setMaxOccupants(4);
m_gameObjects.push(m_goodCastle);
m_structures.push(m_goodCastle);
m_garrisonBuildings.push(m_goodCastle);
_local2 = getNextStructureLevel();
m_badCastle = new Castle(this, "castle_bad01", 1800, getElevation(1800), m_clip.castle_layer, _local2, 300);
m_badCastle.m_clip.lvl = _local2;
m_badCastle.setShotOffsets(0, -200);
m_badCastle.setFlagSpots(0, -200);
m_badCastle.setPermanentTeam(Fighter.BAD);
m_badCastle.setMaxOccupants(4);
m_gameObjects.push(m_badCastle);
m_structures.push(m_badCastle);
m_garrisonBuildings.push(m_badCastle);
} else if (gameType == DEFEND) {
_local2 = getNextStructureLevel();
m_goodCastle = new Castle(this, "castle_good01", 200, getElevation(200), m_clip.castle_layer, _local2, 300);
m_goodCastle.m_clip.lvl = _local2;
m_goodCastle.setShotOffsets(0, -200);
m_goodCastle.setFlagSpots(0, -200);
m_goodCastle.setPermanentTeam(Fighter.GOOD);
m_goodCastle.setMaxOccupants(4);
m_gameObjects.push(m_goodCastle);
m_structures.push(m_goodCastle);
m_garrisonBuildings.push(m_goodCastle);
m_badCastle = null;
} else if (gameType == ATTACK) {
m_goodCastle = null;
_local2 = getNextStructureLevel();
m_badCastle = new Castle(this, "castle_bad01", 1800, getElevation(1800), m_clip.castle_layer, _local2, 300);
m_badCastle.m_clip.lvl = _local2;
m_badCastle.setShotOffsets(0, -200);
m_badCastle.setFlagSpots(0, -200);
m_badCastle.setPermanentTeam(Fighter.BAD);
m_badCastle.setMaxOccupants(4);
m_gameObjects.push(m_badCastle);
m_structures.push(m_badCastle);
m_garrisonBuildings.push(m_badCastle);
} else if (gameType == CTF) {
m_enemyList = generateFlagEnemyList();
m_enemyListNdx = 0;
m_numEnemyReinforcements = m_enemyList.length;
var _local4;
_local4 = 8000 + (m_hero.getRank() * 400);
_local2 = getNextStructureLevel();
m_goodCastle = new Castle(this, "castle_good01", m_leftCastleSpot, getElevation(m_leftCastleSpot), m_clip.castle_layer, _local2, _local4);
m_goodCastle.m_clip.lvl = _local2;
m_goodCastle.setShotOffsets(0, -200);
m_goodCastle.setFlagSpots(0, -200);
m_goodCastle.setPermanentTeam(Fighter.GOOD);
m_goodCastle.setMaxOccupants(4);
m_gameObjects.push(m_goodCastle);
m_structures.push(m_goodCastle);
m_garrisonBuildings.push(m_goodCastle);
addToGoodStructures(m_goodCastle);
m_hero.xpos = m_goodCastle.xpos;
m_hero.ypos = m_goodCastle.ypos;
m_hero.attemptGarrisonInto(m_goodCastle);
loadTowers();
_local4 = Math.floor(8000 * (1 + (m_levelNum / 30)));
_local2 = getNextStructureLevel();
m_badCastle = new Castle(this, "castle_bad01", m_rightCastleSpot, getElevation(m_rightCastleSpot), m_clip.castle_layer, _local2, _local4);
m_badCastle.m_clip.lvl = _local2;
m_badCastle.setShotOffsets(0, -200);
m_badCastle.setFlagSpots(0, -200);
m_badCastle.setPermanentTeam(Fighter.BAD);
m_badCastle.setMaxOccupants(4);
m_gameObjects.push(m_badCastle);
m_structures.push(m_badCastle);
m_garrisonBuildings.push(m_badCastle);
addToBadStructures(m_badCastle);
_local2 = getNextObjectLevel();
m_goodFlag = new Flag(this, "good_flag", m_goodFlagRange, getElevation(m_goodFlagRange), m_clip.object_layer, _local2, 100);
m_goodFlag.m_clip.lvl = _local2;
m_gameObjects.push(m_goodFlag);
trace("m_goodFlag = " + m_goodFlag);
trace("m_goodFlag.m_clip = " + m_goodFlag.m_clip);
_local2 = getNextObjectLevel();
m_badFlag = new Flag(this, "bad_flag", m_badFlagRange, getElevation(m_badFlagRange), m_clip.object_layer, _local2, 100);
m_badFlag.m_clip.lvl = _local2;
m_gameObjects.push(m_badFlag);
trace("m_badFlag = " + m_badFlag);
trace("m_goodFlag.m_clip = " + m_badFlag.m_clip);
} else {
trace("Unknow level type: " + gameType);
}
}
function loadTowers() {
var _local5;
var _local8;
var _local9;
var _local10;
var _local4;
var _local6;
_local8 = random(Math.floor(m_levelNum / 7));
if (_local8 > 3) {
_local8 = 3;
}
_local9 = GameApp.g_width * 0.2;
_local10 = GameApp.g_width * 0.8;
_local4 = (_local10 - _local9) / _local8;
var _local3 = 0;
while (_local3 < _local8) {
_local6 = ((_local9 + ((0.5 + _local3) * _local4)) + random(Math.ceil(_local4))) - Math.ceil(_local4 * 0.5);
_local5 = getNextStructureLevel();
var _local7 = 3000 * (1 + (m_levelNum / 30));
var _local2 = new Tower(this, "tower1", _local6, getElevation(_local6), m_clip.castle_layer, _local5, _local7);
_local2.m_clip.lvl = _local5;
_local2.setShotOffsets(0, -130);
_local2.setFlagSpots(0, -130);
_local2.setMaxOccupants(3);
m_gameObjects.push(_local2);
m_structures.push(_local2);
m_garrisonBuildings.push(_local2);
addToNeutralStructures(_local2);
_local3++;
}
}
function getNextStructureLevel() {
return(m_structure_lvl++);
}
function initFriends() {
var _local2;
_local2 = getNextObjectLevel();
m_hero = new Hero(this, "hero", 100, getElevation(100), m_clip.object_layer, _local2, 100);
m_hero.m_clip.lvl = _local2;
m_hero.m_engagementManager.setAttackedByLimit(1);
m_hero.m_engagementManager.setAttackLimit(1);
m_hero.m_teamNum = Fighter.GOOD;
m_hero.setRank(m_game.profileManager.m_active.m_rank);
m_gameObjects.push(m_hero);
m_goodTeam.push(m_hero);
m_hero.setEnemyList(m_badTeam);
m_hero.setFriendList(m_goodTeam);
}
function initShooter() {
var _local2 = m_game.profileManager.m_active.m_shootingMode;
if (_local2 == "auto_aim") {
m_shooter = new ShooterAutoAim(m_hero, this);
} else if (_local2 == "point_aim") {
m_shooter = new ShooterPointAim(m_hero, this);
} else if (_local2 == "drag_circle") {
GameVars.g_classic_shooting = true;
m_shooter = new ShooterDrag(m_hero, this);
} else {
GameVars.g_classic_shooting = false;
m_shooter = new ShooterDrag(m_hero, this);
}
}
function tstLoadNextShooter() {
var _local2;
m_shooter.destroy();
if (tstShooterModeNdx >= tstShooterModes.length) {
tstShooterModeNdx = 0;
}
_local2 = tstShooterModes[tstShooterModeNdx];
if (_local2 == "auto_aim") {
m_shooter = new ShooterAutoAim(m_hero, this);
} else if (_local2 == "drag_circle") {
GameVars.g_classic_shooting = true;
m_shooter = new ShooterDrag(m_hero, this);
} else if (_local2 == "point_aim") {
m_shooter = new ShooterPointAim(m_hero, this);
} else {
GameVars.g_classic_shooting = false;
m_shooter = new ShooterDrag(m_hero, this);
}
tstShooterModeNdx++;
}
function getNextShooterUILevel() {
if ((m_shooterLevel++) > 10) {
m_shooterLevel = 1;
}
return(m_shooterLevel);
}
function getNextGameLevel() {
return(m_levels[(m_sceneNum - 1) % m_numLevels]);
}
function step() {
var _local4 = m_gameObjects.length;
var _local3;
prevTime = curTime;
curTime = getTimer();
elapsedTime = curTime - prevTime;
elaps = elapsedTime / 1000;
if (timeCount < 333) {
timeCount = timeCount + elapsedTime;
frameCount++;
} else {
framesPerSecond = frameCount * 3;
timeCount = 0;
frameCount = 0;
}
m_clip.m_fps = framesPerSecond;
if (m_levelCountDown == -1) {
m_goodReinforcementManager.step();
var _local2 = 0;
while (_local2 < _local4) {
_local3 = m_gameObjects[_local2];
if (_local3 != null) {
_local3.step();
}
_local2++;
}
m_stickyManager.step();
m_waveManager.step();
stepArmyLoader();
m_shooter.step();
stepActionButtons();
m_skillManager.step();
m_debrisManager.step();
m_spellManager.step();
stepObjectActivation();
m_soundManager.step();
} else if (m_levelCountDown > 0) {
m_levelCountDown = m_levelCountDown - GameApp.m_gSpeed;
} else {
m_levelCountDown = -1;
if (m_gameOver) {
m_gameOver = false;
m_game.gameOver.displayWindow();
} else if (beatGame()) {
startGame();
} else {
syncLevelSummaryStats();
m_game.profileManager.m_active.addXP(m_game.levelSummary.getBonusXP());
m_game.profileManager.m_active.m_gold = m_game.profileManager.m_active.m_gold + m_game.levelSummary.getBonusGold();
m_game.profileManager.saveData();
m_game.levelSummary.setAnimate(true);
m_game.levelSummary.displayWindow();
}
}
}
function tstAuditObject(obj) {
if (obj.getClip() == null) {
trace("obj: " + obj);
trace("obj.m_clipName: " + obj.m_clipName);
trace("obj.m_layer = " + obj.m_layer);
trace("object clip null...");
trace((("object: " + obj.tst_name) + ", lvl = ") + obj.getClipLevel());
} else if (obj.getClip().lvl == null) {
trace("obj: " + obj);
trace("obj.m_clipName: " + obj.m_clipName);
trace("obj.m_layer = " + obj.m_layer);
trace("object clip.lvl null...");
trace((("object: " + obj.tst_name) + ", lvl = ") + obj.getClipLevel());
}
}
function testUpdateStickyArrayText() {
m_clip.tst_stickyArray = m_stickyManager.traceStickies();
}
function resetLevelDepths() {
lvl_ui = 1;
lvl_obj = m_maxObjects;
occupiedArrayInit();
m_overFlowArray = new Array();
}
function setLevelNum(lvl) {
m_sceneNum = lvl;
}
function stepArmyLoader() {
if (m_curLevelType == CTF) {
stepFlagReinforcements();
} else if (((m_curLevelType == MODE_CASTLE) || (m_curLevelType == ATTACK)) || (m_curLevelType == DEFEND)) {
stepCastleReinforcements();
} else {
trace("stepArmyLoader(): Unknown mode: " + m_curLevelType);
}
}
function stateChange() {
if (level_over) {
} else if (((m_curLevelType == MODE_CASTLE) || (m_curLevelType == DEFEND)) || (m_curLevelType == ATTACK)) {
stateChangeCastle();
} else if (m_curLevelType == CTF) {
stateChangeCTF();
} else if (m_curLevelType == ELIMINATION) {
stateChangeElimination();
} else {
trace("unknown state change: " + m_curLevelType);
}
}
function increaseGoodScore(amt) {
m_goodScore = m_goodScore + amt;
}
function increaseBadScore(amt) {
m_badScore = m_badScore + amt;
}
function stateChangeDefend() {
if ((m_numEnemyReinforcements == 0) && (m_numEnemiesOnScreen == 0)) {
victory();
} else if ((m_hero.isDead() || (m_goodCastle.isDead())) || ((m_numFriendReinforcements == 0) && (m_numFriendsOnScreen == 0))) {
gameOver();
}
}
function stateChangeCastle() {
if (((m_badCastle != null) && (m_badCastle.isDead())) || ((m_numEnemyReinforcements == 0) && (m_numEnemiesOnScreen == 0))) {
victory();
} else if ((m_hero.isDead() || ((m_goodCastle != null) && (m_goodCastle.isDead()))) || ((m_numFriendReinforcements == 0) && (m_numFriendsOnScreen == 0))) {
gameOver();
}
}
function stateChangeAttack() {
trace("Attack mode not implemented yet");
}
function stateChangeCTF() {
if (m_hero.isDead() || (m_goodFlag.captured() && (m_badFlag.atBase()))) {
var _local3 = m_goodFlag.captured() && (m_badFlag.atBase());
var _local2 = (m_numFriendReinforcements == 0) && (m_numFriendsOnScreen == 0);
gameOver();
} else if ((m_badFlag.captured() && (m_goodFlag.atBase())) || ((m_numEnemyReinforcements == 0) && (m_numEnemiesOnScreen == 0))) {
var _local3 = m_badFlag.captured() && (m_goodFlag.atBase());
var _local2 = (m_numEnemyReinforcements == 0) && (m_numEnemiesOnScreen == 0);
victory();
}
}
function stateChangeElimination() {
m_clip.ui_badScore = m_badScore;
m_clip.ui_goodScore = m_goodScore;
if ((((m_numEnemyReinforcements == 0) && (m_numEnemiesOnScreen == 0)) && (m_numFriendReinforcements == 0)) && (m_numFriendsOnScreen == 0)) {
if (m_goodScore > m_badScore) {
victory();
} else if (m_badScore >= m_goodScore) {
gameOver();
}
}
}
function stepFlagReinforcements() {
m_timeToAddFriend = m_timeToAddFriend - GameApp.m_gSpeed;
m_timeToAddEnemy = m_timeToAddEnemy - GameApp.m_gSpeed;
if ((((m_numEnemyReinforcements > 0) && (m_numEnemiesOnScreen < m_maxEnemiesOnScreen)) && (m_waveManager.canAddUnit())) && (m_timeToAddEnemy < 0)) {
m_waveManager.addUnit();
addFlagEnemyReinforcements();
m_timeToAddEnemy = Math.floor((m_enemyLagBase - m_levelNum) / m_unitSpeedMult);
if (m_timeToAddEnemy < 30) {
m_timeToAddEnemy = 30;
}
}
}
function addFlagEnemyReinforcements() {
m_numEnemyReinforcements--;
m_numEnemiesOnScreen++;
var _local2;
_local2 = getFlagFighter(getNextFlagFighterType());
if (_local2 instanceof FlagFighter) {
FlagFighter(_local2).setEnemyFlag(m_goodFlag);
FlagFighter(_local2).setFriendFlag(m_badFlag);
}
_local2.setRankUsingLevel(m_levelNum);
_local2.setForward(-1);
m_badTeam.push(_local2);
m_gameObjects.push(_local2);
_local2.setEnemyList(m_goodTeam);
_local2.setFriendList(m_badTeam);
_local2.m_teamNum = Fighter.BAD;
}
function generateFlagEnemyList() {
var _local2 = new Array();
var _local15;
var _local7;
var _local12;
var _local10;
var _local9;
var _local6;
var _local16;
var _local11;
var _local4;
var _local8;
var _local5;
var _local13;
var _local14;
_local15 = 0;
_local7 = 0;
_local10 = 0;
_local12 = 0;
_local6 = 0;
_local9 = 0;
_local16 = 0;
_local11 = 0;
_local4 = 0;
_local5 = 0;
_local8 = 0;
_local14 = 0;
_local13 = 0;
_local15 = 15 + (m_levelNum * 4);
_local7 = 2;
if (m_levelNum >= 3) {
_local7 = _local7 + Math.floor(5 + ((m_levelNum - 2) * 0.6));
}
_local12 = 3;
if (m_levelNum >= 4) {
_local12 = _local12 + Math.floor(10 + ((m_levelNum - 5) * 0.8));
}
_local9 = 1;
if (m_levelNum >= 5) {
_local9 = _local9 + Math.floor(10 + ((m_levelNum - 8) * 0.75));
}
_local10 = 1;
if (m_levelNum >= 6) {
_local10 = _local10 + Math.floor(15 + ((m_levelNum - 8) * 0.75));
}
_local6 = 1;
if (m_levelNum >= 7) {
_local6 = _local6 + Math.floor(3 + ((m_levelNum - 7) * 0.5));
}
_local11 = 0;
if (m_levelNum >= 5) {
_local11 = _local11 + Math.floor(2 + ((m_levelNum - 5) * 0.5));
}
_local5 = 0;
if (m_levelNum >= 10) {
_local5 = _local5 + (0 + random(Math.floor((m_levelNum - 5) * 0.5)));
}
_local8 = 0;
if (m_levelNum >= 10) {
_local8 = _local8 + (0 + random(Math.floor((m_levelNum - 5) * 0.5)));
}
_local4 = 0;
if (m_levelNum >= 13) {
_local4 = _local4 + (0 + random(Math.floor((m_levelNum - 5) * 0.5)));
}
if (m_levelNum >= 17) {
_local13 = _local13 + random(m_levelNum - 10);
_local14 = _local14 + random(m_levelNum - 10);
}
if (m_levelNum == 30) {
_local16 = 1;
trace("Boss!");
}
var _local3 = 0;
while (_local3 < _local15) {
_local2.push("small_grunt");
_local3++;
}
_local3 = 0;
while (_local3 < _local7) {
_local2.push("big_grunt");
_local3++;
}
_local3 = 0;
while (_local3 < _local12) {
_local2.push("archer");
_local3++;
}
_local3 = 0;
while (_local3 < _local10) {
_local2.push("priest");
_local3++;
}
_local3 = 0;
while (_local3 < _local6) {
_local2.push("trebuchet");
_local3++;
}
_local3 = 0;
while (_local3 < _local9) {
_local2.push("mount");
_local3++;
}
_local3 = 0;
while (_local3 < _local11) {
_local2.push("air");
_local3++;
}
_local3 = 0;
while (_local3 < _local4) {
_local2.push("dragon_scout_poison");
_local3++;
}
_local3 = 0;
while (_local3 < _local5) {
_local2.push("dragon_scout_fire");
_local3++;
}
_local3 = 0;
while (_local3 < _local8) {
_local2.push("dragon_scout_ice");
_local3++;
}
_local3 = 0;
while (_local3 < _local14) {
_local2.push("ice_demon");
_local3++;
}
_local3 = 0;
while (_local3 < _local13) {
_local2.push("fire_demon");
_local3++;
}
Util.randomizeList(_local2);
_local3 = 0;
while (_local3 < _local16) {
_local2.push("gorath");
_local3++;
}
_local2.reverse();
return(_local2);
}
function getNextFlagFighterType() {
return(m_enemyList[m_enemyListNdx++]);
}
function getFlagFighter(fighterType) {
var _local3 = getNextObjectLevel();
var _local2;
var _local6 = 2050;
var _local4 = m_heightField[m_heightField.length - 1];
if (fighterType == "small_grunt") {
_local2 = new FlagGrunt(this, "bad_flagger", _local6, _local4, m_clip.object_layer, _local3, 25);
} else if (fighterType == "big_grunt") {
_local2 = new FlagTallGrunt(this, "bad_flagger_big", _local6, _local4, m_clip.object_layer, _local3, 50);
} else if (fighterType == "trebuchet") {
_local2 = new FlagTrebuchet(this, "bad_trebuchet", _local6, _local4, m_clip.object_layer, _local3, 100);
} else if (fighterType == "archer") {
_local2 = new FlagArcher(this, "bad_archer", _local6, _local4, m_clip.object_layer, _local3, 10);
} else if (fighterType == "priest") {
_local2 = new FlagPriest(this, "bad_flag_priest", _local6, _local4, m_clip.object_layer, _local3, 10);
} else if (fighterType == "mount") {
_local2 = new FlagMount(this, "bad_flag_mount", _local6, _local4, m_clip.object_layer, _local3, 35);
} else if (fighterType == "gorath") {
_local2 = new TestBoss(this, "boss_gorath", 2200, _local4, m_clip.object_layer, _local3, 500);
} else if (fighterType == "air") {
_local2 = new AirFighter(this, "bad_dragon_scout", 2050, _local4, m_clip.object_layer, _local3, 300);
addToAirUnits(_local2);
} else if (fighterType == "dragon_scout_poison") {
_local2 = new DragonScoutPoison(this, "bad_dragon_scout_poison", 2050, _local4, m_clip.object_layer, _local3, 300);
addToAirUnits(_local2);
} else if (fighterType == "dragon_scout_fire") {
_local2 = new DragonScoutFire(this, "bad_dragon_scout_fire", 2050, _local4, m_clip.object_layer, _local3, 300);
addToAirUnits(_local2);
} else if (fighterType == "dragon_scout_ice") {
_local2 = new DragonScoutIce(this, "bad_dragon_scout_ice", 2050, _local4, m_clip.object_layer, _local3, 300);
addToAirUnits(_local2);
} else if (fighterType == "ice_demon") {
_local2 = new FlagIceDemon(this, "bad_ice_demon", _local6, _local4, m_clip.object_layer, _local3, 1);
} else if (fighterType == "fire_demon") {
_local2 = new FlagFireDemon(this, "bad_fire_demon", _local6, _local4, m_clip.object_layer, _local3, 1);
}
_local2.m_clip.lvl = _local3;
return(_local2);
}
function addGoodArcher(rank) {
m_numFriendsOnScreen++;
refreshReinforcements();
if (m_curLevelType == CTF) {
addGoodFlagArcher(rank);
} else {
addGoodFlagArcher(rank);
}
}
function addGoodGrunt(rank) {
m_numFriendsOnScreen++;
refreshReinforcements();
if (m_curLevelType == CTF) {
addGoodFlagGrunt(rank);
} else {
addGoodFlagGrunt(rank);
}
}
function addGoodTallGrunt(rank) {
m_numFriendsOnScreen++;
refreshReinforcements();
if (m_curLevelType == CTF) {
addGoodFlagTallGrunt(rank);
} else {
addGoodFlagTallGrunt(rank);
}
}
function addGoodMount(rank) {
m_numFriendsOnScreen++;
refreshReinforcements();
if (m_curLevelType == CTF) {
addGoodFlagMount(rank);
} else {
addGoodFlagMount(rank);
}
}
function addGoodPriest(rank) {
m_numFriendsOnScreen++;
refreshReinforcements();
if (m_curLevelType == CTF) {
addGoodFlagPriest(rank);
} else {
addGoodFlagPriest(rank);
}
}
function addGoodTrebuchet(rank) {
m_numFriendsOnScreen++;
refreshReinforcements();
if (m_curLevelType == CTF) {
addGoodFlagTrebuchet(rank);
} else {
addGoodFlagTrebuchet(rank);
}
}
function addGoodFlagGrunt(rank) {
var _local2;
var _local3 = getNextObjectLevel();
_local2 = new FlagGrunt(this, "good_flagger", -50, m_heightField[0], m_clip.object_layer, _local3, 20);
_local2.m_clip.lvl = _local3;
_local2.setVx(0.5);
_local2.setRank(rank);
registerGoodFlagger(_local2);
}
function addGoodFlagTallGrunt(rank) {
var _local2;
var _local3 = getNextObjectLevel();
_local2 = new FlagTallGrunt(this, "good_flagger_big", -50, m_heightField[0], m_clip.object_layer, _local3, 40);
_local2.m_clip.lvl = _local3;
_local2.setVx(0.5);
_local2.setRank(rank);
registerGoodFlagger(_local2);
}
function addGoodFlagPriest(rank) {
var _local2;
var _local3 = getNextObjectLevel();
_local2 = new FlagPriest(this, "good_flag_priest", -50, m_heightField[0], m_clip.object_layer, _local3, 10);
_local2.m_clip.lvl = _local3;
_local2.setVx(0.5);
_local2.setRank(rank);
registerGoodFlagger(_local2);
}
function addGoodFlagTrebuchet(rank) {
var _local2;
var _local3 = getNextObjectLevel();
_local2 = new FlagTrebuchet(this, "good_trebuchet", -50, m_heightField[0], m_clip.object_layer, _local3, 100);
_local2.m_clip.lvl = _local3;
_local2.setVx(0.2);
_local2.m_engagementManager.setAttackedByLimit(5);
_local2.m_engagementManager.setAttackLimit(0);
_local2.setMeleeDamage(0);
_local2.setRank(rank);
registerGoodFlagger(_local2);
}
function addGoodFlagMount(rank) {
var _local2;
var _local3 = getNextObjectLevel();
_local2 = new FlagMount(this, "good_flag_mount", -50, m_heightField[0], m_clip.object_layer, _local3, 35);
_local2.m_clip.lvl = _local3;
_local2.setVx(1);
_local2.m_engagementManager.setAttackedByLimit(2);
_local2.m_engagementManager.setAttackLimit(1);
_local2.setMeleeDamage(20);
_local2.setRank(rank);
registerGoodFlagger(_local2);
}
function addGoodFlagArcher(rank) {
var _local2;
var _local3 = getNextObjectLevel();
_local2 = new FlagArcher(this, "good_archer", -50, m_heightField[0], m_clip.object_layer, _local3, 10);
_local2.m_clip.lvl = _local3;
_local2.setRank(rank);
registerGoodFlagger(_local2);
}
function canAddFriendReinforcement() {
return(m_numFriendsOnScreen < m_maxFriendsOnScreen);
}
function canQueueFriendReinforcement(amt, popVal) {
return((m_numFriendReinforcements - (amt * popVal)) >= 0);
}
function registerGoodFlagger(tempFriend) {
tempFriend.setForward(1);
tempFriend.setEnemyFlag(m_badFlag);
tempFriend.setFriendFlag(m_goodFlag);
m_goodTeam.push(tempFriend);
m_gameObjects.push(tempFriend);
tempFriend.setEnemyList(m_badTeam);
tempFriend.setFriendList(m_goodTeam);
tempFriend.m_teamNum = Fighter.GOOD;
}
function addGoodFlagFighter(fighter) {
m_numFriendsOnScreen++;
refreshReinforcements();
fighter.setForward(1);
fighter.setEnemyFlag(m_badFlag);
fighter.setFriendFlag(m_goodFlag);
m_goodTeam.push(fighter);
m_gameObjects.push(fighter);
fighter.setEnemyList(m_badTeam);
fighter.setFriendList(m_goodTeam);
fighter.m_teamNum = Fighter.GOOD;
}
function getGoodFlagFighter(fighterType) {
var _local3 = getNextObjectLevel();
var _local2;
var _local5 = -50;
var _local6 = m_heightField[0];
if (fighterType.getType() == "small_grunt") {
_local2 = new FlagGrunt(this, "good_flagger", _local5, _local6, m_clip.object_layer, _local3, 1);
_local2.m_clip.lvl = _local3;
} else if (fighterType.getType() == "big_grunt") {
_local2 = new FlagTallGrunt(this, "good_flagger_big", _local5, _local6, m_clip.object_layer, _local3, 1);
_local2.m_clip.lvl = _local3;
} else if (fighterType.getType() == "trebuchet") {
_local2 = new FlagTrebuchet(this, "good_trebuchet", _local5, _local6, m_clip.object_layer, _local3, 1);
_local2.m_clip.lvl = _local3;
} else if (fighterType.getType() == "archer") {
_local2 = new FlagArcher(this, "good_archer", _local5, _local6, m_clip.object_layer, _local3, 1);
_local2.m_clip.lvl = _local3;
} else if (fighterType.getType() == "priest") {
_local2 = new FlagPriest(this, "good_flag_priest", _local5, _local6, m_clip.object_layer, _local3, 1);
_local2.m_clip.lvl = _local3;
} else if (fighterType.getType() == "mount") {
_local2 = new FlagMount(this, "good_flag_mount", _local5, _local6, m_clip.object_layer, _local3, 1);
_local2.m_clip.lvl = _local3;
}
_local2.setRank(fighterType.getRank());
_local2.setSkill(fighterType.getSkill());
return(_local2);
}
function stepCastleReinforcements() {
m_timeToAddEnemy = m_timeToAddEnemy - GameApp.m_gSpeed;
m_reinforcementTimer = m_reinforcementTimer - GameApp.m_gSpeed;
if (m_reinforcementTimer > 1000) {
if ((m_numEnemyReinforcements > 0) && (m_numEnemiesOnScreen < m_maxEnemiesOnScreen)) {
if (m_timeToAddEnemy < 0) {
addCastleEnemyReinforcements();
m_timeToAddEnemy = 35;
}
}
}
if (m_reinforcementTimer <= 0) {
m_reinforcementTimer = 4000;
}
}
function addCastleFriendReinforcements() {
m_numFriendReinforcements--;
m_numFriendsOnScreen++;
var _local2;
var _local3 = getNextObjectLevel();
if (random(100) >= 10) {
_local2 = new CastleFighter(this, "good_flagger", -50, m_heightField[0], m_clip.object_layer, _local3, 300);
} else {
_local2 = new AirFighter(this, "good_dragon_scout", -50, m_heightField[0], m_clip.object_layer, _local3, 300);
addToAirUnits(_local2);
}
_local2.m_clip.lvl = _local3;
_local2.setVx(0.5);
_local2.m_engagementManager.setAttackedByLimit(2);
_local2.m_engagementManager.setAttackLimit(1);
_local2.setMeleeDamage(10);
_local2.setForward(1);
_local2.setEnemyCastle(m_badCastle);
_local2.setFriendCastle(m_goodCastle);
_local2.setEnemyList(m_badTeam);
_local2.setFriendList(m_goodTeam);
_local2.m_teamNum = Fighter.GOOD;
m_goodTeam.push(_local2);
m_gameObjects.push(_local2);
}
function addCastleEnemyReinforcements() {
m_numEnemyReinforcements--;
m_numEnemiesOnScreen++;
var _local2;
var _local3 = getNextObjectLevel();
if (random(100) >= 10) {
_local2 = new CastleFighter(this, "bad_flagger", 2050, m_heightField[m_heightField.length - 1], m_clip.object_layer, _local3, 300);
} else {
_local2 = new AirFighter(this, "bad_dragon_scout", 2050, m_heightField[m_heightField.length - 1], m_clip.object_layer, _local3, 300);
addToAirUnits(_local2);
}
_local2.m_clip.lvl = _local3;
_local2.setVx(-0.5);
_local2.m_engagementManager.setAttackedByLimit(2);
_local2.m_engagementManager.setAttackLimit(1);
_local2.setMeleeDamage(10);
_local2.setForward(-1);
_local2.setEnemyCastle(m_goodCastle);
_local2.setFriendCastle(m_badCastle);
_local2.setEnemyList(m_goodTeam);
_local2.setFriendList(m_badTeam);
_local2.m_teamNum = Fighter.BAD;
m_badTeam.push(_local2);
m_gameObjects.push(_local2);
}
function stepReinforcements() {
if ((m_numEnemyReinforcements > 0) && (m_numEnemiesOnScreen < m_maxEnemiesOnScreen)) {
if (((m_timeToAddEnemy = m_timeToAddEnemy - GameApp.m_gSpeed)) < 0) {
addEnemyReinforcements();
m_timeToAddEnemy = 35;
}
}
}
function addEnemyReinforcements() {
m_numEnemyReinforcements--;
m_numEnemiesOnScreen++;
var _local2;
var _local3 = getNextObjectLevel();
if (random(100) < 5) {
_local2 = new BadBlocker(this, "bad_blocker_big", 2050, m_heightField[m_heightField.length - 1], m_clip.object_layer, _local3, 300);
_local2.m_clip.lvl = _local3;
_local2.m_engagementManager.setAttackedByLimit(15);
_local2.m_engagementManager.setAttackLimit(10);
} else {
if (random(2) == 0) {
_local2 = new BadBlocker(this, "bad_blocker", 2050, m_heightField[m_heightField.length - 1], m_clip.object_layer, _local3, 100);
_local2.m_clip.lvl = _local3;
} else {
_local2 = new BadRunner(this, "bad_runner", 2050, m_heightField[m_heightField.length - 1], m_clip.object_layer, _local3, 100);
_local2.m_clip.lvl = _local3;
}
_local2.m_engagementManager.setAttackedByLimit(1);
_local2.m_engagementManager.setAttackLimit(1);
}
m_badTeam.push(_local2);
m_gameObjects.push(_local2);
}
function deleteFromGoodTeam(obj) {
var _local3 = -1;
var _local4 = m_goodTeam.length;
var _local2 = 0;
while (_local2 < _local4) {
if (obj == m_goodTeam[_local2]) {
_local3 = _local2;
break;
}
_local2++;
}
if (_local3 != -1) {
m_numFriendsOnScreen--;
m_goodTeam.splice(_local3, 1);
}
}
function deleteFromBadTeam(obj) {
var _local3 = -1;
var _local4 = m_badTeam.length;
var _local2 = 0;
while (_local2 < _local4) {
if (obj == m_badTeam[_local2]) {
_local3 = _local2;
break;
}
_local2++;
}
if (_local3 != -1) {
m_numEnemiesOnScreen--;
m_badTeam.splice(_local3, 1);
}
}
function addToGood(obj) {
m_goodTeam.push(obj);
m_numFriendsOnScreen++;
}
function addToBad(obj) {
m_badTeam.push(obj);
m_numEnemiesOnScreen++;
}
function addToAirUnits(obj) {
m_airUnits.push(obj);
}
function addToGoodStructures(structure) {
m_goodStructures.push(structure);
}
function addToBadStructures(structure) {
m_badStructures.push(structure);
}
function addToNeutralStructures(structure) {
m_neutralStructures.push(structure);
}
function removeFromGarrisonBuildings(structure) {
var _local3 = -1;
var _local4 = m_garrisonBuildings.length;
var _local2 = 0;
while (_local2 < _local4) {
if (structure == m_garrisonBuildings[_local2]) {
_local3 = _local2;
break;
}
_local2++;
}
if (_local3 != -1) {
m_garrisonBuildings.splice(_local3, 1);
}
}
function removeFromBadStructures(structure) {
var _local3 = -1;
var _local4 = m_badStructures.length;
var _local2 = 0;
while (_local2 < _local4) {
if (structure == m_badStructures[_local2]) {
_local3 = _local2;
break;
}
_local2++;
}
if (_local3 != -1) {
m_badStructures.splice(_local3, 1);
}
}
function removeFromGoodStructures(structure) {
var _local3 = -1;
var _local4 = m_goodStructures.length;
var _local2 = 0;
while (_local2 < _local4) {
if (structure == m_goodStructures[_local2]) {
_local3 = _local2;
break;
}
_local2++;
}
if (_local3 != -1) {
m_goodStructures.splice(_local3, 1);
}
}
function removeFromNeutralStructures(structure) {
var _local3 = -1;
var _local4 = m_neutralStructures.length;
var _local2 = 0;
while (_local2 < _local4) {
if (structure == m_neutralStructures[_local2]) {
_local3 = _local2;
break;
}
_local2++;
}
if (_local3 != -1) {
m_neutralStructures.splice(_local3, 1);
}
}
function removeFromStructures(structure) {
var _local3 = -1;
var _local4 = m_structures.length;
var _local2 = 0;
while (_local2 < _local4) {
if (structure == m_structures[_local2]) {
_local3 = _local2;
break;
}
_local2++;
}
if (_local3 != -1) {
m_structures.splice(_local3, 1);
}
}
function deleteFromGameObjects(obj) {
var _local4 = -1;
var _local5 = m_gameObjects.length;
var _local2 = 0;
while (_local2 < _local5) {
if (obj == m_gameObjects[_local2]) {
_local4 = _local2;
break;
}
_local2++;
}
if (_local4 != -1) {
if ((obj.getClip().lvl != null) && (obj.m_layer == m_objectLayer)) {
if (obj.getClip().lvl <= m_maxObjects) {
m_occupiedArray[obj.getClip().lvl] = false;
} else {
var _local6 = (obj.getClip().lvl - m_maxObjects) - 1;
m_overFlowArray[_local6] = false;
}
}
m_gameObjects.splice(_local4, 1);
}
}
function deleteFromAirUnits(obj) {
var _local3 = -1;
var _local4 = m_airUnits.length;
var _local2 = 0;
while (_local2 < _local4) {
if (obj == m_airUnits[_local2]) {
_local3 = _local2;
break;
}
_local2++;
}
if (_local3 != -1) {
m_airUnits.splice(_local3, 1);
}
}
function victory() {
stopAllSounds();
SoundManager.playSound("Victory.wav");
cleanUpStuff();
level_over = true;
m_levelCountDown = 200;
m_sceneNum++;
m_levelNum++;
m_game.profileManager.m_active.victory(m_levelNum);
m_game.profileManager.m_active.checkScene(m_sceneNum);
m_clip.popup_layer.attachMovie("popup_victorious", "popup_victorious_id_1", 1);
m_game.profileManager.saveData();
}
function gameOver() {
stopAllSounds();
SoundManager.playSound("Defeat.wav");
cleanUpStuff();
m_game.profileManager.m_active.defeat();
level_over = true;
m_levelCountDown = 200;
m_gameOver = true;
m_clip.popup_layer.attachMovie("popup_defeated", "popup_defeated_id_1", 1);
m_game.profileManager.saveData();
}
function cleanUpStuff() {
activateObjects();
}
function distToObj(x1, y1, x2, y2) {
var _local2 = x1 - x2;
var _local1 = y1 - y2;
return(Math.sqrt((_local2 * _local2) + (_local1 * _local1)));
}
function loadTerrain() {
m_bg_lvl = 1;
var _local5 = getNextBGLevel();
var _local2 = m_curLevel.getTerrainString();
var _local3 = m_curLevel.getBgString();
m_terrainClip = m_clip.terrain_layer.attachMovie(_local2, _local2 + "_id_1", 1);
var _local4 = m_clip.bg_layer.attachMovie(_local3, _local3 + "_id_1", _local5);
_local4.cacheAsBitmap = true;
generateHeightField();
}
function loadTerrainFeatures() {
var _local6;
var _local11;
var _local15;
var _local7;
var _local4;
var _local9;
var _local8;
m_fg_lvl = 1;
var _local14 = m_sceneryManager.getSceneryStyle(m_curLevel.getStyleName());
var _local13 = 10;
var _local16 = 5;
_local6 = random(Math.floor(m_levelNum * 0.5)) + 10;
if (_local6 > 20) {
_local6 = 20;
}
_local11 = GameApp.g_width * 0.02;
_local15 = GameApp.g_width * 0.98;
_local7 = (_local15 - _local11) / _local6;
_local7 = _local7 + (_local7 * 0.5);
var _local12 = 0;
while (_local12 < _local6) {
_local9 = _local14.getRandomObject();
_local8 = random(30) + 30;
_local4 = ((_local11 + ((0.5 + _local12) * _local7)) + random(200)) - 100;
var _local5 = getNextBGLevel();
var _local2 = new GameObject(this, _local9, _local4, getElevation(_local4) + 5, m_clip.bg_layer, _local5, 100);
_local2.m_clip.lvl = _local5;
_local2.m_clip._xscale = (_local2.m_clip._yscale = _local8);
if (random(2) == 0) {
_local2.m_clip._xscale = _local2.m_clip._xscale * -1;
}
_local2.m_clip.cacheAsBitmap = true;
_local12++;
}
var _local10 = 0;
while (_local10 < 3) {
_local6 = random(Math.floor(m_levelNum * 0.5)) + 3;
if (_local6 > 20) {
_local6 = 20;
}
_local11 = GameApp.g_width * 0.1;
_local15 = GameApp.g_width * 0.9;
_local7 = (_local15 - _local11) / _local6;
_local7 = _local7 + (_local7 * 0.5);
var _local3 = 0;
while (_local3 < _local6) {
if (random(3) != 0) {
_local9 = _local14.getRandomObject();
_local8 = (random(30) + 30) + (_local10 * 15);
_local4 = ((_local11 + ((0.5 + _local3) * _local7)) + random(200)) - 100;
var _local5 = getNextFGLevel();
var _local2 = new GameObject(this, _local9, _local4, getElevation(_local4) + _local13, m_clip.fg_layer, _local5, 100);
_local2.m_clip.lvl = _local5;
_local2.m_clip._xscale = (_local2.m_clip._yscale = _local8);
if (random(2) == 0) {
_local2.m_clip._xscale = _local2.m_clip._xscale * -1;
}
_local2.m_clip.cacheAsBitmap = true;
m_foregroundObjects.push(_local2);
}
_local3++;
}
_local16 = _local16 + 5;
_local13 = _local13 + _local16;
_local10++;
}
}
function setNumGrunts(num) {
m_numGrunts = num;
}
function getNextFGLevel() {
return(m_fg_lvl++);
}
function getNextBGLevel() {
return(m_bg_lvl++);
}
function getNextObjectLevel() {
var _local2 = 0;
var _local4 = m_occupiedArray.length;
var _local3;
while (m_occupiedArray[lvl_obj] && (_local2 < m_maxObjects)) {
_local2++;
lvl_obj--;
if (lvl_obj <= 0) {
lvl_obj = m_maxObjects;
}
}
if (_local2 >= m_maxObjects) {
_local3 = getOverFlowLevel();
} else {
m_occupiedArray[lvl_obj] = true;
_local3 = lvl_obj;
}
return(_local3);
}
function getOverFlowLevel() {
var _local5 = m_overFlowArray.length;
var _local3 = false;
var _local6;
var _local2;
var _local4;
_local2 = 0;
while ((_local2 < _local5) && (!_local3)) {
if (!m_overFlowArray[_local2]) {
_local3 = true;
_local4 = _local2;
}
_local2++;
}
if (!_local3) {
m_overFlowArray.push(true);
_local6 = m_maxObjects + m_overFlowArray.length;
trace("vacant overflow spot not found.... m_overFlowArray.length: " + m_overFlowArray.length);
} else {
_local6 = (m_maxObjects + _local4) + 1;
m_overFlowArray[_local4] = true;
}
return(_local6);
}
function occupiedArrayInit() {
var _local3 = m_occupiedArray.length;
m_occupiedArray[0] = true;
var _local2 = 1;
while (_local2 < _local3) {
m_occupiedArray[_local2] = false;
_local2++;
}
}
function generateHeightField() {
var _local3;
var _local4;
var _local6;
var _local5;
var _local7;
var _local8;
m_heightField = new Array(m_numSegments + 1);
m_rotationField = new Array(m_numSegments + 1);
m_maxHeightField = new Array(m_numSegments + 1);
var _local2 = 0;
while (_local2 <= m_numSegments) {
if (_local2 == 0) {
_local3 = 2;
} else if (_local2 == m_numSegments) {
_local3 = 1999;
} else {
_local3 = m_segwidth * _local2;
}
_local4 = getHeightAt(_local3);
m_heightField[_local2] = _local4;
m_maxHeightField[_local2] = _local4 - 200;
if (_local2 == 0) {
m_rotationField[_local2] = 0;
} else {
m_rotationField[_local2] = getRotFrom(_local6, _local5, _local3, _local4);
}
_local7 = getNextMarkerLevel();
_local6 = _local3;
_local5 = _local4;
_local2++;
}
}
function getRotFrom(x1, y1, x2, y2) {
var _local2 = x2 - x1;
var _local1 = y2 - y1;
return((Math.atan(_local1 / _local2) * 180) / Math.PI);
}
function getYPos(xmin, ymin, xmax, ymax, xpos) {
var _local1 = (ymax - ymin) / (xmax - xmin);
return((_local1 * (xpos - xmin)) + ymin);
}
function getXint(x1, y1, x2, y2, sx1, sy1, sx2, sy2) {
if (x2 == x1) {
return(undefined);
}
if (sx2 == sx1) {
return(undefined);
}
var _local2 = (y2 - y1) / (x2 - x1);
var _local1 = (sy2 - sy1) / (sx2 - sx1);
if ((_local1 / _local2) == 1) {
return(undefined);
}
var _local5 = ((((((-_local1) * sx1) + sy1) - y1) / _local2) + x1) / (1 - (_local1 / _local2));
return(_local5);
}
function getYint(xint, x1, y1, x2, y2) {
if (x2 == x1) {
return(undefined);
}
if (xint == undefined) {
return(undefined);
}
var _local2 = (y2 - y1) / (x2 - x1);
return((_local2 * (xint - x1)) + y1);
}
function getElevation(xpos) {
var _local2 = Math.floor(xpos / m_segwidth);
var _local3 = _local2 + 1;
var _local7 = m_heightField[_local2];
var _local6 = m_segwidth * _local2;
var _local5 = m_heightField[_local3];
var _local4 = m_segwidth * _local3;
return(getYPos(_local6, _local7, _local4, _local5, xpos));
}
function getMaxElevation(xpos) {
var _local2 = Math.floor(xpos / m_segwidth);
var _local3 = _local2 + 1;
var _local7 = m_maxHeightField[_local2];
var _local6 = m_segwidth * _local2;
var _local5 = m_maxHeightField[_local3];
var _local4 = m_segwidth * _local3;
return(getYPos(_local6, _local7, _local4, _local5, xpos));
}
function getRotationAt(xpos) {
var _local2 = Math.floor(xpos / m_segwidth);
return(m_rotationField[_local2]);
}
function deleteMarkers() {
var _local3 = m_markers.length;
var _local2 = 0;
while (_local2 < _local3) {
m_markers[_local2].unloadMovie();
_local2++;
}
m_markers = new Array();
}
function getNextMarkerLevel() {
if ((m_marker_level++) > 500) {
m_marker_level = 1;
}
return(m_marker_level);
}
function getHeightAt(xpos) {
var _local7 = 0;
var _local5 = 1000;
var _local4 = 0;
var _local2 = 0;
var _local3 = 0;
while (_local3 < m_numIterations) {
_local2 = ((_local5 - _local4) / 2) + _local4;
if (m_terrainClip.hitTest(xpos, _local2, 1)) {
_local5 = _local2;
} else {
_local4 = _local2;
}
_local3++;
}
return(_local4);
}
function getIndex(xval, dx) {
var _local2 = 0;
if (dx > 0) {
_local2 = Math.ceil(xval / m_segwidth);
} else {
_local2 = Math.floor(xval / m_segwidth);
}
if (_local2 > m_numSegments) {
_local2 = m_numSegments;
} else if (_local2 < 0) {
_local2 = 0;
}
return(_local2);
}
function maxOf2(n1, n2) {
if (n1 > n2) {
return(n1);
}
return(n2);
}
function minOf2(n1, n2) {
if (n1 < n2) {
return(n1);
}
return(n2);
}
function getNumEnemyRein() {
return(m_numEnemyReinforcements);
}
function getNumEnemiesOnScreen() {
return(m_numEnemiesOnScreen);
}
function getNumFriendsOnScreen() {
return(m_numFriendsOnScreen);
}
function getNumFriendRein() {
return(m_numFriendReinforcements);
}
function showGameObjects() {
trace("Showing Game Objects: ");
var _local2 = 0;
while (_local2 < m_gameObjects.length) {
trace((("Object[" + _local2) + "] = ") + m_gameObjects[_local2].tst_name);
_local2++;
}
}
function showGoodTeam() {
trace("Showing Good Team: ");
var _local2 = 0;
while (_local2 < m_goodTeam.length) {
trace((("Good[" + _local2) + "] = ") + m_goodTeam[_local2].tst_name);
_local2++;
}
}
function showBadTeam() {
trace("Showing Bad Team: ");
var _local2 = 0;
while (_local2 < m_badTeam.length) {
trace((("Good[" + _local2) + "] = ") + m_badTeam[_local2].tst_name);
_local2++;
}
}
function activateObjects() {
var _local3 = m_activationObjects.length;
var _local2 = 0;
while (_local2 < _local3) {
m_activationObjects[_local2].activate();
_local2++;
}
m_activationObjects = new Array();
}
function addActivationObject(obj) {
m_activationObjects.push(obj);
}
function stepObjectActivation() {
if ((m_activationObjects.length > 0) && (Key.isDown(GameApp.KEY_SPACEBAR))) {
activateObjects();
}
}
function removeActivationObject(obj) {
var _local3 = -1;
var _local4 = m_activationObjects.length;
var _local2 = 0;
while (_local2 < _local4) {
if (obj == m_activationObjects[_local2]) {
_local3 = _local2;
break;
}
_local2++;
}
if (_local3 != -1) {
m_activationObjects.splice(_local3, 1);
} else {
trace("No such activation object!");
}
}
function getUniqueId() {
if ((m_go_id++) > 999999) {
m_go_id = 1;
}
return(m_go_id);
}
function tstChangeShootingMode() {
if ((tst_shootingMode++) > 7) {
tst_shootingMode = -1;
}
m_clip.tst_shooting_mode = Arrow.tstGetType(tst_shootingMode);
}
function updateXPBar() {
var _local2 = m_game.profileManager.m_active.getMaxXPForRank();
var _local3 = (("" + m_game.profileManager.m_active.m_xp) + " / ") + _local2;
m_clip.m_rank = (("rank: " + m_game.profileManager.m_active.m_rank) + ", ") + _local3;
m_clip.xp_bar.bar._width = (m_game.profileManager.m_active.m_xp / _local2) * 100;
}
function refreshGold() {
m_clip.gold = m_game.profileManager.m_active.m_gold;
}
function refreshReinforcements() {
m_clip.friend_reinforcements = m_numFriendReinforcements;
}
function togglePause() {
trace("Pauser");
m_paused = !m_paused;
}
function pauseGame() {
m_paused = true;
}
function unPauseGame() {
m_paused = false;
}
function tstForceVictory() {
if (!level_over) {
victory();
}
}
function tstForceDefeat() {
if (!level_over) {
gameOver();
}
}
function addMessage(msg, xp, yp) {
if (m_popupTextOn) {
addGenericMessage("msg_txt", msg, xp, yp);
}
}
function addDamageMessage(obj, msg, scale) {
if (m_popupTextOn) {
var _local5;
var _local3;
var _local2;
_local5 = obj.xpos;
_local3 = obj.ypos - obj.m_height;
if (obj instanceof Fighter) {
if (Fighter(obj).isGood()) {
_local2 = addGenericMessage("bad_dmg_txt", msg, _local5, _local3);
} else if (Fighter(obj).isBad()) {
_local2 = addGenericMessage("good_dmg_txt", msg, _local5, _local3);
} else {
_local2 = addGenericMessage("msg_txt", msg, _local5, _local3);
}
} else {
_local2 = addGenericMessage("msg_txt", msg, _local5, _local3);
}
_local2.setDebSize(scale);
}
}
function addGenericMessage(msgClip, msg, xp, yp) {
if (m_popupTextOn) {
var _local3 = 50;
var _local6 = 50;
var _local5 = 1;
var _local4 = 1;
var _local2 = m_debrisManager.addDebris(msgClip, _local3, _local6, _local5, _local4);
_local2.setAttributes(0, 0, 0, -1, xp, yp, 0);
_local2.getClip().my_text = msg;
return(_local2);
}
return(null);
}
function getLevelNum() {
return(m_levelNum);
}
function addBounceProjectile(pType, xp, yp, spread, owner, skill) {
var _local3 = getNextObjectLevel();
var _local2 = new BounceArrow(this, pType, xp, yp, m_clip.object_layer, _local3, 100);
var _local6 = (random(spread) - (spread / 2)) * 0.05;
var _local5 = -(random(spread) * 0.1);
_local2.m_clip.lvl = _local3;
_local2.m_clip.cacheAsBitmap = true;
_local2.setVelocity(_local6, _local5);
m_gameObjects.push(_local2);
_local2.setSkill(skill);
_local2.setRank(skill.getRank());
_local2.setNumBounces(3);
_local2.setBounceEnergyMultipliers(0.1, 0.1);
_local2.setOwningObject(owner);
return(_local2);
}
function addGameObject(obj) {
m_gameObjects.push(obj);
}
function addReactiveElement(ele) {
m_reactiveElements.push(ele);
}
function removeFromReactiveElements(ele) {
var _local3 = -1;
var _local4 = m_reactiveElements.length;
var _local2 = 0;
while (_local2 < _local4) {
if (ele == m_reactiveElements[_local2]) {
_local3 = _local2;
break;
}
_local2++;
}
if (_local3 != -1) {
m_reactiveElements.splice(_local3, 1);
}
}
function stepMenus() {
m_gameOptions.step();
}
function displayOptions(menu) {
m_gameOptions = new GameOptions(this, m_clip.menu_layer);
m_gameOptions.gotoMenu(menu);
}
function closeGameOptions() {
m_gameOptions = null;
}
function deltaGoodReinforcements(amt) {
trace("Subtracting Amount: " + amt);
m_numFriendReinforcements = m_numFriendReinforcements + amt;
refreshReinforcements();
}
function getHPUpPercent() {
return(m_g_upHPPercent);
}
function getDmgUpPercent() {
return(m_g_upDmgPercent);
}
function getSpeedUpPercent() {
return(m_g_upSpeedPercent);
}
function getHPUpPercentPerLevel() {
return(m_g_upHPPercentPerLevel);
}
function getDmgUpPercentPerLevel() {
return(m_g_upDmgPercentPerLevel);
}
function getSpeedUpPercentPerLevel() {
return(m_g_upSpeedPercentPerLevel);
}
function initInGameOptions() {
m_shootingMode = m_game.profileManager.m_active.m_shootingMode;
m_shooter.destroy();
initShooter();
m_popupTextOn = m_game.profileManager.m_active.m_popupTextOn;
m_musicOn = m_game.profileManager.m_active.m_musicOn;
SoundManager.setMusicOption(m_musicOn);
m_soundOn = m_game.profileManager.m_active.m_soundOn;
SoundManager.setSoundOption(m_soundOn);
m_bloodAmt = m_game.profileManager.m_active.m_bloodAmt;
DebrisManager.setNumericBloodAmount(m_bloodAmt);
m_detailLevel = m_game.profileManager.m_active.m_detailLevel;
_root._quality = m_detailLevel;
m_difficultyLevel = m_game.profileManager.m_active.m_difficultyLevel;
setGameDifficulty(m_difficultyLevel);
trace("Initializing In-Game Options....");
trace("level manager m_shootingMode = " + m_shootingMode);
trace("level manager m_musicOn = " + m_musicOn);
trace("level manager m_soundOn = " + m_soundOn);
trace("level manager m_bloodAmt = " + m_bloodAmt);
trace("level manager m_detailLevel = " + m_detailLevel);
trace("level manager m_difficultyLevel = " + m_difficultyLevel);
}
function addShot() {
m_shotsFired++;
}
function addGoldEarned(amt) {
m_goldEarned = m_goldEarned + amt;
}
function addGoldSpent(amt) {
m_goldSpent = m_goldSpent + amt;
}
function addBodyShot() {
m_bodyShots++;
}
function addHeadShot() {
m_headShots++;
}
function syncLevelSummaryStats() {
m_game.levelSummary.m_levelNum = m_levelNum - 1;
var _local2 = m_bodyShots + m_headShots;
m_game.levelSummary.setAccuracy(_local2, m_shotsFired);
m_game.levelSummary.setCivility(m_numFriendReinforcements, m_populationGiven);
m_game.levelSummary.setEfficiency(m_goldEarned, m_goldSpent);
m_game.levelSummary.setSalvage(m_headShots, _local2);
m_game.levelSummary.setTargetGold();
m_game.levelSummary.setTargetXP();
}
function setGameDifficulty(diff) {
if (diff == "easy") {
trace("game is now easy");
m_unitSpeedMult = GameVars.g_easyUnitSpeed;
m_unitHPMult = GameVars.g_easyUnitHP;
m_unitDmgMult = GameVars.g_easyUnitDmg;
} else if (diff == "med") {
trace("game is now med");
m_unitSpeedMult = GameVars.g_mediumUnitSpeed;
m_unitHPMult = GameVars.g_mediumUnitHP;
m_unitDmgMult = GameVars.g_mediumUnitDmg;
} else if (diff == "hard") {
trace("game is now hard");
m_unitSpeedMult = GameVars.g_hardUnitSpeed;
m_unitHPMult = GameVars.g_hardUnitHP;
m_unitDmgMult = GameVars.g_hardUnitDmg;
} else if (diff == "insane") {
trace("game is now insane");
m_unitSpeedMult = GameVars.g_insaneUnitSpeed;
m_unitHPMult = GameVars.g_insaneUnitHP;
m_unitDmgMult = GameVars.g_insaneUnitDmg;
}
}
var m_gravity = 0.15 * GameApp.m_gSpeed;
var DEFEND = 0;
var CTF = 1;
var MODE_CASTLE = 5;
var ELIMINATION = 2;
var ATTACK = 3;
var m_leftCastleSpot = 350;
var m_rightCastleSpot = 1800;
var m_badScore = 0;
var m_goodScore = 0;
var m_goodFlagRange = 325;
var m_badFlagRange = 1725;
var DEPTH_STEPPER = 1;
var DEPTH_UILISTENER = 2;
var m_gameOver = false;
var m_levelCountDown = -1;
var m_numSegments = 100;
var m_segwidth = 2000 / LevelManager.prototype.m_numSegments;
var m_marker_level = 1;
var m_numIterations = 12;
var m_maxEnemiesOnScreen = 20;
var m_enemyLagBase = 100;
var m_maxFriendsOnScreen = 10;
var m_go_id = 1;
var m_maxObjects = 200;
var m_occupiedArray = new Array(LevelManager.prototype.m_maxObjects + 1);
var lvl_obj = LevelManager.prototype.m_maxObjects;
var tst_gameTimer = 0;
var tst_catapultCount = 0;
var tst_shootingMode = -1;
var m_shooterLevel = 1;
var m_rotFact = 57.2957795130823;
static var MAX_BOUND_SKILLS = 30;
var m_unitSpeedMult = 1;
var m_unitHPMult = 1;
var m_unitDmgMult = 1;
var m_g_upHPPercentPerLevel = 0.067;
var m_g_upDmgPercentPerLevel = 0.067;
var m_g_upSpeedPercentPerLevel = 0.004;
var m_rankUpFactor = 5;
var m_g_upHPPercent = LevelManager.prototype.m_g_upHPPercentPerLevel * LevelManager.prototype.m_rankUpFactor;
var m_g_upDmgPercent = LevelManager.prototype.m_g_upDmgPercentPerLevel * LevelManager.prototype.m_rankUpFactor;
var m_g_upSpeedPercent = LevelManager.prototype.m_g_upSpeedPercentPerLevel * LevelManager.prototype.m_rankUpFactor;
var tstShooterModes = new Array("auto_aim", "drag_circle", "point_aim", "drag_anywhere");
var tstShooterModeNdx = 0;
}
Symbol 2489 MovieClip [__Packages.GameLevel] Frame 0
class GameLevel
{
var m_terrain, m_bg, m_levelType, m_style, m_timeLimit, m_numGrunts;
function GameLevel (terrain, bg, ltype, style) {
m_terrain = terrain;
m_bg = bg;
m_levelType = ltype;
m_style = style;
}
function getStyleName() {
return(m_style);
}
function setTimeLimit(num) {
m_timeLimit = num;
}
function setNumGrunts(num) {
m_numGrunts = num;
}
function getLevelType() {
return(m_levelType);
}
function getTerrainString() {
return(m_terrain);
}
function getBgString() {
return(m_bg);
}
}
Symbol 2490 MovieClip [__Packages.GameObject] Frame 0
class GameObject
{
var m_levelManager, xpos, ypos, rotation, m_width, m_height, vx, vy, m_hp, m_max_hp, m_layer, m_immunities, m_clipName, m_clip, m_radius, m_effectsManager, m_stickies, m_miniIcon, m_multLighting, m_multFire, m_multIce, m_multBlunt, m_multSlice, m_multPierce, m_multFlak, m_multPoison, m_canGetHit, m_lvl, tst_name, m_type, m_skill;
function GameObject (levelManager, clip, par_x, par_y, layer, lvl, par_hp) {
m_levelManager = levelManager;
xpos = par_x;
ypos = par_y;
rotation = 0;
m_width = 0;
m_height = 0;
vx = 0;
vy = 0;
m_hp = par_hp;
m_max_hp = par_hp;
m_layer = layer;
m_immunities = "";
m_clipName = clip;
m_clip = m_layer.attachMovie(clip, (clip + "_id_") + m_levelManager.getUniqueId(), lvl);
if (m_clip.hitbox != null) {
m_width = m_clip.hitbox._width;
m_height = m_clip.hitbox._height;
}
m_radius = m_levelManager.maxOf2(m_clip._width, m_clip._height) / 2;
updateClip();
m_clip.anim.gotoAndStop(1);
m_effectsManager = new EffectsManager(this);
m_stickies = new Array();
m_miniIcon = "default_green_spot";
m_multLighting = 1;
m_multFire = 1;
m_multIce = 1;
m_multBlunt = 1;
m_multSlice = 1;
m_multPierce = 1;
m_multFlak = 1;
m_multPoison = 1;
m_canGetHit = true;
m_lvl = lvl;
tst_name = (("" + clip) + "_") + (tst_count++);
}
function getImmunities() {
return(m_immunities);
}
function setImmunities(im) {
m_immunities = im;
}
function getType() {
return(m_type);
}
function addImmunity(imm) {
m_immunities = m_immunities + (" " + imm);
}
function setSpeedFactor(num) {
m_speedFactor = num;
}
function getRadius() {
return(m_radius);
}
function setRadius(radius) {
m_radius = radius;
}
function step() {
}
function injured() {
return((m_hp < m_max_hp) && (m_hp > 0));
}
function hasHP() {
return(m_hp > 0);
}
function getHP() {
return(m_hp);
}
function getMaxHP() {
return(m_max_hp);
}
function takeDamage(amt, playSound) {
m_hp = m_hp - amt;
if (m_hp < 0) {
m_hp = 0;
}
}
function getClip() {
return(m_clip);
}
function updateClip() {
m_clip._x = xpos;
m_clip._y = ypos;
m_clip._rotation = rotation;
}
function isDead() {
return(m_hp <= 0);
}
function isPoisoned() {
var _local4 = m_effectsManager.getEffects();
var _local3;
var _local5 = _local4.length;
var _local2 = 0;
while (_local2 < _local5) {
_local3 = _local4[_local2];
if (_local3 instanceof PoisonEffect) {
return(true);
}
_local2++;
}
return(false);
}
function addIndicator(clipName, lvl) {
var _local2;
_local2 = m_clip.attachMovie(clipName, (clipName + "_id_") + getUniqueNum(), lvl);
_local2.lvl = lvl;
_local2._y = lvl * 15;
return(_local2);
}
function getUniqueNum() {
if ((m_id_num++) > 1000) {
m_id_num = 1;
}
return(m_id_num);
}
function showStats() {
trace("\n\n\n\nShowing stats");
trace("Effects:");
var _local3 = m_effectsManager.getEffects();
var _local2 = 0;
while (_local2 < _local3.length) {
trace((("effect[" + _local2) + "] = ") + _local3[_local2].getType());
_local2++;
}
m_effectsManager.showOccupiedArray();
trace("immunities: " + m_immunities);
trace("hp: " + m_hp);
trace("max hp: " + m_max_hp);
trace("End Showing stats\n\n\n\n");
}
function destroy() {
m_levelManager.deleteFromGameObjects(this);
m_clip.unloadMovie();
cleanup();
}
function projectileStickInObject(objectName, proj) {
}
function addSticky(st) {
m_stickies.push(st);
}
function removeSticky(st) {
var _local3 = -1;
var _local2 = 0;
while (_local2 < m_stickies.length) {
if (st == m_stickies[_local2]) {
_local3 = _local2;
break;
}
_local2++;
}
if (_local3 != -1) {
m_stickies.splice(_local3, 1);
}
}
function cleanup() {
var _local2 = 0;
while (_local2 < m_stickies.length) {
m_stickies[_local2].destroy();
m_levelManager.m_stickyManager.removeSticky(_local2);
_local2++;
}
}
function setHP(amt) {
m_hp = (m_max_hp = amt);
}
function getReaction(obj) {
return("destroy");
}
function getMultFire() {
return(m_multFire);
}
function getMultFlak() {
return(m_multFlak);
}
function getMultIce() {
return(m_multIce);
}
function getMultLighting() {
return(m_multLighting);
}
function getMultBlunt() {
return(m_multBlunt);
}
function getMultPierce() {
return(m_multPierce);
}
function getMultSlice() {
return(m_multSlice);
}
function getMultPoison() {
return(m_multPoison);
}
function getMiniIcon() {
return(m_miniIcon);
}
function canGetHit() {
return(m_canGetHit);
}
function setSkill(sk) {
m_skill = sk;
}
function getSkill() {
return(m_skill);
}
function getClipLevel() {
return(m_lvl);
}
var m_id_num = 1;
var DEAD_IMMUNITIES = "fire ice poison fear daze regen impact heal purge convert";
var m_speedFactor = 1;
static var tst_count = 0;
}
Symbol 2491 MovieClip [__Packages.EffectsManager] Frame 0
class EffectsManager
{
var m_owner, m_effects, m_occupiedArray, m_effectsReactor, m_deadEffects;
function EffectsManager (owner) {
m_owner = owner;
m_effects = new Array();
m_occupiedArray = new Array(m_maxEffects);
m_effectsReactor = new EffectsReactor();
occupiedArrayInit();
}
function step() {
var _local3;
m_deadEffects = null;
var _local2 = 0;
while ((_local2 < m_effects.length) && (m_owner.hasHP())) {
_local3 = m_effects[_local2];
_local3.step();
if (_local3.isDead()) {
if (m_deadEffects == null) {
m_deadEffects = new Array();
}
m_deadEffects.push(_local3);
}
_local2++;
}
if (m_deadEffects != null) {
_local2 = 0;
while (_local2 < m_deadEffects.length) {
deleteEffect(m_deadEffects[_local2]);
_local2++;
}
}
}
function getEffects() {
return(m_effects);
}
function getNextObjectLevel() {
var _local2 = 0;
while (m_occupiedArray[lvl_obj] && ((_local2++) < m_occupiedArray.length)) {
if ((lvl_obj--) < 1) {
lvl_obj = m_maxEffects - 1;
}
}
if (_local2 >= m_occupiedArray.length) {
return(-1);
}
m_occupiedArray[lvl_obj] = true;
return(lvl_obj);
}
function occupiedArrayInit() {
var _local2 = 0;
while (_local2 < m_occupiedArray.length) {
m_occupiedArray[_local2] = false;
_local2++;
}
}
function deleteEffect(obj) {
var _local3 = -1;
var _local5 = m_effects.length;
var _local2 = 0;
while (_local2 < _local5) {
if (obj == m_effects[_local2]) {
_local3 = _local2;
break;
}
_local2++;
}
if (_local3 != -1) {
removeClipVisual(obj);
obj.cleanUp();
m_effects.splice(_local3, 1);
} else {
trace("Effect not found: " + obj);
}
}
function removeClipVisual(obj) {
if ((obj.getClip() == null) || (obj.getClip().lvl == null)) {
trace("obj.m_clipName: " + obj.getClipName());
trace("\n\n\n\n\nERROR in EffectsManager........................................................................");
trace("obj.getClip() = " + obj.getClip());
trace("obj.getClip().lvl = " + obj.getClip().lvl);
trace("obj.m_frameCount = " + obj.m_frameCount);
} else {
m_occupiedArray[obj.getClip().lvl] = false;
obj.removeClip();
}
}
function indexOfEffectType(etype) {
var _local3 = false;
var _local4 = -1;
var _local2 = 0;
while ((_local2 < m_effects.length) && (!_local3)) {
_local3 = etype == m_effects[_local2].getType();
if (_local3) {
_local4 = _local2;
}
_local2++;
}
return(_local4);
}
function addEffect(effect) {
var _local6 = m_effectsReactor.getCancelingEffect(effect.getType());
var _local5 = m_effectsReactor.immune(m_owner, effect);
if (!_local5) {
var _local4 = indexOfEffectType(_local6);
if (_local4 != -1) {
deleteEffect(m_effects[_local4]);
} else {
var _local3 = getNextObjectLevel();
if (_local3 != -1) {
m_effects.push(effect);
effect.setClip(m_owner.addIndicator(effect.getClipName(), _local3));
effect.setLevel(_local3);
} else {
trace("No room to add effect");
}
}
}
}
function showOccupiedArray() {
trace("m_occupiedArray: " + m_occupiedArray);
}
var m_maxEffects = 4;
var lvl_obj = EffectsManager.prototype.m_maxEffects - 1;
}
Symbol 2492 MovieClip [__Packages.EffectsReactor] Frame 0
class EffectsReactor
{
function EffectsReactor () {
}
function getCancelingEffect(eff) {
if (eff == "ice") {
return("fire");
}
if (eff == "fire") {
return("ice");
}
if (eff == "poison") {
return("purge");
}
if (eff == "purge") {
return("poison");
}
}
function immune(m_owner, effect) {
var _local2 = m_owner.getImmunities();
var _local3 = effect.getType();
var _local1 = _local2.indexOf(_local3);
return(!((_local1 == -1) || (_local1 == undefined)));
}
}
Symbol 2493 MovieClip [__Packages.Effect] Frame 0
class Effect
{
var m_type, m_target, m_duration, m_tickTime, m_effectsManager, m_clipName, m_coolDown, m_clip, m_lvl;
function Effect (manager, etype, clipName, target, duration, tick) {
m_type = etype;
m_target = target;
m_duration = duration;
m_tickTime = tick;
m_effectsManager = manager;
m_clipName = clipName;
m_coolDown = 0;
}
function step() {
if (m_deleted) {
trace("This was supposed to be deleted: " + m_type);
_root.unloadMovie();
}
if ((m_duration--) > 0) {
if ((m_coolDown--) <= 0) {
m_coolDown = m_tickTime;
performEffect();
if ((!m_target.hasHP()) || (m_target == null)) {
m_duration = 0;
m_deleted = true;
}
}
} else {
m_deleted = true;
}
m_frameCount++;
}
function setClip(clip) {
m_clip = clip;
}
function getClip() {
return(m_clip);
}
function setLevel(num) {
m_lvl = num;
}
function removeClip() {
m_clip.unloadMovie();
}
function getClipName() {
return(m_clipName);
}
function getType() {
return(m_type);
}
function isDead() {
return(m_duration <= 0);
}
function performEffect() {
}
function cleanUp() {
}
function setDuration(amt) {
m_duration = Math.floor(amt);
}
var m_deleted = false;
var m_frameCount = 0;
}
Symbol 2494 MovieClip [__Packages.Skill] Frame 0
class Skill
{
var m_skillName, m_iconName, m_skillRank, m_coolDownTimeMax, m_coolDownTime, m_strobeCount, m_maxStrobeNum, m_xp, m_max_xp, m_maxRank, m_actionBarID, m_passive, m_autoCast, m_levelManager, m_actionButton;
function Skill () {
m_skillName = "arrow";
m_iconName = "skill_icon_arrow";
m_skillRank = 0;
m_coolDownTimeMax = (m_coolDownTime = 60);
m_strobeCount = (m_maxStrobeNum = 33);
m_xp = 0;
m_max_xp = 100;
m_maxRank = 10;
m_actionBarID = -1;
m_passive = false;
m_autoCast = false;
}
function setLevelManager(lm) {
m_levelManager = lm;
}
function setActionButton(ab) {
m_actionButton = ab;
m_actionButton.updateXPBar(m_xp / m_max_xp, m_skillRank / m_maxRank);
}
function resetActionBar() {
m_actionButton.setPercent(0);
m_actionButton.updateXPBar(0, 0);
m_actionButton = null;
}
function performAction(p_vx, p_vy, p_x, p_y) {
if (m_coolDownTime <= 0) {
SoundManager.playSound("swoosh.wav");
var _local3 = m_levelManager.getNextObjectLevel();
var _local2 = new HeroArrow(m_levelManager, "arrow_hero", p_x, p_y, m_levelManager.m_clip.object_layer, _local3, 100);
_local2.setTeam(Fighter.GOOD);
_local2.setAddGoodTargets(true);
_local2.setAddBadTargets(true);
_local2.setOwningObject(m_levelManager.m_hero);
_local2.setStickyArrowType("sticky_arrow_hero");
_local2.setSkill(this);
_local2.setRank(m_skillRank);
_local2.m_clip.lvl = _local3;
_local2.setVelocity(p_vx, p_vy);
m_levelManager.m_gameObjects.push(_local2);
m_coolDownTime = m_coolDownTimeMax;
m_levelManager.addShot();
}
}
function step() {
if (((m_coolDownTime = m_coolDownTime - GameApp.m_gSpeed)) > 0) {
m_actionButton.setPercent((m_coolDownTimeMax - m_coolDownTime) / m_coolDownTimeMax);
} else {
m_coolDownTime = 0;
m_actionButton.setPercent(1);
if (m_autoCast && ((m_strobeCount--) <= 0)) {
m_strobeCount = m_maxStrobeNum;
performAction(0, 0, 0, 0);
}
}
}
function refreshBars() {
m_actionButton.setPercent((m_coolDownTimeMax - m_coolDownTime) / m_coolDownTimeMax);
m_actionButton.updateXPBar(m_xp / m_max_xp, m_skillRank / m_maxRank);
}
function setToActive() {
m_levelManager.m_skillManager.setToActive(this);
}
function getIconName() {
return(m_iconName);
}
function addXP(amt) {
if (m_skillRank < m_maxRank) {
m_xp = m_xp + amt;
if (m_xp > m_max_xp) {
m_xp = m_xp - m_max_xp;
levelUp();
}
m_actionButton.updateXPBar(m_xp / m_max_xp, m_skillRank / m_maxRank);
}
}
function levelUp() {
if (m_skillRank < m_maxRank) {
m_max_xp = m_max_xp + RANK_INCREASE;
m_skillRank++;
SoundManager.playSound("Skill Level Up 1.wav");
trace((((("" + m_skillName) + " raised to ") + m_skillRank) + " at level ") + m_levelManager.getLevelNum());
}
}
function cloneSkill() {
var _local2 = SkillFactory.createSkill(m_skillName);
_local2.m_skillRank = m_skillRank;
_local2.m_maxRank = m_maxRank;
_local2.m_xp = m_xp;
_local2.m_max_xp = m_max_xp;
_local2.m_passive = m_passive;
_local2.m_actionBarID = m_actionBarID;
_local2.m_autoCast = m_autoCast;
return(_local2);
}
static function copySkillData(newSkill, loadedSkill) {
trace("loadedSkill.m_skillName: " + loadedSkill.m_skillName);
trace("loadedSkill.m_skillRank: " + loadedSkill.m_skillRank);
trace("loadedSkill.m_maxRank: " + loadedSkill.m_maxRank);
trace("loadedSkill.m_xp: " + loadedSkill.m_xp);
trace("loadedSkill.m_max_xp: " + loadedSkill.m_max_xp);
trace("loadedSkill.m_actionBarID: " + loadedSkill.m_actionBarID);
newSkill.m_skillRank = loadedSkill.m_skillRank;
newSkill.m_maxRank = loadedSkill.m_maxRank;
newSkill.m_xp = loadedSkill.m_xp;
newSkill.m_max_xp = loadedSkill.m_max_xp;
newSkill.m_passive = loadedSkill.m_passive;
newSkill.m_actionBarID = loadedSkill.m_actionBarID;
newSkill.m_autoCast = loadedSkill.m_autoCast;
}
function getRank() {
return(m_skillRank);
}
function getActionBarID() {
return(m_actionBarID);
}
function setActionBarID(id) {
m_actionBarID = id;
}
function isBound() {
return(m_actionBarID != -1);
}
function toggleAutoCast() {
m_autoCast = !m_autoCast;
}
function autoCastOn() {
return(m_autoCast);
}
var RANK_INCREASE = 100;
}
Symbol 2495 MovieClip [__Packages.ActionButton] Frame 0
class ActionButton
{
var m_percent, m_clip, m_keyCode, m_iconLevel, m_buttonNum, m_skill, m_actionIcon;
function ActionButton (clip, keyCode, bNum) {
m_percent = 1;
m_clip = clip;
m_keyCode = keyCode;
m_iconLevel = 1;
m_buttonNum = bNum;
}
function getButtonNum(num) {
return(m_buttonNum);
}
function setPercent(num) {
m_percent = num;
if (m_percent == 1) {
m_clip.load_bar._x = 0;
m_clip.load_bar.gotoAndStop("ready");
} else {
m_clip.load_bar._x = (num - 1) * MAX_WIDTH;
m_clip.load_bar.gotoAndStop("loading");
}
}
function updateXPBar(xp, rp) {
if (rp >= 1) {
m_clip.rank_bar.bar.gotoAndStop("max");
m_clip.xp_bar.bar.gotoAndStop("max");
m_clip.rank_bar.bar._width = 100;
m_clip.xp_bar.bar._width = 100;
} else {
m_clip.rank_bar.bar.gotoAndStop(1);
m_clip.xp_bar.bar.gotoAndStop(1);
m_clip.rank_bar.bar._width = Math.floor(rp * 100);
m_clip.xp_bar.bar._width = Math.floor(xp * 100);
}
}
function setSkill(sk) {
m_skill = sk;
sk.setActionButton(this);
m_actionIcon = m_clip.attachMovie(m_skill.getIconName(), (m_skill.getIconName() + "_id_") + m_iconLevel, m_iconLevel);
initAutoCastButton();
}
function initAutoCastButton() {
if (m_skill instanceof ReinforcementSkill) {
m_clip.auto_caster._visible = true;
refreshAutoCastButton();
} else {
m_clip.auto_caster._visible = false;
}
}
function refreshAutoCastButton() {
if (m_skill.autoCastOn()) {
m_clip.auto_caster.gotoAndStop(1);
} else {
m_clip.auto_caster.gotoAndStop(2);
}
}
function buttonPressed() {
return(Key.isDown(m_keyCode));
}
function step() {
if (Key.isDown(m_keyCode)) {
activateButton();
}
}
function unloadIcon() {
if ((m_iconLevel++) > 1) {
m_iconLevel = 1;
}
m_actionIcon.unloadMovie();
}
function getSkill() {
return(m_skill);
}
function hitButton(xp, yp) {
return(m_clip.button_area.hitTest(xp, yp, 0));
}
function activateButton() {
m_skill.setToActive();
m_skill.m_levelManager.setActionButtonGlow(m_buttonNum);
}
function checkHitAutoCast(xp, yp) {
var _local2 = false;
if (m_skill instanceof ReinforcementSkill) {
if (m_clip.auto_caster.hitTest(xp, yp, 0)) {
_local2 = true;
m_skill.toggleAutoCast();
refreshAutoCastButton();
}
}
return(_local2);
}
var MAX_WIDTH = 94.2;
}
Symbol 2496 MovieClip [__Packages.ReinforcementSkill] Frame 0
class ReinforcementSkill extends Skill
{
var m_skillName, m_skillRank, m_iconName, m_coolDownTimeMax, m_coolDownTime, m_cost, m_squadSize, m_popValue, m_autoCast, m_levelManager, performAction;
function ReinforcementSkill () {
super();
m_skillName = "Generic Reinforcement";
m_skillRank = 0;
m_iconName = "skill_icon_archer";
m_coolDownTimeMax = (m_coolDownTime = 300);
m_cost = 10;
m_squadSize = 1;
m_popValue = 1;
m_autoCast = true;
}
function setToActive() {
if (!m_levelManager.m_goodReinforcementManager.queueIsFull()) {
performAction(0, 0, 0, 0);
}
}
}
Symbol 2497 MovieClip [__Packages.Projectile] Frame 0
class Projectile extends GameObject
{
var m_grav, m_levelManager, m_targetsAcquired, m_timeLife, m_scanTimer, m_hitTimer, m_airHitTimer, m_flightTime, m_rank, m_team, m_aboveMax, m_addGoodTargets, m_addBadTargets, updateClip, m_maxElevation, xpos, m_prevAboveMax, ypos, m_owningStructure, vx, vy, prevXpos, prevYpos, midXpos, midYpos, m_targets, m_owningObject, m_clip, m_stickyArrowType, m_impactDamage;
function Projectile (levelManager, clip, par_x, par_y, layer, lvl, par_hp) {
super(levelManager, clip, par_x, par_y, layer, lvl, par_hp);
m_grav = m_levelManager.m_gravity;
m_targetsAcquired = false;
m_timeLife = 0;
m_scanTimer = 0;
m_hitTimer = 0;
m_airHitTimer = 0;
m_flightTime = 0;
m_rank = 0;
m_team = Fighter.NEUTRAL;
m_aboveMax = false;
m_addGoodTargets = false;
m_addBadTargets = false;
}
function step() {
m_flightTime = m_flightTime + GameApp.m_gSpeed;
updateVelocity();
updatePos();
updateRotation();
updateSmoke();
updateClip();
m_maxElevation = m_levelManager.getMaxElevation(xpos);
m_prevAboveMax = m_aboveMax;
m_aboveMax = ypos < m_maxElevation;
if (((((m_hitTimer = m_hitTimer - GameApp.m_gSpeed)) < 0) || (m_prevAboveMax && (!m_aboveMax))) || ((!m_prevAboveMax) && (m_aboveMax))) {
m_hitTimer = 30;
getTargets();
}
testHit();
if (((xpos > 2050) || (xpos < -50)) || (ypos < -1000)) {
destroy();
}
}
function setOwningStructure(owner) {
m_owningStructure = owner;
}
function setVelocity(xvel, yvel) {
if (xvel == null) {
trace("Projectile.setVelocity() xvel is null, reseting to zero");
xvel = 0;
}
if (yvel == null) {
trace("Projectile.setVelocity() yvel is null, reseting to zero");
yvel = 0;
}
vx = xvel;
vy = yvel;
updatePos();
}
function updateVelocity() {
vy = vy + m_grav;
}
function updatePos() {
prevXpos = xpos;
prevYpos = ypos;
xpos = xpos + vx;
ypos = ypos + vy;
midXpos = (prevXpos + xpos) * 0.5;
midYpos = (prevYpos + ypos) * 0.5;
}
function updateRotation() {
}
function updateSmoke() {
}
function testHit() {
var _local2;
var _local4 = m_targets.length;
if (ypos > m_levelManager.getElevation(xpos)) {
destroy();
} else {
var _local3 = 0;
while (_local3 < _local4) {
_local2 = m_targets[_local3];
if (m_levelManager.distToObj(xpos, ypos, _local2.xpos, _local2.ypos) < _local2.getRadius()) {
_local2.takeDamage(1000);
destroy();
}
_local3++;
}
}
}
function getTargets() {
var _local3;
var _local5;
m_targets = new Array();
var _local2;
var _local6 = 500;
if (m_team == Fighter.BAD) {
addGoodStructures(m_targets);
addNeutralStructures(m_targets);
} else if (m_team == Fighter.GOOD) {
addBadStructures(m_targets);
addNeutralStructures(m_targets);
} else {
addAllStructures(m_targets);
}
if (ypos < m_maxElevation) {
_local5 = m_levelManager.m_airUnits.length;
var _local4 = 0;
while (_local4 < _local5) {
_local2 = m_levelManager.m_airUnits[_local4];
if (Fighter(_local2).m_teamNum != m_team) {
if (_local2.canGetHit() && (m_owningObject != _local2)) {
_local3 = m_levelManager.distToObj(xpos, ypos, _local2.xpos, _local2.ypos);
if (_local3 < _local6) {
if ((vx > 0) && (xpos < _local2.xpos)) {
m_targets.push(_local2);
} else if ((vx < 0) && (xpos > _local2.xpos)) {
m_targets.push(_local2);
}
}
}
}
_local4++;
}
} else {
_local5 = m_levelManager.m_goodTeam.length;
var _local4 = 0;
while ((_local4 < _local5) && (m_addGoodTargets)) {
_local2 = m_levelManager.m_goodTeam[_local4];
if (_local2.canGetHit() && (m_owningObject != _local2)) {
_local3 = m_levelManager.distToObj(xpos, ypos, _local2.xpos, _local2.ypos);
if (_local3 < _local6) {
m_targets.push(_local2);
}
}
_local4++;
}
_local5 = m_levelManager.m_badTeam.length;
_local4 = 0;
while ((_local4 < _local5) && (m_addBadTargets)) {
_local2 = m_levelManager.m_badTeam[_local4];
if (_local2.canGetHit() && (m_owningObject != _local2)) {
_local3 = m_levelManager.distToObj(xpos, ypos, _local2.xpos, _local2.ypos);
if (_local3 < _local6) {
m_targets.push(_local2);
}
}
_local4++;
}
}
}
function addBadStructures(m_targets) {
var _local3;
var _local4 = m_levelManager.m_badStructures.length;
var _local2 = 0;
while (_local2 < _local4) {
_local3 = m_levelManager.m_badStructures[_local2];
if (_local3.canGetHit() && (m_owningObject != _local3)) {
m_targets.push(_local3);
}
_local2++;
}
}
function addGoodStructures(m_targets) {
var _local3;
var _local4 = m_levelManager.m_goodStructures.length;
var _local2 = 0;
while (_local2 < _local4) {
_local3 = m_levelManager.m_goodStructures[_local2];
if (_local3.canGetHit() && (m_owningObject != _local3)) {
m_targets.push(_local3);
}
_local2++;
}
}
function addNeutralStructures(m_targets) {
var _local3;
var _local4 = m_levelManager.m_neutralStructures.length;
var _local2 = 0;
while (_local2 < _local4) {
_local3 = m_levelManager.m_neutralStructures[_local2];
if (_local3.canGetHit() && (m_owningObject != _local3)) {
m_targets.push(_local3);
}
_local2++;
}
}
function addAllStructures(m_targets) {
var _local3;
var _local4 = m_levelManager.m_structures.length;
var _local2 = 0;
while (_local2 < _local4) {
_local3 = m_levelManager.m_structures[_local2];
if (_local3.canGetHit() && (m_owningObject != _local3)) {
m_targets.push(_local3);
}
_local2++;
}
}
function destroy() {
m_levelManager.deleteFromGameObjects(this);
m_clip.unloadMovie();
}
function addXPBonus(tempObj) {
if ((tempObj instanceof Fighter) && (Fighter(tempObj).isBad())) {
if (m_flightTime > 300) {
m_flightTime = 300;
}
var _local3 = Math.floor((m_flightTime / 300) * 30);
m_levelManager.m_game.profileManager.m_active.addXP(_local3);
m_levelManager.updateXPBar();
m_levelManager.addGenericMessage("xp_txt", ("" + _local3) + " xp", tempObj.xpos, tempObj.ypos - tempObj.m_clip._height);
}
}
function setRank(amt) {
m_rank = amt;
}
function setTeam(team) {
m_team = team;
if (m_team == Fighter.BAD) {
setAddGoodTargets(true);
setAddBadTargets(false);
} else if (m_team == Fighter.GOOD) {
setAddGoodTargets(false);
setAddBadTargets(true);
} else {
setAddGoodTargets(true);
setAddBadTargets(true);
}
}
function setOwningObject(obj) {
m_owningObject = obj;
}
function setStickyArrowType(aType) {
m_stickyArrowType = aType;
}
function getStickyArrowType() {
return(m_stickyArrowType);
}
function setAddGoodTargets(addGood) {
m_addGoodTargets = addGood;
}
function setAddBadTargets(addBad) {
m_addBadTargets = addBad;
}
function setImpactDamage(amt) {
m_impactDamage = amt;
}
var m_timeToSmoke = 1;
var m_flare = "flare_fire01";
}
Symbol 2498 MovieClip [__Packages.Fighter] Frame 0
class Fighter extends GameObject
{
var m_meleeDamage, enemies, friends, dead, actionMode, vx, vy, actionDuration, m_type, m_engagementManager, tst_animRateFact, m_rank, m_garrisonBuilding, m_hpUpPercent, m_levelManager, m_hpUpPercentPerLevel, m_hpBase, m_dmgUpPercent, m_dmgUpPercentPerLevel, m_dmgBase, m_speedUpPercent, m_speedUpPercentPerLevel, m_speedBase, m_effectsManager, updateClip, m_forward, m_clip, animFrame, animRate, animEnd, animStartFrame, m_hp, xpos, ypos, engaged, m_immunities, DEAD_IMMUNITIES, tst_name, m_skill, m_max_hp, m_teamNum, setHP, m_canGetHit, rotation;
function Fighter (levelManager, clip, par_x, par_y, layer, lvl, par_hp) {
super(levelManager, clip, par_x, par_y, layer, lvl, par_hp);
m_meleeDamage = 20;
enemies = null;
friends = null;
dead = false;
actionMode = "advance";
vx = 0;
vy = 0;
actionDuration = 0;
m_type = "living";
m_engagementManager = new EngagementManager();
tst_animRateFact = GameApp.m_gSpeed;
m_rank = 0;
m_garrisonBuilding = null;
m_hpUpPercent = m_levelManager.getHPUpPercent();
m_hpUpPercentPerLevel = m_levelManager.getHPUpPercentPerLevel();
m_hpBase = 1;
m_dmgUpPercent = m_levelManager.getDmgUpPercent();
m_dmgUpPercentPerLevel = m_levelManager.getDmgUpPercentPerLevel();
m_dmgBase = 1;
m_speedUpPercent = m_levelManager.getSpeedUpPercent();
m_speedUpPercentPerLevel = m_levelManager.getSpeedUpPercentPerLevel();
m_speedBase = 1;
}
function interruptAction() {
actionDuration = 0;
}
function step() {
m_effectsManager.step();
actionDuration = actionDuration - GameApp.m_gSpeed;
checkGarrison();
doAction();
animate();
updateClip();
if ((!dead) && (actionDuration < 0)) {
getNextAction();
} else if (dead && (actionDuration < 0)) {
destroy();
}
}
function knockedDown() {
return(m_knockedDown);
}
function isDead() {
return(dead);
}
function setForward(num) {
m_forward = num;
}
function setEnemyList(ens) {
enemies = ens;
}
function setFriendList(fri) {
friends = fri;
}
function setVx(par_vx) {
vx = par_vx * GameApp.m_gSpeed;
}
function setDmg(amt) {
m_meleeDamage = amt;
}
function animate() {
m_clip.anim.gotoAndStop(Math.floor(animFrame));
animFrame = animFrame + (animRate * GameApp.m_gSpeed);
if (animFrame > animEnd) {
animFrame = animStartFrame;
}
}
function doAction() {
if (actionMode == "die") {
unitDie();
} else if (actionMode == "rot") {
rot();
} else if (actionMode == "remove") {
destroy();
} else if (actionMode == "advance") {
advance();
} else if (actionMode == "attack") {
attack();
} else {
standStill();
}
}
function getNextAction() {
if (m_hp > 0) {
engageEnemiesInRange();
engageEnemiesAttackingMe();
}
if (m_hp <= 0) {
setActionDie();
} else if (m_engagementManager.getNumAttacking() > 0) {
setActionAttack();
} else {
setActionAdvance();
}
}
function engageEnemiesInRange() {
var _local2;
var _local5 = m_engagementRange * 0.5;
var _local4 = enemies.length;
var _local3 = 0;
while ((_local3 < _local4) && (!m_engagementManager.attackingLimitReached())) {
_local2 = enemies[_local3];
if (((((_local2.hasHP() && (!_local2.isAirUnit())) && (!_local2.m_engagementManager.attackedByLimitReached())) && (m_levelManager.distToObj(xpos, ypos, _local2.xpos, _local2.ypos) < _local5)) && (!m_engagementManager.attacking(_local2))) && (!_local2.garrisoned())) {
m_engagementManager.addToAttacking(_local2);
_local2.m_engagementManager.addToAttackedBy(this);
}
_local3++;
}
}
function engageEnemiesAttackingMe() {
var _local3;
var _local4 = m_engagementManager.getAttackedBy();
var _local5 = _local4.length;
var _local2 = 0;
while ((_local2 < _local5) && (!m_engagementManager.attackingLimitReached())) {
_local3 = _local4[_local2];
if (!m_engagementManager.attacking(_local3)) {
m_engagementManager.addToAttacking(_local3);
_local3.m_engagementManager.addToAttackedBy(this);
}
_local2++;
}
}
function setActionAttack() {
actionMode = "attack";
animRate = 0.25;
actionDuration = 36;
animStartFrame = ATTACK_START;
animFrame = ATTACK_START;
animEnd = ATTACK_END;
}
function setActionAdvance() {
actionMode = "advance";
engaged = false;
animRate = Math.abs(vx * 0.25);
actionDuration = Math.abs(40 / vx);
animStartFrame = ADVANCE_START;
animFrame = ADVANCE_START;
animEnd = ADVANCE_END;
}
function setActionDie() {
m_immunities = DEAD_IMMUNITIES;
actionMode = "die";
animRate = 0.25;
actionDuration = 36;
animStartFrame = DIE_START;
animFrame = DIE_START;
animEnd = DIE_END;
unlinkEngagements();
}
function setActionRot() {
actionMode = "rot";
dead = true;
animRate = 0;
actionDuration = 100;
animStartFrame = DIE_END;
animFrame = DIE_END;
animEnd = DIE_END;
}
function convertToOppositeTeam() {
trace("Should not be using convert function in Fighter class");
_root.unloadMovie();
}
function setActionFear() {
}
function setActionDaze() {
}
function setActionKnockBack() {
}
function setActionFlinch() {
}
function destroy() {
trace("function destroy() in class Fighter not overriden");
_root.unloadMovie();
}
function unlinkEngagements() {
m_engagementManager.removeAllEngagements(this);
}
function standStill() {
}
function engageTarget() {
}
function acquireTarget() {
}
function advance() {
xpos = xpos + vx;
ypos = m_levelManager.getElevation(xpos);
}
function attack() {
if (actionDuration < 0) {
attackEngagementTarget();
}
}
function attackEngagementTarget() {
var _local2 = m_engagementManager.getRandomEnemy();
var _local3 = m_levelManager.distToObj(xpos, ypos, _local2.xpos, _local2.ypos);
if ((_local3 > m_engagementRange) || (_local2.garrisoned())) {
trace("out of range: ");
trace("dist: " + _local3);
trace("m_engagementRange: " + m_engagementRange);
trace((("I'm " + tst_name) + " and I just stopped attacking: ") + _local2.tst_name);
m_engagementManager.unlinkEngagement(_local2, this);
setActionAdvance();
} else {
applyAttack(_local2);
}
}
function applyAttack(obj) {
var _local3 = new ImpactEffect(obj.m_effectsManager, "impact", "indicator_impact", obj, 20, 9999);
_local3.setAmt(m_meleeDamage);
obj.m_effectsManager.addEffect(_local3);
_local3.setImpactType("armor");
faceObj(obj);
if (((m_skill != null) && (obj instanceof Fighter)) && (Fighter(obj).isBad())) {
m_skill.addXP(1);
}
}
function takeDamage(amt, playSound, impactType) {
if (m_hp > 0) {
m_hp = m_hp - amt;
if (m_hp <= 0) {
setActionDie();
m_hp = 0;
m_levelManager.m_soundManager.addRandomHitSound(impactType);
m_levelManager.m_soundManager.addRandomDeathSound(impactType);
} else if ((amt > 0) && (playSound)) {
m_levelManager.m_soundManager.addRandomHitSound(impactType);
}
}
m_clip.hp_bar.setPercent((100 * m_hp) / m_max_hp);
}
function unitDie() {
if (actionDuration < 0) {
setActionRot();
}
}
function rot() {
if (actionDuration < 0) {
dead = true;
}
}
function retreat() {
}
function evade() {
}
function fly() {
}
function block() {
}
function inRange(obj, range) {
return(Math.abs(xpos - obj.xpos) < range);
}
function inFront(obj) {
if (m_forward > 0) {
return(obj.xpos > xpos);
}
return(obj.xpos < xpos);
}
function getClosestInjured() {
var _local2;
var _local6 = null;
var _local5 = 9999;
var _local4;
var _local7 = friends.length;
var _local3 = 0;
while (_local3 < _local7) {
_local2 = friends[_local3];
_local4 = Math.abs(xpos - _local2.xpos);
if ((_local2.injured() && (_local4 < _local5)) && (_local2.getType() == "living")) {
_local5 = _local4;
_local6 = _local2;
}
_local3++;
}
return(_local6);
}
function getClosestLivingFriend() {
var _local2;
var _local6 = null;
var _local5 = 9999;
var _local4;
var _local7 = friends.length;
var _local3 = 0;
while (_local3 < _local7) {
_local2 = friends[_local3];
_local4 = Math.abs(xpos - _local2.xpos);
if (((_local2 != this) && (_local4 < _local5)) && (_local2.getType() == "living")) {
_local5 = _local4;
_local6 = _local2;
}
_local3++;
}
return(_local6);
}
function getClosestFriend() {
var _local3;
var _local6 = null;
var _local5 = 9999;
var _local4;
var _local7 = friends.length;
var _local2 = 0;
while (_local2 < _local7) {
_local3 = friends[_local2];
_local4 = Math.abs(xpos - _local3.xpos);
if ((_local3 != this) && (_local4 < _local5)) {
_local5 = _local4;
_local6 = _local3;
}
_local2++;
}
return(_local6);
}
function getClosestFriendNonPriest() {
var _local2;
var _local6 = null;
var _local5 = 9999;
var _local4;
var _local7 = friends.length;
var _local3 = 0;
while (_local3 < _local7) {
_local2 = friends[_local3];
if (!_local2.isPriest()) {
_local4 = Math.abs(xpos - _local2.xpos);
if ((_local2 != this) && (_local4 < _local5)) {
_local5 = _local4;
_local6 = _local2;
}
}
_local3++;
}
return(_local6);
}
function getFrontLineFriendNonPriest() {
var _local2;
var _local4 = null;
var _local5 = 9999;
var _local6 = 0;
var _local7 = friends.length;
var _local3 = 0;
while (_local3 < _local7) {
_local2 = friends[_local3];
if (!_local2.isPriest()) {
if ((m_teamNum == BAD) && (_local2.xpos < _local5)) {
_local5 = _local2.xpos;
_local4 = _local2;
} else if ((m_teamNum == GOOD) && (_local2.xpos > _local6)) {
_local6 = _local2.xpos;
_local4 = _local2;
}
}
_local3++;
}
return(_local4);
}
function getClosestEnemy() {
var _local3;
var _local6 = null;
var _local5 = 9999;
var _local4;
var _local7 = enemies.length;
var _local2 = 0;
while (_local2 < _local7) {
_local3 = enemies[_local2];
_local4 = Math.abs(xpos - _local3.xpos);
if (_local4 < _local5) {
_local5 = _local4;
_local6 = _local3;
}
_local2++;
}
return(_local6);
}
function getClosestEnemyWithHP() {
var _local3;
var _local6 = null;
var _local5 = 9999;
var _local4;
var _local7 = enemies.length;
var _local2 = 0;
while (_local2 < _local7) {
_local3 = enemies[_local2];
if (_local3.hasHP()) {
_local4 = Math.abs(xpos - _local3.xpos);
if (_local4 < _local5) {
_local5 = _local4;
_local6 = _local3;
}
}
_local2++;
}
return(_local6);
}
function getClosestEnemyStructure() {
var _local2;
var _local6 = null;
var _local5 = 9999;
var _local4;
var _local7 = m_levelManager.m_structures.length;
var _local3 = 0;
while (_local3 < _local7) {
_local2 = m_levelManager.m_structures[_local3];
if ((m_teamNum != _local2.getOccupiedBy()) && (!_local2.occupiedByNobody())) {
_local4 = Math.abs(xpos - _local2.xpos);
if (_local4 < _local5) {
_local5 = _local4;
_local6 = _local2;
}
}
_local3++;
}
return(_local6);
}
function getClosestStructureWithRoom() {
var _local2;
var _local6 = null;
var _local5 = 9999;
var _local4;
var _local7 = m_levelManager.m_structures.length;
var _local3 = 0;
while (_local3 < _local7) {
_local2 = m_levelManager.m_structures[_local3];
if ((_local2.hasHP() && (_local2.hasRoom())) && ((m_teamNum == _local2.getOccupiedBy()) || (_local2.occupiedByNobody()))) {
_local4 = Math.abs(xpos - _local2.xpos);
if (_local4 < _local5) {
_local5 = _local4;
_local6 = _local2;
}
}
_local3++;
}
return(_local6);
}
function getClosestEnemyNotGarrisoned() {
var _local3;
var _local6 = null;
var _local5 = 9999;
var _local4;
var _local7 = enemies.length;
var _local2 = 0;
while (_local2 < _local7) {
_local3 = enemies[_local2];
_local4 = Math.abs(xpos - _local3.xpos);
if ((_local4 < _local5) && (!_local3.garrisoned())) {
_local5 = _local4;
_local6 = _local3;
}
_local2++;
}
return(_local6);
}
function getFurthestUnoccupiedFromHalf() {
var _local2;
var _local4 = null;
var _local5 = 9999;
var _local6 = 0;
var _local7 = m_levelManager.m_structures.length;
var _local3 = 0;
while (_local3 < _local7) {
_local2 = m_levelManager.m_structures[_local3];
if ((_local2.hasHP() && (_local2.hasRoom())) && ((m_teamNum == _local2.getOccupiedBy()) || (_local2.occupiedByNobody()))) {
if (((m_teamNum == BAD) && (_local2.xpos < _local5)) && (_local2.xpos > GameApp.g_halfWidth)) {
_local5 = _local2.xpos;
_local4 = _local2;
} else if (((m_teamNum == GOOD) && (_local2.xpos > _local6)) && (_local2.xpos < GameApp.g_halfWidth)) {
_local6 = _local2.xpos;
_local4 = _local2;
}
}
_local3++;
}
return(_local4);
}
function closestEnemyInRange(range) {
return(inRange(getClosestEnemy(), range));
}
function closestEnemyGroundUnitInRange(range) {
return(inRange(getClosestEnemyGroundUnit(), range));
}
function getClosestEnemyGroundUnit() {
var _local3;
var _local6 = null;
var _local5 = 9999;
var _local4;
var _local7 = enemies.length;
var _local2 = 0;
while (_local2 < _local7) {
_local3 = enemies[_local2];
_local4 = Math.abs(xpos - _local3.xpos);
if ((_local4 < _local5) && (!_local3.isAirUnit())) {
_local5 = _local4;
_local6 = _local3;
}
_local2++;
}
return(_local6);
}
function getClosestEnemyGroundUnitInFront() {
var _local2;
var _local6 = null;
var _local5 = 9999;
var _local4;
var _local7 = enemies.length;
var _local3 = 0;
while (_local3 < _local7) {
_local2 = enemies[_local3];
_local4 = Math.abs(xpos - _local2.xpos);
if (((_local4 < _local5) && (!_local2.isAirUnit())) && (inFront(_local2))) {
_local5 = _local4;
_local6 = _local2;
}
_local3++;
}
return(_local6);
}
function setMeleeDamage(amt) {
m_meleeDamage = amt;
}
function isAirUnit() {
return(m_airUnit);
}
function faceObj(obj) {
if (obj.xpos > xpos) {
m_clip._xscale = 100;
} else {
m_clip._xscale = -100;
}
}
function isBad() {
return(m_teamNum == BAD);
}
function isGood() {
return(m_teamNum == GOOD);
}
function setRankUsingLevel(lvl) {
m_rank = Math.floor(lvl / m_levelManager.m_rankUpFactor);
setBasicStatsByLevel(lvl);
}
function setRank(rank) {
m_rank = rank;
setBasicStatsByRank(rank);
}
function setBasicStatsByRank(rank) {
setVx(m_levelManager.m_unitSpeedMult * Util.calcStat(m_speedBase, m_speedUpPercent, rank));
setHP(Math.ceil(m_levelManager.m_unitHPMult * Util.calcStat(m_hpBase, m_hpUpPercent, rank)));
setDmg(m_levelManager.m_unitDmgMult * Util.calcStat(m_dmgBase, m_dmgUpPercent, rank));
}
function setBasicStatsByLevel(lvl) {
setVx(m_levelManager.m_unitSpeedMult * Util.calcStat(m_speedBase, m_speedUpPercentPerLevel, lvl));
setHP(Math.ceil(m_levelManager.m_unitHPMult * Util.calcStat(m_hpBase, m_hpUpPercentPerLevel, lvl)));
setDmg(m_levelManager.m_unitDmgMult * Util.calcStat(m_dmgBase, m_dmgUpPercentPerLevel, lvl));
}
function getOwningStructure() {
var _local2 = null;
if (garrisoned()) {
_local2 = m_garrisonBuilding;
} else if (m_teamNum == GOOD) {
_local2 = m_levelManager.m_goodCastle;
} else {
_local2 = m_levelManager.m_badCastle;
}
return(_local2);
}
function attemptGarrison() {
var _local3;
var _local4 = m_levelManager.m_garrisonBuildings.length;
var _local2 = 0;
while ((_local2 < _local4) && (m_garrisonBuilding == null)) {
_local3 = m_levelManager.m_garrisonBuildings[_local2];
if ((Math.abs(_local3.xpos - xpos) < m_garrisonDistance) && (_local3.hasHP())) {
attemptGarrisonInto(_local3);
}
_local2++;
}
}
function attemptGarrisonInto(building) {
if (building.hasRoom() && ((m_teamNum == building.getOccupiedBy()) || (building.occupiedByNobody()))) {
m_garrisonBuilding = building;
activateGarrisonLoad(building);
}
}
function activateGarrisonLoad(building) {
m_clip._visible = false;
m_canGetHit = false;
building.addToOccupants(this);
}
function leaveGarrisonedBuilding() {
if (m_garrisonBuilding != null) {
m_clip._visible = true;
m_garrisonBuilding.removeFromOccupants(this);
m_garrisonBuilding = null;
m_canGetHit = true;
}
}
function garrisoned() {
return(m_garrisonBuilding != null);
}
function getGarrisonedBuilding() {
return(m_garrisonBuilding);
}
function checkGarrison() {
if ((m_garrisonBuilding != null) && (!m_garrisonBuilding.hasHP())) {
leaveGarrisonedBuilding();
}
}
function getRank() {
return(m_rank);
}
function getReaction(obj) {
var _local3 = "no_reaction";
if (obj instanceof Projectile) {
if (m_clip.headbox.hitTest(Projectile(obj).xpos, Projectile(obj).ypos, 0) || (m_clip.headbox.hitTest(Projectile(obj).midXpos, Projectile(obj).midYpos, 0))) {
_local3 = "critical";
doCriticalDamageVisual(obj);
} else {
_local3 = "destroy";
doNormalDamageVisual(obj);
}
} else if (m_clip.headbox.hitTest(obj.xpos, obj.ypos, 0)) {
_local3 = "critical";
} else {
_local3 = "destroy";
}
return(_local3);
}
function projectileStickInObject(objectName, proj) {
var _local2 = m_clip.arrow_guide.attachMovie(objectName, objectName + "_1", 1);
var _local3 = 1;
_local2._x = 0;
_local2._y = proj.ypos - ypos;
if (m_clip._xscale < 0) {
_local3 = -1;
}
_local2._rotation = ((-rotation) + proj.rotation) * _local3;
_local2._xscale = _local2._xscale * _local3;
}
function doNormalDamageVisual(obj) {
m_levelManager.m_debrisManager.bloodSplash(obj.xpos, obj.ypos, DebrisManager.m_bloodAmt);
}
function doCriticalDamageVisual(obj) {
m_levelManager.m_debrisManager.bloodSplash(obj.xpos, obj.ypos, DebrisManager.m_bloodAmt * 2);
}
function isPriest() {
return(m_priest);
}
var m_garrisonDistance = 20;
var ADVANCE_START = 5;
var ADVANCE_END = 14;
var ATTACK_START = 15;
var ATTACK_END = 24;
var DIE_START = 25;
var DIE_END = 34;
static var BAD = 1;
static var GOOD = 2;
static var NEUTRAL = 3;
var m_knockedDown = false;
var m_airUnit = false;
var m_priest = false;
var m_engagementRange = 45;
}
Symbol 2499 MovieClip [__Packages.EngagementManager] Frame 0
class EngagementManager
{
var m_attacking, m_attackedBy, m_attackLimit, m_attackedByLimit;
function EngagementManager () {
m_attacking = new Array();
m_attackedBy = new Array();
m_attackLimit = 3;
m_attackedByLimit = 5;
}
function getAttackedBy() {
return(m_attackedBy);
}
function getAttacking() {
return(m_attacking);
}
function attackingLimitReached() {
return(m_attacking.length >= m_attackLimit);
}
function attackedByLimitReached() {
return(m_attackedBy.length >= m_attackedByLimit);
}
function setAttackLimit(num) {
m_attackLimit = num;
}
function setAttackedByLimit(num) {
m_attackedByLimit = num;
}
function getAttackLimit() {
return(m_attackLimit);
}
function getAttackedByLimit() {
return(m_attackedByLimit);
}
function addToAttacking(unit) {
if (attacking(unit)) {
trace("Already Attacking this unit");
}
m_attacking.push(unit);
}
function addToAttackedBy(unit) {
if (attackedBy(unit)) {
trace("Already being attacked by this unit");
_root.unloadMovie();
}
m_attackedBy.push(unit);
}
function removeFromAttacking(unit) {
var _local3 = -1;
var _local2 = 0;
while (_local2 < m_attacking.length) {
if (unit == m_attacking[_local2]) {
_local3 = _local2;
break;
}
_local2++;
}
if (_local3 != -1) {
m_attacking.splice(_local3, 1);
}
}
function removeFromAttackedBy(unit) {
var _local3 = -1;
var _local2 = 0;
while (_local2 < m_attackedBy.length) {
if (unit == m_attackedBy[_local2]) {
_local3 = _local2;
break;
}
_local2++;
}
if (_local3 != -1) {
m_attackedBy.splice(_local3, 1);
}
}
function attacking(unit) {
var _local4 = -1;
var _local3;
var _local2 = 0;
while (_local2 < m_attacking.length) {
_local3 = m_attacking[_local2];
if (unit == _local3) {
_local4 = _local2;
break;
}
_local2++;
}
return(_local4 != -1);
}
function attackedBy(unit) {
var _local4 = -1;
var _local3;
var _local2 = 0;
while (_local2 < m_attackedBy.length) {
_local3 = m_attackedBy[_local2];
if (unit == _local3) {
_local4 = _local2;
break;
}
_local2++;
}
return(_local4 != -1);
}
function getNumAttackedBy() {
return(m_attackedBy.length);
}
function getNumAttacking() {
return(m_attacking.length);
}
function removeAllEngagements(me) {
var _local2 = 0;
while (_local2 < m_attackedBy.length) {
m_attackedBy[_local2].m_engagementManager.removeFromAttacking(me);
m_attackedBy[_local2].interruptAction();
_local2++;
}
_local2 = 0;
while (_local2 < m_attacking.length) {
m_attacking[_local2].m_engagementManager.removeFromAttackedBy(me);
_local2++;
}
m_attacking = new Array();
m_attackedBy = new Array();
}
function unlinkEngagement(myTarget, me) {
removeFromAttacking(myTarget);
myTarget.m_engagementManager.removeFromAttackedBy(me);
}
function getRandomEnemy() {
return(m_attacking[random(m_attacking.length)]);
}
function showAttacking() {
trace("Attacking list: ");
var _local2 = 0;
while (_local2 < m_attacking.length) {
trace("Attacking: " + Fighter(m_attacking[_local2]).tst_name);
_local2++;
}
trace("End attacking list\n\n");
}
function showAttackedBy() {
trace("Attacked by list: ");
var _local2 = 0;
while (_local2 < m_attackedBy.length) {
trace("Attacked by: " + Fighter(m_attackedBy[_local2]).tst_name);
_local2++;
}
trace("End attacked by list\n\n");
}
}
Symbol 2500 MovieClip [__Packages.ImpactEffect] Frame 0
class ImpactEffect extends Effect
{
var m_amt, m_impactType, m_critical, m_target, m_duration;
function ImpactEffect (manager, etype, clipName, target, duration, tick) {
super(manager, etype, clipName, target, duration, tick);
m_amt = 1000;
m_impactType = "blunt";
m_critical = false;
}
function performEffect() {
count++;
if (count > 1) {
trace("Impact Damage being called multiple times");
}
var _local2 = Math.floor(m_amt);
m_target.takeDamage(_local2, true, m_impactType);
m_target.m_levelManager.addDamageMessage(m_target, getImpactMessage(_local2), getScale());
if (m_target instanceof Fighter) {
if (m_target.hasHP() && (!Fighter(m_target).knockedDown())) {
var _local3 = _local2 / m_target.getHP();
if (_local3 > 0.5) {
if (random(2) == 0) {
Fighter(m_target).setActionKnockBack();
} else if (random(2) == 0) {
Fighter(m_target).setActionFlinch();
}
} else if (_local3 > 0.2) {
if (random(2) == 0) {
Fighter(m_target).setActionFlinch();
}
} else if (random(5) == 0) {
Fighter(m_target).setActionFlinch();
}
}
}
m_duration = 0;
}
function setAmt(num) {
m_amt = num;
}
function setImpactType(iType) {
m_impactType = iType;
}
function setCritical(crit) {
m_critical = crit;
}
function isCriticalHit() {
return(m_critical);
}
function getImpactMessage(val) {
if (m_critical) {
return(("" + val) + "!");
}
return("" + val);
}
function getScale() {
if (m_critical) {
return(150);
}
return(100);
}
var count = 0;
}
Symbol 2501 MovieClip [__Packages.Util] Frame 0
class Util
{
function Util () {
}
static function getRandom(low, high) {
var _local1;
if (low > high) {
_local1 = 0;
} else {
_local1 = random(high - low) + low;
}
return(_local1);
}
static function distanceBetween(x1, y1, x2, y2) {
var _local2 = x2 - x1;
var _local1 = y2 - y1;
return(Math.sqrt((_local2 * _local2) + (_local1 * _local1)));
}
static function randomPercent(perc) {
var _local1 = perc * 100;
var _local2 = Math.ceil(_local1 * 100);
return(1 + ((random(_local1) - Math.ceil(_local1 / 2)) / 100));
}
static function getTheta(x1, y1, x2, y2, v, g) {
var _local11 = new Array(2);
var _local8;
var _local10;
var _local9;
var _local14;
var _local13;
_local14 = (Math.pow(v, 4) * Math.pow(x1 - x2, 4)) * ((Math.pow(v, 4) - (((g * g) * (x1 - x2)) * (x1 - x2))) + ((((2 * g) * v) * v) * ((-y1) + y2)));
if (_local14 < 0) {
_local11 = new Array(777, 777);
return(_local11);
}
_local8 = -Math.acos(1 / (-1.4142135623731 * Math.sqrt((1 / ((g * g) * Math.pow(x1 - x2, 4))) * (((((((((((Math.pow(v, 4) * x1) * x1) - (((2 * Math.pow(v, 4)) * x1) * x2)) + ((Math.pow(v, 4) * x2) * x2)) - (((((g * v) * v) * x1) * x1) * y1)) + ((((((2 * g) * v) * v) * x1) * x2) * y1)) - (((((g * v) * v) * x2) * x2) * y1)) + (((((g * v) * v) * x1) * x1) * y2)) - ((((((2 * g) * v) * v) * x1) * x2) * y2)) + (((((g * v) * v) * x2) * x2) * y2)) - Math.sqrt((Math.pow(v, 4) * Math.pow(x1 - x2, 4)) * ((Math.pow(v, 4) - (((g * g) * (x1 - x2)) * (x1 - x2))) + ((((2 * g) * v) * v) * ((-y1) + y2))))))));
_local10 = -Math.acos(1 / (Math.SQRT2 * Math.sqrt((1 / ((g * g) * Math.pow(x1 - x2, 4))) * (((((((((((Math.pow(v, 4) * x1) * x1) - (((2 * Math.pow(v, 4)) * x1) * x2)) + ((Math.pow(v, 4) * x2) * x2)) - (((((g * v) * v) * x1) * x1) * y1)) + ((((((2 * g) * v) * v) * x1) * x2) * y1)) - (((((g * v) * v) * x2) * x2) * y1)) + (((((g * v) * v) * x1) * x1) * y2)) - ((((((2 * g) * v) * v) * x1) * x2) * y2)) + (((((g * v) * v) * x2) * x2) * y2)) - Math.sqrt((Math.pow(v, 4) * Math.pow(x1 - x2, 4)) * ((Math.pow(v, 4) - (((g * g) * (x1 - x2)) * (x1 - x2))) + ((((2 * g) * v) * v) * ((-y1) + y2))))))));
_local9 = -Math.acos(1 / (-1.4142135623731 * Math.sqrt((1 / ((g * g) * Math.pow(x1 - x2, 4))) * (((((((((((Math.pow(v, 4) * x1) * x1) - (((2 * Math.pow(v, 4)) * x1) * x2)) + ((Math.pow(v, 4) * x2) * x2)) - (((((g * v) * v) * x1) * x1) * y1)) + ((((((2 * g) * v) * v) * x1) * x2) * y1)) - (((((g * v) * v) * x2) * x2) * y1)) + (((((g * v) * v) * x1) * x1) * y2)) - ((((((2 * g) * v) * v) * x1) * x2) * y2)) + (((((g * v) * v) * x2) * x2) * y2)) + Math.sqrt((Math.pow(v, 4) * Math.pow(x1 - x2, 4)) * ((Math.pow(v, 4) - (((g * g) * (x1 - x2)) * (x1 - x2))) + ((((2 * g) * v) * v) * ((-y1) + y2))))))));
var _local7 = Math.PI;
if (_local8 < ((-_local7) / 2)) {
_local8 = _local8 + _local7;
}
if (_local10 < ((-_local7) / 2)) {
_local10 = _local10 + _local7;
}
if (_local9 < ((-_local7) / 2)) {
_local9 = _local9 + _local7;
}
if (_local8 > (_local7 / 2)) {
_local8 = _local8 - _local7;
}
if (_local10 > (_local7 / 2)) {
_local10 = _local10 - _local7;
}
if (_local9 > (_local7 / 2)) {
_local9 = _local9 - _local7;
}
var _local12 = (x2 - x1) / (v * Math.cos(_local8));
_local13 = (y1 + ((v * Math.sin(_local8)) * _local12)) + (((0.5 * g) * _local12) * _local12);
if (Math.abs((y2 - _local13) / y2) <= 0.001) {
_local11 = new Array(_local8, _local9);
return(_local11);
}
_local11 = new Array(_local10, _local9);
return(_local11);
}
static function calcStat(base, percent, rank) {
return(base + ((base * percent) * rank));
}
static function calcXP(num) {
return(Math.ceil(xpMult * num));
}
static function calcXP2(num, mult) {
return(Math.ceil(mult * num));
}
static function randomizeList(list) {
var _local3 = new Array();
while (list.length > 0) {
_local3.push(list.splice(random(list.length), 1)[0]);
}
var _local1 = 0;
while (_local1 < _local3.length) {
list.push(_local3[_local1]);
_local1++;
}
}
static var KEY_W = 87;
static var KEY_E = 69;
static var KEY_Q = 81;
static var KEY_A = 65;
static var KEY_S = 83;
static var KEY_D = 68;
static var KEY_X = 67;
static var KEY_C = 88;
static var KEY_I = 73;
static var KEY_J = 74;
static var KEY_K = 75;
static var KEY_L = 76;
static var KEY_O = 79;
static var KEY_U = 85;
static var KEY_SPACEBAR = 32;
static var xpMult = 0.1;
}
Symbol 2502 MovieClip [__Packages.DebrisManager] Frame 0
class DebrisManager
{
var m_layer, m_bgLayer, m_levelManager, m_woodPlanks, m_iceShards, m_flames;
function DebrisManager (layer, bg_layer, lm) {
m_layer = layer;
m_bgLayer = bg_layer;
m_levelManager = lm;
m_woodPlanks = new Array("deb_plank_1", "deb_plank_2", "deb_plank_3", "deb_plank_4");
m_iceShards = new Array("deb_ice_shard_1");
m_flames = new Array("deb_flame_spark_1");
}
function addDebris(clipName, ls, animDur, animRate, animEnd) {
var _local2 = new Debris(clipName, this, ls, animDur, animRate, animEnd);
registerDebris(_local2, clipName, m_layer);
return(_local2);
}
function addDebrisBG(clipName, ls, animDur, animRate, animEnd) {
var _local2 = new Debris(clipName, this, ls, animDur, animRate, animEnd);
registerDebris(_local2, clipName, m_bgLayer);
return(_local2);
}
function addLiquidDrop(clipName, ls, animDur, animRate, animEnd) {
var _local2 = new DebLiquidDrop(clipName, this, ls, animDur, animRate, animEnd);
registerDebris(_local2, clipName, m_layer);
return(_local2);
}
function registerDebris(newDeb, clipName, layer) {
var _local2 = getNextLevel();
var _local4 = m_debrisArray[_local2];
var _local3;
if (_local4 != null) {
_local4.destroy();
}
newDeb.setLevel(_local2);
_local3 = layer.attachMovie(clipName, (clipName + "_id_") + getUniqueName(), _local2);
_local3.gotoAndStop(1);
newDeb.setClip(_local3);
m_debrisArray[_local2] = newDeb;
}
function step() {
var _local3;
var _local2 = 0;
while (_local2 < m_debrisArray.length) {
_local3 = m_debrisArray[_local2];
if (_local3 != null) {
_local3.step();
}
_local2++;
}
}
function getNextLevel() {
m_curLvl++;
if (m_curLvl > MAX_DEBRIS) {
m_curLvl = 1;
}
return(m_curLvl);
}
function getUniqueName() {
return("" + (m_idNum++));
}
function freeDebrisSpot(lvl) {
m_debrisArray[lvl] = null;
}
function addCriticalSrikeMarker(xp, yp) {
var _local2 = addDebris("explosion_pow", 100, 100, 1, 100);
_local2.setDebSizeWidth(50);
_local2.setAttributes(0, 0, 0, 0, xp, yp, random(360));
}
function addBloodSquirt(xp, yp, pvx, pvy) {
var _local2 = addLiquidDrop("blood_drop_fade2", 100, 100, 1, 100);
_local2.setDebSizeWidth(10 * Util.randomPercent(1.5));
_local2.setAttributes(0, m_levelManager.m_gravity, pvx, pvy, xp, yp, 0);
}
function bloodSplash(xp, yp, amt) {
var _local2 = 0;
while (_local2 < amt) {
addBloodSquirt(xp, yp, 0.05 * (random(200) - 100), -0.05 * random(200));
_local2++;
}
}
function woodSplash(xp, yp, amt) {
var _local5;
var _local4;
var _local3 = 0;
while (_local3 < amt) {
_local5 = 0.05 * (random(200) - 100);
_local4 = -0.05 * random(200);
var _local2 = addDebris(getRandomWoodPlank(), 50, 50, 1, 50);
_local2.setDebSizeWidth(10 * Util.randomPercent(0.5));
_local2.setAttributes(0, m_levelManager.m_gravity, _local5, _local4, xp, yp, 0);
_local3++;
}
}
function iceSplash(xp, yp, amt) {
var _local5;
var _local4;
var _local3 = 0;
while (_local3 < amt) {
_local5 = 0.05 * (random(200) - 100);
_local4 = -0.05 * random(200);
var _local2 = addDebris(getRandomIceShard(), 50, 50, 1, 50);
_local2.setDebSizeWidth(10 * Util.randomPercent(0.5));
_local2.setAttributes(0, m_levelManager.m_gravity, _local5, _local4, xp, yp, 0);
_local3++;
}
}
function fireSplash(xp, yp, amt) {
var _local5;
var _local4;
var _local3 = 0;
while (_local3 < amt) {
_local5 = 0.05 * (random(200) - 100);
_local4 = -0.05 * random(200);
var _local2 = addLiquidDrop(getRandomFlame(), 100, 100, 1, 100);
_local2.setDebSizeWidth(10 * Util.randomPercent(0.5));
_local2.setAttributes(0, m_levelManager.m_gravity, _local5, _local4, xp, yp, 0);
_local3++;
}
}
function getRandomWoodPlank() {
return(m_woodPlanks[random(m_woodPlanks.length)]);
}
function getRandomIceShard() {
return(m_iceShards[random(m_iceShards.length)]);
}
function getRandomFlame() {
return(m_flames[random(m_flames.length)]);
}
static function setNumericBloodAmount(amt) {
if (amt == "none") {
m_bloodAmt = NO_BLOOD;
} else if (amt == "low") {
m_bloodAmt = LOW_BLOOD;
} else if (amt == "med") {
m_bloodAmt = MED_BLOOD;
} else if (amt == "high") {
m_bloodAmt = HIGH_BLOOD;
} else if (amt == "insane") {
m_bloodAmt = INSANE_BLOOD;
}
}
var MAX_DEBRIS = 200;
var m_debrisArray = Array(DebrisManager.prototype.MAX_DEBRIS + 1);
var m_curLvl = 1;
var m_idNum = 1;
static var m_bloodAmt = 0;
static var NO_BLOOD = 0;
static var LOW_BLOOD = 1;
static var MED_BLOOD = 2;
static var HIGH_BLOOD = 4;
static var INSANE_BLOOD = 8;
}
Symbol 2503 MovieClip [__Packages.Debris] Frame 0
class Debris
{
var m_debrisManager, m_lifeSpan, m_clipName, m_actionDuration, m_animRate, m_animEnd, vx, vy, gx, gy, xpos, ypos, rotation, m_clip, m_lvl;
function Debris (clipName, dm, ls, animDur, animRate, animEnd) {
m_debrisManager = dm;
m_lifeSpan = ls;
m_clipName = clipName;
m_actionDuration = animDur;
m_animRate = animRate;
m_animEnd = animEnd;
vx = 0;
vy = 0;
gx = 0;
gy = 0;
xpos = 0;
ypos = 0;
rotation = 0;
}
function step() {
if (((m_lifeSpan = m_lifeSpan - GameApp.m_gSpeed)) > 0) {
updatePos();
updateRotation();
updateClip();
animate();
} else {
destroy();
}
}
function animate() {
m_animFrame = m_animFrame + (m_animRate * GameApp.m_gSpeed);
if (m_animFrame > m_animEnd) {
m_animFrame = m_animStartFrame;
}
m_clip.gotoAndStop(Math.floor(m_animFrame));
}
function updatePos() {
vx = vx + gx;
vy = vy + gy;
xpos = xpos + vx;
ypos = ypos + vy;
}
function updateRotation() {
}
function updateClip() {
m_clip._x = xpos;
m_clip._y = ypos;
m_clip._rotation = rotation;
}
function destroy() {
m_clip.unloadMovie();
m_debrisManager.freeDebrisSpot(m_lvl);
}
function getClipName() {
return(m_clipName);
}
function setLevel(lvl) {
m_lvl = lvl;
}
function setAnimStartFrame(num) {
m_animStartFrame = num;
}
function setAttributes(p_gx, p_gy, p_vx, p_vy, p_xpos, p_ypos, p_rotation) {
gx = p_gx;
gy = p_gy;
vx = p_vx;
vy = p_vy;
xpos = p_xpos;
ypos = p_ypos;
rotation = p_rotation;
m_clip._x = xpos;
m_clip._y = ypos;
m_clip._rotation = rotation;
}
function setDebSize(size) {
m_clip._xscale = (m_clip._yscale = size);
}
function setDebSizeWidth(size) {
var _local4 = m_clip._width;
var _local3 = m_clip._height;
var _local2 = _local4 / _local3;
m_clip._width = size;
m_clip._height = size / _local2;
}
function setDebSizeHeight(size) {
var _local4 = m_clip._width;
var _local2 = m_clip._height;
var _local3 = _local2 / _local4;
m_clip._height = size;
m_clip._width = size / _local3;
}
function setWidth(num) {
m_clip._width = num;
}
function setClip(clip) {
m_clip = clip;
}
function getClip() {
return(m_clip);
}
var m_animFrame = 1;
var m_animStartFrame = 1;
}
Symbol 2504 MovieClip [__Packages.DebLiquidDrop] Frame 0
class DebLiquidDrop extends Debris
{
var xpos, m_clip, ypos, rotation, vx, vy;
function DebLiquidDrop (clipName, dm, ls, animDur, animRate, animEnd) {
super(clipName, dm, ls, animDur, animRate, animEnd);
}
function updateClip() {
m_clip._x = xpos;
m_clip._y = ypos;
m_clip.bod.drop._rotation = rotation;
}
function updateRotation() {
var _local2 = Math.atan(vy / vx);
if (vx > 0) {
rotation = _local2 * m_rotFact;
} else {
rotation = (_local2 * m_rotFact) + 180;
}
}
var m_rotFact = 57.2957795130823;
}
Symbol 2505 MovieClip [__Packages.Structure] Frame 0
class Structure extends GameObject
{
var m_immunities, m_lastAttackTimer, m_occupants, m_maxOccupants, m_occupantIndicatorLevel, m_occupiedBy, m_multLighting, m_multFire, m_multIce, m_multBlunt, m_multSlice, m_multPierce, m_effectsManager, m_hp, m_levelManager, m_clip, m_max_hp;
function Structure (levelManager, clip, par_x, par_y, layer, lvl, par_hp) {
super(levelManager, clip, par_x, par_y, layer, lvl, par_hp);
m_immunities = "poison ice heal regen convert fear";
m_lastAttackTimer = 0;
m_occupants = new Array();
m_maxOccupants = 0;
m_occupantIndicatorLevel = 1;
m_occupiedBy = Fighter.NEUTRAL;
m_multLighting = 0.5;
m_multFire = 2;
m_multIce = 0.05;
m_multBlunt = 3;
m_multSlice = 0.5;
m_multPierce = 0.5;
updateDisplay();
}
function setShotOffsets(xo, yo) {
m_xShotOffset = xo;
m_yShotOffset = yo;
}
function setFlagSpots(xo, yo) {
m_xFlagSpot = xo;
m_yFlagSpot = yo;
updateDisplay();
}
function underAttack() {
return(m_lastAttackTimer > 0);
}
function step() {
m_effectsManager.step();
if (m_lastAttackTimer > 0) {
m_lastAttackTimer--;
}
}
function takeDamage(amt) {
m_lastAttackTimer = 50;
m_hp = m_hp - amt;
if (m_hp <= 0) {
m_hp = 0;
m_levelManager.stateChange();
}
m_clip.hp_bar.setPercent((100 * m_hp) / m_max_hp);
}
function addToOccupants(obj) {
if (m_occupants.length == 0) {
m_occupiedBy = obj.m_teamNum;
updateStructureOwnership();
}
m_occupants.push(obj);
updateDisplay();
}
function updateStructureOwnership() {
m_levelManager.removeFromNeutralStructures(this);
if (m_occupiedBy == Fighter.GOOD) {
m_levelManager.addToGoodStructures(this);
} else {
m_levelManager.addToBadStructures(this);
}
}
function removeFromOccupants(obj) {
var _local3 = -1;
var _local2 = 0;
while (_local2 < m_occupants.length) {
if (obj == m_occupants[_local2]) {
_local3 = _local2;
break;
}
_local2++;
}
if (_local3 != -1) {
m_occupants.splice(_local3, 1);
}
if (m_occupants.length == 0) {
if (m_permanentTeam == Fighter.NEUTRAL) {
disownStructure();
}
m_occupiedBy = Fighter.NEUTRAL;
}
if (m_hp > 0) {
updateDisplay();
}
}
function disownStructure() {
if (m_occupiedBy == Fighter.GOOD) {
m_levelManager.removeFromGoodStructures();
} else if (m_occupiedBy == Fighter.BAD) {
m_levelManager.removeFromBadStructures();
}
m_levelManager.addToNeutralStructures(this);
}
function updateDisplay() {
m_occupantIndicatorLevel = 1;
var _local7;
var _local6;
if (m_occupiedBy == Fighter.BAD) {
_local7 = m_clip.m_flagSpot.attachMovie("bad_flag", "bf_id_1", 1);
} else if (m_occupiedBy == Fighter.GOOD) {
_local7 = m_clip.m_flagSpot.attachMovie("good_flag", "gf_id_1", 1);
} else if (m_permanentTeam == Fighter.GOOD) {
_local7 = m_clip.m_flagSpot.attachMovie("good_flag", "bf_id_1", 1);
} else if (m_permanentTeam == Fighter.BAD) {
_local7 = m_clip.m_flagSpot.attachMovie("bad_flag", "gf_id_1", 1);
} else {
_local7 = m_clip.m_flagSpot.attachMovie("neutral_flag", "nf_id_1", 1);
}
_local7._xscale = (_local7._yscale = 75);
var _local5;
var _local2 = 0;
while (_local2 < m_maxOccupants) {
if (_local2 < m_occupants.length) {
_local5 = m_occupants[_local2];
} else {
_local5 = null;
}
_local6 = getNextOccupantIndicatorLevel();
var _local4;
var _local3;
if (_local5 != null) {
_local4 = _local5.getMiniIcon();
} else {
_local4 = "empty_spot";
}
_local3 = m_clip.m_occupantIndicatorSpot.attachMovie(_local4, (_local4 + "_id_") + _local6, _local6);
_local3._x = 15 * _local2;
_local3._width = 12;
_local3._height = 24;
_local2++;
}
}
function setMaxOccupants(num) {
m_maxOccupants = num;
updateDisplay();
}
function getNextOccupantIndicatorLevel() {
return(m_occupantIndicatorLevel++);
}
function setPermanentTeam(team) {
m_permanentTeam = team;
updateDisplay();
}
function getOccupiedBy() {
return(m_occupiedBy);
}
function occupiedByBad() {
return(m_occupiedBy == Fighter.BAD);
}
function occupiedByGood() {
return(m_occupiedBy == Fighter.GOOD);
}
function occupiedByNobody() {
return(m_occupiedBy == Fighter.NEUTRAL);
}
function hasRoom() {
return(m_occupants.length < m_maxOccupants);
}
function getXShotOffset() {
return(m_xShotOffset);
}
function getYShotOffset() {
return(m_yShotOffset);
}
function getPermanentTeam() {
return(m_permanentTeam);
}
function permanentBadTeam() {
return(m_permanentTeam == Fighter.BAD);
}
function getReaction(obj) {
return("destroy");
}
function getRandomRock() {
var _local1 = new Array("proj_rock_01", "proj_rock_02", "proj_rock_03", "proj_rock_04");
return(_local1[random(_local1.length)]);
}
function bounceProjectileExplosion(obj, amt, spread) {
var _local2 = 0;
while (_local2 < amt) {
m_levelManager.addBounceProjectile(getRandomRock(), obj.xpos, obj.ypos, spread, this, obj.getSkill());
_local2++;
}
}
function projectileStickInObject(objectName, proj) {
m_levelManager.m_stickyManager.addSticky(proj.getStickyArrowType(), this, proj.xpos, proj.ypos, proj.rotation);
}
var m_xShotOffset = 0;
var m_yShotOffset = -100;
var m_xFlagSpot = 0;
var m_yFlagSpot = -100;
var m_permanentTeam = Fighter.NEUTRAL;
}
Symbol 2506 MovieClip [__Packages.StandardArrow] Frame 0
class StandardArrow extends Projectile
{
var m_deflectCount, m_critMult, m_critical, prevXpos, xpos, prevYpos, ypos, vx, vy, midXpos, midYpos, rotation, m_levelManager, m_targets, m_stickyArrowType, m_impactDamage, m_skill, destroy, m_flightTime, m_rank;
function StandardArrow (levelManager, clip, par_x, par_y, layer, lvl, par_hp) {
super(levelManager, clip, par_x, par_y, layer, lvl, par_hp);
m_deflectCount = 0;
m_critMult = 2;
m_critical = false;
}
function updatePos() {
prevXpos = xpos;
prevYpos = ypos;
xpos = xpos + vx;
ypos = ypos + vy;
midXpos = (prevXpos + xpos) * 0.5;
midYpos = (prevYpos + ypos) * 0.5;
}
function updateRotation() {
var _local2 = Math.atan(vy / vx);
if (vx > 0) {
rotation = _local2 * m_rotFact;
} else {
rotation = (_local2 * m_rotFact) + 180;
}
}
function testHit() {
var _local2;
var _local4 = false;
var _local7;
var _local5;
var _local6 = m_levelManager.getElevation(xpos);
if (ypos > _local6) {
hitGround();
} else {
_local5 = m_targets.length;
var _local3 = 0;
while ((_local3 < _local5) && (!_local4)) {
_local2 = m_targets[_local3];
if (_local2.hasHP() && (_local2.m_clip.hitbox.hitTest(xpos, ypos, 0) || (_local2.m_clip.hitbox.hitTest(midXpos, midYpos, 0)))) {
doProjectileReaction(_local2);
_local4 = true;
}
_local3++;
}
}
}
function hitGround() {
var _local2 = m_levelManager.m_stickyManager.addStickyToGround(m_stickyArrowType, xpos, ypos, rotation);
_local2.setLifeSpan(200);
doProjectileReaction(null);
}
function doProjectileAction(tempObj) {
if (tempObj != null) {
var _local3 = new ImpactEffect(tempObj.m_effectsManager, "impact", "indicator_impact", tempObj, 10, 9999);
var _local4 = Math.floor(tempObj.getMultPierce() * m_impactDamage);
_local3.setAmt(_local4);
_local3.setCritical(m_critical);
tempObj.m_effectsManager.addEffect(_local3);
tempObj.projectileStickInObject(m_stickyArrowType, this);
if ((m_skill != null) && (random(3) == 0)) {
m_skill.addXP(Util.calcXP(_local4));
}
}
destroy();
}
function doProjectileReaction(tempObj) {
var _local2 = "no_reaction";
if (tempObj != null) {
_local2 = tempObj.getReaction(this);
} else {
_local2 = "destroy";
}
if (_local2 == "destroy") {
doProjectileAction(tempObj);
} else if (_local2 == "critical") {
m_critical = true;
m_impactDamage = m_impactDamage * m_critMult;
m_levelManager.m_debrisManager.addCriticalSrikeMarker(xpos, ypos);
doProjectileAction(tempObj);
} else if (_local2 == "deflect") {
deflect();
}
}
function deflect() {
if ((m_deflectCount++) < 3) {
m_flightTime = -20;
var _local5 = random(360);
var _local3 = (_local5 * Math.PI) / 180;
var _local4 = Math.sqrt((vx * vx) + (vy * vy));
var _local2 = 0.5;
vx = (Math.cos(_local3) * _local4) * _local2;
vy = (Math.sin(_local3) * _local4) * _local2;
} else {
destroy();
}
}
function setRank(rank) {
m_rank = rank;
m_impactDamage = 2 + Math.ceil(m_rank * 2);
}
var m_rotFact = 57.2957795130823;
var m_pi = Math.PI;
var m_shotByHero = false;
}
Symbol 2507 MovieClip [__Packages.Sticky] Frame 0
class Sticky
{
var m_stickyManager, m_lvl, m_stuckTo, m_clipName, m_lifeTime, m_xoffset, m_yoffset, m_clip, tst_id;
function Sticky (sName, sm, lvl, obj) {
m_stickyManager = sm;
m_lvl = lvl;
m_stuckTo = obj;
m_clipName = sName;
m_lifeTime = 100;
var _local2 = sm.getLayer();
m_xoffset = m_stuckTo.xpos;
m_yoffset = m_stuckTo.ypos;
m_clip = _local2.attachMovie(m_clipName, (m_clipName + "_id_") + m_lvl, m_lvl);
tst_id = (m_clipName + "_id_") + m_lvl;
}
function setOffsets(xp, yp) {
m_xoffset = xp;
m_yoffset = yp;
}
function setClipRotation(rot) {
m_clip._rotation = rot;
}
function step() {
if (((m_lifeTime = m_lifeTime - GameApp.m_gSpeed)) > 0) {
m_clip._x = m_stuckTo.xpos + m_xoffset;
m_clip._y = m_stuckTo.ypos + m_yoffset;
} else {
m_stuckTo.removeSticky(this);
destroy();
m_stickyManager.removeSticky(m_lvl);
}
}
function destroy() {
m_clip.unloadMovie();
}
function traceOut() {
return(tst_id);
}
function setLifeSpan(num) {
m_lifeTime = num;
}
}
Symbol 2508 MovieClip [__Packages.StickyManager] Frame 0
class StickyManager
{
var m_stickies, m_lvl, m_layer;
function StickyManager () {
m_stickies = new Array(MAX_STICKIES);
m_lvl = MAX_STICKIES - 1;
occupiedArrayInit();
}
function step() {
var _local2 = 0;
while (_local2 < m_stickies.length) {
m_stickies[_local2].step();
_local2++;
}
}
function getNextStickyLevel() {
var _local2 = 0;
var _local3 = -1;
while ((m_stickies[m_lvl] != null) && ((_local2++) < m_stickies.length)) {
if ((m_lvl--) < 1) {
m_lvl = MAX_STICKIES - 1;
}
}
if (_local2 >= m_stickies.length) {
_local3 = -1;
} else {
_local3 = m_lvl;
}
return(_local3);
}
function occupiedArrayInit() {
var _local2 = 0;
while (_local2 < m_stickies.length) {
m_stickies[_local2] = null;
_local2++;
}
}
function addSticky(sName, obj, xp, yp, rot) {
var _local2 = null;
if (obj.m_stickies.length < 3) {
var _local4 = getNextStickyLevel();
if (_local4 != -1) {
_local2 = new Sticky(sName, this, _local4, obj);
var _local5 = xp - obj.xpos;
var _local6 = yp - obj.ypos;
_local2.setOffsets(_local5, _local6);
_local2.setClipRotation(rot);
m_stickies[_local4] = _local2;
obj.addSticky(_local2);
} else {
_local2 = null;
}
}
return(_local2);
}
function addStickyToGround(sName, xp, yp, rot) {
var _local2 = null;
var _local3 = getNextStickyLevel();
if (_local3 != -1) {
_local2 = new GroundSticky(sName, this, _local3, null);
_local2.setClipRotation(rot);
_local2.setGroundPosition(xp, yp);
m_stickies[_local3] = _local2;
} else {
_local2 = null;
}
return(_local2);
}
function removeSticky(ndx) {
m_stickies[ndx] = null;
}
function traceStickies() {
var _local3 = "";
var _local2 = 0;
while (_local2 < m_stickies.length) {
_local3 = _local3 + (("" + m_stickies[_local2]) + ", ");
_local2++;
}
_local3 = _local3 + "\n\n\n";
_local2 = 0;
while (_local2 < m_stickies.length) {
_local3 = _local3 + (("" + m_stickies[_local2].traceOut()) + ", ");
_local2++;
}
return(_local3);
}
function getLayer() {
return(m_layer);
}
function setLayer(layer) {
m_layer = layer;
}
var MAX_STICKIES = 50;
}
Symbol 2509 MovieClip [__Packages.GroundSticky] Frame 0
class GroundSticky extends Sticky
{
var m_stickyManager, m_lvl, m_clipName, m_stuckTo, m_lifeTime, m_xoffset, m_yoffset, m_clip, tst_id, m_xpos, m_ypos;
function GroundSticky (sName, sm, lvl, obj) {
super();
m_stickyManager = sm;
m_lvl = lvl;
m_clipName = sName;
m_stuckTo = null;
m_lifeTime = 100;
var _local3 = sm.getLayer();
m_xoffset = 0;
m_yoffset = 0;
m_clip = _local3.attachMovie(m_clipName, (m_clipName + "_id_") + m_lvl, m_lvl);
tst_id = (m_clipName + "_id_") + m_lvl;
}
function step() {
if (((m_lifeTime = m_lifeTime - GameApp.m_gSpeed)) > 0) {
} else {
destroy();
m_stickyManager.removeSticky(m_lvl);
}
}
function setGroundPosition(xp, yp) {
m_clip._x = (m_xpos = xp);
m_clip._y = (m_ypos = yp);
}
function destroy() {
m_clip.unloadMovie();
}
function traceOut() {
return(tst_id);
}
}
Symbol 2510 MovieClip [__Packages.HeroArrow] Frame 0
class HeroArrow extends StandardArrow
{
var m_levelManager, m_stickyArrowType, xpos, ypos, rotation, doProjectileReaction, addXPBonus, m_impactDamage, m_critical, m_skill, destroy, m_rank;
function HeroArrow (levelManager, clip, par_x, par_y, layer, lvl, par_hp) {
super(levelManager, clip, par_x, par_y, layer, lvl, par_hp);
}
function hitGround() {
var _local2 = m_levelManager.m_stickyManager.addStickyToGround(m_stickyArrowType, xpos, ypos, rotation);
_local2.setLifeSpan(700);
doProjectileReaction(null);
}
function doProjectileAction(tempObj) {
if (tempObj != null) {
addXPBonus(tempObj);
var _local3 = new ImpactEffect(tempObj.m_effectsManager, "impact", "indicator_impact", tempObj, 10, 9999);
var _local4 = Math.floor((tempObj.getMultPierce() * m_impactDamage) * Util.randomPercent(0.2));
_local3.setAmt(_local4);
_local3.setCritical(m_critical);
tempObj.m_effectsManager.addEffect(_local3);
m_levelManager.m_game.profileManager.addGoldBonus(tempObj, xpos, ypos);
tempObj.projectileStickInObject(m_stickyArrowType, this);
if (m_skill != null) {
m_skill.addXP(Util.calcXP2(_local4, 0.007));
}
if (m_critical) {
m_levelManager.addHeadShot();
} else {
m_levelManager.addBodyShot();
}
}
destroy();
}
function setRank(rank) {
m_rank = rank;
m_impactDamage = 50 + Math.ceil(m_rank * 20);
}
}
Symbol 2511 MovieClip [__Packages.SkillFactory] Frame 0
class SkillFactory
{
function SkillFactory () {
}
static function createSkill(st) {
var _local1;
if (st == "arrow") {
_local1 = new Skill();
} else if (st == "Fire Arrow") {
_local1 = new FireArrowSkill();
} else if (st == "Pierce Arrow") {
_local1 = new PierceArrowSkill();
} else if (st == "Bomb Wave Arrow") {
_local1 = new BombWaveSkill();
} else if (st == "Comet Arrow") {
_local1 = new CometSkill();
} else if (st == "Fire Wave Arrow") {
_local1 = new FireWaveSkill();
} else if (st == "Heal Wave Arrow") {
_local1 = new HealWaveSkill();
} else if (st == "Ice Arrow") {
_local1 = new IceArrowSkill();
} else if (st == "Ice Wave Arrow") {
_local1 = new IceWaveSkill();
} else if (st == "Meteor Arrow") {
_local1 = new MeteorSkill();
} else if (st == "Thunder Arrow") {
_local1 = new ThunderArrowSkill();
} else if (st == "Flak Bomb Arrow") {
_local1 = new FlakBombSkill();
} else if (st == "Bomb Arrow") {
_local1 = new BombArrowSkill();
} else if (st == "Archer") {
_local1 = new ArcherSkill();
} else if (st == "Grunt") {
_local1 = new GruntSkill();
} else if (st == "Tall Grunt") {
_local1 = new TallGruntSkill();
} else if (st == "Mount") {
_local1 = new MountSkill();
} else if (st == "Priest") {
_local1 = new PriestSkill();
} else if (st == "Trebuchet") {
_local1 = new TrebuchetSkill();
} else {
_local1 = new Skill();
}
return(_local1);
}
}
Symbol 2512 MovieClip [__Packages.FireArrowSkill] Frame 0
class FireArrowSkill extends Skill
{
var m_skillName, m_skillRank, m_iconName, m_coolDownTimeMax, m_coolDownTime, m_levelManager;
function FireArrowSkill () {
super();
m_skillName = "Fire Arrow";
m_skillRank = 0;
m_iconName = "skill_icon_arrow_fire";
m_coolDownTimeMax = (m_coolDownTime = 660);
}
function performAction(p_vx, p_vy, p_x, p_y) {
if (m_coolDownTime <= 0) {
var _local3 = m_levelManager.getNextObjectLevel();
var _local2 = new FireArrow(m_levelManager, "arrow_fire", p_x, p_y, m_levelManager.m_clip.object_layer, _local3, 100);
_local2.setTeam(Fighter.GOOD);
_local2.m_clip.lvl = _local3;
_local2.setVelocity(p_vx, p_vy);
_local2.setOwningObject(m_levelManager.m_hero);
m_levelManager.m_gameObjects.push(_local2);
_local2.setOwningStructure(m_levelManager.m_hero.getGarrisonedBuilding());
_local2.setSkill(this);
_local2.setRank(m_skillRank);
m_coolDownTime = m_coolDownTimeMax;
}
}
}
Symbol 2513 MovieClip [__Packages.FireArrow] Frame 0
class FireArrow extends StandardArrow
{
var m_flare, m_impactDamage, m_flareLifeSpan, m_flareAnimDur, m_flareAnimRate, m_flareAnimEnd, m_levelManager, prevXpos, xpos, prevYpos, ypos, rotation, addXPBonus, m_skill, destroy, m_rank;
function FireArrow (levelManager, clip, par_x, par_y, layer, lvl, par_hp) {
super(levelManager, clip, par_x, par_y, layer, lvl, par_hp);
m_flare = "fire_tracer";
m_impactDamage = 35;
m_flareLifeSpan = 25;
m_flareAnimDur = 25;
m_flareAnimRate = 2;
m_flareAnimEnd = 50;
}
function updateSmoke() {
var _local2 = m_levelManager.m_debrisManager.addDebris(m_flare, m_flareLifeSpan, m_flareAnimDur, m_flareAnimRate, m_flareAnimEnd);
var _local4 = xpos - prevXpos;
var _local3 = ypos - prevYpos;
var _local5 = Math.sqrt((_local4 * _local4) + (_local3 * _local3));
_local2.setWidth(_local5);
_local2.setAttributes(0, 0, 0, 0, xpos, ypos, rotation);
}
function doProjectileAction(tempObj) {
var _local6 = m_levelManager.getNextObjectLevel();
var _local3 = new ReFire(m_levelManager, "sticky_fire", xpos, ypos, m_levelManager.m_clip.sticky_layer2, _local6, 100);
_local3.m_clip.lvl = _local6;
m_levelManager.addGameObject(_local3);
m_levelManager.addReactiveElement(_local3);
_local3.setFireDamage(m_impactDamage / 10);
m_levelManager.m_soundManager.addSound("flame_sound.wav");
if (tempObj != null) {
addXPBonus(tempObj);
var _local5 = new ImpactEffect(tempObj.m_effectsManager, "impact", "indicator_impact", tempObj, 10, 9999);
var _local4 = (m_impactDamage * tempObj.getMultFire()) * Util.randomPercent(0.2);
_local5.setAmt(_local4);
tempObj.m_effectsManager.addEffect(_local5);
if (m_skill != null) {
m_skill.addXP(Util.calcXP2(_local4, GameVars.g_fireArrowXPProgression));
}
_local3.setStuckTo(tempObj);
_local3.setOffsets(xpos, ypos, tempObj.xpos, tempObj.ypos);
}
destroy();
}
function setRank(rank) {
m_rank = rank;
m_impactDamage = Math.floor(GameVars.g_fireArrowDamage * (1 + (m_rank / 10)));
}
}
Symbol 2514 MovieClip [__Packages.ReElement] Frame 0
class ReElement extends GameObject
{
var m_stuckTo, m_dieing, m_waitTime, m_actionDuration, m_numTicks, m_maxTicks, m_wasStuckToSomething, m_eType, xpos, m_xoffset, ypos, m_yoffset, updateClip, animRate, animFrame, animStartFrame, animEnd, m_clip, m_targets, m_levelManager, cleanup;
function ReElement (levelManager, clip, par_x, par_y, layer, lvl, par_hp) {
super(levelManager, clip, par_x, par_y, layer, lvl, par_hp);
m_stuckTo = null;
m_dieing = false;
m_waitTime = 33;
m_actionDuration = 0;
m_numTicks = 0;
m_maxTicks = 10;
m_wasStuckToSomething = false;
m_eType = "no_type";
setActionActive();
getTargets();
}
function step() {
animate();
if (!m_dieing) {
if (m_stuckTo != null) {
xpos = m_stuckTo.xpos + m_xoffset;
ypos = m_stuckTo.ypos + m_yoffset;
}
if (((m_actionDuration = m_actionDuration - GameApp.m_gSpeed)) <= 0) {
m_actionDuration = m_waitTime;
performAction();
}
} else if (((m_actionDuration = m_actionDuration - GameApp.m_gSpeed)) <= 0) {
destroy();
}
updateClip();
}
function setActionActive() {
animRate = 1;
animFrame = (animStartFrame = ACTIVE_START);
animEnd = ACTIVE_END;
}
function setActionDie() {
m_dieing = true;
m_actionDuration = m_waitTime;
animFrame = (animStartFrame = DIE_START);
animEnd = DIE_END;
animRate = (animEnd - animStartFrame) / m_actionDuration;
}
function performAction() {
if ((m_wasStuckToSomething && (m_stuckTo.isDead())) || ((m_numTicks++) >= m_maxTicks)) {
setActionDie();
} else {
testHitObjects();
testReactions();
}
}
function animate() {
m_clip.anim.gotoAndStop(Math.floor(animFrame));
animFrame = animFrame + (animRate * GameApp.m_gSpeed);
if (animFrame > animEnd) {
animFrame = animStartFrame;
}
}
function setStuckTo(obj) {
m_stuckTo = obj;
m_wasStuckToSomething = true;
}
function setOffsets(xp1, yp1, xp2, yp2) {
m_xoffset = xp1 - xp2;
m_yoffset = yp1 - yp2;
}
function getTargets() {
m_targets = new Array();
var _local2;
var _local3 = 0;
while (_local3 < m_levelManager.m_goodTeam.length) {
_local2 = m_levelManager.m_goodTeam[_local3];
attemptAddTarget(_local2);
_local3++;
}
_local3 = 0;
while (_local3 < m_levelManager.m_badTeam.length) {
_local2 = m_levelManager.m_badTeam[_local3];
attemptAddTarget(_local2);
_local3++;
}
_local3 = 0;
while (_local3 < m_levelManager.m_structures.length) {
_local2 = m_levelManager.m_structures[_local3];
attemptAddTarget(_local2);
_local3++;
}
}
function attemptAddTarget(tempObj) {
var _local5 = 300;
var _local4;
var _local3;
if (tempObj.canGetHit()) {
_local4 = tempObj.xpos - xpos;
_local3 = Math.abs(_local4);
if (_local3 < _local5) {
m_targets.push(tempObj);
}
}
}
function testHitObjects() {
var _local3;
var _local2 = 0;
while (_local2 < m_targets.length) {
_local3 = m_targets[_local2];
if ((_local3 != m_stuckTo) && (_local3.m_clip.hitbox.hitTest(xpos, ypos))) {
performReaction(_local3);
}
_local2++;
}
if (m_stuckTo != null) {
performReaction(m_stuckTo);
}
}
function performReaction(tempObj) {
var _local1;
_local1 = new ImpactEffect(tempObj.m_effectsManager, "impact", "indicator_impact", tempObj, 10, 9999);
_local1.setAmt(10);
tempObj.m_effectsManager.addEffect(_local1);
}
function testReactions() {
var _local2;
var _local4 = false;
var _local3 = 0;
while ((_local3 < m_levelManager.m_reactiveElements.length) && (!_local4)) {
_local2 = m_levelManager.m_reactiveElements[_local3];
if (((_local2 != this) && (!_local2.isDieing())) && (_local2.m_clip.hitbox.hitTest(m_clip.hitbox))) {
_local4 = performElementReaction(_local2);
}
_local3++;
}
}
function performElementReaction(tempEle) {
var _local2 = false;
if (((m_eType == "fire") && (tempEle.getElementType() == "ice")) || ((m_eType == "ice") && (tempEle.getElementType() == "fire"))) {
tempEle.kill();
kill();
_local2 = true;
}
return(_local2);
}
function kill() {
setActionDie();
}
function isDieing() {
return(m_dieing);
}
function getElementType() {
return(m_eType);
}
function destroy() {
m_levelManager.deleteFromGameObjects(this);
m_levelManager.removeFromReactiveElements(this);
m_clip.unloadMovie();
cleanup();
}
var ACTIVE_START = 1;
var ACTIVE_END = 11;
var DIE_START = 12;
var DIE_END = 20;
}
Symbol 2515 MovieClip [__Packages.ReFire] Frame 0
class ReFire extends ReElement
{
var m_eType, m_fireDmg, tst_name;
function ReFire (levelManager, clip, par_x, par_y, layer, lvl, par_hp) {
super(levelManager, clip, par_x, par_y, layer, lvl, par_hp);
m_eType = "fire";
m_fireDmg = 1;
tst_name = "reactive fire" + (GameObject.tst_count++);
}
function performReaction(tempObj) {
var _local3;
_local3 = new ImpactEffect(tempObj.m_effectsManager, "impact", "indicator_impact", tempObj, 10, 9999);
_local3.setAmt((m_fireDmg * tempObj.getMultFire()) * Util.randomPercent(0.5));
tempObj.m_effectsManager.addEffect(_local3);
}
function setFireDamage(amt) {
m_fireDmg = Math.floor(amt);
}
}
Symbol 2516 MovieClip [__Packages.GameVars] Frame 0
class GameVars
{
function GameVars () {
}
static var g_badArmyIcon = "icon_skull";
static var g_goodArmyIcon = "icon_good_cross";
static var g_goodArmyColor = "white";
static var g_goodArmyColor2 = "white";
static var g_badArmyColor = "white";
static var g_badArmyColor2 = "white";
static var g_goodArmyIconColor1 = "black";
static var g_badArmyIconColor1 = "black";
static var g_holding = false;
static var g_classic_shooting = true;
static var g_autoPilot = false;
static var g_easyUnitSpeed = 0.75;
static var g_easyUnitHP = 0.5;
static var g_easyUnitDmg = 0.5;
static var g_mediumUnitSpeed = 0.9;
static var g_mediumUnitHP = 1;
static var g_mediumUnitDmg = 1;
static var g_hardUnitSpeed = 1.1;
static var g_hardUnitHP = 1.5;
static var g_hardUnitDmg = 1.5;
static var g_insaneUnitSpeed = 2;
static var g_insaneUnitHP = 2.5;
static var g_insaneUnitDmg = 2.5;
static var g_fireArrowDamage = 75;
static var g_fireArrowXPProgression = 0.1;
static var g_iceArrowDamage = 75;
static var g_iceArrowXPProgression = 0.1;
}
Symbol 2517 MovieClip [__Packages.PierceArrowSkill] Frame 0
class PierceArrowSkill extends Skill
{
var m_skillName, m_skillRank, m_iconName, m_coolDownTimeMax, m_coolDownTime, m_levelManager;
function PierceArrowSkill () {
super();
m_skillName = "Pierce Arrow";
m_skillRank = 0;
m_iconName = "skill_icon_arrow_pierce";
m_coolDownTimeMax = (m_coolDownTime = 660);
}
function performAction(p_vx, p_vy, p_x, p_y) {
if (m_coolDownTime <= 0) {
var _local3 = m_levelManager.getNextObjectLevel();
var _local2 = new PierceArrow(m_levelManager, "arrow_pierce", p_x, p_y, m_levelManager.m_clip.object_layer, _local3, 100);
_local2.setTeam(Fighter.GOOD);
_local2.m_clip.lvl = _local3;
_local2.setVelocity(p_vx, p_vy);
_local2.setOwningObject(m_levelManager.m_hero);
m_levelManager.m_gameObjects.push(_local2);
_local2.setOwningStructure(m_levelManager.m_hero.getGarrisonedBuilding());
_local2.setSkill(this);
_local2.setRank(m_skillRank);
m_coolDownTime = m_coolDownTimeMax;
}
}
}
Symbol 2518 MovieClip [__Packages.PierceArrow] Frame 0
class PierceArrow extends StandardArrow
{
var m_momentum, m_impactDamage, m_flare, m_flareLifeSpan, m_flareAnimDur, m_flareAnimRate, m_flareAnimEnd, m_levelManager, prevXpos, xpos, prevYpos, ypos, rotation, m_stickyArrowType, doProjectileReaction, m_skill, destroy, m_rank;
function PierceArrow (levelManager, clip, par_x, par_y, layer, lvl, par_hp) {
super(levelManager, clip, par_x, par_y, layer, lvl, par_hp);
m_momentum = 2;
m_impactDamage = 1;
m_flare = "pierce_tracer";
m_flareLifeSpan = 25;
m_flareAnimDur = 25;
m_flareAnimRate = 2;
m_flareAnimEnd = 50;
}
function updateSmoke() {
var _local2 = m_levelManager.m_debrisManager.addDebris(m_flare, m_flareLifeSpan, m_flareAnimDur, m_flareAnimRate, m_flareAnimEnd);
var _local4 = xpos - prevXpos;
var _local3 = ypos - prevYpos;
var _local5 = Math.sqrt((_local4 * _local4) + (_local3 * _local3));
_local2.setWidth(_local5);
_local2.setAttributes(0, 0, 0, 0, xpos, ypos, rotation);
}
function hitGround() {
var _local2 = m_levelManager.m_stickyManager.addStickyToGround(m_stickyArrowType, xpos, ypos, rotation);
_local2.setLifeSpan(700);
m_momentum = 0;
doProjectileReaction(null);
}
function doProjectileAction(tempObj) {
if (tempObj != null) {
if (tempObj instanceof Structure) {
m_momentum = 0;
} else {
var _local4 = new ImpactEffect(tempObj.m_effectsManager, "impact", "indicator_impact", tempObj, 10, 9999);
var _local3 = Math.floor((tempObj.getMultPierce() * m_impactDamage) * Util.randomPercent(0.5));
_local4.setAmt(_local3);
tempObj.m_effectsManager.addEffect(_local4);
m_momentum--;
if (m_skill != null) {
m_skill.addXP(Util.calcXP(_local3));
}
}
}
if (m_momentum <= 0) {
if (tempObj != null) {
tempObj.projectileStickInObject(m_stickyArrowType, this);
}
destroy();
}
}
function setRank(rank) {
m_rank = rank;
m_impactDamage = 50 + (m_rank * 5);
m_momentum = 99;
}
}
Symbol 2519 MovieClip [__Packages.BombWaveSkill] Frame 0
class BombWaveSkill extends Skill
{
var m_skillName, m_skillRank, m_iconName, m_coolDownTimeMax, m_coolDownTime, m_levelManager;
function BombWaveSkill () {
super();
m_skillName = "Bomb Wave Arrow";
m_skillRank = 0;
m_iconName = "skill_icon_arrow_bomb_wave";
m_coolDownTimeMax = (m_coolDownTime = 1980);
}
function performAction(p_vx, p_vy, p_x, p_y) {
if (m_coolDownTime <= 0) {
var _local3 = m_levelManager.getNextObjectLevel();
var _local2 = new BombWaveArrow(m_levelManager, "arrow_bomb", p_x, p_y, m_levelManager.m_clip.object_layer, _local3, 100);
_local2.setTeam(Fighter.GOOD);
_local2.m_clip.lvl = _local3;
_local2.setVelocity(p_vx, p_vy);
_local2.setOwningObject(m_levelManager.m_hero);
m_levelManager.m_gameObjects.push(_local2);
_local2.setOwningStructure(m_levelManager.m_hero.getGarrisonedBuilding());
_local2.setSkill(this);
_local2.setRank(m_skillRank);
m_coolDownTime = m_coolDownTimeMax;
}
}
}
Symbol 2520 MovieClip [__Packages.BombWaveArrow] Frame 0
class BombWaveArrow extends StandardArrow
{
var m_flare, ypos, m_timeToSmoke, m_levelManager, xpos, rotation, vx, m_skill, m_rank, destroy, m_targets, doProjectileReaction;
function BombWaveArrow (levelManager, clip, par_x, par_y, layer, lvl, par_hp) {
super(levelManager, clip, par_x, par_y, layer, lvl, par_hp);
m_flare = "flare_smoke01";
}
function updateSmoke() {
if ((ypos > -10) && (((m_timeToSmoke = m_timeToSmoke - GameApp.m_gSpeed)) < 0)) {
m_timeToSmoke = 0;
var _local2 = m_levelManager.m_debrisManager.addDebris(m_flare, 20, 100, 5);
_local2.setAttributes(0, 0, 0, 0, xpos, ypos, rotation);
}
}
function doProjectileAction(tempObj) {
var _local2 = new SpBombWave(m_levelManager.m_spellManager);
_local2.setLocation(xpos, ypos);
_local2.setVx(vx * 1.5);
_local2.setSkill(m_skill);
_local2.setRank(m_rank);
destroy();
}
function testHit() {
var _local3;
var _local4 = false;
var _local5;
if (ypos > (m_levelManager.getElevation(xpos) + 10)) {
doProjectileAction(null);
} else {
var _local2 = 0;
while ((_local2 < m_targets.length) && (!_local4)) {
_local3 = m_targets[_local2];
if (_local3.hasHP() && (_local3.m_clip.hitbox.hitTest(xpos, ypos, 0))) {
doProjectileReaction(_local3);
_local4 = true;
}
_local2++;
}
}
}
}
Symbol 2521 MovieClip [__Packages.Spell] Frame 0
class Spell
{
var m_spellManager, m_debrisManager, m_duration, m_xpos, m_ypos, m_skill, m_teamNum, m_rank;
function Spell (sm) {
m_spellManager = sm;
m_debrisManager = m_spellManager.m_levelManager.m_debrisManager;
m_duration = 0;
m_spellManager.addSpell(this);
}
function step() {
trace("Spell Interface not implemented correctly. Function step() in Spell class called.");
_root.unloadMovie();
}
function destroy() {
trace("Spell Interface not implemented correctly. Function destroy() in Spell class called.");
}
function setLocation(px, py) {
m_xpos = px;
m_ypos = py;
}
function setSkill(sk) {
m_skill = sk;
}
function getSkill() {
return(m_skill);
}
function getTeam() {
return(m_teamNum);
}
function setTeam(num) {
m_teamNum = num;
}
function isGoodTeamSpell() {
return(m_teamNum == Fighter.GOOD);
}
function isBadTeamSpell() {
return(m_teamNum == Fighter.BAD);
}
function setRank(num) {
m_rank = num;
}
}
Symbol 2522 MovieClip [__Packages.SpellManager] Frame 0
class SpellManager
{
var m_levelManager, m_spells;
function SpellManager (lm) {
m_levelManager = lm;
m_spells = new Array();
}
function step() {
var _local2 = 0;
while (_local2 < m_spells.length) {
m_spells[_local2].step();
_local2++;
}
}
function addSpell(sp) {
m_spells.push(sp);
}
function removeSpell(sp) {
var _local4 = -1;
var _local3 = 0;
while (_local3 < m_spells.length) {
if (sp == m_spells[_local3]) {
_local4 = _local3;
break;
}
_local3++;
}
if (_local4 != -1) {
m_spells.splice(_local4, 1);
} else {
trace("No such spell!");
_root.unloadMovie();
}
}
}
Symbol 2523 MovieClip [__Packages.SpWave] Frame 0
class SpWave extends Spell
{
var m_maxCharges, m_charges, m_timeToStrike, m_waitTime, m_debrisManager, m_ypos, m_xpos, m_vx, m_spellManager, m_rank, m_skill;
function SpWave (sm) {
super(sm);
m_maxCharges = 10;
m_charges = m_maxCharges;
m_timeToStrike = 0;
m_waitTime = 5;
}
function step() {
if (m_charges < 0) {
destroy();
} else {
doAction();
}
}
function doAction() {
if (((m_timeToStrike = m_timeToStrike - GameApp.m_gSpeed)) < 0) {
m_timeToStrike = m_waitTime;
m_charges--;
var _local2 = m_debrisManager.addDebris("bomb_wave", 40, 40, 1, 40);
m_ypos = m_debrisManager.m_levelManager.getElevation(m_xpos);
_local2.setAttributes(0, 0, 0, 0, m_xpos, m_ypos);
testHitObjects(m_xpos, m_ypos);
m_xpos = m_xpos + m_vx;
}
}
function testHitObjects(xs, ys) {
var _local5 = new Array();
var _local2;
var _local3 = 25;
var _local8 = 75;
var _local6 = 0;
while (_local6 < m_spellManager.m_levelManager.m_airUnits.length) {
_local2 = m_spellManager.m_levelManager.m_airUnits[_local6];
if (_local2.canGetHit()) {
if (((_local2.xpos < (xs + _local3)) && (_local2.xpos > (xs - _local3))) && (_local2.ypos > (ys - _local8))) {
_local5.push(_local2);
}
}
_local6++;
}
_local6 = 0;
while (_local6 < m_spellManager.m_levelManager.m_goodTeam.length) {
_local2 = m_spellManager.m_levelManager.m_goodTeam[_local6];
if (_local2.canGetHit()) {
if (((_local2.xpos < (xs + _local3)) && (_local2.xpos > (xs - _local3))) && (_local2.ypos > (ys - _local8))) {
_local5.push(_local2);
}
}
_local6++;
}
_local6 = 0;
while (_local6 < m_spellManager.m_levelManager.m_badTeam.length) {
_local2 = m_spellManager.m_levelManager.m_badTeam[_local6];
if (_local2.canGetHit()) {
if (((_local2.xpos < (xs + _local3)) && (_local2.xpos > (xs - _local3))) && (_local2.ypos > (ys - _local8))) {
_local5.push(_local2);
}
}
_local6++;
}
_local6 = 0;
while (_local6 < _local5.length) {
_local2 = _local5[_local6];
var _local7 = new ImpactEffect(_local2.m_effectsManager, "impact", "indicator_impact", _local2, 10, 9999);
_local7.setAmt((60 + random(20)) + (m_rank * (10 + random(3))));
_local2.m_effectsManager.addEffect(_local7);
var _local10 = new FireEffect(_local2.m_effectsManager, "fire", "indicator_fire", _local2, 300, 20);
_local2.m_effectsManager.addEffect(_local10);
if (((m_skill != null) && (_local2 instanceof Fighter)) && (Fighter(_local2).isGood())) {
m_skill.addXP(1);
}
_local6++;
}
}
function destroy() {
m_spellManager.removeSpell(this);
}
function setLocation(px, py) {
m_xpos = px;
m_ypos = py;
}
function setVx(pvx) {
m_vx = pvx;
}
}
Symbol 2524 MovieClip [__Packages.FireEffect] Frame 0
class FireEffect extends Effect
{
var m_fireDamage, m_target;
function FireEffect (manager, etype, clipName, target, duration, tick) {
super(manager, etype, clipName, target, duration, tick);
m_fireDamage = 5;
}
function performEffect() {
m_target.takeDamage(Math.floor(m_target.getMultFire() * m_fireDamage), false, "no_sound");
}
function setFireDamage(num) {
m_fireDamage = num;
}
}
Symbol 2525 MovieClip [__Packages.SpBombWave] Frame 0
class SpBombWave extends SpWave
{
var m_maxCharges, m_charges, m_timeToStrike, m_waitTime, m_debrisManager, m_ypos, m_xpos, m_vx, m_spellManager, m_skill, m_rank;
function SpBombWave (sm) {
super(sm);
m_maxCharges = 5;
m_charges = m_maxCharges;
m_timeToStrike = 0;
m_waitTime = 5;
}
function doAction() {
if (((m_timeToStrike = m_timeToStrike - GameApp.m_gSpeed)) < 0) {
m_timeToStrike = m_waitTime;
m_charges--;
var _local2 = m_debrisManager.addDebris("bomb_wave", 40, 40, 1, 40);
m_ypos = m_debrisManager.m_levelManager.getElevation(m_xpos);
_local2.setAttributes(0, 0, 0, 0, m_xpos, m_ypos);
testHitObjects(m_xpos, m_ypos);
m_xpos = m_xpos + m_vx;
SoundManager.playSound("Bomb Explosion.wav");
}
}
function testHitObjects(xs, ys) {
var _local2;
var _local6 = 25;
var _local3;
var _local5;
var _local4;
var _local7 = 0;
while (_local7 < m_spellManager.m_levelManager.m_airUnits.length) {
_local2 = m_spellManager.m_levelManager.m_airUnits[_local7];
if (_local2.canGetHit()) {
_local5 = _local2.xpos - xs;
_local4 = _local2.ypos - ys;
_local3 = Math.sqrt((_local5 * _local5) + (_local4 * _local4));
if (_local3 < _local6) {
doDamage(_local2, _local3, _local6);
}
}
_local7++;
}
_local7 = 0;
while (_local7 < m_spellManager.m_levelManager.m_goodTeam.length) {
_local2 = m_spellManager.m_levelManager.m_goodTeam[_local7];
if (_local2.canGetHit()) {
_local5 = _local2.xpos - xs;
_local4 = _local2.ypos - ys;
_local3 = Math.sqrt((_local5 * _local5) + (_local4 * _local4));
if (_local3 < _local6) {
doDamage(_local2, _local3, _local6);
}
}
_local7++;
}
_local7 = 0;
while (_local7 < m_spellManager.m_levelManager.m_badTeam.length) {
_local2 = m_spellManager.m_levelManager.m_badTeam[_local7];
if (_local2.canGetHit()) {
_local5 = _local2.xpos - xs;
_local4 = _local2.ypos - ys;
_local3 = Math.sqrt((_local5 * _local5) + (_local4 * _local4));
if (_local3 < _local6) {
doDamage(_local2, _local3, _local6);
}
}
_local7++;
}
}
function doDamage(tempObj, dist, radius) {
var _local3 = ((1 - (dist / radius)) * m_maxDamage) * tempObj.getMultBlunt();
var _local4 = new ImpactEffect(tempObj.m_effectsManager, "impact", "indicator_impact", tempObj, 10, 9999);
_local4.setAmt(_local3);
tempObj.m_effectsManager.addEffect(_local4);
if (((m_skill != null) && (tempObj instanceof Fighter)) && (Fighter(tempObj).isBad())) {
m_skill.addXP(Util.calcXP(_local3));
}
}
function setRank(num) {
m_rank = num;
m_charges = m_maxCharges;
m_maxDamage = Math.floor(55 * (1 + (m_rank / 6)));
}
var m_maxDamage = 100;
}
Symbol 2526 MovieClip [__Packages.CometSkill] Frame 0
class CometSkill extends Skill
{
var m_skillName, m_skillRank, m_iconName, m_coolDownTimeMax, m_coolDownTime, m_levelManager;
function CometSkill () {
super();
m_skillName = "Comet Arrow";
m_skillRank = 0;
m_iconName = "skill_icon_arrow_comet";
m_coolDownTimeMax = (m_coolDownTime = 7920);
}
function performAction(p_vx, p_vy, p_x, p_y) {
if (m_coolDownTime <= 0) {
var _local3 = m_levelManager.getNextObjectLevel();
var _local2 = new CometArrow(m_levelManager, "arrow_comet", p_x, p_y, m_levelManager.m_clip.object_layer, _local3, 100);
_local2.setTeam(Fighter.GOOD);
_local2.m_clip.lvl = _local3;
_local2.setVelocity(p_vx, p_vy);
_local2.setOwningObject(m_levelManager.m_hero);
m_levelManager.m_gameObjects.push(_local2);
_local2.setOwningStructure(m_levelManager.m_hero.getGarrisonedBuilding());
_local2.setSkill(this);
_local2.setRank(m_skillRank);
m_coolDownTime = m_coolDownTimeMax;
}
}
}
Symbol 2527 MovieClip [__Packages.CometArrow] Frame 0
class CometArrow extends StandardArrow
{
var m_flare, ypos, m_timeToSmoke, m_levelManager, xpos, rotation, m_skill, m_rank, destroy, doProjectileReaction;
function CometArrow (levelManager, clip, par_x, par_y, layer, lvl, par_hp) {
super(levelManager, clip, par_x, par_y, layer, lvl, par_hp);
m_flare = "flare_ice01";
}
function updateSmoke() {
if ((ypos > -10) && (((m_timeToSmoke = m_timeToSmoke - GameApp.m_gSpeed)) < 0)) {
m_timeToSmoke = 0;
var _local2 = m_levelManager.m_debrisManager.addDebris(m_flare, 20, 100, 5);
_local2.setAttributes(0, 0, 0, 0, xpos, ypos, rotation);
}
}
function doProjectileAction(tempObj) {
var _local4 = m_levelManager.getElevation(xpos);
var _local3 = new SpComets(m_levelManager.m_spellManager);
_local3.setLocation(xpos, ypos);
_local3.setSkill(m_skill);
_local3.setRank(m_rank);
m_levelManager.m_soundManager.addSound("ice_shatter.wav");
var _local6 = m_levelManager.m_debrisManager.addDebris("ice_explosion_pow", 20, 20, 1, 20);
_local6.setAttributes(0, 0, 0, 0, xpos, _local4);
var _local5 = m_levelManager.getNextObjectLevel();
var _local2 = new IceArrow(m_levelManager, "comet", xpos, _local4 - 10, m_levelManager.m_clip.object_layer, _local5, 100);
_local2.m_clip.lvl = _local5;
_local2.m_clip._alpha = 20;
_local2.setVelocity(0.1, -50);
_local2.setSkill(m_skill);
_local2.setRank(m_rank);
m_levelManager.m_gameObjects.push(_local2);
destroy();
}
function testHit() {
var _local3;
var _local2 = false;
var _local4;
if (ypos > m_levelManager.getElevation(xpos)) {
doProjectileReaction(null);
}
}
}
Symbol 2528 MovieClip [__Packages.SpComets] Frame 0
class SpComets extends Spell
{
var dead, m_strikeTime, m_timeToStrike, m_charges, m_spellManager, m_skill, m_rank, m_xpos, m_ypos;
function SpComets (sm) {
super(sm);
dead = false;
m_strikeTime = 50;
m_timeToStrike = m_strikeTime;
m_charges = 1;
}
function step() {
if (!dead) {
if (m_charges <= 0) {
destroy();
dead = true;
} else {
doAction();
}
}
}
function doAction() {
if (((m_timeToStrike = m_timeToStrike - GameApp.m_gSpeed)) < 0) {
m_charges--;
m_timeToStrike = m_strikeTime;
shootAtTarget();
}
}
function addProjectile(p_vx, p_vy) {
var _local3 = m_spellManager.m_levelManager.getNextObjectLevel();
var _local2 = new Comet(m_spellManager.m_levelManager, "comet", m_start_x, m_start_y, m_spellManager.m_levelManager.m_clip.object_layer, _local3, 100);
_local2.m_clip.lvl = _local3;
_local2.setVelocity(p_vx, p_vy);
_local2.setSkill(m_skill);
_local2.setRank(m_rank);
m_spellManager.m_levelManager.m_gameObjects.push(_local2);
}
function destroy() {
m_spellManager.removeSpell(this);
}
function setLocation(px, py) {
m_xpos = px;
m_ypos = py;
}
function shootAtTarget() {
var _local5;
var _local4;
var _local3;
var _local2;
var _local10;
var _local8;
var _local6;
var _local7;
var _local9 = 5;
_local5 = m_xpos - m_start_x;
_local4 = m_ypos - m_start_y;
_local8 = m_spellManager.m_levelManager.m_gravity;
_local3 = _local5 / Math.sqrt(Math.abs((2 * _local4) / _local8));
_local2 = 0;
_local6 = 0;
_local7 = (random(100) - 50) / 150;
_local2 = _local2 + _local6;
_local3 = _local3 + _local7;
addProjectile(_local3, _local2);
}
function setRank(num) {
m_rank = num;
m_charges = 1;
}
var m_start_x = 50;
var m_start_y = -500;
}
Symbol 2529 MovieClip [__Packages.Comet] Frame 0
class Comet extends StandardArrow
{
var m_flare, m_numIceCubes, m_maxDamage, m_blastRadius, m_frostDuration, m_slowFactor, m_flareLifeSpan, m_flareAnimDur, m_flareAnimRate, m_flareAnimEnd, ypos, m_timeToSmoke, m_levelManager, xpos, destroy, m_skill, m_rank, m_clip;
function Comet (levelManager, clip, par_x, par_y, layer, lvl, par_hp) {
super(levelManager, clip, par_x, par_y, layer, lvl, par_hp);
m_flare = "flare_ice01";
m_numIceCubes = 3;
m_maxDamage = 200;
m_blastRadius = 100;
m_frostDuration = 2000;
m_slowFactor = 0.5;
m_flareLifeSpan = 100;
m_flareAnimDur = 100;
m_flareAnimRate = 0.5;
m_flareAnimEnd = 100;
}
function updateSmoke() {
if ((ypos > -10) && (((m_timeToSmoke = m_timeToSmoke - GameApp.m_gSpeed)) < 0)) {
m_timeToSmoke = 0;
var _local2 = 0;
while (_local2 < 2) {
var _local3 = m_levelManager.m_debrisManager.addDebris(m_flare, m_flareLifeSpan, m_flareAnimDur, m_flareAnimRate, m_flareAnimEnd);
_local3.setAttributes(0, 0, 0, 0, xpos + (random(50) - 25), ypos + (random(50) - 25), random(360));
_local2++;
}
}
}
function doProjectileAction(tempObj) {
m_levelManager.m_soundManager.addSound("ice_shatter.wav");
m_levelManager.m_soundManager.addSound("bomb.wav");
var _local10 = new IceEffect(tempObj.m_effectsManager, "ice", "indicator_ice", tempObj, 99999, 20);
tempObj.m_effectsManager.addEffect(_local10);
var _local9 = new ImpactEffect(tempObj.m_effectsManager, "impact", "indicator_impact", tempObj, 10, 9999);
_local9.setAmt(m_maxDamage);
tempObj.m_effectsManager.addEffect(_local9);
var _local6 = m_blastRadius;
var _local3;
var _local5;
var _local4;
var _local7 = 0;
while (_local7 < m_levelManager.m_airUnits.length) {
tempObj = m_levelManager.m_airUnits[_local7];
if (tempObj.canGetHit()) {
_local5 = tempObj.xpos - xpos;
_local4 = tempObj.ypos - ypos;
_local3 = Math.sqrt((_local5 * _local5) + (_local4 * _local4));
if (_local3 < _local6) {
doEffect(tempObj, _local3, _local6);
}
}
_local7++;
}
_local7 = 0;
while (_local7 < m_levelManager.m_goodTeam.length) {
tempObj = m_levelManager.m_goodTeam[_local7];
if (tempObj.canGetHit()) {
_local5 = tempObj.xpos - xpos;
_local4 = tempObj.ypos - ypos;
_local3 = Math.sqrt((_local5 * _local5) + (_local4 * _local4));
if (_local3 < _local6) {
doEffect(tempObj, _local3, _local6);
}
}
_local7++;
}
_local7 = 0;
while (_local7 < m_levelManager.m_badTeam.length) {
tempObj = m_levelManager.m_badTeam[_local7];
if (tempObj.canGetHit()) {
_local5 = tempObj.xpos - xpos;
_local4 = tempObj.ypos - ypos;
_local3 = Math.sqrt((_local5 * _local5) + (_local4 * _local4));
if (_local3 < _local6) {
doEffect(tempObj, _local3, _local6);
}
}
_local7++;
}
var _local8 = m_levelManager.m_debrisManager.addDebris("ice_explosion_pow", 20, 20, 1, 20);
_local8.setAttributes(0, 0, 0, 0, xpos, ypos);
_local8.setDebSizeWidth(_local6 * 2);
addIceCubeExplosion();
destroy();
}
function doEffect(tempObj, dist, radius) {
var _local5 = 1 - (dist / radius);
var _local3 = ((_local5 * m_maxDamage) * (tempObj.getMultIce() + tempObj.getMultBlunt())) * 0.5;
var _local4 = new ImpactEffect(tempObj.m_effectsManager, "impact", "indicator_impact", tempObj, 10, 9999);
_local4.setAmt(_local3);
tempObj.m_effectsManager.addEffect(_local4);
var _local6 = new IceEffect(tempObj.m_effectsManager, "ice", "indicator_ice", tempObj, Math.floor(m_frostDuration * _local5), 20);
_local6.setSlowFactor(m_slowFactor);
tempObj.m_effectsManager.addEffect(_local6);
if (m_skill != null) {
m_skill.addXP(Util.calcXP(_local3));
}
}
function addIceCubeExplosion() {
var _local3 = 0;
while (_local3 < m_numIceCubes) {
var _local4 = m_levelManager.getNextObjectLevel();
var _local2 = new IceBall(m_levelManager, "ice_cube", xpos, ypos, m_levelManager.m_clip.object_layer, _local4, 100);
_local2.m_clip.lvl = _local4;
_local2.setVelocity((random(100) - 50) / 10, -((random(100) / 10) + 10));
_local2.setSkill(m_skill);
_local2.setImpactDamage(Math.ceil(m_maxDamage / m_numIceCubes));
m_levelManager.m_gameObjects.push(_local2);
_local3++;
}
}
function setRank(rank) {
m_rank = rank;
m_clip._xscale = (m_clip._yscale = 50 + (10 * m_rank));
m_maxDamage = 250 + (m_rank * 41);
m_blastRadius = 100 + (m_rank * 5);
m_numIceCubes = 4 + Math.floor(m_rank * 0.5);
m_slowFactor = 1 / (1.7 + (0.4 * m_rank));
m_frostDuration = 500 + (m_rank * 200);
}
}
Symbol 2530 MovieClip [__Packages.IceEffect] Frame 0
class IceEffect extends Effect
{
var m_slowFactor, m_target;
function IceEffect (manager, etype, clipName, target, duration, tick) {
super(manager, etype, clipName, target, duration, tick);
m_slowFactor = 0.5;
}
function performEffect() {
m_target.setSpeedFactor(m_slowFactor);
}
function cleanUp() {
m_target.setSpeedFactor(1);
}
function setSlowFactor(num) {
m_slowFactor = num;
}
}
Symbol 2531 MovieClip [__Packages.IceArrow] Frame 0
class IceArrow extends StandardArrow
{
var m_frostDuration, m_slowFactor, m_impactDamage, m_flare, m_flareLifeSpan, m_flareAnimDur, m_flareAnimRate, m_flareAnimEnd, m_levelManager, prevXpos, xpos, prevYpos, ypos, rotation, m_skill, destroy, m_rank;
function IceArrow (levelManager, clip, par_x, par_y, layer, lvl, par_hp) {
super(levelManager, clip, par_x, par_y, layer, lvl, par_hp);
m_frostDuration = 1000;
m_slowFactor = 0.5;
m_impactDamage = 1;
m_flare = "ice_tracer";
m_flareLifeSpan = 25;
m_flareAnimDur = 25;
m_flareAnimRate = 2;
m_flareAnimEnd = 50;
}
function updateSmoke() {
var _local2 = m_levelManager.m_debrisManager.addDebris(m_flare, m_flareLifeSpan, m_flareAnimDur, m_flareAnimRate, m_flareAnimEnd);
var _local4 = xpos - prevXpos;
var _local3 = ypos - prevYpos;
var _local5 = Math.sqrt((_local4 * _local4) + (_local3 * _local3));
_local2.setWidth(_local5);
_local2.setAttributes(0, 0, 0, 0, xpos, ypos, rotation);
}
function doProjectileAction(tempObj) {
var _local7 = m_levelManager.getNextObjectLevel();
var _local3 = new ReIce(m_levelManager, "sticky_ice", xpos, ypos, m_levelManager.m_clip.sticky_layer2, _local7, 100);
_local3.m_clip.lvl = _local7;
m_levelManager.addGameObject(_local3);
m_levelManager.addReactiveElement(_local3);
m_levelManager.m_soundManager.addSound("ice_shatter.wav");
if (tempObj != null) {
var _local4 = tempObj.getMultIce() * m_impactDamage;
var _local5 = new ImpactEffect(tempObj.m_effectsManager, "impact", "indicator_impact", tempObj, 10, 9999);
_local5.setAmt(_local4);
tempObj.m_effectsManager.addEffect(_local5);
var _local6 = new IceEffect(tempObj.m_effectsManager, "ice", "indicator_ice", tempObj, m_frostDuration, 20);
_local6.setSlowFactor(m_slowFactor);
tempObj.m_effectsManager.addEffect(_local6);
if (m_skill != null) {
m_skill.addXP(Util.calcXP2(_local4, GameVars.g_iceArrowXPProgression));
}
_local3.setStuckTo(tempObj);
_local3.setOffsets(xpos, ypos, tempObj.xpos, tempObj.ypos);
_local3.setIceDamage(m_impactDamage / 10);
}
destroy();
}
function setRank(rank) {
m_rank = rank;
m_impactDamage = Math.floor(GameVars.g_iceArrowDamage * (1 + (m_rank / 10)));
m_frostDuration = 500 + (m_rank * 200);
m_slowFactor = 1 / (1.7 + (0.4 * m_rank));
}
}
Symbol 2532 MovieClip [__Packages.ReIce] Frame 0
class ReIce extends ReElement
{
var m_eType, m_iceDmg, tst_name;
function ReIce (levelManager, clip, par_x, par_y, layer, lvl, par_hp) {
super(levelManager, clip, par_x, par_y, layer, lvl, par_hp);
m_eType = "ice";
m_iceDmg = 1;
tst_name = "reactive ice" + (GameObject.tst_count++);
}
function performReaction(tempObj) {
var _local3;
_local3 = new ImpactEffect(tempObj.m_effectsManager, "impact", "indicator_impact", tempObj, 10, 9999);
_local3.setAmt((m_iceDmg * tempObj.getMultIce()) * Util.randomPercent(0.5));
tempObj.m_effectsManager.addEffect(_local3);
}
function setIceDamage(amt) {
m_iceDmg = Math.floor(amt);
}
}
Symbol 2533 MovieClip [__Packages.IceBall] Frame 0
class IceBall extends IceArrow
{
var m_flare, m_flareLifeSpan, m_flareAnimDur, m_flareAnimRate, m_flareAnimEnd, rotation, ypos, m_timeToSmoke, m_levelManager, xpos;
function IceBall (levelManager, clip, par_x, par_y, layer, lvl, par_hp) {
super(levelManager, clip, par_x, par_y, layer, lvl, par_hp);
m_flare = "flare_ice01";
m_flareLifeSpan = 100;
m_flareAnimDur = 100;
m_flareAnimRate = 0.5;
m_flareAnimEnd = 100;
}
function updateRotation() {
rotation = 0;
}
function updateSmoke() {
if ((ypos > -10) && (((m_timeToSmoke = m_timeToSmoke - GameApp.m_gSpeed)) < 0)) {
m_timeToSmoke = 3;
var _local2 = 0;
while (_local2 < 2) {
var _local3 = m_levelManager.m_debrisManager.addDebris(m_flare, m_flareLifeSpan, m_flareAnimDur, m_flareAnimRate, m_flareAnimEnd);
_local3.setAttributes(0, 0, 0, 0, xpos + (random(20) - 10), ypos + (random(20) - 10), random(360));
_local2++;
}
}
}
}
Symbol 2534 MovieClip [__Packages.FireWaveSkill] Frame 0
class FireWaveSkill extends Skill
{
var m_skillName, m_skillRank, m_iconName, m_coolDownTimeMax, m_coolDownTime, m_levelManager;
function FireWaveSkill () {
super();
m_skillName = "Fire Wave Arrow";
m_skillRank = 0;
m_iconName = "skill_icon_arrow_fire_wave";
m_coolDownTimeMax = (m_coolDownTime = 3960);
}
function performAction(p_vx, p_vy, p_x, p_y) {
if (m_coolDownTime <= 0) {
var _local3 = m_levelManager.getNextObjectLevel();
var _local2 = new FireWaveArrow(m_levelManager, "arrow_fire", p_x, p_y, m_levelManager.m_clip.object_layer, _local3, 100);
_local2.setTeam(Fighter.GOOD);
_local2.m_clip.lvl = _local3;
_local2.setVelocity(p_vx, p_vy);
_local2.setOwningObject(m_levelManager.m_hero);
m_levelManager.m_gameObjects.push(_local2);
_local2.setOwningStructure(m_levelManager.m_hero.getGarrisonedBuilding());
_local2.setSkill(this);
_local2.setRank(m_skillRank);
m_coolDownTime = m_coolDownTimeMax;
}
}
}
Symbol 2535 MovieClip [__Packages.FireWaveArrow] Frame 0
class FireWaveArrow extends StandardArrow
{
var m_flare, ypos, m_timeToSmoke, m_levelManager, xpos, rotation, vx, m_skill, m_rank, destroy, m_targets, doProjectileReaction;
function FireWaveArrow (levelManager, clip, par_x, par_y, layer, lvl, par_hp) {
super(levelManager, clip, par_x, par_y, layer, lvl, par_hp);
m_flare = "flare_fire01";
}
function updateSmoke() {
if ((ypos > -10) && (((m_timeToSmoke = m_timeToSmoke - GameApp.m_gSpeed)) < 0)) {
m_timeToSmoke = 0;
var _local2 = m_levelManager.m_debrisManager.addDebris(m_flare, 20, 100, 5);
_local2.setAttributes(0, 0, 0, 0, xpos, ypos, rotation);
}
}
function doProjectileAction(tempObj) {
var _local2 = new SpFireWave(m_levelManager.m_spellManager);
_local2.setLocation(xpos, ypos);
_local2.setVx(vx * 1.5);
_local2.setSkill(m_skill);
_local2.setRank(m_rank);
destroy();
}
function testHit() {
var _local3;
var _local4 = false;
var _local5;
if (ypos > (m_levelManager.getElevation(xpos) + 10)) {
doProjectileAction(null);
} else {
var _local2 = 0;
while ((_local2 < m_targets.length) && (!_local4)) {
_local3 = m_targets[_local2];
if (_local3.hasHP() && (_local3.m_clip.hitbox.hitTest(xpos, ypos, 0))) {
doProjectileReaction(_local3);
_local4 = true;
}
_local2++;
}
}
}
}
Symbol 2536 MovieClip [__Packages.SpFireWave] Frame 0
class SpFireWave extends SpWave
{
var m_maxCharges, m_charges, m_timeToStrike, m_waitTime, m_fireImpactDamage, m_spellManager, m_debrisManager, m_ypos, m_xpos, m_vx, m_skill, m_rank;
function SpFireWave (sm) {
super(sm);
m_maxCharges = 7;
m_charges = m_maxCharges;
m_timeToStrike = 0;
m_waitTime = 5;
m_fireImpactDamage = 5;
}
function doAction() {
if (((m_timeToStrike = m_timeToStrike - GameApp.m_gSpeed)) < 0) {
m_timeToStrike = m_waitTime;
m_charges--;
m_spellManager.m_levelManager.m_soundManager.addSound("flame_sound.wav");
var _local2 = m_debrisManager.addDebris("fire_wave", 40, 40, 1, 40);
m_ypos = m_debrisManager.m_levelManager.getElevation(m_xpos);
_local2.setAttributes(0, 0, 0, 0, m_xpos, m_ypos);
testHitObjects(m_xpos, m_ypos);
m_xpos = m_xpos + m_vx;
}
}
function testHitObjects(xs, ys) {
var _local5 = new Array();
var _local2;
var _local3 = 25;
var _local9 = 75;
var _local6 = 0;
while (_local6 < m_spellManager.m_levelManager.m_airUnits.length) {
_local2 = m_spellManager.m_levelManager.m_airUnits[_local6];
if (_local2.canGetHit()) {
if (((_local2.xpos < (xs + _local3)) && (_local2.xpos > (xs - _local3))) && (_local2.ypos > (ys - _local9))) {
_local5.push(_local2);
}
}
_local6++;
}
_local6 = 0;
while (_local6 < m_spellManager.m_levelManager.m_goodTeam.length) {
_local2 = m_spellManager.m_levelManager.m_goodTeam[_local6];
if (_local2.canGetHit()) {
if (((_local2.xpos < (xs + _local3)) && (_local2.xpos > (xs - _local3))) && (_local2.ypos > (ys - _local9))) {
_local5.push(_local2);
}
}
_local6++;
}
_local6 = 0;
while (_local6 < m_spellManager.m_levelManager.m_badTeam.length) {
_local2 = m_spellManager.m_levelManager.m_badTeam[_local6];
if (_local2.canGetHit()) {
if (((_local2.xpos < (xs + _local3)) && (_local2.xpos > (xs - _local3))) && (_local2.ypos > (ys - _local9))) {
_local5.push(_local2);
}
}
_local6++;
}
_local6 = 0;
while (_local6 < _local5.length) {
_local2 = _local5[_local6];
var _local7 = Math.floor(m_fireImpactDamage * _local2.getMultFire());
var _local8 = new ImpactEffect(_local2.m_effectsManager, "impact", "indicator_impact", _local2, 10, 9999);
_local8.setAmt(_local7);
_local2.m_effectsManager.addEffect(_local8);
if (((m_skill != null) && (_local2 instanceof Fighter)) && (Fighter(_local2).isBad())) {
m_skill.addXP(Util.calcXP(_local7));
}
_local6++;
}
}
function setRank(num) {
m_rank = num;
m_charges = m_maxCharges;
m_fireImpactDamage = Math.floor(55 * (1 + (m_rank / 10)));
}
}
Symbol 2537 MovieClip [__Packages.HealWaveSkill] Frame 0
class HealWaveSkill extends Skill
{
var m_skillName, m_skillRank, m_iconName, m_coolDownTimeMax, m_coolDownTime, m_levelManager;
function HealWaveSkill () {
super();
m_skillName = "Heal Wave Arrow";
m_skillRank = 0;
m_iconName = "skill_icon_arrow_heal_wave";
m_coolDownTimeMax = (m_coolDownTime = 700);
}
function performAction(p_vx, p_vy, p_x, p_y) {
if (m_coolDownTime <= 0) {
var _local3 = m_levelManager.getNextObjectLevel();
var _local2 = new HealWaveArrow(m_levelManager, "arrow_heal", p_x, p_y, m_levelManager.m_clip.object_layer, _local3, 100);
_local2.setTeam(Fighter.GOOD);
_local2.m_clip.lvl = _local3;
_local2.setVelocity(p_vx, p_vy);
_local2.setOwningObject(m_levelManager.m_hero);
m_levelManager.m_gameObjects.push(_local2);
_local2.setSkill(this);
_local2.setRank(m_skillRank);
_local2.setTeam(Fighter.GOOD);
m_coolDownTime = m_coolDownTimeMax;
}
}
}
Symbol 2538 MovieClip [__Packages.HealWaveArrow] Frame 0
class HealWaveArrow extends StandardArrow
{
var m_flare, ypos, m_timeToSmoke, m_levelManager, xpos, vx, m_skill, m_rank, m_team, destroy, m_targets, doProjectileReaction;
function HealWaveArrow (levelManager, clip, par_x, par_y, layer, lvl, par_hp) {
super(levelManager, clip, par_x, par_y, layer, lvl, par_hp);
m_flare = "flare_heal01";
}
function updateSmoke() {
if ((ypos > -10) && (((m_timeToSmoke = m_timeToSmoke - GameApp.m_gSpeed)) < 0)) {
m_timeToSmoke = 0;
var _local2 = m_levelManager.m_debrisManager.addDebris(m_flare, 20, 100, 5);
_local2.setAttributes(0, 0, 0, 0, xpos, ypos, random(360));
}
}
function doProjectileAction(tempObj) {
var _local2 = new SpHealWave(m_levelManager.m_spellManager);
_local2.setLocation(xpos, ypos);
_local2.setVx(vx * 1.5);
_local2.setSkill(m_skill);
_local2.setRank(m_rank);
_local2.setTeam(m_team);
destroy();
}
function testHit() {
var _local3;
var _local4 = false;
var _local5;
if (ypos > (m_levelManager.getElevation(xpos) + 10)) {
doProjectileAction(null);
} else {
var _local2 = 0;
while ((_local2 < m_targets.length) && (!_local4)) {
_local3 = m_targets[_local2];
if (_local3.hasHP() && (_local3.m_clip.hitbox.hitTest(xpos, ypos, 0))) {
doProjectileReaction(_local3);
_local4 = true;
}
_local2++;
}
}
}
}
Symbol 2539 MovieClip [__Packages.SpHealWave] Frame 0
class SpHealWave extends SpWave
{
var m_maxCharges, m_charges, m_timeToStrike, m_waitTime, m_debrisManager, m_ypos, m_xpos, m_vx, isGoodTeamSpell, m_spellManager, isBadTeamSpell, m_skill, m_rank;
function SpHealWave (sm) {
super(sm);
m_maxCharges = 5;
m_charges = m_maxCharges;
m_timeToStrike = 0;
m_waitTime = 5;
}
function doAction() {
if (((m_timeToStrike = m_timeToStrike - GameApp.m_gSpeed)) < 0) {
m_timeToStrike = m_waitTime;
m_charges--;
var _local2 = m_debrisManager.addDebris("heal_wave", 40, 40, 1, 40);
m_ypos = m_debrisManager.m_levelManager.getElevation(m_xpos);
_local2.setAttributes(0, 0, 0, 0, m_xpos, m_ypos);
testHitObjects(m_xpos, m_ypos);
m_xpos = m_xpos + m_vx;
}
}
function testHitObjects(xs, ys) {
var _local8 = new Array();
var _local2;
var _local7 = 25;
var _local3;
var _local5;
var _local4;
if (isGoodTeamSpell()) {
var _local6 = 0;
while (_local6 < m_spellManager.m_levelManager.m_goodTeam.length) {
_local2 = m_spellManager.m_levelManager.m_goodTeam[_local6];
if (_local2.canGetHit()) {
_local5 = _local2.xpos - m_xpos;
_local4 = _local2.ypos - m_ypos;
_local3 = Math.sqrt((_local5 * _local5) + (_local4 * _local4));
if (_local3 < _local7) {
doDamage(_local2, _local3, _local7);
}
}
_local6++;
}
} else if (isBadTeamSpell()) {
var _local6 = 0;
while (_local6 < m_spellManager.m_levelManager.m_badTeam.length) {
_local2 = m_spellManager.m_levelManager.m_badTeam[_local6];
if (_local2.canGetHit()) {
_local5 = _local2.xpos - m_xpos;
_local4 = _local2.ypos - m_ypos;
_local3 = Math.sqrt((_local5 * _local5) + (_local4 * _local4));
if (_local3 < _local7) {
doDamage(_local2, _local3, _local7);
}
}
_local6++;
}
}
}
function doDamage(tempObj, dist, radius) {
var _local3 = (1 - (dist / radius)) * m_maxHeal;
var _local4 = new HealEffect(tempObj.m_effectsManager, "heal", "indicator_heal", tempObj, 10, 9999);
_local4.setAmt(_local3);
tempObj.m_effectsManager.addEffect(_local4);
if (((m_skill != null) && (tempObj instanceof Fighter)) && (Fighter(tempObj).isGood())) {
m_skill.addXP(Util.calcXP(_local3));
}
}
function setRank(num) {
m_rank = num;
m_charges = m_maxCharges;
m_maxHeal = Math.floor(75 * (1 + (m_rank / 10)));
}
var m_maxHeal = 100;
}
Symbol 2540 MovieClip [__Packages.HealEffect] Frame 0
class HealEffect extends Effect
{
var m_amt, m_target, m_duration;
function HealEffect (manager, etype, clipName, target, duration, tick) {
super(manager, etype, clipName, target, duration, tick);
m_amt = 20;
}
function setAmt(amt) {
m_amt = amt;
}
function performEffect() {
var _local2 = Math.floor(m_amt + random(m_amt / 2));
var _local3 = m_target.getMaxHP() - m_target.getHP();
if (_local2 > _local3) {
_local2 = _local3;
}
m_target.takeDamage(-_local2, false);
m_duration = 5;
}
}
Symbol 2541 MovieClip [__Packages.IceArrowSkill] Frame 0
class IceArrowSkill extends Skill
{
var m_skillName, m_skillRank, m_iconName, m_coolDownTimeMax, m_coolDownTime, m_levelManager;
function IceArrowSkill () {
super();
m_skillName = "Ice Arrow";
m_skillRank = 0;
m_iconName = "skill_icon_arrow_ice";
m_coolDownTimeMax = (m_coolDownTime = 660);
}
function performAction(p_vx, p_vy, p_x, p_y) {
if (m_coolDownTime <= 0) {
var _local3 = m_levelManager.getNextObjectLevel();
var _local2 = new IceArrow(m_levelManager, "arrow_ice", p_x, p_y, m_levelManager.m_clip.object_layer, _local3, 100);
_local2.setTeam(Fighter.GOOD);
_local2.m_clip.lvl = _local3;
_local2.setVelocity(p_vx, p_vy);
_local2.setOwningObject(m_levelManager.m_hero);
m_levelManager.m_gameObjects.push(_local2);
_local2.setSkill(this);
_local2.setRank(m_skillRank);
m_coolDownTime = m_coolDownTimeMax;
}
}
}
Symbol 2542 MovieClip [__Packages.IceWaveSkill] Frame 0
class IceWaveSkill extends Skill
{
var m_skillName, m_skillRank, m_iconName, m_coolDownTimeMax, m_coolDownTime, m_levelManager;
function IceWaveSkill () {
super();
m_skillName = "Ice Wave Arrow";
m_skillRank = 0;
m_iconName = "skill_icon_arrow_ice_wave";
m_coolDownTimeMax = (m_coolDownTime = 1980);
}
function performAction(p_vx, p_vy, p_x, p_y) {
if (m_coolDownTime <= 0) {
var _local3 = m_levelManager.getNextObjectLevel();
var _local2 = new IceWaveArrow(m_levelManager, "arrow_ice", p_x, p_y, m_levelManager.m_clip.object_layer, _local3, 100);
_local2.setTeam(Fighter.GOOD);
_local2.m_clip.lvl = _local3;
_local2.setVelocity(p_vx, p_vy);
_local2.setOwningObject(m_levelManager.m_hero);
m_levelManager.m_gameObjects.push(_local2);
_local2.setSkill(this);
_local2.setRank(m_skillRank);
m_coolDownTime = m_coolDownTimeMax;
}
}
}
Symbol 2543 MovieClip [__Packages.IceWaveArrow] Frame 0
class IceWaveArrow extends StandardArrow
{
var m_flare, ypos, m_timeToSmoke, m_levelManager, xpos, rotation, vx, m_skill, m_rank, destroy, m_targets, doProjectileReaction;
function IceWaveArrow (levelManager, clip, par_x, par_y, layer, lvl, par_hp) {
super(levelManager, clip, par_x, par_y, layer, lvl, par_hp);
m_flare = "flare_ice01";
}
function updateSmoke() {
if ((ypos > -10) && (((m_timeToSmoke = m_timeToSmoke - GameApp.m_gSpeed)) < 0)) {
m_timeToSmoke = 0;
var _local2 = m_levelManager.m_debrisManager.addDebris(m_flare, 20, 100, 5);
_local2.setAttributes(0, 0, 0, 0, xpos, ypos, rotation);
}
}
function doProjectileAction(tempObj) {
m_levelManager.m_soundManager.addSound("ice_shatter.wav");
var _local2 = new SpIceWave(m_levelManager.m_spellManager);
_local2.setLocation(xpos, ypos);
_local2.setVx(vx * 1.5);
_local2.setSkill(m_skill);
_local2.setRank(m_rank);
destroy();
}
function testHit() {
var _local3;
var _local4 = false;
var _local5;
if (ypos > (m_levelManager.getElevation(xpos) + 10)) {
doProjectileAction(null);
} else {
var _local2 = 0;
while ((_local2 < m_targets.length) && (!_local4)) {
_local3 = m_targets[_local2];
if (_local3.hasHP() && (_local3.m_clip.hitbox.hitTest(xpos, ypos, 0))) {
doProjectileReaction(_local3);
_local4 = true;
}
_local2++;
}
}
}
}
Symbol 2544 MovieClip [__Packages.SpIceWave] Frame 0
class SpIceWave extends SpWave
{
var m_maxCharges, m_charges, m_timeToStrike, m_waitTime, m_frostDuration, m_impactDamage, m_debrisManager, m_ypos, m_xpos, m_vx, m_spellManager, m_slowFactor, m_skill, m_rank;
function SpIceWave (sm) {
super(sm);
m_maxCharges = 5;
m_charges = m_maxCharges;
m_timeToStrike = 0;
m_waitTime = 5;
m_frostDuration = 100;
m_impactDamage = 5;
}
function doAction() {
if (((m_timeToStrike = m_timeToStrike - GameApp.m_gSpeed)) < 0) {
m_timeToStrike = m_waitTime;
m_charges--;
var _local2 = m_debrisManager.addDebris("ice_wave", 40, 40, 1, 40);
m_ypos = m_debrisManager.m_levelManager.getElevation(m_xpos);
_local2.setAttributes(0, 0, 0, 0, m_xpos, m_ypos);
testHitObjects(m_xpos, m_ypos);
m_xpos = m_xpos + m_vx;
}
}
function testHitObjects(xs, ys) {
var _local4 = new Array();
var _local2;
var _local5 = 25;
var _local10 = 75;
var _local3 = 0;
while (_local3 < m_spellManager.m_levelManager.m_goodTeam.length) {
_local2 = m_spellManager.m_levelManager.m_goodTeam[_local3];
if (_local2.canGetHit()) {
if (((_local2.xpos < (xs + _local5)) && (_local2.xpos > (xs - _local5))) && (_local2.ypos > (ys - _local10))) {
_local4.push(_local2);
}
}
_local3++;
}
_local3 = 0;
while (_local3 < m_spellManager.m_levelManager.m_badTeam.length) {
_local2 = m_spellManager.m_levelManager.m_badTeam[_local3];
if (_local2.canGetHit()) {
if (((_local2.xpos < (xs + _local5)) && (_local2.xpos > (xs - _local5))) && (_local2.ypos > (ys - _local10))) {
_local4.push(_local2);
}
}
_local3++;
}
_local3 = 0;
while (_local3 < _local4.length) {
_local2 = _local4[_local3];
if (_local2.canGetHit()) {
var _local7 = Math.floor(m_impactDamage * _local2.getMultIce());
var _local8 = new ImpactEffect(_local2.m_effectsManager, "impact", "indicator_impact", _local2, 10, 9999);
_local8.setAmt(_local7);
_local2.m_effectsManager.addEffect(_local8);
var _local9 = new IceEffect(_local2.m_effectsManager, "ice", "indicator_ice", _local2, m_frostDuration, 20);
_local9.setSlowFactor(m_slowFactor);
_local2.m_effectsManager.addEffect(_local9);
if (((m_skill != null) && (_local2 instanceof Fighter)) && (Fighter(_local2).isBad())) {
m_skill.addXP(Util.calcXP(_local7));
}
}
_local3++;
}
}
function setRank(num) {
m_rank = num;
m_charges = m_maxCharges;
m_frostDuration = 500 + (m_rank * 200);
m_impactDamage = Math.floor(55 * (1 + (m_rank / 6)));
m_slowFactor = 1 / (1.5 + (0.3 * m_rank));
}
}
Symbol 2545 MovieClip [__Packages.MeteorSkill] Frame 0
class MeteorSkill extends Skill
{
var m_skillName, m_skillRank, m_iconName, m_coolDownTimeMax, m_coolDownTime, m_levelManager;
function MeteorSkill () {
super();
m_skillName = "Meteor Arrow";
m_skillRank = 0;
m_iconName = "skill_icon_arrow_meteor";
m_coolDownTimeMax = (m_coolDownTime = 7920);
}
function performAction(p_vx, p_vy, p_x, p_y) {
if (m_coolDownTime <= 0) {
var _local3 = m_levelManager.getNextObjectLevel();
var _local2 = new MeteorArrow(m_levelManager, "arrow_meteor", p_x, p_y, m_levelManager.m_clip.object_layer, _local3, 100);
_local2.setTeam(Fighter.GOOD);
_local2.m_clip.lvl = _local3;
_local2.setVelocity(p_vx, p_vy);
_local2.setOwningObject(m_levelManager.m_hero);
m_levelManager.m_gameObjects.push(_local2);
_local2.setSkill(this);
_local2.setRank(m_skillRank);
m_coolDownTime = m_coolDownTimeMax;
}
}
}
Symbol 2546 MovieClip [__Packages.MeteorArrow] Frame 0
class MeteorArrow extends StandardArrow
{
var m_flare, m_timeToSmoke, m_levelManager, xpos, ypos, m_skill, m_rank, destroy;
function MeteorArrow (levelManager, clip, par_x, par_y, layer, lvl, par_hp) {
super(levelManager, clip, par_x, par_y, layer, lvl, par_hp);
m_flare = "flare_smoke01";
}
function updateSmoke() {
if (((m_timeToSmoke = m_timeToSmoke - GameApp.m_gSpeed)) < 0) {
m_timeToSmoke = 0;
var _local2 = m_levelManager.m_debrisManager.addDebris(m_flare, 20, 100, 5);
_local2.setAttributes(0, 0, 0, 0, xpos, ypos, random(360));
}
}
function doProjectileAction(tempObj) {
var _local4 = m_levelManager.getElevation(xpos);
var _local3 = new SpMeteors(m_levelManager.m_spellManager);
_local3.setLocation(xpos, ypos);
_local3.setSkill(m_skill);
_local3.setRank(m_rank);
var _local6 = m_levelManager.m_debrisManager.addDebris("explosion_pow", 20, 20, 1, 20);
_local6.setAttributes(0, 0, 0, 0, xpos, _local4);
var _local5 = m_levelManager.getNextObjectLevel();
var _local2 = new StandardArrow(m_levelManager, "meteor", xpos, _local4 - 10, m_levelManager.m_clip.object_layer, _local5, 100);
_local2.m_clip.lvl = _local5;
_local2.m_clip._alpha = 20;
_local2.setVelocity(0.1, -50);
_local2.setSkill(m_skill);
_local2.setRank(m_rank);
m_levelManager.m_gameObjects.push(_local2);
destroy();
}
function testHit() {
var _local3;
var _local2 = false;
var _local4;
if (ypos > m_levelManager.getElevation(xpos)) {
doProjectileAction(null);
}
}
}
Symbol 2547 MovieClip [__Packages.SpMeteors] Frame 0
class SpMeteors extends Spell
{
var dead, m_strikeTime, m_timeToStrike, m_charges, m_range, m_dmg, m_duration, m_spellManager, m_skill, m_xpos, m_ypos, m_rank;
function SpMeteors (sm) {
super(sm);
dead = false;
m_strikeTime = 50;
m_timeToStrike = m_strikeTime;
m_charges = 1;
m_range = 100;
m_dmg = 200;
}
function step() {
if (!dead) {
if (m_charges <= 0) {
destroy();
dead = true;
} else {
doAction();
}
m_duration = m_duration - GameApp.m_gSpeed;
}
}
function doAction() {
if (((m_timeToStrike = m_timeToStrike - GameApp.m_gSpeed)) < 0) {
m_charges--;
m_timeToStrike = m_strikeTime + random(m_strikeTime);
shootAtTarget();
}
}
function addProjectile(p_vx, p_vy) {
var _local3 = m_spellManager.m_levelManager.getNextObjectLevel();
var _local2 = new Meteor(m_spellManager.m_levelManager, "meteor", m_start_x, m_start_y, m_spellManager.m_levelManager.m_clip.object_layer, _local3, 100);
_local2.m_clip.lvl = _local3;
_local2.setVelocity(p_vx, p_vy);
_local2.setMaxDamage(m_dmg);
_local2.setBlastRadius(m_range);
_local2.setSkill(m_skill);
m_spellManager.m_levelManager.m_gameObjects.push(_local2);
}
function destroy() {
m_spellManager.removeSpell(this);
}
function setLocation(px, py) {
m_xpos = px;
m_ypos = py;
}
function shootAtTarget() {
var _local5;
var _local4;
var _local3;
var _local2;
var _local10;
var _local8;
var _local6;
var _local7;
var _local9 = 5;
_local5 = m_xpos - m_start_x;
_local4 = m_ypos - m_start_y;
_local8 = m_spellManager.m_levelManager.m_gravity;
_local3 = _local5 / Math.sqrt(Math.abs((2 * _local4) / _local8));
_local2 = 0;
_local6 = 0;
_local7 = (random(100) - 50) / 150;
_local2 = _local2 + _local6;
_local3 = _local3 + _local7;
addProjectile(_local3, _local2);
}
function setRank(num) {
m_rank = num;
m_charges = 1;
m_dmg = Math.floor(100 * (1 + (m_rank / 10)));
m_range = 150 * (1 + (m_rank * 0.05));
}
var m_start_x = 50;
var m_start_y = -500;
}
Symbol 2548 MovieClip [__Packages.Meteor] Frame 0
class Meteor extends StandardArrow
{
var m_flare, m_flares, m_flares2, m_flareLifeSpan, m_flareAnimDur, m_flareAnimRate, m_flareAnimEnd, ypos, m_timeToSmoke, m_levelManager, xpos, rotation, destroy, m_skill, m_ele, m_rank, vx, vy, m_clip;
function Meteor (levelManager, clip, par_x, par_y, layer, lvl, par_hp) {
super(levelManager, clip, par_x, par_y, layer, lvl, par_hp);
m_flare = "flare_smoke02";
m_flares = new Array("flare_ball_04", "flare_ball_03");
m_flares2 = new Array("flare_ball_orange", "flare_ball_gold");
m_flareLifeSpan = 100;
m_flareAnimDur = 100;
m_flareAnimRate = 0.5;
m_flareAnimEnd = 100;
}
function updateSmoke() {
if ((ypos > -10) && (((m_timeToSmoke = m_timeToSmoke - GameApp.m_gSpeed)) < 0)) {
m_timeToSmoke = 0;
var _local3 = 0;
while (_local3 < 1) {
m_flare = getRandomFlare();
var _local2 = m_levelManager.m_debrisManager.addDebrisBG(m_flare, m_flareLifeSpan, m_flareAnimDur, m_flareAnimRate, m_flareAnimEnd);
_local2.setAttributes(0, 0, 0, 0, (xpos + random(30)) - 15, (ypos + random(30)) - 15, 0);
_local2.setDebSize(200 + random(50));
_local3++;
}
_local3 = 0;
while (_local3 < 1) {
m_flare = getRandomFlare2();
var _local2 = m_levelManager.m_debrisManager.addDebrisBG(m_flare, m_flareLifeSpan, m_flareAnimDur, m_flareAnimRate, m_flareAnimEnd);
_local2.setAttributes(0, 0, 0, 0, (xpos + random(20)) - 10, (ypos + random(20)) - 10, 0);
_local2.setDebSize(125 + random(25));
_local3++;
}
}
}
function getRandomFlare() {
return(m_flares[random(m_flares.length)]);
}
function getRandomFlare2() {
return(m_flares2[random(m_flares2.length)]);
}
function setMaxDamage(num) {
m_maxDamage = num;
}
function setBlastRadius(num) {
m_blastRadius = num;
}
function updateRotation() {
rotation = 0;
}
function doProjectileAction(tempObj) {
m_levelManager.m_soundManager.addSound("bomb_hit.wav");
var _local10 = new FireEffect(tempObj.m_effectsManager, "fire", "indicator_fire", tempObj, 300, 20);
tempObj.m_effectsManager.addEffect(_local10);
var _local9 = new ImpactEffect(tempObj.m_effectsManager, "impact", "indicator_impact", tempObj, 10, 9999);
_local9.setAmt(m_maxDamage * tempObj.getMultBlunt());
tempObj.m_effectsManager.addEffect(_local9);
var _local6 = m_blastRadius;
var _local3;
var _local5;
var _local4;
var _local7 = 0;
while (_local7 < m_levelManager.m_airUnits.length) {
tempObj = m_levelManager.m_airUnits[_local7];
if (tempObj.canGetHit()) {
_local5 = tempObj.xpos - xpos;
_local4 = tempObj.ypos - ypos;
_local3 = Math.sqrt((_local5 * _local5) + (_local4 * _local4));
if (_local3 < _local6) {
doEffect(tempObj, _local3, _local6);
}
}
_local7++;
}
_local7 = 0;
while (_local7 < m_levelManager.m_goodTeam.length) {
tempObj = m_levelManager.m_goodTeam[_local7];
if (tempObj.canGetHit()) {
_local5 = tempObj.xpos - xpos;
_local4 = tempObj.ypos - ypos;
_local3 = Math.sqrt((_local5 * _local5) + (_local4 * _local4));
if (_local3 < _local6) {
doEffect(tempObj, _local3, _local6);
}
}
_local7++;
}
_local7 = 0;
while (_local7 < m_levelManager.m_badTeam.length) {
tempObj = m_levelManager.m_badTeam[_local7];
if (tempObj.canGetHit()) {
_local5 = tempObj.xpos - xpos;
_local4 = tempObj.ypos - ypos;
_local3 = Math.sqrt((_local5 * _local5) + (_local4 * _local4));
if (_local3 < _local6) {
doEffect(tempObj, _local3, _local6);
}
}
_local7++;
}
var _local8 = m_levelManager.m_debrisManager.addDebris("bomb_blast", 52, 52, 0.5, 26);
_local8.setAttributes(0, 0, 0, 0, xpos, ypos);
_local8.setDebSizeWidth(_local6 * 2);
addFireBallExplosion();
destroy();
}
function doEffect(tempObj, dist, radius) {
var _local5 = 1 - (dist / radius);
var _local3 = ((_local5 * m_maxDamage) * (tempObj.getMultBlunt() + tempObj.getMultFire())) * 0.5;
var _local4 = new ImpactEffect(tempObj.m_effectsManager, "impact", "indicator_impact", tempObj, 10, 9999);
_local4.setAmt(_local3);
tempObj.m_effectsManager.addEffect(_local4);
if (m_skill != null) {
m_skill.addXP(Util.calcXP(_local3));
}
}
function addFireBallExplosion() {
m_ele = m_levelManager.getElevation(xpos);
var _local3 = 0;
while (_local3 < m_numDebris) {
var _local4 = m_levelManager.getNextObjectLevel();
var _local5 = getFlameYPos();
var _local2 = new FireBall(m_levelManager, "fire_ball", xpos, _local5, m_levelManager.m_clip.object_layer, _local4, 100);
_local2.setBlastRadius(50);
_local2.setImpactDamage(Math.ceil(m_maxDamage / m_numDebris));
_local2.setMaxDamage(300);
_local2.setSkill(m_skill);
_local2.setRank(m_rank);
_local2.m_clip.lvl = _local4;
setFireBallVelocity(_local2, -10 + (_local3 * 10));
m_levelManager.m_gameObjects.push(_local2);
_local3++;
}
}
function getFlameYPos() {
if (ypos > m_ele) {
return(m_ele);
}
return(ypos);
}
function setFireBallVelocity(proj, angleOffset) {
if (ypos < m_ele) {
proj.setVelocity((random(100) - 50) / 10, -((random(100) / 20) + 10));
} else {
var _local2 = 0.3;
var _local9;
var _local8;
var _local5 = m_levelManager.getRotationAt(xpos) + angleOffset;
var _local4 = GameApp.getReflectionAngle(_local5, vx, vy);
var _local3 = Math.sqrt((vx * vx) + (vy * vy));
proj.vx = (Math.cos((Math.PI/180) * _local4) * _local3) * _local2;
proj.vy = (Math.sin((Math.PI/180) * _local4) * _local3) * _local2;
}
}
function setRank(rank) {
m_rank = rank;
m_clip._xscale = (m_clip._yscale = 50 + (10 * m_rank));
m_maxDamage = 250 + (m_rank * 45);
m_blastRadius = 150 + (m_rank * 5);
m_numDebris = Math.floor(m_rank * 1.5);
trace("set meteor rank to: " + rank);
}
var m_maxDamage = 100;
var m_blastRadius = 150;
var m_numDebris = 3;
}
Symbol 2549 MovieClip [__Packages.FireBall] Frame 0
class FireBall extends Meteor
{
var m_flare, m_impactDamage, m_fireBurnRate, m_fireBurnDuration, ypos, m_timeToSmoke, m_levelManager, m_flareLifeSpan, m_flareAnimDur, m_flareAnimRate, m_flareAnimEnd, xpos, rotation, vx, vy, m_rotFact, m_skill, m_rank;
function FireBall (levelManager, clip, par_x, par_y, layer, lvl, par_hp) {
super(levelManager, clip, par_x, par_y, layer, lvl, par_hp);
m_flare = "flare_fire01";
m_impactDamage = 5;
m_fireBurnRate = 1;
m_fireBurnDuration = 500;
}
function updateSmoke() {
if ((ypos > -10) && (((m_timeToSmoke = m_timeToSmoke - GameApp.m_gSpeed)) < 0)) {
m_timeToSmoke = 4;
var _local2 = m_levelManager.m_debrisManager.addDebris(m_flare, m_flareLifeSpan, m_flareAnimDur, m_flareAnimRate, m_flareAnimEnd);
_local2.setAttributes(0, 0, 0, 0, xpos, ypos, rotation);
}
}
function updateRotation() {
var _local2 = Math.atan(vy / vx);
if (vx > 0) {
rotation = _local2 * m_rotFact;
} else {
rotation = (_local2 * m_rotFact) + 180;
}
}
function doEffect(tempObj, dist, radius) {
m_levelManager.m_soundManager.addSound("bomb.wav");
var _local3 = m_impactDamage * tempObj.getMultBlunt();
var _local4 = new ImpactEffect(tempObj.m_effectsManager, "impact", "indicator_impact", tempObj, 10, 9999);
_local4.setAmt(_local3);
tempObj.m_effectsManager.addEffect(_local4);
var _local5 = new FireEffect(tempObj.m_effectsManager, "fire", "indicator_fire", tempObj, m_fireBurnDuration, 20);
_local5.setFireDamage(m_fireBurnRate);
tempObj.m_effectsManager.addEffect(_local5);
if (m_skill != null) {
m_skill.addXP(Util.calcXP(_local3));
}
}
function addFireBallExplosion() {
}
function setRank(rank) {
m_rank = rank;
m_impactDamage = 5 + (rank * 2);
m_fireBurnDuration = 300 + (m_rank * 2);
m_fireBurnRate = 5 + m_rank;
m_flareLifeSpan = 10;
m_flareAnimDur = 100;
m_flareAnimRate = 10;
m_flareAnimEnd = 100;
}
}
Symbol 2550 MovieClip [__Packages.ThunderArrowSkill] Frame 0
class ThunderArrowSkill extends Skill
{
var m_skillName, m_skillRank, m_iconName, m_coolDownTimeMax, m_coolDownTime, m_levelManager;
function ThunderArrowSkill () {
super();
m_skillName = "Thunder Arrow";
m_skillRank = 0;
m_iconName = "skill_icon_arrow_thunder";
m_coolDownTimeMax = (m_coolDownTime = 3960);
}
function performAction(p_vx, p_vy, p_x, p_y) {
if (m_coolDownTime <= 0) {
var _local3 = m_levelManager.getNextObjectLevel();
var _local2 = new ThunderArrow(m_levelManager, "arrow_thunder", p_x, p_y, m_levelManager.m_clip.object_layer, _local3, 100);
_local2.setTeam(Fighter.GOOD);
_local2.m_clip.lvl = _local3;
_local2.setVelocity(p_vx, p_vy);
_local2.setOwningObject(m_levelManager.m_hero);
m_levelManager.m_gameObjects.push(_local2);
_local2.setOwningStructure(m_levelManager.m_hero.getGarrisonedBuilding());
m_levelManager.addActivationObject(_local2);
_local2.setSkill(this);
m_coolDownTime = m_coolDownTimeMax;
}
}
}
Symbol 2551 MovieClip [__Packages.ThunderArrow] Frame 0
class ThunderArrow extends Projectile
{
var m_choice, updateVelocity, updateClip, xpos, m_levelManager, destroy, vx, ypos, vy, rotation, m_skill, m_rank;
function ThunderArrow (levelManager, clip, par_x, par_y, layer, lvl, par_hp) {
super(levelManager, clip, par_x, par_y, layer, lvl, par_hp);
m_choice = random(7);
}
function step() {
updateVelocity();
updatePos();
updateClip();
testHit();
if ((xpos > 2050) || (xpos < -50)) {
m_levelManager.removeActivationObject(this);
destroy();
}
}
function updatePos() {
xpos = xpos + vx;
ypos = ypos + vy;
var _local2 = Math.atan(vy / vx);
if (vx > 0) {
rotation = _local2 * m_rotFact;
} else {
rotation = (_local2 * m_rotFact) + 180;
}
updateSmoke();
}
function updateSmoke() {
if (((m_timeToSmoke = m_timeToSmoke - GameApp.m_gSpeed)) < 0) {
m_timeToSmoke = 0;
var _local2 = m_levelManager.m_debrisManager.addDebris(m_flare, 20, 100, 5);
_local2.setAttributes(0, 0, 0, 0, xpos, ypos, rotation);
}
}
function testHit() {
if (ypos > (m_levelManager.getElevation(xpos) + 10)) {
m_levelManager.removeActivationObject(this);
destroy();
}
}
function doProjectileAction(tempObj) {
var _local2 = new SpThunderCloud(m_levelManager.m_spellManager);
_local2.setLocation(xpos, ypos);
_local2.setSkill(m_skill);
_local2.setRank(m_rank);
destroy();
}
function setChoice(ch) {
m_choice = ch;
}
static function tstGetType(par) {
var _local3;
var _local1 = new Array("poison", "fire", "ice", "impact", "fear", "daze", "convert", "heal", "regen", "purge");
if (par == -1) {
return("cannon ball");
}
return(_local1[par]);
}
function activate() {
doProjectileAction(null);
}
var m_rotFact = 57.2957795130823;
var m_pi = Math.PI;
var m_timeToSmoke = 1;
var m_flare = "flare_fire01";
}
Symbol 2552 MovieClip [__Packages.SpThunderCloud] Frame 0
class SpThunderCloud extends Spell
{
var dead, m_maxDur, m_duration, m_timeToStrike, m_strikeWaitTime, m_lightningDamage, m_lightningBolts, m_spellManager, m_debrisManager, m_xpos, m_ypos, m_skill, m_cloud, m_rank;
function SpThunderCloud (sm) {
super(sm);
dead = false;
m_maxDur = 600;
m_duration = m_maxDur;
m_timeToStrike = 25;
m_strikeWaitTime = 5;
m_lightningDamage = 20;
m_lightningBolts = new Array("lightning_01", "lightning_02", "lightning_03", "lightning_04", "lightning_05");
}
function step() {
if (!dead) {
if (m_duration == m_maxDur) {
loadCloud();
} else if (m_duration < 0) {
destroy();
dead = true;
} else {
doAction();
}
m_duration = m_duration - GameApp.m_gSpeed;
}
}
function doAction() {
if (((m_timeToStrike = m_timeToStrike - GameApp.m_gSpeed)) < 0) {
m_spellManager.m_levelManager.m_soundManager.addSound("lightning_deep.wav");
m_timeToStrike = m_strikeWaitTime + random(m_strikeWaitTime);
var _local4 = m_debrisManager.addDebrisBG(getRandomLightingBolt(), 10, 1, 1, 1);
var _local2 = (m_xpos + random(100)) - 50;
_local4.setAttributes(0, 0, 0, 0, _local2, m_ypos);
var _local3 = _local4.getClip();
if (random(2) == 0) {
_local3._xscale = -100;
}
var _local5 = m_spellManager.m_levelManager.getElevation(_local2) - m_ypos;
constructLightingBolt(_local3, _local5);
m_debrisManager.addCriticalSrikeMarker(_local2, m_spellManager.m_levelManager.getElevation(_local2));
testHitObjects(_local2);
}
}
function constructLightingBolt(clip, distToGround) {
var _local8 = 0.95;
var _local7 = clip._height * _local8;
var _local3;
var _local5;
var _local6 = Math.ceil(distToGround / _local7);
var _local2 = 0;
while (_local2 < _local6) {
_local3 = getRandomLightingBolt();
_local5 = clip.attachMovie(_local3, (_local3 + "_id_") + _local2, _local2 + 1);
_local5._y = clip._height - 5;
_local2++;
}
}
function getRandomLightingBolt() {
return(m_lightningBolts[random(m_lightningBolts.length)]);
}
function testHitObjects(xs) {
var _local5 = new Array();
var _local2;
var _local3;
var _local6 = 0;
while (_local6 < m_spellManager.m_levelManager.m_airUnits.length) {
_local2 = m_spellManager.m_levelManager.m_airUnits[_local6];
if (_local2.canGetHit()) {
_local3 = _local2.m_clip.hitbox._width * 0.75;
if (((xs < (_local2.xpos + _local3)) && (xs > (_local2.xpos - _local3))) && (_local2.ypos > m_ypos)) {
_local5.push(_local2);
}
}
_local6++;
}
_local6 = 0;
while (_local6 < m_spellManager.m_levelManager.m_goodTeam.length) {
_local2 = m_spellManager.m_levelManager.m_goodTeam[_local6];
if (_local2.canGetHit()) {
_local3 = _local2.m_clip.hitbox._width * 0.75;
if (((xs < (_local2.xpos + _local3)) && (xs > (_local2.xpos - _local3))) && (_local2.ypos > m_ypos)) {
_local5.push(_local2);
}
}
_local6++;
}
_local6 = 0;
while (_local6 < m_spellManager.m_levelManager.m_badTeam.length) {
_local2 = m_spellManager.m_levelManager.m_badTeam[_local6];
if (_local2.canGetHit()) {
_local3 = _local2.m_clip.hitbox._width * 0.75;
if (((xs < (_local2.xpos + _local3)) && (xs > (_local2.xpos - _local3))) && (_local2.ypos > m_ypos)) {
_local5.push(_local2);
}
}
_local6++;
}
_local6 = 0;
while (_local6 < _local5.length) {
_local2 = _local5[_local6];
var _local7 = (_local2.getMultLighting() * m_lightningDamage) + random(Math.floor(m_lightningDamage / 4));
var _local8 = new ImpactEffect(_local2.m_effectsManager, "impact", "indicator_impact", _local2, 10, 9999);
_local8.setAmt(_local7);
_local2.m_effectsManager.addEffect(_local8);
if (((m_skill != null) && (_local2 instanceof Fighter)) && (Fighter(_local2).isBad())) {
m_skill.addXP(Util.calcXP(_local7));
}
_local6++;
}
}
function destroy() {
var _local2 = m_debrisManager.addDebris("deb_thunder_cloud_fade", 30, 30, 1, 30);
_local2.setAttributes(0, 0, 0, 0, m_xpos, m_ypos);
m_cloud.destroy();
m_spellManager.removeSpell(this);
}
function setLocation(px, py) {
m_xpos = px;
m_ypos = py;
}
function loadCloud() {
var _local2 = m_spellManager.m_levelManager.getNextObjectLevel();
m_cloud = new GameObject(m_spellManager.m_levelManager, "deb_thunder_cloud", m_xpos, m_ypos, m_spellManager.m_levelManager.m_clip.object_layer, _local2, 100);
m_cloud.m_clip.lvl = _local2;
m_spellManager.m_levelManager.m_gameObjects.push(m_cloud);
}
function setRank(rank) {
m_rank = rank;
m_strikeWaitTime = Math.floor(50 / (2 + (m_rank * 0.5)));
m_duration = (m_maxDur = 500 + (m_rank * 300));
m_lightningDamage = Math.floor(70 * (1 + (m_rank / 6)));
}
}
Symbol 2553 MovieClip [__Packages.FlakBombSkill] Frame 0
class FlakBombSkill extends Skill
{
var m_skillName, m_skillRank, m_iconName, m_coolDownTimeMax, m_coolDownTime, m_levelManager;
function FlakBombSkill () {
super();
m_skillName = "Flak Bomb Arrow";
m_skillRank = 0;
m_iconName = "skill_icon_arrow_flak";
m_coolDownTimeMax = (m_coolDownTime = 330);
}
function performAction(p_vx, p_vy, p_x, p_y) {
if (m_coolDownTime <= 0) {
var _local3 = m_levelManager.getNextObjectLevel();
var _local2 = new FlakBombArrow(m_levelManager, "arrow_flak_bomb", p_x, p_y, m_levelManager.m_clip.object_layer, _local3, 100);
_local2.setTeam(Fighter.GOOD);
_local2.m_clip.lvl = _local3;
_local2.setVelocity(p_vx, p_vy);
_local2.setOwningObject(m_levelManager.m_hero);
m_levelManager.m_gameObjects.push(_local2);
_local2.setOwningStructure(m_levelManager.m_hero.getGarrisonedBuilding());
_local2.setSkill(this);
_local2.setRank(m_skillRank);
m_levelManager.addActivationObject(_local2);
m_coolDownTime = m_coolDownTimeMax;
}
}
}
Symbol 2554 MovieClip [__Packages.FlakBombArrow] Frame 0
class FlakBombArrow extends StandardArrow
{
var m_flare, m_levelManager, xpos, ypos, destroy, m_skill, m_rank, doProjectileReaction;
function FlakBombArrow (levelManager, clip, par_x, par_y, layer, lvl, par_hp) {
super(levelManager, clip, par_x, par_y, layer, lvl, par_hp);
m_flare = "flare_ice01";
}
function updateSmoke() {
}
function testHit() {
if (ypos > (m_levelManager.getElevation(xpos) + 10)) {
m_levelManager.removeActivationObject(this);
destroy();
}
}
function doProjectileAction(tempObj) {
var _local2 = new SpFlakBomb(m_levelManager.m_spellManager);
_local2.setLocation(xpos, ypos);
_local2.setSkill(m_skill);
_local2.setRank(m_rank);
destroy();
}
function activate() {
doProjectileReaction(null);
}
}
Symbol 2555 MovieClip [__Packages.SpFlakBomb] Frame 0
class SpFlakBomb extends Spell
{
var dead, m_timeToStrike, m_numCharges, m_debrisManager, m_xpos, m_ypos, m_spellManager, m_skill, m_rank;
function SpFlakBomb (sm) {
super(sm);
dead = false;
m_timeToStrike = 0;
m_numCharges = 3;
}
function step() {
if (!dead) {
if (m_numCharges <= 0) {
destroy();
dead = true;
} else if (((m_timeToStrike = m_timeToStrike - GameApp.m_gSpeed)) <= 0) {
doAction();
}
}
}
function doAction() {
m_numCharges--;
m_timeToStrike = 15;
var _local2 = m_debrisManager.addDebris("deb_flak_bomb", 100, 100, 1, 100);
var _local3 = (m_xpos + random(100)) - 50;
var _local4 = (m_ypos + random(100)) - 50;
_local2.setAttributes(0, 0, 0, 0, _local3, _local4, random(360));
_local2.setDebSize(m_bombRadius * 0.8);
testHitObjects(_local3, _local4);
m_spellManager.m_levelManager.m_soundManager.addSound("Bomb Explosion.wav");
}
function testHitObjects(xs, ys) {
var _local2;
var _local3;
var _local5;
var _local4;
var _local8 = 0;
while (_local8 < m_spellManager.m_levelManager.m_airUnits.length) {
_local2 = m_spellManager.m_levelManager.m_airUnits[_local8];
if (_local2.canGetHit()) {
_local5 = _local2.xpos - xs;
_local4 = _local2.ypos - ys;
_local3 = Math.sqrt((_local5 * _local5) + (_local4 * _local4));
if (_local3 < m_bombRadius) {
doDamage(_local2, _local3, m_bombRadius);
} else if (_local2.m_clip.hitbox.hitTest(xs, ys, 0)) {
doDamage(_local2, 0, m_bombRadius);
}
}
_local8++;
}
_local8 = 0;
while (_local8 < m_spellManager.m_levelManager.m_goodTeam.length) {
_local2 = m_spellManager.m_levelManager.m_goodTeam[_local8];
if (_local2.canGetHit()) {
_local5 = _local2.xpos - xs;
_local4 = _local2.ypos - ys;
_local3 = Math.sqrt((_local5 * _local5) + (_local4 * _local4));
if (_local3 < m_bombRadius) {
doDamage(_local2, _local3, m_bombRadius);
} else if (_local2.m_clip.hitbox.hitTest(xs, ys, 0)) {
doDamage(_local2, 0, m_bombRadius);
}
}
_local8++;
}
_local8 = 0;
while (_local8 < m_spellManager.m_levelManager.m_badTeam.length) {
_local2 = m_spellManager.m_levelManager.m_badTeam[_local8];
if (_local2.canGetHit()) {
_local5 = _local2.xpos - xs;
_local4 = _local2.ypos - ys;
_local3 = Math.sqrt((_local5 * _local5) + (_local4 * _local4));
if (_local3 < m_bombRadius) {
doDamage(_local2, _local3, m_bombRadius);
} else if (_local2.m_clip.hitbox.hitTest(xs, ys, 0)) {
doDamage(_local2, 0, m_bombRadius);
}
}
_local8++;
}
}
function doDamage(tempObj, dist, radius) {
var _local3 = ((1 - (dist / radius)) * m_maxDamage) * tempObj.getMultFlak();
var _local4 = new ImpactEffect(tempObj.m_effectsManager, "impact", "indicator_impact", tempObj, 10, 9999);
_local4.setAmt(_local3);
tempObj.m_effectsManager.addEffect(_local4);
if (((m_skill != null) && (tempObj instanceof Fighter)) && (Fighter(tempObj).isBad())) {
m_skill.addXP(Util.calcXP(_local3));
}
}
function destroy() {
m_spellManager.removeSpell(this);
}
function setLocation(px, py) {
m_xpos = px;
m_ypos = py;
}
function setNumCharges(amt) {
m_numCharges = amt;
}
function setBombRadius(amt) {
m_bombRadius = amt;
}
function setMaxDamage(amt) {
m_maxDamage = amt;
}
function setRank(rank) {
m_rank = rank;
m_maxDamage = Math.floor(40 * (1 + (m_rank / 10)));
m_bombRadius = 50;
m_numCharges = 3 + Math.floor(m_rank * 0.3);
}
var m_bombRadius = 50;
var m_maxDamage = 100;
}
Symbol 2556 MovieClip [__Packages.BombArrowSkill] Frame 0
class BombArrowSkill extends Skill
{
var m_skillName, m_iconName, m_skillRank, m_coolDownTimeMax, m_coolDownTime, m_levelManager;
function BombArrowSkill () {
super();
m_skillName = "Bomb Arrow";
m_iconName = "skill_icon_arrow_bomb";
m_skillRank = 0;
m_coolDownTimeMax = (m_coolDownTime = 990);
}
function performAction(p_vx, p_vy, p_x, p_y) {
trace("Bomb Arrow Skill's m_levelManager: " + m_levelManager);
if (m_coolDownTime <= 0) {
var _local3 = m_levelManager.getNextObjectLevel();
trace("Level: " + _local3);
trace("p_vx: " + p_vx);
trace("p_vy: " + p_vy);
trace("p_x: " + p_x);
trace("p_y: " + p_y);
var _local2 = new BombArrow(m_levelManager, "arrow_bomb", p_x, p_y, m_levelManager.m_clip.object_layer, _local3, 100);
_local2.setTeam(Fighter.GOOD);
_local2.setStickyArrowType("sticky_arrow_hero");
_local2.setSkill(this);
_local2.setRank(m_skillRank);
_local2.setOwningObject(m_levelManager.m_hero);
_local2.m_clip.lvl = _local3;
trace("proj.m_clip = " + _local2.m_clip);
_local2.setVelocity(p_vx, p_vy);
trace("proj.xpos = " + _local2.xpos);
trace("proj.ypos = " + _local2.ypos);
m_levelManager.m_gameObjects.push(_local2);
m_coolDownTime = m_coolDownTimeMax;
}
}
}
Symbol 2557 MovieClip [__Packages.BombArrow] Frame 0
class BombArrow extends StandardArrow
{
var m_flares, m_flare, m_flareLifeSpan, m_flareAnimDur, m_flareAnimRate, m_flareAnimEnd, ypos, m_timeToSmoke, m_levelManager, xpos, doProjectileReaction, m_dmg, m_range, addXPBonus, m_skill, m_rank, destroy;
function BombArrow (levelManager, clip, par_x, par_y, layer, lvl, par_hp) {
super(levelManager, clip, par_x, par_y, layer, lvl, par_hp);
m_flares = new Array("flare_ball_04", "flare_ball_04", "flare_ball_04", "flare_ball_04", "flare_ball_04", "flare_ball_03");
m_flare = "flare_smoke_puff";
m_flareLifeSpan = 50;
m_flareAnimDur = 50;
m_flareAnimRate = 1;
m_flareAnimEnd = 50;
}
function updateSmoke() {
if ((ypos > -10) && (((m_timeToSmoke = m_timeToSmoke - GameApp.m_gSpeed)) < 0)) {
m_timeToSmoke = 0;
var _local2 = 0;
while (_local2 < 2) {
m_flare = getRandomFlare();
var _local3 = m_levelManager.m_debrisManager.addDebrisBG(m_flare, m_flareLifeSpan, m_flareAnimDur, m_flareAnimRate, m_flareAnimEnd);
_local3.setAttributes(0, 0, 0, 0, (xpos + random(8)) - 4, (ypos + random(8)) - 4, 0);
_local2++;
}
}
}
function getRandomFlare() {
return(m_flares[random(m_flares.length)]);
}
function hitGround() {
doProjectileReaction(null);
}
function doProjectileAction(tempObj) {
var _local6 = m_dmg;
var _local9 = m_range;
var _local5 = Math.floor(100 + (_local6 * 0.5));
if (_local5 > 140) {
_local5 = 140;
}
if (tempObj != null) {
addXPBonus(tempObj);
var _local7 = new ImpactEffect(tempObj.m_effectsManager, "impact", "indicator_impact", tempObj, 10, 9999);
var _local4 = tempObj.getMultBlunt() * _local6;
_local7.setAmt(_local4);
var _local8 = 3;
m_levelManager.addMessage("" + _local4, xpos, ypos);
tempObj.m_effectsManager.addEffect(_local7);
if (m_skill != null) {
m_skill.addXP(Util.calcXP(_local4));
}
trace("Checking if hit object is a structure:");
if (tempObj instanceof Structure) {
trace("Object is a structure... commencing rock explosion");
Structure(tempObj).bounceProjectileExplosion(this, _local8, _local5);
}
}
var _local3 = new SpBomb(m_levelManager.m_spellManager);
_local3.setLocation(xpos, ypos);
_local3.setBombRadius(m_range);
_local3.setMaxDamage(m_dmg);
_local3.setSkill(m_skill);
_local3.setRank(m_rank);
destroy();
}
function setRank(rank) {
m_rank = rank;
m_dmg = Math.floor((100 + random(50)) * (1 + (m_rank / 10)));
m_range = Math.floor(50 * (1 + (m_rank / 10)));
}
}
Symbol 2558 MovieClip [__Packages.SpBomb] Frame 0
class SpBomb extends Spell
{
var dead, m_timeToStrike, m_numCharges, m_debrisManager, m_xpos, m_ypos, m_spellManager, m_skill;
function SpBomb (sm) {
super(sm);
dead = false;
m_timeToStrike = 0;
m_numCharges = 1;
}
function step() {
if (!dead) {
if (m_numCharges <= 0) {
destroy();
dead = true;
} else if (((m_timeToStrike = m_timeToStrike - GameApp.m_gSpeed)) <= 0) {
doAction();
}
}
}
function doAction() {
m_numCharges--;
m_timeToStrike = 20;
var _local2 = m_debrisManager.addDebris("bomb_blast", 52, 52, 0.5, 26);
_local2.setDebSizeWidth(m_bombRadius * 2);
_local2.setAttributes(0, 0, 0, 0, m_xpos, m_ypos, 0);
testHitObjects(m_xpos, m_ypos);
m_spellManager.m_levelManager.m_soundManager.addSound("bomb_hit.wav");
}
function testHitObjects(xs, ys) {
var _local2;
var _local3;
var _local5;
var _local4;
trace("Bomb!!!");
var _local6 = 0;
while (_local6 < m_spellManager.m_levelManager.m_airUnits.length) {
_local2 = m_spellManager.m_levelManager.m_airUnits[_local6];
if (_local2.canGetHit()) {
_local5 = _local2.xpos - xs;
_local4 = _local2.ypos - ys;
_local3 = Math.sqrt((_local5 * _local5) + (_local4 * _local4));
if (_local3 < m_bombRadius) {
doDamage(_local2, _local3, m_bombRadius);
}
}
_local6++;
}
_local6 = 0;
while (_local6 < m_spellManager.m_levelManager.m_goodTeam.length) {
_local2 = m_spellManager.m_levelManager.m_goodTeam[_local6];
if (_local2.canGetHit()) {
_local5 = _local2.xpos - xs;
_local4 = _local2.ypos - ys;
_local3 = Math.sqrt((_local5 * _local5) + (_local4 * _local4));
if (_local3 < m_bombRadius) {
doDamage(_local2, _local3, m_bombRadius);
}
}
_local6++;
}
_local6 = 0;
while (_local6 < m_spellManager.m_levelManager.m_badTeam.length) {
_local2 = m_spellManager.m_levelManager.m_badTeam[_local6];
if (_local2.canGetHit()) {
_local5 = _local2.xpos - xs;
_local4 = _local2.ypos - ys;
_local3 = Math.sqrt((_local5 * _local5) + (_local4 * _local4));
if (_local3 < m_bombRadius) {
doDamage(_local2, _local3, m_bombRadius);
}
}
_local6++;
}
}
function doDamage(tempObj, dist, radius) {
var _local3 = ((1 - (dist / radius)) * m_maxDamage) * tempObj.getMultBlunt();
var _local4 = new ImpactEffect(tempObj.m_effectsManager, "impact", "indicator_impact", tempObj, 10, 9999);
_local4.setAmt(_local3);
tempObj.m_effectsManager.addEffect(_local4);
if (((m_skill != null) && (tempObj instanceof Fighter)) && (Fighter(tempObj).isBad())) {
m_skill.addXP(Util.calcXP(_local3));
}
}
function destroy() {
m_spellManager.removeSpell(this);
}
function setNumCharges(amt) {
m_numCharges = amt;
}
function setBombRadius(amt) {
m_bombRadius = amt;
}
function setMaxDamage(amt) {
m_maxDamage = amt;
}
var m_bombRadius = 100;
var m_maxDamage = 100;
}
Symbol 2559 MovieClip [__Packages.ArcherSkill] Frame 0
class ArcherSkill extends ReinforcementSkill
{
var m_skillName, m_skillRank, m_iconName, m_coolDownTimeMax, m_coolDownTime, m_cost, m_squadSize, m_popValue, m_autoCast, m_levelManager;
function ArcherSkill () {
super();
m_skillName = "Archer";
m_skillRank = 0;
m_iconName = "skill_icon_archer";
m_coolDownTimeMax = (m_coolDownTime = 660);
m_cost = 20;
m_squadSize = 4;
m_popValue = 1;
m_autoCast = true;
}
function performAction(p_vx, p_vy, p_x, p_y) {
if ((((m_coolDownTime <= 0) && (m_levelManager.m_game.profileManager.m_active.m_gold >= m_cost)) && (!m_levelManager.m_goodReinforcementManager.queueIsFull())) && (m_levelManager.canQueueFriendReinforcement(m_squadSize, m_popValue))) {
m_levelManager.m_goodReinforcementManager.addType(new FighterTicket("archer", "good_archer_icon", m_skillRank, this, m_popValue), m_squadSize);
m_levelManager.m_game.profileManager.m_active.m_gold = m_levelManager.m_game.profileManager.m_active.m_gold - m_cost;
m_levelManager.addGoldSpent(m_cost);
m_levelManager.refreshGold();
m_coolDownTime = m_coolDownTimeMax;
}
}
}
Symbol 2560 MovieClip [__Packages.FighterTicket] Frame 0
class FighterTicket
{
var m_type, m_iconName, m_rank, m_skill, m_popValue;
function FighterTicket (fType, iconName, rank, sk, popVal) {
m_type = fType;
m_iconName = iconName;
m_rank = rank;
m_skill = sk;
m_popValue = popVal;
}
function getRank() {
return(m_rank);
}
function getType() {
return(m_type);
}
function getSkill() {
return(m_skill);
}
function getIconName() {
return(m_iconName);
}
function getPopValue() {
trace("Returning pop value: " + m_popValue);
return(m_popValue);
}
}
Symbol 2561 MovieClip [__Packages.GruntSkill] Frame 0
class GruntSkill extends ReinforcementSkill
{
var m_skillName, m_skillRank, m_iconName, m_coolDownTimeMax, m_coolDownTime, m_cost, m_squadSize, m_popValue, m_autoCast, m_levelManager;
function GruntSkill () {
super();
m_skillName = "Grunt";
m_skillRank = 0;
m_iconName = "skill_icon_grunt";
m_coolDownTimeMax = (m_coolDownTime = 660);
m_cost = 20;
m_squadSize = 4;
m_popValue = 1;
m_autoCast = true;
}
function performAction(p_vx, p_vy, p_x, p_y) {
if ((((m_coolDownTime <= 0) && (m_levelManager.m_game.profileManager.m_active.m_gold >= m_cost)) && (!m_levelManager.m_goodReinforcementManager.queueIsFull())) && (m_levelManager.canQueueFriendReinforcement(m_squadSize, m_popValue))) {
m_levelManager.m_goodReinforcementManager.addType(new FighterTicket("small_grunt", "good_grunt_icon", m_skillRank, this, m_popValue), m_squadSize);
m_levelManager.m_game.profileManager.m_active.m_gold = m_levelManager.m_game.profileManager.m_active.m_gold - m_cost;
m_levelManager.addGoldSpent(m_cost);
m_levelManager.refreshGold();
m_coolDownTime = m_coolDownTimeMax;
}
}
}
Symbol 2562 MovieClip [__Packages.TallGruntSkill] Frame 0
class TallGruntSkill extends ReinforcementSkill
{
var m_skillName, m_skillRank, m_iconName, m_coolDownTimeMax, m_coolDownTime, m_cost, m_squadSize, m_popValue, m_autoCast, m_levelManager;
function TallGruntSkill () {
super();
m_skillName = "Tall Grunt";
m_skillRank = 0;
m_iconName = "skill_icon_grunt2";
m_coolDownTimeMax = (m_coolDownTime = 660);
m_cost = 30;
m_squadSize = 3;
m_popValue = 1;
m_autoCast = true;
}
function performAction(p_vx, p_vy, p_x, p_y) {
if ((((m_coolDownTime <= 0) && (m_levelManager.m_game.profileManager.m_active.m_gold >= m_cost)) && (!m_levelManager.m_goodReinforcementManager.queueIsFull())) && (m_levelManager.canQueueFriendReinforcement(m_squadSize, m_popValue))) {
m_levelManager.m_goodReinforcementManager.addType(new FighterTicket("big_grunt", "good_tall_grunt_icon", m_skillRank, this, m_popValue), m_squadSize);
m_levelManager.m_game.profileManager.m_active.m_gold = m_levelManager.m_game.profileManager.m_active.m_gold - m_cost;
m_levelManager.addGoldSpent(m_cost);
m_levelManager.refreshGold();
m_coolDownTime = m_coolDownTimeMax;
}
}
}
Symbol 2563 MovieClip [__Packages.MountSkill] Frame 0
class MountSkill extends ReinforcementSkill
{
var m_skillName, m_skillRank, m_iconName, m_coolDownTimeMax, m_coolDownTime, m_cost, m_squadSize, m_popValue, m_autoCast, m_levelManager;
function MountSkill () {
super();
m_skillName = "Mount";
m_skillRank = 0;
m_iconName = "skill_icon_mount";
m_coolDownTimeMax = (m_coolDownTime = 660);
m_cost = 30;
m_squadSize = 4;
m_popValue = 1;
m_autoCast = true;
}
function performAction(p_vx, p_vy, p_x, p_y) {
if ((((m_coolDownTime <= 0) && (m_levelManager.m_game.profileManager.m_active.m_gold >= m_cost)) && (!m_levelManager.m_goodReinforcementManager.queueIsFull())) && (m_levelManager.canQueueFriendReinforcement(m_squadSize, m_popValue))) {
m_levelManager.m_goodReinforcementManager.addType(new FighterTicket("mount", "good_mount_icon", m_skillRank, this, m_popValue), m_squadSize);
m_levelManager.m_game.profileManager.m_active.m_gold = m_levelManager.m_game.profileManager.m_active.m_gold - m_cost;
m_levelManager.addGoldSpent(m_cost);
m_levelManager.refreshGold();
m_coolDownTime = m_coolDownTimeMax;
}
}
}
Symbol 2564 MovieClip [__Packages.PriestSkill] Frame 0
class PriestSkill extends ReinforcementSkill
{
var m_skillName, m_skillRank, m_iconName, m_coolDownTimeMax, m_coolDownTime, m_cost, m_squadSize, m_popValue, m_autoCast, m_levelManager;
function PriestSkill () {
super();
m_skillName = "Priest";
m_skillRank = 0;
m_iconName = "skill_icon_priest";
m_coolDownTimeMax = (m_coolDownTime = 660);
m_cost = 30;
m_squadSize = 2;
m_popValue = 1;
m_autoCast = true;
}
function performAction(p_vx, p_vy, p_x, p_y) {
if ((((m_coolDownTime <= 0) && (m_levelManager.m_game.profileManager.m_active.m_gold >= m_cost)) && (!m_levelManager.m_goodReinforcementManager.queueIsFull())) && (m_levelManager.canQueueFriendReinforcement(m_squadSize, m_popValue))) {
m_levelManager.m_goodReinforcementManager.addType(new FighterTicket("priest", "good_priest_icon", m_skillRank, this, m_popValue), m_squadSize);
m_levelManager.m_game.profileManager.m_active.m_gold = m_levelManager.m_game.profileManager.m_active.m_gold - m_cost;
m_levelManager.addGoldSpent(m_cost);
m_levelManager.refreshGold();
m_coolDownTime = m_coolDownTimeMax;
}
}
}
Symbol 2565 MovieClip [__Packages.TrebuchetSkill] Frame 0
class TrebuchetSkill extends ReinforcementSkill
{
var m_skillName, m_skillRank, m_iconName, m_coolDownTimeMax, m_coolDownTime, m_cost, m_squadSize, m_popValue, m_autoCast, m_levelManager;
function TrebuchetSkill () {
super();
m_skillName = "Trebuchet";
m_skillRank = 0;
m_iconName = "skill_icon_catapult";
m_coolDownTimeMax = (m_coolDownTime = 1980);
m_cost = 70;
m_squadSize = 1;
m_popValue = 4;
m_autoCast = true;
}
function performAction(p_vx, p_vy, p_x, p_y) {
if ((((m_coolDownTime <= 0) && (m_levelManager.m_game.profileManager.m_active.m_gold >= m_cost)) && (!m_levelManager.m_goodReinforcementManager.queueIsFull())) && (m_levelManager.canQueueFriendReinforcement(m_squadSize, m_popValue))) {
m_levelManager.m_goodReinforcementManager.addType(new FighterTicket("trebuchet", "good_treb_icon", m_skillRank, this, m_popValue), m_squadSize);
m_levelManager.m_game.profileManager.m_active.m_gold = m_levelManager.m_game.profileManager.m_active.m_gold - m_cost;
m_levelManager.addGoldSpent(m_cost);
m_levelManager.refreshGold();
m_coolDownTime = m_coolDownTimeMax;
}
}
}
Symbol 2566 MovieClip [__Packages.PoisonEffect] Frame 0
class PoisonEffect extends Effect
{
var m_sickNess, m_target;
function PoisonEffect (manager, etype, clipName, target, duration, tick) {
super(manager, etype, clipName, target, duration, tick);
m_sickNess = 10;
}
function performEffect() {
m_target.takeDamage(random(m_sickNess), false);
m_sickNess = Math.floor(m_sickNess * 1.5);
}
function setSickness(amt) {
m_sickNess = amt;
}
}
Symbol 2567 MovieClip [__Packages.Flag] Frame 0
class Flag extends GameObject
{
var m_canGetHit, m_flagStatus, m_clip, m_holder, xpos, ypos, updateClip;
function Flag (levelManager, clip, par_x, par_y, layer, lvl, par_hp) {
super(levelManager, clip, par_x, par_y, layer, lvl, par_hp);
m_canGetHit = false;
m_flagStatus = AT_BASE;
trace("In Flag Class: m_goodFlag.m_clip = " + m_clip);
}
function captured() {
return(m_flagStatus == CAPTURED);
}
function setFlagStatus(num) {
m_flagStatus = num;
}
function setHolder(holder) {
m_holder = holder;
}
function atBase() {
return(m_flagStatus == AT_BASE);
}
function heldByEnemy() {
return(m_flagStatus == HELD_BY_ENEMY);
}
function heldByFriend() {
return(m_flagStatus == HELD_BY_FRIEND);
}
function grounded() {
return(m_flagStatus == GROUNDED);
}
function step() {
if (m_holder != null) {
xpos = m_holder.xpos;
ypos = m_holder.ypos - 50;
updateClip();
}
}
var GROUNDED = 0;
var HELD_BY_ENEMY = 1;
var HELD_BY_FRIEND = 2;
var AT_BASE = 3;
var CAPTURED = 4;
}
Symbol 2568 MovieClip [__Packages.FlagFighter] Frame 0
class FlagFighter extends Fighter
{
var actionMode, m_holdingFriendFlag, m_holdingEnemyFlag, m_runner, m_type, vx, tst_animRateFact, m_speed, m_orig_speed, m_hp, m_effectsManager, actionDuration, checkGarrison, animate, updateClip, dead, m_enemyFlag, m_friendFlag, m_forward, xpos, ypos, m_levelManager, attack, standStill, unitDie, rot, engageEnemiesAttackingMe, engageEnemiesInRange, m_engagementManager, animRate, animStartFrame, ATTACK_START, animFrame, animEnd, ATTACK_END, addImmunity, m_speedFactor, m_clip, engaged, ADVANCE_START, ADVANCE_END, m_immunities, DEAD_IMMUNITIES, DIE_START, DIE_END, unlinkEngagements, m_knockedDown, m_teamNum, setForward, setEnemyList, setFriendList, cleanup, enemies;
function FlagFighter (levelManager, clip, par_x, par_y, layer, lvl, par_hp) {
super(levelManager, clip, par_x, par_y, layer, lvl, par_hp);
actionMode = "move";
m_holdingFriendFlag = false;
m_holdingEnemyFlag = false;
m_runner = random(2);
m_type = "living";
}
function setVx(num) {
vx = num * tst_animRateFact;
m_speed = Math.abs(vx);
m_orig_speed = m_speed;
}
function step() {
if (m_hp > 0) {
m_effectsManager.step();
}
actionDuration = actionDuration - GameApp.m_gSpeed;
checkGarrison();
doAction();
animate();
updatePos();
updateClip();
updateRotation();
if ((!dead) && (actionDuration < 0)) {
getNextAction();
} else if (dead && (actionDuration < 0)) {
destroy();
}
}
function setEnemyFlag(flag) {
m_enemyFlag = flag;
}
function setFriendFlag(flag) {
m_friendFlag = flag;
}
function flagInFront(flag) {
if (m_forward > 0) {
return(flag.xpos > xpos);
}
return(flag.xpos < xpos);
}
function enemyFlagInFront() {
if (m_forward > 0) {
return(m_enemyFlag.xpos > xpos);
}
return(m_enemyFlag.xpos < xpos);
}
function friendFlagInFront() {
if (m_forward > 0) {
return(m_friendFlag.xpos > xpos);
}
return(m_friendFlag.xpos < xpos);
}
function flagInRange(flag) {
return(Math.abs(xpos - flag.xpos) < 60);
}
function friendFlagInRange() {
return(Math.abs(xpos - m_friendFlag.xpos) < 60);
}
function enemyFlagInRange() {
return(Math.abs(xpos - m_enemyFlag.xpos) < 60);
}
function distToEnemyFlag() {
return(Math.abs(xpos - m_enemyFlag.xpos));
}
function distToFriendFlag() {
return(Math.abs(xpos - m_friendFlag.xpos));
}
function advance() {
}
function updatePos() {
xpos = xpos + vx;
ypos = m_levelManager.getElevation(xpos);
}
function updateRotation() {
}
function doAction() {
if (actionMode == "move") {
} else if (actionMode == "attack") {
attack();
} else if (actionMode == "block") {
standStill();
} else if (actionMode == "die") {
unitDie();
} else if (actionMode == "rot") {
rot();
} else if (actionMode == "remove") {
destroy();
} else if (actionMode == "daze") {
daze();
} else if (actionMode == "knock_back") {
knockBack();
}
}
function getNextAction() {
var _local3;
var _local2;
if (m_hp > 0) {
engageEnemiesAttackingMe();
if (m_runner == 0) {
engageEnemiesInRange();
}
}
if (m_hp <= 0) {
setActionDie();
} else if (m_engagementManager.getNumAttacking() > 0) {
setActionAttack();
} else if (m_holdingEnemyFlag) {
if (closeToHome()) {
setActionFlagCaptured();
} else {
setActionRetreat();
}
} else if (m_holdingFriendFlag) {
if (closeToHome()) {
setActionFlagReturned();
} else {
setActionRetreat();
}
} else {
if (distToFriendFlag() > distToEnemyFlag()) {
_local3 = m_friendFlag;
_local2 = m_enemyFlag;
} else {
_local3 = m_enemyFlag;
_local2 = m_friendFlag;
}
if ((((((((_local2.grounded() || ((_local2 == m_enemyFlag) && (_local2.atBase()))) || ((_local2 == m_friendFlag) && (_local2.captured()))) || ((_local2 == m_friendFlag) && (_local2.heldByEnemy()))) || ((_local2 == m_enemyFlag) && (_local2.heldByFriend()))) || (((_local2 == m_friendFlag) && (_local2.heldByFriend())) && (m_enemyFlag.captured()))) || (((_local2 == m_enemyFlag) && (_local2.heldByEnemy())) && (m_friendFlag.atBase()))) || (((_local2 == m_friendFlag) && (_local2.heldByFriend())) && (m_enemyFlag.heldByEnemy()))) || (((_local2 == m_enemyFlag) && (_local2.heldByEnemy())) && (m_friendFlag.heldByFriend()))) {
if (((!_local2.heldByEnemy()) && (!_local2.heldByFriend())) && (flagInRange(_local2))) {
if (_local2 == m_friendFlag) {
setActionPickupFriendFlag();
} else {
setActionPickupEnemyFlag();
}
} else if ((flagInRange(_local2) && (!((_local2 == m_friendFlag) && _local2.heldByEnemy()))) && (!((_local2 == m_enemyFlag) && _local2.heldByFriend()))) {
setActionBlock();
} else {
if (((_local2.heldByEnemy() || _local2.heldByFriend()) || _local3.heldByEnemy()) || _local3.heldByFriend()) {
m_runner = 0;
}
if (flagInFront(_local2)) {
setActionAdvance();
} else {
setActionRetreat();
}
}
} else if (flagInFront(_local3)) {
setActionAdvance();
} else {
setActionRetreat();
}
}
}
function closeToHome() {
if (m_forward > 0) {
return(xpos < m_levelManager.m_goodFlagRange);
}
return(xpos > m_levelManager.m_badFlagRange);
}
function setActionFlagCaptured() {
actionMode = "capture_flag";
animRate = 0.25;
actionDuration = 36;
animStartFrame = ATTACK_START;
animFrame = ATTACK_START;
animEnd = ATTACK_END;
m_holdingEnemyFlag = false;
m_enemyFlag.setFlagStatus(m_enemyFlag.CAPTURED);
m_enemyFlag.ypos = ypos;
m_enemyFlag.updateClip();
m_enemyFlag.setHolder(null);
m_levelManager.stateChange();
}
function setActionFlagReturned() {
m_speed = m_orig_speed;
actionMode = "capture_flag";
animRate = 0.25;
actionDuration = 36;
animStartFrame = ATTACK_START;
animFrame = ATTACK_START;
animEnd = ATTACK_END;
m_holdingFriendFlag = false;
m_friendFlag.setFlagStatus(m_friendFlag.AT_BASE);
m_friendFlag.ypos = ypos;
m_friendFlag.updateClip();
m_friendFlag.setHolder(null);
m_levelManager.stateChange();
}
function setActionPickupFriendFlag() {
var _local2 = 0.4;
m_speed = m_orig_speed * _local2;
actionMode = "pickup_friend_flag";
animRate = _local2;
actionDuration = 36;
animStartFrame = ATTACK_START;
animFrame = ATTACK_START;
animEnd = ATTACK_END;
m_friendFlag.setFlagStatus(m_friendFlag.HELD_BY_FRIEND);
m_friendFlag.setHolder(this);
m_holdingFriendFlag = true;
addImmunity("convert");
}
function setActionPickupEnemyFlag() {
var _local2 = 0.5;
m_speed = m_orig_speed * _local2;
actionMode = "pickup_enemy_flag";
animRate = _local2;
actionDuration = 36;
animStartFrame = ATTACK_START;
animFrame = ATTACK_START;
animEnd = ATTACK_END;
m_enemyFlag.setFlagStatus(m_enemyFlag.HELD_BY_ENEMY);
m_enemyFlag.setHolder(this);
m_holdingEnemyFlag = true;
}
function setActionAttack() {
vx = 0;
var _local2 = 4 / m_speedFactor;
actionMode = "attack";
animRate = 1 / _local2;
actionDuration = 12 * _local2;
animStartFrame = ATTACK_START;
animFrame = ATTACK_START;
animEnd = ATTACK_END;
}
function setActionAdvance() {
var _local2 = 4 / m_speedFactor;
m_clip._xscale = m_forward * 100;
vx = (m_forward * m_speed) * m_speedFactor;
actionMode = "move";
engaged = false;
animRate = Math.abs((vx * 1) / _local2);
actionDuration = Math.abs((10 * _local2) / vx);
animStartFrame = ADVANCE_START;
animFrame = ADVANCE_START;
animEnd = ADVANCE_END;
}
function setActionRetreat() {
var _local2 = 4 / m_speedFactor;
m_clip._xscale = (-m_forward) * 100;
vx = ((-m_forward) * m_speed) * m_speedFactor;
actionMode = "move";
engaged = false;
animRate = Math.abs((vx * 1) / _local2);
actionDuration = Math.abs((10 * _local2) / vx);
animStartFrame = ADVANCE_START;
animFrame = ADVANCE_START;
animEnd = ADVANCE_END;
}
function setActionBlock() {
vx = 0;
m_runner = 0;
actionMode = "block";
engaged = false;
animRate = 0;
actionDuration = 30;
animStartFrame = BLOCK_START;
animFrame = BLOCK_START;
animEnd = BLOCK_END;
}
function setActionDie() {
vx = 0;
m_immunities = DEAD_IMMUNITIES;
actionMode = "die";
animRate = 0.25;
actionDuration = 36;
animStartFrame = DIE_START;
animFrame = DIE_START;
animEnd = DIE_END;
unlinkEngagements();
}
function setActionRot() {
vx = 0;
actionMode = "rot";
dead = true;
animRate = 0;
actionDuration = 100;
animStartFrame = DIE_END;
animFrame = DIE_END;
animEnd = DIE_END;
}
function setActionFear() {
setActionRetreat();
}
function setActionKnockBack() {
var _local2 = 1;
vx = 0;
actionMode = "knock_back";
animRate = 1 / _local2;
actionDuration = 11 * _local2;
animStartFrame = KNOCKBACK_START;
animFrame = KNOCKBACK_START;
animEnd = KNOCKBACK_END;
}
function knockBack() {
if (actionDuration < 0) {
setActionDaze();
}
}
function daze() {
if (actionDuration < 0) {
setActionGetUpFromDaze();
}
}
function setActionFlinch() {
var _local2 = 1;
vx = 0;
actionMode = "flinch";
animRate = 1 / _local2;
actionDuration = ((FLINCH_END - FLINCH_START) - 1) * _local2;
animStartFrame = FLINCH_START;
animFrame = FLINCH_START;
animEnd = FLINCH_END;
}
function setActionDaze() {
m_knockedDown = true;
var _local2 = 10;
vx = 0;
actionMode = "daze";
animRate = 1 / _local2;
actionDuration = 24 * _local2;
animStartFrame = DAZE_START;
animFrame = DAZE_START;
animEnd = DAZE_END;
}
function setActionGetUpFromDaze() {
m_knockedDown = false;
var _local2 = 8;
vx = 0;
actionMode = "get_up_daze";
animRate = 1 / _local2;
actionDuration = ((GETUP_FROM_DAZE_END - GETUP_FROM_DAZE_START) - 1) * _local2;
animStartFrame = GETUP_FROM_DAZE_START;
animFrame = GETUP_FROM_DAZE_START;
animEnd = GETUP_FROM_DAZE_END;
}
function convertToOppositeTeam() {
if (m_holdingFriendFlag) {
m_holdingFriendFlag = false;
m_friendFlag.setFlagStatus(m_friendFlag.GROUNDED);
m_friendFlag.ypos = ypos;
m_friendFlag.updateClip();
m_friendFlag.setHolder(null);
} else if (m_holdingEnemyFlag) {
m_holdingEnemyFlag = false;
m_enemyFlag.setFlagStatus(m_enemyFlag.GROUNDED);
m_enemyFlag.ypos = ypos;
m_enemyFlag.updateClip();
m_enemyFlag.setHolder(null);
}
unlinkEngagements();
if (m_teamNum == Fighter.BAD) {
setForward(1);
setEnemyFlag(m_levelManager.m_badFlag);
setFriendFlag(m_levelManager.m_goodFlag);
m_levelManager.deleteFromBadTeam(this);
m_levelManager.addToGood(this);
setEnemyList(m_levelManager.m_badTeam);
setFriendList(m_levelManager.m_goodTeam);
m_teamNum = Fighter.GOOD;
} else {
setForward(-1);
setEnemyFlag(m_levelManager.m_goodFlag);
setFriendFlag(m_levelManager.m_badFlag);
m_levelManager.deleteFromGoodTeam(this);
m_levelManager.addToBad(this);
setEnemyList(m_levelManager.m_goodTeam);
setFriendList(m_levelManager.m_badTeam);
m_teamNum = Fighter.BAD;
}
m_levelManager.stateChange();
}
function destroy() {
unlinkEngagements();
if (m_teamNum == Fighter.BAD) {
m_levelManager.deleteFromBadTeam(this);
} else {
m_levelManager.deleteFromGoodTeam(this);
}
m_levelManager.deleteFromGameObjects(this);
m_clip.unloadMovie();
if (m_holdingFriendFlag) {
m_friendFlag.setFlagStatus(m_friendFlag.GROUNDED);
m_friendFlag.ypos = ypos;
m_friendFlag.updateClip();
m_friendFlag.setHolder(null);
} else if (m_holdingEnemyFlag) {
m_enemyFlag.setFlagStatus(m_enemyFlag.GROUNDED);
m_enemyFlag.ypos = ypos;
m_enemyFlag.updateClip();
m_enemyFlag.setHolder(null);
}
m_levelManager.stateChange();
cleanup();
}
function getClosestEnemyWithFlag() {
var _local3;
var _local7 = null;
var _local5 = 9999;
var _local6 = 0;
var _local4 = 0;
var _local8 = enemies.length;
var _local2 = 0;
while ((_local2 < _local8) && (_local6 < 2)) {
_local3 = enemies[_local2];
if (_local3.holdingFlag()) {
_local4 = Math.abs(_local3.xpos - xpos);
if (_local4 < _local5) {
_local5 = _local4;
_local7 = _local3;
}
_local6++;
}
_local2++;
}
return(_local7);
}
function holdingFlag() {
return(m_holdingFriendFlag || (m_holdingEnemyFlag));
}
var BLOCK_START = 15;
var BLOCK_END = 15;
var FLINCH_START = 85;
var FLINCH_END = 95;
var KNOCKBACK_START = 36;
var KNOCKBACK_END = 47;
var DAZE_START = 47;
var DAZE_END = 73;
var GETUP_FROM_DAZE_START = 72;
var GETUP_FROM_DAZE_END = 85;
}
Symbol 2569 MovieClip [__Packages.WaveManager] Frame 0
class WaveManager
{
var m_levelManager, m_timeDelayMax, m_time, m_timeDelay, m_maxNumUnits, m_numUnits;
function WaveManager (lm) {
m_levelManager = lm;
m_timeDelayMax = 900;
m_time = (m_timeDelay = m_timeDelayMax + random(300));
m_maxNumUnits = 10;
m_numUnits = m_maxNumUnits;
}
function step() {
if ((m_numUnits <= 0) && ((m_time--) <= 0)) {
m_time = (m_timeDelay = m_timeDelayMax + random(300));
m_numUnits = m_maxNumUnits;
}
refreshWaveIndicator();
}
function refreshWaveIndicator() {
m_levelManager.m_clip.enemy_wave_bar.bar._width = 100 * (1 - (m_time / m_timeDelay));
}
function addUnit() {
m_numUnits--;
}
function canAddUnit() {
return(m_numUnits > 0);
}
function setNumUnits(num) {
m_numUnits = num;
}
function setMaxNumUnits(num) {
m_maxNumUnits = num;
m_numUnits = num;
}
}
Symbol 2570 MovieClip [__Packages.Hero] Frame 0
class Hero extends Fighter
{
var m_leftKey, m_rightKey, m_upKey, m_downKey, tst_debug_name, m_effectsManager, checkGarrison, xpos, vx, ypos, m_levelManager, m_clip, leaveGarrisonedBuilding, attemptGarrison, m_speed, m_hp, dead, m_max_hp, m_rank, m_shotPower, m_bowLoadSpeed, getClosestEnemyWithHP;
function Hero (levelManager, clip, par_x, par_y, layer, lvl, par_hp) {
super(levelManager, clip, par_x, par_y, layer, lvl, par_hp);
m_leftKey = Util.KEY_A;
m_rightKey = Util.KEY_D;
m_upKey = Util.KEY_W;
m_downKey = Util.KEY_S;
tst_debug_name = "Hero";
}
function step() {
m_effectsManager.step();
checkUserInput();
checkGarrison();
updatePosition();
animate();
if (_root.g_autoPilot && ((tst_shootTime--) < 0)) {
tst_shootTime = 20 + random(50);
tstShoot();
}
}
function updatePosition() {
xpos = xpos + vx;
ypos = m_levelManager.getElevation(xpos);
m_clip._x = xpos;
m_clip._y = ypos;
}
function checkUserInput() {
if (!m_levelManager.m_game.getMouseDown()) {
if (Key.isDown(m_leftKey)) {
leaveGarrisonedBuilding();
attemptMoveLeft();
} else if (Key.isDown(m_rightKey)) {
leaveGarrisonedBuilding();
attemptMoveRight();
} else if (Key.isDown(m_upKey)) {
attemptGarrison();
} else if (Key.isDown(m_downKey)) {
leaveGarrisonedBuilding();
} else {
vx = 0;
}
} else {
vx = 0;
}
}
function animate() {
if (!m_levelManager.m_game.getMouseDown()) {
if (vx < 0) {
m_clip._xscale = -100;
animateMove();
} else if (vx > 0) {
m_clip._xscale = 100;
animateMove();
} else {
animateIdle();
}
} else {
if (Math.abs(_root._xmouse - m_levelManager.m_shooter.shooting_x) > 0.001) {
if (_root._xmouse < m_levelManager.m_shooter.shooting_x) {
m_clip._xscale = 100;
} else {
m_clip._xscale = -100;
}
}
m_clip.anim.gotoAndStop(getAimFrame());
}
}
function animateMove() {
m_clip.anim.gotoAndStop(Math.floor(moveAnimFrame));
moveAnimFrame = moveAnimFrame + moveAnimRate;
if (moveAnimFrame > moveAnimFrameEnd) {
moveAnimFrame = moveAnimFrameStart;
}
}
function animateIdle() {
m_clip.anim.gotoAndStop(Math.floor(idleAnimFrame));
idleAnimFrame = idleAnimFrame + idleAnimRate;
if (idleAnimFrame > idleAnimFrameEnd) {
idleAnimFrame = idleAnimFrameStart;
}
}
function attemptMoveLeft() {
vx = -m_speed;
}
function attemptMoveRight() {
vx = m_speed;
}
function takeDamage(amt) {
if (m_hp > 0) {
m_hp = m_hp - amt;
if (m_hp <= 0) {
dead = true;
m_levelManager.m_soundManager.addRandomDeathSound();
m_levelManager.stateChange();
} else if (amt > 0) {
m_levelManager.m_soundManager.addRandomHitSound();
}
}
m_clip.hp_bar.setPercent((100 * m_hp) / m_max_hp);
}
function setRank(rank) {
m_rank = rank;
m_shotPower = 285;
m_speed = 1.5 + (m_rank * 0.1);
m_max_hp = 300 + Math.floor(m_rank * 10);
m_hp = m_max_hp;
}
function getShotPower() {
return(m_shotPower);
}
function getBowLoadSpeed() {
return(m_bowLoadSpeed);
}
function getAimFrame() {
var _local3 = 0;
var _local2 = m_levelManager.m_shooter.m_rotation;
if ((_local2 < 0) || (_local2 >= 180)) {
if ((_local2 < 0) && (_local2 > -45)) {
_local3 = 111 + Math.floor((_local2 + 45) / 7.5);
} else if ((_local2 >= 180) && (_local2 < 225)) {
_local3 = 111 + Math.floor((225 - _local2) / 7.5);
} else {
_local3 = 111;
}
} else if ((_local2 >= 0) && (_local2 < 45)) {
_local3 = 116 + Math.floor(_local2 / 7.5);
} else if ((_local2 > 135) && (_local2 < 180)) {
_local3 = 116 + Math.floor((180 - _local2) / 7.5);
} else {
_local3 = 120;
}
return(_local3);
}
function tstShoot() {
var _local7 = getClosestEnemyWithHP();
var _local6 = m_levelManager.m_shooter.x_shotSpot;
var _local8 = m_levelManager.m_shooter.y_shotSpot;
var _local9 = _local7.xpos;
var _local12 = _local7.ypos - (_local7.m_clip._height / 2);
var _local5 = 23;
var _local13 = m_levelManager.m_gravity;
var _local11;
var _local4;
var _local2;
var _local3;
var _local10 = new Array(2);
_local3 = Util.getTheta(_local6, _local8, _local9, _local12, _local5, _local13);
_local10[0] = (_local3[0] * 180) / Math.PI;
_local10[1] = (_local3[1] * 180) / Math.PI;
if (_local3[0] == 777) {
} else {
_local11 = _local9 - _local6;
if (random(2) == 0) {
_local4 = (Math.cos(_local3[0]) * _local5) * Util.randomPercent(0.2);
_local2 = (Math.sin(_local3[0]) * _local5) * Util.randomPercent(0.2);
if (_local11 < 0) {
_local4 = -_local4;
_local2 = -_local2;
}
} else {
_local4 = (Math.cos(_local3[1]) * _local5) * Util.randomPercent(0.2);
_local2 = (Math.sin(_local3[1]) * _local5) * Util.randomPercent(0.2);
if (_local11 > 0) {
_local2 = -_local2;
} else {
_local4 = -_local4;
_local2 = -_local2;
}
}
m_levelManager.m_skillManager.getActiveSkill().performAction(_local4, _local2, _local6, _local8);
}
}
var moveAnimFrameStart = 5;
var moveAnimFrameEnd = 14;
var moveAnimRate = 0.5;
var moveAnimFrame = 5;
var idleAnimFrameStart = 5;
var idleAnimFrameEnd = 5;
var idleAnimRate = 0.5;
var idleAnimFrame = 5;
var tst_shootTime = 100;
}
Symbol 2571 MovieClip [__Packages.Shooter] Frame 0
class Shooter
{
var m_hero, m_levelManager;
function Shooter (hero, lm) {
m_hero = hero;
m_levelManager = lm;
}
function step() {
}
function destroy() {
}
var m_shotPower = 0;
var m_rotFact = 57.2957795130823;
var m_minY = 865;
}
Symbol 2572 MovieClip [__Packages.SkillManager] Frame 0
class SkillManager
{
var m_levelManager, m_actionBars, m_barNdx, m_skillSet, m_activeSkill;
function SkillManager (lm) {
m_levelManager = lm;
m_actionBars = new Array(new Array(10), new Array(10), new Array(10));
m_barNdx = 0;
}
function init(skills) {
m_actionBars = new Array(new Array(10), new Array(10), new Array(10));
m_skillSet = new Array();
var _local6 = 0;
var _local5 = 0;
var _local2;
var _local3 = 0;
while (_local3 < skills.length) {
_local2 = skills[_local3];
if (_local2 != null) {
setActionBar(_local2);
m_skillSet.push(_local2);
_local2.setLevelManager(m_levelManager);
}
_local3++;
}
m_activeSkill = m_actionBars[0][0];
}
function setActionBar(skill) {
var _local2 = skill.getActionBarID();
trace("actionButtonID: " + _local2);
if (skill.isBound()) {
var _local4 = Math.floor(_local2 / 10);
var _local3 = _local2 % 10;
m_actionBars[_local4][_local3] = skill;
}
}
function initSkillButtons() {
var _local2 = 0;
while (_local2 < 10) {
m_levelManager.m_actionButtons[_local2].unloadIcon();
m_levelManager.m_actionButtons[_local2].setPercent(0);
m_levelManager.m_actionButtons[_local2].updateXPBar(0, 0);
_local2++;
}
_local2 = 0;
while (_local2 < m_skillSet.length) {
m_skillSet[_local2].resetActionBar();
_local2++;
}
_local2 = 0;
while (_local2 < m_actionBars[m_barNdx].length) {
m_levelManager.m_actionButtons[_local2].setSkill(m_actionBars[m_barNdx][_local2]);
m_levelManager.m_actionButtons[_local2].getSkill().refreshBars();
_local2++;
}
m_activeSkill = m_actionBars[m_barNdx][0];
m_levelManager.setActionButtonGlow(0);
}
function changeSkillBarUp() {
m_barNdx--;
if (m_barNdx < 0) {
m_barNdx = MAX_BARS - 1;
}
initSkillButtons();
}
function changeSkillBarDown() {
m_barNdx++;
if (m_barNdx >= MAX_BARS) {
m_barNdx = 0;
}
initSkillButtons();
}
function step() {
var _local2 = 0;
while (_local2 < m_skillSet.length) {
m_skillSet[_local2].step();
_local2++;
}
var _local3 = m_levelManager.m_game.getMouseWheelDelta();
if (_local3 < 0) {
changeSkillBarDown();
} else if (_local3 > 0) {
changeSkillBarUp();
}
m_levelManager.m_game.resetMouseWheelDelta();
}
function setToActive(sk) {
m_activeSkill = sk;
}
function getActiveSkill() {
return(m_activeSkill);
}
var MAX_BARS = 3;
}
Symbol 2573 MovieClip [__Packages.GameOptions] Frame 0
class GameOptions
{
var m_levelManager, m_clip, m_activeWindow;
function GameOptions (lm, layer) {
m_levelManager = lm;
m_clip = layer.attachMovie("game_options_menu", "game_options_menu", 1);
m_clip.m_view = this;
m_levelManager.pauseGame();
}
function step() {
m_activeWindow.step();
}
function closeWindow() {
m_levelManager.m_game.profileManager.saveData();
trace("closing closingGameOptions");
m_levelManager.closeGameOptions();
m_clip.unloadMovie();
m_levelManager.unPauseGame();
}
function displayActionBarSetup() {
if (!(m_activeWindow instanceof ActionBarSetup)) {
closeActiveWindow();
m_activeWindow = new ActionBarSetup(this, m_clip.sub_menu_layer);
ActionBarSetup(m_activeWindow).initSkills(m_levelManager.m_game.profileManager.m_active.m_skills);
}
}
function displayGeneralOptions() {
if (!(m_activeWindow instanceof GeneralOptions)) {
closeActiveWindow();
m_activeWindow = new GeneralOptions(this, m_clip.sub_menu_layer);
}
}
function displayQuitToMenu() {
if (!(m_activeWindow instanceof QuitMenu)) {
closeActiveWindow();
m_activeWindow = new QuitMenu(this, m_clip.sub_menu_layer);
}
}
function displayHelpMenu() {
if (!(m_activeWindow instanceof HelpOptionMenu)) {
closeActiveWindow();
m_activeWindow = new HelpOptionMenu(this, m_clip.sub_menu_layer);
}
}
function closeActiveWindow() {
m_activeWindow.closeWindow();
}
function gotoMenu(menu) {
if (menu == "general") {
displayGeneralOptions();
} else if (menu == "action_bar_setup") {
displayActionBarSetup();
} else if (menu == "quit_to_menu") {
displayQuitToMenu();
} else if (menu == "help") {
displayHelpMenu();
} else {
displayGeneralOptions();
}
}
}
Symbol 2574 MovieClip [__Packages.GameOptionWindow] Frame 0
class GameOptionWindow
{
function GameOptionWindow (go, layer) {
}
function step() {
}
function closeWindow() {
}
}
Symbol 2575 MovieClip [__Packages.ActionBarSetup] Frame 0
class ActionBarSetup extends GameOptionWindow
{
var m_gameOptions, m_levelManager, m_clip, m_testedHit, m_dragIcons, m_actionButtons, m_holdingIcon, m_placed, m_pending;
function ActionBarSetup (go, layer) {
super();
m_gameOptions = go;
m_levelManager = m_gameOptions.m_levelManager;
m_clip = layer.attachMovie("action_bar_setup", "action_bar_setup", 1);
m_clip.m_view = this;
m_testedHit = false;
}
function initSkills(skills) {
initDragSkillArrays(skills);
m_dragIcons = new Array();
m_actionButtons = new Array(NUM_BUTTONS);
loadDragIcons();
}
function step() {
if (_root.mouse_down && (!m_testedHit)) {
trace("testing hit dragIcons");
m_testedHit = true;
testHitDragIcons();
} else if (!_root.mouse_down) {
m_testedHit = false;
}
if (m_holdingIcon != null) {
if (!_root.mouse_down) {
m_holdingIcon.releaseButton();
m_holdingIcon = null;
} else if (_root.mouse_down) {
trace("dragging?");
m_holdingIcon.xpos = m_clip._xmouse;
m_holdingIcon.ypos = m_clip._ymouse;
m_holdingIcon.updatePosition();
}
}
}
function loadDragIcons() {
var _local3;
var _local6 = 0;
var _local5 = 0;
var _local10 = 80;
var _local8 = 185;
var _local9 = 101.8;
var _local7 = 101.8;
var _local4 = 0;
while (_local4 < m_actionButtons.length) {
if ((_local4 % 10) == 0) {
_local6++;
_local5 = 0;
}
trace("m_clip: " + m_clip);
_local3 = m_clip.slot_layer.attachMovie("ab_slot", "slot_id" + _local4, _local4 + 1);
_local3._x = (_local5 * _local7) + _local8;
_local3._y = (_local6 * _local9) + _local10;
_local3.cacheAsBitmap = true;
m_actionButtons[_local4] = _local3;
_local5++;
_local4++;
}
var _local2;
_local4 = 0;
while (_local4 < m_placed.length) {
_local2 = m_placed[_local4];
if (_local2 != null) {
_local2.loadIconGraphic(m_clip.drag_layer, getNextIconGraphicLevel());
link(m_actionButtons[_local4], _local2);
m_dragIcons.push(_local2);
}
_local4++;
}
_local4 = 0;
while (_local4 < m_pending.length) {
_local2 = m_pending[_local4];
_local2.loadIconGraphic(m_clip.drag_layer, getNextIconGraphicLevel());
m_dragIcons.push(_local2);
_local4++;
}
refreshDisplay();
}
function testHitDragIcons() {
var _local4;
var _local5 = false;
var _local3 = 0;
while ((_local3 < m_dragIcons.length) && (!_local5)) {
_local4 = m_dragIcons[_local3];
if (_local4.hitButton(_root._xmouse, _root._ymouse)) {
m_holdingIcon = _local4;
_local5 = true;
}
_local3++;
}
}
function initDragSkillArrays(skills) {
m_placed = new Array(NUM_BUTTONS);
m_pending = new Array();
var _local4;
var _local2;
var _local3 = 0;
while (_local3 < skills.length) {
_local4 = skills[_local3];
_local2 = new DragSkillIcon(_local4, this);
if (_local2.placed()) {
m_placed[_local2.getActionButtonNdx()] = _local2;
} else {
m_pending.push(_local2);
}
_local3++;
}
}
function testHitActionBar(dragIcon) {
var _local4;
var _local6 = false;
var _local3 = 0;
while ((_local3 < m_actionButtons.length) && (!_local6)) {
_local4 = m_actionButtons[_local3];
_local6 = _local4.hitTest(_root._xmouse, _root._ymouse, 0);
if (_local6) {
if (_local4.holding == null) {
addToPlaced(dragIcon, _local3);
link(_local4, dragIcon);
} else {
var _local7;
_local7 = _local4.holding;
addToPending(_local7);
addToPlaced(dragIcon, _local3);
link(_local4, dragIcon);
}
}
_local3++;
}
if (!_local6) {
if (dragIcon.placed()) {
addToPending(dragIcon);
}
}
}
function removeFromPending(dragIcon) {
var _local3 = -1;
var _local2 = 0;
while (_local2 < m_pending.length) {
if (dragIcon == m_pending[_local2]) {
_local3 = _local2;
break;
}
_local2++;
}
if (_local3 != -1) {
m_pending.splice(_local3, 1);
}
}
function addToPending(dragIcon) {
removeFromPlaced(dragIcon.getActionButtonNdx());
dragIcon.unlink();
m_pending.push(dragIcon);
}
function addToPlaced(dragIcon, ndx) {
if (!dragIcon.placed()) {
removeFromPending(dragIcon);
} else {
removeFromPlaced(dragIcon.getActionButtonNdx());
dragIcon.unlink();
}
dragIcon.setActionButtonNdx(ndx);
m_placed[ndx] = dragIcon;
}
function removeFromPlaced(ndx) {
m_placed[ndx] = null;
}
function refreshDisplay() {
var _local5 = 0;
var _local4 = 0;
var _local9 = 80;
var _local7 = 1250;
var _local8 = 101.8;
var _local6 = 101.8;
var _local3;
var _local2 = 0;
while (_local2 < m_placed.length) {
_local3 = m_placed[_local2];
if (_local3 != null) {
_local3.snapToClip(m_actionButtons[_local3.getActionButtonNdx()]);
}
_local2++;
}
_local2 = 0;
while (_local2 < m_pending.length) {
_local3 = m_pending[_local2];
if ((_local2 % 4) == 0) {
_local5++;
_local4 = 0;
}
trace("ndx: " + _local2);
trace("(col * colStep + colOffset): " + ((_local4 * _local6) + _local7));
trace("(row * rowStep + rowOffset): " + ((_local5 * _local8) + _local9));
_local3.setPosition((_local4 * _local6) + _local7, (_local5 * _local8) + _local9);
_local4++;
_local2++;
}
m_levelManager.refreshActionBarSetup();
}
function link(tempButton, dragIcon) {
tempButton.holding = dragIcon;
dragIcon.setSlot(tempButton);
}
function getNextIconGraphicLevel() {
return(m_iconGraphicLevel++);
}
function closeWindow() {
trace("closing action bar setup");
m_levelManager.refreshActionBarSetup();
m_clip.unloadMovie();
}
var NUM_BUTTONS = 30;
var m_iconGraphicLevel = 1;
}
Symbol 2576 MovieClip [__Packages.DragSkillIcon] Frame 0
class DragSkillIcon
{
var m_skill, m_abSetup, m_actionButtonNdx, orig_x, xpos, orig_y, ypos, m_clip, m_slot;
function DragSkillIcon (skill, abSetup) {
m_skill = skill;
m_abSetup = abSetup;
m_actionButtonNdx = m_skill.getActionBarID();
}
function setPosition(xp, yp) {
orig_x = (xpos = xp);
orig_y = (ypos = yp);
if (m_clip != null) {
m_clip._x = xpos;
m_clip._y = ypos;
}
}
function snapToClip(clip) {
setPosition(clip._x, clip._y);
}
function loadIconGraphic(layer, lvl) {
m_clip = layer.attachMovie("icon_dragger", "icon_dragger" + lvl, lvl);
m_clip.owner = this;
var _local2 = m_clip.icon_spot.attachMovie(m_skill.m_iconName, m_skill.m_iconName + "_id", 1);
_local2._x = (-_local2._width) / 2;
_local2._y = (-_local2._height) / 2;
m_clip._x = xpos;
m_clip._y = ypos;
}
function updatePosition() {
m_clip._x = xpos;
m_clip._y = ypos;
}
function hitButton(xp, yp) {
trace((("Testing hitButton: " + xp) + " ") + yp);
return(m_clip.hitTest(xp, yp, 0));
}
function releaseButton() {
testHitActionBar();
if (m_actionButtonNdx == -1) {
resetToOrigin();
}
m_skill.setActionBarID(m_actionButtonNdx);
m_abSetup.refreshDisplay();
}
function resetToOrigin() {
m_clip._x = (xpos = orig_x);
m_clip._y = (ypos = orig_y);
}
function updateClip() {
m_clip._x = xpos;
m_clip._y = ypos;
}
function testHitActionBar() {
m_abSetup.testHitActionBar(this);
}
function setActionButtonNdx(ndx) {
m_actionButtonNdx = ndx;
}
function getActionButtonNdx() {
return(m_actionButtonNdx);
}
function placed() {
return(m_actionButtonNdx != -1);
}
function setSlot(clip) {
m_slot = clip;
}
function unlink() {
m_slot.holding = null;
m_slot = null;
m_actionButtonNdx = -1;
}
}
Symbol 2577 MovieClip [__Packages.GeneralOptions] Frame 0
class GeneralOptions extends GameOptionWindow
{
var m_gameOptions, m_levelManager, m_clip, m_loaded;
function GeneralOptions (go, layer) {
super();
m_gameOptions = go;
m_levelManager = m_gameOptions.m_levelManager;
m_clip = layer.attachMovie("general_game_options", "general_game_options", 1);
m_clip.m_view = this;
m_loaded = false;
}
function step() {
if (!m_loaded) {
m_loaded = true;
displayProfileSettings();
}
}
function closeWindow() {
m_clip.unloadMovie();
}
function applyChanges() {
m_levelManager.m_game.profileManager.m_active.setGameOptions(m_clip.option_shooting_style.val, m_clip.option_popup_text.val, m_clip.option_music.val, m_clip.option_sound.val, m_clip.option_blood_amount.val, m_clip.option_detail.val, m_clip.option_difficulty.val);
m_levelManager.m_game.profileManager.saveData();
m_levelManager.initInGameOptions();
}
function displayProfileSettings() {
trace("Step B");
m_clip.option_shooting_style.setVal(m_levelManager.m_game.profileManager.m_active.m_shootingMode);
(m_levelManager.m_game.profileManager.m_active.m_popupTextOn ? (m_clip.option_popup_text.setVal("on")) : (m_clip.option_popup_text.setVal("off")));
(m_levelManager.m_game.profileManager.m_active.m_musicOn ? (m_clip.option_music.setVal("on")) : (m_clip.option_music.setVal("off")));
(m_levelManager.m_game.profileManager.m_active.m_soundOn ? (m_clip.option_sound.setVal("on")) : (m_clip.option_sound.setVal("off")));
m_clip.option_blood_amount.setVal(m_levelManager.m_game.profileManager.m_active.m_bloodAmt);
m_clip.option_detail.setVal(m_levelManager.m_game.profileManager.m_active.m_detailLevel);
m_clip.option_difficulty.setVal(m_levelManager.m_game.profileManager.m_active.m_difficultyLevel);
}
}
Symbol 2578 MovieClip [__Packages.QuitMenu] Frame 0
class QuitMenu extends GameOptionWindow
{
var m_gameOptions, m_levelManager, m_clip;
function QuitMenu (go, layer) {
super();
m_gameOptions = go;
m_levelManager = m_gameOptions.m_levelManager;
m_clip = layer.attachMovie("quit_menu", "quit_menu", 1);
m_clip.m_view = this;
}
function step() {
}
function closeWindow() {
m_clip.unloadMovie();
}
}
Symbol 2579 MovieClip [__Packages.HelpOptionMenu] Frame 0
class HelpOptionMenu extends GameOptionWindow
{
var m_gameOptions, m_levelManager, m_clip;
function HelpOptionMenu (go, layer) {
super();
m_gameOptions = go;
m_levelManager = m_gameOptions.m_levelManager;
m_clip = layer.attachMovie("help_window", "help_window", 1);
m_clip.m_view = this;
}
function step() {
}
function closeWindow() {
m_clip.unloadMovie();
}
}
Symbol 2580 MovieClip [__Packages.SceneryManager] Frame 0
class SceneryManager
{
var m_desert, m_mushroom, m_winterland, m_iceland, m_skyworld, m_highlands, m_lowlands, m_saltFlats, m_denseForest, m_outerForest, m_gorgoth, m_wasteland, m_pines, m_oaks;
function SceneryManager () {
m_desert = new StyleDesert();
m_mushroom = new StyleMushroom();
m_winterland = new StyleWinterland();
m_iceland = new StyleIceland();
m_skyworld = new StyleSkyworld();
m_highlands = new StyleHighlands();
m_lowlands = new StyleLowlands();
m_saltFlats = new StyleSaltFlats();
m_denseForest = new StyleDenseForest();
m_outerForest = new StyleOuterForest();
m_gorgoth = new StyleGorgoth();
m_wasteland = new StyleWasteland();
m_pines = new StylePines();
m_oaks = new StyleOaks();
}
function getSceneryStyle(style) {
var _local2;
if (style == "desert") {
_local2 = m_desert;
} else if (style == "mushroom") {
_local2 = m_mushroom;
} else if (style == "winterland") {
_local2 = m_winterland;
} else if (style == "iceland") {
_local2 = m_iceland;
} else if (style == "skyworld") {
_local2 = m_skyworld;
} else if (style == "highlands") {
_local2 = m_highlands;
} else if (style == "lowlands") {
_local2 = m_lowlands;
} else if (style == "salt_flats") {
_local2 = m_saltFlats;
} else if (style == "gorgoth") {
_local2 = m_gorgoth;
} else if (style == "dense_forest") {
_local2 = m_denseForest;
} else if (style == "outer_forest") {
_local2 = m_outerForest;
} else if (style == "wasteland") {
_local2 = m_wasteland;
} else if (style == "pines") {
_local2 = m_pines;
} else if (style == "oaks") {
_local2 = m_oaks;
} else {
_local2 = m_desert;
}
return(_local2);
}
}
Symbol 2581 MovieClip [__Packages.SceneStyle] Frame 0
class SceneStyle
{
var m_objects;
function SceneStyle () {
m_objects = new Array("cacti_01");
}
function getRandomObject() {
return(m_objects[random(m_objects.length)]);
}
}
Symbol 2582 MovieClip [__Packages.StyleDesert] Frame 0
class StyleDesert extends SceneStyle
{
var m_objects;
function StyleDesert () {
super();
m_objects = new Array("cacti_01", "cacti_02", "cacti_03", "cacti_04", "cacti_05", "cacti_06", "cacti_07", "cacti_08", "cacti_09", "cacti_10", "cacti_11", "cacti_12", "cacti_13", "cacti_14", "cacti_15", "cacti_16", "rock_01", "rock_02", "rock_03", "rock_04", "bones_01", "bones_02", "bones_03", "bones_04", "bones_05");
}
}
Symbol 2583 MovieClip [__Packages.StyleMushroom] Frame 0
class StyleMushroom extends SceneStyle
{
var m_objects;
function StyleMushroom () {
super();
m_objects = new Array("shroom_small_01", "shroom_small_02", "shroom_amas_01", "shroom_amas_02", "shroom_amas_03", "shroom_trans_01", "shroom_trans_02", "shroom_trans_03", "shroom_trans_04", "shroom_trans_05", "shroom_trans_06", "shroom_flat_01", "shroom_flat_02", "shroom_flat_03", "shroom_flat_04", "shroom_tall_01", "shroom_tall_02", "shroom_tall_03", "shroom_tall_04", "shroom_tall_05", "shroom_green_01", "shroom_green_02", "shroom_green_03", "shroom_pink_01", "shroom_pink_02", "shroom_pink_03");
}
}
Symbol 2584 MovieClip [__Packages.StyleWinterland] Frame 0
class StyleWinterland extends SceneStyle
{
var m_objects;
function StyleWinterland () {
super();
m_objects = new Array("tree_winter_01", "tree_winter_02", "tree_winter_03", "rock_winter_01", "rock_winter_02", "rock_winter_03", "rock_winter_04", "oak_burn_01", "oak_burn_02", "oak_dead_01", "oak_dead_02", "pine_dead_01", "pine_dead_02", "pine_dead_03", "pine_burn_01", "pine_burn_02", "pine_burn_03", "keep_ruins_01", "keep_ruins_02", "keep_ruins_03", "shrine_ruins_01", "shrine_ruins_02", "shrine_ruins_03", "tower_ruins_01", "tower_ruins_02", "tower_ruins_03", "ice_crystal_02");
}
}
Symbol 2585 MovieClip [__Packages.StyleIceland] Frame 0
class StyleIceland extends SceneStyle
{
var m_objects;
function StyleIceland () {
super();
m_objects = new Array("ice_crystal_01", "ice_crystal_02", "ice_crystal_03", "ice_crystal_04", "ice_crystal_05");
}
}
Symbol 2586 MovieClip [__Packages.StyleSkyworld] Frame 0
class StyleSkyworld extends SceneStyle
{
var m_objects;
function StyleSkyworld () {
super();
m_objects = new Array("ice_crystal_01", "ice_crystal_02", "ice_crystal_03", "ice_crystal_04", "ice_crystal_05", "tree_winter_01", "tree_winter_02", "tree_winter_03", "rock_winter_01", "rock_winter_02", "rock_winter_03", "rock_winter_04", "shroom_small_01", "shroom_small_02", "shroom_amas_01", "shroom_amas_02", "shroom_amas_03", "shroom_trans_01", "shroom_trans_02", "shroom_trans_03", "shroom_trans_04", "shroom_trans_05", "shroom_trans_06", "shroom_flat_01", "shroom_flat_02", "shroom_flat_03", "shroom_flat_04", "shroom_tall_01", "shroom_tall_02", "shroom_tall_03", "shroom_tall_04", "shroom_tall_05", "shroom_green_01", "shroom_green_02", "shroom_green_03", "shroom_pink_01", "shroom_pink_02", "shroom_pink_03");
}
}
Symbol 2587 MovieClip [__Packages.StyleHighlands] Frame 0
class StyleHighlands extends SceneStyle
{
var m_objects;
function StyleHighlands () {
super();
m_objects = new Array("tree_juni_01", "tree_juni_02", "tree_juni_03", "tree_juni_04", "rock_01", "rock_02", "rock_03", "rock_04", "oak_01", "oak_02", "oak_burn_01", "oak_burn_02", "oak_dead_01", "oak_dead_02", "pine_dead_01", "pine_dead_02", "pine_dead_03", "pine_01", "pine_02", "pine_03", "pine_burn_01", "pine_burn_02", "pine_burn_03", "keep_ruins_01", "keep_ruins_02", "keep_ruins_03", "shrine_ruins_01", "shrine_ruins_02", "shrine_ruins_03", "tower_ruins_01", "tower_ruins_02", "tower_ruins_03", "tree_stump_01", "tree_stump_02");
}
}
Symbol 2588 MovieClip [__Packages.StyleLowlands] Frame 0
class StyleLowlands extends SceneStyle
{
var m_objects;
function StyleLowlands () {
super();
m_objects = new Array("rock_01", "rock_02", "rock_03", "rock_04", "oak_01", "oak_02", "oak_01", "oak_02", "oak_01", "oak_02", "oak_01", "oak_02", "pine_dead_01", "pine_dead_02", "pine_dead_03", "pine_01", "pine_02", "pine_03", "tree_stump_01", "tree_stump_02", "oak_burn_01", "oak_burn_02", "oak_dead_01", "oak_dead_02");
}
}
Symbol 2589 MovieClip [__Packages.StyleSaltFlats] Frame 0
class StyleSaltFlats extends SceneStyle
{
var m_objects;
function StyleSaltFlats () {
super();
m_objects = new Array("bones_01", "bones_02", "bones_03", "bones_04", "bones_05");
}
}
Symbol 2590 MovieClip [__Packages.StyleDenseForest] Frame 0
class StyleDenseForest extends SceneStyle
{
var m_objects;
function StyleDenseForest () {
super();
m_objects = new Array("shroom_small_01", "shroom_small_02", "shroom_amas_01", "shroom_amas_02", "shroom_amas_03", "fern_01", "fern_02", "fern_03", "fern_04", "keep_ruins_01", "keep_ruins_02", "keep_ruins_03", "tree_stump_01", "tree_stump_02");
}
}
Symbol 2591 MovieClip [__Packages.StyleOuterForest] Frame 0
class StyleOuterForest extends SceneStyle
{
var m_objects;
function StyleOuterForest () {
super();
m_objects = new Array("tree_winter_01", "tree_winter_02", "tree_winter_03", "rock_winter_01", "oak_01", "oak_02", "oak_burn_01", "oak_burn_02", "oak_dead_01", "oak_dead_02", "pine_dead_01", "pine_dead_02", "pine_dead_03", "pine_01", "pine_02", "pine_03", "pine_burn_01", "pine_burn_02", "pine_burn_03", "keep_ruins_01", "keep_ruins_02", "keep_ruins_03", "shrine_ruins_01", "shrine_ruins_02", "shrine_ruins_03", "tower_ruins_01", "tower_ruins_02", "tower_ruins_03", "tree_stump_01", "tree_stump_02");
}
}
Symbol 2592 MovieClip [__Packages.StyleGorgoth] Frame 0
class StyleGorgoth extends SceneStyle
{
var m_objects;
function StyleGorgoth () {
super();
m_objects = new Array("shroom_trans_01", "shroom_trans_02", "shroom_trans_03", "bones_01", "bones_02", "bones_03", "bones_04", "bones_05", "rock_pink_spire_01", "rock_pink_spire_02", "rock_pink_spire_03");
}
}
Symbol 2593 MovieClip [__Packages.StyleWasteland] Frame 0
class StyleWasteland extends SceneStyle
{
var m_objects;
function StyleWasteland () {
super();
m_objects = new Array("oak_burn_01", "oak_burn_02", "oak_dead_01", "oak_dead_02", "pine_burn_01", "pine_burn_02", "pine_burn_03", "pine_dead_01", "pine_dead_02", "pine_dead_03", "rock_01", "rock_02", "rock_03", "rock_04");
}
}
Symbol 2594 MovieClip [__Packages.StylePines] Frame 0
class StylePines extends SceneStyle
{
var m_objects;
function StylePines () {
super();
m_objects = new Array("pine_01", "pine_02", "pine_03", "pine_01", "pine_02", "pine_03", "pine_01", "pine_02", "pine_03", "rock_01", "rock_02", "rock_03", "rock_04");
}
}
Symbol 2595 MovieClip [__Packages.StyleOaks] Frame 0
class StyleOaks extends SceneStyle
{
var m_objects;
function StyleOaks () {
super();
m_objects = new Array("oak_01", "oak_02", "oak_01", "oak_02", "oak_01", "oak_02", "oak_01", "oak_02", "oak_01", "oak_02", "oak_01", "oak_02", "rock_01", "rock_02", "rock_03", "rock_04");
}
}
Symbol 2596 MovieClip [__Packages.ReinforcementManager] Frame 0
class ReinforcementManager
{
var m_levelManager, m_timeToLoad, m_loadTime, m_maxQueueSize, m_maxSize, m_troopQueue, m_spotID;
function ReinforcementManager (lm) {
m_levelManager = lm;
m_timeToLoad = 0;
m_loadTime = 50;
m_maxQueueSize = 15;
m_maxSize = 20;
m_troopQueue = new Array();
}
function step() {
if ((((m_timeToLoad = m_timeToLoad - GameApp.m_gSpeed)) < 0) && (m_levelManager.canAddFriendReinforcement())) {
m_timeToLoad = m_loadTime;
loadNextTroop();
}
}
function loadNextTroop() {
if (m_troopQueue.length > 0) {
var _local2 = m_levelManager.getGoodFlagFighter(FighterTicket(m_troopQueue.shift()));
m_levelManager.addGoodFlagFighter(_local2);
refreshListDisplay();
}
}
function addType(fighterType, amt) {
m_levelManager.deltaGoodReinforcements((-amt) * fighterType.getPopValue());
var _local2 = 0;
while (_local2 < amt) {
m_troopQueue.push(fighterType);
refreshListDisplay();
_local2++;
}
}
function reset() {
m_troopQueue = new Array();
refreshListDisplay();
}
function queueIsFull() {
return(m_troopQueue.length >= m_maxQueueSize);
}
function outputQueue() {
var _local3 = "";
var _local2 = 0;
while (_local2 < m_troopQueue.length) {
_local3 = _local3 + (((("" + _local2) + ".\t") + FighterTicket(m_troopQueue[_local2]).getType()) + newline);
_local2++;
}
return(_local3);
}
function refreshListDisplay() {
var _local3;
var _local2;
var _local4 = m_troopQueue.length;
var _local5;
var ndx = 0;
while (ndx <= m_maxSize) {
_local5 = m_troopQueue[ndx];
if (ndx < _local4) {
_local3 = _local5.getIconName();
} else {
_local3 = "blank_icon";
}
_local2 = m_levelManager.m_clip.rq_layer.attachMovie(_local3, (_local3 + "_") + getSpotIDNum(), ndx + 1);
_local2._x = 15;
_local2._width = (_local2._height = 25);
_local2._y = 80 + (ndx * 30);
_local2.cacheAsBitmap = true;
if (ndx < _local4) {
_local2.ndx = ndx;
_local2.manager = this;
_local2.onPress = function () {
trace("Fighter Ticket Movie Clip Pressed");
trace("ndx: " + this.ndx);
this.manager.cancelTroop(this.ndx);
};
}
ndx++;
}
}
function getSpotIDNum() {
if ((m_spotID++) > 999) {
m_spotID = 1;
}
return(m_spotID);
}
function cancelTroop(ndx) {
var _local2;
_local2 = m_troopQueue.splice(ndx, 1)[0];
trace((((("canceling[" + ndx) + "]: ") + _local2.getIconName()) + " with value ") + _local2.getPopValue());
m_levelManager.deltaGoodReinforcements(_local2.getPopValue());
refreshListDisplay();
}
}
Symbol 2597 MovieClip [__Packages.CutScene] Frame 0
class CutScene extends GameWindow
{
var m_game, m_clipName, m_depth, m_target, m_curFrame, m_frameCount, m_frameRate, m_timeLeft, m_duration, closeWindow, m_clip;
function CutScene (game, clipName, depth, targetClip) {
super();
m_game = game;
m_clipName = clipName;
m_depth = depth;
m_target = targetClip;
trace("my game: " + m_game);
m_curFrame = 1;
m_frameCount = 1;
m_frameRate = 0.363;
m_timeLeft = 1;
m_duration = 1;
}
function setDuration(num) {
m_duration = num;
}
function setTimeLeft(num) {
m_timeLeft = num;
}
function setFrameRate(num) {
m_frameRate = num;
}
function step() {
if ((m_timeLeft--) < 0) {
closeWindow();
} else {
updateFrame();
m_clip.gotoAndStop(m_curFrame);
}
}
function updateFrame() {
m_frameCount = m_frameCount + m_frameRate;
m_curFrame = Math.floor(m_frameCount);
}
function displayWindow() {
trace("Inside cutscene window");
m_timeLeft = m_duration;
m_curFrame = 1;
m_frameCount = 1;
trace("Displaying: " + m_clipName);
m_game.setCurrentWindow(this);
m_clip = m_target.attachMovie(m_clipName, m_clipName + "_id_1", m_depth);
m_clip.m_view = this;
m_clip.m_game = m_game;
trace("my clip: " + m_clip);
}
}
Symbol 2598 MovieClip [__Packages.HighScoreMenu] Frame 0
class HighScoreMenu extends GameWindow
{
var m_game, m_clipName, m_depth, m_target, m_clip;
function HighScoreMenu (game, clipName, depth, targetClip) {
super();
m_game = game;
m_clipName = clipName;
m_depth = depth;
m_target = targetClip;
}
function displayWindow() {
trace("Displaying: " + m_clipName);
m_game.setCurrentWindow(this);
m_clip = m_target.attachMovie(m_clipName, m_clipName + "_id_1", m_depth);
m_clip.m_view = this;
m_clip.m_game = m_game;
displayProfiles();
}
function displayProfiles() {
var _local3 = 1;
var _local7 = 150;
var _local13 = 600;
var _local10 = 50;
var _local8 = 65;
var _local4;
var _local6;
var _local5;
var _local9;
var _local12 = m_game.profileManager.getSortedRetiredProfiles();
var _local11 = _local12.length;
if (_local11 > 10) {
_local11 = 10;
}
var _local2 = 0;
while (_local2 < _local11) {
trace("Displaying Profile: " + _local2);
_local9 = _local12[_local2];
_local3 = _local2 + 1;
_local5 = m_clip.profile_num_layer.attachMovie("retired_profile_num", "retired_profile_name_id" + _local3, _local3);
_local5._x = _local13;
_local5._y = _local7 + (_local2 * _local8);
_local5.msg = ("" + (_local2 + 1)) + ".";
_local4 = m_clip.profile_name_layer.attachMovie("retired_profile_name", "retired_profile_name_id_" + _local3, _local3);
_local4._x = (_local5._x + _local5._width) + _local10;
_local4._y = _local7 + (_local2 * _local8);
_local4.msg = _local9.m_name;
_local6 = m_clip.profile_gold_layer.attachMovie("retired_profile_gold", "retired_profile_name_id" + _local3, _local3);
_local6._x = (_local4._x + _local4._width) + _local10;
_local6._y = _local7 + (_local2 * _local8);
_local6.msg = _local9.m_gold;
_local2++;
}
}
function closeWindow() {
trace("Closing window: " + m_clipName);
m_clip.unloadMovie();
m_game.credits.displayWindow();
}
}
Symbol 2599 MovieClip [__Packages.Profile] Frame 0
class Profile
{
var m_skills, m_name, m_rank, m_xp, m_class, m_maxLevelReached, m_maxSceneReached, m_gold, m_maxRank, m_defeats, m_victories, m_maxCatapults, m_maxFootSoldiers, m_maxArchers, m_maxPriests, m_maxMounts, m_maxGriffins, m_points, m_armorFactor, m_movementSpeedFactor, m_attackSpeedFactor, m_catapultRank, m_footSoldierRank, m_archerRank, m_priestRank, m_mountRank, m_griffinRank, m_hasBasicArrow, m_hasFireArrow, m_hasBombWaveArrow, m_hasFireWave, m_hasHealWave, m_hasIceArrow, m_hasMeteor, m_hasComet, m_hasThunderArrow, m_hasIceWave, m_hasFlakBombArrow, m_hasBombArrow, m_hasArcher, m_hasMount, m_hasTrebuchet, m_hasGrunt, m_hasTallGrunt, m_hasPriest, m_hasPierceArrow, m_cheated, m_goodArmyColor1, m_goodArmyIconColor1, m_badArmyIconColor1, m_goodArmyColor2, m_badArmyColor1, m_badArmyColor2, m_goodArmyIcon, m_badArmyIcon, m_shootingMode, m_musicOn, m_soundOn, m_popupTextOn, m_bloodAmt, m_detailLevel, m_difficultyLevel, m_rankXPMatrix;
function Profile () {
m_skills = new Array();
m_name = ProfileManager.getRandomName();
m_rank = 1;
m_xp = 0;
m_class = "BowMaster";
m_maxLevelReached = 1;
m_maxSceneReached = 1;
m_gold = 0;
m_maxRank = 25;
m_defeats = 0;
m_victories = 0;
m_maxCatapults = 0;
m_maxFootSoldiers = 0;
m_maxArchers = 0;
m_maxPriests = 0;
m_maxMounts = 0;
m_maxGriffins = 0;
m_points = 0;
m_armorFactor = 0;
m_movementSpeedFactor = 0;
m_attackSpeedFactor = 0;
m_catapultRank = 0;
m_footSoldierRank = 0;
m_archerRank = 0;
m_priestRank = 0;
m_mountRank = 0;
m_griffinRank = 0;
m_maxCatapults = 0;
m_maxFootSoldiers = 0;
m_maxArchers = 0;
m_maxPriests = 0;
m_maxMounts = 0;
m_maxGriffins = 0;
m_hasBasicArrow = false;
m_hasFireArrow = false;
m_hasBombWaveArrow = false;
m_hasFireWave = false;
m_hasHealWave = false;
m_hasIceArrow = false;
m_hasMeteor = false;
m_hasComet = false;
m_hasThunderArrow = false;
m_hasIceWave = false;
m_hasFlakBombArrow = false;
m_hasBombArrow = false;
m_hasArcher = false;
m_hasMount = false;
m_hasTrebuchet = false;
m_hasGrunt = false;
m_hasTallGrunt = false;
m_hasPriest = false;
m_hasPierceArrow = false;
m_cheated = false;
m_goodArmyColor1 = "blue";
m_goodArmyIconColor1 = "white";
m_badArmyIconColor1 = "white";
m_goodArmyColor2 = "silver";
m_badArmyColor1 = "red";
m_badArmyColor2 = "orange";
m_goodArmyIcon = "icon_good_cross";
m_badArmyIcon = "icon_skull";
m_shootingMode = "drag_circle";
m_musicOn = true;
m_soundOn = true;
m_popupTextOn = true;
m_bloodAmt = "med";
m_detailLevel = "HIGH";
m_difficultyLevel = "med";
initXPMatrix();
}
function setGameOptions(smode, popupText, music, sound, bloodAmt, detail, diff) {
m_shootingMode = smode;
m_popupTextOn = popupText == "on";
m_musicOn = music == "on";
m_soundOn = sound == "on";
m_bloodAmt = bloodAmt;
m_detailLevel = detail;
m_difficultyLevel = diff;
}
function addSkill(skill) {
m_skills.push(skill);
bindToEmptyActionBar(skill);
}
function refitHelperAddSkill(skill) {
m_skills.push(skill);
}
function cloneProfile() {
var _local2 = new Profile();
_local2.m_name = m_name;
_local2.m_rank = m_rank;
_local2.m_xp = m_xp;
_local2.m_class = m_class;
_local2.m_maxLevelReached = m_maxLevelReached;
_local2.m_maxSceneReached = m_maxSceneReached;
_local2.m_gold = m_gold;
_local2.m_victories = m_victories;
_local2.m_defeats = m_defeats;
_local2.m_maxCatapults = m_maxCatapults;
_local2.m_maxFootSoldiers = m_maxFootSoldiers;
_local2.m_maxArchers = m_maxArchers;
_local2.m_maxPriests = m_maxPriests;
_local2.m_maxMounts = m_maxMounts;
_local2.m_maxGriffins = m_maxGriffins;
_local2.m_points = m_points;
_local2.m_armorFactor = m_armorFactor;
_local2.m_movementSpeedFactor = m_movementSpeedFactor;
_local2.m_attackSpeedFactor = m_attackSpeedFactor;
_local2.m_catapultRank = m_catapultRank;
_local2.m_footSoldierRank = m_footSoldierRank;
_local2.m_archerRank = m_archerRank;
_local2.m_priestRank = m_priestRank;
_local2.m_mountRank = m_mountRank;
_local2.m_griffinRank = m_griffinRank;
_local2.m_maxCatapults = m_maxCatapults;
_local2.m_maxFootSoldiers = m_maxFootSoldiers;
_local2.m_maxArchers = m_maxArchers;
_local2.m_maxPriests = m_maxPriests;
_local2.m_maxMounts = m_maxMounts;
_local2.m_maxGriffins = m_maxGriffins;
_local2.m_goodArmyColor1 = m_goodArmyColor1;
_local2.m_goodArmyIconColor1 = m_goodArmyIconColor1;
_local2.m_goodArmyColor2 = m_goodArmyColor2;
_local2.m_badArmyColor1 = m_badArmyColor1;
_local2.m_badArmyIconColor1 = m_badArmyIconColor1;
_local2.m_badArmyColor2 = m_badArmyColor2;
_local2.m_goodArmyIcon = m_goodArmyIcon;
_local2.m_badArmyIcon = m_badArmyIcon;
_local2.m_shootingMode = m_shootingMode;
_local2.m_musicOn = m_musicOn;
_local2.m_soundOn = m_soundOn;
_local2.m_popupTextOn = m_popupTextOn;
_local2.m_bloodAmt = m_bloodAmt;
_local2.m_detailLevel = m_detailLevel;
_local2.m_difficultyLevel = m_difficultyLevel;
_local2.m_cheated = m_cheated;
_local2.m_skills = new Array();
var _local3 = 0;
while (_local3 < m_skills.length) {
_local2.m_skills.push(m_skills[_local3].cloneSkill());
_local3++;
}
return(_local2);
}
function levelUp() {
SoundManager.playSound("Level Up.wav");
m_rank = m_rank + 1;
}
function setXP(amt) {
amt = Math.floor(amt);
m_xp = amt;
}
function initXPMatrix() {
m_rankXPMatrix = new Array();
var _local2 = 0;
while (_local2 <= m_maxRank) {
m_rankXPMatrix[_local2] = _local2 * 500;
_local2++;
}
}
function addXP(delt) {
delt = Math.floor(delt);
var _local3 = getMaxXPForRank(m_rank);
var _local2 = m_xp + delt;
var _local4;
if (_local2 > _local3) {
_local4 = _local2 - _local3;
levelUp();
setXP(_local4);
} else {
setXP(_local2);
}
}
function getMaxXPForRank() {
return(m_rankXPMatrix[m_rank]);
}
function victory(lvl) {
m_victories++;
if (lvl > m_maxLevelReached) {
m_maxLevelReached = lvl;
}
trace("Profile.victory(lvl): m_victories: " + m_victories);
trace("Profile.victory(lvl): m_defeats: " + m_defeats);
}
function checkScene(scene) {
if (scene > m_maxSceneReached) {
m_maxSceneReached = scene;
}
}
function defeat() {
m_defeats++;
trace("Profile.defeat(): m_victories: " + m_victories);
trace("Profile.defeat(): m_defeats: " + m_defeats);
}
function currentVersion(id) {
return(id == m_version);
}
static function refitProfile(prof) {
testShowObjectData(prof);
var _local2 = new Profile();
((prof.m_version != null) ? ((_local2.m_version = prof.m_version)) : 0);
((prof.m_name != null) ? ((_local2.m_name = prof.m_name)) : 0);
((prof.m_rank != null) ? ((_local2.m_rank = prof.m_rank)) : 0);
((prof.m_xp != null) ? ((_local2.m_xp = prof.m_xp)) : 0);
((prof.m_class != null) ? ((_local2.m_class = prof.m_class)) : 0);
((prof.m_maxLevelReached != null) ? ((_local2.m_maxLevelReached = prof.m_maxLevelReached)) : 0);
((prof.m_maxSceneReached != null) ? ((_local2.m_maxSceneReached = prof.m_maxSceneReached)) : 0);
((prof.m_gold != null) ? ((_local2.m_gold = prof.m_gold)) : 0);
((prof.m_maxRank != null) ? ((_local2.m_maxRank = prof.m_maxRank)) : 0);
((prof.m_defeats != null) ? ((_local2.m_defeats = prof.m_defeats)) : 0);
((prof.m_victories != null) ? ((_local2.m_victories = prof.m_victories)) : 0);
((prof.m_maxCatapults != null) ? ((_local2.m_maxCatapults = prof.m_maxCatapults)) : 0);
((prof.m_maxFootSoldiers != null) ? ((_local2.m_maxFootSoldiers = prof.m_maxFootSoldiers)) : 0);
((prof.m_maxArchers != null) ? ((_local2.m_maxArchers = prof.m_maxArchers)) : 0);
((prof.m_maxPriests != null) ? ((_local2.m_maxPriests = prof.m_maxPriests)) : 0);
((prof.m_maxMounts != null) ? ((_local2.m_maxMounts = prof.m_maxMounts)) : 0);
((prof.m_maxGriffins != null) ? ((_local2.m_maxGriffins = prof.m_maxGriffins)) : 0);
((prof.m_points != null) ? ((_local2.m_points = prof.m_points)) : 0);
((prof.m_armorFactor != null) ? ((_local2.m_armorFactor = prof.m_armorFactor)) : 0);
((prof.m_movementSpeedFactor != null) ? ((_local2.m_movementSpeedFactor = prof.m_movementSpeedFactor)) : 0);
((prof.m_attackSpeedFactor != null) ? ((_local2.m_attackSpeedFactor = prof.m_attackSpeedFactor)) : 0);
((prof.m_catapultRank != null) ? ((_local2.m_catapultRank = prof.m_catapultRank)) : 0);
((prof.m_footSoldierRank != null) ? ((_local2.m_footSoldierRank = prof.m_footSoldierRank)) : 0);
((prof.m_archerRank != null) ? ((_local2.m_archerRank = prof.m_archerRank)) : 0);
((prof.m_priestRank != null) ? ((_local2.m_priestRank = prof.m_priestRank)) : 0);
((prof.m_mountRank != null) ? ((_local2.m_mountRank = prof.m_mountRank)) : 0);
((prof.m_griffinRank != null) ? ((_local2.m_griffinRank = prof.m_griffinRank)) : 0);
((prof.m_maxCatapults != null) ? ((_local2.m_maxCatapults = prof.m_maxCatapults)) : 0);
((prof.m_maxFootSoldiers != null) ? ((_local2.m_maxFootSoldiers = prof.m_maxFootSoldiers)) : 0);
((prof.m_maxArchers != null) ? ((_local2.m_maxArchers = prof.m_maxArchers)) : 0);
((prof.m_maxPriests != null) ? ((_local2.m_maxPriests = prof.m_maxPriests)) : 0);
((prof.m_maxMounts != null) ? ((_local2.m_maxMounts = prof.m_maxMounts)) : 0);
((prof.m_maxGriffins != null) ? ((_local2.m_maxGriffins = prof.m_maxGriffins)) : 0);
((prof.m_goodArmyColor1 != null) ? ((_local2.m_goodArmyColor1 = prof.m_goodArmyColor1)) : 0);
((prof.m_goodArmyColor2 != null) ? ((_local2.m_goodArmyColor2 = prof.m_goodArmyColor2)) : 0);
((prof.m_goodArmyIconColor1 != null) ? ((_local2.m_goodArmyIconColor1 = prof.m_goodArmyIconColor1)) : 0);
((prof.m_badArmyColor1 != null) ? ((_local2.m_badArmyColor1 = prof.m_badArmyColor1)) : 0);
((prof.m_badArmyColor2 != null) ? ((_local2.m_badArmyColor2 = prof.m_badArmyColor2)) : 0);
((prof.m_badArmyIconColor1 != null) ? ((_local2.m_badArmyIconColor1 = prof.m_badArmyIconColor1)) : 0);
((prof.m_goodArmyIcon != null) ? ((_local2.m_goodArmyIcon = prof.m_goodArmyIcon)) : 0);
((prof.m_badArmyIcon != null) ? ((_local2.m_badArmyIcon = prof.m_badArmyIcon)) : 0);
((prof.m_shootingMode != null) ? ((_local2.m_shootingMode = prof.m_shootingMode)) : 0);
((prof.m_musicOn != null) ? ((_local2.m_musicOn = prof.m_musicOn)) : 0);
((prof.m_soundOn != null) ? ((_local2.m_soundOn = prof.m_soundOn)) : 0);
((prof.m_popupTextOn != null) ? ((_local2.m_popupTextOn = prof.m_popupTextOn)) : 0);
((prof.m_bloodAmt != null) ? ((_local2.m_bloodAmt = prof.m_bloodAmt)) : 0);
((prof.m_detailLevel != null) ? ((_local2.m_detailLevel = prof.m_detailLevel)) : 0);
((prof.m_difficultyLevel != null) ? ((_local2.m_difficultyLevel = prof.m_difficultyLevel)) : 0);
((prof.m_cheated != null) ? ((_local2.m_cheated = prof.m_cheated)) : 0);
if (prof.m_skills != null) {
var _local4;
var _local3;
var _local7 = prof.m_skills.length;
var _local6 = false;
trace("Num Skills: " + _local7);
var _local5 = 0;
while (_local5 < _local7) {
_local4 = prof.m_skills[_local5];
trace("tempSkill: " + _local4);
trace("tempSkill.m_skillName: " + _local4.m_skillName);
_local3 = SkillFactory.createSkill(_local4.m_skillName);
_local6 = _local2.updateSkillFlags(_local3);
if (!_local6) {
Skill.copySkillData(_local3, _local4);
trace("createdSkill.m_xp: " + _local3.m_xp);
trace("createdSkill.m_max_xp: " + _local3.m_max_xp);
_local2.refitHelperAddSkill(_local3);
}
_local5++;
}
}
testShowObjectData(_local2);
return(_local2);
}
function updateSkillFlags(sk) {
var _local2 = false;
if (sk instanceof FireArrowSkill) {
_local2 = m_hasFireArrow;
m_hasFireArrow = true;
} else if (sk instanceof BombWaveSkill) {
_local2 = m_hasBombWaveArrow;
m_hasBombWaveArrow = true;
} else if (sk instanceof CometSkill) {
_local2 = m_hasComet;
m_hasComet = true;
} else if (sk instanceof FireWaveSkill) {
_local2 = m_hasFireWave;
m_hasFireWave = true;
} else if (sk instanceof HealWaveSkill) {
_local2 = m_hasHealWave;
m_hasHealWave = true;
} else if (sk instanceof IceArrowSkill) {
_local2 = m_hasIceArrow;
m_hasIceArrow = true;
} else if (sk instanceof MeteorSkill) {
_local2 = m_hasMeteor;
m_hasMeteor = true;
} else if (sk instanceof ThunderArrowSkill) {
_local2 = m_hasThunderArrow;
m_hasThunderArrow = true;
} else if (sk instanceof IceWaveSkill) {
_local2 = m_hasIceWave;
m_hasIceWave = true;
} else if (sk instanceof FlakBombSkill) {
_local2 = m_hasFlakBombArrow;
m_hasFlakBombArrow = true;
} else if (sk instanceof BombArrowSkill) {
_local2 = m_hasBombArrow;
m_hasBombArrow = true;
} else if (sk instanceof ArcherSkill) {
_local2 = m_hasArcher;
m_hasArcher = true;
} else if (sk instanceof MountSkill) {
_local2 = m_hasMount;
m_hasMount = true;
} else if (sk instanceof TrebuchetSkill) {
_local2 = m_hasTrebuchet;
m_hasTrebuchet = true;
} else if (sk instanceof GruntSkill) {
_local2 = m_hasGrunt;
m_hasGrunt = true;
} else if (sk instanceof TallGruntSkill) {
_local2 = m_hasTallGrunt;
m_hasTallGrunt = true;
} else if (sk instanceof PriestSkill) {
_local2 = m_hasPriest;
m_hasPriest = true;
} else if (sk instanceof PierceArrowSkill) {
_local2 = m_hasPierceArrow;
m_hasPierceArrow = true;
} else {
_local2 = m_hasBasicArrow;
m_hasBasicArrow = true;
}
return(_local2);
}
static function testShowObjectData(prof) {
trace("prof.m_version: " + prof.m_version);
trace("prof.m_name: " + prof.m_name);
trace("prof.m_rank: " + prof.m_rank);
trace("prof.m_xp: " + prof.m_xp);
trace("prof.m_class: " + prof.m_class);
trace("prof.m_maxLevelReached: " + prof.m_maxLevelReached);
trace("prof.m_maxSceneReached: " + prof.m_maxSceneReached);
trace("prof.m_gold: " + prof.m_gold);
trace("prof.m_maxRank: " + prof.m_maxRank);
trace("prof.m_defeats: " + prof.m_defeats);
trace("prof.m_victories: " + prof.m_victories);
trace("prof.m_maxCatapults: " + prof.m_maxCatapults);
trace("prof.m_maxFootSoldiers: " + prof.m_maxFootSoldiers);
trace("prof.m_maxArchers: " + prof.m_maxArchers);
trace("prof.m_maxPriests: " + prof.m_maxPriests);
trace("prof.m_maxMounts: " + prof.m_maxMounts);
trace("prof.m_maxGriffins: " + prof.m_maxGriffins);
trace("prof.m_points: " + prof.m_points);
trace("prof.m_armorFactor: " + prof.m_armorFactor);
trace("prof.m_movementSpeedFactor: " + prof.m_movementSpeedFactor);
trace("prof.m_attackSpeedFactor: " + prof.m_attackSpeedFactor);
trace("prof.m_catapultRank: " + prof.m_catapultRank);
trace("prof.m_footSoldierRank: " + prof.m_footSoldierRank);
trace("prof.m_archerRank: " + prof.m_archerRank);
trace("prof.m_priestRank: " + prof.m_priestRank);
trace("prof.m_mountRank: " + prof.m_mountRank);
trace("prof.m_griffinRank: " + prof.m_griffinRank);
trace("prof.m_maxCatapults: " + prof.m_maxCatapults);
trace("prof.m_maxFootSoldiers: " + prof.m_maxFootSoldiers);
trace("prof.m_maxArchers: " + prof.m_maxArchers);
trace("prof.m_maxPriests: " + prof.m_maxPriests);
trace("prof.m_maxMounts: " + prof.m_maxMounts);
trace("prof.m_maxGriffins: " + prof.m_maxGriffins);
trace("prof.m_hasBasicArrow: " + prof.m_hasBasicArrow);
trace("prof.m_hasFireArrow: " + prof.m_hasFireArrow);
trace("prof.m_hasBombWaveArrow: " + prof.m_hasBombWaveArrow);
trace("prof.m_hasComet: " + prof.m_hasComet);
trace("prof.m_hasFireWave: " + prof.m_hasFireWave);
trace("prof.m_hasHealWave: " + prof.m_hasHealWave);
trace("prof.m_hasMeteor: " + prof.m_hasMeteor);
trace("prof.m_hasThunderArrow: " + prof.m_hasThunderArrow);
trace("prof.m_hasFlakBombArrow: " + prof.m_hasFlakBombArrow);
trace("prof.m_hasBombArrow: " + prof.m_hasBombArrow);
trace("prof.m_hasArcher: " + prof.m_hasArcher);
trace("prof.m_hasMount: " + prof.m_hasMount);
trace("prof.m_hasTrebuchet: " + prof.m_hasTrebuchet);
trace("prof.m_hasTallGrunt: " + prof.m_hasTallGrunt);
trace("prof.m_hasPriest: " + prof.m_hasPriest);
trace("prof.m_hasPierceArrow: " + prof.m_hasPierceArrow);
trace("prof.m_goodArmyColor1: " + prof.m_goodArmyColor1);
trace("prof.m_goodArmyColor2: " + prof.m_goodArmyColor2);
trace("prof.m_goodArmyIconColor1: " + prof.m_goodArmyIconColor1);
trace("prof.m_badArmyColor1: " + prof.m_badArmyColor1);
trace("prof.m_badArmyColor2: " + prof.m_badArmyColor2);
trace("prof.m_badArmyIconColor1: " + prof.m_badArmyIconColor1);
trace("prof.m_shootingMode: " + prof.m_shootingMode);
trace("prof.m_goodArmyIcon: " + prof.m_goodArmyIcon);
trace("prof.m_badArmyIcon: " + prof.m_badArmyIcon);
trace("prof.m_shootingMode: " + prof.m_shootingMode);
trace("prof.m_musicOn: " + prof.m_musicOn);
trace("prof.m_soundOn: " + prof.m_soundOn);
trace("prof.m_popupTextOn: " + prof.m_popupTextOn);
trace("prof.m_bloodAmt: " + prof.m_bloodAmt);
trace("prof.m_detailLevel: " + prof.m_detailLevel);
trace("prof.m_difficultyLevel: " + prof.m_difficultyLevel);
trace("prof.m_cheated: " + prof.m_cheated);
}
function bindToEmptyActionBar(skill) {
var _local3 = new Array(LevelManager.MAX_BOUND_SKILLS);
var _local5;
var _local2 = 0;
while (_local2 < m_skills.length) {
_local5 = Skill(m_skills[_local2]).getActionBarID();
_local3[_local5] = true;
_local2++;
}
var _local4 = false;
_local2 = 0;
while ((_local2 < _local3.length) && (!_local4)) {
if (_local3[_local2] == null) {
skill.setActionBarID(_local2);
_local4 = true;
}
_local2++;
}
}
function calculateScore() {
var _local3;
var _local2;
if (!m_cheated) {
_local3 = m_defeats + m_victories;
_local2 = m_gold / _local3;
m_gold = m_gold - Math.floor(m_defeats * _local2);
} else {
m_gold = 1;
m_name = m_name.substring(0, 1) + ". Cheater";
}
}
var m_version = "000008";
}
Symbol 2600 MovieClip [__Packages.ProfileManager] Frame 0
class ProfileManager
{
var m_menu, m_levelManager, buffer, icon_buffer, m_profileButtons, m_icons, m_myLocalSO, m_profiles, m_retiredProfiles, m_activeNdx, m_active;
function ProfileManager (menu, lm) {
m_menu = menu;
m_levelManager = lm;
buffer = 1;
icon_buffer = 1;
m_profileButtons = new Array();
m_icons = new Array();
m_myLocalSO = SharedObject.getLocal("bm_beta009");
if (m_myLocalSO.data.so_profiles != null) {
trace("Shared Object Data Found... loading data");
returnVisit();
} else {
trace("Shared Object NOT Found... creating new profile list");
firstTimeLoad();
}
saveData();
}
static function getRandomName() {
var _local1 = new Array("Slayer", "Princess C.", "Dee", "Phatsoul", "Jason", "Lost Vector", "Wulfbane", "Thorgrin", "Kuronotenshi", "Jawz", "Monroid", "Krispee", "Miasma", "Citarael");
return(_local1[random(_local1.length)]);
}
function firstTimeLoad() {
m_profiles = new Array();
m_retiredProfiles = new Array();
m_activeNdx = 0;
m_active = new Profile();
m_active.addSkill(new Skill());
m_profiles.push(m_active);
}
function returnVisit() {
loadData();
m_activeNdx = 0;
m_active = m_profiles[m_activeNdx];
trace("num profiles: " + m_profiles.length);
trace("num retired profiles: " + m_retiredProfiles.length);
}
function loadData() {
var _local5 = new Array();
var _local7 = new Array();
var _local4;
var _local10;
var _local8 = m_myLocalSO.data.so_profiles.length;
var _local6 = m_myLocalSO.data.so_retired.length;
var _local2;
var _local9;
var _local3;
var _local12;
var _local11;
trace("numProf = " + _local8);
_local2 = 0;
while (_local2 < _local8) {
_local3 = m_myLocalSO.data.so_profiles[_local2];
_local4 = Profile.refitProfile(_local3);
_local5.push(_local4);
_local2++;
}
m_profiles = _local5;
trace("numRetiredProf = " + _local6);
_local2 = 0;
while (_local2 < _local6) {
_local3 = m_myLocalSO.data.so_retired[_local2];
_local4 = Profile.refitProfile(_local3);
_local7.push(_local4);
_local2++;
}
m_retiredProfiles = _local7;
}
function deleteActiveProfile() {
if (m_profiles.length > 1) {
m_profiles.splice(m_activeNdx, 1);
m_activeNdx = 0;
m_active = m_profiles[m_activeNdx];
displayProfiles();
displayActiveProfile();
saveData();
}
}
function displayProfiles() {
var _local5;
var _local3;
var _local4;
var _local2 = 0;
while (_local2 < m_profileButtons.length) {
m_profileButtons[_local2].unloadMovie();
_local2++;
}
m_profileButtons = new Array();
_local2 = 0;
while (_local2 < m_profiles.length) {
trace("Displaying Profile: " + _local2);
_local4 = m_profiles[_local2];
_local5 = _local2 + buffer;
_local3 = m_menu.m_clip.profile_buttons.attachMovie("profile_button", "profile_button_id_" + _local5, _local5);
_local3._x = 20;
_local3._y = 100 + (_local2 * 70);
trace("tempProfile.m_name = " + _local4.m_name);
_local3.m_name = _local4.m_name;
_local3.m_id = _local2;
_local3.m_manager = this;
m_profileButtons.push(_local3);
_local2++;
}
if (buffer == 1) {
buffer = 10;
} else {
buffer = 1;
}
}
function displaySkillIcons() {
var _local8;
var _local6 = 0;
var _local7 = 0;
var _local3;
var _local4;
var _local5;
var _local2 = 0;
while (_local2 < m_icons.length) {
m_icons[_local2].unloadMovie();
_local2++;
}
m_icons = new Array();
_local2 = 0;
while (_local2 < m_active.m_skills.length) {
_local6 = _local2 % 3;
_local7 = Math.floor(_local2 / 3);
_local8 = m_active.m_skills[_local2];
_local4 = _local8.m_iconName;
_local5 = _local2 + icon_buffer;
_local3 = m_menu.m_clip.profile_view.icon_layer.attachMovie(_local4, (_local4 + "_id_") + _local5, _local5);
_local3._x = (_local6 * 90) + 570;
_local3._y = (_local7 * 90) + 75;
m_icons.push(_local3);
_local2++;
}
if (icon_buffer == 1) {
icon_buffer = 40;
} else {
icon_buffer = 1;
}
}
function setActiveProfile(ndx) {
trace("Setting Active Profile");
m_activeNdx = ndx;
m_active = m_profiles[ndx];
displayActiveProfile();
}
function displayActiveProfile() {
GameVars.g_badArmyIcon = "icon_skull";
GameVars.g_goodArmyIcon = "icon_good_cross";
GameVars.g_goodArmyColor = m_active.m_goodArmyColor1;
GameVars.g_goodArmyColor2 = m_active.m_goodArmyColor2;
GameVars.g_badArmyColor = m_active.m_badArmyColor1;
GameVars.g_badArmyColor2 = m_active.m_badArmyColor2;
GameVars.g_goodArmyIcon = m_active.m_goodArmyIcon;
GameVars.g_badArmyIcon = m_active.m_badArmyIcon;
GameVars.g_goodArmyIconColor1 = m_active.m_goodArmyIconColor1;
GameVars.g_badArmyIconColor1 = m_active.m_badArmyIconColor1;
m_menu.m_clip.profile_view.profileName = m_active.m_name;
m_menu.m_clip.profile_view.profileRank = "" + m_active.m_rank;
m_menu.m_clip.profile_view.profileClass = "" + m_active.m_class;
m_menu.m_clip.profile_view.profileMission = m_active.m_maxLevelReached;
var _local2 = m_active.getMaxXPForRank();
m_menu.m_clip.profile_view.profileRatio = (("" + m_active.m_xp) + " / ") + _local2;
m_menu.m_clip.profile_view.xp_bar.bar._width = (m_active.m_xp / _local2) * 100;
m_menu.m_clip.profile_view.profileGold = m_active.m_gold;
m_menu.m_clip.profile_view.good_color1._color = m_active.m_goodArmyColor1;
m_menu.m_clip.profile_view.good_color2._color = m_active.m_goodArmyColor2;
m_menu.m_clip.profile_view.bad_color1._color = m_active.m_badArmyColor1;
m_menu.m_clip.profile_view.bad_color2._color = m_active.m_badArmyColor2;
displaySkillIcons();
}
function createProfile(pName, pClass, goodColor1, goodColor2, badColor1, badColor2, goodArmyIcon, badArmyIcon, shootingMethod, goodIconColor, badIconColor) {
trace("Creating New Profile");
var _local2 = new Profile();
_local2.m_name = "" + pName;
_local2.m_class = "BowMaster";
_local2.m_goodArmyColor1 = goodColor1;
_local2.m_goodArmyColor2 = goodColor2;
_local2.m_badArmyColor1 = badColor1;
_local2.m_badArmyColor2 = badColor2;
_local2.m_goodArmyIcon = goodArmyIcon;
_local2.m_badArmyIcon = badArmyIcon;
_local2.m_shootingMode = shootingMethod;
_local2.m_goodArmyIconColor1 = goodIconColor;
_local2.m_badArmyIconColor1 = badIconColor;
var _local3 = new Skill();
_local2.addSkill(_local3);
m_profiles.push(_local2);
m_active = _local2;
m_activeNdx = m_profiles.length - 1;
saveData();
}
function saveData() {
trace("Saving Data.....");
m_myLocalSO.data.so_profiles = cloneProfileArray();
m_myLocalSO.data.so_retired = cloneRetiredProfileArray();
}
function cloneProfileArray() {
var _local4 = new Array();
var _local2 = 0;
while (_local2 < m_profiles.length) {
var _local3 = m_profiles[_local2].cloneProfile();
_local4.push(_local3);
_local2++;
}
return(_local4);
}
function cloneRetiredProfileArray() {
var _local4 = new Array();
var _local2 = 0;
while (_local2 < m_retiredProfiles.length) {
var _local3 = m_retiredProfiles[_local2].cloneProfile();
_local4.push(_local3);
_local2++;
}
return(_local4);
}
function deleteData() {
trace("Deleting All Records");
}
function testAddFireArrowSkill() {
trace("Adding Fire Arrow Skill");
m_active.addSkill(new FireArrowSkill());
saveData();
}
function testAddArrowSkill() {
trace("Adding Normal Arrow Skill");
m_active.addSkill(new Skill());
saveData();
}
function testAddBombWaveArrowSkill() {
trace("Adding Bomb Wave Arrow Skill");
m_active.addSkill(new BombWaveSkill());
saveData();
}
function testAddCometSkill() {
trace("Adding Comet Skill");
m_active.addSkill(new CometSkill());
saveData();
}
function testAddFireWaveSkill() {
trace("Adding Fire Wave Arrow Skill");
m_active.addSkill(new FireWaveSkill());
saveData();
}
function testAddHealWaveSkill() {
trace("Adding Heal Wave Arrow Skill");
m_active.addSkill(new HealWaveSkill());
saveData();
}
function testAddIceArrowSkill() {
trace("Adding Ice Arrow Skill");
m_active.addSkill(new IceArrowSkill());
saveData();
}
function testAddMeteorSkill() {
trace("Adding Meteor Arrow Skill");
m_active.addSkill(new MeteorSkill());
saveData();
}
function testAddThunderArrowSkill() {
trace("Adding Thunder Arrow Skill");
m_active.addSkill(new ThunderArrowSkill());
saveData();
}
function testAddIceWaveSkill() {
trace("Adding Ice Wave Arrow Skill");
m_active.addSkill(new IceWaveSkill());
saveData();
}
function testAddFlakBombArrowSkill() {
trace("Adding Flak Bomb Arrow Skill");
m_active.addSkill(new FlakBombSkill());
saveData();
}
function testAddBombArrowSkill() {
trace("Adding Bomb Arrow Skill");
m_active.addSkill(new BombArrowSkill());
saveData();
}
function testAddArcherSkill() {
trace("Adding Archer Skill");
m_active.addSkill(new ArcherSkill());
saveData();
}
function testAddGruntSkill() {
trace("Adding Grunt Skill");
m_active.addSkill(new GruntSkill());
saveData();
}
function testAddTallGruntSkill() {
trace("Adding Tall Grunt Skill");
m_active.addSkill(new TallGruntSkill());
saveData();
}
function testAddPriestSkill() {
trace("Adding Priest Skill");
m_active.addSkill(new PriestSkill());
saveData();
}
function testAddTrebuchetSkill() {
trace("Adding Trebuchet Skill");
m_active.addSkill(new TrebuchetSkill());
saveData();
}
function testAddMountSkill() {
trace("Adding Mount Skill");
m_active.addSkill(new MountSkill());
saveData();
}
function testAddPierceArrowSkill() {
trace("Adding Pierce Arrow Skill");
m_active.addSkill(new PierceArrowSkill());
saveData();
}
function getActiveProfile() {
return(m_active);
}
function addGoldBonus(tempObj, xp, yp) {
var _local2 = getGoldForDifficultyLevel();
m_active.m_gold = m_active.m_gold + _local2;
m_levelManager.m_clip.gold = m_active.m_gold;
m_levelManager.addGoldEarned(_local2);
}
function addGoldCheat() {
trace("Adding gold!!!!!!!!!!!!!!");
m_active.m_gold = m_active.m_gold + 1000;
m_levelManager.refreshGold();
m_active.m_cheated = true;
saveData();
}
function getGoldForDifficultyLevel() {
var _local2 = 0;
var _local3 = m_active.m_difficultyLevel;
if (_local3 == "med") {
_local2 = 10;
} else if (_local3 == "easy") {
_local2 = 8;
} else if (_local3 == "hard") {
_local2 = 12;
} else if (_local3 == "insane") {
_local2 = 16;
}
return(_local2);
}
function getNumProfiles() {
return(m_profiles.length);
}
function order(a, b) {
if (a.m_gold > b.m_gold) {
return(-1);
}
if (a.m_gold < b.m_gold) {
return(1);
}
return(0);
}
function getSortedRetiredProfiles() {
m_retiredProfiles.sort(order);
return(m_retiredProfiles);
}
function retireActiveProfile() {
var _local2 = m_profiles.splice(m_activeNdx, 1)[0];
if (m_profiles.length == 0) {
m_active = new Profile();
m_active.addSkill(new Skill());
m_profiles.push(m_active);
}
m_activeNdx = 0;
m_active = m_profiles[m_activeNdx];
m_retiredProfiles.push(_local2);
_local2.calculateScore();
saveData();
}
}
Symbol 2601 MovieClip [__Packages.MainMenu] Frame 0
class MainMenu extends GameWindow
{
var m_game, m_clipName, m_depth, m_target, m_backgrounds, m_clip;
function MainMenu (game, clipName, depth, targetClip) {
super();
m_game = game;
m_clipName = clipName;
m_depth = depth;
m_target = targetClip;
m_backgrounds = new Array("bg_dense_forest", "bg_desert", "bg_gorgoth", "bg_iceland", "bg_inner_forest", "bg_lowlands", "bg_lowlands_dawn", "bg_lowlands_night", "bg_lowlands_noon", "bg_outer_forest", "bg_saltFlats", "bg_shroomland", "bg_skyworld", "bg_winterland");
}
function displayWindow() {
trace("Displaying: " + m_clipName);
m_game.setCurrentWindow(this);
m_clip = m_target.attachMovie(m_clipName, m_clipName + "_id_1", m_depth);
m_clip.m_view = this;
m_clip.m_game = m_game;
var _local2 = getRandomBackground();
stopAllSounds();
SoundManager.playDefaultMusic();
m_clip.bg_layer.attachMovie(_local2, _local2 + "_id_1", 1);
m_game.profileManager.displayProfiles();
m_game.profileManager.displayActiveProfile();
}
function getRandomBackground() {
return(m_backgrounds[random(m_backgrounds.length)]);
}
}
Symbol 2602 MovieClip [__Packages.Castle] Frame 0
class Castle extends Structure
{
var m_permanentTeam, m_deathAnimation, m_lastAttackTimer, m_hp, m_max_hp, m_clip, m_occupiedBy, m_levelManager, xpos, ypos, updateDisplay, tst_name, permanentBadTeam;
function Castle (levelManager, clip, par_x, par_y, layer, lvl, par_hp) {
super(levelManager, clip, par_x, par_y, layer, lvl, par_hp);
}
function initDeathAnimation() {
if (m_permanentTeam == Fighter.GOOD) {
m_deathAnimation = "good_castle_death_animation";
} else if (m_permanentTeam == Fighter.BAD) {
m_deathAnimation = "bad_castle_death_animation";
}
}
function takeDamage(amt) {
m_lastAttackTimer = 50;
m_hp = m_hp - amt;
var _local2 = m_hp / m_max_hp;
if (_local2 <= 0.5) {
if (!m_clip.body.flame._visible) {
m_clip.body.flame._visible = true;
}
m_clip.body.flame._xscale = (m_clip.body.flame._yscale = (150 * (0.5 - _local2)) / 0.5);
}
if (m_hp <= 0) {
m_hp = 0;
destroy();
}
m_clip.hp_bar.setPercent((100 * m_hp) / m_max_hp);
}
function destroy() {
if ((m_occupiedBy = Fighter.NEUTRAL)) {
m_levelManager.removeFromNeutralStructures(this);
} else if ((m_occupiedBy = Fighter.GOOD)) {
m_levelManager.removeFromGoodStructures(this);
} else if ((m_occupiedBy = Fighter.BAD)) {
m_levelManager.removeFromBadStructures(this);
}
m_levelManager.removeFromGarrisonBuildings(this);
m_levelManager.deleteFromGameObjects(this);
var _local2 = m_levelManager.m_debrisManager.addDebrisBG(m_deathAnimation, 100, 100, 0, 100);
_local2.setAttributes(0, m_levelManager.m_gravity, 0, 0, xpos, ypos);
_local2 = m_levelManager.m_debrisManager.addDebris("dust_cloud", 100, 100, 0.5, 100);
_local2.setAttributes(0, 0, 0, 0, xpos - 100, ypos);
_local2 = m_levelManager.m_debrisManager.addDebris("dust_cloud", 100, 100, 0.5, 100);
_local2.setAttributes(0, 0, 0, 0, xpos, ypos);
_local2 = m_levelManager.m_debrisManager.addDebris("dust_cloud", 100, 100, 0.5, 100);
_local2.setAttributes(0, 0, 0, 0, xpos + 100, ypos);
m_clip.unloadMovie();
m_levelManager.stateChange();
}
function setPermanentTeam(team) {
m_permanentTeam = team;
initDeathAnimation();
updateDisplay();
trace("obj: " + tst_name);
trace("team: " + m_permanentTeam);
trace("permanentBadTeam(): " + permanentBadTeam());
}
}
Symbol 2603 MovieClip [__Packages.Tower] Frame 0
class Tower extends Structure
{
var m_lastAttackTimer, m_hp, m_max_hp, m_clip, m_occupiedBy, m_levelManager, xpos, ypos;
function Tower (levelManager, clip, par_x, par_y, layer, lvl, par_hp) {
super(levelManager, clip, par_x, par_y, layer, lvl, par_hp);
}
function takeDamage(amt) {
m_lastAttackTimer = 50;
m_hp = m_hp - amt;
var _local2 = m_hp / m_max_hp;
if (_local2 <= 0.5) {
if (!m_clip.body.flame._visible) {
m_clip.body.flame._visible = true;
}
m_clip.body.flame._xscale = (m_clip.body.flame._yscale = (300 * (0.5 - _local2)) / 0.5);
}
if (m_hp <= 0) {
m_hp = 0;
destroy();
}
m_clip.hp_bar.setPercent((100 * m_hp) / m_max_hp);
}
function destroy() {
if ((m_occupiedBy = Fighter.NEUTRAL)) {
m_levelManager.removeFromNeutralStructures(this);
} else if ((m_occupiedBy = Fighter.GOOD)) {
m_levelManager.removeFromGoodStructures(this);
} else if ((m_occupiedBy = Fighter.BAD)) {
m_levelManager.removeFromBadStructures(this);
}
m_levelManager.removeFromGarrisonBuildings(this);
m_levelManager.deleteFromGameObjects(this);
var _local2 = m_levelManager.m_debrisManager.addDebrisBG("tower_death_animation", 100, 100, 0, 100);
_local2.setAttributes(0, m_levelManager.m_gravity, 0, 0, xpos, ypos);
var _local3 = m_levelManager.m_debrisManager.addDebris("dust_cloud", 100, 100, 0.5, 100);
_local3.setAttributes(0, 0, 0, 0, xpos, ypos);
m_clip.unloadMovie();
}
}
Symbol 2604 MovieClip [__Packages.ShooterAutoAim] Frame 0
class ShooterAutoAim extends Shooter
{
var m_rotation, m_levelManager, m_crosshair, m_slideBar, m_angleMode, m_shooterCircle, m_bowPower, m_fired, m_hero, x_shotSpot, y_shotSpot, shooting_x, shooting_y, m_minY;
function ShooterAutoAim (hero, lm) {
super(hero, lm);
m_rotation = 0;
var _local3 = m_levelManager.getNextShooterUILevel();
m_crosshair = m_levelManager.m_clip.shooter_layer.attachMovie("cross_hair", "cross_hair_id" + _local3, _local3);
m_crosshair.cacheAsBitmap = true;
_local3 = m_levelManager.getNextShooterUILevel();
m_slideBar = m_levelManager.m_clip.shooter_layer.attachMovie("slider_bar", "slide_bar_id" + _local3, _local3);
m_slideBar._x = 1114;
m_slideBar._y = 887;
_local3 = m_levelManager.getNextShooterUILevel();
m_angleMode = m_levelManager.m_clip.shooter_layer.attachMovie("angle_mode", "angle_mode_id" + _local3, _local3);
m_angleMode._x = 1438.8;
m_angleMode._y = 895.5;
m_angleMode.amt = 1;
trace("constructing");
m_shooterCircle = m_levelManager.m_clip.m_shooter_button;
m_shooterCircle._alpha = 0;
m_bowPower = 22.8;
m_fired = false;
}
function step() {
var _local3 = m_hero.getGarrisonedBuilding();
if (_local3 == null) {
x_shotSpot = m_hero.xpos;
y_shotSpot = m_hero.ypos - 30;
} else {
x_shotSpot = _local3.xpos + _local3.m_xShotOffset;
y_shotSpot = _local3.ypos + _local3.m_yShotOffset;
}
shooting_x = _root._xmouse;
shooting_y = _root._ymouse;
m_crosshair._x = shooting_x;
m_crosshair._y = shooting_y;
stepShooterCircle();
if ((GameVars.g_holding && (!m_fired)) && (_root._ymouse < m_minY)) {
m_fired = true;
shootAtSpot();
} else if (!GameVars.g_holding) {
m_fired = false;
}
}
function shootAtSpot() {
var _local6 = x_shotSpot;
var _local7 = y_shotSpot;
var _local8 = shooting_x;
var _local11 = shooting_y;
var _local5 = (m_bowPower * m_slideBar.val) / 100;
var _local12 = m_levelManager.m_gravity;
var _local10;
var _local4;
var _local2;
var _local3;
var _local9 = new Array(2);
_local3 = Util.getTheta(_local6, _local7, _local8, _local11, _local5, _local12);
_local9[0] = (_local3[0] * 180) / Math.PI;
_local9[1] = (_local3[1] * 180) / Math.PI;
if (_local3[0] == 777) {
trace("Hero Shot out of range");
SoundManager.playSound("doeh.wav");
} else {
_local10 = _local8 - _local6;
if (m_angleMode.amt == LOW) {
_local4 = Math.cos(_local3[0]) * _local5;
_local2 = Math.sin(_local3[0]) * _local5;
if (_local10 < 0) {
_local4 = -_local4;
_local2 = -_local2;
}
} else {
_local4 = Math.cos(_local3[1]) * _local5;
_local2 = Math.sin(_local3[1]) * _local5;
if (_local10 > 0) {
_local2 = -_local2;
} else {
_local4 = -_local4;
_local2 = -_local2;
}
}
m_levelManager.m_skillManager.getActiveSkill().performAction(_local4, _local2, _local6, _local7);
}
}
function stepShooterCircle() {
m_shooterCircle._x = _root._xmouse;
m_shooterCircle._y = _root._ymouse;
}
function destroy() {
m_crosshair.unloadMovie();
m_slideBar.unloadMovie();
m_angleMode.unloadMovie();
}
var LOW = 1;
var HIGH = 0;
}
Symbol 2605 MovieClip [__Packages.ShooterPointAim] Frame 0
class ShooterPointAim extends Shooter
{
var m_levelManager, m_shotPower, m_maxShotPower, m_fired, m_hero, x_shotSpot, y_shotSpot, shooting_x, shooting_y, m_minY, m_rads, m_dx, m_dy, m_rotFact, m_rotation;
function ShooterPointAim (hero, lm) {
super(hero, lm);
var _local3;
_local3 = m_levelManager.getNextShooterUILevel();
m_aimerClip = m_levelManager.m_clip.shooter_layer.attachMovie("aimer_arrow", "aimer_arrow_id" + _local3, _local3);
_local3 = m_levelManager.getNextShooterUILevel();
m_slideBar = m_levelManager.m_clip.shooter_layer.attachMovie("slider_bar", "slide_bar_id" + _local3, _local3);
m_slideBar._x = 1114;
m_slideBar._y = 887;
m_shooterCircle = m_levelManager.m_clip.m_shooter_button;
m_shooterCircle._alpha = 0;
m_shotPower = (m_maxShotPower = 25);
m_fired = false;
}
function step() {
var _local3 = m_hero.getGarrisonedBuilding();
if (_local3 == null) {
x_shotSpot = m_hero.xpos;
y_shotSpot = m_hero.ypos - 30;
} else {
x_shotSpot = _local3.xpos + _local3.m_xShotOffset;
y_shotSpot = _local3.ypos + _local3.m_yShotOffset;
}
shooting_x = _root._xmouse;
shooting_y = _root._ymouse;
m_aimerClip._x = x_shotSpot;
m_aimerClip._y = y_shotSpot;
updateShootingClip();
stepShooterCircle();
if ((GameVars.g_holding && (!m_fired)) && (_root._ymouse < m_minY)) {
m_fired = true;
shootAtSpot();
} else if (!GameVars.g_holding) {
m_fired = false;
}
}
function shootAtSpot() {
m_shotPower = (m_maxShotPower * m_slideBar.val) / 100;
var _local3 = Math.cos(m_rads) * m_shotPower;
var _local2 = Math.sin(m_rads) * m_shotPower;
m_levelManager.m_skillManager.getActiveSkill().performAction(-_local3, -_local2, x_shotSpot, y_shotSpot);
}
function updateShootingClip() {
m_dx = x_shotSpot - shooting_x;
m_dy = y_shotSpot - shooting_y;
var _local2 = 0;
m_rads = Math.atan(m_dy / m_dx);
var _local3 = Math.sqrt((m_dx * m_dx) + (m_dy * m_dy));
_local2 = _local2 + (m_rads * m_rotFact);
if ((m_dx < 0) && (m_dx != 0)) {
m_rads = m_rads + Math.PI;
_local2 = _local2 + 180;
}
m_aimerClip._rotation = _local2;
m_rotation = _local2;
}
function stepShooterCircle() {
m_shooterCircle._x = _root._xmouse;
m_shooterCircle._y = _root._ymouse;
}
function destroy() {
m_aimerClip.unloadMovie();
m_slideBar.unloadMovie();
}
var m_aimerClip = null;
var m_shooterCircle = null;
var m_slideBar = null;
}
Symbol 2606 MovieClip [__Packages.ShooterDrag] Frame 0
class ShooterDrag extends Shooter
{
var m_hero, m_levelManager, x_shotSpot, y_shotSpot, m_minY, shooting_x, shooting_y, m_rotFact, m_rotation;
function ShooterDrag (hero, lm) {
super();
m_hero = hero;
m_levelManager = lm;
m_shooterCircle = m_levelManager.m_clip.m_shooter_button;
}
function step() {
stepShooterCircle();
var _local4 = m_hero.getGarrisonedBuilding();
var _local3;
if (_local4 == null) {
x_shotSpot = m_hero.xpos;
y_shotSpot = m_hero.ypos - 30;
} else {
x_shotSpot = _local4.xpos + _local4.m_xShotOffset;
y_shotSpot = _local4.ypos + _local4.m_yShotOffset;
}
if (GameVars.g_holding && (_root._ymouse < m_minY)) {
if (m_shootingClip == null) {
_local3 = m_levelManager.getNextShooterUILevel();
m_shootingClip = m_levelManager.m_clip.shooter_layer.attachMovie("shooting_bar", "shooting_bar_id" + _local3, _local3);
_local3 = m_levelManager.getNextShooterUILevel();
m_aimerClip = m_levelManager.m_clip.shooter_layer.attachMovie("aimer_arrow", "aimer_arrow_id" + _local3, _local3);
_local3 = m_levelManager.getNextShooterUILevel();
m_shootLine = m_levelManager.m_clip.shooter_layer.attachMovie("shoot_aimer_line", "shoot_aimer_line_id" + _local3, _local3);
if (GameVars.g_classic_shooting) {
shooting_x = x_shotSpot;
shooting_y = y_shotSpot;
} else {
shooting_x = _root._xmouse;
shooting_y = _root._ymouse;
}
m_aimerClip._x = x_shotSpot;
m_aimerClip._y = y_shotSpot;
m_shootingClip._x = x_shotSpot;
m_shootingClip._y = y_shotSpot;
} else {
updateShootingClip();
}
} else if (m_shootingClip != null) {
var _local10 = (Math.PI * m_shootingClip._rotation) / 180;
var _local9 = Math.cos(_local10);
var _local7 = Math.sin(_local10);
var _local8 = (m_shotPower * m_hero.getShotPower()) * m_shotFudgeFactor;
var _local5 = _local9 * _local8;
var _local6 = _local7 * _local8;
if ((("" + _local5) != "NaN") && (Math.sqrt((_local5 * _local5) + (_local6 * _local6)) > m_minBowPower)) {
m_levelManager.m_skillManager.getActiveSkill().performAction(-_local5, -_local6, x_shotSpot, y_shotSpot);
if (GameVars.g_classic_shooting) {
m_levelManager.m_clip.aimer_memory_03._x = _root._xmouse;
m_levelManager.m_clip.aimer_memory_03._y = _root._ymouse;
m_levelManager.m_clip.aimer_memory_03._rotation = m_aimerClip._rotation;
}
m_levelManager.m_clip.aimer_memory_02._x = x_shotSpot + (_local9 * m_spotMemoryDist);
m_levelManager.m_clip.aimer_memory_02._y = y_shotSpot + (_local7 * m_spotMemoryDist);
m_levelManager.m_clip.aimer_memory_02._rotation = m_aimerClip._rotation;
m_levelManager.m_clip.aimer_memory_01._x = x_shotSpot;
m_levelManager.m_clip.aimer_memory_01._y = y_shotSpot;
m_levelManager.m_clip.aimer_memory_01._rotation = m_aimerClip._rotation;
}
m_shootingClip.unloadMovie();
m_aimerClip.unloadMovie();
m_shootLine.unloadMovie();
m_shootingClip = null;
m_aimerClip = null;
m_shootLine = null;
}
}
function updateShootingClip() {
var _local4 = _root._xmouse - shooting_x;
var _local6 = _root._ymouse - shooting_y;
var _local3 = 0;
var _local7 = Math.atan(_local6 / _local4);
var _local5 = Math.sqrt((_local4 * _local4) + (_local6 * _local6));
if (_local5 > m_maxDragDist) {
_local5 = m_maxDragDist;
}
m_spotMemoryDist = _local5 * m_bowShrinkFactor;
m_shootingClip.body._x = m_spotMemoryDist;
m_shotPower = _local5 / m_maxDragDist;
_local3 = _local3 + (_local7 * m_rotFact);
if ((_local4 < 0) && (_local4 != 0)) {
_local3 = _local3 + 180;
}
m_shootLine._x = shooting_x;
m_shootLine._y = shooting_y;
m_shootLine.bod._width = _local5;
m_shootLine.bod._height = 2;
m_shootLine._rotation = _local3;
m_shootingClip._rotation = _local3;
m_aimerClip._rotation = _local3;
m_aimerClip._visible = false;
m_rotation = _local3;
}
function stepShooterCircle() {
if (GameVars.g_classic_shooting) {
m_shooterCircle._alpha = 100;
if (!GameVars.g_holding) {
m_shooterCircle._x = m_levelManager.m_shooter.x_shotSpot;
m_shooterCircle._y = m_levelManager.m_shooter.y_shotSpot;
} else {
m_shooterCircle._x = _root._xmouse;
m_shooterCircle._y = _root._ymouse;
}
} else {
m_shooterCircle._alpha = 0;
m_shooterCircle._x = _root._xmouse;
m_shooterCircle._y = _root._ymouse;
}
}
function destroy() {
m_levelManager.m_clip.aimer_memory_03._x = -100;
m_levelManager.m_clip.aimer_memory_02._x = -100;
m_levelManager.m_clip.aimer_memory_01._x = -100;
GameVars.g_holding = false;
m_shootingClip.unloadMovie();
m_aimerClip.unloadMovie();
m_shootLine.unloadMovie();
}
var m_shootingClip = null;
var m_aimerClip = null;
var m_shooterCircle = null;
var m_bowLoadRate = 50;
var m_minBowPower = 5;
var m_timeToUpdateAimer = 0;
var m_spotMemoryDist = 0;
var m_shootLine = null;
var m_bowShrinkFactor = 1;
var m_maxDragDist = 180;
var m_shotPower = 0;
var m_shotFudgeFactor = 0.08;
}
Symbol 2607 MovieClip [__Packages.FlagGrunt] Frame 0
class FlagGrunt extends FlagFighter
{
var m_engagementManager, m_hpBase, m_speedBase, m_dmgBase, m_meleeDamage, faceObj, m_skill;
function FlagGrunt (levelManager, clip, par_x, par_y, layer, lvl, par_hp) {
super(levelManager, clip, par_x, par_y, layer, lvl, par_hp);
m_engagementManager.setAttackedByLimit(2);
m_engagementManager.setAttackLimit(1);
m_hpBase = 100;
m_speedBase = 0.35;
m_dmgBase = 8;
}
function applyAttack(obj) {
var _local3 = new ImpactEffect(obj.m_effectsManager, "impact", "indicator_impact", obj, 10, 9999);
var _local4 = Math.floor((Util.randomPercent(0.5) * m_meleeDamage) * obj.getMultSlice());
_local3.setAmt(_local4);
_local3.setImpactType("armor");
obj.m_effectsManager.addEffect(_local3);
faceObj(obj);
if ((((m_skill != null) && (obj instanceof Fighter)) && (Fighter(obj).isBad())) && (random(3) > 0)) {
m_skill.addXP(Util.calcXP(_local4));
}
}
}
Symbol 2608 MovieClip [__Packages.FlagTallGrunt] Frame 0
class FlagTallGrunt extends FlagFighter
{
var m_multLighting, m_multFire, m_multIce, m_multBlunt, m_multSlice, m_multPierce, m_engagementManager, m_hpBase, m_speedBase, m_dmgBase, m_meleeDamage, faceObj, m_skill;
function FlagTallGrunt (levelManager, clip, par_x, par_y, layer, lvl, par_hp) {
super(levelManager, clip, par_x, par_y, layer, lvl, par_hp);
m_multLighting = 1;
m_multFire = 1;
m_multIce = 1;
m_multBlunt = 1;
m_multSlice = 0.9;
m_multPierce = 1.4;
m_engagementManager.setAttackedByLimit(4);
m_engagementManager.setAttackLimit(2);
m_hpBase = 150;
m_speedBase = 0.35;
m_dmgBase = 15;
}
function applyAttack(obj) {
var _local3 = new ImpactEffect(obj.m_effectsManager, "impact", "indicator_impact", obj, 10, 9999);
var _local4 = Math.floor((Util.randomPercent(0.5) * m_meleeDamage) * obj.getMultBlunt());
_local3.setAmt(_local4);
_local3.setImpactType("armor");
obj.m_effectsManager.addEffect(_local3);
faceObj(obj);
if ((((m_skill != null) && (obj instanceof Fighter)) && (Fighter(obj).isBad())) && (random(2) == 0)) {
m_skill.addXP(Util.calcXP(_local4));
}
}
}
Symbol 2609 MovieClip [__Packages.FlagTrebuchet] Frame 0
class FlagTrebuchet extends FlagFighter
{
var m_fired, m_target, m_immunities, m_type, m_multLighting, m_multFire, m_multIce, m_multBlunt, m_multSlice, m_multPierce, m_engagementManager, m_hpBase, m_speedBase, m_dmgBase, m_clip, animFrame, animEnd, animRate, rotation, m_levelManager, xpos, vx, actionMode, actionDuration, animStartFrame, m_forward, m_speed, engaged, DEAD_IMMUNITIES, unlinkEngagements, m_shotLoadTime, m_shotAimTime, m_releaseTime, attackEngagementTarget, m_hp, m_shotRange, standStill, unitDie, rot, destroy, enemies, ypos, m_shotDamage, m_rank, m_teamNum, m_skill, getOwningStructure, setBasicStatsByLevel, setMeleeDamage, m_shotVariation, setBasicStatsByRank;
function FlagTrebuchet (levelManager, clip, par_x, par_y, layer, lvl, par_hp) {
super(levelManager, clip, par_x, par_y, layer, lvl, par_hp);
m_fired = false;
m_target = null;
m_immunities = "fear convert heal poison regen daze";
m_type = "vehicle";
m_multLighting = 1;
m_multFire = 2;
m_multIce = 1;
m_multBlunt = 1.1;
m_multSlice = 0.5;
m_multPierce = 0.5;
m_engagementManager.setAttackedByLimit(5);
m_engagementManager.setAttackLimit(1);
m_hpBase = 300;
m_speedBase = 0.25;
m_dmgBase = 125;
}
function animate() {
m_clip.anim.gotoAndStop(Math.floor(animFrame));
if (animFrame < animEnd) {
animFrame = animFrame + (animRate * GameApp.m_gSpeed);
}
}
function updateRotation() {
rotation = m_levelManager.getRotationAt(xpos);
}
function setActionAttack() {
vx = 0;
var _local2 = 1;
actionMode = "attack";
animRate = 1 / _local2;
actionDuration = 208 * _local2;
animStartFrame = ATTACK_START;
animFrame = ATTACK_START;
animEnd = ATTACK_END;
}
function setActionAdvance() {
m_clip._xscale = m_forward * 100;
vx = m_forward * m_speed;
actionMode = "move";
engaged = false;
animRate = Math.abs(vx * 0.25);
actionDuration = Math.abs(40 / vx);
animStartFrame = ADVANCE_START;
animFrame = ADVANCE_START;
animEnd = ADVANCE_END;
}
function setActionRetreat() {
m_clip._xscale = (-m_forward) * 100;
vx = (-m_forward) * m_speed;
actionMode = "move";
engaged = false;
animRate = Math.abs(vx * 0.25);
actionDuration = Math.abs(40 / vx);
animStartFrame = ADVANCE_START;
animFrame = ADVANCE_START;
animEnd = ADVANCE_END;
}
function setActionDie() {
m_immunities = DEAD_IMMUNITIES;
vx = 0;
actionMode = "die";
animRate = 0.25;
actionDuration = 76;
animStartFrame = DIE_START;
animFrame = DIE_START;
animEnd = DIE_END;
unlinkEngagements();
}
function setActionLoadAmmo() {
vx = 0;
actionMode = "load_ammo";
animStartFrame = LOAD_END;
animFrame = LOAD_END;
animEnd = LOAD_END;
actionDuration = m_shotLoadTime;
animRate = (animEnd - animStartFrame) / m_shotLoadTime;
}
function setActionAim() {
vx = 0;
actionMode = "aim";
animStartFrame = AIM_START;
animFrame = AIM_START;
animEnd = AIM_START;
actionDuration = m_shotAimTime;
animRate = 0;
}
function setActionReleaseAmmo() {
vx = 0;
actionMode = "release_ammo";
animStartFrame = RELEASE_START;
animFrame = RELEASE_START;
animEnd = RELEASE_END;
actionDuration = m_releaseTime;
animRate = (animEnd - animStartFrame) / m_releaseTime;
}
function setActionHoldFire() {
vx = 0;
var _local2 = 1;
actionMode = "hold_fire";
animRate = 0;
actionDuration = 30;
animStartFrame = LOAD_END;
animFrame = LOAD_END;
animEnd = LOAD_END;
}
function setActionFlinch() {
}
function setActionKnockBack() {
}
function setActionDaze() {
}
function loadAmmo() {
if (actionDuration <= 0) {
setActionAim();
}
}
function aim() {
if (actionDuration <= 0) {
setActionReleaseAmmo();
}
}
function releaseAmmo() {
if ((((m_target != null) && (!m_fired)) && (m_target.xpos > 0)) && (m_target.xpos < 2000)) {
if ((actionDuration < 132) && (!m_fired)) {
m_fired = true;
shootAtTarget();
}
}
}
function attack() {
if (actionDuration < 0) {
attackEngagementTarget();
}
}
function getNextAction() {
var _local3;
var _local2;
m_fired = false;
if (m_hp > 0) {
}
if (m_hp <= 0) {
setActionDie();
} else if (m_engagementManager.getNumAttacking() > 0) {
setActionAttack();
} else if (((m_forward > 0) && (xpos < (GameApp.g_width - m_shotRange))) || ((m_forward < 0) && (xpos > m_shotRange))) {
setActionAdvance();
} else {
setTarget();
if (m_target != null) {
setActionLoadAmmo();
} else {
setActionHoldFire();
}
}
}
function doAction() {
if (actionMode == "move") {
} else if (actionMode == "attack") {
attack();
} else if (actionMode == "block") {
standStill();
} else if (actionMode == "die") {
unitDie();
} else if (actionMode == "rot") {
rot();
} else if (actionMode == "remove") {
destroy();
} else if (actionMode == "aim") {
aim();
} else if (actionMode == "release_ammo") {
releaseAmmo();
} else if (actionMode == "load_ammo") {
loadAmmo();
}
}
function setTarget() {
var _local2 = null;
var _local6 = null;
var _local8 = 9999;
var _local5 = 0;
var _local4;
var _local7 = enemies.length;
var _local3 = 0;
while (_local3 < _local7) {
_local2 = enemies[_local3];
if (_local2.hasHP()) {
_local4 = m_levelManager.distToObj(xpos, ypos, _local2.xpos, _local2.ypos);
if ((_local4 > _local5) && (_local4 > 700)) {
_local6 = _local2;
_local5 = _local4;
}
}
_local3++;
}
m_target = _local6;
}
function shootAtTarget() {
var _local7 = 25;
var _local9;
var _local10;
var _local6 = 5;
var _local5;
var _local8;
var _local2;
var _local4;
var _local3;
var _local11;
_local5 = m_target.xpos - xpos;
_local8 = (m_target.ypos - _local7) - (ypos - 150);
_local11 = m_levelManager.m_gravity;
if (_local5 < 0) {
_local2 = -(_local6 * GameApp.m_gSpeed);
} else {
_local2 = _local6 * GameApp.m_gSpeed;
}
_local3 = _local5 / (_local2 - m_target.vx);
_local4 = (_local8 - (((0.5 * _local11) * _local3) * _local3)) / _local3;
_local9 = (random(400) - 200) / 100;
_local10 = (random(200) - 100) / 100;
_local4 = _local4 + _local9;
_local2 = _local2 + _local10;
addProjectile(xpos, ypos - 150, _local2, _local4);
}
function addProjectile(px, py, pvx, pvy) {
m_levelManager.m_soundManager.addSound("firecat3.wav");
var _local3 = m_levelManager.getNextObjectLevel();
var _local2 = new TrebuchetAmmo(m_levelManager, "projectile01", px, py, m_levelManager.m_clip.object_layer, _local3, 100);
_local2.setImpactDamage(m_shotDamage);
_local2.setRank(m_rank);
_local2.setTeam(m_teamNum);
_local2.setSkill(m_skill);
_local2.m_clip.lvl = _local3;
_local2.setVelocity(pvx, pvy);
m_levelManager.m_gameObjects.push(_local2);
_local2.setOwningStructure(getOwningStructure());
}
function setRankUsingLevel(lvl) {
m_rank = Math.floor(lvl / m_levelManager.m_rankUpFactor);
setBasicStatsByLevel(lvl);
setMeleeDamage(1);
m_shotLoadTime = 200;
m_shotAimTime = 500 - (lvl * 4);
m_releaseTime = 160;
m_shotVariation = 400 - Math.floor(lvl * 10);
m_shotRange = 1500 + random(200);
}
function setRank(rank) {
m_rank = rank;
setBasicStatsByRank(rank);
setMeleeDamage(1);
m_shotLoadTime = 200;
m_shotAimTime = 500 - (m_rank * 20);
m_releaseTime = 160;
m_shotVariation = 400 - Math.floor(m_rank * 50);
m_shotRange = 1500 + random(200);
}
function doNormalDamageVisual(obj) {
m_levelManager.m_debrisManager.woodSplash(obj.xpos, obj.ypos, DebrisManager.m_bloodAmt);
}
function doCriticalDamageVisual(obj) {
m_levelManager.m_debrisManager.woodSplash(obj.xpos, obj.ypos, DebrisManager.m_bloodAmt * 2);
}
function setDmg(amt) {
m_shotDamage = amt;
}
var ADVANCE_START = 1;
var ADVANCE_END = 14;
var ATTACK_START = 15;
var ATTACK_END = 169;
var LOAD_START = 170;
var LOAD_END = 222;
var DIE_START = 223;
var DIE_END = 245;
var AIM_START = 222;
var RELEASE_START = 15;
var RELEASE_END = 222;
var m_leftRange = 400;
var m_rightRange = 1800;
}
Symbol 2610 MovieClip [__Packages.TrebuchetAmmo] Frame 0
class TrebuchetAmmo extends StandardArrow
{
var m_flare, ypos, m_timeToSmoke, m_levelManager, m_flareLifeSpan, m_flareAnimDur, m_flareAnimRate, m_flareAnimEnd, xpos, rotation, m_ground_level, doProjectileReaction, m_targets, m_impactDamage, m_skill, m_rank, destroy;
function TrebuchetAmmo (levelManager, clip, par_x, par_y, layer, lvl, par_hp) {
super(levelManager, clip, par_x, par_y, layer, lvl, par_hp);
m_flare = "flare_ball_01";
setRank(0);
}
function updateSmoke() {
if ((ypos > -10) && (((m_timeToSmoke = m_timeToSmoke - GameApp.m_gSpeed)) < 0)) {
m_timeToSmoke = 0;
var _local2 = m_levelManager.m_debrisManager.addDebrisBG(m_flare, m_flareLifeSpan, m_flareAnimDur, m_flareAnimRate, m_flareAnimEnd);
_local2.setAttributes(0, 0, 0, 0, (xpos + random(4)) - 2, (ypos + random(4)) - 2, 0);
}
}
function updateRotation() {
rotation = 0;
}
function testHit() {
var _local3;
var _local4 = false;
var _local5;
m_ground_level = m_levelManager.getElevation(xpos);
if (ypos > (m_ground_level + 10)) {
doProjectileReaction(null);
} else {
var _local2 = 0;
while ((_local2 < m_targets.length) && (!_local4)) {
_local3 = m_targets[_local2];
if (_local3.hasHP() && (_local3.m_clip.hitbox.hitTest(xpos, ypos, 0))) {
doProjectileReaction(_local3);
_local4 = true;
}
_local2++;
}
}
}
function doProjectileAction(tempObj) {
if (tempObj != null) {
var _local6 = new ImpactEffect(tempObj.m_effectsManager, "impact", "indicator_impact", tempObj, 10, 9999);
var _local5 = tempObj.getMultBlunt() * m_impactDamage;
var _local7 = 60;
_local6.setAmt(_local5);
tempObj.m_effectsManager.addEffect(_local6);
if ((m_skill != null) && (random(3) == 0)) {
m_skill.addXP(Util.calcXP(_local5));
}
var _local4 = 3;
if (_local4 > 3) {
_local4 = 3;
}
trace("Checking if hit object is a structure:");
if (tempObj instanceof Structure) {
trace("Object is a structure... commencing rock explosion");
Structure(tempObj).bounceProjectileExplosion(this, _local4, _local7);
}
}
var _local3 = new SpBomb(m_levelManager.m_spellManager);
_local3.setLocation(xpos, ypos);
_local3.setBombRadius(30 + (m_rank * 2));
_local3.setMaxDamage(30 + (m_rank * 2));
_local3.setSkill(m_skill);
_local3.setRank(m_rank);
destroy();
}
function setRank(rank) {
var _local6 = 10;
var _local7 = 12;
var _local4 = 14;
var _local5 = 16;
var _local9 = 18;
var _local10 = 22;
var _local8 = 26;
var _local2 = 50;
if (rank == 0) {
m_flareLifeSpan = _local6;
m_flareAnimDur = _local6;
m_flareAnimRate = _local2 / _local6;
m_flareAnimEnd = _local2;
} else if (rank == 1) {
m_flareLifeSpan = _local7;
m_flareAnimDur = _local7;
m_flareAnimRate = _local2 / _local7;
m_flareAnimEnd = _local2;
} else if (rank == 2) {
m_flareLifeSpan = _local4;
m_flareAnimDur = _local4;
m_flareAnimRate = _local2 / _local4;
m_flareAnimEnd = _local2;
} else if (rank == 3) {
m_flareLifeSpan = _local5;
m_flareAnimDur = _local5;
m_flareAnimRate = _local2 / _local5;
m_flareAnimEnd = _local2;
} else if (rank == 4) {
m_flareLifeSpan = _local9;
m_flareAnimDur = _local9;
m_flareAnimRate = _local2 / _local9;
m_flareAnimEnd = _local2;
} else if (rank == 5) {
m_flareLifeSpan = _local10;
m_flareAnimDur = _local10;
m_flareAnimRate = _local2 / _local10;
m_flareAnimEnd = _local2;
} else if (rank == 6) {
m_flareLifeSpan = _local8;
m_flareAnimDur = _local8;
m_flareAnimRate = _local2 / _local8;
m_flareAnimEnd = _local2;
}
m_rank = rank;
}
}
Symbol 2611 MovieClip [__Packages.FlagArcher] Frame 0
class FlagArcher extends FlagFighter
{
var m_meleeDamage, m_randRange, m_fired, m_immunities, m_rangedTarget, m_engagementManager, m_multLighting, m_multFire, m_multIce, m_multBlunt, m_multSlice, m_multPierce, m_hpBase, m_speedBase, m_dmgBase, vx, faceObj, m_speedFactor, actionMode, animRate, actionDuration, animStartFrame, animFrame, animEnd, m_forward, m_clip, m_speed, DEAD_IMMUNITIES, unlinkEngagements, m_shotLoadTime, m_shotAimTime, m_releaseTime, attackEngagementTarget, xpos, getClosestEnemyWithFlag, getClosestEnemyWithHP, getClosestEnemyStructure, garrisoned, getFurthestUnoccupiedFromHalf, m_garrisonDistance, attemptGarrisonInto, inFront, setActionBlock, leaveGarrisonedBuilding, standStill, unitDie, rot, destroy, daze, knockBack, getGarrisonedBuilding, m_xShotSpot, m_yShotSpot, m_height, ypos, m_bowPower, m_levelManager, m_shotDamage, m_teamNum, m_skill, getOwningStructure, m_rank, setBasicStatsByRank, setMeleeDamage, setBasicStatsByLevel;
function FlagArcher (levelManager, clip, par_x, par_y, layer, lvl, par_hp) {
super(levelManager, clip, par_x, par_y, layer, lvl, par_hp);
m_meleeDamage = 5;
m_randRange = random(200);
m_fired = false;
m_immunities = "";
m_rangedTarget = null;
m_engagementManager.setAttackedByLimit(2);
m_engagementManager.setAttackLimit(1);
m_multLighting = 1;
m_multFire = 2;
m_multIce = 1;
m_multBlunt = 1;
m_multSlice = 1;
m_multPierce = 1;
m_hpBase = 75;
m_speedBase = 0.4;
m_dmgBase = 19;
}
function setActionAttack() {
vx = 0;
faceObj(m_rangedTarget);
var _local2 = 4 / m_speedFactor;
actionMode = "attack";
animRate = 1 / _local2;
actionDuration = 31 * _local2;
animStartFrame = ATTACK_START;
animFrame = ATTACK_START;
animEnd = ATTACK_END;
}
function setActionAdvance() {
var _local2 = 4 / m_speedFactor;
m_clip._xscale = m_forward * 100;
vx = (m_forward * m_speed) * m_speedFactor;
actionMode = "move";
animRate = Math.abs((vx * 1) / _local2);
actionDuration = Math.abs((10 * _local2) / vx);
animStartFrame = ADVANCE_START;
animFrame = ADVANCE_START;
animEnd = ADVANCE_END;
}
function setActionRetreat() {
var _local2 = 4 / m_speedFactor;
m_clip._xscale = (-m_forward) * 100;
vx = ((-m_forward) * m_speed) * m_speedFactor;
actionMode = "move";
animRate = Math.abs(vx * 0.25);
actionDuration = Math.abs(40 / vx);
animStartFrame = ADVANCE_START;
animFrame = ADVANCE_START;
animEnd = ADVANCE_END;
}
function setActionDie() {
vx = 0;
m_immunities = DEAD_IMMUNITIES;
actionMode = "die";
animRate = 0.25;
actionDuration = 24;
animStartFrame = DIE_START;
animFrame = DIE_START;
animEnd = DIE_END;
unlinkEngagements();
}
function setActionLoadArrow() {
vx = 0;
actionMode = "load_arrow";
animStartFrame = LOAD_START;
animFrame = LOAD_START;
animEnd = LOAD_END;
actionDuration = m_shotLoadTime;
animRate = (animEnd - animStartFrame) / m_shotLoadTime;
}
function setActionAim() {
vx = 0;
actionMode = "aim";
animStartFrame = AIM_START;
animFrame = AIM_START;
animEnd = AIM_START;
actionDuration = m_shotAimTime;
animRate = 0;
}
function setActionReleaseArrow() {
vx = 0;
actionMode = "release_arrow";
animStartFrame = RELEASE_START;
animFrame = RELEASE_START;
animEnd = RELEASE_END;
actionDuration = m_releaseTime;
animRate = (animEnd - animStartFrame) / m_releaseTime;
}
function setActionFear() {
setActionRetreat();
}
function animate() {
m_clip.anim.gotoAndStop(Math.floor(animFrame));
if (animFrame < animEnd) {
animFrame = animFrame + (animRate * GameApp.m_gSpeed);
}
}
function attack() {
if (actionDuration < 0) {
attackEngagementTarget();
}
}
function loadArrow() {
if (actionDuration <= 0) {
setActionAim();
}
}
function aim() {
if (actionDuration <= 0) {
setActionReleaseArrow();
}
faceObj(m_rangedTarget);
}
function releaseArrow() {
if ((m_rangedTarget != null) && (!m_fired)) {
m_fired = true;
shootAtTarget(m_rangedTarget);
}
}
function getNextAction() {
var _local3;
var _local4;
var _local6;
var _local2;
var _local5;
var _local8;
var _local7;
m_fired = false;
if ((xpos < 50) || (xpos > (GameApp.g_width - 50))) {
setActionAdvance();
} else {
_local3 = getClosestEnemyWithFlag();
if (_local3 == null) {
_local3 = getClosestEnemyWithHP();
}
_local4 = getClosestEnemyStructure();
if ((_local3 == null) && (_local4 == null)) {
_local2 = null;
} else if (_local3 == null) {
_local2 = _local4;
} else if (_local4 == null) {
_local2 = _local3;
} else if (Math.abs(_local3.xpos - xpos) < Math.abs(_local4.xpos - xpos)) {
_local2 = _local3;
} else {
_local2 = _local4;
}
if (!garrisoned()) {
_local5 = getFurthestUnoccupiedFromHalf();
if ((((_local5 != null) && (Math.abs(_local5.xpos - xpos) < m_garrisonDistance)) && (_local2 != null)) && (inShotRange(_local2))) {
attemptGarrisonInto(_local5);
}
}
if (_local2 == null) {
if ((!garrisoned()) && (_local5 != null)) {
if (inFront(_local5)) {
setActionAdvance();
} else {
setActionRetreat();
}
} else {
setActionBlock();
}
} else if (inShotRange(_local2)) {
m_rangedTarget = _local2;
setActionLoadArrow();
} else if (!garrisoned()) {
if (inFront(_local2)) {
setActionAdvance();
} else {
setActionRetreat();
}
} else {
leaveGarrisonedBuilding();
}
}
}
function doAction() {
if (actionMode == "move") {
} else if (actionMode == "attack") {
attack();
} else if (actionMode == "block") {
standStill();
} else if (actionMode == "die") {
unitDie();
} else if (actionMode == "rot") {
rot();
} else if (actionMode == "remove") {
destroy();
} else if (actionMode == "load_arrow") {
loadArrow();
} else if (actionMode == "aim") {
aim();
} else if (actionMode == "release_arrow") {
releaseArrow();
} else if (actionMode == "daze") {
daze();
} else if (actionMode == "knock_back") {
knockBack();
}
}
function inShotRange(target) {
var _local2 = getGarrisonedBuilding();
if (_local2 == null) {
m_xShotSpot = xpos;
m_yShotSpot = ypos - m_height;
} else {
m_xShotSpot = _local2.xpos + _local2.m_xShotOffset;
m_yShotSpot = _local2.ypos + _local2.m_yShotOffset;
}
var _local7 = m_xShotSpot;
var _local5 = m_yShotSpot;
var _local6 = target.xpos;
var _local3 = target.ypos - target.m_height;
var _local4 = m_bowPower * 0.95;
var _local10 = m_levelManager.m_gravity;
var _local9 = Util.getTheta(_local7, _local5, _local6, _local3, _local4, _local10);
return(_local9[0] != 777);
}
function shootAtTarget(shotTarget) {
var _local5 = getGarrisonedBuilding();
if (_local5 == null) {
m_xShotSpot = xpos;
m_yShotSpot = ypos - m_height;
} else {
m_xShotSpot = _local5.xpos + _local5.m_xShotOffset;
m_yShotSpot = _local5.ypos + _local5.m_yShotOffset;
}
var _local6 = m_xShotSpot;
var _local8 = m_yShotSpot;
var _local9 = shotTarget.xpos;
var _local12 = shotTarget.ypos - (shotTarget.m_height * 0.5);
var _local7 = m_bowPower;
var _local14 = m_levelManager.m_gravity;
var _local13;
var _local2;
var _local4;
var _local3;
var _local10 = new Array(2);
_local3 = Util.getTheta(_local6, _local8, _local9, _local12, _local7, _local14);
_local10[0] = (_local3[0] * 180) / Math.PI;
_local10[1] = (_local3[1] * 180) / Math.PI;
if (_local3[0] == 777) {
_local2 = Math.sqrt((m_bowPower * m_bowPower) * 0.5);
_local4 = -_local2;
if (xpos > shotTarget.xpos) {
_local2 = _local2 * -1;
}
trace("Shoot at max angle");
addArrow(_local6, _local8, _local2, _local4);
} else {
_local13 = _local9 - _local6;
_local2 = (Math.cos(_local3[0]) * _local7) * Util.randomPercent(0.2);
_local4 = (Math.sin(_local3[0]) * _local7) * Util.randomPercent(0.2);
if (_local13 < 0) {
_local2 = -_local2;
_local4 = -_local4;
}
addArrow(_local6, _local8, _local2, _local4);
}
}
function addArrow(px, py, pvx, pvy) {
m_levelManager.m_soundManager.addSound("swoosh02.wav");
var _local3 = m_levelManager.getNextObjectLevel();
var _local2 = new StandardArrow(m_levelManager, getArrowType(), px, py, m_levelManager.m_clip.object_layer, _local3, 100);
_local2.setImpactDamage(Math.floor(m_shotDamage * Util.randomPercent(0.5)));
_local2.m_clip.lvl = _local3;
_local2.setVelocity(pvx, pvy);
_local2.setTeam(m_teamNum);
_local2.setStickyArrowType(getStickyArrowType());
_local2.setSkill(m_skill);
m_levelManager.m_gameObjects.push(_local2);
_local2.setOwningStructure(getOwningStructure());
}
function setDmg(amt) {
m_shotDamage = amt;
}
function setRank(rank) {
m_rank = rank;
setBasicStatsByRank(rank);
setMeleeDamage(1);
m_shotLoadTime = 60;
m_shotAimTime = 500 - (m_rank * 20);
m_releaseTime = 33;
m_bowPower = (14 + (m_rank * 0.25)) * Util.randomPercent(0.2);
}
function setRankUsingLevel(lvl) {
m_rank = Math.floor(lvl / m_levelManager.m_rankUpFactor);
setBasicStatsByLevel(lvl);
setMeleeDamage(1);
m_shotLoadTime = 60;
m_shotAimTime = 500 - (lvl * 4);
m_releaseTime = 33;
m_bowPower = (14 + (lvl * 0.05)) * Util.randomPercent(0.2);
}
function getArrowType() {
var _local2 = "arrow";
if (m_teamNum == Fighter.BAD) {
_local2 = "arrow_bad";
} else {
_local2 = "arrow";
}
return(_local2);
}
function getStickyArrowType() {
var _local2 = "sticky_arrow";
if (m_teamNum == Fighter.BAD) {
_local2 = "sticky_arrow_bad";
} else {
_local2 = "sticky_arrow";
}
return(_local2);
}
var ADVANCE_START = 5;
var ADVANCE_END = 15;
var ATTACK_START = 16;
var ATTACK_END = 47;
var DIE_START = 48;
var DIE_END = 58;
var FLINCH_START = 60;
var FLINCH_END = 70;
var KNOCKBACK_START = 70;
var KNOCKBACK_END = 90;
var DAZE_START = 90;
var DAZE_END = 90;
var GETUP_FROM_DAZE_START = 90;
var GETUP_FROM_DAZE_END = 110;
var LOAD_START = 16;
var LOAD_END = 37;
var AIM_START = 37;
var RELEASE_START = 37;
var RELEASE_END = 48;
}
Symbol 2612 MovieClip [__Packages.FlagPriest] Frame 0
class FlagPriest extends FlagFighter
{
var m_immunities, m_healCoolDownMax, m_healCoolDown, m_healRange, m_minRange, m_type, m_priest, m_midScreen, m_healTarget, m_multLighting, m_multFire, m_multIce, m_multBlunt, m_multSlice, m_multPierce, m_engagementManager, m_hpBase, m_speedBase, m_dmgBase, vx, actionMode, animRate, actionDuration, animStartFrame, animFrame, animEnd, m_healPower, m_skill, m_hp, engageEnemiesAttackingMe, setActionDie, setActionAttack, inRange, setActionBlock, inFront, setActionAdvance, setActionRetreat, getClosestInjured, getFrontLineFriendNonPriest, getClosestEnemyNotGarrisoned, engageEnemiesInRange, m_forward, xpos, friends, attack, standStill, unitDie, rot, destroy, daze, knockBack, m_meleeDamage, faceObj, m_rank, m_levelManager, setBasicStatsByLevel, setBasicStatsByRank;
function FlagPriest (levelManager, clip, par_x, par_y, layer, lvl, par_hp) {
super(levelManager, clip, par_x, par_y, layer, lvl, par_hp);
m_immunities = "fear";
m_healCoolDownMax = 100;
m_healCoolDown = 0;
m_healRange = 200;
m_minRange = 75;
m_type = "living";
m_priest = true;
m_midScreen = (1000 + random(100)) - random(100);
m_healTarget = null;
m_multLighting = 0.1;
m_multFire = 1.2;
m_multIce = 1.2;
m_multBlunt = 1;
m_multSlice = 1;
m_multPierce = 1;
m_engagementManager.setAttackedByLimit(2);
m_engagementManager.setAttackLimit(1);
m_hpBase = 50;
m_speedBase = 0.4;
m_dmgBase = 8;
}
function setActionHeal() {
vx = 0;
var _local2 = 1;
actionMode = "heal";
animRate = 1 / _local2;
actionDuration = ((HEAL_END - HEAL_START) - 1) * _local2;
animStartFrame = HEAL_START;
animFrame = HEAL_START;
animEnd = HEAL_END;
}
function setActionPurge() {
vx = 0;
var _local2 = 1;
actionMode = "purge";
animRate = 1 / _local2;
actionDuration = ((HEAL_END - HEAL_START) - 1) * _local2;
animStartFrame = HEAL_START;
animFrame = HEAL_START;
animEnd = HEAL_END;
}
function heal() {
if (actionDuration < 0) {
m_healCoolDown = m_healCoolDownMax;
var _local3 = new HealEffect(m_healTarget.m_effectsManager, "heal", "indicator_heal", m_healTarget, 10, 9999);
var _local2 = m_healPower * Util.randomPercent(0.2);
_local3.setAmt(_local2);
m_healTarget.m_effectsManager.addEffect(_local3);
if (m_skill != null) {
m_skill.addXP(Util.calcXP(_local2));
}
}
}
function purge() {
if (actionDuration < 0) {
m_healCoolDown = m_healCoolDownMax;
var _local2 = new PurgeEffect(m_healTarget.m_effectsManager, "purge", "indicator_purge", m_healTarget, 3000, 20);
m_healTarget.m_effectsManager.addEffect(_local2);
if (m_skill != null) {
m_skill.addXP(5);
}
}
}
function getNextAction() {
var _local3;
var _local5;
var _local6;
var _local2;
var _local4;
if (m_hp > 0) {
engageEnemiesAttackingMe();
}
if (m_hp <= 0) {
setActionDie();
} else if (m_engagementManager.getNumAttacking() > 0) {
setActionAttack();
} else {
_local4 = getClosestPoisoned();
if (_local4 != null) {
m_healTarget = _local4;
if (inRange(_local4, m_healRange)) {
if (healReady()) {
setActionPurge();
} else {
setActionBlock();
}
} else if (inFront(_local4)) {
setActionAdvance();
} else {
setActionRetreat();
}
} else {
_local3 = getClosestInjured();
if (_local3 != null) {
m_healTarget = _local3;
if (inRange(_local3, m_healRange)) {
if (healReady()) {
setActionHeal();
} else {
setActionBlock();
}
} else if (inFront(_local3)) {
setActionAdvance();
} else {
setActionRetreat();
}
} else {
_local2 = getFrontLineFriendNonPriest();
if (_local2 != null) {
if (inFront(_local2)) {
if (inRange(_local2, m_healRange)) {
if (inRange(_local2, m_minRange)) {
setActionRetreat();
} else {
setActionBlock();
}
} else {
setActionAdvance();
}
} else {
setActionRetreat();
}
} else {
_local5 = getClosestEnemyNotGarrisoned();
if (_local5 != null) {
if (inFront(_local5)) {
setActionAdvance();
} else {
setActionRetreat();
}
engageEnemiesInRange();
} else if (((m_forward > 0) && (xpos < m_midScreen)) || ((m_forward < 0) && (xpos > m_midScreen))) {
setActionAdvance();
} else {
setActionBlock();
}
}
}
}
}
}
function getClosestNonPriest() {
var _local2;
var _local6 = null;
var _local5 = 9999;
var _local4;
var _local3 = 0;
while (_local3 < friends.length) {
_local2 = friends[_local3];
_local4 = Math.abs(xpos - _local2.xpos);
if (((!(_local2 instanceof FlagPriest)) && (_local4 < _local5)) && (_local2.getType == "living")) {
_local5 = _local4;
_local6 = _local2;
}
_local3++;
}
return(_local6);
}
function getClosestPoisoned() {
var _local3;
var _local6 = null;
var _local5 = 9999;
var _local4;
var _local2 = 0;
while (_local2 < friends.length) {
_local3 = friends[_local2];
_local4 = Math.abs(xpos - _local3.xpos);
if (_local3.isPoisoned() && (_local4 < _local5)) {
_local5 = _local4;
_local6 = _local3;
}
_local2++;
}
return(_local6);
}
function healReady() {
return(m_healCoolDown < 0);
}
function doAction() {
m_healCoolDown--;
if (actionMode == "move") {
} else if (actionMode == "attack") {
attack();
} else if (actionMode == "block") {
standStill();
} else if (actionMode == "die") {
unitDie();
} else if (actionMode == "rot") {
rot();
} else if (actionMode == "remove") {
destroy();
} else if (actionMode == "heal") {
heal();
} else if (actionMode == "purge") {
purge();
} else if (actionMode == "daze") {
daze();
} else if (actionMode == "knock_back") {
knockBack();
}
}
function applyAttack(obj) {
var _local3 = new ImpactEffect(obj.m_effectsManager, "impact", "indicator_impact", obj, 10, 9999);
var _local4 = Math.floor((Util.randomPercent(0.5) * m_meleeDamage) * obj.getMultBlunt());
_local3.setAmt(_local4);
_local3.setImpactType("armor");
obj.m_effectsManager.addEffect(_local3);
faceObj(obj);
if (((m_skill != null) && (obj instanceof Fighter)) && (Fighter(obj).isBad())) {
m_skill.addXP(Util.calcXP(_local4));
}
}
function setRankUsingLevel(lvl) {
m_rank = Math.floor(lvl / m_levelManager.m_rankUpFactor);
setBasicStatsByLevel(lvl);
m_healPower = 50 + Math.floor(lvl * 0.4);
m_healCoolDown = 400 - Math.floor(lvl * 3);
m_healCoolDownMax = m_healCoolDown;
m_healRange = (200 + (lvl * 6.6)) + random(50);
m_minRange = (m_healRange * 0.45) + random(Math.floor(m_healRange * 0.45));
}
function setRank(rank) {
m_rank = rank;
setBasicStatsByRank(rank);
m_healPower = 50 + Math.floor(m_rank * 2);
m_healCoolDown = 400 - Math.floor(m_rank * 15);
m_healCoolDownMax = m_healCoolDown;
m_healRange = (200 + (m_rank * 33)) + random(50);
m_minRange = (m_healRange * 0.45) + random(Math.floor(m_healRange * 0.45));
}
var HEAL_START = 96;
var HEAL_END = 131;
}
Symbol 2613 MovieClip [__Packages.PurgeEffect] Frame 0
class PurgeEffect extends Effect
{
var m_duration;
function PurgeEffect (manager, etype, clipName, target, duration, tick) {
super(manager, etype, clipName, target, duration, tick);
}
function performEffect() {
m_duration = 5;
}
}
Symbol 2614 MovieClip [__Packages.FlagMount] Frame 0
class FlagMount extends FlagFighter
{
var m_immunities, m_type, m_multLighting, m_multFire, m_multIce, m_multBlunt, m_multSlice, m_multPierce, m_runner, m_engagementManager, m_hpBase, m_speedBase, m_dmgBase, rotation, m_levelManager, xpos, vx, m_speedFactor, actionMode, actionDuration, animRate, animStartFrame, animFrame, animEnd, m_forward, m_clip, m_speed, engaged, DEAD_IMMUNITIES, unlinkEngagements, m_meleeDamage, faceObj, m_skill;
function FlagMount (levelManager, clip, par_x, par_y, layer, lvl, par_hp) {
super(levelManager, clip, par_x, par_y, layer, lvl, par_hp);
m_immunities = "daze";
m_type = "living";
m_multLighting = 1;
m_multFire = 1;
m_multIce = 1;
m_multBlunt = 1.2;
m_multSlice = 0.8;
m_multPierce = 1;
m_runner = 1;
m_engagementManager.setAttackedByLimit(2);
m_engagementManager.setAttackLimit(1);
m_hpBase = 125;
m_speedBase = 0.5;
m_dmgBase = 10;
}
function updateRotation() {
rotation = m_levelManager.getRotationAt(xpos);
}
function setActionAttack() {
vx = 0;
var _local2 = 4 / m_speedFactor;
actionMode = "attack";
actionDuration = 12 * _local2;
animRate = (ATTACK_END - ATTACK_START) / actionDuration;
animStartFrame = ATTACK_START;
animFrame = ATTACK_START;
animEnd = ATTACK_END;
}
function setActionAdvance() {
var _local2 = 4 / m_speedFactor;
m_clip._xscale = m_forward * 100;
vx = (m_forward * m_speed) * m_speedFactor;
actionMode = "move";
engaged = false;
animRate = Math.abs((vx * 1) / _local2);
actionDuration = Math.abs((21 * _local2) / vx);
animStartFrame = ADVANCE_START;
animFrame = ADVANCE_START;
animEnd = ADVANCE_END;
}
function setActionRetreat() {
var _local2 = 4 / m_speedFactor;
m_clip._xscale = (-m_forward) * 100;
vx = ((-m_forward) * m_speed) * m_speedFactor;
actionMode = "move";
engaged = false;
animRate = Math.abs((vx * 1) / _local2);
actionDuration = Math.abs((21 * _local2) / vx);
animStartFrame = ADVANCE_START;
animFrame = ADVANCE_START;
animEnd = ADVANCE_END;
}
function setActionDie() {
m_immunities = DEAD_IMMUNITIES;
vx = 0;
actionMode = "die";
animRate = 0.25;
actionDuration = 24;
animStartFrame = DIE_START;
animFrame = DIE_START;
animEnd = DIE_END;
unlinkEngagements();
}
function setActionFlinch() {
}
function setActionKnockBack() {
}
function setActionDaze() {
}
function setActionFear() {
setActionRetreat();
}
function applyAttack(obj) {
var _local3 = new ImpactEffect(obj.m_effectsManager, "impact", "indicator_impact", obj, 10, 9999);
var _local4 = Math.floor((Util.randomPercent(0.5) * m_meleeDamage) * obj.getMultSlice());
_local3.setAmt(_local4);
_local3.setImpactType("armor");
obj.m_effectsManager.addEffect(_local3);
faceObj(obj);
if ((((m_skill != null) && (obj instanceof Fighter)) && (Fighter(obj).isBad())) && (random(2) == 0)) {
m_skill.addXP(Util.calcXP(_local4));
}
}
var ADVANCE_START = 24;
var ADVANCE_END = 45;
var ATTACK_START = 1;
var ATTACK_END = 23;
var DIE_START = 46;
var DIE_END = 52;
}
Symbol 2615 MovieClip [__Packages.TestBoss] Frame 0
class TestBoss extends Fighter
{
var actionMode, m_attackTimer, m_axeLanded, m_stompedRight, m_stompedLeft, m_smashedDown, m_stompedInPlace, m_multFire, m_multIce, m_multLighting, m_multPierce, m_multBlunt, m_multSlice, m_hpBase, m_speedBase, m_bossSpeed, m_dmgBase, m_hp, m_effectsManager, actionDuration, updateClip, dead, m_clip, animFrame, animEnd, animRate, xpos, vx, ypos, m_levelManager, getClosestEnemyGroundUnit, getClosestEnemyGroundUnitInFront, inRange, animStartFrame, unlinkEngagements, cleanup;
function TestBoss (levelManager, clip, par_x, par_y, layer, lvl, par_hp) {
super(levelManager, clip, par_x, par_y, layer, lvl, par_hp);
actionMode = "left_step";
m_attackTimer = 300 * GameApp.m_gSpeed;
m_axeLanded = false;
m_stompedRight = false;
m_stompedLeft = false;
m_smashedDown = false;
m_stompedInPlace = false;
m_multFire = 0.5;
m_multIce = 0.5;
m_multLighting = 0.5;
m_multPierce = 3.5;
m_multBlunt = 0.1;
m_multSlice = 0.5;
m_hpBase = 10000;
m_speedBase = (m_bossSpeed = 3);
m_dmgBase = 175;
}
function step() {
if (m_hp > 0) {
m_effectsManager.step();
}
actionDuration = actionDuration - GameApp.m_gSpeed;
updateAttackTimer();
doAction();
animate();
updatePos();
updateClip();
if ((!dead) && (actionDuration < 0)) {
getNextAction();
} else if (dead && (actionDuration < 0)) {
destroy();
}
}
function animate() {
m_clip.anim.gotoAndStop(Math.floor(animFrame));
if (animFrame < animEnd) {
animFrame = animFrame + (animRate * GameApp.m_gSpeed);
}
}
function updatePos() {
xpos = xpos + vx;
ypos = m_levelManager.getElevation(xpos);
}
function updateAttackTimer() {
m_attackTimer = m_attackTimer - GameApp.m_gSpeed;
}
function doAction() {
if (actionMode == "left_step") {
leftStep();
} else if (actionMode == "hold_left_step") {
holdLeftStep();
} else if (actionMode == "right_step") {
rightStep();
} else if (actionMode == "hold_right_step") {
holdRightStep();
} else if (actionMode == "axe_attack") {
axeAttack();
} else if (actionMode == "stomp_in_place") {
stompInPlace();
} else if (actionMode == "smash_down") {
smashDown();
}
}
function leftStep() {
}
function holdLeftStep() {
}
function rightStep() {
}
function holdRightStep() {
}
function axeAttack() {
if ((actionDuration < 10) && (!m_axeLanded)) {
m_axeLanded = true;
var _local2 = new SpGorathShockWave(m_levelManager.m_spellManager);
_local2.setLocation(xpos - 190, ypos);
_local2.setVx(-40);
}
}
function stompInPlace() {
if ((actionDuration < 1) && (!m_stompedInPlace)) {
m_stompedInPlace = true;
var _local2 = new SpGorathStomp(m_levelManager.m_spellManager);
_local2.setLocation(xpos - 50, ypos);
}
}
function smashDown() {
if ((actionDuration < 10) && (!m_smashedDown)) {
m_smashedDown = true;
var _local2 = new SpGorathStomp(m_levelManager.m_spellManager);
_local2.setLocation(xpos, ypos);
}
}
function getNextAction() {
var _local3 = getClosestEnemyGroundUnit();
var _local2 = getClosestEnemyGroundUnitInFront();
if (actionMode == "hold_right_step") {
if (inRange(_local3, 50)) {
setActionLoadSmash();
} else if (inRange(_local2, 100)) {
setActionStompInPlace();
} else if ((inRange(_local2, 600) || (xpos < 600)) || ((xpos < 1500) && (random(5) == 0))) {
setActionPrepAttack();
} else {
setActionLeftStep();
}
} else if (actionMode == "left_step") {
setActionHoldLeftStep();
} else if (actionMode == "hold_left_step") {
setActionRightStep();
} else if (actionMode == "right_step") {
setActionHoldRightStep();
} else if (actionMode == "hold_right_step") {
setActionLeftStep();
} else if (actionMode == "prep_attack") {
setActionHoldUpAxe();
} else if (actionMode == "hold_up_axe") {
setActionAxeAttack();
} else if (actionMode == "axe_attack") {
setActionStuckDown();
} else if (actionMode == "stuck_down") {
setActionWiggle();
} else if (actionMode == "wiggle") {
setActionRest();
} else if (actionMode == "rest") {
setActionWipeSweat();
} else if (actionMode == "wipe_sweat") {
setActionFlingSweat();
} else if (actionMode == "fling_sweat") {
setActionHelmOnBendOver();
} else if (actionMode == "helm_on_bend_over") {
setActionReload();
} else if (actionMode == "reload") {
setActionHoldRightStep();
} else if (actionMode == "knock_back") {
setActionRubHead();
} else if (actionMode == "rub_head") {
setActionHeadToBelly();
} else if (actionMode == "head_to_belly") {
setActionGetUp();
} else if (actionMode == "getup") {
setActionHelmOnBendOver();
} else if (actionMode == "load_smash") {
setActionHoldLoadedSmash();
} else if (actionMode == "hold_loaded_smash") {
setActionSmashDown();
} else if (actionMode == "smash_down") {
setActionHoldRightStep();
} else if (actionMode == "stomp_in_place") {
setActionHoldRightStep();
}
}
function setActionDie() {
if (tst_standing) {
setActionStandDeath();
} else {
setActionGroundDeath();
}
}
function setActionStandDeath() {
dead = true;
vx = 0;
actionMode = "killed";
animRate = 0.5;
animStartFrame = KILLED;
animFrame = KILLED;
animEnd = END_KILLED;
actionDuration = (animEnd - animStartFrame) / animRate;
}
function setActionGroundDeath() {
dead = true;
vx = 0;
actionMode = "killed";
animRate = 0.5;
animStartFrame = GROUND_DEATH;
animFrame = GROUND_DEATH;
animEnd = END_GROUND_DEATH;
actionDuration = (animEnd - animStartFrame) / animRate;
}
function setActionGetUp() {
vx = 0;
actionMode = "getup";
animRate = 0.5;
animStartFrame = GETUP;
animFrame = GETUP;
animEnd = END_GETUP;
actionDuration = (animEnd - animStartFrame) / animRate;
}
function setActionReachBack() {
vx = 0;
actionMode = "reach_back";
animRate = 0.5;
animStartFrame = REACH_BACK;
animFrame = REACH_BACK;
animEnd = END_REACH_BACK;
actionDuration = (animEnd - animStartFrame) / animRate;
}
function setActionReachOut() {
vx = 0;
actionMode = "reach_out";
animRate = 0.5;
animStartFrame = REACH_OUT;
animFrame = REACH_OUT;
animEnd = END_REACH_OUT;
actionDuration = (animEnd - animStartFrame) / animRate;
}
function setActionHeadToBelly() {
vx = 0;
actionMode = "head_to_belly";
animRate = 0.5;
animStartFrame = HEAD_TO_BELLY;
animFrame = HEAD_TO_BELLY;
animEnd = END_HEAD_TO_BELLY;
actionDuration = (animEnd - animStartFrame) / animRate;
}
function setActionRubHead() {
vx = 0;
actionMode = "rub_head";
animRate = 0.5;
animStartFrame = RUB_HEAD;
animFrame = RUB_HEAD;
animEnd = END_RUB_HEAD;
actionDuration = (animEnd - animStartFrame) / animRate;
}
function setActionKnockBack() {
if (tst_standing) {
tst_standing = false;
vx = 0;
actionMode = "knock_back";
animRate = 0.5;
animStartFrame = KNOCK_BACK;
animFrame = KNOCK_BACK;
animEnd = END_KNOCK_BACK;
actionDuration = (animEnd - animStartFrame) / animRate;
} else {
setActionRubHead();
}
}
function setActionHelmOnBendOver() {
tst_standing = true;
vx = 0;
actionMode = "helm_on_bend_over";
animRate = 0.5;
animStartFrame = PUT_HELM_AND_BEND_OVER;
animFrame = PUT_HELM_AND_BEND_OVER;
animEnd = END_PUT_HELM_AND_BEND_OVER;
actionDuration = (animEnd - animStartFrame) / animRate;
}
function setActionFlingSweat() {
vx = 0;
actionMode = "fling_sweat";
animRate = 0.2;
animStartFrame = FLING_SWEAT;
animFrame = FLING_SWEAT;
animEnd = END_FLING_SWEAT;
actionDuration = (animEnd - animStartFrame) / animRate;
}
function setActionWipeSweat() {
vx = 0;
actionMode = "wipe_sweat";
animRate = 0.2;
animStartFrame = WIPE_SWEAT;
animFrame = WIPE_SWEAT;
animEnd = END_WIPE_SWEAT;
actionDuration = (animEnd - animStartFrame) / animRate;
}
function setActionRest() {
vx = 0;
actionMode = "rest";
animRate = 0.2;
animStartFrame = REST;
animFrame = REST;
animEnd = END_REST;
actionDuration = (animEnd - animStartFrame) / animRate;
}
function setActionReload() {
m_axeLanded = false;
vx = 0;
actionMode = "reload";
animRate = 0.2;
animStartFrame = RELOAD;
animFrame = RELOAD;
animEnd = END_RELOAD;
actionDuration = (animEnd - animStartFrame) / animRate;
}
function setActionWiggle() {
vx = 0;
actionMode = "wiggle";
animRate = 0.2;
animStartFrame = WIGGLE;
animFrame = WIGGLE;
animEnd = END_WIGGLE;
actionDuration = (animEnd - animStartFrame) / animRate;
}
function setActionStuckDown() {
vx = 0;
actionMode = "stuck_down";
animRate = 0.2;
animStartFrame = STUCK_DOWN;
animFrame = STUCK_DOWN;
animEnd = END_STUCK_DOWN;
actionDuration = (animEnd - animStartFrame) / animRate;
}
function setActionPrepAttack() {
vx = 0;
actionMode = "prep_attack";
animRate = 0.5;
animStartFrame = PREP_ATTACK;
animFrame = PREP_ATTACK;
animEnd = END_PREP_ATTACK;
actionDuration = (animEnd - animStartFrame) / animRate;
}
function setActionHoldUpAxe() {
vx = 0;
actionMode = "hold_up_axe";
animRate = 0;
animStartFrame = END_PREP_ATTACK;
animFrame = END_PREP_ATTACK;
animEnd = END_PREP_ATTACK;
actionDuration = 300;
}
function setActionAxeAttack() {
vx = 0;
actionMode = "axe_attack";
animRate = 0.5;
animStartFrame = AXE_ATTACK;
animFrame = AXE_ATTACK;
animEnd = END_AXE_ATTACK;
actionDuration = (animEnd - animStartFrame) / animRate;
}
function setActionStompInPlace() {
m_stompedInPlace = false;
vx = 0;
actionMode = "stomp_in_place";
animRate = 1;
animStartFrame = STOMP_IN_PLACE;
animFrame = STOMP_IN_PLACE;
animEnd = END_STOMP_IN_PLACE;
actionDuration = (animEnd - animStartFrame) / animRate;
}
function setActionLoadSmash() {
m_smashedDown = false;
vx = 0;
actionMode = "load_smash";
animRate = 0.3;
animStartFrame = LOAD_SMASH;
animFrame = LOAD_SMASH;
animEnd = END_LOAD_SMASH;
actionDuration = (animEnd - animStartFrame) / animRate;
}
function setActionHoldLoadedSmash() {
vx = 0;
actionMode = "hold_loaded_smash";
animRate = 0;
animStartFrame = END_LOAD_SMASH;
animFrame = END_LOAD_SMASH;
animEnd = END_LOAD_SMASH;
actionDuration = 200;
}
function setActionSmashDown() {
vx = 0;
actionMode = "smash_down";
animRate = 1;
animStartFrame = SMASH_DOWN;
animFrame = SMASH_DOWN;
animEnd = END_SMASH_DOWN;
actionDuration = (animEnd - animStartFrame) / animRate;
}
function setActionHoldLeftStep() {
if (!m_stompedLeft) {
m_stompedLeft = true;
var _local2 = new SpGorathStomp(m_levelManager.m_spellManager);
_local2.setLocation(xpos - 50, ypos);
}
vx = 0;
actionMode = "hold_left_step";
animRate = 0;
actionDuration = 300;
animStartFrame = STEP_RIGHT;
animFrame = STEP_RIGHT;
animEnd = STEP_RIGHT;
}
function setActionHoldRightStep() {
if (!m_stompedRight) {
m_stompedRight = true;
var _local2 = new SpGorathStomp(m_levelManager.m_spellManager);
_local2.setLocation(xpos - 50, ypos);
}
vx = 0;
actionMode = "hold_right_step";
animRate = 0;
actionDuration = 300;
animStartFrame = STEP_LEFT;
animFrame = STEP_LEFT;
animEnd = STEP_LEFT;
}
function setActionRightStep() {
m_stompedRight = false;
vx = (-m_bossSpeed) * 1.5;
actionMode = "right_step";
animRate = 0.6;
animStartFrame = STEP_RIGHT;
animFrame = STEP_RIGHT;
animEnd = END_STEP_RIGHT;
actionDuration = (animEnd - animStartFrame) / animRate;
}
function setActionLeftStep() {
m_stompedLeft = false;
vx = -m_bossSpeed;
actionMode = "left_step";
animRate = 0.6;
animStartFrame = STEP_LEFT;
animFrame = STEP_LEFT;
animEnd = END_STEP_LEFT;
actionDuration = (animEnd - animStartFrame) / animRate;
}
function destroy() {
unlinkEngagements();
m_levelManager.deleteFromBadTeam(this);
m_levelManager.deleteFromGameObjects(this);
m_clip.unloadMovie();
m_levelManager.stateChange();
var _local2 = m_levelManager.m_debrisManager.addDebris("boss_gorath_corpse", 160, 160, 1, 160);
_local2.setAttributes(0, 0, 0, 0, xpos, ypos, 0);
cleanup();
}
function getReaction(obj) {
var _local3 = "no_reaction";
if (m_clip.anim.headbox.hitTest(obj.xpos, obj.ypos, 0)) {
if ((obj instanceof BombArrow) && (tst_standing)) {
setActionKnockBack();
}
_local3 = "destroy";
} else if (m_clip.anim.bellybox.hitTest(obj.xpos, obj.ypos, 0)) {
_local3 = "destroy";
} else if (m_clip.anim.feetbox.hitTest(obj.xpos, obj.ypos, 0) || (m_clip.anim.armorbox.hitTest(obj.xpos, obj.ypos, 0))) {
if (((obj instanceof BombArrow) || (obj instanceof Meteor)) || (obj instanceof Comet)) {
_local3 = "destroy";
} else {
_local3 = "deflect";
SoundManager.playSound("Armor Ricochet.wav");
}
} else {
_local3 = "no_reaction";
}
return(_local3);
}
function setVx(num) {
m_bossSpeed = num;
}
var STEP_RIGHT = 35;
var END_STEP_RIGHT = 60;
var STEP_LEFT = 5;
var END_STEP_LEFT = 35;
var PREP_ATTACK = 61;
var END_PREP_ATTACK = 85;
var AXE_ATTACK = 85;
var END_AXE_ATTACK = 96;
var STUCK_DOWN = 96;
var END_STUCK_DOWN = 108;
var WIGGLE = 108;
var END_WIGGLE = 117;
var RELOAD = 117;
var END_RELOAD = 132;
var REST = 133;
var END_REST = 180;
var WIPE_SWEAT = 180;
var END_WIPE_SWEAT = 190;
var FLING_SWEAT = 190;
var END_FLING_SWEAT = 215;
var PUT_HELM_AND_BEND_OVER = 215;
var END_PUT_HELM_AND_BEND_OVER = 245;
var KNOCK_BACK = 246;
var END_KNOCK_BACK = 295;
var RUB_HEAD = 295;
var END_RUB_HEAD = 305;
var HEAD_TO_BELLY = 305;
var END_HEAD_TO_BELLY = 310;
var REACH_OUT = 310;
var END_REACH_OUT = 315;
var REACH_BACK = 315;
var END_REACH_BACK = 320;
var GETUP = 321;
var END_GETUP = 390;
var KILLED = 391;
var END_KILLED = 420;
var STOMP_IN_PLACE = 421;
var END_STOMP_IN_PLACE = 433;
var LOAD_SMASH = 434;
var END_LOAD_SMASH = 450;
var SMASH_DOWN = 450;
var END_SMASH_DOWN = 470;
var GROUND_DEATH = 410;
var END_GROUND_DEATH = 420;
var tst_standing = true;
}
Symbol 2616 MovieClip [__Packages.SpGorathShockWave] Frame 0
class SpGorathShockWave extends SpWave
{
var m_maxCharges, m_charges, m_timeToStrike, m_waitTime, m_rockFormations, m_spellManager, m_debrisManager, m_ypos, m_xpos, m_vx;
function SpGorathShockWave (sm) {
super(sm);
m_maxCharges = 10;
m_charges = m_maxCharges;
m_timeToStrike = 0;
m_waitTime = 2;
m_rockFormations = new Array("earth_shard_rize_01", "earth_shard_rize_02", "earth_shard_rize_03");
}
function doAction() {
if (((m_timeToStrike = m_timeToStrike - GameApp.m_gSpeed)) < 0) {
m_spellManager.m_levelManager.m_soundManager.addSound("rumble.wav");
m_timeToStrike = m_waitTime;
m_charges--;
var _local2 = m_debrisManager.addDebris(getRandomRock(), 110, 110, 1, 110);
m_ypos = m_debrisManager.m_levelManager.getElevation(m_xpos);
_local2.setAttributes(0, 0, 0, 0, m_xpos, m_ypos, (m_spellManager.m_levelManager.getRotationAt(m_xpos) + random(60)) - 30);
testHitObjects(m_xpos, m_ypos);
m_xpos = m_xpos + m_vx;
}
}
function testHitObjects(xs, ys) {
var _local4 = new Array();
var _local2;
var _local5 = 25;
var _local11 = 75;
var _local3 = 0;
while (_local3 < m_spellManager.m_levelManager.m_structures.length) {
_local2 = m_spellManager.m_levelManager.m_structures[_local3];
if (_local2.canGetHit() && (!Structure(_local2).occupiedByBad())) {
if (((_local2.xpos < (xs + _local5)) && (_local2.xpos > (xs - _local5))) && (_local2.ypos > (ys - _local11))) {
_local4.push(_local2);
}
}
_local3++;
}
_local3 = 0;
while (_local3 < m_spellManager.m_levelManager.m_goodTeam.lewngth) {
_local2 = m_spellManager.m_levelManager.m_goodTeam[_local3];
if (_local2.canGetHit()) {
if (((_local2.xpos < (xs + _local5)) && (_local2.xpos > (xs - _local5))) && (_local2.ypos > (ys - _local11))) {
_local4.push(_local2);
}
}
_local3++;
}
_local3 = 0;
while (_local3 < _local4.length) {
_local2 = _local4[_local3];
var _local7 = new ImpactEffect(_local2.m_effectsManager, "impact", "indicator_impact", _local2, 10, 9999);
var _local8 = _local2.getMultBlunt() * (50 + random(300));
_local7.setAmt(_local8);
_local2.m_effectsManager.addEffect(_local7);
if (random(3) == 0) {
var _local9 = new FearEffect(_local2.m_effectsManager, "fear", "indicator_fear", _local2, 300, 15);
_local2.m_effectsManager.addEffect(_local9);
} else if (random(3) == 0) {
var _local10 = new DazeEffect(_local2.m_effectsManager, "daze", "indicator_daze", _local2, 300, 50);
_local2.m_effectsManager.addEffect(_local10);
}
_local3++;
}
}
function getRandomRock() {
return(m_rockFormations[random(m_rockFormations.length)]);
}
}
Symbol 2617 MovieClip [__Packages.FearEffect] Frame 0
class FearEffect extends Effect
{
var m_target;
function FearEffect (manager, etype, clipName, target, duration, tick) {
super(manager, etype, clipName, target, duration, tick);
trace("Constructed FearEffect Effect");
}
function performEffect() {
Fighter(m_target).setActionFear();
}
}
Symbol 2618 MovieClip [__Packages.DazeEffect] Frame 0
class DazeEffect extends Effect
{
var m_target;
function DazeEffect (manager, etype, clipName, target, duration, tick) {
super(manager, etype, clipName, target, duration, tick);
}
function performEffect() {
Fighter(m_target).setActionDaze();
}
}
Symbol 2619 MovieClip [__Packages.SpGorathStomp] Frame 0
class SpGorathStomp extends SpBomb
{
var m_bombRadius, m_maxDamage, m_numCharges, m_timeToStrike, m_xpos, m_ypos, m_debrisManager, m_spellManager, doDamage;
function SpGorathStomp (sm) {
super(sm);
m_bombRadius = 100;
m_maxDamage = 2000;
}
function doAction() {
m_numCharges--;
m_timeToStrike = 20;
testHitObjects(m_xpos, m_ypos);
SoundManager.playSound("Bomb Explosion.wav");
}
function testHitObjects(xs, ys) {
var _local2;
var _local3;
var _local5;
var _local4;
var _local9 = m_debrisManager.addDebris("ground_crack_01", 340, 340, 1, 340);
_local9.setAttributes(0, 0, 0, 0, m_xpos, m_ypos, m_spellManager.m_levelManager.getRotationAt(m_xpos));
var _local6 = 0;
while (_local6 < m_spellManager.m_levelManager.m_structures.length) {
_local2 = m_spellManager.m_levelManager.m_structures[_local6];
if ((_local2.canGetHit() && (!Structure(_local2).occupiedByBad())) && (!Structure(_local2).permanentBadTeam())) {
_local5 = _local2.xpos - xs;
_local4 = _local2.ypos - ys;
_local3 = Math.sqrt((_local5 * _local5) + (_local4 * _local4));
if (_local3 < m_bombRadius) {
doDamage(_local2, _local3, m_bombRadius);
}
}
_local6++;
}
_local6 = 0;
while (_local6 < m_spellManager.m_levelManager.m_goodTeam.length) {
_local2 = m_spellManager.m_levelManager.m_goodTeam[_local6];
if (_local2.canGetHit()) {
_local5 = _local2.xpos - xs;
_local4 = _local2.ypos - ys;
_local3 = Math.sqrt((_local5 * _local5) + (_local4 * _local4));
if (_local3 < m_bombRadius) {
doDamage(_local2, _local3, m_bombRadius);
}
}
_local6++;
}
}
}
Symbol 2620 MovieClip [__Packages.CastleFighter] Frame 0
class CastleFighter extends Fighter
{
var actionMode, m_runner, m_type, m_advanceSpot, tst_name, vx, tst_animRateFact, m_speed, m_orig_speed, m_hp, m_effectsManager, actionDuration, animate, updateClip, dead, m_enemyCastle, m_targetSpot, m_friendCastle, m_patrolSpot, m_forward, xpos, ypos, m_levelManager, attack, standStill, unitDie, rot, engageEnemiesAttackingMe, engageEnemiesInRange, m_engagementManager, m_speedFactor, animRate, animStartFrame, ATTACK_START, animFrame, animEnd, ATTACK_END, m_clip, engaged, ADVANCE_START, ADVANCE_END, m_immunities, DEAD_IMMUNITIES, DIE_START, DIE_END, unlinkEngagements, m_knockedDown, m_teamNum, setForward, setEnemyList, setFriendList, m_meleeDamage, m_airUnit, cleanup;
function CastleFighter (levelManager, clip, par_x, par_y, layer, lvl, par_hp) {
super(levelManager, clip, par_x, par_y, layer, lvl, par_hp);
actionMode = "move";
m_runner = random(2);
m_type = "living";
m_advanceSpot = 1000;
tst_name = "castle_fighter" + (GameObject.tst_count++);
}
function setVx(num) {
vx = num * tst_animRateFact;
m_speed = Math.abs(vx);
m_orig_speed = m_speed;
}
function step() {
if (m_hp > 0) {
m_effectsManager.step();
}
actionDuration = actionDuration - GameApp.m_gSpeed;
doAction();
animate();
updatePos();
updateClip();
updateRotation();
if ((!dead) && (actionDuration < 0)) {
getNextAction();
} else if (dead && (actionDuration < 0)) {
destroy();
}
}
function setEnemyCastle(obj) {
m_enemyCastle = obj;
m_targetSpot = obj.xpos + (random(100) - 50);
}
function setFriendCastle(obj) {
m_friendCastle = obj;
m_patrolSpot = obj.xpos;
}
function objInFront(obj) {
if (m_forward > 0) {
return(obj.xpos > xpos);
}
return(obj.xpos < xpos);
}
function spotInFront(x_spot) {
if (m_forward > 0) {
return(x_spot > xpos);
}
return(x_spot < xpos);
}
function enemyCastleInFront() {
if (m_forward > 0) {
return(m_enemyCastle.xpos > xpos);
}
return(m_enemyCastle.xpos < xpos);
}
function distToSpot(x_spot) {
return(Math.abs(x_spot - xpos));
}
function friendCastleInFront() {
if (m_forward > 0) {
return(m_friendCastle.xpos > xpos);
}
return(m_friendCastle.xpos < xpos);
}
function objInRange(obj) {
return(Math.abs(xpos - obj.xpos) < 60);
}
function friendCastleInRange() {
return(Math.abs(xpos - m_friendCastle.xpos) < 60);
}
function enemyCastleInRange() {
return(Math.abs(xpos - m_enemyCastle.xpos) < 60);
}
function distToEnemyCastle() {
return(Math.abs(xpos - m_enemyCastle.xpos));
}
function distToFriendCastle() {
return(Math.abs(xpos - m_friendCastle.xpos));
}
function getClosestCastle() {
var _local3 = distToEnemyCastle();
var _local2 = distToFriendCastle();
if (_local3 < _local2) {
return(m_enemyCastle);
}
return(m_friendCastle);
}
function advance() {
}
function updatePos() {
xpos = xpos + vx;
ypos = m_levelManager.getElevation(xpos);
}
function updateRotation() {
}
function doAction() {
if (actionMode == "move") {
} else if (actionMode == "attack") {
attack();
} else if (actionMode == "block") {
standStill();
} else if (actionMode == "atk_cas") {
attackCastle();
} else if (actionMode == "die") {
unitDie();
} else if (actionMode == "rot") {
rot();
} else if (actionMode == "remove") {
destroy();
} else if (actionMode == "daze") {
daze();
} else if (actionMode == "knock_back") {
knockBack();
}
}
function getNextAction() {
var _local2;
if (m_hp > 0) {
engageEnemiesAttackingMe();
if (m_runner == 0) {
engageEnemiesInRange();
}
}
if (m_hp <= 0) {
setActionDie();
} else if (m_engagementManager.getNumAttacking() > 0) {
setActionAttack();
} else if (distToSpot(m_targetSpot) < 60) {
setActionAttackCastle();
} else {
_local2 = getClosestCastle();
if ((_local2 == m_friendCastle) && (m_friendCastle.underAttack())) {
if (distToSpot(m_patrolSpot) < 50) {
changePatrolSpot();
}
moveToSpot(m_patrolSpot);
} else if (m_enemyCastle == null) {
if (distToSpot(m_advanceSpot) < 50) {
setActionBlock();
} else {
moveToSpot(m_advanceSpot);
}
} else if (enemyCastleInFront()) {
setActionAdvance();
} else {
setActionRetreat();
}
}
}
function moveToSpot(spot) {
if (spotInFront(spot)) {
setActionAdvance();
} else {
setActionRetreat();
}
}
function changePatrolSpot() {
if (m_patrolSpot > m_friendCastle.xpos) {
m_patrolSpot = m_friendCastle.xpos - ((m_friendCastle.m_clip._width / 2) + 20);
} else {
m_patrolSpot = m_friendCastle.xpos + ((m_friendCastle.m_clip._width / 2) + 20);
}
}
function closeToHome() {
if (m_forward > 0) {
return(xpos < 300);
}
return(xpos > 1700);
}
function setActionAttack() {
vx = 0;
var _local2 = 4 / m_speedFactor;
actionMode = "attack";
animRate = 1 / _local2;
actionDuration = 9 * _local2;
animStartFrame = ATTACK_START;
animFrame = ATTACK_START;
animEnd = ATTACK_END;
}
function setActionAdvance() {
var _local2 = 4 / m_speedFactor;
m_clip._xscale = m_forward * 100;
vx = (m_forward * m_speed) * m_speedFactor;
actionMode = "move";
engaged = false;
animRate = Math.abs((vx * 1) / _local2);
actionDuration = Math.abs((10 * _local2) / vx);
animStartFrame = ADVANCE_START;
animFrame = ADVANCE_START;
animEnd = ADVANCE_END;
}
function setActionRetreat() {
var _local2 = 4 / m_speedFactor;
m_clip._xscale = (-m_forward) * 100;
vx = ((-m_forward) * m_speed) * m_speedFactor;
actionMode = "move";
engaged = false;
animRate = Math.abs((vx * 1) / _local2);
actionDuration = Math.abs((10 * _local2) / vx);
animStartFrame = ADVANCE_START;
animFrame = ADVANCE_START;
animEnd = ADVANCE_END;
}
function setActionBlock() {
vx = 0;
m_runner = 0;
actionMode = "block";
engaged = false;
animRate = 0;
actionDuration = 30;
animStartFrame = BLOCK_START;
animFrame = BLOCK_START;
animEnd = BLOCK_END;
}
function setActionDie() {
vx = 0;
m_immunities = DEAD_IMMUNITIES;
actionMode = "die";
animRate = 0.25;
actionDuration = 36;
animStartFrame = DIE_START;
animFrame = DIE_START;
animEnd = DIE_END;
unlinkEngagements();
}
function setActionRot() {
vx = 0;
actionMode = "rot";
dead = true;
animRate = 0;
actionDuration = 100;
animStartFrame = DIE_END;
animFrame = DIE_END;
animEnd = DIE_END;
}
function setActionFear() {
setActionRetreat();
}
function setActionKnockBack() {
var _local2 = 1;
vx = 0;
actionMode = "knock_back";
animRate = 1 / _local2;
actionDuration = 11 * _local2;
animStartFrame = KNOCKBACK_START;
animFrame = KNOCKBACK_START;
animEnd = KNOCKBACK_END;
}
function knockBack() {
if (actionDuration < 0) {
setActionDaze();
}
}
function daze() {
if (actionDuration < 0) {
setActionGetUpFromDaze();
}
}
function setActionFlinch() {
var _local2 = 1;
vx = 0;
actionMode = "flinch";
animRate = 1 / _local2;
actionDuration = ((FLINCH_END - FLINCH_START) - 1) * _local2;
animStartFrame = FLINCH_START;
animFrame = FLINCH_START;
animEnd = FLINCH_END;
}
function setActionDaze() {
m_knockedDown = true;
var _local2 = 10;
vx = 0;
actionMode = "daze";
animRate = 1 / _local2;
actionDuration = 24 * _local2;
animStartFrame = DAZE_START;
animFrame = DAZE_START;
animEnd = DAZE_END;
}
function setActionGetUpFromDaze() {
m_knockedDown = false;
var _local2 = 8;
vx = 0;
actionMode = "get_up_daze";
animRate = 1 / _local2;
actionDuration = ((GETUP_FROM_DAZE_END - GETUP_FROM_DAZE_START) - 1) * _local2;
animStartFrame = GETUP_FROM_DAZE_START;
animFrame = GETUP_FROM_DAZE_START;
animEnd = GETUP_FROM_DAZE_END;
}
function convertToOppositeTeam() {
unlinkEngagements();
if (m_teamNum == Fighter.BAD) {
setForward(1);
setEnemyCastle(m_levelManager.m_badCastle);
setFriendCastle(m_levelManager.m_goodCastle);
m_levelManager.deleteFromBadTeam(this);
m_levelManager.addToGood(this);
setEnemyList(m_levelManager.m_badTeam);
setFriendList(m_levelManager.m_goodTeam);
m_teamNum = Fighter.GOOD;
} else {
setForward(-1);
setEnemyCastle(m_levelManager.m_goodCastle);
setFriendCastle(m_levelManager.m_badCastle);
m_levelManager.deleteFromGoodTeam(this);
m_levelManager.addToBad(this);
setEnemyList(m_levelManager.m_goodTeam);
setFriendList(m_levelManager.m_badTeam);
m_teamNum = Fighter.BAD;
}
m_levelManager.stateChange();
}
function attackCastle() {
if (actionDuration < 0) {
attackEnemyCastle();
}
}
function attackEnemyCastle() {
var _local2 = new ImpactEffect(m_enemyCastle.m_effectsManager, "impact", "indicator_impact", m_enemyCastle, 1000, 20);
_local2.setAmt(m_meleeDamage);
m_enemyCastle.m_effectsManager.addEffect(_local2);
}
function setActionAttackCastle() {
vx = 0;
var _local2 = 4 / m_speedFactor;
actionMode = "atk_cas";
animRate = 1 / _local2;
actionDuration = 9 * _local2;
animStartFrame = ATTACK_START;
animFrame = ATTACK_START;
animEnd = ATTACK_END;
}
function destroy() {
trace("red being destroyed");
unlinkEngagements();
if (m_teamNum == Fighter.BAD) {
m_levelManager.deleteFromBadTeam(this);
} else {
m_levelManager.deleteFromGoodTeam(this);
}
if (m_airUnit) {
m_levelManager.deleteFromAirUnits(this);
}
m_levelManager.deleteFromGameObjects(this);
m_clip.unloadMovie();
m_levelManager.stateChange();
cleanup();
}
var BLOCK_START = 15;
var BLOCK_END = 15;
var FLINCH_START = 85;
var FLINCH_END = 95;
var KNOCKBACK_START = 36;
var KNOCKBACK_END = 47;
var DAZE_START = 47;
var DAZE_END = 73;
var GETUP_FROM_DAZE_START = 72;
var GETUP_FROM_DAZE_END = 85;
}
Symbol 2621 MovieClip [__Packages.AirFighter] Frame 0
class AirFighter extends CastleFighter
{
var actionMode, m_runner, m_type, m_target_x, m_target_y, m_levelManager, m_airUnit, m_healthTimer, m_multFlak, m_hpBase, m_dmgBase, m_hp, m_effectsManager, actionDuration, doAction, animate, updateClip, updateRotation, dead, destroy, xpos, ypos, vy, vx, distToSpot, getClosestEnemy, engaged, animRate, animStartFrame, BLOCK_START, animFrame, animEnd, BLOCK_END, m_immunities, DEAD_IMMUNITIES, DIE_START, DIE_END, unlinkEngagements, m_max_hp, m_clip, m_teamNum, m_skill, getOwningStructure;
function AirFighter (levelManager, clip, par_x, par_y, layer, lvl, par_hp) {
super(levelManager, clip, par_x, par_y, layer, lvl, par_hp);
actionMode = "move";
m_runner = 0;
m_type = "living";
m_target_x = random(1800) + 100;
m_target_y = ((m_levelManager.getElevation(m_target_x) - 300) + random(100)) - 50;
m_airUnit = true;
m_healthTimer = 0;
m_multFlak = 4;
m_hpBase = 100;
m_dmgBase = 35;
}
function step() {
if (m_hp > 0) {
m_effectsManager.step();
}
actionDuration--;
updateVelocities();
doAction();
animate();
updatePos();
updateClip();
updateRotation();
if ((!dead) && (actionDuration < 0)) {
getNextAction();
} else if (dead && (actionDuration < 0)) {
destroy();
}
}
function checkCrash() {
var _local2 = m_levelManager.getElevation(xpos);
if (ypos > _local2) {
vy = 0;
m_hp = 0;
ypos = _local2;
vx = vx * 0.95;
}
}
function getNextAction() {
var _local3;
if (m_hp <= 0) {
setActionDie();
} else {
if (distToSpot(m_target_x) < 60) {
m_target_x = random(1800) + 100;
m_target_y = ((m_levelManager.getElevation(m_target_x) - 300) + random(100)) - 50;
var _local2 = getClosestEnemy();
if (_local2 != null) {
shootAtTarget(_local2);
}
}
setActionBlock();
}
}
function setActionBlock() {
m_runner = 0;
actionMode = "block";
engaged = false;
animRate = 0;
actionDuration = 30;
animStartFrame = BLOCK_START;
animFrame = BLOCK_START;
animEnd = BLOCK_END;
}
function setActionDie() {
m_immunities = DEAD_IMMUNITIES;
actionMode = "die";
animRate = 0.25;
actionDuration = 36;
animStartFrame = DIE_START;
animFrame = DIE_START;
animEnd = DIE_END;
unlinkEngagements();
}
function setActionRot() {
actionMode = "rot";
dead = true;
animRate = 0;
actionDuration = 100;
animStartFrame = DIE_END;
animFrame = DIE_END;
animEnd = DIE_END;
}
function updateVelocities() {
var _local2 = 2;
if ((m_hp / m_max_hp) > 0.2) {
if ((m_target_x > xpos) && (vx < _local2)) {
vx = vx + 0.05;
} else if ((m_target_x < xpos) && (vx > (-_local2))) {
vx = vx - 0.05;
}
if ((m_target_y > ypos) && (vy < _local2)) {
vy = vy + 0.02;
} else if ((m_target_y < ypos) && (vy > (-_local2))) {
vy = vy - 0.02;
}
if (vx > 0) {
m_clip._xscale = -100;
} else {
m_clip._xscale = 100;
}
} else {
vy = vy + 0.1;
checkCrash();
}
}
function updatePos() {
xpos = xpos + vx;
ypos = ypos + vy;
}
function shootAtTarget(shotTarget) {
var _local14 = 20;
var _local6 = xpos;
var _local7 = ypos;
var _local8 = shotTarget.xpos;
var _local11 = shotTarget.ypos - (shotTarget.m_height * 0.5);
var _local3 = _local14;
var _local13 = m_levelManager.m_gravity;
var _local12;
var _local2;
var _local5;
var _local4;
var _local9 = new Array(2);
_local4 = Util.getTheta(_local6, _local7, _local8, _local11, _local3, _local13);
_local9[0] = (_local4[0] * 180) / Math.PI;
_local9[1] = (_local4[1] * 180) / Math.PI;
if (_local4[0] == 777) {
_local2 = Math.sqrt((_local3 * _local3) * 0.5);
_local5 = -_local2;
if (xpos > shotTarget.xpos) {
_local2 = _local2 * -1;
}
trace("Shoot at max angle");
addArrow(_local6, _local7, _local2, _local5);
} else {
_local12 = _local8 - _local6;
_local2 = (Math.cos(_local4[0]) * _local3) * Util.randomPercent(0.2);
_local5 = (Math.sin(_local4[0]) * _local3) * Util.randomPercent(0.2);
if (_local12 < 0) {
_local2 = -_local2;
_local5 = -_local5;
}
addArrow(_local6, _local7, _local2, _local5);
}
}
function addArrow(px, py, pvx, pvy) {
var _local3 = m_levelManager.getNextObjectLevel();
var _local2 = new StandardArrow(m_levelManager, getArrowType(), px, py, m_levelManager.m_clip.object_layer, _local3, 100);
_local2.setImpactDamage(30);
_local2.m_clip.lvl = _local3;
_local2.setVelocity(pvx, pvy);
_local2.setTeam(m_teamNum);
_local2.setStickyArrowType(getStickyArrowType());
_local2.setSkill(m_skill);
m_levelManager.m_gameObjects.push(_local2);
_local2.setOwningStructure(getOwningStructure());
}
function getArrowType() {
var _local2 = "arrow";
if (m_teamNum == Fighter.BAD) {
_local2 = "arrow_bad";
} else {
_local2 = "arrow";
}
return(_local2);
}
function getStickyArrowType() {
var _local2 = "sticky_arrow";
if (m_teamNum == Fighter.BAD) {
_local2 = "sticky_arrow_bad";
} else {
_local2 = "sticky_arrow";
}
return(_local2);
}
}
Symbol 2622 MovieClip [__Packages.DragonScoutPoison] Frame 0
class DragonScoutPoison extends AirFighter
{
var m_multLighting, m_multFire, m_multIce, m_multBlunt, m_multSlice, m_multPierce, m_multFlak, m_multPoison, m_levelManager, getArrowType, m_teamNum, getStickyArrowType, m_skill, m_rank, getOwningStructure;
function DragonScoutPoison (levelManager, clip, par_x, par_y, layer, lvl, par_hp) {
super(levelManager, clip, par_x, par_y, layer, lvl, par_hp);
m_multLighting = 1;
m_multFire = 1;
m_multIce = 0.1;
m_multBlunt = 0.2;
m_multSlice = 0.2;
m_multPierce = 0.2;
m_multFlak = 1;
m_multPoison = 0.01;
}
function addArrow(px, py, pvx, pvy) {
var _local3 = m_levelManager.getNextObjectLevel();
var _local2 = new PoisonArrow(m_levelManager, getArrowType(), px, py, m_levelManager.m_clip.object_layer, _local3, 100);
_local2.setImpactDamage(30);
_local2.m_clip.lvl = _local3;
_local2.setVelocity(pvx, pvy);
_local2.setTeam(m_teamNum);
_local2.setStickyArrowType(getStickyArrowType());
_local2.setSkill(m_skill);
_local2.setRank(m_rank);
m_levelManager.m_gameObjects.push(_local2);
_local2.setOwningStructure(getOwningStructure());
}
}
Symbol 2623 MovieClip [__Packages.PoisonArrow] Frame 0
class PoisonArrow extends StandardArrow
{
var m_impactDamage, m_flare, m_flareLifeSpan, m_flareAnimDur, m_flareAnimRate, m_flareAnimEnd, m_poisonDuration, ypos, m_timeToSmoke, m_levelManager, xpos, m_critical, m_stickyArrowType, m_skill, destroy, m_rank;
function PoisonArrow (levelManager, clip, par_x, par_y, layer, lvl, par_hp) {
super(levelManager, clip, par_x, par_y, layer, lvl, par_hp);
m_impactDamage = 1;
m_flare = "flare_ball_green";
m_flareLifeSpan = 25;
m_flareAnimDur = 25;
m_flareAnimRate = 2;
m_flareAnimEnd = 50;
m_poisonDuration = 3000;
}
function updateSmoke() {
if ((ypos > -10) && (((m_timeToSmoke = m_timeToSmoke - GameApp.m_gSpeed)) < 0)) {
m_timeToSmoke = 1;
var _local2 = m_levelManager.m_debrisManager.addDebris(m_flare, m_flareLifeSpan, m_flareAnimDur, m_flareAnimRate, m_flareAnimEnd);
_local2.setAttributes(0, 0, 0, 0, xpos, ypos, 0);
}
}
function doProjectileAction(tempObj) {
if (tempObj != null) {
var _local3 = new ImpactEffect(tempObj.m_effectsManager, "impact", "indicator_impact", tempObj, 10, 9999);
var _local4 = Math.floor(tempObj.getMultPierce() * m_impactDamage);
_local3.setAmt(_local4);
_local3.setCritical(m_critical);
tempObj.m_effectsManager.addEffect(_local3);
var _local5 = new PoisonEffect(tempObj.m_effectsManager, "poison", "indicator_poison", tempObj, m_poisonDuration, 15);
_local5.setSickness(Math.floor(m_impactDamage * 0.5));
tempObj.m_effectsManager.addEffect(_local5);
tempObj.projectileStickInObject(m_stickyArrowType, this);
if ((m_skill != null) && (random(3) > 0)) {
m_skill.addXP(Util.calcXP(_local4));
}
}
destroy();
}
function setRank(rank) {
m_rank = rank;
m_impactDamage = Math.floor(30 * (1 + (m_rank / 10)));
m_poisonDuration = 165 + Math.floor(33 * m_rank);
}
}
Symbol 2624 MovieClip [__Packages.DragonScoutFire] Frame 0
class DragonScoutFire extends AirFighter
{
var m_multLighting, m_multFire, m_multIce, m_multBlunt, m_multSlice, m_multPierce, m_multFlak, m_multPoison, m_levelManager, getArrowType, m_teamNum, getStickyArrowType, m_skill, m_rank, getOwningStructure;
function DragonScoutFire (levelManager, clip, par_x, par_y, layer, lvl, par_hp) {
super(levelManager, clip, par_x, par_y, layer, lvl, par_hp);
m_multLighting = 0.1;
m_multFire = 0.01;
m_multIce = 4;
m_multBlunt = 0.1;
m_multSlice = 0.1;
m_multPierce = 0.1;
m_multFlak = 1;
m_multPoison = 0.01;
}
function addArrow(px, py, pvx, pvy) {
var _local3 = m_levelManager.getNextObjectLevel();
var _local2 = new FireArrow(m_levelManager, getArrowType(), px, py, m_levelManager.m_clip.object_layer, _local3, 100);
_local2.m_clip.lvl = _local3;
_local2.setVelocity(pvx, pvy);
_local2.setTeam(m_teamNum);
_local2.setStickyArrowType(getStickyArrowType());
_local2.setSkill(m_skill);
_local2.setRank(m_rank);
m_levelManager.m_gameObjects.push(_local2);
_local2.setOwningStructure(getOwningStructure());
}
}
Symbol 2625 MovieClip [__Packages.DragonScoutIce] Frame 0
class DragonScoutIce extends AirFighter
{
var m_multLighting, m_multFire, m_multIce, m_multBlunt, m_multSlice, m_multPierce, m_multFlak, m_multPoison, m_levelManager, getArrowType, m_teamNum, getStickyArrowType, m_skill, m_rank, getOwningStructure;
function DragonScoutIce (levelManager, clip, par_x, par_y, layer, lvl, par_hp) {
super(levelManager, clip, par_x, par_y, layer, lvl, par_hp);
m_multLighting = 0.1;
m_multFire = 4;
m_multIce = 0.01;
m_multBlunt = 0.1;
m_multSlice = 0.1;
m_multPierce = 0.1;
m_multFlak = 1;
m_multPoison = 0.01;
}
function addArrow(px, py, pvx, pvy) {
var _local3 = m_levelManager.getNextObjectLevel();
var _local2 = new IceArrow(m_levelManager, getArrowType(), px, py, m_levelManager.m_clip.object_layer, _local3, 100);
_local2.m_clip.lvl = _local3;
_local2.setVelocity(pvx, pvy);
_local2.setTeam(m_teamNum);
_local2.setStickyArrowType(getStickyArrowType());
_local2.setSkill(m_skill);
_local2.setRank(m_rank);
m_levelManager.m_gameObjects.push(_local2);
_local2.setOwningStructure(getOwningStructure());
}
}
Symbol 2626 MovieClip [__Packages.FlagIceDemon] Frame 0
class FlagIceDemon extends FlagFighter
{
var m_engagementManager, m_hpBase, m_speedBase, m_dmgBase, m_multLighting, m_multFire, m_multIce, m_multBlunt, m_multSlice, m_multPierce, m_multPoison, m_meleeDamage, faceObj, m_levelManager;
function FlagIceDemon (levelManager, clip, par_x, par_y, layer, lvl, par_hp) {
super(levelManager, clip, par_x, par_y, layer, lvl, par_hp);
m_engagementManager.setAttackedByLimit(2);
m_engagementManager.setAttackLimit(1);
m_hpBase = 300;
m_speedBase = 0.25;
m_dmgBase = 20;
m_multLighting = 0;
m_multFire = 4;
m_multIce = 0;
m_multBlunt = 0.1;
m_multSlice = 0.1;
m_multPierce = 0.1;
m_multPoison = 0;
}
function applyAttack(obj) {
var _local3 = new ImpactEffect(obj.m_effectsManager, "impact", "indicator_impact", obj, 10, 9999);
var _local4 = Math.floor((Util.randomPercent(0.5) * m_meleeDamage) * obj.getMultFire());
_local3.setAmt(_local4);
_local3.setImpactType("armor");
obj.m_effectsManager.addEffect(_local3);
faceObj(obj);
}
function doNormalDamageVisual(obj) {
m_levelManager.m_debrisManager.iceSplash(obj.xpos, obj.ypos, DebrisManager.m_bloodAmt);
}
function doCriticalDamageVisual(obj) {
m_levelManager.m_debrisManager.iceSplash(obj.xpos, obj.ypos, DebrisManager.m_bloodAmt * 2);
}
}
Symbol 2627 MovieClip [__Packages.FlagFireDemon] Frame 0
class FlagFireDemon extends FlagFighter
{
var m_engagementManager, m_hpBase, m_speedBase, m_dmgBase, m_multLighting, m_multFire, m_multIce, m_multBlunt, m_multSlice, m_multPierce, m_multPoison, m_meleeDamage, faceObj, m_levelManager;
function FlagFireDemon (levelManager, clip, par_x, par_y, layer, lvl, par_hp) {
super(levelManager, clip, par_x, par_y, layer, lvl, par_hp);
m_engagementManager.setAttackedByLimit(2);
m_engagementManager.setAttackLimit(1);
m_hpBase = 300;
m_speedBase = 0.25;
m_dmgBase = 20;
m_multLighting = 0;
m_multFire = 0;
m_multIce = 4;
m_multBlunt = 0.1;
m_multSlice = 0.1;
m_multPierce = 0.1;
m_multPoison = 0;
}
function applyAttack(obj) {
var _local3 = new ImpactEffect(obj.m_effectsManager, "impact", "indicator_impact", obj, 10, 9999);
var _local4 = Math.floor((Util.randomPercent(0.5) * m_meleeDamage) * obj.getMultFire());
_local3.setAmt(_local4);
_local3.setImpactType("armor");
obj.m_effectsManager.addEffect(_local3);
faceObj(obj);
}
function doNormalDamageVisual(obj) {
m_levelManager.m_debrisManager.fireSplash(obj.xpos, obj.ypos, DebrisManager.m_bloodAmt);
}
function doCriticalDamageVisual(obj) {
m_levelManager.m_debrisManager.fireSplash(obj.xpos, obj.ypos, DebrisManager.m_bloodAmt * 2);
}
}
Symbol 2628 MovieClip [__Packages.BadBlocker] Frame 0
class BadBlocker extends Fighter
{
var m_levelManager, xpos, ypos, m_hp, m_max_hp, m_layer, m_clip, updateClip, m_radius, enemies, engaged, dead, actionMode, vx, vy, actionDuration, m_effectsManager, m_engagementManager, setEnemyList, setFriendList, m_teamNum, m_type, myTarget, unlinkEngagements, tst_name, cleanup;
function BadBlocker (levelManager, clip, par_x, par_y, layer, lvl, par_hp) {
super();
m_levelManager = levelManager;
xpos = par_x;
ypos = par_y;
m_hp = par_hp;
m_max_hp = par_hp;
m_layer = layer;
m_clip = m_layer.attachMovie(clip, (clip + "_id_") + lvl, lvl);
updateClip();
m_radius = m_clip._width / 2;
m_clip.anim.gotoAndStop(1);
enemies = null;
engaged = false;
dead = false;
actionMode = "advance";
vx = -1;
vy = 0;
actionDuration = 0;
m_effectsManager = new EffectsManager(this);
m_engagementManager = new EngagementManager();
setEnemyList(m_levelManager.m_goodTeam);
setFriendList(m_levelManager.m_badTeam);
m_teamNum = Fighter.BAD;
m_type = "living";
}
function targetInFront() {
return(myTarget.xpos < xpos);
}
function advance() {
xpos = xpos + vx;
ypos = m_levelManager.getElevation(xpos);
if (xpos < -50) {
m_levelManager.increaseBadScore(1);
destroy();
}
}
function destroy() {
trace("bad being destroyed");
unlinkEngagements();
tst_name = tst_name + "_dead";
m_levelManager.deleteFromBadTeam(this);
m_levelManager.deleteFromGameObjects(this);
m_clip.unloadMovie();
m_levelManager.stateChange();
cleanup();
}
}
Symbol 2629 MovieClip [__Packages.BadRunner] Frame 0
class BadRunner extends Fighter
{
var m_levelManager, xpos, ypos, m_hp, m_max_hp, m_layer, m_clip, updateClip, m_radius, enemies, engaged, dead, actionMode, vx, vy, actionDuration, m_effectsManager, m_engagementManager, setEnemyList, setFriendList, m_teamNum, m_type, myTarget, unlinkEngagements, tst_name, cleanup;
function BadRunner (levelManager, clip, par_x, par_y, layer, lvl, par_hp) {
super();
m_levelManager = levelManager;
xpos = par_x;
ypos = par_y;
m_hp = par_hp;
m_max_hp = par_hp;
m_layer = layer;
m_clip = m_layer.attachMovie(clip, (clip + "_id_") + lvl, lvl);
updateClip();
m_radius = m_clip._width / 2;
m_clip.anim.gotoAndStop(1);
enemies = null;
engaged = false;
dead = false;
actionMode = "advance";
vx = -1;
vy = 0;
actionDuration = 0;
m_effectsManager = new EffectsManager(this);
m_engagementManager = new EngagementManager();
setEnemyList(m_levelManager.m_goodTeam);
setFriendList(m_levelManager.m_badTeam);
m_teamNum = Fighter.BAD;
m_type = "living";
}
function targetInFront() {
return(myTarget.xpos < xpos);
}
function advance() {
xpos = xpos + vx;
ypos = m_levelManager.getElevation(xpos);
if (xpos < -50) {
m_levelManager.increaseBadScore(1);
destroy();
}
}
function engageEnemiesInRange() {
}
function destroy() {
trace("bad being destroyed");
unlinkEngagements();
tst_name = tst_name + "_dead";
m_levelManager.deleteFromBadTeam(this);
m_levelManager.deleteFromGameObjects(this);
m_clip.unloadMovie();
m_levelManager.stateChange();
cleanup();
}
}
Symbol 2630 MovieClip [__Packages.Arrow] Frame 0
class Arrow extends Projectile
{
var m_levelManager, xpos, ypos, m_hp, m_layer, m_clip, updateClip, m_grav, m_targetsAcquired, m_timeLife, m_scanTimer, m_hitTimer, m_choice, vx, vy, rotation, destroy, m_targets;
function Arrow (levelManager, clip, par_x, par_y, layer, lvl, par_hp) {
super();
m_levelManager = levelManager;
xpos = par_x;
ypos = par_y;
m_hp = par_hp;
m_layer = layer;
m_clip = m_layer.attachMovie(clip, (clip + "_id_") + lvl, lvl);
updateClip();
m_clip.anim.gotoAndStop(1);
m_grav = m_levelManager.m_gravity;
m_targetsAcquired = false;
m_timeLife = 0;
m_scanTimer = 0;
m_hitTimer = 0;
m_choice = random(7);
}
function updatePos() {
xpos = xpos + vx;
ypos = ypos + vy;
var _local2 = Math.atan(vy / vx);
if (vx > 0) {
rotation = _local2 * m_rotFact;
} else {
rotation = (_local2 * m_rotFact) + 180;
}
updateSmoke();
}
function updateSmoke() {
}
function testHit() {
var _local2;
var _local7 = false;
var _local5;
if (ypos > (m_levelManager.getElevation(xpos) + 10)) {
destroy();
} else {
var _local6 = 0;
while ((_local6 < m_targets.length) && (!_local7)) {
_local2 = m_targets[_local6];
if (_local2.hasHP() && (_local2.m_clip.hitbox.hitTest(xpos, ypos, 0))) {
var _local8 = random(7);
var _local3;
var _local4;
if (m_choice == 0) {
_local3 = "poison";
_local4 = "indicator_poison";
_local5 = new PoisonEffect(_local2.m_effectsManager, _local3, _local4, _local2, 3000, 50);
} else if (m_choice == 1) {
_local3 = "fire";
_local4 = "indicator_fire";
_local5 = new FireEffect(_local2.m_effectsManager, _local3, _local4, _local2, 300, 20);
} else if (m_choice == 2) {
_local3 = "ice";
_local4 = "indicator_ice";
_local5 = new IceEffect(_local2.m_effectsManager, _local3, _local4, _local2, 1000, 20);
} else if (m_choice == 3) {
_local3 = "impact";
_local4 = "indicator_impact";
_local5 = new ImpactEffect(_local2.m_effectsManager, _local3, _local4, _local2, 10, 9999);
ImpactEffect(_local5).setAmt(20);
} else if (m_choice == 4) {
_local3 = "fear";
_local4 = "indicator_fear";
_local5 = new FearEffect(_local2.m_effectsManager, _local3, _local4, _local2, 300, 50);
} else if (m_choice == 5) {
_local3 = "daze";
_local4 = "indicator_daze";
_local5 = new DazeEffect(_local2.m_effectsManager, _local3, _local4, _local2, 300, 50);
} else if (m_choice == 6) {
_local3 = "convert";
_local4 = "indicator_convert";
_local5 = new ConvertEffect(_local2.m_effectsManager, _local3, _local4, _local2, 1000, 9999);
} else if (m_choice == 7) {
_local3 = "heal";
_local4 = "indicator_heal";
_local5 = new HealEffect(_local2.m_effectsManager, _local3, _local4, _local2, 50, 9999);
} else if (m_choice == 8) {
_local3 = "regen";
_local4 = "indicator_regen";
_local5 = new RegenEffect(_local2.m_effectsManager, _local3, _local4, _local2, 1200, 30);
} else {
_local3 = "purge";
_local4 = "indicator_purge";
_local5 = new PurgeEffect(_local2.m_effectsManager, _local3, _local4, _local2, 3000, 50);
}
_local2.m_effectsManager.addEffect(_local5);
_local7 = true;
}
_local6++;
}
}
if (_local7) {
destroy();
}
}
function setChoice(ch) {
m_choice = ch;
}
static function tstGetType(par) {
var _local3;
var _local1 = new Array("poison", "fire", "ice", "impact", "fear", "daze", "convert", "heal", "regen", "purge");
if (par == -1) {
return("cannon ball");
}
return(_local1[par]);
}
var m_rotFact = 57.2957795130823;
var m_pi = Math.PI;
var m_timeToSmoke = 1;
var m_flare = "flare_fire01";
}
Symbol 2631 MovieClip [__Packages.ConvertEffect] Frame 0
class ConvertEffect extends Effect
{
var m_target;
function ConvertEffect (manager, etype, clipName, target, duration, tick) {
super(manager, etype, clipName, target, duration, tick);
}
function performEffect() {
Fighter(m_target).convertToOppositeTeam();
m_target.addImmunity("convert");
}
function cleanUp() {
Fighter(m_target).convertToOppositeTeam();
m_target.addImmunity("convert");
}
}
Symbol 2632 MovieClip [__Packages.RegenEffect] Frame 0
class RegenEffect extends Effect
{
var m_target;
function RegenEffect (manager, etype, clipName, target, duration, tick) {
super(manager, etype, clipName, target, duration, tick);
trace("Constructed Heal Effect");
}
function performEffect() {
m_target.takeDamage(-3 - random(3), false);
}
function cleanUp() {
m_target.takeDamage(-20, false);
}
}
Symbol 2633 MovieClip [__Packages.BounceArrow] Frame 0
class BounceArrow extends StandardArrow
{
var m_flare, m_bounceMax, m_bounceCount, m_xBounceFactor, m_yBounceFactor, m_flareLifeSpan, m_flareAnimDur, m_flareAnimRate, m_flareAnimEnd, m_addGoodTargets, m_addBadTargets, ypos, m_timeToSmoke, m_levelManager, xpos, doProjectileReaction, m_impactDamage, m_critical, m_skill, destroy, vx, vy, rotation;
function BounceArrow (levelManager, clip, par_x, par_y, layer, lvl, par_hp) {
super(levelManager, clip, par_x, par_y, layer, lvl, par_hp);
m_flare = "flare_ball_01";
m_bounceMax = 5;
m_bounceCount = 0;
m_xBounceFactor = 0.6;
m_yBounceFactor = 0.6;
m_flareLifeSpan = 50;
m_flareAnimDur = 50;
m_flareAnimRate = 1;
m_flareAnimEnd = 50;
m_addGoodTargets = true;
m_addBadTargets = true;
}
function updateSmoke() {
if ((ypos > -10) && (((m_timeToSmoke = m_timeToSmoke - GameApp.m_gSpeed)) < 0)) {
m_timeToSmoke = 2;
var _local2 = m_levelManager.m_debrisManager.addDebrisBG(m_flare, m_flareLifeSpan, m_flareAnimDur, m_flareAnimRate, m_flareAnimEnd);
_local2.setAttributes(0, 0, 0, 0, (xpos + random(12)) - 6, (ypos + random(12)) - 6, 0);
}
}
function hitGround() {
if ((m_bounceCount++) < m_bounceMax) {
bounce();
} else {
doProjectileReaction(null);
}
}
function doProjectileAction(tempObj) {
if (tempObj != null) {
m_impactDamage = 30;
var _local3 = new ImpactEffect(tempObj.m_effectsManager, "impact", "indicator_impact", tempObj, 10, 9999);
var _local4 = Math.floor(tempObj.getMultBlunt() * m_impactDamage);
_local3.setAmt(_local4);
_local3.setCritical(m_critical);
tempObj.m_effectsManager.addEffect(_local3);
if (m_skill != null) {
m_skill.addXP(1);
}
}
destroy();
}
function bounce() {
var _local4 = m_levelManager.getRotationAt(xpos);
var _local3 = GameApp.getReflectionAngle(_local4, vx, vy);
var _local2 = Math.sqrt((vx * vx) + (vy * vy));
vx = (Math.cos((Math.PI/180) * _local3) * _local2) * m_xBounceFactor;
vy = (Math.sin((Math.PI/180) * _local3) * _local2) * m_yBounceFactor;
ypos = m_levelManager.getElevation(xpos);
}
function setNumBounces(amt) {
m_bounceMax = amt;
}
function setBounceEnergyMultipliers(xmult, ymult) {
m_xBounceFactor = xmult;
m_yBounceFactor = ymult;
}
function setXBounceFactor(mult) {
m_xBounceFactor = mult;
}
function setYBounceFactor(mult) {
m_yBounceFactor = mult;
}
function updateRotation() {
rotation = 0;
}
}
Symbol 2634 MovieClip [__Packages.ProfileCreator] Frame 0
class ProfileCreator extends GameWindow
{
var m_inputName, m_clip, m_game, m_clipName, m_target, m_depth, m_colorChooser, m_iconChooser;
function ProfileCreator (game, clipName, depth, targetClip) {
super(game, clipName, depth, targetClip);
m_inputName = "<input here>";
}
function createProfile(pName) {
trace("m_clip.army_graphics.g1.color_box._color = " + m_clip.army_graphics.g1.color_box._color);
trace("m_clip.army_graphics.g2.color_box._color = " + m_clip.army_graphics.g2.color_box._color);
m_game.profileManager.createProfile(pName, "BowMaster", m_clip.army_graphics.gc1, m_clip.army_graphics.gc2, m_clip.army_graphics.bc1, m_clip.army_graphics.bc2, m_clip.army_graphics.gf.icon_name, m_clip.army_graphics.bf.icon_name, m_clip.shooting_chooser.shootingMethod, m_clip.army_graphics.goodIconColor, m_clip.army_graphics.badIconColor);
}
function displayWindow() {
trace("Displaying: " + m_clipName);
m_game.setCurrentWindow(this);
m_clip = m_target.attachMovie(m_clipName, m_clipName + "_id_1", m_depth);
m_clip.m_view = this;
m_clip.m_game = m_game;
m_colorChooser = new ColorChooser(m_clip.color_chooser_spot);
m_colorChooser.setArmyGraphics(m_clip.army_graphics);
trace("In displayWindow() m_clip.army_graphics.gc2: " + m_clip.army_graphics.gc2);
m_iconChooser = new IconChooser(m_clip.icon_chooser_spot);
m_iconChooser.setArmyGraphics(m_clip.army_graphics);
trace("2 In displayWindow() m_clip.army_graphics.gc2: " + m_clip.army_graphics.gc2);
}
}
Symbol 2635 MovieClip [__Packages.ColorChooser] Frame 0
class ColorChooser
{
var m_activeColor, m_colors, m_clip, m_colorButtonLayer, m_armyGraphics;
function ColorChooser (layer) {
m_activeColor = "no_color";
m_colors = new Array("red", "darkred", "crimson", "orangered", "maroon", "firebrick", "rosybrown", "indianred", "salmon", "white", "whitesmoke", "ivory", "silver", "grey1", "grey2", "grey3", "grey4", "black", "magenta", "darkmagenta", "violet", "darkviolet", "purple", "pink", "blueviolet", "mediumvioletred", "mistyrose", "yellow", "gold", "goldenrod", "brown", "tan", "wheat", "sandybrown", "darkkhaki", "orange", "blue", "royalblue", "teal", "cyan", "lightsteelblue", "skyblue", "navy", "midnightblue", "darkslateblue", "green", "darkgreen", "forestgreen", "seagreen", "limegreen", "darkolivegreen", "yellowgreen", "lightseagreen", "springgreen");
m_clip = layer.attachMovie("layer_clip", "color_chooser", 1);
m_colorButtonLayer = m_clip.attachMovie("layer_clip", "button_layer_clip_01", 1);
loadColorButtons();
}
function loadColorButtons() {
var _local6;
var _local2;
var _local5 = 0;
var _local4 = 0;
var _local10 = 0;
var _local8 = 0;
var _local9 = 25;
var _local7 = 25;
var _local3 = 0;
while (_local3 < m_colors.length) {
_local6 = m_colors[_local3];
if ((_local3 % 18) == 0) {
_local5++;
_local4 = 0;
}
_local2 = m_colorButtonLayer.attachMovie("color_button_clip", "color_button" + _local3, _local3 + 1);
_local2.m_view = this;
_local2._x = (_local4 * _local7) + _local8;
_local2._y = (_local5 * _local9) + _local10;
_local2._width = (_local2._height = 25);
_local2.m_color = (_local2._color = _local6);
_local2.cacheAsBitmap = true;
_local4++;
_local3++;
}
}
function setActiveColor(color) {
trace("Setting active color to: " + color);
m_activeColor = color;
m_armyGraphics.updateColor(m_activeColor);
}
function getActiveColor() {
return(m_activeColor);
}
function setArmyGraphics(clip) {
m_armyGraphics = clip;
}
}
Symbol 2636 MovieClip [__Packages.IconChooser] Frame 0
class IconChooser
{
var m_activeIcon, m_icons, m_clip, m_iconButtonLayer, m_armyGraphics;
function IconChooser (layer) {
m_activeIcon = "icon_skull";
m_icons = new Array("icon_skull", "icon_good_cross", "ai_wolf_head", "ai_ying_yang", "ai_celtic_knott", "ai_tri_force", "ai_impossible_triangle", "ai_jzmd", "ai_bloody_hand", "ai_cross", "ai_cross_2", "ai_eye", "ai_cross_3", "ai_flower", "ai_flower2", "ai_greek_pi", "ai_greek1", "ai_greek2", "ai_hand_bunny_ears", "ai_happy", "ai_sad", "ai_lamda", "ai_moon_star", "ai_omega", "ai_skull_bones", "ai_snow_flake", "ai_sun", "ai_thumbs_up", "ai_helm1", "ai_sword1", "ai_star", "ai_star2", "ai_tools", "ai_spider", "ai_no_smoking", "ai_lightning_bolt");
m_clip = layer.attachMovie("layer_clip", "icon_chooser", 1);
m_iconButtonLayer = m_clip.attachMovie("layer_clip", "button_layer_clip_01", 1);
loadIconButtons();
}
function loadIconButtons() {
var _local4;
var _local3;
var _local7 = 0;
var _local5 = 0;
var _local11 = 0;
var _local9 = 0;
var _local10 = 50;
var _local8 = 50;
var _local2 = 0;
while (_local2 < m_icons.length) {
_local4 = m_icons[_local2];
if ((_local2 % 12) == 0) {
_local7++;
_local5 = 0;
}
_local3 = m_iconButtonLayer.attachMovie("icon_button_clip", "icon_button" + _local2, _local2 + 1);
_local3.m_view = this;
_local3._x = (_local5 * _local8) + _local9;
_local3._y = (_local7 * _local10) + _local11;
_local3.m_icon = _local4;
var _local6 = _local3.attachMovie(_local4, _local4, 1);
_local6.paint._color = "white";
_local3.cacheAsBitmap = true;
_local5++;
_local2++;
}
}
function setActiveIcon(icn) {
trace("Setting active icon to: " + icn);
m_activeIcon = icn;
m_armyGraphics.updateIcon(m_activeIcon);
}
function getActiveIcon() {
return(m_activeIcon);
}
function setArmyGraphics(clip) {
m_armyGraphics = clip;
}
}
Symbol 2637 MovieClip [__Packages.Unlockables] Frame 0
class Unlockables extends GameWindow
{
var m_game, m_clipName, m_depth, m_target;
function Unlockables (game, clipName, depth, targetClip) {
super();
m_game = game;
m_clipName = clipName;
m_depth = depth;
m_target = targetClip;
}
}
Symbol 2638 MovieClip [__Packages.HelpMenu] Frame 0
class HelpMenu extends GameWindow
{
var m_game, m_clipName, m_depth, m_target;
function HelpMenu (game, clipName, depth, targetClip) {
super();
m_game = game;
m_clipName = clipName;
m_depth = depth;
m_target = targetClip;
}
}
Symbol 2639 MovieClip [__Packages.Credits] Frame 0
class Credits extends GameWindow
{
var m_game, m_clipName, m_depth, m_target, m_clip;
function Credits (game, clipName, depth, targetClip) {
super();
m_game = game;
m_clipName = clipName;
m_depth = depth;
m_target = targetClip;
}
function displayWindow() {
trace("Displaying: " + m_clipName);
m_game.setCurrentWindow(this);
m_clip = m_target.attachMovie(m_clipName, m_clipName + "_id_1", m_depth);
m_clip.m_view = this;
m_clip.m_game = m_game;
stopAllSounds();
SoundManager.playSoundForced("intro_music.mp3");
}
function closeWindow() {
trace("Closing window: " + m_clipName);
m_clip.unloadMovie();
m_game.mainMenu.displayWindow();
}
}
Symbol 2640 MovieClip [__Packages.Settings] Frame 0
class Settings extends GameWindow
{
var m_game, m_clipName, m_depth, m_target;
function Settings (game, clipName, depth, targetClip) {
super();
m_game = game;
m_clipName = clipName;
m_depth = depth;
m_target = targetClip;
}
}
Symbol 2641 MovieClip [__Packages.ProfileDeletor] Frame 0
class ProfileDeletor extends GameWindow
{
var m_game, m_clipName, m_depth, m_target;
function ProfileDeletor (game, clipName, depth, targetClip) {
super();
m_game = game;
m_clipName = clipName;
m_depth = depth;
m_target = targetClip;
}
}
Symbol 2642 MovieClip [__Packages.LevelSummary] Frame 0
class LevelSummary extends GameWindow
{
var m_game, m_clipName, m_depth, m_target, m_goldRate, m_xpRate, m_levelNum, m_refreshed, m_animate, m_clip, m_curGold, m_curXP, xpSoundTimer, goldSoundTimer, m_targetGold, m_targetXP, m_gold_mult, m_xp_mult, m_accuracy, m_civility, m_efficiency, m_salvage;
function LevelSummary (game, clipName, depth, targetClip) {
super();
m_game = game;
m_clipName = clipName;
m_depth = depth;
m_target = targetClip;
m_goldRate = 15;
m_xpRate = 15;
m_levelNum = 0;
m_refreshed = false;
m_animate = false;
}
function displayWindow() {
trace("Displaying: " + m_clipName);
m_refreshed = false;
m_game.setCurrentWindow(this);
m_clip = m_target.attachMovie(m_clipName, m_clipName + "_id_1", m_depth);
m_clip.m_view = this;
m_clip.m_game = m_game;
var _local2 = m_clip.stepper_layer.attachMovie("level_summary_stepper", "level_summary_stepper_id_1", 1);
_local2.m_view = this;
_local2._visible = false;
m_curGold = 0;
m_curXP = 0;
xpSoundTimer = 0;
goldSoundTimer = 0;
var _local3 = 33;
m_goldRate = Math.ceil(m_targetGold / _local3);
m_xpRate = Math.ceil(m_targetXP / _local3);
m_clip.m_msg = ((((("Level " + m_levelNum) + " completed.\nXP bonus x") + m_xp_mult) + ". Gold bonus x") + m_gold_mult) + ".";
m_clip.m_accuracy = ("" + (Math.floor(m_accuracy * 1000) / 10)) + "%";
m_clip.m_civility = ("" + (Math.floor(m_civility * 1000) / 10)) + "%";
m_clip.m_economy = ("" + (Math.floor(m_efficiency * 1000) / 10)) + "%";
m_clip.m_salvage = ("" + (Math.floor(m_salvage * 1000) / 10)) + "%";
m_clip.m_gold = 0;
m_clip.m_xp = 0;
}
function step() {
if (m_animate) {
if (m_curGold < m_targetGold) {
m_curGold = m_curGold + m_goldRate;
if (m_curGold >= m_targetGold) {
m_curGold = m_targetGold;
SoundManager.playSound("Skill Level Up 1.wav");
} else if ((goldSoundTimer--) < 0) {
goldSoundTimer = 2;
SoundManager.playSound("Armor Ricochet.wav");
}
m_clip.m_gold = "" + m_curGold;
} else if ((m_curGold >= m_targetGold) && (m_curXP < m_targetXP)) {
m_curXP = m_curXP + m_xpRate;
if (m_curXP >= m_targetXP) {
m_curXP = m_targetXP;
SoundManager.playSound("Level Up.wav");
m_animate = false;
} else if ((xpSoundTimer--) < 0) {
xpSoundTimer = 2;
SoundManager.playSound("Armor Ricochet.wav");
}
m_clip.m_xp = "" + m_curXP;
}
} else if (!m_refreshed) {
m_refreshed = true;
m_clip.m_xp = "" + m_targetXP;
m_clip.m_gold = "" + m_targetGold;
}
}
function purchaseUpgrades() {
m_animate = false;
m_game.upgradeManager.displayWindow();
}
function nextRound() {
m_animate = false;
m_game.levelManager.displayWindow();
}
function setAnimate(bool) {
m_animate = bool;
}
function setAccuracy(hits, shots) {
if (shots > 0) {
m_accuracy = hits / shots;
} else {
m_accuracy = 0;
}
}
function setCivility(pop_left, pop_given) {
if (pop_given > 0) {
m_civility = pop_left / pop_given;
} else {
m_civility = 0;
}
}
function setEfficiency(gold_earned, gold_spent) {
if (gold_earned > 0) {
m_efficiency = 1 - (gold_spent / gold_earned);
} else {
m_efficiency = 0;
}
if (m_efficiency < 0) {
m_efficiency = 0;
}
}
function setSalvage(head_shots, hits) {
if (hits > 0) {
m_salvage = head_shots / hits;
} else {
m_salvage = 0;
}
}
function setTargetGold() {
m_gold_mult = 500 + (m_levelNum * 5);
m_targetGold = 0;
if (m_efficiency > 0) {
m_targetGold = m_targetGold + m_efficiency;
}
m_targetGold = m_targetGold + m_salvage;
m_targetGold = Math.floor(m_targetGold * m_gold_mult);
}
function setTargetXP() {
m_xp_mult = 100 + (m_levelNum * 2);
m_targetXP = Math.floor(m_xp_mult * (m_accuracy + m_civility));
trace("m_targetXP: " + m_targetXP);
}
function getBonusGold() {
return(m_targetGold);
}
function getBonusXP() {
return(m_targetXP);
}
}
Instance of Symbol 1063 MovieClip "armorbox" in Symbol 1676 MovieClip Frame 5
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 1063 MovieClip "feetbox" in Symbol 1676 MovieClip Frame 5
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 1063 MovieClip "bellybox" in Symbol 1676 MovieClip Frame 67
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 1063 MovieClip "armorbox" in Symbol 1676 MovieClip Frame 89
onClipEvent (load) {
}
Instance of Symbol 1063 MovieClip "armorbox" in Symbol 1676 MovieClip Frame 90
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 1063 MovieClip "bellybox" in Symbol 1676 MovieClip Frame 144
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 1063 MovieClip "headbox" in Symbol 1676 MovieClip Frame 171
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 1063 MovieClip "bellybox" in Symbol 1676 MovieClip Frame 215
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 1063 MovieClip "headbox" in Symbol 1676 MovieClip Frame 246
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 1063 MovieClip "bellybox" in Symbol 1676 MovieClip Frame 255
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 1063 MovieClip "armorbox" in Symbol 1676 MovieClip Frame 271
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 1063 MovieClip "armorbox" in Symbol 1676 MovieClip Frame 421
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 1063 MovieClip "feetbox" in Symbol 1676 MovieClip Frame 421
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 1063 MovieClip "bellybox" in Symbol 1676 MovieClip Frame 434
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 1063 MovieClip "hitbox" in Symbol 1677 MovieClip [boss_gorath] Frame 1
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 1063 MovieClip "headbox" in Symbol 1677 MovieClip [boss_gorath] Frame 1
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 1677 MovieClip [boss_gorath] "bod" in Symbol 1678 MovieClip Frame 1
onClipEvent (load) {
anim.gotoAndStop(420);
hp_bar._visible = false;
}
Symbol 1710 MovieClip [xp_txt] Frame 1
Symbol 1712 MovieClip [retired_profile_gold] Frame 1
var msg;
Symbol 1714 MovieClip [retired_profile_name] Frame 1
var msg;
Symbol 1716 MovieClip [retired_profile_num] Frame 1
var msg;
Symbol 1722 MovieClip [window_highscores] Frame 1
var m_view;
var m_game;
Symbol 1728 MovieClip [bad_archer] Frame 1
Instance of Symbol 1063 MovieClip "hitbox" in Symbol 1728 MovieClip [bad_archer] Frame 1
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 1063 MovieClip "headbox" in Symbol 1728 MovieClip [bad_archer] Frame 1
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 1600 MovieClip "arrow_guide" in Symbol 1728 MovieClip [bad_archer] Frame 1
onClipEvent (load) {
var scaleFactor = 0.34;
var xOffset = -59.6;
var yOffset = 15.3;
}
onClipEvent (enterFrame) {
_rotation = (-_parent.anim.arrow_guide._rotation);
_x = ((-(_parent.anim.arrow_guide._x - xOffset)) * scaleFactor);
_y = ((_parent.anim.arrow_guide._y - yOffset) * scaleFactor);
}
Instance of Symbol 1729 MovieClip "anim" in Symbol 1730 MovieClip [bad_blocker] Frame 1
/* no clip actions */
Instance of Symbol 1063 MovieClip "hitbox" in Symbol 1730 MovieClip [bad_blocker] Frame 1
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 1063 MovieClip "headbox" in Symbol 1730 MovieClip [bad_blocker] Frame 1
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 1729 MovieClip "anim" in Symbol 1731 MovieClip [bad_blocker_big] Frame 1
/* no clip actions */
Instance of Symbol 1063 MovieClip "hitbox" in Symbol 1731 MovieClip [bad_blocker_big] Frame 1
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 1063 MovieClip "headbox" in Symbol 1731 MovieClip [bad_blocker_big] Frame 1
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 1736 MovieClip in Symbol 1762 MovieClip Frame 1
onClipEvent (load) {
_color = GameVars.g_badArmyColor2;
}
Instance of Symbol 1738 MovieClip in Symbol 1762 MovieClip Frame 1
onClipEvent (load) {
_color = GameVars.g_badArmyColor;
}
Instance of Symbol 1063 MovieClip "hitbox" in Symbol 1763 MovieClip [bad_dragon_scout] Frame 1
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 1063 MovieClip "headbox" in Symbol 1763 MovieClip [bad_dragon_scout] Frame 1
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 1063 MovieClip "hitbox" in Symbol 1764 MovieClip [bad_flag_mount] Frame 1
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 1063 MovieClip "headbox" in Symbol 1764 MovieClip [bad_flag_mount] Frame 1
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 1600 MovieClip "arrow_guide" in Symbol 1764 MovieClip [bad_flag_mount] Frame 1
onClipEvent (load) {
var scaleFactor = 1.174;
var xOffset = 34.9;
var yOffset = 31.6;
}
onClipEvent (enterFrame) {
_rotation = _parent.anim.arrow_guide._rotation;
_x = ((_parent.anim.arrow_guide._x - xOffset) * scaleFactor);
_y = ((_parent.anim.arrow_guide._y - yOffset) * scaleFactor);
}
Symbol 1765 MovieClip [bad_flag_priest] Frame 1
Instance of Symbol 1063 MovieClip "hitbox" in Symbol 1765 MovieClip [bad_flag_priest] Frame 1
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 1063 MovieClip "headbox" in Symbol 1765 MovieClip [bad_flag_priest] Frame 1
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 1600 MovieClip "arrow_guide" in Symbol 1765 MovieClip [bad_flag_priest] Frame 1
onClipEvent (load) {
var scaleFactor = 0.306;
var xOffset = -59.7;
var yOffset = 17.3;
}
onClipEvent (enterFrame) {
_rotation = (-_parent.anim.arrow_guide._rotation);
_x = ((-(_parent.anim.arrow_guide._x - xOffset)) * scaleFactor);
_y = ((_parent.anim.arrow_guide._y - yOffset) * scaleFactor);
}
Symbol 1766 MovieClip [bad_flagger] Frame 1
Instance of Symbol 1063 MovieClip "hitbox" in Symbol 1766 MovieClip [bad_flagger] Frame 1
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 1063 MovieClip "headbox" in Symbol 1766 MovieClip [bad_flagger] Frame 1
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 1600 MovieClip "arrow_guide" in Symbol 1766 MovieClip [bad_flagger] Frame 1
onClipEvent (load) {
var scaleFactor = 0.38;
var xOffset = -59.6;
var yOffset = 15.3;
}
onClipEvent (enterFrame) {
_rotation = (-_parent.anim.arrow_guide._rotation);
_x = ((-(_parent.anim.arrow_guide._x - xOffset)) * scaleFactor);
_y = ((_parent.anim.arrow_guide._y - yOffset) * scaleFactor);
}
Symbol 1767 MovieClip [bad_flagger_big] Frame 1
Instance of Symbol 1600 MovieClip "arrow_guide" in Symbol 1767 MovieClip [bad_flagger_big] Frame 1
onClipEvent (load) {
var scaleFactor = 0.514;
var xOffset = -59.6;
var yOffset = 15.3;
}
onClipEvent (enterFrame) {
_rotation = (-_parent.anim.arrow_guide._rotation);
_x = ((-(_parent.anim.arrow_guide._x - xOffset)) * scaleFactor);
_y = ((_parent.anim.arrow_guide._y - yOffset) * scaleFactor);
}
Instance of Symbol 1063 MovieClip "hitbox" in Symbol 1767 MovieClip [bad_flagger_big] Frame 1
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 1063 MovieClip "headbox" in Symbol 1767 MovieClip [bad_flagger_big] Frame 1
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 1729 MovieClip "anim" in Symbol 1768 MovieClip [bad_runner] Frame 1
/* no clip actions */
Instance of Symbol 1063 MovieClip "headbox" in Symbol 1768 MovieClip [bad_runner] Frame 1
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 1063 MovieClip "hitbox" in Symbol 1768 MovieClip [bad_runner] Frame 1
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 1063 MovieClip "hitbox" in Symbol 1769 MovieClip [bad_trebuchet] Frame 1
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 1063 MovieClip "headbox" in Symbol 1769 MovieClip [bad_trebuchet] Frame 1
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 1600 MovieClip "arrow_guide" in Symbol 1769 MovieClip [bad_trebuchet] Frame 1
onClipEvent (load) {
var scaleFactor = 0.256;
var xOffset = 64.6;
var yOffset = 44.8;
}
onClipEvent (enterFrame) {
_rotation = _parent.anim.arrow_guide._rotation;
_x = ((_parent.anim.arrow_guide._x - xOffset) * scaleFactor);
_y = ((_parent.anim.arrow_guide._y - yOffset) * scaleFactor);
}
Symbol 1770 MovieClip [good_archer] Frame 1
Instance of Symbol 1063 MovieClip "hitbox" in Symbol 1770 MovieClip [good_archer] Frame 1
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 1063 MovieClip "headbox" in Symbol 1770 MovieClip [good_archer] Frame 1
onClipEvent (load) {
_visible = false;
}
Symbol 1771 MovieClip [good_blocker] Frame 1
Instance of Symbol 1729 MovieClip "anim" in Symbol 1771 MovieClip [good_blocker] Frame 1
/* no clip actions */
Instance of Symbol 1063 MovieClip "hitbox" in Symbol 1771 MovieClip [good_blocker] Frame 1
onClipEvent (load) {
_visible = false;
}
Symbol 1772 MovieClip [good_blocker_big] Frame 1
Instance of Symbol 1729 MovieClip "anim" in Symbol 1772 MovieClip [good_blocker_big] Frame 1
/* no clip actions */
Instance of Symbol 1063 MovieClip "hitbox" in Symbol 1772 MovieClip [good_blocker_big] Frame 1
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 1063 MovieClip "hitbox" in Symbol 1775 MovieClip [good_dragon_scout] Frame 1
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 1063 MovieClip "hitbox" in Symbol 1776 MovieClip [good_flag_mount] Frame 1
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 1063 MovieClip "headbox" in Symbol 1776 MovieClip [good_flag_mount] Frame 1
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 1600 MovieClip "arrow_guide" in Symbol 1776 MovieClip [good_flag_mount] Frame 1
onClipEvent (load) {
var scaleFactor = 1.174;
var xOffset = 34.9;
var yOffset = 31.6;
}
onClipEvent (enterFrame) {
_rotation = _parent.anim.arrow_guide._rotation;
_x = ((_parent.anim.arrow_guide._x - xOffset) * scaleFactor);
_y = ((_parent.anim.arrow_guide._y - yOffset) * scaleFactor);
}
Symbol 1777 MovieClip [good_flag_priest] Frame 1
Instance of Symbol 1063 MovieClip "hitbox" in Symbol 1777 MovieClip [good_flag_priest] Frame 1
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 1063 MovieClip "headbox" in Symbol 1777 MovieClip [good_flag_priest] Frame 1
onClipEvent (load) {
_visible = false;
}
Symbol 1778 MovieClip [good_flagger] Frame 1
Instance of Symbol 1063 MovieClip "hitbox" in Symbol 1778 MovieClip [good_flagger] Frame 1
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 1063 MovieClip "headbox" in Symbol 1778 MovieClip [good_flagger] Frame 1
onClipEvent (load) {
_visible = false;
}
Symbol 1779 MovieClip [good_flagger_big] Frame 1
Instance of Symbol 1063 MovieClip "hitbox" in Symbol 1779 MovieClip [good_flagger_big] Frame 1
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 1063 MovieClip "headbox" in Symbol 1779 MovieClip [good_flagger_big] Frame 1
onClipEvent (load) {
_visible = false;
}
Symbol 1780 MovieClip [good_runner] Frame 1
Instance of Symbol 1729 MovieClip "anim" in Symbol 1780 MovieClip [good_runner] Frame 1
/* no clip actions */
Instance of Symbol 1063 MovieClip "hitbox" in Symbol 1780 MovieClip [good_runner] Frame 1
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 1063 MovieClip "hitbox" in Symbol 1781 MovieClip [good_trebuchet] Frame 1
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 1063 MovieClip "headbox" in Symbol 1781 MovieClip [good_trebuchet] Frame 1
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 1600 MovieClip "arrow_guide" in Symbol 1781 MovieClip [good_trebuchet] Frame 1
onClipEvent (load) {
var scaleFactor = 0.256;
var xOffset = 64.6;
var yOffset = 44.8;
}
onClipEvent (enterFrame) {
_rotation = _parent.anim.arrow_guide._rotation;
_x = ((_parent.anim.arrow_guide._x - xOffset) * scaleFactor);
_y = ((_parent.anim.arrow_guide._y - yOffset) * scaleFactor);
}
Instance of Symbol 1063 MovieClip "hitbox" in Symbol 1782 MovieClip [hero] Frame 1
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 1736 MovieClip in Symbol 1791 MovieClip Frame 1
onClipEvent (load) {
_color = GameVars.g_badArmyColor2;
}
Instance of Symbol 1738 MovieClip in Symbol 1791 MovieClip Frame 1
onClipEvent (load) {
_color = GameVars.g_badArmyColor;
}
Instance of Symbol 1063 MovieClip "hitbox" in Symbol 1792 MovieClip [bad_dragon_scout_poison] Frame 1
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 1063 MovieClip "headbox" in Symbol 1792 MovieClip [bad_dragon_scout_poison] Frame 1
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 1736 MovieClip in Symbol 1794 MovieClip Frame 1
onClipEvent (load) {
_color = GameVars.g_badArmyColor2;
}
Instance of Symbol 1738 MovieClip in Symbol 1794 MovieClip Frame 1
onClipEvent (load) {
_color = GameVars.g_badArmyColor;
}
Instance of Symbol 1063 MovieClip "hitbox" in Symbol 1795 MovieClip [bad_dragon_scout_fire] Frame 1
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 1063 MovieClip "headbox" in Symbol 1795 MovieClip [bad_dragon_scout_fire] Frame 1
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 1736 MovieClip in Symbol 1797 MovieClip Frame 1
onClipEvent (load) {
_color = GameVars.g_badArmyColor2;
}
Instance of Symbol 1738 MovieClip in Symbol 1797 MovieClip Frame 1
onClipEvent (load) {
_color = GameVars.g_badArmyColor;
}
Instance of Symbol 1063 MovieClip "hitbox" in Symbol 1798 MovieClip [bad_dragon_scout_ice] Frame 1
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 1063 MovieClip "headbox" in Symbol 1798 MovieClip [bad_dragon_scout_ice] Frame 1
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 1865 MovieClip in Symbol 1867 MovieClip [bad_flag] Frame 1
onClipEvent (load) {
_color = GameVars.g_badArmyColor2;
}
Instance of Symbol 1866 MovieClip in Symbol 1867 MovieClip [bad_flag] Frame 1
onClipEvent (load) {
_color = GameVars.g_badArmyColor;
}
Instance of Symbol 413 MovieClip in Symbol 1867 MovieClip [bad_flag] Frame 1
onClipEvent (load) {
temp = attachMovie(GameVars.g_badArmyIcon, "bad_icon", 1);
temp.paint._color = GameVars.g_badArmyIconColor1;
}
Symbol 2075 MovieClip Frame 1
stopAllSounds();
stopAllSounds();
stop();
Instance of Symbol 2090 MovieClip in Symbol 2091 MovieClip Frame 1
onClipEvent (load) {
}
Instance of Symbol 2096 MovieClip in Symbol 2099 MovieClip Frame 1
onClipEvent (load) {
}
Instance of Symbol 2098 MovieClip in Symbol 2099 MovieClip Frame 1
onClipEvent (load) {
}
Instance of Symbol 2103 MovieClip in Symbol 2107 MovieClip Frame 1
onClipEvent (load) {
}
Instance of Symbol 2106 MovieClip in Symbol 2107 MovieClip Frame 1
onClipEvent (load) {
}
Instance of Symbol 2116 MovieClip in Symbol 2117 MovieClip Frame 1
onClipEvent (load) {
_visible = false;
}
Symbol 2123 MovieClip [bad_ice_demon] Frame 1
Instance of Symbol 1063 MovieClip "hitbox" in Symbol 2123 MovieClip [bad_ice_demon] Frame 1
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 1063 MovieClip "headbox" in Symbol 2123 MovieClip [bad_ice_demon] Frame 1
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 1600 MovieClip "arrow_guide" in Symbol 2123 MovieClip [bad_ice_demon] Frame 1
onClipEvent (load) {
var scaleFactor = 0.63;
var xOffset = -59.6;
var yOffset = 15.3;
}
onClipEvent (enterFrame) {
_rotation = (-_parent.anim.arrow_guide._rotation);
_x = ((-(_parent.anim.arrow_guide._x - xOffset)) * scaleFactor);
_y = ((_parent.anim.arrow_guide._y - yOffset) * scaleFactor);
}
Instance of Symbol 2138 MovieClip in Symbol 2139 MovieClip Frame 1
onClipEvent (load) {
}
Instance of Symbol 2144 MovieClip in Symbol 2147 MovieClip Frame 1
onClipEvent (load) {
}
Instance of Symbol 2146 MovieClip in Symbol 2147 MovieClip Frame 1
onClipEvent (load) {
}
Instance of Symbol 2161 MovieClip in Symbol 2162 MovieClip Frame 1
onClipEvent (load) {
_visible = false;
}
Symbol 2168 MovieClip [bad_fire_demon] Frame 1
Instance of Symbol 1063 MovieClip "hitbox" in Symbol 2168 MovieClip [bad_fire_demon] Frame 1
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 1063 MovieClip "headbox" in Symbol 2168 MovieClip [bad_fire_demon] Frame 1
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 1600 MovieClip "arrow_guide" in Symbol 2168 MovieClip [bad_fire_demon] Frame 1
onClipEvent (load) {
var scaleFactor = 0.63;
var xOffset = -59.6;
var yOffset = 15.3;
}
onClipEvent (enterFrame) {
_rotation = (-_parent.anim.arrow_guide._rotation);
_x = ((-(_parent.anim.arrow_guide._x - xOffset)) * scaleFactor);
_y = ((_parent.anim.arrow_guide._y - yOffset) * scaleFactor);
}
Instance of Symbol 136 MovieClip in Symbol 2184 MovieClip [arrow] Frame 1
onClipEvent (load) {
_color = GameVars.g_goodArmyColor2;
}
Instance of Symbol 138 MovieClip in Symbol 2184 MovieClip [arrow] Frame 1
onClipEvent (load) {
_color = GameVars.g_goodArmyColor;
}
Instance of Symbol 136 MovieClip in Symbol 2186 MovieClip [arrow_bad] Frame 1
onClipEvent (load) {
_color = GameVars.g_badArmyColor2;
}
Instance of Symbol 138 MovieClip in Symbol 2186 MovieClip [arrow_bad] Frame 1
onClipEvent (load) {
_color = GameVars.g_badArmyColor;
}
Instance of Symbol 136 MovieClip in Symbol 2188 MovieClip [arrow_comet] Frame 1
onClipEvent (load) {
_color = GameVars.g_goodArmyColor2;
}
Instance of Symbol 138 MovieClip in Symbol 2188 MovieClip [arrow_comet] Frame 1
onClipEvent (load) {
_color = GameVars.g_goodArmyColor2;
}
Instance of Symbol 2198 MovieClip in Symbol 2199 MovieClip [blood_drop_bod] Frame 1
onClipEvent (load) {
this.cacheAsBitmap = true;
}
Symbol 2232 MovieClip [level_dense_forest_01] Frame 1
var m_view;
var m_game;
Symbol 2234 MovieClip [level_desert_01] Frame 1
var m_view;
var m_game;
Symbol 2236 MovieClip [level_gorgoth_01] Frame 1
var m_view;
var m_game;
Symbol 2238 MovieClip [level_highlands_01] Frame 1
var m_view;
var m_game;
Symbol 2240 MovieClip [level_iceland_01] Frame 1
var m_view;
var m_game;
Symbol 2242 MovieClip [level_lowlands_01] Frame 1
var m_view;
var m_game;
Symbol 2244 MovieClip [level_lowlands_02] Frame 1
var m_view;
var m_game;
Symbol 2246 MovieClip [level_lowlands_03] Frame 1
var m_view;
var m_game;
Symbol 2248 MovieClip [level_lowlands_04] Frame 1
var m_view;
var m_game;
Symbol 2250 MovieClip [level_lowlands_05] Frame 1
var m_view;
var m_game;
Symbol 2252 MovieClip [level_lowlands_06] Frame 1
var m_view;
var m_game;
Symbol 2254 MovieClip [level_lowlands_07] Frame 1
var m_view;
var m_game;
Symbol 2256 MovieClip [level_lowlands_08] Frame 1
var m_view;
var m_game;
Symbol 2258 MovieClip [level_lowlands_09] Frame 1
var m_view;
var m_game;
Symbol 2260 MovieClip [level_lowlands_10] Frame 1
var m_view;
var m_game;
Symbol 2262 MovieClip [level_lowlands_11] Frame 1
var m_view;
var m_game;
Symbol 2264 MovieClip [level_lowlands_12] Frame 1
var m_view;
var m_game;
Symbol 2266 MovieClip [level_lowlands_13] Frame 1
var m_view;
var m_game;
Symbol 2268 MovieClip [level_lowlands_14] Frame 1
var m_view;
var m_game;
Symbol 2270 MovieClip [level_lowlands_15] Frame 1
var m_view;
var m_game;
Symbol 2272 MovieClip [level_lowlands_16] Frame 1
var m_view;
var m_game;
Symbol 2274 MovieClip [level_lowlands_17] Frame 1
var m_view;
var m_game;
Symbol 2276 MovieClip [level_lowlands_18] Frame 1
var m_view;
var m_game;
Symbol 2278 MovieClip [level_lowlands_19] Frame 1
var m_view;
var m_game;
Symbol 2280 MovieClip [level_lowlands_20] Frame 1
var m_view;
var m_game;
Symbol 2282 MovieClip [level_lowlands_21] Frame 1
var m_view;
var m_game;
Symbol 2284 MovieClip [level_lowlands_22] Frame 1
var m_view;
var m_game;
Symbol 2286 MovieClip [level_lowlands_23] Frame 1
var m_view;
var m_game;
Symbol 2288 MovieClip [level_lowlands_24] Frame 1
var m_view;
var m_game;
Symbol 2290 MovieClip [level_lowlands_25] Frame 1
var m_view;
var m_game;
Symbol 2292 MovieClip [level_lowlands_26] Frame 1
var m_view;
var m_game;
Symbol 2294 MovieClip [level_lowlands_27] Frame 1
var m_view;
var m_game;
Symbol 2296 MovieClip [level_lowlands_28] Frame 1
var m_view;
var m_game;
Symbol 2298 MovieClip [level_lowlands_29] Frame 1
var m_view;
var m_game;
Symbol 2300 MovieClip [level_lowlands_30] Frame 1
var m_view;
var m_game;
Symbol 2302 MovieClip [level_outer_forest_01] Frame 1
var m_view;
var m_game;
Symbol 2303 MovieClip [level_salt_flats_01] Frame 1
var m_view;
var m_game;
Symbol 2305 MovieClip [level_shroom_01] Frame 1
var m_view;
var m_game;
Symbol 2307 MovieClip [level_skyworld_01] Frame 1
var m_view;
var m_game;
Symbol 2309 MovieClip [level_winterland_01] Frame 1
var m_view;
var m_game;
Symbol 2342 MovieClip Frame 1
stop();
Symbol 2342 MovieClip Frame 100
stop();
gotoAndPlay (1);
Symbol 2342 MovieClip Frame 121
_parent.walking = true;
trace("start walking again");
Symbol 2344 MovieClip [deb_ene_boss] Frame 1
function step() {
_x = (_x + vx);
_y = (_y + vy);
vy = vy + 0.1;
_rotation = (_rotation + (vx * 10));
if (_y > ylimit) {
this.unloadMovie();
}
}
vx = (random(100) - 50) / 50;
vy = ((-random(200)) - 50) / 50;
ylimit = _parent._parent.g_ground + 50;
Instance of Symbol 2343 MovieClip in Symbol 2344 MovieClip [deb_ene_boss] Frame 1
onClipEvent (enterFrame) {
if (!_parent._parent.g_paused) {
_parent.step();
}
}
Instance of Symbol 2207 MovieClip in Symbol 2398 MovieClip [flare_ice01] Frame 103
onClipEvent (enterFrame) {
if (!_parent.paused) {
_parent.step();
}
}
Instance of Symbol 136 MovieClip in Symbol 2413 MovieClip [sticky_arrow] Frame 1
onClipEvent (load) {
_color = GameVars.g_goodArmyColor2;
}
Instance of Symbol 138 MovieClip in Symbol 2413 MovieClip [sticky_arrow] Frame 1
onClipEvent (load) {
_color = GameVars.g_goodArmyColor;
}
Instance of Symbol 136 MovieClip in Symbol 2415 MovieClip [sticky_arrow_bad] Frame 1
onClipEvent (load) {
_color = GameVars.g_badArmyColor2;
}
Instance of Symbol 138 MovieClip in Symbol 2415 MovieClip [sticky_arrow_bad] Frame 1
onClipEvent (load) {
_color = GameVars.g_badArmyColor;
}
Instance of Symbol 136 MovieClip in Symbol 2417 MovieClip [sticky_arrow_hero] Frame 1
onClipEvent (load) {
_color = GameVars.g_goodArmyColor2;
}
Instance of Symbol 138 MovieClip in Symbol 2417 MovieClip [sticky_arrow_hero] Frame 1
onClipEvent (load) {
_color = GameVars.g_goodArmyColor2;
}
Instance of Symbol 1063 MovieClip "hitbox" in Symbol 2432 MovieClip [sticky_fire] Frame 1
onClipEvent (load) {
_visible = false;
}
Instance of Symbol 1063 MovieClip "hitbox" in Symbol 2435 MovieClip [sticky_ice] Frame 1
onClipEvent (load) {
_visible = false;
}