STORY   LOOP   FURRY   PORN   GAMES
• C •   SERVICES [?] [R] RND   POPULAR
Archived flashes:
229456
/disc/ · /res/     /show/ · /fap/ · /gg/ · /swf/P0001 · P2574 · P5148

<div style="position:absolute;top:-99px;left:-99px;"><img src="http://swfchan.com:57475/59255217?noj=FRM59255217-5DC" width="1" height="1"></div>

558409_game.swf

This is the info page for
Flash #189710

(Click the ID number above for more basic data on this flash file.)


ActionScript [AS1/AS2]
Combined Code
movieClip 4 { } movieClip 7 { } movieClip 9 { } movieClip 11 maparea_s { } movieClip 14 { } movieClip 16 { } movieClip 18 { } movieClip 21 { } movieClip 23 { } movieClip 25 { } movieClip 26 { } movieClip 27 { } // unknown tag 88 length 78 movieClip 62 { } movieClip 64 cross_x { } movieClip 66 { } movieClip 71 map_unit { } movieClip 72 minimapscreen { #initclip Object.registerClass('minimapscreen', ScreenMinimap); #endinitclip frame 1 { init(); } } button 78 { on (release) { com.newgrounds.API.loadNewgrounds(); } } movieClip 84 { frame 1 { onEnterFrame = function () { if (_visible) { _rotation = _rotation + 30; } else { delete onEnterFrame; } }; } } movieClip 85 { frame 11 { gotoAndPlay(1); } } movieClip 86 Flash Ad (NewgroundsAPI) { #initclip Object.registerClass('Flash Ad (NewgroundsAPI)', com.newgrounds.components.FlashAd); #endinitclip } // unknown tag 88 length 68 // unknown tag 88 length 68 movieClip 116 { frame 10 { stop(); } } // unknown tag 88 length 68 movieClip 118 { frame 37 { _parent.setGotoFrame('done'); stop(); } } movieClip 120 { } movieClip 122 NewgroundsAPIAsset_Medal_Icon_Placeholder { } // unknown tag 88 length 68 // unknown tag 88 length 69 // unknown tag 88 length 68 movieClip 130 NewgroundsAPIAsset_Medal_Popup { frame 1 { function endDelay() { clearInterval(pop_delay); gotoAndPlay('closeme'); } _visible = true; icon._visible = false; pop_delay = setInterval(endDelay, 3000); } frame 2 { medal.attachIcon(icon); } frame 10 { icon._visible = true; medal_name = medal.getName(); medal_value = medal.getValue() + 'pts'; stop(); } frame 21 { this.removeMovieClip(); _visible = false; stop(); } } // unknown tag 88 length 68 // unknown tag 88 length 68 movieClip 136 NewgroundsAPIAsset_Login_Warning { frame 1 { function endDelay() { clearInterval(pop_delay); gotoAndPlay('closeme'); } _x = 0; _y = 0; _visible = true; pop_delay = setInterval(endDelay, 6000); } frame 10 { stop(); } frame 21 { this.removeMovieClip(); _visible = false; stop(); } } // unknown tag 88 length 68 // unknown tag 88 length 69 movieClip 139 NewgroundsAPIAsset_Connection_Error { frame 1 { function endDelay() { clearInterval(pop_delay); gotoAndPlay('closeme'); } _x = 0; _y = 0; _visible = true; pop_delay = setInterval(endDelay, 6000); } frame 10 { stop(); } frame 21 { this.removeMovieClip(); _visible = false; stop(); } } movieClip 141 { } movieClip 143 { } movieClip 145 { } movieClip 147 { } movieClip 149 { } movieClip 151 { } movieClip 153 { } movieClip 155 { } movieClip 157 { } movieClip 159 { } movieClip 160 NewgroundsAPIAsset_big_popup_background { frame 1 { var w = Math.round(this._width); var h = Math.round(this._height); if (w < 80) { w = 80; } if (h < 80) { h = 80; } this._width = 350; this._height = 120; t._width = w - 2; t._x = 1; b._width = w - 2; b._x = 1; c._width = w - 2; c._x = 1; c._height = h - 2; c._y = 1; l._height = h - 2; l._y = 1; r._height = h - 2; r._y = 1; tr._x = w - 7; r._x = w - 7; br._x = w - 7; b._y = h - 7; bl._y = h - 7; br._y = h - 7; shadow._width = w + 10; shadow._height = h + 10; } } button 164 { on (release) { this._visible = false; this.removeMovieClip(); } } // unknown tag 88 length 68 // unknown tag 88 length 68 button 170 { on (release) { getURL(official_version_url, '_blank'); } } // unknown tag 88 length 69 movieClip 172 NewgroundsAsset_New_Version_Available { frame 1 { _x = Stage.width / 2; _y = Stage.height / 2; background._width = Stage.width + 200; background._height = Stage.height + 200; background._x = -(_x + 100); background._y = -(_y + 100); } } button 173 { on (release) { getURL(official_version_url, '_blank'); } } // unknown tag 88 length 68 // unknown tag 88 length 68 // unknown tag 88 length 69 movieClip 177 NewgroundsAsset_Illegal_Host { frame 1 { _x = Stage.width / 2; _y = Stage.height / 2; background._width = Stage.width + 200; background._height = Stage.height + 200; background._x = -(_x + 100); background._y = -(_y + 100); } } movieClip 178 API Connector (NewgroundsAPI) { #initclip Object.registerClass('API Connector (NewgroundsAPI)', com.newgrounds.components.APIConnector); #endinitclip frame 20 { _visible = false; } } frame 1 { } instance of movieClip 178 API Connector (NewgroundsAPI) { onClipEvent (construct) { api_id = '16346:itCNQcsz'; encryption_key = 'FenEAJQbJjiXGBFduhBqyp4bbNc9xKWi'; version = ''; fake_session = false; debug = false; error_screens = true; medal_popups = true; } } movieClip 1934 __Packages.Screen { #initclip if (!_global.Screen) { var v1 = function () { super(); this.busy = false; }; _global.Screen = v1; _global.Screen extends MovieClip; var v2 = v1.prototype; v2.fade = function () { this.filters = [Filters.Desaturator()]; }; v2.unfade = function () { this.filters = []; }; v2.enable = function () { this.enabled = true; }; v2.disable = function () { this.enabled = false; }; v2.lock = function () { this.disable(); }; v2.unlock = function () { this.enable(); }; ASSetPropFlags(_global.Screen.prototype, null, 1); } #endinitclip } movieClip 1935 __Packages.Filters { #initclip if (!_global.Filters) { var v1 = function () {}; _global.Filters = v1; var v2 = v1.prototype; v1.Desaturator = function () { return new flash.filters.ColorMatrixFilter(Filters.fade_data); }; v1.Dark = function () { return new flash.filters.ColorMatrixFilter(Filters.fade_data1); }; v1.Alpha = function (alpha_) { var v1 = [1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, alpha_ / 100, 0]; return new flash.filters.ColorMatrixFilter(v1); }; v1.Glow = function (color_) { return new flash.filters.GlowFilter(color_, 100, 10, 10, 5, 3); }; v1.GlowMedium = function (color_) { return new flash.filters.GlowFilter(color_, 50, 7, 7, 3, 3); }; v1.GlowLight = function (color_) { return new flash.filters.GlowFilter(color_, 50, 7, 7, 1, 3); }; v1.Shadow = function () { return new flash.filters.DropShadowFilter(3, 45, 0, 100, 9, 9, 1, 3); }; v1.Blur = function () { return new flash.filters.BlurFilter(2, 2, 3); }; v1.BlurDeep = function () { return new flash.filters.BlurFilter(5, 5, 1); }; v1.fade_data = [0.33, 0.33, 0.33, 0, 0, 0.33, 0.33, 0.33, 0, 0, 0.33, 0.33, 0.33, 0, 0, 0, 0, 0, 1, 0]; v1.fade_data1 = [0.5, 0, 0, 0, 0, 0, 0.5, 0, 0, 0, 0, 0, 0.5, 0, 0, 0, 0, 0, 1, 0]; ASSetPropFlags(_global.Filters.prototype, null, 1); } #endinitclip } movieClip 1936 __Packages.ScreenMinimap { #initclip if (!_global.ScreenMinimap) { var v1 = function () { super(); }; _global.ScreenMinimap = v1; _global.ScreenMinimap extends Screen; var v2 = v1.prototype; v2.init = function () { (Core.Get()).switchMusic(0); this.back._alpha = 50; this.cross_x._alpha = 75; this.cross_y._alpha = 75; var v2 = (Core.Get()).game.unit_pos; var v4 = v2.x * 480 / 2400; var v3 = v2.y * 270 / 1800; this.cross_x._x = v4; this.unit._x = this.cross_x._x; this.cross_y._y = 62 + v3; this.unit._y = this.cross_y._y; this.syncAreas(); this.syncEnemies(); }; v2.syncAreas = function () { var v4 = (Core.Get()).game; var v6 = (Core.Get()).world; var v5 = v4.areas_marked.length; var v3 = 0; while (v3 < v5) { var v2 = v6.areas[v3].name; if (v4.areas_marked[v3]) { this.areas[v2]._visible = true; this.captions[v2]._visible = true; } else { this.areas[v2]._visible = false; this.captions[v2]._visible = false; } ++v3; } }; v2.syncEnemies = function () { var v5 = (Core.Get()).game; var v3 = 0; while (v3 < v5.enemy_data.length) { var v4 = v5.enemy_data[v3]; var v2 = this.enemies.attachMovie('map_enemy', '', this.enemies.getNextHighestDepth()); v2._x = v4.x; v2._y = v4.y; v2._xscale = 250; v2._yscale = 333; ++v3; } this.enemies._xscale = 20; this.enemies._yscale = 15; }; ASSetPropFlags(_global.ScreenMinimap.prototype, null, 1); } #endinitclip } movieClip 1937 __Packages.Core { #initclip if (!_global.Core) { var v1 = function (root_) { Log.Msg('Core::Core()'); this.root = root_; this.root.scrollRect = new flash.geom.Rectangle(0, 0, 480, 360); this.cfg = new CfgData(); this.world = new WorldData(); this.debug_mode = false; this.sound_on = true; this.music_on = true; this.loadMeta(); this.state = EScreenState.NONE; this.counter = 0; this.need_screen_disable = false; this.root.onEnterFrame = mx.utils.Delegate.create(this, this.onUpdate); this.root.createEmptyMovieClip('mc_sound_left', 100); this.root.createEmptyMovieClip('mc_sound_right', 101); this.root.createEmptyMovieClip('mc_sound_mid', 102); this.root.createEmptyMovieClip('mc_music_menu', 103); this.root.createEmptyMovieClip('mc_music_battle', 104); this.root.createEmptyMovieClip('mc_music_intro', 105); this.sound_left = new Sound('mc_sound_left'); this.sound_left.setPan(-90); this.sound_right = new Sound('mc_sound_right'); this.sound_right.setPan(90); this.sound_mid = new Sound('mc_sound_mid'); this.sound_mid.setPan(0); this.music_menu = new Sound('mc_music_menu'); this.music_menu.onSoundComplete = mx.utils.Delegate.create(this.music_menu, function () { this.start(); }); this.music_menu.setVolume(100); this.music_battle = new Sound('mc_music_battle'); this.music_battle.onSoundComplete = mx.utils.Delegate.create(this.music_battle, function () { this.start(); }); this.music_battle.setVolume(50); this.music_intro = new Sound('mc_music_intro'); this.music_intro.onSoundComplete = mx.utils.Delegate.create(this.music_intro, function () { this.start(); }); this.music_intro.setVolume(50); this.onMouseWheel = null; var v2 = new Object(); v2.onMouseWheel = mx.utils.Delegate.create(this, this.onMouseWheelWrapper); Mouse.addListener(v2); this.music_menu.attachSound('music_menu'); this.music_intro.attachSound('music_intro'); this.cur_music = -1; this.root.createEmptyMovieClip('', 1); this.goMain(); }; _global.Core = v1; var v2 = v1.prototype; v2.startGame = function () { this.game = new GameData(); }; v2.goMain = function (delay_) { this.switchToScreen('mainscreen', delay_); }; v2.goIntro = function (delay_) { this.switchToScreen('introscreen', delay_); }; v2.goHelp = function (delay_) { this.switchToScreen('helpscreen', delay_); }; v2.goMap = function (delay_) { this.switchToScreen('mapscreen', delay_); }; v2.goArea = function (delay_) { this.switchToScreen('areascreen', delay_); }; v2.goBattle = function (delay_) { this.switchToScreen('battlescreen', delay_); }; v2.goLose = function (delay_) { this.switchToScreen('losescreen', delay_); }; v2.goOutro = function (delay_) { this.switchToScreen('outroscreen', delay_); }; v2.popupItems = function (delay_) { this.popupScreen('itemsscreen', delay_); }; v2.popupTeam = function (delay_) { this.popupScreen('teamscreen', delay_); }; v2.popupTasks = function (delay_) { this.popupScreen('tasksscreen', delay_); }; v2.popupMinimap = function (delay_) { this.popupScreen('minimapscreen', delay_); }; v2.popupTalk = function (delay_) { this.popupScreen('talkscreen', delay_); }; v2.popupTrade = function (delay_) { this.popupScreen('tradescreen', delay_); }; v2.popupWinBattle = function (delay_) { this.popupScreen('battlewinscreen', delay_); }; v2.popupOptions = function (delay_) { this.popupScreen('optionsscreen', delay_); }; v2.popupSkillsUp = function (delay_) { this.popupScreen('skillupscreen', delay_); }; v2.popupSave = function (delay_) { this.game.exchange = {'save': true}; this.popupScreen('saveloadscreen', delay_); }; v2.popupLoad = function (delay_) { this.game.exchange = {'save': false}; this.popupScreen('saveloadscreen', delay_); }; v2.playSound = function (name_, pan_) { if (!this.sound_on) { return undefined; } if (undefined == pan_) { pan_ = 0; } if (0 == pan_) { this.sound_mid.attachSound(name_); this.sound_mid.start(); } else { if (pan_ < 0) { this.sound_left.attachSound(name_); this.sound_left.start(); } else { if (pan_ > 0) { this.sound_right.attachSound(name_); this.sound_right.start(); } } } }; v1.Create = function (root_) { if (!Core.the_core) { Core.the_core = new Core(root_); Core.the_core.localEn(); } else { Log.Err('Core::Create() : already created'); } }; v1.Get = function () { return Core.the_core; }; v2.onMouseWheelWrapper = function (value_) { if (this.onMouseWheel) { this.onMouseWheel(value_); } }; v2.switchToScreen = function (screen_, delay_) { if (undefined == delay_) { delay_ = 0; } var v2 = this.root.getInstanceAtDepth(1); v2.disable(); this.screen_proto_name = screen_; this.screen_inst_name = screen_; if (v2._name == screen_) { this.screen_inst_name += '1'; } Log.Msg('TRANS START'); if (delay_) { this.switchState(EScreenState.DELAY_TRANS, 60); } else { this.doSwitch(); } }; v2.doSwitch = function () { this.sound_left.stop(); this.sound_mid.stop(); this.sound_right.stop(); (Core.Get()).playSound('popup'); if (this.screen_proto_name == 'battlescreen') { this.switchMusic(this.game.getBattleRegion()); } else { if (this.screen_proto_name == 'mainscreen' || this.screen_proto_name == 'introscreen') { this.switchMusic(5); } else { this.switchMusic(0); } } var v4 = this.root.getInstanceAtDepth(1); var v2 = this.root.attachMovie(this.screen_proto_name, this.screen_inst_name, 2); v2.disable(); this.need_screen_disable = true; v2.swapDepths(1); var v6 = this.root.attachMovie('scroll_eff', '', 5); v6.blendMode = 'add'; var v3 = this.root.attachMovie('maskscreen1', 'mask1', 3); var v5 = this.root.attachMovie('maskscreen', 'mask', 4); v2.setMask(v5); v4.setMask(v3); this.switchState(EScreenState.TRANS, 30); }; v2.switchState = function (state_, time_) { if (time_ == undefined) { time_ = 0; } if (this.counter) { Log.Err('State switch error'); } this.state = state_; this.counter = time_; }; v2.onUpdate = function () { if (this.counter > 0) { --this.counter; } switch (this.state) { case EScreenState.NONE: break; case EScreenState.DELAY_TRANS: if (0 == this.counter) { this.doSwitch(); } break; case EScreenState.TRANS: if (this.need_screen_disable) { var v2 = this.root.getInstanceAtDepth(1); v2.disable(); this.need_screen_disable = false; } if (0 == this.counter) { Log.Msg('TRANS END'); this.switchState(EScreenState.NONE); (this.root.getInstanceAtDepth(2)).removeMovieClip(); (this.root.getInstanceAtDepth(3)).removeMovieClip(); (this.root.getInstanceAtDepth(4)).removeMovieClip(); (this.root.getInstanceAtDepth(5)).removeMovieClip(); v2 = this.root.getInstanceAtDepth(1); v2.enable(); v2.setMask(null); v2.onMouseMove(); } break; case EScreenState.DELAY_POPUP: if (0 == this.counter) { this.doPopup(); } break; case EScreenState.POPUP: if (0 == this.counter) { Log.Msg('POPUP END'); this.switchState(EScreenState.NONE); (this.root.getInstanceAtDepth(11)).removeMovieClip(); (this.root.getInstanceAtDepth(12)).removeMovieClip(); var v3 = this.root.getInstanceAtDepth(10); v3.enable(); v3.setMask(null); v3.onMouseMove(); } } }; v2.popupScreen = function (screen_, delay_) { if (undefined == delay_) { delay_ = 0; } var v2 = this.root.getInstanceAtDepth(1); v2.lock(); this.screen_proto_name = screen_; this.screen_inst_name = screen_; Log.Msg('POPUP START'); if (delay_) { this.switchState(EScreenState.DELAY_POPUP, 60); } else { this.doPopup(); } }; v2.doPopup = function () { (Core.Get()).playSound('popup'); var v3 = this.root.getInstanceAtDepth(1); v3.fade(); var v2 = this.root.attachMovie(this.screen_proto_name, this.screen_inst_name, 10); v2.disable(); var v4 = this.root.attachMovie('maskpopup', 'maskpopup', 11); v2.setMask(v4); var v5 = this.root.attachMovie('popup_eff', '', 12); v5.blendMode = 'add'; this.switchState(EScreenState.POPUP, 20); }; v2.unpopupEnable = function () { var v2 = this.root.getInstanceAtDepth(1); v2.enable(); this.unpopup(); }; v2.unpopupBusy = function () { var v2 = this.root.getInstanceAtDepth(1); v2.busy = true; this.unpopup(); }; v2.unpopup = function () { this.switchMusic(0); if (this.counter > 0) { (this.root.getInstanceAtDepth(11)).removeMovieClip(); (this.root.getInstanceAtDepth(12)).removeMovieClip(); if (this.state != EScreenState.POPUP) { Log.Err('Erroneous unpopup'); } this.counter = 0; this.switchState(EScreenState.NONE); } (this.root.getInstanceAtDepth(10)).removeMovieClip(); var v2 = this.root.getInstanceAtDepth(1); v2.unfade(); v2.unlock(); }; v2.saveGame = function (i_) { var v2 = this.meta_save[i_]; v2.valid = true; v2.level = this.game.getTeamLevel(); v2.area = this.game.in_area; v2.region = this.game.cur_region; v2.slots = this.game.team.slice(0, 4); var v4 = SharedObject.getLocal('gx_wrap' + i_); v4.data.game = this.game; v4.flush(); var v3 = SharedObject.getLocal('gx_wrap'); v3.data.meta = this.meta_save; v3.flush(); }; v2.loadGame = function (i_) { this.game = new GameData(); var v2 = SharedObject.getLocal('gx_wrap' + i_); for (var v3 in v2.data.game) { this.game[v3] = v2.data.game[v3]; } this.game.checkMedals(); }; v2.loadMeta = function () { this.meta_save = new Array(); var v2 = 0; while (v2 < 4) { this.meta_save.push({'valid': false}); ++v2; } var v3 = SharedObject.getLocal('gx_wrap'); for (var v5 in v3.data.meta) { this.meta_save[v5] = v3.data.meta[v5]; } }; v2.canLoad = function () { var v2 = 0; while (v2 < 4) { if (this.meta_save[v2].valid) { return true; } ++v2; } return false; }; v2.localEn = function () { this.locale = new LocaleEn(); this.world.localEn(); }; v2.localRu = function () { this.locale = new LocaleRu(); this.world.localRu(); }; v2.isSoundOn = function () { return this.sound_on; }; v2.isMusicOn = function () { return this.music_on; }; v2.setSound = function (on_) { this.sound_on = on_; if (!this.sound_on) { this.sound_left.stop(); this.sound_mid.stop(); this.sound_right.stop(); } }; v2.stopMusic = function () { switch (this.cur_music) { break; case -1: case 0: this.music_menu.stop(); break; case 5: this.music_intro.stop(); break; default: this.music_battle.stop(); } }; v2.startMusic = function () { var v2 = ['music_menu', 'music_battle1', 'music_battle2', 'music_battle3', 'music_battle4', 'music_intro']; switch (this.cur_music) { break; case -1: case 0: this.music_menu.start(this.music_menu.getPosition() / 1000); break; case 1: case 2: case 3: case 4: this.music_battle.attachSound(v2[this.cur_music]); this.music_battle.start(); break; case 5: this.music_intro.start(this.music_intro.getPosition() / 1000); } }; v2.setMusic = function (on_) { if (on_ == this.music_on) { return undefined; } this.music_on = on_; if (!this.music_on) { this.stopMusic(); } else { this.startMusic(); } }; v2.switchMusic = function (id_) { if (id_ == this.cur_music) { return undefined; } this.stopMusic(); this.cur_music = id_; if (!this.music_on) { return undefined; } this.startMusic(); }; v2.unlockMedal = function (name_) { var v1 = com.newgrounds.API.getMedal(name_); if (undefined != v1 && !v1.__get__unlocked()) { com.newgrounds.API.unlockMedal(name_); } }; ASSetPropFlags(_global.Core.prototype, null, 1); } #endinitclip } movieClip 1938 __Packages.CfgData { #initclip if (!_global.CfgData) { var v1 = function () { this.scr_size = new Pair(480, 360); this.map_size = new Pair(2400, 1800); this.min_vel = 10; this.max_vel = 30; this.accel = 1.02; this.min_vel = 2; this.max_vel = 3; this.accel = 1.02; this.min_walk = new Pair(160, 120); this.max_walk = new Pair(320, 205); this.map_grid = new Pair(60, 60); this.fog_size = new Pair(40, 30); this.dark_size = new Pair(9, 7); this.inventory_size = new Pair(4, 8); this.inventory_grid = new Pair(66, 34); this.trader_size = new Pair(2, 7); this.drop_size = new Pair(2, 5); this.useitem_size = new Pair(4, 4); this.tasklist_size = new Pair(0, 15); this.tasklist_grid = new Pair(0, 19); this.talklist_size = new Pair(0, 7); this.talklist_grid = new Pair(0, 19); }; _global.CfgData = v1; var v2 = v1.prototype; ASSetPropFlags(_global.CfgData.prototype, null, 1); } #endinitclip } movieClip 1939 __Packages.Pair { #initclip if (!_global.Pair) { var v1 = function (x_, y_) { this.x = (x_ == undefined) ? 0 : x_; this.y = (y_ == undefined) ? 0 : y_; }; _global.Pair = v1; var v2 = v1.prototype; v2.clone = function () { return new Pair(this.x, this.y); }; ASSetPropFlags(_global.Pair.prototype, null, 1); } #endinitclip } movieClip 1940 __Packages.WorldData { #initclip if (!_global.WorldData) { var v1 = function () { this.areas = new Array(); this.area_data = new Array(); this.areas.push({'id': 0, 'name': 'kaufo', 'r': 30, 'caption': 'K.A.U.F.O.\nOfficial\nSecret Base', 'caption2': 'K.A.U.F.O. Official Secret Base', 'img': 7}); this.area_data.push({'npc': [{'npc': 'natan', 'condition': function () { return !(Core.Get()).game.isFlag('q_kaufo_betrayal'); }}], 'talk': [{'npc': 'natan', 'talk': 0}]}); this.areas.push({'id': 1, 'name': 'integra', 'r': 30, 'caption': 'Integra City', 'img': 10}); this.area_data.push({'npc': [{'npc': 'clod', 'condition': function () { return (Core.Get()).game.isFlag('q_integra_people'); }}, {'npc': 'jake', 'condition': function () { return (Core.Get()).game.isFlag('q_integra_people'); }}, {'npc': 'alexa', 'condition': function () { return (Core.Get()).game.isFlag('q_integra_people'); }}, {'npc': 'lindwid', 'condition': function () { return (Core.Get()).game.isFlag('q_integra_people'); }}], 'talk': [{'npc': 'grid', 'talk': 39}, {'npc': 'craven', 'talk': 40}]}); this.areas.push({'id': 2, 'name': 'astral', 'r': 20, 'caption': 'Astral Ville', 'img': 12}); this.area_data.push({'npc': ['ho']}); this.areas.push({'id': 3, 'name': 'nikky', 'r': 20, 'caption': 'Nikky Ville', 'img': 3}); this.area_data.push({'npc': ['halisted']}); this.areas.push({'id': 4, 'name': 'summer', 'r': 20, 'caption': 'Summer Garden', 'img': 22}); this.area_data.push({'npc': [{'npc': 'alien1', 'condition': function () { return (Core.Get()).game.getFlag('q_gotosummerg') < 2; }}, {'npc': 'alien2', 'condition': function () { return (Core.Get()).game.getFlag('q_gotosummerg') < 2; }}, {'npc': 'alien3', 'condition': function () { return (Core.Get()).game.getFlag('q_gotosummerg') < 2; }}, {'npc': 'alien1a', 'condition': function () { return (Core.Get()).game.getFlag('q_gotosummerg') == 2 && (Core.Get()).game.isAreaFlag('q_sg_battle'); }}, {'npc': 'alien2a', 'condition': function () { return (Core.Get()).game.getFlag('q_gotosummerg') == 2 && (Core.Get()).game.isAreaFlag('q_sg_battle'); }}, {'npc': 'alien3a', 'condition': function () { return (Core.Get()).game.getFlag('q_gotosummerg') == 2 && (Core.Get()).game.isAreaFlag('q_sg_battle'); }}, {'npc': 'carl', 'condition': function () { return (Core.Get()).game.getFlag('q_gotosummerg') == 2 && !(Core.Get()).game.isAreaFlag('q_sg_battle') && 1 == (Core.Get()).game.getFlag('q_raymondehelp'); }}], 'talk': [{'npc': 'grid', 'talk': 34}, {'npc': 'craven', 'talk': 38}]}); this.areas.push({'id': 5, 'name': 'raymonde', 'r': 20, 'caption': 'Raymonde Ville', 'img': 19}); this.area_data.push({'npc': [{'npc': 'carl', 'condition': function () { return (Core.Get()).game.getFlag('q_raymondehelp') >= 2; }}, {'npc': 'house_carl', 'condition': function () { return (Core.Get()).game.getFlag('q_raymondehelp') == 1 && !(Core.Get()).game.isFlag('q_gotosummerg'); }}, 'michael', 'smith'], 'talk': [{'npc': 'craven', 'talk': 241}, {'npc': 'smith', 'talk': 255}]}); this.areas.push({'id': 6, 'name': 'meta', 'r': 30, 'caption': 'Meta-Fighters\nHideout', 'caption2': 'Meta-Fighters Hideout', 'img': 6}); this.area_data.push({'npc': [{'npc': 'vladimir', 'condition': function () { return (Core.Get()).game.getFlag('q_waitforalien') < 2; }}, {'npc': 'micrasm', 'condition': function () { return (Core.Get()).game.getFlag('q_waitforalien') < 2; }}, {'npc': 'leena', 'condition': function () { return (Core.Get()).game.getFlag('q_waitforalien') < 2; }}, {'npc': 'craven', 'condition': function () { return (Core.Get()).game.getFlag('q_waitforalien') < 2 && !(Core.Get()).game.isInTeam(8); }}], 'talk': [{'npc': 'micrasm', 'talk': 49}, {'npc': 'leena', 'talk': 50}, {'npc': 'cid', 'talk': 51}, {'npc': 'grid', 'talk': 52}]}); this.areas.push({'id': 7, 'name': 'oasis', 'r': 20, 'caption': 'Oasis', 'img': 16}); this.area_data.push({'npc': ['sarahata']}); this.areas.push({'id': 8, 'name': 'alienbase', 'r': 20, 'caption': 'Alien Base', 'img': 13}); this.area_data.push({'npc': ['sir_f'], 'talk': [{'npc': 'sir_f', 'talk': 220}, {'npc': 'karry', 'talk': 221}, {'npc': 'key', 'talk': 222}, {'npc': 'sir_f', 'talk': 223}]}); this.areas.push({'id': 9, 'name': 'beta', 'r': 20, 'caption': 'Betaville', 'img': 20}); this.area_data.push({'npc': ['mihel', 'vermut', 'zoid'], 'talk': [{'npc': 'vermut', 'talk': 82}]}); this.areas.push({'id': 10, 'name': 'kameron', 'r': 30, 'caption': 'Kameron City', 'img': 23}); this.area_data.push({'npc': ['bristol', 'stan', 'viola', 'ace']}); this.areas.push({'id': 11, 'name': 'nevermore', 'r': 30, 'caption': 'Nevermore Town', 'img': 8}); this.area_data.push({'npc': ['kippa', {'npc': 'lexic', 'condition': function () { return !(Core.Get()).game.isInTeam(7); }}, 'gaimon', 'chivax']}); this.areas.push({'id': 12, 'name': 'rainland', 'r': 20, 'caption': 'Rainland', 'img': 29}); this.area_data.push({'npc': ['shell', {'npc': 'liz', 'condition': function () { return 7 > (Core.Get()).game.getFlag('q_lizandsten'); }}, 'alice']}); this.areas.push({'id': 13, 'name': 'ufo1', 'r': 20, 'caption': 'UFO Site 1', 'img': 27}); this.area_data.push({'npc': [], 'talk': [{'npc': 'grid', 'talk': 8}, {'npc': 'grid', 'talk': 9}, {'npc': 'grid', 'talk': 10}, {'npc': 'grid', 'talk': 11}]}); this.areas.push({'id': 14, 'name': 'ufo2', 'r': 20, 'caption': 'UFO Site 2', 'img': 27}); this.area_data.push({'npc': [], 'talk': [{'npc': 'grid', 'talk': 12}, {'npc': 'grid', 'talk': 13}, {'npc': 'grid', 'talk': 14}]}); this.areas.push({'id': 15, 'name': 'ufo3', 'r': 20, 'caption': 'UFO Site 3', 'img': 27}); this.area_data.push({'npc': [], 'talk': [{'npc': 'grid', 'talk': 15}, {'npc': 'grid', 'talk': 16}, {'npc': 'grid', 'talk': 17}]}); this.areas.push({'id': 16, 'name': 'ufo4', 'r': 20, 'caption': 'UFO Site 4', 'img': 27}); this.area_data.push({'npc': [], 'talk': [{'npc': 'grid', 'talk': 18}, {'npc': 'grid', 'talk': 19}, {'npc': 'grid', 'talk': 20}]}); this.areas.push({'id': 17, 'name': 'ufo5', 'r': 20, 'caption': 'UFO Site 5', 'img': 27}); this.area_data.push({'npc': [], 'talk': [{'npc': 'grid', 'talk': 21}, {'npc': 'grid', 'talk': 22}, {'npc': 'grid', 'talk': 23}]}); this.areas.push({'id': 18, 'name': 'ufo6', 'r': 20, 'caption': 'UFO Site 6', 'img': 27}); this.area_data.push({'npc': [], 'talk': [{'npc': 'grid', 'talk': 24}, {'npc': 'grid', 'talk': 25}, {'npc': 'grid', 'talk': 26}]}); this.areas.push({'id': 19, 'name': 'kalister', 'r': 25, 'caption': 'Kalister', 'img': 5}); this.area_data.push({'npc': ['marcy', 'biby', 'ibrahim'], 'talk': [{'npc': 'marcy', 'talk': 165}, {'npc': 'sir_f', 'talk': 166}, {'npc': 'sir_f', 'talk': 167}, {'npc': 'sir_f', 'talk': 168}]}); this.areas.push({'id': 20, 'name': 'sirth', 'r': 25, 'caption': 'Sirth', 'img': 24}); this.area_data.push({'npc': ['michel', 'jax', 'elm', {'npc': 'nina_x', 'condition': function () { return !(Core.Get()).game.isInTeam(10); }}]}); this.areas.push({'id': 21, 'name': 'calipso', 'r': 25, 'caption': 'Dead City\nCalipso', 'caption2': 'Dead City Calipso', 'img': 18}); this.area_data.push({'npc': ['ken', 'goman', 'fea']}); this.areas.push({'id': 22, 'name': 'farm', 'r': 20, 'caption': 'Uncle Sam\'s Farm', 'img': 21}); this.area_data.push({'npc': ['uncle_sam', 'stacy']}); this.areas.push({'id': 23, 'name': 'gibson', 'r': 30, 'caption': 'Gibson City', 'img': 25}); this.area_data.push({'npc': [{'npc': 'curt', 'condition': function () { return !(Core.Get()).game.isInTeam(4); }}, 'georg', 'john']}); this.areas.push({'id': 24, 'name': 'casteda', 'r': 25, 'caption': 'Casteda City', 'img': 17}); this.area_data.push({'npc': ['keabo', 'seth', 'hydra', 'heraldio']}); this.areas.push({'id': 25, 'name': 'vlads', 'r': 20, 'caption': 'Vladsville', 'img': 15}); this.area_data.push({'npc': ['vlad_ser', 'vlad_vlad', 'vlada']}); this.areas.push({'id': 26, 'name': 'port', 'r': 20, 'caption': 'Port', 'img': 9}); this.area_data.push({'npc': ['harcos', 'yax', {'npc': 'cij', 'condition': function () { return !(Core.Get()).game.isFlag('hysterie'); }}]}); this.areas.push({'id': 27, 'name': 'jade', 'r': 20, 'caption': 'Jade Island', 'img': 26}); this.area_data.push({'npc': ['garret', 'ksenya']}); this.areas.push({'id': 28, 'name': 'milbase', 'r': 30, 'caption': 'Military Base', 'img': 28}); this.area_data.push({'npc': [{'npc': 'garn', 'condition': function () { return 2 > (Core.Get()).game.getFlag('q_startrevolution'); }}, {'npc': 'celester', 'condition': function () { return 2 > (Core.Get()).game.getFlag('q_startrevolution'); }}, {'npc': 'lesly', 'condition': function () { return 2 > (Core.Get()).game.getFlag('q_startrevolution'); }}], 'talk': [{'npc': 'garn', 'talk': 160}, {'npc': 'grid', 'talk': 161}]}); this.areas.push({'id': 29, 'name': 'capitol', 'r': 30, 'caption': 'Dark Capitol City', 'img': 2}); this.area_data.push({'npc': ['guard', {'npc': 'mist', 'condition': function () { return 3 == (Core.Get()).game.getFlag('q_startrevolution'); }}]}); this.areas.push({'id': 30, 'name': 'alpha', 'r': 20, 'caption': 'Alphaville', 'img': 14}); this.area_data.push({'npc': [{'npc': 'hell', 'condition': function () { return !(Core.Get()).game.isInTeam(11) && !(Core.Get()).game.isFlag('v_hellkilled'); }}], 'talk': [{'npc': 'hell', 'talk': 197}, {'npc': 'hell', 'talk': 202}]}); this.areas.push({'id': 31, 'name': 'sarreno', 'r': 20, 'caption': 'Sarreno+ Lab', 'img': 11}); this.area_data.push({'npc': ['dr_rade']}); this.areas.push({'id': 32, 'name': 'highland', 'r': 25, 'caption': 'Highland City', 'img': 4}); this.area_data.push({'npc': [{'npc': 'kage', 'condition': function () { return !(Core.Get()).game.isInTeam(6); }}, 'grandin']}); this.area_to_id = new Object(); var v3 = this.areas.length; var v2 = 0; while (v2 < v3) { this.area_to_id[this.areas[v2].name] = this.areas[v2].id; ++v2; } this.npc = new NPCData(); this.talk = new TalkData(); this.chars = new Array(12); this.chars[0] = {'name': 'Grid', 'str_id': 'grid', 'vit': 5, 'def': 5, 'acc': 5, 'dgr': 5, 'tch': 5, 'med': 5, 'lck': 5}; this.chars[1] = {'name': 'Key', 'str_id': 'key', 'vit': 4, 'def': 4, 'acc': 6, 'dgr': 6, 'tch': 6, 'med': 2, 'lck': 7}; this.chars[2] = {'name': 'Katenka', 'str_id': 'katenka', 'vit': 4, 'def': 5, 'acc': 4, 'dgr': 5, 'tch': 3, 'med': 8, 'lck': 9}; this.chars[3] = {'name': 'CID', 'str_id': 'cid', 'vit': 8, 'def': 6, 'acc': 5, 'dgr': 7, 'tch': 9, 'med': 1, 'lck': 1}; this.chars[4] = {'name': 'Kurt', 'str_id': 'curt', 'vit': 5, 'def': 5, 'acc': 6, 'dgr': 7, 'tch': 2, 'med': 3, 'lck': 6}; this.chars[5] = {'name': 'Karry', 'str_id': 'karry', 'vit': 4, 'def': 5, 'acc': 5, 'dgr': 5, 'tch': 8, 'med': 8, 'lck': 4}; this.chars[6] = {'name': 'Kage', 'str_id': 'kage', 'vit': 6, 'def': 5, 'acc': 8, 'dgr': 9, 'tch': 3, 'med': 3, 'lck': 5}; this.chars[7] = {'name': 'Lexic', 'str_id': 'lexic', 'vit': 9, 'def': 7, 'acc': 3, 'dgr': 8, 'tch': 2, 'med': 4, 'lck': 8}; this.chars[8] = {'name': 'Craven', 'str_id': 'craven', 'vit': 4, 'def': 4, 'acc': 6, 'dgr': 8, 'tch': 8, 'med': 4, 'lck': 3}; this.chars[9] = {'name': 'Feather', 'str_id': 'feather', 'vit': 4, 'def': 4, 'acc': 3, 'dgr': 5, 'tch': 5, 'med': 9, 'lck': 9}; this.chars[10] = {'name': 'Nina X', 'str_id': 'nina_x', 'vit': 7, 'def': 7, 'acc': 4, 'dgr': 7, 'tch': 2, 'med': 2, 'lck': 8}; this.chars[11] = {'name': 'Hell', 'str_id': 'hell', 'vit': 9, 'def': 9, 'acc': 8, 'dgr': 9, 'tch': 4, 'med': 2, 'lck': 9}; this.items = new ItemData(); this.quests = new Object(); this.tasks = new Object(); this.quest_items = new Array(); this.region_map = ['AAAAAAAABBBBBBBBBBBBBCCCCCDDDDDDDDDDDDDD', 'AAAAAAAABBBBBBBBBBBBBCCCCCDDDDDDDDDDDDDD', 'AAAAAAAABBBBBBBBBBBBCCCCCCDDDDDDDDDDDDDD', 'AAAAAAAABBBBBBBBBBBCCCCCCCDDDDDDDDDDDDD ', 'AAAAAAABBBBBBBBBBBBCCCCCCCCDDDDDDDDDDD ', 'AAAAAAABBBBBBBBBBBBCCCCCCCCCCDDDDDDDD ', 'AAAAAAABBBBBBBBBBBBCCCCCCCCCCCHHHHDDD ', 'AAAAAAAABBBBBBBBBBBCCCCCCCCCCHHHHHHHH ', 'AAAAAAAABBBBBBF CCCCCCGGGCHHHHHHHH ', 'AAAAAAAAFBBFFFFF GGGGGGGGGHHHHHHH ', 'EEEEEFFFFFFFFFFFFF LGGGGGGGHHHHHHH ', 'EEEEEEFFFFFFFFFFFFFLLGGGGGGHHHHHHH ', 'EEEEEEFFFFFFFFFFFFFLLLGGGGGHHHHMMM ', 'EEEEEEEEEEEFFFFFFFLLLLGGGGGHHMMMNNNN ', 'EEEEEEEEEEEEFFFFLLLLLLLGGGMMMMMMNNN ', 'EEEEEEEEIIIIIFFFLLLLLLLLLLMMMMMMNNN ', 'EEEEEEIIIIIIIKKKKKKKLLLLLLMMMMMMNNNN ', 'EEEEIIIIIIIIIKKKKKKKKKLLLMMMMMMMNNNNN ', 'EEEEIIIIIIIIJJKKKKKKKKLLLMMMMNNNNNNSSS ', 'EEEEIIIIIIIJJJJJKKKKKKKLQMMMQNNNNNNSSSSS', 'OOOIIIIIJJJJJJJJJJJKKKKLQQQQQNNNNNNSSSSS', 'OOOOIIIIJJJJJJJJJJJJJKKQQQQQQRRRNNNSSSSS', 'OOOOOOOJJJJJJJJJJJJJJJKQQQQRRRRRRRRSSSSS', 'OOOOOOOOOOOJJJOOOOPPPPPPQRRRRRRRRRRRSSSS', 'OOOOOOOOOOOOOOOOOOPPPPPPPRRRRRRRRRRRRSSS', 'OOOOOOOOOOOOOOOOOOPPPPPPPRRRRRRRRRRRRRSS', 'OOOOOOOOOOOOOOOOOOPPPPPPPPRRRRRRRRRRRRRR', 'OOOOOOOOOOOOOOOOOOPPPPPPPPRRRRRRRRRRRRRR', 'OOOOOOOOOOOOOOOOOOOOPPPPPPRRRRRRRRRRRRRR', 'OOOOOOOOOOOOOOOOOOOOPPPPPPRRRRRRRRRRRRRR']; this.regions = [{'name': 'Fading Lands', 'terrain': 1, 'enemy': ['bandit', {'enemy': 'kaufo', 'condition': function () { return (Core.Get()).game.isFlag('q_kaufo_betrayal'); }}]}, {'name': 'Carben Valley', 'terrain': 1, 'enemy': ['bandit', {'enemy': 'alien', 'condition': function () { return !(Core.Get()).game.isInParty(5); }}, {'enemy': 'kaufo', 'condition': function () { return (Core.Get()).game.isFlag('q_kaufo_betrayal'); }}]}, {'name': 'Integra Region', 'terrain': 1, 'enemy': ['robot', 'bandit', {'enemy': 'alien', 'condition': function () { return !(Core.Get()).game.isInParty(5); }}, {'enemy': 'meta', 'condition': function () { return !(Core.Get()).game.isInParty(8); }}]}, {'name': 'Silent Desert', 'terrain': 2, 'enemy': ['robot', {'enemy': 'meta', 'condition': function () { return !(Core.Get()).game.isInParty(8); }}]}, {'name': 'Nexuser Region', 'terrain': 3, 'enemy': ['gartt', {'enemy': 'kaufo', 'condition': function () { return (Core.Get()).game.isFlag('q_kaufo_betrayal'); }}]}, {'name': 'Ameno Valley', 'terrain': 1, 'enemy': ['robot', 'zombie', {'enemy': 'kaufo', 'condition': function () { return (Core.Get()).game.isFlag('q_kaufo_betrayal'); }}]}, {'name': 'Espian Plains', 'terrain': 4, 'enemy': ['mutant', {'enemy': 'alien', 'condition': function () { return !(Core.Get()).game.isInParty(5); }}]}, {'name': 'Gessier Plains', 'terrain': 2, 'enemy': ['raider', {'enemy': 'meta', 'condition': function () { return !(Core.Get()).game.isInParty(8); }}]}, {'name': 'Vectral Highs', 'terrain': 3, 'enemy': ['robot', 'mutant']}, {'name': 'Demien Highs', 'terrain': 3, 'enemy': ['mutant', 'zombie', 'bandit']}, {'name': 'Hellsing Valley', 'terrain': 4, 'enemy': ['raider', 'zombie']}, {'name': 'Gibson Region', 'terrain': 4, 'enemy': [{'enemy': 'raider', 'condition': function () { return (Core.Get()).game.getFlag('q_gibsonquest') <= 2; }}, {'enemy': 'mutant', 'condition': function () { return (Core.Get()).game.getFlag('q_gibsonquest') >= 2 && (Core.Get()).game.getFlag('q_gibsonquest') <= 4; }}, {'enemy': 'alien', 'condition': function () { return !(Core.Get()).game.isInParty(5); }}]}, {'name': 'Strat Plateau', 'terrain': 2, 'enemy': ['rabbit', 'raider', 'bandit', {'enemy': 'rogue_meta', 'condition': function () { return 6 == (Core.Get()).game.getFlag('q_bigalienplan') && !(Core.Get()).game.getFlag('drop_vacuumengine'); }}]}, {'name': 'Left Mids', 'terrain': 2, 'enemy': ['rabbit', 'gartt']}, {'name': 'Deus Mointain Chain', 'terrain': 3, 'enemy': []}, {'name': 'Tatin\'s Highs', 'terrain': 3, 'enemy': ['mutant', 'gartt']}, {'name': 'Last Stand Plains', 'terrain': 4, 'enemy': ['grabber', 'rabbit']}, {'name': 'Paradark Region', 'terrain': 4, 'enemy': ['soldier', 'robot']}, {'name': 'Top Secret Region', 'terrain': 2, 'enemy': ['soldier', 'shade']}]; this.bands = new BandData(); this.enemy = new Object(); this.enemy.RP = {'weapon': EItemType.PISTOL, 'device': -1, 'vit': 5, 'def': 7, 'acc': 5, 'dgr': 5, 'tch': 7, 'med': 0, 'lck': 4, 'frame': 1}; this.enemy.RA = {'weapon': EItemType.ASSAULT, 'device': -1, 'vit': 6, 'def': 7, 'acc': 5, 'dgr': 5, 'tch': 7, 'med': 0, 'lck': 4, 'frame': 2}; this.enemy.RG = {'weapon': EItemType.HEAVY, 'device': -1, 'vit': 7, 'def': 7, 'acc': 5, 'dgr': 5, 'tch': 7, 'med': 0, 'lck': 4, 'frame': 3}; this.enemy.RH = {'weapon': EItemType.MELEE, 'device': 120, 'vit': 5, 'def': 6, 'acc': 5, 'dgr': 4, 'tch': 5, 'med': 7, 'lck': 4, 'frame': 4}; this.enemy.MM = {'weapon': EItemType.MELEE, 'device': 121, 'vit': 4, 'def': 6, 'acc': 6, 'dgr': 8, 'tch': 8, 'med': 0, 'lck': 6, 'frame': 5}; this.enemy.MG = {'weapon': EItemType.HEAVY, 'device': 122, 'vit': 4, 'def': 9, 'acc': 6, 'dgr': 8, 'tch': 8, 'med': 0, 'lck': 6, 'frame': 6}; this.enemy.MP = {'weapon': EItemType.PISTOL, 'device': 123, 'vit': 4, 'def': 6, 'acc': 6, 'dgr': 8, 'tch': 8, 'med': 0, 'lck': 6, 'frame': 7}; this.enemy.MZ = {'weapon': EItemType.HEAVY, 'device': 89, 'vit': 4, 'def': 999, 'acc': 6, 'dgr': 8, 'tch': 8, 'med': 0, 'lck': 999, 'frame': 6}; this.enemy.ZM = {'weapon': EItemType.MELEE, 'device': 124, 'vit': 8, 'def': 5, 'acc': 4, 'dgr': 12, 'tch': 3, 'med': 0, 'lck': 3, 'frame': 8}; this.enemy.ZZ = {'weapon': EItemType.MELEE, 'device': 125, 'vit': 12, 'def': 5, 'acc': 4, 'dgr': 17, 'tch': 5, 'med': 0, 'lck': 3, 'frame': 9}; this.enemy.UX = {'weapon': EItemType.RLAUNCHER, 'device': -1, 'vit': 20, 'def': 9, 'acc': 4, 'dgr': 6, 'tch': 4, 'med': 3, 'lck': 7, 'frame': 10}; this.enemy.UG = {'weapon': EItemType.HEAVY, 'device': -1, 'vit': 20, 'def': 9, 'acc': 4, 'dgr': 6, 'tch': 4, 'med': 3, 'lck': 5, 'frame': 11}; this.enemy.UZ = {'weapon': EItemType.SNIPER, 'device': 126, 'vit': 30, 'def': 11, 'acc': 4, 'dgr': 8, 'tch': 5, 'med': 3, 'lck': 5, 'frame': 12}; this.enemy.GA = {'weapon': EItemType.ASSAULT, 'device': -1, 'vit': 9, 'def': 3, 'acc': 6, 'dgr': 10, 'tch': 5, 'med': 5, 'lck': 8, 'frame': 13}; this.enemy.GX = {'weapon': EItemType.GLAUNCHER, 'device': -1, 'vit': 9, 'def': 3, 'acc': 7, 'dgr': 10, 'tch': 5, 'med': 5, 'lck': 7, 'frame': 14}; this.enemy.GZ = {'weapon': EItemType.SHOTGUN, 'device': 82, 'vit': 10, 'def': 4, 'acc': 8, 'dgr': 15, 'tch': 10, 'med': 5, 'lck': 8, 'frame': 15}; this.enemy.BM = {'weapon': EItemType.MELEE, 'device': -1, 'vit': 4, 'def': 4, 'acc': 4, 'dgr': 4, 'tch': 3, 'med': 2, 'lck': 3, 'frame': 16}; this.enemy.BP = {'weapon': EItemType.PISTOL, 'device': -1, 'vit': 4, 'def': 4, 'acc': 4, 'dgr': 4, 'tch': 3, 'med': 2, 'lck': 3, 'frame': 17}; this.enemy.BN = {'weapon': EItemType.SNIPER, 'device': -1, 'vit': 5, 'def': 5, 'acc': 4, 'dgr': 6, 'tch': 3, 'med': 2, 'lck': 3, 'frame': 18}; this.enemy.BZ = {'weapon': EItemType.SHOTGUN, 'device': -1, 'vit': 6, 'def': 5, 'acc': 4, 'dgr': 6, 'tch': 3, 'med': 2, 'lck': 3, 'frame': 19}; this.enemy.YS = {'weapon': EItemType.SHOTGUN, 'device': 111, 'vit': 8, 'def': 8, 'acc': 10, 'dgr': 5, 'tch': 5, 'med': 5, 'lck': 15, 'frame': 20}; this.enemy.YG = {'weapon': EItemType.HEAVY, 'device': 106, 'vit': 5, 'def': 5, 'acc': 10, 'dgr': 8, 'tch': 8, 'med': 5, 'lck': 15, 'frame': 21}; this.enemy.DP = {'weapon': EItemType.PISTOL, 'device': 94, 'vit': 8, 'def': 6, 'acc': 6, 'dgr': 6, 'tch': 5, 'med': 5, 'lck': 5, 'frame': 22}; this.enemy.DU = {'weapon': EItemType.SMG, 'device': 94, 'vit': 8, 'def': 6, 'acc': 6, 'dgr': 6, 'tch': 5, 'med': 5, 'lck': 5, 'frame': 23}; this.enemy.DZ = {'weapon': EItemType.SHOTGUN, 'device': -1, 'vit': 9, 'def': 6, 'acc': 6, 'dgr': 6, 'tch': 5, 'med': 5, 'lck': 5, 'frame': 24}; this.enemy.SA = {'weapon': EItemType.ASSAULT, 'device': 83, 'vit': 10, 'def': 10, 'acc': 10, 'dgr': 10, 'tch': 4, 'med': 10, 'lck': 10, 'frame': 25}; this.enemy.SN = {'weapon': EItemType.SNIPER, 'device': -1, 'vit': 15, 'def': 15, 'acc': 15, 'dgr': 15, 'tch': 10, 'med': 10, 'lck': 15, 'frame': 26}; this.enemy.SH1 = {'weapon': EItemType.PISTOL, 'device': 108, 'vit': 10, 'def': 10, 'acc': 10, 'dgr': 8, 'tch': 6, 'med': 20, 'lck': 10, 'frame': 27}; this.enemy.SH2 = {'weapon': EItemType.PISTOL, 'device': 109, 'vit': 10, 'def': 10, 'acc': 10, 'dgr': 8, 'tch': 6, 'med': 20, 'lck': 10, 'frame': 27}; this.enemy.SH3 = {'weapon': EItemType.PISTOL, 'device': 110, 'vit': 10, 'def': 10, 'acc': 10, 'dgr': 8, 'tch': 6, 'med': 20, 'lck': 10, 'frame': 27}; this.enemy.HM = {'weapon': EItemType.MELEE, 'device': 113, 'vit': 9, 'def': 9, 'acc': 9, 'dgr': 9, 'tch': 9, 'med': 9, 'lck': 9, 'frame': 28}; this.enemy.A1 = {'weapon': EItemType.PISTOL, 'device': 116, 'vit': 6, 'def': 10, 'acc': 12, 'dgr': 12, 'tch': 5, 'med': 12, 'lck': 12, 'frame': 29}; this.enemy.A2 = {'weapon': EItemType.PISTOL, 'device': 115, 'vit': 10, 'def': 8, 'acc': 10, 'dgr': 14, 'tch': 14, 'med': 10, 'lck': 10, 'frame': 30}; this.enemy.KP = {'weapon': EItemType.PISTOL, 'device': 102, 'vit': 12, 'def': 10, 'acc': 12, 'dgr': 14, 'tch': 8, 'med': 8, 'lck': 6, 'frame': 31}; this.enemy.XX = {'weapon': EItemType.PSI, 'device': 127, 'vit': 50, 'def': 3, 'acc': 10, 'dgr': 16, 'tch': 12, 'med': 10, 'lck': 15, 'frame': 32}; this.enemy.QCYB = {'weapon': EItemType.HEAVY, 'device': 119, 'vit': 18, 'def': 18, 'acc': 18, 'dgr': 18, 'tch': 20, 'med': 0, 'lck': 3, 'frame': 34}; this.enemy.QHEL = {'weapon': EItemType.RLAUNCHER, 'device': 118, 'vit': 9, 'def': 9, 'acc': 8, 'dgr': 9, 'tch': 4, 'med': 2, 'lck': 9, 'frame': 35}; this.enemy.QCEL = {'weapon': EItemType.SNIPER, 'device': 110, 'vit': 27, 'def': 17, 'acc': 25, 'dgr': 18, 'tch': 17, 'med': 3, 'lck': 17, 'frame': 36}; this.enemy.QGRN = {'weapon': EItemType.SHOTGUN, 'device': 138, 'vit': 35, 'def': 20, 'acc': 10, 'dgr': 13, 'tch': 8, 'med': 3, 'lck': 10, 'frame': 37}; this.enemy.QNTN = {'weapon': EItemType.PISTOL, 'device': 106, 'vit': 40, 'def': 25, 'acc': 15, 'dgr': 20, 'tch': 12, 'med': 10, 'lck': 7, 'frame': 38}; this.enemy.QCID = {'weapon': EItemType.ASSAULT, 'device': 128, 'vit': 45, 'def': 20, 'acc': 12, 'dgr': 25, 'tch': 25, 'med': 5, 'lck': 10, 'frame': 39}; this.enemy.QSRF = {'weapon': EItemType.PISTOL, 'device': 117, 'vit': 50, 'def': 15, 'acc': 14, 'dgr': 15, 'tch': 18, 'med': 15, 'lck': 15, 'frame': 40}; this.enemy.QGRD = {'weapon': EItemType.SMG, 'device': 110, 'vit': 25, 'def': 25, 'acc': 25, 'dgr': 25, 'tch': 25, 'med': 25, 'lck': 20, 'frame': 41}; this.enemy.QMST = {'weapon': EItemType.HEAVY, 'device': 129, 'vit': 50, 'def': 13, 'acc': 9, 'dgr': 30, 'tch': 15, 'med': 4, 'lck': 5, 'frame': 42}; this.enemy.QDKS = {'weapon': EItemType.MELEE, 'device': 138, 'vit': 20, 'def': 15, 'acc': 3, 'dgr': 9, 'tch': 10, 'med': 1, 'lck': 3, 'frame': 43}; this.enemy.QKEY = {'weapon': EItemType.PISTOL, 'device': -1, 'vit': 4, 'def': 4, 'acc': 6, 'dgr': 6, 'tch': 6, 'med': 2, 'lck': 7, 'frame': 44}; this.enemy.QKRY = {'weapon': EItemType.PISTOL, 'device': -1, 'vit': 4, 'def': 5, 'acc': 5, 'dgr': 5, 'tch': 8, 'med': 8, 'lck': 4, 'frame': 45}; this.level_exp = [0, 100, 250, 500, 750, 1000, 1500, 2000, 2500, 3000, 3500, 4000, 5000, 6000, 7000, 8000, 9000, 10000, 11000, 12000, 13000, 14000, 15000, 16000, 17000, 18000, 19000, 20000, 21000, 22000]; }; _global.WorldData = v1; var v2 = v1.prototype; v2.getRegion = function (tile_) { var v2 = this.region_map[tile_.y].charCodeAt(tile_.x) - 65; return v2 < 0 ? -1 : v2; }; v2.getItemType = function (item_) { return this.items[item_].type; }; v2.getQuestTitle = function (quest_) { return this.quests[quest_].title; }; v2.getQuestPart = function (quest_, sub_) { return this.tasks[quest_][sub_]; }; v2.getQuestItemName = function (id_) { return this.quest_items[id_].name; }; v2.getQuestItemDescri = function (id_) { return this.quest_items[id_].descri; }; v2.getSellPrice = function (item_) { return Math.ceil(this.items[item_].cost / 2); }; v2.getBuyPrice = function (item_) { return this.items[item_].cost; }; v2.localRu = function () { this.talk = new TalkData(); this.areas[0].caption = 'Официальная\nсекретная база\nУ.В.И.Ф.Ж.'; this.areas[0].caption2 = 'Официальная секретная база У.В.И.Ф.Ж.'; this.areas[1].caption = 'Интегра'; this.areas[2].caption = 'Астрал'; this.areas[3].caption = 'Никки'; this.areas[4].caption = 'Летний Сад'; this.areas[5].caption = 'Раймонд'; this.areas[6].caption = 'Убежище\nМета-воинов'; this.areas[6].caption2 = 'Убежище Мета-воинов'; this.areas[7].caption = 'Оазис'; this.areas[8].caption = 'База пришельцев'; this.areas[9].caption = 'Бетавилль'; this.areas[10].caption = 'Кэмерон'; this.areas[11].caption = 'Невермор'; this.areas[12].caption = 'Рейнланд'; this.areas[13].caption = 'Посадка НЛО 1'; this.areas[14].caption = 'Посадка НЛО 2'; this.areas[15].caption = 'Посадка НЛО 3'; this.areas[16].caption = 'Посадка НЛО 4'; this.areas[17].caption = 'Посадка НЛО 5'; this.areas[18].caption = 'Посадка НЛО 6'; this.areas[19].caption = 'Калистер'; this.areas[20].caption = 'Сирт'; this.areas[21].caption = 'Мёртвый город\nКалипсо'; this.areas[21].caption2 = 'Мёртвый город Калипсо'; this.areas[22].caption = 'Ферма дядюшки Сэма'; this.areas[23].caption = 'Гибсон-сити'; this.areas[24].caption = 'Кастеда'; this.areas[25].caption = 'Владзвилль'; this.areas[26].caption = 'Порт'; this.areas[27].caption = 'Нефритовый остров'; this.areas[28].caption = 'Военная база'; this.areas[29].caption = 'Капитолий Дарк'; this.areas[30].caption = 'Альфавилль'; this.areas[31].caption = 'Лаборатория\nSarreno+'; this.areas[31].caption2 = 'Лаборатория Sarreno+'; this.areas[32].caption = 'Высокогорье'; this.npc = new NPCData(); this.chars[0].name = 'Грид'; this.chars[1].name = 'Кей'; this.chars[2].name = 'Катенька'; this.chars[3].name = 'CID'; this.chars[4].name = 'Курт'; this.chars[5].name = 'Карри'; this.chars[6].name = 'Кейдж'; this.chars[7].name = 'Лексик'; this.chars[8].name = 'Крейвен'; this.chars[9].name = 'Фивер'; this.chars[10].name = 'Нина X'; this.chars[11].name = 'Хэл'; this.quests.ufo_visit = {'title': 'СЛЕД ПРИШЕЛЬЦЕВ'}; this.tasks.ufo_visit = ['Я должен отправиться в район, где видели пришельцев. Нужно посмотреть, правда ли они там были, и что происходит. В общем, все как обычно.', 'Судя по выжженной земле и следам дискотеки, в районе действительно были пришельцы. Следует расспросить жителей ближайшей деревни.', 'Похоже, из района близ деревни Никки, пришельцы направились в направлении города Интегра.', 'Все жители города Интегра куда-то исчезли! Следует сообщить об этом Натану. Похоже, пришельцы разошлись ни на шутку.']; this.quests.natan_plan = {'title': 'ВЕЛИКИЙ ПЛАН НАТАНА'}; this.tasks.natan_plan = ['Натан был крайне возмущен тем, что жители города Интегра пропали. Ему нужно время, чтобы придумать гениальный план дальнейших действий. Вернусь к нему через час.', 'Мне нужно взять у Карла Вакуоля темпоральный телевизор и с помощью него сделать записи во всех местах, где видели пришельцев недавно – всего таких мест 6, они отмечены на карте.', 'Мне удалось собрать все видео из мест, где видели пришельцев. Я отнес его Натану, и он, запасшись попкорном, просматривает его. Вернусь-ка я еще через часок-другой...', 'Натану удалось вычислить местоположение главной базы пришельцев – оказывается, они находятся на дне Конского Моря. Нужно снарядить туда экспедицию.', 'Чтобы капитан судна «Неизбежность» согласился отвезти вас к базе пришельцев, я почему-то должен доказать ему свою доблесть, убив 3х грабберов в районе равнин Ласт Стенд.', 'Дурацкий капитан придумал мне еще одно задание, в этот раз – осмысленное. Мне следует поймать в районе Равнин Страта злоумышленников, которые украли вакуумный мотор Неизбежности.', 'Я отправляюсь на секретную базу пришельцев, чтобы убить их лидера... Вот он, момент истины.']; this.quests.meta_oasis = {'title': 'ОАЗИС И МЕТА-ВОИНЫ'}; this.tasks.meta_oasis = ['Вот ведь незадача! Мета-воины взяли меня в плен и нацепили на ногу детонирующий датчик! Теперь мне нужно выполнить их задание, чтобы обрести былую свободу. Придется отправиться в город Оазис, чтобы заключить от лица Мета-воинов с ними соглашение о сотрудничестве.', 'Глава города Оазис просит провести ей Интернет, тогда она согласна на сотрудничество. Расскажу об этом Лине.']; this.quests.meta_raimonde = {'title': 'ПОМОЧЬ ДЕРЕВНЕ РАЙМОНД'}; this.tasks.meta_raimonde = ['Лина нечестная! Она хочет, чтобы я выполнил еще одно задание. Можно подумать, у меня есть выбор – с динамитом-то на ноге. Нужно пойти в деревню Раймонд и выяснить, что у них там за проблема, а заодно и решить ее.', 'Действительно, в деревне физиков Раймонд проблема – куда-то пропал ученый Карл Вакуоль. Улики указывают, что следует поискать его следы в небольшом местечке под названием «Летний Сад».', 'Мне удалось помочь деревне Раймонд. Нужно рассказать об этом Лине. Надеюсь, в этот раз она меня отпустит. Неблагодарная.']; this.quests.meta_uprise = {'title': 'ВОССТАНИЕ МЕТА-ВОИНОВ'}; this.tasks.meta_uprise = ['Зачем-то я согласился помочь в подготовке восстания Мета-воинов. Возможно, мной владеет алчная жажда награды... В любом случае, я должен отправляться в деревню Раймонд и помочь там Вакуолю и Беккорду в подготовке восстания.', 'Я помог обоим ученым деревни Раймонд в подготовке восстания.', 'Следующий этап подготовки восстания – заключение союза с «городом мертвых» Калипсо. Веселые они, эти Мета-воины. Жизнерадостные.', 'Калипсо заключит союз с Мета-воинами только в том случае, если те смогут «вернуть их к жизни». Уж не знаю, существуют ли такие исследования... надо спросить у Лины.', 'Оказывается, существуют. Исследованиями искусственной жизни занимался когда-то Михаэль из деревни Раймонд. Нужно убедить его помочь бедной нежити.', 'Как тщеславны люди! Немного лести, и Михаэль согласился помочь. Самое время рассказать об этом Фие.', 'Как и ожидалось, теперь «немертвая» сила города Калипсо на стороне Мета-воинов. Осталось только рассказать Лине о своем успехе.', 'Ну что же, союз с Калипсо заключен, деревня Раймонд занимается производством техники. Что дальше? Нужно спросить у Лины.', 'Не все так гладко, как казалось. У Мета-воинов закончились деньги. Теперь революции нужен инвестор... Я должен отправиться в город богачей Кастеда и привлечь капиталы одного из местных меценатов.', 'Инвестиции найдены. Лина будет рада услышать... если конечно эта девочка-компьютер умеет радоваться.', 'Будем считать, что она обрадовалась. Во всяком случае, зарплата порадовала. Сразу видно, что старался не зря.', 'Революция в действии!.. Не понимаю, как я ввязался во все это, но уверен, что делаю правильную вещь... в общем, на мне сейчас важное задание – уничтожение военной базы, где находятся основные силы президента Мист.', 'Ура, товарищи! Революция идет полным ходом! Я уничтожил военную базу. Нужно возвращаться к Лине и получить дальнейшие инструкции.', 'Собственно говоря, что и ожидалось. Мое следующее задание принесет мир в этот мир. И порядок. Моя задача – свергнуть правительство и захватить столицу Дарк...']; this.quests.astral_flowers = {'title': 'АСТРАЛЬНЫЕ ЦВЕТЫ'}; this.tasks.astral_flowers = ['Я вызвался помочь странному фермеру из Астральной Деревни собрать 10 астральных семян. Они выпадают из врагов в окрестностях деревни.']; this.quests.bristol_divorce = {'title': 'РАЗВОД БРИСТОЛ'}; this.tasks.bristol_divorce = ['Я согласился помочь модели и художнице Бристол развестись с ее мужем, мои давним знакомым – Сетом из города Кастеда.', 'Сет довольно спокойно воспринял повестку. Ну что ж, мое дело сделано, надо рассказать Бристол о том, что она снова свободна.']; this.quests.debt_collection = {'title': 'ВЫБИВАТЕЛЬ ДОЛГОВ'}; this.tasks.debt_collection = ['Эйс из города Кэмерон дает деньги в долг. Однако не все стремятся возвращать долг. Нужно помочь ему и забрать долг у Вермута из фашистской деревни Гартт.', 'Ну что же, Вермут вернул долг. Осталось сходить к Сету за процентами.']; this.quests.love_story = {'title': 'ЛЮБОВНЫЙ КУРЬЕР'}; this.tasks.love_story = ['Лиз из Рейнленда тайно влюблена в... кто бы мог подумать... мэра города Кэмерон, Стена! Ну и вкус у нее... Помочь что ли бедной девушке?', 'Так вот, эта Лиз попросила передать своему возлюбленному Стену любовную записку.', 'Стен вроде бы не особо возражает против встречи с Лиз... не знаю, получится ли из этого что-либо хорошее, но сказать об этом девушке, думаю, стоит.']; this.quests.love_story_2 = {'title': 'ЛЮБОВНЫЙ КУРЬЕР-2'}; this.tasks.love_story_2 = ['Похоже, что у Лиз и Стена не сложилось (впрочем, кто бы сомневался...). Правда, девушка быстро оправилась от горя, и теперь у нее новый возлюбленный... фашист Мигель из Бетавиля! Нет, серьезно, что с ней не так? В общем, она попросила меня отнести записку теперь уже ему.', 'Мигеля воодушевила любовная записка, и хотя он никогда в жизни не видел Лиз, он заявил, что любит ее. Ну что же, возможно два психа нашли друг друга... надо порадовать девушку.']; this.quests.rain_machine = {'title': 'ДОЖДЕВАЯ МАШИНА'}; this.tasks.rain_machine = ['В Рейнленде нет ни капли дождя... оказывается, это потому, что сломалась дождевая машина, которая производила осадки в этом засушливом изначально месте. Дождевую машину собирали в городе Оазис, так что, возможно, они сумеют помочь и с ее починкой.', 'Мне удалось починить дождевую машину! Осталось только похвастаться своими достижениями.']; this.quests.soil_analysis = {'title': 'ОБРАЗЦЫ ПОЧВЫ'}; this.tasks.soil_analysis = ['Я вызывался собрать образцы почвы со всего мира. Кажется, за это меня ждет хорошая награда!']; this.quests.love_hunter = {'title': 'ЛЮБОВНЫЙ ОХОТНИК'}; this.tasks.love_hunter = ['Развращенный мусорщик из Гибсон Сити по имени Джон попросил меня взять у Беккорда из деревни Раймонд «любовный чип» и вживить его известной актрисе, певице и модели Байби.', 'Я взял любовный чип у Беккорда. Теперь нужно каким-то образом вживить его Байби... не представляю, правда, как это возможно...', 'Ну что же, чип Байби вживлен, это оказалось проще, чем... что бы то ни было. Невероятно, эта девочка по-настоящему ТУПАЯ.']; this.quests.infidels = {'title': 'НЕВЕРНЫЕ'}; this.tasks.infidels = ['Когда-то давно, секта Армадоса, поклоняющаяся кибернетическому божеству, изобрела 13 адских машин, цель которых была поработить человечество. Правда, машины вышли из под контроля и, видимо, не стали порабощать человечество, а просто нападают на людей. В общем, моя задача уничтожить все 13 адских машин, и тогда я получу секретное оружие Армадоса.']; this.quests.raiding_raiders = {'title': 'РЕЙД ПО РЕЙДЕРАМ'}; this.tasks.raiding_raiders = ['Я пообещал главе города Гибсон убить 20 рейдеров, что мешают въезду/выезду в город.']; this.quests.raiding_mutants = {'title': 'РЕЙД ПО МУТАНТАМ'}; this.tasks.raiding_mutants = ['Стоило мне прогнать из района Гибсон Сити рейдеров, как на их место пришли мутанты. И теперь уже они мешают въезду/выезду в город. Угадайте, что от меня требуется? Убить 25 мутантов в районе Гибсон-Сити.']; this.quests.michels_medallion = {'title': 'МЕДАЛЬОН МИШЕЛЬ'}; this.tasks.michels_medallion = ['Один из... клиентов... Мишель украл ее медальон. Так что если вдруг найдете у одного из бандитов странный медальон, то скорее всего он принадлежал Мишель.']; this.quests.clean_suburbs = {'title': 'ЗАЧИСТКА ПРИГОРОДА'}; this.tasks.clean_suburbs = ['Джакс попросил меня зачистить пригород и убить в районе высот Демиена 50 бандитов за награду. Главное, не пожимать ему руку... а то вдруг оторвет.']; this.quests.talks_with_aliens = {'title': 'РАЗГОВОРЫ С ПРИШЕЛЬЦАМИ'}; this.tasks.talks_with_aliens = ['Иногда так бывает, что вдруг переосмысляешь все то, чем жил раньше. Также и я. В общем, получилось так, что я предал К.А.У.Ф.О. ради того, чтобы поговорить с Императором пришельцев. Мне не дает покоя вопрос об истине... понимаю, что теперь за мной будут охотиться те, с кем я раньше работал.', 'Что ж, теперь мне все понятно. Я поспособствую пришельцам, ведь они, в отличие от жителей этой планеты, хотят землянам добра. Мне следует вернуться в город Интегра и ожидать начала действия плана сэра Эф.', 'Сид захватил контроль над Мета-воинами, обманом убив Лину и поработив умы остальных посредством чипа контроля разума. Я отправлюсь на базу Мета-воинов и уничтожу его. Он может помешать плану пришельцев.', 'К.А.У.Ф.О. устроили облаву и атакуют базу пришельцев. Нужно поспешить в город Интегра и телепортироваться обратно, чтобы помочь сэру Эф.', 'Сэр Эф обратится ко всем людям Земли посредством трансляции из города Калистер. Моя задача отправиться в этот город и защищать трансляцию до окончания речи сэра Эф.']; this.quests.keabo_style = {'title': 'ДИСК КИБО-СТАЙЛ'}; this.tasks.keabo_style = ['Кибо попросил меня протолкнуть его диск на какую-нибудь радиостанцию, не используя при этом денег, чтобы все было честно. Послушал я тот диск... нет, не фанат я такой музыки.', 'Похоже, одну радиостанцию диск все-таки заинтересовал. Нужно порадовать дебютанта.']; this.quests.feel_of_guilty = {'title': 'ЧУВСТВО ВИНЫ'}; this.tasks.feel_of_guilty = ['Девочка по имени Гидра устроила жестокую бойню в городе Невермор, чем вызвала недовольство своих родителей, которые перестали ей давать миллионы на карманные расходы. Похоже, что мне нужно отправиться в Невермор и просить прощения от ее имени.']; this.quest_items[0] = {'name': 'Темпоральный телевизор', 'descri': ''}; this.quest_items[1] = {'name': 'Темпоральная видеозапись', 'descri': 'Видеозапись, сделанная с помощью темпорального телевизора.\n Запись сделана в окрестностях деревни Никки.'}; this.quest_items[2] = {'name': 'Темпоральная видеозапись', 'descri': 'Видеозапись, сделанная с помощью темпорального телевизора.\n Запись сделана в окрестностях Владсвиля.'}; this.quest_items[3] = {'name': 'Темпоральная видеозапись', 'descri': 'Видеозапись, сделанная с помощью темпорального телевизора.\n Запись сделана в окрестностях Гибсон-сити.'}; this.quest_items[4] = {'name': 'Темпоральная видеозапись', 'descri': 'Видеозапись, сделанная с помощью темпорального телевизора.\n Запись сделана недалеко от Оазиса.'}; this.quest_items[5] = {'name': 'Темпоральная видеозапись', 'descri': 'Видеозапись, сделанная с помощью темпорального телевизора.\n Запись сделана в предгорьях к югу от города Кастеда.'}; this.quest_items[6] = {'name': 'Темпоральная видеозапись', 'descri': 'Видеозапись, сделанная с помощью темпорального телевизора.\n Запись сделана в окрестностях деревни Бетавилль.'}; this.quest_items[7] = {'name': 'Астральное семя', 'descri': ''}; this.quest_items[8] = {'name': 'Чип 707', 'descri': ''}; this.quest_items[9] = {'name': 'Любовная записка Мигелю', 'descri': ''}; this.quest_items[10] = {'name': 'Альбом фотографий Бристол', 'descri': ''}; this.quest_items[11] = {'name': 'Любовная записка Стену', 'descri': ''}; this.quest_items[12] = {'name': 'Вакуумный мотор', 'descri': ''}; this.quest_items[13] = {'name': 'Диск КИБО РУЛИТ', 'descri': ''}; this.quest_items[14] = {'name': 'Ключ от Замка Геральдио', 'descri': ''}; this.quest_items[15] = {'name': 'Чип 404', 'descri': ''}; this.quest_items[16] = {'name': 'Любовный чип', 'descri': ''}; this.quest_items[17] = {'name': 'Медальон Мишель', 'descri': ''}; this.quest_items[18] = {'name': 'Видеокамера пришельцев', 'descri': ''}; this.quest_items[19] = {'name': 'Чип 101', 'descri': ''}; this.quest_items[20] = {'name': 'Собиратель почвы', 'descri': ''}; this.quest_items[21] = {'name': 'Pация пришельцев', 'descri': ''}; this.quest_items[22] = {'name': 'Блестящий шар', 'descri': 'Блестящий шар, который мог бы использоваться для проведения дискотеки.'}; this.quest_items[23] = {'name': 'Купон на обед', 'descri': 'Купон на бесплатный обед в городке Летний Сад.'}; this.quest_items[24] = {'name': 'Титановая цепь BDX', 'descri': ''}; this.quest_items[25] = {'name': 'Гальванизатор S7', 'descri': ''}; this.quest_items[26] = {'name': 'Нефритовый поршень', 'descri': ''}; this.quest_items[27] = {'name': 'Грант Вакуоля', 'descri': ''}; this.regions[0].name = 'Гаснущие земли'; this.regions[1].name = 'Долина Карбен'; this.regions[2].name = 'Район Интегра'; this.regions[3].name = 'Тихая Пустыня'; this.regions[4].name = 'Район Нексузер'; this.regions[5].name = 'Долина Амено'; this.regions[6].name = 'Равнины Эспиан'; this.regions[7].name = 'Равнины Гессье'; this.regions[8].name = 'Вектральные Высоты'; this.regions[9].name = 'Высоты Демиен'; this.regions[10].name = 'Долина Хеллсинг'; this.regions[11].name = 'Район Гибсон'; this.regions[12].name = 'Плато Страт'; this.regions[13].name = 'Левые Средины'; this.regions[14].name = 'Горная цепь Деус'; this.regions[15].name = 'Высоты Татин'; this.regions[16].name = 'Равнины Ласт Стэнд'; this.regions[17].name = 'Район Парадарк'; this.regions[18].name = 'Сверхсекретный регион'; this.perks = [[{'name': 'Мастер пушки', 'descri': 'Пистолеты: +20% вреда'}, {'name': 'Мощный выстрел', 'descri': 'Пистолеты: +10 крит. вреда'}, {'name': 'Разрушитель', 'descri': 'Пистолеты: +20/100 крит. шанс'}], [{'name': 'Убийца пришельцев', 'descri': '100% крит. вред пришельцам'}, {'name': 'Стрелок', 'descri': 'Пистолеты: +30% вреда'}, {'name': 'Двойной выстрел', 'descri': 'Пистолеты: стреляет дважды'}], [{'name': 'Попрыгунья', 'descri': '+15/100 шанс уворота'}, {'name': 'Танец пуль', 'descri': 'ПП поражают всех врагов'}, {'name': 'Ураган', 'descri': 'ПП: +20% восст. AP'}], [{'name': '', 'descri': ''}, {'name': '', 'descri': ''}, {'name': '', 'descri': ''}], [{'name': 'Разогрев', 'descri': '+10% вред за убитых врагов'}, {'name': 'Выносливость', 'descri': 'Восст. 1 HP в секунду'}, {'name': 'Дробь', 'descri': 'Ружья: +30% вреда'}], [{'name': 'Доступ W', 'descri': 'Доступно оружие пришельцев'}, {'name': 'Доступ T', 'descri': 'Доступны девайсы пришельцев'}, {'name': 'Эксперт TW', 'descri': 'Снаряж. пришельцев: +20% вреда'}], [{'name': 'Посвящение', 'descri': 'Холодное: цель теряет 1 AP'}, {'name': 'Просветление', 'descri': '15% шанс походить ещё раз'}, {'name': 'Откровение', 'descri': 'Холодное: +50% вреда'}], [{'name': 'Поддержка', 'descri': '+2 DR всем членам команды'}, {'name': 'Тяжеловес', 'descri': 'Ракетницы/гран-мёты: +10 вреда'}, {'name': 'Воля к победе', 'descri': '50% шанс избежать смерти'}], [{'name': 'Манёвр', 'descri': '+15/100 шанс уворота'}, {'name': 'Наведение', 'descri': 'Снайперские винтовки: -3 AP'}, {'name': 'Полёт', 'descri': '+15/100 шанс уворота'}], [{'name': 'Целитель', 'descri': 'Аптечки: +30% макс. сила'}, {'name': 'Святая защита', 'descri': '+100% DR если безоружна'}, {'name': 'Поток энергии', 'descri': '+50% восст. EP'}], [{'name': 'Гнев', 'descri': '+15% вреда после крит. раны'}, {'name': 'Агрессия', 'descri': '+10% восст. AP если HP < 50%'}, {'name': 'Ярость', 'descri': '100% шанс крит. если HP < 30%'}], [{'name': 'Асоциал', 'descri': '-15% Def другим членам команды'}, {'name': 'Убийца', 'descri': 'Любое оружие: +10% вреда'}, {'name': 'Адская прыть', 'descri': '+25% восст. AP'}]]; }; v2.localEn = function () { this.talk = new TalkDataEn(); this.areas[0].caption = 'K.A.U.F.O.\nOfficial\nSecret Base'; this.areas[0].caption2 = 'K.A.U.F.O. Official Secret Base'; this.areas[1].caption = 'Integra City'; this.areas[2].caption = 'Astral Village'; this.areas[3].caption = 'Nikky Village'; this.areas[4].caption = 'Summer Garden'; this.areas[5].caption = 'Raymonde Village'; this.areas[6].caption = 'Meta-Warriors\nHideout'; this.areas[6].caption2 = 'Meta-Warriors Hideout'; this.areas[7].caption = 'Oasis'; this.areas[8].caption = 'Alien Base'; this.areas[9].caption = 'Beta Village'; this.areas[10].caption = 'Kameron City'; this.areas[11].caption = 'Nevermore Town'; this.areas[12].caption = 'Rainland'; this.areas[13].caption = 'UFO Site 1'; this.areas[14].caption = 'UFO Site 2'; this.areas[15].caption = 'UFO Site 3'; this.areas[16].caption = 'UFO Site 4'; this.areas[17].caption = 'UFO Site 5'; this.areas[18].caption = 'UFO Site 6'; this.areas[19].caption = 'Kalister'; this.areas[20].caption = 'Sirth'; this.areas[21].caption = 'Dead City\nCalipso'; this.areas[21].caption2 = 'Dead City Calipso'; this.areas[22].caption = 'Uncle Sam\'s Farm'; this.areas[23].caption = 'Gibson City'; this.areas[24].caption = 'Casteda City'; this.areas[25].caption = 'Vladsville'; this.areas[26].caption = 'Port'; this.areas[27].caption = 'Jade Island'; this.areas[28].caption = 'Military Base'; this.areas[29].caption = 'Dark Capitol City'; this.areas[30].caption = 'Alpha Village'; this.areas[31].caption = 'Sarreno+ Lab'; this.areas[31].caption2 = undefined; this.areas[32].caption = 'Highland City'; this.npc = new NPCDataEn(); this.chars[0].name = 'Grid'; this.chars[1].name = 'Key'; this.chars[2].name = 'Katenka'; this.chars[3].name = 'CID'; this.chars[4].name = 'Kurt'; this.chars[5].name = 'Karry'; this.chars[6].name = 'Kage'; this.chars[7].name = 'Lexic'; this.chars[8].name = 'Craven'; this.chars[9].name = 'Feather'; this.chars[10].name = 'Nina X'; this.chars[11].name = 'Hell'; this.quests.ufo_visit = {'title': 'ALIEN TRACE'}; this.tasks.ufo_visit = ['I should check out the place where an alien ship was noticed. Just as usual.', 'According to the scorched earth and remains of a disco, aliens did visit that place. I need to talk to people in the nearby village.', 'It seems that, after the disco, the aliens moved in the direction of Integra City.', 'All the citizens of Integra are gone! I should report to Nathan immediately. I think they\'re up to something.']; this.quests.natan_plan = {'title': 'NATHAN\'S GREAT PLAN'}; this.tasks.natan_plan = ['After hearing my report, Nathan needs time to think out a plan. I\'ll return to him in an hour.', 'I need to get a temporal TV from Carl Vaccuol in Raymonde Village and use it in each of the 6 places where aliens were recently seen.', 'I\'ve collected the video data and Nathan\'s reviewing it. I think I\'ll return in an hour or two.', 'Nathan\'s discovered the location of the main alien base on our planet. It\'s in the middle of the Horse Sea so I need to find out a way to get there. It would probably be useful to ask at Port Town.', 'I should kill 3 grabbers in Last Stand plains region to prove to an ambitious captain that I\'m worthy of boarding his ship, \'Impendence\'.', 'The stupid captain gave me another task. I should catch the thieves who stole \'Impendence\'s engine.', 'I\'m going to the secret alien base. Here it is - the moment of truth...']; this.quests.meta_oasis = {'title': 'OASIS AND META-WARRIORS'}; this.tasks.meta_oasis = ['Damn! The Meta-Warriors captured me and forced me to help them! Now I have to finish their task to earn back my freedom. The task is to broker an alliance between the Meta-Warriors and Oasis.', 'Oasis wants Internet access and a water-supply before they\'ll agree to cooperate.']; this.quests.meta_raimonde = {'title': 'HELP RAYMONDE VILLAGE'}; this.tasks.meta_raimonde = ['Lina lied to me! Now she wants me to do another job and I have no choice but to help! I now have to help Raymonde Village with their problem.', 'There really was a problem in Raymonde Village. Their great scientist Carl Vaccuol somehow disappeared. The clues suggest I need to go to Summer Garden.', 'I\'ve helped Raymonde Village. Now I have to report to Lina. This time she\'d best do what I want or I\'ll kill her.']; this.quests.meta_uprise = {'title': 'META-FIGHTERS\' REBELLION'}; this.tasks.meta_uprise = ['For some reasons I\'ve agreed to help Meta-fighters\' Rebellion. I have to return to Raymonde Village and help both Smith and Carl to make preparations for the Rebellion.', 'I\'ve helped both scientists.', 'Next stage of the Rebellion – make alliance with the dead city, Calipso.', 'Calipso will agree to cooperate only if the Meta-Warriors can return them \'back to life\'. I have to report their condition to Lina.', 'Mikhael from Raymonde village might be able to solve the problem of Calipso.', 'I\'ve persuaded Mikhael to help Calipso. Now I\'ll go and report to Fia.', 'As expected, now the zombies are willing to help. Must report that to Lina.', 'This Rebellion is fun. What shall I do next? Have to ask Lina.', 'A problem! Meta-Warriors are out of money so they need to find a sponsor. My task is to go to Casteda and find an investor there.', 'I\'ve secured the investment. Need to report to Lina.', 'It was well worth it! The payment for this task really cheered me up.', 'The Rebellion has started!.. I\'m not really sure of what I\'m doing but I think I need to attack the Military Base.', 'The Revolution is almost here! I\'ve destroyed the Military Base and now must return to Lina for further instructions.', 'My next and final task... I must attack Dark Capitol City and kill Myst the President.']; this.quests.astral_flowers = {'title': 'ASTRAL FLOWERS'}; this.tasks.astral_flowers = ['I was asked by a strange farmer in Astral Village to collect 10 of the astral seeds that randomly drop from enemies in the region.']; this.quests.bristol_divorce = {'title': 'BRISTOL\'S DIVORCE'}; this.tasks.bristol_divorce = ['I\'ve agreed to help Bristol serve Seth, my pal from Casteda City, with divorce papers.', 'Seth wasn\'t upset and signed the papers. I\'ll go and tell Bristol she\'s free again.']; this.quests.debt_collection = {'title': 'DEBT RETURNER'}; this.tasks.debt_collection = ['I have to convince Vermuth from Beta Village to repay his debt to Ace.', 'The debt is repaid. I\'ll go and speak to Ace.']; this.quests.love_story = {'title': 'LOVE LETTER'}; this.tasks.love_story = ['Liz from Rainland is in love with Stan, Cameron\'s mayor! Should I help Liz and deliver her love letter to Stan?', 'I\'ve agreed to help Liz deliver her love letter to Stan in Cameron City.', 'Stan seems to be positive about meeting Liz. Gonna tell Liz about that.']; this.quests.love_story_2 = {'title': 'LOVE LETTER-2'}; this.tasks.love_story_2 = ['Liz and Stan didn\'t work out but she already has a new love - Miguel from Garth... another love letter to another man.', 'Miguel was happy to get the love letter. Let\'s tell Liz about the results.']; this.quests.rain_machine = {'title': 'RAINMACHINE'}; this.tasks.rain_machine = ['There is NO rain in Rainland... apparently because their rainmachine is broken. Someone in Oasis might know how to fix it.', 'The problem with the rainmachine is solved. Now I need to let the villagers in on the good news.']; this.quests.soil_analysis = {'title': 'SOIL SAMPLES'}; this.tasks.soil_analysis = ['If I can collect soil samples from all regions in the continent I\'ll get a great reward.']; this.quests.love_hunter = {'title': 'LOVE HUNTER'}; this.tasks.love_hunter = ['A garbage man from Gibson City asked me to get the chip of love from Smith Becord in Raymonde Village and somehow implant it in Biby from Kalister. Only if I have nothing better to do.', 'I\'ve taken a love-chip from Becord. I wonder how I can implant it in Biby?..', 'Well, implanting the chip in Biby wasn\'t that hard at all. Man, she\'s so DUMB. Now I can report back to John in Gibson City.']; this.quests.infidels = {'title': 'UNFAITHUL ONES'}; this.tasks.infidels = ['I have to destroy 13 hell machines all around the world for a cultist named Ibrahim at Kalister.']; this.quests.raiding_raiders = {'title': 'GET RID OF RAIDERS'}; this.tasks.raiding_raiders = ['I promised to kill 20 raiders around Gibson City and report back to Georg.']; this.quests.raiding_mutants = {'title': 'GET RID OF MUTANTS'}; this.tasks.raiding_mutants = ['Once I killed the raiders, a new threat appeared - mutants. Now I have to kill 25 of them and report to Georg.']; this.quests.michels_medallion = {'title': 'MICHELLE\'S PENDANT'}; this.tasks.michels_medallion = ['If I ever find a pendant dropped from a bandit it\'ll be Michelle\'s. She asked me to bring it back to her if it turns up.']; this.quests.clean_suburbs = {'title': 'CLEAR THE SUBURB'}; this.tasks.clean_suburbs = ['Jax asked me to kill 50 bandits around Sirith and then report back to him.']; this.quests.talks_with_aliens = {'title': 'TALKING TO ALIENS'}; this.tasks.talks_with_aliens = ['Sometimes you look back on your life and realise that everything you did was wrong. I quit K.A.U.F.O. and want to learn the truth. My former comrades will probably hunt me down now.', 'I know the truth now. I\'ll help Sir F because his intentions are pure. For now I have to return to Integra and wait for further instructions, though.', 'Cid killed Lina and took control of the Meta-Warriors. I have to stop him before he interferes in Sir F\'s plans.', 'K.A.U.F.O. are attacking the alien base! I have to return immediatley and help Sir F.', 'My task is to go to Kalister and protect Sir F while his speech is broadcast to the planet.']; this.quests.keabo_style = {'title': 'KIBO\'S CD'}; this.tasks.keabo_style = ['Kibo asked me to promote his CD for the radio without using any money. No idea how to do that.', 'I have to tell Kibo he\'s getting his debut.']; this.quests.feel_of_guilty = {'title': 'THE BLAME'}; this.tasks.feel_of_guilty = ['I must go to Nevermore town and apologize to the mayor for Hydra\'s recent misbehaviour.']; this.quest_items[0] = {'name': 'Temporal TV', 'descri': ''}; this.quest_items[1] = {'name': 'Temporal record', 'descri': 'A videorecord made by a temporal TV.\n Recorded near Nikky village.'}; this.quest_items[2] = {'name': 'Temporal record', 'descri': 'A videorecord made by a temporal TV.\n Recorded near Vladsville.'}; this.quest_items[3] = {'name': 'Temporal record', 'descri': 'A videorecord made by a temporal TV.\n Recorded near Gibson City.'}; this.quest_items[4] = {'name': 'Temporal record', 'descri': 'A videorecord made by a temporal TV.\n Recorded near Oasis.'}; this.quest_items[5] = {'name': 'Temporal record', 'descri': 'A videorecord made by a temporal TV.\n Recorded near Casteda City.'}; this.quest_items[6] = {'name': 'Temporal record', 'descri': 'A videorecord made by a temporal TV.\n Recorded near Beta Village.'}; this.quest_items[7] = {'name': 'Astral seed', 'descri': ''}; this.quest_items[8] = {'name': 'Chip 707', 'descri': ''}; this.quest_items[9] = {'name': 'Love letter to Miguel', 'descri': ''}; this.quest_items[10] = {'name': 'Bristol\'s photo album', 'descri': ''}; this.quest_items[11] = {'name': 'Love letter to Stan', 'descri': ''}; this.quest_items[12] = {'name': 'Vacuum engine', 'descri': ''}; this.quest_items[13] = {'name': 'Kibo\'s promo CD', 'descri': ''}; this.quest_items[14] = {'name': 'A key to Geraldio\'s castle', 'descri': ''}; this.quest_items[15] = {'name': 'Chip 404', 'descri': ''}; this.quest_items[16] = {'name': 'Love chip', 'descri': ''}; this.quest_items[17] = {'name': 'Michelle\'s pendant', 'descri': ''}; this.quest_items[18] = {'name': 'Aliens\' videocam', 'descri': ''}; this.quest_items[19] = {'name': 'Chip 101', 'descri': ''}; this.quest_items[20] = {'name': 'Soil collector', 'descri': ''}; this.quest_items[21] = {'name': 'Aliens\' radio', 'descri': ''}; this.quest_items[22] = {'name': 'Shining sphere', 'descri': ''}; this.quest_items[23] = {'name': 'Coupon for free food', 'descri': 'A coupon for a free dinner in Summer Garden.'}; this.quest_items[24] = {'name': 'Titan chain BDX', 'descri': ''}; this.quest_items[25] = {'name': 'Galvanizator S7', 'descri': ''}; this.quest_items[26] = {'name': 'Jade piston', 'descri': ''}; this.quest_items[27] = {'name': 'Vaccuol\'s credit card', 'descri': ''}; this.regions[0].name = 'Fading Lands'; this.regions[1].name = 'Carben Valley'; this.regions[2].name = 'Integra Region'; this.regions[3].name = 'Silent Desert'; this.regions[4].name = 'Nexuser Region'; this.regions[5].name = 'Ameno Valley'; this.regions[6].name = 'Espian Plains'; this.regions[7].name = 'Gessier Plains'; this.regions[8].name = 'Vectral Heights'; this.regions[9].name = 'Demien Heights'; this.regions[10].name = 'Hellsing Valley'; this.regions[11].name = 'Gibson Region'; this.regions[12].name = 'Strat Plateau'; this.regions[13].name = 'Left Mids'; this.regions[14].name = 'Deus Mountain Chain'; this.regions[15].name = 'Tatin\'s Heights'; this.regions[16].name = 'Last Stand Plains'; this.regions[17].name = 'Paradark Region'; this.regions[18].name = 'Top Secret Region'; this.perks = [[{'name': 'Gun Master', 'descri': 'Pistols: +20% damage'}, {'name': 'Powered Shot', 'descri': 'Pistols: +10 crit. damage'}, {'name': 'Destroyer', 'descri': 'Pistols: +20/100 crit. chance'}], [{'name': 'Alien Hunter', 'descri': '100% crit. against aliens'}, {'name': 'Marksman', 'descri': 'Pistols: +30% damage'}, {'name': 'Double shot', 'descri': 'Fires twice when using pistol'}], [{'name': 'Fidget', 'descri': '+15/100 evasion chance'}, {'name': 'Bullet Dance', 'descri': 'SMG hits every enemy'}, {'name': 'Hurricane', 'descri': '+20% AP regen with SMG'}], [{'name': '', 'descri': ''}, {'name': '', 'descri': ''}, {'name': '', 'descri': ''}], [{'name': 'Warm Up', 'descri': '+10% damage/each KO\'ed enemy'}, {'name': 'Endurance', 'descri': 'Restores 1 HP each second'}, {'name': 'Shotgun Master', 'descri': 'Shotguns: +30% damage'}], [{'name': 'W Access', 'descri': 'Can use alien weapons'}, {'name': 'T Access', 'descri': 'Can use alien devices'}, {'name': 'TW Expertise', 'descri': 'Alien equipment: +20% damage'}], [{'name': 'Initiate', 'descri': 'Melee: target loses 1 AP'}, {'name': 'Disciple', 'descri': '15% chance to get a bonus turn'}, {'name': 'Adept', 'descri': 'Melee: +50% damage'}], [{'name': 'Supportive Song', 'descri': 'All team members get +2 DR'}, {'name': 'Heavy-weight', 'descri': 'Launchers: +10 damage'}, {'name': 'Persistence', 'descri': '50% chance to resist KO'}], [{'name': 'Maneuvers', 'descri': '+15/100 evasion chance'}, {'name': 'Targeting', 'descri': 'Sniper rifles: -3 AP cost'}, {'name': 'Flight', 'descri': '+15/100 evasion chance'}], [{'name': 'Healer', 'descri': 'Medikits: +30% heal power'}, {'name': 'Holy Shield', 'descri': '+100% DR if no weapon equipped'}, {'name': 'Energy Flow', 'descri': '+50% EP regen'}], [{'name': 'Anger', 'descri': '+15% damage after crit. hit'}, {'name': 'Aggression', 'descri': '+10% AP regen when HP < 50%'}, {'name': 'Rage', 'descri': '100% crit. hits when HP < 30%'}], [{'name': 'Antisocial', 'descri': '-15% DEF to other team members'}, {'name': 'Weapon Mastery', 'descri': 'All weapons: +10% damage'}, {'name': 'Demonic Speed', 'descri': '+25% AP regen'}]]; }; ASSetPropFlags(_global.WorldData.prototype, null, 1); } #endinitclip } movieClip 1941 __Packages.ItemData { #initclip if (!_global.ItemData) { var v1 = function () { super(); this.addMelee(4, 4, 3, 1, 'snd_wp_kick', 'Fist'); this[0].cost = 0; this.addMelee(5, 7, 3, 1, 'snd_wp_cut', 'Knife'); this.addMelee(4, 10, 4, 1, 'snd_wp_kick', 'Tube'); this.addMelee(5, 9, 3, 3, 'snd_wp_kick', 'Knuckles'); this.addMelee(7, 11, 4, 4, 'snd_wp_kick', 'Bat'); this.addMelee(5, 12, 3, 5, 'snd_wp_cut', 'Hatchet'); this.addMelee(8, 14, 3, 10, 'snd_wp_cut', 'Machete'); this.addMelee(8, 18, 4, 12, 'snd_wp_chainsaw', 'Chainsaw'); this.addMelee(6, 21, 3, 18, 'snd_wp_kick', 'Robopunch'); this.addMelee(11, 18, 3, 21, 'snd_wp_cut', 'Sword'); this.addMelee(0, 0, 0, 0, 'snd_wp_kick', 'Lightsaber'); this[this.length - 1].spam = true; this.addPistol(4, 8, 3, 1, 'snd_wp_pistol', 'Magnum'); this.addPistol(5, 9, 4, 1, 'snd_wp_pistol', 'PM Makarov'); this.addPistol(5, 10, 3, 4, 'snd_wp_pistol', 'Beretta 92'); this.addPistol(7, 12, 4, 5, 'snd_wp_pistol', 'Desert Eagle'); this.addPistol(5, 14, 3, 7, 'snd_wp_pistol', 'Glock 17'); this.addPistol(8, 15, 4, 8, 'snd_wp_pistol', 'Python'); this.addPistol(9, 17, 4, 10, 'snd_wp_pistol', 'G5 Breed'); this.addPistol(10, 14, 3, 13, 'snd_wp_single_silent', 'FK9 IntKill'); this.addPistol(8, 25, 5, 15, 'snd_wp_pistol', 'Gunblade'); this.addPistol(11, 20, 4, 18, 'snd_wp_pistol', 'Peacemaker'); this.addPistol(9, 20, 3, 20, 'snd_wp_pistol', 'Punisher'); this.addPistol(10, 24, 3, 24, 'snd_wp_pistol', 'Zero Void'); this.addSMG(5, 8, 5, 1, 'snd_wp_smg', 'TMP'); this.addSMG(6, 10, 5, 3, 'snd_wp_smg', 'UZI'); this.addSMG(7, 12, 5, 7, 'snd_wp_smg', 'MP5'); this.addSMG(6, 13, 4, 10, 'snd_wp_smg', 'FN P90'); this.addSMG(7, 16, 5, 12, 'snd_wp_smg', 'Colt 633'); this.addSMG(9, 12, 4, 14, 'snd_wp_smg', 'Rapid'); this.addSMG(8, 18, 5, 15, 'snd_wp_smg', 'Grinder'); this.addSMG(7, 21, 5, 19, 'snd_wp_burst_silent', 'The Flame'); this.addShotgun(3, 10, 7, 4, 'snd_wp_shotgun', 'Sawn-off'); this.addShotgun(5, 12, 7, 8, 'snd_wp_shotgun', 'Benelli M3'); this.addShotgun(3, 19, 8, 10, 'snd_wp_shotgun', 'Benelli M4'); this.addShotgun(4, 17, 7, 14, 'snd_wp_shotgun', 'Neostead'); this.addShotgun(5, 19, 7, 18, 'snd_wp_shotgun', 'Jackhammer'); this.addShotgun(3, 25, 8, 22, 'snd_wp_shotgun', 'Combat Shot'); this.addShotgun(5, 27, 7, 26, 'snd_wp_shotgun', 'Flacker'); this.addHeavy(8, 15, 8, 5, 'snd_wp_heavy', 'RPK'); this.addHeavy(10, 17, 8, 9, 'snd_wp_heavy', 'M60'); this.addHeavy(9, 21, 8, 12, 'snd_wp_heavy', 'MG4'); this.addHeavy(7, 27, 9, 15, 'snd_wp_heavy', 'S.A.W.'); this.addHeavy(10, 26, 9, 18, 'snd_wp_heavy', 'Minigun'); this.addHeavy(8, 29, 9, 20, 'snd_wp_heavy', 'Vulcan'); this.addHeavy(12, 32, 8, 26, 'snd_wp_heavy', 'Avenger'); this.addAssault(5, 15, 6, 5, 'snd_wp_assault', 'AK-47'); this.addAssault(8, 12, 6, 6, 'snd_wp_assault', 'Colt M4'); this.addAssault(6, 19, 6, 10, 'snd_wp_assault', 'SIG SG 552'); this.addAssault(10, 18, 6, 14, 'snd_wp_assault', 'Steyr AUG'); this.addAssault(12, 20, 6, 19, 'snd_wp_assault', 'HK G11'); this.addAssault(18, 21, 6, 25, 'snd_wp_assault', 'Pulsator'); this.addGL(1, 17, 8, 5, 'snd_wp_gl', 'Thumper'); this.addGL(1, 26, 10, 14, 'snd_wp_gl', 'Milkor'); this.addRL(0, 0, 0, 0, 'snd_wp_rl', 'RPG'); this[this.length - 1].spam = true; this.addRL(1, 23, 10, 11, 'snd_wp_rl', 'Bazooka'); this.addRL(0, 0, 0, 0, 'snd_wp_rl', 'M202'); this[this.length - 1].spam = true; this.addRL(0, 0, 0, 0, 'snd_wp_rl', 'Rainmaker'); this[this.length - 1].spam = true; this.addRL(1, 33, 12, 21, 'snd_wp_rl', 'BBX Launcher'); this.addSniper(9, 19, 8, 1, 'snd_wp_sniper', 'Scout'); this.addSniper(12, 25, 8, 5, 'snd_wp_sniper', 'SVD Dragunov'); this.addSniper(16, 30, 8, 10, 'snd_wp_sniper', 'AWM'); this.addSniper(21, 29, 8, 13, 'snd_wp_single_silent', 'Vintorez'); this.addSniper(18, 35, 8, 16, 'snd_wp_single_silent', 'Barret M90'); this.addSniper(23, 33, 8, 19, 'snd_wp_single_silent', 'Vykhlop'); this.addSniper(22, 44, 7, 25, 'snd_wp_single_silent', 'Gauss Rifle'); this.addSniper(20, 40, 7, 6, 'snd_wp_single_silent', 'A-Gun'); this[this.length - 1].alien = true; this.addPistol(10, 20, 3, 6, 'snd_wp_single_silent', 'A-Blaster'); this[this.length - 1].alien = true; this.addAssault(5, 20, 2, 6, 'snd_wp_burst_silent', 'A-Caster'); this[this.length - 1].alien = true; this.addRL(20, 20, 10, 6, 'snd_wp_gl', 'A-Apo'); this[this.length - 1].alien = true; var v10 = this.length; var v6 = 1; while (v6 < v10) { var v3 = this[v6]; var v7 = (v3.dmg_min + v3.dmg_max) / 2 / v3.ap; var v4 = 1; switch (v3.type2) { case EWeapon.SINGLE: v4 = 1; break; case EWeapon.BURST: v4 = 1.5; break; case EWeapon.SHOT: v4 = 2.5; break; case EWeapon.SPLASH: v4 = 3.5; break; case EWeapon.MELEE: v4 = 0.8; } v7 *= 1 + v4; var v8 = v7 - 1; if (v8 < 0.2) { v8 = 0.2; } var v9 = 30; var v5 = v3.level; switch (v6) { case 65: v5 = 22; break; case 66: v5 = 12; break; case 67: v5 = 22; break; case 68: v5 = 30; } v3.cost = Math.round(v7 * v8 * v9 * v5); if (v3.ap == 0) { v3.cost = 999999; } if (v3.ap == 0) { v3.level = 40; } ++v6; } this.addArmor(2, 200, 1, 'Leather Jacket'); this.addArmor(3, 650, 3, 'Leather Armor'); this.addArmor(4, 1500, 5, 'Leather Armor'); this.addArmor(5, 3500, 8, 'Metal Armor'); this.addArmor(6, 6000, 10, 'Metal Armor'); this.addArmor(7, 12000, 13, 'KAUFO Armor'); this.addArmor(8, 16000, 15, 'KAUFO Armor'); this.addArmor(9, 22000, 18, 'Combat Armor'); this.addArmor(10, 26000, 20, 'Combat Armor'); this.addArmor(12, 48000, 23, 'Power Armor'); this.addArmor(15, 72000, 25, 'Power Armor'); this.addDeviceES(40, 5000, 10, 'Demolisher', 'Inflicts damage:\n20+0.6*TCH', 'snd_dev_dmg'); this.addDeviceES(20, 1500, 1, 'Punish', 'Inflicts damage:\n15+0.3*TCH', 'snd_dev_dmg'); this.addDeviceEM(50, 7000, 12, 'Bombada', 'Inflicts damage:\n5+0.3*TCH', 'snd_dev_dmg'); this.addDeviceEM(30, 3500, 6, 'Exploda', 'Inflicts damage:\n5+0.1*TCH', 'snd_dev_dmg'); this.addDevicePS(0, 1000, 1, 'Lemon I', '+25% grenade damage'); this.addDevicePS(0, 3000, 5, 'Lemon II', '+50% grenade damage'); this.addDevicePS(0, 9000, 10, 'Lemon III', '+100% grenade damage'); this.addDevicePS(0, 5000, 5, 'Black Runner 1', '+10% AP regen'); this.addDevicePS(0, 10000, 10, 'Black Runner 2', '+25% AP regen'); this.addDevicePS(0, 20000, 15, 'Black Runner 3', '+50% AP regen'); this.addDeviceFX(5, 500, 1, 'S-Barrier', 'Defend; +1 DR bonus'); this.addDeviceFX(7, 1000, 5, 'Barrier', 'Defend; +2 DR bonus'); this.addDeviceFX(10, 4000, 10, 'Barrier-X', 'Defend; +5 DR bonus'); this.addDeviceES(9, 1500, 4, 'Ghost', '-2 DR'); this.addDeviceEM(18, 4500, 8, 'Evil Ghost', '-2 DR'); this.addDeviceEM(36, 10500, 12, 'Dead Ghost', '-4 DR'); this.addDevicePS(0, 1700, 3, 'Enforcer', '+10% weapon damage'); this.addDevicePS(0, 4300, 9, 'theKiller', '+25% weapon damage'); this.addDevicePS(0, 8500, 13, 'Demon-6', '+50% weapon damage'); this.addDevicePS(0, 7500, 9, 'Vampire XR', 'Converts 10% of damage to HP'); this.addDeviceFX(10, 2000, 3, 'LeadeR', '+2 DR'); this.addDevicePS(0, 15000, 15, 'Double Fellow', 'Double attack with weapon'); this.addDevicePS(0, 6000, 4, 'Shadow Man', '+30/100 evasion chance'); this.addDeviceFM(45, 11000, 8, 'Shadow Fog', '+30/100 evasion chance for 30 sec'); this.addDeviceES(20, 6000, 5, 'Venom Sting', '3-5 damage every 3 sec for 30 sec'); this.addDeviceES(60, 15000, 15, 'Venom Bite', '10-20 damage every 3 sec for 30 sec'); this.addDeviceEM(60, 12000, 10, 'Radioactive C', '3-5 damage every 3 sec for 20 sec'); this.addDeviceFM(30, 5000, 6, 'Refresher', 'Removes harmful effects'); this.addDeviceFS(15, 4500, 1, 'Med Tech', 'Restores up to 10-30 HP', 'snd_dev_heal'); this.addDeviceFS(30, 6500, 10, 'Med Tech v2.0', 'Restores up to 40-80 HP', 'snd_dev_heal'); this.addDeviceFS(45, 11500, 20, 'Med Tech v3.0', 'Restores up to 80-120 HP', 'snd_dev_heal'); this.addDevicePS(0, 5500, 8, 'Counter-hero', 'Attacker takes 10-12 damage'); this.addDeviceFM(40, 9100, 7, 'Shield Field', '+30% DR for 60 sec'); this.addDeviceES(25, 8000, 8, 'Freezer4', '-25% AP regen for 60 sec'); this.addDeviceES(10, 15000, 10, 'SF Burner', '-30 Energy'); this.addDeviceFM(50, 30000, 15, 'X-Gassius', '+20% DR'); this[this.length - 1].alien = true; this.addDeviceES(40, 25000, 12, 'X-Deformus', 'Inflicts damage:\n15+0.5*TCH;\n-10% AP regen'); this[this.length - 1].alien = true; this.addDeviceES(75, 50000, 15, 'X-Confirmatus', 'Inflicts damage:\n30+1.0*TCH;\n-2 DR'); this[this.length - 1].alien = true; this.addDeviceES(35, 37000, 10, 'ScreameR', 'Damages for 30-60% of current HP'); this.addDeviceEM(30, 35000, 12, 'HellBringer', '5-10 damage for each 5 sec'); this.addDeviceFM(10, 0, 5, 'All-Heal', 'Heals 20% HP', 'snd_dev_heal'); this[this.length - 1].no_use = true; this.addDeviceFX(15, 0, 7, 'Break-Through', '100% Crit this turn'); this[this.length - 1].no_use = true; this.addDeviceFX(10, 3000, 1, 'Charge', 'Skip turn; 2x damage next turn'); this.addDevicePS(0, 8500, 4, 'Sharpshooter', 'Weapon attacks never miss'); this.addDeviceFX(15, 0, 10, 'Eat Brains', '100% damage this turn converted to HP'); this[this.length - 1].no_use = true; this.addDeviceFM(25, 0, 5, 'Order', 'Fully refill AP'); this[this.length - 1].no_use = true; this.addDevicePS(0, 0, 1, 'Ally Regen', 'Mass: +10% HP each turn', 'snd_dev_heal'); this[this.length - 1].no_use = true; this.addDevicePS(0, 0, 1, 'Self-Regen', '+30% HP each turn', 'snd_dev_heal'); this[this.length - 1].no_use = true; this.addDeviceEM(20, 0, 1, 'Voltage', '50% damage:\n20+0.6*TCH'); this[this.length - 1].no_use = true; this.addDeviceES(40, 0, 1, 'Death Ray', '60% to kill'); this[this.length - 1].no_use = true; this.addDevicePS(0, 3000, 1, 'LevelDown', '-2 weapon level requirement'); this.addDevicePS(0, 9000, 5, 'LevelDown+', '-5 weapon level requirement'); this.addDeviceFX(100, 50000, 18, 'RebirthStar', '+25 all skills'); this.addDevicePS(0, 45000, 10, 'Greed', 'Owner receives all battle XP'); this.addDevicePS(0, 30000, 15, 'Midas', '+30% money from battles'); this.addDeviceES(40, 50000, 5, 'HELL-Fire', 'Inflicts damage:\n25+1.0*TCH'); this[this.length - 1].hell = true; this.addDeviceEM(60, 75000, 10, 'HELL-Gate', 'Inflicts damage:\n20+0.3*TCH;\n-5 DR'); this[this.length - 1].hell = true; this.addDeviceES(60, 100000, 15, 'HELL-Dice', '150 damage to target; 50 damage to self'); this[this.length - 1].hell = true; this.addDeviceFX(25, 0, 1, 'BareKnuckle', '0.9*TCH'); this[this.length - 1].no_use = true; this.addGrenade(1, 40, 150, 1, 'Hand Grenade'); this.addGrenade(1, 60, 250, 8, 'RGD33'); this.addGrenade(1, 80, 750, 15, 'RGD5'); this.addGrenade(1, 100, 1000, 22, 'Plasmade'); this.addGrenade(100, 500, 50000, 30, 'Holy Grenade'); this[this.length - 1].type2 = EWeapon.MASSIVE; this.addGrenade(0, 0, 999999, 40, 'Flash Grenade'); this[this.length - 1].spam = true; this.addGrenade(0, 0, 0, 0, 'Incinerade'); this.addMedikit(20, 100, 1, 'Bandages'); this.addMedikit(40, 200, 5, 'Small Medikit'); this.addMedikit(60, 400, 10, 'Big Medikit'); this.addMedikit(80, 800, 15, 'Adv. Medikit'); this.addMedikit(100, 1600, 20, 'Combat Medikit'); this.addMassMedikit(20, 500, 5, 'Healing Orb'); this.addMassMedikit(40, 1000, 15, 'Healing Capsule'); this.addMassMedikit(60, 2000, 25, 'Healing Drone'); this.addMedikit(0, 999999, 40, 'Hydrotine'); this[this.length - 1].spam = true; this.addMedikit(30, 250, 5, 'Battery'); this[this.length - 1].recharge = true; this.addQuest(0, 'Astral Seed', 7); this.addQuest(0, 'Vacuum Engine', 12); this.addQuest(0, 'Castle Key', 14); this.addQuest(0, 'Medallion', 17); this.addQuest(0, 'Jade Piston', 26); this.addQuest(0, 'BDX Chain', 24); this.addQuest(0, 'S7 Halvanizer', 25); this.addPsi(6, 6, 6, 1, 'Grabber Psi 1'); this.addPsi(12, 12, 6, 10, 'Grabber Psi 2'); this.addPsi(18, 18, 5, 20, 'Grabber Psi 3'); this.addPsi(24, 24, 5, 25, 'Grabber Psi 4'); }; _global.ItemData = v1; _global.ItemData extends Array; var v2 = v1.prototype; v2.addMelee = function (dmg_min_, dmg_max_, ap_, level_, snd_, name_) { this.push({'type': EItem.WEAPON, 'type2': EWeapon.MELEE, 'type3': EItemType.MELEE, 'level': level_, 'dmg_min': dmg_min_, 'dmg_max': dmg_max_, 'ap': ap_, 'snd': snd_, 'name': name_}); }; v2.addPistol = function (dmg_min_, dmg_max_, ap_, level_, snd_, name_) { this.push({'type': EItem.WEAPON, 'type2': EWeapon.SINGLE, 'type3': EItemType.PISTOL, 'level': level_, 'dmg_min': dmg_min_, 'dmg_max': dmg_max_, 'ap': ap_, 'snd': snd_, 'name': name_}); }; v2.addSMG = function (dmg_min_, dmg_max_, ap_, level_, snd_, name_) { this.push({'type': EItem.WEAPON, 'type2': EWeapon.BURST, 'type3': EItemType.SMG, 'level': level_, 'dmg_min': dmg_min_, 'dmg_max': dmg_max_, 'ap': ap_, 'snd': snd_, 'name': name_}); }; v2.addShotgun = function (dmg_min_, dmg_max_, ap_, level_, snd_, name_) { this.push({'type': EItem.WEAPON, 'type2': EWeapon.SHOT, 'type3': EItemType.SHOTGUN, 'level': level_, 'dmg_min': dmg_min_, 'dmg_max': dmg_max_, 'ap': ap_, 'snd': snd_, 'name': name_}); }; v2.addHeavy = function (dmg_min_, dmg_max_, ap_, level_, snd_, name_) { this.push({'type': EItem.WEAPON, 'type2': EWeapon.BURST, 'type3': EItemType.HEAVY, 'level': level_, 'dmg_min': dmg_min_, 'dmg_max': dmg_max_, 'ap': ap_, 'snd': snd_, 'name': name_}); }; v2.addAssault = function (dmg_min_, dmg_max_, ap_, level_, snd_, name_) { this.push({'type': EItem.WEAPON, 'type2': EWeapon.BURST, 'type3': EItemType.ASSAULT, 'level': level_, 'dmg_min': dmg_min_, 'dmg_max': dmg_max_, 'ap': ap_, 'snd': snd_, 'name': name_}); }; v2.addGL = function (dmg_min_, dmg_max_, ap_, level_, snd_, name_) { this.push({'type': EItem.WEAPON, 'type2': EWeapon.SPLASH, 'type3': EItemType.GLAUNCHER, 'level': level_, 'dmg_min': dmg_min_, 'dmg_max': dmg_max_, 'ap': ap_, 'snd': snd_, 'name': name_}); }; v2.addRL = function (dmg_min_, dmg_max_, ap_, level_, snd_, name_) { this.push({'type': EItem.WEAPON, 'type2': EWeapon.SPLASH, 'type3': EItemType.RLAUNCHER, 'level': level_, 'dmg_min': dmg_min_, 'dmg_max': dmg_max_, 'ap': ap_, 'snd': snd_, 'name': name_}); }; v2.addSniper = function (dmg_min_, dmg_max_, ap_, level_, snd_, name_) { this.push({'type': EItem.WEAPON, 'type2': EWeapon.SINGLE, 'type3': EItemType.SNIPER, 'level': level_, 'dmg_min': dmg_min_, 'dmg_max': dmg_max_, 'ap': ap_, 'snd': snd_, 'name': name_}); }; v2.addPsi = function (dmg_min_, dmg_max_, ap_, level_, name_) { this.push({'type': EItem.WEAPON, 'type2': EWeapon.MASSIVE, 'type3': EItemType.PSI, 'level': level_, 'dmg_min': dmg_min_, 'dmg_max': dmg_max_, 'ap': ap_, 'snd': 'snd_dev_dmg', 'name': name_}); }; v2.addArmor = function (dr_, cost_, level_, name_) { this.push({'type': EItem.ARMOR, 'type2': EWeapon.PASSIVE, 'type3': EItemType.ARMOR, 'dr': dr_, 'cost': cost_, 'name': name_, 'level': level_}); }; v2.addDeviceES = function (energy_, cost_, level_, name_, descri_, snd_) { if (snd_ == undefined) { snd_ = 'snd_dev_debuff'; } this.push({'type': EItem.DEVICE, 'type2': EWeapon.SINGLE, 'cost': cost_, 'type3': EItemType.DEVICE, 'energy': energy_, 'cost': cost_, 'name': name_, 'level': level_, 'descri': descri_, 'snd': snd_}); }; v2.addDeviceEM = function (energy_, cost_, level_, name_, descri_, snd_) { if (snd_ == undefined) { snd_ = 'snd_dev_debuff'; } this.push({'type': EItem.DEVICE, 'type2': EWeapon.MASSIVE, 'cost': cost_, 'type3': EItemType.DEVICE, 'energy': energy_, 'cost': cost_, 'name': name_, 'level': level_, 'descri': descri_, 'snd': snd_}); }; v2.addDevicePS = function (energy_, cost_, level_, name_, descri_) { this.push({'type': EItem.DEVICE, 'type2': EWeapon.PASSIVE, 'cost': cost_, 'type3': EItemType.DEVICE, 'energy': energy_, 'cost': cost_, 'name': name_, 'level': level_, 'descri': descri_}); }; v2.addDeviceFS = function (energy_, cost_, level_, name_, descri_, snd_) { if (snd_ == undefined) { snd_ = 'snd_dev_buff'; } this.push({'type': EItem.DEVICE, 'type2': EWeapon.SINGLE, 'cost': cost_, 'type3': EItemType.DEVICE, 'energy': energy_, 'cost': cost_, 'name': name_, 'level': level_, 'descri': descri_, 'snd': snd_, 'heal': true}); }; v2.addDeviceFM = function (energy_, cost_, level_, name_, descri_, snd_) { if (snd_ == undefined) { snd_ = 'snd_dev_buff'; } this.push({'type': EItem.DEVICE, 'type2': EWeapon.MASSIVE, 'cost': cost_, 'type3': EItemType.DEVICE, 'energy': energy_, 'cost': cost_, 'name': name_, 'level': level_, 'descri': descri_, 'snd': snd_, 'heal': true}); }; v2.addDeviceFX = function (energy_, cost_, level_, name_, descri_, snd_) { if (snd_ == undefined) { snd_ = 'snd_dev_buff'; } this.push({'type': EItem.DEVICE, 'type2': EWeapon.SELF, 'cost': cost_, 'type3': EItemType.DEVICE, 'energy': energy_, 'cost': cost_, 'name': name_, 'level': level_, 'descri': descri_, 'snd': snd_, 'heal': true}); }; v2.addGrenade = function (dmg_min_, dmg_max_, cost_, level_, name_) { this.push({'type': EItem.USE, 'type2': EWeapon.SPLASH, 'type3': EItemType.GRENADE, 'dmg_min': dmg_min_, 'dmg_max': dmg_max_, 'cost': cost_, 'name': name_, 'level': level_}); }; v2.addMedikit = function (power_, cost_, level_, name_) { this.push({'type': EItem.HEAL, 'type2': EWeapon.SINGLE, 'type3': EItemType.MEDIKIT, 'heal': power_, 'cost': cost_, 'name': name_, 'level': level_}); }; v2.addMassMedikit = function (power_, cost_, level_, name_) { this.push({'type': EItem.HEAL, 'type2': EWeapon.MASSIVE, 'type3': EItemType.MEDIKIT, 'heal': power_, 'cost': cost_, 'name': name_, 'level': level_}); }; v2.addQuest = function (cost_, name_, quest_item_) { this.push({'type': EItem.QUEST, 'type2': EWeapon.PASSIVE, 'type3': EItemType.QUEST, 'cost': cost_, 'name': name_, 'quest_item': quest_item_, 'level': 1}); }; ASSetPropFlags(_global.ItemData.prototype, null, 1); } #endinitclip } movieClip 1942 __Packages.EWeapon { #initclip if (!_global.EWeapon) { var v1 = function () {}; _global.EWeapon = v1; var v2 = v1.prototype; v1.PASSIVE = -1; v1.MELEE = 0; v1.SINGLE = 1; v1.BURST = 2; v1.SHOT = 3; v1.SPLASH = 4; v1.MASSIVE = 5; v1.SELF = 6; ASSetPropFlags(_global.EWeapon.prototype, null, 1); } #endinitclip } movieClip 1943 __Packages.EItem { #initclip if (!_global.EItem) { var v1 = function () {}; _global.EItem = v1; var v2 = v1.prototype; v1.WEAPON = 1; v1.ARMOR = 2; v1.DEVICE = 3; v1.USE = 4; v1.HEAL = 5; v1.QUEST = 6; ASSetPropFlags(_global.EItem.prototype, null, 1); } #endinitclip } movieClip 1944 __Packages.EItemType { #initclip if (!_global.EItemType) { var v1 = function () {}; _global.EItemType = v1; var v2 = v1.prototype; v1.MELEE = 1; v1.PISTOL = 2; v1.SMG = 3; v1.SHOTGUN = 4; v1.HEAVY = 5; v1.ASSAULT = 6; v1.RLAUNCHER = 7; v1.GLAUNCHER = 8; v1.SNIPER = 9; v1.ARMOR = 10; v1.DEVICE = 11; v1.GRENADE = 12; v1.MEDIKIT = 13; v1.QUEST = 14; v1.PSI = 15; ASSetPropFlags(_global.EItemType.prototype, null, 1); } #endinitclip } movieClip 1945 __Packages.BandData { #initclip if (!_global.BandData) { var v1 = function () { super(); this.robot = [{'layout': ['RP', 'RP', '', '', '', '', '', ''], 'lvl_max': 9}, {'layout': ['RP', '', '', '', 'RP', '', '', ''], 'lvl_max': 9}, {'layout': ['RP', 'RP', 'RP', '', '', '', '', ''], 'lvl_min': 5, 'lvl_max': 14}, {'layout': ['RP', '', '', '', 'RP', 'RP', '', ''], 'lvl_min': 5, 'lvl_max': 14}, {'layout': ['RP', 'RP', '', '', 'RH', '', '', ''], 'lvl_min': 5, 'lvl_max': 14}, {'layout': ['RA', 'RA', '', '', 'RH', 'RH', '', ''], 'lvl_min': 8, 'lvl_max': 14}, {'layout': ['RP', 'RP', 'RP', '', 'RH', 'RH', '', ''], 'lvl_min': 10, 'lvl_max': 19}, {'layout': ['RG', 'RG', '', '', 'RH', 'RH', '', ''], 'lvl_min': 10, 'lvl_max': 19}, {'layout': ['RA', 'RA', 'RA', '', 'RH', 'RH', '', ''], 'lvl_min': 10, 'lvl_max': 19}, {'layout': ['RA', 'RA', 'RG', '', 'RH', 'RH', '', ''], 'lvl_min': 10, 'lvl_max': 19}, {'layout': ['RG', 'RA', 'RA', '', 'RH', 'RH', 'RH', ''], 'lvl_min': 15, 'lvl_max': 24}, {'layout': ['RG', 'RG', 'RG', '', 'RH', 'RH', 'RH', ''], 'lvl_min': 15, 'lvl_max': 24}, {'layout': ['RA', 'RA', 'RP', 'RP', 'RH', 'RH', '', ''], 'lvl_min': 15, 'lvl_max': 24}, {'layout': ['RG', 'RG', 'RG', 'RG', 'RH', 'RH', 'RH', ''], 'lvl_min': 20}, {'layout': ['RG', 'RG', 'RA', 'RA', 'RH', 'RH', 'RH', ''], 'lvl_min': 20}, {'layout': ['RA', 'RA', 'RA', 'RA', 'RH', 'RH', 'RH', ''], 'lvl_min': 20}]; this.meta = [{'layout': ['MM', '', '', '', 'MM', '', '', ''], 'lvl_max': 14}, {'layout': ['MM', '', '', '', 'MP', '', '', ''], 'lvl_max': 14}, {'layout': ['MP', '', '', '', 'MP', '', '', ''], 'lvl_max': 14}, {'layout': ['MM', 'MM', '', '', 'MM', '', '', ''], 'lvl_min': 10, 'lvl_max': 19}, {'layout': ['MM', 'MM', '', '', 'MP', '', '', ''], 'lvl_min': 10, 'lvl_max': 19}, {'layout': ['MM', '', '', '', 'MP', 'MP', '', ''], 'lvl_min': 10, 'lvl_max': 19}, {'layout': ['MP', '', '', '', 'MP', 'MP', '', ''], 'lvl_min': 10, 'lvl_max': 19}, {'layout': ['MM', '', '', '', 'MG', 'MG', '', ''], 'lvl_min': 10, 'lvl_max': 19}, {'layout': ['MM', 'MM', '', '', 'MM', 'MM', '', ''], 'lvl_min': 15, 'lvl_max': 24}, {'layout': ['MM', 'MM', '', '', 'MP', 'MP', 'MP', ''], 'lvl_min': 15, 'lvl_max': 24}, {'layout': ['MM', 'MM', 'MM', '', 'MP', 'MP', '', ''], 'lvl_min': 15, 'lvl_max': 24}, {'layout': ['MM', 'MM', '', '', 'MG', 'MG', 'MP', ''], 'lvl_min': 15, 'lvl_max': 24}, {'layout': ['MG', 'MG', '', '', 'MG', 'MG', '', ''], 'lvl_min': 15, 'lvl_max': 24}, {'layout': ['MM', 'MM', 'MM', '', 'MG', 'MG', 'MG', ''], 'lvl_min': 20}, {'layout': ['MM', 'MM', '', '', 'MG', 'MG', 'MG', 'MG'], 'lvl_min': 20}, {'layout': ['MP', 'MP', '', '', 'MG', 'MG', 'MG', 'MG'], 'lvl_min': 20}]; this.zombie = [{'layout': ['ZM', '', '', '', 'ZM', '', '', ''], 'lvl_max': 9}, {'layout': ['ZM', '', '', '', 'ZM', 'ZM', '', ''], 'lvl_min': 5, 'lvl_max': 14}, {'layout': ['ZM', 'ZM', '', '', 'ZZ', '', '', ''], 'lvl_min': 5, 'lvl_max': 14}, {'layout': ['ZM', 'ZM', 'ZM', '', 'ZZ', '', '', ''], 'lvl_min': 10, 'lvl_max': 19}, {'layout': ['ZM', 'ZM', '', '', 'ZM', 'ZM', '', ''], 'lvl_min': 15}, {'layout': ['ZM', 'ZM', 'ZM', '', 'ZZ', 'ZZ', '', ''], 'lvl_min': 15}]; this.mutant = [{'layout': ['UG', '', '', '', 'UG', '', '', ''], 'lvl_max': 9}, {'layout': ['UG', '', '', '', 'UG', 'UG', '', ''], 'lvl_min': 10, 'lvl_max': 19}, {'layout': ['UX', '', '', '', 'UX', 'UX', '', ''], 'lvl_max': 10, 'lvl_max': 19}, {'layout': ['UG', 'UG', '', '', 'UG', 'UZ', '', ''], 'lvl_min': 15, 'lvl_max': 24}, {'layout': ['UG', 'UG', '', '', 'UG', 'UZ', '', ''], 'lvl_min': 15, 'lvl_max': 24}, {'layout': ['UX', 'UX', '', '', 'UX', 'UZ', '', ''], 'lvl_min': 15, 'lvl_max': 24}, {'layout': ['UG', 'UG', 'UG', '', 'UZ', 'UZ', '', ''], 'lvl_min': 20}, {'layout': ['UG', 'UG', 'UX', '', 'UZ', 'UZ', '', ''], 'lvl_min': 20}, {'layout': ['UX', 'UX', 'UX', '', 'UZ', 'UZ', '', ''], 'lvl_min': 20}]; this.gartt = [{'layout': ['GA', '', '', '', 'GA', '', '', ''], 'lvl_max': 9}, {'layout': ['GA', '', '', '', 'GA', 'GA', '', ''], 'lvl_min': 10, 'lvl_max': 19}, {'layout': ['GA', 'GA', '', '', 'GX', '', '', ''], 'lvl_min': 10, 'lvl_max': 19}, {'layout': ['GA', 'GA', '', '', 'GA', 'GA', '', ''], 'lvl_min': 15, 'lvl_max': 19}, {'layout': ['GA', 'GA', 'GA', '', 'GX', 'GZ', '', ''], 'lvl_min': 15, 'lvl_max': 19}, {'layout': ['GA', 'GA', 'GA', '', 'GX', 'GX', '', ''], 'lvl_min': 15, 'lvl_max': 19}, {'layout': ['GA', 'GA', 'GA', '', 'GX', 'GX', 'GZ', ''], 'lvl_min': 20}, {'layout': ['GA', 'GA', 'GA', 'GA', 'GX', 'GX', 'GZ', ''], 'lvl_min': 25}]; this.bandit = [{'layout': ['BM', '', '', '', 'BM', '', '', ''], 'lvl_max': 9}, {'layout': ['BM', '', '', '', 'BP', '', '', ''], 'lvl_max': 9}, {'layout': ['BP', '', '', '', 'BP', '', '', ''], 'lvl_max': 9}, {'layout': ['BM', 'BM', '', '', 'BP', '', '', ''], 'lvl_min': 5, 'lvl_max': 14}, {'layout': ['BP', '', '', '', 'BP', 'BP', '', ''], 'lvl_min': 5, 'lvl_max': 14}, {'layout': ['BM', 'BM', '', '', 'BZ', '', '', ''], 'lvl_min': 5, 'lvl_max': 9}, {'layout': ['BM', 'BP', '', '', 'BP', 'BN', '', ''], 'lvl_min': 10, 'lvl_max': 19}, {'layout': ['BM', 'BM', '', '', 'BZ', 'BN', '', ''], 'lvl_min': 10, 'lvl_max': 19}, {'layout': ['BM', 'BM', '', '', 'BZ', 'BZ', '', ''], 'lvl_min': 10, 'lvl_max': 19}, {'layout': ['BM', 'BM', '', '', 'BZ', 'BN', '', ''], 'lvl_min': 10, 'lvl_max': 19}, {'layout': ['BM', 'BM', '', '', 'BZ', 'BZ', 'BP', ''], 'lvl_min': 15, 'lvl_max': 24}, {'layout': ['BM', 'BP', 'BP', '', 'BZ', 'BP', '', ''], 'lvl_min': 15, 'lvl_max': 24}, {'layout': ['BM', 'BM', 'BM', '', 'BP', 'BP', 'BP', ''], 'lvl_min': 15, 'lvl_max': 24}, {'layout': ['BP', 'BP', '', '', 'BZ', 'BZ', 'BN', 'BN'], 'lvl_min': 15, 'lvl_max': 24}, {'layout': ['BP', 'BP', 'BP', 'BP', 'BZ', 'BZ', 'BN', 'BN'], 'lvl_min': 20}, {'layout': ['BM', 'BM', 'BP', 'BP', 'BZ', 'BZ', 'BN', 'BN'], 'lvl_min': 20}]; this.rabbit = [{'layout': ['YG', '', '', '', 'YS', '', '', ''], 'lvl_max': 9}, {'layout': ['YG', 'YG', '', '', 'YS', '', '', ''], 'lvl_min': 10, 'lvl_max': 19}, {'layout': ['YG', 'YG', 'YG', '', 'YS', '', '', ''], 'lvl_min': 15, 'lvl_max': 24}, {'layout': ['YG', 'YG', '', '', 'YS', 'YS', '', ''], 'lvl_min': 15, 'lvl_max': 24}, {'layout': ['YG', 'YG', 'YG', '', 'YS', 'YS', '', ''], 'lvl_min': 20}, {'layout': ['YG', 'YG', 'YG', '', 'YS', 'YS', 'YS', ''], 'lvl_min': 25}]; this.raider = [{'layout': ['DP', '', '', '', 'DP', '', '', ''], 'lvl_max': 9}, {'layout': ['DU', '', '', '', 'DU', '', '', ''], 'lvl_max': 9}, {'layout': ['DP', 'DP', '', '', 'DZ', '', '', ''], 'lvl_min': 5, 'lvl_max': 14}, {'layout': ['DU', 'DU', '', '', 'DZ', '', '', ''], 'lvl_min': 5, 'lvl_max': 14}, {'layout': ['DP', 'DP', '', '', 'DU', 'DU', '', ''], 'lvl_min': 5, 'lvl_max': 14}, {'layout': ['DP', 'DP', 'DP', '', 'DZ', '', '', ''], 'lvl_min': 10, 'lvl_max': 19}, {'layout': ['DP', 'DP', 'DU', '', 'DZ', '', '', ''], 'lvl_min': 10, 'lvl_max': 19}, {'layout': ['DP', 'DP', 'DU', 'DU', 'DZ', 'DZ', '', ''], 'lvl_min': 15, 'lvl_max': 24}, {'layout': ['DP', 'DP', 'DP', 'DP', 'DZ', 'DZ', '', ''], 'lvl_min': 15, 'lvl_max': 24}, {'layout': ['DU', 'DU', 'DU', 'DU', 'DZ', 'DZ', '', ''], 'lvl_min': 15, 'lvl_max': 24}, {'layout': ['DP', 'DP', 'DU', 'DU', 'DZ', 'DZ', 'DZ', ''], 'lvl_min': 20}, {'layout': ['DP', 'DP', 'DP', 'DP', 'DZ', 'DZ', 'DZ', ''], 'lvl_min': 20}, {'layout': ['DU', 'DU', 'DU', 'DU', 'DZ', 'DZ', 'DZ', ''], 'lvl_min': 20}, {'layout': ['DP', 'DP', 'DU', 'DU', 'DZ', 'DZ', 'DZ', 'DZ'], 'lvl_min': 25}, {'layout': ['DP', 'DP', 'DP', 'DP', 'DZ', 'DZ', 'DZ', 'DZ'], 'lvl_min': 25}, {'layout': ['DU', 'DU', 'DU', 'DU', 'DZ', 'DZ', 'DZ', 'DZ'], 'lvl_min': 25}]; this.soldier = [{'layout': ['SA', '', '', '', 'SA', '', '', ''], 'lvl_max': 9}, {'layout': ['SA', 'SA', '', '', 'SH1', '', '', ''], 'lvl_max': 9}, {'layout': ['SA', 'SA', 'SA', '', 'SH2', '', '', ''], 'lvl_min': 10, 'lvl_max': 19}, {'layout': ['SA', 'SA', '', '', 'SN', 'SH2', '', ''], 'lvl_min': 10, 'lvl_max': 19}, {'layout': ['SA', 'SA', '', '', 'SN', 'SH2', 'SH2', ''], 'lvl_min': 15, 'lvl_max': 24}, {'layout': ['SA', 'SA', 'SA', '', 'SH2', 'SH2', '', ''], 'lvl_min': 15, 'lvl_max': 24}, {'layout': ['SA', 'SA', 'SA', '', 'SN', 'SH3', 'SH3', ''], 'lvl_min': 20}, {'layout': ['SA', 'SA', 'SA', '', 'SN', 'SH3', 'SH3', ''], 'lvl_min': 20}, {'layout': ['SA', 'SA', 'SA', '', 'SN', 'SN', 'SN', ''], 'lvl_min': 25}]; this.shade = [{'layout': ['HM', '', '', '', '', '', '', ''], 'lvl_max': 9}, {'layout': ['HM', '', '', '', 'HM', '', '', ''], 'lvl_min': 5, 'lvl_max': 14}, {'layout': ['HM', '', '', '', 'HM', 'HM', '', ''], 'lvl_min': 10, 'lvl_max': 19}, {'layout': ['HM', 'HM', '', '', 'HM', 'HM', '', ''], 'lvl_min': 15, 'lvl_max': 24}, {'layout': ['HM', 'HM', '', '', 'HM', 'HM', 'HM', ''], 'lvl_min': 20}, {'layout': ['HM', 'HM', 'HM', '', 'HM', 'HM', 'HM', ''], 'lvl_min': 25}]; this.alien = [{'layout': ['A2', '', '', '', '', '', '', ''], 'lvl_max': 4}, {'layout': ['A1', '', '', '', 'A2', '', '', ''], 'lvl_min': 5, 'lvl_max': 14}, {'layout': ['A1', 'A1', '', '', 'A2', '', '', ''], 'lvl_min': 10, 'lvl_max': 19}, {'layout': ['A1', 'A1', '', '', 'A2', 'A2', '', ''], 'lvl_min': 15, 'lvl_max': 24}, {'layout': ['A1', 'A1', 'A1', '', 'A2', 'A2', '', ''], 'lvl_min': 20}, {'layout': ['A1', 'A1', 'A1', '', 'A2', 'A2', 'A2', ''], 'lvl_min': 25}]; this.kaufo = [{'layout': ['KP', '', '', '', 'KP', '', '', ''], 'lvl_max': 10}, {'layout': ['KP', 'KP', '', '', 'KP', '', '', ''], 'lvl_min': 5, 'lvl_max': 14}, {'layout': ['KP', 'KP', '', '', 'KP', 'KP', '', ''], 'lvl_min': 10, 'lvl_max': 19}, {'layout': ['KP', 'KP', 'KP', '', 'KP', 'KP', '', ''], 'lvl_min': 15, 'lvl_max': 24}, {'layout': ['KP', 'KP', 'KP', '', 'KP', 'KP', 'KP', ''], 'lvl_min': 20}, {'layout': ['KP', 'KP', 'KP', 'KP', 'KP', 'KP', 'KP', 'KP'], 'lvl_min': 25}]; this.grabber = [{'layout': ['XX', '', '', '', '', '', '', '']}, {'layout': ['XX', '', '', '', 'XX', '', '', ''], 'lvl_min': 15}]; this.arma_machine = [{'layout': ['RA', 'RA', 'RG', 'RG', 'QCYB', 'RH', '', '']}]; this.sg_aliens = [{'layout': ['A1', 'A1', '', '', 'A2', '', '', '']}]; this.int_meta = [{'layout': ['MZ', 'MZ', '', '', 'MZ', 'MZ', '', '']}]; this.cid = [{'layout': ['MM', 'MM', '', '', 'MG', 'MG', 'QCID', '']}]; this.celester = [{'layout': ['SN', 'SN', 'SN', '', 'QCEL', 'SN', 'SN', '']}]; this.vermut = [{'layout': ['GA', 'GA', '', '', 'GZ', '', '', ''], 'lvl_max': 9}, {'layout': ['GA', 'GA', '', '', 'GX', 'GZ', '', ''], 'lvl_min': 10, 'lvl_max': 14}, {'layout': ['GA', 'GA', 'GA', '', 'GX', 'GZ', '', ''], 'lvl_min': 15, 'lvl_max': 19}, {'layout': ['GA', 'GA', 'GA', '', 'GX', 'GX', 'GZ', ''], 'lvl_min': 20, 'lvl_max': 24}, {'layout': ['GA', 'GA', 'GA', 'GA', 'GX', 'GX', 'GZ', ''], 'lvl_min': 25}]; this.garn = [{'layout': ['SA', 'SA', 'QGRN', '', 'QCEL', 'SH3', 'SH3', '']}]; this.rogue_meta = [{'layout': ['MM', 'MM', 'MM', '', 'MG', 'MG', 'MG', '']}]; this.tr_kaufo = [{'layout': ['KP', 'KP', 'KP', '', 'KP', 'KP', 'KP', '']}]; this.tr_mist = [{'layout': ['SA', 'SA', 'SA', '', 'QMST', 'QCEL', 'SH3', '']}]; this.tr_nathan = [{'layout': ['KP', 'KP', 'KP', '', 'QNTN', 'KP', 'KP', '']}]; this.hell = [{'layout': ['HM', 'HM', 'HM', 'HM', 'QHEL', '', '', '']}]; this.mist = [{'layout': ['QGRD', 'QGRD', 'QGRD', 'QGRD', 'QMST', 'SH3', 'SH3', 'SH3']}]; this.sir_f = [{'layout': ['A1', 'A1', 'A1', '', 'QSRF', 'A2', 'A2', '']}]; this.key = [{'layout': ['KP', 'KP', 'KP', '', 'QKEY', 'KP', 'KP', '']}]; this.karry = [{'layout': ['QKRY', '', '', '', '', '', '', '']}]; this.dek_shades = [{'layout': ['HM', 'HM', 'HM', '', 'HM', 'HM', 'HM', '']}]; this.dekkis = [{'layout': ['', '', '', '', 'QDKS', '', '', '']}]; }; _global.BandData = v1; _global.BandData extends Object; var v2 = v1.prototype; ASSetPropFlags(_global.BandData.prototype, null, 1); } #endinitclip } movieClip 1946 __Packages.NPCData { #initclip if (!_global.NPCData) { var v1 = function () { this.natan = {'id': 0, 'name': 'Натан', 'hello': 'Приветствую тебя, Грид. Где ты опять пропадал?'}; this.natan.descri = 'Глава У.В.И.Ф.Ж.'; this.natan.talk = [1, 2, 3, 4, 5, 6, 7]; this.halisted = {'id': 1, 'name': 'Галистед', 'hello': 'Здоров, паренек!'}; this.halisted.descri = 'Старейшина деревни'; this.halisted.talk = [27, 28, 29]; this.ho = {'id': 2, 'name': 'Фермер Хо', 'hello': 'Привет, мужик, чего ты хотел?'}; this.ho.descri = 'Лучший фермер деревни'; this.ho.talk = [33, 30, 31, 32]; this.alien1 = {'id': 3, 'name': 'Житель Саммер Гарден', 'hello': 'Добро пролеживать в Сад Лета, человек. Ты же такой же как я человек. Почему бы тебе не надеть на голову медведя?'}; this.alien1.descri = 'Обычный человек'; this.alien1.talk = [35]; this.alien2 = {'id': 4, 'name': 'Житель Саммер Гарден', 'hello': 'Иметь вас в нашем город большой честь.'}; this.alien2.descri = 'Обычный человек'; this.alien2.talk = [36]; this.alien3 = {'id': 5, 'name': 'Житель Саммер Гарден', 'hello': 'Я работаю официантом. Отчего-то получается не очень хорошо и начальство все время жалуется, что я плохо одеваюсь.'}; this.alien3.descri = 'Обычный человек'; this.alien3.talk = [37]; this.clod = {'id': 6, 'name': 'Клод', 'hello': 'Привет. Добро пожаловать в индустриальный городок Интегра.'}; this.clod.descri = 'Неопролетарий'; this.clod.talk = [41, 42, 43]; this.jake = {'id': 7, 'name': 'Джейк', 'hello': 'Здоров!'}; this.jake.descri = 'Пролетарий'; this.jake.talk = [44, 45]; this.alexa = {'id': 8, 'name': 'Алекса', 'hello': 'Привет, салага.'}; this.alexa.descri = 'Местная жительница'; this.alexa.talk = [46]; this.lindwid = {'id': 9, 'name': 'Линдвид', 'hello': 'Не отвлекай меня! Я очень занята.'}; this.lindwid.descri = 'Инженер-проектировщик'; this.lindwid.talk = [47, 48]; this.vladimir = {'id': 10, 'name': 'Владимир', 'hello': 'Здравствуйте, товарищ.'}; this.vladimir.descri = 'Мета-Воин, техник'; this.vladimir.talk = [53, 54, 55]; this.micrasm = {'id': 11, 'name': 'Микрасм', 'hello': 'Обидишь Лину – убью.'}; this.micrasm.descri = 'Мета-Воин, телохранитель Лины'; this.leena = {'id': 12, 'name': 'Лина', 'hello': 'Мое приветствие, крошка-детка.'}; this.leena.descri = 'Лидер Мета-Воинов'; this.leena.talk = [56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72]; this.craven = {'id': 13, 'name': 'Крейвен', 'hello': 'Думаю, вам лучше поговорить с Линой, если вас интересуют какие-то вопросы.'}; this.craven.descri = 'Мета-Воин'; this.craven.talk = [73, 74]; this.sarahata = {'id': 14, 'name': 'Сарахата', 'hello': 'Приветствую вас в моем Оазисе. Меня зовут Сарахата, я – местная правительница.'}; this.sarahata.descri = 'Правительница племени'; this.sarahata.talk = [75, 76, 77]; this.mihel = {'id': 15, 'name': 'Мигель', 'hello': 'Чего тебе надо? Проваливай!'}; this.mihel.descri = 'Лидер движения Гартт'; this.mihel.talk = [78, 79, 80]; this.vermut = {'id': 16, 'name': 'Вермут', 'hello': 'Служу Гартт.'}; this.vermut.descri = 'Участник движения Гартт'; this.vermut.talk = [81]; this.zoid = {'id': 17, 'name': 'Зойд', 'hello': 'Славься, Гартт!'}; this.zoid.descri = 'Участник движения Гартт'; this.zoid.talk = [83]; this.bristol = {'id': 18, 'name': 'Бристол', 'hello': 'Привет.'}; this.bristol.descri = 'Художница и натурщица'; this.bristol.talk = [84, 85, 86]; this.stan = {'id': 19, 'name': 'Стен', 'hello': 'Привет, мужик. Будь крут. Все ок.'}; this.stan.descri = 'Мэр города'; this.stan.talk = [87, 88]; this.viola = {'id': 20, 'name': 'Виола', 'hello': 'Здравствуйте.'}; this.viola.descri = 'Музыкант'; this.viola.talk = [89, 90]; this.ace = {'id': 21, 'name': 'Эйс', 'hello': 'Прив.'}; this.ace.descri = 'Меценат'; this.ace.talk = [91, 93, 94, 95, 96]; this.shell = {'id': 22, 'name': 'Шелл', 'hello': 'Привет, путник!'}; this.shell.descri = 'Отважный воин и исследователь'; this.shell.talk = [97, 98, 99]; this.liz = {'id': 23, 'name': 'Лиз', 'hello': '(вздыхает)'}; this.liz.descri = 'Жительница'; this.liz.talk = [100, 101, 102, 103, 104]; this.alice = {'id': 24, 'name': 'Элис', 'hello': 'Приветствую.'}; this.alice.descri = 'Хозяйка торговой лавки'; this.alice.talk = [105, 106]; this.harcos = {'id': 25, 'name': 'Харкос', 'hello': 'Харкос, капитан «Неизбежности», приветствует тебя!'}; this.harcos.descri = 'Капитан «Неизбежности»'; this.harcos.talk = [107, 108, 109, 110, 111, 112, 113]; this.yax = {'id': 26, 'name': 'Йакс', 'hello': 'Привет.'}; this.yax.descri = 'Бывалый моряк'; this.yax.talk = [114, 115, 116]; this.cij = {'id': 27, 'name': 'Си Ай Джей', 'hello': 'Йохо!'}; this.cij.descri = 'Капитан «Истерии» - летающего корабля'; this.cij.talk = [117, 118, 119]; this.kippa = {'id': 28, 'name': 'Киппа', 'hello': 'Привет!'}; this.kippa.descri = 'Девочка с кошачьими ушками'; this.kippa.talk = [120, 121, 122]; this.lexic = {'id': 29, 'name': 'Лексик', 'hello': 'Привет!'}; this.lexic.descri = 'Панда'; this.lexic.talk = [123, 124, 125]; this.gaimon = {'id': 30, 'name': 'Гаймон', 'hello': 'Здра.'}; this.gaimon.descri = 'Странный человек'; this.gaimon.talk = [126, 127, 128]; this.chivax = {'id': 31, 'name': 'Чивакс', 'hello': 'Привет.'}; this.chivax.descri = 'Мэр города'; this.chivax.talk = [129, 130]; this.ken = {'id': 32, 'name': 'Кен', 'hello': 'Черт! Я шел на войну, веря в светлое будущее, а закончил мрачным настоящим...'}; this.ken.descri = 'Бывший солдат'; this.ken.talk = [131]; this.goman = {'id': 33, 'name': 'Гоуман', 'hello': 'Нормальные девушки на меня не обращают внимания, а Фие тоже подавай только живых мужиков... и что мне прикажете делать?!'}; this.goman.descri = 'Бывший солдат'; this.goman.talk = [132]; this.fea = {'id': 34, 'name': 'Фия', 'hello': 'Здравствуй, живой человек...'}; this.fea.descri = 'Бывший ученый'; this.fea.talk = [133, 134, 135]; this.keabo = {'id': 35, 'name': 'Кибо', 'hello': 'Мир, жвачка, чувак. Все круто. Не парься.'}; this.keabo.descri = 'Торговец оружием'; this.keabo.talk = [136, 137, 138, 139, 140]; this.seth = {'id': 36, 'name': 'Сет', 'hello': '...'}; this.seth.descri = 'Мрачный и злой богатей'; this.seth.talk = [141, 142, 143, 144]; this.hydra = {'id': 37, 'name': 'Гидра', 'hello': 'Здрасьте!'}; this.hydra.descri = 'Девушка из богатой семьи'; this.hydra.talk = [145, 146, 147, 148]; this.heraldio = {'id': 38, 'name': 'Геральдио', 'hello': 'Здравствуйте, сэр.'}; this.heraldio.descri = 'Аристократ'; this.heraldio.talk = [149, 150, 151, 152]; this.vlad_ser = {'id': 39, 'name': 'Влад Сергеевич', 'hello': 'Добро пожаловать во Владзвиль!'}; this.vlad_ser.descri = 'Глава деревни'; this.vlad_ser.talk = [153, 154, 155]; this.vlad_vlad = {'id': 40, 'name': 'Влад Владович', 'hello': 'Здоровеньки.'}; this.vlad_vlad.descri = 'Кузнец'; this.vlad_vlad.talk = [156, 157, 158]; this.vlada = {'id': 41, 'name': 'Влада', 'hello': 'Привет, хозяюшка!'}; this.vlada.descri = 'Хозяйка'; this.vlada.talk = [159]; this.garn = {'id': 42, 'name': 'Гарн Стакович', 'hello': 'Гарн Стакович, капитан седьмого взвода. Чем обязан?'}; this.garn.descri = 'Командир'; this.garn.talk = [162]; this.celester = {'id': 43, 'name': 'Селестер', 'hello': 'Привет, чего нужно?'}; this.celester.descri = 'Снайпер'; this.celester.talk = [163]; this.lesly = {'id': 44, 'name': 'Лесли', 'hello': 'Привет, красавчик.'}; this.lesly.descri = 'Солдат'; this.lesly.talk = [164]; this.marcy = {'id': 45, 'name': 'Марси', 'hello': 'Привет!'}; this.marcy.descri = 'Pедактор газеты и хозяйка радиостанции'; this.marcy.talk = [169, 170, 171, 172]; this.biby = {'id': 46, 'name': 'Байби', 'hello': 'Приветики, мои фанаты!'}; this.biby.descri = 'Модель, певица и актриса'; this.biby.talk = [173, 174]; this.ibrahim = {'id': 47, 'name': 'Ибрагим', 'hello': 'Металл-аллюр. Вступай в мою секту.'}; this.ibrahim.descri = 'Сектант'; this.ibrahim.talk = [175, 176, 177]; this.michel = {'id': 48, 'name': 'Мишель', 'hello': 'Привет. Меня зовут Мишель.'}; this.michel.descri = 'Куртизанка'; this.michel.talk = [178, 179, 180]; this.jax = {'id': 49, 'name': 'Джакс', 'hello': 'Привет! Хочешь, оторву тебе руки?! Нет?! Жаль. А чего надо?'}; this.jax.descri = 'Шеф полиции'; this.jax.talk = [181, 182, 183, 184, 185]; this.elm = {'id': 50, 'name': 'Эльм', 'hello': 'Здравствуй, человек.'}; this.elm.descri = 'Режиссер'; this.elm.talk = [186, 187, 188]; this.nina_x = {'id': 51, 'name': 'Nina X', 'hello': 'Привет, парень.'}; this.nina_x.descri = 'Жительница'; this.nina_x.talk = [189, 190, 191]; this.uncle_sam = {'id': 52, 'name': 'Дядюшка Сэм', 'hello': 'Дядюшка Сэм слушает!'}; this.uncle_sam.descri = 'Фермер'; this.uncle_sam.talk = [192, 193]; this.stacy = {'id': 53, 'name': 'Стейси', 'hello': 'Привет!'}; this.stacy.descri = 'Дочь дядюшки Сэма'; this.stacy.talk = [194, 195, 196]; this.hell = {'id': 54, 'name': 'Хэл', 'hello': 'Здравствуй, котик. Ты ко мне?'}; this.hell.descri = 'Дьявол'; this.hell.talk = [198, 199, 200, 201, 203, 204]; this.guard = {'id': 55, 'name': 'Эдуардо', 'hello': 'Проходи мимо. Тебе нельзя в город.'}; this.guard.descri = 'Охранник'; this.guard.talk = []; this.mist = {'id': 56, 'name': 'Мист', 'hello': 'Итак, вы здесь...'}; this.mist.descri = 'Президент'; this.mist.talk = [205]; this.kage = {'id': 57, 'name': 'Кейдж', 'hello': '...'}; this.kage.descri = 'Ниндзя'; this.kage.talk = [206, 207, 208]; this.grandin = {'id': 58, 'name': 'Грандин', 'hello': 'Мир тебе.'}; this.grandin.descri = 'Монах'; this.grandin.talk = [209, 210, 211]; this.dr_rade = {'id': 59, 'name': 'Доктор Эф Рейд', 'hello': 'Черт... вы нашли мою тайную лабораторию...'}; this.dr_rade.descri = 'Хозяин лаборатории'; this.dr_rade.talk = [212, 213]; this.garret = {'id': 60, 'name': 'Гаррет', 'hello': 'Привет, я Гаррет. Я занимаюсь изучением генной инженерии.'}; this.garret.descri = 'Генный инженер'; this.garret.talk = [214, 215, 216, 256]; this.ksenya = {'id': 61, 'name': 'Ксения', 'hello': 'Привет!'}; this.ksenya.descri = 'Биолог'; this.ksenya.talk = [217, 219]; this.sir_f = {'id': 62, 'name': 'Сэр ЭФ', 'hello': 'Здравствуй, человек этой планеты.'}; this.sir_f.descri = 'Главнокомандующий операцией «Эволюция»'; this.sir_f.talk = [224, 225, 226]; this.curt = {'id': 63, 'name': 'Курт', 'hello': 'Привет. Чего надо?'}; this.curt.descri = 'Бездельник'; this.curt.talk = [227, 228, 229, 230]; this.georg = {'id': 64, 'name': 'Георг', 'hello': 'Здравствуй, путник.'}; this.georg.descri = 'Глава города'; this.georg.talk = [231, 232, 233, 234, 235, 236]; this.john = {'id': 65, 'name': 'Джон', 'hello': 'Привет, чувак.'}; this.john.descri = 'Бездельник'; this.john.talk = [237, 238, 239, 240]; this.carl = {'id': 66, 'name': 'Карл Вакуоль', 'hello': 'Здравствуйте.'}; this.carl.descri = 'Великий ученый и изобретатель'; this.carl.talk = [243, 244, 245, 246, 247]; this.michael = {'id': 67, 'name': 'Михаэль Валоткрафт', 'hello': 'Добрый день, Михаэль Валоткрафт к вашим услугам.'}; this.michael.descri = 'Ученый'; this.michael.talk = [249, 248]; this.smith = {'id': 68, 'name': 'Смит Беккорд', 'hello': 'Здравствуй, чел.'}; this.smith.descri = 'Ученый'; this.smith.talk = [250, 251, 252, 253, 254]; this.dekkis = {'id': 69, 'name': 'Деккис', 'hello': ''}; this.dekkis.descri = 'Мутант'; this.katenka = {'id': 70, 'name': 'Катенька', 'hello': ''}; this.katenka.descri = 'Сотрудник У.В.И.Ф.Ж.'; this.key = {'id': 71, 'name': 'Кей', 'hello': ''}; this.key.descri = 'Сотрудник У.В.И.Ф.Ж.'; this.feather = {'id': 72, 'name': 'Фивер', 'hello': ''}; this.feather.descri = 'Девушка-ангел'; this.karry = {'id': 73, 'name': 'Карри', 'hello': '...'}; this.karry.descri = 'Пришелец'; this.karry.talk = [257, 258, 259]; this.grid = {'id': 74, 'name': 'Грид', 'hello': ''}; this.grid.descri = 'Сотрудник У.В.И.Ф.Ж.'; this.cid = {'id': 75, 'name': 'Cид', 'hello': ''}; this.cid.descri = 'Кибернетический организм'; this.alien1a = {'id': 76, 'name': 'Пришелец'}; this.alien1a.descri = ''; this.alien2a = {'id': 77, 'name': 'Пришелец'}; this.alien2a.descri = ''; this.alien3a = {'id': 78, 'name': 'Пришелец'}; this.alien3a.descri = ''; this.house_carl = {'id': 79, 'name': 'Дом Карла Вакуоля', 'hello': '...'}; this.house_carl.descri = ''; this.house_carl.talk = [242]; }; _global.NPCData = v1; var v2 = v1.prototype; ASSetPropFlags(_global.NPCData.prototype, null, 1); } #endinitclip } movieClip 1947 __Packages.TalkData4 { #initclip if (!_global.TalkData4) { var v1 = function () { super(); this[227] = {'theme': 'О СЕБЕ', 'msg': [{'npc': 'grid', 'text': 'Ты кто?'}, {'npc': 'curt', 'text': 'Меня зовут Курт, а тебе какое дело?'}, {'npc': 'grid', 'text': 'Да... в, общем-то, никакого. Просто спросил.'}, {'npc': 'curt', 'text': 'Зря спросил.'}, {'npc': 'grid', 'text': 'Меня зовут Грид.'}, {'event': 'set_flag', 'flag': 'curt_join'}, {'npc': 'curt', 'text': 'Мне не интересно.'}]}; this[228] = {'theme': 'ВЗЯТЬ В ОТРЯД', 'condition': function () { return 2 <= (Core.Get()).game.getFlag('q_bigalienplan') && (Core.Get()).game.isFlag('curt_join'); }, 'msg': [{'npc': 'grid', 'text': 'Слушай, Курт, я смотрю тебе нечем заняться. Может, присоединишься к моему отряду? У нас весело, мы всех убиваем и получаем за это всяческие награды.'}, {'npc': 'curt', 'text': 'Та ну... даже не знаю... давай так, оплатишь мой долг в банке, я, так и быть, присоединюсь к твоему отряду. Я должен €1000 местному банку. Принеси мне деньги – и я с вами.'}, {'event': 'set_flag', 'flag': 'v_paycurtdebt', 'value': 1}, {'npc': 'grid', 'text': 'Понятно.'}]}; this[229] = {'theme': 'ЗАПЛАТИТЬ ДОЛГ КУРТА', 'condition': function () { return 1 == (Core.Get()).game.getFlag('v_paycurtdebt') && (Core.Get()).game.money < 1000; }, 'msg': [{'npc': 'grid', 'text': 'Вот, держи.'}, {'npc': 'curt', 'text': 'Парень, ты в своем уме? Ты протягиваешь мне пустую ладонь. У тебя нет таких денег, чувак!'}, {'npc': 'grid', 'text': 'И ведь верно...'}]}; this[230] = {'theme': 'ЗАПЛАТИТЬ ДОЛГ КУРТА', 'condition': function () { return 1 == (Core.Get()).game.getFlag('v_paycurtdebt') && (Core.Get()).game.money >= 1000; }, 'msg': [{'npc': 'grid', 'text': 'Вот, держи.'}, {'npc': 'curt', 'text': 'Круто!.. Только не спрашивай, как я оказался должен банку денег!'}, {'event': 'set_flag', 'flag': 5000}, {'event': 'join_team', 'npc': 4}, {'npc': 'curt', 'text': 'Ну что ж, я присоединюсь к твоему отряду!'}]}; this[231] = {'theme': 'О СЕБЕ', 'msg': [{'npc': 'grid', 'text': 'А вы, стало быть..?'}, {'npc': 'georg', 'text': 'Меня зовут Георг, я глава этого города.'}]}; this[232] = {'theme': 'ГИБСОН-СИТИ', 'msg': [{'npc': 'grid', 'text': 'Расскажите мне о Гибсон-Сити.'}, {'npc': 'georg', 'text': 'О, это старый город. Давным-давно на месте этого города проходил фестиваль рок-музыки, крупнейший в истории. Он получил название Фаерсток.'}, {'npc': 'georg', 'text': 'После фестиваля уехали не все. Некоторые решили остаться здесь жить. Постепенно, здесь рос город.'}, {'npc': 'georg', 'text': 'Но с тех пор прошло столько времени...'}, {'npc': 'georg', 'text': 'Многие забыли про музыкальные корни.'}, {'npc': 'grid', 'text': 'А вы сами-то музыкант?'}, {'npc': 'georg', 'text': 'Ха-ха-ха. Нет, мой друг. В молодости я был им, а сейчас я просто никому не нужный старик с ключами от города.'}]}; this[233] = {'theme': 'ПОМОЩЬ ГОРОДУ', 'condition': function () { return !(Core.Get()).game.isFlag('q_gibsonquest'); }, 'msg': [{'npc': 'georg', 'text': 'Юноша, а не хотели бы вы помочь Гибсон-Сити? Разумеется, не бесплатно.'}, {'npc': 'grid', 'text': 'Возможно. Что нужно делать?'}, {'event': 'set_flag', 'flag': 'q_gibsonquest', 'value': 1}, {'event': 'add_quest', 'quest': 'raiding_raiders', 'stage': 0}, {'npc': 'georg', 'text': 'В последнее время вокруг Гибсон-Сити частенько околачиваются рейдеры. Они нападают на случайных путников. Убейте хотя бы 20 штук, и я щедро награжу вас.'}]}; this[234] = {'theme': 'ПОМОЩЬ ГОРОДУ – ВЫПОЛНЕНО', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_gibsonquest') && 20 <= (Core.Get()).game.getFlag('kills_raiders_georg'); }, 'msg': [{'npc': 'grid', 'text': 'Я избавил вас минимум от 20 рейдеров.'}, {'event': 'give_exp', 'value': 7000}, {'event': 'give_money', 'value': 25000}, {'event': 'set_flag', 'flag': 'q_gibsonquest', 'value': 2}, {'event': 'complete_quest', 'quest': 'raiding_raiders'}, {'npc': 'georg', 'text': 'Отлично! Недавно к нам заезжала ярмарка, причем доехала без происшествий. Спасибо вам. Вот ваша награда.'}]}; this[235] = {'theme': 'ПОМОЩЬ ГОРОДУ 2', 'condition': function () { return 2 == (Core.Get()).game.getFlag('q_gibsonquest'); }, 'msg': [{'npc': 'grid', 'text': 'Может, еще с чем-нибудь нужна помощь?'}, {'npc': 'georg', 'text': 'Увы, да...'}, {'npc': 'georg', 'text': 'Новая напасть пришла в регион Гибсон! С уходом рейдеров в наши земли пришли мутанты. Избавьте нас от них... Убейте хотя бы 25 мутантов и возвращайтесь за наградой.'}, {'event': 'set_flag', 'flag': 'q_gibsonquest', 'value': 3}, {'event': 'add_quest', 'quest': 'raiding_mutants', 'stage': 0}, {'npc': 'grid', 'text': 'Пойду им лица бить.'}]}; this[236] = {'theme': 'ПОМОЩЬ ГОРОДУ 2 - ВЫПОЛНЕНО', 'condition': function () { return 3 == (Core.Get()).game.getFlag('q_gibsonquest') && 25 <= (Core.Get()).game.getFlag('kills_mutants_georg'); }, 'msg': [{'npc': 'grid', 'text': 'Я разобрался с мутантами.'}, {'event': 'give_exp', 'value': 15000}, {'event': 'give_money', 'value': 60000}, {'event': 'give_item', 'item': 30}, {'event': 'set_flag', 'flag': 'q_gibsonquest', 'value': 4}, {'event': 'complete_quest', 'quest': 'raiding_mutants'}, {'npc': 'georg', 'text': 'Отлично! Спасибо вам, вы очень помогли нашему городу.'}]}; this[237] = {'theme': 'О СЕБЕ', 'msg': [{'npc': 'grid', 'text': 'Расскажи о себе.'}, {'npc': 'key', 'text': 'Я тебе расскажу о нем, Грид! Это немолодой озабоченный бездельник, который не имеет конкретного хобби и вообще зря прожигает свою жизнь!', 'condition': function () { return (Core.Get()).game.isInTeam(1); }}, {'npc': 'john', 'text': 'Ну я бы ответил несколько иначе...', 'condition': function () { return (Core.Get()).game.isInTeam(1); }}, {'npc': 'key', 'text': 'А я бы ответила правду! Мне приходилось видеться с ним во время миссии в Гибсон Сити.', 'condition': function () { return (Core.Get()).game.isInTeam(1); }}, {'npc': 'john', 'text': 'Меня зовут Джон, я люблю девушек и песни Элвиса. Чувака круче меня сложно найти. Вот так вот! Зацени мои синие-синие туфли.', 'condition': function () { return !(Core.Get()).game.isInTeam(1); }}]}; this[238] = {'theme': 'ЛЮБОВНЫЙ ОХОТНИК', 'condition': function () { return !(Core.Get()).game.getFlag('q_lovehunter'); }, 'msg': [{'npc': 'john', 'text': 'Слушай, ты не мог бы помочь мне с одним делом? Денег у меня нет, но зато полно полезного барахла, в том числе и оружия.'}, {'npc': 'grid', 'text': 'С чем нужна помощь?'}, {'npc': 'john', 'text': 'В городе Калистер есть модель и певица по имени Байби. Мне нужно, чтобы она стала моей.'}, {'npc': 'grid', 'text': 'Я не занимаюсь любовными зельями. Это миф.'}, {'npc': 'john', 'text': 'Да, миф. А вот чип любви – реальность! Помнится мне, Смит Беккорд из деревни Раймонд должен был мне за одно дельце, и обещал такое исследование.'}, {'npc': 'john', 'text': 'Сперва возьми у Беккорда чип, затем постарайся незаметно вживить его Байби.'}, {'event': 'set_flag', 'flag': 'q_lovehunter', 'value': 1}, {'event': 'add_quest', 'quest': 'love_hunter', 'stage': 0}, {'npc': 'grid', 'text': 'Только если мне будет совсем нечем заняться!'}]}; this[239] = {'theme': 'ЛЮБОВНЫЙ ОХОТНИК', 'condition': function () { return 2 == (Core.Get()).game.getFlag('q_lovehunter'); }, 'msg': [{'npc': 'grid', 'text': 'Я плохо представляю зачем, но я вживил чип этой блондинке.'}, {'npc': 'john', 'text': 'Круто! Спасибо! Как и обещал, вот награда!'}, {'event': 'give_exp', 'value': 3500}, {'event': 'give_item', 'item': 54}, {'event': 'give_item', 'item': 113}, {'event': 'complete_quest', 'quest': 'love_hunter'}, {'event': 'set_flag', 'flag': 'q_lovehunter', 'value': 3}, {'npc': 'grid', 'text': 'Она будет ждать вас.'}]}; this[240] = {'theme': 'ТОРГОВЛЯ', 'msg': [{'npc': 'john', 'text': 'Я тут на свалке нашел пару штук, не хочешь посмотреть?'}, {'event': 'trade', 'npc': 'john'}]}; this[241] = {'theme': 'КАРЛ ВАКУОЛЬ', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_raymondehelp') && !(Core.Get()).game.isFlag('raymonde_visit'); }, 'msg': [{'event': 'set_flag', 'flag': 'raymonde_visit'}, {'npc': 'craven', 'text': 'Вот она, деревня Раймонд. Что-то не вижу тут моего знакомого, Карла...'}, {'npc': 'grid', 'text': 'Не с ним ли приключилась беда?'}, {'npc': 'smith', 'text': 'Да, именно так, чувак. Карл Вакуоль куда-то пропал прямо из своего дома. И мы хз, в чем дело, чувак.'}, {'npc': 'craven', 'text': 'Грид. Это – великий кибернетик деревни Раймонд – Смит Беккорд.'}, {'npc': 'grid', 'text': 'Говорит не как ученый.'}, {'npc': 'smith', 'text': 'Варежку запахни. Я очень крут.'}, {'npc': 'craven', 'text': 'Это действительно так.'}, {'event': 'add_quest', 'quest': 'meta_raimonde', 'stage': 1}, {'npc': 'grid', 'text': 'Ладно, давайте постараемся выяснить, в чем же дело.'}]}; this[242] = {'theme': 'КАРЛ ВАКУОЛЬ', 'condition': function () { return !(Core.Get()).game.getFlag('q_gotosummerg'); }, 'msg': [{'npc': 'craven', 'text': 'Это - дом Карла.'}, {'npc': 'grid', 'text': 'Давайте осмотрим его.'}, {'npc': '', 'text': '...'}, {'event': 'give_exp', 'value': 1500}, {'event': 'give_quest_item', 'item': 22}, {'event': 'give_quest_item', 'item': 23, 'count': 5}, {'event': 'set_flag', 'flag': 'q_gotosummerg', 'value': 1}, {'npc': 'grid', 'text': 'Любопытно...'}]}; this[243] = {'theme': 'ТЕМПОРАЛЬНЫЙ ТВ', 'condition': function () { return 2 == (Core.Get()).game.getFlag('q_bigalienplan') && !(Core.Get()).game.hasQuestItem(0); }, 'msg': [{'npc': 'grid', 'text': 'Натан сказал мне, что я могу воспользоваться одним из ваших темпоральных телевизоров.'}, {'npc': 'carl', 'text': 'Нет, не можете.'}, {'npc': 'grid', 'text': 'Почему же?'}, {'npc': 'carl', 'text': 'Потому, что еще не рассказал, как это делать!'}, {'npc': 'carl', 'text': '...'}, {'npc': 'carl', 'text': '...'}, {'npc': 'carl', 'text': '...'}, {'npc': 'grid', 'text': 'То есть, просто установить таймер и нажать кнопку ВКЛ?'}, {'npc': 'carl', 'text': 'Ну это очень грубое изложение моей лекции, но в принципе да. Держите темпоральный телевизор и постарайтесь его не разбить.'}, {'event': 'give_quest_item', 'item': 0}, {'npc': 'grid', 'text': 'Теперь нужно посетить места появления пришельцев...'}]}; this[244] = {'theme': 'НАУКА', 'msg': [{'npc': 'grid', 'text': 'Расскажите о вашем вкладе в науку...'}, {'npc': 'carl', 'text': 'С радостью! Вы хотите это знать?'}, {'npc': 'grid', 'text': 'Знаете, я тут подумал... и – нет. Все-таки нет. Не хочу.'}]}; this[245] = {'theme': 'ПОДГОТОВКА ВОСТАНИЯ', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_metatechnicans') && !(Core.Get()).game.isFlag('q_get3parts'); }, 'msg': [{'npc': 'grid', 'text': 'Здравствуй, Карл! Давно не виделись.'}, {'npc': 'carl', 'text': 'Чем обязан?'}, {'npc': 'grid', 'text': 'Лина говорит, нужно помочь вам в подготовке восстания.'}, {'npc': 'carl', 'text': 'Да, верно! Нужно! Я собираю вечный двигатель, который будет крайне необходим кибернизированным Мета-Воинам. Но для его сборки мне нужно еще 3 детали.'}, {'npc': 'carl', 'text': 'Мне нужен нефритовый поршень, который можно купить на Нефритовом Острове, титановая цепь BDX, которая, говорят, продается в регионе Парадарк, и гальванизатор S7, который, говорят, есть у кого-то то ли в Калистере, то ли в Сирите.'}, {'npc': 'grid', 'text': 'Понятно... а деньги на все это я где возьму?'}, {'npc': 'carl', 'text': 'Можете продать почку.'}, {'npc': 'grid', 'text': 'Нет, спасибо.'}, {'npc': 'carl', 'text': 'Тогда возьмите вот это.'}, {'event': 'give_quest_item', 'item': 27}, {'npc': 'carl', 'text': 'По этой карте вы сможете купить все нужные запчасти бесплатно, они будут записаны на счет Мета-Воинов.'}, {'npc': 'grid', 'text': 'А что еще можно купить, пользуясь этой картой?'}, {'npc': 'carl', 'text': 'Больше ничего, молодой человек. Я отслеживаю все расходы по ней.'}, {'event': 'set_flag', 'flag': 'q_get3parts', 'value': 1}, {'npc': 'grid', 'text': 'Понятно...'}]}; this[246] = {'theme': 'СБОР ДЕТАЛЕЙ', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_get3parts') && !((Core.Get()).game.hasQuestItem(24) && (Core.Get()).game.hasQuestItem(25) && (Core.Get()).game.hasQuestItem(26)); }, 'msg': [{'npc': 'carl', 'text': 'По глазам вижу, что вы еще собрали не все необходимые детали!'}, {'npc': 'carl', 'text': 'Вам нужен нефритовый поршень, гальванизатор S7 и титановая цепь BDX.'}]}; this[247] = {'theme': 'СБОР ДЕТАЛЕЙ - ВЫПОЛНЕНО', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_get3parts') && (Core.Get()).game.hasQuestItem(24) && (Core.Get()).game.hasQuestItem(25) && (Core.Get()).game.hasQuestItem(26); }, 'msg': [{'npc': 'grid', 'text': 'Я собрал все необходимое.'}, {'event': 'remove_quest_item', 'item': 24}, {'event': 'remove_quest_item', 'item': 25}, {'event': 'remove_quest_item', 'item': 26}, {'event': 'remove_quest_item', 'item': 27}, {'event': 'give_exp', 'value': 7000}, {'event': 'set_flag', 'flag': 'q_get3parts', 'value': 2}, {'npc': 'carl', 'text': 'Я знаю. Мне приходили отчеты с моей карты. Это великолепно! Теперь я смогу собрать вечный двигатель. Можете смело рассказать об успехах Лине.'}]}; this[248] = {'theme': 'СОЮЗ С КАЛИПСО', 'condition': function () { return 3 == (Core.Get()).game.getFlag('q_allycalipso'); }, 'msg': [{'npc': 'michael', 'text': 'Ненавижу Карла Вакуоля!'}, {'npc': 'grid', 'text': 'Рад за вас! Но я пришел пообщаться на другую тему...'}, {'npc': 'michael', 'text': 'Все считают его гением, а я незаслуженно стою в его тени! Как же мне доказать, что лучший ученый деревни Раймонд – это я?!'}, {'npc': 'grid', 'text': 'Я пришел, чтобы предложить тебе решение этой проблемы!'}, {'npc': 'michael', 'text': 'Ты убьешь Вакуоля?'}, {'npc': 'grid', 'text': 'Нет, я знаю, как можно его обойти.'}, {'npc': 'michael', 'text': 'Я слушаю и внимаю!'}, {'npc': 'grid', 'text': 'Знаешь Калипсо, город мертвяков?'}, {'npc': 'michael', 'text': 'Разумеется.'}, {'npc': 'grid', 'text': 'Они хотят вернуть себе нормальные человеческие тела, за это согласятся помочь восстанию Мета-Воинов.'}, {'npc': 'grid', 'text': 'Если ты сумеешь выполнить то, о чем они говорят, то во-первых, будешь на хорошем счету у Лины, во-вторых – совершишь революционное исследование в науке.'}, {'npc': 'michael', 'text': 'Точно! Я же когда-то занимался подобными исследованиями, но забросил, когда мне запретили откапывать трупы на кладбище...'}, {'event': 'give_exp', 'value': 6000}, {'event': 'set_flag', 'flag': 'q_allycalipso', 'value': 4}, {'event': 'add_quest', 'quest': 'meta_uprise', 'stage': 5}, {'npc': 'grid', 'text': 'Что ж, возобнови свои исследования, у тебя будет подопытный материал. Я пойду сообщу об этом Фие из Калипсо.'}]}; this[249] = {'theme': 'О СЕБЕ', 'msg': [{'npc': 'grid', 'text': 'Ты кто?'}, {'npc': 'michael', 'text': 'Я – Михаэль Валоткрафт, величайший ученый в истории.'}, {'npc': 'grid', 'text': 'Познавательно.'}]}; this[250] = {'theme': 'ЧТО СЛУЧИЛОСЬ?', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_raymondehelp'); }, 'msg': [{'npc': 'smith', 'text': 'Куда-то пропал наш важный ученый, Карл Вакуоль. Мы не знаем где он, но его уже давно нет. Видимо, стряслась ерундовина.'}, {'npc': 'smith', 'text': 'Осмотрели бы его дом, может, че-то найдете.'}]}; this[251] = {'theme': 'ЛЮБОВНЫЙ ОХОТНИК', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_lovehunter') && !(Core.Get()).game.isFlag('q_getchip'); }, 'msg': [{'npc': 'grid', 'text': 'Джон из Гибсон-Сити просил вам напомнить, что вы обещали ему любовный чип...'}, {'npc': 'smith', 'text': 'Да. Я его сделал. Вот он. Забирай.'}, {'event': 'give_exp', 'value': 2500}, {'event': 'give_quest_item', 'item': 16}, {'event': 'set_flag', 'flag': 'q_getchip', 'value': 1}, {'event': 'add_quest', 'quest': 'love_hunter', 'stage': 1}, {'npc': 'grid', 'text': 'И как он работает?'}, {'npc': 'smith', 'text': 'Он настроен на Джона. Девушка, имплантировавшая себе этот чип, влюбится в Джона. Если она никогда раньше не видела его, он начнет приходить к ней во снах.'}, {'npc': 'smith', 'text': 'В общем, классическая схема связи образа с конкретной эмоцией, чел.'}]}; this[252] = {'theme': 'ПОДГОТОВКА ВОСТАНИЯ', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_metatechnicans') && !(Core.Get()).game.isFlag('q_getchips'); }, 'msg': [{'npc': 'grid', 'text': 'Лина просила помочь вам в подготовке восстания.'}, {'npc': 'smith', 'text': 'Да. Я хочу изобрести новый имплантант, усиливающий силы Мета-Воинов. Для этого мне нужно 3 микрочипа, идентификаторы 404, 101, 707.'}, {'npc': 'grid', 'text': 'Вы отбирали их по цифрам что ли?'}, {'npc': 'smith', 'text': 'Нет. Совпало. Найдите и принесите.'}, {'npc': 'grid', 'text': 'А где их взять-то?'}, {'event': 'set_flag', 'flag': 'q_getchips', 'value': 1}, {'npc': 'smith', 'text': 'Знал бы – уже собрал. Попробуйте спросить на Нефритовом Острове.'}]}; this[253] = {'theme': 'СБОР ЧИПОВ', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_getchips') && !((Core.Get()).game.hasQuestItem(8) && (Core.Get()).game.hasQuestItem(15) && (Core.Get()).game.hasQuestItem(19)); }, 'msg': [{'npc': 'smith', 'text': 'Где?'}, {'npc': 'grid', 'text': 'Нету...'}]}; this[254] = {'theme': 'СБОР ЧИПОВ', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_getchips') && (Core.Get()).game.hasQuestItem(8) && (Core.Get()).game.hasQuestItem(15) && (Core.Get()).game.hasQuestItem(19); }, 'msg': [{'npc': 'smith', 'text': 'Где?'}, {'npc': 'grid', 'text': 'Вот.'}, {'event': 'remove_quest_item', 'item': 8}, {'event': 'remove_quest_item', 'item': 15}, {'event': 'remove_quest_item', 'item': 19}, {'event': 'give_exp', 'value': 9000}, {'event': 'set_flag', 'flag': 'q_getchips', 'value': 2}, {'npc': 'smith', 'text': 'Молодец. Хвалю. Скажи Лине, что имплантанты на всю армию скоро будут готов.'}]}; this[255] = {'theme': 'ПРОТОТИП', 'condition': function () { return 2 == (Core.Get()).game.getFlag('q_getchips') && (Core.Get()).game.isInTeam(8) && !(Core.Get()).game.isFlag('craven_upgrade'); }, 'msg': [{'npc': 'smith', 'text': 'Крейвен, ты не хочешь стать испытателем моего прототипа?'}, {'npc': 'grid', 'text': 'Я хочу!'}, {'npc': 'smith', 'text': 'Это можно имплантировать только полу-киборгу, коими и являются Мета-Воины.'}, {'npc': 'craven', 'text': 'Давайте попробуем...'}, {'event': 'skill_up', 'npc': 8, 'skill': 'vit'}, {'event': 'skill_up', 'npc': 8, 'skill': 'def'}, {'event': 'skill_up', 'npc': 8, 'skill': 'dgr'}, {'event': 'skill_up', 'npc': 8, 'skill': 'tch'}, {'npc': 'craven', 'text': 'Неплохо! Но я ожидал большего.'}, {'event': 'set_flag', 'flag': 'craven_upgrade'}, {'npc': 'smith', 'text': 'Неблагодарный. Идите все в баню.'}]}; this[257] = {'theme': 'КАРРИ', 'condition': function () { return !(Core.Get()).game.getFlag('enc_karry'); }, 'msg': [{'npc': 'karry', 'text': 'Стой! Не стреляй! Слушай!'}, {'npc': 'key', 'text': 'Нечего слушать его, это против наших убеждений. Мочи его!', 'condition': function () { return (Core.Get()).game.isInTeam(1); }}, {'npc': 'grid', 'text': 'Подожди, успеется.', 'condition': function () { return (Core.Get()).game.isInTeam(1); }}, {'npc': 'grid', 'text': 'И что ты хочешь мне сказать, прежде чем я отправлю тебя на тот свет?'}, {'npc': 'karry', 'text': 'Я знаю, Грид, ты собирал информацию о нас. Я верю в то, что ты не настолько твердолоб и уперт, как остальные сотрудники K.A.U.F.O., и хотя бы поговришь со мной.'}, {'npc': 'karry', 'text': 'Видишь ли, как ты мог заметить из рассказов других людей, мы – не плохие. Мы хотим помочь человечеству, но далеко не каждый готов принять помощь.'}, {'npc': 'karry', 'text': 'Сами K.A.U.F.O. – из числа тех, кто не примет помощь сам, так еще и другому не позволит ее получить. Скажи мне, в самом деле, Грид, во что ты веришь?'}, {'npc': 'grid', 'text': 'В любом случае, я так понимаю, что ты искал меня. Зачем?'}, {'event': 'set_flag', 'flag': 'enc_karry'}, {'npc': 'karry', 'text': 'Я хочу, чтобы ты пообщался с нашим императором. Тогда ты узнаешь всю правду.'}, {'event': 'talk', 'npc': 'karry', 'no_bye': true}]}; this[258] = {'theme': 'ОТПРАВИТЬСЯ С КАРРИ', 'msg': [{'npc': 'key', 'text': 'Как?! Грид, ты предатель! Я вернусь на базу и расскажу о том, что ты предал наши идеалы и поговорил с пришельцем...', 'condition': function () { return (Core.Get()).game.isInTeam(1); }}, {'npc': 'key', 'text': 'Тебе лучше не возвращаться, Грид, тебе будут не рады...', 'condition': function () { return (Core.Get()).game.isInTeam(1); }}, {'event': 'leave_team', 'npc': 1, 'condition': function () { return (Core.Get()).game.isInTeam(1); }}, {'event': 'give_exp', 'value': 15000}, {'event': 'set_flag', 'flag': 'q_kaufo_betrayal'}, {'event': 'add_quest', 'quest': 'talks_with_aliens', 'stage': 0}, {'event': 'leave_team', 'npc': 8, 'condition': function () { return (Core.Get()).game.isInTeam(8); }}, {'event': 'fail_quest', 'quest': 'ufo_visit', 'condition': function () { return (Core.Get()).game.inQuest('ufo_visit'); }}, {'event': 'fail_quest', 'quest': 'natan_plan', 'condition': function () { return (Core.Get()).game.inQuest('natan_plan'); }}, {'event': 'reset_flag', 'flag': 'q_bigalienplan'}, {'event': 'remove_quest_item', 'item': 0, 'condition': function () { return (Core.Get()).game.hasQuestItem(0); }}, {'event': 'remove_quest_item', 'item': 1, 'condition': function () { return (Core.Get()).game.hasQuestItem(1); }}, {'event': 'remove_quest_item', 'item': 2, 'condition': function () { return (Core.Get()).game.hasQuestItem(2); }}, {'event': 'remove_quest_item', 'item': 3, 'condition': function () { return (Core.Get()).game.hasQuestItem(3); }}, {'event': 'remove_quest_item', 'item': 4, 'condition': function () { return (Core.Get()).game.hasQuestItem(4); }}, {'event': 'remove_quest_item', 'item': 5, 'condition': function () { return (Core.Get()).game.hasQuestItem(5); }}, {'event': 'remove_quest_item', 'item': 6, 'condition': function () { return (Core.Get()).game.hasQuestItem(6); }}, {'npc': '', 'text': '...'}, {'event': 'move_to_area', 'area': 'alienbase'}]}; this[259] = {'theme': 'ОТКАЗАТЬСЯ ИДТИ С КАРРИ', 'msg': [{'npc': 'grid', 'text': 'Я не предам свои идеалы, я отвергну твое предложение и убью тебя.'}, {'npc': 'karry', 'text': 'Жаль... похоже, я ошибся в тебе, Грид...'}, {'event': 'give_exp', 'value': 3000}, {'event': 'battle', 'band': 'karry'}]}; this[260] = {'theme': 'ФИВЕР', 'condition': function () { return !(Core.Get()).game.getFlag('enc_feather'); }, 'msg': [{'npc': 'feather', 'text': 'Ой... вы кто?!'}, {'npc': 'grid', 'text': 'Меня зовут Грид. Не бойся.'}, {'npc': 'feather', 'text': 'Хорошо! Не буду. Меня зовут Фивер, и я убегаю от плохих людей...'}, {'npc': 'grid', 'text': 'Плохих людей?'}, {'npc': 'feather', 'text': 'Да! Я не знаю, кто они, но постоянно пытаются меня убить...'}, {'npc': 'grid', 'text': 'Это у тебя настоящие нимб и крылья?'}, {'npc': 'feather', 'text': 'Да... я не знаю, что это и откуда. Я помню только, как проснулась в лаборатории. Потом я сбежала... видимо, это люди из лаборатории и хотят меня убить.'}, {'npc': 'grid', 'text': 'Так ты вообще ничего не помнишь и не знаешь?'}, {'npc': 'feather', 'text': 'Да! Мне страшно.'}, {'npc': 'grid', 'text': 'Ничего, я с тобой. Не бойся. Пойдем?'}, {'event': 'give_exp', 'value': 8000}, {'event': 'join_team', 'npc': 9}, {'event': 'set_flag', 'flag': 'enc_feather'}, {'event': 'enable_screen'}, {'npc': 'feather', 'text': 'С радостью!'}]}; this[261] = {'theme': 'ЭКСПЕРИМЕНТ', 'msg': [{'npc': 'dekkis', 'text': 'А вот и мой сбежавший ангел!'}, {'npc': 'feather', 'text': 'Это он, парень из лаборатории!'}, {'npc': 'grid', 'text': 'Не похож на парня из лаборатории...'}, {'npc': 'dekkis', 'text': 'Пойдем со мной.'}, {'npc': 'grid', 'text': 'Не пойдет она. Сперва придется нас победить.'}, {'npc': 'dekkis', 'text': 'Я драться не умею... но они – умеют!'}, {'event': 'set_flag', 'flag': 'enc_dekkis1'}, {'event': 'battle', 'band': 'dek_shades'}]}; this[262] = {'theme': 'ЭКСПЕРИМЕНТ', 'msg': [{'npc': 'dekkis', 'text': 'Черт! Я оплошал!'}, {'npc': 'grid', 'text': 'И не говори. А сейчас я тебя убью, если ты не объяснишь мне все.'}, {'npc': 'dekkis', 'text': 'Ладно... я сын Гаррета с Нефритового Острова... однако когда он увидел мои генные эксперименты, отец вместо похвалы выгнал меня из дому и отрекся от меня!'}, {'npc': 'dekkis', 'text': 'А я ведь всего лишь скрещивал сельских детей с сельскими животными, чтобы получить быкочеловека!'}, {'npc': 'dekkis', 'text': 'В своих экспериментах я пошел дальше отца, и наконец сумел создать ангела, высшую форму существования после бога.'}, {'npc': 'dekkis', 'text': 'Я хотел сделать ее своей женой и произвести на свет новое человечество... но она сбежала от меня!'}, {'npc': 'feather', 'text': 'Я не хочу за тебя замуж!'}, {'npc': 'grid', 'text': 'Ты слышал ее. Оставь девочку в покое.'}, {'npc': 'dekkis', 'text': 'Ну уж нет! Я все-таки создал сыворотку мутации, я воспользуюсь ей, чтобы убить вас!'}, {'npc': 'grid', 'text': 'Черт, он мутирует!'}, {'event': 'set_flag', 'flag': 'enc_dekkis2'}, {'event': 'battle', 'band': 'dekkis'}]}; this[263] = {'theme': 'ФИВЕР', 'msg': [{'npc': 'grid', 'text': 'Теперь ты свободна, Фивер. Тебя не будут преследовать.'}, {'npc': 'feather', 'text': 'Спасибо тебе за все, Грид... только скажи... можно я останусь с тобой и дальше?'}, {'event': 'give_exp', 'value': 7500}, {'event': 'set_flag', 'flag': 'enc_dekkis3'}, {'event': 'set_flag', 'flag': 'v_killeddekkis', 'value': 1}, {'event': 'enable_screen'}, {'npc': 'grid', 'text': 'Пойдем! Я буду рад твоей компании.'}]}; }; _global.TalkData4 = v1; _global.TalkData4 extends Array; var v2 = v1.prototype; ASSetPropFlags(_global.TalkData4.prototype, null, 1); } #endinitclip } movieClip 1948 __Packages.TalkData3 { #initclip if (!_global.TalkData3) { var v1 = function () { super(); this[153] = {'theme': 'О СЕБЕ', 'msg': [{'npc': 'grid', 'text': 'А вы кто?'}, {'npc': 'vlad_ser', 'text': 'Я – Влад! Глава этой деревни!'}, {'npc': 'grid', 'text': 'Почему вы это радостно кричите?'}, {'npc': 'vlad_ser', 'text': 'Потому, что жизнь хороша!'}]}; this[154] = {'theme': 'РАБОТА', 'condition': function () { return !(Core.Get()).game.isFlag('vlad_omelette'); }, 'msg': [{'npc': 'grid', 'text': 'Нет ли для меня работы? Я бы не отказался от заработка...'}, {'npc': 'vlad_ser', 'text': 'Нет, работы нет! Но есть ОМЛЕТ!'}, {'npc': 'grid', 'text': 'Что?!'}, {'event': 'set_flag', 'flag': 'vlad_omelette'}, {'npc': 'vlad_ser', 'text': 'ОМЛЕТ! Наш фирменный владзвильский ОМЛЕТ! Попробовав его, либо умрешь, либо станешь сильнее. Шансов 50/50!'}]}; this[155] = {'theme': 'ПОПРОБОВАТЬ ОМЛЕТ...', 'condition': function () { return (Core.Get()).game.isFlag('vlad_omelette') && !(Core.Get()).game.isFlag('vlad_omelette_tried'); }, 'msg': [{'npc': 'grid', 'text': 'Я рискну попробовать ваш ОМЛЕТ!'}, {'npc': 'vlad_ser', 'text': 'Пробуй!'}, {'event': 'game_over', 'condition': function () { return Math.random() < 0.5; }}, {'npc': '', 'text': '...'}, {'npc': 'grid', 'text': 'Я чувствую приток сил!'}, {'event': 'give_exp', 'value': 1000}, {'event': 'skill_up', 'npc': 0, 'skill': 'vit'}, {'event': 'skill_up', 'npc': 0, 'skill': 'def'}, {'event': 'skill_up', 'npc': 0, 'skill': 'dgr'}, {'event': 'skill_up', 'npc': 0, 'skill': 'med'}, {'event': 'set_flag', 'flag': 'vlad_omelette_tried'}, {'npc': 'vlad_ser', 'text': 'Выжил! Поздравляю!'}]}; this[156] = {'theme': 'О СЕБЕ', 'msg': [{'event': 'set_flag', 'flag': 'vlad_vlad_trade'}, {'npc': 'vlad_vlad', 'text': 'Я – Влад Владович. Кузнец. Я кую холодное оружие. Хочешь, продам?'}]}; this[157] = {'theme': 'ТОРГОВЛЯ', 'condition': function () { return (Core.Get()).game.isFlag('vlad_vlad_trade'); }, 'msg': [{'npc': 'grid', 'text': 'Покажи, что предлагаешь, кузнец.'}, {'event': 'trade', 'npc': 'vlad_vlad'}]}; this[158] = {'theme': 'ВЛАДЗВИЛЬ', 'msg': [{'event': 'set_flag', 'flag': 'q_vladsville_visited'}, {'npc': 'grid', 'text': 'Почему ваша деревня называется Владзвиль?'}, {'npc': 'vlad_vlad', 'text': 'Потому, что всех его жителей зовут Влад, разве это не очевидно?'}, {'npc': 'grid', 'text': 'Как? Все до одного Влады?!'}, {'npc': 'vlad_vlad', 'text': 'Именно. Только Влад может жить в нашей деревне.'}]}; this[159] = {'theme': 'БЕСЕДА', 'msg': [{'npc': 'grid', 'text': 'Доброго дня!'}, {'npc': 'vlada', 'text': 'Здравствуй, Влад!'}, {'npc': 'grid', 'text': 'Я не Влад!'}, {'npc': 'vlada', 'text': 'Как?! Тогда тебе лучше покинуть нашу деревню. Только Влад может находиться в ней долго.'}, {'npc': 'grid', 'text': 'А тебя-то как зовут?!'}, {'npc': 'vlada', 'text': 'Влада. Это тоже Влад. Как видишь, здесь может жить только Влад.'}, {'npc': 'grid', 'text': 'Странный вы народ, жители Владзвиля.'}]}; this[160] = {'theme': 'ОСАДА', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_startrevolution'); }, 'msg': [{'npc': 'lesly', 'text': 'Черт! Он здесь!'}, {'npc': 'garn', 'text': 'Сейчас я из него всю дурь выбью. Генерал жалких мятежников!'}, {'npc': 'celester', 'text': 'Гарн, этот парень силен. Сегодня утром мне не удалось его убить.'}, {'npc': 'grid', 'text': 'И в этот раз тоже не получится, поверь!'}, {'event': 'set_flag', 'flag': 'q_startrevolution', 'value': 2}, {'event': 'set_flag', 'flag': 'milbase_after_battle'}, {'event': 'battle', 'band': 'garn'}]}; this[161] = {'theme': 'ОСАДА', 'condition': function () { return (Core.Get()).game.isFlag('milbase_after_battle'); }, 'msg': [{'event': 'set_flag', 'flag': 'milbase_after_battle', 'value': 0}, {'event': 'give_exp', 'value': 7500}, {'event': 'add_quest', 'quest': 'meta_uprise', 'stage': 12}, {'npc': 'grid', 'text': 'Это был тяжкий бой... но, похоже, задание выполнено. Нужно доложить Лине об успехе операции...'}]}; this[162] = {'theme': 'ЧИП 404', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_getchips') && !(Core.Get()).game.hasQuestItem(15); }, 'msg': [{'npc': 'grid', 'text': 'Мне нужен чип 404.'}, {'npc': 'garn', 'text': 'Убирайтесь вон. Это запрещенный чип.'}]}; this[163] = {'theme': 'НАВЫК: СНАЙПЕР, ЦЕНА: €5000', 'condition': function () { return !(Core.Get()).game.isFlag('v_learnedshot') && (Core.Get()).game.money >= 5000; }, 'msg': [{'npc': 'grid', 'text': 'Научи меня лучше стрелять.'}, {'npc': 'celester', 'text': 'Это будет стоить €5000. Идет?'}, {'event': 'remove_money', 'value': 5000}, {'event': 'skill_up', 'npc': 0, 'skill': 'acc'}, {'event': 'set_flag', 'flag': 'v_learnedshot'}, {'event': 'give_exp', 'value': 500}, {'npc': 'grid', 'text': 'Хорошо, по рукам.'}]}; this[164] = {'theme': 'ЧИП 404', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_getchips') && !(Core.Get()).game.hasQuestItem(15); }, 'msg': [{'npc': 'grid', 'text': 'Мне нужен чип 404.'}, {'npc': 'lesly', 'text': 'Ой... нам нельзя его давать гражданским!'}, {'npc': 'grid', 'text': 'Даже мне?'}, {'npc': 'lesly', 'text': 'Ну... хорошо! Только пригласи меня однажды на свидание!'}, {'event': 'give_quest_item', 'item': 15}, {'event': 'give_exp', 'value': 2000}, {'npc': 'grid', 'text': 'Непременно!'}]}; this[165] = {'theme': 'ТРАНСЛЯЦИЯ', 'condition': function () { return 4 == (Core.Get()).game.getFlag('q_waitforalien') && !(Core.Get()).game.isFlag('translation_progress'); }, 'msg': [{'event': 'give_exp', 'value': 15000}, {'npc': 'marcy', 'text': 'Я ждала вас!'}, {'npc': 'elm', 'text': 'Добрый день. Я волнуюсь.'}, {'npc': 'grid', 'text': 'Вы-то хоть расскажите, что происходит.'}, {'npc': 'marcy', 'text': 'Мы будем транслировать речь Сэра ЭФ в прямом эфире. Начнем с публичного показа фильма Эльма.'}, {'npc': 'marcy', 'text': 'Когда фильм завершится, Сэр ЭФ обратится с речью к людям, перекрывая остальные каналы.'}, {'npc': 'karry', 'text': 'Твоя задача – защищать телестудию от вторжения. А оно обязательно будет.'}, {'npc': 'marcy', 'text': 'Мы начинаем трансляцию фильма...'}, {'npc': '', 'text': '...'}, {'npc': 'grid', 'text': 'Прошел уже час кино... Как ситуация?'}, {'npc': 'karry', 'text': 'К нашей базе приближаются войска K.A.U.F.O.!'}, {'event': 'set_flag', 'flag': 'translation_progress', 'value': 1}, {'event': 'battle', 'band': 'tr_kaufo'}]}; this[166] = {'theme': 'ТРАНСЛЯЦИЯ', 'condition': function () { return 4 == (Core.Get()).game.getFlag('q_waitforalien') && 1 == (Core.Get()).game.getFlag('translation_progress'); }, 'msg': [{'npc': 'sir_f', 'text': 'Я прибыл.'}, {'npc': 'marcy', 'text': 'Фильм уже кончается. Самое время.'}, {'npc': 'sir_f', 'text': 'Ну что же... поехали...'}, {'npc': '', 'text': '...'}, {'npc': 'sir_f', 'text': 'Жители Земли! Меня зовут ЭФ, и я выступаю от имени пришельцев! Мы уже какое-то время находимся среди вас, и многие знают о нашем существовании...'}, {'npc': '', 'text': '...'}, {'npc': 'sir_f', 'text': '...и сказанное мной – есть правда о вашем правительстве. Та, кого вы зовете Мист – диктатор и тиран!'}, {'npc': 'karry', 'text': 'К базе приближаются войска правительства...'}, {'npc': 'mist', 'text': 'Я не позволю вам говорить про меня гадости!'}, {'event': 'set_flag', 'flag': 'translation_progress', 'value': 2}, {'event': 'battle', 'band': 'tr_mist'}]}; this[167] = {'theme': 'ТРАНСЛЯЦИЯ', 'condition': function () { return 4 == (Core.Get()).game.getFlag('q_waitforalien') && 2 == (Core.Get()).game.getFlag('translation_progress'); }, 'msg': [{'npc': 'sir_f', 'text': '...и наконец, мне бы хотелось рассказать про «секретную» организацию K.A.U.F.O., которая убивает без попытки понять то, что убивает.'}, {'npc': 'natan', 'text': 'Грид... кто бы знал, что мы закончим врагами...'}, {'npc': 'grid', 'text': 'Натан... останови это. Ты не прав. Ты же понимаешь, что ты не прав.'}, {'npc': 'natan', 'text': 'Я? Мне удалось построить мощную военную организацию, приносящую кучу денег мне и моим людям.'}, {'npc': 'natan', 'text': 'Я сумел объединить людей на почве ненависти, и этим обеспечил свое благополучие. Думаешь, я брошу это?'}, {'npc': 'grid', 'text': 'Натан... ты чудовище... я ошибался в тебе.'}, {'npc': 'elm', 'text': 'Вас снимают, ребята. Какое искреннее признание!'}, {'npc': 'natan', 'text': 'Проклятье! Я всех вас поубиваю!'}, {'event': 'set_flag', 'flag': 'translation_progress', 'value': 3}, {'event': 'battle', 'band': 'tr_nathan'}]}; this[168] = {'theme': 'ТРАНСЛЯЦИЯ', 'condition': function () { return 4 == (Core.Get()).game.getFlag('q_waitforalien') && 3 == (Core.Get()).game.getFlag('translation_progress'); }, 'msg': [{'npc': 'sir_f', 'text': '...поэтому я хочу предложить нашим цивилизациям сотрудничать!'}, {'npc': 'karry', 'text': 'Готово! Кажется мы сделали это...'}, {'npc': 'grid', 'text': 'Да... мы разобрались и с правительством и с K.A.U.F.O.'}, {'event': 'complete_quest', 'quest': 'talks_with_aliens'}, {'npc': 'sir_f', 'text': 'Эфир закончен, мы ждем ответов от городов и стран. Грид, спасибо тебе, что помог нам...'}, {'npc': 'grid', 'text': 'Да... правда, жизнь из-за этого изменилась радикальнейшим образом...'}, {'event': 'finish_game', 'ending': 3}]}; this[169] = {'theme': 'О СЕБЕ', 'msg': [{'npc': 'grid', 'text': 'Привет. Твой голос звучит знакомо...'}, {'npc': 'marcy', 'text': 'Конечно, он будет тебе знаком! Меня зовут Марси, я представляю свободный голос Калистера! Я редактор газеты и радиостанции «Крылья Страны».'}, {'npc': 'grid', 'text': 'Это ты, кажется, периодически говоришь в своих передачах о пришельцах?'}, {'event': 'set_flag', 'flag': 'marcy_aliens'}, {'npc': 'marcy', 'text': 'Да, бывает.'}]}; this[170] = {'theme': 'ПРИШЕЛЬЦЫ', 'condition': function () { return (Core.Get()).game.isFlag('marcy_aliens') && !(Core.Get()).game.isFlag('q_alienfix1'); }, 'msg': [{'npc': 'grid', 'text': 'Тебе приходилось сталкиваться с пришельцами?'}, {'npc': 'marcy', 'text': 'Конечно, и не раз. Они очень милые и общительные.'}, {'npc': 'grid', 'text': 'Да ну.'}, {'event': 'give_exp', 'value': 1000}, {'event': 'set_flag', 'flag': 'q_alienfix1'}, {'npc': 'marcy', 'text': 'Конечно. Они помогли мне с выбором карьеры в свое время. Иначе я бы стала стриптизеркой, а не журналистом. Но они убедили меня, что у меня талант... и нет фигуры. И, видишь, были правы!'}]}; this[171] = {'theme': 'КАЛИСТЕР', 'msg': [{'npc': 'grid', 'text': 'Что ты можешь рассказать мне про ваш город?'}, {'npc': 'marcy', 'text': 'Калистер и Сирит находятся в давней вражде друг с другом... ну, скорее это конкуренция, чем вражда.'}, {'npc': 'marcy', 'text': 'Собственно, и история городов строится именно на этом: весь прогресс науки и культуры в городе – желание покрасоваться перед соседом.'}, {'npc': 'marcy', 'text': 'Но все равно Калистер богаче Сирита. Здесь живут кинозвезды, дети богатых родителей, популярные певцы и так далее. В Сирите же много «подпольного» искусства и бедноты.'}, {'npc': 'marcy', 'text': 'Так что гонку явно выиграл Калистер.'}]}; this[172] = {'theme': 'ДИСК КИБО', 'condition': function () { return (Core.Get()).game.hasQuestItem(13); }, 'msg': [{'npc': 'grid', 'text': 'Отлично, ты работаешь на радио! Послушай, у меня тут есть один перспективный паренек, который хочет петь...'}, {'npc': 'marcy', 'text': 'Таких тысячи. Я не могу ставить песни каждого.'}, {'npc': 'grid', 'text': 'Этот особенный. Послушай. Вот наушники. Я поставил трек.'}, {'npc': '', 'text': '...'}, {'npc': 'marcy', 'text': 'Что ж, этот парень неплох. Он говорит правду о жизни, мне нравится... но кто он?'}, {'npc': 'grid', 'text': 'Меценат Кибо.'}, {'npc': 'marcy', 'text': 'Да ладно?! Тот самый Кибо?! Чего же он себе не купит станцию или чарты?!'}, {'npc': 'grid', 'text': 'Он хочет добиться всего без денег. Тебя интересует этот диск?'}, {'event': 'remove_quest_item', 'item': 13}, {'event': 'set_flag', 'flag': 'q_kibodisc'}, {'event': 'give_exp', 'value': 500}, {'npc': 'marcy', 'text': 'Конечно! Разумеется, я поставлю его в эфире. Это хорошая музыка.'}]}; this[173] = {'theme': 'О СЕБЕ', 'msg': [{'npc': 'grid', 'text': 'Я не твой фанат. Ты же Байби, актриса, модель и певица.'}, {'npc': 'biby', 'text': 'Да. И почему ты при этом не мой фанат? Так разве бывает?'}, {'npc': 'grid', 'text': 'Потому что ты плохая актриса и поешь плохо! Только выглядишь хорошо.'}, {'npc': 'biby', 'text': 'Спасибо!'}, {'npc': 'grid', 'text': 'Это не комплимент!'}]}; this[174] = {'theme': 'ЛЮБОВНЫЙ ОХОТНИК', 'condition': function () { return (Core.Get()).game.hasQuestItem(16); }, 'msg': [{'npc': 'grid', 'text': 'Байби, вами заинтересовался один мой знакомый.'}, {'npc': 'biby', 'text': 'Мною заинтересованы все!'}, {'npc': 'grid', 'text': 'Но он невероятно богат и красив!'}, {'npc': 'biby', 'text': 'Тогда он сможет добиться моего внимания.'}, {'npc': 'grid', 'text': 'Он подарил вам этот чип, который сделает вас богиней мира.'}, {'npc': 'biby', 'text': 'Богиней – это хорошо. Я достойна этого. Я пойду тогда имплантирую его.'}, {'npc': 'grid', 'text': 'И вскоре после этого он найдет вас.'}, {'npc': 'key', 'text': 'Это была наиболее идиотская история из всех, которые я слышала...', 'condition': function () { return (Core.Get()).game.isInTeam(1); }}, {'npc': 'grid', 'text': 'И она ведь повелась!', 'condition': function () { return (Core.Get()).game.isInTeam(1); }}, {'npc': '', 'text': '...', 'condition': function () { return (Core.Get()).game.isInTeam(1); }}, {'npc': 'biby', 'text': 'Спасибо тебе, милый посыльный, я дам тебе автограф!..'}, {'event': 'give_exp', 'value': 1500}, {'event': 'remove_quest_item', 'item': 16}, {'event': 'set_flag', 'flag': 'q_lovehunter', 'value': 2}, {'event': 'add_quest', 'quest': 'love_hunter', 'stage': 2}, {'npc': 'grid', 'text': 'Да не нужен мне автограф!'}]}; this[175] = {'theme': 'О СЕКТЕ', 'msg': [{'npc': 'grid', 'text': 'Что еще за секта?!'}, {'npc': 'ibrahim', 'text': 'Секта последователей Армадоса, кибернетического божества. Вступай в нее. У нас вкусное печенье и интересный досуг.'}, {'npc': 'grid', 'text': 'Нет уж, спасибо...'}]}; this[176] = {'theme': 'НЕВЕРНЫЕ', 'condition': function () { return !(Core.Get()).game.isFlag('q_wrongones'); }, 'msg': [{'npc': 'ibrahim', 'text': 'Постой, не проходи мимо.'}, {'npc': 'ibrahim', 'text': 'Ты мог бы помочь мне в одном деле, и я взамен поделился бы секретным оружием нашей секты.'}, {'npc': 'grid', 'text': 'И что за дело?'}, {'npc': 'ibrahim', 'text': 'Однажды, наша секта хотела покарать всех неверных, и изобрела с этой целью 13 адских машин. Однако потом мы передумали, но было слишком поздно – машины вышли из-под контроля (кто-то установил им программу другой веры) и бродят по всему миру.'}, {'npc': 'ibrahim', 'text': 'Найди все 13 машин и уничтожь их.'}, {'npc': 'grid', 'text': 'И как я их найду?!'}, {'npc': 'ibrahim', 'text': 'Я дам тебе детектор. Он обозначит все машины на твоей карте красными точками.'}, {'event': 'set_flag', 'flag': 'q_wrongones', 'value': 1}, {'event': 'add_quest', 'quest': 'infidels', 'stage': 0}, {'event': 'spawn', 'band': 'arma_machine'}, {'npc': 'grid', 'text': 'Понятно. Ну что ж, будет время – сделаю.'}]}; this[177] = {'theme': 'НЕВЕРНЫЕ – ВЫПОЛНЕНО', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_wrongones') && 13 <= (Core.Get()).game.getFlag('kills_inferno_ibrahim'); }, 'msg': [{'npc': 'grid', 'text': 'Я уничтожил все 13 адских машин...'}, {'npc': 'ibrahim', 'text': 'Наконец-то! Армадос доволен тобой, странник.'}, {'npc': 'grid', 'text': 'Да-да-да. А что там с наградой?'}, {'event': 'give_exp', 'value': 15000}, {'event': 'set_flag', 'flag': 'q_wrongones', 'value': 2}, {'event': 'complete_quest', 'quest': 'infidels'}, {'event': 'give_item', 'item': 119}, {'npc': 'ibrahim', 'text': 'Как и обещал, вот наше тайное оружие!'}]}; this[178] = {'theme': 'О СЕБЕ', 'msg': [{'npc': 'grid', 'text': 'А чем ты занимаешься по жизни?'}, {'npc': 'michel', 'text': 'Эм... такой неловкий вопрос... я дарю мужчинам любовь за деньги, если устроит такой ответ.'}, {'npc': 'grid', 'text': 'Понятно. Ну что же. Дело нужное. Не каждый может себе позволить любовь за личные качества.'}, {'npc': 'michel', 'text': 'Рада, что понимаете. Обращайтесь, если что.'}]}; this[179] = {'theme': 'МЕДАЛЬОН МИШЕЛЬ', 'condition': function () { return !(Core.Get()).game.isFlag('q_medalion'); }, 'msg': [{'npc': 'michel', 'text': 'Могу я попросить вас об одолжении?'}, {'npc': 'grid', 'text': 'Ну почему нет. Попытаться стоит!'}, {'npc': 'michel', 'text': 'Однажды... хм... на работе я потеряла свой медальон. Кажется, его подобрал тот парень, с кем я работала. Он был похож на бандита...'}, {'npc': 'michel', 'text': 'Так вот, если вам случится во время боев с бандитами найти мой медальон, то верните его мне, пожалуйста.'}, {'event': 'set_flag', 'flag': 'q_medalion', 'value': 1}, {'event': 'add_quest', 'quest': 'michels_medallion', 'stage': 0}, {'npc': 'grid', 'text': 'Договорились!'}]}; this[180] = {'theme': 'МЕДАЛЬОН МИШЕЛЬ - ВЫПОЛНЕНО', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_medalion') && (Core.Get()).game.hasQuestItem(17); }, 'msg': [{'npc': 'michel', 'text': 'Это же мой медальон! Спасибо вам, что нашли его! Хотите, я вам... сделаю что-нибудь приятное?.. А то денег у меня нет...'}, {'event': 'remove_quest_item', 'item': 17}, {'npc': 'grid', 'text': 'Хм...'}, {'npc': '', 'text': '...'}, {'npc': '', 'text': '...'}, {'npc': '', 'text': '...'}, {'npc': 'grid', 'text': 'Ох... Спасибо, Мишель!'}, {'event': 'set_flag', 'flag': 'q_medalion', 'value': 2}, {'event': 'give_exp', 'value': 1500}, {'event': 'complete_quest', 'quest': 'michels_medallion'}, {'event': 'give_item', 'item': 148}, {'event': 'give_item', 'item': 148}, {'event': 'give_item', 'item': 149}, {'npc': 'michel', 'text': 'Всегда пожалуйста! Вот, возьмите в подарок еще и это.'}]}; this[181] = {'theme': 'О СЕБЕ', 'msg': [{'npc': 'grid', 'text': 'Ты кто, и почему хочешь отрывать руки?'}, {'npc': 'jax', 'text': 'Я – Джакс, шеф полиции города Сирит. Я люблю отрывать руки. Это воодушевляет.'}, {'npc': 'grid', 'text': 'Думаю, здороваться будем тогда в устной форме...'}]}; this[182] = {'theme': 'ГОРОД СИРИТ', 'msg': [{'npc': 'grid', 'text': 'Расскажи мне про город Сирит.'}, {'npc': 'jax', 'text': 'О... Сирит это великий город, не то, что наш сосед – город Калистер.'}, {'npc': 'jax', 'text': 'В Калистере живут богатеи и зазнавшиеся крупные шишки, а в Сирите – живут люди. Причем, талантливые и умные.'}, {'npc': 'jax', 'text': 'Да, мы не так богаты, как хотелось бы. Но зато высоко ценится наше искусство, хотя оно и не находит массового зрителя.'}, {'npc': 'jax', 'text': 'Да и вообще, лучше жить в творческой нищете, чем в бездушном богатстве. Вы видели, например, Байбу?'}, {'npc': 'jax', 'text': 'Эта глупенькая модель пошла в кино, не умея играть. И в Сирите ее постоянно снимают!'}, {'npc': 'grid', 'text': 'Да, я видел, ее фильмы ужасны. Понял твою точку зрения.'}]}; this[183] = {'theme': 'ОЧИСТКА ПРИГОРОДА', 'condition': function () { return !(Core.Get()).game.isFlag('q_cityclear'); }, 'msg': [{'npc': 'jax', 'text': 'Не подашь ли мне руку?'}, {'npc': 'grid', 'text': 'НЕТ!!'}, {'npc': 'jax', 'text': 'Да не в этом смысле.'}, {'npc': 'jax', 'text': 'Преступность в городе – моя забота. А в пригороде защитников нет. А бандиты есть. Если убьешь 50 бандитов в районе Демиенских Высот, получишь награду.'}, {'event': 'set_flag', 'flag': 'q_cityclear', 'value': 1}, {'event': 'add_quest', 'quest': 'clean_suburbs', 'stage': 0}, {'npc': 'grid', 'text': 'Понял.'}]}; this[184] = {'theme': 'ОЧИСТКА ПРИГОРОДА – ВЫПОЛНЕНО', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_cityclear') && 50 <= (Core.Get()).game.getFlag('kills_bandits_jax'); }, 'msg': [{'npc': 'grid', 'text': 'Я убил, наверное, с полсотни бандитов!'}, {'npc': 'jax', 'text': 'Именно об этом я и просил. Вот награда. Дай пожму твою руку...'}, {'event': 'give_exp', 'value': 10000}, {'event': 'give_money', 'value': 50000}, {'event': 'set_flag', 'flag': 'q_cityclear', 'value': 2}, {'event': 'complete_quest', 'quest': 'clean_suburbs'}, {'npc': 'grid', 'text': 'Просто оставь деньги на столе.'}]}; this[185] = {'theme': 'ТОРГОВЛЯ', 'msg': [{'event': 'trade', 'npc': 'jax'}]}; this[186] = {'theme': 'О СЕБЕ', 'msg': [{'npc': 'grid', 'text': 'Ваше лицо кажется знакомым...'}, {'event': 'set_flag', 'flag': 'elm_film'}, {'npc': 'elm', 'text': 'Меня зовут Эльм Лоттер. Я режиссер документальных фильмов. Возможно, видели меня в телепередачах, где я рассказывал о своих фильмах.'}]}; this[187] = {'theme': 'ВИДЕОКАМЕРА ПРИШЕЛЬЦЕВ', 'condition': function () { return (Core.Get()).game.isFlag('elm_camera') && (Core.Get()).game.hasQuestItem(18); }, 'msg': [{'npc': 'grid', 'text': 'Я тут нашел видеокамеру пришельцев, что думаете?'}, {'npc': 'elm', 'text': 'О, отлично! Я на такую и снимал свой документальный фильм. А еще жалел, что у меня такой нет! Давайте, я ее у вас выкуплю?'}, {'npc': 'grid', 'text': 'Ладно. Сколько?'}, {'npc': 'elm', 'text': '2000'}, {'event': 'remove_quest_item', 'item': 18}, {'event': 'give_money', 'value': 2000}, {'event': 'give_exp', 'value': 10000}, {'npc': 'grid', 'text': 'Отлично! Договорились.'}]}; this[188] = {'theme': 'ФИЛЬМ О ПРИШЕЛЬЦАХ', 'condition': function () { return (Core.Get()).game.isFlag('elm_film'); }, 'msg': [{'npc': 'grid', 'text': 'Это вы сняли документальный фильм о пришельцах?'}, {'npc': 'elm', 'text': 'Да. Это мой фильм, «Пришельцы среди нас». Хронометраж час сорок.'}, {'npc': 'grid', 'text': 'Как вы так убедительно сделали куклы пришельцев?'}, {'npc': 'elm', 'text': 'Какие куклы, я же документалист! Это настоящие пришельцы, мы поговорили с ними, они согласились на фильм. Все, что в фильме, это правда. Кроме текстов рекламы. Они – не правда.'}, {'npc': 'grid', 'text': 'Я не думаю, что пришельцы настолько дружелюбны.'}, {'npc': 'elm', 'text': 'Зря. Они не только прогрессивная, но еще и дружественная нация. Они стараются помогать в чем могут, обучать чему-то если видят желание учиться... и так далее.'}, {'event': 'set_flag', 'flag': 'elm_camera'}, {'event': 'give_exp', 'value': 1000, 'condition': function () { return !(Core.Get()).game.isFlag('q_alienfix3'); }}, {'event': 'set_flag', 'flag': 'q_alienfix3'}, {'npc': 'elm', 'text': 'Кстати, фильм снимался на их камеру – у них технологии покруче наших. Жаль, я у них не выкупил одну такую...'}]}; this[189] = {'theme': 'О СЕБЕ', 'msg': [{'npc': 'nina_x', 'text': 'Меня зовут Нина Х. И это не «хэ», а «икс». Икс типа неизвестность! Во!'}, {'npc': 'grid', 'text': 'Очень приятно, Нина. Как время проводишь?..'}, {'event': 'set_flag', 'flag': 'nina_club'}, {'npc': 'nina_x', 'text': 'Люблю клубы, люблю экстремальный спорт. Не люблю сидеть на месте.'}]}; this[190] = {'theme': 'ПРИГЛАСИТЬ В КЛУБ', 'condition': function () { return (Core.Get()).game.isFlag('nina_club'); }, 'msg': [{'npc': 'grid', 'text': 'Хочешь затусить?'}, {'npc': 'nina_x', 'text': 'Конечно, погнали. Но с тебя – пиво!'}, {'npc': '', 'text': '...'}, {'npc': 'grid', 'text': 'Ох... ну и пати...'}, {'npc': 'nina_x', 'text': 'Скукотища! Диджей отстой. Народ – сухари.'}, {'npc': 'grid', 'text': 'Согласен. Куда веселее мочить людей из разных стволов.'}, {'npc': 'nina_x', 'text': 'Да! Это круто! А ты этим занимаешься?'}, {'npc': 'grid', 'text': 'Аха. Мочу гадов.'}, {'event': 'set_flag', 'flag': 'nina_join'}, {'npc': 'nina_x', 'text': 'Круть!'}]}; this[191] = {'theme': 'ПРИСОЕДИНИТЬСЯ К ОТРЯДУ', 'condition': function () { return (Core.Get()).game.isFlag('nina_join'); }, 'msg': [{'npc': 'grid', 'text': 'Кстати о стрельбе, не хочешь со мной попутешествовать?'}, {'event': 'give_exp', 'value': 1500}, {'event': 'join_team', 'npc': 10}, {'npc': 'nina_x', 'text': 'Отлично! Почему нет. Зажжем, чувак!'}]}; this[192] = {'theme': 'О СЕБЕ', 'msg': [{'npc': 'grid', 'text': 'Расскажите о себе.'}, {'npc': 'uncle_sam', 'text': 'О! Я простой обладатель огромнейшей в мире плантации. У меня в жизни есть все, что нужно! Деньги, еда, красавица-дочь! А сделал я свое состояние очень просто.'}, {'npc': 'grid', 'text': 'Фермерством?'}, {'event': 'set_flag', 'flag': 'sam_trade'}, {'npc': 'uncle_sam', 'text': 'Нет, я торгую оружием!'}]}; this[193] = {'theme': 'ТОРГОВЛЯ', 'condition': function () { return (Core.Get()).game.isFlag('sam_trade'); }, 'msg': [{'event': 'trade', 'npc': 'uncle_sam'}]}; this[194] = {'theme': 'О ДЯДЮШКЕ СЭМЕ', 'msg': [{'npc': 'stacy', 'text': 'Мой папа – самый богатый в мире фермер! У нас достаток и мир. Достаток потому, что мы выращиваем овощи, мир потому, что у нас много пушек!'}]}; this[195] = {'theme': 'О СЕБЕ', 'msg': [{'npc': 'stacy', 'text': 'Меня, кстати, зовут Стейси. Если еще не знаешь, я – дочка Сэма.'}, {'event': 'set_flag', 'flag': 'stacy_trade'}, {'npc': 'stacy', 'text': 'Я помогаю папе с фермой, а еще торгую провизией и девайсами.'}]}; this[196] = {'theme': 'ТОРГОВЛЯ', 'condition': function () { return (Core.Get()).game.isFlag('stacy_trade'); }, 'msg': [{'event': 'trade', 'npc': 'stacy'}]}; this[197] = {'theme': 'ХЭЛЛ', 'condition': function () { return !(Core.Get()).game.isFlag('hell_greet'); }, 'msg': [{'npc': 'hell', 'text': 'Здравствуй, котик. Ты ко мне?'}, {'npc': 'grid', 'text': 'Ты вообще кто такая?'}, {'npc': 'hell', 'text': 'Я – Хэлл. Мое имя Хэлл.'}, {'npc': 'grid', 'text': 'Что здесь произошло?'}, {'npc': 'hell', 'text': 'На мой дом пытались напасть. Мне пришлось всех убить.'}, {'npc': 'grid', 'text': 'Здесь сотни трупов!'}, {'npc': 'hell', 'text': 'Так я талантлива!.. Хочешь, поиграем?'}, {'npc': 'grid', 'text': 'Что-то не очень хочется...'}, {'npc': 'hell', 'text': 'Да ладно тебе, захочешь поиграть – приходи. Я хороша как в бою, так и в постели.'}, {'event': 'give_exp', 'value': 2500}, {'event': 'set_flag', 'flag': 'hell_greet'}, {'npc': 'grid', 'text': 'Черт, женщина, ты красива и опасна...'}]}; this[198] = {'theme': 'О СЕБЕ', 'condition': function () { return !(Core.Get()).game.isFlag('v_hellget'); }, 'msg': [{'npc': 'grid', 'text': 'Расскажи мне о себе.'}, {'npc': 'hell', 'text': 'Да что рассказывать, в моей жизни были реки крови и горы мужчин, как живых, так и тех, кому я позволяла любить себя. К сожалению, все и из тех, и из других мертвы.'}]}; this[199] = {'theme': 'АЛЬФАВИЛЬ', 'condition': function () { return !(Core.Get()).game.isFlag('v_hellget'); }, 'msg': [{'npc': 'grid', 'text': 'А что это за место?'}, {'npc': 'hell', 'text': 'Альфавиль. Здесь я родилась когда-то давно... Тут правда уже никто кроме меня не живет, но я бываю склонна к ностальгии.'}, {'npc': 'grid', 'text': 'А куда все делись?'}, {'npc': 'hell', 'text': 'Когда я родилась, меня окрестили проклятьем этих мест и бросили здесь одну. Разумеется, я всем им отомстила позже. Тем, кого вспомнила.'}, {'npc': 'grid', 'text': 'Неприятно, наверное, быть не такой как все...'}, {'npc': 'hell', 'text': 'Да нет же. Серые люди живут серые жизни и не понимают, сколько всего теряют за следованием чужим правилам. Я ничему не следую, кроме себя и своего слова. Я свободна.'}]}; this[200] = {'theme': 'ЖЕЛАНИЯ', 'condition': function () { return !(Core.Get()).game.isFlag('v_hellget'); }, 'msg': [{'npc': 'grid', 'text': 'Твой вид и манера говорить пробуждают у меня желания...'}, {'npc': 'hell', 'text': 'Какие бы желания тебя не терзали, чтобы они сбылись, тебе придется победить меня в бою. Не люблю неудачников.'}]}; this[201] = {'theme': 'НАПАСТЬ НА ХЭЛЛ', 'condition': function () { return !(Core.Get()).game.isFlag('v_hellget'); }, 'msg': [{'npc': 'grid', 'text': 'Ты слишком опасна, чтобы жить.'}, {'npc': 'hell', 'text': 'Ой, ты так высоко меня ценишь! Я тебя обожаю!..'}, {'npc': 'grid', 'text': 'Я пришел убить тебя. Будь серьезнее.'}, {'npc': 'hell', 'text': 'Ты такой смешной и думаешь, что у тебя это получится!'}, {'event': 'set_flag', 'flag': 'hell_after_battle'}, {'event': 'set_area_flag', 'flag': 'hell_after_battle_delay'}, {'event': 'battle', 'band': 'hell', 'level': 20}]}; this[202] = {'theme': 'ХЭЛЛ', 'condition': function () { return !(Core.Get()).game.isFlag('v_hellget') && (Core.Get()).game.isFlag('hell_after_battle') && !(Core.Get()).game.isAreaFlag('hell_after_battle_delay'); }, 'msg': [{'npc': 'hell', 'text': 'Потрясающе! Ты сумел удивить меня! Ты силен и я ценю это. Хочешь, я буду служить тебе? Или возьми мою жизнь. Я буду рада, что меня убьет сильнейший!'}, {'event': 'set_flag', 'flag': 'v_hellget', 'value': 1}, {'event': 'talk', 'npc': 'hell', 'no_bye': true}]}; this[203] = {'theme': 'УБИТЬ ХЭЛЛ', 'condition': function () { return 1 == (Core.Get()).game.getFlag('v_hellget'); }, 'msg': [{'event': 'give_exp', 'value': 15000}, {'event': 'give_money', 'value': 100000}, {'event': 'give_item', 'item': 118}, {'event': 'set_flag', 'flag': 'v_hellkilled'}, {'event': 'allow_bye'}, {'event': 'set_flag', 'flag': 'v_hellget', 'value': 2}, {'npc': '', 'text': 'Вы убили Хэлл!'}]}; this[204] = {'theme': 'ВЗЯТЬ ХЭЛЛ В ОТРЯД', 'condition': function () { return 1 == (Core.Get()).game.getFlag('v_hellget'); }, 'msg': [{'npc': 'grid', 'text': 'Пойдем со мной. Только веди себя прилично.'}, {'npc': 'hell', 'text': 'Этого я не могу обещать, дорогуша. Я очень грязная девочка!'}, {'event': 'give_exp', 'value': 5000}, {'event': 'join_team', 'npc': 11}, {'event': 'allow_bye'}, {'event': 'set_flag', 'flag': 'v_hellget', 'value': 2}, {'npc': 'grid', 'text': 'Ох... чувствую, я еще об этом пожалею...'}]}; this[205] = {'theme': 'СВЕРГНУТЬ ПРЕЗИДЕНТА', 'condition': function () { return 3 == (Core.Get()).game.getFlag('q_startrevolution'); }, 'msg': [{'event': 'complete_quest', 'quest': 'meta_uprise'}, {'npc': 'grid', 'text': 'Что ж, пришло время изменить этот мир.'}, {'npc': 'mist', 'text': 'Зачем?'}, {'npc': 'grid', 'text': 'Лина станет хорошим правителем. Хотя она и сумасшедший полуробот.'}, {'npc': 'mist', 'text': 'Бред. Народу нужен тиран, а не школьница с ПК в башке. Как вы мне все надоели, людишки. Не понять вам меня, великую. УБИТЬ! УБИТЬ ИХ ВСЕХ, МОИ СОЛДАТЫ!'}, {'event': 'battle', 'band': 'mist'}]}; this[206] = {'theme': 'О СЕБЕ', 'msg': [{'npc': 'grid', 'text': 'Молчаливый парень... поговори со мной.'}, {'npc': 'kage', 'text': '...'}]}; this[207] = {'theme': 'ПРИСОЕДИНИТЬСЯ К ОТРЯДУ', 'condition': function () { return !(Core.Get()).game.isInTeam(9); }, 'msg': [{'npc': 'grid', 'text': 'Похоже, ты сильный. Не присоединишься к моему отряду?'}, {'npc': 'kage', 'text': '...'}]}; this[208] = {'theme': 'ПРИСОЕДИНИТЬСЯ К ОТРЯДУ', 'condition': function () { return (Core.Get()).game.isInTeam(9); }, 'msg': [{'npc': 'grid', 'text': 'Вопрос, конечно, звучит нелепо, но, может, хочешь присоединиться к нашему отряду?'}, {'npc': 'kage', 'text': 'Ок.'}, {'event': 'join_team', 'npc': 6}, {'npc': 'feather', 'text': 'Ой... он, кажется, на меня смотрит...'}, {'npc': 'kage', 'text': 'Ты хорошая. Они – нет. Я буду защищать вас и тех, кто с вами.'}, {'npc': 'feather', 'text': 'Спасибо... я аж покраснела!'}, {'npc': 'grid', 'text': 'Вот он странный. Человек-загадка, блин.'}, {'event': 'give_exp', 'value': 3000}, {'npc': 'kage', 'text': '...'}]}; this[209] = {'theme': 'О СЕБЕ', 'msg': [{'npc': 'grid', 'text': 'Вы кто?'}, {'npc': 'grandin', 'text': 'Меня обычно называют Грандин. Я монах этого горного городка. Ты предпочитаешь оружие, поэтому я не стану тебя учить.'}, {'npc': 'grid', 'text': 'А вон тот молчаливый тип – кто он?', 'condition': function () { return !(Core.Get()).game.isInTeam(6); }}, {'npc': 'grandin', 'text': 'Это мой ученик, Кейдж. Очень редко ему нравится кто-либо. Только с человеком по-детски невинным он может пойти плечом к плечу.', 'condition': function () { return !(Core.Get()).game.isInTeam(6); }}, {'npc': 'grid', 'text': 'Может, вы могли бы научить меня выживанию?'}, {'event': 'set_flag', 'flag': 'grandin_teach'}, {'npc': 'grandin', 'text': 'Что ж... за 5,000 монет мог бы. Нам же надо на что-то монастырь строить.'}]}; this[210] = {'theme': 'ГОРНЫЙ ГОРОДОК', 'msg': [{'npc': 'grid', 'text': 'А что это вообще за место?'}, {'npc': 'grandin', 'text': 'Это город монахов, расположенный высоко в горах. У него нет названия. Названия – пустое. Здесь воин может познать силу своего духа и сделать ее силой своего тела.'}]}; this[211] = {'theme': 'УЧЕБА: ВЫЖИВАНИЕ, ЦЕНА: €5000', 'condition': function () { return !(Core.Get()).game.isFlag('v_learnlive') && (Core.Get()).game.isFlag('grandin_teach') && (Core.Get()).game.money >= 5000; }, 'msg': [{'npc': 'grid', 'text': 'Научите меня выживанию!'}, {'event': 'remove_money', 'value': 5000}, {'event': 'skill_up', 'npc': 0, 'skill': 'vit'}, {'event': 'set_flag', 'flag': 'v_learnlive'}, {'event': 'give_exp', 'value': 1000}, {'npc': 'grandin', 'text': '...'}]}; this[212] = {'theme': 'ДОКТОР РЕЙД', 'msg': [{'npc': 'grid', 'text': 'Это не вы ли тот великий ученый А. Ф. Рейд, создававший в свое время опаснейшие орудия для армий разных стран?'}, {'event': 'set_flag', 'flag': 'rade_trade'}, {'npc': 'dr_rade', 'text': 'Это я. Я раскаиваюсь и занимаюсь другими исследованиями. Однако, у меня еще осталось кое-что из оружия, могу продать – мне оно не нужно.'}]}; this[213] = {'theme': 'ТОРГОВЛЯ', 'condition': function () { return (Core.Get()).game.isFlag('rade_trade'); }, 'msg': [{'event': 'trade', 'npc': 'dr_rade'}]}; this[214] = {'theme': 'ЧИПЫ ДЛЯ БЕККОРДА', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_getchips') && !(Core.Get()).game.hasQuestItem(19); }, 'msg': [{'npc': 'grid', 'text': 'Вы не знаете, где бы достать чипы 404, 101 и 707?'}, {'npc': 'garret', 'text': 'Вы что, по номерам их отбирали?.. В любом случае, я смогу помочь вам. У меня есть ненужный чип 101. Возьмите.'}, {'event': 'give_quest_item', 'item': 19}, {'npc': 'garret', 'text': 'Также мне известно, что чип 707 может быть где-то в городе Интегра, а 404... такие будут только на военной базе. Это же крайне опасная штука. Ну, удачи вам.'}, {'npc': 'grid', 'text': 'Спасибо, Гаррет!'}]}; this[215] = {'theme': 'НЕФРИТОВЫЙ ОСТРОВ', 'msg': [{'npc': 'grid', 'text': 'Что это за место?'}, {'npc': 'garret', 'text': 'Это – Нефритовый Остров, где находится колония генных инженеров. Мы тут изобретаем Таинственного Монстра... но вам не нужно было это говорить.'}, {'npc': 'grid', 'text': 'Эм...'}, {'npc': 'garret', 'text': 'Шучу, конечно же. Зачем нам Таинственный Монстр? Не нужен.'}]}; this[216] = {'theme': 'ДЕККИС', 'condition': function () { return 1 == (Core.Get()).game.getFlag('v_killeddekkis'); }, 'msg': [{'npc': 'grid', 'text': 'Эм... так случилось, что я встретил вашего сына, Деккиса...'}, {'npc': 'garret', 'text': 'Черт! Не говори о нем! Мерзавец все еще жив?!'}, {'npc': 'grid', 'text': 'Ну... когда я его видел, он какое-то время был жив... затем стал человеком-быком и был убит... Извините.'}, {'npc': 'garret', 'text': 'Я уже давно смирился с тем, что у меня нет сына!.. Но все равно больно...'}, {'npc': 'garret', 'text': 'Знаете, ведь он был даже не моим сыном. Я проверял по днк. Моя жена изменяла мне... но не будем об этом.'}, {'npc': 'garret', 'text': 'Деккис был сумасшедшим, поэтому я испытал облегчение, узнав, что он, наконец, успокоился. Бедный парень... как хотелось, чтобы он жил нормально...'}, {'event': 'give_exp', 'value': 12000}, {'event': 'give_item', 'item': 101}, {'event': 'set_flag', 'flag': 'v_killeddekkis', 'value': 2}, {'npc': 'garret', 'text': 'Вот, возьмите. А сейчас оставьте меня.'}]}; this[256] = {'theme': 'ТОРГОВЛЯ', 'condition': function () { return (Core.Get()).game.hasQuestItem(27) && !(Core.Get()).game.hasQuestItem(26); }, 'msg': [{'event': 'trade', 'npc': 'garret'}]}; this[217] = {'theme': 'О СЕБЕ', 'msg': [{'npc': 'grid', 'text': 'Ты кто, девочка с розовыми волосами?'}, {'event': 'set_flag', 'flag': 'xena_soils'}, {'npc': 'ksenya', 'text': 'Меня зовут Ксения, я микробиолог! На Нефритовом Острове я нашла нужные мне технологии... но теперь мне постоянно не хватает материалов для исследований!'}]}; this[218] = {'theme': 'ПОИСК МАТЕРИАЛОВ', 'condition': function () { return (Core.Get()).game.isFlag('xena_soils') && !(Core.Get()).game.isFlag('q_gesoils'); }, 'msg': [{'npc': 'grid', 'text': 'Нужна помощь в поиске материалов?'}, {'npc': 'ksenya', 'text': 'Была бы признательна! Мне нужны образцы почвы каждого региона.'}, {'event': 'give_quest_item', 'item': 20}, {'npc': 'ksenya', 'text': 'Вот, это собиратель почвы. Он прост в использовании! Оказавшись в нужном регионе, нажмите на кнопку «ВЗЯТЬ ОБРАЗЕЦ», которая появится у вас на экране.'}, {'event': 'set_flag', 'flag': 'q_gesoils', 'value': 1}, {'event': 'add_quest', 'quest': 'soil_analysis', 'stage': 0}, {'npc': 'grid', 'text': 'Понятно.'}]}; this[219] = {'theme': 'ПОИСК МАТЕРИАЛОВ - ВЫПОЛНЕНО', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_gesoils'); }, 'msg': [{'npc': 'grid', 'text': 'Я собрал все образцы.'}, {'event': 'set_flag', 'flag': 'q_gesoils', 'value': 2}, {'event': 'give_exp', 'value': 15000}, {'event': 'give_item', 'item': 115}, {'event': 'complete_quest', 'quest': 'soil_analysis'}, {'npc': 'ksenya', 'text': 'Отлично! Это же здорово! Я вам хочу подарить кое-что...'}]}; this[220] = {'theme': 'ПРИШЕЛЬЦЫ', 'condition': function () { return 7 == (Core.Get()).game.getFlag('q_bigalienplan'); }, 'msg': [{'npc': 'grid', 'text': 'Король пришельцев! Сдавайся! Мы за тобой!'}, {'npc': 'sir_f', 'text': 'Мне сообщили о том, что вы направляетесь сюда с целью убить меня. Позвольте представиться, меня на этой планете называют сэр ЭФ.'}, {'npc': 'grid', 'text': 'Мне это совершенно не интересно. Я здесь за тем, чтобы избавить планету от пришельцев.'}, {'npc': 'sir_f', 'text': 'А задумывался ли ты, Грид, над тем, наносим ли мы вред или приносим пользу?'}, {'npc': 'grid', 'text': 'Нет, не задумывался.'}, {'npc': 'sir_f', 'text': 'Так, может, стоит?'}, {'npc': 'grid', 'text': 'Неа, не стоит.'}, {'npc': 'sir_f', 'text': 'Как «не стоит»?!'}, {'npc': 'grid', 'text': 'Ну вот так. Вы не даете планете развиваться естественным образом, вмешиваясь в нашу политику, социальную структуру, науку и генный фонд.'}, {'npc': 'grid', 'text': 'Тем самым, вы принуждаете нас идти по вашему пути развития, лишая возможности прийти к чему-то своему, возможно, более великому, чем ваша цивилизация, возможно, великому по-другому. Но главное – мы должны прийти к этому сами.'}, {'npc': 'sir_f', 'text': 'Какой бред...'}, {'event': 'complete_quest', 'quest': 'natan_plan'}, {'npc': 'grid', 'text': 'Предлагаю аргументировать свою правоту оружием!'}, {'event': 'battle', 'band': 'sir_f'}]}; this[221] = {'theme': 'ПРИШЕЛЬЦЫ', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_kaufo_betrayal') && !(Core.Get()).game.isFlag('q_waitforalien') && !(Core.Get()).game.isFlag('aliens_friends'); }, 'msg': [{'event': 'set_flag', 'flag': 'aliens_friends'}, {'npc': 'karry', 'text': 'Грид, это наш Император, сэр ЭФ. Поговори с ним...'}]}; this[222] = {'theme': 'ПРИШЕЛЬЦЫ', 'condition': function () { return 3 == (Core.Get()).game.getFlag('q_waitforalien') && !(Core.Get()).game.getFlag('battle_key'); }, 'msg': [{'npc': 'karry', 'text': 'Да тут побоище!'}, {'npc': 'key', 'text': 'Предатель Грид! Я пришла совершить возмездие и уничтожить пришельцев.'}, {'npc': 'grid', 'text': 'Как ты меня нашла?'}, {'npc': 'key', 'text': 'В твоем теле, как и у всех сотрудников У.В.И.Ф.Ж., есть небольшой радио-локатор, определяющий твое положение... что ж, даже предав нас, ты все равно помог нам...'}, {'npc': 'grid', 'text': 'Ох, Кей, зачем тебе быть настолько упертой и сражаться на стороне глупости?'}, {'npc': 'key', 'text': 'Это ты ничего не понимаешь. Цивилизации должны развиваться естественным ходом, а не при помощи инопланетных «друзей»! Кто знает, принесет ли в конечном счете их вмешательство благо или рабство и зависимость?!'}, {'event': 'set_flag', 'flag': 'alienbase_afterbattle'}, {'event': 'set_flag', 'flag': 'battle_key'}, {'event': 'battle', 'band': 'key'}]}; this[223] = {'theme': 'ПРИШЕЛЬЦЫ', 'condition': function () { return 3 == (Core.Get()).game.getFlag('q_waitforalien') && (Core.Get()).game.isFlag('alienbase_afterbattle'); }, 'msg': [{'event': 'give_exp', 'value': 15000}, {'npc': 'grid', 'text': 'Эх, Кей...'}, {'npc': 'karry', 'text': 'Она еще жива. Мы поместим ее в устройство поддержания жизни – думаю, ее еще удастся спасти. Но также заключим под стражу.'}, {'npc': 'grid', 'text': 'Спасибо. Простите, что привел хвост...'}, {'npc': 'sir_f', 'text': 'Все в порядке. Ты же не знал. К тому же, все хорошо кончилось.'}, {'npc': 'sir_f', 'text': 'Кстати, Грид, все готово. Я собираюсь обратиться к людям через СМИ. В этом нам помогут Марси из Калистера и Эльм из Сирита.'}, {'npc': 'sir_f', 'text': 'Они уже предупреждены. Отправляйся в Калистер, оттуда начнется трансляция на все телеэкраны и радиоприемники страны.'}, {'npc': 'sir_f', 'text': 'Будь осторожнее. Когда начнется трансляция, и правительство и K.A.U.F.O. попытаются прервать ее.'}, {'npc': 'sir_f', 'text': 'Как только подготовка к трансляции будет завершена, я прибуду в город, и нам нужно будет продержаться до конца трансляции.'}, {'event': 'set_flag', 'flag': 'q_waitforalien', 'value': 4}, {'event': 'add_quest', 'quest': 'talks_with_aliens', 'stage': 4}, {'npc': 'grid', 'text': 'Вас понял.'}]}; this[224] = {'theme': 'ХОЧУ ЗНАТЬ ПРАВДУ', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_kaufo_betrayal') && !(Core.Get()).game.isFlag('alien_truth'); }, 'msg': [{'npc': 'sir_f', 'text': 'Грид, я ждал тебя...'}, {'npc': 'grid', 'text': 'Расскажи мне правду о пришельцах.'}, {'npc': 'sir_f', 'text': 'Видишь ли Грид, на самом деле мы – дружественная космическая цивилизация, которая старается помочь вашей, используя имеющиеся у нас знания.'}, {'npc': 'sir_f', 'text': 'Так, например, часть технологий, что были изобретены недавно, были созданы с нашей помощью.'}, {'npc': 'sir_f', 'text': 'В то же время, ваш мир сильно погряз в индустрии, люди разучились развлекаться. Поэтому мы устраиваем дискотеки, чтобы сделать их жизнь полнее.'}, {'npc': 'sir_f', 'text': 'Недавно мы хотели сделать человека бессмертным... но это наше исследование, как и ряд других, были сорваны У.В.И.Ф.Ж..'}, {'npc': 'sir_f', 'text': 'Причина их агрессии к нам неясна, она не поддается логике. Возможно, это страх человека перед чужими, который порождает расовую вражду.'}, {'npc': 'sir_f', 'text': 'Такова правда, Грид. Мы не хотим людям сделать ничего плохо, а наоборот. Пообщавшись с разными людьми, ты должен был понять, что мои слова истинны.'}, {'npc': 'karry', 'text': 'Грид, можно я пойду с вами? Мне интересен окружающий мир, а по долгу службы приходилось мало там бывать...'}, {'event': 'set_flag', 'flag': 'alien_truth'}, {'event': 'give_exp', 'value': 10000}, {'event': 'join_team', 'npc': 5}, {'npc': 'grid', 'text': 'Хорошо, пойдем.'}]}; this[225] = {'theme': 'ПОМОЩЬ ПРИШЕЛЬЦАМ', 'condition': function () { return 1 == (Core.Get()).game.getFlag('alien_truth'); }, 'msg': [{'npc': 'grid', 'text': 'Я хочу помочь вам сделать человечество лучше.'}, {'npc': 'sir_f', 'text': 'Это радует! Нам была нужна поддержка людей с земли. Мы уже готовим почву для того, чтобы публично заявить о себе.'}, {'npc': 'sir_f', 'text': 'Грид, вот тебе особая рация. С помощью нее я свяжусь с тобой, как только мы будем готовы осуществить наш план.'}, {'event': 'give_exp', 'value': 5000}, {'event': 'set_flag', 'flag': 'alien_truth', 'value': 2}, {'event': 'set_flag', 'flag': 'q_waitforalien', 'value': 1}, {'event': 'add_quest', 'quest': 'talks_with_aliens', 'stage': 1}, {'event': 'give_quest_item', 'item': 21}, {'npc': 'sir_f', 'text': 'Я транспортирую тебя в город Интегра, у нас там свой тайный портал. Из этого города ты сможешь вернуться на нашу базу, поговори с Клодом, скажи, что ты от сэра ЭФ.'}, {'event': 'move_to_area', 'area': 'integra', 'enter': true}]}; this[226] = {'theme': 'ПОКИНУТЬ БАЗУ', 'condition': function () { return (Core.Get()).game.isFlag('q_waitforalien'); }, 'msg': [{'npc': 'grid', 'text': 'Я хочу вернуться на континент.'}, {'npc': 'sir_f', 'text': 'Хорошо, сейчас мы телепортируем тебя.'}, {'event': 'move_to_area', 'area': 'integra'}]}; }; _global.TalkData3 = v1; _global.TalkData3 extends TalkData4; var v2 = v1.prototype; ASSetPropFlags(_global.TalkData3.prototype, null, 1); } #endinitclip } movieClip 1949 __Packages.TalkData2 { #initclip if (!_global.TalkData2) { var v1 = function () { super(); this[75] = {'theme': 'ДОЖДЕВАЯ МАШИНА', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_rainmachine'); }, 'msg': [{'npc': 'grid', 'text': 'Вы не знаете, как починить дождевую машину в Рейнленде?'}, {'npc': 'sarahata', 'text': 'А что, она у них сломалась?'}, {'npc': 'grid', 'text': 'Да. Вы знаете о ней?'}, {'npc': 'sarahata', 'text': 'Конечно, это здесь ее собирали. Они купили ее у наших предков 99 лет назад... им повезло. Наши люди дали им гарантию на 100 лет, так что мы предоставим им новую машину бесплатно.'}, {'event': 'give_exp', 'value': 1500}, {'event': 'set_flag', 'flag': 'q_rainmachine', 'value': 2}, {'event': 'add_quest', 'quest': 'rain_machine', 'stage': 1}, {'npc': 'grid', 'text': 'Отлично!'}]}; this[76] = {'theme': 'СОЮЗ С МЕТА-ВОИНАМИ', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_oasispeace'); }, 'msg': [{'npc': 'grid', 'text': 'Я – посланник киберчуваков, гипер-воинов.'}, {'npc': 'craven', 'text': 'Мета-Воинов!'}, {'npc': 'grid', 'text': 'Ну да. Они предлагают вам сотрудничать.'}, {'npc': 'sarahata', 'text': 'Я слышала о Мета-Воинах и их высоких технологиях. Но нам нужно подтверждение ваших благих намерений.'}, {'npc': 'grid', 'text': 'И какого же рода подтверждение?'}, {'npc': 'sarahata', 'text': 'Во-первых, нам нужен водный фильтр. Во-вторых, Интернет.'}, {'npc': 'grid', 'text': 'Интернет?'}, {'npc': 'sarahata', 'text': 'Да. У нас тут не ловит. Приходится в город караваны отправлять. За месяц собирается список того, что нужно посмотреть и скачать в Интернете, затем караваны отправляются (тут довольно опасно путешествовать в одиночку) и приносят информацию.'}, {'npc': 'craven', 'text': 'Мы можем поставить вам вышки и усилители. Будет у вас Интернет. Также проведем систему водоснабжения из Конского Моря. На этих условиях вы готовы сотрудничать?'}, {'npc': 'sarahata', 'text': 'Разумеется. Наше правительство не думает о нас, поэтому я лучше буду на стороне тех, кому есть до нас дело.'}, {'event': 'give_exp', 'value': 750}, {'event': 'set_flag', 'flag': 'q_oasispeace', 'value': 2}, {'event': 'add_quest', 'quest': 'meta_oasis', 'stage': 1}, {'npc': 'grid', 'text': 'Ну вот и славно! Побежали к Лине, датчики снимать!'}]}; this[77] = {'theme': 'ОАЗИС', 'msg': [{'npc': 'grid', 'text': 'Расскажите мне про Оазис.'}, {'npc': 'sarahata', 'text': 'Это отличное место. Здесь есть вода, еда – все, что нужно для жизни. А еще компьютеры, роботы-уборщики и массажные кресла.'}, {'npc': 'grid', 'text': 'Прогрессивно.'}]}; this[78] = {'theme': 'ГАРТТ', 'condition': function () { return !(Core.Get()).game.isFlag(''); }, 'msg': [{'npc': 'grid', 'text': 'Что такое «Гартт»?'}, {'npc': 'mihel', 'text': 'Гартт – это военная группировка, созданная на добровольных началах и тирании. Мы ненавидим все, что нас бесит, и сражаемся против этого.'}, {'npc': 'grid', 'text': 'А что вас бесит?..'}, {'npc': 'mihel', 'text': 'Да практически ВСЕ!!!'}]}; this[79] = {'theme': 'О СЕБЕ', 'condition': function () { return !(Core.Get()).game.isFlag(''); }, 'msg': [{'npc': 'grid', 'text': 'Ты кто?'}, {'npc': 'mihel', 'text': 'Я тот, кто поломает тебе нос, если не заткнешься.'}]}; this[80] = {'theme': 'ЛЮБОВНАЯ ЗАПИСКА ОТ ЛИЗ', 'condition': function () { return (Core.Get()).game.hasQuestItem(9); }, 'msg': [{'npc': 'grid', 'text': 'Эм... Мигель... у меня для вас любовная записка от девушки...'}, {'event': 'remove_quest_item', 'item': 9}, {'npc': 'mihel', 'text': 'Ну-ка дай ее сюда!.. Черт, это правда! Это реальная девушка! Я же начал всю эту вражду потому, что девушки не обращали на меня внимания...'}, {'npc': 'mihel', 'text': 'Она так прекрасна, так эмоциональна, судя по стилю письма! Передай ей, пусть собирает вещи и переезжает ко мне!'}, {'event': 'give_exp', 'value': 2500}, {'event': 'set_flag', 'flag': 'q_lizandsten', 'value': 6}, {'event': 'add_quest', 'quest': 'love_story_2', 'stage': 1}, {'npc': 'grid', 'text': 'Эм... хорошо...'}]}; this[81] = {'theme': 'ВЫБИВАНИЕ ДОЛГОВ', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_acedebt'); }, 'msg': [{'npc': 'grid', 'text': 'Служить – это хорошо, а долги надо возвращать.'}, {'npc': 'vermut', 'text': 'Что за бред?!'}, {'npc': 'grid', 'text': 'Ты занимал у Эйса денег, и теперь должен их вернуть.'}, {'npc': 'vermut', 'text': 'Черт! Я убью тебя!'}, {'event': 'set_flag', 'flag': 'q_vermut_after_battle'}, {'event': 'set_area_flag', 'flag': 'vermut_battle'}, {'event': 'battle', 'band': 'vermut'}]}; this[82] = {'theme': 'ВЫБИВАНИЕ ДОЛГОВ', 'condition': function () { return (Core.Get()).game.isFlag('q_vermut_after_battle') && !(Core.Get()).game.isAreaFlag('vermut_battle'); }, 'msg': [{'npc': 'vermut', 'text': 'Ладно, убедил... я только что перечислил на его счет нужную сумму.'}, {'event': 'give_exp', 'value': 5000}, {'event': 'set_flag', 'flag': 'q_acedebt', 'value': 2}, {'event': 'set_flag', 'flag': 'q_vermut_after_battle', 'value': 0}, {'event': 'add_quest', 'quest': 'debt_collection', 'stage': 1}, {'npc': 'grid', 'text': 'Хорошо, если так. Иначе я вернусь.'}]}; this[83] = {'theme': 'ТОРГОВЛЯ', 'msg': [{'npc': 'grid', 'text': 'Есть, что продать мне?!'}, {'npc': 'zoid', 'text': 'Конечно, есть! Ничтожество! Для ничтожеств – скидки!'}, {'event': 'trade', 'npc': 'zoid'}]}; this[84] = {'theme': 'О СЕБЕ', 'msg': [{'npc': 'grid', 'text': 'А расскажи-ка о себе, прекрасная дева.'}, {'npc': 'bristol', 'text': 'О... я... я люблю рисовать, я художница. А еще люблю позировать без одежды. Почему-то за это я более известна, хотя рисую лучше, чем раздеваюсь.'}, {'npc': 'grid', 'text': 'Кажется, я вспоминаю картины с тобой...'}, {'npc': 'bristol', 'text': 'Ну-ка.'}, {'npc': 'grid', 'text': 'Черт! Ты задрала блузу! Точно, я узнаю тебя.'}, {'npc': 'bristol', 'text': 'Ну да.'}]}; this[85] = {'theme': 'ПОМОЩЬ БРИСТОЛ', 'condition': function () { return !(Core.Get()).game.isFlag('q_helpbrisol'); }, 'msg': [{'event': 'set_flag', 'flag': 'q_helpbrisol', 'value': 1}, {'npc': 'grid', 'text': 'Может, тебе нужно помочь? Не могу быть равнодушен к твоей красоте... хочется что-нибудь сделать для нее.'}, {'npc': 'bristol', 'text': 'Ну, если вас не затруднит, не могли бы вы пойти к Сету в город Кастеда и передать ему повестку в суд, а то он адвокатов не подпускает к себе.'}, {'npc': 'grid', 'text': 'Видимо, он возжелал твоей красоты?'}, {'event': 'add_quest', 'quest': 'bristol_divorce', 'stage': 0}, {'npc': 'bristol', 'text': 'Хуже. Женился на мне. Но больше недели с ним я не выдержала. Жуткий тип!'}]}; this[86] = {'theme': 'ПОМОЩЬ БРИСТОЛ – ВЫПОЛНЕНО', 'condition': function () { return 2 == (Core.Get()).game.getFlag('q_helpbrisol'); }, 'msg': [{'npc': 'grid', 'text': 'Документы переданы. А зачем ты изначально-то пошла за него замуж?'}, {'npc': 'bristol', 'text': 'Разумеется, из-за денег.'}, {'npc': 'grid', 'text': 'Да уж...'}, {'event': 'set_flag', 'flag': 'q_helpbrisol', 'value': 3}, {'event': 'complete_quest', 'quest': 'bristol_divorce'}, {'event': 'give_exp', 'value': 2000}, {'event': 'give_quest_item', 'item': 10}, {'npc': 'bristol', 'text': 'Я подарю вам это за старания!'}]}; this[87] = {'theme': 'О СЕБЕ', 'msg': [{'npc': 'grid', 'text': 'Ты кто?'}, {'npc': 'stan', 'text': 'Я, чувак, Стен! Мэр города Кэмерон.'}, {'npc': 'grid', 'text': 'Кроме шуток?! Мэр?'}, {'npc': 'stan', 'text': 'Отвечаю за базар, чувак. Мэр.'}]}; this[88] = {'theme': 'ЛЮБОВНАЯ ЗАПИСКА ОТ ЛИЗ', 'condition': function () { return (Core.Get()).game.hasQuestItem(11); }, 'msg': [{'npc': 'grid', 'text': 'Меня попросили передать тебе вот это письмо.'}, {'npc': 'stan', 'text': 'Ух ты, любовная записка, чувак! Девченочка как, симпотная?'}, {'npc': 'grid', 'text': 'Милая.'}, {'npc': 'stan', 'text': 'Отлично! Передай ей, что завтра я за ней заеду. Я буду в маске и на байке, чтобы никто меня не узнал. Я ж все-таки мэр, мужик!'}, {'event': 'give_exp', 'value': 2500}, {'event': 'remove_quest_item', 'item': 11}, {'event': 'add_quest', 'quest': 'love_story', 'stage': 2}, {'event': 'set_flag', 'flag': 'q_lizandsten', 'value': 3}, {'npc': 'grid', 'text': 'Хорошо, передам...'}]}; this[89] = {'theme': 'О СЕБЕ', 'msg': [{'npc': 'grid', 'text': 'Ты кто?'}, {'npc': 'viola', 'text': 'Я Виола. Вы, наверное, слышали обо мне.'}, {'npc': 'grid', 'text': 'Нет, честно говоря.'}, {'npc': 'viola', 'text': 'Как так можно?! Я – великая Виола, известна своими непревзойденными навыками игры на скрипке.'}]}; this[90] = {'theme': 'О КЭМЕРОН', 'msg': [{'npc': 'grid', 'text': 'Что ты знаешь об этом городе?'}, {'npc': 'viola', 'text': 'О, Кэмерон – это столица. Здесь много приезжих, в основном они здесь все работают. У нас есть меценаты, музыканты, художники... а наш мэр...'}, {'npc': 'viola', 'text': 'Ну, он не такой, как другие мэры...'}]}; this[91] = {'theme': 'О СЕБЕ', 'msg': [{'npc': 'grid', 'text': 'Ты кто?'}, {'npc': 'ace', 'text': 'Меня зовут Эйс, я крут и богат. Если хочешь, дам тебе в долг денег. Но учти, не вернешь в течение двух часов – за тобой будут охотиться наемники со всей страны.'}]}; this[92] = {'theme': 'ЗАНЯТЬ €1,000', 'condition': function () { return !(Core.Get()).game.isFlag('v_credit'); }, 'msg': [{'npc': 'grid', 'text': 'Эйс, займи мне штуку.'}, {'event': 'give_money', 'value': 1000}, {'event': 'set_flag', 'flag': 'v_credit'}, {'npc': 'ace', 'text': 'Не вопрос! Держи!'}]}; this[93] = {'theme': 'ВЕРНУТЬ €1,000', 'condition': function () { return (Core.Get()).game.isFlag('v_credit') && (Core.Get()).game.money < 1000; }, 'msg': [{'npc': 'grid', 'text': '...Сколько, говоришь, я тебе должен?..'}, {'npc': 'ace', 'text': 'Штуку. Торопись, часики тикают. Не отдашь вовремя, на тебя открывается сезон охоты!'}, {'npc': 'grid', 'text': 'Заметано. Деньги будут.'}]}; this[94] = {'theme': 'ВЕРНУТЬ €1,000', 'condition': function () { return (Core.Get()).game.isFlag('v_credit') && (Core.Get()).game.money >= 1000; }, 'msg': [{'npc': 'grid', 'text': 'Вот деньги, забирай.'}, {'event': 'set_flag', 'flag': 'v_credit', 'value': 0}, {'event': 'remove_money', 'value': 1000}, {'npc': 'ace', 'text': 'Молоток! Ценю честных людей. Убиваю нечестных! До новых встреч!'}]}; this[95] = {'theme': 'ВЫБИВАНИЕ ДОЛГОВ', 'condition': function () { return !(Core.Get()).game.isFlag('q_acedebt'); }, 'msg': [{'npc': 'grid', 'text': 'А не найдется ли для меня какой-либо работы?'}, {'npc': 'ace', 'text': 'Да есть одно дело. Чувак по имени Вермут из военизированной фракции «Гартт» занял у меня бабла. Пойди разберись и верни мне деньги.'}, {'event': 'set_flag', 'flag': 'q_acedebt', 'value': 1}, {'event': 'add_quest', 'quest': 'debt_collection', 'stage': 0}, {'npc': 'grid', 'text': 'Усек.'}]}; this[96] = {'theme': 'ВЫБИВАНИЕ ДОЛГОВ - ВЫПОЛНЕНО', 'condition': function () { return 2 == (Core.Get()).game.getFlag('q_acedebt'); }, 'msg': [{'npc': 'grid', 'text': 'Он сказал, что перечислил их на твой счет.'}, {'event': 'give_exp', 'value': 2500}, {'event': 'give_money', 'value': 5000}, {'event': 'set_flag', 'flag': 'q_acedebt', 'value': 3}, {'event': 'complete_quest', 'quest': 'debt_collection'}, {'npc': 'ace', 'text': 'Так... да, деньги поступили. На, возьми себе за работу.'}]}; this[97] = {'theme': 'О СЕБЕ', 'msg': [{'npc': 'grid', 'text': 'Вы местный?'}, {'event': 'set_flag', 'flag': 'about_rain_machine', 'condition': function () { return !(Core.Get()).game.isFlag('about_rain_machine'); }}, {'npc': 'shell', 'text': 'Нет, я странствующий путешественник и исследователь. Прибыл сюда, чтобы выяснить, почему сломалась дождевая машина.'}]}; this[98] = {'theme': 'ДОЖДЕВАЯ МАШИНА', 'condition': function () { return 1 == (Core.Get()).game.getFlag('about_rain_machine'); }, 'msg': [{'npc': 'grid', 'text': 'Что еще за дождевая машина?'}, {'npc': 'shell', 'text': 'Ну это же Рейнленд. Город дождя. Вы видите дождь?'}, {'npc': 'grid', 'text': 'Неа.'}, {'npc': 'shell', 'text': 'Вот. А Рейнленд получил свое название именно за то, что дождь здесь создавался особой машиной, «Вододелом-3000». Без него тут засуха и всем плохо.'}, {'npc': 'grid', 'text': 'И как, что уже удалось выяснить?'}, {'event': 'set_flag', 'flag': 'about_rain_machine', 'value': 2}, {'event': 'set_flag', 'flag': 'q_rainmachine', 'value': 1}, {'event': 'add_quest', 'quest': 'rain_machine', 'stage': 0}, {'npc': 'shell', 'text': 'Да пока мало что... вот если бы ты знал кого-то из Оазиса, это могло бы помочь... У них там всегда влажно и хорошо, хотя они и находятся посреди пустыни...'}]}; this[99] = {'theme': 'ДОЖДЕВАЯ МАШИНА – ВЫПОЛНЕНО', 'condition': function () { return 2 == (Core.Get()).game.getFlag('q_rainmachine'); }, 'msg': [{'npc': 'grid', 'text': 'Оазис скоро доставит сюда новую дождевую машину. Это будет бесплатно, она находится на гарантии.'}, {'event': 'give_exp', 'value': 3500}, {'event': 'set_flag', 'flag': 'q_rainmachine', 'value': 3}, {'event': 'complete_quest', 'quest': 'rain_machine'}, {'npc': 'shell', 'text': 'Отлично! Теперь дождь вернется в эти земли!'}]}; this[100] = {'theme': 'О СЕБЕ', 'condition': function () { return 3 > (Core.Get()).game.getFlag('q_lizandsten'); }, 'msg': [{'npc': 'grid', 'text': 'Привет! О чем вы вздыхаете?'}, {'npc': 'liz', 'text': 'Скорее, не «о чем», а «о ком»...'}, {'event': 'set_flag', 'flag': 'q_lizandsten', 'value': 1, 'condition': function () { return !(Core.Get()).game.isFlag('q_lizandsten'); }}, {'event': 'add_quest', 'quest': 'love_story', 'stage': 0, 'condition': function () { return !(Core.Get()).game.isFlag('q_lizandsten'); }}, {'npc': 'liz', 'text': 'Я влюблена в одного человека... его зовут Стен... но он мэр города Кэмерон, и нам не быть вместе!'}]}; this[101] = {'theme': 'ЛЮБОВНАЯ ЗАПИСКА', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_lizandsten'); }, 'msg': [{'npc': 'grid', 'text': 'Может, я могу как-то вам помочь?'}, {'npc': 'liz', 'text': 'Мне никто не поможет!.. Хотя... можете передать ему любовную записку от меня? Очень вас прошу!'}, {'event': 'set_flag', 'flag': 'q_lizandsten', 'value': 2}, {'event': 'give_quest_item', 'item': 11}, {'event': 'add_quest', 'quest': 'love_story', 'stage': 1}, {'npc': 'grid', 'text': 'Хорошо. Конечно, передам.'}]}; this[102] = {'theme': 'ЛЮБОВНАЯ ЗАПИСКА - ВЫПОЛНЕНО', 'condition': function () { return 3 == (Core.Get()).game.getFlag('q_lizandsten'); }, 'msg': [{'npc': 'liz', 'text': 'Как успехи?!'}, {'npc': 'grid', 'text': 'Я передал письмо.'}, {'npc': 'liz', 'text': 'И?!!'}, {'npc': 'grid', 'text': 'Он предлагает встретиться завтра. Он заедет за вами на мотоцикле, на лице его будет маска, чтобы его не узнали.'}, {'event': 'give_exp', 'value': 2000}, {'event': 'set_flag', 'flag': 'q_lizandsten', 'value': 4}, {'event': 'complete_quest', 'quest': 'love_story'}, {'event': 'start_timer', 'timer': 't_lizstendate'}, {'npc': 'liz', 'text': 'Здорово! Спасибо! Целую!'}]}; this[103] = {'theme': 'КАК ПРОШЛО СВИДАНИЕ?', 'condition': function () { return 4 == (Core.Get()).game.getFlag('q_lizandsten') && (Core.Get()).game.timers.t_lizstendate >= 1500; }, 'msg': [{'event': 'kill_timer', 'timer': 't_lizstendate'}, {'npc': 'grid', 'text': 'Как прошло свидание?'}, {'npc': 'liz', 'text': 'Он меня бросил! Сказал, я слишком эмоциональная и нервная! Я так рыдала, так рыдала...'}, {'npc': 'grid', 'text': 'Сочувствую...'}, {'npc': 'liz', 'text': 'Ну ничего! Есть лекарство от несчастной влюбленности. Я снова влюблена! На этот раз в Мигеля, лидера фашистского движения Гартт!'}, {'npc': 'grid', 'text': 'Девочка, тебе явно нравятся плохие парни...'}, {'event': 'set_flag', 'flag': 'q_lizandsten', 'value': 5}, {'event': 'give_quest_item', 'item': 9}, {'event': 'add_quest', 'quest': 'love_story_2', 'stage': 0}, {'npc': 'liz', 'text': 'Что поделать! Вот новая любовная записка. Доставь ее Мигелю в Бетавилль.'}]}; this[104] = {'theme': 'ЛЮБОВНАЯ ЗАПИСКА 2 - ВЫПОЛНЕНО', 'condition': function () { return 6 == (Core.Get()).game.getFlag('q_lizandsten'); }, 'msg': [{'npc': 'liz', 'text': 'Ну?!'}, {'npc': 'grid', 'text': 'Твое письмо тронуло его, Лиз. Он хочет, чтобы ты собрала вещи и переехала к нему.'}, {'npc': 'liz', 'text': 'Ура! Уже бегу!!'}, {'event': 'give_exp', 'value': 5000}, {'event': 'set_flag', 'flag': 'q_lizandsten', 'value': 7}, {'event': 'complete_quest', 'quest': 'love_story_2'}, {'npc': 'grid', 'text': 'Ох, надолго ли...'}]}; this[105] = {'theme': 'О СЕБЕ', 'msg': [{'event': 'set_flag', 'flag': 'alice_trade'}, {'npc': 'alice', 'text': 'Меня зовут Элис, я торгую полезными различными штуками, которые могли бы тебе пригодится, красавчик!'}]}; this[106] = {'theme': 'ТОРГОВЛЯ', 'condition': function () { return (Core.Get()).game.isFlag('alice_trade'); }, 'msg': [{'event': 'trade', 'npc': 'alice'}]}; this[107] = {'theme': 'БАЗА ПРИШЕЛЬЦЕВ', 'condition': function () { return 4 == (Core.Get()).game.getFlag('q_bigalienplan'); }, 'msg': [{'npc': 'grid', 'text': 'Хм... Капитан Харкос. А не могли бы вы помочь мне отправиться на один объект в глубине моря...'}, {'npc': 'harcos', 'text': 'Я все могу! Другое дело – стану ли!'}, {'npc': 'key', 'text': 'А если мы *очень* попросим?', 'condition': function () { return (Core.Get()).game.isInTeam(1); }}, {'npc': 'harcos', 'text': 'То пойдете далеко и надолго!', 'condition': function () { return (Core.Get()).game.isInTeam(1); }}, {'npc': 'grid', 'text': 'Как вас убедить?'}, {'npc': 'harcos', 'text': 'Деньги мне не нужны!'}, {'npc': 'grid', 'text': 'Тогда отдайте их мне.'}, {'npc': 'harcos', 'text': 'Очень смешно! Докажи мне делом, что ты достоин взойти на борт «Неизбежности»! Топай на Юго-Запад отсюда в район равнин Ласт Стенд. Регион известен за то, что там обитают опаснейшие существа Грабберы.'}, {'npc': 'grid', 'text': 'И что с ними?'}, {'event': 'set_flag', 'flag': 'q_bigalienplan', 'value': 5}, {'event': 'add_quest', 'quest': 'natan_plan', 'stage': 4}, {'npc': 'harcos', 'text': 'В общем, если ты сможешь отправить на тот свет хотя бы 3х из них, то я посчитаю, что ты достоин того, чтобы взойти на бор «Неизбежности».'}]}; this[108] = {'theme': 'ГРАББЕРЫ', 'condition': function () { return 5 == (Core.Get()).game.getFlag('q_bigalienplan'); }, 'msg': [{'npc': 'grid', 'text': 'Что за Грабберы?'}, {'npc': 'harcos', 'text': 'Есть нежить, это те, кто воскрес кибернетическим путем. Есть мутанты – это генетически измененные люди. Оба способа – богомерзкие издевательства. Но грабберы – это мутанты-нежить. Генетически измененный солдат, которого вернули обратно к жизни.'}]}; this[109] = {'theme': 'ЗАДАНИЕ КАПИТАНА', 'condition': function () { return 5 == (Core.Get()).game.getFlag('q_bigalienplan') && 3 > (Core.Get()).game.getFlag('kills_grabbers_harcos'); }, 'msg': [{'npc': 'harcos', 'text': 'Убил трех Грабберов?'}, {'npc': 'grid', 'text': 'Да!'}, {'npc': 'harcos', 'text': 'Чего ты мне врешь, я знаю, что не убил! Иди и убивай!'}]}; this[110] = {'theme': 'ЗАДАНИЕ КАПИТАНА - ВЫПОЛНЕНО', 'condition': function () { return 5 == (Core.Get()).game.getFlag('q_bigalienplan') && 3 <= (Core.Get()).game.getFlag('kills_grabbers_harcos'); }, 'msg': [{'npc': 'harcos', 'text': 'Убил трех Грабберов?'}, {'npc': 'grid', 'text': 'Да!'}, {'npc': 'harcos', 'text': 'Верю. По глазам вижу, что не врешь.'}, {'event': 'give_exp', 'value': 7000}, {'npc': 'grid', 'text': 'Поплыли!'}, {'npc': 'harcos', 'text': 'Притормози коней. У меня есть еще одно задание...'}, {'npc': 'grid', 'text': 'Мы так не договаривались! Речь шла об одном! Так, ну-ка поплыли...'}, {'npc': 'harcos', 'text': 'Все равно мы далеко не уплывем... Тут пока тебя не было, несколько Мета-Воинов украли важную деталь корабля «Неизбежность» - вакуумный мотор. Думаю, воры еще находятся где-то в районе плато Страт на западе отсюда. Догони их и отбери мой мотор!'}, {'npc': 'grid', 'text': 'Ладно... все равно же выбора нет. Лучше бы не проходил дурацкое испытание...'}, {'event': 'set_flag', 'flag': 'q_bigalienplan', 'value': 6}, {'event': 'add_quest', 'quest': 'natan_plan', 'stage': 5}, {'npc': 'harcos', 'text': 'Да, похоже, ты прав. Но уже ничего не изменить. Иди ищи мотор.'}]}; this[111] = {'theme': 'ВАКУУМНЫЙ МОТОР', 'condition': function () { return 6 == (Core.Get()).game.getFlag('q_bigalienplan') && !(Core.Get()).game.hasQuestItem(12); }, 'msg': [{'npc': 'harcos', 'text': 'Где мой вакуумный мотор?'}, {'npc': 'grid', 'text': 'Видимо, все еще бегает где-то в районе Страт.'}, {'npc': 'harcos', 'text': 'Так беги догоняй! Чего ждешь?'}]}; this[112] = {'theme': 'ВАКУУМНЫЙ МОТОР', 'condition': function () { return 6 == (Core.Get()).game.getFlag('q_bigalienplan') && (Core.Get()).game.hasQuestItem(12); }, 'msg': [{'npc': 'harcos', 'text': 'Где мой вакуумный мотор?'}, {'npc': 'grid', 'text': 'Вот он!'}, {'event': 'remove_quest_item', 'item': 12}, {'event': 'give_exp', 'value': 5000}, {'npc': 'harcos', 'text': 'Отлично! Теперь мы сможем отправиться туда, куда вы там хотели.'}, {'event': 'set_flag', 'flag': 'q_bigalienplan', 'value': 7}, {'event': 'add_quest', 'quest': 'natan_plan', 'stage': 6}, {'npc': 'grid', 'text': 'Замечательно!'}, {'event': 'move_to_area', 'area': 'alienbase'}]}; this[113] = {'theme': 'НЕИЗБЕЖНОСТЬ', 'msg': [{'npc': 'grid', 'text': 'Что еще за «неизбежность»?'}, {'npc': 'harcos', 'text': '«Неизбежность», презренный, - это лучшее судно в мире, с помощью него можно попасть куда угодно в море!'}]}; this[114] = {'theme': 'НЕФРИТОВЫЙ ОСТРОВ', 'msg': [{'npc': 'grid', 'text': 'Что это за остров там виднеется?'}, {'npc': 'yax', 'text': 'Это Нефритовый Остров. Я могу отвезти вас туда. Всего за 50 монет.'}, {'event': 'set_flag', 'flag': 'v_knowjade'}, {'npc': 'grid', 'text': 'Понятно.'}]}; this[115] = {'theme': 'ОТПРАВИТЬСЯ НА ОСТРОВ – €50', 'condition': function () { return (Core.Get()).game.isFlag('v_knowjade') && (Core.Get()).game.money < 50; }, 'msg': [{'npc': 'grid', 'text': 'Вези нас на Нефритовый Остров!'}, {'npc': 'yax', 'text': 'Хорошо. Как только заработаете €50 на билет.'}]}; this[116] = {'theme': 'ОТПРАВИТЬСЯ НА ОСТРОВ – €50', 'condition': function () { return (Core.Get()).game.isFlag('v_knowjade') && (Core.Get()).game.money >= 50; }, 'msg': [{'npc': 'grid', 'text': 'Вези нас на Нефритовый Остров!'}, {'event': 'remove_money', 'value': 50}, {'npc': 'yax', 'text': 'Ок. Поплыли.'}, {'event': 'weaken_fog', 'x': 36, 'y': 13, 'w': 1, 'h': 2}, {'event': 'move_to_area', 'area': 'jade'}]}; this[117] = {'theme': 'О СЕБЕ', 'msg': [{'npc': 'grid', 'text': 'Ты кто?'}, {'npc': 'cij', 'text': 'Я - ветер! Перед тобой капитан корабля Истерия! Лучшего в мире крылатого корабля!'}, {'npc': 'grid', 'text': 'А я мог бы воспользоваться услугами Истерии?'}, {'npc': 'cij', 'text': 'Йоху! Конечно же, нет! Это мой корабль, а я не беру на борт только потому, что кому-то этого хочется! Деньги мне не нужны. Деньги – пустое. Свобода – все.'}]}; this[118] = {'theme': 'ИСТЕРИЯ', 'condition': function () { return (Core.Get()).game.stats[0].level < 20; }, 'msg': [{'npc': 'grid', 'text': 'Что мне нужно сделать, чтобы воспользоваться услугами Истерии?'}, {'npc': 'cij', 'text': 'Все просто! Ты должен быть не менее 20 уровня!'}, {'npc': 'grid', 'text': 'И все?'}, {'npc': 'cij', 'text': 'И все!'}]}; this[119] = {'theme': 'ИСТЕРИЯ', 'condition': function () { return (Core.Get()).game.stats[0].level >= 20; }, 'msg': [{'npc': 'grid', 'text': 'Я хочу воспользоваться услугами великого летающего корабля, Истерия!'}, {'event': 'set_flag', 'flag': 'hysterie'}, {'event': 'give_exp', 'value': 5000}, {'event': 'no_talk'}, {'npc': 'cij', 'text': 'Хорошо! По рукам! Ты достаточно силен, и я согласен!'}]}; this[120] = {'theme': 'О СЕБЕ', 'msg': [{'npc': 'grid', 'text': 'Это что, ушки?'}, {'npc': 'kippa', 'text': 'Да, мяу! Кошачьи ушки!'}]}; this[121] = {'theme': 'О НЕВЕРМОР', 'msg': [{'npc': 'grid', 'text': 'Что это за городок?'}, {'npc': 'kippa', 'text': 'Это Невермор. Городок для всех отверженных, мяу! Для тех, кто странно выглядит, странно говорит... люди таких боятся. А здесь им комфортно и уютно. Мяу!'}, {'npc': 'kippa', 'text': 'Здесь, например, живет Лютик. Спортивная панда. Он очень популярен у женщин потому, что спортивен и потому... что панда. Панды нравятся всем.'}, {'npc': 'kippa', 'text': 'А вон то – паренек по имени Гаймон. У него нет никаких генных отклонений, но он просто слишком странный для нормальных людей.'}]}; this[122] = {'theme': 'ТОРГОВЛЯ', 'msg': [{'npc': 'grid', 'text': 'А у кого бы тут можно было купить, подскажи?'}, {'npc': 'kippa', 'text': 'У меня!'}, {'event': 'trade', 'npc': 'kippa'}]}; this[123] = {'theme': 'О СЕБЕ', 'msg': [{'npc': 'grid', 'text': 'Ты еще кто?'}, {'npc': 'lexic', 'text': 'Я – Лексик!'}, {'npc': 'grid', 'text': 'Ты – ПАНДА!'}, {'event': 'set_flag', 'flag': 'panda_talk1'}, {'npc': 'lexic', 'text': 'Ну да. Я знаю!'}]}; this[124] = {'theme': 'ЧЕМ ЗАНИМАЕШЬСЯ', 'condition': function () { return (Core.Get()).game.isFlag('panda_talk1'); }, 'msg': [{'npc': 'grid', 'text': 'Чем ты обычно занимаешься?'}, {'npc': 'lexic', 'text': 'Я занимаюсь спортом, люблю девушек и активный отдых!'}, {'npc': 'grid', 'text': 'А девушки как?'}, {'npc': 'lexic', 'text': 'Девушки хорошо! Панды нравятся всем!'}, {'event': 'set_flag', 'flag': 'panda_talk2'}, {'npc': 'grid', 'text': 'Ох...'}]}; this[125] = {'theme': 'ПРИСОЕДИНИТЬСЯ К ОТРЯДУ', 'condition': function () { return (Core.Get()).game.isFlag('panda_talk2'); }, 'msg': [{'npc': 'grid', 'text': 'Слушай, панда, не хочешь присоединиться к моему отряду?'}, {'event': 'give_exp', 'value': 1000}, {'event': 'join_team', 'npc': 7}, {'npc': 'lexic', 'text': 'Конечно, почему нет!'}]}; this[126] = {'theme': 'О СЕБЕ', 'msg': [{'npc': 'grid', 'text': 'Ты кто?'}, {'npc': 'gaimon', 'text': 'Гаймон...'}, {'npc': 'grid', 'text': 'И?..'}, {'event': 'set_flag', 'flag': 'gaimon_aliens'}, {'npc': 'gaimon', 'text': 'И все. Просто Гаймон.'}]}; this[127] = {'theme': 'О НЕВЕРМОР', 'msg': [{'npc': 'grid', 'text': 'Расскажи мне об этом городе.'}, {'npc': 'gaimon', 'text': 'Хороший. Спокойно.'}, {'npc': 'grid', 'text': 'И?..'}, {'npc': 'gaimon', 'text': 'И все. Хороший и спокойный. Мне тут рады. Меня тут понимают.'}, {'npc': 'grid', 'text': 'Ох, странный ты парень...'}]}; this[128] = {'theme': 'ПРИШЕЛЬЦЫ', 'condition': function () { return (Core.Get()).game.isFlag('gaimon_aliens') && !(Core.Get()).game.isFlag('q_alienfix2'); }, 'msg': [{'npc': 'grid', 'text': 'Ты, случаем, не пришелец ли?'}, {'npc': 'gaimon', 'text': 'Нет... но мне с ними почти также хорошо, как здесь. Они стараются понять каждого человека, общаться с ними на их же языке и в той манере, которая им комфортна.'}, {'npc': 'grid', 'text': 'Если они тебя не убили, то видимо потому, что приняли за своего.'}, {'npc': 'gaimon', 'text': 'Нет. Они никого не убивают, если от этого не зависит их жизнь. Я наблюдал за ними. Но потом они улетели. Меня не взяли...'}, {'event': 'give_exp', 'value': 750}, {'event': 'set_flag', 'flag': 'q_alienfix2'}, {'npc': 'grid', 'text': 'Понятно.'}]}; this[129] = {'theme': 'О СЕБЕ', 'msg': [{'npc': 'grid', 'text': 'Вы кто такой или что такое?!'}, {'npc': 'chivax', 'text': 'Если будешь грубо общаться с мэром города Невермор, то мэр города вытащит твою печень и съест ее, ибо мэр Невермор – это я. Я хочу печень. Не уважай меня.'}, {'npc': 'grid', 'text': 'Простите, мэр... Ваша внешность сперва несколько озадачивает.'}, {'npc': 'chivax', 'text': 'Знаю. Знаю.'}]}; this[130] = {'theme': 'ИЗВИНЕНИЕ ГИДРЫ', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_hydranevermore'); }, 'msg': [{'npc': 'grid', 'text': 'Скажите, какие ассоциации у вас вызывает слово «Гидра»?'}, {'npc': 'chivax', 'text': 'НЕТ!!! ТОЛЬКО НЕ ГИДРА!!! НЕТ!!!!!!!!'}, {'npc': 'chivax', 'text': 'Простите мне мой срыв, недавно девочка с таким именем устроила в нашем городе жестокую бойню.'}, {'npc': 'grid', 'text': 'Вы, конечно, не поверите, но ей очень стыдно за свое поведение, и она желает знать, как бы ей загладить свою вину.'}, {'npc': 'chivax', 'text': 'Верится с трудом... но... наверное, каждый достоин второго шанса... даже она. Нашему городу ничего не надо, я прощаю ее. Только пусть больше никогда не приходит сюда...'}, {'event': 'give_exp', 'value': 1500}, {'event': 'set_flag', 'flag': 'q_hydranevermore', 'value': 2}, {'npc': 'grid', 'text': 'Хорошо.'}]}; this[131] = {'theme': 'ЧТО С ТОБОЙ?', 'msg': [{'npc': 'ken', 'text': 'Я – результат эксперимента по получению сверхчеловека... так нам сперва говорили... а теперь мы – зомби! Дурацкие зеленые зомби, которые не могут даже умереть.'}]}; this[132] = {'theme': 'ТОРГОВЛЯ', 'msg': [{'event': 'trade', 'npc': 'goman'}]}; this[133] = {'theme': 'О СЕБЕ', 'msg': [{'npc': 'grid', 'text': 'Ты кто? И что с тобой произошло?'}, {'npc': 'fea', 'text': 'Ох... долгая это история. Долгая и печальная.'}, {'npc': 'fea', 'text': 'Когда-то я была ученым, автором военного проекта «бессмертный солдат»... однако в результате мы получили то, что ты видишь в городе.'}, {'npc': 'fea', 'text': 'Хотя мы и не могли умереть, но могли получать физические повреждения, а кожа начала медленно отмирать... мы стали зомби, каких описывают в старых кинофильмах.'}, {'npc': 'fea', 'text': 'И это ужасно! Я хочу ходить на свидания с нормальными мальчиками, но почему-то далеко не каждому нравится зеленая кожа и шрамы по всему телу.'}, {'npc': 'fea', 'text': 'Я так несчастна...'}, {'npc': 'grid', 'text': 'Сочувствую...'}]}; this[134] = {'theme': 'СОЮЗ С МЕТА-ВОИНАМИ', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_allycalipso'); }, 'msg': [{'npc': 'grid', 'text': 'Мета-Воины хотят заключить союз с городом Калипсо для совершения восстания.'}, {'npc': 'fea', 'text': 'Зачем нам восстание? Мы свое отвоевали, и вот что стало с нашими телами. Нам нужно только одно – нормальное человеческое тело. Если придумаете, как это сделать, поможем с чем угодно.'}, {'event': 'give_exp', 'value': 1000}, {'event': 'set_flag', 'flag': 'q_allycalipso', 'value': 2}, {'event': 'add_quest', 'quest': 'meta_uprise', 'stage': 3}, {'npc': 'grid', 'text': 'Хм... нужно поговорить с Линой.'}]}; this[135] = {'theme': 'ПОМОЩЬ МИХАЭЛЯ', 'condition': function () { return 4 == (Core.Get()).game.getFlag('q_allycalipso'); }, 'msg': [{'npc': 'grid', 'text': 'Я нашел лучшего ученого континента, он занимался подобными исследованиями и сможет помочь вам, если проведет ряд исследований непосредственно с вашими телами.'}, {'npc': 'fea', 'text': 'Отлично! Я так давно ждала этого дня. Думаю, вместе с ним мы найдем решение проблемы.'}, {'npc': 'grid', 'text': 'Значит, я могу доложить начальству, что Калипсо поможет в восстании Мета-Воинов?'}, {'event': 'give_exp', 'value': 4500}, {'event': 'set_flag', 'flag': 'q_allycalipso', 'value': 5}, {'event': 'add_quest', 'quest': 'meta_uprise', 'stage': 6}, {'npc': 'fea', 'text': 'Да! Мы поможем! Боже... наконец-таки у меня будет нормальный живой парень...!'}]}; this[136] = {'theme': 'О СЕБЕ', 'msg': [{'npc': 'keabo', 'text': 'Кибо меня зовут, спроси любого, я безмерно крут. Торгую я оружием, и денег загребаю тонны. Во мне внутри живет душа Платона.'}, {'npc': 'grid', 'text': 'Очень сомнительный реп.'}, {'npc': 'keabo', 'text': 'Возможно, чувак! Но я торгую пушками, так что подумай еще раз!'}, {'npc': 'grid', 'text': 'Хм... отлично читаешь, чувак! Ты талант!'}, {'event': 'set_flag', 'flag': 'keabo_trade'}, {'npc': 'keabo', 'text': 'То-то же. Смышленый попался. Нужно будет оружие, приходи.'}]}; this[137] = {'theme': 'ТОРГОВЛЯ', 'condition': function () { return (Core.Get()).game.isFlag('keabo_trade'); }, 'msg': [{'event': 'trade', 'npc': 'keabo'}]}; this[138] = {'theme': 'ИНВЕСТИЦИИ', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_getinvestor') && !(Core.Get()).game.hasQuestItem(13); }, 'msg': [{'npc': 'grid', 'text': 'Слушай, Кибо, а не интересно ли тебе изменить мир к лучшему?'}, {'npc': 'keabo', 'text': 'Говори, друг. Ты же всегда помнишь, что если мне что-то не понравится, я просто убью тебя.'}, {'npc': 'grid', 'text': 'Не хочешь спонсировать революцию?'}, {'npc': 'keabo', 'text': 'А что я с этого получу? Деньги у меня уже есть.'}, {'npc': 'grid', 'text': 'Под ваше чтение будет вершиться революция, а ваше оружие станет брендом революции. Интересно?'}, {'npc': 'keabo', 'text': 'Звучит позитивно! «Что убило твоего соседа? – ПУШКИ КИБО. Пушки Кибо, и шуметь за стеной перестанут». Как тебе слоган?..'}, {'npc': 'keabo', 'text': '...Но сперва мне нужно доказательство – вот вам мой компакт-диск, поставьте его на каком-нибудь радио. Только не используйте деньги. Не хочу быть как эта Байба из Калистера.'}, {'event': 'give_quest_item', 'item': 13}, {'event': 'add_quest', 'quest': 'keabo_style', 'stage': 0}, {'npc': 'grid', 'text': 'Ох... ну ладно.'}]}; this[139] = {'theme': 'ДИСК КИБО', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_getinvestor') && (Core.Get()).game.hasQuestItem(13); }, 'msg': [{'npc': 'keabo', 'text': 'Я что-то пока не слышал своих песен ни на одном радио.'}, {'npc': 'grid', 'text': 'Я еще работаю над этим.'}]}; this[140] = {'theme': 'ДИСК КИБО', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_getinvestor') && 1 == (Core.Get()).game.getFlag('q_kibodisc'); }, 'msg': [{'npc': 'keabo', 'text': 'Слушал я вчера радио... и что же я слышу, друг мой?! Свой великий трек! Ты молодец, я горжусь тобой. Я вложу свои деньги в твою революцию, чувак!'}, {'event': 'reset_flag', 'flag': 'q_hydranevermore'}, {'event': 'fail_quest', 'quest': 'feel_of_guilty', 'condition': function () { return (Core.Get()).game.inQuest('feel_of_guilty'); }}, {'event': 'reset_flag', 'flag': 'q_getcastlekey'}, {'event': 'remove_quest_item', 'item': 14, 'condition': function () { return (Core.Get()).game.hasQuestItem(14); }}, {'event': 'give_exp', 'value': 4500}, {'event': 'set_flag', 'flag': 'q_getinvestor', 'value': 2}, {'event': 'add_quest', 'quest': 'meta_uprise', 'stage': 9}, {'event': 'set_flag', 'flag': 'q_kibodisc', 'value': 2}, {'event': 'complete_quest', 'quest': 'keabo_style'}, {'npc': 'grid', 'text': 'Отлично, спасибо!'}]}; this[141] = {'theme': 'О СЕБЕ', 'msg': [{'npc': 'grid', 'text': 'Привет, Сет, ну как дела?'}, {'npc': 'seth', 'text': 'Все также. Я безобразно богат, недоволен миром и уверен, что меня все хотят убить.'}]}; this[142] = {'theme': 'ИНВЕСТИЦИИ', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_getinvestor'); }, 'msg': [{'npc': 'grid', 'text': 'Сет, возможно, тебя заинтересует инвестирование в одну террористическую организацию?'}, {'npc': 'seth', 'text': 'Смотря о чем идет речь.'}, {'npc': 'grid', 'text': 'Мета-Воины.'}, {'npc': 'seth', 'text': 'Да, я наслышан о них. Но что получу с революции я? Не похоже, чтобы Мета-Воины были заинтересованы в том, чтобы я возглавил их.'}, {'npc': 'grid', 'text': 'Да ладно тебе, Сет. У тебя этих денег... к тому же, смотри, если все получится -правительство будет свергнуто.'}, {'npc': 'seth', 'text': 'Да не хочу я инвестировать твои революции. Забудь об этом.'}]}; this[143] = {'theme': 'ПОМОЩЬ БРИСТОЛ', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_helpbrisol'); }, 'msg': [{'npc': 'grid', 'text': 'Тебе повестка в суд!'}, {'npc': 'seth', 'text': 'Оп-па. Это от кого же?'}, {'npc': 'grid', 'text': 'От твоей экс-жены. Она уверена, что ты избегаешь юристов.'}, {'npc': 'seth', 'text': 'Бристол, что ли? Я избегаю юристов, но это предосторожность на опасные случаи в работе. А это – мелочь. Девочка, похоже, вышла за меня из-за денег. Ну вот и устроил ей тиранию, чтобы сбежала. А денег не получит, юристы уже позаботились.'}, {'event': 'give_exp', 'value': 3500}, {'event': 'set_flag', 'flag': 'q_helpbrisol', 'value': 2}, {'event': 'add_quest', 'quest': 'bristol_divorce', 'stage': 1}, {'npc': 'grid', 'text': 'Я так и подумал. Мое дело – передать повестку.'}]}; this[144] = {'theme': 'ФОТОГРАФИИ БРИСТОЛ', 'condition': function () { return (Core.Get()).game.hasQuestItem(10); }, 'msg': [{'npc': 'seth', 'text': 'Что это у тебя там?.. Альбом фотографий моей экс-супруги?'}, {'npc': 'grid', 'text': 'Ну да, он самый.'}, {'npc': 'seth', 'text': 'Черт, а продай его мне.'}, {'npc': 'grid', 'text': 'Все-таки ты любил ее?'}, {'npc': 'seth', 'text': 'Нет, конечно. Но тело у нее что надо. 1,000$ устроит?'}, {'event': 'give_money', 'value': 1000}, {'event': 'give_exp', 'value': 5000}, {'event': 'remove_quest_item', 'item': 10}, {'npc': 'grid', 'text': 'Вполне!'}]}; this[145] = {'theme': 'О СЕБЕ', 'msg': [{'npc': 'grid', 'text': 'Это ты - Гидра, единственная дочь элитной семьи Фендерсов? Я узнал тебя по тесаку в руках и малому количеству одежды.'}, {'npc': 'hydra', 'text': 'Да, дружочек, это я! Не хочешь со мной побегать за горожанами с оружием?'}, {'npc': 'grid', 'text': 'Нет, спасибо, пока откажусь.'}]}; this[146] = {'theme': 'ИНВЕСТИЦИИ', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_getinvestor') && !(Core.Get()).game.isFlag('q_hydranevermore'); }, 'msg': [{'npc': 'grid', 'text': 'Ты никогда не думала вложить родительские деньги во что-нибудь стоящее, например революцию Мета-Воинов?'}, {'npc': 'hydra', 'text': 'И что тут веселого?'}, {'npc': 'grid', 'text': 'Везде будут драться люди, кровь будет течь реками... ну и так далее.'}, {'npc': 'hydra', 'text': 'Ой, круть! Хочу... однако, так легко мне родители на это денег не дадут, они не понимают моих увлечений...'}, {'npc': 'hydra', 'text': 'Я наказана за прошлый раз, когда устроила бойню в городе Невермор...'}, {'npc': 'hydra', 'text': 'Вот если ты сходишь к мэру города и извинишься перед ними от моего имени, они меня простят, и я смогу спонсировать революцию!'}, {'npc': 'grid', 'text': 'А что сама не сходишь?'}, {'event': 'set_flag', 'flag': 'q_hydranevermore', 'value': 1}, {'event': 'add_quest', 'quest': 'feel_of_guilty', 'stage': 0}, {'npc': 'hydra', 'text': 'Думаю, они не станут слушать, и откроют огонь, а мне придется убить их всех. И все, карманных денег не будет больше никогда.'}]}; this[147] = {'theme': 'ПЕРЕГОВОРЫ С НЕВЕРМОР', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_hydranevermore'); }, 'msg': [{'npc': 'hydra', 'text': 'Не забудь поговорить с мэром города Невермор.'}]}; this[148] = {'theme': 'ПЕРЕГОВОРЫ С НЕВЕРМОР', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_getinvestor') && 2 == (Core.Get()).game.getFlag('q_hydranevermore'); }, 'msg': [{'npc': 'hydra', 'text': 'Как прошли переговоры?'}, {'npc': 'grid', 'text': 'Похоже, тебя простили.'}, {'npc': 'hydra', 'text': 'Пока вы ходили, родители и так уже меня простили. Они не могут долго злиться на меня. Давайте я теперь спонсирую вашу революцию.'}, {'event': 'remove_quest_item', 'item': 13, 'condition': function () { return (Core.Get()).game.hasQuestItem(13); }}, {'event': 'fail_quest', 'quest': 'keabo_style', 'condition': function () { return (Core.Get()).game.inQuest('keabo_style'); }}, {'event': 'reset_flag', 'flag': 'q_getcastlekey'}, {'event': 'remove_quest_item', 'item': 14, 'condition': function () { return (Core.Get()).game.hasQuestItem(14); }}, {'event': 'give_exp', 'value': 4000}, {'event': 'set_flag', 'flag': 'q_getinvestor', 'value': 2}, {'event': 'complete_quest', 'quest': 'feel_of_guilty'}, {'event': 'add_quest', 'quest': 'meta_uprise', 'stage': 9}, {'npc': 'grid', 'text': 'Давай. Будет круто.'}]}; this[149] = {'theme': 'О СЕБЕ', 'msg': [{'npc': 'grid', 'text': 'Кто вы, сэр?'}, {'npc': 'heraldio', 'text': 'Меня зовут Геральдио. Я владелец замка, что находится прямо в центре этого города.'}, {'npc': 'grid', 'text': 'Я смотрю, вы до безобразия богаты...'}, {'npc': 'heraldio', 'text': 'Сэр! Как верно вы подметили! Деньги – это определенно зло.'}, {'npc': 'grid', 'text': 'Так избавьтесь от него, дайте их мне. Я могу бороться с собственным злом.'}, {'npc': 'heraldio', 'text': 'Сэр, я ни при каких условиях не позволю вам так рисковать собой.'}]}; this[150] = {'theme': 'ИНВЕСТИЦИИ', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_getinvestor') && !(Core.Get()).game.isFlag('q_getcastlekey'); }, 'msg': [{'npc': 'grid', 'text': 'Скажите, благородный сэр, а не хотите ли вы помочь своим капиталом великому делу?'}, {'npc': 'heraldio', 'text': 'Какому же делу?'}, {'npc': 'grid', 'text': 'Мировой революции.'}, {'npc': 'heraldio', 'text': 'Мне не по душе текущая политическая ситуация. Президент Мист в моем понимании... глупа и амбициозна, как снег посреди лета.'}, {'npc': 'grid', 'text': 'Отлично!'}, {'npc': 'heraldio', 'text': '...Только вот одно.'}, {'npc': 'grid', 'text': 'Так и знал...'}, {'npc': 'heraldio', 'text': 'Я потерял ключ от своего замка на равнинах Ласт Стенд. Найдите его, и тогда я сразу же помогу вам.'}, {'npc': 'grid', 'text': 'А вы не боитесь, что я возьму ключ и обворую вас?'}, {'npc': 'heraldio', 'text': 'Разумеется, нет.'}, {'npc': 'heraldio', 'text': 'Мой бастион защищен не только обычным замком, но еще и сканером сетчатки глаза, отпечатков пальцев и универсальной идентификации биополя человека.'}, {'npc': 'grid', 'text': 'Черт, зачем вам тогда ключ?'}, {'npc': 'heraldio', 'text': 'Без него не войти. Мне хотелось сохранить элемент античности, поэтому и сделал такую систему... правда, я уже не первый раз его теряю.'}, {'npc': 'grid', 'text': 'Ясно, поброжу по равнинам Ласт Стенд, может, и найду чего.'}, {'event': 'set_flag', 'flag': 'q_getcastlekey', 'value': 1}, {'npc': 'heraldio', 'text': 'Будьте осторожнее! Ласт Стенд – крайне опасный район. Иначе я бы уже давно сходил туда сам.'}]}; this[151] = {'theme': 'ПОИСК КЛЮЧА', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_getcastlekey') && !(Core.Get()).game.hasQuestItem(14); }, 'msg': [{'npc': 'grid', 'text': 'Я все еще не нашел ключ от вашего замка на равнинах Ласт Стенд.'}, {'npc': 'heraldio', 'text': 'Тогда зачем вы мне об этом говорите, сэр?'}]}; this[152] = {'theme': 'ПОИСК КЛЮЧА – ВЫПОЛНЕНО', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_getcastlekey') && (Core.Get()).game.hasQuestItem(14); }, 'msg': [{'npc': 'grid', 'text': 'Вот ваш ключ!'}, {'event': 'remove_quest_item', 'item': 14}, {'event': 'give_exp', 'value': 5000}, {'npc': 'heraldio', 'text': 'Теперь я смогу, наконец, вернуться домой. Пусть ваш лидер мне позвонит, мы согласуем спонсорство.'}, {'event': 'remove_quest_item', 'item': 13, 'condition': function () { return (Core.Get()).game.hasQuestItem(13); }}, {'event': 'fail_quest', 'quest': 'keabo_style', 'condition': function () { return (Core.Get()).game.inQuest('keabo_style'); }}, {'event': 'reset_flag', 'flag': 'q_hydranevermore'}, {'event': 'fail_quest', 'quest': 'feel_of_guilty', 'condition': function () { return (Core.Get()).game.inQuest('feel_of_guilty'); }}, {'event': 'set_flag', 'flag': 'q_getcastlekey', 'value': 2}, {'event': 'set_flag', 'flag': 'q_getinvestor', 'value': 2}, {'event': 'add_quest', 'quest': 'meta_uprise', 'stage': 9}, {'npc': 'grid', 'text': 'Спасибо!'}]}; }; _global.TalkData2 = v1; _global.TalkData2 extends TalkData3; var v2 = v1.prototype; ASSetPropFlags(_global.TalkData2.prototype, null, 1); } #endinitclip } movieClip 1950 __Packages.TalkData { #initclip if (!_global.TalkData) { var v1 = function () { super(); this[-1] = {'theme': '[ ПОПРОЩАТЬСЯ ]', 'msg': []}; this[0] = {'theme': 'СЛЕД ПРИШЕЛЬЦЕВ', 'condition': function () { return !(Core.Get()).game.isFlag('q_game_start'); }, 'msg': [{'event': 'set_flag', 'flag': 'q_game_start'}, {'npc': 'natan', 'text': 'Грид! Ты один из наших лучших сотрудников и только тебе я могу поручить это задание...'}, {'npc': 'natan', 'text': 'Грид! Ты хоть слушаешь меня?!'}, {'npc': 'grid', 'text': 'Прости, Натан. Забыл вытащить наушники.'}, {'npc': 'natan', 'text': 'И как тебя еще с такими жизненными позициями еще пришельцы не убили?.. Ладно, Грид. Слушай меня. На востоке от нашей базы видели НЛО. Отправляйся туда и разузнай все.'}, {'event': 'add_quest', 'quest': 'ufo_visit', 'stage': 0}, {'event': 'weaken_fog', 'x': 3, 'y': 1, 'w': 14, 'h': 1}, {'event': 'mark', 'area': 'ufo1'}, {'event': 'add_guide', 'area': 'ufo1'}, {'event': 'limit_map', 'tl_x': 0, 'tl_y': 0, 'br_x': 1140, 'br_y': 480}, {'npc': 'grid', 'text': 'Ок.'}]}; this[1] = {'theme': 'У.В.И.Ф.Ж.', 'msg': [{'npc': 'natan', 'text': 'Ты спрашиваешь меня про У.В.И.Ф.Ж.?! Ты же с нами работаешь уже 5 лет. Странный ты человек, Грид.'}, {'npc': 'grid', 'text': 'Повторение – мать учения.'}, {'npc': 'natan', 'text': 'Ох... Напоминаю тебе, У.В.И.Ф.Ж. (что означает «Убить Все Инопланетные Формы Жизни») занимается тем, что убивает всех пришельцев без выяснения их намерений и целей. Поэтому, увидев пришельца, с ним не надо разговаривать – ибо речи их лживы. Их надо сразу убивать.'}, {'npc': 'grid', 'text': 'Я знал это.'}, {'npc': 'natan', 'text': 'Тогда зачем спрашивал?!'}, {'npc': 'grid', 'text': 'Думал, может, нового чего скажешь.'}]}; this[2] = {'theme': 'РАССКАЗАТЬ О ПРИШЕЛЬЦАХ', 'condition': function () { return (Core.Get()).game.getFlag('q_raymondehelp') == 3 && !(Core.Get()).game.isFlag('q_bigalienplan'); }, 'msg': [{'npc': 'grid', 'text': 'Натан, ты не поверишь...'}, {'npc': 'grid', 'text': '...'}, {'event': 'complete_quest', 'quest': 'ufo_visit'}, {'event': 'give_exp', 'value': 250}, {'npc': 'natan', 'text': 'Вот оно что! Невероятно! Мне нужно время, чтобы составить план. Между тем, мне пришла отличная мысль. Что, в общем-то, не удивительно, ведь я же гениален.'}, {'npc': 'natan', 'text': 'Мне нужен час, чтобы продумать все детали. Приходи через час.'}, {'event': 'add_quest', 'quest': 'natan_plan', 'stage': 0}, {'event': 'set_flag', 'flag': 'q_bigalienplan', 'value': 1}, {'event': 'start_timer', 'timer': 't_bigplantimer'}, {'npc': 'grid', 'text': 'Ну вот... чем же еще мне целый час заниматься?!'}, {'npc': 'katenka', 'text': 'Пойдем гулять и искать приключений.'}]}; this[3] = {'theme': 'ВЕЛИКИЙ ПЛАН НАТАНА', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_bigalienplan') && (Core.Get()).game.timers.t_bigplantimer < 18000; }, 'msg': [{'npc': 'grid', 'text': 'Натан, ну что там с планом?!'}, {'npc': 'natan', 'text': 'Еще рано. Он пока в разработке. Приходи позже! Найди себе занятие.'}]}; this[4] = {'theme': 'ВЕЛИКИЙ ПЛАН НАТАНА', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_bigalienplan') && (Core.Get()).game.timers.t_bigplantimer >= 18000; }, 'msg': [{'npc': 'natan', 'text': 'Сколько можно тебя ждать, Грид? Я уже давно придумал свой великий план!'}, {'npc': 'grid', 'text': 'Рассказывай же, Натан. Мы все в величайшем возбуждении и хотим знать твой план.'}, {'npc': 'natan', 'text': 'Отчего-то я слышу нотки сарказма в твоих словах.'}, {'npc': 'grid', 'text': 'Оттого, быть может, что они там есть?..'}, {'npc': 'natan', 'text': 'Ну да не важно! Слушайте меня, верные мои сотрудники. Я вышел на Карла Вакуоля, великого ученого. Он предоставит нам один экземпляр своего изобретения – темпорального телевизора, который показывает прошлое того района, куда установлен.'}, {'npc': 'grid', 'text': 'А если пробраться ночью в женскую душевую? Или установить в комнате, например, своей девушки?..'}, {'npc': 'natan', 'text': 'Это слишком низкие цели для нас. С этим телевизором вы посетите 6 мест, где были обнаружены пришельцы. Полученное видео принесете мне. Думаю, это поможет нам узнать их текущее местоположение или другие важные секреты.'}, {'npc': 'grid', 'text': 'Мне больше нравится вариант с душевыми.'}, {'npc': 'natan', 'text': 'Отправляйтесь к Вакуолю за телевизором. Я отметил на вашей карте все места, где видели пришельцев. Действуйте согласно моему великому плану.'}, {'event': 'set_flag', 'flag': 'q_bigalienplan', 'value': 2}, {'event': 'kill_timer', 'timer': 't_bigplantimer'}, {'event': 'mark', 'area': 'ufo2'}, {'event': 'mark', 'area': 'ufo3'}, {'event': 'mark', 'area': 'ufo4'}, {'event': 'mark', 'area': 'ufo5'}, {'event': 'mark', 'area': 'ufo6'}, {'event': 'add_guide', 'area': 'ufo2'}, {'event': 'add_guide', 'area': 'ufo3'}, {'event': 'add_guide', 'area': 'ufo4'}, {'event': 'add_guide', 'area': 'ufo5'}, {'event': 'add_guide', 'area': 'ufo6'}, {'event': 'add_quest', 'quest': 'natan_plan', 'stage': 1}, {'npc': 'grid', 'text': 'Ок.'}, {'npc': 'katenka', 'text': 'Кстати, Грид. Я тебя временно покину – у нас с Кей миссия в Гибсон-Сити.'}, {'event': 'leave_team', 'npc': 1}, {'event': 'leave_team', 'npc': 2}, {'npc': 'grid', 'text': 'Да, припоминаю.'}]}; this[5] = {'theme': 'ВЕЛИКИЙ ПЛАН НАТАНА – ИНФОРМАЦИЯ СОБРАНА', 'condition': function () { return 2 == (Core.Get()).game.getFlag('q_bigalienplan') && (Core.Get()).game.isFlag('q_ufotele1') && (Core.Get()).game.isFlag('q_ufotele2') && (Core.Get()).game.isFlag('q_ufotele3') && (Core.Get()).game.isFlag('q_ufotele4') && (Core.Get()).game.isFlag('q_ufotele5') && (Core.Get()).game.isFlag('q_ufotele6'); }, 'msg': [{'npc': 'grid', 'text': 'Натан, я собрал всю информацию.'}, {'event': 'remove_quest_item', 'item': 0}, {'event': 'remove_quest_item', 'item': 1}, {'event': 'remove_quest_item', 'item': 2}, {'event': 'remove_quest_item', 'item': 3}, {'event': 'remove_quest_item', 'item': 4}, {'event': 'remove_quest_item', 'item': 5}, {'event': 'remove_quest_item', 'item': 6}, {'event': 'give_exp', 'value': 5000}, {'event': 'set_flag', 'flag': 'q_bigalienplan', 'value': 3}, {'event': 'start_timer', 'timer': 't_bigplantimer2'}, {'event': 'add_quest', 'quest': 'natan_plan', 'stage': 2}, {'npc': 'natan', 'text': 'Отлично! Дай мне время, и я просмотрю ее.'}, {'npc': 'grid', 'text': 'Как?! Опять ждать?!'}, {'npc': 'natan', 'text': 'Ну всего каких-то полчасика. Найди себе занятие. Это не так сложно.'}]}; this[6] = {'theme': 'ВЕЛИКИЙ ПЛАН НАТАНА', 'condition': function () { return 3 == (Core.Get()).game.getFlag('q_bigalienplan') && (Core.Get()).game.timers.t_bigplantimer2 < 9000; }, 'msg': [{'npc': 'grid', 'text': 'Натан, ну ты посмотрел уже?'}, {'npc': 'natan', 'text': 'Я еще в процессе. Если ты будешь мне мешать, я никогда не посмотрю.'}]}; this[7] = {'theme': 'ВЕЛИКИЙ ПЛАН НАТАНА', 'condition': function () { return 3 == (Core.Get()).game.getFlag('q_bigalienplan') && (Core.Get()).game.timers.t_bigplantimer2 >= 9000; }, 'msg': [{'npc': 'natan', 'text': 'Итак, я все посмотрел и теперь все знаю!'}, {'npc': 'grid', 'text': 'Рассказывай.'}, {'npc': 'natan', 'text': 'По траекториям, заметным на видео, я обнаружил, где находится тайная база пришельцев. Их тайная база – в Конском Море. Прямо в самом море, где-то под водой.'}, {'npc': 'natan', 'text': 'Кей и Катенька вернулись с задания, и тоже пойдут с тобой. Отправляйтесь в город-порт и снарядите экспедицию в координаты, которые я вам указал.'}, {'event': 'set_flag', 'flag': 'q_bigalienplan', 'value': 4}, {'event': 'kill_timer', 'timer': 't_bigplantimer2'}, {'event': 'add_quest', 'quest': 'natan_plan', 'stage': 3}, {'npc': 'key', 'text': 'Привет, Натан. Не поверишь, где мы были и что делали...'}, {'npc': 'natan', 'text': 'Ну, вообще-то, я все видел.'}, {'event': 'join_team', 'npc': 1}, {'event': 'join_team', 'npc': 2}, {'npc': 'key', 'text': 'Ну и зря. Я интересно рассказываю.'}]}; this[8] = {'theme': 'НЛО', 'condition': function () { return !(Core.Get()).game.isFlag('v_ufo1visit'); }, 'msg': [{'event': 'set_flag', 'flag': 'v_ufo1visit'}, {'event': 'add_quest', 'quest': 'ufo_visit', 'stage': 1}, {'npc': 'grid', 'text': 'Что ж, похоже, что здесь действительно было НЛО... прожженная земля, кольца на полях и следы недавней дискотеки говорят об этом.'}, {'npc': 'grid', 'text': 'Меня всегда интересовало, почему пришельцы так любят устраивать на нашей планете дискотеки. Но спросить об этом я их никогда не мог, ведь мы – УВИФЖ, организация, которая занимается борьбой с ними без выяснения их намерений и целей.'}, {'npc': 'grid', 'text': 'Думаю, в ближайшей деревне должны что-то знать об этих пришельцах.'}]}; this[9] = {'theme': 'ТЕМПОРАЛЬНЫЙ ТЕЛЕВИЗОР', 'condition': function () { return !(Core.Get()).game.isFlag('q_ufotele1') && (Core.Get()).game.hasQuestItem(0); }, 'msg': [{'event': 'set_flag', 'flag': 'q_ufotele1'}, {'event': 'set_area_flag', 'flag': 'ufo_tele'}, {'npc': 'grid', 'text': 'Ладно, установим темпоральный телевизор и посмотрим шоу...'}, {'event': 'give_quest_item', 'item': 1}, {'event': 'give_exp', 'value': 1000}, {'npc': 'grid', 'text': 'Пришельцы прилетели сюда, устроили дискотеку, на которую прибежали жители деревни. По окончании дискотеки вместе с пришельцами почему-то на летающую тарелку ушло пару жителей из деревни...'}]}; this[10] = {'theme': 'ТЕМПОРАЛЬНЫЙ ТЕЛЕВИЗОР', 'condition': function () { return !(Core.Get()).game.isFlag('q_ufotele1') && (Core.Get()).game.getFlag('q_bigalienplan') == 2 && !(Core.Get()).game.hasQuestItem(0) && !(Core.Get()).game.isAreaFlag('ufo_tele'); }, 'msg': [{'event': 'set_area_flag', 'flag': 'ufo_tele'}, {'npc': 'grid', 'text': 'Это место, где были обнаружены пришельцы. Однако без темпорального телевизора я здесь ничего не могу предпринять.'}]}; this[11] = {'theme': 'ТЕМПОРАЛЬНЫЙ ТЕЛЕВИЗОР', 'condition': function () { return (Core.Get()).game.isFlag('q_ufotele1') && !(Core.Get()).game.isAreaFlag('ufo_tele') && !(Core.Get()).game.isFlag('q_ufotele1_x'); }, 'msg': [{'event': 'set_area_flag', 'flag': 'ufo_tele'}, {'npc': 'grid', 'text': 'Я уже получил здесь необходимую информацию.'}]}; this[12] = {'theme': 'ТЕМПОРАЛЬНЫЙ ТЕЛЕВИЗОР', 'condition': function () { return !(Core.Get()).game.isFlag('q_ufotele2') && (Core.Get()).game.hasQuestItem(0); }, 'msg': [{'event': 'set_flag', 'flag': 'q_ufotele2'}, {'event': 'set_area_flag', 'flag': 'ufo_tele'}, {'npc': 'grid', 'text': 'Ладно, установим темпоральный телевизор и посмотрим шоу...'}, {'event': 'give_quest_item', 'item': 2}, {'event': 'give_exp', 'value': 1000}, {'npc': 'grid', 'text': 'Тарелка пришельцев остановилась здесь. Похоже, пришельцы предприняли попытку торговать хотдогами... пара жителей Владсвиля попробовали сосиски пришельцев... интересно, что с ними после этого стало...'}]}; this[13] = {'theme': 'ТЕМПОРАЛЬНЫЙ ТЕЛЕВИЗОР', 'condition': function () { return !(Core.Get()).game.isFlag('q_ufotele2') && (Core.Get()).game.getFlag('q_bigalienplan') == 2 && !(Core.Get()).game.hasQuestItem(0) && !(Core.Get()).game.isAreaFlag('ufo_tele'); }, 'msg': [{'event': 'set_area_flag', 'flag': 'ufo_tele'}, {'npc': 'grid', 'text': 'Это место, где были обнаружены пришельцы. Однако без темпорального телевизора я здесь ничего не могу предпринять.'}]}; this[14] = {'theme': 'ТЕМПОРАЛЬНЫЙ ТЕЛЕВИЗОР', 'condition': function () { return (Core.Get()).game.isFlag('q_ufotele2') && !(Core.Get()).game.isAreaFlag('ufo_tele') && !(Core.Get()).game.isFlag('q_ufotele2_x'); }, 'msg': [{'event': 'set_area_flag', 'flag': 'ufo_tele'}, {'npc': 'grid', 'text': 'Я уже получил здесь необходимую информацию.'}]}; this[15] = {'theme': 'ТЕМПОРАЛЬНЫЙ ТЕЛЕВИЗОР', 'condition': function () { return !(Core.Get()).game.isFlag('q_ufotele3') && (Core.Get()).game.hasQuestItem(0); }, 'msg': [{'event': 'set_flag', 'flag': 'q_ufotele3'}, {'event': 'set_area_flag', 'flag': 'ufo_tele'}, {'npc': 'grid', 'text': 'Ладно, установим темпоральный телевизор и посмотрим шоу...'}, {'event': 'give_quest_item', 'item': 3}, {'event': 'give_exp', 'value': 1000}, {'npc': 'grid', 'text': 'В этих пшеничных полях какое-то время находилась тарелка пришельцев... Потом на тарелку проникли Кей и Катенька и разгромили ее.'}]}; this[16] = {'theme': 'ТЕМПОРАЛЬНЫЙ ТЕЛЕВИЗОР', 'condition': function () { return !(Core.Get()).game.isFlag('q_ufotele3') && (Core.Get()).game.getFlag('q_bigalienplan') == 2 && !(Core.Get()).game.hasQuestItem(0) && !(Core.Get()).game.isAreaFlag('ufo_tele'); }, 'msg': [{'event': 'set_area_flag', 'flag': 'ufo_tele'}, {'npc': 'grid', 'text': 'Это место, где были обнаружены пришельцы. Однако без темпорального телевизора я здесь ничего не могу предпринять.'}]}; this[17] = {'theme': 'ТЕМПОРАЛЬНЫЙ ТЕЛЕВИЗОР', 'condition': function () { return (Core.Get()).game.isFlag('q_ufotele3') && !(Core.Get()).game.isAreaFlag('ufo_tele') && !(Core.Get()).game.isFlag('q_ufotele3_x'); }, 'msg': [{'event': 'set_area_flag', 'flag': 'ufo_tele'}, {'npc': 'grid', 'text': 'Я уже получил здесь необходимую информацию.'}]}; this[18] = {'theme': 'ТЕМПОРАЛЬНЫЙ ТЕЛЕВИЗОР', 'condition': function () { return !(Core.Get()).game.isFlag('q_ufotele4') && (Core.Get()).game.hasQuestItem(0); }, 'msg': [{'event': 'set_flag', 'flag': 'q_ufotele4'}, {'event': 'set_area_flag', 'flag': 'ufo_tele'}, {'npc': 'grid', 'text': 'Ладно, установим темпоральный телевизор и посмотрим шоу...'}, {'event': 'give_quest_item', 'item': 4}, {'event': 'give_exp', 'value': 1000}, {'event': 'give_quest_item', 'item': 18}, {'npc': 'grid', 'text': 'В пустыне пришельцы снимали какое-то кино, судя по наличию причудливых видеокамер и костюмов. Жанр подобного кино вам непонятен, поскольку все съемки они о чем-то беседовали, совершая пафосные жесты.'}]}; this[19] = {'theme': 'ТЕМПОРАЛЬНЫЙ ТЕЛЕВИЗОР', 'condition': function () { return !(Core.Get()).game.isFlag('q_ufotele4') && (Core.Get()).game.getFlag('q_bigalienplan') == 2 && !(Core.Get()).game.hasQuestItem(0) && !(Core.Get()).game.isAreaFlag('ufo_tele'); }, 'msg': [{'event': 'set_area_flag', 'flag': 'ufo_tele'}, {'npc': 'grid', 'text': 'Это место, где были обнаружены пришельцы. Однако без темпорального телевизора я здесь ничего не могу предпринять.'}]}; this[20] = {'theme': 'ТЕМПОРАЛЬНЫЙ ТЕЛЕВИЗОР', 'condition': function () { return (Core.Get()).game.isFlag('q_ufotele4') && !(Core.Get()).game.isAreaFlag('ufo_tele') && !(Core.Get()).game.isFlag('q_ufotele4_x'); }, 'msg': [{'event': 'set_area_flag', 'flag': 'ufo_tele'}, {'npc': 'grid', 'text': 'Я уже получил здесь необходимую информацию.'}]}; this[21] = {'theme': 'ТЕМПОРАЛЬНЫЙ ТЕЛЕВИЗОР', 'condition': function () { return !(Core.Get()).game.isFlag('q_ufotele5') && (Core.Get()).game.hasQuestItem(0); }, 'msg': [{'event': 'set_flag', 'flag': 'q_ufotele5'}, {'event': 'set_area_flag', 'flag': 'ufo_tele'}, {'npc': 'grid', 'text': 'Ладно, установим темпоральный телевизор и посмотрим шоу...'}, {'event': 'give_quest_item', 'item': 5}, {'event': 'give_exp', 'value': 1000}, {'npc': 'grid', 'text': 'Здесь пришельцы также пытались провести дискотеку, однако никто не пришел – видимо, место было выбрано не очень удачно.'}]}; this[22] = {'theme': 'ТЕМПОРАЛЬНЫЙ ТЕЛЕВИЗОР', 'condition': function () { return !(Core.Get()).game.isFlag('q_ufotele5') && (Core.Get()).game.getFlag('q_bigalienplan') == 2 && !(Core.Get()).game.hasQuestItem(0) && !(Core.Get()).game.isAreaFlag('ufo_tele'); }, 'msg': [{'event': 'set_area_flag', 'flag': 'ufo_tele'}, {'npc': 'grid', 'text': 'Это место, где были обнаружены пришельцы. Однако без темпорального телевизора я здесь ничего не могу предпринять.'}]}; this[23] = {'theme': 'ТЕМПОРАЛЬНЫЙ ТЕЛЕВИЗОР', 'condition': function () { return (Core.Get()).game.isFlag('q_ufotele5') && !(Core.Get()).game.isAreaFlag('ufo_tele') && !(Core.Get()).game.isFlag('q_ufotele5_x'); }, 'msg': [{'event': 'set_area_flag', 'flag': 'ufo_tele'}, {'npc': 'grid', 'text': 'Я уже получил здесь необходимую информацию.'}]}; this[24] = {'theme': 'ТЕМПОРАЛЬНЫЙ ТЕЛЕВИЗОР', 'condition': function () { return !(Core.Get()).game.isFlag('q_ufotele6') && (Core.Get()).game.hasQuestItem(0); }, 'msg': [{'event': 'set_flag', 'flag': 'q_ufotele6'}, {'event': 'set_area_flag', 'flag': 'ufo_tele'}, {'npc': 'grid', 'text': 'Ладно, установим темпоральный телевизор и посмотрим шоу...'}, {'event': 'give_quest_item', 'item': 6}, {'event': 'give_exp', 'value': 1000}, {'npc': 'grid', 'text': 'Здесь пришельцы, видимо, высадились спонтанно – из тарелки вышло двое пришельцев, они подрались и вернулись обратно.'}]}; this[25] = {'theme': 'ТЕМПОРАЛЬНЫЙ ТЕЛЕВИЗОР', 'condition': function () { return !(Core.Get()).game.isFlag('q_ufotele6') && (Core.Get()).game.getFlag('q_bigalienplan') == 2 && !(Core.Get()).game.hasQuestItem(0) && !(Core.Get()).game.isAreaFlag('ufo_tele'); }, 'msg': [{'event': 'set_area_flag', 'flag': 'ufo_tele'}, {'npc': 'grid', 'text': 'Это место, где были обнаружены пришельцы. Однако без темпорального телевизора я здесь ничего не могу предпринять.'}]}; this[26] = {'theme': 'ТЕМПОРАЛЬНЫЙ ТЕЛЕВИЗОР', 'condition': function () { return (Core.Get()).game.isFlag('q_ufotele6') && !(Core.Get()).game.isAreaFlag('ufo_tele') && !(Core.Get()).game.isFlag('q_ufotele6_x'); }, 'msg': [{'event': 'set_area_flag', 'flag': 'ufo_tele'}, {'npc': 'grid', 'text': 'Я уже получил здесь необходимую информацию.'}]}; this[27] = {'theme': 'НЛО', 'condition': function () { return (Core.Get()).game.isFlag('v_ufo1visit'); }, 'msg': [{'npc': 'grid', 'text': 'Вы тут недавно ничего странного не видели?'}, {'npc': 'halisted', 'text': 'Я? Нет, вроде не видел. А что, например, я должен был видеть?'}, {'npc': 'grid', 'text': 'Например, летающую тарелку с пришельцами.'}, {'npc': 'halisted', 'text': 'А, такую видел.'}, {'npc': 'grid', 'text': 'И вам это не показалось странным?'}, {'npc': 'halisted', 'text': 'Да как-то нет.'}, {'npc': 'grid', 'text': '...'}, {'npc': 'grid', 'text': 'Ладно. Не видели ли вы, куда отправилась потом эта тарелка?'}, {'npc': 'halisted', 'text': 'Нет. Но один из пришельцев говорил...'}, {'npc': 'grid', 'text': 'Один из пришельцев?!'}, {'npc': 'halisted', 'text': 'Ну да. Мы все пошли на дискотеку, что они устроили. Там один из них сказал мне, что они направляются в район города Интегра.'}, {'event': 'give_exp', 'value': 50, 'condition': function () { return !(Core.Get()).game.isFlag('q_go2integra'); }}, {'event': 'add_quest', 'quest': 'ufo_visit', 'stage': 2, 'condition': function () { return !(Core.Get()).game.isFlag('q_go2integra'); }}, {'event': 'limit_map', 'tl_x': 0, 'tl_y': 0, 'br_x': 1560, 'br_y': 480, 'condition': function () { return !(Core.Get()).game.isFlag('q_go2integra'); }}, {'event': 'set_flag', 'flag': 'q_go2integra', 'condition': function () { return !(Core.Get()).game.isFlag('q_go2integra'); }}, {'npc': 'grid', 'text': 'Спасибо за информацию, отправлюсь туда.'}]}; this[28] = {'theme': 'ПРОПАВШИЕ ЖИТЕЛИ', 'condition': function () { return (Core.Get()).game.isFlag('q_ufotele1'); }, 'msg': [{'npc': 'grid', 'text': 'А вы не заметили, что из деревни пропало несколько жителей?'}, {'npc': 'halisted', 'text': 'Кстати, да. Ума не приложу, куда они делись.'}, {'npc': 'grid', 'text': 'Во время вашей дискотеки с пришельцами их заманили на тарелку пришельцев и увезли.'}, {'event': 'set_flag', 'flag': 'q_findnikkyvillagers', 'condition': function () { return !(Core.Get()).game.isFlag('q_findnikkyvillagers'); }}, {'npc': 'halisted', 'text': 'Вот так дела ! Ну, если вдруг найдете их, дайте мне знать.'}]}; this[29] = {'theme': 'ТОРГОВЛЯ', 'msg': [{'event': 'trade', 'npc': 'halisted'}]}; this[30] = {'theme': 'РАБОТА', 'condition': function () { return (Core.Get()).game.isFlag('q_ho_job') && !(Core.Get()).game.isFlag('v_astralflower'); }, 'msg': [{'npc': 'grid', 'text': 'Есть ли работа для меня?'}, {'npc': 'ho', 'text': 'Работа? Тут всегда полно работы. Например, мне нужны семена моих чудо-цветов!'}, {'npc': 'grid', 'text': 'Где же их брать-то?'}, {'npc': 'ho', 'text': 'Побродите в окрестностях фермы, они обычно выпадают из различных врагов. Добудете 10 семян, возвращайтесь.'}, {'event': 'set_flag', 'flag': 'v_astralflower', 'value': 1}, {'event': 'add_quest', 'quest': 'astral_flowers', 'stage': 0}, {'npc': 'grid', 'text': 'Ну хорошо...'}]}; this[31] = {'theme': 'СЕМЕНА', 'condition': function () { return 1 == (Core.Get()).game.getFlag('v_astralflower') && !(Core.Get()).game.hasQuestItems(7, 10); }, 'msg': [{'npc': 'grid', 'text': '...\nЧто вы там говорите нужно?..'}, {'npc': 'ho', 'text': '10 астральных семян! Что тут сложного?'}, {'npc': 'grid', 'text': 'Ничего. Скоро будет.'}]}; this[32] = {'theme': 'СЕМЕНА', 'condition': function () { return 1 == (Core.Get()).game.getFlag('v_astralflower') && (Core.Get()).game.hasQuestItems(7, 10); }, 'msg': [{'event': 'remove_quest_item', 'item': 7}, {'event': 'give_money', 'value': 1000}, {'event': 'give_exp', 'value': 500}, {'event': 'set_flag', 'flag': 'v_astralflower', 'value': 2}, {'event': 'complete_quest', 'quest': 'astral_flowers'}, {'npc': 'ho', 'text': 'Отлично! 10 астральных семян! Возьмите в награду несколько астральных цветков...'}]}; this[33] = {'theme': 'О СЕБЕ', 'msg': [{'npc': 'grid', 'text': 'Вы кто такой и чем занимаетесь?'}, {'npc': 'ho', 'text': 'Я-то? Я - фермер. Выращиваю здесь волшебные цветы!'}, {'npc': 'grid', 'text': 'Волшебные? Что же в них такого волшебного?'}, {'event': 'set_flag', 'flag': 'q_ho_job'}, {'npc': 'ho', 'text': 'О, они унесут тебя в волшебную страну, где есть феи, единороги и нет индустриального общества и этих тупых киборгов!'}]}; this[34] = {'theme': 'ОБМАН', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_gotosummerg') && (Core.Get()).game.isFlag('q_sg1') && (Core.Get()).game.isFlag('q_sg2') && (Core.Get()).game.isFlag('q_sg3'); }, 'msg': [{'npc': 'grid', 'text': 'Мне кажется, или все в этом городке как-то странно одеваются?'}, {'npc': 'katenka', 'text': 'По мне, так нормально.'}, {'npc': 'craven', 'text': 'Смотрите! В окне дома виден связанный Карл! У него во рту кляп!'}, {'npc': 'carl', 'text': 'М-м! М-м-м м-м, м-м! М-М!'}, {'npc': 'alien1', 'text': 'Черт! Нас обнаружили! Снимаем личины!'}, {'npc': 'grid', 'text': 'Пришельцы!'}, {'npc': 'alien1a', 'text': 'Позвольте, я все вам объясню...'}, {'event': 'set_flag', 'flag': 'q_gotosummerg', 'value': 2}, {'event': 'set_area_flag', 'flag': 'q_sg_battle'}, {'npc': 'katenka', 'text': 'Мочи!'}, {'event': 'battle', 'band': 'sg_aliens'}]}; this[35] = {'theme': 'СТРАННОСТИ', 'condition': function () { return !(Core.Get()).game.getFlag('q_sg1'); }, 'msg': [{'event': 'set_flag', 'flag': 'q_sg1'}, {'npc': 'grid', 'text': 'Черт, он меня пугает. Не хочу с ним общаться...'}]}; this[36] = {'theme': 'СТРАННОСТИ', 'condition': function () { return !(Core.Get()).game.getFlag('q_sg2'); }, 'msg': [{'event': 'set_flag', 'flag': 'q_sg2'}, {'npc': 'grid', 'text': 'Не надо так поступать! Лучше выучите язык. Понаехали тут иностранцы...'}, {'npc': 'alien2', 'text': 'Нет. Мы – местные. Мы жить страна эта давно. 250 лет!'}, {'npc': 'grid', 'text': 'Как скажете! Побегу-ка я отсюда!..'}]}; this[37] = {'theme': 'СТРАННОСТИ', 'condition': function () { return !(Core.Get()).game.getFlag('q_sg3'); }, 'msg': [{'event': 'set_flag', 'flag': 'q_sg3'}, {'npc': 'grid', 'text': 'Какой-то ненормальный городок...'}]}; this[38] = {'theme': 'КАРЛ ВАКУОЛЬ', 'condition': function () { return 2 == (Core.Get()).game.getFlag('q_gotosummerg') && 1 == (Core.Get()).game.getFlag('q_raymondehelp') && !(Core.Get()).game.isAreaFlag('q_sg_battle'); }, 'msg': [{'event': 'set_flag', 'flag': 'q_sg3'}, {'npc': 'craven', 'text': 'Дай-ка я тебя развяжу, Карл...'}, {'npc': 'carl', 'text': '...'}, {'npc': 'carl', 'text': 'Ох... наконец-таки. Эти странные существа пытались объяснить мне, что наука в жизни не главное и надо уметь веселиться... пытались заставить танцевать, есть вредную пищу и знакомиться с женщинами... Я чуть не поседел.'}, {'event': 'remove_quest_item', 'item': 22}, {'event': 'remove_quest_item', 'item': 23}, {'event': 'give_exp', 'value': 1000}, {'event': 'set_flag', 'flag': 'q_raymondehelp', 'value': 2}, {'event': 'add_quest', 'quest': 'meta_raimonde', 'stage': 2}, {'event': 'leave_team', 'npc': 8}, {'npc': 'craven', 'text': 'Я провожу вас в Раймонд, а оттуда полечу на нашу базу. Грид, ты отправляйся к Лине. Я буду ждать вас там. И... спасибо за помощь!'}]}; this[39] = {'theme': 'ИНТЕГРА', 'condition': function () { return (Core.Get()).game.isFlag('q_go2integra') && !(Core.Get()).game.isFlag('integra_noone'); }, 'msg': [{'event': 'set_flag', 'flag': 'integra_noone'}, {'npc': 'grid', 'text': 'Невероятно! В городе нет ни единой души! Похоже, все куда-то исчезли... спорим, к этому имеют отношение пришельцы!..'}, {'npc': 'katenka', 'text': 'Я тоже так думаю. Хотя, возможно, дело в атмосферном давлении.'}, {'npc': 'grid', 'text': 'Неужели это моя соратница по У.В.И.Ф.Ж., Катенька?'}, {'npc': 'katenka', 'text': 'Да, во всяком случае, это на меня похоже!'}, {'npc': 'grid', 'text': '...Ты как обычно очень странно говоришь...'}, {'npc': 'grid', 'text': 'В любом случае, что ты здесь делаешь?'}, {'npc': 'katenka', 'text': 'Я хотела прикупить здесь парочку новых девайсов.'}, {'npc': 'grid', 'text': 'Девайсов?'}, {'npc': 'katenka', 'text': 'Ну да, устройств, которые экипируются, чтобы получить новые возможности или улучшить боевые параметры... Но не похоже, чтобы кто-то мог мне что-то продать здесь – в виду отсутствия здесь кого-либо.'}, {'npc': 'grid', 'text': 'Хм...'}, {'event': 'give_money', 'value': 50}, {'npc': 'katenka', 'text': 'Нехорошо воровать!'}, {'npc': 'grid', 'text': 'Не похоже, чтобы кто возражал. Думаю, имеет смысл доложить Натану в У.В.И.Ф.Ж.'}, {'event': 'give_exp', 'value': 100}, {'event': 'join_team', 'npc': 2}, {'event': 'add_quest', 'quest': 'ufo_visit', 'stage': 3}, {'event': 'set_flag', 'flag': 'v_kaufo_plot', 'value': 1}, {'event': 'set_flag', 'flag': 'btl_int_meta'}, {'npc': 'katenka', 'text': 'Я с тобой.'}]}; this[40] = {'theme': 'СИД', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_waitforalien'); }, 'msg': [{'npc': 'craven', 'text': 'Грид! Я везде искал тебя!'}, {'npc': 'grid', 'text': 'Что случилось?'}, {'npc': 'craven', 'text': 'Чертов псих по имени Сид убил Лину и захватил контроль над Мета-Воинами...'}, {'npc': 'craven', 'text': 'Он пришел, как обычный техник, предложил вживить всем чипы силы, а оказалось это было устройство для контроля разума!'}, {'event': 'fail_quest', 'quest': 'meta_uprise', 'condition': function () { return (Core.Get()).game.inQuest('meta_uprise'); }}, {'event': 'reset_flag', 'flag': 'q_metatechnicans'}, {'event': 'reset_flag', 'flag': 'q_getchips'}, {'event': 'reset_flag', 'flag': 'q_get3parts'}, {'event': 'remove_quest_item', 'item': 24, 'condition': function () { return (Core.Get()).game.hasQuestItem(24); }}, {'event': 'remove_quest_item', 'item': 25, 'condition': function () { return (Core.Get()).game.hasQuestItem(25); }}, {'event': 'remove_quest_item', 'item': 26, 'condition': function () { return (Core.Get()).game.hasQuestItem(26); }}, {'event': 'remove_quest_item', 'item': 27, 'condition': function () { return (Core.Get()).game.hasQuestItem(27); }}, {'event': 'remove_quest_item', 'item': 8, 'condition': function () { return (Core.Get()).game.hasQuestItem(8); }}, {'event': 'remove_quest_item', 'item': 15, 'condition': function () { return (Core.Get()).game.hasQuestItem(15); }}, {'event': 'remove_quest_item', 'item': 19, 'condition': function () { return (Core.Get()).game.hasQuestItem(19); }}, {'event': 'reset_flag', 'flag': 'q_allycalipso'}, {'event': 'reset_flag', 'flag': 'q_getinvestor'}, {'event': 'remove_quest_item', 'item': 13, 'condition': function () { return (Core.Get()).game.hasQuestItem(13); }}, {'event': 'fail_quest', 'quest': 'keabo_style', 'condition': function () { return (Core.Get()).game.inQuest('keabo_style'); }}, {'event': 'reset_flag', 'flag': 'q_hydranevermore'}, {'event': 'fail_quest', 'quest': 'feel_of_guilty', 'condition': function () { return (Core.Get()).game.inQuest('feel_of_guilty'); }}, {'event': 'reset_flag', 'flag': 'q_getcastlekey'}, {'event': 'remove_quest_item', 'item': 14, 'condition': function () { return (Core.Get()).game.hasQuestItem(14); }}, {'event': 'reset_flag', 'flag': 'q_startrevolution'}, {'npc': 'grid', 'text': 'Мы уничтожим Сида.'}, {'event': 'give_exp', 'value': 5000}, {'event': 'join_team', 'npc': 8}, {'event': 'set_flag', 'flag': 'q_waitforalien', 'value': 2}, {'event': 'add_quest', 'quest': 'talks_with_aliens', 'stage': 2}, {'npc': 'craven', 'text': 'Спасибо!'}]}; this[41] = {'theme': 'ЧИП 707', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_getchips') && !(Core.Get()).game.hasQuestItem(8); }, 'msg': [{'npc': 'grid', 'text': 'Мне нужен чип 707. Что-нибудь знаешь?'}, {'npc': 'clod', 'text': 'Конечно, вот. Бери. У нас тут много их, а девать некуда.'}, {'event': 'give_quest_item', 'item': 8}, {'event': 'give_exp', 'value': 1000}, {'npc': 'grid', 'text': 'Спасибо.'}]}; this[42] = {'theme': 'ОТКУДА ВЫ ВЗЯЛИСЬ?!', 'condition': function () { return !(Core.Get()).game.isFlag('q_integra_talk_clod'); }, 'msg': [{'npc': 'grid', 'text': 'Я какое-то время назад был в этом городе... Здесь не было ни одного человека! В чем тут дело?'}, {'event': 'give_exp', 'value': 500}, {'event': 'set_flag', 'flag': 'q_integra_talk_clod'}, {'npc': 'clod', 'text': 'Мы гостили у пришельцев на их тарелке. Готовят у них не очень хорошо, да и с нашим языком у них проблемы... но в целом довольно приятные люди. Только пришельцы.'}]}; this[43] = {'theme': 'ПОРТАЛ В БАЗУ ПРИШЕЛЬЦЕВ', 'condition': function () { return 0 < (Core.Get()).game.getFlag('q_waitforalien'); }, 'msg': [{'npc': 'grid', 'text': 'Мне нужно попасть на базу пришельцев. Меня прислал сэр ЭФ.'}, {'npc': 'clod', 'text': 'Ок!'}, {'event': 'move_to_area', 'area': 'alienbase'}]}; this[44] = {'theme': 'ОТКУДА ВЫ ВЗЯЛИСЬ?!', 'condition': function () { return !(Core.Get()).game.isFlag('q_integra_talk_jake'); }, 'msg': [{'npc': 'grid', 'text': 'Я какое-то время назад был в этом городе... Здесь не было ни одного человека! В чем тут дело?'}, {'npc': 'jake', 'text': 'Та нас пришельцы похитили. Интегра – город математиков и строителей. Они учили нас, как оптимизировать технологии, чтобы увеличить производительность.'}, {'npc': 'jake', 'text': 'Правда, в мое отсутствие кто-то спер у меня €50. Обидно!'}, {'event': 'give_exp', 'value': 500}, {'event': 'set_flag', 'flag': 'q_integra_talk_jake'}, {'npc': 'grid', 'text': 'Понятия не имею, кто это мог быть.'}]}; this[45] = {'theme': 'ТОРГОВЛЯ', 'msg': [{'event': 'trade', 'npc': 'jake'}]}; this[46] = {'theme': 'ОТКУДА ВЫ ВЗЯЛИСЬ?!', 'condition': function () { return !(Core.Get()).game.isFlag('q_integra_talk_alexa'); }, 'msg': [{'npc': 'grid', 'text': 'Я какое-то время назад был в этом городе... Здесь не было ни одного человека! В чем тут дело?'}, {'event': 'give_exp', 'value': 500}, {'event': 'set_flag', 'flag': 'q_integra_talk_alexa'}, {'npc': 'alexa', 'text': 'Нас тут немного похитили пришельцы. Честно скажу, их кинематограф не на уровне, но все равно спасибо, что развлекали нас.'}]}; this[47] = {'theme': 'ОТКУДА ВЫ ВЗЯЛИСЬ?!', 'condition': function () { return !(Core.Get()).game.isFlag('q_integra_talk_lindwid'); }, 'msg': [{'npc': 'grid', 'text': 'Я какое-то время назад был в этом городе... Здесь не было ни одного человека! В чем тут дело?'}, {'event': 'give_exp', 'value': 500}, {'event': 'set_flag', 'flag': 'q_integra_talk_lindwid'}, {'npc': 'lindwid', 'text': 'Да я почти и не заметила. Я когда занимаюсь проектированием, вообще ничего не замечаю вокруг. Но говорят, нас похищали пришельцы. Возможно, это один из них помог мне с проектом альфатауэр. Но я не смотрела, кто.'}]}; this[48] = {'theme': 'ЧЕМ ТЫ ЗАНИМАЕШЬСЯ?', 'msg': [{'npc': 'grid', 'text': 'Это чем же ты занята таким?'}, {'npc': 'lindwid', 'text': 'Я проектирую здания, мосты, все, что угодно. Я архитектор высшего уровня Линдвид Беластр.'}]}; this[49] = {'theme': 'МЕТА-ВОИНЫ', 'condition': function () { return !(Core.Get()).game.isFlag('q_meta_intro'); }, 'msg': [{'event': 'set_flag', 'flag': 'q_integra_people'}, {'npc': 'micrasm', 'text': 'Добро пожаловать, жалкие людишки.'}, {'npc': 'vladimir', 'text': 'Мик, хватит пафоса. Зачем вы опять поймали странников?'}, {'npc': 'micrasm', 'text': 'Приказ Лидера. Они выглядели подозрительно... к тому же, воровали деньги.'}, {'event': 'set_flag', 'flag': 'q_meta_intro', 'value': 1}, {'npc': 'katenka', 'text': 'Вот видишь! Я же говорила, нехорошо это!'}]}; this[50] = {'theme': 'МЕТА-ВОИНЫ', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_meta_intro'); }, 'msg': [{'npc': 'leena', 'text': 'Здравствуйте.'}, {'npc': 'grid', 'text': 'Кто же эта милая маленькая девочка в больших очках и майке с черепом?'}, {'npc': 'micrasm', 'text': 'Ничтожества! Как смеете вы столь приземлено отзываться о нашем лидере!'}, {'npc': 'leena', 'text': 'Все в порядке, Мик. Они не сказали ничего обидного, просто озвучили некоторые очевидные всем факты. Нельзя их винить в их глупости.'}, {'npc': 'micrasm', 'text': 'Простите, Лидер!'}, {'npc': 'leena', 'text': 'Официальное приветствие: я - Лина Бреннис, моя должность - лидер неформальной военизированной организации известной как «Мета-Воины». Предоставьте мне личную информацию.'}, {'npc': 'katenka', 'text': 'Чего?..'}, {'npc': 'grid', 'text': 'Меня зовут Грид Вэйк, со мной Кей Макфилд и Екатерина Атревис. Мы наемные воины.'}, {'npc': 'leena', 'text': 'Информация принята. Хотите ли вы, чтобы вас называли полным именем и фамилией, либо только именем?'}, {'npc': 'grid', 'text': 'Называй меня «крошка», детка.'}, {'npc': 'leena', 'text': 'Грид Вэйк теперь известен как крошка-детка. Крошка-детка, цель вашего пребывания в городе Интегра?'}, {'npc': 'katenka', 'text': 'Что с ней такое?'}, {'npc': 'micrasm', 'text': 'Говори с почтением! Лидер, когда училась в школе, имплантировала себе в мозг несколько нанопроцессоров.'}, {'npc': 'grid', 'text': 'Так вот, про цели. Мы обнаружили, что город Интегра пуст. Это не могло не привлечь нас.'}, {'npc': 'leena', 'text': 'Значит, вы - мародеры?'}, {'npc': 'grid', 'text': 'Да нет же! Мы что-то воде частных сыщиков.'}, {'npc': 'leena', 'text': 'Из вашего поведения следует, что вы врете. Но меня это сейчас не должно волновать. Нам нужны руки...'}, {'npc': 'grid', 'text': 'Э, не, свои не отдам!'}, {'npc': 'leena', 'text': 'Уточнение: нам нужны люди, умеющие работать руками с оружием. Я сделаю вам предложение, от которого вы не сможете отказаться. Буквально.'}, {'npc': 'leena', 'text': 'Стоит заметить, что к вашим ногам привязан датчик движения. При попытке снять датчик или покинуть зону его действия, он взорвется. Поэтому строю предположение, что вы ужасно желаете помочь нашему делу.'}, {'npc': 'grid', 'text': 'Да, ты умеешь мотивировать!'}, {'event': 'set_flag', 'flag': 'q_meta_intro', 'value': 2}, {'event': 'set_flag', 'flag': 'v_gotooasis', 'value': 1}, {'event': 'limit_map', 'tl_x': 1140, 'tl_y': 0, 'br_x': 2400, 'br_y': 600}, {'npc': 'leena', 'text': 'Как будете готовы выполнить задание, сообщите мне.'}]}; this[51] = {'theme': 'СИД', 'condition': function () { return 2 == (Core.Get()).game.getFlag('q_waitforalien') && !(Core.Get()).game.getFlag('battle_cid'); }, 'msg': [{'npc': 'grid', 'text': 'Это ты – Сид?!'}, {'npc': 'cid', 'text': 'Этот идентификатор характерен для меня. Ваше дело ко мне?'}, {'npc': 'grid', 'text': 'Я пришел мстить за Лину!'}, {'npc': 'cid', 'text': 'Неверная фраза. Верный вариант: «Я пришел попытаться отомстить за Лину». Также подойдет вариант «Я пришел за верной смертью»...'}, {'event': 'set_flag', 'flag': 'q_afterbattle_cid'}, {'event': 'set_flag', 'flag': 'battle_cid'}, {'event': 'battle', 'band': 'cid'}]}; this[52] = {'theme': 'ПРИШЕЛЬЦЫ', 'condition': function () { return (Core.Get()).game.isFlag('q_afterbattle_cid'); }, 'msg': [{'npc': 'craven', 'text': 'Спасибо, Грид... ты помог мне... но от этого не легче. Мета-Воинов больше нет, Лины нет... я потерял свои цели в жизни.'}, {'npc': 'grid', 'text': 'Пойдем с нами.'}, {'npc': 'craven', 'text': 'Пожалуй, это лучшее, что я могу сделать...'}, {'npc': 'grid', 'text': 'Что это за звук?.. Кажется, это рация пришельцев...'}, {'npc': 'sir_f', 'text': 'Грид, как можно скорее возвращайся на нашу базу. У.В.И.Ф.Ж. обнаружили наше местоположение, и сейчас по всей базе кипит сражение.'}, {'npc': 'grid', 'text': 'Хорошо. Скоро буду.'}, {'event': 'give_exp', 'value': 10000}, {'event': 'set_flag', 'flag': 'q_afterbattle_cid', 'value': 0}, {'event': 'set_flag', 'flag': 'q_waitforalien', 'value': 3}, {'event': 'add_quest', 'quest': 'talks_with_aliens', 'stage': 3}, {'npc': 'grid', 'text': 'Портал находился в городе Интегра...'}]}; this[53] = {'theme': 'О СЕБЕ', 'msg': [{'npc': 'grid', 'text': 'Здравствуйте. Кто же вы, товарищ?'}, {'npc': 'vladimir', 'text': 'Меня зовут Владимир. Я – техник Мета-Воинов. Это должность не из легких, ведь Мета-Воины требуют самых высоких технологий.'}]}; this[54] = {'theme': 'ВЛАДСВИЛЬ', 'condition': function () { return (Core.Get()).game.isFlag('q_vladsville_visited'); }, 'msg': [{'npc': 'grid', 'text': 'Слушай, твое имя Владимир... ты случаем не из Владзвиля?'}, {'npc': 'vladimir', 'text': 'Да, я сбежал оттуда. Мне там не нравится. Все какие-то нетехничные совсем. И опять же, эта жуткая неопределенность с бесконечными Владами...'}, {'npc': 'vladimir', 'text': 'В общем, я решил быть одним Владимиром в большом мире, чем очередным Владом маленькой деревни.'}]}; this[55] = {'theme': 'ТОРГОВЛЯ', 'condition': function () { return (Core.Get()).game.isFlag('v_metafight_ally'); }, 'msg': [{'event': 'trade', 'npc': 'vladimir'}]}; this[56] = {'theme': 'МЕТА-ВОИНЫ', 'msg': [{'npc': 'grid', 'text': 'Расскажи мне о Мета-Воинах.'}, {'npc': 'leena', 'text': 'Неформальная организация Мета-Воины ставит своей целью проведение мировой революции с целью спасти медленно загнивающее от собственного невежества общество и установить «власть умных» вместо «власти удачливых» или «власти сильных».'}, {'npc': 'grid', 'text': 'Ничего так себе цели.'}, {'npc': 'leena', 'text': 'Мы также активно поддерживаем модификацию человеческих тел сверхточными технологиями. Только когда человеческие эмоции контролируются кибер-чипами, человек сможет действительно чего-то добиться.'}]}; this[57] = {'theme': 'ЗАДАНИЕ', 'condition': function () { return (Core.Get()).game.isFlag('v_gotooasis'); }, 'msg': [{'npc': 'grid', 'text': 'Ну что там за задание? А то эти ваши датчики меня нервируют.'}, {'npc': 'leena', 'text': 'На северо-востоке от города есть Оазис. Это важная стратегическая точка для Мета-Воинов. Так что отправляйтесь туда с Крейвеном с дипломатической миссией.'}, {'npc': 'grid', 'text': 'Крейвен – это еще кто?'}, {'npc': 'craven', 'text': 'Крейвен – это еще я.'}, {'npc': 'grid', 'text': 'Ах вот оно что. Летун.'}, {'npc': 'leena', 'text': 'Крейвен модифицирован кибер-крыльями. Это дает ему преимущество в бою.'}, {'event': 'join_team', 'npc': 8}, {'event': 'set_flag', 'flag': 'v_gotooasis', 'value': 0}, {'event': 'set_flag', 'flag': 'q_oasispeace', 'value': 1}, {'event': 'add_quest', 'quest': 'meta_oasis', 'stage': 0}, {'npc': 'grid', 'text': 'Что ж, Крейвен, пойдем в этот Оазис.'}]}; this[58] = {'theme': 'ОАЗИС', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_oasispeace'); }, 'msg': [{'npc': 'leena', 'text': 'Готово?'}, {'npc': 'grid', 'text': 'Нет!'}, {'npc': 'leena', 'text': 'Причина?'}, {'npc': 'grid', 'text': 'Я забыл, что надо сделать.'}, {'npc': 'leena', 'text': 'Отправляйся в Оазис и убеди их сотрудничать с Мета-Воинами.'}, {'npc': 'grid', 'text': 'Точно! Спасибо.'}]}; this[59] = {'theme': 'ОАЗИС - ВЫПОЛНЕНО', 'condition': function () { return 2 == (Core.Get()).game.getFlag('q_oasispeace'); }, 'msg': [{'npc': 'leena', 'text': 'Готово?'}, {'npc': 'craven', 'text': 'Да. Мы заключили союз в обмен на установку им Интернет-вышки и дополнительной подачи воды из Конского моря.'}, {'event': 'complete_quest', 'quest': 'meta_oasis'}, {'event': 'give_exp', 'value': 1000}, {'event': 'set_flag', 'flag': 'q_oasispeace', 'value': 3}, {'npc': 'leena', 'text': 'Информация положительная. Крошка-детка, твое следующее задание...'}, {'npc': 'grid', 'text': 'Стоп! Какое задание?! Мы же уже выполнили одно! Отпусти нас!'}, {'npc': 'leena', 'text': 'Это невозможно. Нам все еще нужна помощь, а у вас на ногах все еще находятся датчики. Я думаю, это вполне убедительно. И, как факт, неоспоримо.'}, {'npc': 'grid', 'text': 'Сильные диктуют власть... не против этого ли ваше движение?..'}, {'npc': 'leena', 'text': 'Клин клином вышибают, - народная поговорка.'}, {'npc': 'grid', 'text': 'Что там за задание?'}, {'npc': 'leena', 'text': 'В союзной Мета-Воинам деревушке Раймонд что-то случилось. Мы крайне дорожим ими, поскольку Раймонд – место жительства умнейших ученых этой страны. Отправляйтесь туда, выясните, в чем дело, и помогите им.'}, {'event': 'set_flag', 'flag': 'q_raymondehelp', 'value': 1}, {'event': 'add_quest', 'quest': 'meta_raimonde', 'stage': 0}, {'npc': 'grid', 'text': 'Ясно...'}]}; this[60] = {'theme': 'РАЙМОНД ВИЛЬ', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_raymondehelp'); }, 'msg': [{'npc': 'leena', 'text': 'Готово?'}, {'npc': 'grid', 'text': 'Нет!'}, {'npc': 'leena', 'text': 'Причина?'}, {'npc': 'grid', 'text': 'Я забыл, что надо сделать.'}, {'npc': 'leena', 'text': 'Отправляйся в деревню Раймонд, выясни, с чем им нужно помочь и помоги им.'}, {'npc': 'grid', 'text': 'Точно! Спасибо.'}]}; this[61] = {'theme': 'РАЙМОНД ВИЛЬ - ВЫПОЛНЕНО', 'condition': function () { return 2 == (Core.Get()).game.getFlag('q_raymondehelp'); }, 'msg': [{'npc': 'leena', 'text': 'Крейвен уже рассказал мне, что вы успешно выполнили задание.'}, {'event': 'set_flag', 'flag': 'q_raymondehelp', 'value': 3}, {'event': 'give_exp', 'value': 5000}, {'event': 'complete_quest', 'quest': 'meta_raimonde'}, {'npc': 'grid', 'text': 'Да. Поэтому отпусти нас.'}, {'npc': 'leena', 'text': 'Не хочется... но ладно. Нежелательно все время эксплуатировать простых людей, пусть даже и в целях нового мирового порядка.'}, {'npc': '', 'text': 'Датчики с детонаторами были сняты!'}, {'npc': 'grid', 'text': 'Вот так мне нравится намного больше!'}, {'npc': 'leena', 'text': 'Ну, если вдруг захотите помочь нам устроить новый мировой порядок, то это сотрудничество будет воспринято нами положительно.'}, {'event': 'unlimit_map'}, {'npc': 'grid', 'text': 'Так... а нам, кажется, надо вернуться к Натану.'}]}; this[62] = {'theme': 'ПРОДОЛЖИТЬ СОТРУДНИЧЕСТВО', 'condition': function () { return 3 == (Core.Get()).game.getFlag('q_raymondehelp') && !(Core.Get()).game.isFlag('q_metatechnicans'); }, 'msg': [{'npc': 'leena', 'text': 'Я понимаю по вашему взгляду, что вы прониклись нашей идеологией и желаете продолжить сотрудничество с нами? Мы в свою очередь оплатим ваш труд согласно трудовому договору.'}, {'npc': 'grid', 'text': 'Чем я могу помочь?'}, {'npc': 'leena', 'text': 'Отлично. Тогда возвращайтесь в деревню Раймонд и поговорите с Карлом Вакуолем и Смитом Бекордом. Они ведут подготовку к нашему восстанию.'}, {'event': 'set_flag', 'flag': 'q_metatechnicans'}, {'event': 'set_flag', 'flag': 'v_metafight_ally'}, {'event': 'add_quest', 'quest': 'meta_uprise', 'stage': 0}, {'event': 'give_exp', 'value': 1500}, {'event': 'join_team', 'npc': 8}, {'npc': 'craven', 'text': 'Я пойду с вами.'}]}; this[63] = {'theme': 'ПОМОЩЬ ВАКУОЛЮ И БЕККОРДУ', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_metatechnicans') && (2 > (Core.Get()).game.getFlag('q_get3parts') || 2 > (Core.Get()).game.getFlag('q_getchips')); }, 'msg': [{'npc': 'leena', 'text': 'Вы помогли Беккорду и Вакуолю подготовить восстание?'}, {'npc': 'grid', 'text': 'Пока еще нет.'}]}; this[64] = {'theme': 'ПОМОЩЬ ВАКУОЛЮ И БЕККОРДУ - ВЫПОЛНЕНО', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_metatechnicans') && 2 == (Core.Get()).game.getFlag('q_get3parts') && 2 == (Core.Get()).game.getFlag('q_getchips'); }, 'msg': [{'npc': 'grid', 'text': 'Беккорд и Вакуоль готовы к восстанию.'}, {'event': 'give_exp', 'value': 7000}, {'event': 'give_money', 'value': 25000}, {'event': 'add_quest', 'quest': 'meta_uprise', 'stage': 1}, {'event': 'set_flag', 'flag': 'q_metatechnicans', 'value': 2}, {'npc': 'leena', 'text': 'Отлично. Вот ваша награда.'}, {'npc': 'leena', 'text': 'Когда будешь готов, Грид, я расскажу тебе следующее задание.'}]}; this[65] = {'theme': 'ПЕРЕГОВОРЫ С КАЛИПСО', 'condition': function () { return 2 == (Core.Get()).game.getFlag('q_metatechnicans') && !(Core.Get()).game.isFlag('q_allycalipso'); }, 'msg': [{'npc': 'grid', 'text': 'Я готов. Что за следующее задание?'}, {'npc': 'leena', 'text': 'Крошка-детка. Знаешь ли ты город мертвых, Калипсо? Это место, где обитают жертвы военного эксперимента по получению бессмертного человека.'}, {'npc': 'leena', 'text': 'Потребность: заключить с ними союз, чтобы мы получили важного союзника в нашем восстании. Мне не известно, как ты это сделаешь, мне важен результат.'}, {'event': 'set_flag', 'flag': 'q_allycalipso', 'value': 1}, {'event': 'add_quest', 'quest': 'meta_uprise', 'stage': 2}, {'npc': 'grid', 'text': 'Да, Лина, ты умеешь мотивировать людей...'}]}; this[66] = {'theme': 'УСЛОВИЯ КАЛИПСО', 'condition': function () { return 2 == (Core.Get()).game.getFlag('q_allycalipso'); }, 'msg': [{'npc': 'leena', 'text': 'Калипсо предоставил нам свои кадры?'}, {'npc': 'grid', 'text': 'Не совсем. Они отказываются помогать, пока им не вернут «человеческое тело». Так что я умываю руки...'}, {'npc': 'leena', 'text': 'Не логично. Вернуть им тело – теоретически возможно.'}, {'npc': 'grid', 'text': 'Да?..'}, {'npc': 'leena', 'text': 'Кажется, Михаэль из деревни Раймонд Вилль занимался подобными исследования.'}, {'event': 'set_flag', 'flag': 'q_allycalipso', 'value': 3}, {'event': 'give_exp', 'value': 1500}, {'event': 'add_quest', 'quest': 'meta_uprise', 'stage': 4}, {'npc': 'grid', 'text': 'Понятно. Пойду пообщаюсь с ним...'}]}; this[67] = {'theme': 'ПЕРЕГОВОРЫ С КАЛИПСО – ВЫПОЛНЕНО', 'condition': function () { return 5 == (Core.Get()).game.getFlag('q_allycalipso'); }, 'msg': [{'npc': 'grid', 'text': 'Я заключил союз с городом Калипсо. Они помогут вам в восстании.'}, {'event': 'give_exp', 'value': 10000}, {'event': 'give_money', 'value': 50000}, {'event': 'set_flag', 'flag': 'q_allycalipso', 'value': 6}, {'event': 'add_quest', 'quest': 'meta_uprise', 'stage': 7}, {'npc': 'leena', 'text': 'Отличные новости, крошка-детка! Возвращайся, когда будешь готов для следующего задания. Вот твоя награда.'}]}; this[68] = {'theme': 'ИНВЕСТИЦИИ', 'condition': function () { return !(Core.Get()).game.isFlag('q_getinvestor') && 6 == (Core.Get()).game.getFlag('q_allycalipso'); }, 'msg': [{'event': 'set_flag', 'flag': 'q_getinvestor', 'value': 1}, {'npc': 'leena', 'text': 'Плохие новости. Расходы на массовое производство имплантантов, создание вечного двигателя и исследования мертвых воинов Калипсо превышают ожидаемый порог, а доходы с вооруженных нападений сократились...'}, {'npc': 'grid', 'text': 'Революция отменяется из-за нерентабельности?'}, {'npc': 'leena', 'text': 'Не верно. Революции нужен инвестор.'}, {'npc': 'grid', 'text': 'Даже так?'}, {'npc': 'leena', 'text': 'Крошка-детка, отправляйся в город богачей Кастедо и заручись там поддержкой одного из меценатов на свое усмотрение. Меня интересуют только деньги.'}, {'event': 'add_quest', 'quest': 'meta_uprise', 'stage': 8}, {'npc': 'grid', 'text': 'Алчная вы, Лина!'}, {'npc': 'leena', 'text': 'Юмор: понят и оценен. Оценка: 3 балла.'}]}; this[69] = {'theme': 'ИНВЕСТИЦИИ', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_getinvestor'); }, 'msg': [{'npc': 'leena', 'text': 'Следует напомнить, что ты должен отправляться в город Кастедо и найти там мецената, который совершит инвестирование в дело революции.'}, {'npc': 'grid', 'text': 'Я помню это!'}, {'npc': 'leena', 'text': 'Тогда почему не делаешь?'}, {'npc': 'grid', 'text': 'Хороший вопрос! Ушел делать.'}]}; this[70] = {'theme': 'ИНВЕСТИЦИИ - ВЫПОЛНЕНО', 'condition': function () { return 2 == (Core.Get()).game.getFlag('q_getinvestor'); }, 'msg': [{'npc': 'grid', 'text': 'Я нашел революции спонсора.'}, {'npc': 'leena', 'text': 'Это хорошая новость. Мой восторг – 85% из 100.'}, {'npc': 'leena', 'text': 'Рассчитана награда за ваши услуги. Распишитесь в получении.'}, {'event': 'give_exp', 'value': 10000}, {'event': 'give_money', 'value': 100000}, {'event': 'set_flag', 'flag': 'q_getinvestor', 'value': 3}, {'event': 'add_quest', 'quest': 'meta_uprise', 'stage': 10}, {'npc': 'leena', 'text': 'Крошка-детка. Ты очень помог нам. У нас все готово для начала восстания. Как следует подумай, хочешь ли ты продолжать помогать нам. Назад дороги уже не будет.'}]}; this[71] = {'theme': 'НАЧАЛО ВОССТАНИЯ', 'condition': function () { return 3 == (Core.Get()).game.getFlag('q_getinvestor') && !(Core.Get()).game.isFlag('q_startrevolution'); }, 'msg': [{'event': 'set_flag', 'flag': 'q_startrevolution', 'value': 1}, {'npc': 'leena', 'text': 'Итак, крошка-детка, ты все же решил быть с нами до конца. Я очень ценю это. Потому что ты – ценная находка для Мета-Воинов.'}, {'npc': 'leena', 'text': 'Помни, ступив на эту тропу, тебя будут ненавидеть. Вероятно, за тобой начнется охота, ведь я назначу тебя генералом.'}, {'npc': 'leena', 'text': 'Твое следующее задание – разгромить военную базу. Вместе с тобой на базу нападут войска, которые уже выдвинулись к ней. Твоя же задача – вынести командующего базы – Гарна Стаковича и его отряд.'}, {'event': 'add_quest', 'quest': 'meta_uprise', 'stage': 11}, {'npc': 'grid', 'text': 'Ты как-то по-другому заговорила.'}, {'event': 'set_flag', 'flag': 'btl_celester'}, {'npc': 'leena', 'text': 'Включен режим эмуляции командира из компьютерной игры «Управляй и Захватывай». Удачи, генерал!'}]}; this[72] = {'theme': 'УНИЧТОЖЕНИЕ ВОЕННОЙ БАЗЫ', 'condition': function () { return 2 == (Core.Get()).game.getFlag('q_startrevolution'); }, 'msg': [{'event': 'give_exp', 'value': 15000}, {'event': 'give_money', 'value': 50000}, {'event': 'set_flag', 'flag': 'q_startrevolution', 'value': 3}, {'npc': 'leena', 'text': 'Разведка уже доложила о вашем успехе, генерал.'}, {'npc': 'leena', 'text': 'Пока вы занимались одним из опаснейших командующих армией, да еще и вкупе с лучшим снайпером – Селестером, наши войска захватили военную базу.'}, {'npc': 'grid', 'text': 'Круто!'}, {'npc': 'leena', 'text': 'После этого многие города, не желавшие сотрудничать с нами ранее, перешли на нашу сторону, увидев, как легко мы разобрались с армией.'}, {'npc': 'leena', 'text': 'Однако это еще не конец. Нужно захватить главный оплот правительства – столицу Дарк, - и свергнуть президента Мист.'}, {'npc': 'leena', 'text': 'Генерал, вы поведете наши войска и уничтожите главу правительства. Мы верим в вас.'}, {'event': 'add_quest', 'quest': 'meta_uprise', 'stage': 13}, {'npc': 'leena', 'text': 'Удачи.'}]}; this[73] = {'theme': 'О ЛИНЕ', 'msg': [{'npc': 'grid', 'text': 'А кто эта Лина?'}, {'npc': 'craven', 'text': 'Лина – это лидер Мета-Воинов, девочка невероятного ума, установившая себе в голову микропроцессоры еще будучи в средней школе.'}, {'npc': 'grid', 'text': 'Всегда считал, что молодежь забивает голову всякой ерундой.'}]}; this[74] = {'theme': 'О СЕБЕ', 'msg': [{'npc': 'grid', 'text': 'Ты почему с крыльями?'}, {'npc': 'craven', 'text': 'Ну вот захотелось.'}, {'npc': 'grid', 'text': 'Как они крепятся?'}, {'npc': 'craven', 'text': 'Это кибер-имплантанты. Мета-Воины считают, что человек рождается несовершенным, поэтому надо доработать его посредством высоких технологий.'}, {'npc': 'craven', 'text': 'Для меня крылья – это не только удобство и превосходство над врагом, но еще и символ свободы.'}]}; }; _global.TalkData = v1; _global.TalkData extends TalkData2; var v2 = v1.prototype; ASSetPropFlags(_global.TalkData.prototype, null, 1); } #endinitclip } movieClip 1951 __Packages.TalkData4En { #initclip if (!_global.TalkData4En) { var v1 = function () { super(); this[227] = {'theme': 'ABOUT YOURSELF', 'msg': [{'npc': 'grid', 'text': 'Who\'re you?'}, {'npc': 'curt', 'text': 'The name\'s Curt, what business of yours is it?'}, {'npc': 'grid', 'text': 'None, I guess. Just asking.'}, {'npc': 'curt', 'text': 'Well you shouldn\'t.'}, {'npc': 'grid', 'text': 'My name\'s Grid.'}, {'event': 'set_flag', 'flag': 'curt_join'}, {'npc': 'curt', 'text': 'Like I care.'}]}; this[228] = {'theme': 'RECRUIT', 'condition': function () { return 2 <= (Core.Get()).game.getFlag('q_bigalienplan') && (Core.Get()).game.isFlag('curt_join'); }, 'msg': [{'npc': 'grid', 'text': 'Hey, Curt, wanna join our group? We just have fun and kill for money.'}, {'npc': 'curt', 'text': 'Whatever... maybe... I\'ll tell you what - pay my debt to the bank and I\'ll join you. I owe 1000$.'}, {'event': 'set_flag', 'flag': 'v_paycurtdebt', 'value': 1}, {'npc': 'grid', 'text': 'I see.'}]}; this[229] = {'theme': 'PAY CURT\'S DEBT', 'condition': function () { return 1 == (Core.Get()).game.getFlag('v_paycurtdebt') && (Core.Get()).game.money < 1000; }, 'msg': [{'npc': 'grid', 'text': 'Here, take it.'}, {'npc': 'curt', 'text': 'Buddy, are you crazy? That\'s just your empty hand. You don\'t have the money, do you?'}, {'npc': 'grid', 'text': 'Oh, I guess not...'}]}; this[230] = {'theme': 'PAY CURT\'S DEBT', 'condition': function () { return 1 == (Core.Get()).game.getFlag('v_paycurtdebt') && (Core.Get()).game.money >= 1000; }, 'msg': [{'npc': 'grid', 'text': 'Here, take it.'}, {'npc': 'curt', 'text': 'Cool! Don\'t bother asking why I owe this to the bank!'}, {'event': 'set_flag', 'flag': 5000}, {'event': 'join_team', 'npc': 4}, {'npc': 'curt', 'text': 'Well, okay!'}]}; this[231] = {'theme': 'ABOUT YOURSELF', 'msg': [{'npc': 'grid', 'text': 'And you would be..?'}, {'npc': 'georg', 'text': 'I\'m Georg, the head of this city.'}]}; this[232] = {'theme': 'GIBSON CITY', 'msg': [{'npc': 'grid', 'text': 'Tell me \'bout Gibson City.'}, {'npc': 'georg', 'text': 'Gibson City has a rich history. Long ago, a great rock festival took place on these plains. It was named the Firestock Festival.'}, {'npc': 'georg', 'text': 'Not all the guests left after the festival. Some stayed behind and started to build a small settlement. It later grew into a town.'}, {'npc': 'georg', 'text': 'And time passed...'}, {'npc': 'georg', 'text': 'There are only a few left who remember the musical history of their home.'}, {'npc': 'grid', 'text': 'Could it be that you\'re a musician yourself?'}, {'npc': 'georg', 'text': 'Ha-ha-ha. No, my friend, though I used to be. Now I\'m just the useless old man with the keys to the city gates.'}]}; this[233] = {'theme': 'HELP THE CITY', 'condition': function () { return !(Core.Get()).game.isFlag('q_gibsonquest'); }, 'msg': [{'npc': 'georg', 'text': 'Young man! How would you like to help our city? You\'ll be well rewarded.'}, {'npc': 'grid', 'text': 'I may do. What kind of help do you need?'}, {'event': 'set_flag', 'flag': 'q_gibsonquest', 'value': 1}, {'event': 'add_quest', 'quest': 'raiding_raiders', 'stage': 0}, {'npc': 'georg', 'text': 'Loads of raiders have recently settled in near the town. They attack everyone, coming or going. Kill at least 20 of them and I\'ll reward you handsomely.'}]}; this[234] = {'theme': 'HELP THE CITY - DONE', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_gibsonquest') && 20 <= (Core.Get()).game.getFlag('kills_raiders_georg'); }, 'msg': [{'npc': 'grid', 'text': 'I\'ve dealt with those raiders for you.'}, {'event': 'give_exp', 'value': 7000}, {'event': 'give_money', 'value': 25000}, {'event': 'set_flag', 'flag': 'q_gibsonquest', 'value': 2}, {'event': 'complete_quest', 'quest': 'raiding_raiders'}, {'npc': 'georg', 'text': 'Great! We\'re holding a foreign fair and everyone\'s made it here safely. You did well.'}]}; this[235] = {'theme': 'HELP THE CITY 2', 'condition': function () { return 2 == (Core.Get()).game.getFlag('q_gibsonquest'); }, 'msg': [{'npc': 'grid', 'text': 'Is the city safe now?'}, {'npc': 'georg', 'text': 'I\'m afraid not...'}, {'npc': 'georg', 'text': 'There\'s a new threat! Now we\'ve dealt with the raiders, mutants have taken their place. Could you please kill them as well? At least 25 mutants. You\'ll be well rewarded.'}, {'event': 'set_flag', 'flag': 'q_gibsonquest', 'value': 3}, {'event': 'add_quest', 'quest': 'raiding_mutants', 'stage': 0}, {'npc': 'grid', 'text': 'I\'ll sort them out, don\'t worry.'}]}; this[236] = {'theme': 'HELP THE CITY 2 - DONE', 'condition': function () { return 3 == (Core.Get()).game.getFlag('q_gibsonquest') && 25 <= (Core.Get()).game.getFlag('kills_mutants_georg'); }, 'msg': [{'npc': 'grid', 'text': 'I\'ve slain the mutants.'}, {'event': 'give_exp', 'value': 15000}, {'event': 'give_money', 'value': 60000}, {'event': 'give_item', 'item': 30}, {'event': 'set_flag', 'flag': 'q_gibsonquest', 'value': 4}, {'event': 'complete_quest', 'quest': 'raiding_mutants'}, {'npc': 'georg', 'text': 'Great! Than you so much, you\'ve helped our city a lot!.'}]}; this[237] = {'theme': 'ABOUT YOURSELF', 'msg': [{'npc': 'grid', 'text': 'And who are you?'}, {'npc': 'key', 'text': 'I\'ll tell you who this man is! He\'s a perverted, good-for-nothing, loiterer busy wasting his life!', 'condition': function () { return (Core.Get()).game.isInTeam(1); }}, {'npc': 'john', 'text': 'Well, I see it a little differently...', 'condition': function () { return (Core.Get()).game.isInTeam(1); }}, {'npc': 'key', 'text': 'And I see the truth! I met him during my mission in Gibson City.', 'condition': function () { return (Core.Get()).game.isInTeam(1); }}, {'npc': 'john', 'text': 'My name\'s John. I love meeting the girls and listening to Elvis Presley. You\'d be hard pressed to find a cooler man than me. Check out my blue suede shoes!', 'condition': function () { return !(Core.Get()).game.isInTeam(1); }}]}; this[238] = {'theme': 'LOVE HUNTER', 'condition': function () { return !(Core.Get()).game.getFlag('q_lovehunter'); }, 'msg': [{'npc': 'john', 'text': 'Listen, could you help me out? I\'ve got no money but I do have lots of useful stuff. You\'ll like it!'}, {'npc': 'grid', 'text': 'What\'s the matter?'}, {'npc': 'john', 'text': 'This girl Biby... she\'s a model, an actress and a singer. I want her to love me.'}, {'npc': 'grid', 'text': 'Love potions only exist in fairytales.'}, {'npc': 'john', 'text': 'Yes. But the love chip is a reality! Smith Becord from Raymond Village owes me one for the data I gathered for his research.'}, {'npc': 'john', 'text': 'First take the chip from Becord, then convince Biby to implant it.'}, {'event': 'set_flag', 'flag': 'q_lovehunter', 'value': 1}, {'event': 'add_quest', 'quest': 'love_hunter', 'stage': 0}, {'npc': 'grid', 'text': 'Like I have nothing better to do!..'}]}; this[239] = {'theme': 'LOVE HUNTER - DONE', 'condition': function () { return 2 == (Core.Get()).game.getFlag('q_lovehunter'); }, 'msg': [{'npc': 'grid', 'text': 'I\'ve implanted the chip in Biby for you.'}, {'npc': 'john', 'text': 'Awesome! Here\'s your reward, like I promised.'}, {'event': 'give_exp', 'value': 3500}, {'event': 'give_item', 'item': 54}, {'event': 'give_item', 'item': 113}, {'event': 'complete_quest', 'quest': 'love_hunter'}, {'event': 'set_flag', 'flag': 'q_lovehunter', 'value': 3}, {'npc': 'grid', 'text': 'She\'ll be waiting for you.'}]}; this[240] = {'theme': 'TRADE', 'msg': [{'npc': 'john', 'text': 'I\'ve found some great stuff in the junkyard. Wanna take a look?'}, {'event': 'trade', 'npc': 'john'}]}; this[241] = {'theme': 'CARL VACCUOL', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_raymondehelp') && !(Core.Get()).game.isFlag('raymonde_visit'); }, 'msg': [{'event': 'set_flag', 'flag': 'raymonde_visit'}, {'npc': 'craven', 'text': 'Here it is, Raymonde Village. But I don\'t see my friend Carl anywhere...'}, {'npc': 'grid', 'text': 'Is something wrong with him?'}, {'npc': 'smith', 'text': 'Correct, dude. Carl\'s disappeared right out of his mansion. We\'ve no idea what the hell is going on.'}, {'npc': 'craven', 'text': 'Grid, this is the gifted cybernetic scientist of Raymonde, Smith Becord.'}, {'npc': 'grid', 'text': 'He doesn\'t talk like a scientist.'}, {'npc': 'smith', 'text': 'Shut the hell up. I\'m damn good.'}, {'npc': 'craven', 'text': 'That\'s true.'}, {'event': 'add_quest', 'quest': 'meta_raimonde', 'stage': 1}, {'npc': 'grid', 'text': 'Okay, let\'s try to find some clues.'}]}; this[242] = {'theme': 'CARL VACCUOL', 'condition': function () { return !(Core.Get()).game.getFlag('q_gotosummerg'); }, 'msg': [{'npc': 'craven', 'text': 'This is Carl\'s house.'}, {'npc': 'grid', 'text': 'Let\'s search for clues.'}, {'npc': '', 'text': '...'}, {'event': 'give_exp', 'value': 1500}, {'event': 'give_quest_item', 'item': 22}, {'event': 'give_quest_item', 'item': 23, 'count': 5}, {'event': 'set_flag', 'flag': 'q_gotosummerg', 'value': 1}, {'npc': 'grid', 'text': 'Interesting...'}]}; this[243] = {'theme': 'TEMPORAL TV', 'condition': function () { return 2 == (Core.Get()).game.getFlag('q_bigalienplan') && !(Core.Get()).game.hasQuestItem(0); }, 'msg': [{'npc': 'grid', 'text': 'Nathan said I could use your temporal TV...'}, {'npc': 'carl', 'text': 'No, you can\'t!'}, {'npc': 'grid', 'text': 'Why not?'}, {'npc': 'carl', 'text': 'Just because someone says you can use something, doesn\'t mean it\'s so! Someone must explain to you how to use that something. Then you can use the thing. Let me explain it you...'}, {'npc': 'carl', 'text': '...'}, {'npc': 'carl', 'text': '...'}, {'npc': 'carl', 'text': '...'}, {'npc': 'grid', 'text': 'So just set up the date and press the \'Start\' button?'}, {'npc': 'carl', 'text': 'That\'s rather a rude summation of my explanation but, basically, you\'re right. Here\'s your temporal TV, try not to break it.'}, {'event': 'give_quest_item', 'item': 0}, {'npc': 'grid', 'text': 'Now I need to visit the U.F.O. sites...'}]}; this[244] = {'theme': 'SCIENCE', 'msg': [{'npc': 'grid', 'text': 'Tell me about your contribution to science...'}, {'npc': 'carl', 'text': 'Nothing would please me more! Shall I begin?..'}, {'npc': 'grid', 'text': 'Erm... no. I\'ve thought about it and... no.'}]}; this[245] = {'theme': 'PREPARATIONS FOR THE REBELLION', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_metatechnicans') && !(Core.Get()).game.isFlag('q_get3parts'); }, 'msg': [{'npc': 'grid', 'text': 'Greetings, Carl! Long time no see.'}, {'npc': 'carl', 'text': 'What can I do for you?'}, {'npc': 'grid', 'text': 'Lina mentioned that you need my help preparing for the Rebellion.'}, {'npc': 'carl', 'text': 'That\'s right! I\'m creating the infinite engine that\'ll be used by Meta-base, but I lack 3 vital components.'}, {'npc': 'carl', 'text': 'A jade piston, which you can buy on Jade Island, a titan chain BDX, currently sold somewhere in the Paradark Region, and a galvanizator S7 - someone in Kalister or Sirith might have one.'}, {'npc': 'grid', 'text': 'Where am I supposed to get the money for all this stuff? It sounds really expensive!'}, {'npc': 'carl', 'text': 'You can sell your kidneys.'}, {'npc': 'grid', 'text': 'I\'ll pass.'}, {'npc': 'carl', 'text': 'Very well, then take this with you.'}, {'event': 'give_quest_item', 'item': 27}, {'npc': 'carl', 'text': 'You can buy all the components with that credit card.'}, {'npc': 'grid', 'text': 'And what else can I buy using this card?..'}, {'npc': 'carl', 'text': 'Nothing, young man. I\'ll be receiving reports of any activity on that card. The moment you buy something I don\'t need, I\'ll know about it and freeze the service.'}, {'event': 'set_flag', 'flag': 'q_get3parts', 'value': 1}, {'npc': 'grid', 'text': 'I see...'}]}; this[246] = {'theme': 'ASSEMLING INF. ENGINE', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_get3parts') && !((Core.Get()).game.hasQuestItem(24) && (Core.Get()).game.hasQuestItem(25) && (Core.Get()).game.hasQuestItem(26)); }, 'msg': [{'npc': 'carl', 'text': 'I can see it in your eyes - you don\'t have all the necessary components!'}, {'npc': 'carl', 'text': 'I repeat: one jade piston, one titan chain BDX and one galvanizator S7. '}]}; this[247] = {'theme': 'ASSEMLING INF. ENGINE - DONE', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_get3parts') && (Core.Get()).game.hasQuestItem(24) && (Core.Get()).game.hasQuestItem(25) && (Core.Get()).game.hasQuestItem(26); }, 'msg': [{'npc': 'grid', 'text': 'I\'ve collected all the components.'}, {'event': 'remove_quest_item', 'item': 24}, {'event': 'remove_quest_item', 'item': 25}, {'event': 'remove_quest_item', 'item': 26}, {'event': 'remove_quest_item', 'item': 27}, {'event': 'give_exp', 'value': 7000}, {'event': 'set_flag', 'flag': 'q_get3parts', 'value': 2}, {'npc': 'carl', 'text': 'I know, I saw the report on every purchase. Let\'s celebrate! Now I can finally complete my infinity engine. You may tell Lina you\'ve done all I need.'}]}; this[248] = {'theme': 'ALLIANCE WITH CALIPSO', 'condition': function () { return 3 == (Core.Get()).game.getFlag('q_allycalipso'); }, 'msg': [{'npc': 'michael', 'text': 'I hate Carl Vaccuol!'}, {'npc': 'grid', 'text': 'Good for you! But I came to you about a different matter...'}, {'npc': 'michael', 'text': 'Everyone considers him to be a genius and I\'m stuck living in his shadow! How can I prove that I\'m the better scientist?!'}, {'npc': 'grid', 'text': 'I could help you with that problem!'}, {'npc': 'michael', 'text': 'Will you kill Carl?'}, {'npc': 'grid', 'text': 'No, but I know a way you could surpass his reputation.'}, {'npc': 'michael', 'text': 'I\'m listening!'}, {'npc': 'grid', 'text': 'Do you know Calipso, the city of the dead?'}, {'npc': 'michael', 'text': 'Of course.'}, {'npc': 'grid', 'text': 'They want to return to normal human bodies. Only then will they help with the Meta-Warriors\' Rebellion.'}, {'npc': 'grid', 'text': 'If you were able to do that for them, Lina would heap more praise on you than Carl and you\'d have made a revolutionary discovery!'}, {'npc': 'michael', 'text': 'Excellent! I once started this kind of research but had to give it up after the prohibition of graverobbing...'}, {'event': 'give_exp', 'value': 6000}, {'event': 'set_flag', 'flag': 'q_allycalipso', 'value': 4}, {'event': 'add_quest', 'quest': 'meta_uprise', 'stage': 5}, {'npc': 'grid', 'text': 'Than restart your research! You\'ll have the material now. I\'ll go tell Fia about your cooperation.'}]}; this[249] = {'theme': 'ABOUT YOURSELF', 'msg': [{'npc': 'grid', 'text': 'Who\'re you?'}, {'npc': 'michael', 'text': 'My name\'s Mikhael Valotkraft, the greatest scientist ever.'}, {'npc': 'grid', 'text': 'Very impressive.'}]}; this[250] = {'theme': 'WHAT HAPPENED HERE?', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_raymondehelp'); }, 'msg': [{'npc': 'smith', 'text': 'Our most important scientist, Carl Vaccuol, has dissappeared. We have no idea what happened to him.'}, {'npc': 'smith', 'text': 'Check his house, maybe you\'ll find something.'}]}; this[251] = {'theme': 'LOVE HUNTER', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_lovehunter') && !(Core.Get()).game.isFlag('q_getchip'); }, 'msg': [{'npc': 'grid', 'text': 'John, from Gibson City, mentioned that you owe him a chip...'}, {'npc': 'smith', 'text': 'Yeah, I\'ve made it already. Piece of cake. Take it and get out of my sight.'}, {'event': 'give_exp', 'value': 2500}, {'event': 'give_quest_item', 'item': 16}, {'event': 'set_flag', 'flag': 'q_getchip', 'value': 1}, {'event': 'add_quest', 'quest': 'love_hunter', 'stage': 1}, {'npc': 'grid', 'text': 'Wait! How does it work?'}, {'npc': 'smith', 'text': 'It has John\'s image in it. The girl who implants that chip will fall hopelessly in love. Even if she never saw him in reality, he\'d appear in her dreams.'}, {'npc': 'smith', 'text': 'Just a basic emotional attachment model, really.'}]}; this[252] = {'theme': 'PREPARATIONS FOR THE REBELLION', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_metatechnicans') && !(Core.Get()).game.isFlag('q_getchips'); }, 'msg': [{'npc': 'grid', 'text': 'Lina told me to help with your preparations for the Rebellion.'}, {'npc': 'smith', 'text': 'Yeah. I want to invent a new enforcer implant exclusively for Meta-Warriors. I need 3 chips for the prototype: models 404, 101 and 707.'}, {'npc': 'grid', 'text': 'Was that choice just based on how the numbers look?'}, {'npc': 'smith', 'text': 'No, it\'s pure coincidence. Now go!'}, {'npc': 'grid', 'text': 'Wait! Where would I get those? '}, {'event': 'set_flag', 'flag': 'q_getchips', 'value': 1}, {'npc': 'smith', 'text': 'If I knew that I\'d already have them, idiot. Try asking on Jade Island.'}]}; this[253] = {'theme': 'COLLECT THE CHIPS', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_getchips') && !((Core.Get()).game.hasQuestItem(8) && (Core.Get()).game.hasQuestItem(15) && (Core.Get()).game.hasQuestItem(19)); }, 'msg': [{'npc': 'smith', 'text': 'Where are they?'}, {'npc': 'grid', 'text': 'Not here yet...'}]}; this[254] = {'theme': 'COLLECT THE CHIPS', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_getchips') && (Core.Get()).game.hasQuestItem(8) && (Core.Get()).game.hasQuestItem(15) && (Core.Get()).game.hasQuestItem(19); }, 'msg': [{'npc': 'smith', 'text': 'Where are they?'}, {'npc': 'grid', 'text': 'Here.'}, {'event': 'remove_quest_item', 'item': 8}, {'event': 'remove_quest_item', 'item': 15}, {'event': 'remove_quest_item', 'item': 19}, {'event': 'give_exp', 'value': 9000}, {'event': 'set_flag', 'flag': 'q_getchips', 'value': 2}, {'npc': 'smith', 'text': 'Well done! Tell Lina I\'ll soon start mass production.'}]}; this[255] = {'theme': 'PROTOTYPE', 'condition': function () { return 2 == (Core.Get()).game.getFlag('q_getchips') && (Core.Get()).game.isInTeam(8) && !(Core.Get()).game.isFlag('craven_upgrade'); }, 'msg': [{'npc': 'smith', 'text': 'Kraven, wanna try out my prototype enforcer chip?'}, {'npc': 'grid', 'text': 'Bring it on!'}, {'npc': 'smith', 'text': 'This thing can only be implanted in half-cyborgs.'}, {'npc': 'craven', 'text': 'That\'d be me. Let\'s do it!'}, {'event': 'skill_up', 'npc': 8, 'skill': 'vit'}, {'event': 'skill_up', 'npc': 8, 'skill': 'def'}, {'event': 'skill_up', 'npc': 8, 'skill': 'dgr'}, {'event': 'skill_up', 'npc': 8, 'skill': 'tch'}, {'npc': 'craven', 'text': 'Not bad, but I expected something better.'}, {'event': 'set_flag', 'flag': 'craven_upgrade'}, {'npc': 'smith', 'text': 'So ungrateful...'}]}; this[257] = {'theme': 'KARRY', 'condition': function () { return !(Core.Get()).game.getFlag('enc_karry'); }, 'msg': [{'npc': 'karry', 'text': 'Wait! Don\'t shoot! Just listen to me!'}, {'npc': 'key', 'text': 'Don\'t listen to him, it\'s against the rules. Just kill him!', 'condition': function () { return (Core.Get()).game.isInTeam(1); }}, {'npc': 'grid', 'text': 'Wait, calm down.', 'condition': function () { return (Core.Get()).game.isInTeam(1); }}, {'npc': 'grid', 'text': 'So, any last words before I send you to your alien heaven?'}, {'npc': 'karry', 'text': 'Grid. I know you\'ve collected information about our race. I think you\'re less stupid than the other K.A.U.F.O. members and might speak to me.'}, {'npc': 'karry', 'text': 'You\'ve probably noticed that people say we\'re not villains. All we want is to help people but they don\'t understand that.'}, {'npc': 'karry', 'text': 'Do you really believe there\'s no need to communicate with other races? That negotiations are useless?'}, {'npc': 'grid', 'text': 'So you\'ve sought me out, eh?'}, {'event': 'set_flag', 'flag': 'enc_karry'}, {'npc': 'karry', 'text': 'I want you to meet our Emperor, he\'ll explain everything to you.'}, {'event': 'talk', 'npc': 'karry', 'no_bye': true}]}; this[258] = {'theme': 'GO WITH HIM', 'msg': [{'npc': 'key', 'text': 'What?! Grid, you traitor! First speaking to an alien, then taking his side... I despise you!', 'condition': function () { return (Core.Get()).game.isInTeam(1); }}, {'npc': 'key', 'text': 'You\'d better never come back, K.A.U.F.O. won\'t be glad to see you again...', 'condition': function () { return (Core.Get()).game.isInTeam(1); }}, {'event': 'leave_team', 'npc': 1, 'condition': function () { return (Core.Get()).game.isInTeam(1); }}, {'event': 'give_exp', 'value': 15000}, {'event': 'set_flag', 'flag': 'q_kaufo_betrayal'}, {'event': 'add_quest', 'quest': 'talks_with_aliens', 'stage': 0}, {'event': 'leave_team', 'npc': 8, 'condition': function () { return (Core.Get()).game.isInTeam(8); }}, {'event': 'fail_quest', 'quest': 'ufo_visit', 'condition': function () { return (Core.Get()).game.inQuest('ufo_visit'); }}, {'event': 'fail_quest', 'quest': 'natan_plan', 'condition': function () { return (Core.Get()).game.inQuest('natan_plan'); }}, {'event': 'reset_flag', 'flag': 'q_bigalienplan'}, {'event': 'remove_quest_item', 'item': 0, 'condition': function () { return (Core.Get()).game.hasQuestItem(0); }}, {'event': 'remove_quest_item', 'item': 1, 'condition': function () { return (Core.Get()).game.hasQuestItem(1); }}, {'event': 'remove_quest_item', 'item': 2, 'condition': function () { return (Core.Get()).game.hasQuestItem(2); }}, {'event': 'remove_quest_item', 'item': 3, 'condition': function () { return (Core.Get()).game.hasQuestItem(3); }}, {'event': 'remove_quest_item', 'item': 4, 'condition': function () { return (Core.Get()).game.hasQuestItem(4); }}, {'event': 'remove_quest_item', 'item': 5, 'condition': function () { return (Core.Get()).game.hasQuestItem(5); }}, {'event': 'remove_quest_item', 'item': 6, 'condition': function () { return (Core.Get()).game.hasQuestItem(6); }}, {'npc': '', 'text': '...'}, {'event': 'move_to_area', 'area': 'alienbase'}]}; this[259] = {'theme': 'REFUSE TO GO', 'msg': [{'npc': 'grid', 'text': 'Don\'t try your lies on me. Know that you\'ll die at my hands!'}, {'npc': 'karry', 'text': 'That\'s sad... I guess I was wrong about you...'}, {'event': 'give_exp', 'value': 3000}, {'event': 'battle', 'band': 'karry'}]}; this[260] = {'theme': 'FEATHER', 'condition': function () { return !(Core.Get()).game.getFlag('enc_feather'); }, 'msg': [{'npc': 'feather', 'text': 'Kyaa... who\'re you?!'}, {'npc': 'grid', 'text': 'My name\'s Grid. Don\'t be scared'}, {'npc': 'feather', 'text': 'Fine! I won\'t be. My name\'s Feather and I\'m tring to escape from the bad people...'}, {'npc': 'grid', 'text': 'Bad people?'}, {'npc': 'feather', 'text': 'Yes! I don\'t know who they are but they\'re always trying to kill me...'}, {'npc': 'grid', 'text': 'Hm... are that halo and those wings real?!'}, {'npc': 'feather', 'text': 'Yes... I don\'t know what they are. I only remember waking up in the lab, then I ran away... Maybe those bad people are from the lab.'}, {'npc': 'grid', 'text': 'You don\'t remember anything before that?'}, {'npc': 'feather', 'text': 'No! It\'s frightening me.'}, {'npc': 'grid', 'text': 'Don\'t worry, I\'m with you. Wanna come with me?'}, {'event': 'give_exp', 'value': 8000}, {'event': 'join_team', 'npc': 9}, {'event': 'set_flag', 'flag': 'enc_feather'}, {'event': 'enable_screen'}, {'npc': 'feather', 'text': 'I\'d love to! You seem to be a good person.'}]}; this[261] = {'theme': 'EXPERIMENT', 'msg': [{'npc': 'dekkis', 'text': 'Here\'s my runaway angel!'}, {'npc': 'feather', 'text': 'It\'s him! The bad guy from the lab!'}, {'npc': 'grid', 'text': 'He doesn\'t look much like a scientist...'}, {'npc': 'dekkis', 'text': 'Come with me!'}, {'npc': 'grid', 'text': 'No can do. First you\'ll have to defeat me.'}, {'npc': 'dekkis', 'text': 'I\'m hopeless at fighting... but these guy aren\'t!'}, {'event': 'set_flag', 'flag': 'enc_dekkis1'}, {'event': 'battle', 'band': 'dek_shades'}]}; this[262] = {'theme': 'EXPERIMENT', 'msg': [{'npc': 'dekkis', 'text': 'Damn! I\'ve failed!'}, {'npc': 'grid', 'text': 'You said it. Now you\'ll die unless you explain everything to me.'}, {'npc': 'dekkis', 'text': 'Fine, you won... I\'m the son of Garreth from Jade Island... I tried to make a genetic revolution but, when my father saw my experiments, he exiled me!'}, {'npc': 'dekkis', 'text': 'All I did was mix the genes of humans and animals to create a new life form!'}, {'npc': 'dekkis', 'text': 'I was better than my father and finally created an angel, a messenger of God.'}, {'npc': 'dekkis', 'text': 'I wanted to marry her to create a new human race... but she escaped!'}, {'npc': 'feather', 'text': 'I don\'t want to marry you!'}, {'npc': 'grid', 'text': 'You heard her. Leave her alone.'}, {'npc': 'dekkis', 'text': 'No! I can\'t! I won\'t! With this new gene formula I\'ll get her back from you!'}, {'npc': 'grid', 'text': 'Damn! He\'s mutating!'}, {'event': 'set_flag', 'flag': 'enc_dekkis2'}, {'event': 'battle', 'band': 'dekkis'}]}; this[263] = {'theme': 'FEATHER', 'msg': [{'npc': 'grid', 'text': 'Now you\'re free, Feather. Noone will chase you anymore.'}, {'npc': 'feather', 'text': 'Thankyou for everything, Grid... but... please tell me I can stay with you a little longer.'}, {'event': 'give_exp', 'value': 7500}, {'event': 'set_flag', 'flag': 'enc_dekkis3'}, {'event': 'set_flag', 'flag': 'v_killeddekkis', 'value': 1}, {'event': 'enable_screen'}, {'npc': 'grid', 'text': 'Sure you can! Traveling with you is a pleasure.'}]}; }; _global.TalkData4En = v1; _global.TalkData4En extends Array; var v2 = v1.prototype; ASSetPropFlags(_global.TalkData4En.prototype, null, 1); } #endinitclip } movieClip 1952 __Packages.TalkData3En { #initclip if (!_global.TalkData3En) { var v1 = function () { super(); this[153] = {'theme': 'ABOUT YOURSELF', 'msg': [{'npc': 'grid', 'text': 'Who\'re you?'}, {'npc': 'vlad_ser', 'text': 'I\'m Vlad!! The head of this village!!!'}, {'npc': 'grid', 'text': 'Why are you shouting?'}, {'npc': 'vlad_ser', 'text': 'Because life is beautiful!'}]}; this[154] = {'theme': 'JOB', 'condition': function () { return !(Core.Get()).game.isFlag('vlad_omelette'); }, 'msg': [{'npc': 'grid', 'text': 'Got any jobs for me? I\'m always looking to earn some money.'}, {'npc': 'vlad_ser', 'text': 'No, no jobs! But we do have the OMELETTE!'}, {'npc': 'grid', 'text': 'The what?!'}, {'event': 'set_flag', 'flag': 'vlad_omelette'}, {'npc': 'vlad_ser', 'text': 'The omelette! Our famous Vladsville Omelette! If you eat it you\'ll gain great strength! Either that or you\'ll die... There\'s no way to be sure!'}]}; this[155] = {'theme': 'EAT OMELET...', 'condition': function () { return (Core.Get()).game.isFlag('vlad_omelette') && !(Core.Get()).game.isFlag('vlad_omelette_tried'); }, 'msg': [{'npc': 'grid', 'text': 'I\'ll try your Omelette!'}, {'npc': 'vlad_ser', 'text': 'Good man! Eat up!'}, {'event': 'game_over', 'condition': function () { return Math.random() < 0.5; }}, {'npc': '', 'text': '...'}, {'npc': 'grid', 'text': 'I feel like I\'ve evolved into something new and better!'}, {'event': 'give_exp', 'value': 1000}, {'event': 'skill_up', 'npc': 0, 'skill': 'vit'}, {'event': 'skill_up', 'npc': 0, 'skill': 'def'}, {'event': 'skill_up', 'npc': 0, 'skill': 'dgr'}, {'event': 'skill_up', 'npc': 0, 'skill': 'med'}, {'event': 'set_flag', 'flag': 'vlad_omelette_tried'}, {'npc': 'vlad_ser', 'text': 'You\'ve survived! Congratulations!'}]}; this[156] = {'theme': 'ABOUT YOURSELF', 'msg': [{'event': 'set_flag', 'flag': 'vlad_vlad_trade'}, {'npc': 'vlad_vlad', 'text': 'I\'m Vlad, son of Vlad. The blacksmith of Vladsville. I make excellent weapons, if you\'re interested!'}]}; this[157] = {'theme': 'TRADE', 'condition': function () { return (Core.Get()).game.isFlag('vlad_vlad_trade'); }, 'msg': [{'npc': 'grid', 'text': 'Show me what you\'ve got, blacksmith.'}, {'event': 'trade', 'npc': 'vlad_vlad'}]}; this[158] = {'theme': 'VLADSVILLE', 'msg': [{'event': 'set_flag', 'flag': 'q_vladsville_visited'}, {'npc': 'grid', 'text': 'Why is this village called Vladsville?'}, {'npc': 'vlad_vlad', 'text': 'Because everybody here\'s called Vlad. Didn\'t you know that?'}, {'npc': 'grid', 'text': 'What?! Every last one of you?!'}, {'npc': 'vlad_vlad', 'text': 'Of course! Only Vlads are allowed to live here.'}]}; this[159] = {'theme': 'HAVE A CHAT', 'msg': [{'npc': 'grid', 'text': 'Good day to you!'}, {'npc': 'vlada', 'text': 'Hello there, Vlad!'}, {'npc': 'grid', 'text': 'I\'m not a Vlad!'}, {'npc': 'vlada', 'text': 'What?! Than you\'d better leave our village immediately. Only Vlads are allowed here.'}, {'npc': 'grid', 'text': 'What\'s your name then?'}, {'npc': 'vlada', 'text': 'Vlada. It\'s considered to be Vlad as well. Only Vlads live here.'}, {'npc': 'grid', 'text': 'You Vlads are really odd people...'}]}; this[160] = {'theme': 'SIEGE', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_startrevolution'); }, 'msg': [{'npc': 'lesly', 'text': 'Damn! Their general\'s here!'}, {'npc': 'garn', 'text': 'I\'ll beat the trash out of him. Worthless general of a worthless band of rebels!'}, {'npc': 'celester', 'text': 'Garn, this guy\'s really strong! I fought him just this morning and even I wasn\'t able to kill him.'}, {'npc': 'grid', 'text': 'This time he won\'t be so lucky, believe me.'}, {'event': 'set_flag', 'flag': 'q_startrevolution', 'value': 2}, {'event': 'set_flag', 'flag': 'milbase_after_battle'}, {'event': 'battle', 'band': 'garn'}]}; this[161] = {'theme': 'SIEGE', 'condition': function () { return (Core.Get()).game.isFlag('milbase_after_battle'); }, 'msg': [{'event': 'set_flag', 'flag': 'milbase_after_battle', 'value': 0}, {'event': 'give_exp', 'value': 7500}, {'event': 'add_quest', 'quest': 'meta_uprise', 'stage': 12}, {'npc': 'grid', 'text': 'This has been a hard war but... it seems we\'ve won. I should report our success to Lina.'}]}; this[162] = {'theme': 'CHIP 404', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_getchips') && !(Core.Get()).game.hasQuestItem(15); }, 'msg': [{'npc': 'grid', 'text': 'I need a chip. Model 404.'}, {'npc': 'garn', 'text': 'Get the hell out of here. That\'s a forbidden chip.'}]}; this[163] = {'theme': 'SKILL: SNIPER, COST: $5000', 'condition': function () { return !(Core.Get()).game.isFlag('v_learnedshot') && (Core.Get()).game.money >= 5000; }, 'msg': [{'npc': 'grid', 'text': 'Would you teach me how to shoot as well as you?'}, {'npc': 'celester', 'text': 'It\'ll cost you $5000. Deal?'}, {'event': 'remove_money', 'value': 5000}, {'event': 'skill_up', 'npc': 0, 'skill': 'acc'}, {'event': 'set_flag', 'flag': 'v_learnedshot'}, {'event': 'give_exp', 'value': 500}, {'npc': 'grid', 'text': 'Fine. Here\'s your money.'}]}; this[164] = {'theme': 'CHIP 404', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_getchips') && !(Core.Get()).game.hasQuestItem(15); }, 'msg': [{'npc': 'grid', 'text': 'Hi there, gorgeous. I need a chip, model 404.'}, {'npc': 'lesly', 'text': 'Oh... we\'re not allowed to give those to civilians!'}, {'npc': 'grid', 'text': 'Even to me?'}, {'npc': 'lesly', 'text': 'Well... okay. But only if you\'ll take me on a date some day!'}, {'event': 'give_quest_item', 'item': 15}, {'event': 'give_exp', 'value': 2000}, {'npc': 'grid', 'text': 'Definitely!'}]}; this[165] = {'theme': 'BROADCAST', 'condition': function () { return 4 == (Core.Get()).game.getFlag('q_waitforalien') && !(Core.Get()).game.isFlag('translation_progress'); }, 'msg': [{'event': 'give_exp', 'value': 15000}, {'npc': 'marcy', 'text': 'Grid! I\'ve been expecting you!'}, {'npc': 'elm', 'text': 'Hey there! I\'m so excited.'}, {'npc': 'grid', 'text': 'At least tell me what\'s going on.'}, {'npc': 'marcy', 'text': 'We\'re going to broadcast Sir F\'s speech. We\'ll start by showing Elm\'s movie about the aliens.'}, {'npc': 'marcy', 'text': 'After that, Sir F\'s address to the people of the world will be broadcast over every station.'}, {'npc': 'karry', 'text': 'Your task is to protect the studio from intrusion.. and you can count on being busy. The Government and K.A.U.F.O. will both be trying to stop us.'}, {'npc': 'marcy', 'text': 'Okay, we\'re starting the broadcast...'}, {'npc': '', 'text': '...'}, {'npc': 'grid', 'text': 'We\'ve been on air for an hour already... what\'s the situation?'}, {'npc': 'karry', 'text': 'K.A.U.F.O. forces are approaching!'}, {'event': 'set_flag', 'flag': 'translation_progress', 'value': 1}, {'event': 'battle', 'band': 'tr_kaufo'}]}; this[166] = {'theme': 'BROADCAST', 'condition': function () { return 4 == (Core.Get()).game.getFlag('q_waitforalien') && 1 == (Core.Get()).game.getFlag('translation_progress'); }, 'msg': [{'npc': 'sir_f', 'text': 'Right, I have arrived.'}, {'npc': 'marcy', 'text': 'You\'re just in time. The movie\'s almost ended.'}, {'npc': 'sir_f', 'text': 'Alright... here we go...'}, {'npc': '', 'text': '...'}, {'npc': 'sir_f', 'text': 'People of Earth! My name is F and I\'m speaking to you as the representative of the alien civilization! Some of you already know of our existence...'}, {'npc': '', 'text': '...'}, {'npc': 'sir_f', 'text': '...and all I\'m telling you is the sad truth about your government. Myst is a tyrant and will lead you all to disaster!'}, {'npc': 'karry', 'text': 'The government\'s army is approaching...'}, {'npc': 'mist', 'text': 'How dare you spout such insolence!'}, {'event': 'set_flag', 'flag': 'translation_progress', 'value': 2}, {'event': 'battle', 'band': 'tr_mist'}]}; this[167] = {'theme': 'BROADCAST', 'condition': function () { return 4 == (Core.Get()).game.getFlag('q_waitforalien') && 2 == (Core.Get()).game.getFlag('translation_progress'); }, 'msg': [{'npc': 'sir_f', 'text': '...and finally, I must expose the «secret» organization known as \'K.A.U.F.O.\' which is busily destroying everything it doesn\'t understand.'}, {'npc': 'natan', 'text': 'Grid... who would\'ve thought we\'d end up as enemies...'}, {'npc': 'grid', 'text': 'Nathan... please stop this. You\'re wrong. You know you\'re wrong.'}, {'npc': 'natan', 'text': 'Wrong? You think I\'m wrong?! I was able to create an organization that brings great wealth to me and those who stand with me.'}, {'npc': 'natan', 'text': 'I was able to unite people in hatred to further my agenda. You think I would give all that up?'}, {'npc': 'grid', 'text': 'Nathan... you\'re a monster... it was me that was wrong. I was wrong to think you were a great leader. I was wrong to think you were a friend.'}, {'npc': 'elm', 'text': 'Guys! Don\'t you know you\'re on the air?!'}, {'npc': 'natan', 'text': 'Damnit! I\'ll kill you all!!!'}, {'event': 'set_flag', 'flag': 'translation_progress', 'value': 3}, {'event': 'battle', 'band': 'tr_nathan'}]}; this[168] = {'theme': 'BROADCAST', 'condition': function () { return 4 == (Core.Get()).game.getFlag('q_waitforalien') && 3 == (Core.Get()).game.getFlag('translation_progress'); }, 'msg': [{'npc': 'sir_f', 'text': '...and that is why I propose that our races cooperate, in order to evolve and progress together!'}, {'npc': 'karry', 'text': 'DONE! I think we made it...'}, {'npc': 'grid', 'text': 'Yeah... we dealt with both the government and K.A.U.F.O.. Kind of sad, you know, but I don\'t regret any of this.'}, {'event': 'complete_quest', 'quest': 'talks_with_aliens'}, {'npc': 'sir_f', 'text': 'So now we\'re just waiting for replies from other counties. Grid, thank you so much for all you\'ve done for us. All you\'ve done for the sake of the planet...'}, {'npc': 'grid', 'text': 'Yeah... it\'s really changed my life aswell... I feel an emptiness.'}, {'event': 'finish_game', 'ending': 3}]}; this[169] = {'theme': 'ABOUT YOURSELF', 'msg': [{'npc': 'grid', 'text': 'Hi. Your voice sounds familiar...'}, {'npc': 'marcy', 'text': 'Oh, hi! My name\'s Marcy and I\'m the voice of freedom here! Chief editor of the \'Wings of the Country\' TV, radiostation and magazine.'}, {'npc': 'grid', 'text': 'So it\'s you who usually speaks about the aliens?'}, {'event': 'set_flag', 'flag': 'marcy_aliens'}, {'npc': 'marcy', 'text': 'Yeah, about them too.'}]}; this[170] = {'theme': 'ALIENS', 'condition': function () { return (Core.Get()).game.isFlag('marcy_aliens') && !(Core.Get()).game.isFlag('q_alienfix1'); }, 'msg': [{'npc': 'grid', 'text': 'Have you ever encountered a real alien?'}, {'npc': 'marcy', 'text': 'Sure, many times. They\'re kind and cheerful.'}, {'npc': 'grid', 'text': 'No way.'}, {'event': 'give_exp', 'value': 1000}, {'event': 'set_flag', 'flag': 'q_alienfix1'}, {'npc': 'marcy', 'text': 'It\'s true! They helped me with my career choice. I was going to be an exotic dancer but they showed me my gift was for writing... and that I was a really bad dancer. And you see, they were right!'}]}; this[171] = {'theme': 'KALISTER', 'msg': [{'npc': 'grid', 'text': 'What can you tell me about this city?'}, {'npc': 'marcy', 'text': 'Kalister and Sirith are rival cities... Each wants to surpass its neighbor.'}, {'npc': 'marcy', 'text': 'In fact, all cities through history are based on this. The progress of science and culture in a city is just from the desire to show off to their neighbours.'}, {'npc': 'marcy', 'text': 'But Kalister is much richer than Sirith, regardless. We have movie stars, wealthy heirs and popular singers. Sirith just has \'outsider art\' and loads of poor people.'}, {'npc': 'marcy', 'text': 'So Kalister\'s clearly won the race.'}]}; this[172] = {'theme': 'KIBO\'S CD', 'condition': function () { return (Core.Get()).game.hasQuestItem(13); }, 'msg': [{'npc': 'grid', 'text': 'Oh, great! You work on the radio. I have a track you have to hear...'}, {'npc': 'marcy', 'text': 'There are thousands of people who want their songs on the radio. We can\'t listen to just anybody.'}, {'npc': 'grid', 'text': 'This guy is special, really. Listen, you can hear him right now in my earphones.'}, {'npc': '', 'text': '...'}, {'npc': 'marcy', 'text': 'Well, this guy\'s not that bad. I like the way he looks at the world... who is he?'}, {'npc': 'grid', 'text': 'Kibo.'}, {'npc': 'marcy', 'text': 'No kidding?! THE Kibo?! Why didn\'t he just buy his own radio station?!'}, {'npc': 'grid', 'text': 'He wants his music to speak for itself, not buy his way in. So, will you take his disc?'}, {'event': 'remove_quest_item', 'item': 13}, {'event': 'set_flag', 'flag': 'q_kibodisc'}, {'event': 'give_exp', 'value': 500}, {'npc': 'marcy', 'text': 'Of course! This\'ll be great on my show. It\'s good music.'}]}; this[173] = {'theme': 'ABOUT YOURSELF', 'msg': [{'npc': 'grid', 'text': 'I\'m no fan of yours. You\'re Biby, aren\'t you? Actress, model and singer.'}, {'npc': 'biby', 'text': 'Even knowing all that, you\'re still not my fan? How could that be?'}, {'npc': 'grid', 'text': 'Because your acting and singing is awful! You\'re just a pretty face.'}, {'npc': 'biby', 'text': 'Thanks!'}, {'npc': 'grid', 'text': 'It\'s not a compliment!'}]}; this[174] = {'theme': 'LOVE HUNTER', 'condition': function () { return (Core.Get()).game.hasQuestItem(16); }, 'msg': [{'npc': 'grid', 'text': 'Biby, a friend of mine is interested in you.'}, {'npc': 'biby', 'text': 'Everybody\'s interested in me!'}, {'npc': 'grid', 'text': 'But he\'s rich and beautiful!'}, {'npc': 'biby', 'text': 'Then maybe he has a chance with me.'}, {'npc': 'grid', 'text': 'He\'s sent you this chip that\'ll make you a goddess.'}, {'npc': 'biby', 'text': 'A goddess? How nice! I really deserve this. I\'ll go and implant it at once.'}, {'npc': 'grid', 'text': 'Sure. Have a nice day.'}, {'npc': 'key', 'text': 'That was the most ridiculous story I ever heared...', 'condition': function () { return (Core.Get()).game.isInTeam(1); }}, {'npc': 'grid', 'text': 'But it worked!', 'condition': function () { return (Core.Get()).game.isInTeam(1); }}, {'npc': '', 'text': '...', 'condition': function () { return (Core.Get()).game.isInTeam(1); }}, {'npc': 'biby', 'text': 'Thankyou, delivery boy. I\'ll let you have an autograph!..'}, {'event': 'give_exp', 'value': 1500}, {'event': 'remove_quest_item', 'item': 16}, {'event': 'set_flag', 'flag': 'q_lovehunter', 'value': 2}, {'event': 'add_quest', 'quest': 'love_hunter', 'stage': 2}, {'npc': 'grid', 'text': 'I don\'t need one!'}]}; this[175] = {'theme': 'ABOUT SECT', 'msg': [{'npc': 'grid', 'text': 'What is this sect?!'}, {'npc': 'ibrahim', 'text': 'We are the followers of Armados, our cybernetic god. Join us. We have cookies!'}, {'npc': 'grid', 'text': 'No thanks...'}]}; this[176] = {'theme': 'UNFAITHUL', 'condition': function () { return !(Core.Get()).game.isFlag('q_wrongones'); }, 'msg': [{'npc': 'ibrahim', 'text': 'Don\'t just walk past. Hear me out.'}, {'npc': 'ibrahim', 'text': 'Could you help our cult with just one case? Not for free, of course, I\'ll reward you with our Faith\'s secret weapon.'}, {'npc': 'grid', 'text': 'What\'s the case?'}, {'npc': 'ibrahim', 'text': 'Our cult once wanted to punish all the unfaithul. To that end we made 13 hell machines of destruction. We later changed our minds but it was too late. The machines proved vulnerable to trojans and now they\'re wandering across the world destroying everything.'}, {'npc': 'ibrahim', 'text': 'You must find all 13 machines and destroy them.'}, {'npc': 'grid', 'text': 'And how can I find them?!'}, {'npc': 'ibrahim', 'text': 'I\'ll give you this holy detector. It\'ll show you the location of every machine.'}, {'event': 'set_flag', 'flag': 'q_wrongones', 'value': 1}, {'event': 'add_quest', 'quest': 'infidels', 'stage': 0}, {'event': 'spawn', 'band': 'arma_machine'}, {'npc': 'grid', 'text': 'I see. If I have enough free time I\'ll see what I can do.'}]}; this[177] = {'theme': 'UNFAITHUL - DONE', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_wrongones') && 13 <= (Core.Get()).game.getFlag('kills_inferno_ibrahim'); }, 'msg': [{'npc': 'grid', 'text': 'I\'ve destroyed all 13 of the hell machines...'}, {'npc': 'ibrahim', 'text': 'Finally! Armados smiles upon you, stranger.'}, {'npc': 'grid', 'text': 'Yeah, yeah, yeah. Where\'s my reward?'}, {'event': 'give_exp', 'value': 15000}, {'event': 'set_flag', 'flag': 'q_wrongones', 'value': 2}, {'event': 'complete_quest', 'quest': 'infidels'}, {'event': 'give_item', 'item': 119}, {'npc': 'ibrahim', 'text': 'As promised, here is the holy weapon!'}]}; this[178] = {'theme': 'ABOUT YOURSELF', 'msg': [{'npc': 'grid', 'text': 'What do you do?'}, {'npc': 'michel', 'text': 'Well... that\'s a slightly embarrassing question... I offer love for money, if you see what I mean.'}, {'npc': 'grid', 'text': 'I see. Well, it\'s a good thing to do. Not everyone can afford free love.'}, {'npc': 'michel', 'text': 'Glad you understand. If you\'re ever in need of a little love, just ask.'}]}; this[179] = {'theme': 'MICHELLE\'S PENDANT', 'condition': function () { return !(Core.Get()).game.isFlag('q_medalion'); }, 'msg': [{'npc': 'michel', 'text': 'Could I ask you a favor?'}, {'npc': 'grid', 'text': 'Sure, you can always ask.'}, {'npc': 'michel', 'text': 'Once... hmm... while working... I lost my pendant. I think my client took it, he looked like a bandit...'}, {'npc': 'michel', 'text': 'So if you ever find my pendant on a bandit, please return it to me.'}, {'event': 'set_flag', 'flag': 'q_medalion', 'value': 1}, {'event': 'add_quest', 'quest': 'michels_medallion', 'stage': 0}, {'npc': 'grid', 'text': 'Will do!'}]}; this[180] = {'theme': 'MICHELLES\'S PENDANT', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_medalion') && (Core.Get()).game.hasQuestItem(17); }, 'msg': [{'npc': 'michel', 'text': 'Hey! It\'s my pendant! Thank you so much! I don\'t have any cash but I\'m sure I could offer some kinda... reward..'}, {'event': 'remove_quest_item', 'item': 17}, {'npc': 'grid', 'text': 'Hm...'}, {'npc': '', 'text': '...'}, {'npc': '', 'text': '...'}, {'npc': '', 'text': '...'}, {'npc': 'grid', 'text': 'Thanks, Michelle!..'}, {'event': 'set_flag', 'flag': 'q_medalion', 'value': 2}, {'event': 'give_exp', 'value': 1500}, {'event': 'complete_quest', 'quest': 'michels_medallion'}, {'event': 'give_item', 'item': 148}, {'event': 'give_item', 'item': 148}, {'event': 'give_item', 'item': 149}, {'npc': 'michel', 'text': 'Always welcome. Take this as a bonus.'}]}; this[181] = {'theme': 'ABOUT YOURSELF', 'msg': [{'npc': 'grid', 'text': 'Who are you and why do you want to detach people\'s arms?'}, {'npc': 'jax', 'text': 'I\'m Jax, the police chief of Sirith. I enjoy detaching arms. I\'ve become quite attached to it.'}, {'npc': 'grid', 'text': 'I think I\'ll not shake your hand...'}]}; this[182] = {'theme': 'ABOUT SIRITH', 'msg': [{'npc': 'grid', 'text': 'Tell me about Sirith.'}, {'npc': 'jax', 'text': 'Well... Sirith is a great city. Unlike our neighbor, Kalister.'}, {'npc': 'jax', 'text': 'Kalister is full of spoiled, inhuman money-bags, but here you can meet real people. Gifted and intelligent.'}, {'npc': 'jax', 'text': 'Yeah, we\'re not as rich as them. It\'s the art that\'s important here, not the money.'}, {'npc': 'jax', 'text': 'It\'s better to live in poverty than in mediocrity like that Biby from Kalister. Don\'t you agree?'}, {'npc': 'jax', 'text': 'That stupid model has no talent for acting or singing!'}, {'npc': 'grid', 'text': 'Yeah, her movies suck. I see your point.'}]}; this[183] = {'theme': 'CLEARING THE SUBURB', 'condition': function () { return !(Core.Get()).game.isFlag('q_cityclear'); }, 'msg': [{'npc': 'jax', 'text': 'Would you give me a hand?'}, {'npc': 'grid', 'text': 'NO WAY!!'}, {'npc': 'jax', 'text': 'I don\'t mean literally.'}, {'npc': 'jax', 'text': 'I deal with criminals in the city but there\'s noone to protect suburbs - they\'re crawling with bandits. If you kill at least 50 bandits in the Demien Heights I\'ll make it worth your while.'}, {'event': 'set_flag', 'flag': 'q_cityclear', 'value': 1}, {'event': 'add_quest', 'quest': 'clean_suburbs', 'stage': 0}, {'npc': 'grid', 'text': 'Got it.'}]}; this[184] = {'theme': 'CLEARING THE SUBURB - DONE', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_cityclear') && 50 <= (Core.Get()).game.getFlag('kills_bandits_jax'); }, 'msg': [{'npc': 'grid', 'text': 'I\'ve killed at least 50 of the bandits!'}, {'npc': 'jax', 'text': 'That\'s all I was asking you to do! Here\'s your reward. Let me shake that manly hand of yours...'}, {'event': 'give_exp', 'value': 10000}, {'event': 'give_money', 'value': 50000}, {'event': 'set_flag', 'flag': 'q_cityclear', 'value': 2}, {'event': 'complete_quest', 'quest': 'clean_suburbs'}, {'npc': 'grid', 'text': 'Could you please just leave the money on the table?..'}]}; this[185] = {'theme': 'TRADE', 'msg': [{'event': 'trade', 'npc': 'jax'}]}; this[186] = {'theme': 'ABOUT YOURSELF', 'msg': [{'npc': 'grid', 'text': 'YOur face seems familiar...'}, {'event': 'set_flag', 'flag': 'elm_film'}, {'npc': 'elm', 'text': 'I\'m Elm Lotter, a director of documentaries. You might have seen me on television.'}]}; this[187] = {'theme': 'ALIEN\'S VIDEOCAM', 'condition': function () { return (Core.Get()).game.isFlag('elm_camera') && (Core.Get()).game.hasQuestItem(18); }, 'msg': [{'npc': 'grid', 'text': 'I\'ve found this alien video camera. What do you think?'}, {'npc': 'elm', 'text': 'Oh, great! It\'s just like the one I used to shoot my last movie. I\'ve been regretting not asking for one when I had the chance! Could you please sell it to me?'}, {'npc': 'grid', 'text': 'Maybe. How much is it worth to you?'}, {'npc': 'elm', 'text': '2000'}, {'event': 'remove_quest_item', 'item': 18}, {'event': 'give_money', 'value': 2000}, {'event': 'give_exp', 'value': 10000}, {'npc': 'grid', 'text': 'Deal.'}]}; this[188] = {'theme': 'MOVIE ABOUT ALIENS', 'condition': function () { return (Core.Get()).game.isFlag('elm_film'); }, 'msg': [{'npc': 'grid', 'text': 'Was it you who directed that \'Real Aliens\' movie?'}, {'npc': 'elm', 'text': 'Yes. That was my greatest movie.'}, {'npc': 'grid', 'text': 'How did you manage to create such realistic dummies of aliens?'}, {'npc': 'elm', 'text': 'Dummies?! I shoot documentaries! Those were real aliens who agreed to let me film them. Everything in the movie is real. Except for the advertisments, they\'re a pack of lies.'}, {'npc': 'grid', 'text': 'I didn\'t think aliens were that friendly.'}, {'npc': 'elm', 'text': 'They are. A very progressive and friendly race. They try to help people who want to learn something... you couldn\'t be more wrong.'}, {'event': 'set_flag', 'flag': 'elm_camera'}, {'event': 'give_exp', 'value': 1000, 'condition': function () { return !(Core.Get()).game.isFlag('q_alienfix3'); }}, {'event': 'set_flag', 'flag': 'q_alienfix3'}, {'npc': 'elm', 'text': 'By the way, \'Real Aliens\' was shot with one of their own cameras. It was much better quality than any of our tech. I\'ve regretted not asking them for one back then.'}]}; this[189] = {'theme': 'ABOUT YOURSELF', 'msg': [{'npc': 'nina_x', 'text': 'My name\'s Nina X. That\'s X to you! Terra incognita! Yeah!'}, {'npc': 'grid', 'text': 'Nice to meet you, Nina. How do you spend your time?..'}, {'event': 'set_flag', 'flag': 'nina_club'}, {'npc': 'nina_x', 'text': 'I like clubs and extreme sports, and I hate to sit still.'}]}; this[190] = {'theme': 'INVITE TO CLUB', 'condition': function () { return (Core.Get()).game.isFlag('nina_club'); }, 'msg': [{'npc': 'grid', 'text': 'Wanna hang out with me?'}, {'npc': 'nina_x', 'text': 'Sure, just buy me a beer!'}, {'npc': '', 'text': '...'}, {'npc': 'grid', 'text': 'Oh... that party kind of...'}, {'npc': 'nina_x', 'text': 'Yeah, kinda sucks. The DJ\'s lame and the people are so dull.'}, {'npc': 'grid', 'text': 'I agree. It\'s much more fun to just shoot random targets with a gun.'}, {'npc': 'nina_x', 'text': 'Awesome! That\'s really cool! You really do that?'}, {'npc': 'grid', 'text': 'Yep. All the time.'}, {'event': 'set_flag', 'flag': 'nina_join'}, {'npc': 'nina_x', 'text': 'Spacing!'}]}; this[191] = {'theme': 'JOIN THE GROUP', 'condition': function () { return (Core.Get()).game.isFlag('nina_join'); }, 'msg': [{'npc': 'grid', 'text': 'Wanna travel with me then?'}, {'event': 'give_exp', 'value': 1500}, {'event': 'join_team', 'npc': 10}, {'npc': 'nina_x', 'text': 'I\'d like that! We\'ll rock, people!'}]}; this[192] = {'theme': 'ABOUT YOURSELF', 'msg': [{'npc': 'grid', 'text': 'Tell me about yourself.'}, {'npc': 'uncle_sam', 'text': 'Oh! I\'m just the simple owner of the greatest farm in the world. I have everything I need in life! Food, money, a beautiful daughter! And I\'ve achieved all that thanks to just one thing.'}, {'npc': 'grid', 'text': 'Farming?'}, {'event': 'set_flag', 'flag': 'sam_trade'}, {'npc': 'uncle_sam', 'text': 'Nope, I sell weapons!'}]}; this[193] = {'theme': 'TRADE', 'condition': function () { return (Core.Get()).game.isFlag('sam_trade'); }, 'msg': [{'event': 'trade', 'npc': 'uncle_sam'}]}; this[194] = {'theme': 'ABOUT UNCLE SAM', 'msg': [{'npc': 'stacy', 'text': 'My father is the richest farmer in the world! I love this place, it\'s so peaceful! Probably because we have so many guns.'}]}; this[195] = {'theme': 'ABOUT YOURSELF', 'msg': [{'npc': 'stacy', 'text': 'Hi, my name\'s Stacy. I\'m Sam\'s daughter.'}, {'event': 'set_flag', 'flag': 'stacy_trade'}, {'npc': 'stacy', 'text': 'I help my father with the farm and sell the supplies and devices. Do you need some devices?'}]}; this[196] = {'theme': 'TRADE', 'condition': function () { return (Core.Get()).game.isFlag('stacy_trade'); }, 'msg': [{'event': 'trade', 'npc': 'stacy'}]}; this[197] = {'theme': 'HELL', 'condition': function () { return !(Core.Get()).game.isFlag('hell_greet'); }, 'msg': [{'npc': 'hell', 'text': 'How\'s tricks, cat? What brings you to my place?'}, {'npc': 'grid', 'text': 'Who\'re you anyway?'}, {'npc': 'hell', 'text': 'The name\'s Hell, cutie.'}, {'npc': 'grid', 'text': 'What happened here?'}, {'npc': 'hell', 'text': 'My place was attacked. I had to kill all the intruders.'}, {'npc': 'grid', 'text': 'But there are hundreds of dead bodies!'}, {'npc': 'hell', 'text': 'What can I say, I\'m gifted!.. Wanna play with me?'}, {'npc': 'grid', 'text': 'I\'d rather not...'}, {'npc': 'hell', 'text': 'Ah, you\'re boring! If you ever wanna play, just drop by. I\'m good in battle and in bed.'}, {'event': 'give_exp', 'value': 2500}, {'event': 'set_flag', 'flag': 'hell_greet'}, {'npc': 'grid', 'text': 'Damn, woman, you\'re dangerous...'}]}; this[198] = {'theme': 'ABOUT YOURSELF', 'condition': function () { return !(Core.Get()).game.isFlag('v_hellget'); }, 'msg': [{'npc': 'grid', 'text': 'Tell me about yourself.'}, {'npc': 'hell', 'text': 'I had lots of men but they\'re all dead now. How sad.'}]}; this[199] = {'theme': 'ALPHA VILLAGE', 'condition': function () { return !(Core.Get()).game.isFlag('v_hellget'); }, 'msg': [{'npc': 'grid', 'text': 'What is this place?'}, {'npc': 'hell', 'text': 'Alpha Village, the place I was born, long ago now... It\'s abandoned these days but sometimes I get nostalgic.'}, {'npc': 'grid', 'text': 'Where did everyone go?'}, {'npc': 'hell', 'text': 'When I was born, they called me cursed and cast me away. I avenged myself later, like I always do.'}, {'npc': 'grid', 'text': 'It\'s probably hard being different to everyone else...'}, {'npc': 'hell', 'text': 'Not at all. Ordinary, boring people don\'t know what they\'re missing by following someone else\'s rules. I don\'t follow anybody, so I\'m my own master.'}]}; this[200] = {'theme': 'WISHES', 'condition': function () { return !(Core.Get()).game.isFlag('v_hellget'); }, 'msg': [{'npc': 'grid', 'text': 'You\'re stirring forbidden desires in me...'}, {'npc': 'hell', 'text': 'To satisfy those desires you\'ll have to fight me. I can\'t be having with losers.'}]}; this[201] = {'theme': 'ATTACK HELL', 'condition': function () { return !(Core.Get()).game.isFlag('v_hellget'); }, 'msg': [{'npc': 'grid', 'text': 'You\'re too dangerous to be left alive.'}, {'npc': 'hell', 'text': 'Thanks for the compliment! I kinda like you, pretty boy..'}, {'npc': 'grid', 'text': 'Come on, I came to kill you. Please take this seriously!'}, {'npc': 'hell', 'text': 'But you\'re so funny! You honestly seem to think you could do it!'}, {'event': 'set_flag', 'flag': 'hell_after_battle'}, {'event': 'set_area_flag', 'flag': 'hell_after_battle_delay'}, {'event': 'battle', 'band': 'hell', 'level': 20}]}; this[202] = {'theme': 'HELL', 'condition': function () { return !(Core.Get()).game.isFlag('v_hellget') && (Core.Get()).game.isFlag('hell_after_battle') && !(Core.Get()).game.isAreaFlag('hell_after_battle_delay'); }, 'msg': [{'npc': 'hell', 'text': 'Excellent! You surprised me! You\'re strong and I appreciate that. Want me to serve you? Or you can take my life. It would be a honor for me to die by your hand!'}, {'event': 'set_flag', 'flag': 'v_hellget', 'value': 1}, {'event': 'talk', 'npc': 'hell', 'no_bye': true}]}; this[203] = {'theme': 'KILL HELL', 'condition': function () { return 1 == (Core.Get()).game.getFlag('v_hellget'); }, 'msg': [{'event': 'give_exp', 'value': 15000}, {'event': 'give_money', 'value': 100000}, {'event': 'give_item', 'item': 118}, {'event': 'set_flag', 'flag': 'v_hellkilled'}, {'event': 'allow_bye'}, {'event': 'set_flag', 'flag': 'v_hellget', 'value': 2}, {'npc': '', 'text': 'You\'ve killed Hell!'}]}; this[204] = {'theme': 'LET HELL JOIN', 'condition': function () { return 1 == (Core.Get()).game.getFlag('v_hellget'); }, 'msg': [{'npc': 'grid', 'text': 'Come with me then, but please behave yourself!'}, {'npc': 'hell', 'text': 'I can\'t promise that, darling! I\'m a wicked girl, you know.'}, {'event': 'give_exp', 'value': 5000}, {'event': 'join_team', 'npc': 11}, {'event': 'allow_bye'}, {'event': 'set_flag', 'flag': 'v_hellget', 'value': 2}, {'npc': 'grid', 'text': 'I think I\'m gonna regret this...'}]}; this[205] = {'theme': 'OTHERTHROW THE PRESIDENT', 'condition': function () { return 3 == (Core.Get()).game.getFlag('q_startrevolution'); }, 'msg': [{'event': 'complete_quest', 'quest': 'meta_uprise'}, {'npc': 'grid', 'text': 'The time has come to change the world.'}, {'npc': 'mist', 'text': 'Why?'}, {'npc': 'grid', 'text': 'Lina will make a good ruler, even if she is a half-crazed, computer-modified nerd.'}, {'npc': 'mist', 'text': 'Nonsense. This country need a tyrant, not some school girl with a PC in her skull. I\'m getting tired of you fools. You just can\'t appreciate my brilliance. KILL THEM! KILL THEM ALL, MY SOLDIERS!'}, {'event': 'battle', 'band': 'mist'}]}; this[206] = {'theme': 'ABOUT YOURSELF', 'msg': [{'npc': 'grid', 'text': 'Hey, quiet one, talk to me.'}, {'npc': 'kage', 'text': '...'}]}; this[207] = {'theme': 'JOIN THE GROUP', 'condition': function () { return !(Core.Get()).game.isInTeam(9); }, 'msg': [{'npc': 'grid', 'text': 'You seem pretty strong. Wanna join my quest?'}, {'npc': 'kage', 'text': '...'}]}; this[208] = {'theme': 'JOIN THE GROUP', 'condition': function () { return (Core.Get()).game.isInTeam(9); }, 'msg': [{'npc': 'grid', 'text': 'This might sound stupid, but do you want to join my team?'}, {'npc': 'kage', 'text': 'Оkay.'}, {'event': 'join_team', 'npc': 6}, {'npc': 'feather', 'text': 'Oh... why is he staring at me?..'}, {'npc': 'kage', 'text': 'You are kind and innocent. They are not. Still, I will protect you all.'}, {'npc': 'feather', 'text': 'Well, thanks... I\'m blushing!..'}, {'npc': 'grid', 'text': 'Damn, that quiet guy is really strange.'}, {'event': 'give_exp', 'value': 3000}, {'npc': 'kage', 'text': '...'}]}; this[209] = {'theme': 'ABOUT YOURSELF', 'msg': [{'npc': 'grid', 'text': 'Who\'re you?'}, {'npc': 'grandin', 'text': 'I\'m usually called Grandin. I\'m the monk of this highland town. Since you prefer to use weapons there\'s probably nothing I can teach you.'}, {'npc': 'grid', 'text': 'And who is the quiet guy over there?', 'condition': function () { return !(Core.Get()).game.isInTeam(6); }}, {'npc': 'grandin', 'text': 'That\'s my student, Kage. He rarely takes a liking to anyone. Only a pure and innocent person can soothe his troubled heart.', 'condition': function () { return !(Core.Get()).game.isInTeam(6); }}, {'npc': 'grid', 'text': 'Maybe you could tech me how to improve my body?'}, {'event': 'set_flag', 'flag': 'grandin_teach'}, {'npc': 'grandin', 'text': 'Well... for €5,000 I\'ll do it. The monastery is in need of donations.'}]}; this[210] = {'theme': 'HIGHLAND Village', 'msg': [{'npc': 'grid', 'text': 'What is this place?'}, {'npc': 'grandin', 'text': 'It\'s a town of monks, hidden high in the mountains. It has no name. One can learn here how to use one\'s body to it\'s fullest.'}]}; this[211] = {'theme': 'LEARN: SURVIVAL, COST: €5000', 'condition': function () { return !(Core.Get()).game.isFlag('v_learnlive') && (Core.Get()).game.isFlag('grandin_teach') && (Core.Get()).game.money >= 5000; }, 'msg': [{'npc': 'grid', 'text': 'Teach me survival skils!'}, {'event': 'remove_money', 'value': 5000}, {'event': 'skill_up', 'npc': 0, 'skill': 'vit'}, {'event': 'set_flag', 'flag': 'v_learnlive'}, {'event': 'give_exp', 'value': 1000}, {'npc': 'grandin', 'text': '...'}]}; this[212] = {'theme': 'DOCTOR RADE', 'msg': [{'npc': 'grid', 'text': 'Aren\'t you the great A. F. Rade, infamous weapon designer?'}, {'event': 'set_flag', 'flag': 'rade_trade'}, {'npc': 'dr_rade', 'text': 'That\'s me, but I regret everything I\'ve done. Still, I can sell you something from my stock. I certainly don\'t need them anymore.'}]}; this[213] = {'theme': 'TRADE', 'condition': function () { return (Core.Get()).game.isFlag('rade_trade'); }, 'msg': [{'event': 'trade', 'npc': 'dr_rade'}]}; this[214] = {'theme': 'BECCORD\'S CHIP', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_getchips') && !(Core.Get()).game.hasQuestItem(19); }, 'msg': [{'npc': 'grid', 'text': 'Do you know where I can find chip models 404, 101 and 707?'}, {'npc': 'garret', 'text': 'Did you just choose them by the numbers?.. Well, I think I can help you out. I have a spare chip 101. Here, take it.'}, {'event': 'give_quest_item', 'item': 19}, {'npc': 'garret', 'text': 'Chip 707 is frequntly used in Integra-City and 404... that\'s a forbidden military chip... Anyway, good luck.'}, {'npc': 'grid', 'text': 'Thanks, Garret!'}]}; this[215] = {'theme': 'JADE ISLAND', 'msg': [{'npc': 'grid', 'text': 'What is this place?'}, {'npc': 'garret', 'text': 'This is Jade Island, a settlement of genetic engineers. We\'re tring to create a Mystic Monster here... but you shouldn\'t know that.'}, {'npc': 'grid', 'text': 'Erm...'}, {'npc': 'garret', 'text': 'Relax, I\'m kidding. Why would we need a Mystic Monster? We don\'t, really.'}]}; this[216] = {'theme': 'DEKKIS', 'condition': function () { return 1 == (Core.Get()).game.getFlag('v_killeddekkis'); }, 'msg': [{'npc': 'grid', 'text': 'I\'m sorry to bring it up but... we\'ve occasionally run into your son Dekkis...'}, {'npc': 'garret', 'text': 'Damn! Don\'t talk to me about him! Is the bastard still alive?!'}, {'npc': 'grid', 'text': 'Well... he was when we first spoke to him... but then he turned into a minotaur and we had to kill him... We\'re sorry.'}, {'npc': 'garret', 'text': 'I\'ve thought of him as dead to me... but it still hurts...'}, {'npc': 'garret', 'text': 'You know, he wasn\'t even my son in the first place. I tested his DNA and found out my wife had cheated on me... but never mind.'}, {'npc': 'garret', 'text': 'Dekkis was insane, so a part of me feels relieved to know he\'s finally at rest. Poor fellow... Oh, how I wished he was normal...'}, {'event': 'give_exp', 'value': 12000}, {'event': 'give_item', 'item': 101}, {'event': 'set_flag', 'flag': 'v_killeddekkis', 'value': 2}, {'npc': 'garret', 'text': 'Here, take this. And please, leave me be for a while.'}]}; this[256] = {'theme': 'TRADE', 'condition': function () { return (Core.Get()).game.hasQuestItem(27) && !(Core.Get()).game.hasQuestItem(26); }, 'msg': [{'event': 'trade', 'npc': 'garret'}]}; this[217] = {'theme': 'ABOUT YOURSELF', 'msg': [{'npc': 'grid', 'text': 'Who\'re you, pink-haired girl?'}, {'event': 'set_flag', 'flag': 'xena_soils'}, {'npc': 'ksenya', 'text': 'The name\'s Xenya, I\'m a microbiologist! I\'ve found useful technologies for my research on Jade Island... but now I lack the materials to study!'}]}; this[218] = {'theme': 'SEARCH OF MATERIALS', 'condition': function () { return (Core.Get()).game.isFlag('xena_soils') && !(Core.Get()).game.isFlag('q_gesoils'); }, 'msg': [{'npc': 'grid', 'text': 'Do you need help collecting your research materials?'}, {'npc': 'ksenya', 'text': 'That would be great! I need soil samples from every region of the continent.'}, {'event': 'give_quest_item', 'item': 20}, {'npc': 'ksenya', 'text': 'Take this, it\'s a soil collector. It\'s really easy to use! Just press [TAKE SOIL SAMPLE] when it appears on your screen in each region.'}, {'event': 'set_flag', 'flag': 'q_gesoils', 'value': 1}, {'event': 'add_quest', 'quest': 'soil_analysis', 'stage': 0}, {'npc': 'grid', 'text': 'Obviously.'}]}; this[219] = {'theme': 'SEARCH OF MATERIALS - DONE', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_gesoils'); }, 'msg': [{'npc': 'grid', 'text': 'I\'ve collected your soil samples.'}, {'event': 'set_flag', 'flag': 'q_gesoils', 'value': 2}, {'event': 'give_exp', 'value': 15000}, {'event': 'give_item', 'item': 115}, {'event': 'complete_quest', 'quest': 'soil_analysis'}, {'npc': 'ksenya', 'text': 'Great! I\'ve got something to give you for your help...'}]}; this[220] = {'theme': 'ALIEN', 'condition': function () { return 7 == (Core.Get()).game.getFlag('q_bigalienplan'); }, 'msg': [{'npc': 'grid', 'text': 'Hey, Alien King! Give it up! We\'ve come for you!'}, {'npc': 'sir_f', 'text': 'I already know you came all this way to kill me. First, let me introduce myself. My name is sir F.'}, {'npc': 'grid', 'text': 'Not interested. I\'m here to get rid of all the aliens.'}, {'npc': 'sir_f', 'text': 'Grid. Haven\'t you ever wondered whether we\'re good or evil?'}, {'npc': 'grid', 'text': 'No, I haven\'t.'}, {'npc': 'sir_f', 'text': 'Well maybe you should have.'}, {'npc': 'grid', 'text': 'Nah, I shouldn\'t.'}, {'npc': 'sir_f', 'text': 'What do you mean you shouldn\'t?! Why?'}, {'npc': 'grid', 'text': 'You\'re disrupting the development of this planet by interfering in our politics, science and culture.'}, {'npc': 'grid', 'text': 'You\'re preventing us from discovering our own way which could be even better than yours. Well, maybe not better but our own. Unique.'}, {'npc': 'sir_f', 'text': 'What nonsense...'}, {'event': 'complete_quest', 'quest': 'natan_plan'}, {'npc': 'grid', 'text': 'Forget it. I\'ll do my reasoning with a gun!'}, {'event': 'battle', 'band': 'sir_f'}]}; this[221] = {'theme': 'ALIEN RACE', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_kaufo_betrayal') && !(Core.Get()).game.isFlag('q_waitforalien') && !(Core.Get()).game.isFlag('aliens_friends'); }, 'msg': [{'event': 'set_flag', 'flag': 'aliens_friends'}, {'npc': 'karry', 'text': 'Grid, this is our Emperor, sir F. Please, talk to him...'}]}; this[222] = {'theme': 'ALIENS', 'condition': function () { return 3 == (Core.Get()).game.getFlag('q_waitforalien') && !(Core.Get()).game.getFlag('battle_key'); }, 'msg': [{'npc': 'karry', 'text': 'There is a huge battle!'}, {'npc': 'key', 'text': 'You betrayer, Grid! I\'ve come to do what you were supposed to.'}, {'npc': 'grid', 'text': 'How did you find us?'}, {'npc': 'key', 'text': 'There\'s a locator implanted under your skin. All K.A.U.F.O. members have one. The truth of it is that you led us here...'}, {'npc': 'grid', 'text': 'Key, why are you so stubborn?! Why won\'t you stop fighting for the wrong side?'}, {'npc': 'key', 'text': 'It\'s you who\'s wrong, Grid! The planet must develop in it\'s own way, not through their interference. You can\'t know whether this cooperation will lead to peace or to slavery!'}, {'event': 'set_flag', 'flag': 'alienbase_afterbattle'}, {'event': 'set_flag', 'flag': 'battle_key'}, {'event': 'battle', 'band': 'key'}]}; this[223] = {'theme': 'ALIENS', 'condition': function () { return 3 == (Core.Get()).game.getFlag('q_waitforalien') && (Core.Get()).game.isFlag('alienbase_afterbattle'); }, 'msg': [{'event': 'give_exp', 'value': 15000}, {'npc': 'grid', 'text': 'Key...'}, {'npc': 'karry', 'text': 'She\'s still alive. We\'ll put her into the life-support cell - I think we can save her.'}, {'npc': 'grid', 'text': 'Thanks. Sorry for leading them here...'}, {'npc': 'sir_f', 'text': 'It\'s fine, you didn\'t know. Anyway, we\'re all still alive so there\'s no harm done.'}, {'npc': 'sir_f', 'text': 'By the way, Grid, everything\'s ready for the plan. I\'m going to broadcast my message to the world. Marcy in Kalister and Elm in Sirith will help us with that.'}, {'npc': 'sir_f', 'text': 'They\'re expecting you. Go to Kalister, from there we\'ll start our broadcast across all the world\'s channels.'}, {'npc': 'sir_f', 'text': 'Be careful. When our TV-show begins the government and K.A.U.F.O. will do all they can to stop us.'}, {'npc': 'sir_f', 'text': 'After the preparations for transmission are done, I\'ll join you.'}, {'event': 'set_flag', 'flag': 'q_waitforalien', 'value': 4}, {'event': 'add_quest', 'quest': 'talks_with_aliens', 'stage': 4}, {'npc': 'grid', 'text': 'Got it.'}]}; this[224] = {'theme': 'I WANNA KNOW THE TRUTH', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_kaufo_betrayal') && !(Core.Get()).game.isFlag('alien_truth'); }, 'msg': [{'npc': 'sir_f', 'text': 'Grid, I\'ve been expecting you...'}, {'npc': 'grid', 'text': 'Tell me the truth about the aliens.'}, {'npc': 'sir_f', 'text': 'You see, Grid, the fact is we\'re a peaceful civilization, and we want to help your planet by sharing our knowledge with you.'}, {'npc': 'sir_f', 'text': 'Some of your current technologies are already made with our help.'}, {'npc': 'sir_f', 'text': 'Yet, at the same time, you people gives too much of your lives over to material things. That\'s why we\'re holding discos from time to time, to save people from drowning in routine.'}, {'npc': 'sir_f', 'text': 'Recently, we tried to make humans immortal... but that research was interrupted by K.A.U.F.O.'}, {'npc': 'sir_f', 'text': 'Their hatred is unreasonable, although fear of anything foreign seems to be normal on your planet.'}, {'npc': 'sir_f', 'text': 'That\'s the truth, Grid. You see, we\'re not doing any harm, only trying to improve things. You should understand that now, with everything you\'ve seen already.'}, {'npc': 'karry', 'text': 'Grid, may I travel with you? I\'m interested in studying your world but I still don\'t have enough information.'}, {'event': 'set_flag', 'flag': 'alien_truth'}, {'event': 'give_exp', 'value': 10000}, {'event': 'join_team', 'npc': 5}, {'npc': 'grid', 'text': 'Okay. Come with us.'}]}; this[225] = {'theme': 'HELP ALIENS', 'condition': function () { return 1 == (Core.Get()).game.getFlag('alien_truth'); }, 'msg': [{'npc': 'grid', 'text': 'I want to help you improve humanity.'}, {'npc': 'sir_f', 'text': 'That\'s good. We need support from the people of this planet, else our efforts are futile. We\'re going to demonstrate our intentions to the public.'}, {'npc': 'sir_f', 'text': 'Grid, take this radio. With this I\'ll be able to contact you when we\'re ready to make our declaration.'}, {'event': 'give_exp', 'value': 5000}, {'event': 'set_flag', 'flag': 'alien_truth', 'value': 2}, {'event': 'set_flag', 'flag': 'q_waitforalien', 'value': 1}, {'event': 'add_quest', 'quest': 'talks_with_aliens', 'stage': 1}, {'event': 'give_quest_item', 'item': 21}, {'npc': 'sir_f', 'text': 'I\'ll teleport you to Integra City. When you\'re ready to come back, talk to Claude there and tell him Sir F sent you.'}, {'event': 'move_to_area', 'area': 'integra', 'enter': true}]}; this[226] = {'theme': 'LEAVE THE BASE', 'condition': function () { return (Core.Get()).game.isFlag('q_waitforalien'); }, 'msg': [{'npc': 'grid', 'text': 'I want to return to the continent.'}, {'npc': 'sir_f', 'text': 'No problem, I\'ll teleport you there.'}, {'event': 'move_to_area', 'area': 'integra'}]}; }; _global.TalkData3En = v1; _global.TalkData3En extends TalkData4En; var v2 = v1.prototype; ASSetPropFlags(_global.TalkData3En.prototype, null, 1); } #endinitclip } movieClip 1953 __Packages.TalkData2En { #initclip if (!_global.TalkData2En) { var v1 = function () { super(); this[75] = {'theme': 'RAINMACHINE', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_rainmachine'); }, 'msg': [{'npc': 'grid', 'text': 'Do you know how to fix the rainmachine in Rainland?'}, {'npc': 'sarahata', 'text': 'What? It\'s broken?'}, {'npc': 'grid', 'text': 'Yes. D\'you know about it?'}, {'npc': 'sarahata', 'text': 'Sure. Our ancestors made it 99 years ago and sold it to them... Man, they\'re lucky our grandfathers gave them a 100-year warranty. We\'ll deliver the new one for free in 10 working days.'}, {'event': 'give_exp', 'value': 1500}, {'event': 'set_flag', 'flag': 'q_rainmachine', 'value': 2}, {'event': 'add_quest', 'quest': 'rain_machine', 'stage': 1}, {'npc': 'grid', 'text': 'Great news!'}]}; this[76] = {'theme': 'ALLIANCE WITH META-WARRIORS', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_oasispeace'); }, 'msg': [{'npc': 'grid', 'text': 'I am the messenger of cyberdudes - Hyper-Warriors!..'}, {'npc': 'craven', 'text': 'Meta-Warriors!'}, {'npc': 'grid', 'text': 'Yeah, them. They suggest cooperation.'}, {'npc': 'sarahata', 'text': 'I\'ve heared of the Meta-Warriors and their hi-tech force but we\'ll need proof of your intentions.'}, {'npc': 'grid', 'text': 'Like what?'}, {'npc': 'sarahata', 'text': 'Firstly, we need a water filter. Secondly - the Internet.'}, {'npc': 'grid', 'text': 'Internet?'}, {'npc': 'sarahata', 'text': 'Yes. We don\'t recieve the signal here so we have to send caravans to the nearby towns. We keep a list of the requests we need of the Web and periodically send our men to take care of them.'}, {'npc': 'craven', 'text': 'We can install the Enforcers by MWtech here. You\'ll get your signal then. And we can dig a tunnel to the Horse Sea for your water. Will that be enough for you?'}, {'npc': 'sarahata', 'text': 'Sure. Since our government doesn\'t care about our problems we need somebody on our side.'}, {'event': 'give_exp', 'value': 750}, {'event': 'set_flag', 'flag': 'q_oasispeace', 'value': 2}, {'event': 'add_quest', 'quest': 'meta_oasis', 'stage': 1}, {'npc': 'grid', 'text': 'Okay! Let\'s hurry back to Lina and get these transducers off.'}]}; this[77] = {'theme': 'OASIS', 'msg': [{'npc': 'grid', 'text': 'Tell me about this place.'}, {'npc': 'sarahata', 'text': 'Oh, it\'s great here. There\'s water, food, everything you could need. We even have computers, robo-workers and massaging chairs!'}, {'npc': 'grid', 'text': 'Very progressive.'}]}; this[78] = {'theme': 'GARTH', 'condition': function () { return !(Core.Get()).game.isFlag(''); }, 'msg': [{'npc': 'grid', 'text': 'What is «Garth»?'}, {'npc': 'mihel', 'text': 'Garth is a military organization, based on good intentions and tyranny. We hate everythig that pisses us off and fight against it.'}, {'npc': 'grid', 'text': 'What pisses you off?..'}, {'npc': 'mihel', 'text': 'EVERYTHING!!!'}]}; this[79] = {'theme': 'ABOUT YOURSELF', 'condition': function () { return !(Core.Get()).game.isFlag(''); }, 'msg': [{'npc': 'grid', 'text': 'Who\'re you?'}, {'npc': 'mihel', 'text': 'I\'m the one who\'ll be breaking your nose if you don\'t shut the hell up.'}]}; this[80] = {'theme': 'LOVE LETTER FROM LIZ', 'condition': function () { return (Core.Get()).game.hasQuestItem(9); }, 'msg': [{'npc': 'grid', 'text': 'Hm... Migel! I have a love-letter for you...'}, {'event': 'remove_quest_item', 'item': 9}, {'npc': 'mihel', 'text': 'GIVE IT TO ME!.. It\'s a real one, damn! A real girl! I only started the Garth beause noone loved me...'}, {'npc': 'mihel', 'text': 'She\'s smart and beautiful if her handwriting\'s anything to go by! Tell her to grab her stuff and move here!'}, {'event': 'give_exp', 'value': 2500}, {'event': 'set_flag', 'flag': 'q_lizandsten', 'value': 6}, {'event': 'add_quest', 'quest': 'love_story_2', 'stage': 1}, {'npc': 'grid', 'text': 'Ok... Sure...'}]}; this[81] = {'theme': 'ACE\'S DEBT', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_acedebt'); }, 'msg': [{'npc': 'grid', 'text': 'Yeah, yeah. War is fun, but it\'s time to pay your debt.'}, {'npc': 'vermut', 'text': 'What the heck?!'}, {'npc': 'grid', 'text': 'You owe Ace, so you\'d better pay up.'}, {'npc': 'vermut', 'text': 'Hell no! I\'ll waste you!'}, {'event': 'set_flag', 'flag': 'q_vermut_after_battle'}, {'event': 'set_area_flag', 'flag': 'vermut_battle'}, {'event': 'battle', 'band': 'vermut'}]}; this[82] = {'theme': 'ACE\'S DEBT', 'condition': function () { return (Core.Get()).game.isFlag('q_vermut_after_battle') && !(Core.Get()).game.isAreaFlag('vermut_battle'); }, 'msg': [{'npc': 'vermut', 'text': 'Alright, alright, I was wrong. I\'m making the money transfer right now. Done. Money returned.'}, {'event': 'give_exp', 'value': 5000}, {'event': 'set_flag', 'flag': 'q_acedebt', 'value': 2}, {'event': 'set_flag', 'flag': 'q_vermut_after_battle', 'value': 0}, {'event': 'add_quest', 'quest': 'debt_collection', 'stage': 1}, {'npc': 'grid', 'text': 'You\'d best be telling the truth, otherwise I\'ll be back.'}]}; this[83] = {'theme': 'TRADE', 'msg': [{'npc': 'grid', 'text': 'D\'you have anything you could sell me?!'}, {'npc': 'zoid', 'text': 'Sure I do, nonentity! We even have special discounts for nonenities!'}, {'event': 'trade', 'npc': 'zoid'}]}; this[84] = {'theme': 'ABOUT YOURSELF', 'msg': [{'npc': 'grid', 'text': 'Tell me about yourself, oh embodiment of beauty!'}, {'npc': 'bristol', 'text': 'Oh, well I like to draw... I also enjoy posing naked. For some reason I\'m better known for my posing than my drawings. It\'s odd, I draw much better than I undress.'}, {'npc': 'grid', 'text': 'Might I have I seen pictures of you?..'}, {'npc': 'bristol', 'text': 'Take a look.'}, {'npc': 'grid', 'text': 'Oh my god! You\'ve pulled of your blouse! Oh... now I remember you.'}, {'npc': 'bristol', 'text': 'No doubt.'}]}; this[85] = {'theme': 'HELP BRISTOL', 'condition': function () { return !(Core.Get()).game.isFlag('q_helpbrisol'); }, 'msg': [{'event': 'set_flag', 'flag': 'q_helpbrisol', 'value': 1}, {'npc': 'grid', 'text': 'Maybe you could use some help? If there\'s anything I could do to help - anything - I\'d be...'}, {'npc': 'bristol', 'text': 'Could you deliver this citation papper to Seth in Casteda? He\'s managed to avoid all the lawyers I\'ve sent.'}, {'npc': 'grid', 'text': 'Did he desire you because of your beauty?'}, {'event': 'add_quest', 'quest': 'bristol_divorce', 'stage': 0}, {'npc': 'bristol', 'text': 'It\'s worse than that, he married me. We\'ve been married for a week now and I\'ve had all I can take.'}]}; this[86] = {'theme': 'HELP BRISTOL – DONE', 'condition': function () { return 2 == (Core.Get()).game.getFlag('q_helpbrisol'); }, 'msg': [{'npc': 'grid', 'text': 'The pappers are delivered. Why did you marry him anyway?'}, {'npc': 'bristol', 'text': 'Because of the money. Why else?'}, {'npc': 'grid', 'text': 'Sure thing...'}, {'event': 'set_flag', 'flag': 'q_helpbrisol', 'value': 3}, {'event': 'complete_quest', 'quest': 'bristol_divorce'}, {'event': 'give_exp', 'value': 2000}, {'event': 'give_quest_item', 'item': 10}, {'npc': 'bristol', 'text': 'Please, take this for your help!'}]}; this[87] = {'theme': 'ABOUT YOURSELF', 'msg': [{'npc': 'grid', 'text': 'Who\'re you?'}, {'npc': 'stan', 'text': 'Dude, I\'m Stan, the mayor of this town! S\'up?'}, {'npc': 'grid', 'text': 'No kidding? The mayor?!'}, {'npc': 'stan', 'text': 'Knock yourself out, dude! The mayor!'}]}; this[88] = {'theme': 'LOVE LETTER FROM LIZ', 'condition': function () { return (Core.Get()).game.hasQuestItem(11); }, 'msg': [{'npc': 'grid', 'text': 'I\'ve been asked to deliver this letter.'}, {'npc': 'stan', 'text': 'Cool, man! A love-letter! Is the chick smooth?'}, {'npc': 'grid', 'text': 'She\'s fine.'}, {'npc': 'stan', 'text': 'Sweet! Tell I\'ll pick her up tomorow. I\'ll be wearing a mask and riding a bike, so I\'m not recognised. I\'ve got a reputation to uphold. I am the mayor, you know!'}, {'event': 'give_exp', 'value': 2500}, {'event': 'remove_quest_item', 'item': 11}, {'event': 'add_quest', 'quest': 'love_story', 'stage': 2}, {'event': 'set_flag', 'flag': 'q_lizandsten', 'value': 3}, {'npc': 'grid', 'text': 'I\'ll pass your message on to her...'}]}; this[89] = {'theme': 'ABOUT YOURSELF', 'msg': [{'npc': 'grid', 'text': 'Who\'re you?'}, {'npc': 'viola', 'text': 'I\'m Viola. You probably heared about me.'}, {'npc': 'grid', 'text': 'Nope. Not a word.'}, {'npc': 'viola', 'text': 'How could you?! I\'m the unequalled musician known for her unsurpassed performing skills!'}]}; this[90] = {'theme': 'ABOUT KAMERON', 'msg': [{'npc': 'grid', 'text': 'What do you know about this town?'}, {'npc': 'viola', 'text': 'Kameron is the capital city. We have lots of guests from other cities, mostly here trying to find work. We have everything - musicians, artists, godfathers... and our mayor...'}, {'npc': 'viola', 'text': 'Well, he\'s like no other...'}]}; this[91] = {'theme': 'ABOUT YOURSELF', 'msg': [{'npc': 'grid', 'text': 'Who\'re you?'}, {'npc': 'ace', 'text': 'Name\'s Ace, I\'m both awesome and rich. If you want I could offer you credit. But be sure to return it in 2 hours or every headhunter in the city will will be chasing you down.'}]}; this[92] = {'theme': 'LOAN €1,000', 'condition': function () { return !(Core.Get()).game.isFlag('v_credit'); }, 'msg': [{'npc': 'grid', 'text': 'Ace, give me a 1000$.'}, {'event': 'give_money', 'value': 1000}, {'event': 'set_flag', 'flag': 'v_credit'}, {'npc': 'ace', 'text': 'No problem! Just be sure to return it in 2 hours.'}]}; this[93] = {'theme': 'RETURN €1,000', 'condition': function () { return (Core.Get()).game.isFlag('v_credit') && (Core.Get()).game.money < 1000; }, 'msg': [{'npc': 'grid', 'text': '...and how much do I owe you?..'}, {'npc': 'ace', 'text': '1000$. Hurry it up or you\'ll be hunted down!'}, {'npc': 'grid', 'text': 'Got it. I\'ll find the money.'}]}; this[94] = {'theme': 'RETURN €1,000', 'condition': function () { return (Core.Get()).game.isFlag('v_credit') && (Core.Get()).game.money >= 1000; }, 'msg': [{'npc': 'grid', 'text': 'Here\'s your money, pal.'}, {'event': 'set_flag', 'flag': 'v_credit', 'value': 0}, {'event': 'remove_money', 'value': 1000}, {'npc': 'ace', 'text': 'Excellent! I do admire the honest ones... and I kill the liars! Come again!'}]}; this[95] = {'theme': 'DISCIPLINE THE DEBTOR', 'condition': function () { return !(Core.Get()).game.isFlag('q_acedebt'); }, 'msg': [{'npc': 'grid', 'text': 'Got any work for me?'}, {'npc': 'ace', 'text': 'Yeah, I\'ve got something for you. There\'s a member of Garth named Vermuth who owes me money. Get him to think his situation over.'}, {'event': 'set_flag', 'flag': 'q_acedebt', 'value': 1}, {'event': 'add_quest', 'quest': 'debt_collection', 'stage': 0}, {'npc': 'grid', 'text': 'Got it.'}]}; this[96] = {'theme': 'DISCIPLINE THE DEBTOR - DONE', 'condition': function () { return 2 == (Core.Get()).game.getFlag('q_acedebt'); }, 'msg': [{'npc': 'grid', 'text': 'Has the payment arrived?'}, {'event': 'give_exp', 'value': 2500}, {'event': 'give_money', 'value': 5000}, {'event': 'set_flag', 'flag': 'q_acedebt', 'value': 3}, {'event': 'complete_quest', 'quest': 'debt_collection'}, {'npc': 'ace', 'text': 'Yeah, I\'ve been notified of it. Here. For your work.'}]}; this[97] = {'theme': 'ABOUT YOURSELF', 'msg': [{'npc': 'grid', 'text': 'Are you a local?'}, {'event': 'set_flag', 'flag': 'about_rain_machine', 'condition': function () { return !(Core.Get()).game.isFlag('about_rain_machine'); }}, {'npc': 'shell', 'text': 'No, I\'m a wandering adventurer. I\'m here to find out what\'s wrong with the rainmachine.'}]}; this[98] = {'theme': 'RAINMACHINE', 'condition': function () { return 1 == (Core.Get()).game.getFlag('about_rain_machine'); }, 'msg': [{'npc': 'grid', 'text': 'What is this rainmachine?'}, {'npc': 'shell', 'text': 'Look, this town\'s called Rainland, right? Do you see any rain here?'}, {'npc': 'grid', 'text': 'Nope.'}, {'npc': 'shell', 'text': 'That\'s what\'s wrong! Rainland got it\'s name \'cause it was equipped with a Watermaker-3000 machine. Without it this place is dry and unpleasant.'}, {'npc': 'grid', 'text': 'What were you able to find out?'}, {'event': 'set_flag', 'flag': 'about_rain_machine', 'value': 2}, {'event': 'set_flag', 'flag': 'q_rainmachine', 'value': 1}, {'event': 'add_quest', 'quest': 'rain_machine', 'stage': 0}, {'npc': 'shell', 'text': 'Well, it\'s broken but there\'s a note on the machine "Made in Oasis". That\'s all I know.'}]}; this[99] = {'theme': 'RAINMACHINE - DONE', 'condition': function () { return 2 == (Core.Get()).game.getFlag('q_rainmachine'); }, 'msg': [{'npc': 'grid', 'text': 'Oasis will deliver the new rainmachine for free in 2 week\'s time.'}, {'event': 'give_exp', 'value': 3500}, {'event': 'set_flag', 'flag': 'q_rainmachine', 'value': 3}, {'event': 'complete_quest', 'quest': 'rain_machine'}, {'npc': 'shell', 'text': 'You\'re good! I really admire you! Now the rain will finally return to this land.'}]}; this[100] = {'theme': 'ABOUT YOURSELF', 'condition': function () { return 3 > (Core.Get()).game.getFlag('q_lizandsten'); }, 'msg': [{'npc': 'grid', 'text': 'Hi! Why so sad and demotivated?'}, {'npc': 'liz', 'text': 'I\'m in love with a man...'}, {'event': 'set_flag', 'flag': 'q_lizandsten', 'value': 1, 'condition': function () { return !(Core.Get()).game.isFlag('q_lizandsten'); }}, {'event': 'add_quest', 'quest': 'love_story', 'stage': 0, 'condition': function () { return !(Core.Get()).game.isFlag('q_lizandsten'); }}, {'npc': 'liz', 'text': 'This man... his name is Stan... he\'s the mayor of Kameron and my love for him is hopeless!'}]}; this[101] = {'theme': 'LOVE LETTER', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_lizandsten'); }, 'msg': [{'npc': 'grid', 'text': 'Maybe I could help you somehow?'}, {'npc': 'liz', 'text': 'Noone can help me!.. Unless! Maybe you can deliver a love letter to him?.. Could you?'}, {'event': 'set_flag', 'flag': 'q_lizandsten', 'value': 2}, {'event': 'give_quest_item', 'item': 11}, {'event': 'add_quest', 'quest': 'love_story', 'stage': 1}, {'npc': 'grid', 'text': 'Sure, why not?'}]}; this[102] = {'theme': 'LOVE LETTER - DONE', 'condition': function () { return 3 == (Core.Get()).game.getFlag('q_lizandsten'); }, 'msg': [{'npc': 'liz', 'text': 'How did it go?!'}, {'npc': 'grid', 'text': 'I\'ve delivered the letter.'}, {'npc': 'liz', 'text': 'And?!!'}, {'npc': 'grid', 'text': 'He said he\'ll meet you tomorrow. He\'ll be riding a bike and wearing a mask.'}, {'event': 'give_exp', 'value': 2000}, {'event': 'set_flag', 'flag': 'q_lizandsten', 'value': 4}, {'event': 'complete_quest', 'quest': 'love_story'}, {'event': 'start_timer', 'timer': 't_lizstendate'}, {'npc': 'liz', 'text': 'Great! Thanks! Now I\'m much happier!'}]}; this[103] = {'theme': 'HOW DID THE DATE GO?', 'condition': function () { return 4 == (Core.Get()).game.getFlag('q_lizandsten') && (Core.Get()).game.timers.t_lizstendate >= 1500; }, 'msg': [{'event': 'kill_timer', 'timer': 't_lizstendate'}, {'npc': 'grid', 'text': 'How did your date go?'}, {'npc': 'liz', 'text': 'He dumped me! He said I\'m too emotional! I was only crying and then sort of tried to kill him...'}, {'npc': 'grid', 'text': 'Poor thing...'}, {'npc': 'liz', 'text': 'Nevermind that now! There\'s one sure cure for tragic love. I\'m in love again! This time my sweetheart is the fascist Miguel of Garth!'}, {'npc': 'grid', 'text': 'Girl, you have really bad taste in men...'}, {'event': 'set_flag', 'flag': 'q_lizandsten', 'value': 5}, {'event': 'give_quest_item', 'item': 9}, {'event': 'add_quest', 'quest': 'love_story_2', 'stage': 0}, {'npc': 'liz', 'text': 'It\'s nothing like that! Please deliver this letter to Miguel in Beta Village.'}]}; this[104] = {'theme': 'LOVE LETTER 2 - DONE', 'condition': function () { return 6 == (Core.Get()).game.getFlag('q_lizandsten'); }, 'msg': [{'npc': 'liz', 'text': 'Well?!'}, {'npc': 'grid', 'text': 'Your letter touched his heart. He wants you to move to Beta Village with him.'}, {'npc': 'liz', 'text': 'Yay! I\'m already on my way!!'}, {'event': 'give_exp', 'value': 5000}, {'event': 'set_flag', 'flag': 'q_lizandsten', 'value': 7}, {'event': 'complete_quest', 'quest': 'love_story_2'}, {'npc': 'grid', 'text': 'I can\'t see this lasting...'}]}; this[105] = {'theme': 'ABOUT YOURSELF', 'msg': [{'event': 'set_flag', 'flag': 'alice_trade'}, {'npc': 'alice', 'text': 'My name\'s Alice. I sell things round here. Whatcha need, handsome?'}]}; this[106] = {'theme': 'TRADE', 'condition': function () { return (Core.Get()).game.isFlag('alice_trade'); }, 'msg': [{'event': 'trade', 'npc': 'alice'}]}; this[107] = {'theme': 'ALIEN BASE', 'condition': function () { return 4 == (Core.Get()).game.getFlag('q_bigalienplan'); }, 'msg': [{'npc': 'grid', 'text': 'Hmm... Captain Harkos, could you get me to a place deep in the Sea bank?'}, {'npc': 'harcos', 'text': 'I can do anything! But why should I?'}, {'npc': 'key', 'text': 'Because we\'re asking you politely?', 'condition': function () { return (Core.Get()).game.isInTeam(1); }}, {'npc': 'harcos', 'text': 'That\'ll just motivate me to punch you in the face!', 'condition': function () { return (Core.Get()).game.isInTeam(1); }}, {'npc': 'grid', 'text': 'Would some money convince you?'}, {'npc': 'harcos', 'text': 'I don\'t need the money!'}, {'npc': 'grid', 'text': 'Then why not give me all yours?'}, {'npc': 'harcos', 'text': 'A joker, eh? I hate jokers! Prove to me that you\'re strong enough to ride «Inevitability»! Go to Last Stand Plains, South-West of here. A bunch of grabbers are lurking around there.'}, {'npc': 'grid', 'text': 'What\'s wrong with them?'}, {'event': 'set_flag', 'flag': 'q_bigalienplan', 'value': 5}, {'event': 'add_quest', 'quest': 'natan_plan', 'stage': 4}, {'npc': 'harcos', 'text': 'They\'re dangerous creatures. If you can kill at least 3 of them I\'ll consider you strong enough.'}]}; this[108] = {'theme': 'GRABBERS', 'condition': function () { return 5 == (Core.Get()).game.getFlag('q_bigalienplan'); }, 'msg': [{'npc': 'grid', 'text': 'What are these \'grabbers\'?'}, {'npc': 'harcos', 'text': 'Well you see, the undead are those returned to life by technology and mutants are people who\'ve been changed by radiation. Each of them are a disgrace before God but grabbers... the grabbers are BOTH at the same time! Soldiers killed and mutated by radiation then returned to life...'}]}; this[109] = {'theme': 'CAPTAIN\'S TASK', 'condition': function () { return 5 == (Core.Get()).game.getFlag('q_bigalienplan') && 3 > (Core.Get()).game.getFlag('kills_grabbers_harcos'); }, 'msg': [{'npc': 'harcos', 'text': 'So, have you killed 3 grabbers?'}, {'npc': 'grid', 'text': 'Sure!'}, {'npc': 'harcos', 'text': 'You have the nerve to lie to me?! I can tell that you haven\'t! Get on and kill them!'}]}; this[110] = {'theme': 'CAPTAIN\'S TASK - DONE', 'condition': function () { return 5 == (Core.Get()).game.getFlag('q_bigalienplan') && 3 <= (Core.Get()).game.getFlag('kills_grabbers_harcos'); }, 'msg': [{'npc': 'harcos', 'text': 'So, have you killed 3 grabbers?'}, {'npc': 'grid', 'text': 'Sure!'}, {'npc': 'harcos', 'text': 'I believe you. I can see the truth in your eyes.'}, {'event': 'give_exp', 'value': 7000}, {'npc': 'grid', 'text': 'Let\'s DIVE!'}, {'npc': 'harcos', 'text': 'Hold the horses. I have one more task.'}, {'npc': 'grid', 'text': 'That\'s unfair! You told me there would only be ONE task! Let\'s DIVE!!!'}, {'npc': 'harcos', 'text': 'Erm... we\'re not able to... While you were away some Meta-Warriors stole an important part of my ship - the vacuum engine. I think those thieves are still somewhere around the Strat plateau to our West. Chase them down and bring me back my engine!'}, {'npc': 'grid', 'text': 'I guess I have no choice then... We can\'t get under way until I finish your stupid task!'}, {'event': 'set_flag', 'flag': 'q_bigalienplan', 'value': 6}, {'event': 'add_quest', 'quest': 'natan_plan', 'stage': 5}, {'npc': 'harcos', 'text': 'Yeah, it\'s as you say. Go find those thieves.'}]}; this[111] = {'theme': 'VACUUM ENGINE', 'condition': function () { return 6 == (Core.Get()).game.getFlag('q_bigalienplan') && !(Core.Get()).game.hasQuestItem(12); }, 'msg': [{'npc': 'harcos', 'text': 'Where\'s my vacuum engine?'}, {'npc': 'grid', 'text': 'Apparently running around the Strat plateau somewhere.'}, {'npc': 'harcos', 'text': 'Then what are you waiting for? Go get them!'}]}; this[112] = {'theme': 'VACUUM ENGINE - DONE', 'condition': function () { return 6 == (Core.Get()).game.getFlag('q_bigalienplan') && (Core.Get()).game.hasQuestItem(12); }, 'msg': [{'npc': 'harcos', 'text': 'Where\'s my vacuum engine?'}, {'npc': 'grid', 'text': 'Right here!'}, {'event': 'remove_quest_item', 'item': 12}, {'event': 'give_exp', 'value': 5000}, {'npc': 'harcos', 'text': 'Great! We can finally set off for your destination.'}, {'event': 'set_flag', 'flag': 'q_bigalienplan', 'value': 7}, {'event': 'add_quest', 'quest': 'natan_plan', 'stage': 6}, {'npc': 'grid', 'text': 'Great!'}, {'event': 'move_to_area', 'area': 'alienbase'}]}; this[113] = {'theme': 'IMPENDENCE', 'msg': [{'npc': 'grid', 'text': 'What is this «Impendence»?'}, {'npc': 'harcos', 'text': '«Impendence» is the greatest ship in the world, you worm, able to reach any place on water!'}]}; this[114] = {'theme': 'JADE ISLAND', 'msg': [{'npc': 'grid', 'text': 'What\'s that island I can see?'}, {'npc': 'yax', 'text': 'That\'s the Jade Island. I can get you there for only €50.'}, {'event': 'set_flag', 'flag': 'v_knowjade'}, {'npc': 'grid', 'text': 'Got it.'}]}; this[115] = {'theme': 'TRAVEL TO JADE ISLAND – €50', 'condition': function () { return (Core.Get()).game.isFlag('v_knowjade') && (Core.Get()).game.money < 50; }, 'msg': [{'npc': 'grid', 'text': 'We wanna go to the Jade Island!'}, {'npc': 'yax', 'text': 'No problem. I\'ll get you there in no time. As soon as you have at least €50.'}]}; this[116] = {'theme': 'TRAVEL TO JADE ISLAND – €50', 'condition': function () { return (Core.Get()).game.isFlag('v_knowjade') && (Core.Get()).game.money >= 50; }, 'msg': [{'npc': 'grid', 'text': 'We wanna go to the Jade Island!'}, {'event': 'remove_money', 'value': 50}, {'npc': 'yax', 'text': 'No problem. I\'ll get you there in no time.'}, {'event': 'weaken_fog', 'x': 36, 'y': 13, 'w': 1, 'h': 2}, {'event': 'move_to_area', 'area': 'jade'}]}; this[117] = {'theme': 'ABOUT YOURSELF', 'msg': [{'npc': 'grid', 'text': 'Who\'re you?'}, {'npc': 'cij', 'text': 'I am the embodiment of the wind itself! Behold me, captain of \'Hysteria\'! The world\'s greatest winged ship!'}, {'npc': 'grid', 'text': 'Could I travel somewhere on \'Hysteria\'?'}, {'npc': 'cij', 'text': 'Whayya?! You Can\'t! CAN\'T! She\'s my ship and I won\'t let just anybody aboard! And I don\'t need money. Money is meaningless. Freedom is the only true value! I\'ll assist only the greatest adventurers!'}]}; this[118] = {'theme': 'HYSTERIA', 'condition': function () { return (Core.Get()).game.stats[0].level < 20; }, 'msg': [{'npc': 'grid', 'text': 'How can I prove to you that I\'m a great adventurer?'}, {'npc': 'cij', 'text': 'Couldn\'t be simpler! You need to be at least level 20!'}, {'npc': 'grid', 'text': 'That\'s the only condition?'}, {'npc': 'cij', 'text': 'Yes! Then I\'ll know you\'re a great adventurer and will take you aboard.'}]}; this[119] = {'theme': 'HYSTERIA', 'condition': function () { return (Core.Get()).game.stats[0].level >= 20; }, 'msg': [{'npc': 'grid', 'text': 'I want to step aboard the greatest flying ship, the \'Hysteria\'!'}, {'event': 'set_flag', 'flag': 'hysterie'}, {'event': 'give_exp', 'value': 5000}, {'event': 'no_talk'}, {'npc': 'cij', 'text': 'The pleasure is all mine! Welcome! You are a great adventurer indeed! I can smell it on you.'}]}; this[120] = {'theme': 'ABOUT YOURSELF', 'msg': [{'npc': 'grid', 'text': 'What are these? Cat\'s ears?'}, {'npc': 'kippa', 'text': 'Of course, meow! Cat\'s ears!'}]}; this[121] = {'theme': 'ABOUT NEVERMORE TOWN', 'msg': [{'npc': 'grid', 'text': 'What is this place?'}, {'npc': 'kippa', 'text': 'It\'s Nevermore town. A place for outcasts and freaks, meow! If you\'re somehow different... people are afraid of you. But here everyone\'s met with understanding. Meow!'}, {'npc': 'kippa', 'text': 'Just look at Lexik. He\'s a sportsman and a panda. Because of that he\'s very successful with the women. Everyone likes pandas.'}, {'npc': 'kippa', 'text': 'And this is Gaimon. He doesn\'t have any physical defects, he\'s just too weird for normal people.'}]}; this[122] = {'theme': 'TRADE', 'msg': [{'npc': 'grid', 'text': 'And where can I restock here?'}, {'npc': 'kippa', 'text': 'Right here! I\'m the vendor you\'re looking for!'}, {'event': 'trade', 'npc': 'kippa'}]}; this[123] = {'theme': 'ABOUT YOURSELF', 'msg': [{'npc': 'grid', 'text': 'Who\'re you?!'}, {'npc': 'lexic', 'text': 'I\'m Lexik!'}, {'npc': 'grid', 'text': 'But you\'re a PANDA!'}, {'event': 'set_flag', 'flag': 'panda_talk1'}, {'npc': 'lexic', 'text': 'Well, yeah! I already knew that.'}]}; this[124] = {'theme': 'ABOUT FREE TIME', 'condition': function () { return (Core.Get()).game.isFlag('panda_talk1'); }, 'msg': [{'npc': 'grid', 'text': 'What do you do in your free time?'}, {'npc': 'lexic', 'text': 'Mostly sports and meeting women, and I like to travel a lot!'}, {'npc': 'grid', 'text': 'Are you successful with the women?'}, {'npc': 'lexic', 'text': 'Sure I am! Everyone like pandas.'}, {'event': 'set_flag', 'flag': 'panda_talk2'}, {'npc': 'grid', 'text': 'Oh dear...'}]}; this[125] = {'theme': 'JOIN ME', 'condition': function () { return (Core.Get()).game.isFlag('panda_talk2'); }, 'msg': [{'npc': 'grid', 'text': 'Hey, panda, wanna travel with me?'}, {'event': 'give_exp', 'value': 1000}, {'event': 'join_team', 'npc': 7}, {'npc': 'lexic', 'text': 'Well... why not! I\'ll travel with you for a while.'}]}; this[126] = {'theme': 'ABOUT YOURSELF', 'msg': [{'npc': 'grid', 'text': 'Who\'re you?'}, {'npc': 'gaimon', 'text': 'Gaimon...'}, {'npc': 'grid', 'text': 'And?..'}, {'event': 'set_flag', 'flag': 'gaimon_aliens'}, {'npc': 'gaimon', 'text': 'And that\'s all. I\'m Gaimon. I am what I am. Nevermind the rest. Nevermind the spoon. Nevermind asking about the spoon'}]}; this[127] = {'theme': 'ABOUT NEVERMORE', 'msg': [{'npc': 'grid', 'text': 'Tell me about this town.'}, {'npc': 'gaimon', 'text': 'Nice. Calm.'}, {'npc': 'grid', 'text': 'And?..'}, {'npc': 'gaimon', 'text': 'And that\'s all. Nice and calm. Those two words describe the totality of my feelings. This town doesn\'t make me want to kill myself.'}, {'npc': 'grid', 'text': 'You\'re a weird fellow...'}]}; this[128] = {'theme': 'ALIENS', 'condition': function () { return (Core.Get()).game.isFlag('gaimon_aliens') && !(Core.Get()).game.isFlag('q_alienfix2'); }, 'msg': [{'npc': 'grid', 'text': 'Are you sure you\'re not an alien?'}, {'npc': 'gaimon', 'text': 'No, they and I are not one... though I feel right in their company. Just like here. They try to understand a person, speak to a person in a way he\'s comfortable with.'}, {'npc': 'grid', 'text': 'They probably just didn\'t kill because they thought you were one of them.'}, {'npc': 'gaimon', 'text': 'No. They never kill unless they feel menace. I\'ve observed them. But then they left. Didn\'t take me with them...'}, {'event': 'give_exp', 'value': 750}, {'event': 'set_flag', 'flag': 'q_alienfix2'}, {'npc': 'grid', 'text': 'I see.'}]}; this[129] = {'theme': 'ABOUT YOURSELF', 'msg': [{'npc': 'grid', 'text': 'Who or what are you?!'}, {'npc': 'chivax', 'text': 'If you address the mayor of Nevermore impolitely then the mayor of Nevermore will tear out your liver and eat it. I am the mayor of Nevermore and I want some liver. You think I\'d answer something like that?.. But I do really like liver. That\'s true.'}, {'npc': 'grid', 'text': 'Sorry, mayor... Your appearance is a little confusing at first sight.'}, {'npc': 'chivax', 'text': 'I know. I know.'}]}; this[130] = {'theme': 'HYDRA\'S APOLOGIZE', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_hydranevermore'); }, 'msg': [{'npc': 'grid', 'text': 'Tell me, what do you associate with the word \'Hydra\'?'}, {'npc': 'chivax', 'text': 'NO!!! NOT THE HYDRA!!! NO!!!!!!!!.'}, {'npc': 'chivax', 'text': 'Something like that. A girl with that name recently commited a terrible slaughter in our town.'}, {'npc': 'grid', 'text': 'Erm... she\'s now feeling ashamed of her behavior and she\'d like to know how to relieve her guilt.'}, {'npc': 'chivax', 'text': 'It\'s hard to believe... but, probably... everyone deserves a second chance... even her. I forgive her on the condition she promises never to visit this town again.'}, {'event': 'give_exp', 'value': 1500}, {'event': 'set_flag', 'flag': 'q_hydranevermore', 'value': 2}, {'npc': 'grid', 'text': 'Then it\'s settled.'}]}; this[131] = {'theme': 'WHAT\'S WRONG WITH YOU?!', 'msg': [{'npc': 'ken', 'text': 'I am the result of an experiment to create a supreme being... or that\'s what I was told. But now we\'re zombies! Rotting bodies unable to die.'}]}; this[132] = {'theme': 'TRADE', 'msg': [{'event': 'trade', 'npc': 'goman'}]}; this[133] = {'theme': 'ABOUT YOURSELF', 'msg': [{'npc': 'grid', 'text': 'Who are you? What happened to you?'}, {'npc': 'fea', 'text': 'Oh... that\'s a long sad story...'}, {'npc': 'fea', 'text': 'Once I was a scientist, the creator of the «Immortal Soldier» project... but you can see the result. This is what I caused.'}, {'npc': 'fea', 'text': 'We can\'t die but we can still be injured, then our skin started to rot... we became just like those zombies in the movies.'}, {'npc': 'fea', 'text': 'It\'s terrible! And I can\'t date normal guys \'cause they don\'t like all the scars... or the smell...'}, {'npc': 'fea', 'text': 'I\'m so unhappy!'}, {'npc': 'grid', 'text': 'I\'m sorry for you...'}]}; this[134] = {'theme': 'ALLIANCE WITH META-WARRIORS', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_allycalipso'); }, 'msg': [{'npc': 'grid', 'text': 'The Meta-Warriors want Calipso to ally with them in their upcoming Revolution.'}, {'npc': 'fea', 'text': 'Do you really think we need help from a band of rebels? We fought for what we believed and this is what we got for it. There\'s only one thing we need - normal human bodies again. If your Meta-Warriors can help with that, we\'ll do anything they want.'}, {'event': 'give_exp', 'value': 1000}, {'event': 'set_flag', 'flag': 'q_allycalipso', 'value': 2}, {'event': 'add_quest', 'quest': 'meta_uprise', 'stage': 3}, {'npc': 'grid', 'text': 'Hmm... I\'ll have to ask Lina about that.'}]}; this[135] = {'theme': 'MIKHAEL\'S HELP', 'condition': function () { return 4 == (Core.Get()).game.getFlag('q_allycalipso'); }, 'msg': [{'npc': 'grid', 'text': 'I\'ve found the greatest scientist on the continent. He\'s interested in working with you to make your bodies live again. He\'s conducted research on something like this before but it was forbidden \'cause he couldn\'t get permission to dig up the bodies he needed.'}, {'npc': 'fea', 'text': 'I\'ve waited for this day far too long! We\'d be able to live again!'}, {'npc': 'grid', 'text': 'Does this also mean you\'ll help with the Rebellion?'}, {'event': 'give_exp', 'value': 4500}, {'event': 'set_flag', 'flag': 'q_allycalipso', 'value': 5}, {'event': 'add_quest', 'quest': 'meta_uprise', 'stage': 6}, {'npc': 'fea', 'text': 'Yes! We\'ll do as you say! My God, finally I\'ll be able to date a living guy...!'}]}; this[136] = {'theme': 'ABOUT YOURSELF', 'msg': [{'npc': 'keabo', 'text': 'Kibo\'s my name, Ask around about my fame. I\'m sellin\' weapons to you, To make all your dream come true.'}, {'npc': 'grid', 'text': 'That rap is pretty lame.'}, {'npc': 'keabo', 'text': 'You might think that now but I\'ve got loads of guns, so think it over!'}, {'npc': 'grid', 'text': 'Wow! You rock! The best rap I ever heard!'}, {'event': 'set_flag', 'flag': 'keabo_trade'}, {'npc': 'keabo', 'text': 'Smart man. If you ever need guns - just ask me!'}]}; this[137] = {'theme': 'TRADE', 'condition': function () { return (Core.Get()).game.isFlag('keabo_trade'); }, 'msg': [{'event': 'trade', 'npc': 'keabo'}]}; this[138] = {'theme': 'INVESTMENT', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_getinvestor') && !(Core.Get()).game.hasQuestItem(13); }, 'msg': [{'npc': 'grid', 'text': 'Hey, Kibo, wanna make the world a better place?'}, {'npc': 'keabo', 'text': 'Speak, friend. And if you say something wrong - don\'t worry. I\'ll forgive you. Right after I shoot you.'}, {'npc': 'grid', 'text': 'How would you like to invest in the upcoming Revolution?'}, {'npc': 'keabo', 'text': 'And what do I get back? I\'ll need more than just money!'}, {'npc': 'grid', 'text': 'Your weapons would be the official guns of the Revolution, and you\'d get to write all the battlecries?'}, {'npc': 'keabo', 'text': 'Sounds cool, man! «What killed your neighbor? – KIBO GUNS. KIBO GUNS - No more noisy neighbors!». How do you like the slogan?..'}, {'npc': 'keabo', 'text': '...But first I need some proof – here\'s my CD, I want to hear it on the radio. Don\'t bribe them, though. They should really appreciate my skill as an MC.'}, {'event': 'give_quest_item', 'item': 13}, {'event': 'add_quest', 'quest': 'keabo_style', 'stage': 0}, {'npc': 'grid', 'text': 'Sure, whatever.'}]}; this[139] = {'theme': 'KIBA\'S CD', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_getinvestor') && (Core.Get()).game.hasQuestItem(13); }, 'msg': [{'npc': 'keabo', 'text': 'Hey! I haven\'t heared my song on the radio yet.'}, {'npc': 'grid', 'text': 'I\'m still working on it.'}]}; this[140] = {'theme': 'KIBA\'S CD - DONE', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_getinvestor') && 1 == (Core.Get()).game.getFlag('q_kibodisc'); }, 'msg': [{'npc': 'keabo', 'text': 'I was listening to the radio yesterday and what did I hear, my friend?! The greatest song ever! My song! I\'m proud of you, you did well! I\'ll invest in your Rebellion.'}, {'event': 'reset_flag', 'flag': 'q_hydranevermore'}, {'event': 'fail_quest', 'quest': 'feel_of_guilty', 'condition': function () { return (Core.Get()).game.inQuest('feel_of_guilty'); }}, {'event': 'reset_flag', 'flag': 'q_getcastlekey'}, {'event': 'remove_quest_item', 'item': 14, 'condition': function () { return (Core.Get()).game.hasQuestItem(14); }}, {'event': 'give_exp', 'value': 4500}, {'event': 'set_flag', 'flag': 'q_getinvestor', 'value': 2}, {'event': 'add_quest', 'quest': 'meta_uprise', 'stage': 9}, {'event': 'set_flag', 'flag': 'q_kibodisc', 'value': 2}, {'event': 'complete_quest', 'quest': 'keabo_style'}, {'npc': 'grid', 'text': 'Good to know!'}]}; this[141] = {'theme': 'ABOUT YOURSELF', 'msg': [{'npc': 'grid', 'text': 'Hey, Seth, how are you doing?'}, {'npc': 'seth', 'text': 'The same as always. I\'m filthy rich, I hate people and I\'m certain someone\'s trying to kill me.'}]}; this[142] = {'theme': 'INVESTMENT', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_getinvestor'); }, 'msg': [{'npc': 'grid', 'text': 'Set, would you be interested in investing in a radical organization?'}, {'npc': 'seth', 'text': 'Which radical organization.'}, {'npc': 'grid', 'text': 'Meta-Warriors.'}, {'npc': 'seth', 'text': 'Yeah, I\'ve heard of them but what will I get from this Revolution? Will they agree to serve me as puppets?'}, {'npc': 'grid', 'text': 'No. Come on, Seth, you have loads of unused money. Why not help the rebels? They\'ll only depose the government a little.'}, {'npc': 'seth', 'text': 'I don\'t want to invest in your revolution. Forget it.'}]}; this[143] = {'theme': 'HELP BRISTOL', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_helpbrisol'); }, 'msg': [{'npc': 'grid', 'text': 'Here\'s a citation for you!'}, {'npc': 'seth', 'text': 'What the?! From who?!'}, {'npc': 'grid', 'text': 'Your wife. She\'s sick of you hiding from all the lawyers.'}, {'npc': 'seth', 'text': 'You mean Bristol? Yes, I avoid lawyers but only for money cases which this isn\'t. Certainly, she wanted the money when married me! I put up with everything she tried on me so she ran away. She won\'t get any of my money, I made preparations before the wedding. Don\'t ever betray me again!'}, {'event': 'give_exp', 'value': 3500}, {'event': 'set_flag', 'flag': 'q_helpbrisol', 'value': 2}, {'event': 'add_quest', 'quest': 'bristol_divorce', 'stage': 1}, {'npc': 'grid', 'text': 'Well, my job\'s done. No hard feelings.'}]}; this[144] = {'theme': 'BRISTOL\'S PHOTO', 'condition': function () { return (Core.Get()).game.hasQuestItem(10); }, 'msg': [{'npc': 'seth', 'text': 'What do you have here? My ex-wife\'s photo album?'}, {'npc': 'grid', 'text': 'Yep.'}, {'npc': 'seth', 'text': 'Please, give it to me.'}, {'npc': 'grid', 'text': 'So you did love her?'}, {'npc': 'seth', 'text': 'Of course not but she did have a great body. Is $1,000 enough?'}, {'event': 'give_money', 'value': 1000}, {'event': 'give_exp', 'value': 5000}, {'event': 'remove_quest_item', 'item': 10}, {'npc': 'grid', 'text': 'Okay, take it.'}]}; this[145] = {'theme': 'ABOUT YOURSELF', 'msg': [{'npc': 'grid', 'text': 'You\'re Hydra, the only daughter of the Fenders family, aren\'t you? I recognized you because of the outfit and the big knife.'}, {'npc': 'hydra', 'text': 'Yes, friend, that\'s me! Wanna run after the civilians with weapons together?'}, {'npc': 'grid', 'text': 'I\'ll have to refuse this time.'}]}; this[146] = {'theme': 'INVESTMENT', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_getinvestor') && !(Core.Get()).game.isFlag('q_hydranevermore'); }, 'msg': [{'npc': 'grid', 'text': 'Say... did you ever wanted to invest your parents money in something fun... like a Revolution, for example?'}, {'npc': 'hydra', 'text': 'Where\'s the fun in that?'}, {'npc': 'grid', 'text': 'People fighting, rivers of blood and so on'}, {'npc': 'hydra', 'text': 'Oh, I\'m loving it! I\'d like to... but my parents won\'t give me money for that now...'}, {'npc': 'hydra', 'text': 'I\'m being punished for the slaughter in Nevermore town...'}, {'npc': 'hydra', 'text': 'Maybe if you went to the town\'s mayor and asked him to forgive me, then my parents would forgive me as well!'}, {'npc': 'grid', 'text': 'Why don\'t you go yourself?'}, {'event': 'set_flag', 'flag': 'q_hydranevermore', 'value': 1}, {'event': 'add_quest', 'quest': 'feel_of_guilty', 'stage': 0}, {'npc': 'hydra', 'text': 'Something tells me they won\'t listen to me in person. Most likely they\'d start shooting on sight, then I\'d have to kill them all and the situation would get even worse.'}]}; this[147] = {'theme': 'NEGOTIATIONS WITH NEVERMORE', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_hydranevermore'); }, 'msg': [{'npc': 'hydra', 'text': 'Don\'t forget to talk to the mayor of Nevermore town.'}]}; this[148] = {'theme': 'NEGOTIATIONS WITH NEVERMORE - DONE', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_getinvestor') && 2 == (Core.Get()).game.getFlag('q_hydranevermore'); }, 'msg': [{'npc': 'hydra', 'text': 'How are the negotiations going?'}, {'npc': 'grid', 'text': 'It seem you\'re forgiven, somehow.'}, {'npc': 'hydra', 'text': 'Well... while you were away my parents already forgave me. They never stay angry at me for long. Now I\'d be happy to invest in your Revolution.'}, {'event': 'remove_quest_item', 'item': 13, 'condition': function () { return (Core.Get()).game.hasQuestItem(13); }}, {'event': 'fail_quest', 'quest': 'keabo_style', 'condition': function () { return (Core.Get()).game.inQuest('keabo_style'); }}, {'event': 'reset_flag', 'flag': 'q_getcastlekey'}, {'event': 'remove_quest_item', 'item': 14, 'condition': function () { return (Core.Get()).game.hasQuestItem(14); }}, {'event': 'give_exp', 'value': 4000}, {'event': 'set_flag', 'flag': 'q_getinvestor', 'value': 2}, {'event': 'complete_quest', 'quest': 'feel_of_guilty'}, {'event': 'add_quest', 'quest': 'meta_uprise', 'stage': 9}, {'npc': 'grid', 'text': 'Good, you won\'t regret it.'}]}; this[149] = {'theme': 'ABOUT YOURSELF', 'msg': [{'npc': 'grid', 'text': 'Who\'re you, sir?'}, {'npc': 'heraldio', 'text': 'My name\'s Heraldio. I own the castle in the middle of this city.'}, {'npc': 'grid', 'text': 'So you must be as rich as hell!'}, {'npc': 'heraldio', 'text': 'Sir, you\'re exactly right! Money - it\'s the Devil\'s own burden.'}, {'npc': 'grid', 'text': 'Maybe I could carry your burden for you? I can live with my own evil.'}, {'npc': 'heraldio', 'text': 'Sir, there is no way I\'d let you take such a risk.'}]}; this[150] = {'theme': 'INVESTMENTS', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_getinvestor') && !(Core.Get()).game.isFlag('q_getcastlekey'); }, 'msg': [{'npc': 'grid', 'text': 'Tell me, noble sir, whould you like to use your money to do something good?'}, {'npc': 'heraldio', 'text': 'What kind of deed do you mean, friend?'}, {'npc': 'grid', 'text': 'World revolution.'}, {'npc': 'heraldio', 'text': 'Well, I don\'t much like the present political situation. President Myst, in my opinion, is... stupid and ambitious, like snow in the middle of summer.'}, {'npc': 'grid', 'text': 'Good! I mean, the thing with snow is kind of lame, but it\'s good that you realize the world needs changes!'}, {'npc': 'heraldio', 'text': '...There\'s only one thing.'}, {'npc': 'grid', 'text': 'I knew there\'d be a catch...'}, {'npc': 'heraldio', 'text': 'I\'ve lost the key to my castle somewhere in Last Stand plains. Find it and I\'ll be able to help you.'}, {'npc': 'grid', 'text': 'Aren\'t you afraid that I\'ll use the key to steal all your money?'}, {'npc': 'heraldio', 'text': 'Not at all.'}, {'npc': 'heraldio', 'text': 'My castle isn\'t only protected by the lock but also by modern biometric scanners checking eyes, fingerprints and genes.'}, {'npc': 'grid', 'text': 'Then why the hell do you need a key!?'}, {'npc': 'heraldio', 'text': 'I can\'t enter without it. I wanted to remain authentic in the design of my castle... Though it\'s not the first time I\'ve lost a key.'}, {'npc': 'grid', 'text': 'I see. So I\'ll go and wander around Last Stand plains.'}, {'event': 'set_flag', 'flag': 'q_getcastlekey', 'value': 1}, {'npc': 'heraldio', 'text': 'Please be careful! Last Stand is a dangerous region. I\'d go there myself otherwise.'}]}; this[151] = {'theme': 'ABOUT THE KEY', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_getcastlekey') && !(Core.Get()).game.hasQuestItem(14); }, 'msg': [{'npc': 'grid', 'text': 'I\'m still looking for your key in the Last Stand plains.'}, {'npc': 'heraldio', 'text': 'Then what are you talking to me for? Just find it already.'}]}; this[152] = {'theme': 'RETURN THE KEY', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_getcastlekey') && (Core.Get()).game.hasQuestItem(14); }, 'msg': [{'npc': 'grid', 'text': 'Here\'s your key!'}, {'event': 'remove_quest_item', 'item': 14}, {'event': 'give_exp', 'value': 5000}, {'npc': 'heraldio', 'text': 'Now, finally, I can return home. Have your leader call me, we\'ll arrange the details.'}, {'event': 'remove_quest_item', 'item': 13, 'condition': function () { return (Core.Get()).game.hasQuestItem(13); }}, {'event': 'fail_quest', 'quest': 'keabo_style', 'condition': function () { return (Core.Get()).game.inQuest('keabo_style'); }}, {'event': 'reset_flag', 'flag': 'q_hydranevermore'}, {'event': 'fail_quest', 'quest': 'feel_of_guilty', 'condition': function () { return (Core.Get()).game.inQuest('feel_of_guilty'); }}, {'event': 'set_flag', 'flag': 'q_getcastlekey', 'value': 2}, {'event': 'set_flag', 'flag': 'q_getinvestor', 'value': 2}, {'event': 'add_quest', 'quest': 'meta_uprise', 'stage': 9}, {'npc': 'grid', 'text': 'Thanks!'}]}; }; _global.TalkData2En = v1; _global.TalkData2En extends TalkData3En; var v2 = v1.prototype; ASSetPropFlags(_global.TalkData2En.prototype, null, 1); } #endinitclip } movieClip 1954 __Packages.TalkDataEn { #initclip if (!_global.TalkDataEn) { var v1 = function () { super(); this[-1] = {'theme': '[ END DIALOGUE ]', 'msg': []}; this[0] = {'theme': 'ALIEN TRACE', 'condition': function () { return !(Core.Get()).game.isFlag('q_game_start'); }, 'msg': [{'event': 'set_flag', 'flag': 'q_game_start'}, {'npc': 'natan', 'text': 'Grid! You\'re our best man, so you\'re the only one I can entrust with this task ...'}, {'npc': 'natan', 'text': 'Grid! Are you listening to me?!'}, {'npc': 'grid', 'text': 'Sorry, Nathan. Forgot to pull off my earphones.'}, {'npc': 'natan', 'text': 'I\'m surprised you\'re still alive after all these years actually. Anyway, Grid. There\'ve been sightings of a UFO to the east of our base. Get out there and check what\'s going on.'}, {'event': 'add_quest', 'quest': 'ufo_visit', 'stage': 0}, {'event': 'weaken_fog', 'x': 3, 'y': 1, 'w': 14, 'h': 1}, {'event': 'mark', 'area': 'ufo1'}, {'event': 'add_guide', 'area': 'ufo1'}, {'event': 'limit_map', 'tl_x': 0, 'tl_y': 0, 'br_x': 1140, 'br_y': 480}, {'npc': 'grid', 'text': 'Ок.'}]}; this[1] = {'theme': 'K.A.U.F.O.', 'msg': [{'npc': 'natan', 'text': 'You\'re asking about KAUFO?! But you\'ve been working here for 5 years already! You\'re really weird, my friend.'}, {'npc': 'grid', 'text': 'I\'d like to hear it again.'}, {'npc': 'natan', 'text': 'Ok, whatever... KAUFO stands for "Kill All Unindentified Flying Objects". So we kill aliens without wasting our time talking to them. They speak only lies so whenever you see an alien, just kill it.'}, {'npc': 'grid', 'text': 'I knew that!'}, {'npc': 'natan', 'text': 'Then why did you ask?!'}, {'npc': 'grid', 'text': 'I thought you\'d say something new.'}]}; this[2] = {'theme': 'TELL ABOUT ALIENS', 'condition': function () { return (Core.Get()).game.getFlag('q_raymondehelp') == 3 && !(Core.Get()).game.isFlag('q_bigalienplan'); }, 'msg': [{'npc': 'grid', 'text': 'Nathan, you wouldn\'t believe...'}, {'npc': 'grid', 'text': '...'}, {'event': 'complete_quest', 'quest': 'ufo_visit'}, {'event': 'give_exp', 'value': 250}, {'npc': 'natan', 'text': 'So that\'s how it is... I\'ve had a brilliant idea! It\'s just like me to have a timely flash of inspiration. I\'m gifted, actually.'}, {'npc': 'natan', 'text': 'I need some time to refine the details of my plan. Return in one hour.'}, {'event': 'add_quest', 'quest': 'natan_plan', 'stage': 0}, {'event': 'set_flag', 'flag': 'q_bigalienplan', 'value': 1}, {'event': 'start_timer', 'timer': 't_bigplantimer'}, {'npc': 'grid', 'text': 'I hate waiting! How will we kill this time?'}, {'npc': 'katenka', 'text': 'Let\'s walk around and look for an adventure.'}]}; this[3] = {'theme': 'NATHAN\'S GREAT PLAN', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_bigalienplan') && (Core.Get()).game.timers.t_bigplantimer < 18000; }, 'msg': [{'npc': 'grid', 'text': 'Nathan, how\'s that brilliant plan coming along?'}, {'npc': 'natan', 'text': 'Not done yet, these things take time. Come back later. Can\'t you find some way to occupy yourself?.'}]}; this[4] = {'theme': 'NATHAN\'S GREAT PLAN', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_bigalienplan') && (Core.Get()).game.timers.t_bigplantimer >= 18000; }, 'msg': [{'npc': 'natan', 'text': 'Where have you been all this time, Grid? I perfected my great plan long ago!'}, {'npc': 'grid', 'text': 'Oh, Nathan, please do tell us. We\'re just dying to know your ultimate plan.'}, {'npc': 'natan', 'text': 'For some reason I detect a hint of sarcasm in your words.'}, {'npc': 'grid', 'text': 'Possibly because it\'s pouring off them in torrents?..'}, {'npc': 'natan', 'text': 'It\'s not important now. Hear me out, my loyal men! I have a contact with Carl Vaccuol. He\'s not fond of the aliens now. He\'ll help us by providing the temporal TV which can show the past of the area it\'s turned upon.'}, {'npc': 'grid', 'text': 'So you can set it up in the girls\' bathroom after the gym\'s closed?.. Or you can spy your girlfriend?'}, {'npc': 'natan', 'text': 'That kind of prank is useless to us! Get this TV and visit the 6 areas where the UFO was seen. Bring the video to me and I\'ll be able to find the aliens\' whereabouts.'}, {'npc': 'grid', 'text': 'I like the bathroom option more.'}, {'npc': 'natan', 'text': 'Meet Vaccuol and visit the UFO Sites. Then return to me'}, {'event': 'set_flag', 'flag': 'q_bigalienplan', 'value': 2}, {'event': 'kill_timer', 'timer': 't_bigplantimer'}, {'event': 'mark', 'area': 'ufo2'}, {'event': 'mark', 'area': 'ufo3'}, {'event': 'mark', 'area': 'ufo4'}, {'event': 'mark', 'area': 'ufo5'}, {'event': 'mark', 'area': 'ufo6'}, {'event': 'add_guide', 'area': 'ufo2'}, {'event': 'add_guide', 'area': 'ufo3'}, {'event': 'add_guide', 'area': 'ufo4'}, {'event': 'add_guide', 'area': 'ufo5'}, {'event': 'add_guide', 'area': 'ufo6'}, {'event': 'add_quest', 'quest': 'natan_plan', 'stage': 1}, {'npc': 'grid', 'text': 'Ок.'}, {'npc': 'katenka', 'text': 'By the way, Grid, I\'ll have to leave you temporarily. Key and I have a mission in Gibson City.'}, {'event': 'leave_team', 'npc': 1}, {'event': 'leave_team', 'npc': 2}, {'npc': 'grid', 'text': 'Sure, see ya.'}]}; this[5] = {'theme': 'NATHAN\'S GREAT PLAN - DONE', 'condition': function () { return 2 == (Core.Get()).game.getFlag('q_bigalienplan') && (Core.Get()).game.isFlag('q_ufotele1') && (Core.Get()).game.isFlag('q_ufotele2') && (Core.Get()).game.isFlag('q_ufotele3') && (Core.Get()).game.isFlag('q_ufotele4') && (Core.Get()).game.isFlag('q_ufotele5') && (Core.Get()).game.isFlag('q_ufotele6'); }, 'msg': [{'npc': 'grid', 'text': 'Nathan, I\'ve collected the data.'}, {'event': 'remove_quest_item', 'item': 0}, {'event': 'remove_quest_item', 'item': 1}, {'event': 'remove_quest_item', 'item': 2}, {'event': 'remove_quest_item', 'item': 3}, {'event': 'remove_quest_item', 'item': 4}, {'event': 'remove_quest_item', 'item': 5}, {'event': 'remove_quest_item', 'item': 6}, {'event': 'give_exp', 'value': 5000}, {'event': 'set_flag', 'flag': 'q_bigalienplan', 'value': 3}, {'event': 'start_timer', 'timer': 't_bigplantimer2'}, {'event': 'add_quest', 'quest': 'natan_plan', 'stage': 2}, {'npc': 'natan', 'text': 'Great, now give me some time to watch all these tapes.'}, {'npc': 'grid', 'text': 'I\'ll have to wait again?!'}, {'npc': 'natan', 'text': 'It\'s only for 30 minutes. Just give me a little time, that\'s not so hard.'}]}; this[6] = {'theme': 'NATHAN\'S GREAT PLAN - NEXT', 'condition': function () { return 3 == (Core.Get()).game.getFlag('q_bigalienplan') && (Core.Get()).game.timers.t_bigplantimer2 < 9000; }, 'msg': [{'npc': 'grid', 'text': 'Nathan, are you done with the tapes?'}, {'npc': 'natan', 'text': 'Not yet, and if you keep interrupting me I never will be.'}]}; this[7] = {'theme': 'NATHAN\'S GREAT PLAN - NEXT', 'condition': function () { return 3 == (Core.Get()).game.getFlag('q_bigalienplan') && (Core.Get()).game.timers.t_bigplantimer2 >= 9000; }, 'msg': [{'npc': 'natan', 'text': 'I\'ve watched all the tapes and now know everything!'}, {'npc': 'grid', 'text': 'Please, tell me.'}, {'npc': 'natan', 'text': 'By keeping a count while watching I\'ve figured out where their base is. It\'s in the Horse Sea! Not near it, right in the sea!'}, {'npc': 'natan', 'text': 'Key and Katenka have finished their task and will join you for this mission. Go to the port and find a way to get to that base. I\'ve marked it\'s location on your map.'}, {'event': 'set_flag', 'flag': 'q_bigalienplan', 'value': 4}, {'event': 'kill_timer', 'timer': 't_bigplantimer2'}, {'event': 'add_quest', 'quest': 'natan_plan', 'stage': 3}, {'npc': 'key', 'text': 'Nathan, you wouldn\'t believe what we\'ve seen and done...'}, {'npc': 'natan', 'text': 'I\'ve already watched it on the television.'}, {'event': 'join_team', 'npc': 1}, {'event': 'join_team', 'npc': 2}, {'npc': 'key', 'text': 'Too bad. I\'m good at telling stories.'}]}; this[8] = {'theme': 'U.F.O.', 'condition': function () { return !(Core.Get()).game.isFlag('v_ufo1visit'); }, 'msg': [{'event': 'set_flag', 'flag': 'v_ufo1visit'}, {'event': 'add_quest', 'quest': 'ufo_visit', 'stage': 1}, {'npc': 'grid', 'text': 'It seems some aliens were here. Scorched earth, drawings in the fields, the remains of a disco stage - everything points to that fact.'}, {'npc': 'grid', 'text': 'I always wondered why aliens love disco so much but I\'ve never had a chance to ask them. I\'ve just killed them on sight, just as KAUFO\'s rules state.'}, {'npc': 'grid', 'text': 'I\'ll have to ask someone from the nearest village about the incident. They might know something.'}]}; this[9] = {'theme': 'ТEMPORAL TV', 'condition': function () { return !(Core.Get()).game.isFlag('q_ufotele1') && (Core.Get()).game.hasQuestItem(0); }, 'msg': [{'event': 'set_flag', 'flag': 'q_ufotele1'}, {'event': 'set_area_flag', 'flag': 'ufo_tele'}, {'npc': 'grid', 'text': 'Ok, let\'s turn on the temporal TV and watch the show...'}, {'event': 'give_quest_item', 'item': 1}, {'event': 'give_exp', 'value': 1000}, {'npc': 'grid', 'text': 'Aliens appeared here and had a disco. Some of the villagers joined in then, when the disco ended, the aliens departed. Some villagers went with them for some reason...'}]}; this[10] = {'theme': 'ТEMPORAL TV', 'condition': function () { return !(Core.Get()).game.isFlag('q_ufotele1') && (Core.Get()).game.getFlag('q_bigalienplan') == 2 && !(Core.Get()).game.hasQuestItem(0) && !(Core.Get()).game.isAreaFlag('ufo_tele'); }, 'msg': [{'event': 'set_area_flag', 'flag': 'ufo_tele'}, {'npc': 'grid', 'text': 'Aliens were spotted here but without the temporal TV there\'s nothing I can do.'}]}; this[11] = {'theme': 'ТEMPORAL TV', 'condition': function () { return (Core.Get()).game.isFlag('q_ufotele1') && !(Core.Get()).game.isAreaFlag('ufo_tele') && !(Core.Get()).game.isFlag('q_ufotele1_x'); }, 'msg': [{'event': 'set_area_flag', 'flag': 'ufo_tele'}, {'npc': 'grid', 'text': 'I\'ve already collected the information I need here.'}]}; this[12] = {'theme': 'TEMPORAL TV', 'condition': function () { return !(Core.Get()).game.isFlag('q_ufotele2') && (Core.Get()).game.hasQuestItem(0); }, 'msg': [{'event': 'set_flag', 'flag': 'q_ufotele2'}, {'event': 'set_area_flag', 'flag': 'ufo_tele'}, {'npc': 'grid', 'text': 'Ok, let\'s turn on the temporal TV and watch the show...'}, {'event': 'give_quest_item', 'item': 2}, {'event': 'give_exp', 'value': 1000}, {'npc': 'grid', 'text': 'Aliens made a stop here and tried to sell hotdogs...'}]}; this[13] = {'theme': 'TEMPORAL TV', 'condition': function () { return !(Core.Get()).game.isFlag('q_ufotele2') && (Core.Get()).game.getFlag('q_bigalienplan') == 2 && !(Core.Get()).game.hasQuestItem(0) && !(Core.Get()).game.isAreaFlag('ufo_tele'); }, 'msg': [{'event': 'set_area_flag', 'flag': 'ufo_tele'}, {'npc': 'grid', 'text': 'Aliens were spotted here but without the temporal TV there\'s nothing I can do.'}]}; this[14] = {'theme': 'TEMPORAL TV', 'condition': function () { return (Core.Get()).game.isFlag('q_ufotele2') && !(Core.Get()).game.isAreaFlag('ufo_tele') && !(Core.Get()).game.isFlag('q_ufotele2_x'); }, 'msg': [{'event': 'set_area_flag', 'flag': 'ufo_tele'}, {'npc': 'grid', 'text': 'I\'ve already collected the information I need here.'}]}; this[15] = {'theme': 'TEMPORAL TV', 'condition': function () { return !(Core.Get()).game.isFlag('q_ufotele3') && (Core.Get()).game.hasQuestItem(0); }, 'msg': [{'event': 'set_flag', 'flag': 'q_ufotele3'}, {'event': 'set_area_flag', 'flag': 'ufo_tele'}, {'npc': 'grid', 'text': 'Ok, let\'s turn the temporal TV on and watch the show...'}, {'event': 'give_quest_item', 'item': 3}, {'event': 'give_exp', 'value': 1000}, {'npc': 'grid', 'text': 'There was an alien ship hidden in the fields of wheat. Katenka and Key came across it and made a huge mess.'}]}; this[16] = {'theme': 'TEMPORAL TV', 'condition': function () { return !(Core.Get()).game.isFlag('q_ufotele3') && (Core.Get()).game.getFlag('q_bigalienplan') == 2 && !(Core.Get()).game.hasQuestItem(0) && !(Core.Get()).game.isAreaFlag('ufo_tele'); }, 'msg': [{'event': 'set_area_flag', 'flag': 'ufo_tele'}, {'npc': 'grid', 'text': 'Aliens were spotted here but without the temporal TV there\'s nothing I can do.'}]}; this[17] = {'theme': 'TEMPORAL TV', 'condition': function () { return (Core.Get()).game.isFlag('q_ufotele3') && !(Core.Get()).game.isAreaFlag('ufo_tele') && !(Core.Get()).game.isFlag('q_ufotele3_x'); }, 'msg': [{'event': 'set_area_flag', 'flag': 'ufo_tele'}, {'npc': 'grid', 'text': 'I\'ve already collected the information I need here.'}]}; this[18] = {'theme': 'TEMPORAL TV', 'condition': function () { return !(Core.Get()).game.isFlag('q_ufotele4') && (Core.Get()).game.hasQuestItem(0); }, 'msg': [{'event': 'set_flag', 'flag': 'q_ufotele4'}, {'event': 'set_area_flag', 'flag': 'ufo_tele'}, {'npc': 'grid', 'text': 'Ok, let\'s turn the temporal TV on and watch the show...'}, {'event': 'give_quest_item', 'item': 4}, {'event': 'give_exp', 'value': 1000}, {'event': 'give_quest_item', 'item': 18}, {'npc': 'grid', 'text': 'Aliens disembarked here to shoot themselves on videocams. The genre of this movie is anyone\'s guess. All they did was wave their hands around at random. It seems one of the cameras has been left here.'}]}; this[19] = {'theme': 'TEMPORAL TV', 'condition': function () { return !(Core.Get()).game.isFlag('q_ufotele4') && (Core.Get()).game.getFlag('q_bigalienplan') == 2 && !(Core.Get()).game.hasQuestItem(0) && !(Core.Get()).game.isAreaFlag('ufo_tele'); }, 'msg': [{'event': 'set_area_flag', 'flag': 'ufo_tele'}, {'npc': 'grid', 'text': 'Aliens were spotted here but without the temporal TV there\'s nothing I can do.'}]}; this[20] = {'theme': 'TEMPORAL TV', 'condition': function () { return (Core.Get()).game.isFlag('q_ufotele4') && !(Core.Get()).game.isAreaFlag('ufo_tele') && !(Core.Get()).game.isFlag('q_ufotele4_x'); }, 'msg': [{'event': 'set_area_flag', 'flag': 'ufo_tele'}, {'npc': 'grid', 'text': 'I\'ve already collected the information I need here.'}]}; this[21] = {'theme': 'TEMPORAL TV', 'condition': function () { return !(Core.Get()).game.isFlag('q_ufotele5') && (Core.Get()).game.hasQuestItem(0); }, 'msg': [{'event': 'set_flag', 'flag': 'q_ufotele5'}, {'event': 'set_area_flag', 'flag': 'ufo_tele'}, {'npc': 'grid', 'text': 'Ok, let\'s turn the temporal TV on and watch the show...'}, {'event': 'give_quest_item', 'item': 5}, {'event': 'give_exp', 'value': 1000}, {'npc': 'grid', 'text': 'The aliens tried to start a disco here too but no-one came. Probably a bad location.'}]}; this[22] = {'theme': 'TEMPORAL TV', 'condition': function () { return !(Core.Get()).game.isFlag('q_ufotele5') && (Core.Get()).game.getFlag('q_bigalienplan') == 2 && !(Core.Get()).game.hasQuestItem(0) && !(Core.Get()).game.isAreaFlag('ufo_tele'); }, 'msg': [{'event': 'set_area_flag', 'flag': 'ufo_tele'}, {'npc': 'grid', 'text': 'Aliens were spotted here but without the temporal TV there\'s nothing I can do.'}]}; this[23] = {'theme': 'TEMPORAL TV', 'condition': function () { return (Core.Get()).game.isFlag('q_ufotele5') && !(Core.Get()).game.isAreaFlag('ufo_tele') && !(Core.Get()).game.isFlag('q_ufotele5_x'); }, 'msg': [{'event': 'set_area_flag', 'flag': 'ufo_tele'}, {'npc': 'grid', 'text': 'I\'ve already collected the information I need here.'}]}; this[24] = {'theme': 'TEMPORAL TV', 'condition': function () { return !(Core.Get()).game.isFlag('q_ufotele6') && (Core.Get()).game.hasQuestItem(0); }, 'msg': [{'event': 'set_flag', 'flag': 'q_ufotele6'}, {'event': 'set_area_flag', 'flag': 'ufo_tele'}, {'npc': 'grid', 'text': 'Ok, let\'s turn the temporal TV on and watch the show...'}, {'event': 'give_quest_item', 'item': 6}, {'event': 'give_exp', 'value': 1000}, {'npc': 'grid', 'text': 'Aliens disembarked here for a short period of time but don\'t appear to have done anything significant.'}]}; this[25] = {'theme': 'TEMPORAL TV', 'condition': function () { return !(Core.Get()).game.isFlag('q_ufotele6') && (Core.Get()).game.getFlag('q_bigalienplan') == 2 && !(Core.Get()).game.hasQuestItem(0) && !(Core.Get()).game.isAreaFlag('ufo_tele'); }, 'msg': [{'event': 'set_area_flag', 'flag': 'ufo_tele'}, {'npc': 'grid', 'text': 'Aliens were spotted here but without the temporal TV there\'s nothing I can do.'}]}; this[26] = {'theme': 'TEMPORAL TV', 'condition': function () { return (Core.Get()).game.isFlag('q_ufotele6') && !(Core.Get()).game.isAreaFlag('ufo_tele') && !(Core.Get()).game.isFlag('q_ufotele6_x'); }, 'msg': [{'event': 'set_area_flag', 'flag': 'ufo_tele'}, {'npc': 'grid', 'text': 'I\'ve already collected the information I need here.'}]}; this[27] = {'theme': 'UFO', 'condition': function () { return (Core.Get()).game.isFlag('v_ufo1visit'); }, 'msg': [{'npc': 'grid', 'text': 'Have you seen anything strange recently?'}, {'npc': 'halisted', 'text': 'Me? No, haven\'t seen anything. What should I have seen anyway?'}, {'npc': 'grid', 'text': 'Something like a ship full of aliens?'}, {'npc': 'halisted', 'text': 'Oh, that. Yes, I saw them.'}, {'npc': 'grid', 'text': 'Didn\'t you think that was strange?'}, {'npc': 'halisted', 'text': 'Nope.'}, {'npc': 'grid', 'text': '...'}, {'npc': 'grid', 'text': 'Anyway, did you see where that ship was headed?'}, {'npc': 'halisted', 'text': 'No, but one of the aliens said...'}, {'npc': 'grid', 'text': 'One of the aliens?!'}, {'npc': 'halisted', 'text': 'Well, yeah. The whole village went to the disco they made. And one of the aliens mentioned they were heading to Integra City.'}, {'event': 'give_exp', 'value': 50, 'condition': function () { return !(Core.Get()).game.isFlag('q_go2integra'); }}, {'event': 'add_quest', 'quest': 'ufo_visit', 'stage': 2, 'condition': function () { return !(Core.Get()).game.isFlag('q_go2integra'); }}, {'event': 'limit_map', 'tl_x': 0, 'tl_y': 0, 'br_x': 1560, 'br_y': 480, 'condition': function () { return !(Core.Get()).game.isFlag('q_go2integra'); }}, {'event': 'set_flag', 'flag': 'q_go2integra', 'condition': function () { return !(Core.Get()).game.isFlag('q_go2integra'); }}, {'npc': 'grid', 'text': 'Thanks for the information.'}]}; this[28] = {'theme': 'MISSED CITIZENS', 'condition': function () { return (Core.Get()).game.isFlag('q_ufotele1'); }, 'msg': [{'npc': 'grid', 'text': 'Haven\'t you noticed some of the villagers have been missing since the disco?'}, {'npc': 'halisted', 'text': 'Now you mention it, yeah! But I\'ve no idea where they are.'}, {'npc': 'grid', 'text': 'During that disco the aliens took some of your villager into their ship and left.'}, {'event': 'set_flag', 'flag': 'q_findnikkyvillagers', 'condition': function () { return !(Core.Get()).game.isFlag('q_findnikkyvillagers'); }}, {'npc': 'halisted', 'text': 'Who\'d have imagined that! If you find them, please let me know.'}]}; this[29] = {'theme': 'TRADE', 'msg': [{'event': 'trade', 'npc': 'halisted'}]}; this[30] = {'theme': 'WORK', 'condition': function () { return (Core.Get()).game.isFlag('q_ho_job') && !(Core.Get()).game.isFlag('v_astralflower'); }, 'msg': [{'npc': 'grid', 'text': 'Have any jobs for me?'}, {'npc': 'ho', 'text': 'Jobs? There\'re plenty of jobs here! For example, I need seeds for my astral flower!'}, {'npc': 'grid', 'text': 'Where can I find them?'}, {'npc': 'ho', 'text': 'Walk nearby my garden, they occasionally drop from various enemies. Get me 10 seeds and return here.'}, {'event': 'set_flag', 'flag': 'v_astralflower', 'value': 1}, {'event': 'add_quest', 'quest': 'astral_flowers', 'stage': 0}, {'npc': 'grid', 'text': 'I see...'}]}; this[31] = {'theme': 'SEEDS', 'condition': function () { return 1 == (Core.Get()).game.getFlag('v_astralflower') && !(Core.Get()).game.hasQuestItems(7, 10); }, 'msg': [{'npc': 'grid', 'text': '...\nSo what did you say I need?..'}, {'npc': 'ho', 'text': '10 astral seeds! Why is that so hard to remember?'}, {'npc': 'grid', 'text': 'Nevermind. I\'ll bring them soon.'}]}; this[32] = {'theme': 'SEEDS - DONE', 'condition': function () { return 1 == (Core.Get()).game.getFlag('v_astralflower') && (Core.Get()).game.hasQuestItems(7, 10); }, 'msg': [{'event': 'remove_quest_item', 'item': 7}, {'event': 'give_money', 'value': 1000}, {'event': 'give_exp', 'value': 500}, {'event': 'set_flag', 'flag': 'v_astralflower', 'value': 2}, {'event': 'complete_quest', 'quest': 'astral_flowers'}, {'npc': 'ho', 'text': 'Great! Astral seeds! Take some astral flowers for your efforts...'}]}; this[33] = {'theme': 'ABOUT YOURSELF', 'msg': [{'npc': 'grid', 'text': 'Who are you and what are you doing here?'}, {'npc': 'ho', 'text': 'Me? I\'m Ho the Farmer! I\'m planting magical flowers!'}, {'npc': 'grid', 'text': 'Magical? What\'s so magical about them?'}, {'event': 'set_flag', 'flag': 'q_ho_job'}, {'npc': 'ho', 'text': 'Oh, they can carry you away from this damned post-industrial society and those stupid cyborgs to the land of fairies and unicorns!'}]}; this[34] = {'theme': 'CHEAT', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_gotosummerg') && (Core.Get()).game.isFlag('q_sg1') && (Core.Get()).game.isFlag('q_sg2') && (Core.Get()).game.isFlag('q_sg3'); }, 'msg': [{'npc': 'grid', 'text': 'Is it just me or do the people here dress really weird?'}, {'npc': 'katenka', 'text': 'I think it\'s normal.'}, {'npc': 'craven', 'text': 'Look! There\'s Carl in the window of that house! There\'s a gag in his mouth!'}, {'npc': 'carl', 'text': 'M-m! M-m-m-m, m-m-m, MMMM!'}, {'npc': 'alien1', 'text': 'Oh no! We\'ve been spoted! Let\'s turn off the holo-masks!'}, {'npc': 'grid', 'text': 'Aliens!'}, {'npc': 'alien1a', 'text': 'Let me explain you everything...'}, {'event': 'set_flag', 'flag': 'q_gotosummerg', 'value': 2}, {'event': 'set_area_flag', 'flag': 'q_sg_battle'}, {'npc': 'katenka', 'text': 'Fight!'}, {'event': 'battle', 'band': 'sg_aliens'}]}; this[35] = {'theme': 'WEIRD STUFF', 'condition': function () { return !(Core.Get()).game.getFlag('q_sg1'); }, 'msg': [{'event': 'set_flag', 'flag': 'q_sg1'}, {'npc': 'grid', 'text': 'He\'s really starting to scare me. I don\'t much want to talk to him...'}]}; this[36] = {'theme': 'WEIRD STUFF', 'condition': function () { return !(Core.Get()).game.getFlag('q_sg2'); }, 'msg': [{'event': 'set_flag', 'flag': 'q_sg2'}, {'npc': 'grid', 'text': 'Don\'t do that! Better learn the language of the country you\'re in. Damn foreigners...'}, {'npc': 'alien2', 'text': 'No. We - locals. We long here live. 250 years!'}, {'npc': 'grid', 'text': 'Alright!.. I\'d best get out of here!..'}]}; this[37] = {'theme': 'WEIRD STUFF', 'condition': function () { return !(Core.Get()).game.getFlag('q_sg3'); }, 'msg': [{'event': 'set_flag', 'flag': 'q_sg3'}, {'npc': 'grid', 'text': 'This city is definitely not normal...'}]}; this[38] = {'theme': 'CARL VACCUOL', 'condition': function () { return 2 == (Core.Get()).game.getFlag('q_gotosummerg') && 1 == (Core.Get()).game.getFlag('q_raymondehelp') && !(Core.Get()).game.isAreaFlag('q_sg_battle'); }, 'msg': [{'event': 'set_flag', 'flag': 'q_sg3'}, {'npc': 'craven', 'text': 'Let me untie you, Carl...'}, {'npc': 'carl', 'text': '...'}, {'npc': 'carl', 'text': 'Oh... finally. Those weird creatures tried to tell me that science isn\'t everything in life and I must have fun... they forced me to dance, eat fast food and meet women... That horrible experience almost turned my hair grey!'}, {'event': 'remove_quest_item', 'item': 22}, {'event': 'remove_quest_item', 'item': 23}, {'event': 'give_exp', 'value': 1000}, {'event': 'set_flag', 'flag': 'q_raymondehelp', 'value': 2}, {'event': 'add_quest', 'quest': 'meta_raimonde', 'stage': 2}, {'event': 'leave_team', 'npc': 8}, {'npc': 'craven', 'text': 'I\'ll walk you to Raymonde Village and then fly to the base. Grid, you should set off immediately since you can\'t fly. I\'ll be there waiting for you, and... thanks for your help!'}]}; this[39] = {'theme': 'INTEGRA', 'condition': function () { return (Core.Get()).game.isFlag('q_go2integra') && !(Core.Get()).game.isFlag('integra_noone'); }, 'msg': [{'event': 'set_flag', 'flag': 'integra_noone'}, {'npc': 'grid', 'text': 'Impossible! There\'s no-one in the whole city! It seems like all the citizens just disappeared!.. It must be aliens\' doing.'}, {'npc': 'katenka', 'text': 'Yeah, I think so too. Though maybe it\'s because of the air-pressure.'}, {'npc': 'grid', 'text': 'Well if it isn\'t my K.A.U.F.O. colleague Katenka'}, {'npc': 'katenka', 'text': 'Yep. At least it looks like!'}, {'npc': 'grid', 'text': '...And as usual you\'re talking funny...'}, {'npc': 'grid', 'text': 'Anyway what are you doing here?'}, {'npc': 'katenka', 'text': 'I wanted to buy some new devices.'}, {'npc': 'grid', 'text': 'Devices?'}, {'npc': 'katenka', 'text': 'Yep, those devices that you equip to get new abilities or improve your skills. But it seems there\'s no-one around to sell me anything... since there\'s no-one around.'}, {'npc': 'grid', 'text': 'Hm...'}, {'event': 'give_money', 'value': 50}, {'npc': 'katenka', 'text': 'Hey, stealing is wrong!'}, {'npc': 'grid', 'text': 'I don\'t see anyone here to take issue with it. I think we should report to Nathan.'}, {'event': 'give_exp', 'value': 100}, {'event': 'join_team', 'npc': 2}, {'event': 'add_quest', 'quest': 'ufo_visit', 'stage': 3}, {'event': 'set_flag', 'flag': 'v_kaufo_plot', 'value': 1}, {'event': 'set_flag', 'flag': 'btl_int_meta'}, {'npc': 'katenka', 'text': 'I\'ll go with you.'}]}; this[40] = {'theme': 'CID', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_waitforalien'); }, 'msg': [{'npc': 'craven', 'text': 'Grid! I\'ve been looking for you everywhere!'}, {'npc': 'grid', 'text': 'What happened?'}, {'npc': 'craven', 'text': 'Some madman named Cid has killed Lina and taken control of the Meta-Warriors...'}, {'npc': 'craven', 'text': 'We thought at first that he was a gifted engineer willing to help us. Now it turns out the chips he was implanting in us were to give him control!'}, {'event': 'fail_quest', 'quest': 'meta_uprise', 'condition': function () { return (Core.Get()).game.inQuest('meta_uprise'); }}, {'event': 'reset_flag', 'flag': 'q_metatechnicans'}, {'event': 'reset_flag', 'flag': 'q_getchips'}, {'event': 'reset_flag', 'flag': 'q_get3parts'}, {'event': 'remove_quest_item', 'item': 24, 'condition': function () { return (Core.Get()).game.hasQuestItem(24); }}, {'event': 'remove_quest_item', 'item': 25, 'condition': function () { return (Core.Get()).game.hasQuestItem(25); }}, {'event': 'remove_quest_item', 'item': 26, 'condition': function () { return (Core.Get()).game.hasQuestItem(26); }}, {'event': 'remove_quest_item', 'item': 27, 'condition': function () { return (Core.Get()).game.hasQuestItem(27); }}, {'event': 'remove_quest_item', 'item': 8, 'condition': function () { return (Core.Get()).game.hasQuestItem(8); }}, {'event': 'remove_quest_item', 'item': 15, 'condition': function () { return (Core.Get()).game.hasQuestItem(15); }}, {'event': 'remove_quest_item', 'item': 19, 'condition': function () { return (Core.Get()).game.hasQuestItem(19); }}, {'event': 'reset_flag', 'flag': 'q_allycalipso'}, {'event': 'reset_flag', 'flag': 'q_getinvestor'}, {'event': 'remove_quest_item', 'item': 13, 'condition': function () { return (Core.Get()).game.hasQuestItem(13); }}, {'event': 'fail_quest', 'quest': 'keabo_style', 'condition': function () { return (Core.Get()).game.inQuest('keabo_style'); }}, {'event': 'reset_flag', 'flag': 'q_hydranevermore'}, {'event': 'fail_quest', 'quest': 'feel_of_guilty', 'condition': function () { return (Core.Get()).game.inQuest('feel_of_guilty'); }}, {'event': 'reset_flag', 'flag': 'q_getcastlekey'}, {'event': 'remove_quest_item', 'item': 14, 'condition': function () { return (Core.Get()).game.hasQuestItem(14); }}, {'event': 'reset_flag', 'flag': 'q_startrevolution'}, {'npc': 'grid', 'text': 'Then we\'ll destroy Cid.'}, {'event': 'give_exp', 'value': 5000}, {'event': 'join_team', 'npc': 8}, {'event': 'set_flag', 'flag': 'q_waitforalien', 'value': 2}, {'event': 'add_quest', 'quest': 'talks_with_aliens', 'stage': 2}, {'npc': 'craven', 'text': 'Thanks!'}]}; this[41] = {'theme': 'CHIP 707', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_getchips') && !(Core.Get()).game.hasQuestItem(8); }, 'msg': [{'npc': 'grid', 'text': 'I need a chip 707. Do you know where I could find one?'}, {'npc': 'clod', 'text': 'Sure, here. Take it. We have all we need and plenty spare as well.'}, {'event': 'give_quest_item', 'item': 8}, {'event': 'give_exp', 'value': 1000}, {'npc': 'grid', 'text': 'Thanks.'}]}; this[42] = {'theme': 'DISAPPEARANCE?!', 'condition': function () { return !(Core.Get()).game.isFlag('q_integra_talk_clod'); }, 'msg': [{'npc': 'grid', 'text': 'I visited this city some time ago and there was no-one here. What happened?'}, {'event': 'give_exp', 'value': 500}, {'event': 'set_flag', 'flag': 'q_integra_talk_clod'}, {'npc': 'clod', 'text': 'The aliens invited us onto their ship as guests. Their cooking isn\'t much good, but they\'re all really nice people.'}]}; this[43] = {'theme': 'PORTAL TO ALIEN BASE', 'condition': function () { return 0 < (Core.Get()).game.getFlag('q_waitforalien'); }, 'msg': [{'npc': 'grid', 'text': 'Sir F said you could help me teleport to the alien base.'}, {'npc': 'clod', 'text': 'Yeah, I can do that!'}, {'event': 'move_to_area', 'area': 'alienbase'}]}; this[44] = {'theme': 'DISAPPEARANCE?!', 'condition': function () { return !(Core.Get()).game.isFlag('q_integra_talk_jake'); }, 'msg': [{'npc': 'grid', 'text': 'I visited this city some time ago and there was no-one here. What happened?'}, {'npc': 'jake', 'text': 'We were kidnapped by aliens. They taught us how to improve our building and planning skills.'}, {'npc': 'jake', 'text': 'The only bad thing about it is that someone stole my €50 while I was away. I was so sad! Have you seen this person on your visit?'}, {'event': 'give_exp', 'value': 500}, {'event': 'set_flag', 'flag': 'q_integra_talk_jake'}, {'npc': 'grid', 'text': 'I have no idea who that could be. Must be a terrible person.'}]}; this[45] = {'theme': 'TRADE', 'msg': [{'event': 'trade', 'npc': 'jake'}]}; this[46] = {'theme': 'DISAPPEARANCE?!', 'condition': function () { return !(Core.Get()).game.isFlag('q_integra_talk_alexa'); }, 'msg': [{'npc': 'grid', 'text': 'I visited this city some time ago and there was no-one here. What happened?'}, {'event': 'give_exp', 'value': 500}, {'event': 'set_flag', 'flag': 'q_integra_talk_alexa'}, {'npc': 'alexa', 'text': 'We were kind of kidnapped by aliens. They tried to entertain us but their movies really suck.'}]}; this[47] = {'theme': 'DISAPPEARANCE?!', 'condition': function () { return !(Core.Get()).game.isFlag('q_integra_talk_lindwid'); }, 'msg': [{'npc': 'grid', 'text': 'I visited this city some time ago and there was no-one here. What happened?'}, {'event': 'give_exp', 'value': 500}, {'event': 'set_flag', 'flag': 'q_integra_talk_lindwid'}, {'npc': 'lindwid', 'text': 'Really? Maybe. I had\'t noticed, I was so busy with my architectural project. But you say we were kidnapped by aliens? Maybe it was an alien who helped me with the Nerotower project but I don\'t remember. I didn\'t look at him while he was talking.'}]}; this[48] = {'theme': 'WHAT ARE YOU DOING?', 'msg': [{'npc': 'grid', 'text': 'Hey, what are you doing? You look so busy...'}, {'npc': 'lindwid', 'text': 'I\'m designing buildings, bridges, statues - everything. I\'m Lindwid Bellaster, architect first class.'}]}; this[49] = {'theme': 'META-WARRIORS', 'condition': function () { return !(Core.Get()).game.isFlag('q_meta_intro'); }, 'msg': [{'event': 'set_flag', 'flag': 'q_integra_people'}, {'npc': 'micrasm', 'text': 'Welcome to our realm, pathetic mortals...'}, {'npc': 'vladimir', 'text': 'Micr, you really should change the greeting speach. Why did you catch these strangers again?'}, {'npc': 'micrasm', 'text': 'The Leader\'s orders. Besides, they looked suspicious... I caught them stealing money.'}, {'event': 'set_flag', 'flag': 'q_meta_intro', 'value': 1}, {'npc': 'katenka', 'text': 'You see! I told you stealing was wrong!'}]}; this[50] = {'theme': 'META-WARRIORS', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_meta_intro'); }, 'msg': [{'npc': 'leena', 'text': 'Greetings.'}, {'npc': 'grid', 'text': 'Who\'s that cute little girl with the big glasses and skull on her t-shirt?'}, {'npc': 'micrasm', 'text': 'Silence! How dare you to speak with such insolence to our leader!'}, {'npc': 'leena', 'text': 'Everything\'s okay, Micr. They didn\'t insult me, just pointed out some obvious facts. You can\'t blame them for their poor level of evolution, they don\'t have any soft installed in them.'}, {'npc': 'micrasm', 'text': 'Sorry, leader!'}, {'npc': 'leena', 'text': 'Official greeting: I am Lina Brennis, occupation: leader of the informal military organization \'Meta-Warriors\'. Please give me your personal data.'}, {'npc': 'katenka', 'text': 'What?..'}, {'npc': 'grid', 'text': 'Grid Wake, with me are Key McField and Ekaterina Atrevis. We\'re both mercenaries and bounty-hunters.'}, {'npc': 'leena', 'text': 'Information accepted. Whould you like to be known under your second and first name or just a single name?'}, {'npc': 'grid', 'text': 'Call me \'Godlike\', baby.'}, {'npc': 'leena', 'text': 'Grid Wake is now known as \'Godlike Baby\'. Godlike Baby, name your objectives in Integra City.'}, {'npc': 'katenka', 'text': 'Man, what\'s wrong with her?'}, {'npc': 'micrasm', 'text': 'Speak with respect! While in junior high the leader implanted a few nanoprocessors to her head.'}, {'npc': 'grid', 'text': 'We found out the city is empty. That caught our attention.'}, {'npc': 'leena', 'text': 'So you are looters?'}, {'npc': 'grid', 'text': 'No! We decided to investigate this abnormality.'}, {'npc': 'leena', 'text': 'Your behavior shows me you\'re lying. But this holds no interest for me now. We need your hands...'}, {'npc': 'grid', 'text': 'I won\'t give you mine!'}, {'npc': 'leena', 'text': 'Elaboration: we need people who are good at using guns with their hands. I\'ll make you a proposal that you can\'t refuse. Literally.'}, {'npc': 'leena', 'text': 'Let me draw your attention to the fact there are transducers on your legs. If you try to remove them or leave the radius of our locator they will detonate. So I assume that you are willing to help our organization.'}, {'npc': 'grid', 'text': 'Surely you can reason with a person!'}, {'event': 'set_flag', 'flag': 'q_meta_intro', 'value': 2}, {'event': 'set_flag', 'flag': 'v_gotooasis', 'value': 1}, {'event': 'limit_map', 'tl_x': 1140, 'tl_y': 0, 'br_x': 2400, 'br_y': 600}, {'npc': 'leena', 'text': 'When you\'re ready to listen to my task please talk to me again.'}]}; this[51] = {'theme': 'CID', 'condition': function () { return 2 == (Core.Get()).game.getFlag('q_waitforalien') && !(Core.Get()).game.getFlag('battle_cid'); }, 'msg': [{'npc': 'grid', 'text': 'Are you Cid?!'}, {'npc': 'cid', 'text': 'That name is used to call my attention, so yes. What is your buisiness with me?'}, {'npc': 'grid', 'text': 'I came to avenge Lina!'}, {'npc': 'cid', 'text': 'That prase is incorrect. The corrected phrase is: «I came to try to avenge Lina». «I came to die here» would do as well...'}, {'event': 'set_flag', 'flag': 'q_afterbattle_cid'}, {'event': 'set_flag', 'flag': 'battle_cid'}, {'event': 'battle', 'band': 'cid'}]}; this[52] = {'theme': 'ALIENS', 'condition': function () { return (Core.Get()).game.isFlag('q_afterbattle_cid'); }, 'msg': [{'npc': 'craven', 'text': 'Thanks for your help Grid... but it doesn\'t solve anything. The Meta-Warriors are no more, Lina\'s dead... I\'ve lost the meaning in my life.'}, {'npc': 'grid', 'text': 'Come with us.'}, {'npc': 'craven', 'text': 'I suppose, there\'s nothing better I can do...'}, {'npc': 'grid', 'text': 'What\'s that sound?.. Is that an alien radio?..'}, {'npc': 'sir_f', 'text': 'Grid! Return to our base immediately. K.A.U.F.O. has discovered our location and begun an assault. We\'re currently taking heavy fire.'}, {'npc': 'grid', 'text': 'I\'m on my way...'}, {'event': 'give_exp', 'value': 10000}, {'event': 'set_flag', 'flag': 'q_afterbattle_cid', 'value': 0}, {'event': 'set_flag', 'flag': 'q_waitforalien', 'value': 3}, {'event': 'add_quest', 'quest': 'talks_with_aliens', 'stage': 3}, {'npc': 'grid', 'text': 'The portal is in Integra City...'}]}; this[53] = {'theme': 'ABOUT YOURSELF', 'msg': [{'npc': 'grid', 'text': 'Hello! Who are you, comrade?'}, {'npc': 'vladimir', 'text': 'My name\'s Vladimir. Lead artificer of the Meta-Warriors. The Meta-Warriors need the very best tech.'}]}; this[54] = {'theme': 'VLADSVILLE', 'condition': function () { return (Core.Get()).game.isFlag('q_vladsville_visited'); }, 'msg': [{'npc': 'grid', 'text': 'So, your name is Vladimir... could it be you\'re from Vladsville?'}, {'npc': 'vladimir', 'text': 'Yeah, but I left my hometown. I didn\'t like it there. So little technology and all that confusion with Vlads...'}, {'npc': 'vladimir', 'text': 'I\'d rather be the only Vlad in the open world than one Vlad among many.'}]}; this[55] = {'theme': 'TRADE', 'condition': function () { return (Core.Get()).game.isFlag('v_metafight_ally'); }, 'msg': [{'event': 'trade', 'npc': 'vladimir'}]}; this[56] = {'theme': 'META-WARRIORS', 'msg': [{'npc': 'grid', 'text': 'Tell me about the Meta-Warriors.'}, {'npc': 'leena', 'text': 'The informal organization named \'Meta-Warriors\' aims for Global Revolution. To save this slowly dying society from rotting in its own ignorance by enabling the rule of the smartest, not the strongest.'}, {'npc': 'grid', 'text': 'Not bad.'}, {'npc': 'leena', 'text': 'We\'re also fond of modifyng human bodies with modern cybernetic tech. Only PC-controlled chips can allow a normal human to use 100% of his abilities.'}]}; this[57] = {'theme': 'TASK', 'condition': function () { return (Core.Get()).game.isFlag('v_gotooasis'); }, 'msg': [{'npc': 'grid', 'text': 'So what\'s the task? These transducers are really making me nervous.'}, {'npc': 'leena', 'text': 'North-East from here there is a place called Oasis. It\'s an important strategic location for the Meta-Warriors. Please go there with Kraven to persuade them of our good intentions.'}, {'npc': 'grid', 'text': 'Kraven? Kraven who?'}, {'npc': 'craven', 'text': 'Kraven me.'}, {'npc': 'grid', 'text': 'Oh, the flying one. I see.'}, {'npc': 'leena', 'text': 'Kraven is modified with cybernetic wings - they are advantageous in combat.'}, {'event': 'join_team', 'npc': 8}, {'event': 'set_flag', 'flag': 'v_gotooasis', 'value': 0}, {'event': 'set_flag', 'flag': 'q_oasispeace', 'value': 1}, {'event': 'add_quest', 'quest': 'meta_oasis', 'stage': 0}, {'npc': 'grid', 'text': 'Okay, Kraven, let\'s get to this Oasis.'}]}; this[58] = {'theme': 'OASIS', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_oasispeace'); }, 'msg': [{'npc': 'leena', 'text': 'Done?'}, {'npc': 'grid', 'text': 'No.'}, {'npc': 'leena', 'text': 'Explain!'}, {'npc': 'grid', 'text': 'I\'ve forgotten what I need to do.'}, {'npc': 'leena', 'text': 'Go to Oasis and convince them to cooperate with us.'}, {'npc': 'grid', 'text': 'Thanks.'}]}; this[59] = {'theme': 'OASIS - DONE', 'condition': function () { return 2 == (Core.Get()).game.getFlag('q_oasispeace'); }, 'msg': [{'npc': 'leena', 'text': 'Done?'}, {'npc': 'craven', 'text': 'Yes. If we provide them with water and Internet access they will ally with us.'}, {'event': 'complete_quest', 'quest': 'meta_oasis'}, {'event': 'give_exp', 'value': 1000}, {'event': 'set_flag', 'flag': 'q_oasispeace', 'value': 3}, {'npc': 'leena', 'text': 'That arrangement is considered to be acceptable. Your next task is as follows, Godlike Baby...'}, {'npc': 'grid', 'text': 'Wait! Another one?! We\'ve already completed your task! Let us go!'}, {'npc': 'leena', 'text': 'Impossible. We still need help and you still wear your transducer. This leaves just one clear course of action.'}, {'npc': 'grid', 'text': 'To stop the rule of the strong... wasn\'t that your purpose!?..'}, {'npc': 'leena', 'text': 'People say: \'Fight fire with fire\'.'}, {'npc': 'grid', 'text': 'So what\'s your damn task?'}, {'npc': 'leena', 'text': 'Something has happened to our allies in Raymonde Village. Since Raymonde is a village of the country\'s most brilliant minds it is critically important to us. Go there and help them with their problem.'}, {'event': 'set_flag', 'flag': 'q_raymondehelp', 'value': 1}, {'event': 'add_quest', 'quest': 'meta_raimonde', 'stage': 0}, {'npc': 'grid', 'text': 'Got it...'}]}; this[60] = {'theme': 'RAYMOND Village', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_raymondehelp'); }, 'msg': [{'npc': 'leena', 'text': 'Done?'}, {'npc': 'grid', 'text': 'No.'}, {'npc': 'leena', 'text': 'Reason?'}, {'npc': 'grid', 'text': 'I\'ve forgotten what I need to do.'}, {'npc': 'leena', 'text': 'Go to Raymonde Village and help them with their problem.'}, {'npc': 'grid', 'text': 'Now I remember! Thanks.'}]}; this[61] = {'theme': 'RAYMONDE Village - DONE', 'condition': function () { return 2 == (Core.Get()).game.getFlag('q_raymondehelp'); }, 'msg': [{'npc': 'leena', 'text': 'Kraven has already informed me of your success.'}, {'event': 'set_flag', 'flag': 'q_raymondehelp', 'value': 3}, {'event': 'give_exp', 'value': 5000}, {'event': 'complete_quest', 'quest': 'meta_raimonde'}, {'npc': 'grid', 'text': 'Good. Now please let us go.'}, {'npc': 'leena', 'text': 'I\'d rather not... but I will comply. Even in the name of world order it is wrong to use people.'}, {'npc': '', 'text': 'Transducers were removed!'}, {'npc': 'grid', 'text': 'This is more like it!'}, {'npc': 'leena', 'text': 'If you ever decide to help us found the New World Order, we\'d appreciate your support.'}, {'event': 'unlimit_map'}, {'npc': 'grid', 'text': 'Okay, but we have to return to Nathan for now.'}]}; this[62] = {'theme': 'CONTINUE THE PARTNERSHIP', 'condition': function () { return 3 == (Core.Get()).game.getFlag('q_raymondehelp') && !(Core.Get()).game.isFlag('q_metatechnicans'); }, 'msg': [{'npc': 'leena', 'text': 'I see it in your eyes - you\'re ready to help us further the cause. That\'s good! You will be compensated for your future help.'}, {'npc': 'grid', 'text': 'What can I do for you?'}, {'npc': 'leena', 'text': 'Smith Becord and Carl Vaccuol are making preparations for the Rebellion. Assist them in any way you can.'}, {'event': 'set_flag', 'flag': 'q_metatechnicans'}, {'event': 'set_flag', 'flag': 'v_metafight_ally'}, {'event': 'add_quest', 'quest': 'meta_uprise', 'stage': 0}, {'event': 'give_exp', 'value': 1500}, {'event': 'join_team', 'npc': 8}, {'npc': 'craven', 'text': 'I\'ll go with you.'}]}; this[63] = {'theme': 'HELP VACCUOL AND BECORD', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_metatechnicans') && (2 > (Core.Get()).game.getFlag('q_get3parts') || 2 > (Core.Get()).game.getFlag('q_getchips')); }, 'msg': [{'npc': 'leena', 'text': 'Did you help Carl and Smith to prepare for the Rebellion?'}, {'npc': 'grid', 'text': 'I\'m still working on that.'}]}; this[64] = {'theme': 'HELP VACCUOL AND BECORD', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_metatechnicans') && 2 == (Core.Get()).game.getFlag('q_get3parts') && 2 == (Core.Get()).game.getFlag('q_getchips'); }, 'msg': [{'npc': 'grid', 'text': 'Vaccuol and Becord are ready for the Rebellion.'}, {'event': 'give_exp', 'value': 7000}, {'event': 'give_money', 'value': 25000}, {'event': 'add_quest', 'quest': 'meta_uprise', 'stage': 1}, {'event': 'set_flag', 'flag': 'q_metatechnicans', 'value': 2}, {'npc': 'leena', 'text': 'Excellent. Here is your reward.'}, {'npc': 'leena', 'text': 'When you\'re ready I have a further task for you.'}]}; this[65] = {'theme': 'NEGOTIATIONS WITH CALIPSO', 'condition': function () { return 2 == (Core.Get()).game.getFlag('q_metatechnicans') && !(Core.Get()).game.isFlag('q_allycalipso'); }, 'msg': [{'npc': 'grid', 'text': 'I\'m ready. What\'s my new task?'}, {'npc': 'leena', 'text': 'Godlike baby. Do you know the city of the dead, Calipso? It\'s the home of the forgotten victims of failed genetic experiments.'}, {'npc': 'leena', 'text': 'Requirements: they must ally themselves to us, no matter the cost. I don\'t care how you achieve it, I just need it done.'}, {'event': 'set_flag', 'flag': 'q_allycalipso', 'value': 1}, {'event': 'add_quest', 'quest': 'meta_uprise', 'stage': 2}, {'npc': 'grid', 'text': 'Have I mentioned that you have a unique way of reasoning with people?..'}]}; this[66] = {'theme': 'CALIPSO\'S DEMANDS', 'condition': function () { return 2 == (Core.Get()).game.getFlag('q_allycalipso'); }, 'msg': [{'npc': 'leena', 'text': 'So we are already allied with Calipso?'}, {'npc': 'grid', 'text': 'They refuse to help us unless we can restore their \'human\' bodies, so I\'m out of here...'}, {'npc': 'leena', 'text': 'Illogical. There are, in theory, ways to restore their human bodies.'}, {'npc': 'grid', 'text': 'Really?..'}, {'npc': 'leena', 'text': 'I think Michael from Raymonde Village conducted some research into this problem some time ago.'}, {'event': 'set_flag', 'flag': 'q_allycalipso', 'value': 3}, {'event': 'give_exp', 'value': 1500}, {'event': 'add_quest', 'quest': 'meta_uprise', 'stage': 4}, {'npc': 'grid', 'text': 'I see. Then I\'ll talk to Michael...'}]}; this[67] = {'theme': 'NEGOTIATIONS WITH CALIPSO - DONE', 'condition': function () { return 5 == (Core.Get()).game.getFlag('q_allycalipso'); }, 'msg': [{'npc': 'grid', 'text': 'We have the walking dead behind us. They\'ll assist us in the Rebellion.'}, {'event': 'give_exp', 'value': 10000}, {'event': 'give_money', 'value': 50000}, {'event': 'set_flag', 'flag': 'q_allycalipso', 'value': 6}, {'event': 'add_quest', 'quest': 'meta_uprise', 'stage': 7}, {'npc': 'leena', 'text': 'Excellent news, Godlike Baby! Here is your reward. Return to me when you\'re ready for the next task.'}]}; this[68] = {'theme': 'INVESTMENT', 'condition': function () { return !(Core.Get()).game.isFlag('q_getinvestor') && 6 == (Core.Get()).game.getFlag('q_allycalipso'); }, 'msg': [{'event': 'set_flag', 'flag': 'q_getinvestor', 'value': 1}, {'npc': 'leena', 'text': 'Bad news. The cost of our preparations have been greater than expected. We\'re now out of funds...'}, {'npc': 'grid', 'text': 'The Revolution is bankrupt?'}, {'npc': 'leena', 'text': 'I\'d rather say, the Revolution lacks a sponsor.'}, {'npc': 'grid', 'text': 'It seems money is the key to any door.'}, {'npc': 'leena', 'text': 'Go to Castedo City, Godlike Baby, and persuade one of the city\'s big shots to invest in our organization. Just get me the money, I don\'t care how.'}, {'event': 'add_quest', 'quest': 'meta_uprise', 'stage': 8}, {'npc': 'grid', 'text': 'You\'re so avid, Lina!'}, {'npc': 'leena', 'text': 'Humour: understood. Rated: 3/10.'}]}; this[69] = {'theme': 'INVESTMENT', 'condition': function () { return 1 == (Core.Get()).game.getFlag('q_getinvestor'); }, 'msg': [{'npc': 'leena', 'text': 'Let me remind you that you should depart for Castedo City and persuade any of it\'s big shots to invest in us.'}, {'npc': 'grid', 'text': 'I remember that!'}, {'npc': 'leena', 'text': 'Then why are you not doing so?'}, {'npc': 'grid', 'text': 'A good question. I\'m off to do it right now.'}]}; this[70] = {'theme': 'INVESTMENT - DONE', 'condition': function () { return 2 == (Core.Get()).game.getFlag('q_getinvestor'); }, 'msg': [{'npc': 'grid', 'text': 'I\'ve found a sponsor for the Rebellion.'}, {'npc': 'leena', 'text': 'Good news! My excitement: 85 parts in 100.'}, {'npc': 'leena', 'text': 'Please take your reward.'}, {'event': 'give_exp', 'value': 10000}, {'event': 'give_money', 'value': 100000}, {'event': 'set_flag', 'flag': 'q_getinvestor', 'value': 3}, {'event': 'add_quest', 'quest': 'meta_uprise', 'stage': 10}, {'npc': 'leena', 'text': 'The preparations for the Rebellion are all done, Godlike Baby. Consider carefully whether you wish to continue. There will be no further opportunity to reconsider.'}]}; this[71] = {'theme': 'START THE REBELLION', 'condition': function () { return 3 == (Core.Get()).game.getFlag('q_getinvestor') && !(Core.Get()).game.isFlag('q_startrevolution'); }, 'msg': [{'event': 'set_flag', 'flag': 'q_startrevolution', 'value': 1}, {'npc': 'leena', 'text': 'So, Godlike Baby, you\'ve decided to continue with us. In truth I\'m glad. You\'re a valuable asset.'}, {'npc': 'leena', 'text': 'Since you\'re ready to commit I shall award you the honorary rank of General.'}, {'npc': 'leena', 'text': 'Your first mission is to destroy the military base. Our forces are heading there and your task is to take down their leader - Gran Stakovich - and his squadron.'}, {'event': 'add_quest', 'quest': 'meta_uprise', 'stage': 11}, {'npc': 'grid', 'text': 'You\'re speaking differently now.'}, {'event': 'set_flag', 'flag': 'btl_celester'}, {'npc': 'leena', 'text': 'The \'battle commander\' plugin from the game \'Guide and Dominate\' has been installed. Good luck, General!'}]}; this[72] = {'theme': 'DESTROYING THE MILITARY BASE - DONE', 'condition': function () { return 2 == (Core.Get()).game.getFlag('q_startrevolution'); }, 'msg': [{'event': 'give_exp', 'value': 15000}, {'event': 'give_money', 'value': 50000}, {'event': 'set_flag', 'flag': 'q_startrevolution', 'value': 3}, {'npc': 'leena', 'text': 'Our scout has already notified me of your success.'}, {'npc': 'leena', 'text': 'While you engaged the most dangerous squadron our forces succesfully captured the base.'}, {'npc': 'grid', 'text': 'Cool!'}, {'npc': 'leena', 'text': 'After seeing how efficiently we eliminated the regular army many people have decided to join our side.'}, {'npc': 'leena', 'text': 'But this is not yet the end. President Myst still has a lot of followers. You will need to enter Dark Capitol City to overthrow both her and her government as well.'}, {'npc': 'leena', 'text': 'Lead our forces and destroy our enemies, General. We all have faith in you.'}, {'event': 'add_quest', 'quest': 'meta_uprise', 'stage': 13}, {'npc': 'leena', 'text': 'Good luck.'}]}; this[73] = {'theme': 'ABOUT LINA', 'msg': [{'npc': 'grid', 'text': 'Who is Lina?'}, {'npc': 'craven', 'text': 'Lina is a prodigy who implanted some nanoprocessors into her own head while still in high school. She began this movement and is our honorable leader.'}, {'npc': 'grid', 'text': 'I\'d heard kids stuffed their heads with computers, but...'}]}; this[74] = {'theme': 'ABOUT YOURSELF', 'msg': [{'npc': 'grid', 'text': 'Why are you winged?'}, {'npc': 'craven', 'text': 'Because I wished to be.'}, {'npc': 'grid', 'text': 'How are they attached?'}, {'npc': 'craven', 'text': 'They are cyber implants. Meta-Warriors believe that a human is born imperfect. He needs to implant cybernetic parts to improve himself.'}, {'npc': 'craven', 'text': 'For me these wings are not only helpers in battle but also a symbol of freedom.'}]}; }; _global.TalkDataEn = v1; _global.TalkDataEn extends TalkData2En; var v2 = v1.prototype; ASSetPropFlags(_global.TalkDataEn.prototype, null, 1); } #endinitclip } movieClip 1955 __Packages.NPCDataEn { #initclip if (!_global.NPCDataEn) { var v1 = function () { this.natan = {'id': 0, 'name': 'Nathan', 'hello': 'Finally, Grid. Why are you late again?'}; this.natan.descri = 'Head of K.A.U.F.O.'; this.natan.talk = [1, 2, 3, 4, 5, 6, 7]; this.halisted = {'id': 1, 'name': 'Galisted', 'hello': 'Greetings young man!'}; this.halisted.descri = 'Elder of the village'; this.halisted.talk = [27, 28, 29]; this.ho = {'id': 2, 'name': 'Farmer Ho', 'hello': 'Hello there, what do you want?'}; this.ho.descri = 'Greatest farmer of this region.'; this.ho.talk = [33, 30, 31, 32]; this.alien1 = {'id': 3, 'name': 'Citizen of Summer Garden', 'hello': 'Welcome to the garden of summer, human. We are humans. I am just like you. Why don\'t you put a bear on your head?'}; this.alien1.descri = 'Ordinary human'; this.alien1.talk = [35]; this.alien2 = {'id': 4, 'name': 'Citizen of Summer Garden', 'hello': 'I want to have you in our town!'}; this.alien2.descri = 'Ordinary human'; this.alien2.talk = [36]; this.alien3 = {'id': 5, 'name': 'Citizen of Summer Garden', 'hello': 'I work as a waitress. I don\'t know why my boss says I\'m no good at it and dress badly.'}; this.alien3.descri = 'Ordinary human'; this.alien3.talk = [37]; this.clod = {'id': 6, 'name': 'Claude', 'hello': 'Hello. Welcome to Integra City.'}; this.clod.descri = 'Neoproletarian'; this.clod.talk = [41, 42, 43]; this.jake = {'id': 7, 'name': 'Jake', 'hello': 'Hey!'}; this.jake.descri = 'Proletarian'; this.jake.talk = [44, 45]; this.alexa = {'id': 8, 'name': 'Alexa', 'hello': 'Hello, scut.'}; this.alexa.descri = 'Local'; this.alexa.talk = [46]; this.lindwid = {'id': 9, 'name': 'Lindwid', 'hello': 'Don\'t distract me! I\'m very busy.'}; this.lindwid.descri = 'The architect'; this.lindwid.talk = [47, 48]; this.vladimir = {'id': 10, 'name': 'Vladimir', 'hello': 'Hello, comrade.'}; this.vladimir.descri = 'Meta-warrior\'s lead artificer'; this.vladimir.talk = [53, 54, 55]; this.micrasm = {'id': 11, 'name': 'Micrasm', 'hello': 'If you offend Lina, I\'ll kill you.'}; this.micrasm.descri = 'Lina\'s bodyguard'; this.leena = {'id': 12, 'name': 'Lina', 'hello': 'Official greeting: Good day to you.'}; this.leena.descri = 'Meta-Warriors leader'; this.leena.talk = [56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72]; this.craven = {'id': 13, 'name': 'Kraven', 'hello': 'I think you\'d better talk to Lina if you need something.'}; this.craven.descri = 'Winged Meta-warrior'; this.craven.talk = [73, 74]; this.sarahata = {'id': 14, 'name': 'Sarahata', 'hello': 'Welcome to my Oasis. I\'m in charge here. Sarahata is my name.'}; this.sarahata.descri = 'Ruler of the Oasis\' tribe'; this.sarahata.talk = [75, 76, 77]; this.mihel = {'id': 15, 'name': 'Miguel', 'hello': 'What?! Get lost!'}; this.mihel.descri = 'Garth\'s leader'; this.mihel.talk = [78, 79, 80]; this.vermut = {'id': 16, 'name': 'Vermuth', 'hello': 'I serve Garth!'}; this.vermut.descri = 'Soldier of Garth'; this.vermut.talk = [81]; this.zoid = {'id': 17, 'name': 'Zoid', 'hello': 'Hail, Garth!'}; this.zoid.descri = 'Soldier of Garth'; this.zoid.talk = [83]; this.bristol = {'id': 18, 'name': 'Bristol', 'hello': 'Hi there.'}; this.bristol.descri = 'An artist and a nudie'; this.bristol.talk = [84, 85, 86]; this.stan = {'id': 19, 'name': 'Stan', 'hello': 'Hi, man. Be cool. All\'s fine.'}; this.stan.descri = 'Mayor of the town'; this.stan.talk = [87, 88]; this.viola = {'id': 20, 'name': 'Viola', 'hello': 'Hello, potential friend.'}; this.viola.descri = 'Musician'; this.viola.talk = [89, 90]; this.ace = {'id': 21, 'name': 'Ace', 'hello': 'Yo.'}; this.ace.descri = 'Money-lender'; this.ace.talk = [91, 93, 94, 95, 96]; this.shell = {'id': 22, 'name': 'Shell', 'hello': 'Greetings, traveler!'}; this.shell.descri = 'A noble warrior and explorer'; this.shell.talk = [97, 98, 99]; this.liz = {'id': 23, 'name': 'Liz', 'hello': '(sighs)'}; this.liz.descri = 'Sad girl'; this.liz.talk = [100, 101, 102, 103, 104]; this.alice = {'id': 24, 'name': 'Alice', 'hello': 'Good day.'}; this.alice.descri = 'Owner of the store'; this.alice.talk = [105, 106]; this.harcos = {'id': 25, 'name': 'Harkos', 'hello': 'Harkos, captain of \'Impendence\', welcomes you!'}; this.harcos.descri = 'Captain of \'Impendence\''; this.harcos.talk = [107, 108, 109, 110, 111, 112, 113]; this.yax = {'id': 26, 'name': 'Yax', 'hello': 'Hello there.'}; this.yax.descri = 'Veteran sailor'; this.yax.talk = [114, 115, 116]; this.cij = {'id': 27, 'name': 'C. I. J.', 'hello': 'Yahoo!'}; this.cij.descri = 'Captain of flying ship \'Hysteria\''; this.cij.talk = [117, 118, 119]; this.kippa = {'id': 28, 'name': 'Kippa', 'hello': 'Hi!'}; this.kippa.descri = 'Girl with cat\'s ears'; this.kippa.talk = [120, 121, 122]; this.lexic = {'id': 29, 'name': 'Leksik', 'hello': 'Good to meet you!'}; this.lexic.descri = 'A panda'; this.lexic.talk = [123, 124, 125]; this.gaimon = {'id': 30, 'name': 'Gaimon', 'hello': 'Greetings.'}; this.gaimon.descri = 'A weird person'; this.gaimon.talk = [126, 127, 128]; this.chivax = {'id': 31, 'name': 'Chivax', 'hello': 'How can I help you?'}; this.chivax.descri = 'The mayor'; this.chivax.talk = [129, 130]; this.ken = {'id': 32, 'name': 'Ken', 'hello': 'Damn! I went to war believing I was making a better future but it all ended in a gloomy present...'}; this.ken.descri = 'Dead soldier'; this.ken.talk = [131]; this.goman = {'id': 33, 'name': 'Goman', 'hello': 'Normal girls don\'t look at me, and even Fia only wants living men. What do you think should I do?! Die? I can\'t!!'}; this.goman.descri = 'Dead soldier'; this.goman.talk = [132]; this.fea = {'id': 34, 'name': 'Fia', 'hello': 'Greetings, living one...'}; this.fea.descri = 'Dead scientist'; this.fea.talk = [133, 134, 135]; this.keabo = {'id': 35, 'name': 'Kibo', 'hello': 'Peace, friendship and bubble gum, friend. Take it easy. Be cool.'}; this.keabo.descri = 'Weapons dealer'; this.keabo.talk = [136, 137, 138, 139, 140]; this.seth = {'id': 36, 'name': 'Seth', 'hello': '...'}; this.seth.descri = 'A gloomy and angry rich man'; this.seth.talk = [141, 142, 143, 144]; this.hydra = {'id': 37, 'name': 'Hydra', 'hello': 'Hi!'}; this.hydra.descri = 'A maniacal daughter of a rich family'; this.hydra.talk = [145, 146, 147, 148]; this.heraldio = {'id': 38, 'name': 'Heraldio', 'hello': 'Greetings, sir.'}; this.heraldio.descri = 'An aristocrat'; this.heraldio.talk = [149, 150, 151, 152]; this.vlad_ser = {'id': 39, 'name': 'Vlad', 'hello': 'Welcome to Vladsville!'}; this.vlad_ser.descri = 'Head of the village'; this.vlad_ser.talk = [153, 154, 155]; this.vlad_vlad = {'id': 40, 'name': 'Vlad', 'hello': 'Nice to meet you, Vlad.'}; this.vlad_vlad.descri = 'A blacksmith'; this.vlad_vlad.talk = [156, 157, 158]; this.vlada = {'id': 41, 'name': 'Vlada', 'hello': 'Welcome to my house!'}; this.vlada.descri = 'Hostess'; this.vlada.talk = [159]; this.garn = {'id': 42, 'name': 'Garn Stakovich', 'hello': 'Garn Stakovich, captain of the 7th Squadron. What do you want with me, citizen?'}; this.garn.descri = 'Captain of the 7th squadron'; this.garn.talk = [162]; this.celester = {'id': 43, 'name': 'Selester', 'hello': 'Hello, what do you want?'}; this.celester.descri = 'A legendary sniper'; this.celester.talk = [163]; this.lesly = {'id': 44, 'name': 'Lesley', 'hello': 'Hello there, handsome.'}; this.lesly.descri = 'A soldier'; this.lesly.talk = [164]; this.marcy = {'id': 45, 'name': 'Marcy', 'hello': 'Hi!'}; this.marcy.descri = 'Chief editor'; this.marcy.talk = [169, 170, 171, 172]; this.biby = {'id': 46, 'name': 'Biby', 'hello': 'Hello to you, my fans!'}; this.biby.descri = 'A model, a singer and an actress'; this.biby.talk = [173, 174]; this.ibrahim = {'id': 47, 'name': 'Ibrahim', 'hello': 'Metal-Allure. Join our cult.'}; this.ibrahim.descri = 'A cultist'; this.ibrahim.talk = [175, 176, 177]; this.michel = {'id': 48, 'name': 'Michelle', 'hello': 'Hello, my name\'s Michelle.'}; this.michel.descri = 'A courtesan'; this.michel.talk = [178, 179, 180]; this.jax = {'id': 49, 'name': 'Jax', 'hello': 'Hi! Want me to tear off your hands?! No?! Too bad. What do you want then?'}; this.jax.descri = 'Chief of police'; this.jax.talk = [181, 182, 183, 184, 185]; this.elm = {'id': 50, 'name': 'Elm', 'hello': 'Good day, human.'}; this.elm.descri = 'A film maker'; this.elm.talk = [186, 187, 188]; this.nina_x = {'id': 51, 'name': 'Nina X', 'hello': 'Hi, boy.'}; this.nina_x.descri = 'A person'; this.nina_x.talk = [189, 190, 191]; this.uncle_sam = {'id': 52, 'name': 'Uncle Sam', 'hello': 'Uncle Sam is all yours!'}; this.uncle_sam.descri = 'Farmer'; this.uncle_sam.talk = [192, 193]; this.stacy = {'id': 53, 'name': 'Stacy', 'hello': 'Hi!'}; this.stacy.descri = 'Uncle Sam\'s daughter'; this.stacy.talk = [194, 195, 196]; this.hell = {'id': 54, 'name': 'Hell', 'hello': 'Hello, tom-kat. Did you come to see me?'}; this.hell.descri = 'Probably a devil itself'; this.hell.talk = [198, 199, 200, 201, 203, 204]; this.guard = {'id': 55, 'name': 'Eduardo', 'hello': 'Move on. You\'re not allowed to enter this city.'}; this.guard.descri = 'A guard'; this.guard.talk = []; this.mist = {'id': 56, 'name': 'Myst', 'hello': 'So, you came here...'}; this.mist.descri = 'The president'; this.mist.talk = [205]; this.kage = {'id': 57, 'name': 'Kage', 'hello': '...'}; this.kage.descri = 'A silent ninja'; this.kage.talk = [206, 207, 208]; this.grandin = {'id': 58, 'name': 'Grandin', 'hello': 'Peace to your heart, stranger.'}; this.grandin.descri = 'A monk'; this.grandin.talk = [209, 210, 211]; this.dr_rade = {'id': 59, 'name': 'Doctor A. F. Rade', 'hello': 'This is bad, you\'ve discovered my secret lab...'}; this.dr_rade.descri = 'An ascetic genious scientis'; this.dr_rade.talk = [212, 213]; this.garret = {'id': 60, 'name': 'Garret', 'hello': 'Hello, I\'m Garret. I\'m a gene engineer.'}; this.garret.descri = 'A gene engineer'; this.garret.talk = [214, 215, 216, 256]; this.ksenya = {'id': 61, 'name': 'Xenya', 'hello': 'Hi!'}; this.ksenya.descri = 'A biologist'; this.ksenya.talk = [217, 219]; this.sir_f = {'id': 62, 'name': 'Sir F', 'hello': 'Greetings, human of the planet.'}; this.sir_f.descri = 'An alien\'s emperor'; this.sir_f.talk = [224, 225, 226]; this.curt = {'id': 63, 'name': 'Curt', 'hello': 'Hi. What is it?'}; this.curt.descri = 'A loafer'; this.curt.talk = [227, 228, 229, 230]; this.georg = {'id': 64, 'name': 'Georg', 'hello': 'Hello, traveler.'}; this.georg.descri = 'The head of city'; this.georg.talk = [231, 232, 233, 234, 235, 236]; this.john = {'id': 65, 'name': 'John', 'hello': 'Hello, man.'}; this.john.descri = 'An idler'; this.john.talk = [237, 238, 239, 240]; this.carl = {'id': 66, 'name': 'Carl Vaccuol', 'hello': 'I hear you.'}; this.carl.descri = 'A great scientist and an inventor'; this.carl.talk = [243, 244, 245, 246, 247]; this.michael = {'id': 67, 'name': 'Mikhael Valotkraft', 'hello': 'Good day. Mikhael Valotkraft, at your service.'}; this.michael.descri = 'A scientist'; this.michael.talk = [249, 248]; this.smith = {'id': 68, 'name': 'Smith Becord', 'hello': 'Yo, man.'}; this.smith.descri = 'A great scientist'; this.smith.talk = [250, 251, 252, 253, 254]; this.dekkis = {'id': 69, 'name': 'Dekkis', 'hello': ''}; this.dekkis.descri = 'A mutant'; this.katenka = {'id': 70, 'name': 'Katenka', 'hello': ''}; this.katenka.descri = 'K.A.U.F.O. member'; this.key = {'id': 71, 'name': 'Key', 'hello': ''}; this.key.descri = 'K.A.U.F.O. member'; this.feather = {'id': 72, 'name': 'Feather', 'hello': ''}; this.feather.descri = 'A girl that looks like an angel'; this.karry = {'id': 73, 'name': 'Curry', 'hello': ''}; this.karry.descri = 'An alien'; this.karry.talk = [257, 258, 259]; this.grid = {'id': 74, 'name': 'Grid', 'hello': ''}; this.grid.descri = 'K.A.U.F.O. member'; this.cid = {'id': 75, 'name': 'Cid', 'hello': ''}; this.cid.descri = 'A cybernetic person'; this.alien1a = {'id': 76, 'name': 'Alien'}; this.alien1a.descri = ''; this.alien2a = {'id': 77, 'name': 'Alien'}; this.alien2a.descri = ''; this.alien3a = {'id': 78, 'name': 'Alien'}; this.alien3a.descri = ''; this.house_carl = {'id': 79, 'name': 'Carl\'s house', 'hello': '...'}; this.house_carl.descri = ''; this.house_carl.talk = [242]; }; _global.NPCDataEn = v1; var v2 = v1.prototype; ASSetPropFlags(_global.NPCDataEn.prototype, null, 1); } #endinitclip } movieClip 1956 __Packages.GameData { #initclip if (!_global.GameData) { var v1 = function () { this.unit_pos = new Pair(108, 97); this.unit_tile = new Pair(-1, -1); this.scroll = new Pair(0, 0); this.map_tl = new Pair(0, 0); this.map_br = new Pair((Core.Get()).cfg.map_size.x, (Core.Get()).cfg.map_size.y); this.cur_region = -1; var v6 = (Core.Get()).cfg.fog_size; this.fog_data = new Array(v6.x); var v5 = 0; while (v5 < v6.x) { this.fog_data[v5] = new Array(v6.y); var v3 = 0; while (v3 < v6.y) { this.fog_data[v5][v3] = 100; ++v3; } ++v5; } var v7 = (Core.Get()).world.areas.length; this.areas_shown = new Array(v7); this.areas_marked = new Array(v7); var v2 = 0; while (v2 < v7) { this.areas_shown[v2] = false; this.areas_marked[v2] = false; ++v2; } var v8 = (Core.Get()).world; this.areas_marked[v8.area_to_id.kaufo] = true; this.areas_marked[v8.area_to_id.kameron] = true; this.areas_marked[v8.area_to_id.integra] = true; this.areas_marked[v8.area_to_id.gibson] = true; this.areas_marked[v8.area_to_id.capitol] = true; this.in_area = v8.area_to_id.kaufo; this.traders = new Object(); this.traders.halisted = [1, 3, 5, 11, 23, 24, 31, 53, 58, 69, 81, 90, 108, 122, {'item': 139, 'count': 3}, {'item': 146, 'count': 5}, {'item': 147, 'count': 3}]; this.traders.jake = [5, 11, 12, 13, 14, 15, 16, 24, 27, 38, 55, 70, 73, 80, 96, 100, 102, 123, {'item': 140, 'count': 2}, {'item': 148, 'count': 3}, {'item': 155, 'count': 5}]; this.traders.vladimir = [6, 19, 38, 40, 41, 42, 43, 45, 46, 48, 50, 56, 78, 79, 81, 84, 94, 96, 108, 123, {'item': 141, 'count': 3}, {'item': 149, 'count': 2}, {'item': 151, 'count': 3}, {'item': 152, 'count': 2}, {'item': 155, 'count': 1}]; this.traders.zoid = [2, 3, 15, 28, 32, 47, 60, 61, 76, 82, 144, {'item': 155, 'count': 3}]; this.traders.alice = [1, 2, 4, 8, 39, 49, 56, 58, 60, 69, 85, 93, 102, 103, 104, 107, 108, 109, 110, {'item': 140, 'count': 2}, {'item': 148, 'count': 2}]; this.traders.goman = [7, 24, 25, 33, 48, 49, 50, 51, 52, 78, 83, 97, 98, 99, 106, {'item': 142, 'count': 2}, 154]; this.traders.kippa = [4, 8, 53, 100, 109, 110, 112, {'item': 146, 'count': 5}, {'item': 147, 'count': 5}, {'item': 148, 'count': 4}, {'item': 149, 'count': 4}, {'item': 150, 'count': 3}, {'item': 151, 'count': 5}, {'item': 152, 'count': 3}, {'item': 153, 'count': 2}]; this.traders.keabo = [13, 16, 17, 27, 32, 33, 34, 36, 39, 40, 62, 63, 74, 75, 106, 113, 114, 130, {'item': 141, 'count': 2}, {'item': 150, 'count': 2}, 154]; this.traders.vlad_vlad = [10, 40, 45, 71, {'item': 148, 'count': 2}, {'item': 149, 'count': 2}, {'item': 150, 'count': 1}, {'item': 155, 'count': 2}]; this.traders.uncle_sam = [6, 7, 18, 21, 35, 36, 37, 54, 56, 57, 79]; this.traders.stacy = [86, 89, 95, 105]; this.traders.dr_rade = [9, 22, 29, 37, 44, 64, 65, 66, 67, 68, 115, 116, 117, 132, 135, 136, 137]; this.traders.jax = [25, 26, 27, 28, 31, 35, 41, 43, 55, 59, 60, 61, 70, 71, 72, 73, 87, 91, 92, {'item': 141, 'count': 4}, {'item': 142, 'count': 4}, {'item': 149, 'count': 2}, {'item': 155, 'count': 3}]; this.traders.john = [7, 17, 18, 20, 28, 34, 35, 42, 46, 47, 54, 59, 62, 63, 77, 88, 111, 118, 131, {'item': 142, 'count': 1}, 144, {'item': 150, 'count': 1}, {'item': 151, 'count': 1}, {'item': 152, 'count': 1}]; this.traders.garret = []; this.team = [0, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]; this.stats = [{'level': 1, 'exp': 0, 'ups': 0}, {'level': 1, 'exp': 0}, {'level': 1, 'exp': 0}, {'level': 1, 'exp': 0}, {'level': 1, 'exp': 0}, {'level': 1, 'exp': 0}, {'level': 1, 'exp': 0}, {'level': 1, 'exp': 0}, {'level': 1, 'exp': 0}, {'level': 1, 'exp': 0}, {'level': 1, 'exp': 0}, {'level': 1, 'exp': 0}]; var v13 = this.stats.length; v2 = 0; while (v2 < v13) { var v4 = (Core.Get()).world.chars[v2]; this.stats[v2].vit = v4.vit; this.stats[v2].def = v4.vit; this.stats[v2].acc = v4.vit; this.stats[v2].dgr = v4.vit; this.stats[v2].tch = v4.vit; this.stats[v2].med = v4.vit; this.stats[v2].lck = v4.vit; this.stats[v2].level_up = false; this.stats[v2].perk_unlocked = false; this.stats[v2].bonus_points = false; ++v2; } this.equipment = [{'weapon': 11, 'armor': 69, 'device': -1}, {'weapon': 12, 'armor': 69, 'device': -1}, {'weapon': 24, 'armor': 69, 'device': -1}, {'weapon': -1, 'armor': -1, 'device': -1}, {'weapon': -1, 'armor': 69, 'device': -1}, {'weapon': 66, 'armor': 69, 'device': 116}, {'weapon': -1, 'armor': 69, 'device': -1}, {'weapon': -1, 'armor': 69, 'device': -1}, {'weapon': 58, 'armor': 69, 'device': -1}, {'weapon': -1, 'armor': 69, 'device': -1}, {'weapon': -1, 'armor': 69, 'device': -1}, {'weapon': -1, 'armor': 69, 'device': -1}]; this.inventory = [{'item': 1, 'count': 1}, {'item': 139, 'count': 3}, {'item': 146, 'count': 5}, {'item': 147, 'count': 2}]; this.money = 300; this.quests = []; this.quest_progress = {}; this.flags = []; this.area_flags = []; this.timers = new Object(); this.quest_items = []; this.exchange = null; this.resetEncounterDelay(); this.guides = []; this.enemy_data = []; }; _global.GameData = v1; var v2 = v1.prototype; v2.addEnemy = function (x_, y_, band_) { this.enemy_data.push({'x': x_, 'y': y_, 'band': band_}); }; v2.isInParty = function (npc_) { if (npc_ < 0) { return false; } var v3 = 4; var v2 = 0; while (v2 < v3) { if (this.team[v2] == npc_) { return true; } ++v2; } return false; }; v2.isInTeam = function (npc_) { if (npc_ < 0) { return false; } var v3 = this.team.length; var v2 = 0; while (v2 < v3) { if (this.team[v2] == npc_) { return true; } ++v2; } return false; }; v2.joinTeam = function (npc_) { if (this.isInTeam(9) && npc_ == 11 || this.isInTeam(11) && npc_ == 9) { (Core.Get()).unlockMedal('Heaven and Hell'); } if (npc_ < 0) { return undefined; } var v4 = this.team.length; var v2 = 0; while (v2 < v4) { if (this.team[v2] == -1) { this.team[v2] = npc_; return undefined; } ++v2; } }; v2.leaveTeam = function (npc_) { if (npc_ < 0) { return undefined; } if (this.equipment[npc_].weapon > 0) { this.putInventory(this.equipment[npc_].weapon); this.equipment[npc_].weapon = -1; } if (this.equipment[npc_].armor > 0) { this.putInventory(this.equipment[npc_].armor); this.equipment[npc_].armor = -1; } if (this.equipment[npc_].device > 0) { this.putInventory(this.equipment[npc_].device); this.equipment[npc_].device = -1; } var v4 = this.team.length; var v2 = 0; while (v2 < v4) { if (this.team[v2] == npc_) { this.team[v2] = -1; return undefined; } ++v2; } }; v2.isFlag = function (fl_) { return undefined != this.flags[fl_] && this.flags[fl_]; }; v2.setFlag = function (fl_) { this.flags[fl_] = 1; }; v2.incFlag = function (fl_) { if (undefined == this.flags[fl_]) { this.flags[fl_] = 1; } else { ++this.flags[fl_]; } }; v2.resetFlag = function (fl_) { this.flags[fl_] = 0; }; v2.setFlagTo = function (fl_, value_) { this.flags[fl_] = value_; }; v2.getFlag = function (fl_) { if (undefined == this.flags[fl_]) { return 0; } else { return this.flags[fl_]; } }; v2.setAreaFlag = function (fl_) { this.area_flags[fl_] = 1; }; v2.isAreaFlag = function (fl_) { return undefined != this.area_flags[fl_] && this.area_flags[fl_]; }; v2.resetAreaFlags = function () { this.area_flags = []; }; v2.progressQuest = function (quest_, stage_) { var v2 = this.quest_progress[quest_]; if (v2 != undefined) { v2[v2.length - 1].state = EQuest.COMPLETE; v2.push({'stage': stage_, 'state': EQuest.NORMAL}); } else { this.quests.push({'quest': quest_, 'state': EQuest.NORMAL}); this.quest_progress[quest_] = [{'stage': stage_, 'state': EQuest.NORMAL}]; } }; v2.completeQuest = function (quest_) { if (quest_ == 'ufo_visit') { (Core.Get()).unlockMedal('Alien Trace'); } var v5 = this.quest_progress[quest_]; if (v5 != undefined) { v5[v5.length - 1].state = EQuest.COMPLETE; } var v4 = this.quests.length; var v2 = 0; while (v2 < v4) { if (this.quests[v2].quest == quest_) { this.quests[v2].state = EQuest.COMPLETE; return undefined; } ++v2; } this.quests.push({'quest': quest_, 'state': EQuest.COMPLETE}); }; v2.isQuestComplete = function (quest_) { return this.getQuestState(quest_) == EQuest.COMPLETE; }; v2.inQuest = function (quest_) { return this.getQuestState(quest_) == EQuest.NORMAL; }; v2.getQuestState = function (quest_) { var v3 = this.quests.length; var v2 = 0; while (v2 < v3) { if (this.quests[v2].quest == quest_) { return this.quests[v2].state; } ++v2; } return EQuest.NONE; }; v2.failQuest = function (quest_) { var v5 = this.quest_progress[quest_]; if (v5 != undefined) { v5[v5.length - 1].state = EQuest.FAILED; } var v3 = this.quests.length; var v2 = 0; while (v2 < v3) { if (this.quests[v2].quest == quest_) { this.quests[v2].state = EQuest.FAILED; return undefined; } ++v2; } this.quests.push({'quest': quest_, 'state': EQuest.FAILED}); }; v2.sellItem = function (trader_, item_) { this.money += (Core.Get()).world.getSellPrice(item_); var v5 = trader_.length; var v2 = 0; while (v2 < v5) { if (trader_[v2] instanceof Object) { if (trader_[v2].item == item_) { ++trader_[v2].count; if (undefined == trader_[v2].buy_back) { trader_[v2].buy_back = 1; } else { ++trader_[v2].buy_back; } return undefined; } } else { if (trader_[v2] == item_) { trader_[v2] = {'item': item_, 'count': 2, 'buy_back': 1}; return undefined; } } ++v2; } trader_.push({'item': item_, 'count': 1, 'buy_back': 1}); }; v2.buyItem = function (trader_, item_) { if (item_ == 22) { (Core.Get()).unlockMedal('Zero Void'); } var v5 = trader_.length; var v2 = 0; while (v2 < v5) { if (trader_[v2] instanceof Object) { if (trader_[v2].item == item_) { --trader_[v2].count; if (undefined == trader_[v2].buy_back || 0 == trader_[v2].buy_back) { this.money -= (Core.Get()).world.getBuyPrice(item_); } else { --trader_[v2].buy_back; this.money -= (Core.Get()).world.getSellPrice(item_); } if (0 == trader_[v2].count) { trader_.splice(v2, 1); } return undefined; } } else { if (trader_[v2] == item_) { this.money -= (Core.Get()).world.getBuyPrice(item_); trader_.splice(v2, 1); return undefined; } } ++v2; } }; v2.traderHasItem = function (name_, item_) { var v3 = this.traders[name_]; var v5 = v3.length; var v2 = 0; while (v2 < v5) { if (v3[v2] instanceof Object) { if (v3[v2].item == item_) { return true; } } else { if (v3[v2] == item_) { return true; } } ++v2; } return false; }; v2.putInventoryArray = function (items_) { var v4 = items_.length; var v2 = 0; while (v2 < v4) { this.putInventory(items_[v2].item, items_[v2].count); ++v2; } }; v2.putInventory = function (item_, count_) { if (undefined == count_) { count_ = 1; } if (EItem.QUEST == (Core.Get()).world.getItemType(item_)) { this.giveQuestItems((Core.Get()).world.items[item_].quest_item, count_); return undefined; } var v5 = this.inventory.length; var v2 = 0; while (v2 < v5) { if (this.inventory[v2].item == item_) { this.inventory[v2].count += count_; return undefined; } ++v2; } this.inventory.push({'item': item_, 'count': count_}); }; v2.putInventoryAt = function (item_, to_) { if (EItem.QUEST == (Core.Get()).world.getItemType(item_)) { this.giveQuestItems((Core.Get()).world.items[item_].quest_item, 1); return undefined; } var v5 = this.inventory.length; var v2 = 0; while (v2 < v5) { if (this.inventory[v2].item == item_) { ++this.inventory[v2].count; return undefined; } ++v2; } var v4 = {'item': item_, 'count': 1}; if (to_ < 0) { this.inventory.push(v4); } else { this.inventory.splice(to_, 0, v4); } }; v2.takeInventory = function (item_) { var v3 = this.inventory.length; var v2 = 0; while (v2 < v3) { if (this.inventory[v2].item == item_) { --this.inventory[v2].count; if (this.inventory[v2].count < 1) { this.inventory.splice(v2, 1); } return undefined; } ++v2; } Log.Err('Item not found!'); }; v2.equip = function (char_, type_, item_) { switch (type_) { case EItem.WEAPON: this.equipment[char_].weapon = item_; break; case EItem.ARMOR: this.equipment[char_].armor = item_; break; case EItem.DEVICE: this.equipment[char_].device = item_; } }; v2.moveInventoryItem = function (from_, to_) { if (to_ < 0) { to_ = this.inventory.length - 1; } if (from_ == to_) { return undefined; } var v3 = this.inventory[from_]; this.inventory.splice(from_, 1); this.inventory.splice(to_, 0, v3); }; v2.sortInventory = function () { this.inventory.sortOn('item', Array.NUMERIC); }; v2.getUseableItems = function () { var v6 = new Array(); var v4 = this.inventory.length; var v2 = 0; while (v2 < v4) { var v3 = (Core.Get()).world.getItemType(this.inventory[v2].item); if (EItem.USE == v3 || EItem.HEAL == v3) { v6.push({'item': this.inventory[v2].item, 'count': this.inventory[v2].count}); } ++v2; } return v6; }; v2.giveQuestItems = function (item_, count_) { var v5 = this.quest_items.length; var v2 = 0; while (v2 < v5) { if (this.quest_items[v2].item == item_) { this.quest_items[v2].count += count_; return undefined; } ++v2; } this.quest_items.push({'item': item_, 'count': count_}); }; v2.removeQuestItems = function (item_) { var v3 = this.quest_items.length; var v2 = 0; while (v2 < v3) { if (this.quest_items[v2].item == item_) { this.quest_items.splice(v2, 1); return undefined; } ++v2; } }; v2.hasQuestItem = function (item_) { var v3 = this.quest_items.length; var v2 = 0; while (v2 < v3) { if (this.quest_items[v2].item == item_) { return this.quest_items[v2].count > 0; } ++v2; } return false; }; v2.hasQuestItems = function (item_, count_) { var v3 = this.quest_items.length; var v2 = 0; while (v2 < v3) { if (this.quest_items[v2].item == item_) { return this.quest_items[v2].count >= count_; } ++v2; } return false; }; v2.getTeamLevel = function () { var v4 = 1; var v2 = 0; while (v2 < 4) { if (this.team[v2] >= 0) { var v3 = this.stats[this.team[v2]].level; if (v4 < v3) { v4 = v3; } } ++v2; } return v4; }; v2.syncCharStats = function (char_) { var v3 = this.stats[char_].level; var v5 = (Core.Get()).world.chars[char_]; if (char_ == 0) { this.stats[char_].vit = Math.round(5 + 2.857142857142857 * (v3 - 1)); this.stats[char_].def = Math.round(5 + 2.857142857142857 * (v3 - 1)); this.stats[char_].acc = Math.round(5 + 2.857142857142857 * (v3 - 1)); this.stats[char_].dgr = Math.round(5 + 2.857142857142857 * (v3 - 1)); this.stats[char_].tch = Math.round(5 + 2.857142857142857 * (v3 - 1)); this.stats[char_].med = Math.round(5 + 2.857142857142857 * (v3 - 1)); this.stats[char_].lck = Math.round(5 + 2.857142857142857 * (v3 - 1)); } else { this.stats[char_].vit = Math.round(v5.vit * (1 + v3) / 2); this.stats[char_].def = Math.round(v5.def * (1 + v3) / 2); this.stats[char_].acc = Math.round(v5.acc * (1 + v3) / 2); this.stats[char_].dgr = Math.round(v5.dgr * (1 + v3) / 2); this.stats[char_].tch = Math.round(v5.tch * (1 + v3) / 2); this.stats[char_].med = Math.round(v5.med * (1 + v3) / 2); this.stats[char_].lck = Math.round(v5.lck * (1 + v3) / 2); if (char_ == 8 && this.isFlag('craven_upgrade')) { this.stats[char_].vit += 5; this.stats[char_].def += 5; this.stats[char_].dgr += 5; this.stats[char_].tch += 5; } } this.stats[char_].perk1 = v3 >= 6; this.stats[char_].perk2 = v3 >= 12; this.stats[char_].perk3 = v3 >= 18; this.stats[char_].perk4 = v3 >= 24; this.stats[char_].perk5 = v3 >= 30; var v4 = 0; if (this.stats[char_].perk4) { v4 += 5; } if (this.stats[char_].perk5) { v4 += 10; } this.stats[char_].vit += v4; this.stats[char_].def += v4; this.stats[char_].acc += v4; this.stats[char_].dgr += v4; this.stats[char_].tch += v4; this.stats[char_].med += v4; this.stats[char_].lck += v4; }; v2.giveExp = function (char_, amount_) { var v2 = this.stats[char_]; if (v2.level == 30) { return undefined; } var v6 = (Core.Get()).world.level_exp; v2.exp += amount_; while (v6[v2.level] < v2.exp) { v2.exp -= v6[v2.level]; var v5 = ++v2.level; v2.level_up = true; if (char_ == 0) { v2.ups += 4; if (v5 == 24) { var v4 = 5; this.stats[char_].vit += v4; this.stats[char_].def += v4; this.stats[char_].acc += v4; this.stats[char_].dgr += v4; this.stats[char_].tch += v4; this.stats[char_].med += v4; this.stats[char_].lck += v4; } if (v5 == 30) { v4 = 10; this.stats[char_].vit += v4; this.stats[char_].vit += v4; this.stats[char_].def += v4; this.stats[char_].acc += v4; this.stats[char_].dgr += v4; this.stats[char_].tch += v4; this.stats[char_].med += v4; this.stats[char_].lck += v4; (Core.Get()).unlockMedal('Supremacy'); } } else { this.syncCharStats(char_); } if (v5 == 6) { v2.perk1 = true; v2.perk_unlocked = true; } if (v5 == 12) { v2.perk2 = true; v2.perk_unlocked = true; } if (v5 == 18) { v2.perk3 = true; v2.perk_unlocked = true; } if (v5 == 24) { v2.perk4 = true; v2.bonus_points = true; } if (v5 == 30) { v2.perk5 = true; v2.bonus_points = true; v2.exp = 0; } } }; v2.giveExpTeam = function (amount_) { var v4 = 0; var v2 = 0; while (v2 < 4) { if (this.team[v2] >= 0) { ++v4; } ++v2; } var v3 = Math.round(amount_ / v4); v2 = 0; while (v2 < 4) { if (this.team[v2] >= 0) { this.giveExp(this.team[v2], v3); } ++v2; } v3 = Math.round(amount_ / 4); v2 = 4; while (v2 < 12) { if (this.team[v2] >= 0) { this.giveExp(this.team[v2], v3); } ++v2; } }; v2.getDropModifier = function () { var v3 = 0; var v4 = 0; var v2 = 0; while (v2 < 4) { if (this.team[v2] >= 0) { ++v4; v3 += this.stats[this.team[v2]].lck / this.stats[this.team[v2]].level; } ++v2; } v3 /= v4; return 1 + v3 / 5; }; v2.resetEncounterDelay = function () { this.enc_delay = Math.round(60 * (2 + 3 * Math.random())); }; v2.addGuide = function (area_) { this.guides.push(area_); }; v2.getBattleRegion = function () { return this.cur_region < 0 ? 4 : (Core.Get()).world.regions[this.cur_region].terrain; }; v2.checkMedals = function () { if (this.isQuestComplete('ufo_visit')) { (Core.Get()).unlockMedal('Alien Trace'); } if (this.isInTeam(9) && this.isInTeam(11)) { (Core.Get()).unlockMedal('Heaven and Hell'); } if (this.areas_shown[32]) { (Core.Get()).unlockMedal('Pilgrimage'); } if (!this.traderHasItem('dr_rade', 22)) { (Core.Get()).unlockMedal('Zero Void'); } if (this.stats[0].level == 30) { (Core.Get()).unlockMedal('Supremacy'); } if (this.isQuestComplete('natan_plan')) { (Core.Get()).unlockMedal('Space Crusade'); } if (this.isQuestComplete('meta_uprise')) { (Core.Get()).unlockMedal('Technolize'); } if (this.isQuestComplete('talks_with_aliens')) { (Core.Get()).unlockMedal('Alien Plan'); } }; ASSetPropFlags(_global.GameData.prototype, null, 1); } #endinitclip } movieClip 1957 __Packages.EQuest { #initclip if (!_global.EQuest) { var v1 = function () {}; _global.EQuest = v1; var v2 = v1.prototype; v1.NONE = 0; v1.NORMAL = 1; v1.COMPLETE = 2; v1.FAILED = 3; ASSetPropFlags(_global.EQuest.prototype, null, 1); } #endinitclip } movieClip 1958 __Packages.Log { #initclip if (!_global.Log) { var v1 = function () {}; _global.Log = v1; var v2 = v1.prototype; v1.Msg = function (s_) {}; v1.Wrn = function (s_) {}; v1.Err = function (s_) {}; ASSetPropFlags(_global.Log.prototype, null, 1); } #endinitclip } movieClip 1959 __Packages.EScreenState { #initclip if (!_global.EScreenState) { var v1 = function () {}; _global.EScreenState = v1; var v2 = v1.prototype; v1.NONE = 0; v1.DELAY_TRANS = 1; v1.TRANS = 2; v1.DELAY_POPUP = 3; v1.POPUP = 4; ASSetPropFlags(_global.EScreenState.prototype, null, 1); } #endinitclip } movieClip 1960 __Packages.mx.utils.Delegate { #initclip if (!_global.mx) { _global.mx = new Object(); } if (!_global.mx.utils) { _global.mx.utils = new Object(); } if (!_global.mx.utils.Delegate) { var v1 = function (f) { super(); this.func = f; }; mx.utils.Delegate = v1; mx.utils.Delegate extends Object; var v2 = v1.prototype; v1.create = function (obj, func_) { var v2 = function () { var v2 = arguments.callee.target; var v3 = arguments.callee.func; return v3.apply(v2, arguments); }; v2.target = obj; v2.func = func_; return v2; }; v2.createDelegate = function (obj) { return mx.utils.Delegate.create(obj, this.func); }; ASSetPropFlags(mx.utils.Delegate.prototype, null, 1); } #endinitclip } movieClip 1961 __Packages.Locale { #initclip if (!_global.Locale) { var v1 = function () { this.btn = new Object(); this.skill_descri = new Object(); this.text = new Object(); this.talk = new Object(); }; _global.Locale = v1; var v2 = v1.prototype; ASSetPropFlags(_global.Locale.prototype, null, 1); } #endinitclip } movieClip 1962 __Packages.LocaleEn { #initclip if (!_global.LocaleEn) { var v1 = function () { super(); this.name = 'en'; this.btn.intro = 'PLAY!'; this.btn.load = 'LOAD'; this.btn.save = 'SAVE'; this.btn.back = 'BACK'; this.btn.play = 'PLAY!'; this.btn.help = 'HELP'; this.btn.quit = 'QUIT'; this.btn.sound = 'Sound'; this.btn.music = 'Music'; this.btn.game = 'Game'; this.btn.inventory = 'Inventory'; this.btn.team = 'Team'; this.btn.quests = 'Quest'; this.btn.map = 'World'; this.btn.options = '!'; this.btn.sort = 'Sort'; this.btn.items = 'Items'; this.btn.tasks = 'Tasks'; this.btn.done = 'Done'; this.btn.go_on = 'Go on'; this.btn.leave = 'Leave'; this.btn.ok = 'OK'; this.btn.up = '+5!'; this.btn.reset = 'Reset'; this.skill_descri.vit = 'Vitality skill increases HP\n( amount of damage your character can withstand before knock-out )'; this.skill_descri.acc = 'Accuracy skill increases chance to hit and critical hit chance'; this.skill_descri.def = 'Defence skill increases DR\n( amount of damage avoided when your character is hit )'; this.skill_descri.dgr = 'Danger skill increases damage inflicted to enemies with weapons'; this.skill_descri.tch = 'Technics skill increases EP reserves and also increases damage of devices'; this.skill_descri.med = 'Medicine skill determines how many HP your character can restore with medikits'; this.skill_descri.lck = 'Luck skill improves evasion chance, slightly increases critical hit chance and improves battle loot'; this.text.intro = ' Alien lifeforms...\n When I was a child, I dreamt of\nbecoming an astronaut, to reach distant stars\nand search for alien races.\nWell, in part my dreams have come true,\nthough now I\'m looking for aliens\nonly to destroy them.\n My name is Grid, I am a member of KAUFO.\nAgents of our organization locate aliens\nand eliminate them.\n I have joined them to find adventures and\nbecome a hero. But I could never have \nimagined what it would all turn into...\n'; this.text.outro = new Array(); this.text.outro[0] = ' Life is a sequence of choices.\nOnce I made a choice that I follow to this day.\nAfter victory over Sir F, K.A.U.F.O. focused on\nobtaining unsurpassable political power.\nI became the Director of K.A.U.F.O. and\nNathan, who overthrew President Mist\'s regime,\nfounded the United Empire of Nathan,\nunifying the whole world in hatred of aliens.\nNow humanity actively explores outer space,\nin order to cleanse it of other races.\nK.A.U.F.O. has much work to do.'; this.text.outro[1] = ' Life is a sequence of choices.\nOnce I made a choice only to find that\neverything I came to believe was mistaken.\nAfter that realisation, I was able to help\nothers... And especially her - cyborg girl.\nIt\'s wonderous, how she taught us that we can\nchange everything in the world ourselves!\nMeta-Warriors (reformed to Meta-Government)\nand all of humanity entered a new epoch -\na golden age of technology and harmony...\nUntil one brilliant hacker claimed control\nover the minds of nearly all implant users\nby infecting the communication network.\nBut that is already another story...'; this.text.outro[2] = 'Sir F changed the life of mankind forever.\nAdmiration of the advanced technology of\naliens quickly grew into slavish devotion\nto this race.\nThe aliens quickly grew tired of the blind,\nobsessive worship, and one day they just\ndisappeared, leaving our planet forever.\nHumans, having became reliant on alien support,\nfound themselves unable to survive on their\nown dulled wits and forgotten abilities.\nI don\'t know how this world will end now.'; this.talk.exp = 'Got experience: '; this.talk.money = 'Got money: €'; this.talk.item = 'Got item: '; this.talk.journal = 'Journal updated: '; this.talk.items_lost = 'Items lost: '; this.talk.item_lost = 'Item lost: '; this.talk.join = ' joins your team.'; this.talk.leave = ' leaves your team.'; this.talk.money_lost = 'Lost money: €'; this.talk.skill_up = ' improves '; this.talk.have_items_1 = 'You have '; this.talk.have_items_2 = ' of them.'; this.talk.kills = 'Killed: '; this.talk.quest_complete = 'TASK COMPLETE'; this.talk.quest_failed = 'TASK FAILED'; }; _global.LocaleEn = v1; _global.LocaleEn extends Locale; var v2 = v1.prototype; ASSetPropFlags(_global.LocaleEn.prototype, null, 1); } #endinitclip } movieClip 1963 __Packages.LocaleRu { #initclip if (!_global.LocaleRu) { var v1 = function () { super(); this.name = 'ru'; this.btn.intro = 'ИГРА'; this.btn.load = 'ЗАГР'; this.btn.save = 'СОХР'; this.btn.back = 'НАЗАД'; this.btn.play = 'ИГРА'; this.btn.help = 'ПОМОЩЬ'; this.btn.quit = 'ВЫХОД'; this.btn.sound = 'Звук'; this.btn.music = 'Музыка'; this.btn.game = 'Игра'; this.btn.inventory = 'Инвентарь'; this.btn.team = 'Команда'; this.btn.quests = 'Журнал'; this.btn.map = 'Мир'; this.btn.options = '!'; this.btn.sort = 'Сорт'; this.btn.items = 'Вещи'; this.btn.tasks = 'Текущ'; this.btn.done = 'Архив'; this.btn.go_on = 'Дальше'; this.btn.leave = 'Уйти'; this.btn.ok = 'ОК'; this.btn.up = '+5!'; this.btn.reset = 'Сброс'; this.skill_descri.vit = 'Живучесть ( Vit ) увеличивает HP\n( максимальное количество полученного вреда, которое персонаж может вынести )'; this.skill_descri.acc = 'Меткость ( Acc ) уменьшает шанс промаха и увеличивает шанс критического попадения'; this.skill_descri.def = 'Защита ( Def ) увеличивает DR\n( количество вреда, которое поглощается при попадении )'; this.skill_descri.dgr = 'Опасность ( Dgr ) увеличивает повреждение, наносимое врагам при помощи оружия'; this.skill_descri.tch = 'Техника ( Tch ) увеличивает EP ( запасы энергии ) и улучшает повреждение, наносимое девайсами'; this.skill_descri.med = 'Медицина ( Med ) ограничивает количество HP, которое персонаж может восстановить, используя аптечки'; this.skill_descri.lck = 'Удача ( Lck ) увеличивает шанс уворота, немного увеличивает шанс критического попадения и делает получение добычи в бою более вероятным'; this.text.intro = ' Иные формы жизни…\n В детстве я мечтал стать космонавтом,\nлететь к звездам, искать пришельцев…\nСобственно говоря, часть мечты осуществилась,\nтолько теперь пришельцев надо не только\nнаходить, но еще и убивать.\n Меня зовут Грид, и я работаю в У.В.И.Ф.Ж. -\nорганизации, в чьи задачи входит убивать\nпришельцев без размышления и не вступая\nс ними в беседы.\n Я устроился работать сюда, так как искал\nострых ощущений. Мне хотелось стать героем.\nОднако я и представить не мог, что ждало\nменя впереди…'; this.text.outro = new Array(); this.text.outro[0] = ' Жизнь – это вечный выбор. Сделав свой\nоднажды, я остался верен ему. После победы\nнад Сэром Эф, У.В.И.Ф.Ж. получила невиданное\nранее влияние и политическую силу.\nЧерез какое-то время я занял пост управляющего\nУ.В.И.Ф.Ж., а Натан… Натан отстранил\nпрезидента Мист от правления (разумеется, она\nбыла против и мне пришлось убить ее), а затем\nсоздал Единую Империю Натана, которая\nобъединила всех людей в ненависти к пришельцам.\nНачалось активное изучение космоса с целью\nзахватить его, убив всех, кроме людей.\nНу что же, есть куда стремиться!'; this.text.outro[1] = ' Жизнь – это вечный выбор. Сделав свой однажды,\nя позже изменил его и понял - то, чем занимался\nранее, было неправильно.\nТеперь я смог действительно помочь людям и ей...\nдевочке-компьютеру. Удивительно, но она дала\nмне понять, что я в силах изменить – нет,\nне что-то! абсолютно все. Под руководством\nМета-Воинов (ставших Мета-Правительством)\nчеловечество пришло к новой эре технологий и\nгармонии с окружающим миром... пока технологии\nне вывел из строя гениальный хакер, который\nпоработил больше половины человечества,\nимплантировавших себе много электроники.\nНо это уже другая история.'; this.text.outro[2] = ' Сэр Эф стал тем, кто изменил человечество.\nПродвинутые технологии пришельцев внесли в\nжизнь людей нечто совершенно новое...\nравно как и культ этой расы. С пришельцев\nфанатели все – взрослые, дети, киборги.\nУстав от такого внимания однажды они все\nисчезли, оставив нашу планету. Оказалось,\nчто человечество уже теперь не способно\nвыживать самостоятельно, так как все\nпривыкли полагаться на пришельцев...\nЯ не знаю, что случится с миром теперь.'; this.talk.exp = 'Получен опыт: '; this.talk.money = 'Получено: €'; this.talk.item = 'Получено: '; this.talk.journal = 'Журнал обновлён: '; this.talk.items_lost = 'Потеряно: '; this.talk.item_lost = 'Потеряно: '; this.talk.join = ' присоединяется к команде.'; this.talk.leave = ' покидает команду.'; this.talk.money_lost = 'Потеряно: €'; this.talk.skill_up = ' улучшает '; this.talk.have_items_1 = 'В наличии '; this.talk.have_items_2 = ' штук.'; this.talk.kills = 'Убито: '; this.talk.quest_complete = 'ЗАДАНИЕ ВЫПОЛНЕНО'; this.talk.quest_failed = 'ЗАДАНИЕ ПРОВАЛЕНО'; }; _global.LocaleRu = v1; _global.LocaleRu extends Locale; var v2 = v1.prototype; ASSetPropFlags(_global.LocaleRu.prototype, null, 1); } #endinitclip } movieClip 101 __Packages.com.newgrounds.Medal { #initclip if (!_global.com) { _global.com = new Object(); } if (!_global.com.newgrounds) { _global.com.newgrounds = new Object(); } if (!_global.com.newgrounds.Medal) { var v1 = function (id, name, value, difficulty, unlocked, _icon_url) { if (id == undefined || name == undefined || value == undefined || difficulty == undefined) { com.newgrounds.API.fatalError('Medal instances require an id, name, value and difficulty'); } this._medal_id = id; this._medal_name = name; this._medal_value = value; this._medal_difficulty = difficulty; if (unlocked) { this._medal_unlocked = true; } if (_icon_url) { this._icon_url = _icon_url; } }; com.newgrounds.Medal = v1; var v2 = v1.prototype; v2.__get__difficulty = function () { return com.newgrounds.Medal.difficulty_names[this._medal_difficulty]; }; v2.__get__difficultyId = function () { return this._medal_difficulty; }; v2.__get__icon_url = function () { return this._icon_url; }; v2.__get__id = function () { return this._medal_id; }; v2.__get__name = function () { return this._medal_name; }; v2.__get__unlocked = function () { return this._medal_unlocked; }; v2.__get__value = function () { return this._medal_value; }; v2.isUnlocked = function () { return this._medal_unlocked; }; v2.unlock = function () { if (!this.isUnlocked()) { com.newgrounds.API.unlockMedal(this); } }; v2.setUnlocked = function (u) { this._medal_unlocked = u; }; v2.attachIcon = function (target, depth) { if (!depth) { depth = target.getNextHighestDepth(); } var v3 = target.createEmptyMovieClip('Asset_Medal_Icon_' + this.getID(), depth); if (this._icon_url) { v3.loadMovie(this._icon_url); } else { var v4 = flash.display.BitmapData.loadBitmap('Asset_default_medal_icon_' + this.getDifficulty(), depth); v3.attachBitmap(v4, depth, true); } }; v2.getID = function () { return this._medal_id; }; v2.getName = function () { return this._medal_name; }; v2.getValue = function () { return this._medal_value; }; v2.getDifficulty = function (as_string) { if (as_string) { return com.newgrounds.Medal.difficulty_names[this._medal_difficulty]; } else { return this._medal_difficulty; } }; v2._medal_unlocked = false; v2._icon_loaded = false; v2._icon_width = 50; v2._icon_height = 50; v2._icon_url = null; v1.difficulty_names = new Array(null, 'Easy', 'Moderate', 'Challenging', 'Difficult', 'Brutal'); v2.addProperty('difficulty', v2.__get__difficulty, function () {}); v2.addProperty('difficultyId', v2.__get__difficultyId, function () {}); v2.addProperty('icon_url', v2.__get__icon_url, function () {}); v2.addProperty('id', v2.__get__id, function () {}); v2.addProperty('name', v2.__get__name, function () {}); v2.addProperty('unlocked', v2.__get__unlocked, function () {}); v2.addProperty('value', v2.__get__value, function () {}); ASSetPropFlags(com.newgrounds.Medal.prototype, null, 1); } #endinitclip } movieClip 88 __Packages.com.newgrounds.API { #initclip if (!_global.com) { _global.com = new Object(); } if (!_global.com.newgrounds) { _global.com.newgrounds = new Object(); } if (!_global.com.newgrounds.API) { var v1 = function () {}; com.newgrounds.API = v1; var v2 = v1.prototype; v1.setVersion = function (v) { com.newgrounds.API.version = v; }; v1.setUserEmail = function (e) { com.newgrounds.API.user_email = e; }; v1.setFakeSession = function (fake) { com.newgrounds.API.fake_session = fake; }; v1.setPreload = function (p) { com.newgrounds.API.preload = p; }; v1.getPercentLoaded = function () { var v2; if (com.newgrounds.API.preload && com.newgrounds.API.preload_items > 0) { v2 = 80; var v4 = Math.round((com.newgrounds.API.preload_items_loaded / com.newgrounds.API.preload_items) * 20); var v3 = Math.round((_root.getBytesLoaded() / _root.getBytesTotal()) * v2) + v4; return v3; } v2 = 100; v3 = Math.round((_root.getBytesLoaded() / _root.getBytesTotal()) * v2); return v3; }; v1.reportNewAsset = function () { if (com.newgrounds.API.preload) { ++com.newgrounds.API.preload_items; } }; v1.reportAssetLoaded = function () { if (com.newgrounds.API.preload) { ++com.newgrounds.API.preload_items_loaded; } }; v1.populateMedals = function (medal_list) { if (com.newgrounds.API.medals === null) { com.newgrounds.API.medals = new Array(); var v2 = 0; while (v2 < medal_list.length) { var v1 = medal_list[v2]; com.newgrounds.API.medals.push(new com.newgrounds.Medal(v1.medal_id, v1.medal_name, v1.medal_value, v1.medal_difficulty, v1.medal_unlocked, v1.medal_icon)); ++v2; } } }; v1.populateSaveGroups = function (save_group_list, file_path, image_path) { com.newgrounds.SaveFile.setFilePath(file_path); com.newgrounds.SaveFile.setImagePath(image_path); com.newgrounds.API.save_groups = new Array(); var v6 = 0; while (v6 < save_group_list.length) { var v2 = save_group_list[v6]; var v5 = new com.newgrounds.SaveGroup(v2.group_id, v2.group_name, v2.group_type); var v4 = 0; while (v4 < v2.keys.length) { var v3 = v2.keys[v4]; v5.addKey(v3.id, v3.name, v3.type); ++v4; } v4 = 0; while (v4 < v2.ratings.length) { var v1 = v2.ratings[v4]; v5.addRating(v1.id, v1.name, v1.min, v1.max, v1.float); ++v4; } com.newgrounds.API.save_groups.push(v5); ++v6; } }; v1.populateScoreBoards = function (score_boards) { com.newgrounds.API.scoreboards = new Array(); var v1 = 0; while (v1 < score_boards.length) { com.newgrounds.API.scoreboards.push(new com.newgrounds.ScoreBoard(score_boards[v1].id, score_boards[v1].name)); ++v1; } }; v1.getOfficialURL = function () { var v1 = com.newgrounds.API.GATEWAY_URL + '?tracker_id=' + com.newgrounds.API.movie_id + '&command_id=loadOfficalVersion&seed=' + Math.random(); if (com.newgrounds.API.debug) { v1 += '&debug=1'; } return v1; }; v1.loadOfficialURL = function () { getURL(com.newgrounds.API.getOfficialURL(), '_blank'); }; v1.hasUserSession = function () { if (com.newgrounds.API.session_id && com.newgrounds.API.publisher_id) { return true; return false; } if (_root.NewgroundsAPI_PublisherID && _root.NewgroundsAPI_SessionID) { return true; } return false; }; v1.hostIsCompatible = function () { return _root.NewgroundsAPI_PublisherID !== undefined; }; v1.isNewgrounds = function () { return com.newgrounds.API.publisher_id == 1 || _root.NewgroundsAPI_PublisherID == 1 || ((com.newgrounds.API.getHost()).toLowerCase()).indexOf('ungrounded.net') > -1 || ((com.newgrounds.API.getHost()).toLowerCase()).indexOf('newgrounds.com') > -1; }; v1.hasPublisher = function () { return com.newgrounds.API.publisher_id || _root.NewgroundsAPI_PublisherID; }; v1.hasUserEmail = function () { if (com.newgrounds.API.user_email) { return true; } return false; }; v1.isConnected = function () { return com.newgrounds.API.connected; }; v1.getID = function () { return com.newgrounds.API.getTrackerID(); }; v1.getTrackerID = function () { return com.newgrounds.API.tracker_id; }; v1.getUserID = function () { return com.newgrounds.API.user_id; }; v1.getUserName = function () { return com.newgrounds.API.user_name; }; v1.connectionTimeOut = function () { com.newgrounds.API.reportAssetLoaded(); clearInterval(com.newgrounds.API.timeout); com.newgrounds.API.callListener(com.newgrounds.APIEvent.API_CONNECTED, false, new com.newgrounds.APIError('CONNECTION_FAILED', 'Connection to API gateway timed out.')); }; v1.connect = function (m_id, encrypt_key, debug_mode) { if (com.newgrounds.API.connected) { return undefined; } com.newgrounds.API.sendMessage('Connecting to the Newgrounds API Gateway...'); var v2 = function () { com.newgrounds.API.connectionTimeOut(); }; com.newgrounds.API.timeout = setInterval(v2, 10000, null); if (!m_id) { com.newgrounds.API.fatalError('API.connect() - missing required movie_id parameter', 'connect'); } com.newgrounds.API.movie_id = String(m_id); com.newgrounds.API.tracker_id = Number(com.newgrounds.API.movie_id.substring(0, com.newgrounds.API.movie_id.indexOf(':'))); com.newgrounds.API.encryption_key = encrypt_key; com.newgrounds.API.debug = debug_mode; com.newgrounds.API.user_id = 0; com.newgrounds.API.user_name = 'Guest'; if (_root.NewgroundsAPI_PublisherID) { com.newgrounds.API.publisher_id = _root.NewgroundsAPI_PublisherID; if (_root.NewgroundsAPI_SessionID) { com.newgrounds.API.session_id = _root.NewgroundsAPI_SessionID; } } else { if (com.newgrounds.API.fake_session) { com.newgrounds.API.publisher_id = 1; com.newgrounds.API.session_id = 'D3bu64p1U53R'; com.newgrounds.API.user_id = 10; com.newgrounds.API.user_name = 'API-Debugger'; } else { if (com.newgrounds.API.debug) { com.newgrounds.API.publisher_id = 1; } com.newgrounds.API.session_id = null; } } if (_root.NewgroundsAPI_UserName) { com.newgrounds.API.user_name = _root.NewgroundsAPI_UserName; } if (_root.NewgroundsAPI_UserID) { com.newgrounds.API.user_id = _root.NewgroundsAPI_UserID; } if (_root.NewgroundsAPI_UserpageFormat) { com.newgrounds.API.userpage_format = _root.NewgroundsAPI_UserpageFormat; } com.newgrounds.API.reportNewAsset(); com.newgrounds.API.connected = true; com.newgrounds.API.sendCommand('connectMovie', {'host': com.newgrounds.API.getHost(), 'movie_version': com.newgrounds.API.version}); }; v1.getHost = function () { if (!com.newgrounds.API.host) { var v1 = _url; if ((v1.toLowerCase()).indexOf('http://') > -1 or (v1.toLowerCase()).indexOf('https://') > -1) { if ((v1.toLowerCase()).indexOf(com.newgrounds.API.NEWGROUNDS_PREVIEW) > -1) { com.newgrounds.API.host = com.newgrounds.API.NEWGROUNDS_PREVIEW; } else { com.newgrounds.API.host = (v1.split('/'))[2].toLowerCase(); } return com.newgrounds.API.host; } com.newgrounds.API.host = com.newgrounds.API.LOCAL_HOST; } return com.newgrounds.API.host; }; v1.isPublishedHost = function () { for (var v1 in com.newgrounds.API.PREVIEW_HOSTS) { if (com.newgrounds.API.getHost() == com.newgrounds.API.PREVIEW_HOSTS[v1]) { return false; } } return true; }; v1.loadUserPage = function (u_id, u_name) { if (u_id == undefined && u_name == undefined) { if (com.newgrounds.API.hasUserSession()) { u_id = com.newgrounds.API.user_id; u_name = com.newgrounds.API.user_name; } else { return false; } } if (com.newgrounds.API.publisher_id == 1) { var v1 = 'http://' + com.newgrounds.API.user_name.toLowerCase() + '.newgrounds.com'; getURL(v1, '_blank'); return true; return false; } if (com.newgrounds.API.userpage_format) { v1 = com.newgrounds.API.userpage_format; v1 = (v1.split(':user_id:')).join(u_id.toString()); v1 = (v1.split(':user_name:')).join(escape(u_name)); getURL(v1, '_blank'); return true; } return false; }; v1.loadNewgrounds = function () { com.newgrounds.API.sendCommand('loadNewgrounds', {'host': com.newgrounds.API.getHost()}, true); }; v1.loadMySite = function () { com.newgrounds.API.sendCommand('loadMySite', {'host': com.newgrounds.API.getHost()}, true); }; v1.loadCustomLink = function (link) { com.newgrounds.API.sendCommand('loadCustomLink', {'host': com.newgrounds.API.getHost(), 'link': link}, true); }; v1.logCustomEvent = function (event) { com.newgrounds.API.sendCommand('logCustomEvent', {'host': com.newgrounds.API.getHost(), 'event': event}); }; v1.getScoreBoard = function (board) { if (!com.newgrounds.API.scoreboards || com.newgrounds.API.scoreboards.length < 1) { com.newgrounds.API.sendWarning('You do not have any scoreboards configured in your API setup.'); return null; } for (var v2 in com.newgrounds.API.scoreboards) { if (typeof board == 'string' && com.newgrounds.API.scoreboards[v2].name == board) { return com.newgrounds.API.scoreboards[v2]; } else { if (typeof board == 'number' && com.newgrounds.API.scoreboards[v2].id == board) { return com.newgrounds.API.scoreboards[v2]; } } } com.newgrounds.API.sendWarning('Could not find any scoreboards named \'' + board + '\'.'); return null; }; v1.postScore = function (board_name, value, tag) { var v3 = com.newgrounds.API.getScoreBoard(board_name); if (tag === undefined) { tag = ''; } if (!v3) { com.newgrounds.API.sendError({'command_id': 'postScore'}, new com.newgrounds.APIError('INVALID_SCOREBOARD', 'Failed to post score. Check the spelling of your board name.')); return undefined; } if (value == undefined) { com.newgrounds.API.sendError({'command_id': 'postScore'}, new com.newgrounds.APIError('MISSING_PARAM', 'Missing score value')); return undefined; } com.newgrounds.API.sendSecureCommand('postScore', {'user_name': com.newgrounds.API.user_name, 'board': v3.id, 'value': value, 'tag': tag, 'publisher_id': com.newgrounds.API.publisher_id}); }; v1.loadScores = function (board_name, period, tag) { var v3 = 'loadScores'; var v2 = com.newgrounds.API.getScoreBoard(board_name); if (!v2) { com.newgrounds.API.sendError({'command_id': v3}, new com.newgrounds.APIError('INVALID_SCOREBOARD', 'Failed to load scores. Check the spelling of your board name.')); return undefined; } var v1 = {}; v1.publisher_id = com.newgrounds.API.publisher_id; v1.board = v2.id; v1.num_results = v2.num_results; v1.page = v2.page; if (period === undefined) { v1.period = v2.period; } else { v1.period = period; } if (tag === undefined) { v1.tag = v2.tag; } else { v1.tag = tag; } com.newgrounds.API.sendCommand(v3, v1); }; v1.unlockMedal = function (medal, x, y) { if (!medal) { com.newgrounds.API.sendError({'command_id': 'unlockMedal'}, new com.newgrounds.APIError('MISSING_PARAM', 'missing required medal name')); return undefined; } if (typeof medal != 'object') { medal = com.newgrounds.API.getMedal(medal); } if (!medal) { com.newgrounds.API.sendError({'command_id': 'unlockMedal'}, new com.newgrounds.APIError('INVALID_MEDAL', 'medal unlock failed, check your medal name for correct spelling.')); return undefined; } com.newgrounds.API.callListener(com.newgrounds.APIEvent.UNLOCK_MEDAL, true, {'medal': medal, 'x': x, 'y': y}); if (com.newgrounds.API.hasUserSession() or com.newgrounds.API.debug) { com.newgrounds.API.sendMessage('Attempting to unlock \'' + medal.getName() + '\''); var v3 = new Object(); v3.medal_id = medal.getID(); com.newgrounds.API.sendSecureCommand('unlockMedal', v3); } else { com.newgrounds.API.sendMessage('Unlocking \'' + medal.getName() + '\''); medal.setUnlocked(true); var v2 = com.newgrounds.API.loadLocal('medals_unlocked'); if (!v2) { v2 = new Object(); } v2[medal.getID()] = true; com.newgrounds.API.saveLocal('medals_unlocked', v2); } }; v1.loadMedals = function () { if (com.newgrounds.API.medals) { com.newgrounds.API.callListener(com.newgrounds.APIEvent.MEDALS_LOADED, true, {'medals': com.newgrounds.API.medals}); return undefined; } var v1 = new Object(); if (com.newgrounds.API.hasUserSession()) { v1.publisher_id = com.newgrounds.API.publisher_id; v1.user_id = com.newgrounds.API.user_id; } com.newgrounds.API.sendCommand('getMedals', v1); }; v1.getMedals = function () { return com.newgrounds.API.medals; }; v1.getMedal = function (identifier) { if (!com.newgrounds.API.medals || com.newgrounds.API.medals.length < 1) { com.newgrounds.API.sendWarning('You do not have any medals configured on your API setup!'); return false; } for (var v3 in com.newgrounds.API.medals) { var v1 = com.newgrounds.API.medals[v3]; if (typeof identifier == 'string' && v1.getName() == identifier) { return v1; } else { if (v1.getID() == identifier) { return v1; } } } com.newgrounds.API.sendWarning('Could not find any medals named \'' + identifier + '\'.'); return false; }; v1.saveLocal = function (save_id, save_data, size_allocation) { if (!com.newgrounds.API.sharedObjects[save_id]) { com.newgrounds.API.sharedObjects[save_id] = SharedObject.getLocal('ng_ap_secure_' + com.newgrounds.API.movie_id + '_' + save_id); } com.newgrounds.API.sharedObjects[save_id].data[save_id] = com.newgrounds.API.encodeData(save_data); com.newgrounds.API.sharedObjects[save_id].flush(); }; v1.loadLocal = function (save_id) { if (!com.newgrounds.API.sharedObjects[save_id]) { com.newgrounds.API.sharedObjects[save_id] = SharedObject.getLocal('ng_ap_secure_' + com.newgrounds.API.movie_id + '_' + save_id); } com.newgrounds.API.sharedObjects[save_id].flush(); com.newgrounds.API.echo('sharedobject ' + save_id + ' is: ' + com.newgrounds.API.sharedObjects[save_id].data[save_id]); if (com.newgrounds.API.sharedObjects[save_id].data[save_id]) { com.newgrounds.API.echo('decoded: ' + com.newgrounds.API.decodeData(com.newgrounds.API.sharedObjects[save_id].data[save_id])); return com.newgrounds.API.decodeData(com.newgrounds.API.sharedObjects[save_id].data[save_id]); } else { return null; } }; v1.encodeData = function (data) { return com.newgrounds.API.compressHex(com.newgrounds.encoders.RC4.encrypt(com.newgrounds.encoders.JSON.encode(data), com.newgrounds.API.encryption_key)); }; v1.decodeData = function (base) { return com.newgrounds.encoders.JSON.decode(com.newgrounds.encoders.RC4.decrypt(com.newgrounds.API.uncompressHex(base), com.newgrounds.API.encryption_key)); }; v1.compressHex = function (hex_value) { var v6 = hex_value.length % 6; var v4 = ''; var v5 = new com.newgrounds.encoders.BaseN(com.newgrounds.API.compression_radix); var v1 = 0; while (v1 < hex_value.length) { var v2 = Number('0x' + hex_value.substr(v1, 6)); v4 += v5.encode(v2, 4); v1 += 6; } return v6 + v4; }; v1.uncompressHex = function (base_value) { var v9 = Number(base_value.charAt(0)); var v7 = ''; var v3; var v8 = new com.newgrounds.encoders.BaseN(com.newgrounds.API.compression_radix); var v2 = 1; while (v2 < base_value.length) { var v6 = base_value.substr(v2, 4); var v5 = v8.decode(v6); var v1 = com.newgrounds.API.dec2hex(v5); if (v2 + 4 < base_value.length) { v3 = 6; } else { v3 = v9; } while (v1.length < v3) { v1 = '0' + v1; } v7 += v1; v2 += 4; } return v7; }; v1.dec2hex = function (dec) { var v4 = '0123456789ABCDEF'; var v3 = ''; while (dec > 0) { var v2 = dec % 16; v3 = v4.charAt(v2) + v3; dec = (dec - v2) / 16; } return v3; }; v1.getSaveGroup = function (group) { if (com.newgrounds.API.save_groups == null || com.newgrounds.API.save_groups.length < 1) { com.newgrounds.API.sendWarning('You do not have any save groups configured in your API setup!'); return null; } var v1 = 0; while (v1 <= com.newgrounds.API.save_groups.length) { if (typeof group == 'number' or (Number(group)).toString() == String(group)) { if (com.newgrounds.API.save_groups[v1].getID() == Number(group)) { return com.newgrounds.API.save_groups[v1]; } } else { if (typeof group == 'string') { if ((com.newgrounds.API.save_groups[v1].getName()).toLowerCase() == group.toLowerCase()) { return com.newgrounds.API.save_groups[v1]; } } } ++v1; } com.newgrounds.API.sendWarning('Could not find any save groups named \'' + group + '\'.'); return null; }; v1.getCurrentSaveFile = function () { return com.newgrounds.API.save_file; }; v1.setCurrentSaveFile = function (current) { com.newgrounds.API.save_file = current; }; v1.loadSaveFile = function (save_id, get_contents) { if (get_contents === undefined) { get_contents = true; } var v1 = 'loadSaveFile'; var v2 = {'publisher_id': com.newgrounds.API.publisher_id, 'save_id': save_id, 'get_contents': get_contents}; com.newgrounds.API.save_file = null; com.newgrounds.API.sendCommand(v1, v2); }; v1.loadFilesByDate = function (group_name, sort_descending, key_name, key_value) { if (sort_descending === undefined) { sort_descending = true; } var v2 = com.newgrounds.API.getSaveGroup(group_name); if (!v2) { var v3 = new com.newgrounds.APIError('QUERY_INCOMPLETE', 'The query could not be preformed, check the spelling of your save group name.'); com.newgrounds.API.sendError({'command_id': 'loadFilesByDate'}, v3); return undefined; } var v1 = new com.newgrounds.SaveGroupQuery(v2); if (key_name) { v1.addKeyCondition(key_name, '=', key_value); } v1.sortOn('CREATED_ON', sort_descending ? 'DESC' : 'ASC'); v1.execute(); }; v1.loadFilesByViews = function (group_name, sort_descending, key_name, key_value) { if (sort_descending === undefined) { sort_descending = true; } var v2 = com.newgrounds.API.getSaveGroup(group_name); if (!v2) { var v3 = new com.newgrounds.APIError('QUERY_INCOMPLETE', 'The query could not be preformed, check the spelling of your save group name.'); com.newgrounds.API.sendError({'command_id': 'loadFilesByViews'}, v3); return undefined; } var v1 = new com.newgrounds.SaveGroupQuery(v2); if (key_name) { v1.addKeyCondition(key_name, '=', key_value); } v1.sortOn('TOTAL_VIEWS', sort_descending ? 'DESC' : 'ASC'); v1.execute(); }; v1.loadFilesByRating = function (group_name, rating_name, sort_descending, key_name, key_value) { if (sort_descending === undefined) { sort_descending = true; } var v2 = com.newgrounds.API.getSaveGroup(group_name); if (!v2) { var v3 = new com.newgrounds.APIError('QUERY_INCOMPLETE', 'The query could not be preformed, check the spelling of your save group name.'); com.newgrounds.API.sendError({'command_id': 'loadFilesByRating'}, v3); return undefined; } var v1 = new com.newgrounds.SaveGroupQuery(v2); if (key_name) { v1.addKeyCondition(key_name, '=', key_value); } v1.sortOnRating(rating_name, sort_descending ? 'DESC' : 'ASC', 'score'); v1.execute(); }; v1.lookupSaveFiles = function (save_group) { var v1 = 'lookupSaveFiles'; var v2 = {'publisher_id': com.newgrounds.API.publisher_id, 'group_id': save_group.getID(), 'query': com.newgrounds.encoders.JSON.encode(save_group.getQuery(true))}; com.newgrounds.API.sendCommand(v1, v2); }; v1.newSaveFile = function (group) { var v1 = com.newgrounds.API.getSaveGroup(group); if (v1) { return v1.newFile(); } else { var v2 = new com.newgrounds.APIError('INVALID_SAVE_GROUP', 'You can not create new files in invalid groups.'); com.newgrounds.API.sendError({'command_id': 'newSaveFile'}, v2); } }; v1.newSaveQuery = function (group) { var v1 = com.newgrounds.API.getSaveGroup(group); if (v1) { return v1.newQuery(); } else { var v2 = new com.newgrounds.APIError('INVALID_SAVE_GROUP', '\'' + group + '\' is not a valid save group.'); com.newgrounds.API.sendError({'command_id': 'newSaveQuery'}, v2); } }; v1.checkFilePrivs = function (file) { if (com.newgrounds.API.user_id) { var v1 = com.newgrounds.API.user_id; } else { var v1 = 0; } var v2 = {'group': (file.getGroup()).getID(), 'filename': file.getName(), 'user_id': v1, 'publisher_id': com.newgrounds.API.publisher_id}; com.newgrounds.API.sendCommand('checkFilePrivs', v2); }; v1.saveFile = function (file, overwrite) { var v1; v1 = {'group': (file.getGroup()).getID(), 'filename': file.getName(), 'description': file.getDescription(), 'draft': file.__get__draft(), 'user_name': com.newgrounds.API.user_name}; if (overwrite) { v1.overwrite = overwrite; } if (file.getDuplicateID()) { v1.save_id = file.getDuplicateID(); } if ((file.getKeys()).length > 0) { v1.keys = file.getKeys(); } var v3; v3 = {'file': file.getRawContents()}; if (file.getThumbnailImageScan()) { v3.thumbnail = file.getThumbnailImageScan(); } com.newgrounds.API.save_file = file; com.newgrounds.API.sendSecureCommand('saveFile', v1, null, v3); }; v1.rateSaveFile = function (file, rating, vote) { var v1 = {'group': (file.getGroup()).getID(), 'save_id': file.getID(), 'rating_id': rating.rating_id, 'vote': vote, 'user_id': com.newgrounds.API.user_id}; com.newgrounds.API.sendSecureCommand('rateSaveFile', v1); }; v1.getConfirmation = function (command_name, event, msg, target, confirm, cancel) { var v1 = new com.newgrounds.APIError('CONFIRM_REQUEST', msg); v1.confirm = function () { target[confirm](); }; v1.cancel = function () { target[cancel](); }; v1.command = command_name; com.newgrounds.API.callListener(event, false, v1); }; v1.onRemoteAuthentication = function (auth_result) { var v1 = com.newgrounds.encoders.JSON.decode(com.newgrounds.encoders.RC4.decrypt(auth_result, com.newgrounds.API.encryption_key)); delete com.newgrounds.API.remote_auth; com.newgrounds.API.user_id = v1.NewgroundsAPI_UserID; com.newgrounds.API.user_name = v1.NewgroundsAPI_UserName; com.newgrounds.API.session_id = v1.NewgroundsAPI_SessionID; com.newgrounds.API.publisher_id = v1.NewgroundsAPI_PublisherID; }; v1.doEvent = function (e) { switch (e.command_id) { case 'connectMovie': clearInterval(com.newgrounds.API.timeout); com.newgrounds.API.sendMessage('You have successfully connected to the Newgrounds API Gateway'); com.newgrounds.API.sendMessage('Movie identified as "' + e.movie_name + '"'); com.newgrounds.API.callListener(com.newgrounds.APIEvent.API_CONNECTED, e.success, {'title': e.movie_name}); var v7 = false; if (e.ad_status === -1) { var v11 = 'This movie was not approved to run Flash Ads.'; com.newgrounds.API.sendWarning(v11); com.newgrounds.API.sendWarning('visit ' + com.newgrounds.API.AD_TERMS_URL + ' to view our approval guidelines'); if (!e.ad_url) { com.newgrounds.API.callListener(com.newgrounds.APIEvent.ADS_APPROVED, false, new com.newgrounds.APIError('FLASH_ADS_NOT_APPROVED', v11)); } else { v7 = true; } } else { if (e.ad_status === 0) { var v11 = 'Flash Ads are currently awaiting approval.'; com.newgrounds.API.sendNotice(v11); if (!e.ad_url) { com.newgrounds.API.callListener(com.newgrounds.APIEvent.ADS_APPROVED, false, new com.newgrounds.APIError('FLASH_ADS_NOT_APPROVED', v11)); } else { v7 = true; } } } if (e.ad_url) { com.newgrounds.API.ad_url = unescape(e.ad_url); if (!v7) { com.newgrounds.API.sendMessage('This movie has been approved to run Flash Ads!'); } com.newgrounds.API.callListener(com.newgrounds.APIEvent.ADS_APPROVED, true); } if (e.deny_host) { v11 = com.newgrounds.API.getHost() + ' does not have permission to run this movie!'; com.newgrounds.API.sendWarning(v11); com.newgrounds.API.sendWarning('\tUpdate your API configuration to unblock ' + com.newgrounds.API.getHost()); com.newgrounds.API.callListener(com.newgrounds.APIEvent.HOST_BLOCKED, true, {'real_url': unescape(e.movie_url), 'url': com.newgrounds.API.getOfficialURL()}); } else { if (e.movie_version) { com.newgrounds.API.sendWarning('According to your API Configuration, this version is out of date.'); if (com.newgrounds.API.version) { com.newgrounds.API.sendWarning('\tThe this movie is version ' + com.newgrounds.API.version); } com.newgrounds.API.sendWarning('\tThe most current version is ' + e.movie_version); com.newgrounds.API.callListener(com.newgrounds.APIEvent.NEW_VERSION_AVAILABLE, true, {'version': e.movie_version, 'real_url': unescape(e.movie_url), 'url': com.newgrounds.API.getOfficialURL()}); } } if (e.request_portal_url) { com.newgrounds.API.sendCommand('setPortalID', {'portal_url': _url}); } if (com.newgrounds.API.preload) { com.newgrounds.API.reportNewAsset(); var v8 = {}; if (com.newgrounds.API.hasUserSession()) { v8.publisher_id = com.newgrounds.API.publisher_id; v8.user_id = com.newgrounds.API.user_id; } com.newgrounds.API.sendCommand('preloadSettings', v8); } com.newgrounds.API.reportAssetLoaded(); break; case 'preloadSettings': if (e.medals) { com.newgrounds.API.populateMedals(e.medals); if (!com.newgrounds.API.hasUserSession() and !com.newgrounds.API.debug) { com.newgrounds.API.echo('checking for sharedobject medals...'); var v4 = com.newgrounds.API.loadLocal('medals_unlocked'); if (v4) { for (var v32 in v4) { v32 = Number(v32); if (v4[v32]) { var v3 = com.newgrounds.API.getMedal(v32); com.newgrounds.API.echo('now unlocking ' + v3.getName()); v3.setUnlocked(true); } } } } } if (e.save_groups) { com.newgrounds.API.populateSaveGroups(e.save_groups, e.save_file_path); } if (e.score_boards) { com.newgrounds.API.populateScoreBoards(e.score_boards); } if (_root.NewgroundsAPI_SaveFileID && _root.NewgroundsAPI_SaveGroupID) { com.newgrounds.API.callListener(com.newgrounds.APIEvent.FILE_REQUESTED, true, {'save_id': _root.NewgroundsAPI_SaveFileID, 'group': com.newgrounds.API.getSaveGroup(_root.NewgroundsAPI_SaveGroupID)}); } com.newgrounds.API.callListener(com.newgrounds.APIEvent.METADATA_LOADED, true); com.newgrounds.API.reportAssetLoaded(); break; case 'logCustomEvent': if (e.success) { com.newgrounds.API.sendMessage('Event \'' + e.event + '\' was logged.'); } com.newgrounds.API.callListener(com.newgrounds.APIEvent.EVENT_LOGGED, e.success, {'event': e.event}); break; case 'postScore': var v9; if (e.success) { var v5 = 'User'; if (com.newgrounds.API.user_email) { v5 = com.newgrounds.API.user_email; } else { if (com.newgrounds.API.user_name) { v5 = com.newgrounds.API.user_name; } } var v19 = com.newgrounds.API.getScoreBoard(e.board); com.newgrounds.API.sendMessage(v5 + ' posted ' + e.value + ' to \'' + v19.name + '\''); v9 = {'board': v19, 'value': e.value, 'username': v5}; } com.newgrounds.API.callListener(com.newgrounds.APIEvent.SCORE_POSTED, e.success, v9); break; case 'loadScores': var v9 = new Object(); var v19 = com.newgrounds.API.getScoreBoard(e.board); if (v19.exists()) { v19.setScores(e.scores, e.period, e.page, e.num_results); } com.newgrounds.API.callListener(com.newgrounds.APIEvent.SCORES_LOADED, e.success, {'board': v19}); break; case 'unlockMedal': var v24 = com.newgrounds.API.getMedal(e.medal_name); v24.setUnlocked(true); com.newgrounds.API.sendMessage('Successfuly unlocked \'' + v24.getName() + '\''); com.newgrounds.API.callListener(com.newgrounds.APIEvent.MEDAL_UNLOCKED, e.success, {'medal_id': v24.id, 'medal': v24}); break; case 'getMedals': com.newgrounds.API.populateMedals(e.medals); com.newgrounds.API.callListener(com.newgrounds.APIEvent.MEDALS_LOADED, e.success, {'medals': com.newgrounds.API.medals}); break; case 'loadSaveFile': var v16 = com.newgrounds.API.getSaveGroup(e.group_id); var v14 = new com.newgrounds.SaveFile(v16); v14.id = e.file.save_id; v14.name = e.file.filename; v14.fileUrl = e.file.file; v14.thumbnailUrl = e.file.thumb; v14.authorName = e.file.user_name; v14.authorId = e.file.user_id; v14.description = e.file.description; v14.setPermissions(e.file.status, e.file.locked); for (var v6 in e.file.keys) { v14.setKey(e.file.keys[v6].id, e.file.keys[v6].value); } for (v6 in e.file.ratings) { v14.setRating(e.file.ratings[v6].id, e.file.ratings[v6].votes, e.file.ratings[v6].score); } if (e.get_contents) { v14.loadContents(); } com.newgrounds.API.callListener(com.newgrounds.APIEvent.FILE_INITIALIZED, e.success, {'save_id': v14.id, 'file': v14}); com.newgrounds.API.save_file = v14; break; case 'lookupSaveFiles': var v12 = (com.newgrounds.API.getSaveGroup(e.group_id)).getQuery(); v12.onExecuted(e.files); break; case 'rateSaveFile': var v16 = com.newgrounds.API.getSaveGroup(e.group_id); var v14 = v16.getFile(e.save_id); if (e.already_voted) { var v27 = new com.newgrounds.APIError('PERMISSION_DENIED', 'You have already voted on this item today'); com.newgrounds.API.callListener(com.newgrounds.APIEvent.VOTE_COMPLETE, false, {'error': v27, 'file': v14, 'save_id': v14.id}); return undefined; } else { if (e.success) { var v10 = v14.onVoted(e); com.newgrounds.API.callListener(com.newgrounds.APIEvent.VOTE_COMPLETE, e.success, {'rating': v10, 'file': v14, 'save_id': v14.id}); } else { com.newgrounds.API.callListener(com.newgrounds.APIEvent.VOTE_COMPLETE, e.success, {'file': v14, 'save_id': v14.id}); com.newgrounds.API.sendError('Your vote was not accepted.'); } } break; case 'saveFile': if (com.newgrounds.API.save_file) { if (!com.newgrounds.API.save_file.exists()) { com.newgrounds.API.save_file.setID(e.save_id, true); } com.newgrounds.API.save_file.onSaved(e); com.newgrounds.API.callListener(com.newgrounds.APIEvent.FILE_SAVED, e.success, {'save_id': com.newgrounds.API.save_file.__get__id(), 'file': com.newgrounds.API.save_file}); if (e.success) { com.newgrounds.API.sendMessage('You just saved a new file (id #' + e.save_id + ') to the \'' + (com.newgrounds.API.save_file.__get__group()).__get__name() + '\' save group.'); } } com.newgrounds.API.save_file = null; break; case 'checkFilePrivs': var v9 = {'file': com.newgrounds.API.save_file, 'filename': e.filename, 'group': e.group, 'exists': e.exists, 'can_write': e.can_write}; if (e.duplicate_id) { v9.duplicate_id = e.duplicate_id; } if (!e.success) { com.newgrounds.API.sendWarning('You do not have permission to save this file!'); } com.newgrounds.API.callListener(com.newgrounds.APIEvent.FILE_PRIVS_LOADED, e.success, v9); } }; v1.getDispatcher = function () { if (!com.newgrounds.API.eventDispatcher) { com.newgrounds.API.eventDispatcher = new com.newgrounds.APIEventDispatcher(); } return com.newgrounds.API.eventDispatcher; }; v1.hasEventListener = function (event) { return (com.newgrounds.API.getDispatcher()).hasEventListener(event); }; v1.addEventListener = function (event, listener, target) { com.newgrounds.API.echo('Adding a listener for \'' + event + '\''); (com.newgrounds.API.getDispatcher()).addEventListener(event, listener, target); }; v1.removeEventListener = function (event, target) { (com.newgrounds.API.getDispatcher()).removeEventListener(event, target); }; v1.callListener = function (event, success, data, target) { com.newgrounds.API.echo('Fired Event: ' + event); var v2 = new com.newgrounds.APIEvent(event, success, data); (com.newgrounds.API.getDispatcher()).dispatchEvent(v2); if (event == com.newgrounds.APIEvent.API_CONNECTED && !success) { com.newgrounds.API.connected = false; } com.newgrounds.API.bridge.sendEvent(event, {'success': success, 'data': data}); }; v1.sendError = function (c, e) { switch (c.command_id) { case 'connectMovie': clearInterval(com.newgrounds.API.timeout); com.newgrounds.API.callListener(com.newgrounds.APIEvent.API_CONNECTED, false, {'error': e, 'response': c}); break; case 'saveFile': com.newgrounds.API.callListener(com.newgrounds.APIEvent.FILE_SAVED, false, {'error': e, 'file': com.newgrounds.API.save_file, 'response': c}); com.newgrounds.API.save_file = null; } var v3 = '[Newgrounds API ERROR] :: ' + c.command_id + '() - ' + e.name + ':' + '\n' + '\t\t\t\t' + e.message; trace(v3); com.newgrounds.API.bridge.sendEvent('trace', {'data': v3}); }; v1.sendWarning = function (m, c) { if (c) { m += '\r[Newgrounds API WARNING] :: \tSee ' + com.newgrounds.API.COMMANDS_WIKI_URL + c.toLowerCase() + ' for additional information.'; } var v1 = '[Newgrounds API WARNING] :: ' + m; trace(v1); com.newgrounds.API.bridge.sendEvent('trace', {'data': v1}); }; v1.sendNotice = function (m, c) { if (c) { m += '\r[Newgrounds API NOTICE] :: \tSee ' + com.newgrounds.API.COMMANDS_WIKI_URL + c.toLowerCase() + ' for additional information.'; } trace('[Newgrounds API NOTICE] :: ' + m); }; v1.fatalError = function (m, c) { if (c) { m += '\r\tSee ' + com.newgrounds.API.COMMANDS_WIKI_URL + c.toLowerCase() + ' for additional information.'; } throw '***ERROR*** frame=' + _root._currentframe + ', class=API' + '\n' + '\n' + m; }; v1.openLoginPage = function () { if (com.newgrounds.API.hasUserSession()) { return undefined; } if (!com.newgrounds.API.remote_auth) { var v1 = com.newgrounds.encoders.MD5.calculate(Math.random() + 'a' + com.newgrounds.API.movie_id); v1 = 'POOPYPANTS'; com.newgrounds.API.remote_auth = new com.newgrounds.RemoteAuth(v1); } var v2 = com.newgrounds.encoders.RC4.encrypt(com.newgrounds.API.remote_auth.__get__token(), com.newgrounds.API.encryption_key); trace(v2); getURL(com.newgrounds.API.LOGIN_URL + '?api_auth_id=' + com.newgrounds.API.movie_id + '&api_auth_key=' + v2, '_blank'); }; v1.sendSecureCommand = function (command, secure_params, unsecure_params, files) { if (!com.newgrounds.API.debug && !com.newgrounds.API.hasUserSession() && !com.newgrounds.API.hasUserEmail()) { com.newgrounds.API.sendError({'command_id': command}, new com.newgrounds.APIError('IDENTIFICATION_REQUIRED', 'You must be logged in, or provide an e-mail address using \'API.setUserEmail("name@domain.com");\' to use ' + command + '().')); return undefined; } if (!command) { com.newgrounds.API.fatalError('Missing command', 'sendSecureCommand'); } if (!secure_params) { com.newgrounds.API.fatalError('Missing secure_params', 'sendSecureCommand'); } if (!unsecure_params) { unsecure_params = new Object(); } var v2 = ''; var v1 = 0; while (v1 < 16) { v2 += com.newgrounds.API.compression_radix.charAt(Math.floor(Math.random() * com.newgrounds.API.compression_radix.length)); ++v1; } if (com.newgrounds.API.debug && !com.newgrounds.API.fake_session && !com.newgrounds.API.session_id) { secure_params.session_id = ''; } else { secure_params.session_id = com.newgrounds.API.session_id; } secure_params.as_version = 2; secure_params.user_email = com.newgrounds.API.user_email; secure_params.publisher_id = com.newgrounds.API.publisher_id; secure_params.seed = v2; secure_params.command_id = command; var v6 = com.newgrounds.encoders.JSON.encode(secure_params); trace('JSON: ' + v6 + '\n'); var v9 = com.newgrounds.encoders.MD5.calculate(v2); var v7 = com.newgrounds.encoders.RC4.encrypt(v6, com.newgrounds.API.encryption_key); var v8 = v9 + v7; unsecure_params.secure = com.newgrounds.API.compressHex(v8); com.newgrounds.API.sendCommand('securePacket', unsecure_params, false, files); }; v1.sendCommand = function (command, params, open_browser, files) { if (!com.newgrounds.API.connected and command != 'connectMovie') { var v12 = 'API.' + command + '() - API.connect() must be called before this command can be called' + '\n'; com.newgrounds.API.fatalError(v12, 'connect'); } if (open_browser) { var v2 = new Object(); } else { var v2 = new LoadVars(); } v2.command_id = command; v2.tracker_id = com.newgrounds.API.movie_id; if (com.newgrounds.API.debug) { v2.debug = com.newgrounds.API.debug; } if (params) { for (var v9 in params) { v2[v9] = params[v9]; } } if (files) { for (v9 in files) { v2[v9] = files[v9]; } } if (open_browser) { var v6 = com.newgrounds.API.GATEWAY_URL + '?seed=' + Math.random(); for (v9 in v2) { v6 += '&' + escape(v9) + '=' + escape(v2[v9]); } trace('OPENING ' + v6); getURL(v6, '_blank'); v2.removeMovieClip(); } else { var v10 = new LoadVars(); v10.remember_command_id = v2.command_id; v10.onData = function (data) { com.newgrounds.API.echo('INPUT: \r' + data + '\n'); if (data) { var v2 = com.newgrounds.encoders.JSON.decode(data); } else { var v2 = {'success': false}; } if (!v2.success) { if (!v2.error_code && !v2.error_msg) { v2.error_code = 'CONNECTION_FAILED'; v2.error_msg = 'Could not contact the API Gateway'; v2.command_id = this.remember_command_id; } var v4 = new com.newgrounds.APIError(v2.error_code, v2.error_msg); com.newgrounds.API.sendError(v2, v4); } else { com.newgrounds.API.doEvent(v2); } }; var v7 = new Array(); for (var v8 in v2) { v7.push(v8 + '=' + escape(v2[v8])); } com.newgrounds.API.echo('POST ' + com.newgrounds.API.GATEWAY_URL + '?' + v7.join('&')); v2.sendAndLoad(com.newgrounds.API.GATEWAY_URL + '?seed=' + Math.random(), v10, 'POST'); com.newgrounds.API.last_command = v2.command_id; } }; v1.renderAd = function (target) { if (com.newgrounds.API.ad_swf_url) { target.background = target.createEmptyMovieClip('background', 100); target.background.beginFill(0); target.background.moveTo(0, 0); target.background.lineTo(300, 0); target.background.lineTo(300, 250); target.background.lineTo(0, 250); target.background.lineTo(0, 0); target.background.endFill(); target.mask = target.createEmptyMovieClip('mask', 101); target.mask.beginFill(0); target.mask.moveTo(0, 0); target.mask.lineTo(300, 0); target.mask.lineTo(300, 250); target.mask.lineTo(0, 250); target.mask.lineTo(0, 0); target.mask.endFill(); target.clip = target.createEmptyMovieClip('clip', 102); target.clip.ad = target.clip.createEmptyMovieClip('ad', 100); target.clip.setMask(target.mask); target.clip.ad._lockroot = true; loadMovie(com.newgrounds.API.ad_swf_url, target.clip.ad); com.newgrounds.API.callListener(com.newgrounds.APIEvent.AD_ATTACHED, true, {'target': target}); } else { com.newgrounds.API.callListener(com.newgrounds.APIEvent.AD_ATTACHED, false, new com.newgrounds.APIError('FLASH_ADS_NOT_APPROVED', 'Unable to render ad')); } }; v1.attachFlashAd = function (target) { if (com.newgrounds.API.checkAdFlood()) { com.newgrounds.API.ad_swf_url = null; } else { if (com.newgrounds.API.checkAdCache()) { com.newgrounds.API.reportNewAsset(); var v1 = new LoadVars(); v1.onData = function (data) { if (data) { com.newgrounds.API.ad_swf_url = data; } else { com.newgrounds.API.ad_swf_url = null; } com.newgrounds.API.reportAssetLoaded(); com.newgrounds.API.renderAd(target); }; if (com.newgrounds.API.ad_url.indexOf('?') > -1) { v1.load(com.newgrounds.API.ad_url + '&random=' + Math.random()); } else { v1.load(com.newgrounds.API.ad_url + '?random=' + Math.random()); } if (!com.newgrounds.API.ad_warning) { com.newgrounds.API.ad_warning = true; com.newgrounds.API.sendMessage('You may get a security sandbox violation from this ad. This is nothing to worry about!'); } } else { if (com.newgrounds.API.ad_swf_url) { com.newgrounds.API.renderAd(target); } } } }; v1.checkAdFlood = function () { if (!com.newgrounds.API.ad_url) { return false; } var v2 = new Date(); var v1 = v2.getTime(); if (v1 >= com.newgrounds.API.ad_flood) { if (v1 - com.newgrounds.API.ad_flood > 1000) { com.newgrounds.API.ad_flood = v1 + 1000; return false; } com.newgrounds.API.ad_flood = v1; com.newgrounds.API.sendWarning('This movie is attempting to load multiple ads at too high of a frequency; you may have a bad preloader loop.'); return true; } return false; }; v1.checkAdCache = function () { if (!com.newgrounds.API.ad_url) { return false; } var v2 = new Date(); var v1 = v2.getTime(); if (v1 >= com.newgrounds.API.ad_url_cache) { com.newgrounds.API.ad_url_cache = v1 + 300000; return true; } return false; }; v1.sendMessage = function (m, r) { var v1 = '[Newgrounds API] :: ' + m; if (r) { return v1; } else { trace(v1); com.newgrounds.API.bridge.sendEvent('trace', {'data': v1}); } }; v1.echo = function (m) { if (com.newgrounds.API.do_echo) { trace(m); } }; v1.LOGIN_URL = 'http://ng-local.newgrounds.com/apilogin/'; v1.do_echo = true; v1.GATEWAY_URL = 'http://www.ngads.com/gateway_v2.php'; v1.NEWGROUNDS_PREVIEW = 'uploads.ungrounded.net/previews'; v1.AD_TERMS_URL = 'http://www.newgrounds.com/wiki/using-the-site/terms-of-use/flash-ads/'; v1.COMMANDS_WIKI_URL = 'http://www.newgrounds.com/wiki/developer-resources/flash-api/commands/'; v1.LOCAL_HOST = 'localhost'; v1.NEWGROUNDS_WWW = 'www.newgrounds.com'; v1.PREVIEW_HOSTS = new Array(com.newgrounds.API.LOCAL_HOST, com.newgrounds.API.NEWGROUNDS_PREVIEW); v1.ad_url_cache = 0; v1.ad_flood = 0; v1.ad_warning = false; v1.save_file = null; v1.publisher_id = 1; v1.fake_session = false; v1.medals = null; v1.userpage_format = null; v1.scoreboards = new Array(); v1.save_groups = null; v1.compression_radix = '/g8236klvBQ#&|;Zb*7CEA59%s`Oue1wziFp$rDVY@TKxUPWytSaGHJ>dmoMR^<0~4qNLhc(I+fjn)X'; v1.errors = com.newgrounds.APIError.init_codes(); v1.sharedObjects = new Object(); v1.bridge = new com.newgrounds.Bridge(_root.NewgroundsAPI_SandboxID); v1.preload = true; v1.preload_items = 0; v1.preload_items_loaded = 0; ASSetPropFlags(com.newgrounds.API.prototype, null, 1); } #endinitclip } movieClip 89 __Packages.com.newgrounds.Bridge { #initclip if (!_global.com) { _global.com = new Object(); } if (!_global.com.newgrounds) { _global.com.newgrounds = new Object(); } if (!_global.com.newgrounds.Bridge) { var v1 = function (id) { this.widget_id = id; this.receiver = new LocalConnection(); this.transmitter = new LocalConnection(); this.receiver.receiveEvent = function (event, params) { com.newgrounds.API.callListener(event, params.success, params.data); }; try { this.receiver.connect('rec_' + this.widget_id); } catch (v0) { if (Error(v0) != null) { var error = Error(v0); } else { throw v0; } } }; com.newgrounds.Bridge = v1; var v2 = v1.prototype; v2.sendEvent = function (event, params) { if (this.widget_id) { this.transmitter.send(this.widget_id, 'sendEvent', event, this.validateParams(params)); } }; v2.sendCommand = function (command, params) { if (this.widget_id) { this.transmitter.send(this.widget_id, 'sendCommand', command, this.validateParams(params)); } }; v2.validateParams = function (params) { var v2 = {}; for (var v3 in params) { if (typeof params[v3] == 'string' || typeof params[v3] == 'number') { v2[v3] = params[v3]; } } return v2; }; ASSetPropFlags(com.newgrounds.Bridge.prototype, null, 1); } #endinitclip } movieClip 90 __Packages.com.newgrounds.SaveFile { #initclip if (!_global.com) { _global.com = new Object(); } if (!_global.com.newgrounds) { _global.com.newgrounds = new Object(); } if (!_global.com.newgrounds.SaveFile) { var v1 = function (_group) { this._group = _group; this._filename = null; this._file_id = null; this._contents = null; this._thumbnail = null; this._thumbnail_url = null; this.raw = null; this.img = null; this._draft = false; this._keys = new Array(); this._ratings = new Array(); this._file_url = null; com.newgrounds.API.addEventListener(com.newgrounds.APIEvent.FILE_PRIVS_LOADED, this.checkPrivs, this); }; com.newgrounds.SaveFile = v1; var v2 = v1.prototype; v1.setFilePath = function (path) { com.newgrounds.SaveFile.file_path = path + '/'; }; v1.setImagePath = function (path) { com.newgrounds.SaveFile.image_path = path + '/'; }; v2.__get__name = function () { return this._filename; }; v2.__set__name = function (s) { this._filename = s; return this.__get__name(); }; v2.__get__id = function () { return this._file_id; }; v2.__get__description = function () { return this._description; }; v2.__set__description = function (s) { this._description = s; return this.__get__description(); }; v2.__get__contents = function () { return this._contents; }; v2.__set__contents = function (o) { this._contents = o; return this.__get__contents(); }; v2.__get__thumbnailUrl = function () { return com.newgrounds.SaveFile.image_path + this._thumbnail_url; }; v2.__set__thumbnailUrl = function (s) { this._thumbnail_url = s; return this.__get__thumbnailUrl(); }; v2.__get__fileUrl = function () { return com.newgrounds.SaveFile.file_path + this._file_url; }; v2.__set__fileUrl = function (s) { this._file_url = s; return this.__get__fileUrl(); }; v2.__get__authorID = function () { return this._author_id; }; v2.__set__authorID = function (i) { this._author_id = i; return this.__get__authorID(); }; v2.__get__authorName = function () { return this._author_name; }; v2.__set__authorName = function (n) { this._author_name = n; return this.__get__authorName(); }; v2.__get__views = function () { return this._views; }; v2.__get__draft = function () { return this._draft; }; v2.__set__draft = function (d) { this._draft = d; return this.__get__draft(); }; v2.__get__group = function () { return this._group; }; v2.__get__groupId = function () { return this._group.getID(); }; v2.__get__groupName = function () { return this._group.getName(); }; v2.__get__groupType = function () { return this._group.getType(); }; v2.__get__locked = function () { return this._locked; }; v2.__get__shared = function () { return this._isShared(); }; v2.__get__isPrivate = function () { return this._isPrivate(); }; v2.__get__isPublic = function () { return this._isPublic(); }; v2.__get__approved = function () { return this._isApproved(); }; v2.__get__keys = function () { return this._keys; }; v2.__get__ratings = function () { return this._ratings; }; v2.loadAuthorPage = function () { com.newgrounds.API.loadUserPage(this._author_id, this._author_name); }; v2.getID = function () { return this._file_id; }; v2.exists = function () { return this._file_id !== null; }; v2.getGroup = function () { return this._group; }; v2.getName = function () { return this._filename; }; v2._isPrivate = function () { return this.status == com.newgrounds.SaveFile.STATUS.PRIVATE; }; v2._isShared = function () { return this.status > com.newgrounds.SaveFile.STATUS.PRIVATE; }; v2._isApproved = function () { return this.status > com.newgrounds.SaveFile.STATUS.UNAPPROVED; }; v2._isPublic = function () { if (this._isPrivate()) { return false; return false; } if (this._group.isType('SYSTEM') or this._group.isType('PRIVATE')) { return false; return false; } if (this._group.isType('PUBLIC')) { return true; return false; } if (this._isApproved()) { return true; } return false; }; v2.isLocked = function () { return this._locked; }; v2.getDescription = function () { return this._description; }; v2.getShared = function () { return this._draft; }; v2.getThumbnailImageScan = function () { return this.img; }; v2.getRawContents = function () { return this.raw; }; v2.getDuplicateID = function () { return this.duplicate_id; }; v2.getKeys = function () { return this._keys; }; v2.getKey = function (key) { var v3 = (this.getGroup()).getKey(key); var v2 = 0; while (v2 < this._keys.length) { if (this._keys[v2].id == v3.key_id) { return this._keys[v2].value; } ++v2; } }; v2.getRating = function (rating) { var v2 = (this.getGroup()).getRating(rating); if (this._ratings[v2.rating_id]) { return this._ratings[v2.rating_id]; } else { return null; } }; v2.overwriteAllowed = function () { return this.overwrite; }; v2.getFileURL = function () { return com.newgrounds.SaveFile.file_path + this._file_url; }; v2.getThumbnailURL = function () { return com.newgrounds.SaveFile.image_path + this._thumbnail_url; }; v2.overwriteExisting = function () { this.overwrite = true; }; v2.setID = function (id, add_to_group) { this._file_id = id; if (add_to_group) { (this.getGroup()).addFile(this); } }; v2.setName = function (filename, locked) { this._filename = filename; this._locked = locked; }; v2.setDescription = function (description) { this._description = description; }; v2.setDraft = function (draft) { this._draft = draft; }; v2.setContents = function (_contents) { this._contents = _contents; }; v2.setThumbnail = function (thumb) { if (thumb) { this._thumbnail = thumb; } else { this._thumbnail = null; } }; v2.setThumbnailURL = function (url) { this._thumbnail_url = url; }; v2.setFileURL = function (url) { this._file_url = url; }; v2.setPermissions = function (status, _locked) { this._locked = _locked; this.status = status; }; v2.setKey = function (key, val) { var v4 = (this.getGroup()).getKeyID(key); var v2; if (!v4) { this.onError('\'' + key + '\' is not a valid key for the \'' + this._group.__get__name() + '\' save group', 'setKey', 'INVALID_VALUE', true); return undefined; } if (!this._group.keyValueIsValid(key, val) && val !== null) { this.onError('\'' + val + '\' is not a valid ' + this._group.getKeyType(key, true), 'setKey', 'INVALID_VALUE', true); return undefined; } switch (this._group.getKeyType(key, true)) { case 'string': if (val) { val = String(val); } else { val = undefined; } break; default: val = Number(val); } var v5 = {'id': v4, 'value': val}; for (var v6 in this._keys) { v2 = this._keys[v6]; if (v2.id == v4) { this._keys[v6] = v5; return undefined; } } this._keys.push(v5); }; v2.setRating = function (rating, votes, score) { var v2 = (this.getGroup()).getRating(rating); if (!votes) { votes = 0; } if (!score) { score = 0; } if (!v2.is_float) { score = Math.round(Number(score)); } this._ratings[v2.rating_id] = {'id': Number(v2.rating_id), 'name': v2.rating_name, 'votes': Number(votes), 'score': Number(score)}; return this._ratings[v2.rating_id]; }; v2.clearBuffer = function () { this._contents = null; this.raw = null; this.img = null; this.scanner = null; this.overwrite = false; this.duplicate_id = null; }; v2.onError = function (msg, funct, code) { com.newgrounds.SaveFile.busy = false; if (!code) { code = 'SAVE_FILE_ERROR'; } if (!funct) { funct = 'unknown_function'; } var v3 = 'getSaveGroup(\'' + this._group.getName() + '\')'; if (this.exists()) { funct = v3 + '.getFile(\'' + this.getName() + '\').' + funct; } else { funct = v3 + '.getNewFile().' + funct; } var v5 = new com.newgrounds.APIError(code, msg); com.newgrounds.API.sendError({'command_id': funct}, v5); }; v2.onSaved = function (p) { com.newgrounds.SaveFile.busy = false; if (!this.exists()) { this.setID(p.save_id, true); } this.setName(p.filename); this.setFileURL(p.file_url); if (p.thumbnail) { this._thumbnail_url = p.thumbnail; } }; v2.onVoted = function (p) { trace('ONVOTED WAS CALLED'); return this.setRating(p.rating_id, p.votes, p.score); }; v2.sendRating = function (rating, vote) { var v6 = null; if (!com.newgrounds.API.hasUserSession()) { v6 = new com.newgrounds.APIError('PERMISSION_DENIED', 'You must be logged in to vote on save files'); } var v2 = this._group.getRating(rating); if (!v2) { v6 = new com.newgrounds.APIError('PERMISSION_DENIED', '\'' + rating + '\' is not a valid rating for the \'' + this._group.getName() + '\' save group'); } if (this.voted === true) { v6 = new com.newgrounds.APIError('PERMISSION_DENIED', 'You have already voted on this item today'); } if (vote < v2.min_value or vote > v2.max_value) { v6 = new com.newgrounds.APIError('PERMISSION_DENIED', '\'' + rating + '\' votes must be between ' + v2.min_value + ' and ' + v2.max_value); } if (v6) { com.newgrounds.API.callListener(com.newgrounds.APIEvent.VOTE_COMPLETE, false, {'error': v6, 'file': this}); return undefined; } this.voted = true; com.newgrounds.API.rateSaveFile(this, v2, vote); }; v2.replace = function () { if (com.newgrounds.SaveFile.busy) { this.onError('Another file is currently being saved, please try again later', 'replace'); return undefined; } this.overwriteExisting(); this.save(); }; v2.save = function () { if (com.newgrounds.API.hasUserSession() && !this._author_id && !this._author_name) { this._author_id = com.newgrounds.API.getUserID(); this._author_name = com.newgrounds.API.getUserName(); } if (com.newgrounds.SaveFile.busy) { this.onError('Another file is currently being saved, please try again later', 'save', 'UPLOAD_IN_PROGRESS'); return undefined; } com.newgrounds.SaveFile.busy = true; if (this.isLocked()) { this.onError('This file is _locked and cannot be overwritten.', 'save', 'PERMISSION_DENIED'); return undefined; } if (!this._filename) { this.onError('Please provide a name for your file.', 'save', 'MISSING_PARAM'); return undefined; } else { if (!this._contents) { this.onError('The file is empty.', 'save', 'MISSING_PARAM'); return undefined; } } this.img = null; com.newgrounds.API.checkFilePrivs(this); }; v2.checkPrivs = function (e) { if (e.data.file.id != this.__get__id()) { return undefined; } if (e.success) { if (e.data.can_write) { this.can_write = e.data.can_write; if (e.data.duplicate_id) { this.duplicate_id = e.data.duplicate_id; } if (e.data.exists && !this.overwriteAllowed()) { this.onError('You already have a file named \'' + this.getName() + '\'', 'save', 'CONFIRM_REQUEST'); } else { this.startFile(); } } else { this.onError('This file is _locked and cannot be overwritten', 'save', 'PERMISSION_DENIED'); } } else { this.onError('There was a problem looking up your file\'s details. The server may be down.', 'save', 'UNKNOWN_ERROR'); } }; v2.startFile = function () { if (this.can_write) { if (this._thumbnail) { this.scanner = new com.newgrounds.encoders.ImageScanner(this._thumbnail); this.scanner.setCallback(this, 'encodeFile'); this.scanner.startScan(100, 100, true); } else { this.encodeFile(); } } else { this.onError('You do not have permission to save this file.', 'save', 'PERMISSION_DENIED'); } }; v2.encodeFile = function (img) { this.img = img; this.raw = (com.newgrounds.encoders.SerialXML.encode(this._contents)).toString(); this.compressFile(); }; v2.compressFile = function () { com.newgrounds.encoders.LZW2.compress(this.raw, function (s, p) { p.file.onCompressed(s); }, {'file': this}); }; v2.onCompressed = function (compressed) { this.raw = escape(compressed); this.writeFile(); }; v2.getProgress = function () {}; v2.writeFile = function () { ((this.getGroup()).getQuery()).clearCache(); com.newgrounds.API.saveFile(this); this.clearBuffer(); }; v2.loadContents = function () { if (this._contents) { com.newgrounds.API.setCurrentSaveFile(this); com.newgrounds.API.callListener(com.newgrounds.APIEvent.FILE_LOADED, true, {'file': this}); return undefined; } if (!this.getFileURL()) { var v4 = new com.newgrounds.APIError('FILE_NOT_FOUND', 'Attempted to load contents of an unsaved file.'); com.newgrounds.API.callListener(com.newgrounds.APIEvent.FILE_LOADED, false, {'file': this, 'error': v4}); return undefined; } var v2 = new LoadVars(); v2.target = this; var target = this; v2.onData = function (encoded) { target.onLoaded(encoded); }; v2.load(this.getFileURL()); }; v2.onLoaded = function (encoded) { if (encoded == undefined) { var v3 = new com.newgrounds.APIError('FILE_NOT_FOUND', 'We could not find the contents for this file. It may have been deleted.'); com.newgrounds.API.callListener(com.newgrounds.APIEvent.FILE_LOADED, false, {'file': this, 'error': v3}); return undefined; } com.newgrounds.encoders.LZW.setXMLSafe(true); this._contents = com.newgrounds.encoders.SerialXML.decode(com.newgrounds.encoders.LZW.decompress(encoded)); com.newgrounds.API.callListener(com.newgrounds.APIEvent.FILE_LOADED, true, {'file': this}); }; v2.setViews = function (n) { this._views = n; }; v1.busy = false; v2.can_write = false; v2._draft = false; v2.status = 0; v2.voted = false; v2._views = 0; v2._locked = false; v2.overwrite = false; v2.duplicate_id = null; v2._keys = null; v2._ratings = null; v2._author_id = null; v2._author_name = null; v1.STATUS = {'PRIVATE': 1, 'PUBLIC': 2, 'UNAPPROVED': 3, 'APPROVED': 4}; v2.addProperty('approved', v2.__get__approved, function () {}); v2.addProperty('authorID', v2.__get__authorID, v2.__set__authorID); v2.addProperty('authorName', v2.__get__authorName, v2.__set__authorName); v2.addProperty('contents', v2.__get__contents, v2.__set__contents); v2.addProperty('description', v2.__get__description, v2.__set__description); v2.addProperty('draft', v2.__get__draft, v2.__set__draft); v2.addProperty('fileUrl', v2.__get__fileUrl, v2.__set__fileUrl); v2.addProperty('group', v2.__get__group, function () {}); v2.addProperty('groupId', v2.__get__groupId, function () {}); v2.addProperty('groupName', v2.__get__groupName, function () {}); v2.addProperty('groupType', v2.__get__groupType, function () {}); v2.addProperty('id', v2.__get__id, function () {}); v2.addProperty('isPrivate', v2.__get__isPrivate, function () {}); v2.addProperty('isPublic', v2.__get__isPublic, function () {}); v2.addProperty('keys', v2.__get__keys, function () {}); v2.addProperty('locked', v2.__get__locked, function () {}); v2.addProperty('name', v2.__get__name, v2.__set__name); v2.addProperty('ratings', v2.__get__ratings, function () {}); v2.addProperty('shared', v2.__get__shared, function () {}); v2.addProperty('thumbnailUrl', v2.__get__thumbnailUrl, v2.__set__thumbnailUrl); v2.addProperty('views', v2.__get__views, function () {}); ASSetPropFlags(com.newgrounds.SaveFile.prototype, null, 1); } #endinitclip } movieClip 91 __Packages.com.newgrounds.SaveGroup { #initclip if (!_global.com) { _global.com = new Object(); } if (!_global.com.newgrounds) { _global.com.newgrounds = new Object(); } if (!_global.com.newgrounds.SaveGroup) { var v1 = function (group_id, group_name, group_type) { this.group_name = group_name; this.group_id = group_id; this.group_type = group_type; this.query = new com.newgrounds.SaveGroupQuery(this); this.ratings = new Array(); this.keys = new Array(); this.files = new Array(); }; com.newgrounds.SaveGroup = v1; var v2 = v1.prototype; v2.__get__id = function () { return this.group_id; }; v2.__get__name = function () { return this.group_name; }; v2.__get__type = function () { return this.group_type; }; v2.addFile = function (file) { var v2 = 0; while (v2 < this.files.length) { if (this.files[v2].getID() == file.getID()) { this.files[v2] = file; return undefined; } ++v2; } this.files.push(file); }; v2.getFile = function (file_id) { trace('getting the file ' + file_id); var v2 = 0; while (v2 < this.files.length) { trace('Looking up ' + file_id + ' :: ' + this.files[v2].getID() + ' || ' + this.files[v2].getName()); if (com.newgrounds.SaveGroup.isNumeric(file_id) and this.files[v2].getID() == Number(file_id)) { return this.files[v2]; } else { if (this.files[v2].getName() == file_id) { return this.files[v2]; } } ++v2; } return null; }; v2.addRating = function (rating_id, rating_name, min_value, max_value, is_float) { var v3 = {'rating_id': rating_id, 'rating_name': rating_name, 'min_value': min_value, 'max_value': max_value, 'is_float': is_float}; if (!this.getRatingID(rating_name)) { this.ratings.push(v3); } }; v2.getRating = function (rating_id) { var v2 = 0; while (v2 < this.ratings.length) { if (com.newgrounds.SaveGroup.isNumeric(rating_id) and this.ratings[v2].rating_id == rating_id) { return this.ratings[v2]; } else { if (this.ratings[v2].rating_name == rating_id) { return this.ratings[v2]; } } ++v2; } return null; }; v2.getRatingID = function (rating_id) { var v2 = this.getRating(rating_id); if (v2) { return v2.rating_id; } return null; }; v2.getRatingName = function (rating_id) { var v2 = this.getRating(rating_id); if (v2) { return v2.rating_name; } return null; }; v2.addKey = function (key_id, key_name, key_type) { trace('>>>>>>>>>>> ADDING KEY ' + key_id + ' ' + key_name + ' ' + key_type); var v2 = {'key_id': key_id, 'key_name': key_name, 'key_type': key_type}; if (!this.getKey(key_name)) { this.keys.push(v2); } }; v2.getKey = function (key_id) { var v2 = 0; while (v2 < this.keys.length) { if (com.newgrounds.SaveGroup.isNumeric(key_id) and this.keys[v2].key_id == key_id) { return this.keys[v2]; } else { if (this.keys[v2].key_name == key_id) { return this.keys[v2]; } } ++v2; } return null; }; v2.getKeyType = function (key_name, as_string) { var v2 = this.getKey(key_name); if (v2) { return as_string ? com.newgrounds.SaveGroup.KEY_TYPES[v2.key_type] : v2.key_type; } return null; }; v2.getKeyID = function (key_id) { var v2 = this.getKey(key_id); if (v2) { return v2.key_id; } return null; }; v2.getKeyName = function (key_id) { var v2 = this.getKey(key_id); if (v2) { return v2.key_name; } return null; }; v2.keyValueIsValid = function (key, value) { var v4; var v7; if (typeof value == 'number' or (Number(value)).toString() == String(value)) { value = Number(value); v4 = (Math.round(value) === value) ? 'integer' : 'float'; } else { v4 = typeof value; if (v4 == 'string') { var v6 = '01234567890.-'; var v5 = true; var v2 = 0; while (v2 < value.length) { if (v6.indexOf(value.charAt(v2)) < 0) { v5 = false; break; } ++v2; } if (v5) { value = Number(value); v4 = 'float'; } } } switch (this.getKeyType(key, true)) { case 'integer': v7 = v4 == 'integer' or v4 == 'boolean'; return v7; case 'float': v7 = v4 == 'float' or v4 == 'integer' or v4 == 'boolean'; return v7; case 'string': v7 = v4 == 'string' or v4 == 'float' or v4 == 'integer' or v4 == 'boolean'; return v7; case 'boolean': v7 = v4 == 'boolean' or value == 1 or value == 0 or value == ''; return v7; } v7 = false; return v7; }; v2.isType = function (type) { return this.group_type == com.newgrounds.SaveGroup.TYPES[type.toUpperCase()]; }; v2.getID = function () { return this.group_id; }; v2.getName = function () { return this.group_name; }; v2.getType = function () { return this.group_type; }; v2.isSystem = function () { return undefined; }; v2.getQuery = function (as_object) { if (as_object) { return this.query.toObject(); } return this.query; }; v2.newQuery = function () { this.query.reset(); return this.query; }; v2.clearQuery = function () { this.query.reset(); }; v2.newFile = function () { var v2 = new com.newgrounds.SaveFile(this); return v2; }; v1.isNumeric = function (value) { return typeof value == 'number' or (Number(value)).toString() == String(value); }; v1.KEY_TYPES = [null, 'float', 'integer', 'string', 'boolean']; v1.TYPES = {'SYSTEM': 0, 'PRIVATE': 1, 'PUBLIC': 2, 'MODERATED': 3}; v2.addProperty('id', v2.__get__id, function () {}); v2.addProperty('name', v2.__get__name, function () {}); v2.addProperty('type', v2.__get__type, function () {}); ASSetPropFlags(com.newgrounds.SaveGroup.prototype, null, 1); } #endinitclip } movieClip 94 __Packages.com.newgrounds.SaveGroupQuery { #initclip if (!_global.com) { _global.com = new Object(); } if (!_global.com.newgrounds) { _global.com.newgrounds = new Object(); } if (!_global.com.newgrounds.SaveGroupQuery) { var v1 = function (_group) { this._group = _group; this.reset(); }; com.newgrounds.SaveGroupQuery = v1; var v2 = v1.prototype; v2.__get__group = function () { return this._group; }; v2.__get__groupId = function () { return this._group.getID(); }; v2.__get__resultsPerPage = function () { return this._num_results; }; v2.__set__resultsPerPage = function (n) { this._num_results = n; return this.__get__resultsPerPage(); }; v2.__get__pages = function () { return this._pages; }; v2.__get__page = function () { return this._page; }; v2.__set__page = function (n) { this._page = n; return this.__get__page(); }; v2.__get__randomize = function () { return this._randomize_results; }; v2.__set__randomize = function (b) { this._randomize_results = b; return this.__get__randomize(); }; v2.__get__results = function () { return this._results; }; v2.clearCache = function () { this._results = []; }; v2.reset = function () { this.file_conditions = new Array(); this.key_conditions = new Array(); this.rating_conditions = new Array(); this.sort_conditions = new Array(); this.lookup_keys = new Object(); this.lookup_ratings = new Object(); this._num_results = 20; this._page = 1; this._randomize_results = false; this._group_by = new Array(); this.clearCache(); }; v2.getGroup = function () { return this._group; }; v2.getGroupID = function () { return this._group.getID(); }; v2.isRandomized = function () { return this._randomize_results; }; v2.toObject = function () { var v2; var v11 = {'page': this._page, 'num_results': this._num_results}; if (this._randomize_results) { v11.randomize = 1; } if (!com.newgrounds.ValidationTools.isEmpty(this.file_conditions)) { var v12 = []; v2 = 0; while (v2 < this.file_conditions.length) { var v6 = this.file_conditions[v2]; v12.push({'field': com.newgrounds.SaveGroupQuery.file_fields[v6.field.toUpperCase()].id, 'operator': v6.operator, 'value': v6.value}); ++v2; } v11.file_conditions = v12; } if (!com.newgrounds.ValidationTools.isEmpty(this.key_conditions)) { v11.key_conditions = this.key_conditions; } if (!com.newgrounds.ValidationTools.isEmpty(this.rating_conditions)) { v11.rating_conditions = this.rating_conditions; } if (!com.newgrounds.ValidationTools.isEmpty(this.sort_conditions)) { var v14 = []; v2 = 0; while (v2 < this.sort_conditions.length) { var v3 = this.sort_conditions[v2]; if (v3.table == com.newgrounds.SaveGroupQuery.TABLE_FILES) { var v8 = com.newgrounds.SaveGroupQuery.file_fields[v3.field.toUpperCase()].id; } else { var v8 = v3.field; } var v5 = {'field': v8, 'table': v3.table}; if (v3.desc) { v5.desc = 1; } if (v3.extra) { v5.extra = v3.extra; } v14.push(v5); ++v2; } v11.sort_conditions = v14; } if (!com.newgrounds.ValidationTools.isEmpty(this.lookup_keys)) { var v15 = []; for (v2 in this.lookup_keys) { v15.push(v2); } v11.lookup_keys = v15; } if (!com.newgrounds.ValidationTools.isEmpty(this.lookup_ratings)) { var v13 = []; for (v2 in this.lookup_ratings) { v13.push(v2); } v11.lookup_ratings = v13; } if (!com.newgrounds.ValidationTools.isEmpty(this._group_by)) { var v16 = []; v2 = 0; while (v2 < this._group_by.length) { var v4 = this._group_by[v2]; if (v4.table == com.newgrounds.SaveGroupQuery.TABLE_FILES) { v8 = com.newgrounds.SaveGroupQuery.file_fields[v4.field.toUpperCase()].id; } else { v8 = v4.field; } v16.push({'field': v8, 'table': v4.table}); ++v2; } v11.group_by = v16; } return v11; }; v2.toString = function () { var v9; var v2; var v11 = []; v9 = 'Lookup:\r'; var v14 = []; for (var v6 in com.newgrounds.SaveGroupQuery.file_fields) { v14.push(' ' + v6); v2 = true; } v9 += v14.join('\n'); v11.push(v9); v9 = ''; v2 = false; var v16 = []; for (v6 in this.lookup_keys) { v16.push(' KEY \'' + this._group.getKeyName(v6) + '\''); v2 = true; } if (v2) { v9 += v16.join('\n'); v11.push(v9); } v9 = ''; v2 = false; var v15 = []; for (v6 in this.lookup_ratings) { v15.push(' RATING \'' + this._group.getRatingName(v6) + '\''); v2 = true; } if (v2) { v9 += v15.join('\n'); v11.push(v9); } v9 = 'Where:\r'; v2 = false; var v8 = []; v6 = 0; while (v6 < this.file_conditions.length) { var v7 = this.file_conditions[v6]; var v10 = ' ' + v7.field + ' ' + v7.operator + ' ' + v7.value; v8.push(v10); v2 = true; ++v6; } v6 = 0; while (v6 < this.key_conditions.length) { v7 = this.key_conditions[v6]; v10 = ' KEY \'' + this._group.getKeyName(v7.key_id) + '\' ' + v7.operator + ' ' + v7.value; v8.push(v10); v2 = true; ++v6; } v6 = 0; while (v6 < this.rating_conditions.length) { v7 = this.rating_conditions[v6]; v10 = ' RATING \'' + this._group.getRatingName(v7.rating_id) + '\' ' + v7.operator + ' ' + v7.value; v8.push(v10); v2 = true; ++v6; } if (v2) { v9 += v8.join('\n'); v11.push(v9); } v9 = 'Group By:\r'; v2 = false; var v13 = []; v6 = 0; while (v6 < this._group_by.length) { var v4 = this._group_by[v6]; var v5; if (v4.table == com.newgrounds.SaveGroupQuery.TABLE_KEYS) { v5 = ' KEY \'' + this._group.getKeyName(v4.field) + '\''; } else { if (v4.table == com.newgrounds.SaveGroupQuery.TABLE_RATINGS) { v5 = ' RATING \'' + this._group.getRatingName(v4.field) + '\''; } else { v5 = ' ' + v4.field; } } v13.push(v5); v2 = true; ++v6; } if (v2) { v9 += v13.join('\n'); v11.push(v9); } v9 = 'Order By:\r'; v2 = false; var v12 = []; if (this.isRandomized()) { v12.push(' RANDOM'); v2 = true; } v6 = 0; while (v6 < this.sort_conditions.length) { var v3 = this.sort_conditions[v6]; if (v3.table == com.newgrounds.SaveGroupQuery.TABLE_KEYS) { v5 = ' KEY \'' + this._group.getKeyName(v3.field) + '\''; } else { if (v3.table == com.newgrounds.SaveGroupQuery.TABLE_RATINGS) { v5 = ' RATING \'' + this._group.getRatingName(v3.field) + '\' ' + ((v3.extra == 'votes') ? 'VOTES' : 'SCORE'); } else { v5 = ' ' + v3.field; } } v5 += v3.desc ? ' (DESCENDING)' : ''; v12.push(v5); v2 = true; ++v6; } if (v2) { v9 += v12.join('\n'); v11.push(v9); } v11.push('Page:\r ' + this._page); v11.push('Results Per Page:\r ' + this._num_results); return v11.join('\n'); }; v2.setResultsPerPage = function (r) { this._num_results = r; this.clearCache(); }; v2.setPage = function (p) { this._page = p; this.clearCache(); }; v2.setRandomize = function (bool) { this._randomize_results = (bool === false) ? false : true; }; v2.includeKey = function (key) { if (!this._group.getKeyID(key)) { trace('[SaveGroupQuery Error] :: \'' + key + '\' is not a valid key for the \'' + this._group.__get__name() + '\' group.'); return undefined; } this.lookup_keys[this._group.getKeyID(key)] = 1; this.clearCache(); }; v2.includeRating = function (rating) { if (!this._group.getRatingID(rating)) { trace('[SaveGroupQuery Error] :: \'' + rating + '\' is not a valid rating for the \'' + this._group.__get__name() + '\' group.'); return undefined; } this.lookup_ratings[this._group.getRatingID(rating)] = 1; this.clearCache(); }; v2.groupBy = function (field) { this.addGroupItem(com.newgrounds.SaveGroupQuery.TABLE_FILES, field); }; v2.groupByKey = function (key) { if (!this._group.getKeyID(key)) { this.error('\'' + key + '\' is not a valid key for the \'' + this._group.getName() + '\' _group'); return undefined; } this.addGroupItem(com.newgrounds.SaveGroupQuery.TABLE_KEYS, this._group.getKeyID(key)); }; v2.groupByRating = function (rating) { if (!this._group.getRatingID(rating)) { this.error('\'' + rating + '\' is not a valid rating for the \'' + this._group.getName() + '\' _group'); return undefined; } this.addGroupItem(com.newgrounds.SaveGroupQuery.TABLE_RATINGS, this._group.getRatingID(rating)); }; v2.addGroupItem = function (table, field) { this._group_by.push({'table': table, 'field': field}); this.clearCache(); }; v2.excludeKey = function (key) { delete this.lookup_keys[this._group.getKeyID(key)]; this.clearCache(); }; v2.excludeRating = function (rating) { delete this.lookup_ratings[this._group.getRatingID(rating)]; this.clearCache(); }; v2.addCondition = function (field, operator, value) { if (field == 'FILE_STATUS' && typeof value == 'string' && com.newgrounds.SaveFile.STATUS[value.toUpperCase()] !== undefined) { value = com.newgrounds.SaveFile.STATUS[value.toUpperCase()]; } if (operator == '==') { operator = '='; } if (!this.validateOperator(operator) or !this.validateValue(field, value)) { return undefined; } this.file_conditions.push({'field': field, 'operator': operator, 'value': value}); this.clearCache(); }; v2.addKeyCondition = function (key, operator, value) { if (!this._group.getKeyID(key)) { this.error('\'' + key + '\' is not a valid key for the \'' + this._group.getName() + '\' save _group'); } else { if (!this.validateOperator(operator) or !this.validateKeyValue(key, value)) { return undefined; } } this.key_conditions.push({'key_id': this._group.getKeyID(key), 'operator': operator, 'value': value}); this.clearCache(); }; v2.addRatingCondition = function (rating, operator, value, column) { if (!column) { column = 'SCORE'; } if (!this._group.getRatingID(rating)) { this.error('\'' + rating + '\' is not a valid rating for the \'' + this._group.getName() + '\' save _group'); } else { if (!this.validateOperator(operator)) { return undefined; } else { if (!com.newgrounds.ValidationTools.isNumber(value)) { this.error('Expected numeric value for rating \'' + rating + '\''); return undefined; } } } if (!com.newgrounds.SaveGroupQuery.rating_columns[column]) { var v2 = []; for (var v3 in com.newgrounds.SaveGroupQuery.rating_columns) { v2.push(v3); } this.error('Invalid rating column \'' + column + '\'. Valid columns are ' + v2.join(', ')); return undefined; } this.rating_conditions.push({'rating_id': this._group.getRatingID(rating), 'operator': operator, 'value': value, 'column': com.newgrounds.SaveGroupQuery.rating_columns[column]}); this.clearCache(); }; v2.sortOn = function (field, order) { if (!com.newgrounds.SaveGroupQuery.file_fields[field]) { var v2 = []; for (var v3 in com.newgrounds.SaveGroupQuery.file_fields) { v2.push(v3); } this.error('\'' + field + '\' is not a valid sort field. Valid fields are: ' + v2.join(', ')); return undefined; } this.addSortCondition(com.newgrounds.SaveGroupQuery.TABLE_FILES, field, order); }; v2.sortOnKey = function (key, order) { if (!this._group.getKeyID(key)) { this.error('\'' + key + '\' is not a valid key for the \'' + this._group.getName() + '\' _group'); return undefined; } this.addSortCondition(com.newgrounds.SaveGroupQuery.TABLE_KEYS, this._group.getKeyID(key), order); }; v2.sortOnRating = function (rating, order, column) { if (!this._group.getRatingID(rating)) { this.error('\'' + rating + '\' is not a valid rating for the \'' + this._group.getName() + '\' _group'); return undefined; } if (!column) { column = 'score'; } this.addSortCondition(com.newgrounds.SaveGroupQuery.TABLE_RATINGS, this._group.getRatingID(rating), order, column); }; v2.sortOnRatingScore = function (rating, order) { this.sortOnRating(rating, order, 'score'); }; v2.sortOnRatingVotes = function (rating, order) { this.sortOnRating(rating, order, 'votes'); }; v2.addSortCondition = function (table, field, order, extra) { var v7; if (!order or order == '' or order.toUpperCase() == 'ASC') { v7 = false; } else { if (order.toUpperCase() == 'DESC') { v7 = true; } else { this.error('\'' + order + '\' is not a valid sort order!'); return undefined; } } var v3 = {'table': table, 'field': field, 'desc': v7}; if (extra) { v3.extra = extra; } this.sort_conditions.push(v3); this.clearCache(); }; v2.onExecuted = function (results) { this._results = []; var v6 = 0; while (v6 < results.length) { var v2 = results[v6]; var v3 = new com.newgrounds.SaveFile(this._group); v3.setName(v2.filename); v3.setID(v2.save_id); v3.setDescription(v2.description); v3.setThumbnailURL(v2.thumb); v3.setFileURL(v2.file); if (v2.views) { v3.setViews(v2.views); } v3.setPermissions(v2.status, v2.locked); v3.authorName = v2.user_name; v3.authorID = v2.user_id; var v5 = 0; while (v5 < v2.keys.length) { v3.setKey(v2.keys[v5].id, v2.keys[v5].value); ++v5; } var v4 = 0; while (v4 < v2.ratings.length) { v3.setRating(v2.ratings[v4].id, v2.ratings[v4].votes, v2.ratings[v4].score); ++v4; } (this.getGroup()).addFile(v3); this._results.push(v3); ++v6; } this.callEventDispatcher(); }; v2.hasResults = function () { return this._results && this._results.length > 0; }; v2.callEventDispatcher = function () { com.newgrounds.API.callListener(com.newgrounds.APIEvent.QUERY_COMPLETE, true, {'query': this}); }; v2.execute = function () { if (this.hasResults() && !this.isRandomized()) { this.callEventDispatcher(); return undefined; } this._group.query = this; com.newgrounds.API.lookupSaveFiles(this._group); }; v2.processResults = function (files) { return null; }; v2.validateKeyValue = function (key, value) { var v3 = this._group.getKeyType(key); if (v3) { var v2 = com.newgrounds.SaveGroup.KEY_TYPES[v3]; if (v2 == 'float' and com.newgrounds.ValidationTools.isFloat(value)) { return true; } else { if (v2 == 'integer' and com.newgrounds.ValidationTools.isInteger(value)) { return true; } else { if (v2 == 'string' and com.newgrounds.ValidationTools.isString(value)) { return true; } } } this.error('Expected type ' + v2 + ' for key \'' + key + '\''); } return false; }; v2.validateValue = function (field, value) { if (com.newgrounds.SaveGroupQuery.file_fields[field]) { if (com.newgrounds.SaveGroupQuery.file_fields[field].type == 'integer' and com.newgrounds.ValidationTools.isInteger(value)) { return true; } else { if (com.newgrounds.SaveGroupQuery.file_fields[field].type == 'float' and com.newgrounds.ValidationTools.isFloat(value)) { return true; } else { if (com.newgrounds.SaveGroupQuery.file_fields[field].type == 'string' and com.newgrounds.ValidationTools.isString(value)) { return true; } else { this.error('Expecting ' + com.newgrounds.SaveGroupQuery.file_fields[field].type + ' value on \'' + field + '\' condition'); } } } return false; } var v2 = []; for (var v4 in com.newgrounds.SaveGroupQuery.file_fields) { v2.push(v4); } this.error('\'' + field + '\' is not a searchable field. Valid fields are: ' + v2.join(', ')); return false; }; v2.validateOperator = function (operator) { var v2 = 0; while (v2 < com.newgrounds.SaveGroupQuery.valid_operators.length) { if (operator == com.newgrounds.SaveGroupQuery.valid_operators[v2]) { return true; } ++v2; } this.error('\'' + operator + '\' is not a valid lookup operation. Valid operations are: ' + com.newgrounds.SaveGroupQuery.valid_operators.join(', ')); return false; }; v2.error = function (msg) { trace('[QUERY ERROR] :: ' + msg); }; v1.TABLE_FILES = 1; v1.TABLE_KEYS = 2; v1.TABLE_RATINGS = 3; v2._results = []; v1.file_fields = {'FILE_ID': {'id': 0, 'field': 'file_id', 'type': 'integer'}, 'AUTHOR_ID': {'id': 1, 'field': 'user_id', 'type': 'integer'}, 'AUTHOR_NAME': {'id': 2, 'field': 'user_name', 'type': 'string'}, 'FILE_NAME': {'id': 3, 'field': 'file_name', 'type': 'string'}, 'CREATED_ON': {'id': 4, 'field': 'created', 'type': 'string'}, 'UPDATED_ON': {'id': 5, 'field': 'last_update', 'type': 'string'}, 'TOTAL_VIEWS': {'id': 6, 'field': 'views', 'type': 'integer'}, 'FILE_STATUS': {'id': 7, 'field': 'status', 'type': 'integer'}}; v1.rating_columns = {'TOTAL_VOTES': 'votes', 'SCORE': 'score'}; v1.valid_operators = ['=', '<', '>', '!=', '<>', '<=', '>=', '*', '!*', '!*=', '!=*', '*=', '=*']; v2.addProperty('group', v2.__get__group, function () {}); v2.addProperty('groupId', v2.__get__groupId, function () {}); v2.addProperty('page', v2.__get__page, v2.__set__page); v2.addProperty('pages', v2.__get__pages, function () {}); v2.addProperty('randomize', v2.__get__randomize, v2.__set__randomize); v2.addProperty('results', v2.__get__results, function () {}); v2.addProperty('resultsPerPage', v2.__get__resultsPerPage, v2.__set__resultsPerPage); ASSetPropFlags(com.newgrounds.SaveGroupQuery.prototype, null, 1); } #endinitclip } movieClip 96 __Packages.com.newgrounds.encoders.ImageScanner { #initclip if (!_global.com) { _global.com = new Object(); } if (!_global.com.newgrounds) { _global.com.newgrounds = new Object(); } if (!_global.com.newgrounds.encoders) { _global.com.newgrounds.encoders = new Object(); } if (!_global.com.newgrounds.encoders.ImageScanner) { var v1 = function (the_source) { if (the_source) { this.image_source = the_source; } else { this.image_source = _root; } this.reset(); if (typeof this.image_source == 'movieclip') { if (this.image_source == _root) { this.source_width = Stage.width; this.source_height = Stage.height; } else { this.source_width = Math.floor(this.image_source._width); this.source_height = Math.floor(this.image_source._height); } this.sourceBitmap = new flash.display.BitmapData(this.source_width, this.source_height, false, 4294967295.0); this.sourceBitmap.draw(_root); } else { if (this.image_source.width) { this.source_width = this.image_source.width; this.source_height = this.image_source.height; this.sourceBitmap = this.image_source; } else { this.error('You can only use BitMaptData and MovieClip objects to create images'); } } }; com.newgrounds.encoders.ImageScanner = v1; var v2 = v1.prototype; v2.setCallback = function (target, funct) { if (target && funct) { this.callback_target = target; this.callback_function = funct; } }; v2.reset = function () { this.callback_target = null; this.callback_function = null; this.debug.bad_pixels = 0; this.hash = '0123456789aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ<>?:;-_=+()!&'; var v3 = Math.pow(this.hash.length, 2); trace('MAX COLORS: ' + v3); var v2 = Math.floor(Math.pow(v3, 0.3333333333333333)) - 1; var v4 = Math.pow(v2, 3); this.cube = v2; this.basen = new com.newgrounds.encoders.BaseN(this.hash); this.xpos = 0; this.ypos = 0; this.pixels = 0; this.busy = false; }; v2.startScan = function (w, h, s) { if (w) { this.image_width = w; } if (h) { this.image_height = h; } if (s != undefined) { this.crop = s; } var v7 = _root.getNextHighestDepth(); var v6 = _root.createEmptyMovieClip('API_image_container_' + v7, v7); var v5 = v6.createEmptyMovieClip('canvas', 100); v5.attachBitmap(this.sourceBitmap, 100); if (this.crop) { if (this.image_width / this.source_width > this.image_height / this.source_height) { this.canvas_width = this.image_width; this.canvas_height = Math.ceil(this.source_height * (this.image_width / this.source_width)); } else { this.canvas_height = this.image_height; this.canvas_width = Math.ceil(this.source_width * (this.image_height / this.source_height)); } } else { this.canvas_width = this.image_width; this.canvas_height = this.image_height; } v5._x = Math.round((this.image_width - this.canvas_width) / 2); v5._width = this.canvas_width; v5._height = this.canvas_height; this.resizedBitmap = new flash.display.BitmapData(this.image_width, this.image_height, false, 4294967295.0); this.resizedBitmap.draw(v6); v6.removeMovieClip(); this.copyBitmap = new flash.display.BitmapData(this.image_width, this.image_height, false, 4294967295.0); var v3 = '' + this.image_width; while (v3.length < 3) { v3 = '0' + v3; } var v4 = '' + this.image_height; while (v4.length < 3) { v4 = '0' + v4; } this.output = v3 + v4; this.draw_interval = setInterval(this, 'drawChunk', 10); this.busy = false; return this.resizedBitmap; }; v2.getBitmapData = function () { return this.copyBitmap; }; v2.getBytesTotal = function () { return this.image_width * this.image_height * 2; }; v2.getBytesScanned = function () { return this.pixels * 2; }; v2.getProgress = function () { return Math.round((this.getBytesScanned() / this.getBytesTotal()) * 100); }; v2.drawChunk = function () { if (!this.busy) { this.busy = true; var v2 = 0; while (v2 < this.pixels_per_chunk) { if (!this.nextPixel()) { clearInterval(this.draw_interval); this.callback_interval = setInterval(this, 'doCallback', 25); this.busy = true; break; } ++v2; } this.busy = false; } }; v2.doCallback = function () { this.busy = false; clearInterval(this.callback_interval); if (this.callback_target and this.callback_function) { this.callback_target[this.callback_function](this.output); } else { this.onScanComplete(this.output); } }; v2.onScanComplete = function (packet) { this.sendMessage('packet size: ' + this.output.length + ' bytes', 'onScanComplete'); }; v2.nextPixel = function () { var v15 = this.xpos; var v14 = this.ypos; var v7 = this.resizedBitmap.getPixel(v15, v14); var v17 = v7 >> 16 & 255; var v20 = v7 >> 8 & 255; var v16 = v7 >> 0 & 255; var v11 = Math.round(((v17 + 1) / 256) * this.cube); var v10 = Math.round(((v20 + 1) / 256) * this.cube); var v13 = Math.round(((v16 + 1) / 256) * this.cube); var v12 = v11 * (this.cube + 1) * (this.cube + 1) + v10 * (this.cube + 1) + v13; var v6 = this.basen.encode(v12, 2); this.output += v6; if (v6.length != 2) { trace('bad pixel ' + v6); } var v5 = this.basen.decode(v6); var v18 = v5; var v8 = v5 % (this.cube + 1); v5 = (v5 - v8) / (this.cube + 1); var v9 = v5 % (this.cube + 1); var v19 = (v5 - v9) / (this.cube + 1); if (v13 != v8 and v10 != v9 and v11 != v10) { ++this.debug.bad_pixels; trace('BAD PIXEL ' + this.debug.bad_pixels + ') ' + v12 + ' != ' + v18 + ' ' + v6); trace(this.basen.debug.lastencode); } var v2 = (Math.round((v19 / this.cube) * 255)).toString(16); var v4 = (Math.round((v9 / this.cube) * 255)).toString(16); var v3 = (Math.round((v8 / this.cube) * 255)).toString(16); while (v2.length < 2) { v2 = '0' + v2; } while (v4.length < 2) { v4 = '0' + v4; } while (v3.length < 2) { v3 = '0' + v3; } this.copyBitmap.setPixel(v15, v14, Number('0x' + v2 + v4 + v3)); ++this.pixels; if (this.pixels >= this.image_width * this.image_height) { return false; } ++this.xpos; if (this.xpos >= this.image_width) { this.xpos = 0; ++this.ypos; } return true; }; v2.error = function (e, f) { this.sendMessage(e, f, 'ERROR'); }; v2.sendMessage = function (msg, func, type) { var v1 = 'ImageScanner'; if (func) { v1 += '.' + func + '()'; } if (type) { v1 = type + ' in ' + v1; } v1 += ' :: ' + msg; trace(v1); }; v2.image_width = 100; v2.image_height = 100; v2.crop = true; v2.pixels_per_chunk = 500; v2.debug = new Object(); ASSetPropFlags(com.newgrounds.encoders.ImageScanner.prototype, null, 1); } #endinitclip } movieClip 95 __Packages.com.newgrounds.encoders.BaseN { #initclip if (!_global.com) { _global.com = new Object(); } if (!_global.com.newgrounds) { _global.com.newgrounds = new Object(); } if (!_global.com.newgrounds.encoders) { _global.com.newgrounds.encoders = new Object(); } if (!_global.com.newgrounds.encoders.BaseN) { var v1 = function (hash) { this.ceiling = 100000000000000.0; if (hash) { this.hashIndex = hash; } else { this.hashIndex = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ`~@#$%^&*()+|;/'; } this.bitSize = this.hashIndex.length; this.hashVal = new Object(); this.i = 0; while (this.i < this.bitSize) { this.hashVal[this.hashIndex.charAt(this.i)] = this.i; ++this.i; } }; com.newgrounds.encoders.BaseN = v1; var v2 = v1.prototype; v2.verify = function (s) { if (this.hashVal[s] != undefined) { return true; } else { return false; } }; v2.encode = function (n, minchars) { this.debug.lastencode = ''; if (typeof this.i != 'string') { n = n.toString(); } if (n.charAt(0) == '-') { var v3 = '-'; n = n.substring(1); } else { var v3 = ''; } if ((String(n)).indexOf('.') > -1) { var v4 = (String(n)).split('.', 2); return v3 + this.baseNEncoder(v4[0], minchars) + '.' + this.baseNEncoder(v4[1]); } else { this.debug.lastencode += '\tNo decimal\r'; return v3 + this.baseNEncoder(n, minchars); } }; v2.decode = function (s) { var v4 = 1; if (s.charAt(0) == '-') { v4 = -1; s = s.substring(1, s.length); } var v3 = s.indexOf('.'); if (v3 > -1) { var v5 = Math.pow(10, this.baseNDecoder(s.substring(v3 + 1, s.length))); return (this.baseNDecoder(s.substring(0, v3)) / v5) * v4; } else { return this.baseNDecoder(s) * v4; } }; v2.baseNEncoder = function (n, minchars) { if (!minchars) { minchars = 1; } var v4 = ''; while (n != 0) { n = Math.round(n); var v3 = n % this.bitSize; if (Math.round(v3) != v3) { trace('BaseN failed on ' + n + '%' + this.bitSize + ' = ' + v3 + ' ' + int(n) + ' ' + int(this.bitSize)); } v4 = this.hashIndex.charAt(v3) + v4; this.debug.lastencode += '\t-> n:' + n + ' % bitSize:' + this.bitSize + ' = ' + v3 + ', final char=' + v4 + '\n'; n -= v3; n /= this.bitSize; } if (minchars) { while (v4.length < minchars) { v4 = this.hashIndex.charAt(0) + v4; } } return v4; }; v2.baseNDecoder = function (s) { var v2 = 0; var v6 = 0; this.i = 0; while (this.i < s.length) { var v3 = s.charAt(s.length - this.i - 1); if (v3 == this.hashIndex.charAt(0)) { var v5 = 0; } else { var v5 = this.hashVal[v3] * Math.pow(this.bitSize, this.i); } v2 += v5; if (v2 >= this.ceiling) { v6 += (v2 - v2 % this.ceiling) / this.ceiling; v2 %= this.ceiling; } ++this.i; } if (v6 > 0) { v2 = '' + v2; while (v2.length < (this.ceiling.toString()).length - 1) { v2 = '0' + v2; } v2 = '' + v6 + v2; } return v2; }; v2.debug = new Object(); ASSetPropFlags(com.newgrounds.encoders.BaseN.prototype, null, 1); } #endinitclip } movieClip 106 __Packages.com.newgrounds.APIEventDispatcher { #initclip if (!_global.com) { _global.com = new Object(); } if (!_global.com.newgrounds) { _global.com.newgrounds = new Object(); } if (!_global.com.newgrounds.APIEventDispatcher) { var v1 = function () {}; com.newgrounds.APIEventDispatcher = v1; var v2 = v1.prototype; v2.addEventListener = function (event, callback, target) { if (!target) { throw 'Attempted to create a listener without providing a target object.'; } if (!this.listeners[event]) { this.listeners[event] = []; } else { this.removeEventListener(event, target); } this.listeners[event].push({'target': target, 'callback': callback}); }; v2.removeEventListener = function (event, target) { if (!target) { throw 'Attempted to remove a listener without providing a target object.'; } if (!this.listeners[event] || this.listeners[event].length < 1) { return undefined; } var v4 = []; var v2 = 0; while (v2 < this.listeners[event].length) { if (this.listeners[event][v2].target != target) { v4.push(this.listeners[event][v2]); } ++v2; } this.listeners[event] = v4; }; v2.dispatchEvent = function (event) { if (!this.hasEventListener(event.__get__type())) { return false; } this.collectGarbage(event.__get__type()); var v2 = 0; while (v2 < this.listeners[event.__get__type()].length) { var v4 = this.listeners[event.__get__type()][v2].callback; if (this.listeners[event.__get__type()][v2].target) { var v5 = this.listeners[event.__get__type()][v2].target; v4.call(v5, event); } else { v4(event); } ++v2; } return true; }; v2.hasEventListener = function (event) { return this.listeners[event] != undefined && this.listeners[event].length > 0; }; v2.collectGarbage = function (event) { var v5 = []; if (!this.hasEventListener) { return undefined; } var v2 = 0; while (v2 < this.listeners[event].length) { var v4 = this.listeners[event][v2].target; if (v4) { v5.push(this.listeners[event][v2]); } ++v2; } this.listeners[event] = v5; }; v2.listeners = {}; ASSetPropFlags(com.newgrounds.APIEventDispatcher.prototype, null, 1); } #endinitclip } movieClip 93 __Packages.com.newgrounds.APIEvent { #initclip if (!_global.com) { _global.com = new Object(); } if (!_global.com.newgrounds) { _global.com.newgrounds = new Object(); } if (!_global.com.newgrounds.APIEvent) { var v1 = function (type, success, data) { this._type = type; this._success = success; if (data.isError()) { this._error = data; this.data = null; } else { if (data.error && data.error.isError()) { this._error = data.error; this.data = data; } else { this.data = data; this._error = null; } } }; com.newgrounds.APIEvent = v1; var v2 = v1.prototype; v2.__get__error = function () { return this._error; }; v2.__get__type = function () { return this._type; }; v2.__get__success = function () { return this._success; }; v1.API_CONNECTED = 'apiConnected'; v1.ADS_APPROVED = 'adsApproved'; v1.AD_ATTACHED = 'adAttached'; v1.HOST_BLOCKED = 'hostBlocked'; v1.NEW_VERSION_AVAILABLE = 'newVersionAvailable'; v1.EVENT_LOGGED = 'eventLogged'; v1.SCORE_POSTED = 'scorePosted'; v1.SCORES_LOADED = 'scoresLoaded'; v1.UNLOCK_MEDAL = 'unlockMedal'; v1.MEDAL_UNLOCKED = 'medalUnlocked'; v1.MEDALS_LOADED = 'medalsLoaded'; v1.METADATA_LOADED = 'metadataLoaded'; v1.FILE_PRIVS_LOADED = 'filePrivsLoaded'; v1.FILE_SAVED = 'fileSaved'; v1.FILE_LOADED = 'fileLoaded'; v1.FILE_INITIALIZED = 'fileInitialized'; v1.FILE_REQUESTED = 'fileRequested'; v1.QUERY_COMPLETE = 'queryComplete'; v1.VOTE_COMPLETE = 'voteComplete'; v1.API_ERROR = 'apiError'; v1.UNCAUGHT_EVENT = 'uncaughtEvent'; v2.addProperty('error', v2.__get__error, function () {}); v2.addProperty('success', v2.__get__success, function () {}); v2.addProperty('type', v2.__get__type, function () {}); ASSetPropFlags(com.newgrounds.APIEvent.prototype, null, 1); } #endinitclip } movieClip 87 __Packages.com.newgrounds.APIError { #initclip if (!_global.com) { _global.com = new Object(); } if (!_global.com.newgrounds) { _global.com.newgrounds = new Object(); } if (!_global.com.newgrounds.APIError) { var v1 = function (error, msg) { if ((Number(error)).toString() == String(error)) { error = Number(error); } else { if (com.newgrounds.APIError.error_codes[String(error)]) { error = com.newgrounds.APIError.error_codes[String(error)]; } else { error = 0; } } this.code = error; this.message = msg; this.name = com.newgrounds.APIError.error_names[error]; this.alias = com.newgrounds.APIError.aliases[error]; }; com.newgrounds.APIError = v1; var v2 = v1.prototype; v1.init_codes = function () { var v2 = new Object(); var v1 = 0; while (v1 < com.newgrounds.APIError.aliases.length) { v2[com.newgrounds.APIError.aliases[v1]] = v1; ++v1; } return v2; }; v1.init_names = function () { var v5 = new Array(); var v3 = 0; while (v3 < com.newgrounds.APIError.aliases.length) { var v2 = (com.newgrounds.APIError.aliases[v3].toLowerCase()).split('_'); var v1 = 0; while (v1 < v2.length) { v2[v1] = (v2[v1].substr(0, 1)).toUpperCase() + v2[v1].substr(1, v2[v1].length); for (var v4 in com.newgrounds.APIError.always_caps) { if (v2[v1].toUpperCase() == com.newgrounds.APIError.always_caps[v4]) { v2[v1] = v2[v1].toUpperCase(); } } ++v1; } v5[v3] = v2.join(' '); ++v3; } return v5; }; v2.isError = function () { return true; }; v1.aliases = new Array('UNKNOWN_ERROR', 'INVALID_API_ID', 'MISSING_PARAM', 'INVALID_STAT_ID', 'INVALID_COMMAND_ID', 'FLASH_ADS_NOT_APPROVED', 'PERMISSION_DENIED', 'IDENTIFICATION_REQUIRED', 'INVALID_EMAIL_ADDRESS', 'BANNED_USER', 'SESSION_EXPIRED', 'INVALID_SCORE', 'INVALID_MEDAL', 'INVALID_SAVE_GROUP', 'FILE_NOT_FOUND', 'SITE_ID_REQUIRED', 'UPLOAD_IN_PROGRESS', 'USER_CANCELLED', 'CONFIRM_REQUEST', 'ILLEGAL_REQUEST', 'CONNECTION_FAILED', 'QUERY_INCOMPLETE', 'SAVE_FILE_ERROR', 'INVALID_VALUE', 'SERVER_ERROR', 'INVALID_SCOREBOARD'); v1.always_caps = new Array('API', 'URL', 'ID'); v1.error_codes = com.newgrounds.APIError.init_codes(); v1.error_names = com.newgrounds.APIError.init_names(); v2.code = 0; ASSetPropFlags(com.newgrounds.APIError.prototype, null, 1); } #endinitclip } movieClip 100 __Packages.com.newgrounds.RemoteAuth { #initclip if (!_global.com) { _global.com = new Object(); } if (!_global.com.newgrounds) { _global.com.newgrounds = new Object(); } if (!_global.com.newgrounds.RemoteAuth) { var v1 = function (id) { this.auth_token = id; System.security.allowDomain('*'); this.receiver = new LocalConnection(); this.receiver.allowDomain = function () { return true; }; this.receiver.onAuth = function (auth_result) { trace('remote login is a success! ' + auth_result); com.newgrounds.API.onRemoteAuthentication(auth_result); }; this.receiver.connect('_' + this.auth_token); }; com.newgrounds.RemoteAuth = v1; var v2 = v1.prototype; v2.__get__token = function () { return this.auth_token; }; v2.addProperty('token', v2.__get__token, function () {}); ASSetPropFlags(com.newgrounds.RemoteAuth.prototype, null, 1); } #endinitclip } movieClip 1964 __Packages.ButtonMenu { #initclip if (!_global.ButtonMenu) { var v1 = function () { super(); this.btn.onRollOver = mx.utils.Delegate.create(this, this.onMouseEnter); this.btn.onRollOut = mx.utils.Delegate.create(this, this.onMouseLeave); this.btn.onRelease = mx.utils.Delegate.create(this, this.onClick); this.btn.onReleaseOutside = mx.utils.Delegate.create(this, this.onMouseLeave); this.pushed = false; this.hover = false; this.onMouseLeave(); }; _global.ButtonMenu = v1; _global.ButtonMenu extends MovieClip; var v2 = v1.prototype; v2.setCaption = function (text_) { this.caption.text = text_; }; v2.setOnClick = function (handler_) { this.onClickExt = handler_; }; v2.onMouseEnter = function () { this.hover = true; this.hilite(); }; v2.onMouseLeave = function () { this.hover = false; if (!this.pushed) { this.dehilite(); } }; v2.hilite = function () { var v2 = new flash.filters.GlowFilter(5259863, 1, 5, 5, 5, 2, false, false); this.caption.filters = [v2]; this.caption.textColor = 16777215; this.eff.gotoAndPlay(1); this.eff._visible = true; }; v2.dehilite = function () { var v2 = new flash.filters.GlowFilter(16777215, 1, 3, 3, 2, 2, false, false); this.caption.filters = [v2]; this.caption.textColor = 6575979; this.eff.stop(); this.eff._visible = false; }; v2.onClick = function () { (Core.Get()).playSound('button_click'); if (this.onClickExt != undefined) { } this.onClickExt(); }; v2.isPushed = function () { return this.pushed; }; v2.push = function () { this.pushed = true; if (!this.hover) { this.hilite(); } }; v2.unpush = function () { this.pushed = false; if (!this.hover) { this.dehilite(); } }; v2.enable = function () { this.enabled = true; this.btn.enabled = true; this.btn.useHandCursor = true; }; v2.disable = function () { this.enabled = false; this.btn.enabled = false; this.btn.useHandCursor = false; }; ASSetPropFlags(_global.ButtonMenu.prototype, null, 1); } #endinitclip } movieClip 1965 __Packages.ScreenMap { #initclip if (!_global.ScreenMap) { var v1 = function () { super(); Log.Msg('ScreenMap::ScreenMap()'); this.cfg = (Core.Get()).cfg; this.world = (Core.Get()).world; this.game = (Core.Get()).game; this.base = new Pair(this.map._x, this.map._y); this.scroll = this.game.scroll; this.unit_pos = this.game.unit_pos; this.unit_tile = this.game.unit_tile; this.initDark(); this.fog_data = this.game.fog_data; this.has_target = false; this.target_pos = new Pair(this.unit_pos.x, this.unit_pos.y); this.cur_vel = this.cfg.min_vel; this.initAreas(); this.select = this.map.select; this.select.stop(); this.map.target.stop(); this.battle_mark = this.map.battle_mark; this.battle_mark.stop(); this.battle_mark._visible = false; this.map.target_bad.stop(); this.map.target_bad._visible = false; this.water = this.map.water; this.water._visible = false; this.mounts = this.map.mounts; this.mounts._visible = false; this.syncLimits(); this.checkPosition(); this.syncRegion(); if (this.unit_tile.x < 0) { this.unit_tile.x = Math.floor(this.unit_pos.x / this.cfg.map_grid.x); this.unit_tile.y = Math.floor(this.unit_pos.y / this.cfg.map_grid.y); this.observeFog(); } else { this.syncAreas(); } if (this.game.in_area >= 0) { this.enterArea(this.game.in_area); } this.checkAreas(); this.syncData(); this.onEnterFrame = this.onUpdate; this.onMouseMove(); this.ui.onMouseDown = mx.utils.Delegate.create(this, this.onUIClick); this.enemy_data = new Array(); this.stealth_mode = false; this.hysterie_on = false; this.guide_data = []; Key.addListener(this); }; _global.ScreenMap = v1; _global.ScreenMap extends Screen; var v2 = v1.prototype; v2.init = function () { this.btn_game.setCaption((Core.Get()).locale.btn.game); this.btn_game.setOnClick(mx.utils.Delegate.create(this, this.onGameClick)); this.btn_inventory.setCaption((Core.Get()).locale.btn.inventory); this.btn_inventory.setOnClick(mx.utils.Delegate.create(this, this.onItemsClick)); this.btn_team.setCaption((Core.Get()).locale.btn.team); this.btn_team.setOnClick(mx.utils.Delegate.create(this, this.onTeamClick)); this.btn_quests.setCaption((Core.Get()).locale.btn.quests); this.btn_quests.setOnClick(mx.utils.Delegate.create(this, this.onTasksClick)); this.btn_map.setCaption((Core.Get()).locale.btn.map); this.btn_map.setOnClick(mx.utils.Delegate.create(this, this.onMapClick)); this.btn_options.setCaption((Core.Get()).locale.btn.options); this.btn_options.setOnClick(mx.utils.Delegate.create(this, this.onOptionsClick)); this.btn_game.push(); this.map.captions.filters = [Filters.Alpha(70)]; this.btn_atk.setCaption('Fight'); this.btn_inv.setCaption('Hide'); this.btn_atk.setOnClick(mx.utils.Delegate.create(this, this.onAtkClick)); this.btn_inv.setOnClick(mx.utils.Delegate.create(this, this.onInvClick)); if (!(Core.Get()).debug_mode) { this.btn_atk._visible = false; this.btn_inv._visible = false; } this.hysterie_on = (Core.Get()).game.isFlag('hysterie'); this.syncGuides(); this.updateGuides(); var v3 = 0; while (v3 < this.game.enemy_data.length) { var v2 = this.game.enemy_data[v3]; this.addEnemy(v2.x, v2.y, v2.band); ++v3; } }; v2.onAtkClick = function () { if (this.game.cur_region >= 0 && this.game.in_area < 0) { this.encounterBattle(); } }; v2.onInvClick = function () { if (this.btn_inv.isPushed()) { this.btn_inv.unpush(); } else { this.btn_inv.push(); } this.stealth_mode = this.btn_inv.isPushed(); }; v2.syncData = function () { this.map._x = this.base.x - this.scroll.x; this.map._y = this.base.y - this.scroll.y; this.map.unit._x = this.unit_pos.x; this.map.unit._y = this.unit_pos.y; this.map.target._x = this.target_pos.x; this.map.target._y = this.target_pos.y; this.map.target._visible = this.has_target; this.syncDark(); this.checkRegion(); }; v2.onKeyDown = function () { if (Key.isDown(ex.ord('I'))) { this.onItemsClick(); } else { if (Key.isDown(ex.ord('P')) || Key.isDown(ex.ord('T'))) { this.onTeamClick(); } else { if (Key.isDown(ex.ord('J')) || Key.isDown(ex.ord('Q'))) { this.onTasksClick(); } else { if (Key.isDown(ex.ord('M'))) { this.onMapClick(); } else { if (Key.isDown(ex.ord('O'))) { this.onOptionsClick(); } else { if (Key.isDown(27)) { this.unpopup(); } } } } } } }; v2.onUpdate = function () { if (!this.enabled) { return undefined; } this.updateTimers(); if (this.has_target) { var v5 = this.cur_vel; if (this.hysterie_on) { v5 *= 2; } var v4 = this.target_pos.x - this.unit_pos.x; var v3 = this.target_pos.y - this.unit_pos.y; var v8 = Math.sqrt(v4 * v4 + v3 * v3); if (v5 >= v8) { this.unit_pos.x = this.target_pos.x; this.map.unit._x = this.unit_pos.x; this.unit_pos.y = this.target_pos.y; this.map.unit._y = this.unit_pos.y; this.has_target = false; this.map.target._visible = this.has_target; } else { v4 *= v5; v4 /= v8; v3 *= v5; v3 /= v8; var v7 = this.unit_pos.x + v4; var v6 = this.unit_pos.y + v3; var v2 = new Pair(v7, v6); this.map.localToGlobal(v2); if (this.water.hitTest(v2.x, v2.y, true) || this.mounts.hitTest(v2.x, v2.y, true) && !this.hysterie_on) { this.map.target_bad._x = v7; this.map.target_bad._y = v6; this.map.target_bad._visible = true; this.map.target_bad.gotoAndPlay(1); this.has_target = false; this.map.target._visible = this.has_target; return undefined; } this.unit_pos.x = v7; this.map.unit._x = this.unit_pos.x; this.unit_pos.y = v6; this.map.unit._y = this.unit_pos.y; this.cur_vel *= this.cfg.accel; if (this.cur_vel > this.cfg.max_vel) { this.cur_vel = this.cfg.max_vel; } } this.syncScroll(); var v10 = Math.floor(this.unit_pos.x / this.cfg.map_grid.x); var v9 = Math.floor(this.unit_pos.y / this.cfg.map_grid.y); if (this.unit_tile.x != v10 || this.unit_tile.y != v9) { this.unit_tile.x = v10; this.unit_tile.y = v9; this.observeFog(); this.checkRegion(); } this.checkAreas(); this.syncDark(); this.updateGuides(); this.checkEnemies(); updateAfterEvent(); } }; v2.syncScroll = function () { var v3 = this.unit_pos.x - this.scroll.x; var v2 = this.unit_pos.y - this.scroll.y; if (v3 < this.cfg.min_walk.x) { var v5 = this.cfg.min_walk.x - v3; this.scroll.x -= v5; v3 += v5; } if (v3 > this.cfg.max_walk.x) { v5 = this.cfg.max_walk.x - v3; this.scroll.x -= v5; v3 += v5; } if (v2 < this.cfg.min_walk.y) { var v4 = this.cfg.min_walk.y - v2; this.scroll.y -= v4; v2 += v4; } if (v2 > this.cfg.max_walk.y) { v4 = this.cfg.max_walk.y - v2; this.scroll.y -= v4; v2 += v4; } this.scroll.x = Math.round(this.scroll.x); this.scroll.y = Math.round(this.scroll.y); if (this.scroll.x < this.min_scroll.x) { this.scroll.x = this.min_scroll.x; } if (this.scroll.x > this.max_scroll.x) { this.scroll.x = this.max_scroll.x; } if (this.scroll.y < this.min_scroll.y) { this.scroll.y = this.min_scroll.y; } if (this.scroll.y > this.max_scroll.y) { this.scroll.y = this.max_scroll.y; } this.map._x = this.base.x - this.scroll.x; this.map._y = this.base.y - this.scroll.y; }; v2.onMouseMove = function () { if (!this.enabled) { return undefined; } this.cross_x._x = this._xmouse; this.cross_y._y = this._ymouse; var v2 = this._ymouse >= this.base.y; this.cross_x._visible = v2; this.cross_y._visible = v2; updateAfterEvent(); }; v2.onUIClick = function () { if (this.ui.hitTest(this._xmouse, this._ymouse, true)) { return undefined; } if (this.btn_atk._visible && this.btn_atk.hitTest(this._xmouse, this._ymouse, true)) { return undefined; } if (this.btn_inv._visible && this.btn_inv.hitTest(this._xmouse, this._ymouse, true)) { return undefined; } this.onInMapClick(); }; v2.onInMapClick = function () { if (!this.enabled) { return undefined; } (Core.Get()).playSound('button_click'); var v5 = this.target_pos.clone(); this.target_pos.x = this._xmouse - this.base.x + this.scroll.x; this.target_pos.y = this._ymouse - this.base.y + this.scroll.y; if (this.target_pos.x < this.min_travel.x) { this.target_pos.x = this.min_travel.x; } if (this.target_pos.y < this.min_travel.y) { this.target_pos.y = this.min_travel.y; } if (this.target_pos.x > this.max_travel.x) { this.target_pos.x = this.max_travel.x; } if (this.target_pos.y > this.max_travel.y) { this.target_pos.y = this.max_travel.y; } if (this.game.in_area >= 0) { var v7 = this.world.areas[this.game.in_area].name; var v6 = this.map.areas[v7]; var v4 = this.target_pos.x - v6._x; var v2 = this.target_pos.y - v6._y; var v3 = this.world.areas[this.game.in_area].r; if (v4 * v4 + v2 * v2 < v3 * v3) { return undefined; } } if (this.water.hitTest(this._xmouse, this._ymouse, true) || this.mounts.hitTest(this._xmouse, this._ymouse, true) && !this.hysterie_on) { this.map.target_bad._x = this._xmouse - this.base.x + this.scroll.x; this.map.target_bad._y = this._ymouse - this.base.y + this.scroll.y; this.map.target_bad._visible = true; this.map.target_bad.gotoAndPlay(1); this.target_pos.x = v5.x; this.target_pos.y = v5.y; return undefined; } this.map.target._x = this.target_pos.x; this.map.target._y = this.target_pos.y; this.has_target = true; this.map.target._visible = this.has_target; this.map.target.gotoAndPlay(1); this.cur_vel = this.cfg.min_vel; updateAfterEvent(); }; v2.initDark = function () { var v3 = 0; this.dark_tiles = new Array(this.cfg.dark_size.x); var v5 = 0; while (v5 < this.cfg.dark_size.x) { this.dark_tiles[v5] = new Array(this.cfg.dark_size.y); var v4 = 0; while (v4 < this.cfg.dark_size.y) { var v2 = this.map.dark.attachMovie('dark_tile', '', v3); v2._x = v5 * this.cfg.map_grid.x; v2._y = v4 * this.cfg.map_grid.y; this.dark_tiles[v5][v4] = v2; ++v3; ++v4; } ++v5; } v3 = 0; v5 = 1; while (v5 <= this.cfg.dark_size.x) { var v6 = this.map.grid.attachMovie('mapgrid_x', '', v3); v6._x = v5 * this.cfg.map_grid.x - 1; v6._y = 0; ++v3; ++v5; } v4 = 1; while (v4 <= this.cfg.dark_size.y) { v6 = this.map.grid.attachMovie('mapgrid_y', '', v3); v6._x = 0; v6._y = v4 * this.cfg.map_grid.y - 1; ++v3; ++v4; } }; v2.syncDark = function () { var v6 = Math.floor(this.scroll.x / this.cfg.map_grid.x); var v9 = this.scroll.x % this.cfg.map_grid.x; var v5 = Math.floor(this.scroll.y / this.cfg.map_grid.y); var v8 = this.scroll.y % this.cfg.map_grid.y; this.map.dark._x = this.scroll.x - v9; this.map.dark._y = this.scroll.y - v8; this.map.grid._x = this.scroll.x - v9; this.map.grid._y = this.scroll.y - v8; var v7 = this.cfg.dark_size.x; var v4 = this.cfg.dark_size.y; if (v6 + this.cfg.dark_size.x > this.cfg.fog_size.x) { --v7; } if (v5 + this.cfg.dark_size.y > this.cfg.fog_size.y) { --v4; } var v3 = 0; while (v3 < v7) { var v2 = 0; while (v2 < v4) { this.dark_tiles[v3][v2]._alpha = this.fog_data[v6 + v3][v5 + v2]; ++v2; } ++v3; } }; v2.observeFog = function () { var v9 = this.unit_tile.x; var v8 = this.unit_tile.y; this.fog_data[v9][v8] = 0; var v6 = v9 - 1; var v4 = v8 - 1; var v7 = v9 + 1; var v5 = v8 + 1; if (v6 < 0) { ++v6; } if (v6 == this.cfg.fog_size.x) { --v6; } if (v4 < 0) { ++v4; } if (v4 == this.cfg.fog_size.y) { --v4; } var v3 = v6; while (v3 <= v7) { var v2 = v4; while (v2 <= v5) { if (this.fog_data[v3][v2] > 50) { this.fog_data[v3][v2] = 50; } ++v2; } ++v3; } }; v2.syncAreas = function () { var v3 = ['milbase', 'alpha', 'sarreno', 'highland']; var v2 = 0; while (v2 < v3.length) { this.map.areas[v3[v2]]._visible = false; ++v2; } var v4 = this.game.areas_shown.length; v2 = 0; while (v2 < v4) { if (this.game.areas_shown[v2]) { this.showArea(v2); } ++v2; } }; v2.showArea = function (id) { var v3 = this.world.areas[id].name; var v4 = this.map.areas[v3]; if (v4 != undefined) { v4._visible = true; var v5 = this.map.captions.attachMovie('mapmark', '', this.map.captions.getNextHighestDepth()); v5._x = v4._x; v5._y = v4._y; v5.caption.text = this.world.areas[id].caption; var v2 = 0; while (v2 < this.game.guides.length) { if (this.game.guides[v2] == v3) { this.game.guides.splice(v2, 1); this.syncGuides(); break; } ++v2; } } else { Log.Err('ScreenMap::showArea() : area not found'); } }; v2.checkAreas = function () { var v8 = this.world.areas.length; var v2 = 0; while (v2 < v8) { var v7 = this.world.areas[v2].name; var v6 = this.map.areas[v7]; var v5 = this.unit_pos.x - v6._x; var v3 = this.unit_pos.y - v6._y; var v4 = this.world.areas[v2].r; if (v5 * v5 + v3 * v3 < v4 * v4) { if (!this.game.areas_shown[v2]) { if (v2 == 32) { (Core.Get()).unlockMedal('Pilgrimage'); } this.showArea(v2); this.game.areas_shown[v2] = true; this.game.areas_marked[v2] = true; } if (this.game.in_area < 0) { this.enterArea(v2); this.game.in_area = v2; } return undefined; } ++v2; } if (this.game.in_area >= 0) { this.leaveArea(this.game.in_area); this.game.in_area = -1; } }; v2.initAreas = function () { var v5 = this.world.areas.length; var v2 = 0; while (v2 < v5) { var v4 = this.world.areas[v2].name; var v3 = this.map.areas[v4]; v3.btn.enabled = false; v3.btn.onRelease = mx.utils.Delegate.create(this, this.onAreaClick); ++v2; } }; v2.leaveArea = function (id) { var v2 = this.world.areas[id].name; var v3 = this.map.areas[v2]; v3.btn.enabled = false; this.select.stop(); this.select._visible = false; }; v2.enterArea = function (id) { var v3 = this.world.areas[id].name; var v2 = this.map.areas[v3]; v2.btn.enabled = true; this.select._x = v2._x; this.select._y = v2._y; this.select._visible = true; this.select.gotoAndPlay(1); }; v2.onAreaClick = function () { if (!this.enabled) { return undefined; } (Core.Get()).goArea(); }; v2.checkPosition = function () { if (this.game.in_area >= 0) { var v6 = this.world.areas[this.game.in_area].name; var v2 = this.map.areas[v6]; var v5 = this.unit_pos.x - v2._x; var v3 = this.unit_pos.y - v2._y; var v4 = this.world.areas[this.game.in_area].r; if (v5 * v5 + v3 * v3 >= v4 * v4) { this.unit_pos.x = v2._x + ex.randomInt(20) - 10; this.unit_pos.y = v2._y + ex.randomInt(20) - 10; this.unit_tile.x = Math.floor(this.unit_pos.x / this.cfg.map_grid.x); this.unit_tile.y = Math.floor(this.unit_pos.y / this.cfg.map_grid.y); this.centerView(); this.observeFog(); } } }; v2.centerView = function () { this.scroll.x = this.unit_pos.x - (Core.Get()).cfg.scr_size.x / 2; this.scroll.y = this.unit_pos.y - (Core.Get()).cfg.scr_size.y / 2; this.syncScroll(); }; v2.markBattle = function () { this.battle_mark._x = this.unit_pos.x; this.battle_mark._y = this.unit_pos.y; this.battle_mark._visible = true; this.battle_mark.gotoAndPlay(1); (Core.Get()).playSound('siren'); }; v2.beginBattle = function () { this.cancelTarget(); this.markBattle(); (Core.Get()).goBattle(60); }; v2.addEnemy = function (x_, y_, band_) { var v2 = this.map.enemies.attachMovie('map_enemy', '', this.map.enemies.getNextHighestDepth()); v2._x = x_; v2._y = y_; this.enemy_data.push({'clip': v2, 'band': band_}); }; v2.randomLevel = function () { var v2 = this.game.getTeamLevel(); if (v2 >= 5) { v2 += ex.randomIntIn(-2, 2); } return v2; }; v2.checkEvents = function () { if ((Core.Get()).game.isFlag('enc_dekkis1') && !(Core.Get()).game.isFlag('enc_dekkis2')) { this.game.exchange = {'npc': 'dekkis', 'talk': 262}; this.disable(); (Core.Get()).popupTalk(); return undefined; } if ((Core.Get()).game.isFlag('enc_dekkis2') && !(Core.Get()).game.isFlag('enc_dekkis3')) { this.game.exchange = {'npc': 'feather', 'talk': 263}; this.disable(); (Core.Get()).popupTalk(); return undefined; } }; v2.checkEnemies = function () { var v6 = this.enemy_data.length; var v2 = 0; while (v2 < v6) { var v5 = this.enemy_data[v2].clip; var v4 = v5._x - this.unit_pos.x; var v3 = v5._y - this.unit_pos.y; if (v4 * v4 + v3 * v3 <= 100) { this.game.exchange = {'band': this.enemy_data[v2].band, 'level': this.randomLevel()}; this.enemy_data.splice(v2, 1); this.game.enemy_data.splice(v2, 1); this.beginBattle(); return undefined; } ++v2; } if (this.game.cur_region >= 0 && this.game.in_area < 0) { this.game.enc_delay -= this.cur_vel; if (this.game.enc_delay < 0) { this.game.resetEncounterDelay(); if ((Core.Get()).game.isFlag('btl_int_meta')) { this.game.exchange = {'band': 'int_meta', 'level': 30}; this.game.resetFlag('btl_int_meta'); this.beginBattle(); return undefined; } if ((Core.Get()).game.isFlag('btl_celester')) { this.game.exchange = {'band': 'celester', 'level': (Core.Get()).game.getTeamLevel()}; this.game.resetFlag('btl_celester'); this.beginBattle(); return undefined; } if (!this.game.getFlag('enc_karry')) { var v7 = true; v7 = v7 && (this.game.cur_region == 7 || this.game.cur_region == 12 || this.game.cur_region == 13); v7 = v7 && this.game.isFlag('q_alienfix1'); v7 = v7 && this.game.isFlag('q_alienfix2'); v7 = v7 && this.game.isFlag('q_alienfix3'); v7 = v7 && this.game.isFlag('q_integra_talk_clod'); v7 = v7 && this.game.isFlag('q_integra_talk_jake'); v7 = v7 && this.game.isFlag('q_integra_talk_alexa'); v7 = v7 && this.game.isFlag('q_integra_talk_lindwid'); v7 = v7 && this.game.getTeamLevel() > 20; v7 = v7 && ex.testChance(0.1); if (v7) { this.game.exchange = {'npc': 'karry', 'talk': 257, 'no_bye': true}; this.disable(); (Core.Get()).popupTalk(); return undefined; } } if (!this.game.getFlag('enc_feather')) { v7 = true; v7 = v7 && (this.game.cur_region == 17 || this.game.cur_region == 18); v7 = v7 && this.game.getTeamLevel() > 15; v7 = v7 && ex.testChance(0.1); if (v7) { this.game.exchange = {'npc': 'feather', 'talk': 260}; this.disable(); (Core.Get()).popupTalk(); return undefined; } } if (this.game.getFlag('enc_feather') && !this.game.getFlag('enc_dekkis1')) { v7 = true; v7 = v7 && this.game.cur_region != 17 && this.game.cur_region != 18; v7 = v7 && ex.testChance(0.2); if (v7) { this.game.exchange = {'npc': 'dekkis', 'talk': 261}; this.disable(); (Core.Get()).popupTalk(); return undefined; } } if (this.stealth_mode) { return undefined; } this.encounterBattle(); } } }; v2.encounterBattle = function () { var v3 = this.world.regions[this.game.cur_region].enemy; if (v3.length > 0) { var v4 = []; var v2 = 0; while (v2 < v3.length) { var v6 = v3[v2]; if (v6 instanceof Object) { } else { v6 = v6.enemy; if (v6.condition == undefined || v6.condition()) { } else {} v4.push(v6); } ++v2; } v6 = ex.selectRandom(v4); if (undefined != (Core.Get()).world.bands[v6]) { this.game.exchange = {'band': v6, 'level': this.randomLevel()}; this.beginBattle(); } } }; v2.cancelTarget = function () { this.has_target = false; this.map.target._visible = this.has_target; }; v2.unpushAll = function () { this.btn_game.unpush(); this.btn_inventory.unpush(); this.btn_team.unpush(); this.btn_quests.unpush(); this.btn_map.unpush(); this.btn_options.unpush(); }; v2.onItemsClick = function () { if (!this.btn_inventory.enabled) { return undefined; } (Core.Get()).playSound('tab_switch'); if (!this.btn_inventory.isPushed()) { this.unpushAll(); this.btn_inventory.push(); (Core.Get()).popupItems(); } else { this.btn_inventory.unpush(); this.btn_game.push(); (Core.Get()).unpopup(); } }; v2.onTeamClick = function () { if (!this.btn_team.enabled) { return undefined; } (Core.Get()).playSound('tab_switch'); if (!this.btn_team.isPushed()) { this.unpushAll(); this.btn_team.push(); (Core.Get()).popupTeam(); } else { this.btn_team.unpush(); this.btn_game.push(); (Core.Get()).unpopup(); } }; v2.onTasksClick = function () { if (!this.btn_quests.enabled) { return undefined; } (Core.Get()).playSound('tab_switch'); if (!this.btn_quests.isPushed()) { this.unpushAll(); this.btn_quests.push(); (Core.Get()).popupTasks(); } else { this.btn_quests.unpush(); this.btn_game.push(); (Core.Get()).unpopup(); } }; v2.onGameClick = function () { if (!this.btn_game.enabled) { return undefined; } (Core.Get()).playSound('tab_switch'); if (!this.btn_game.isPushed()) { this.unpushAll(); this.btn_game.push(); if (!this.enabled) { (Core.Get()).unpopup(); } } }; v2.onMapClick = function () { if (!this.btn_map.enabled) { return undefined; } (Core.Get()).playSound('tab_switch'); if (!this.btn_map.isPushed()) { this.unpushAll(); this.btn_map.push(); (Core.Get()).popupMinimap(); } else { this.btn_map.unpush(); this.btn_game.push(); (Core.Get()).unpopup(); } }; v2.onOptionsClick = function () { if (!this.btn_options.enabled) { return undefined; } (Core.Get()).playSound('tab_switch'); if (!this.btn_options.isPushed()) { this.unpushAll(); this.btn_options.push(); (Core.Get()).popupOptions(); } else { this.btn_options.unpush(); this.btn_game.push(); (Core.Get()).unpopup(); } }; v2.unpopup = function () { if (this.btn_inventory.isPushed()) { this.onItemsClick(); } if (this.btn_team.isPushed()) { this.onTeamClick(); } if (this.btn_quests.isPushed()) { this.onTasksClick(); } if (this.btn_map.isPushed()) { this.onMapClick(); } if (this.btn_options.isPushed()) { this.onOptionsClick(); } }; v2.fade = function () { this.map.filters = [Filters.Desaturator()]; this.overlay.filters = [Filters.Desaturator()]; }; v2.unfade = function () { this.map.filters = []; this.overlay.filters = []; }; v2.disable = function () { this.btn_game.disable(); this.btn_inventory.disable(); this.btn_team.disable(); this.btn_quests.disable(); this.btn_map.disable(); this.btn_options.disable(); this.lock(); }; v2.enable = function () { this.btn_game.enable(); this.btn_inventory.enable(); this.btn_team.enable(); this.btn_quests.enable(); this.btn_map.enable(); this.btn_options.enable(); this.game.resetAreaFlags(); this.unlock(); if (!this.busy) { this.checkEvents(); } }; v2.lock = function () { this.enabled = false; this.cancelTarget(); if (this.game.in_area != -1) { this.leaveArea(this.game.in_area); } this.guides._visible = false; this.cross_x._visible = false; this.cross_y._visible = false; this.map.unit.stop(); var v2 = 0; while (v2 < this.enemy_data.length) { this.enemy_data[v2].clip.stop(); ++v2; } this.btn_atk.disable(); this.btn_inv.disable(); this.ui.btn_enkord.enabled = false; }; v2.unlock = function () { this.enabled = true; if (this.game.in_area != -1) { this.enterArea(this.game.in_area); } this.guides._visible = true; this.onMouseMove(); this.map.unit.play(); var v2 = 0; while (v2 < this.enemy_data.length) { this.enemy_data[v2].clip.play(); ++v2; } this.btn_atk.enable(); this.btn_inv.enable(); this.ui.btn_enkord.enabled = true; }; v2.checkRegion = function () { var v2 = this.world.getRegion(this.unit_tile); if (v2 != this.game.cur_region) { this.game.cur_region = v2; this.syncRegion(); } }; v2.syncRegion = function () { if (this.game.cur_region < 0) { this.overlay.region_caption._visible = false; this.overlay.region._visible = false; } else { this.overlay.region_caption._visible = true; this.overlay.region._visible = true; this.overlay.region.text = this.world.regions[this.game.cur_region].name; } }; v2.syncLimits = function () { this.min_travel = new Pair(this.game.map_tl.x + 20, this.game.map_tl.y + 20); this.max_travel = new Pair(this.game.map_br.x - 20, this.game.map_br.y - 20); this.min_scroll = new Pair(this.game.map_tl.x, this.game.map_tl.y); var v2 = (Core.Get()).cfg.scr_size; this.max_scroll = new Pair(this.game.map_br.x - v2.x, this.game.map_br.y - v2.y + 35); }; v2.updateTimers = function () { for (var v2 in this.game.timers) { ++this.game.timers[v2]; } }; v2.syncGuides = function () { var v2 = 0; while (v2 < this.guide_data.length) { var v4 = this.guide_data[v2].clip; v4.removeMovieClip(); ++v2; } this.guide_data = []; v2 = 0; while (v2 < this.game.guides.length) { v4 = this.guides.attachMovie('map_guide', '', this.guides.getNextHighestDepth()); var v3 = this.map.areas[this.game.guides[v2]]; this.guide_data.push({'pos': new Pair(v3._x, v3._y), 'clip': v4}); ++v2; } }; v2.updateGuides = function () { var v3 = new Pair(240, 162.5); var v5 = Math.atan2(v3.y, v3.x); var v10 = new Pair(); v10.x = this.scroll.x + v3.x; v10.y = this.scroll.y + v3.y; var v8 = 0; while (v8 < this.guide_data.length) { var v2 = this.guide_data[v8].clip; var v9 = this.guide_data[v8].pos; var v7 = v10.x - v9.x; var v6 = v10.y - v9.y; if (Math.abs(v7) < v3.x && Math.abs(v6) < v3.y) { v2._visible = false; } else { v2._visible = true; var v4 = Math.atan2(v6, v7); v2._rotation = v4 * 180 / Math.PI; if (-v5 <= v4 && v4 < v5) { v2._x = 0; v2._y = v3.y - v3.x * v6 / v7; } else { if (v5 <= v4 && v4 < Math.PI - v5) { v2._y = 0; v2._x = v3.x - v3.y * v7 / v6; } else { if (Math.PI - v5 <= v4 || v4 < -Math.PI + v5) { v2._x = 2 * v3.x; v2._y = v3.y + v3.x * v6 / v7; } else { if (-Math.PI + v5 <= v4 && v4 < v5) { v2._y = 2 * v3.y; v2._x = v3.x + v3.y * v7 / v6; } } } } } ++v8; } }; ASSetPropFlags(_global.ScreenMap.prototype, null, 1); } #endinitclip } movieClip 1966 __Packages.ex { #initclip if (!_global.ex) { var v1 = function () {}; _global.ex = v1; var v2 = v1.prototype; v1.randomInt = function (sup_) { return Math.floor(Math.random() * sup_); }; v1.randomIntIn = function (inf_, sup_) { return inf_ + ex.randomInt(sup_ - inf_ + 1); }; v1.randomFloatIn = function (inf_, sup_) { return inf_ + Math.random() * (sup_ - inf_); }; v1.selectRandom = function (arr_) { if (arr_.length == 0) { return undefined; } return arr_[ex.randomInt(arr_.length)]; }; v1.formatNumberCommas = function (src_) { var v2 = String(src_); if (v2.length < 4) { return v2; } var v1 = v2.length % 3; if (0 == v1) { v1 = 3; } var v3 = v2.slice(0, v1); while (v1 < v2.length) { v3 += ','; v3 += v2.slice(v1, v1 + 3); v1 += 3; } return v3; }; v1.testChance = function (chance_) { return Math.random() < chance_; }; v1.ord = function (s_) { return s_.charCodeAt(0); }; ASSetPropFlags(_global.ex.prototype, null, 1); } #endinitclip } movieClip 1967 __Packages.ScreenHelp { #initclip if (!_global.ScreenHelp) { var v1 = function () { super(); Log.Msg('ScreenHelp::ScreenHelp()'); this.btn_back = this.btn_back; this.onEnterFrame = this.onUpdate; this.drops = new Array(); var v4 = 0; while (v4 < 400) { var v3 = this.attachMovie('drop', '', this.getNextHighestDepth()); var v6 = random(550); var v5 = random(440); v3._x = v6; v3._y = v5; this.drops.push(v3); ++v4; } }; _global.ScreenHelp = v1; _global.ScreenHelp extends Screen; var v2 = v1.prototype; v2.init = function () { this.btn_back.setCaption('BACK'); this.btn_back.setOnClick(this.onBtnBackClick); }; v2.onBtnBackClick = function () { (Core.Get()).goIntro(); }; v2.onUpdate = function () { var v4 = this.drops.length; var v2 = 0; while (v2 < v4) { var v3 = this.drops[v2]._y; v3 += 4 + random(6); v3 %= 440; this.drops[v2]._y = v3; ++v2; } }; v2.enable = function () { this.enabled = true; this.btn_back.enable(); }; v2.disable = function () { this.enabled = false; this.btn_back.disable(); }; v1.cfg_time_before_spawn = 1; ASSetPropFlags(_global.ScreenHelp.prototype, null, 1); } #endinitclip } movieClip 1968 __Packages.ScreenMain { #initclip if (!_global.ScreenMain) { var v1 = function () { super(); Log.Msg('ScreenMain::ScreenMain()'); }; _global.ScreenMain = v1; _global.ScreenMain extends Screen; var v2 = v1.prototype; v2.init = function () { this.btn_intro.setCaption((Core.Get()).locale.btn.intro); this.btn_intro.setOnClick(this.onBtnIntroClick); this.btn_load.setCaption((Core.Get()).locale.btn.load); this.btn_load.setOnClick(this.onBtnLoadClick); this.btn_music.setCaption((Core.Get()).locale.btn.music); if ((Core.Get()).isMusicOn()) { this.btn_music.push(); } this.btn_music.setOnClick(mx.utils.Delegate.create(this, this.onBtnMusicClick)); this.btn_sound.setCaption((Core.Get()).locale.btn.sound); if ((Core.Get()).isSoundOn()) { this.btn_sound.push(); } this.btn_sound.setOnClick(mx.utils.Delegate.create(this, this.onBtnSoundClick)); this.btn_en.setCaption('EN'); this.btn_en.setOnClick(mx.utils.Delegate.create(this, this.onBtnEnClick)); this.btn_ru.setCaption('RU'); this.btn_ru.setOnClick(mx.utils.Delegate.create(this, this.onBtnRuClick)); if ('en' == (Core.Get()).locale.name) { this.btn_en.push(); } else { if ('ru' == (Core.Get()).locale.name) { this.btn_ru.push(); } } }; v2.onBtnIntroClick = function () { (Core.Get()).goIntro(); }; v2.onBtnLoadClick = function () { (Core.Get()).popupLoad(); }; v2.onBtnEnClick = function () { if (!this.btn_en.isPushed()) { this.btn_ru.unpush(); this.btn_en.push(); (Core.Get()).localEn(); this.localize(); } }; v2.onBtnRuClick = function () { if (!this.btn_ru.isPushed()) { this.btn_en.unpush(); this.btn_ru.push(); (Core.Get()).localRu(); this.localize(); } }; v2.enable = function () { this.enabled = true; this.btn_intro.enable(); if ((Core.Get()).canLoad()) { this.btn_load.enable(); } else { this.btn_load.disable(); } this.btn_en.enable(); this.btn_ru.enable(); this.btn_music.enable(); this.btn_sound.enable(); this.btn_logo.enabled = true; this.btn_embed.enabled = true; (Core.Get()).switchMusic(5); }; v2.disable = function () { this.enabled = false; this.btn_intro.disable(); this.btn_load.disable(); this.btn_en.disable(); this.btn_ru.disable(); this.btn_music.disable(); this.btn_sound.disable(); this.btn_logo.enabled = false; this.btn_embed.enabled = false; }; v2.localize = function () { this.btn_intro.setCaption((Core.Get()).locale.btn.intro); this.btn_load.setCaption((Core.Get()).locale.btn.load); this.btn_music.setCaption((Core.Get()).locale.btn.music); this.btn_sound.setCaption((Core.Get()).locale.btn.sound); }; v2.onBtnMusicClick = function () { if (this.btn_music.isPushed()) { this.btn_music.unpush(); } else { this.btn_music.push(); } (Core.Get()).setMusic(this.btn_music.isPushed()); }; v2.onBtnSoundClick = function () { if (this.btn_sound.isPushed()) { this.btn_sound.unpush(); } else { this.btn_sound.push(); } (Core.Get()).setSound(this.btn_sound.isPushed()); }; ASSetPropFlags(_global.ScreenMain.prototype, null, 1); } #endinitclip } movieClip 1969 __Packages.ScreenIntro { #initclip if (!_global.ScreenIntro) { var v1 = function () { super(); Log.Msg('ScreenIntro::ScreenIntro()'); this.message.text = ''; }; _global.ScreenIntro = v1; _global.ScreenIntro extends Screen; var v2 = v1.prototype; v2.init = function () { this.btn_back.setCaption((Core.Get()).locale.btn.back); this.btn_back.setOnClick(this.onBtnBackClick); this.btn_play.setCaption((Core.Get()).locale.btn.play); this.btn_play.setOnClick(this.onBtnPlayClick); this.msg_text = (Core.Get()).locale.text.intro; this.letter = 0; }; v2.onEnterFrame = function () { if (this.enabled && this.letter < this.msg_text.length) { this.letter += 1; this.message.text = this.msg_text.slice(0, Math.floor(this.letter)); } }; v2.onBtnBackClick = function () { (Core.Get()).goMain(); }; v2.onBtnPlayClick = function () { (Core.Get()).startGame(); if ((Core.Get()).game.in_area > -1) { (Core.Get()).goArea(); } else { (Core.Get()).goMap(); } }; v2.onBtnHelpClick = function () { (Core.Get()).goHelp(); }; v2.enable = function () { this.enabled = true; this.btn_back.enable(); this.btn_play.enable(); }; v2.disable = function () { this.enabled = false; this.btn_back.disable(); this.btn_play.disable(); }; ASSetPropFlags(_global.ScreenIntro.prototype, null, 1); } #endinitclip } movieClip 1970 __Packages.ButtonTeamSlot { #initclip if (!_global.ButtonTeamSlot) { var v1 = function () { super(); this.stop(); this.hilited = false; this.hover = false; this.syncState(); }; _global.ButtonTeamSlot = v1; _global.ButtonTeamSlot extends MovieClip; var v2 = v1.prototype; v2.disable = function () { this.enabled = false; this.useHandCursor = false; this.syncState(); }; v2.enable = function () { this.enabled = true; this.useHandCursor = true; this.syncState(); }; v2.enter = function () { this.hover = true; this.syncState(); }; v2.leave = function () { this.hover = false; this.syncState(); }; v2.hilite = function () { this.hilited = true; this.syncState(); }; v2.dehilite = function () { this.hilited = false; this.syncState(); }; v2.syncState = function () { this.filters = []; if (this.hilited) { if (this.hover) { this.hiliter._alpha = 40; } else { this.hiliter._alpha = 20; } } else { if (this.enabled) { if (this.hover) { this.hiliter._alpha = 40; } else { this.hiliter._alpha = 0; } } else { this.hiliter._alpha = 0; this.filters = [Filters.Desaturator()]; } } }; ASSetPropFlags(_global.ButtonTeamSlot.prototype, null, 1); } #endinitclip } movieClip 1971 __Packages.NPCSlot { #initclip if (!_global.NPCSlot) { var v1 = function () { super(); this.npc.inner.stop(); this.id = -1; this._visible = false; this.btn = this.btn; }; _global.NPCSlot = v1; _global.NPCSlot extends MovieClip; var v2 = v1.prototype; v2.init = function (id_, cb_) { this.id = id_; this.btn.onRelease = function () { cb_(id_); }; }; v2.setNPC = function (npc_) { var v2 = (Core.Get()).world; this.npc_id = npc_; this._visible = true; this.npc.inner.gotoAndStop(1 + v2.npc[npc_].id); this.name.text = v2.npc[npc_].name; this.descri.text = (undefined != v2.npc[npc_].descri) ? v2.npc[npc_].descri : ''; }; v2.resetNPC = function () { this.npc_id = ''; this._visible = false; }; v2.getNPC = function () { return this.npc_id; }; v2.isHit = function (x_, y_) { return this.btn.hitTest(x_, y_); }; v2.enter = function () { this.btn.enter(); }; v2.leave = function () { this.btn.leave(); }; v2.hilite = function () { this.btn.hilite(); }; v2.dehilite = function () { this.btn.dehilite(); }; v2.enable = function () { this.btn.enable(); }; v2.disable = function () { this.btn.disable(); }; ASSetPropFlags(_global.NPCSlot.prototype, null, 1); } #endinitclip } movieClip 1972 __Packages.ScreenArea { #initclip if (!_global.ScreenArea) { var v1 = function () { super(); Log.Msg('ScreenArea::ScreenArea()'); this.world = (Core.Get()).world; this.game = (Core.Get()).game; this.area_id = this.game.in_area; if (this.world.areas[this.area_id].caption2 != undefined) { this.caption.text = this.world.areas[this.area_id].caption2; } else { this.caption.text = this.world.areas[this.area_id].caption; } this.inner.back.gotoAndStop(this.world.areas[this.area_id].img); this.npc_slots = new Array(); this.npc_slots.push(this.inner.npc1); this.npc_slots.push(this.inner.npc2); this.npc_slots.push(this.inner.npc3); this.npc_slots.push(this.inner.npc4); this.btn_back = this.inner.btn_back; this.hover_slot = -1; this.onMouseMove = mx.utils.Delegate.create(this, this.onMouse); this.gibson._visible = this.area_id == this.world.area_to_id.gibson; this.tooltip._visible = false; }; _global.ScreenArea = v1; _global.ScreenArea extends Screen; var v2 = v1.prototype; v2.init = function () { var v5 = mx.utils.Delegate.create(this, this.onNPCClick); var v4 = this.npc_slots.length; var v2 = 0; while (v2 < v4) { var v3 = this.npc_slots[v2]; v3.init(v2, v5); ++v2; } this.syncNPCList(); this.btn_back.setCaption((Core.Get()).locale.btn.leave); this.btn_back.setOnClick(mx.utils.Delegate.create(this, this.onBtnBackClick)); }; v2.syncNPCList = function () { var v4 = 0; var v6 = this.world.area_data[this.area_id]; if (v6 != undefined && v6.npc != undefined) { var v7 = this.world.area_data[this.area_id].npc.length; var v3 = 0; while (v3 < v7) { var v5 = this.npc_slots[v4]; var v2 = v6.npc[v3]; if (v2 instanceof Object) { if (undefined == v2.condition || v2.condition()) { v5.setNPC(v2.npc); ++v4; } } else { v5.setNPC(v2); ++v4; } ++v3; } } var v8 = this.npc_slots.length; v3 = v4; while (v3 < v8) { v5 = this.npc_slots[v3]; v5.resetNPC(); ++v3; } }; v2.onBtnBackClick = function () { (Core.Get()).saveGame(0); if (this.area_id == this.world.area_to_id.jade) { this.game.in_area = this.world.area_to_id.port; } (Core.Get()).goMap(); }; v2.onNPCClick = function (id_) { (Core.Get()).playSound('button_click'); this.game.exchange = {'npc': this.npc_slots[id_].getNPC()}; (Core.Get()).popupTalk(); }; v2.disable = function () { this.enabled = false; var v4 = this.npc_slots.length; var v2 = 0; while (v2 < v4) { var v3 = this.npc_slots[v2]; v3.disable(); ++v2; } this.btn_back.disable(); this.gibson.enabled = false; }; v2.enable = function () { this.enabled = true; var v4 = this.npc_slots.length; var v2 = 0; while (v2 < v4) { var v3 = this.npc_slots[v2]; v3.enable(); ++v2; } this.btn_back.enable(); this.syncNPCList(); if (!this.busy) { this.checkLevelUp(); if (this.enabled) { this.checkAreaTalk(); } } this.onMouse(); if (this.enabled) { this.gibson.enabled = true; } }; v2.checkLevelUp = function () { var v3 = 0; while (v3 < 4) { var v4 = this.game.team[v3]; if (v4 >= 0) { var v2 = this.game.stats[v4]; if (v2.level_up) { v2.level_up = false; } if (v2.perk_unlocked) { v2.perk_unlocked = false; } } ++v3; } if ((Core.Get()).game.stats[0].ups) { (Core.Get()).game.exchange = {'no_switch': true}; (Core.Get()).popupSkillsUp(); } }; v2.checkAreaTalk = function () { var v7 = this.world.area_data[this.area_id]; if (v7.talk != undefined) { var v8 = v7.talk.length; var v2 = 0; while (v2 < v8) { var v3 = v7.talk[v2]; var v4 = this.world.talk[v3.talk].condition; if (undefined == v4 || v4()) { this.game.exchange = {'npc': v3.npc, 'talk': v3.talk}; (Core.Get()).popupTalk(30); return undefined; } ++v2; } } }; v2.onMouse = function () { if (!this.enabled) { return undefined; } var v4 = -1; var v5 = this.npc_slots.length; var v2 = 0; while (v2 < v5) { var v3 = this.npc_slots[v2]; if (v3.isHit(this._xmouse, this._ymouse)) { v4 = v2; break; } ++v2; } if (this.hover_slot == v4) { return undefined; } if (this.hover_slot != -1) { this.npc_slots[this.hover_slot].leave(); } this.hover_slot = v4; this.npc_slots[this.hover_slot].enter(); }; v2.fade = function () { this.inner.filters = [Filters.Desaturator()]; }; v2.unfade = function () { this.inner.filters = []; }; ASSetPropFlags(_global.ScreenArea.prototype, null, 1); } #endinitclip } movieClip 1973 __Packages.TaskSlot { #initclip if (!_global.TaskSlot) { var v1 = function () { super(); this.back.hiliter._visible = false; this.back.stop(); this.selector.stop(); this.selector._visible = false; this.onRollOver = mx.utils.Delegate.create(this, function () { this.hilite(); }); this.onDragOver = this.onRollOver; this.onRollOut = this.dehilite; this.onDragOut = this.onRollOut; this.selected = false; this.hilited = false; }; _global.TaskSlot = v1; _global.TaskSlot extends MovieClip; var v2 = v1.prototype; v2.init = function (id_, cb_) { this.onRelease = function () { if (this.enabled) { (Core.Get()).playSound('button_click'); } cb_(id_); }; }; v2.setCaption = function (text_) { this.caption.text = text_; }; v2.setState = function (state_) { this.back.gotoAndStop(state_); }; v2.hilite = function () { this.hilited = true; this.back.hiliter._visible = true; }; v2.dehilite = function () { this.hilited = false; this.back.hiliter._visible = false; }; v2.select = function () { this.selector.gotoAndPlay(1); this.selector._visible = true; this.selected = true; }; v2.deselect = function () { this.selector.stop(); this.selector._visible = false; this.selected = false; }; v2.disable = function () { if (!this.enabled) { return undefined; } if (this.selected) { this.back.hiliter._visible = true; } else { this.filters = [Filters.Blur()]; } this.enabled = false; }; v2.enable = function () { if (this.enabled) { return undefined; } if (this.selected) { this.back.hiliter._visible = false; } else { this.filters = []; } this.enabled = true; }; ASSetPropFlags(_global.TaskSlot.prototype, null, 1); } #endinitclip } movieClip 1974 __Packages.BattleSlot { #initclip if (!_global.BattleSlot) { var v1 = function () { super(); this.enemy = false; this.max_hp = 1; this.cur_hp = 0; this.max_action = 1; this.cur_action = 0; this.max_energy = 1; this.cur_energy = 0; this.action.stop(); this.energy.stop(); this.shadow._visible = false; this.attacking = false; this.dying = false; this.running = false; this.running_back = false; this.animation = 0; this.hideStats(); this.hideControls(); this.weapon = 0; this.armor = -1; this.device = -1; this.data = null; this.id = -1; this.char_id = -1; this.defending = false; this.base_pos = new Pair(this._x, this._y); this.run_to = null; this.exp = 0; this.band = ''; this.level = 1; this.hilited = false; this.buff = {}; this.debuff = {}; this.timed_buff = {}; this.timed_debuff = {}; this.device_mp = 0; }; _global.BattleSlot = v1; _global.BattleSlot extends MovieClip; var v2 = v1.prototype; v2.initPlayer = function (id_, onAtk_, onDef_, onDev_, onInv_, onCancel_) { this.id = id_; this.controls.attack.onRelease = function () { onAtk_(id_); }; this.controls.defend.onRelease = function () { onDef_(id_); }; this.controls.device.onRelease = function () { onDev_(id_); }; this.controls.useitem.onRelease = function () { onInv_(id_); }; this.controls.cancel.onRelease = function () { onCancel_(id_); }; this.onKeyDown = mx.utils.Delegate.create(this, this.onKeyDown); Key.addListener(this); }; v2.onKeyDown = function () { if (this.isEnemy() || !this.hilited) { return undefined; } if (Key.isDown(ex.ord('A')) && this.controls.attack._visible && this.controls.attack.enabled) { this.controls.attack.onRelease(); } if (Key.isDown(32) && this.controls.defend._visible && this.controls.defend.enabled) { this.controls.defend.onRelease(); } if (Key.isDown(ex.ord('D')) && this.controls.device._visible && this.controls.device.enabled) { this.controls.device.onRelease(); } if ((Key.isDown(ex.ord('U')) || Key.isDown(ex.ord('I'))) && this.controls.useitem._visible && this.controls.useitem.enabled) { this.controls.useitem.onRelease(); } if (Key.isDown(27) && this.controls.cancel._visible && this.controls.cancel.enabled) { this.controls.cancel.onRelease(); } }; v2.initSlot = function (id_, onEnter_, onLeave_, onClick_) { this.unit.onRollOver = function () { onEnter_(id_); }; this.unit.onDragOver = this.unit.onRollOver; this.unit.onRollOut = function () { onLeave_(id_); }; this.unit.onDragOut = this.unit.onRollOut; this.unit.onRelease = function () { onClick_(id_); }; this.id = id_; this.disable(); }; v2.initStats = function (src_) { this.data = {}; this.data.vit = src_.vit; this.data.acc = src_.acc; this.data.def = src_.def; this.data.dgr = src_.dgr; this.data.tch = src_.tch; this.data.med = src_.med; this.data.lck = src_.lck; }; v2.setPlayer = function (id_) { this.enemy = false; if (id_ == -1) { return undefined; } this.initStats((Core.Get()).game.stats[id_]); this.level = (Core.Get()).game.stats[id_].level; var v2 = (Core.Get()).game.equipment[id_]; if (v2.weapon != -1) { this.weapon = v2.weapon; } this.armor = v2.armor; if (v2.device >= 0) { var v4 = (Core.Get()).world.items[v2.device]; if (v4.type2 != EWeapon.PASSIVE) { this.device = v2.device; this.device_mp = v4.energy; } else { this.addPassiveDeviceEffect(v2.device); } } this.setUnit('bu_char', id_ + 1); this.shadow._visible = true; if ((Core.Get()).world.items[this.weapon].type3 != EItemType.PSI) { this.unit.setWeapon(this.weapon); } else { this.unit.setWeapon(0); } this.initData(); this.char_id = id_; this.initPerkEffect(); this.hideNumbers(); }; v2.setEnemy = function (id_, level_) { this.enemy = true; if (!id_.length) { return undefined; } var v3 = (Core.Get()).world.enemy[id_]; if (v3 == undefined) { Log.Err('Invalid Enemy Code'); return undefined; } this.creature = id_; this.band = id_.charAt(0); this.level = level_; this.initStats(v3); this.data.vit += Math.round((Math.min(10, this.data.vit) / 2) * (level_ - 1)); this.data.def += Math.round((Math.min(10, this.data.def) / 2) * (level_ - 1)); this.data.acc += Math.round((Math.min(10, this.data.acc) / 2) * (level_ - 1)); this.data.dgr += Math.round((Math.min(10, this.data.dgr) / 2) * (level_ - 1)); this.data.tch += Math.round((Math.min(10, this.data.tch) / 2) * (level_ - 1)); this.data.med += Math.round((Math.min(10, this.data.med) / 2) * (level_ - 1)); this.data.lck += Math.round((Math.min(10, this.data.lck) / 2) * (level_ - 1)); this.exp = 0; this.exp += this.data.vit; this.exp += this.data.def; this.exp += this.data.acc; this.exp += this.data.dgr; this.exp += this.data.tch; this.exp += this.data.med; this.exp += this.data.lck; this.weapon = this.chooseWeapon(v3.weapon, level_); if (v3.device >= 0) { var v4 = (Core.Get()).world.items[v3.device]; if (level_ >= v4.level) { if (v4.type2 != EWeapon.PASSIVE) { this.device_mp = v4.energy; if (v4.energy <= this.data.tch * 2) { this.device = v3.device; } } else { this.addPassiveDeviceEffect(v3.device); } } } this.setUnit('bu_enemy', v3.frame); this.shadow._visible = true; this.unit.setWeapon(this.weapon); this.initData(); this.hideNumbers(); }; v2.hideNumbers = function () { this.hp.caption._visible = false; this.hp.def_caption._visible = false; this.action.caption._visible = false; this.energy.caption._visible = false; }; v2.chooseWeapon = function (type_, level_) { if (level_ >= 10) { level_ -= 2; } var v3 = []; switch (type_) { case EItemType.MELEE: if (21 <= level_) { v3.push(9); } if (18 <= level_) { v3.push(8); } if (12 <= level_ && level_ < 21) { v3.push(7); } if (10 <= level_ && level_ < 15) { v3.push(6); } if (5 <= level_ && level_ < 10) { v3.push(5); } if (4 <= level_ && level_ < 10) { v3.push(4); } if (3 <= level_ && level_ < 8) { v3.push(3); } if (level_ < 4) { v3.push(2); } if (level_ < 3) { v3.push(1); } break; case EItemType.PISTOL: if (20 <= level_) { v3.push(21); } if (18 <= level_) { v3.push(20); } if (15 <= level_ && level_ < 20) { v3.push(19); } if (13 <= level_ && level_ < 18) { v3.push(18); } if (10 <= level_ && level_ < 15) { v3.push(17); } if (8 <= level_ && level_ < 13) { v3.push(16); } if (7 <= level_ && level_ < 12) { v3.push(15); } if (5 <= level_ && level_ < 10) { v3.push(14); } if (4 <= level_ && level_ < 9) { v3.push(13); } if (level_ < 7) { v3.push(12); } if (level_ < 7) { v3.push(11); } break; case EItemType.SMG: if (15 <= level_) { v3.push(29); } if (14 <= level_) { v3.push(28); } if (12 <= level_ && level_ < 17) { v3.push(27); } if (10 <= level_ && level_ < 15) { v3.push(26); } if (7 <= level_ && level_ < 12) { v3.push(25); } if (3 <= level_ && level_ < 8) { v3.push(24); } if (level_ < 7) { v3.push(23); } break; case EItemType.SHOTGUN: if (22 <= level_) { v3.push(36); } if (18 <= level_ && level_ < 23) { v3.push(35); } if (14 <= level_ && level_ < 19) { v3.push(34); } if (10 <= level_ && level_ < 15) { v3.push(33); } if (8 <= level_ && level_ < 13) { v3.push(32); } if (level_ < 9) { v3.push(31); } break; case EItemType.HEAVY: if (20 <= level_) { v3.push(43); } if (18 <= level_ && level_ < 23) { v3.push(42); } if (15 <= level_ && level_ < 20) { v3.push(41); } if (12 <= level_ && level_ < 17) { v3.push(40); } if (9 <= level_ && level_ < 14) { v3.push(39); } if (level_ < 10) { v3.push(38); } break; case EItemType.ASSAULT: if (19 <= level_) { v3.push(49); } if (14 <= level_ && level_ < 21) { v3.push(48); } if (10 <= level_ && level_ < 16) { v3.push(47); } if (level_ < 12) { v3.push(46); } if (level_ < 12) { v3.push(45); } break; case EItemType.GLAUNCHER: if (14 <= level_) { v3.push(52); } if (level_ < 14) { v3.push(51); } break; case EItemType.RLAUNCHER: if (21 <= level_) { v3.push(57); } if (level_ < 21) { v3.push(54); } break; case EItemType.SNIPER: if (level_ >= 19) { return 63; } if (16 <= level_ && level_ < 21) { v3.push(62); } if (13 <= level_ && level_ < 18) { v3.push(61); } if (10 <= level_ && level_ < 15) { v3.push(60); } if (5 <= level_ && level_ < 10) { v3.push(59); } if (level_ < 6) { v3.push(58); } break; case EItemType.PSI: if (this.level >= 25) { return 166; } if (this.level >= 20) { return 165; } if (this.level >= 10) { return 164; } return 163; } if (v3.length) { return ex.selectRandom(v3); } else { return 0; } }; v2.setUnit = function (name_, id_) { this.unit_ori.attachMovie(name_, 'body', 1); this.unit = this.unit_ori.body; this.unit.setUnit(id_); this.unit.switchToStand(); }; v2.initData = function () { this.calcSecondaryStats(); this.initHP(this.max_hp); this.initAction((Core.Get()).world.items[this.weapon].ap); if (this.device != -1) { this.initEnergy(this.max_energy, Math.round(this.max_energy / 2)); } this.syncAC(); }; v2.calcSecondaryStats = function () { this.max_hp = 20 + this.data.vit; this.base_dr = this.data.def * 0.1; if (this.armor >= 0) { this.base_dr += (Core.Get()).world.items[this.armor].dr; } this.to_hit = (70 + this.data.acc) / 100; this.crit_chance = this.data.acc * 0.4 / 100; this.dmg_k = (100 + this.data.dgr) / 100; this.energy_regen = 1; this.dev_dmg_k = this.data.tch; this.heal_power = this.data.med; this.heal_power_device = this.data.tch; this.drop_chance = this.data.lck * 0.25 / 100; this.crit_chance += this.data.lck * 0.2 / 100; this.evasion_chance = (10 + this.data.lck * 0.2) / 100; if (this.device != -1) { this.max_energy = 2 * this.data.tch; } }; v2.initHP = function (max_hp_, cur_hp_) { this.hp._visible = true; this.max_hp = max_hp_; if (cur_hp_ == undefined) { cur_hp_ = max_hp_; } this.cur_hp = cur_hp_; this.syncHP(); }; v2.syncHP = function () { this.hp.green_bar._xscale = 100 * this.cur_hp / this.max_hp; var v2 = Math.round(this.cur_hp); if (v2 == 0 && this.cur_hp > 0) { v2 = 1; } this.hp.caption.text = v2; if (0 == this.cur_hp) { this.hp.caption._visible = false; this.hp.def_caption._visible = false; } }; v2.calcDR = function () { var v2 = this.base_dr; v2 *= 1 + this.getBuff('perk_feather_dr'); v2 += this.getBuff('dev_dr'); v2 -= this.getDebuff('dev_minus_dr'); v2 -= this.getDebuff('dev_minus_dr_alien'); v2 -= this.getDebuff('dev_minus_dr_hell'); v2 += this.getBuff('perk_lexic_dr'); if (v2 < 0) { v2 = 0; } v2 *= 1 - this.getBuff('perk_hell_minus_dr'); v2 *= 1 + this.getBuff('dev_dr2'); v2 *= 1 + this.getBuff('dev_dr_alien'); if (this.defending) { v2 *= 1.3; v2 += this.getBuff('dev_defend'); } return v2; }; v2.syncAC = function () { this.hp.def_caption.text = Math.round(this.calcDR()); }; v2.initAction = function (max_ap_) { this.action._visible = true; this.max_action = max_ap_; this.cur_action = 0; this.syncAction(); }; v2.syncAction = function () { var v2 = this.cur_action; if (v2 > this.max_action) { v2 = this.max_action; } var v3 = 1 + Math.floor(10 * v2 / this.max_action); this.action.gotoAndStop(v3); this.action.caption.text = this.cur_action; }; v2.isReady = function () { return this.cur_action >= this.max_action; }; v2.initEnergy = function (max_mp_, cur_mp_) { this.energy._visible = true; this.max_energy = max_mp_; this.cur_energy = cur_mp_; this.syncEnergy(); }; v2.syncEnergy = function () { var v2 = 1 + Math.floor(10 * this.cur_energy / this.max_energy); this.energy.gotoAndStop(v2); this.energy.caption.text = this.cur_energy; }; v2.startTurn = function () { this.defending = false; this.removeBuff('dev_defend'); this.syncAC(); if (this.getBuff('perk_key_double_atk')) { this.incBuffEffect('repeat_attack'); } if (this.getBuff('dev_dbl_atk')) { this.incBuffEffect('repeat_attack'); } if (this.getBuff('repeat_attack')) { this.incBuffEffect('repeat_attack'); } if (this.getBuff('dev_charge_dmg')) { this.buff.charge_dmg = this.buff.dev_charge_dmg; this.removeBuff('dev_charge_dmg'); } if (this.getBuff('perk_kage_extra_turn') && ex.testChance(this.getBuff('perk_kage_extra_turn'))) { this.incBuffEffect('extra_turn'); } if (this.getBuff('perk_nina_rage') && this.cur_hp < 0.3 * this.max_hp) { this.buff.perk_nina_sure_crit = 1; } }; v2.endTurn = function () { this.removeBuff('repeat_attack'); this.removeBuff('charge_dmg'); this.removeBuff('perk_nina_sure_crit'); }; v2.attack = function () { if (!this.isAlive) { Log.Err('BattleSlot::attack() : Is dead!'); } this.unit.switchToAttack(); (Core.Get()).playSound((Core.Get()).world.items[this.weapon].snd, this.enemy ? 1 : -1); this.attacking = true; this.animation = BattleSlot.time_attack; }; v2.defend = function () { (Core.Get()).playSound('snd_dev_buff', this.enemy ? 1 : -1); this.doEffect('effect_defend'); this.animation = BattleSlot.time_defend; this.removeBuff('extra_turn'); this.defending = true; this.syncAC(); this.resetAction(); this.endTurn(); }; v2.defendNoReset = function () { this.doEffect('effect_defend'); this.animation = BattleSlot.time_defend; this.defending = true; this.syncAC(); this.endTurn(); }; v2.useItem = function (item_) { switch ((Core.Get()).world.items[item_].type3) { case EItemType.GRENADE: (Core.Get()).playSound('snd_wp_grenade', this.enemy ? 1 : -1); break; case EItemType.MEDIKIT: (Core.Get()).playSound('snd_wp_medikit', this.enemy ? 1 : -1); } this.resetAction(); this.endTurn(); }; v2.checkDevice = function () { if (this.max_energy < this.device_mp) { this.energy._visible = false; this.device = -1; } }; v2.useDevice = function () { this.animation = BattleSlot.time_use_device; (Core.Get()).playSound((Core.Get()).world.items[this.device].snd, this.enemy ? 1 : -1); this.doEffect('effect_use_device'); this.cur_energy -= this.device_mp; this.syncEnergy(); if (this.device == 121 || this.device == 124 || this.device == 138) { return undefined; } this.resetAction(); this.endTurn(); }; v2.canUseDevice = function () { return this.cur_energy >= this.device_mp; }; v2.tryHitDevice = function (device_) { switch (device_) { return true; case 128: return ex.testChance(0.5); case 129: return ex.testChance(0.6); } return true; }; v2.getDeviceDamage = function () { var v2 = 0; var v4 = 0; var v3 = 0; switch (this.device) { var v5 = v2 + ex.randomFloatIn(v4, v3) * this.dev_dmg_k; v5 *= 1 + this.getBuff('perk_karry_dmg_device'); return v5; case 80: v2 = 20; v4 = 0.4; v3 = 0.8; var v5 = v2 + ex.randomFloatIn(v4, v3) * this.dev_dmg_k; v5 *= 1 + this.getBuff('perk_karry_dmg_device'); return v5; case 81: v2 = 15; v4 = 0.2; v3 = 0.4; var v5 = v2 + ex.randomFloatIn(v4, v3) * this.dev_dmg_k; v5 *= 1 + this.getBuff('perk_karry_dmg_device'); return v5; case 82: v2 = 5; v4 = 0.2; v3 = 0.4; var v5 = v2 + ex.randomFloatIn(v4, v3) * this.dev_dmg_k; v5 *= 1 + this.getBuff('perk_karry_dmg_device'); return v5; case 83: v2 = 5; v4 = 0.05; v3 = 0.15; var v5 = v2 + ex.randomFloatIn(v4, v3) * this.dev_dmg_k; v5 *= 1 + this.getBuff('perk_karry_dmg_device'); return v5; case 114: v2 = 30; var v5 = v2 + ex.randomFloatIn(v4, v3) * this.dev_dmg_k; v5 *= 1 + this.getBuff('perk_karry_dmg_device'); return v5; case 116: v2 = 15; v4 = 0.4; v3 = 0.6; var v5 = v2 + ex.randomFloatIn(v4, v3) * this.dev_dmg_k; v5 *= 1 + this.getBuff('perk_karry_dmg_device'); return v5; case 117: v2 = 30; v4 = 0.7; v3 = 1.3; var v5 = v2 + ex.randomFloatIn(v4, v3) * this.dev_dmg_k; v5 *= 1 + this.getBuff('perk_karry_dmg_device'); return v5; case 128: v2 = 20; v4 = 0.4; v3 = 0.8; var v5 = v2 + ex.randomFloatIn(v4, v3) * this.dev_dmg_k; v5 *= 1 + this.getBuff('perk_karry_dmg_device'); return v5; case 135: v2 = 25; v4 = 0.7; v3 = 1.3; var v5 = v2 + ex.randomFloatIn(v4, v3) * this.dev_dmg_k; v5 *= 1 + this.getBuff('perk_karry_dmg_device'); return v5; case 136: v2 = 20; v4 = 0.2; v3 = 0.4; var v5 = v2 + ex.randomFloatIn(v4, v3) * this.dev_dmg_k; v5 *= 1 + this.getBuff('perk_karry_dmg_device'); return v5; case 137: v2 = 150; var v5 = v2 + ex.randomFloatIn(v4, v3) * this.dev_dmg_k; v5 *= 1 + this.getBuff('perk_karry_dmg_device'); return v5; case 138: v2 = 0; v4 = 0.8; v3 = 1; var v5 = v2 + ex.randomFloatIn(v4, v3) * this.dev_dmg_k; v5 *= 1 + this.getBuff('perk_karry_dmg_device'); return v5; } var v5 = v2 + ex.randomFloatIn(v4, v3) * this.dev_dmg_k; v5 *= 1 + this.getBuff('perk_karry_dmg_device'); return v5; }; v2.getDeviceHeal = function () { var v2 = 0; var v3 = 0; switch (this.device) { var v4 = ex.randomIntIn(v2, v3); return Math.min(this.heal_power_device, v4); case 108: v2 = 10; v3 = 30; var v4 = ex.randomIntIn(v2, v3); return Math.min(this.heal_power_device, v4); case 109: v2 = 40; v3 = 80; var v4 = ex.randomIntIn(v2, v3); return Math.min(this.heal_power_device, v4); case 110: v2 = 80; v3 = 120; var v4 = ex.randomIntIn(v2, v3); return Math.min(this.heal_power_device, v4); } var v4 = ex.randomIntIn(v2, v3); return Math.min(this.heal_power_device, v4); }; v2.doEffect = function (effect_) { this.attachMovie(effect_, '', this.getNextHighestDepth()); }; v2.tick = function () { var v3 = 1; v3 *= 1 + this.getBuff('dev_ap_regen'); v3 *= 1 + this.getBuff('perk_kat_ap_regen'); if (this.getBuff('perk_nina_aggr') && this.cur_hp < 0.5 * this.max_hp) { v3 *= 1 + this.getBuff('perk_nina_aggr'); } v3 *= 1 + this.getBuff('perk_hell_ap_regen'); v3 *= 1 - this.getDebuff('dev_minus_ap_regen'); v3 *= 1 - this.getDebuff('dev_minus_ap_regen_alien'); this.cur_action += v3; this.syncAction(); if (this.device != -1 && this.cur_energy < this.max_energy) { var v5 = this.energy_regen; v5 *= 1 + this.getBuff('perk_feather_ep_regen'); this.cur_energy += v5; this.syncEnergy(); } for (var v4 in this.timed_buff) { --this.timed_buff[v4]; if (0 >= this.timed_buff[v4]) { this.timed_buff[v4] = undefined; this.buff[v4] = undefined; } } for (v4 in this.timed_debuff) { --this.timed_debuff[v4]; if (0 >= this.timed_debuff[v4]) { if (v4 == 'dev_venom_hit') { this.takeDamage(ex.randomIntIn(3, 5), EHit.POISON); this.syncHP(); var v2 = this.getDebuff('dev_venom'); if (v2) { this.timed_debuff.dev_venom_hit = v2; } continue; } if (v4 == 'dev_venom2_hit') { this.takeDamage(ex.randomIntIn(10, 20), EHit.POISON); this.syncHP(); v2 = this.getDebuff('dev_venom2'); if (v2) { this.timed_debuff.dev_venom2_hit = v2; } continue; } if (v4 == 'dev_venom3_hit') { this.takeDamage(ex.randomIntIn(3, 5), EHit.POISON); this.syncHP(); v2 = this.getDebuff('dev_venom3'); if (v2) { this.timed_debuff.dev_venom3_hit = v2; } continue; } if (v4 == 'dev_fire_hit') { this.takeDamage(ex.randomIntIn(5, 10), EHit.POISON); this.syncHP(); v2 = this.getDebuff('dev_fire'); if (v2) { this.timed_debuff.dev_fire_hit = v2; } continue; } this.timed_debuff[v4] = undefined; this.debuff[v4] = undefined; } } this.cur_hp += this.getBuff('perk_kurt_hp_regen'); this.syncHP(); }; v2.updateAnimation = function () { if (0 == this.animation) { return false; } --this.animation; if (this.running && !this.attacking || this.running_back) { var v3 = this.run_to.x + (this.run_from.x - this.run_to.x) * this.animation / BattleSlot.time_run; var v2 = this.run_to.y + (this.run_from.y - this.run_to.y) * this.animation / BattleSlot.time_run; this._x = v3; this._y = v2; } if (this.dying) { this.unit.updateDying(1 - this.animation / BattleSlot.time_die); } if (0 == this.animation) { if (this.attacking) { this.attacking = false; this.unit.switchToStand(); if (this.getBuff('repeat_attack')) { this.decBuffEffect('repeat_attack'); } if (!this.getBuff('repeat_attack')) { this.resetAction(); if (this.running) { this.running = false; this.runBack(); } else { this.endTurn(); } } return 0 < this.animation; } if (this.running) { return 0 < this.animation; } if (this.running_back) { this.running_back = false; this.unhideStats(); this.endTurn(); return 0 < this.animation; } if (this.dying) { this.dying = false; this.unit.switchToDead(); this.hp._visible = false; return 0 < this.animation; } this.unit.switchToStand(); this.syncHP(); } return 0 < this.animation; }; v2.isEnemy = function () { return this.enemy; }; v2.spawnHit = function (type_, value_) { var v3 = (EHit.HEAL == type_) ? 'bs_heal' : 'bs_hit'; var v4 = this.hit_ori.attachMovie(v3, '', this.hit_ori.getNextHighestDepth()); var v2 = v4.inner; switch (type_) { case EHit.DAMAGE: v2.crit._visible = false; case EHit.CRITICAL: v2.miss._visible = false; v2.dodge._visible = false; v2.immune._visible = false; v2.damage.text = value_; break; case EHit.MISS: v2.crit._visible = false; v2.damage._visible = false; v2.dodge._visible = false; v2.immune._visible = false; break; case EHit.DODGE: v2.crit._visible = false; v2.damage._visible = false; v2.miss._visible = false; v2.immune._visible = false; break; case EHit.HEAL: v2.damage.text = value_; break; case EHit.IMMUNE: v2.crit._visible = false; v2.damage._visible = false; v2.miss._visible = false; v2.dodge._visible = false; } }; v2.takeDamage = function (amount_, crit_) { switch (crit_) { case EHit.IMMUNE: this.spawnHit(crit_, Math.round(amount_)); return 0; case EHit.HEAL: this.spawnHit(crit_, Math.round(amount_)); this.cur_hp += amount_; if (this.cur_hp > this.max_hp) { this.cur_hp = this.max_hp; } this.animation = BattleSlot.time_hit; return amount_; case EHit.DISCHARGE: if (this.device >= 0) { this.cur_energy -= amount_; if (this.cur_energy < 0) { this.cur_energy = 0; } this.syncEnergy(); } return amount_; case EHit.RECHARGE: if (this.device >= 0) { this.cur_energy += amount_; if (this.cur_energy > this.max_energy) { this.cur_energy = this.max_energy; } this.syncEnergy(); } return amount_; case EHit.DRAIN_AP: this.cur_action -= amount_; if (this.cur_action < 0) { this.cur_action = 0; } this.syncAction(); return amount_; case EHit.POISON: this.spawnHit(EHit.DAMAGE, Math.round(amount_)); break; case EHit.DAMAGE: case EHit.CRITICAL: var v4 = this.calcDR(); if (EHit.CRITICAL == crit_) { v4 /= 2; } amount_ -= v4; if (amount_ < 0) { amount_ = 0; } this.spawnHit(crit_, Math.round(amount_)); break; default: Log.Err('Invalid damage'); } this.cur_hp -= amount_; if (this.cur_hp < 0) { this.cur_hp = 0; } if (!this.cur_hp) { if (this.getBuff('perk_lexic_extra_life') && ex.testChance(this.getBuff('perk_lexic_extra_life'))) { (Core.Get()).playSound('snd_dev_heal', this.enemy ? 1 : -1); this.cur_hp = this.max_hp / 2; this.syncHP(); this.cur_action = this.max_action; this.syncAction(); } } if (crit_ != EHit.POISON) { this.unit.switchToHurt(); this.animation = BattleSlot.time_hit; } return amount_; }; v2.regenHP = function (heal_) { this.takeDamage(heal_, EHit.HEAL); this.syncHP(); }; v2.isAlive = function () { return this.cur_hp > 0; }; v2.die = function () { if (this.animation) { Log.Err('BattleSlot::die() : Is in animation'); } this.unit.switchToDying(); (Core.Get()).playSound('die', this.enemy ? 1 : -1); this.dying = true; this.animation = BattleSlot.time_die; this.shadow._visible = false; this.action._visible = false; this.energy._visible = false; }; v2.showControls = function () { this.resetControls(); this.controls._visible = true; }; v2.hideControls = function () { this.controls._visible = false; }; v2.activateControls = function () { this.controls.attack._visible = false; this.controls.defend._visible = false; this.controls.device._visible = false; this.controls.useitem._visible = false; this.controls.cancel._visible = true; }; v2.resetControls = function () { this.controls.attack._visible = true; this.controls.defend._visible = true; if (this.device != -1) { this.controls.device._visible = true; var v2 = this.canUseDevice(); this.controls.device.enabled = v2; this.controls.device._alpha = v2 ? 100 : 50; } else { this.controls.device._visible = false; } this.controls.useitem._visible = true; this.controls.cancel._visible = false; }; v2.select = function () { this.showControls(); this.hilite(); }; v2.deselect = function () { this.hideControls(); }; v2.hilite = function () { this.unit.filters = [Filters.Glow(this.enemy ? 16711680 : 65280)]; this.hilited = true; }; v2.dehilite = function () { this.unit.filters = []; this.hilited = false; }; v2.hiliteHeal = function () { if (!this.enemy) { if (this.hilited) { this.unit.filters = [Filters.GlowMedium(65280), Filters.GlowMedium(16711833)]; } else { this.unit.filters = [Filters.Glow(16711833)]; } } }; v2.dehiliteHeal = function () { if (!this.enemy) { if (this.hilited) { this.unit.filters = [Filters.Glow(65280)]; } else { this.unit.filters = []; } } }; v2.enable = function () { this.unit.enabled = true; this.unit.useHandCursor = true; Mouse.hide(); Mouse.show(); if (this.unit.hitTest(_root._xmouse, _root._ymouse, true)) { this.unit.onRollOver(); } }; v2.disable = function () { this.unit.enabled = false; this.unit.useHandCursor = false; Mouse.hide(); Mouse.show(); this.dehilite(); if (this.controls._visible) { this.hilite(); } }; v2.resetAction = function () { if (this.getBuff('extra_turn')) { this.decBuffEffect('extra_turn'); return undefined; } this.cur_action -= this.max_action; if (this.cur_action < 0) { this.cur_action = 0; } this.syncAction(); }; v2.resetEnergy = function () { this.cur_energy = 0; this.syncEnergy(); }; v2.tryAttack = function () { if (this.getBuff('dev_sure_hit')) { return true; } var v2 = true; if (this.getBuff('dekkis_special')) { v2 = true; } else { v2 = Math.random() < this.to_hit; } if (!v2) { this.spawnHit(EHit.MISS); } return v2; }; v2.tryHit = function () { var v2 = this.evasion_chance; v2 += this.getBuff('dev_eva'); v2 += this.getBuff('perk_kat_eva'); v2 += this.getBuff('perk_kraven_eva_1'); v2 += this.getBuff('perk_kraven_eva_2'); if (v2 > 0.75) { v2 = 0.75; } var v3 = Math.random() < v2; if (v3) { this.spawnHit(EHit.DODGE); } return !v3; }; v2.getDamage = function () { if (this.getBuff('dekkis_special')) { return this.getDeviceDamage(); } if (this.weapon < 0) { Log.Err('BattleSlot::getDamage() : No Weapon'); } var v3 = (Core.Get()).world.items[this.weapon]; var v2 = ex.randomIntIn(v3.dmg_min, v3.dmg_max); v2 += this.getBuff('perk_lexic_bonus_dmg'); v2 *= this.dmg_k; v2 *= 1 + this.getBuff('dev_dmg'); v2 *= 1 + this.getBuff('charge_dmg'); v2 *= 1 - this.getBuff('vr_attack_minus_dmg'); v2 *= 1 + this.getBuff('perk_grid_dmg'); v2 *= 1 + this.getBuff('perk_key_dmg'); v2 *= 1 + this.getBuff('perk_kurt_accum_dmg_bonus'); v2 *= 1 + this.getBuff('perk_kurt_dmg'); v2 *= 1 + this.getBuff('perk_karry_dmg_weapon'); v2 *= 1 + this.getBuff('perk_kage_dmg'); v2 *= 1 + this.getBuff('perk_nina_dmg'); v2 *= 1 + this.getBuff('perk_hell_dmg'); return v2; }; v2.getCritDamage = function () { if (this.getBuff('dekkis_special')) { return this.getDeviceDamage(); } if (this.weapon < 0) { Log.Err('BattleSlot::getDamage() : No Weapon'); } var v3 = (Core.Get()).world.items[this.weapon]; var v2 = ex.randomIntIn((v3.dmg_min + v3.dmg_max) / 2, v3.dmg_max); v2 += this.getBuff('perk_lexic_bonus_dmg'); v2 *= this.dmg_k; v2 *= 1 + this.getBuff('dev_dmg'); v2 *= 1 + this.getBuff('charge_dmg'); v2 *= 1 - this.getBuff('vr_attack_minus_dmg'); v2 *= 1 + this.getBuff('perk_grid_dmg'); v2 *= 1 + this.getBuff('perk_key_dmg'); v2 *= 1 + this.getBuff('perk_kurt_accum_dmg_bonus'); v2 *= 1 + this.getBuff('perk_kurt_dmg'); v2 *= 1 + this.getBuff('perk_karry_dmg_weapon'); v2 *= 1 + this.getBuff('perk_kage_dmg'); v2 *= 1 + this.getBuff('perk_nina_dmg'); v2 *= 1 + this.getBuff('perk_hell_dmg'); v2 += this.getBuff('perk_grid_crit_dmg'); return v2; }; v2.getBestDamage = function () { if (this.weapon < 0) { Log.Err('BattleSlot::getDamage() : No Weapon'); } var v3 = (Core.Get()).world.items[this.weapon]; var v2 = v3.dmg_max; v2 += this.getBuff('perk_lexic_bonus_dmg'); v2 *= this.dmg_k; v2 *= 1 + this.getBuff('dev_dmg'); v2 *= 1 + this.getBuff('charge_dmg'); v2 *= 1 - this.getBuff('vr_attack_minus_dmg'); v2 *= 1 + this.getBuff('perk_grid_dmg'); v2 *= 1 + this.getBuff('perk_key_dmg'); v2 *= 1 + this.getBuff('perk_kurt_accum_dmg_bonus'); v2 *= 1 + this.getBuff('perk_kurt_dmg'); v2 *= 1 + this.getBuff('perk_karry_dmg_weapon'); v2 *= 1 + this.getBuff('perk_kage_dmg'); v2 *= 1 + this.getBuff('perk_nina_dmg'); v2 *= 1 + this.getBuff('perk_hell_dmg'); return v2; }; v2.getItemDamage = function (item_) { var v2 = (Core.Get()).world.items[item_]; var v3 = ex.randomIntIn(v2.dmg_min, v2.dmg_max); if (v2.type3 == EItemType.GRENADE) { v3 *= 1 + this.getBuff('dev_gren'); } return v3; }; v2.getItemHeal = function (item_) { var v3 = (Core.Get()).world.items[item_]; var v2 = v3.heal; if (v3.recharge) { return v2; } v2 *= 1 + this.getBuff('perk_feather_heal'); return Math.min(this.heal_power, v2); }; v2.isCritical = function () { var v2 = this.crit_chance; v2 += this.getBuff('perk_grid_crit_chance'); return Math.random() < v2; }; v2.runTo = function (trg_) { this.running = true; this.run_from = this.base_pos.clone(); this.run_to = trg_.base_pos.clone(); var v2 = 40; if (this.enemy) { this.run_to.x += v2; } else { this.run_to.x -= v2; } this.animation = BattleSlot.time_run; this.hideStats(); }; v2.runBack = function () { this.running_back = true; var v2 = this.run_from; this.run_from = this.run_to; this.run_to = v2; this.animation = BattleSlot.time_run_back; }; v2.hideStats = function () { this.hp._visible = false; this.action._visible = false; this.energy._visible = false; }; v2.unhideStats = function () { this.hp._visible = true; this.action._visible = true; if (this.device != -1) { this.energy._visible = true; } }; v2.isRunning = function () { return this.running; }; v2.explodeGrenade = function () { (Core.Get()).playSound('snd_wp_grenade1', this.enemy ? 1 : -1); this.animation = 10; }; v2.addPassiveDeviceEffect = function (device_) { var v2 = ''; var v3 = 1; switch (device_) { case 84: v2 = 'dev_gren'; v3 = 0.25; break; case 85: v2 = 'dev_gren'; v3 = 0.5; break; case 86: v2 = 'dev_gren'; v3 = 1; break; case 87: v2 = 'dev_ap_regen'; v3 = 0.1; break; case 88: v2 = 'dev_ap_regen'; v3 = 0.25; break; case 89: v2 = 'dev_ap_regen'; v3 = 0.5; break; case 96: v2 = 'dev_dmg'; v3 = 0.1; break; case 97: v2 = 'dev_dmg'; v3 = 0.25; break; case 98: v2 = 'dev_dmg'; v3 = 0.5; break; case 99: v2 = 'dev_vr'; v3 = 0.1; break; case 101: v2 = 'dev_dbl_atk'; break; case 102: v2 = 'dev_eva'; v3 = 0.3; break; case 111: v2 = 'dev_counter'; break; case 123: v2 = 'dev_sure_hit'; break; case 126: v2 = 'dev_mass_hp_regen'; v3 = 0.1; break; case 127: v2 = 'dev_hp_regen'; v3 = 0.3; } if (v2.length) { this.buff[v2] = v3; } }; v2.addDeviceEffect = function (device_) { switch (device_) { case 90: this.buff.dev_defend = 1; return undefined; case 91: this.buff.dev_defend = 2; return undefined; case 92: this.buff.dev_defend = 5; return undefined; case 93: this.incDebuffEffect('dev_minus_dr', 2); this.syncAC(); return undefined; case 94: this.incDebuffEffect('dev_minus_dr', 2); this.syncAC(); return undefined; case 95: this.incDebuffEffect('dev_minus_dr', 4); this.syncAC(); return undefined; case 100: this.incBuffEffect('dev_dr', 2); this.syncAC(); this.device_mp *= 2; this.checkDevice(); return undefined; case 103: if (this.getBuff('dev_eva')) { return undefined; } this.buff.dev_eva_2 = 0.3; this.timed_buff.dev_eva_2 = 30; return undefined; case 104: this.debuff.dev_venom = 3; this.timed_debuff.dev_venom = 30; if (undefined == this.timed_debuff.dev_venom_hit) { this.timed_debuff.dev_venom_hit = this.debuff.dev_venom; } return undefined; case 105: this.debuff.dev_venom2 = 3; this.timed_debuff.dev_venom2 = 30; if (undefined == this.timed_debuff.dev_venom2_hit) { this.timed_debuff.dev_venom2_hit = this.debuff.dev_venom2; } return undefined; case 106: this.debuff.dev_venom3 = 3; this.timed_debuff.dev_venom3 = 20; if (undefined == this.timed_debuff.dev_venom3_hit) { this.timed_debuff.dev_venom3_hit = this.debuff.dev_venom3; } return undefined; case 107: this.debuff = {}; this.timed_debuff = {}; return undefined; case 112: this.buff.dev_dr2 = 0.3; this.timed_buff.dev_dr2 = 60; return undefined; case 113: this.debuff.dev_minus_ap_regen = 0.25; this.timed_debuff.dev_minus_ap_regen = 60; return undefined; case 115: if (this.getBuff('dev_dr_alien') < 0.6) { this.incBuffEffect('dev_dr_alien', 0.2); } return undefined; case 116: if (this.getDebuff('dev_minus_ap_regen_alien') < 1) { this.incDebuffEffect('dev_minus_ap_regen_alien', 0.1); } return undefined; case 117: this.incDebuffEffect('dev_minus_dr_alien', 2); return undefined; case 119: this.debuff.dev_fire = 5; if (undefined == this.timed_debuff.dev_fire_hit) { this.timed_debuff.dev_fire_hit = this.debuff.dev_fire; } return undefined; case 121: this.buff.sure_crit = 1; return undefined; case 122: this.buff.dev_charge_dmg = 1; return undefined; case 124: this.buff.vr_attack = 1; this.buff.vr_attack_minus_dmg = 0; return undefined; case 125: if (this.device != 125) { this.cur_action = this.max_action; this.syncAction(); } return undefined; case 132: var v2 = 25; this.data.vit += v2; this.data.acc += v2; this.data.def += v2; this.data.dgr += v2; this.data.tch += v2; this.data.med += v2; this.data.lck += v2; this.calcSecondaryStats(); this.cur_hp += v2; this.syncHP(); this.syncAC(); this.syncEnergy(); return undefined; case 136: this.incDebuffEffect('dev_minus_dr_hell', 4); return undefined; case 138: this.buff.dekkis_special = 1; return undefined; } }; v2.getBuff = function (eff_) { return (this.buff[eff_] != undefined) ? this.buff[eff_] : 0; }; v2.getDebuff = function (eff_) { return (this.debuff[eff_] != undefined) ? this.debuff[eff_] : 0; }; v2.removeBuff = function (eff_) { this.buff[eff_] = undefined; }; v2.incDebuffEffect = function (eff_, value_) { if (this.debuff[eff_] == undefined) { this.debuff[eff_] = 0; } this.debuff[eff_] += value_; }; v2.incBuffEffect = function (eff_, value_) { if (undefined == value_) { value_ = 1; } if (this.buff[eff_] == undefined) { this.buff[eff_] = 0; } this.buff[eff_] += value_; }; v2.decBuffEffect = function (eff_, value_) { if (undefined == value_) { value_ = 1; } if (this.buff[eff_] == undefined) { Log.Err('Invalid Buff'); } this.buff[eff_] -= value_; }; v2.initPerkEffect = function () { var v2 = (Core.Get()).game.stats[this.char_id]; if (v2.perk1) { this.addPerkEffect(this.char_id, 0); } if (v2.perk2) { this.addPerkEffect(this.char_id, 1); } if (v2.perk3) { this.addPerkEffect(this.char_id, 2); } }; v2.addPerkEffect = function (char_, level_) { switch (char_) { case 0: switch (level_) { case 0: if ((Core.Get()).world.items[this.weapon].type3 == EItemType.PISTOL) { this.buff.perk_grid_dmg = 0.2; } return undefined; case 1: if ((Core.Get()).world.items[this.weapon].type3 == EItemType.PISTOL) { this.buff.perk_grid_crit_dmg = 10; } return undefined; case 2: if ((Core.Get()).world.items[this.weapon].type3 == EItemType.PISTOL) { this.buff.perk_grid_crit_chance = 20; } return undefined; } break; case 1: switch (level_) { case 0: this.buff.perk_key_crit_chance = 1; return undefined; case 1: if ((Core.Get()).world.items[this.weapon].type3 == EItemType.PISTOL) { this.buff.perk_key_dmg = 0.3; } return undefined; case 2: if ((Core.Get()).world.items[this.weapon].type3 == EItemType.PISTOL) { this.buff.perk_key_double_atk = 1; } return undefined; } break; case 2: switch (level_) { case 0: this.buff.perk_kat_eva = 0.15; return undefined; case 1: if ((Core.Get()).world.items[this.weapon].type3 == EItemType.SMG) { this.buff.perk_kat_mass_atk = 1; } return undefined; case 2: if ((Core.Get()).world.items[this.weapon].type3 == EItemType.SMG) { this.buff.perk_kat_ap_regen = 0.5; } return undefined; } break; case 3: break; case 4: switch (level_) { case 0: this.buff.perk_kurt_accum_dmg = 0.1; return undefined; case 1: this.buff.perk_kurt_hp_regen = 1; return undefined; case 2: if ((Core.Get()).world.items[this.weapon].type3 == EItemType.SHOTGUN) { this.buff.perk_kurt_dmg = 0.3; } return undefined; } break; case 5: switch (level_) { case 0: return undefined; case 1: return undefined; case 2: if ((Core.Get()).world.items[this.weapon].alien) { this.buff.perk_karry_dmg_weapon = 0.2; } if (this.device >= 0 && (Core.Get()).world.items[this.device].alien) { this.buff.perk_karry_dmg_device = 0.2; } return undefined; } break; case 6: switch (level_) { case 0: if ((Core.Get()).world.items[this.weapon].type3 == EItemType.MELEE) { this.buff.perk_kage_drain_ap = 1; } return undefined; case 1: this.buff.perk_kage_extra_turn = 0.15; return undefined; case 2: if ((Core.Get()).world.items[this.weapon].type3 == EItemType.MELEE) { this.buff.perk_kage_dmg = 0.5; } return undefined; } break; case 7: switch (level_) { case 0: this.buff.perk_lexic_dr = 2; this.syncAC(); return undefined; case 1: if ((Core.Get()).world.items[this.weapon].type3 == EItemType.RLAUNCHER || (Core.Get()).world.items[this.weapon].type3 == EItemType.GLAUNCHER) { this.buff.perk_lexic_bonus_dmg = 10; } return undefined; case 2: this.buff.perk_lexic_extra_life = 0.5; return undefined; } break; case 8: switch (level_) { case 0: this.buff.perk_kraven_eva_1 = 0.15; return undefined; case 1: if ((Core.Get()).world.items[this.weapon].type3 == EItemType.SNIPER) { this.max_action -= 3; } return undefined; case 2: this.buff.perk_kraven_eva_2 = 0.15; this.buff.melee_immune = 1; return undefined; } break; case 9: switch (level_) { case 0: this.buff.perk_feather_heal = 0.3; return undefined; case 1: if (this.weapon == 0) { this.buff.perk_feather_dr = 1; this.syncAC(); } return undefined; case 2: this.buff.perk_feather_ep_regen = 0.5; return undefined; } break; case 10: switch (level_) { case 0: this.buff.perk_nina_anger = 0.15; return undefined; case 1: this.buff.perk_nina_aggr = 0.1; return undefined; case 2: this.buff.perk_nina_rage = 1; return undefined; } break; case 11: switch (level_) { case 0: if (this.char_id != 11) { this.buff.perk_hell_minus_dr = 0.15; this.syncAC(); } return undefined; case 1: this.buff.perk_hell_dmg = 0.1; return undefined; case 2: this.buff.perk_hell_ap_regen = 0.25; return undefined; } } }; v1.time_run = 10; v1.time_attack = 20; v1.time_run_back = 10; v1.time_hit = 15; v1.time_die = 20; v1.time_use_device = 10; v1.time_defend = 10; ASSetPropFlags(_global.BattleSlot.prototype, null, 1); } #endinitclip } movieClip 1975 __Packages.BattleUnit { #initclip if (!_global.BattleUnit) { var v1 = function () { super(); this.stop(); this.weapon_id = 0; this.body.stop(); this.hand.stop(); }; _global.BattleUnit = v1; _global.BattleUnit extends MovieClip; var v2 = v1.prototype; v2.switchToStand = function () { this.gotoAndStop(1); this.weapon.gotoAndStop(1 + this.weapon_id); }; v2.switchToAttack = function () { this.gotoAndStop('attack'); this.weapon.gotoAndStop(1 + this.weapon_id); }; v2.switchToHurt = function () { this.gotoAndStop('hurt'); this.hit.gotoAndPlay('hit' + Math.floor(1 + Math.random() * 5)); }; v2.switchToDying = function () { this.gotoAndStop('dying'); var v2 = new flash.filters.BlurFilter(0, 0, 1); this.body.filters = [v2]; }; v2.updateDying = function (phase) { var v2 = this.body.filters[0]; v2.blurX = 64 * phase; this.body.filters = new Array(v2); }; v2.switchToDead = function () { this.gotoAndStop('dead'); }; v2.setUnit = function (i_) { this.body.gotoAndStop(i_); this.hand.gotoAndStop(i_); }; v2.setWeapon = function (i_) { this.weapon_id = i_; this.weapon.gotoAndStop(1 + i_); }; ASSetPropFlags(_global.BattleUnit.prototype, null, 1); } #endinitclip } movieClip 1976 __Packages.EHit { #initclip if (!_global.EHit) { var v1 = function () {}; _global.EHit = v1; var v2 = v1.prototype; v1.DAMAGE = 0; v1.CRITICAL = 1; v1.MISS = 2; v1.DODGE = 3; v1.HEAL = 4; v1.POISON = 5; v1.DISCHARGE = 6; v1.RECHARGE = 7; v1.DRAIN_AP = 8; v1.IMMUNE = 9; ASSetPropFlags(_global.EHit.prototype, null, 1); } #endinitclip } movieClip 1977 __Packages.Inventory { #initclip if (!_global.Inventory) { var v1 = function () { super(); var v3 = (Core.Get()).game; this.level = (Core.Get()).game.getTeamLevel(); }; _global.Inventory = v1; _global.Inventory extends MovieClip; var v2 = v1.prototype; v2.init = function (npc_, size_, onSlotDrag_, onSlotDrop_, level_) { this.size = size_; if (undefined != level_) { this.level = level_; } this.src = (npc_ == '') ? (Core.Get()).game.inventory : (Core.Get()).game.traders[npc_]; this.slots = new Array(this.size.y * this.size.x); var v12 = (Core.Get()).cfg; var v9 = v12.inventory_grid; var v7 = 0; var v10 = 0; var v4 = 0; var v6 = 0; while (v6 < this.size.y) { v7 = 0; var v3 = 0; while (v3 < this.size.x) { var v5 = 'slot' + v3 + v6; this.attachMovie('itemslot_btn', v5, v4); var v2 = this[v5]; v2.init(v4, onSlotDrag_, onSlotDrop_, onSlotDrop_); v2.setItem(-1); v2._x = v7; v2._y = v10; this.slots[v4] = v2; ++v4; ++v3; v7 += v9.x; } ++v6; v10 += v9.y; } this.offs = 0; this.sync(); }; v2.initFromSource = function (src_, size_, onRelease_) { this.size = size_; this.src = src_; this.slots = new Array(this.size.y * this.size.x); var v11 = (Core.Get()).cfg; var v8 = v11.inventory_grid; var v7 = 0; var v9 = 0; var v4 = 0; var v6 = 0; while (v6 < this.size.y) { v7 = 0; var v3 = 0; while (v3 < this.size.x) { var v5 = 'slot' + v3 + v6; this.attachMovie('itemslot_btn', v5, v4); var v2 = this[v5]; v2.init(v4, undefined, onRelease_); v2.setItem(-1); v2._x = v7; v2._y = v9; this.slots[v4] = v2; ++v4; ++v3; v7 += v8.x; } ++v6; v9 += v8.y; } this.offs = 0; this.sync(); }; v2.sync = function () { var v9 = this.size.y * this.size.x; var v8 = v9; var v10 = this.src.length - this.offs; if (v10 < v8) { v8 = v10; } var v2 = 0; while (v2 < v8) { if (this.src[v2 + this.offs] instanceof Object) { this.slots[v2].setItem(this.src[v2 + this.offs].item); this.slots[v2].setCount(this.src[v2 + this.offs].count); } else { this.slots[v2].setItem(this.src[v2 + this.offs]); this.slots[v2].setCount(1); } var v3 = (Core.Get()).world.items[this.slots[v2].getItem()]; var v6 = v3.level; var v7 = this.level; this.slots[v2].setUsable(v6 <= v7 && EItem.QUEST != v3.type); ++v2; } var v4 = this.offs + v8; v2 = v8; while (v2 < v9) { this.slots[v2].setItem(-1); var v5 = Math.floor(v4 / this.size.x) % 2 == v4 % this.size.x % 2; this.slots[v2].setEven(v5); ++v2; ++v4; } }; v2.evalCell = function (x_, y_) { return this.offs + x_ + y_ * this.size.x; }; v2.getPosFromCell = function (i_) { return i_ + this.offs; }; v2.getPosAt = function (x_, y_) { var v2 = {'x': x_, 'y': y_}; this.globalToLocal(v2); var v5 = (Core.Get()).cfg; var v4 = this.size; var v3 = v5.inventory_grid; v2.x = Math.floor(v2.x / v3.x); v2.y = Math.floor(v2.y / v3.y); if (v2.x < 0 || v2.x >= v4.x) { return -1; } if (v2.y < 0 || v2.y >= v4.y) { return -1; } var v6 = this.evalCell(v2.x, v2.y); return v6; }; v2.getItemFromCell = function (i_) { if (this.src[i_ + this.offs] instanceof Object) { return this.src[i_ + this.offs].item; } else { return this.src[i_ + this.offs]; } }; v2.getPriceFromCell = function (i_) { var v2 = this.src[i_ + this.offs]; if (v2 instanceof Object) { var v3 = v2.item; if (undefined == v2.buy_back || 0 == v2.buy_back) { return (Core.Get()).world.getBuyPrice(v3); } else { return (Core.Get()).world.getSellPrice(v3); } } else { return (Core.Get()).world.getBuyPrice(v2); } }; v2.scrollTo = function (val_) { this.offs = this.size.x * val_; this.sync(); }; v2.getMaxScroll = function () { var v3 = Math.ceil(this.src.length / this.size.x) + Math.floor(this.size.y / 2); var v2 = v3 - this.size.y; if (v2 < 0) { v2 = 0; } return v2; }; ASSetPropFlags(_global.Inventory.prototype, null, 1); } #endinitclip } movieClip 1978 __Packages.ButtonItem { #initclip if (!_global.ButtonItem) { var v1 = function () { super(); this.item.stop(); this.back.stop(); this.fixed_type = 0; this.item_id = -1; this.dehilite(); this.even = true; }; _global.ButtonItem = v1; _global.ButtonItem extends MovieClip; var v2 = v1.prototype; v2.setItem = function (id_, default_) { this.item_id = id_; if (id_ < 0) { this.item._visible = false; this.count._visible = false; if (!this.fixed_type) { this.back.gotoAndStop(this.even ? 7 : 8); } this.enabled = false; if (undefined == default_ || default_) { if (this.fixed_type !== EItem.WEAPON) { } else { this.item._visible = true; this.item.gotoAndStop(1); } } } else { this.item._visible = true; this.item.gotoAndStop(1 + id_); var v3 = (Core.Get()).world; var item = v3.items[id_]; this.back.gotoAndStop(item.type); this.enabled = true; } }; v2.getItem = function () { return this.item_id; }; v2.setCount = function (count_) { this.count.text = count_; this.count._visible = count_ != 1; }; v2.setFixed = function (t_) { this.fixed_type = t_; this.back.gotoAndStop(t_); }; v2.init = function (id_, cb1_, cb2_, cb3_) { this.onPress = function () { cb1_(id_); }; this.onRelease = function () { cb2_(id_); }; this.onReleaseOutside = function () { cb3_(id_); }; if (undefined == cb2_) { this.useHandCursor = false; } }; v2.setEven = function (even_) { this.even = even_; if (this.item_id < 0 && !this.fixed_type) { this.back.gotoAndStop(this.even ? 7 : 8); } }; v2.hilite = function () { this.hilition._visible = true; }; v2.dehilite = function () { this.hilition._visible = false; }; v2.setGlow = function (color_) { this.item.filters = [Filters.GlowLight(color_)]; }; v2.setUsable = function (useable_) { this.item.filters = useable_ ? [] : [Filters.GlowLight(16711680)]; }; ASSetPropFlags(_global.ButtonItem.prototype, null, 1); } #endinitclip } movieClip 1979 __Packages.TooltipItem { #initclip if (!_global.TooltipItem) { var v1 = function () { super(); this.id = -1; this._visible = false; this.type_icon.stop(); this.target.stop(); this.stop(); }; _global.TooltipItem = v1; _global.TooltipItem extends MovieClip; var v2 = v1.prototype; v2.setItem = function (id_, sell_price) { if (this.id == id_) { return undefined; } this.id = id_; if (id_ < 0) { this._visible = false; } else { this._visible = true; this.id_value.text = id_; if (!(Core.Get()).debug_mode) { this.id_value._visible = false; } var v2 = (Core.Get()).world.items[this.id]; var v9 = v2.type; if (v2.spam) { this.gotoAndStop(7); } else { this.gotoAndStop(v9); } this.name.text = v2.name; var v4 = 16777215; switch (v2.type) { case EItem.WEAPON: v4 = 8340291; break; case EItem.ARMOR: v4 = 3033902; break; case EItem.DEVICE: v4 = 2579575; break; case EItem.USE: v4 = 7828263; break; case EItem.HEAL: v4 = 8407436; break; case EItem.QUEST: v4 = 2586475; } this.name.textColor = v4; this.name.filters = [Filters.GlowMedium(16777215)]; if (undefined != sell_price && sell_price) { this.price.text = '€' + (Core.Get()).world.getSellPrice(id_); } else { this.price.text = '€' + v2.cost; } var v8 = v2.type3; this.type_icon.gotoAndStop(v8); var v3 = ''; switch (v8) { case EItemType.MELEE: v3 = 'Melee weapon'; break; case EItemType.PISTOL: v3 = v2.alien ? 'Alien weapon' : 'Pistol'; break; case EItemType.SMG: v3 = v2.alien ? 'Alien weapon' : 'Submachine-gun'; break; case EItemType.SHOTGUN: v3 = 'Shotgun'; break; case EItemType.HEAVY: v3 = 'Heavy weapon'; break; case EItemType.ASSAULT: v3 = 'Assault rifle'; break; case EItemType.RLAUNCHER: v3 = v2.alien ? 'Alien weapon' : 'Rocket launcher'; break; case EItemType.GLAUNCHER: v3 = 'Grenade launcher'; break; case EItemType.SNIPER: v3 = v2.alien ? 'Alien weapon' : 'Sniper rifle'; break; case EItemType.ARMOR: v3 = 'Armor'; break; case EItemType.DEVICE: v3 = v2.alien ? 'Alien device' : 'Device'; break; case EItemType.GRENADE: v3 = 'Grenade'; break; case EItemType.MEDIKIT: v3 = 'Medikit'; break; case EItemType.QUEST: v3 = 'Quest item'; } this.type_name.text = v3; var v7 = v2.type2; if (v7 == EWeapon.PASSIVE) { this.target.gotoAndStop(2); } else { this.target.gotoAndStop(1); var v5 = ''; switch (v7) { case EWeapon.MELEE: case EWeapon.SINGLE: v5 = 'Single'; break; case EWeapon.BURST: v5 = 'Line'; break; case EWeapon.SHOT: v5 = 'Row'; break; case EWeapon.SPLASH: v5 = 'Area'; break; case EWeapon.MASSIVE: v5 = 'Mass'; break; case EWeapon.SELF: v5 = 'Self'; } this.target.target.text = v5; } if (v2.spam) { } else { switch (v9) { case EItem.WEAPON: this.power.text = v2.dmg_min + '-' + v2.dmg_max; this.reload.text = v2.ap; break; case EItem.ARMOR: this.power.text = v2.dr; break; case EItem.DEVICE: this.descri.text = v2.descri; this.reload.text = v2.energy ? v2.energy : '-'; break; case EItem.USE: this.power.text = v2.dmg_min + '-' + v2.dmg_max; break; case EItem.HEAL: if (v2.recharge) { this.power._visible = false; this.power_hp._visible = false; this.power2._visible = true; this.power_ep._visible = true; this.power2.text = '+' + v2.heal; } else { this.power._visible = true; this.power_hp._visible = true; this.power2._visible = false; this.power_ep._visible = false; this.power.text = v2.heal; } } } this.level.text = v2.level; this.level._visible = v2.level > 1; this.level_caption._visible = this.level._visible; this.aliens_only._visible = true == v2.alien; this.hell_only._visible = true == v2.hell; } }; ASSetPropFlags(_global.TooltipItem.prototype, null, 1); } #endinitclip } movieClip 1980 __Packages.ScreenBattle { #initclip if (!_global.ScreenBattle) { var v1 = function () { super(); Log.Msg('ScreenBattle::ScreenBattle()'); (Core.Get()).playSound('start'); this.player_slots = new Array(); this.player_slots.push(this.slotA); this.player_slots.push(this.slotB); this.player_slots.push(this.slotC); this.player_slots.push(this.slotD); this.player_alive = new Array(); this.enemy_slots = new Array(); this.enemy_slots.push(this.slot5); this.enemy_slots.push(this.slot6); this.enemy_slots.push(this.slot7); this.enemy_slots.push(this.slot8); this.enemy_slots.push(this.slot1); this.enemy_slots.push(this.slot2); this.enemy_slots.push(this.slot3); this.enemy_slots.push(this.slot4); this.enemy_alive = new Array(); this.animation = false; this.need_sync_alive_player = false; this.need_sync_alive_enemy = false; this.player_turn = false; this.current_slot = null; this.current_targets = []; this.enemy_has_first_rank = false; this.enemy_has_second_rank = false; this.state = EBattle.NONE; this.exp = 0; this.drop = []; this.int_meta = false; this.aliens = false; this.back.stop(); this.onMouseMove = mx.utils.Delegate.create(this, this.onMouse); }; _global.ScreenBattle = v1; _global.ScreenBattle extends Screen; var v2 = v1.prototype; v2.init = function () { var v14 = (Core.Get()).game; var v19 = mx.utils.Delegate.create(this, this.onPlayerAttack); var v16 = mx.utils.Delegate.create(this, this.onPlayerDefend); var v15 = mx.utils.Delegate.create(this, this.onPlayerDevice); var v22 = mx.utils.Delegate.create(this, this.onPlayerUseItem); var v21 = mx.utils.Delegate.create(this, this.onPlayerCancel); var v18 = mx.utils.Delegate.create(this, this.onFriendTargeted); var v25 = mx.utils.Delegate.create(this, this.onFriendUntargeted); var v23 = mx.utils.Delegate.create(this, this.onFriendHealed); var v10 = false; var v11 = false; var v6 = this.player_slots.length; var v3 = 0; while (v3 < v6) { var v2 = this.player_slots[v3]; var v5 = v14.team[v3]; v2.setPlayer(v5); if (v2.isAlive()) { this.player_alive.push(v3); v2.initSlot(v3, v18, v25, v23); v2.initPlayer(v3, v19, v16, v15, v22, v21); } if (v5 == 7 && (Core.Get()).game.stats[7].perk1) { v10 = true; } if (v5 == 11 && (Core.Get()).game.stats[11].perk1) { v11 = true; } ++v3; } v6 = this.player_alive.length; v3 = 0; while (v3 < v6) { if (v10) { this.player_slots[v3].addPerkEffect(7, 0); } if (v11) { this.player_slots[v3].addPerkEffect(11, 0); } ++v3; } var v20 = mx.utils.Delegate.create(this, this.onEnemyTargeted); var v17 = mx.utils.Delegate.create(this, this.onEnemyUntargeted); var v24 = mx.utils.Delegate.create(this, this.onEnemyAttacked); var v8 = (Core.Get()).game.exchange; this.int_meta = v8.band == 'int_meta'; (Core.Get()).game.exchange = null; var v7 = (Core.Get()).world.bands[v8.band]; var v13 = []; v6 = v7.length; v3 = 0; while (v3 < v6) { if (v7[v3].lvl_min != undefined) { if (v8.level < v7[v3].lvl_min) { } else { if (v7[v3].lvl_max != undefined) { if (v8.level > v7[v3].lvl_max) { } else { v13.push(v3); } } } } ++v3; } if (!v13.length) { Log.Err('No suitable band found! ' + v8.band); return undefined; } var v12 = v7[ex.selectRandom(v13)].layout; var v4 = v12.slice(0, 4); var v9 = []; while (v4.length) { v9.push((v4.splice(Math.floor(Math.random() * v4.length), 1))[0]); } v4 = v12.slice(4, 8); while (v4.length) { v9.push((v4.splice(Math.floor(Math.random() * v4.length), 1))[0]); } v12 = v9; v6 = this.enemy_slots.length; v3 = 0; while (v3 < v6) { v2 = this.enemy_slots[v3]; v2.setEnemy(v12[v3], v8.level); if ('A' == v2.band) { this.aliens = true; } if (v2.isAlive()) { this.enemy_alive.push(v3); v2.initSlot(v3, v20, v17, v24); this.exp += v2.exp; this.addDrop(v2); this.addKillEvents(v2); if (this.isFirstRank(v3)) { this.enemy_has_first_rank = true; } else { this.enemy_has_second_rank = true; } } ++v3; } this.btn_skip.setCaption('Skip'); this.btn_skip.setOnClick(mx.utils.Delegate.create(this, this.onSkipClick)); if (!(Core.Get()).debug_mode) { this.btn_skip._visible = false; } this.back.gotoAndStop((Core.Get()).game.getBattleRegion()); this.use_items = v14.getUseableItems(); this.inventory.initFromSource(this.use_items, (Core.Get()).cfg.useitem_size, mx.utils.Delegate.create(this, this.onInventoryUse)); this.inventory._visible = false; }; v2.addDrop = function (slot_) { var v5 = (Core.Get()).game; var v4 = v5.getDropModifier(); if (v5.getTeamLevel() > 20) { v4 /= 4; } else { if (v5.getTeamLevel() > 10) { v4 /= 2; } } if (slot_.weapon > 0 && (Core.Get()).world.items[slot_.weapon].type3 != EItemType.PSI) { if (ex.testChance(v4 * 10 / 100)) { this.addItemToDrop(slot_.weapon); } } var v6 = -1; var v3 = [false, false, false, false, false]; switch (slot_.band) { case 'M': v3[0] = true; v3[1] = true; v3[3] = true; v3[4] = true; break; case 'U': v3[1] = true; v3[4] = true; break; case 'G': v3[0] = true; v3[2] = true; v3[3] = true; break; case 'B': v3[0] = true; v3[2] = true; break; case 'D': v3[0] = true; v3[1] = true; v3[2] = true; break; case 'S': v3[0] = true; v3[2] = true; v3[3] = true; break; case 'A': v3[0] = true; v3[1] = true; v3[4] = true; break; case 'K': v3[0] = true; v3[2] = true; break; case 'X': v3[4] = true; } if (slot_.level >= 23 && v3[4]) { v6 = 4; } else { if (slot_.level >= 18 && v3[3]) { v6 = 3; } else { if (slot_.level >= 13 && v3[2]) { v6 = 2; } else { if (slot_.level >= 8 && v3[1]) { v6 = 1; } else { if (slot_.level >= 1 && v3[0]) { v6 = 0; } } } } } switch (v6) { case 0: if (ex.testChance(0.1)) { if (slot_.level >= 5) { if (ex.testChance(0.4)) { this.addItemToDrop(69); } else { if (ex.testChance(0.5)) { this.addItemToDrop(70); } else { this.addItemToDrop(71); } } } else { if (slot_.level >= 3) { if (ex.testChance(0.6)) { this.addItemToDrop(69); } else { this.addItemToDrop(70); } } else { this.addItemToDrop(69); } } } break; case 1: if (ex.testChance(0.07000000000000001)) { if (slot_.level >= 10) { if (ex.testChance(0.6)) { this.addItemToDrop(72); } else { this.addItemToDrop(73); } } else { this.addItemToDrop(72); } } break; case 2: if (ex.testChance(0.05)) { if (slot_.level >= 15) { if (ex.testChance(0.6)) { this.addItemToDrop(74); } else { this.addItemToDrop(75); } } else { this.addItemToDrop(75); } } break; case 3: if (ex.testChance(0.03)) { if (slot_.level >= 20) { if (ex.testChance(0.6)) { this.addItemToDrop(76); } else { this.addItemToDrop(77); } } else { this.addItemToDrop(77); } } break; case 4: if (ex.testChance(0.02)) { this.addItemToDrop(78); } } if (slot_.device >= 0 && !(Core.Get()).world.items[slot_.device].no_use && 'Q' != slot_.band) { if (ex.testChance(v4 * 3 / 100)) { this.addItemToDrop(slot_.device); } } if (1 <= slot_.level && slot_.level < 8 && ex.testChance(v4 * 5 / 100)) { this.addItemToDrop(139); } if (8 <= slot_.level && slot_.level < 15 && ex.testChance(v4 * 5 / 100)) { this.addItemToDrop(140); } if (15 <= slot_.level && slot_.level < 22 && ex.testChance(v4 * 5 / 100)) { this.addItemToDrop(141); } if (22 <= slot_.level && ex.testChance(v4 * 5 / 100)) { this.addItemToDrop(142); } if ('X' == slot_.band && ex.testChance(v4 * 0.5 / 100)) { this.addItemToDrop(143); } if ('U' == slot_.band && ex.testChance(v4 * 0.1 / 100)) { this.addItemToDrop(143); } if (1 <= slot_.level && slot_.level < 8 && ex.testChance(v4 * 5 / 100)) { this.addItemToDrop(146); } if (3 <= slot_.level && slot_.level < 13 && ex.testChance(v4 * 5 / 100)) { this.addItemToDrop(147); } if (8 <= slot_.level && slot_.level < 18 && ex.testChance(v4 * 5 / 100)) { this.addItemToDrop(148); } if (13 <= slot_.level && slot_.level < 23 && ex.testChance(v4 * 5 / 100)) { this.addItemToDrop(149); } if (18 <= slot_.level && slot_.level && ex.testChance(v4 * 5 / 100)) { this.addItemToDrop(150); } if (23 <= slot_.level && slot_.level && ex.testChance(v4 * 5 / 100)) { this.addItemToDrop(150); } if (3 <= slot_.level && slot_.level < 13 && ex.testChance(v4 * 3 / 100)) { this.addItemToDrop(151); } if (13 <= slot_.level && slot_.level < 23 && ex.testChance(v4 * 3 / 100)) { this.addItemToDrop(152); } if (23 <= slot_.level && slot_.level && ex.testChance(v4 * 3 / 100)) { this.addItemToDrop(153); } if (6 <= slot_.level && slot_.level && ex.testChance(v4 * 2 / 100)) { this.addItemToDrop(155); } if (1 == v5.getFlag('v_astralflower') && 10 > v5.getFlag('drop_astralflower') && 0 == v5.cur_region) { v5.incFlag('drop_astralflower'); this.addItemToDrop(156); } if ('M' == slot_.band && 12 == v5.cur_region && !v5.getFlag('drop_vacuumengine')) { v5.setFlag('drop_vacuumengine'); this.addItemToDrop(157); } if (1 == v5.getFlag('q_getcastlekey') && 16 == v5.cur_region && !v5.getFlag('drop_castlekey')) { if (ex.testChance(0.05)) { v5.setFlag('drop_castlekey'); this.addItemToDrop(158); } } if (1 == v5.getFlag('q_medalion') && 'B' == slot_.band && !v5.getFlag('drop_medallion')) { if (ex.testChance(0.01)) { v5.setFlag('drop_medallion'); this.addItemToDrop(159); } } }; v2.addItemToDrop = function (item_) { var v4 = this.drop.length; var v2 = 0; while (v2 < v4) { if (this.drop[v2].item == item_) { ++this.drop[v2].count; return undefined; } ++v2; } this.drop.push({'item': item_, 'count': 1}); }; v2.addKillEvents = function (slot_) { var v1 = (Core.Get()).game; if (5 == v1.getFlag('q_bigalienplan') && 'X' == slot_.band) { v1.incFlag('kills_grabbers_harcos'); } if ('QCYB' == slot_.creature) { v1.incFlag('kills_inferno_ibrahim'); } if (1 == v1.getFlag('q_cityclear') && 'B' == slot_.band && v1.cur_region == 9) { v1.incFlag('kills_bandits_jax'); } if (1 == v1.getFlag('q_gibsonquest') && 'D' == slot_.band && v1.cur_region == 11) { v1.incFlag('kills_raiders_georg'); } if (3 == v1.getFlag('q_gibsonquest') && 'U' == slot_.band && v1.cur_region == 11) { v1.incFlag('kills_mutants_georg'); } }; v2.onSkipClick = function () { this.btn_skip._visible = false; var v4 = this.enemy_slots.length; var v2 = 0; while (v2 < v4) { var v3 = this.enemy_slots[v2]; if (v3.isAlive()) { v3.takeDamage(999, EHit.DAMAGE); } ++v2; } if (this.player_turn) { this.current_slot.deselect(); this.current_slot.dehilite(); this.state = EBattle.NONE; this.player_turn = false; } this.syncAliveEnemy(); }; v2.onEnterFrame = function () { if (!this.enabled) { return undefined; } if (this.player_turn) { return undefined; } if (this.animation) { this.animation = false; var v2 = this.player_slots.length; var v3 = 0; while (v3 < v2) { var v4 = this.player_slots[v3]; this.animation = v4.updateAnimation() || this.animation; if (v4.running_back && v4.animation == BattleSlot.time_run_back) { this.effectRunBack(v4); } ++v3; } v2 = this.enemy_slots.length; v3 = 0; while (v3 < v2) { v4 = this.enemy_slots[v3]; this.animation = v4.updateAnimation() || this.animation; if (v4.running_back && v4.animation == BattleSlot.time_run_back) { this.effectRunBack(v4); } ++v3; } } if (this.animation) { return undefined; } this.syncAliveEnemy(); this.syncAlivePlayer(); if (this.animation) { return undefined; } if (!this.player_alive.length) { if (this.int_meta) { (Core.Get()).game.in_area = 6; (Core.Get()).goArea(); } else { (Core.Get()).goLose(); } return undefined; } if (!this.enemy_alive.length) { (Core.Get()).game.resetAreaFlags(); (Core.Get()).game.exchange = {'exp': this.exp, 'drop': this.drop}; (Core.Get()).popupWinBattle(); return undefined; } v2 = 0; v2 = this.player_alive.length; v3 = 0; while (v3 < v2) { v4 = this.player_slots[this.player_alive[v3]]; if (v4.isReady()) { this.playerTurn(v4); return undefined; } ++v3; } v2 = this.enemy_alive.length; v3 = 0; while (v3 < v2) { v4 = this.enemy_slots[this.enemy_alive[v3]]; if (v4.isReady()) { this.enemyTurn(v4); return undefined; } ++v3; } v2 = this.player_alive.length; v3 = 0; while (v3 < v2) { v4 = this.player_slots[this.player_alive[v3]]; v4.tick(); ++v3; } v2 = this.enemy_alive.length; v3 = 0; while (v3 < v2) { v4 = this.enemy_slots[this.enemy_alive[v3]]; v4.tick(); ++v3; } }; v2.enemyTurn = function (slot_) { if (slot_.getBuff('repeat_attack')) { this.doAttack(slot_, this.current_targets); return undefined; } if (slot_.isRunning()) { this.doAttack(slot_, this.current_targets); return undefined; } this.startTurn(slot_); if (slot_.device >= 0 && slot_.cur_energy >= slot_.device_mp) { var v3 = (Core.Get()).world.items[slot_.device]; this.atk_mode = v3.type2; if (v3.heal) { this.selectEnemyHealTargets(this.atk_mode); } else { this.selectEnemyTargets(this.atk_mode); } if (this.aiDevice(slot_.device, this.current_targets)) { this.useDevice(slot_, this.current_targets); return undefined; } } this.atk_mode = (Core.Get()).world.items[slot_.weapon].type2; this.selectEnemyTargets(this.atk_mode); this.doAttack(slot_, this.current_targets); }; v2.aiDevice = function (device_, targets_) { if (!targets_.length) { return false; } switch (device_) { return true; case 93: var v3 = targets_[0].calcDR(); if (v3 > targets_[0].level / 2) { return true; } return false; case 94: case 95: var v5 = 0; var v8 = targets_.length; var v2 = 0; while (v2 < v8) { var v3 = targets_[0].calcDR(); if (v3 > targets_[0].level / 2) { ++v5; } ++v2; } return v5 > 1; case 106: var v5 = 0; var v8 = targets_.length; var v2 = 0; while (v2 < v8) { if (!targets_[v2].getDebuff('dev_venom3')) { ++v5; } ++v2; } return v5 > 1; case 108: case 109: case 110: var v9 = targets_[0]; return v9.cur_hp < v9.max_hp * 2 / 3; case 113: return !targets_[0].getDebuff('dev_minus_ap_regen'); case 115: return targets_[0].getBuff('dev_dr_alien') < 0.6; case 120: var v6 = false; var v8 = targets_.length; var v2 = 0; while (v2 < v8) { if (targets_[v2].cur_hp < targets_[v2].max_hp) { v6 = true; break; } ++v2; } return v6; case 121: return !targets_[0].getBuff('sure_crit'); case 122: return !targets_[0].getBuff('dev_charge_dmg') && !targets_[0].getBuff('charge_dmg') && ex.testChance(0.5); case 124: return !targets_[0].getBuff('vr_attack') && targets_[0].cur_hp < 0.7 * targets_[0].max_hp; case 125: var v7 = 0; var v4 = 0; var v8 = targets_.length; var v2 = 0; while (v2 < v8) { if (targets_[v2].device != 125) { ++v4; if (targets_[v2].cur_action < targets_[v2].max_action / 2) { ++v7; } } ++v2; } return v4 > 0 && v7 >= v4 / 2; case 138: return !targets_[0].getBuff('dekkis_special'); } return true; }; v2.selectEnemyHealTargets = function (atk_type) { var v6 = []; switch (atk_type) { case EWeapon.SINGLE: var v5 = 999; var v7 = -1; var v8 = this.enemy_alive.length; var v2 = 0; while (v2 < v8) { var v3 = this.enemy_alive[v2]; var v4 = this.enemy_slots[v3]; if (v4.cur_hp < v5) { v5 = v4.cur_hp; v7 = v3; } ++v2; } if (v7 > 0) { v6.push(v7); } break; case EWeapon.SELF: v6 = [this.current_slot.id]; break; case EWeapon.MASSIVE: v6 = this.enemy_alive.slice(0); } this.current_targets = []; var v8 = v6.length; var v2 = 0; while (v2 < v8) { var v3 = v6[v2]; if (this.enemy_slots[v3].isAlive()) { this.current_targets.push(this.enemy_slots[v3]); } ++v2; } }; v2.selectEnemyTargets = function (atk_type) { var v4 = []; switch (atk_type) { case EWeapon.MELEE: case EWeapon.SINGLE: case EWeapon.BURST: v4 = [this.player_alive[ex.randomInt(this.player_alive.length)]]; break; case EWeapon.SHOT: case EWeapon.MASSIVE: v4 = this.player_alive.slice(0); break; case EWeapon.SPLASH: var v6 = this.testPlayerSplash(); switch (v6) { case 0: v4 = [0, 1]; break; case 1: v4 = [0, 1, 2]; break; case 2: v4 = [1, 2, 3]; break; case 3: v4 = [2, 3]; } } this.current_targets = []; var v5 = v4.length; var v2 = 0; while (v2 < v5) { var v3 = v4[v2]; if (this.player_slots[v3].isAlive()) { this.current_targets.push(this.player_slots[v3]); } ++v2; } }; v2.testPlayerSplash = function () { var v3 = [0, 0, 0, 0]; if (this.player_slots[0].isAlive()) { ++v3[0]; ++v3[1]; } if (this.player_slots[1].isAlive()) { ++v3[0]; ++v3[1]; ++v3[2]; } if (this.player_slots[2].isAlive()) { ++v3[1]; ++v3[2]; ++v3[3]; } if (this.player_slots[3].isAlive()) { ++v3[2]; ++v3[3]; } var v2 = 0; while (v2 < 4) { if (!this.player_slots[v2].isAlive()) { v3[v2] = 0; } ++v2; } var v5 = []; var v4 = 0; v2 = 0; while (v2 < 4) { if (v3[v2] > v4) { v4 = v3[v2]; v5 = []; } if (v3[v2] == v4) { v5.push(v2); } ++v2; } return v5[ex.randomInt(v5.length)]; }; v2.doAttack = function (atk_, targets_) { this.animation = true; if (!atk_.isRunning() && (Core.Get()).world.items[atk_.weapon].type2 == EWeapon.MELEE) { if (targets_.length != 1) { Log.Err('Melee attack targeting error'); } atk_.runTo(targets_[0]); this.effectRun(atk_); return undefined; } atk_.attack(); if (atk_.tryAttack()) { var v12 = 0; var v11 = targets_.length; var v7 = 0; while (v7 < v11) { var v3 = targets_[v7]; if (!v3.isAlive()) { } else { if (this.atk_mode == EWeapon.MELEE && v3.getBuff('melee_immune')) { v3.takeDamage(0, EHit.IMMUNE); } else { if (v3.getBuff('dev_counter')) { switch (this.atk_mode) { if (this.atk_mode !== EWeapon.BURST) { } else { case EWeapon.MELEE: case EWeapon.SINGLE: atk_.takeDamage(ex.randomIntIn(10, 12), EHit.POISON); atk_.syncHP(); } } } var v9 = 1 == v11 && ((Core.Get()).world.items[atk_.weapon].type3 == EItemType.RLAUNCHER || (Core.Get()).world.items[atk_.weapon].type3 == EItemType.GLAUNCHER); if (!v9 && !v3.tryHit()) { } else { if (atk_.getBuff('perk_kat_mass_atk')) { } var v4 = atk_.isCritical() ? EHit.CRITICAL : EHit.DAMAGE; var v5 = (EHit.CRITICAL == v4) ? atk_.getCritDamage() : atk_.getDamage(); if (atk_.getBuff('sure_crit') || atk_.getBuff('perk_nina_sure_crit') || atk_.getBuff('perk_key_crit_chance') && this.aliens) { if (EHit.CRITICAL == v4) { v5 = atk_.getBestDamage(); } else { v4 = EHit.CRITICAL; v5 = atk_.getCritDamage(); } } var v8 = atk_.getBuff('perk_kage_drain_ap'); if (EHit.CRITICAL == v4) { v8 *= 2; } if (v8) { v3.takeDamage(v8, EHit.DRAIN_AP); } if (EHit.CRITICAL == v4 && v3.getBuff('perk_nina_anger')) { v3.buff.perk_nina_dmg = v3.getBuff('perk_nina_anger'); } if (!atk_.isEnemy() && this.atk_mode == EWeapon.BURST) { if (!this.isFirstRank(v3.id)) { var v6 = 1; switch (targets_.length) { case 3: v6 = 0.75; break; case 2: v6 = 1; } v5 *= v6; } } if (EHit.CRITICAL == v4) { (Core.Get()).playSound('crit_hit', v3.isEnemy() ? 1 : -1); } v12 += v3.takeDamage(v5, v4); } } } ++v7; } if (atk_.getBuff('dev_vr')) { atk_.takeDamage(atk_.getBuff('dev_vr') * v12, EHit.HEAL); } if (atk_.getBuff('vr_attack')) { atk_.takeDamage(atk_.getBuff('vr_attack') * v12, EHit.HEAL); } if (atk_.isEnemy()) { this.need_sync_alive_player = true; } else { this.need_sync_alive_enemy = true; } } atk_.removeBuff('sure_crit'); atk_.removeBuff('vr_attack'); atk_.removeBuff('vr_attack_minus_dmg'); atk_.removeBuff('dekkis_special'); }; v2.useItem = function (atk_, targets_, item_) { this.animation = true; this.current_slot.useItem(item_); var v9 = (Core.Get()).world.items[item_].type3; if (v9 == EItemType.GRENADE) { targets_[0].explodeGrenade(); var v7 = targets_.length; var v2 = 0; while (v2 < v7) { var v3 = targets_[v2]; v3.doEffect('grenade_explosion'); var v6 = atk_.getItemDamage(item_); v3.takeDamage(v6, EHit.DAMAGE); ++v2; } this.need_sync_alive_enemy = true; } else { if (v9 == EItemType.MEDIKIT) { var v6 = atk_.getItemHeal(item_); var v7 = targets_.length; var v2 = 0; while (v2 < v7) { var v3 = targets_[v2]; if ((Core.Get()).world.items[item_].recharge) { v3.takeDamage(v6, EHit.RECHARGE); } else { v3.takeDamage(v6, EHit.HEAL); } ++v2; } } } v7 = this.use_items.length; v2 = 0; while (v2 < v7) { if (this.use_items[v2].item == item_) { --this.use_items[v2].count; if (0 == this.use_items[v2].count) { this.use_items.splice(v2, 1); } break; } ++v2; } (Core.Get()).game.takeInventory(item_); }; v2.syncAlivePlayer = function () { var v4 = new Array(); var v5 = this.player_alive.length; var v2 = 0; while (v2 < v5) { var v3 = this.player_slots[this.player_alive[v2]]; if (v3.isAlive()) { v4.push(this.player_alive[v2]); } else { v3.die(); this.animation = true; } ++v2; } this.player_alive = v4; this.need_sync_alive_player = false; }; v2.syncAliveEnemy = function () { this.enemy_has_first_rank = false; this.enemy_has_second_rank = false; var v5 = new Array(); var v6 = this.enemy_alive.length; var v3 = 0; while (v3 < v6) { var v2 = this.enemy_alive[v3]; var v4 = this.enemy_slots[v2]; if (v4.isAlive()) { v5.push(v2); if (this.isFirstRank(v2)) { this.enemy_has_first_rank = true; } else { this.enemy_has_second_rank = true; } } else { v4.die(); this.animation = true; this.addKillsEffects(); } ++v3; } this.enemy_alive = v5; this.need_sync_alive_enemy = false; }; v2.addKillsEffects = function () { var v4 = this.player_alive.length; var v3 = 0; while (v3 < v4) { var v2 = this.player_slots[this.player_alive[v3]]; if (v2.getBuff('perk_kurt_accum_dmg')) { v2.incBuffEffect('perk_kurt_accum_dmg_bonus', v2.getBuff('perk_kurt_accum_dmg')); } ++v3; } }; v2.isFirstRank = function (id_) { return id_ < 4; }; v2.playerTurn = function (slot_) { if (slot_.isRunning()) { if (slot_ != this.current_slot) { Log.Err('playerTurn() : Melee attack sequence error'); } this.doAttack(slot_, this.current_targets); return undefined; } if (slot_.getBuff('repeat_attack')) { this.doAttack(slot_, this.current_targets); return undefined; } this.current_slot = slot_; this.player_turn = true; slot_.select(); this.startTurn(slot_); }; v2.startTurn = function (slot_) { this.current_slot = slot_; if (slot_.getBuff('dev_mass_hp_regen')) { var v5 = slot_.isEnemy() ? this.enemy_alive : this.player_alive; var v6 = slot_.isEnemy() ? this.enemy_slots : this.player_slots; var v7 = v5.length; var v2 = 0; while (v2 < v7) { var v3 = v6[v5[v2]]; var v8 = v3.max_hp * slot_.getBuff('dev_mass_hp_regen'); v3.regenHP(v8); ++v2; } (Core.Get()).playSound('snd_dev_heal', slot_.enemy ? 1 : -1); } if (slot_.getBuff('dev_hp_regen')) { v8 = slot_.max_hp * slot_.getBuff('dev_hp_regen'); slot_.regenHP(v8); (Core.Get()).playSound('snd_dev_heal', slot_.enemy ? 1 : -1); } slot_.startTurn(); }; v2.playerTurnEnd = function () { this.current_slot.deselect(); this.current_slot.dehilite(); this.state = EBattle.NONE; if (!this.current_slot.isRunning()) { this.current_slot = null; } this.player_turn = false; this.animation = true; }; v2.onPlayerAttack = function (i_) { (Core.Get()).playSound('button_click'); this.state = EBattle.ATTACK; this.atk_mode = (Core.Get()).world.items[this.current_slot.weapon].type2; if (this.current_slot.getBuff('perk_kat_mass_atk')) { this.atk_mode = EWeapon.MASSIVE; } this.current_slot.activateControls(); this.enableEnemies(); }; v2.onPlayerDefend = function (i_) { (Core.Get()).playSound('button_click'); this.current_slot.defend(); this.playerTurnEnd(); }; v2.onPlayerDevice = function (i_) { (Core.Get()).playSound('button_click'); this.state = EBattle.USE_DEVICE; this.atk_mode = (Core.Get()).world.items[this.current_slot.device].type2; if (undefined == (Core.Get()).world.items[this.current_slot.device].heal) { this.enableEnemies(); } else { this.enableFriends(); } this.current_slot.activateControls(); }; v2.onPlayerUseItem = function (i_) { (Core.Get()).playSound('button_click'); this.state = EBattle.INVENTORY; this.current_slot.activateControls(); this.inventory._visible = true; this.inventory.level = this.current_slot.level; this.inventory.sync(); (Core.Get()).playSound('popup'); }; v2.onInventoryUse = function (id_) { var v3 = this.inventory.getItemFromCell(id_); var v2 = (Core.Get()).world.items[v3]; var v4 = v2.level; if (v4 <= this.current_slot.level) { (Core.Get()).playSound('item_take'); } else { (Core.Get()).playSound('item_put'); return undefined; } this.state = EBattle.USE_ITEM; this.active_item = v3; this.atk_mode = v2.type2; this.inventory._visible = false; if (undefined == v2.heal) { this.enableEnemies(); } else { this.enableFriends(); } }; v2.onPlayerCancel = function (i_) { (Core.Get()).playSound('button_click'); switch (this.state) { case EBattle.ATTACK: this.disableEnemies(); break; case EBattle.INVENTORY: this.inventory._visible = false; break; case EBattle.USE_ITEM: this.disableEnemies(); this.disableFriends(); break; case EBattle.USE_DEVICE: this.disableEnemies(); this.disableFriends(); } this.state = EBattle.NONE; this.current_slot.resetControls(); }; v2.onEnemyTargeted = function (i_) { if (this.state == EBattle.ATTACK || this.state == EBattle.USE_ITEM || this.state == EBattle.USE_DEVICE) { this.dehiliteTargets(); var v2 = []; switch (this.atk_mode) { case EWeapon.MELEE: if (this.enemy_has_first_rank == this.isFirstRank(i_)) { v2 = [i_]; } break; case EWeapon.SINGLE: v2 = [i_]; break; case EWeapon.BURST: switch (this.current_slot.id) { case 0: switch (i_) { case 0: case 4: v2 = [0, 4]; break; case 1: case 5: case 6: if (this.enemy_slots[1].isAlive()) { v2 = [1, 5, 6]; } else { v2 = [i_]; } break; case 2: case 7: v2 = [2, 7]; break; case 3: v2 = [3]; } break; case 1: switch (i_) { case 0: case 4: v2 = [0, 4]; break; case 1: case 5: v2 = [1, 5]; break; case 2: case 6: case 7: if (this.enemy_slots[2].isAlive()) { v2 = [2, 6, 7]; } else { v2 = [i_]; } break; case 3: v2 = [3]; } break; case 2: switch (i_) { case 0: v2 = [0]; break; case 1: case 4: case 5: if (this.enemy_slots[1].isAlive()) { v2 = [1, 4, 5]; } else { v2 = [i_]; } break; case 2: case 6: v2 = [2, 6]; break; case 3: case 7: v2 = [3, 7]; } break; case 3: switch (i_) { case 0: v2 = [0]; break; case 1: case 4: v2 = [1, 4]; break; case 2: case 5: case 6: v2 = [2, 5, 6]; break; if (this.enemy_slots[2].isAlive()) { v2 = [2, 5, 6]; } else { v2 = [i_]; } break; case 3: case 7: v2 = [3, 7]; } } break; case EWeapon.SHOT: if (this.enemy_has_first_rank) { v2 = [0, 1, 2, 3]; } else { v2 = [4, 5, 6, 7]; } break; case EWeapon.SPLASH: switch (i_) { case 0: case 4: v2 = [0, 1, 4, 5]; break; case 1: case 5: v2 = [0, 1, 2, 4, 5, 6]; break; case 2: case 6: v2 = [1, 2, 3, 5, 6, 7]; break; case 3: case 7: v2 = [2, 3, 6, 7]; } break; case EWeapon.MASSIVE: v2 = [0, 1, 2, 3, 4, 5, 6, 7]; } this.current_targets = []; var v6 = v2.length; var v4 = 0; while (v4 < v6) { var v3 = v2[v4]; if (this.enemy_slots[v3].isAlive()) { this.current_targets.push(this.enemy_slots[v3]); this.enemy_slots[v3].hilite(); } ++v4; } } }; v2.onEnemyUntargeted = function (i_) { if (this.state == EBattle.ATTACK || this.state == EBattle.USE_ITEM || this.state == EBattle.USE_DEVICE) { this.dehiliteTargets(); } }; v2.dehiliteTargets = function () { var v3 = this.enemy_slots.length; var v2 = 0; while (v2 < v3) { if (this.enemy_slots[v2].isAlive()) { this.enemy_slots[v2].dehilite(); } ++v2; } }; v2.onEnemyAttacked = function (i_) { if (this.current_targets.length) { if (this.state == EBattle.ATTACK) { this.disableEnemies(); this.dehiliteTargets(); this.doAttack(this.current_slot, this.current_targets); this.playerTurnEnd(); } else { if (this.state == EBattle.USE_ITEM) { this.disableEnemies(); this.dehiliteTargets(); this.useItem(this.current_slot, this.current_targets, this.active_item); this.playerTurnEnd(); } else { if (this.state == EBattle.USE_DEVICE) { this.disableEnemies(); this.dehiliteTargets(); this.useDevice(this.current_slot, this.current_targets); this.playerTurnEnd(); } } } } }; v2.enableEnemies = function () { var v3 = this.enemy_alive.length; var v2 = 0; while (v2 < v3) { this.enemy_slots[this.enemy_alive[v2]].enable(); ++v2; } }; v2.disableEnemies = function () { var v3 = this.enemy_alive.length; var v2 = 0; while (v2 < v3) { this.enemy_slots[this.enemy_alive[v2]].disable(); ++v2; } }; v2.enableFriends = function () { var v3 = this.player_alive.length; var v2 = 0; while (v2 < v3) { this.player_slots[this.player_alive[v2]].enable(); ++v2; } }; v2.disableFriends = function () { var v3 = this.player_alive.length; var v2 = 0; while (v2 < v3) { this.player_slots[this.player_alive[v2]].disable(); ++v2; } }; v2.onFriendTargeted = function (i_) { if (this.state == EBattle.USE_ITEM || this.state == EBattle.USE_DEVICE) { this.dehiliteHealTargets(); var v4 = []; switch (this.atk_mode) { case EWeapon.MELEE: case EWeapon.SINGLE: case EWeapon.BURST: v4 = [i_]; break; case EWeapon.SHOT: case EWeapon.MASSIVE: v4 = [0, 1, 2, 3]; break; case EWeapon.SPLASH: switch (i_) { case 0: v4 = [0, 1]; break; case 1: v4 = [0, 1, 2]; break; case 2: v4 = [1, 2, 3]; break; case 3: v4 = [2, 3]; } break; case EWeapon.SELF: v4 = [this.current_slot.id]; } this.current_targets = []; var v5 = v4.length; var v3 = 0; while (v3 < v5) { var v2 = v4[v3]; if (this.player_slots[v2].isAlive()) { this.current_targets.push(this.player_slots[v2]); this.player_slots[v2].hiliteHeal(); } ++v3; } } }; v2.onFriendUntargeted = function (i_) { if (this.state == EBattle.USE_ITEM || this.state == EBattle.USE_DEVICE) { this.dehiliteHealTargets(); } }; v2.dehiliteHealTargets = function () { var v3 = this.player_slots.length; var v2 = 0; while (v2 < v3) { if (this.player_slots[v2].isAlive()) { this.player_slots[v2].dehiliteHeal(); } ++v2; } }; v2.onFriendHealed = function (i_) { if (this.current_targets.length) { if (this.state == EBattle.USE_ITEM) { this.disableFriends(); this.dehiliteHealTargets(); this.useItem(this.current_slot, this.current_targets, this.active_item); this.playerTurnEnd(); } else { if (this.state == EBattle.USE_DEVICE) { this.disableFriends(); this.dehiliteHealTargets(); this.useDevice(this.current_slot, this.current_targets); this.playerTurnEnd(); } } } }; v2.effectRun = function (atk_) { var v2 = this.land_eff_ori.attachMovie('run_trace', '', this.land_eff_ori.getNextHighestDepth()); v2._x = atk_.run_to.x; v2._y = atk_.run_to.y; var v4 = v2._x - atk_.base_pos.x; var v3 = v2._y - atk_.base_pos.y; var v6 = Math.sqrt(v4 * v4 + v3 * v3); v2._xscale = (v6 / 200) * 100; v2._rotation = 180 + Math.atan2(v3, v4) * 180 / Math.PI; v2.blendMode = 'add'; v2.gotoAndPlay('run'); }; v2.effectRunBack = function (atk_) { var v2 = this.land_eff_ori.attachMovie('run_trace', '', this.land_eff_ori.getNextHighestDepth()); v2._x = atk_.run_from.x; v2._y = atk_.run_from.y; var v4 = v2._x - atk_.run_to.x; var v3 = v2._y - atk_.run_to.y; var v6 = Math.sqrt(v4 * v4 + v3 * v3); v2._xscale = (v6 / 200) * 100; v2._rotation = 180 + Math.atan2(v3, v4) * 180 / Math.PI; v2.blendMode = 'add'; v2.gotoAndPlay('run_back'); }; v2.useDevice = function (atk_, targets_) { this.animation = true; atk_.useDevice(); switch (atk_.device) { case 80: case 81: case 82: case 83: case 114: case 118: case 128: case 129: case 135: case 137: var v8 = targets_.length; var v3 = 0; while (v3 < v8) { var v6 = targets_[v3]; if (v6.tryHitDevice(atk_.device)) { var v7 = 0; switch (atk_.device) { case 118: v7 = v6.cur_hp * ex.randomIntIn(30, 60) / 100; break; case 129: v7 = 999; break; default: v7 = atk_.getDeviceDamage(); } if (114 == atk_.device) { v6.takeDamage(v7, EHit.DISCHARGE); } else { v6.takeDamage(v7, EHit.POISON); } if (137 == atk_.device) { atk_.takeDamage(50, EHit.POISON); atk_.syncHP(); } v6.syncHP(); } ++v3; } break; case 90: case 91: case 92: atk_.addDeviceEffect(atk_.device); atk_.defendNoReset(); break; case 108: case 109: case 110: case 120: var v8 = targets_.length; var v3 = 0; while (v3 < v8) { var v6 = targets_[v3]; var v4 = 0; switch (atk_.device) { case 120: v4 = v6.max_hp * 20 / 100; break; default: v4 = atk_.getDeviceHeal(); } v6.takeDamage(v4, EHit.HEAL); ++v3; } break; case 116: case 117: case 136: var v8 = targets_.length; var v3 = 0; while (v3 < v8) { var v6 = targets_[v3]; var v7 = atk_.getDeviceDamage(); v6.takeDamage(v7, EHit.POISON); v6.addDeviceEffect(atk_.device); v6.syncHP(); ++v3; } break; default: var v8 = targets_.length; var v3 = 0; while (v3 < v8) { var v6 = targets_[v3]; v6.addDeviceEffect(atk_.device); ++v3; } } this.need_sync_alive_player = true; this.need_sync_alive_enemy = true; }; v2.onMouse = function () { if (!this.enabled) { return undefined; } if (this.inventory._visible && this.inventory.hitTest(this._xmouse, this._ymouse)) { var v2 = this.inventory.getPosAt(this._xmouse, this._ymouse); var v3 = this.inventory.src; var v4 = (0 <= v2 && v2 < v3.length) ? v3[v2].item : -1; this.tooltip.setItem(v4, true); if (-1 != v4) { this.placeTooltip(); } return undefined; } this.tooltip.setItem(-1); }; v2.placeTooltip = function () { var v5 = (Core.Get()).cfg; var v2 = v5.scr_size; this.tooltip._x = this._xmouse - 32; this.tooltip._y = this._ymouse + 16; var v3 = this.tooltip._x + this.tooltip._width + 8 - v2.x; if (v3 > 0) { this.tooltip._x -= v3; } var v4 = this.tooltip._y + this.tooltip._height + 8 - v2.y; if (v4 > 0) { this.tooltip._y = this._ymouse - 8 - this.tooltip._height; } }; v2.enable = function () { this.enabled = true; this.btn_skip.enable(); this.btn_enkord.enabled = true; }; v2.disable = function () { this.enabled = false; this.btn_skip.disable(); this.btn_enkord.enabled = false; }; ASSetPropFlags(_global.ScreenBattle.prototype, null, 1); } #endinitclip } movieClip 1981 __Packages.EBattle { #initclip if (!_global.EBattle) { var v1 = function () {}; _global.EBattle = v1; var v2 = v1.prototype; v1.NONE = 0; v1.ATTACK = 1; v1.INVENTORY = 2; v1.USE_ITEM = 3; v1.USE_DEVICE = 4; ASSetPropFlags(_global.EBattle.prototype, null, 1); } #endinitclip } movieClip 1982 __Packages.TeamSlot { #initclip if (!_global.TeamSlot) { var v1 = function () { super(); this.char.stop(); this.btn = this.btn; this.back.stop(); }; _global.TeamSlot = v1; _global.TeamSlot extends MovieClip; var v2 = v1.prototype; v2.init = function (id_, onPress_, onRelease_) { onPress_.id = id_; this.btn.onPress = onPress_; onRelease_.id = id_; this.btn.onRelease = onRelease_; this.btn.onReleaseOutside = onRelease_; }; v2.setChar = function (id) { if (id >= 0) { var v6 = (Core.Get()).world; var v8 = v6.chars[id]; var v5 = (Core.Get()).game; var v2 = v5.stats[id]; this.name.text = v8.name; this.char.gotoAndStop(id + 1); this.char._visible = true; var v9 = 20 + v2.vit; var v4 = v2.def * 0.1; var v7 = v5.equipment[id].armor; if (v7 >= 0) { v4 += v6.items[v7].dr; } var v10 = 2 * v2.tch; this.hp.text = v9; this.dr.text = Math.round(v4); this.ep.text = v10; this.btn.enable(); } else { this.name.text = '---'; this.char._visible = false; this.hp.text = '-'; this.dr.text = '-'; this.ep.text = '-'; this.btn.disable(); } }; v2.flip = function () { this.char._xscale = -100; }; v2.isHit = function (x_, y_) { return this.btn.hitTest(x_, y_); }; v2.enter = function () { this.btn.enter(); }; v2.leave = function () { this.btn.leave(); }; v2.hilite = function () { this.btn.hilite(); }; v2.dehilite = function () { this.btn.dehilite(); }; v2.setBack = function (frame_) { this.back.gotoAndStop(frame_); }; v2.setGlow = function (color_) { this.char.filters = [Filters.GlowLight(color_)]; }; ASSetPropFlags(_global.TeamSlot.prototype, null, 1); } #endinitclip } movieClip 1983 __Packages.TooltipChar { #initclip if (!_global.TooltipChar) { var v1 = function () { super(); this.id = -1; this._visible = false; }; _global.TooltipChar = v1; _global.TooltipChar extends MovieClip; var v2 = v1.prototype; v2.setChar = function (id_) { if (this.id == id_) { return undefined; } this.id = id_; if (id_ < 0) { this._visible = false; } else { this._visible = true; var v4 = (Core.Get()).world.chars[this.id]; var v2 = (Core.Get()).game.stats[this.id]; this.level.text = v2.level; this.exp._visible = v2.level < 30; this.exp._xscale = 100 * v2.exp / (Core.Get()).world.level_exp[v2.level]; this.name.text = v4.name; this.vit.text = v2.vit; this.acc.text = v2.acc; this.def.text = v2.def; this.dgr.text = v2.dgr; this.tch.text = v2.tch; this.med.text = v2.med; this.lck.text = v2.lck; var v3 = (Core.Get()).world.perks[this.id]; this.perk1.caption.text = v3[0].name; this.perk1.descri.text = v3[0].descri; this.perk2.caption.text = v3[1].name; this.perk2.descri.text = v3[1].descri; this.perk3.caption.text = v3[2].name; this.perk3.descri.text = v3[2].descri; this.perk1.caption.filters = v2.perk1 ? [] : [Filters.BlurDeep()]; this.perk1.descri.filters = v2.perk1 ? [] : [Filters.BlurDeep()]; this.perk2.caption.filters = v2.perk2 ? [] : [Filters.BlurDeep()]; this.perk2.descri.filters = v2.perk2 ? [] : [Filters.BlurDeep()]; this.perk3.caption.filters = v2.perk3 ? [] : [Filters.BlurDeep()]; this.perk3.descri.filters = v2.perk3 ? [] : [Filters.BlurDeep()]; } }; ASSetPropFlags(_global.TooltipChar.prototype, null, 1); } #endinitclip } movieClip 1984 __Packages.ScreenTeam { #initclip if (!_global.ScreenTeam) { var v1 = function () { super(); Log.Msg('ScreenTeam::ScreenTeam()'); this.game = (Core.Get()).game; this.team_slots = new Array(); this.team_slots.push(this.slotA); this.team_slots.push(this.slotB); this.team_slots.push(this.slotC); this.team_slots.push(this.slotD); this.team_slots.push(this.slot1); this.team_slots.push(this.slot2); this.team_slots.push(this.slot3); this.team_slots.push(this.slot4); this.team_slots.push(this.slot5); this.team_slots.push(this.slot6); this.team_slots.push(this.slot7); this.team_slots.push(this.slot8); this.drag_obj = null; this.hover_slot = -1; this.tooltip = this.tooltip; this.onMouseMove = mx.utils.Delegate.create(this, this.onMouse); }; _global.ScreenTeam = v1; _global.ScreenTeam extends Screen; var v2 = v1.prototype; v2.init = function () { (Core.Get()).switchMusic(0); var v4 = this.team_slots.length; var v2 = 0; while (v2 < v4) { var v3 = this.team_slots[v2]; v3.init(v2, mx.utils.Delegate.create(this, this.onSlotDrag), mx.utils.Delegate.create(this, this.onSlotDrop)); v3.setChar(this.game.team[v2]); if (v2 < 4) { v3.flip(); v3.setBack(1 + v2 % 2); v3.setGlow(13434828); } else { v3.setBack(3 + (v2 % 2 + Math.floor((v2 - 4) / 4)) % 2); v3.setGlow(16777215); } ++v2; } this.tooltip.setChar(-1); this.btn_lvl_up.setCaption('+lvl'); this.btn_lvl_down.setCaption('-lvl'); this.btn_lvl_max.setCaption('30'); this.btn_all.setCaption('ALL'); this.btn_lvl_up.setOnClick(mx.utils.Delegate.create(this, this.onLevelUp)); this.btn_lvl_down.setOnClick(mx.utils.Delegate.create(this, this.onLevelDown)); this.btn_lvl_max.setOnClick(mx.utils.Delegate.create(this, this.onLevelMax)); this.btn_all.setOnClick(mx.utils.Delegate.create(this, this.onAll)); if (!(Core.Get()).debug_mode) { this.btn_lvl_up._visible = false; this.btn_lvl_down._visible = false; this.btn_lvl_max._visible = false; this.btn_all._visible = false; } }; v2.sync = function () { var v4 = this.team_slots.length; var v2 = 0; while (v2 < v4) { var v3 = this.team_slots[v2]; v3.setChar(this.game.team[v2]); ++v2; } }; v2.onLevelUp = function () { var v3 = this.game.stats.length; var v2 = 0; while (v2 < v3) { if (this.game.stats[v2].level < 30) { ++this.game.stats[v2].level; this.game.stats[v2].exp = 0; this.game.syncCharStats(v2); } ++v2; } this.sync(); }; v2.onLevelDown = function () { var v3 = this.game.stats.length; var v2 = 0; while (v2 < v3) { if (this.game.stats[v2].level > 1) { --this.game.stats[v2].level; this.game.stats[v2].exp = 0; this.game.syncCharStats(v2); } ++v2; } this.sync(); }; v2.onLevelMax = function () { var v3 = this.game.stats.length; var v2 = 0; while (v2 < v3) { this.game.stats[v2].level = 30; this.game.stats[v2].exp = 0; this.game.syncCharStats(v2); ++v2; } this.sync(); }; v2.onAll = function () { var v3 = (Core.Get()).game; var v4 = v3.stats.length; var v2 = 0; while (v2 < v4) { if (!v3.isInTeam(v2)) { v3.joinTeam(v2); } ++v2; } this.sync(); }; v2.onMouse = function () { if (!this.enabled) { return undefined; } var v4 = -1; var v5 = this.team_slots.length; var v2 = 0; while (v2 < v5) { var v3 = this.team_slots[v2]; if (v3.isHit(this._xmouse, this._ymouse)) { v4 = v2; break; } ++v2; } if (this.drag_obj || -1 == v4) { this.tooltip.setChar(-1); } else { this.tooltip.setChar(this.game.team[v4]); this.placeTooltip(); } if (this.hover_slot == v4) { return undefined; } if (this.hover_slot != -1) { this.team_slots[this.hover_slot].leave(); } this.hover_slot = v4; this.team_slots[this.hover_slot].enter(); }; v2.onSlotDrag = function () { this.hiliteAllSlots(arguments.caller.id); var v3 = 1 + this.game.team[arguments.caller.id]; this.drag_obj = this.attachMovie('char_drag', 'drag_obj', this.getNextHighestDepth()); this.drag_obj.gotoAndStop(v3); this.drag_obj.startDrag(false, 0, 0, 480, 320); this.drag_obj._x = this._xmouse; this.drag_obj._y = this._ymouse; this.drag_obj.filters = [Filters.Shadow()]; this.tooltip.setChar(-1); (Core.Get()).playSound('button_click'); }; v2.onSlotDrop = function () { if (this.drag_obj) { this.dehiliteAllSlots(); this.exchangeSlots(arguments.caller.id, this.hover_slot); this.drag_obj.stopDrag(); this.drag_obj.removeMovieClip(); this.drag_obj = null; this.onMouse(); (Core.Get()).playSound('button_click'); } }; v2.exchangeSlots = function (from_, to_) { if (to_ < 0 || from_ == to_) { return undefined; } if (this.game.team[from_] == 0 && to_ > 3 || this.game.team[to_] == 0 && from_ > 3) { return undefined; } var v4 = this.game.team[from_]; this.game.team[from_] = this.game.team[to_]; this.game.team[to_] = v4; this.team_slots[from_].setChar(this.game.team[from_]); this.team_slots[to_].setChar(this.game.team[to_]); }; v2.hiliteAllSlots = function (dragged_) { var v6 = 0 == this.game.team[dragged_]; var v4 = this.team_slots.length; if (v6) { v4 = 4; } var v2 = 0; while (v2 < v4) { if (v2 < 4) { if (0 == this.game.team[v2]) { if (dragged_ > 3) { } else { var v3 = this.team_slots[v2]; v3.hilite(); } } } ++v2; } }; v2.dehiliteAllSlots = function () { var v4 = this.team_slots.length; var v2 = 0; while (v2 < v4) { var v3 = this.team_slots[v2]; v3.dehilite(); ++v2; } }; v2.placeTooltip = function () { var v5 = (Core.Get()).cfg; var v2 = v5.scr_size; this.tooltip._x = this._xmouse - 32; this.tooltip._y = this._ymouse + 16; var v3 = this.tooltip._x + this.tooltip._width + 8 - v2.x; if (v3 > 0) { this.tooltip._x -= v3; } var v4 = this.tooltip._y + this.tooltip._height + 8 - v2.y; if (v4 > 0) { this.tooltip._y = this._ymouse - 8 - this.tooltip._height; } }; ASSetPropFlags(_global.ScreenTeam.prototype, null, 1); } #endinitclip } movieClip 1985 __Packages.EquipSlot { #initclip if (!_global.EquipSlot) { var v1 = function () { super(); this.char.stop(); this.char.filters = [Filters.GlowLight(13434828)]; this.slotW = this.slotW; this.slotA = this.slotA; this.slotD = this.slotD; this.char_id = -1; }; _global.EquipSlot = v1; _global.EquipSlot extends MovieClip; var v2 = v1.prototype; v2.init = function (i_, cb1_, cb2_) { this.slotW.init(100 * i_ + EItem.WEAPON, cb1_, cb2_, cb2_); this.slotW.setFixed(EItem.WEAPON); this.slotW.setItem(-1); this.slotA.init(100 * i_ + EItem.ARMOR, cb1_, cb2_, cb2_); this.slotA.setFixed(EItem.ARMOR); this.slotA.setItem(-1); this.slotD.init(100 * i_ + EItem.DEVICE, cb1_, cb2_, cb2_); this.slotD.setFixed(EItem.DEVICE); this.slotD.setItem(-1); }; v2.getItem = function (ty_) { var v2 = null; switch (ty_) { return v2.getItem(); case EItem.WEAPON: v2 = this.slotW; return v2.getItem(); case EItem.ARMOR: v2 = this.slotA; return v2.getItem(); case EItem.DEVICE: v2 = this.slotD; } return v2.getItem(); }; v2.setChar = function (id_) { this.char_id = id_; if (id_ >= 0) { var v5 = (Core.Get()).world; var v4 = v5.chars[id_]; this.name.text = v4.name; this.char.gotoAndStop(id_ + 1); this.char._visible = true; this.filters = []; var v3 = (Core.Get()).game; this.slotW.setItem(v3.equipment[id_].weapon); this.slotA.setItem(v3.equipment[id_].armor); this.slotD.setItem(v3.equipment[id_].device); } else { this.name.text = '---'; this.char._visible = false; this.filters = [Filters.Desaturator()]; this.slotW.setItem(-1, false); this.slotA.setItem(-1); this.slotD.setItem(-1); } }; v2.flip = function () { this.char._xscale = -100; }; v2.giveItem = function (id_) { if (-1 == this.char_id || !this.acceptItem(id_)) { return id_; } var v6 = (Core.Get()).world; var v4 = v6.getItemType(id_); var v2 = null; switch (v4) { case EItem.WEAPON: v2 = this.slotW; var v5 = v2.getItem(); v2.setItem(id_); (Core.Get()).game.equip(this.char_id, v4, id_); return v5; case EItem.ARMOR: v2 = this.slotA; var v5 = v2.getItem(); v2.setItem(id_); (Core.Get()).game.equip(this.char_id, v4, id_); return v5; case EItem.DEVICE: v2 = this.slotD; var v5 = v2.getItem(); v2.setItem(id_); (Core.Get()).game.equip(this.char_id, v4, id_); return v5; } return id_; var v5 = v2.getItem(); v2.setItem(id_); (Core.Get()).game.equip(this.char_id, v4, id_); return v5; }; v2.acceptItem = function (item_) { if (-1 == this.char_id) { return false; } var v2 = (Core.Get()).world.items[item_]; if (v2.alien && this.char_id != 5) { return false; } if (v2.hell && this.char_id != 11) { return false; } if (v2.type == EItem.DEVICE && v2.type2 != EWeapon.PASSIVE) { var v5 = (Core.Get()).game.stats[this.char_id].tch * 2; if (v2.energy > v5) { return false; } } var v3 = 0; if (v2.type == EItem.WEAPON) { var v4 = this.slotD.getItem(); if (v4 == 130) { v3 = 2; var v6 = v2.level; var v7 = (Core.Get()).game.stats[this.char_id].level + v3; return v6 <= v7; } if (v4 == 131) { v3 = 5; } } var v6 = v2.level; var v7 = (Core.Get()).game.stats[this.char_id].level + v3; return v6 <= v7; }; v2.removeItem = function (item_) { var v4 = (Core.Get()).world; var v3 = v4.getItemType(item_); (Core.Get()).game.equip(this.char_id, v3, -1); var v2 = null; switch (v3) { case EItem.WEAPON: v2 = this.slotW; break; case EItem.ARMOR: v2 = this.slotA; break; case EItem.DEVICE: v2 = this.slotD; } v2.setItem(-1); }; v2.hilite = function (type_) { var v2 = null; switch (type_) { case EItem.WEAPON: v2 = this.slotW; break; case EItem.ARMOR: v2 = this.slotA; break; case EItem.DEVICE: v2 = this.slotD; } v2.hilite(); }; v2.dehilite = function () { this.slotW.dehilite(); this.slotA.dehilite(); this.slotD.dehilite(); }; v2.setBack = function (alpha_) { this.back._alpha = alpha_; }; v2.setGlow = function () { this.slotW.setGlow(16777215); this.slotA.setGlow(16777215); this.slotD.setGlow(16777215); }; ASSetPropFlags(_global.EquipSlot.prototype, null, 1); } #endinitclip } movieClip 1986 __Packages.ScrollBar { #initclip if (!_global.ScrollBar) { var v1 = function () { super(); this.coord_min = 0; this.coord_max = this.btn_down._y - this.btn_up._y - 30; this.value_min = 0; this.value_max = 0; this.value = 0; this.value_inc = 1; this.scrolling = false; this.btn = this.btn; this.btn.onPress = mx.utils.Delegate.create(this, this.onScrollStart); this.btn.onReleaseOutside = mx.utils.Delegate.create(this, this.onScrollEnd); this.btn.onRelease = this.btn.onReleaseOutside; this.btn_up.onRelease = mx.utils.Delegate.create(this, this.onScrollUp); this.btn_down.onRelease = mx.utils.Delegate.create(this, this.onScrollDown); }; _global.ScrollBar = v1; _global.ScrollBar extends MovieClip; var v2 = v1.prototype; v2.onMouseMove = function () { if (this.scrolling) { if (Math.abs(this._xmouse) > 32) { this.scrolling = false; } var v3 = this.btn._y; var v2 = this._ymouse; v2 = Math.floor(v2 + 0.5); if (v2 < this.coord_min) { v2 = this.coord_min; } if (v2 > this.coord_max) { v2 = this.coord_max; } if (v2 != v3) { this.btn._y = v2; this.doScroll(); } } }; v2.onScrollStart = function () { this.scrolling = true; }; v2.onScrollEnd = function () { this.scrolling = false; }; v2.setValueBounds = function (val1_, val2_) { this.value_min = val1_; this.value_max = val2_; this.sync(); if (this.value_min == this.value_max) { this.filters = [Filters.Desaturator()]; this.btn.enabled = false; this.btn_up.enabled = false; this.btn_down.enabled = false; this.enabled = false; } else { this.filters = []; this.btn.enabled = true; this.btn_up.enabled = true; this.btn_down.enabled = true; this.enabled = true; } }; v2.setValue = function (val_) { this.value = val_; this.sync(); }; v2.sync = function () { var v3 = this.value_max - this.value_min; var v4 = (v3 != 0) ? (this.value - this.value_min) / v3 : 0; var v2 = this.coord_min + (this.coord_max - this.coord_min) * v4; v2 = Math.floor(v2 + 0.5); this.btn._y = v2; }; v2.reScroll = function () { if (this.value < this.value_min) { this.value = this.value_min; this.sync(); this.cbScroll(this.value); } else { if (this.value > this.value_max) { this.value = this.value_max; this.sync(); this.cbScroll(this.value); } } }; v2.doScroll = function () { var v3 = this.value; var v2 = this.coord_max - this.coord_min; var v4 = (v2 != 0) ? (this.btn._y - this.coord_min) / v2 : 0; this.value = this.value_min + (this.value_max - this.value_min) * v4; this.value = Math.floor(this.value + 0.5); if (v3 != this.value) { this.cbScroll(this.value); } }; v2.onScrollUp = function () { if (this.value > this.value_min) { this.value -= this.value_inc; if (this.value < this.value_min) { this.value = this.value_min; } this.sync(); this.cbScroll(this.value); } }; v2.onScrollDown = function () { if (this.value < this.value_max) { this.value += this.value_inc; if (this.value > this.value_max) { this.value = this.value_max; } this.sync(); this.cbScroll(this.value); } }; v2.scrollUp = function () { this.onScrollUp(); }; v2.scrollDown = function () { this.onScrollDown(); }; ASSetPropFlags(_global.ScrollBar.prototype, null, 1); } #endinitclip } movieClip 1987 __Packages.ScreenItems { #initclip if (!_global.ScreenItems) { var v1 = function () { super(); Log.Msg('ScreenItems::ScreenItems()'); this.game = (Core.Get()).game; this.equip_slots = new Array(); this.equip_slots.push(this.slot1); this.equip_slots.push(this.slot2); this.equip_slots.push(this.slot3); this.equip_slots.push(this.slot4); this.btn_sort = this.btn_sort; this.inventory = this.inventory; this.drag_obj = null; this.syncMoney(); this.scroll = this.scroll; this.tooltip = this.tooltip; (Core.Get()).onMouseWheel = mx.utils.Delegate.create(this, this.onMouseWheel); }; _global.ScreenItems = v1; _global.ScreenItems extends Screen; var v2 = v1.prototype; v2.syncMoney = function () { var v2 = '€' + ex.formatNumberCommas(this.game.money); this.money.text = v2; }; v2.init = function () { (Core.Get()).switchMusic(0); var v4 = this.equip_slots.length; var v2 = 0; while (v2 < v4) { var v3 = this.equip_slots[v2]; v3.init(v2 + 1, mx.utils.Delegate.create(this, this.onEquipDrag), mx.utils.Delegate.create(this, this.onEquipDrop)); v3.setChar(this.game.team[v2]); v3.flip(); v3.setBack(40 + 20 * (1 - v2 % 2)); v3.setGlow(); ++v2; } this.inventory.init('', (Core.Get()).cfg.inventory_size, mx.utils.Delegate.create(this, this.onInventoryDrag), mx.utils.Delegate.create(this, this.onInventoryDrop)); this.btn_sort.setCaption((Core.Get()).locale.btn.sort); this.btn_sort.setOnClick(mx.utils.Delegate.create(this, this.sortInventory)); this.setScrollBounds(); this.scroll.cbScroll = mx.utils.Delegate.create(this, this.onScroll); this.scroll.setValue(0); this.tooltip.setItem(-1); this.onMouseMove = mx.utils.Delegate.create(this, this.onMouse); this.btn_all.setCaption('idkfa'); this.btn_all.setOnClick(mx.utils.Delegate.create(this, this.onAllClick)); if (!(Core.Get()).debug_mode) { this.btn_all._visible = false; } }; v2.onAllClick = function () { (Core.Get()).game.inventory.splice(0, (Core.Get()).game.inventory.length); var v3 = (Core.Get()).world.items.length; var v2 = 1; while (v2 < v3) { if (v2 != 133 && v2 != 134 && v2 != 145) { (Core.Get()).game.inventory.push({'item': v2, 'count': 4}); } ++v2; } this.inventory.sync(); this.setScrollBounds(); }; v2.setScrollBounds = function () { this.scroll.setValueBounds(0, this.inventory.getMaxScroll()); }; v2.onScroll = function (val_) { this.inventory.scrollTo(val_); }; v2.onInventoryDrag = function (i_) { var v2 = this.inventory.getItemFromCell(i_); this.dragItem(v2); (Core.Get()).playSound('item_take'); }; v2.dragItem = function (item_) { this.hiliteSlots(item_); var v2 = 1 + item_; this.drag_obj = this.attachMovie('item', 'drag_obj', this.getNextHighestDepth()); this.drag_obj.gotoAndStop(v2); this.drag_obj.startDrag(false, 0, 0, 480, 320); this.drag_obj._x = this._xmouse - 45; this.drag_obj._y = this._ymouse - 27; this.drag_obj.filters = [Filters.Shadow()]; this.tooltip.setItem(-1); }; v2.onInventoryDrop = function (i_) { var v6 = false; var v7 = this.equip_slots.length; var v5 = 0; while (v5 < v7) { var v2 = this.equip_slots[v5]; if (v2.hitTest(this._xmouse, this._ymouse)) { var v3 = this.inventory.getItemFromCell(i_); var v4 = v2.giveItem(v3); if (v4 != v3) { this.game.takeInventory(v3); if (v4 != -1) { this.game.putInventory(v4); } this.inventory.sync(); } this.checkSlot(v2); v6 = true; break; } ++v5; } if (!v6 && this.inventory.hitTest(this._xmouse, this._ymouse)) { var v9 = this.inventory.getPosFromCell(i_); var v10 = this.inventory.getPosAt(this._xmouse, this._ymouse); if (v9 != v10) { this.game.moveInventoryItem(v9, v10); this.inventory.sync(); } } this.dehiliteSlots(); this.drag_obj.stopDrag(); this.drag_obj.removeMovieClip(); this.drag_obj = null; (Core.Get()).playSound('item_put'); this.onMouse(); }; v2.onEquipDrag = function (i_) { var v3 = Math.floor(i_ / 100) - 1; var v2 = this.equip_slots[v3].getItem(i_ % 100); this.dragItem(v2); (Core.Get()).playSound('item_take'); }; v2.onEquipDrop = function (i_) { var v6 = Math.floor(i_ / 100) - 1; var v5 = this.equip_slots[v6].getItem(i_ % 100); var v7 = false; var v8 = this.equip_slots.length; var v4 = 0; while (v4 < v8) { var v3 = this.equip_slots[v4]; if (v3.hitTest(this._xmouse, this._ymouse)) { var v2 = v3.giveItem(v5); if (v2 != v5) { this.equip_slots[v6].removeItem(v5); if (v2 != -1) { v2 = this.equip_slots[v6].giveItem(v2); if (v2 != -1) { this.game.putInventory(v2); this.inventory.sync(); } } } this.checkSlot(v3); v7 = true; break; } ++v4; } if (!v7 && this.inventory.hitTest(this._xmouse, this._ymouse)) { this.equip_slots[v6].removeItem(v5); var v9 = this.inventory.getPosAt(this._xmouse, this._ymouse); this.game.putInventoryAt(v5, v9); this.inventory.sync(); } this.checkSlot(this.equip_slots[v6]); this.dehiliteSlots(); this.drag_obj.stopDrag(); this.drag_obj.removeMovieClip(); this.drag_obj = null; (Core.Get()).playSound('item_put'); this.onMouse(); }; v2.checkSlot = function (slot_) { var v2 = slot_.slotW.getItem(); if (!slot_.acceptItem(v2)) { slot_.removeItem(v2); if (v2 >= 0) { this.game.putInventory(v2); this.inventory.sync(); } } }; v2.hiliteSlots = function (item_) { var v4 = (Core.Get()).world.getItemType(item_); switch (v4) { if (v4 !== EItem.DEVICE) { } else { case EItem.WEAPON: break; case EItem.ARMOR: } default: return undefined; } var v5 = this.equip_slots.length; var v2 = 0; while (v2 < v5) { var v3 = this.equip_slots[v2]; if (v3.acceptItem(item_)) { v3.hilite(v4); } ++v2; } }; v2.dehiliteSlots = function () { var v4 = this.equip_slots.length; var v2 = 0; while (v2 < v4) { var v3 = this.equip_slots[v2]; v3.dehilite(); ++v2; } }; v2.sortInventory = function () { this.game.sortInventory(); this.inventory.sync(); }; v2.onMouse = function () { if (!this.enabled) { return undefined; } if (this.drag_obj) { this.tooltip.setItem(-1); return undefined; } if (this.inventory.hitTest(this._xmouse, this._ymouse)) { var v6 = this.inventory.getPosAt(this._xmouse, this._ymouse); var v7 = (Core.Get()).game.inventory; var v3 = (0 <= v6 && v6 < v7.length) ? v7[v6].item : -1; this.tooltip.setItem(v3, true); if (-1 != v3) { this.placeTooltip(); } return undefined; } var v5 = this.equip_slots.length; var v4 = 0; while (v4 < v5) { v3 = -1; var v2 = this.equip_slots[v4]; if (v2.char_id >= 0) { if (v2.slotW.hitTest(this._xmouse, this._ymouse)) { v3 = v2.slotW.getItem(); if (-1 == v3) { v3 = 0; } } else { if (v2.slotA.hitTest(this._xmouse, this._ymouse)) { v3 = v2.slotA.getItem(); } else { if (v2.slotD.hitTest(this._xmouse, this._ymouse)) { v3 = v2.slotD.getItem(); } } } } if (-1 != v3) { this.tooltip.setItem(v3, true); this.placeTooltip(); return undefined; } ++v4; } this.tooltip.setItem(-1); }; v2.placeTooltip = function () { var v5 = (Core.Get()).cfg; var v2 = v5.scr_size; this.tooltip._x = this._xmouse - 32; this.tooltip._y = this._ymouse + 16; var v3 = this.tooltip._x + this.tooltip._width + 8 - v2.x; if (v3 > 0) { this.tooltip._x -= v3; } var v4 = this.tooltip._y + this.tooltip._height + 8 - v2.y; if (v4 > 0) { this.tooltip._y = this._ymouse - 8 - this.tooltip._height; } }; v2.onMouseWheel = function (value) { if (value < 0) { this.scroll.scrollDown(); } else { if (value > 0) { this.scroll.scrollUp(); } } this.onMouse(); }; ASSetPropFlags(_global.ScreenItems.prototype, null, 1); } #endinitclip } movieClip 1988 __Packages.QuestDescri { #initclip if (!_global.QuestDescri) { var v1 = function () { super(); this.items = []; this.y = 0; this.max_y = 261; this.ori.delim._visible = false; }; _global.QuestDescri = v1; _global.QuestDescri extends MovieClip; var v2 = v1.prototype; v2.clear = function () { var v4 = this.items.length; var v2 = 0; while (v2 < v4) { var v3 = this.items[v2]; v3.removeMovieClip(); ++v2; } this.items = []; this.y = 0; this.ori.delim._y = 0; this.ori.delim._visible = false; }; v2.push = function (text_, state_) { var v5 = this.items.length; var v7 = 'item' + v5; var v4 = 'questtext_normal'; switch (state_) { case EQuest.COMPLETE: v4 = 'questtext_complete'; break; case EQuest.FAILED: v4 = 'questtext_failed'; } var v2 = this.ori.attachMovie(v4, v7, v5); v2._y = this.y; this.items.push(v2); var v3 = v2.tf; v3.autoSize = 'left'; v3.wordWrap = true; v3.text = text_; var v6 = Math.round(v3._height); v2.back._height = v6; this.y += v6 + 1; this.ori.delim._y = this.y; this.ori.delim._visible = true; }; v2.scrollTo = function (pos_) { this.ori._y = -pos_; }; ASSetPropFlags(_global.QuestDescri.prototype, null, 1); } #endinitclip } movieClip 1989 __Packages.ScreenTasks { #initclip if (!_global.ScreenTasks) { var v1 = function () { super(); Log.Msg('ScreenTasks::ScreenTasks()'); this.items = false; this.list_offs = 0; this.list_slots = new Array(); this.selected_quest = -1; this.selected_done_quest = -1; this.selected_item = -1; (Core.Get()).onMouseWheel = mx.utils.Delegate.create(this, this.onMouseWheel); }; _global.ScreenTasks = v1; _global.ScreenTasks extends Screen; var v2 = v1.prototype; v2.init = function () { (Core.Get()).switchMusic(0); this.btn_tasks.setCaption((Core.Get()).locale.btn.tasks); this.btn_tasks.setOnClick(mx.utils.Delegate.create(this, this.onBtnTasksClick)); this.btn_done.setCaption((Core.Get()).locale.btn.done); this.btn_done.setOnClick(mx.utils.Delegate.create(this, this.onBtnDoneClick)); this.btn_items.setCaption((Core.Get()).locale.btn.items); this.btn_items.setOnClick(mx.utils.Delegate.create(this, this.onBtnItemsClick)); this.btn_tasks.push(); var v9 = (Core.Get()).cfg; var v8 = v9.tasklist_size; var v7 = v9.tasklist_grid; var v6 = 0; var v5 = 0; var v3 = 0; while (v3 < v8.y) { var v4 = 'slot' + v3; this.tasklist.attachMovie('taskslot', v4, v5); var v2 = this.tasklist[v4]; v2.init(v5, mx.utils.Delegate.create(this, this.onSlotClick)); v2._y = v6; this.list_slots.push(v2); ++v3; v6 += v7.y; ++v5; } this.initQuestLists(); this.syncListQuests(); this.scroll_list.cbScroll = mx.utils.Delegate.create(this, this.onScrollList); this.scroll_descri.cbScroll = mx.utils.Delegate.create(this, this.onScrollDescri); this.scroll_descri.value_inc = 12; this.calibrateListScroll(); this.scroll_descri.setValueBounds(0, 0); }; v2.initQuestLists = function () { this.quest_data = []; this.done_quest_data = []; var v6 = (Core.Get()).game; var v7 = v6.quests.length; var v3 = 0; while (v3 < v7) { var v4 = v6.quests[v3 + this.list_offs]; var v2 = {'quest': v4.quest, 'state': v4.state}; if (v2.state == EQuest.NORMAL) { this.quest_data.push(v2); } else { this.done_quest_data.push(v2); } ++v3; } }; v2.getSelected = function () { if (this.items) { return this.selected_item; } else { if (this.btn_done.isPushed()) { return this.selected_done_quest; } else { return this.selected_quest; } } }; v2.setSelected = function (n_) { if (this.items) { this.selected_item = n_; } else { if (this.btn_done.isPushed()) { this.selected_done_quest = n_; } else { this.selected_quest = n_; } } }; v2.getTotalCount = function () { var v2 = (Core.Get()).game; if (this.items) { return v2.quest_items.length; } else { if (this.btn_done.isPushed()) { return this.done_quest_data.length; } else { return this.quest_data.length; } } }; v2.onScrollList = function (pos_) { if (this.list_offs == pos_) { return undefined; } this.list_offs = pos_; if (this.selected_slot != -1) { this.deselectSlot(); var v3 = this.getSelected(); var v2 = v3; if (v3 < this.list_offs) { v2 = this.list_offs; } if (v3 > this.list_offs + this.list_slots.length - 1) { v2 = this.list_offs + this.list_slots.length - 1; } if (v2 != v3) { this.syncDescri(v2); this.setSelected(v2); } this.selectSlot(v2 - this.list_offs); } if (this.items) { this.syncListItems(); } else { this.syncListQuests(); } }; v2.onScrollDescri = function (pos_) { this.descri.scrollTo(pos_); }; v2.calibrateListScroll = function () { var v4 = (Core.Get()).game; var v3 = this.getTotalCount(); var v2 = v3 - this.list_slots.length; if (v2 < 0) { v2 = 0; } this.scroll_list.setValueBounds(0, v2); this.scroll_list.setValue(0); this.list_offs = 0; }; v2.reposListScroll = function () { var v5 = (Core.Get()).game; var v3 = this.getSelected(); if (v3 == -1) { return undefined; } var v2 = this.getTotalCount(); var v4 = this.list_slots.length; if (v2 <= v4) { this.list_offs = 0; } else { if (v3 + v4 <= v2) { this.list_offs = v3; } else { this.list_offs = v2 - v4; } } this.scroll_list.setValue(this.list_offs); }; v2.changeTab = function () { this.deselectSlot(); this.descri.clear(); this.calibrateListScroll(); this.reposListScroll(); this.syncList(); var v2 = this.getSelected(); if (v2 != -1) { this.selectSlot(v2 - this.list_offs); this.syncDescri(v2); } else { this.scroll_descri.setValueBounds(0, 0); this.scroll_descri.setValue(0); this.descri.scrollTo(0); } }; v2.onBtnDoneClick = function () { if (!this.btn_done.isPushed()) { this.btn_items.unpush(); this.btn_done.push(); this.btn_tasks.unpush(); this.items = false; this.changeTab(); } }; v2.onBtnTasksClick = function () { if (!this.btn_tasks.isPushed()) { this.btn_items.unpush(); this.btn_done.unpush(); this.btn_tasks.push(); this.items = false; this.changeTab(); } }; v2.onBtnItemsClick = function () { if (!this.btn_items.isPushed()) { this.btn_tasks.unpush(); this.btn_done.unpush(); this.btn_items.push(); this.items = true; this.changeTab(); } }; v2.syncList = function () { if (this.items) { this.syncListItems(); } else { this.syncListQuests(); } }; v2.syncListItems = function () { var v6 = (Core.Get()).game; var v7 = (Core.Get()).world; var v5 = this.list_slots.length; var v4 = v5; var v9 = v6.quest_items; var v8 = v9.length - this.list_offs; if (v8 < v4) { v4 = v8; } var v3 = 0; while (v3 < v4) { var v2 = this.list_slots[v3]; v2.setCaption(v7.getQuestItemName(v6.quest_items[v3 + this.list_offs].item)); v2.setState(EQuest.NORMAL); v2._visible = true; ++v3; } v3 = v4; while (v3 < v5) { v2 = this.list_slots[v3]; v2.setCaption(''); v2.setState(EQuest.NORMAL); v2._visible = false; ++v3; } }; v2.syncListQuests = function () { var v10 = (Core.Get()).game; var v8 = (Core.Get()).world; var v6 = this.list_slots.length; var v5 = v6; var v7 = this.btn_done.isPushed() ? this.done_quest_data : this.quest_data; var v9 = v7.length - this.list_offs; if (v9 < v5) { v5 = v9; } var v3 = 0; while (v3 < v5) { var v2 = this.list_slots[v3]; var v4 = v7[v3 + this.list_offs]; v2.setCaption(v8.getQuestTitle(v4.quest)); v2.setState(v4.state); v2._visible = true; ++v3; } v3 = v5; while (v3 < v6) { v2 = this.list_slots[v3]; v2.setCaption(''); v2.setState(EQuest.NORMAL); v2._visible = false; ++v3; } }; v2.deselectSlot = function () { if (this.selected_slot != -1) { this.list_slots[this.selected_slot].deselect(); this.selected_slot = -1; } }; v2.selectSlot = function (i_) { this.deselectSlot(); this.list_slots[i_].select(); this.selected_slot = i_; }; v2.syncDescri = function (i_) { var v5 = (Core.Get()).game; var v7 = (Core.Get()).world; this.descri.clear(); if (this.items) { this.descri.push(v7.getQuestItemDescri(v5.quest_items[i_].item)); var v6 = v5.quest_items[i_].count; if (v6 > 1) { this.descri.push((Core.Get()).locale.talk.have_items_1 + v6 + (Core.Get()).locale.talk.have_items_2); } } else { var v10 = this.btn_done.isPushed() ? this.done_quest_data : this.quest_data; var v4 = v10[i_]; var v3 = v5.quest_progress[v4.quest]; var v2 = 0; while (v2 < v3.length) { this.descri.push(v7.getQuestPart(v4.quest, v3[v2].stage), v3[v2].state); ++v2; } if (v4.state == EQuest.COMPLETE) { this.descri.push((Core.Get()).locale.talk.quest_complete, EQuest.COMPLETE); } else { if (v4.state == EQuest.FAILED) { this.descri.push((Core.Get()).locale.talk.quest_failed, EQuest.FAILED); } } if (v4.state != EQuest.COMPLETE) { var v6 = -1; if (v4.quest == 'natan_plan' && 5 == v5.getFlag('q_bigalienplan')) { v6 = v5.getFlag('kills_grabbers_harcos'); } else { if (v4.quest == 'infidels') { v6 = v5.getFlag('kills_inferno_ibrahim'); } else { if (v4.quest == 'clean_suburbs') { v6 = v5.getFlag('kills_bandits_jax'); } else { if (v4.quest == 'raiding_raiders') { v6 = v5.getFlag('kills_raiders_georg'); } else { if (v4.quest == 'raiding_mutants') { v6 = v5.getFlag('kills_mutants_georg'); } } } } } if (v6 >= 0) { this.descri.push((Core.Get()).locale.talk.kills + v6); } } } var v8 = this.descri.y - this.descri.max_y + 1; if (v8 < 0) { v8 = 0; } this.scroll_descri.setValueBounds(0, v8); this.scroll_descri.setValue(v8); this.descri.scrollTo(v8); }; v2.onSlotClick = function (i_) { if (i_ == this.selected_slot) { return undefined; } this.selectSlot(i_); var v2 = i_ + this.list_offs; this.setSelected(v2); this.syncDescri(v2); }; v2.onMouseWheel = function (value) { var v2 = this.scroll_descri; if (!v2.enabled || this.scroll_list.enabled && this._xmouse < 240) { v2 = this.scroll_list; } if (value < 0) { v2.scrollDown(); } else { if (value > 0) { v2.scrollUp(); } } }; ASSetPropFlags(_global.ScreenTasks.prototype, null, 1); } #endinitclip } movieClip 1990 __Packages.Dialogue { #initclip if (!_global.Dialogue) { var v1 = function () { super(); this.items = []; this.y = 0; this.ori_offs = 0; this.max_y = 111; this.ori.delim._visible = false; this.cur_id = 0; }; _global.Dialogue = v1; _global.Dialogue extends MovieClip; var v2 = v1.prototype; v2.clear = function () { var v4 = this.items.length; var v2 = 0; while (v2 < v4) { var v3 = this.items[v2]; v3.removeMovieClip(); ++v2; } this.items = []; this.y = 0; this.ori_offs = 0; this.ori.delim._y = 0; this.ori.delim._visible = false; this.cur_id = 0; }; v2.push = function (npc_, text_) { var v5 = '' == npc_; var v7 = 'item' + this.cur_id; var v9 = 'dialogue_item'; var v2 = this.ori.attachMovie(v9, v7, this.cur_id); v2._y = this.y; this.items.push(v2); ++this.cur_id; if (!v5) { v2.npc.inner.gotoAndStop(1 + (Core.Get()).world.npc[npc_].id); } else { v2.npc.inner.stop(); v2.npc._visible = false; v2.npc_bg._visible = false; } var v3 = v2.tf; v3.autoSize = 'left'; v3.wordWrap = true; v3.text = text_; if (v5) { v3.textColor = 16384; } else { v3.textColor = 1052688; } var v4 = Math.round(v3._height); if (!v5) { v4 = Math.max(v4, v2.npc_bg._y + v2.npc_bg._height); } v2.back._height = v4; this.y += v4 + 1; this.ori.delim._y = this.y; this.ori.delim._visible = true; if (this.items.length > 10) { var v6 = this.items[0]; var v8 = v6.back._height + 1; v6.removeMovieClip(); this.items.splice(0, 1); this.ori_offs += v8; } }; v2.scrollTo = function (pos_) { this.ori._y = -pos_; }; ASSetPropFlags(_global.Dialogue.prototype, null, 1); } #endinitclip } movieClip 1991 __Packages.ScreenTalk { #initclip if (!_global.ScreenTalk) { var v1 = function () { super(); Log.Msg('ScreenTalk::ScreenTalk()'); this.world = (Core.Get()).world; this.game = (Core.Get()).game; this.npc.inner.stop(); this.dialogue = this.dialogue; this.list_offs = 0; this.list_slots = new Array(); this.scroll_list = this.scroll_list; this.scroll_talk = this.scroll_talk; this.list_selection = -1; this.cur_talk = []; this.cur_phrase = -1; this.force_talk = -1; this.no_talk = false; this.no_bye = false; this.need_enable_screen = false; (Core.Get()).onMouseWheel = mx.utils.Delegate.create(this, this.onMouseWheel); }; _global.ScreenTalk = v1; _global.ScreenTalk extends Screen; var v2 = v1.prototype; v2.init = function () { this.btn_goon.setCaption((Core.Get()).locale.btn.go_on); this.btn_goon.setOnClick(mx.utils.Delegate.create(this, this.onGoOnClick)); this.btn_goon._visible = false; this.cur_npc = this.game.exchange.npc; this.data = this.world.npc[this.cur_npc]; this.npc.inner.gotoAndStop(1 + this.data.id); this.name.text = this.data.name; if (this.game.exchange.talk != undefined && this.game.exchange.talk != -1) { this.force_talk = this.game.exchange.talk; } if (this.game.exchange.no_bye != undefined) { this.no_bye = this.game.exchange.no_bye; } this.game.exchange = null; if (this.force_talk == -1) { this.dialogue.push(this.cur_npc, this.data.hello); this.syncTalk(); } var v9 = (Core.Get()).cfg; var v8 = v9.talklist_size; var v7 = v9.talklist_grid; var v5 = 0; var v4 = 0; var v3 = 0; while (v3 < v8.y) { var name = 'slot' + v3; var v6 = this.talklist.attachMovie('talkslot', name, v4); var v2 = this.talklist[name]; v2.init(v4, mx.utils.Delegate.create(this, this.onSlotClick)); v2._y = v5; this.list_slots.push(v2); ++v3; v5 += v7.y; ++v4; } this.checkTalkAvail(); this.syncTalkList(); this.scroll_list.cbScroll = mx.utils.Delegate.create(this, this.onScrollList); this.scroll_talk.cbScroll = mx.utils.Delegate.create(this, this.onScrollTalk); this.scroll_talk.value_inc = 12; this.calibrateListScroll(); this.scroll_talk.setValueBounds(0, 0); if (this.force_talk > -1) { this.onSlotClick(0); } }; v2.checkTalkAvail = function () { this.talks_avail = new Array(); if (this.no_talk) { } else { if (this.force_talk > -1) { this.talks_avail.push(this.force_talk); } else { var v4 = this.data.talk.length; var v2 = 0; while (v2 < v4) { var v3 = this.world.talk[this.data.talk[v2]].condition; if (undefined == v3 || v3()) { this.talks_avail.push(this.data.talk[v2]); } ++v2; } } } }; v2.syncTalkList = function () { var v5 = (Core.Get()).world; var v4 = this.list_slots.length; var v3 = v4; var v6 = this.talks_avail.length; v6 -= this.list_offs; if (v6 < v3) { v3 = v6; } var v2 = 0; while (v2 < v3) { var v7 = this.list_slots[v2]; v7.setCaption(v5.talk[this.talks_avail[v2 + this.list_offs]].theme); v7._visible = true; ++v2; } v2 = v3; while (v2 < v4) { v7 = this.list_slots[v2]; v7.setCaption(''); v7._visible = false; ++v2; } if (!this.no_bye && v3 < v4) { v7 = this.list_slots[v4 - 1]; v7.setCaption(v5.talk[-1].theme); v7._visible = true; } }; v2.onScrollList = function (pos_) { if (this.list_offs == pos_) { return undefined; } this.list_offs = pos_; if (this.list_selection != -1) { trace('ERROR'); return undefined; } this.syncTalkList(); }; v2.deselectSlot = function () { if (this.list_selection != -1) { this.list_slots[this.list_selection].deselect(); this.list_selection = -1; } }; v2.selectSlot = function (i_) { this.deselectSlot(); this.list_slots[i_].select(); this.list_selection = i_; }; v2.onSlotClick = function (i_) { this.selectSlot(i_); this.disableTalk(); this.startTalk(i_ + this.list_offs); }; v2.startTalk = function (i) { if (this.talks_avail.length <= i) { this.bye(); } else { this.cur_talk = this.world.talk[this.talks_avail[i]].msg; if (this.cur_talk == undefined || this.cur_talk.length == 0) { this.endTalk(); } else { this.cur_phrase = 0; this.btn_goon._visible = true; this.nextPhrase(); } } }; v2.nextPhrase = function () { var v5 = false; var v2 = this.cur_talk[this.cur_phrase]; if (undefined != v2.event) { if (undefined == v2.condition || v2.condition()) { if (v2.event == 'set_flag') { if (undefined == v2.value) { this.game.setFlag(v2.flag); } else { this.game.setFlagTo(v2.flag, v2.value); } } else { if (v2.event == 'reset_flag') { this.game.setFlagTo(v2.flag, undefined); } else { if (v2.event == 'give_exp') { this.game.giveExpTeam(v2.value); var v9 = (Core.Get()).locale.talk.exp + v2.value; this.dialogue.push('', v9); } else { if (v2.event == 'give_money') { this.game.money += v2.value; var v9 = (Core.Get()).locale.talk.money + v2.value; this.dialogue.push('', v9); } else { if (v2.event == 'give_item') { this.game.putInventory(v2.item); var v9 = (Core.Get()).locale.talk.item + this.world.items[v2.item].name; this.dialogue.push('', v9); } else { if (v2.event == 'add_quest') { this.game.progressQuest(v2.quest, v2.stage); var v9 = (Core.Get()).locale.talk.journal + this.world.getQuestTitle(v2.quest); this.dialogue.push('', v9); } else { if (v2.event == 'set_area_flag') { this.game.setAreaFlag(v2.flag); } else { if (v2.event == 'give_quest_item') { var v9 = (Core.Get()).locale.talk.item + this.world.quest_items[v2.item].name; this.dialogue.push('', v9); if (undefined == v2.count) { this.game.giveQuestItems(v2.item, 1); } else { this.game.giveQuestItems(v2.item, v2.count); } if (27 == v2.item) { this.game.traders.garret.push(160); this.game.traders.keabo.push(161); this.game.traders.jax.push(162); } } else { if (v2.event == 'remove_quest_item') { if (this.game.hasQuestItems(v2.item, 2)) { var v9 = (Core.Get()).locale.talk.items_lost + this.world.quest_items[v2.item].name; } else { var v9 = (Core.Get()).locale.talk.item_lost + this.world.quest_items[v2.item].name; } this.dialogue.push('', v9); this.game.removeQuestItems(v2.item); } else { if (v2.event == 'trade') { this.game.exchange = {'npc': v2.npc}; (Core.Get()).unpopupBusy(); (Core.Get()).popupTrade(); } else { if (v2.event == 'complete_quest') { this.game.completeQuest(v2.quest); var v9 = (Core.Get()).locale.talk.journal + this.world.getQuestTitle(v2.quest); this.dialogue.push('', v9); } else { if (v2.event == 'fail_quest') { this.game.failQuest(v2.quest); var v9 = (Core.Get()).locale.talk.journal + this.world.getQuestTitle(v2.quest); this.dialogue.push('', v9); } else { if (v2.event == 'battle') { var v10 = v2.level; var v8 = this.game.getTeamLevel(); if (undefined == v10 || 0 > v10 || v10 < v8) { v10 = v8; } this.game.exchange = {'band': v2.band, 'level': v10}; (Core.Get()).unpopupBusy(); (Core.Get()).goBattle(30); } else { if (v2.event == 'join_team') { this.game.joinTeam(v2.npc); var v9 = this.world.chars[v2.npc].name + (Core.Get()).locale.talk.join; this.dialogue.push('', v9); if (this.world.chars[v2.npc].str_id == this.cur_npc) { this.no_talk = true; } var v6 = this.game.stats[0].level; if (this.game.stats[v2.npc].level < v6) { this.game.stats[v2.npc].level = v6; this.game.stats[v2.npc].exp = 0; this.game.syncCharStats(v2.npc); } } else { if (v2.event == 'leave_team') { this.game.leaveTeam(v2.npc); var v9 = this.world.chars[v2.npc].name + (Core.Get()).locale.talk.leave; this.dialogue.push('', v9); } else { if (v2.event == 'move_to_area') { this.game.in_area = this.world.area_to_id[v2.area]; (Core.Get()).unpopupBusy(); if (v2.enter) { (Core.Get()).goArea(); } else { (Core.Get()).goMap(); } } else { if (v2.event == 'remove_money') { this.game.money -= v2.value; var v9 = (Core.Get()).locale.talk.money_lost + v2.value; this.dialogue.push('', v9); } else { if (v2.event == 'talk') { this.game.exchange = {'npc': v2.npc, 'no_bye': v2.no_bye}; (Core.Get()).popupTalk(); } else { if (v2.event == 'allow_bye') { this.no_bye = false; } else { if (v2.event == 'weaken_fog') { var v4 = v2.x; while (v4 < v2.x + v2.w) { var v3 = v2.y; while (v3 < v2.y + v2.h) { if (this.game.fog_data[v4][v3] > 50) { this.game.fog_data[v4][v3] = 50; } ++v3; } ++v4; } } else { if (v2.event == 'mark') { this.game.areas_marked[this.world.area_to_id[v2.area]] = true; } else { if (v2.event == 'add_guide') { if (!this.game.areas_shown[this.world.area_to_id[v2.area]]) { this.game.addGuide(v2.area); } } else { if (v2.event == 'limit_map') { this.game.map_tl = new Pair(v2.tl_x, v2.tl_y); this.game.map_br = new Pair(v2.br_x, v2.br_y); } else { if (v2.event == 'unlimit_map') { var v7 = (Core.Get()).cfg.map_size; this.game.map_tl = new Pair(0, 0); this.game.map_br = new Pair(v7.x, v7.y); } else { if (v2.event == 'start_timer') { this.game.timers[v2.timer] = 0; } else { if (v2.event == 'kill_timer') { this.game.timers[v2.timer] = undefined; } else { if (v2.event == 'game_over') { (Core.Get()).unpopupBusy(); (Core.Get()).goLose(); } else { if (v2.event == 'skill_up') { (Core.Get()).game.stats[v2.npc][v2.skill] += 5; var v9 = this.world.chars[v2.npc].name + (Core.Get()).locale.talk.skill_up + v2.skill.toUpperCase() + '!'; this.dialogue.push('', v9); } else { if (v2.event == 'finish_game') { (Core.Get()).unpopupBusy(); (Core.Get()).game.exchange = {'ending': v2.ending}; (Core.Get()).goOutro(); } else { if (v2.event == 'no_talk') { this.no_talk = true; } else { if (v2.event == 'spawn') { if (v2.band == 'arma_machine') { this.game.addEnemy(213, 516, v2.band); this.game.addEnemy(516, 1005, v2.band); this.game.addEnemy(876, 822, v2.band); this.game.addEnemy(1017, 345, v2.band); this.game.addEnemy(1026, 1254, v2.band); this.game.addEnemy(1077, 1065, v2.band); this.game.addEnemy(1395, 573, v2.band); this.game.addEnemy(1431, 999, v2.band); this.game.addEnemy(1728, 72, v2.band); this.game.addEnemy(1719, 963, v2.band); this.game.addEnemy(1767, 1374, v2.band); this.game.addEnemy(1941, 495, v2.band); this.game.addEnemy(2064, 1155, v2.band); } } else { if (v2.event == 'enable_screen') { this.need_enable_screen = true; } else { Log.Err('Invalid event: ' + v2.event); } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } v5 = true; } else { if (undefined == v2.condition || v2.condition()) { this.dialogue.push(v2.npc, v2.text); } else { v5 = true; } } this.syncTalk(); ++this.cur_phrase; if (this.cur_phrase == this.cur_talk.length) { this.endTalk(); } else { if (v5) { this.nextPhrase(); } } }; v2.endTalk = function () { if (this.force_talk > -1) { this.list_slots[0]._visible = false; } else { this.checkTalkAvail(); this.syncTalkList(); } this.enableTalk(); this.btn_goon._visible = false; this.cur_talk = []; this.cur_phrase = -1; this.deselectSlot(); }; v2.disableTalk = function () { var v4 = this.list_slots.length; var v2 = 0; while (v2 < v4) { var v3 = this.list_slots[v2]; if (v3._visible) { v3.disable(); } ++v2; } }; v2.enableTalk = function () { var v4 = this.list_slots.length; var v2 = 0; while (v2 < v4) { var v3 = this.list_slots[v2]; if (v3._visible) { v3.enable(); } ++v2; } }; v2.onScrollTalk = function (pos_) { this.dialogue.scrollTo(pos_); }; v2.syncTalk = function () { var v2 = this.dialogue.y - this.dialogue.max_y + 1; if (v2 < 0) { v2 = 0; } var v3 = this.dialogue.ori_offs; this.scroll_talk.setValueBounds(v3, v2); this.scroll_talk.setValue(v2); this.dialogue.scrollTo(v2); }; v2.calibrateListScroll = function () { var v3 = this.talks_avail.length; var v2 = v3 - this.list_slots.length; if (v2 < 0) { v2 = 0; } this.scroll_list.setValueBounds(0, v2); this.scroll_list.setValue(0); this.list_offs = 0; }; v2.onGoOnClick = function () { this.nextPhrase(); }; v2.bye = function () { if (this.need_enable_screen) { (Core.Get()).unpopupEnable(); } else { (Core.Get()).unpopup(); } }; v2.onMouseWheel = function (value) { if (value < 0) { this.scroll_talk.scrollDown(); } else { if (value > 0) { this.scroll_talk.scrollUp(); } } }; ASSetPropFlags(_global.ScreenTalk.prototype, null, 1); } #endinitclip } movieClip 1992 __Packages.ScreenTrade { #initclip if (!_global.ScreenTrade) { var v1 = function () { super(); Log.Msg('ScreenTrade::ScreenTrade()'); this.game = (Core.Get()).game; this.trader = this.trader; this.inventory = this.inventory; this.btn_sort = this.btn_sort; this.btn_leave = this.btn_leave; this.drag_obj = null; this.syncMoney(); this.scroll = this.scroll; this.scroll_trader = this.scroll_trader; this.tooltip = this.tooltip; (Core.Get()).onMouseWheel = mx.utils.Delegate.create(this, this.onMouseWheel); }; _global.ScreenTrade = v1; _global.ScreenTrade extends Screen; var v2 = v1.prototype; v2.init = function () { var v3 = this.game.exchange.npc; var v2 = (Core.Get()).world.npc[v3]; this.npc.inner.gotoAndStop(1 + v2.id); this.name.text = v2.name; this.trader.init(v3, (Core.Get()).cfg.trader_size, mx.utils.Delegate.create(this, this.onTraderDrag), mx.utils.Delegate.create(this, this.onTraderDrop)); this.inventory.init('', (Core.Get()).cfg.inventory_size, mx.utils.Delegate.create(this, this.onInventoryDrag), mx.utils.Delegate.create(this, this.onInventoryDrop)); this.btn_sort.setCaption((Core.Get()).locale.btn.sort); this.btn_sort.setOnClick(mx.utils.Delegate.create(this, this.sortInventory)); this.btn_leave.setCaption((Core.Get()).locale.btn.leave); this.btn_leave.setOnClick(mx.utils.Delegate.create(this, this.onBtnLeaveClick)); this.setScrollBounds(); this.scroll.cbScroll = mx.utils.Delegate.create(this, this.onScroll); this.scroll.setValue(0); this.setScrollTraderBounds(); this.scroll_trader.cbScroll = mx.utils.Delegate.create(this, this.onScrollTrader); this.scroll_trader.setValue(0); this.tooltip.setItem(-1); this.onMouseMove = mx.utils.Delegate.create(this, this.onMouse); }; v2.recalibrateScrolls = function () { this.setScrollBounds(); this.scroll.reScroll(); this.setScrollTraderBounds(); this.scroll_trader.reScroll(); }; v2.setScrollBounds = function () { this.scroll.setValueBounds(0, this.inventory.getMaxScroll()); }; v2.onScroll = function (val_) { this.inventory.scrollTo(val_); }; v2.setScrollTraderBounds = function () { this.scroll_trader.setValueBounds(0, this.trader.getMaxScroll()); }; v2.onScrollTrader = function (val_) { this.trader.scrollTo(val_); }; v2.onInventoryDrag = function (i_) { var v2 = this.inventory.getItemFromCell(i_); this.dragItem(v2); (Core.Get()).playSound('item_take'); }; v2.onTraderDrag = function (i_) { var v2 = this.trader.getPriceFromCell(i_); if (v2 <= this.game.money) { this.dragItem(this.trader.getItemFromCell(i_)); (Core.Get()).playSound('item_take'); } else { (Core.Get()).playSound('item_put'); } }; v2.dragItem = function (item_) { var v2 = 1 + item_; this.drag_obj = this.attachMovie('item', 'drag_obj', this.getNextHighestDepth()); this.drag_obj.gotoAndStop(v2); this.drag_obj.startDrag(false, 0, 0, 480, 320); this.drag_obj._x = this._xmouse - 45; this.drag_obj._y = this._ymouse - 27; this.drag_obj.filters = [Filters.Shadow()]; this.tooltip.setItem(-1); }; v2.onInventoryDrop = function (i_) { var v2 = false; if (!v2 && this.trader.hitTest(this._xmouse, this._ymouse)) { var v4 = this.inventory.getItemFromCell(i_); this.game.takeInventory(v4); this.inventory.sync(); this.game.sellItem(this.trader.src, v4); this.trader.sync(); this.syncMoney(); this.recalibrateScrolls(); v2 = true; (Core.Get()).playSound('trade'); } if (!v2 && this.inventory.hitTest(this._xmouse, this._ymouse)) { var v3 = this.inventory.getPosFromCell(i_); var v5 = this.inventory.getPosAt(this._xmouse, this._ymouse); if (v3 != v5) { this.game.moveInventoryItem(v3, v5); this.inventory.sync(); } } this.drag_obj.stopDrag(); this.drag_obj.removeMovieClip(); this.drag_obj = null; (Core.Get()).playSound('item_put'); this.onMouse(); }; v2.onTraderDrop = function (i_) { var v4 = this.trader.getPriceFromCell(i_); if (v4 > this.game.money) { return undefined; } var v2 = false; if (!v2 && this.inventory.hitTest(this._xmouse, this._ymouse)) { var v3 = this.trader.getItemFromCell(i_); var v5 = this.inventory.getPosAt(this._xmouse, this._ymouse); this.game.putInventoryAt(v3, v5); this.inventory.sync(); this.game.buyItem(this.trader.src, v3); this.trader.sync(); this.syncMoney(); this.recalibrateScrolls(); v2 = true; (Core.Get()).playSound('trade'); } this.drag_obj.stopDrag(); this.drag_obj.removeMovieClip(); this.drag_obj = null; (Core.Get()).playSound('item_put'); this.onMouse(); }; v2.sortInventory = function () { this.game.sortInventory(); this.inventory.sync(); }; v2.onMouse = function () { if (!this.enabled) { return undefined; } if (this.drag_obj) { this.tooltip.setItem(-1); return undefined; } if (this.inventory.hitTest(this._xmouse, this._ymouse)) { var v2 = this.inventory.getPosAt(this._xmouse, this._ymouse); var v3 = this.inventory.src; var v4 = (0 <= v2 && v2 < v3.length) ? v3[v2].item : -1; this.tooltip.setItem(v4, true); if (-1 != v4) { this.placeTooltip(); } return undefined; } if (this.trader.hitTest(this._xmouse, this._ymouse)) { v2 = this.trader.getPosAt(this._xmouse, this._ymouse); v3 = this.trader.src; v4 = -1; var v5 = false; if (0 <= v2 && v2 < v3.length) { if (v3[v2] instanceof Object) { v4 = v3[v2].item; v5 = undefined != v3[v2].buy_back && v3[v2].buy_back > 0; } else { v4 = v3[v2]; } } this.tooltip.setItem(v4, v5); if (-1 != v4) { this.placeTooltip(); } return undefined; } this.tooltip.setItem(-1); }; v2.placeTooltip = function () { var v5 = (Core.Get()).cfg; var v2 = v5.scr_size; this.tooltip._x = this._xmouse - 32; this.tooltip._y = this._ymouse + 16; var v3 = this.tooltip._x + this.tooltip._width + 8 - v2.x; if (v3 > 0) { this.tooltip._x -= v3; } var v4 = this.tooltip._y + this.tooltip._height + 8 - v2.y; if (v4 > 0) { this.tooltip._y = this._ymouse - 8 - this.tooltip._height; } }; v2.onMouseWheel = function (value) { var v2 = this.scroll; if (!v2.enabled || this.scroll_trader.enabled && this._xmouse < 175) { v2 = this.scroll_trader; } if (value < 0) { v2.scrollDown(); } else { if (value > 0) { v2.scrollUp(); } } this.onMouse(); }; v2.onBtnLeaveClick = function () { (Core.Get()).unpopup(); }; v2.syncMoney = function () { var v2 = '€' + ex.formatNumberCommas(this.game.money); this.money.text = v2; }; ASSetPropFlags(_global.ScreenTrade.prototype, null, 1); } #endinitclip } movieClip 1993 __Packages.ExpSlot { #initclip if (!_global.ExpSlot) { var v1 = function () { super(); this.char.stop(); this.back.stop(); this.lvl_up._visible = false; this.new_perk._visible = false; this.bonus_points._visible = false; this.hiliter.stop(); this.hiliter._visible = false; this.id = -1; }; _global.ExpSlot = v1; _global.ExpSlot extends MovieClip; var v2 = v1.prototype; v2.setChar = function (id_) { this.id = id_; if (id_ >= 0) { var v4 = (Core.Get()).world; var v3 = v4.chars[id_]; this.name.text = v3.name; this.char.gotoAndStop(id_ + 1); this.char.filters = [Filters.GlowLight(13434828)]; } else { this.name.text = '---'; this.char._visible = false; this.filters = [Filters.Desaturator()]; this.exp._visible = false; } }; v2.isHit = function (x_, y_) { return this.char_back.hitTest(x_, y_); }; v2.setExp = function (value) { this.exp.text = '+' + value + 'XP'; }; v2.showLevelUp = function () { this.hiliter._visible = true; this.hiliter.play(); this.lvl_up._visible = true; }; v2.showNewPerk = function () { this.new_perk._visible = true; }; v2.showBonusPoints = function () { this.bonus_points._visible = true; }; ASSetPropFlags(_global.ExpSlot.prototype, null, 1); } #endinitclip } movieClip 1994 __Packages.ScreenBattleWin { #initclip if (!_global.ScreenBattleWin) { var v1 = function () { super(); Log.Msg('ScreenBattleWin::ScreenBattleWin()'); (Core.Get()).switchMusic(0); (Core.Get()).playSound('victory'); this.team_slots = new Array(); this.team_slots.push(this.slot1); this.team_slots.push(this.slot2); this.team_slots.push(this.slot3); this.team_slots.push(this.slot4); this.onMouseMove = mx.utils.Delegate.create(this, this.onMouse); this.drop = this.drop_outer.drop; }; _global.ScreenBattleWin = v1; _global.ScreenBattleWin extends Screen; var v2 = v1.prototype; v2.init = function () { var v2 = (Core.Get()).game; var v12 = v2.exchange.exp; var v10 = v12 * (1.5 + Math.random()) / 4; if (v2.getTeamLevel() < 5) { v10 *= 2; } else { if (v2.getTeamLevel() < 10) { v10 *= 1.5; } } v10 = Math.round(v10); this.money.text = '€' + ex.formatNumberCommas(v10); v2.money += v10; var v7 = []; var v8 = this.team_slots.length; var v5 = 0; while (v5 < v8) { var v6 = v2.team[v5]; var v4 = this.team_slots[v5]; v4.setChar(v6); if (v6 >= 0) { v7.push(v5); } ++v5; } var v9 = Math.round(v12 / v7.length); v8 = Math.floor(v7.length); v5 = 0; while (v5 < v8) { v4 = this.team_slots[v7[v5]]; v4.setExp(v9); v2.giveExp(v4.id, v9); var v3 = v2.stats[v4.id]; if (v3.level_up) { v4.showLevelUp(); v3.level_up = false; } if (v3.perk_unlocked) { v4.showNewPerk(); v3.perk_unlocked = false; } if (v3.bonus_points) { v4.showBonusPoints(); v3.bonus_points = false; } ++v5; } var v11 = Math.round(v12 / 4); v5 = 4; while (v5 < 12) { if (v2.team[v5] >= 0) { v2.giveExp(v2.team[v5], v11); v3 = v2.stats[v2.team[v5]]; if (v3.level_up) { v3.level_up = false; } if (v3.perk_unlocked) { v3.perk_unlocked = false; } if (v3.bonus_points) { v3.bonus_points = false; } } ++v5; } this.btn_ok.setCaption((Core.Get()).locale.btn.ok); this.btn_ok.setOnClick(this.onBtnOKClick); this.drop.initFromSource(v2.exchange.drop, (Core.Get()).cfg.drop_size); (Core.Get()).game.putInventoryArray(v2.exchange.drop); }; v2.onBtnOKClick = function () { (Core.Get()).unpopup(); if ((Core.Get()).game.isQuestComplete('natan_plan')) { (Core.Get()).game.exchange = {'ending': 1}; (Core.Get()).goOutro(); return undefined; } if ((Core.Get()).game.isQuestComplete('meta_uprise')) { (Core.Get()).game.exchange = {'ending': 2}; (Core.Get()).goOutro(); return undefined; } if ((Core.Get()).game.stats[0].ups) { (Core.Get()).popupSkillsUp(); } else { if ((Core.Get()).game.in_area >= 0) { (Core.Get()).goArea(); } else { (Core.Get()).goMap(); } } }; v2.onMouse = function () { if (!this.enabled) { return undefined; } var v4 = this.team_slots.length; var v2 = 0; while (v2 < v4) { var v3 = this.team_slots[v2]; if (v3.isHit(this._xmouse, this._ymouse)) { this.tooltip.setChar((Core.Get()).game.team[v2]); this.placeTooltip(); return undefined; } ++v2; } this.tooltip.setChar(-1); if (this.drop.hitTest(this._xmouse, this._ymouse)) { var v5 = this.drop.getPosAt(this._xmouse, this._ymouse); var v6 = this.drop.src; var v7 = (0 <= v5 && v5 < v6.length) ? v6[v5].item : -1; this.tooltip_item.setItem(v7, true); if (-1 != v7) { this.placeTooltipItem(); } return undefined; } this.tooltip_item.setItem(-1); }; v2.placeTooltip = function () { var v5 = (Core.Get()).cfg; var v2 = v5.scr_size; this.tooltip._x = this._xmouse - 32; this.tooltip._y = this._ymouse + 16; var v3 = this.tooltip._x + this.tooltip._width + 8 - v2.x; if (v3 > 0) { this.tooltip._x -= v3; } var v4 = this.tooltip._y + this.tooltip._height + 8 - v2.y; if (v4 > 0) { this.tooltip._y = this._ymouse - 8 - this.tooltip._height; } }; v2.placeTooltipItem = function () { var v5 = (Core.Get()).cfg; var v2 = v5.scr_size; this.tooltip_item._x = this._xmouse - 32; this.tooltip_item._y = this._ymouse + 16; var v3 = this.tooltip_item._x + this.tooltip_item._width + 8 - v2.x; if (v3 > 0) { this.tooltip_item._x -= v3; } var v4 = this.tooltip_item._y + this.tooltip_item._height + 8 - v2.y; if (v4 > 0) { this.tooltip_item._y = this._ymouse - 8 - this.tooltip_item._height; } }; ASSetPropFlags(_global.ScreenBattleWin.prototype, null, 1); } #endinitclip } movieClip 1995 __Packages.ScreenLose { #initclip if (!_global.ScreenLose) { var v1 = function () { super(); Log.Msg('ScreenBattleWin::ScreenBattleWin()'); (Core.Get()).switchMusic(-1); (Core.Get()).playSound('game_lose'); }; _global.ScreenLose = v1; _global.ScreenLose extends Screen; var v2 = v1.prototype; v2.init = function () { this.btn_load.setCaption((Core.Get()).locale.btn.load); this.btn_load.setOnClick(this.onBtnLoadClick); this.btn_exit.setCaption((Core.Get()).locale.btn.quit); this.btn_exit.setOnClick(this.onBtnExitClick); }; v2.onBtnLoadClick = function () { (Core.Get()).popupLoad(); }; v2.onBtnExitClick = function () { (Core.Get()).goMain(); }; v2.enable = function () { this.enabled = true; this.btn_load.enable(); this.btn_exit.enable(); }; v2.disable = function () { this.enabled = false; this.btn_load.disable(); this.btn_exit.disable(); }; ASSetPropFlags(_global.ScreenLose.prototype, null, 1); } #endinitclip } movieClip 1996 __Packages.ScreenOptions { #initclip if (!_global.ScreenOptions) { var v1 = function () { super(); Log.Msg('ScreenOptions::ScreenOptions()'); this.adv.gotoAndPlay(1 + 120 * ex.randomInt(3)); }; _global.ScreenOptions = v1; _global.ScreenOptions extends Screen; var v2 = v1.prototype; v2.init = function () { (Core.Get()).switchMusic(5); this.btn_save.setCaption((Core.Get()).locale.btn.save); this.btn_save.setOnClick(mx.utils.Delegate.create(this, this.onSaveClick)); this.btn_load.setCaption((Core.Get()).locale.btn.load); this.btn_load.setOnClick(mx.utils.Delegate.create(this, this.onLoadClick)); this.btn_music.setCaption((Core.Get()).locale.btn.music); if ((Core.Get()).isMusicOn()) { this.btn_music.push(); } this.btn_music.setOnClick(mx.utils.Delegate.create(this, this.onBtnMusicClick)); this.btn_sound.setCaption((Core.Get()).locale.btn.sound); if ((Core.Get()).isSoundOn()) { this.btn_sound.push(); } this.btn_sound.setOnClick(mx.utils.Delegate.create(this, this.onBtnSoundClick)); this.btn_restart.setCaption((Core.Get()).locale.btn.quit); this.btn_restart.setOnClick(mx.utils.Delegate.create(this, this.onRestartClick)); }; v2.onSaveClick = function () { (Core.Get()).unpopup(); (Core.Get()).popupSave(); }; v2.onLoadClick = function () { (Core.Get()).unpopup(); (Core.Get()).popupLoad(); }; v2.onRestartClick = function () { (Core.Get()).unpopup(); (Core.Get()).goMain(); }; v2.onBtnMusicClick = function () { if (this.btn_music.isPushed()) { this.btn_music.unpush(); } else { this.btn_music.push(); } (Core.Get()).setMusic(this.btn_music.isPushed()); }; v2.onBtnSoundClick = function () { if (this.btn_sound.isPushed()) { this.btn_sound.unpush(); } else { this.btn_sound.push(); } (Core.Get()).setSound(this.btn_sound.isPushed()); }; ASSetPropFlags(_global.ScreenOptions.prototype, null, 1); } #endinitclip } movieClip 1997 __Packages.ScreenSkillUp { #initclip if (!_global.ScreenSkillUp) { var v1 = function () { super(); Log.Msg('ScreenSkillUp::ScreenSkillUp()'); this.char_id = 0; this.npc_id = 75; this.ups = (Core.Get()).game.stats[this.char_id].ups; this.skill_list = ['vit', 'acc', 'def', 'dgr', 'tch', 'med', 'lck']; var v4 = (Core.Get()).game.stats[this.char_id]; this.old_state = new Object(); this.old_state.ups = v4.ups; var v3 = 0; while (v3 < this.skill_list.length) { this.old_state[this.skill_list[v3]] = v4[this.skill_list[v3]]; ++v3; } }; _global.ScreenSkillUp = v1; _global.ScreenSkillUp extends Screen; var v2 = v1.prototype; v2.init = function () { this.npc.inner.gotoAndStop(this.npc_id); this.pool.text = 5 * this.ups; var onUp = mx.utils.Delegate.create(this, this.onUpClick); this.vit.skill.text = 'Vit:'; this.vit.btn.setCaption((Core.Get()).locale.btn.up); this.vit.btn.setOnClick(function () { onUp('vit'); }); this.acc.skill.text = 'Acc:'; this.acc.btn.setCaption((Core.Get()).locale.btn.up); this.acc.btn.setOnClick(function () { onUp('acc'); }); this.def.skill.text = 'Def:'; this.def.btn.setCaption((Core.Get()).locale.btn.up); this.def.btn.setOnClick(function () { onUp('def'); }); this.dgr.skill.text = 'Dgr:'; this.dgr.btn.setCaption((Core.Get()).locale.btn.up); this.dgr.btn.setOnClick(function () { onUp('dgr'); }); this.tch.skill.text = 'Tch:'; this.tch.btn.setCaption((Core.Get()).locale.btn.up); this.tch.btn.setOnClick(function () { onUp('tch'); }); this.med.skill.text = 'Med:'; this.med.btn.setCaption((Core.Get()).locale.btn.up); this.med.btn.setOnClick(function () { onUp('med'); }); this.lck.skill.text = 'Lck:'; this.lck.btn.setCaption((Core.Get()).locale.btn.up); this.lck.btn.setOnClick(function () { onUp('lck'); }); this.btn_ok._visible = false; this.btn_ok.setCaption((Core.Get()).locale.btn.ok); this.btn_ok.setOnClick(mx.utils.Delegate.create(this, this.onOKClick)); this.btn_reset.setCaption((Core.Get()).locale.btn.reset); this.btn_reset.setOnClick(mx.utils.Delegate.create(this, this.onResetClick)); this.sync(); this.syncDescri(); }; v2.sync = function () { var v2 = (Core.Get()).game.stats[this.char_id]; this.vit.value.text = v2.vit; this.acc.value.text = v2.acc; this.def.value.text = v2.def; this.dgr.value.text = v2.dgr; this.tch.value.text = v2.tch; this.med.value.text = v2.med; this.lck.value.text = v2.lck; }; v2.onOKClick = function () { var v1 = (Core.Get()).game.exchange.no_switch; (Core.Get()).unpopup(); if ((Core.Get()).game.in_area >= 0) { if (!v1) { (Core.Get()).goArea(); } } else { (Core.Get()).goMap(); } }; v2.onUpClick = function (skill_) { if (!this.ups) { this.btn_ok._visible = true; return undefined; } this[skill_].btn._visible = false; var v3 = (Core.Get()).game.stats[this.char_id]; v3[skill_] += 5; this[skill_].value.text = v3[skill_]; --this.ups; if (!this.ups) { this.vit.btn._visible = false; this.acc.btn._visible = false; this.def.btn._visible = false; this.dgr.btn._visible = false; this.tch.btn._visible = false; this.med.btn._visible = false; this.lck.btn._visible = false; this.btn_ok._visible = true; (Core.Get()).game.stats[this.char_id].ups = 0; } else { if (0 == this.ups % 4) { this.vit.btn._visible = true; this.acc.btn._visible = true; this.def.btn._visible = true; this.dgr.btn._visible = true; this.tch.btn._visible = true; this.med.btn._visible = true; this.lck.btn._visible = true; } } this.pool.text = 5 * this.ups; }; v2.onResetClick = function () { (Core.Get()).game.stats[this.char_id].ups = 0; var v3 = (Core.Get()).game.stats[this.char_id]; v3.ups = this.old_state.ups; var v2 = 0; while (v2 < this.skill_list.length) { v3[this.skill_list[v2]] = this.old_state[this.skill_list[v2]]; ++v2; } this.ups = v3.ups; this.btn_ok._visible = false; this.vit.btn._visible = true; this.acc.btn._visible = true; this.def.btn._visible = true; this.dgr.btn._visible = true; this.tch.btn._visible = true; this.med.btn._visible = true; this.lck.btn._visible = true; this.pool.text = 5 * this.ups; this.sync(); }; v2.onMouseMove = function () { this.syncDescri(); }; v2.syncDescri = function () { var v3 = -1; if (this.enabled) { var v2 = 0; while (v2 < this.skill_list.length) { if (this[this.skill_list[v2]].hitTest(this._xmouse, this._ymouse, true)) { v3 = v2; break; } ++v2; } } if (v3 < 0) { this.descri._visible = false; } else { this.descri._visible = true; this.descri.text = (Core.Get()).locale.skill_descri[this.skill_list[v3]]; } }; ASSetPropFlags(_global.ScreenSkillUp.prototype, null, 1); } #endinitclip } movieClip 1998 __Packages.SaveSlot { #initclip if (!_global.SaveSlot) { var v1 = function () { super(); this.id = -1; this.stop(); this.npc1.inner.stop(); this.npc2.inner.stop(); this.npc3.inner.stop(); this.npc4.inner.stop(); }; _global.SaveSlot = v1; _global.SaveSlot extends MovieClip; var v2 = v1.prototype; v2.init = function (id_, on_click_) { this.btn.setOnClick(function () { on_click_(id_); }); }; v2.setData = function (data_) { if (!data_.valid) { this.gotoAndStop(2); } else { this.gotoAndStop(1); this.level.text = data_.level; if (data_.area >= 0) { if ((Core.Get()).world.areas[data_.area].caption2 != undefined) { this.area.text = (Core.Get()).world.areas[data_.area].caption2; } else { this.area.text = (Core.Get()).world.areas[data_.area].caption; } } else { if (data_.region >= 0) { this.area.text = (Core.Get()).world.regions[data_.region].name; } else { this.area.text = ''; } } this.setNPC(this.npc1, data_.slots[0]); this.setNPC(this.npc2, data_.slots[1]); this.setNPC(this.npc3, data_.slots[2]); this.setNPC(this.npc4, data_.slots[3]); } }; v2.setNPC = function (slot_, npc_) { if (npc_ < 0) { slot_.inner.stop(); slot_._visible = false; } else { var v2 = [74, 71, 70, 75, 63, 73, 57, 29, 13, 72, 51, 54]; slot_.inner.gotoAndStop(1 + v2[npc_]); } }; v2.disable = function () { this.enabled = false; this.btn.disable(); this.filters = [Filters.Desaturator()]; }; v2.enable = function () { this.enabled = true; this.btn.enable(); this.filters = []; }; ASSetPropFlags(_global.SaveSlot.prototype, null, 1); } #endinitclip } movieClip 1999 __Packages.ScreenSaveLoad { #initclip if (!_global.ScreenSaveLoad) { var v1 = function () { super(); Log.Msg('ScreenSaveLoad::ScreenSaveLoad()'); this.save = (Core.Get()).game.exchange.save; this.slots = new Array(); this.meta_data = (Core.Get()).meta_save; this.back.gotoAndStop(this.save ? 'save' : 'load'); Key.addListener(this); }; _global.ScreenSaveLoad = v1; _global.ScreenSaveLoad extends Screen; var v2 = v1.prototype; v2.onKeyDown = function () { if (Key.isDown(27)) { (Core.Get()).unpopup(); } }; v2.init = function () { (Core.Get()).switchMusic(5); this.slots.push(this.slot0); this.slots.push(this.slot1); this.slots.push(this.slot2); this.slots.push(this.slot3); var v2 = 0; while (v2 < this.slots.length) { this.slots[v2].init(v2, mx.utils.Delegate.create(this, this.onSlotClick)); ++v2; } this.sync(); }; v2.sync = function () { var v2 = 0; while (v2 < this.slots.length) { this.slots[v2].setData(this.meta_data[v2]); if (!this.save && !this.meta_data[v2].valid) { this.slots[v2].disable(); } ++v2; } if (this.save) { this.slots[0].disable(); } }; v2.onSlotClick = function (id_) { if (this.save) { (Core.Get()).saveGame(id_); } else { (Core.Get()).loadGame(id_); } (Core.Get()).unpopup(); (Core.Get()).goMap(); }; ASSetPropFlags(_global.ScreenSaveLoad.prototype, null, 1); } #endinitclip } movieClip 2000 __Packages.ScreenOutro { #initclip if (!_global.ScreenOutro) { var v1 = function () { super(); Log.Msg('ScreenOutro::ScreenOutro()'); (Core.Get()).switchMusic(0); (Core.Get()).playSound('game_win'); this.message.text = ''; this.back.stop(); }; _global.ScreenOutro = v1; _global.ScreenOutro extends Screen; var v2 = v1.prototype; v2.init = function () { this.btn_quit.setCaption((Core.Get()).locale.btn.quit); this.btn_quit.setOnClick(this.onBtnQuitClick); var v2 = (Core.Get()).game.exchange.ending; this.msg_text = (Core.Get()).locale.text.outro[v2 - 1]; this.back.gotoAndStop(v2); if ((Core.Get()).game.isQuestComplete('natan_plan')) { (Core.Get()).unlockMedal('Space Crusade'); } if ((Core.Get()).game.isQuestComplete('meta_uprise')) { (Core.Get()).unlockMedal('Technolize'); } if ((Core.Get()).game.isQuestComplete('talks_with_aliens')) { (Core.Get()).unlockMedal('Alien Plan'); } this.letter = 0; }; v2.onEnterFrame = function () { if (this.enabled && this.letter < this.msg_text.length) { this.letter += 1; this.message.text = this.msg_text.slice(0, Math.floor(this.letter)); } }; v2.onBtnQuitClick = function () { (Core.Get()).goMain(); }; v2.enable = function () { this.enabled = true; this.btn_quit.enable(); }; v2.disable = function () { this.enabled = false; this.btn_quit.disable(); }; ASSetPropFlags(_global.ScreenOutro.prototype, null, 1); } #endinitclip } movieClip 73 __Packages.com.newgrounds.components.FlashAd { #initclip if (!_global.com) { _global.com = new Object(); } if (!_global.com.newgrounds) { _global.com.newgrounds = new Object(); } if (!_global.com.newgrounds.components) { _global.com.newgrounds.components = new Object(); } if (!_global.com.newgrounds.components.FlashAd) { var v1 = function () { super(); this.background._visible = this.show_background; if (this.show_background) { this._x = Math.round(this._x); this._y = Math.round(this._y); this._xscale = 100; this._yscale = 100; } com.newgrounds.API.addEventListener(com.newgrounds.APIEvent.ADS_APPROVED, this.loadAd, this); }; com.newgrounds.components.FlashAd = v1; com.newgrounds.components.FlashAd extends MovieClip; var v2 = v1.prototype; v2.onLoad = function () { com.newgrounds.API.attachFlashAd(this); }; v2.loadAd = function (event, params) { com.newgrounds.API.attachFlashAd(this); }; v2.onUnload = function () { this.clip.ad.unloadMovie(); this.clip.ad.removeMovieClip(); this.clip.removeMovieClip(); this.mask.removeMovieClip(); this.background.removeMovieClip(); com.newgrounds.API.removeEventListener(com.newgrounds.APIEvent.ADS_APPROVED, this); }; ASSetPropFlags(com.newgrounds.components.FlashAd.prototype, null, 1); } #endinitclip } movieClip 92 __Packages.com.newgrounds.ValidationTools { #initclip if (!_global.com) { _global.com = new Object(); } if (!_global.com.newgrounds) { _global.com.newgrounds = new Object(); } if (!_global.com.newgrounds.ValidationTools) { var v1 = function () {}; com.newgrounds.ValidationTools = v1; var v2 = v1.prototype; v1.isNumber = function (v) { if (typeof v == 'number') { return true; return false; } if (typeof v == 'string' and (Number(v)).toString() == v) { return true; } return false; }; v1.isInteger = function (v) { if (com.newgrounds.ValidationTools.isNumber(v)) { v = Number(v); return Math.floor(v) == v; } return false; }; v1.isFloat = function (v) { return com.newgrounds.ValidationTools.isNumber(v); }; v1.isString = function (v) { if (typeof v == 'string' or typeof v == 'number') { return true; } return false; }; v1.isEmpty = function (o) { for (var v2 in o) { return false; } return true; }; ASSetPropFlags(com.newgrounds.ValidationTools.prototype, null, 1); } #endinitclip } movieClip 97 __Packages.com.newgrounds.encoders.SerialXML { #initclip if (!_global.com) { _global.com = new Object(); } if (!_global.com.newgrounds) { _global.com.newgrounds = new Object(); } if (!_global.com.newgrounds.encoders) { _global.com.newgrounds.encoders = new Object(); } if (!_global.com.newgrounds.encoders.SerialXML) { var v1 = function () {}; com.newgrounds.encoders.SerialXML = v1; var v2 = v1.prototype; v1.decode = function (xml) { if (!(xml instanceof XML)) { xml = new XML(xml); } var v2 = com.newgrounds.encoders.SerialXML.populateObject(xml.firstChild, {}); return v2.DATA; }; v1.encode = function (obj) { var v1 = new XML(); com.newgrounds.encoders.SerialXML.populateXML(v1, obj, 'DATA'); return v1; }; v1.populateObject = function (child, object) { var v6 = child.nodeName; var v5 = com.newgrounds.encoders.SerialXML.getValue(v6, child.attributes.v); var v4 = child.attributes.n; if (object instanceof Array) { v4 = object.length; object.push(v5); } else { object[v4] = v5; } if (child.hasChildNodes()) { var v1 = 0; while (v1 < child.childNodes.length) { com.newgrounds.encoders.SerialXML.populateObject(child.childNodes[v1], object[v4]); ++v1; } } return object; }; v1.populateXML = function (child, obj, name) { if (obj === undefined) { return undefined; } var v5 = new XML(); var v2; if (obj instanceof Array) { v2 = v5.createElement(com.newgrounds.encoders.SerialXML.getType(obj)); if (name) { v2.attributes.n = name; } child.appendChild(v2); var v4 = 0; while (v4 < obj.length) { com.newgrounds.encoders.SerialXML.populateXML(v2, obj[v4]); ++v4; } } else { if (typeof obj == 'object') { v2 = v5.createElement(com.newgrounds.encoders.SerialXML.getType(obj)); if (name) { v2.attributes.n = name; } child.appendChild(v2); for (var v4 in obj) { com.newgrounds.encoders.SerialXML.populateXML(v2, obj[v4], v4); } } else { v2 = v5.createElement(com.newgrounds.encoders.SerialXML.getType(obj)); if (name) { v2.attributes.n = name; } if ((com.newgrounds.encoders.SerialXML.getType(obj)).length == 1) { v2.attributes.v = obj; } child.appendChild(v2); } } }; v1.getValue = function (type, stringval) { switch (type.toUpperCase()) { case 'O': return new Object(); break; case 'A': return new Array(); break; case 'N': return Number(stringval); break; case 'S': return String(stringval); break; case 'TRUE': return true; break; case 'FALSE': return false; break; default: return null; } }; v1.getType = function (obj) { switch (obj instanceof Array ? 'array' : typeof obj) { case 'array': return 'A'; break; case 'object': return 'O'; break; case 'string': return 'S'; break; case 'number': return 'N'; case 'boolean': return (obj === true) ? 'TRUE' : 'FALSE'; break; default: return 'NULL'; } }; ASSetPropFlags(com.newgrounds.encoders.SerialXML.prototype, null, 1); } #endinitclip } movieClip 98 __Packages.com.newgrounds.encoders.LZW2 { #initclip if (!_global.com) { _global.com = new Object(); } if (!_global.com.newgrounds) { _global.com.newgrounds = new Object(); } if (!_global.com.newgrounds.encoders) { _global.com.newgrounds.encoders = new Object(); } if (!_global.com.newgrounds.encoders.LZW2) { var v1 = function () {}; com.newgrounds.encoders.LZW2 = v1; var v2 = v1.prototype; v1.doCompressorConfig = function () { com.newgrounds.encoders.LZW2.comp_dict = []; var v1 = 0; while (v1 < 256) { com.newgrounds.encoders.LZW2.comp_dict[String.fromCharCode(v1)] = v1; ++v1; } com.newgrounds.encoders.LZW2.comp_dict.< = 256; com.newgrounds.encoders.LZW2.comp_dict.> = 257; com.newgrounds.encoders.LZW2.comp_dict.& = 258; com.newgrounds.encoders.LZW2.comp_dict." = 259; com.newgrounds.encoders.LZW2.comp_dict.\' = 260; com.newgrounds.encoders.LZW2.pos = 0; com.newgrounds.encoders.LZW2.result = ''; com.newgrounds.encoders.LZW2.buffer = ''; com.newgrounds.encoders.LZW2.nbChar = 256 + com.newgrounds.encoders.LZW2.skipnum; }; v1.compress = function (string, callback, callback_params) { com.newgrounds.encoders.LZW2.doCompressorConfig(); if (com.newgrounds.encoders.LZW2.busy) { trace('[LZW COMPRESSOR] :: Compression can not begin until previous compression or decompression is complete!'); return undefined; } com.newgrounds.encoders.LZW2.splitStr = string.split(''); string = ''; com.newgrounds.encoders.LZW2.len = com.newgrounds.encoders.LZW2.splitStr.length; com.newgrounds.encoders.LZW2.local = {'delay': 30, 'callback': callback, 'callback_params': callback_params, 'compress_chunk': function () { com.newgrounds.encoders.LZW2.compress_chunk(); }, 'busy': false, 'complete': false}; com.newgrounds.encoders.LZW2.interval = setInterval(com.newgrounds.encoders.LZW2.local, 'compress_chunk', 5); }; v1.getProgress = function () { return Math.round((com.newgrounds.encoders.LZW2.pos / com.newgrounds.encoders.LZW2.len) * 100); }; v1.compress_chunk = function () { if (com.newgrounds.encoders.LZW2.local.delay > 0) { --com.newgrounds.encoders.LZW2.local.delay; } else { if (!com.newgrounds.encoders.LZW2.local.busy) { com.newgrounds.encoders.LZW2.local.busy = true; var v1 = 0; while (v1 < com.newgrounds.encoders.LZW2.max_chunk_length) { com.newgrounds.encoders.LZW2.encode_next(); if (com.newgrounds.encoders.LZW2.local.complete) { break; } ++v1; } com.newgrounds.encoders.LZW2.local.busy = false; } } if (com.newgrounds.encoders.LZW2.local.complete) { trace('LZW2 complete ' + com.newgrounds.encoders.LZW2.nbChar + ' ' + com.newgrounds.encoders.LZW2.comp_dict.length + ' ' + com.newgrounds.encoders.LZW2.len + ' ' + com.newgrounds.encoders.LZW2.pos + ' ' + com.newgrounds.encoders.LZW2.skipnum); clearInterval(com.newgrounds.encoders.LZW2.interval); com.newgrounds.encoders.LZW2.local.callback(com.newgrounds.encoders.LZW2.result, com.newgrounds.encoders.LZW2.local.callback_params); com.newgrounds.encoders.LZW2.result = ''; com.newgrounds.encoders.LZW2.buffer = ''; } }; v1.encode_next = function () { if (com.newgrounds.encoders.LZW2.pos <= com.newgrounds.encoders.LZW2.len) { var v1 = com.newgrounds.encoders.LZW2.splitStr[com.newgrounds.encoders.LZW2.pos]; if (com.newgrounds.encoders.LZW2.comp_dict[com.newgrounds.encoders.LZW2.buffer + v1] !== undefined) { com.newgrounds.encoders.LZW2.buffer += v1; } else { com.newgrounds.encoders.LZW2.result += String.fromCharCode(com.newgrounds.encoders.LZW2.comp_dict[com.newgrounds.encoders.LZW2.buffer]); com.newgrounds.encoders.LZW2.comp_dict[com.newgrounds.encoders.LZW2.buffer + v1] = com.newgrounds.encoders.LZW2.nbChar; ++com.newgrounds.encoders.LZW2.nbChar; com.newgrounds.encoders.LZW2.buffer = v1; } ++com.newgrounds.encoders.LZW2.pos; } else { com.newgrounds.encoders.LZW2.local.complete = true; return undefined; } }; v1.comp_config = false; v1.skipnum = 5; v1.busy = false; v1.max_chunk_length = 12000; ASSetPropFlags(com.newgrounds.encoders.LZW2.prototype, null, 1); } #endinitclip } movieClip 99 __Packages.com.newgrounds.encoders.LZW { #initclip if (!_global.com) { _global.com = new Object(); } if (!_global.com.newgrounds) { _global.com.newgrounds = new Object(); } if (!_global.com.newgrounds.encoders) { _global.com.newgrounds.encoders = new Object(); } if (!_global.com.newgrounds.encoders.LZW) { var v1 = function () {}; com.newgrounds.encoders.LZW = v1; var v2 = v1.prototype; v1.setXMLSafe = function (x) { com.newgrounds.encoders.LZW.xmlsafe = x; }; v1.compress = function (str, escape_chars) { var v2 = new Array(); var v11 = com.newgrounds.encoders.LZW.xmlsafe ? 5 : 0; var v5 = 0; while (v5 < 256) { v2[String.fromCharCode(v5)] = v5; ++v5; } if (com.newgrounds.encoders.LZW.xmlsafe) { v2.< = 256; v2.> = 257; v2.& = 258; v2." = 259; v2.\' = 260; } var v7 = ''; var v8 = str.split(''); var v9 = v8.length; var v6 = 256 + v11; var v1 = ''; var v4; v5 = 0; while (v5 <= v9) { var v3 = v8[v5]; if (v2[v1 + v3] !== undefined) { v1 += v3; } else { v4 = String.fromCharCode(v2[v1]); if (escape_chars and (v2[v1] < 33 or v2[v1] > 126 or v4 == '%')) { v4 = escape(v4); } v7 += v4; v2[v1 + v3] = v6; ++v6; v1 = v3; } ++v5; } return v7; }; v1.decompress = function (str) { var v4 = new Array(); var v10 = com.newgrounds.encoders.LZW.xmlsafe ? 5 : 0; var v6 = 0; while (v6 < 256) { var v9 = String.fromCharCode(v6); v4[v6] = v9; ++v6; } if (com.newgrounds.encoders.LZW.xmlsafe) { v4[256] = '<'; v4[257] = '>'; v4[258] = '&'; v4[259] = '"'; v4[260] = '\''; } var v11 = str; var v13 = v11.split(''); var v12 = v13.length; var v7 = 256 + v10; var v1 = ''; var v2 = ''; var v8 = ''; v6 = 0; while (v6 < v12) { var v5 = v11.charCodeAt(v6); var v3 = v4[v5]; if (v1 == '') { v1 = v3; v8 += v3; } else { if (v5 <= 255 + v10) { v8 += v3; v2 = v1 + v3; v4[v7] = v2; ++v7; v1 = v3; } else { v2 = v4[v5]; if (v2 == undefined) { v2 = v1 + v1.slice(0, 1); } v8 += v2; v4[v7] = v1 + v2.slice(0, 1); ++v7; v1 = v2; } } ++v6; } return v8; }; v1.compress_fp6 = function (str) { var v3 = new Array(); var v10 = com.newgrounds.encoders.LZW.xmlsafe ? 5 : 0; var v4 = 0; while (v4 < 256) { v3[String(v4)] = v4; ++v4; } if (com.newgrounds.encoders.LZW.xmlsafe) { var v14 = String((new String('<')).charCodeAt(0)); var v11 = String((new String('>')).charCodeAt(0)); var v13 = String((new String('&')).charCodeAt(0)); var v15 = String((new String('"')).charCodeAt(0)); var v12 = String((new String('\'')).charCodeAt(0)); v3[v14] = 256; v3[v11] = 257; v3[v13] = 258; v3[v15] = 259; v3[v12] = 260; } var v7 = ''; var v16 = str; var v8 = v16.split(''); var v9 = v8.length; var v6 = 256 + v10; var v1 = new Array(); v4 = 0; while (v4 <= v9) { var v2 = v8[v4]; if (v1.length == 0) { var v5 = String(v2.charCodeAt(0)); } else { var v5 = v1.join('-') + '-' + String(v2.charCodeAt(0)); } if (v3[v5] !== undefined) { v1.push(v2.charCodeAt(0)); } else { v7 += String.fromCharCode(v3[v1.join('-')]); v3[v5] = v6; ++v6; false; v1 = new Array(); v1.push(v2.charCodeAt(0)); } ++v4; } return v7; }; v1.xmlsafe = false; ASSetPropFlags(com.newgrounds.encoders.LZW.prototype, null, 1); } #endinitclip } movieClip 102 __Packages.com.newgrounds.ScoreBoard { #initclip if (!_global.com) { _global.com = new Object(); } if (!_global.com.newgrounds) { _global.com.newgrounds = new Object(); } if (!_global.com.newgrounds.ScoreBoard) { var v1 = function (id, name, tag) { this._name = name; this._id = id; if (tag !== undefined) { this._tag = tag; } }; com.newgrounds.ScoreBoard = v1; var v2 = v1.prototype; v2.exists = function () { return Number(this._id) > 0; }; v2.__get__id = function () { return this._id; }; v2.__get__name = function () { return this._name; }; v2.__get__period = function () { return this._period; }; v2.__get__tag = function () { return this._tag; }; v2.__get__page = function () { return this._page; }; v2.__get__num_results = function () { return this._num_results; }; v2.__get__scores = function () { return this._scores; }; v2.postScore = function (value, tag) { if (tag !== undefined) { this._tag = tag; } com.newgrounds.API.postScore(this._name, value, this._tag); }; v2.loadScores = function (period, page, num_results, tag) { if (period) { this._period = period; } if (page) { this._page = page; } if (num_results) { this._num_results = num_results; } this._scores = []; com.newgrounds.API.loadScores(this._name, this._period, tag); }; v2.setScores = function (scores, period, page, num_results) { if (period) { this._period = period; } if (page) { this._page = page; } if (num_results) { this._num_results = num_results; } this._scores = []; var v2 = 0; while (v2 < scores.length) { var v4 = this._num_results * (this._page - 1) + 1 + v2; this._scores.push(new com.newgrounds.Score(this, v4, scores[v2].username, scores[v2].value, scores[v2].numeric_value)); ++v2; } }; v2._period = 'Today'; v2._num_results = 10; v2._page = 1; v2._tag = ''; v2.addProperty('id', v2.__get__id, function () {}); v2.addProperty('name', v2.__get__name, function () {}); v2.addProperty('num_results', v2.__get__num_results, function () {}); v2.addProperty('page', v2.__get__page, function () {}); v2.addProperty('period', v2.__get__period, function () {}); v2.addProperty('scores', v2.__get__scores, function () {}); v2.addProperty('tag', v2.__get__tag, function () {}); ASSetPropFlags(com.newgrounds.ScoreBoard.prototype, null, 1); } #endinitclip } movieClip 103 __Packages.com.newgrounds.Score { #initclip if (!_global.com) { _global.com = new Object(); } if (!_global.com.newgrounds) { _global.com.newgrounds = new Object(); } if (!_global.com.newgrounds.Score) { var v1 = function (board, position, username, value, numeric_value) { this._board = board; this._position = position; this._username = username; this._value = value; this._numeric_value = numeric_value; }; com.newgrounds.Score = v1; var v2 = v1.prototype; v2.__get__board = function () { return this._board; }; v2.__get__position = function () { return this._position; }; v2.__get__username = function () { return this._username; }; v2.__get__value = function () { return this._value; }; v2.__get__numeric_value = function () { return this._numeric_value; }; v1.fromTime = function (time) { var v1 = time.split(':'); var v2 = Math.round(Number(v1.pop()) * 1000); if (v1.length > 0) { v2 += Number(v1.pop()) * 60; } if (v1.length > 0) { v2 += Number(v1.pop()) * 3600; } return v2; }; v1.fromDistance = function (distance) { var v1 = distance.indexOf('\''); var v5 = distance.indexOf('"', v1); var v3 = Number(distance.substr(0, v1)); var v4 = Number(distance.substring(v1 + 1, v5)); return Math.round(v3 * 12 + v4); }; v2.addProperty('board', v2.__get__board, function () {}); v2.addProperty('numeric_value', v2.__get__numeric_value, function () {}); v2.addProperty('position', v2.__get__position, function () {}); v2.addProperty('username', v2.__get__username, function () {}); v2.addProperty('value', v2.__get__value, function () {}); ASSetPropFlags(com.newgrounds.Score.prototype, null, 1); } #endinitclip } movieClip 104 __Packages.com.newgrounds.encoders.RC4 { #initclip if (!_global.com) { _global.com = new Object(); } if (!_global.com.newgrounds) { _global.com.newgrounds = new Object(); } if (!_global.com.newgrounds.encoders) { _global.com.newgrounds.encoders = new Object(); } if (!_global.com.newgrounds.encoders.RC4) { var v1 = function () {}; com.newgrounds.encoders.RC4 = v1; var v2 = v1.prototype; v1.encrypt = function (src, key) { var v3 = com.newgrounds.encoders.RC4.strToChars(src); var v1 = com.newgrounds.encoders.RC4.strToChars(key); var v2 = com.newgrounds.encoders.RC4.calculate(v3, v1); return com.newgrounds.encoders.RC4.charsToHex(v2); }; v1.encryptbin = function (src, key) { var v3 = com.newgrounds.encoders.RC4.strToChars(src); var v1 = com.newgrounds.encoders.RC4.strToChars(key); var v2 = com.newgrounds.encoders.RC4.calculate(v3, v1); return v2; }; v1.decrypt = function (src, key) { var v3 = com.newgrounds.encoders.RC4.hexToChars(src); var v1 = com.newgrounds.encoders.RC4.strToChars(key); var v2 = com.newgrounds.encoders.RC4.calculate(v3, v1); return com.newgrounds.encoders.RC4.charsToStr(v2); }; v1.initialize = function (pwd) { var v2 = 0; var v3; var v4 = pwd.length; var v1 = 0; while (v1 <= 255) { com.newgrounds.encoders.RC4.mykey[v1] = pwd[v1 % v4]; com.newgrounds.encoders.RC4.sbox[v1] = v1; ++v1; } v1 = 0; while (v1 <= 255) { v2 = (v2 + com.newgrounds.encoders.RC4.sbox[v1] + com.newgrounds.encoders.RC4.mykey[v1]) % 256; v3 = com.newgrounds.encoders.RC4.sbox[v1]; com.newgrounds.encoders.RC4.sbox[v1] = com.newgrounds.encoders.RC4.sbox[v2]; com.newgrounds.encoders.RC4.sbox[v2] = v3; ++v1; } }; v1.calculate = function (plaintxt, psw) { com.newgrounds.encoders.RC4.initialize(psw); var v1 = 0; var v2 = 0; var v9 = new Array(); var v7; var v5; var v6; var v3 = 0; while (v3 < plaintxt.length) { v1 = (v1 + 1) % 256; v2 = (v2 + com.newgrounds.encoders.RC4.sbox[v1]) % 256; v5 = com.newgrounds.encoders.RC4.sbox[v1]; com.newgrounds.encoders.RC4.sbox[v1] = com.newgrounds.encoders.RC4.sbox[v2]; com.newgrounds.encoders.RC4.sbox[v2] = v5; var v4 = (com.newgrounds.encoders.RC4.sbox[v1] + com.newgrounds.encoders.RC4.sbox[v2]) % 256; v7 = com.newgrounds.encoders.RC4.sbox[v4]; v6 = plaintxt[v3] ^ v7; v9.push(v6); ++v3; } return v9; }; v1.charsToHex = function (chars) { var v4 = new String(''); var v3 = new Array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'); var v1 = 0; while (v1 < chars.length) { v4 += v3[chars[v1] >> 4] + v3[chars[v1] & 15]; ++v1; } return v4; }; v1.hexToChars = function (hex) { var v3 = new Array(); var v1 = (hex.substr(0, 2) == '0x') ? 2 : 0; while (v1 < hex.length) { v3.push(parseInt(hex.substr(v1, 2), 16)); v1 += 2; } return v3; }; v1.charsToStr = function (chars) { var v3 = new String(''); var v1 = 0; while (v1 < chars.length) { v3 += String.fromCharCode(chars[v1]); ++v1; } return v3; }; v1.strToChars = function (str) { var v3 = new Array(); var v1 = 0; while (v1 < str.length) { v3.push(str.charCodeAt(v1)); ++v1; } return v3; }; v1.sbox = new Array(255); v1.mykey = new Array(255); ASSetPropFlags(com.newgrounds.encoders.RC4.prototype, null, 1); } #endinitclip } movieClip 105 __Packages.com.newgrounds.encoders.JSON { #initclip if (!_global.com) { _global.com = new Object(); } if (!_global.com.newgrounds) { _global.com.newgrounds = new Object(); } if (!_global.com.newgrounds.encoders) { _global.com.newgrounds.encoders = new Object(); } if (!_global.com.newgrounds.encoders.JSON) { var v1 = function () {}; com.newgrounds.encoders.JSON = v1; var v2 = v1.prototype; v1.encode = function (arg, noquotes) { var v3; var v2; var v6; var v1 = ''; var v4; if (arg.isSServerVar()) { var v8 = 'sservervariable'; } else { var v8 = typeof arg; } switch (v8) { return 'null'; case 'sservervariable': return '?' + arg.getEncodedValue(); break; case 'object': if (arg) { if (arg instanceof Array) { v2 = 0; while (v2 < arg.length) { v4 = com.newgrounds.encoders.JSON.encode(arg[v2]); if (v1) { v1 += ','; } v1 += v4; ++v2; } return '[' + v1 + ']'; } else { if (typeof arg.toString != 'undefined') { for (v2 in arg) { v4 = arg[v2]; if (typeof v4 != 'undefined' && typeof v4 != 'function') { v4 = com.newgrounds.encoders.JSON.encode(v4); if (v1) { v1 += ','; } v1 += com.newgrounds.encoders.JSON.encode(v2) + ':' + v4; } } return '{' + v1 + '}'; } } } return 'null'; case 'number': return isFinite(arg) ? String(arg) : 'null'; case 'string': v6 = arg.length; if (noquotes) { var v7 = ''; } else { var v7 = '"'; } v1 = v7; v2 = 0; while (v2 < v6) { v3 = arg.charAt(v2); if (v3 >= ' ') { if (v3 == '\\' || v3 == '"') { v1 += '\\'; } v1 += v3; } else { switch (v3) { case '\b': v1 += '\\b'; break; case '\f': v1 += '\\f'; break; case '\n': v1 += '\\n'; break; case '\r': v1 += '\\r'; break; case '\t': v1 += '\\t'; break; default: v3 = v3.charCodeAt(); v1 += '\\u00' + (Math.floor(v3 / 16)).toString(16) + (v3 % 16).toString(16); } } v2 += 1; } return v1 + v7; case 'boolean': return String(arg); default: return 'null'; } }; v1.background_encode = function (arg, callback) { if (com.newgrounds.encoders.JSON.busy) { trace('[Newgrounds Encoder] :: Cannot encode a new file until the previous file is completed'); return false; } else { if (!callback) { trace('[Newgrounds Encoder] :: Missing a callback function, skipping encode'); return false; } } com.newgrounds.encoders.JSON.busy = true; var v2 = new Date(); com.newgrounds.encoders.JSON.start = v2.getTime(); com.newgrounds.encoders.JSON.cache = {'busy': false, 'complete': false, 'arg': arg, 'target': arg, 'parents': [], 'encoded': '', 'callback': callback, 'encode_chunk': function () { com.newgrounds.encoders.JSON.encode_chunk(); }}; if (com.newgrounds.encoders.JSON.getType(arg) == 'object') { com.newgrounds.encoders.JSON.cache.encoded = '{'; com.newgrounds.encoders.JSON.interval = setInterval(com.newgrounds.encoders.JSON.cache, 'encode_chunk', 25); return true; } if (com.newgrounds.encoders.JSON.getType(arg) == 'array') { com.newgrounds.encoders.JSON.cache.encoded = '['; } com.newgrounds.encoders.JSON.interval = setInterval(com.newgrounds.encoders.JSON.cache, 'encode_chunk', 25); return true; }; v1.background_decode = function (arg, callback) { if (com.newgrounds.encoders.JSON.busy) { trace('[Newgrounds Encoder] :: Cannot decode a new file until the previous file is completed'); return false; } else { if (!callback) { trace('[Newgrounds Encoder] :: Missing a callback function, skipping decode'); return false; } } com.newgrounds.encoders.JSON.busy = true; var v1 = new Date(); com.newgrounds.encoders.JSON.start = v1.getTime(); com.newgrounds.encoders.JSON.cache = {'busy': false, 'callback': callback, 'complete': false, 'arg': arg, 'pos': 0, 'parents': ['root'], 'target': null, 'scratch': '', 'decode_chunk': function () { com.newgrounds.encoders.JSON.decode_chunk(); }}; com.newgrounds.encoders.JSON.interval = setInterval(com.newgrounds.encoders.JSON.cache, 'decode_chunk', 25); return true; }; v1.decode = function (text) { var at = 0; var ch = ' '; var _value; var _error = function (m) { throw {'name': 'JSONError', 'message': m, 'at': at - 1, 'text': text}; }; var _next = function () { ch = text.charAt(at); at += 1; return ch; }; var _white = function () { while (ch) { if (ch <= ' ') { _next(); } else { if (ch == '/') { switch (_next()) { case '/': for (;;) { if (!(_next() && ch != '\n' && ch != '\r')) break; } break; case '*': _next(); for (;;) { if (ch) { if (ch == '*') { if (_next() == '/') { _next(); break; } } else { _next(); } continue; } _error('Unterminated comment'); } break; default: _error('Syntax error'); } } else { break; } } } }; var _string = function () { var v4; var v1 = ''; var v3; var v2; var v5 = false; if (ch == '"') { while (_next()) { if (ch == '"') { _next(); return v1; } else { if (ch == '\\') { switch (_next()) { case 'b': v1 += '\b'; break; case 'f': v1 += '\f'; break; case 'n': v1 += '\n'; break; case 'r': v1 += '\r'; break; case 't': v1 += '\t'; break; case 'u': v2 = 0; v4 = 0; while (v4 < 4) { v3 = parseInt(_next(), 16); if (!isFinite(v3)) { v5 = true; break; } v2 = v2 * 16 + v3; v4 += 1; } if (v5) { v5 = false; } else { v1 += String.fromCharCode(v2); break; default: v1 += ch; } } } else { v1 += ch; } } } } _error('Bad string'); }; var _array = function () { var v1 = []; if (ch == '[') { _next(); _white(); if (ch == ']') { _next(); return v1; } while (ch) { v1.push(_value()); _white(); if (ch == ']') { _next(); return v1; } else { if (ch != ',') { break; } } _next(); _white(); } } _error('Bad array'); }; var _object = function () { var v2; var v1 = {}; if (ch == '{') { _next(); _white(); if (ch == '}') { _next(); return v1; } while (ch) { v2 = _string(); _white(); if (ch != ':') { break; } _next(); v1[v2] = _value(); _white(); if (ch == '}') { _next(); return v1; } else { if (ch != ',') { break; } } _next(); _white(); } } _error('Bad object'); }; var _number = function () { var v1 = ''; var v2; if (ch == '-') { v1 = '-'; _next(); } for (;;) { if (!(ch >= '0' && ch <= '9')) break; v1 += ch; _next(); } if (ch == '.') { v1 += '.'; for (;;) { if (!(_next() && ch >= '0' && ch <= '9')) break; v1 += ch; } } v2 = 1 * v1; if (!isFinite(v2)) { _error('Bad number'); } else { return v2; } }; var _word = function () { switch (ch) { case 't': if (_next() == 'r' && _next() == 'u' && _next() == 'e') { _next(); return true; } break; case 'f': if (_next() == 'a' && _next() == 'l' && _next() == 's' && _next() == 'e') { _next(); return false; } break; case 'n': if (_next() == 'u' && _next() == 'l' && _next() == 'l') { _next(); return null; } } _error('Syntax error'); }; _value = function () { _white(); switch (ch) { case '{': return _object(); case '[': return _array(); case '"': return _string(); case '-': return _number(); } return (ch >= '0' && ch <= '9') ? _number() : _word(); }; return _value(); }; v1.getType = function (v) { if (v instanceof Array) { return 'array'; } else { return typeof v; } }; v1.decode_chunk = function () { if (!com.newgrounds.encoders.JSON.cache.busy && !com.newgrounds.encoders.JSON.cache.complete) { com.newgrounds.encoders.JSON.cache.busy = true; var v1 = 0; while (v1 < com.newgrounds.encoders.JSON.decode_chunks) { com.newgrounds.encoders.JSON.chunk_decoder(); if (com.newgrounds.encoders.JSON.cache.complete) { break; } ++v1; } trace(Math.round((com.newgrounds.encoders.JSON.cache.pos / com.newgrounds.encoders.JSON.cache.arg.length) * 100) + '% decoded'); com.newgrounds.encoders.JSON.cache.busy = false; } if (com.newgrounds.encoders.JSON.cache.complete) { var v2 = new Date(); com.newgrounds.encoders.JSON.busy = false; clearInterval(com.newgrounds.encoders.JSON.interval); com.newgrounds.encoders.JSON.cache.callback(com.newgrounds.encoders.JSON.cache.root, v2.getTime() - com.newgrounds.encoders.JSON.start); com.newgrounds.encoders.JSON.cache.arg = ''; } }; v1.encode_chunk = function () { if (!com.newgrounds.encoders.JSON.cache.busy && !com.newgrounds.encoders.JSON.cache.complete) { com.newgrounds.encoders.JSON.cache.busy = true; var v1 = 0; while (v1 < com.newgrounds.encoders.JSON.encode_chunks) { com.newgrounds.encoders.JSON.chunk_encoder(); if (com.newgrounds.encoders.JSON.cache.complete) { break; } ++v1; } com.newgrounds.encoders.JSON.cache.busy = false; } if (com.newgrounds.encoders.JSON.cache.complete) { var v3 = new Date(); var v2 = v3.getTime(); com.newgrounds.encoders.JSON.busy = false; clearInterval(com.newgrounds.encoders.JSON.interval); com.newgrounds.encoders.JSON.cache.callback(com.newgrounds.encoders.JSON.cache.encoded, v2 - com.newgrounds.encoders.JSON.start); com.newgrounds.encoders.JSON.cache.encoded = ''; } }; v1.chunk_decoder = function () { function _object() { var v1 = com.newgrounds.encoders.JSON.cache.arg.charAt(com.newgrounds.encoders.JSON.cache.pos); if (!com.newgrounds.encoders.JSON.cache.mode) { com.newgrounds.encoders.JSON.cache.mode = 'object'; ++com.newgrounds.encoders.JSON.cache.pos; v1 = com.newgrounds.encoders.JSON.cache.arg.charAt(com.newgrounds.encoders.JSON.cache.pos); if (v1 != '"') { throw 'Malformed object key in encoded string. Keys must be wrapped in quotes ("")'; } com.newgrounds.encoders.JSON.cache.scratch = ''; _setTargetValue({}); } else { if (v1 == ',') { ++com.newgrounds.encoders.JSON.cache.pos; v1 = com.newgrounds.encoders.JSON.cache.arg.charAt(com.newgrounds.encoders.JSON.cache.pos); if (v1 != '"') { throw 'Malformed object key in encoded string. Keys must be wrapped in quotes ("")'; } com.newgrounds.encoders.JSON.cache.scratch = ''; } else { if (v1 == '}') { _useParent(); } else { if (v1 == '"') { ++com.newgrounds.encoders.JSON.cache.pos; v1 = com.newgrounds.encoders.JSON.cache.arg.charAt(com.newgrounds.encoders.JSON.cache.pos); if (v1 != ':') { throw 'Malformed object notation. Object keys and values must be separated by colons(:)'; } _addParent(com.newgrounds.encoders.JSON.cache.scratch); com.newgrounds.encoders.JSON.cache.mode = null; } else { if (v1 == '\\') { ++com.newgrounds.encoders.JSON.cache.pos; v1 = com.newgrounds.encoders.JSON.cache.arg.charAt(com.newgrounds.encoders.JSON.cache.pos); } com.newgrounds.encoders.JSON.cache.scratch += v1; } } } } ++com.newgrounds.encoders.JSON.cache.pos; } function _array() { var v1 = com.newgrounds.encoders.JSON.cache.arg.charAt(com.newgrounds.encoders.JSON.cache.pos); if (!com.newgrounds.encoders.JSON.cache.mode) { com.newgrounds.encoders.JSON.cache.mode = 'array'; ++com.newgrounds.encoders.JSON.cache.pos; v1 = com.newgrounds.encoders.JSON.cache.arg.charAt(com.newgrounds.encoders.JSON.cache.pos); _setTargetValue([]); if (v1 != ']') { _addArrayKey(); } else { _useParent(); } return undefined; } else { if (v1 == ',') { _addArrayKey(); } else { if (v1 == ']') { _useParent(); } } } ++com.newgrounds.encoders.JSON.cache.pos; } function _boolean() { var v1 = com.newgrounds.encoders.JSON.cache.arg.charAt(com.newgrounds.encoders.JSON.cache.pos); if (v1 == 't') { _setTargetValue(true); com.newgrounds.encoders.JSON.cache.pos += 3; } else { if (v1 == 'f') { _setTargetValue(false); com.newgrounds.encoders.JSON.cache.pos += 4; } else { throw 'Bool values must be true or false'; } } _useParent(); } function _null() { var v1 = com.newgrounds.encoders.JSON.cache.arg.charAt(com.newgrounds.encoders.JSON.cache.pos); if (v1 == 'n') { _setTargetValue(null); com.newgrounds.encoders.JSON.cache.pos += 2; } else { throw 'Null values must be null'; } _useParent(); } function _string() { var v1 = com.newgrounds.encoders.JSON.cache.arg.charAt(com.newgrounds.encoders.JSON.cache.pos); if (!com.newgrounds.encoders.JSON.cache.mode) { if (v1 != '"') { throw 'Strings must be wrapped in quotes ("")'; } com.newgrounds.encoders.JSON.cache.scratch = ''; com.newgrounds.encoders.JSON.cache.mode = 'string'; } else { if (v1 == '"') { _setTargetValue(com.newgrounds.encoders.JSON.cache.scratch); _useParent(); } else { if (v1 == '\\') { ++com.newgrounds.encoders.JSON.cache.pos; v1 = com.newgrounds.encoders.JSON.cache.arg.charAt(com.newgrounds.encoders.JSON.cache.pos); switch (v1) { case 'n': v1 = '\n'; break; case 'r': v1 = '\n'; break; case 't': v1 = '\t'; break; case 'u': v1 = '\\' + v1; } } com.newgrounds.encoders.JSON.cache.scratch += v1; } } ++com.newgrounds.encoders.JSON.cache.pos; } function _number() { var v1 = com.newgrounds.encoders.JSON.cache.arg.charAt(com.newgrounds.encoders.JSON.cache.pos); var v2 = '01234567890.-'; if (!com.newgrounds.encoders.JSON.cache.mode) { com.newgrounds.encoders.JSON.cache.mode = 'number'; com.newgrounds.encoders.JSON.cache.scratch = ''; } if (v2.indexOf(v1) < 0) { _setTargetValue(Number(com.newgrounds.encoders.JSON.cache.scratch)); _useParent(); } else { com.newgrounds.encoders.JSON.cache.scratch += v1; ++com.newgrounds.encoders.JSON.cache.pos; } } function _setTargetValue(newval) { var v2 = (_getParent()).obj; var v1 = com.newgrounds.encoders.JSON.cache.parents[com.newgrounds.encoders.JSON.cache.parents.length - 1]; v2[v1] = newval; } function _useParent() { com.newgrounds.encoders.JSON.cache.mode = com.newgrounds.encoders.JSON.getType((_getParent()).obj); com.newgrounds.encoders.JSON.cache.parents.pop(); } function _getParent() { var v2 = com.newgrounds.encoders.JSON.cache; var v1 = 0; while (v1 < com.newgrounds.encoders.JSON.cache.parents.length - 1) { v2 = v2[com.newgrounds.encoders.JSON.cache.parents[v1]]; ++v1; } return {'obj': v2, 'name': com.newgrounds.encoders.JSON.cache.parents[v1]}; } function _getCurrent() { var v2 = com.newgrounds.encoders.JSON.cache; var v1 = 0; while (v1 < com.newgrounds.encoders.JSON.cache.parents.length) { v2 = v2[com.newgrounds.encoders.JSON.cache.parents[v1]]; ++v1; } return {'obj': v2, 'name': com.newgrounds.encoders.JSON.cache.parents[v1]}; } function _addParent(child) { com.newgrounds.encoders.JSON.cache.parents.push(child); } function _addArrayKey() { var v1 = (_getCurrent()).obj.length; com.newgrounds.encoders.JSON.cache.parents.push(v1); com.newgrounds.encoders.JSON.cache.mode = null; } if (com.newgrounds.encoders.JSON.cache.pos >= com.newgrounds.encoders.JSON.cache.arg.length) { com.newgrounds.encoders.JSON.cache.complete = true; return undefined; } else { if (com.newgrounds.encoders.JSON.cache.mode) { ('_' + com.newgrounds.encoders.JSON.cache.mode)(); } else { var char = com.newgrounds.encoders.JSON.cache.arg.charAt(com.newgrounds.encoders.JSON.cache.pos); switch (char) { case '{': _object(); break; case '[': _array(); break; case '"': _string(); break; case 'n': _null(); break; case 't': _boolean(); break; case 'f': _boolean(); break; default: _number(); } } } }; v1.chunk_encoder = function () { if (com.newgrounds.encoders.JSON.cache.complete) { return undefined; } var v2 = com.newgrounds.encoders.JSON.getType(com.newgrounds.encoders.JSON.cache.target); switch (v2) { case 'number': com.newgrounds.encoders.JSON.cache.encoded += com.newgrounds.encoders.JSON.cache.target; com.newgrounds.encoders.JSON.getParent(); break; case 'string': com.newgrounds.encoders.JSON.cache.encoded += '"' + (com.newgrounds.encoders.JSON.cache.target.split('"')).join('\\"') + '"'; com.newgrounds.encoders.JSON.getParent(); break; case 'boolean': com.newgrounds.encoders.JSON.cache.encoded += (com.newgrounds.encoders.JSON.cache.target == true) ? 'true' : 'false'; com.newgrounds.encoders.JSON.getParent(); break; case 'null': com.newgrounds.encoders.JSON.cache.encoded += 'null'; com.newgrounds.encoders.JSON.getParent(); break; case 'array': if (com.newgrounds.encoders.JSON.cache.target.length < 1) { com.newgrounds.encoders.JSON.cache.encoded += ']'; com.newgrounds.encoders.JSON.getParent(); } else { com.newgrounds.encoders.JSON.cache.parents.push(com.newgrounds.encoders.JSON.cache.target); com.newgrounds.encoders.JSON.cache.target = com.newgrounds.encoders.JSON.cache.target[0]; if (com.newgrounds.encoders.JSON.getType(com.newgrounds.encoders.JSON.cache.target) == 'array') { com.newgrounds.encoders.JSON.cache.encoded += '['; } else { if (com.newgrounds.encoders.JSON.getType(com.newgrounds.encoders.JSON.cache.target) == 'object') { com.newgrounds.encoders.JSON.cache.encoded += '{'; } } } break; case 'object': for (var v1 in com.newgrounds.encoders.JSON.cache.target) { break; } if (v1 === undefined) { com.newgrounds.encoders.JSON.cache.encoded += '}'; com.newgrounds.encoders.JSON.getParent(); } else { com.newgrounds.encoders.JSON.cache.parents.push(com.newgrounds.encoders.JSON.cache.target); com.newgrounds.encoders.JSON.cache.target = com.newgrounds.encoders.JSON.cache.target[v1]; com.newgrounds.encoders.JSON.cache.encoded += '"' + (v1.split('"')).join('\\"') + '":'; if (com.newgrounds.encoders.JSON.getType(com.newgrounds.encoders.JSON.cache.target) == 'array') { com.newgrounds.encoders.JSON.cache.encoded += '['; } else { if (com.newgrounds.encoders.JSON.getType(com.newgrounds.encoders.JSON.cache.target) == 'object') { com.newgrounds.encoders.JSON.cache.encoded += '{'; } } } break; default: com.newgrounds.encoders.JSON.cache.encoded += 'null'; com.newgrounds.encoders.JSON.getParent(); } }; v1.getParent = function () { if (com.newgrounds.encoders.JSON.cache.parents.length > 0) { var v1 = com.newgrounds.encoders.JSON.cache.parents.pop(); if (com.newgrounds.encoders.JSON.getType(v1) == 'array') { v1.shift(); } else { for (var v3 in v1) { delete v1[v3]; break; } } if (com.newgrounds.encoders.JSON.getType(v1) == 'object' or com.newgrounds.encoders.JSON.getType(v1) == 'array') { for (var v2 in v1) { break; } if (v2 !== undefined) { com.newgrounds.encoders.JSON.cache.encoded += ','; } } com.newgrounds.encoders.JSON.cache.target = v1; } else { com.newgrounds.encoders.JSON.cache.complete = true; } }; v1.encode_chunks = 20000; v1.decode_chunks = 20000; v1.busy = false; ASSetPropFlags(com.newgrounds.encoders.JSON.prototype, null, 1); } #endinitclip } movieClip 107 __Packages.com.newgrounds.encoders.MD5 { #initclip if (!_global.com) { _global.com = new Object(); } if (!_global.com.newgrounds) { _global.com.newgrounds = new Object(); } if (!_global.com.newgrounds.encoders) { _global.com.newgrounds.encoders = new Object(); } if (!_global.com.newgrounds.encoders.MD5) { var v1 = function () {}; com.newgrounds.encoders.MD5 = v1; var v2 = v1.prototype; v1.calculate = function (src) { return com.newgrounds.encoders.MD5.hex_md5(src); }; v1.hex_md5 = function (src) { return com.newgrounds.encoders.MD5.binl2hex(com.newgrounds.encoders.MD5.core_md5(com.newgrounds.encoders.MD5.str2binl(src), src.length * 8)); }; v1.core_md5 = function (x, len) { x[len >> 5] |= 128 << len % 32; x[(len + 64 >>> 9 << 4) + 14] = len; var v4 = 1732584193; var v3 = -271733879; var v2 = -1732584194; var v1 = 271733878; var v5 = 0; while (v5 < x.length) { var v10 = v4; var v9 = v3; var v8 = v2; var v7 = v1; v4 = com.newgrounds.encoders.MD5.md5_ff(v4, v3, v2, v1, x[v5 + 0], 7, -680876936); v1 = com.newgrounds.encoders.MD5.md5_ff(v1, v4, v3, v2, x[v5 + 1], 12, -389564586); v2 = com.newgrounds.encoders.MD5.md5_ff(v2, v1, v4, v3, x[v5 + 2], 17, 606105819); v3 = com.newgrounds.encoders.MD5.md5_ff(v3, v2, v1, v4, x[v5 + 3], 22, -1044525330); v4 = com.newgrounds.encoders.MD5.md5_ff(v4, v3, v2, v1, x[v5 + 4], 7, -176418897); v1 = com.newgrounds.encoders.MD5.md5_ff(v1, v4, v3, v2, x[v5 + 5], 12, 1200080426); v2 = com.newgrounds.encoders.MD5.md5_ff(v2, v1, v4, v3, x[v5 + 6], 17, -1473231341); v3 = com.newgrounds.encoders.MD5.md5_ff(v3, v2, v1, v4, x[v5 + 7], 22, -45705983); v4 = com.newgrounds.encoders.MD5.md5_ff(v4, v3, v2, v1, x[v5 + 8], 7, 1770035416); v1 = com.newgrounds.encoders.MD5.md5_ff(v1, v4, v3, v2, x[v5 + 9], 12, -1958414417); v2 = com.newgrounds.encoders.MD5.md5_ff(v2, v1, v4, v3, x[v5 + 10], 17, -42063); v3 = com.newgrounds.encoders.MD5.md5_ff(v3, v2, v1, v4, x[v5 + 11], 22, -1990404162); v4 = com.newgrounds.encoders.MD5.md5_ff(v4, v3, v2, v1, x[v5 + 12], 7, 1804603682); v1 = com.newgrounds.encoders.MD5.md5_ff(v1, v4, v3, v2, x[v5 + 13], 12, -40341101); v2 = com.newgrounds.encoders.MD5.md5_ff(v2, v1, v4, v3, x[v5 + 14], 17, -1502002290); v3 = com.newgrounds.encoders.MD5.md5_ff(v3, v2, v1, v4, x[v5 + 15], 22, 1236535329); v4 = com.newgrounds.encoders.MD5.md5_gg(v4, v3, v2, v1, x[v5 + 1], 5, -165796510); v1 = com.newgrounds.encoders.MD5.md5_gg(v1, v4, v3, v2, x[v5 + 6], 9, -1069501632); v2 = com.newgrounds.encoders.MD5.md5_gg(v2, v1, v4, v3, x[v5 + 11], 14, 643717713); v3 = com.newgrounds.encoders.MD5.md5_gg(v3, v2, v1, v4, x[v5 + 0], 20, -373897302); v4 = com.newgrounds.encoders.MD5.md5_gg(v4, v3, v2, v1, x[v5 + 5], 5, -701558691); v1 = com.newgrounds.encoders.MD5.md5_gg(v1, v4, v3, v2, x[v5 + 10], 9, 38016083); v2 = com.newgrounds.encoders.MD5.md5_gg(v2, v1, v4, v3, x[v5 + 15], 14, -660478335); v3 = com.newgrounds.encoders.MD5.md5_gg(v3, v2, v1, v4, x[v5 + 4], 20, -405537848); v4 = com.newgrounds.encoders.MD5.md5_gg(v4, v3, v2, v1, x[v5 + 9], 5, 568446438); v1 = com.newgrounds.encoders.MD5.md5_gg(v1, v4, v3, v2, x[v5 + 14], 9, -1019803690); v2 = com.newgrounds.encoders.MD5.md5_gg(v2, v1, v4, v3, x[v5 + 3], 14, -187363961); v3 = com.newgrounds.encoders.MD5.md5_gg(v3, v2, v1, v4, x[v5 + 8], 20, 1163531501); v4 = com.newgrounds.encoders.MD5.md5_gg(v4, v3, v2, v1, x[v5 + 13], 5, -1444681467); v1 = com.newgrounds.encoders.MD5.md5_gg(v1, v4, v3, v2, x[v5 + 2], 9, -51403784); v2 = com.newgrounds.encoders.MD5.md5_gg(v2, v1, v4, v3, x[v5 + 7], 14, 1735328473); v3 = com.newgrounds.encoders.MD5.md5_gg(v3, v2, v1, v4, x[v5 + 12], 20, -1926607734); v4 = com.newgrounds.encoders.MD5.md5_hh(v4, v3, v2, v1, x[v5 + 5], 4, -378558); v1 = com.newgrounds.encoders.MD5.md5_hh(v1, v4, v3, v2, x[v5 + 8], 11, -2022574463); v2 = com.newgrounds.encoders.MD5.md5_hh(v2, v1, v4, v3, x[v5 + 11], 16, 1839030562); v3 = com.newgrounds.encoders.MD5.md5_hh(v3, v2, v1, v4, x[v5 + 14], 23, -35309556); v4 = com.newgrounds.encoders.MD5.md5_hh(v4, v3, v2, v1, x[v5 + 1], 4, -1530992060); v1 = com.newgrounds.encoders.MD5.md5_hh(v1, v4, v3, v2, x[v5 + 4], 11, 1272893353); v2 = com.newgrounds.encoders.MD5.md5_hh(v2, v1, v4, v3, x[v5 + 7], 16, -155497632); v3 = com.newgrounds.encoders.MD5.md5_hh(v3, v2, v1, v4, x[v5 + 10], 23, -1094730640); v4 = com.newgrounds.encoders.MD5.md5_hh(v4, v3, v2, v1, x[v5 + 13], 4, 681279174); v1 = com.newgrounds.encoders.MD5.md5_hh(v1, v4, v3, v2, x[v5 + 0], 11, -358537222); v2 = com.newgrounds.encoders.MD5.md5_hh(v2, v1, v4, v3, x[v5 + 3], 16, -722521979); v3 = com.newgrounds.encoders.MD5.md5_hh(v3, v2, v1, v4, x[v5 + 6], 23, 76029189); v4 = com.newgrounds.encoders.MD5.md5_hh(v4, v3, v2, v1, x[v5 + 9], 4, -640364487); v1 = com.newgrounds.encoders.MD5.md5_hh(v1, v4, v3, v2, x[v5 + 12], 11, -421815835); v2 = com.newgrounds.encoders.MD5.md5_hh(v2, v1, v4, v3, x[v5 + 15], 16, 530742520); v3 = com.newgrounds.encoders.MD5.md5_hh(v3, v2, v1, v4, x[v5 + 2], 23, -995338651); v4 = com.newgrounds.encoders.MD5.md5_ii(v4, v3, v2, v1, x[v5 + 0], 6, -198630844); v1 = com.newgrounds.encoders.MD5.md5_ii(v1, v4, v3, v2, x[v5 + 7], 10, 1126891415); v2 = com.newgrounds.encoders.MD5.md5_ii(v2, v1, v4, v3, x[v5 + 14], 15, -1416354905); v3 = com.newgrounds.encoders.MD5.md5_ii(v3, v2, v1, v4, x[v5 + 5], 21, -57434055); v4 = com.newgrounds.encoders.MD5.md5_ii(v4, v3, v2, v1, x[v5 + 12], 6, 1700485571); v1 = com.newgrounds.encoders.MD5.md5_ii(v1, v4, v3, v2, x[v5 + 3], 10, -1894986606); v2 = com.newgrounds.encoders.MD5.md5_ii(v2, v1, v4, v3, x[v5 + 10], 15, -1051523); v3 = com.newgrounds.encoders.MD5.md5_ii(v3, v2, v1, v4, x[v5 + 1], 21, -2054922799); v4 = com.newgrounds.encoders.MD5.md5_ii(v4, v3, v2, v1, x[v5 + 8], 6, 1873313359); v1 = com.newgrounds.encoders.MD5.md5_ii(v1, v4, v3, v2, x[v5 + 15], 10, -30611744); v2 = com.newgrounds.encoders.MD5.md5_ii(v2, v1, v4, v3, x[v5 + 6], 15, -1560198380); v3 = com.newgrounds.encoders.MD5.md5_ii(v3, v2, v1, v4, x[v5 + 13], 21, 1309151649); v4 = com.newgrounds.encoders.MD5.md5_ii(v4, v3, v2, v1, x[v5 + 4], 6, -145523070); v1 = com.newgrounds.encoders.MD5.md5_ii(v1, v4, v3, v2, x[v5 + 11], 10, -1120210379); v2 = com.newgrounds.encoders.MD5.md5_ii(v2, v1, v4, v3, x[v5 + 2], 15, 718787259); v3 = com.newgrounds.encoders.MD5.md5_ii(v3, v2, v1, v4, x[v5 + 9], 21, -343485551); v4 = com.newgrounds.encoders.MD5.safe_add(v4, v10); v3 = com.newgrounds.encoders.MD5.safe_add(v3, v9); v2 = com.newgrounds.encoders.MD5.safe_add(v2, v8); v1 = com.newgrounds.encoders.MD5.safe_add(v1, v7); v5 += 16; } return new Array(v4, v3, v2, v1); }; v1.md5_cmn = function (q, a, b, x, s, t) { return com.newgrounds.encoders.MD5.safe_add(com.newgrounds.encoders.MD5.bit_rol(com.newgrounds.encoders.MD5.safe_add(com.newgrounds.encoders.MD5.safe_add(a, q), com.newgrounds.encoders.MD5.safe_add(x, t)), s), b); }; v1.md5_ff = function (a, b, c, d, x, s, t) { return com.newgrounds.encoders.MD5.md5_cmn(b & c | ~b & d, a, b, x, s, t); }; v1.md5_gg = function (a, b, c, d, x, s, t) { return com.newgrounds.encoders.MD5.md5_cmn(b & d | c & ~d, a, b, x, s, t); }; v1.md5_hh = function (a, b, c, d, x, s, t) { return com.newgrounds.encoders.MD5.md5_cmn(b ^ c ^ d, a, b, x, s, t); }; v1.md5_ii = function (a, b, c, d, x, s, t) { return com.newgrounds.encoders.MD5.md5_cmn(c ^ (b | ~d), a, b, x, s, t); }; v1.bit_rol = function (num, cnt) { return num << cnt | num >>> 32 - cnt; }; v1.safe_add = function (x, y) { var v1 = (x & 65535) + (y & 65535); var v2 = (x >> 16) + (y >> 16) + (v1 >> 16); return v2 << 16 | v1 & 65535; }; v1.str2binl = function (str) { var v3 = new Array(); var v4 = 255; var v1 = 0; while (v1 < str.length * 8) { v3[v1 >> 5] |= (str.charCodeAt(v1 / 8) & v4) << v1 % 32; v1 += 8; } return v3; }; v1.binl2hex = function (binarray) { var v4 = new String(''); var v3 = new String('0123456789abcdef'); var v1 = 0; while (v1 < binarray.length * 4) { v4 += v3.charAt(binarray[v1 >> 2] >> (v1 % 4) * 8 + 4 & 15) + v3.charAt(binarray[v1 >> 2] >> (v1 % 4) * 8 & 15); ++v1; } return v4; }; ASSetPropFlags(com.newgrounds.encoders.MD5.prototype, null, 1); } #endinitclip } movieClip 108 __Packages.com.newgrounds.components.APIConnector { #initclip if (!_global.com) { _global.com = new Object(); } if (!_global.com.newgrounds) { _global.com.newgrounds = new Object(); } if (!_global.com.newgrounds.components) { _global.com.newgrounds.components = new Object(); } if (!_global.com.newgrounds.components.APIConnector) { var v1 = function () { super(); this._x = Math.round(this._x); this._y = Math.round(this._y); if (this.fake_session and com.newgrounds.API.getHost() == 'localhost') { com.newgrounds.API.setFakeSession(true); } if (this.api_id && !com.newgrounds.API.isConnected()) { this.nextFrame(); this._visible = false; this.setGotoFrame('connecting'); if (this.error_screens) { com.newgrounds.API.addEventListener(com.newgrounds.APIEvent.NEW_VERSION_AVAILABLE, this.onNewVersion, this); com.newgrounds.API.addEventListener(com.newgrounds.APIEvent.HOST_BLOCKED, this.onBadHost, this); } if (this.medal_popups) { com.newgrounds.API.addEventListener(com.newgrounds.APIEvent.UNLOCK_MEDAL, this.doUnlock, this); } com.newgrounds.API.addEventListener(com.newgrounds.APIEvent.API_CONNECTED, this.onConnected, this); if (com.newgrounds.API.isPublishedHost()) { this.debug = false; } if (this.version) { com.newgrounds.API.setVersion(this.version); } if (!com.newgrounds.API.hasUserSession()) { var v3 = com.newgrounds.API.loadLocal('api_connector_data'); if (v3) { this.local_data = v3; } else { this.local_data = {'medals_unlocked': new Array()}; } } com.newgrounds.API.setPreload(true); com.newgrounds.API.connect(this.api_id, this.encryption_key, this.debug); } else { if (this.api_id && com.newgrounds.API.isConnected()) { this._visible = false; this.setGotoFrame('done'); } } this.stop(); }; com.newgrounds.components.APIConnector = v1; com.newgrounds.components.APIConnector extends MovieClip; var v2 = v1.prototype; v2.doUnlock = function (e) { var v5 = _root.attachMovie('NewgroundsAPIAsset_Medal_Popup', 'medal_pop_' + e.data.medal.getID(), _root.getNextHighestDepth()); if (e.data.x != undefined) { v5._x = e.data.x + 254; } else { v5._x = Stage.width; } if (e.data.x != undefined) { v5._y = e.data.y + 73; } else { v5._y = Stage.height; } v5.medal = e.data.medal; var v3 = com.newgrounds.API.getMedals(); var v2 = 0; while (v2 < v3.length) { if (v3[v2].getID() != e.data.medal.getID() && _root['medal_pop_' + v3[v2].getID()]) { _root['medal_pop_' + v3[v2].getID()]._y -= 70; } ++v2; } }; v2.onLoginError = function () { var v2 = _root.attachMovie('Asset_Login_Warning', 'Asset_Login_Warning', _root.getNextHighestDepth()); }; v2.onConnectionError = function () { var v3 = _root.attachMovie('Asset_Connection_Error', 'Asset_Connection_Error', _root.getNextHighestDepth()); this.setGotoFrame('done'); }; v2.onConnected = function (event, params) { if (event.success) { this.setGotoFrame('connected'); if (this.error_screens && com.newgrounds.API.isPublishedHost() && com.newgrounds.API.hasPublisher() && !com.newgrounds.API.hasUserSession()) { this.onLoginError(); } } else { if (this.error_screens) { this.onConnectionError(); } } }; v2.onNewVersion = function () { var v2 = _root.attachMovie('NewgroundsAsset_New_Version_Available', 'NewgroundsAsset_New_Version_Available', _root.getNextHighestDepth()); v2.official_version_url = com.newgrounds.API.getOfficialURL(); }; v2.onBadHost = function () { var v2 = _root.attachMovie('NewgroundsAsset_Illegal_Host', 'NewgroundsAsset_Illegal_Host', _root.getNextHighestDepth()); v2.official_version_url = com.newgrounds.API.getOfficialURL(); }; v2.setGotoFrame = function (frame) { if (this.goto_frame == null) { this.goto_frame = frame; this.gotoframe_interval = setInterval(this, 'gotoFrameIfLoaded', 50); } }; v2.gotoFrameIfLoaded = function () { if (this.goto_frame != null && this._framesloaded == this._totalframes) { this._visible = true; this.gotoAndStop(this.goto_frame); this.goto_frame = null; clearInterval(this.gotoframe_interval); } }; v2.goto_frame = null; ASSetPropFlags(com.newgrounds.components.APIConnector.prototype, null, 1); } #endinitclip } frame 6 { function round2(num) { return Math.round(num * 100) / 100; } copyright = 'Copyright (c) 2009 by Enkord'; System.security.allowDomain('www.enkord.com'); if (bannerURL == undefined) { bannerURL = 'http://www.enkord.com/games/gunrox/banner.swf'; } lang = 'en'; stop(); _focusrect = false; Stage.showMenu = false; Stage.width = 480; Stage.height = 360; Stage.scaleMode = 'noScale'; percent_mc._xscale = 0; var to = _root.getBytesTotal(); var prevLo = 0; total_txt.text = (Math.round(to / 1024)).toString() + ' KB'; var loadListener = new Object(); loadListener.onLoadError = function (target_mc, errorCode) { preload_logo_mc._visible = true; loaded_txt._visible = true; total_txt._visible = true; percent_mc._visible = true; percent_txt._visible = true; frame_mc._visible = true; preload_logo_mc.onPress = function () { getURL('http://www.enkord.com/?from=gunroxworldrevolution', '_blank'); }; }; if (downloadURL == undefined) { preload_logo_mc._visible = false; loaded_txt._visible = false; total_txt._visible = false; percent_mc._visible = false; percent_txt._visible = false; frame_mc._visible = false; var mcLoader = new MovieClipLoader(); mcLoader.addListener(loadListener); var mc = this.createEmptyMovieClip('bannerstub', this.getNextHighestDepth()); mcLoader.loadClip(bannerURL, mc); } ii = setInterval(function () { var v2 = _root.getBytesLoaded(); var v4 = round2((v2 - prevLo) / 64); speed_txt.text = v4.toString() + ' Kb/s'; loaded_txt.text = (Math.round(v2 / 1024)).toString() + ' KB'; var v3 = Math.round((v2 / to) * 100); percent_txt.text = v3 + ' %'; percent_mc._xscale = v3; prevLo = v2; if (v2 == to) { clearInterval(ii); gotoAndPlay('StartUp'); } }, 500); var rootURL = 'http://www.enkord.com/'; if (moreGamesURL == undefined) { moreGamesURL = 'http://www.enkord.com/?from=gunroxworldrevolution'; } if (downloadURL == undefined) { downloadURL = 'http://www.gunrox.com/?ref=yy_fl_wrap'; } else { greatgames._visible = false; greatgames_btn.enabled = false; enkordgames._visible = false; enkordgames_btn.enabled = false; not_our_site = true; } if (hiscoreURL == undefined) { hiscoreURL = rootURL + (not_our_site ? 'games/gunroxzombietown/online/hiscore-nolinks.php' : 'games/gunroxzombietown/online/hiscore.php'); } if (addgameURL == undefined) { addgameURL = 'http://www.enkord.com/games/gunroxworldrevolution/online/webmaster/'; } gibsonURL = 'http://www.enkord.com/games/gunroxonceingibson/online/'; } movieClip 188 { } movieClip 190 { } instance of movieClip 86 Flash Ad (NewgroundsAPI) { onClipEvent (construct) { show_background = true; } } movieClip 191 { } movieClip 192 { } movieClip 197 { frame 30 { this.gotoAndPlay('cycle'); } } movieClip 205 { frame 31 { this.gotoAndPlay('cycle'); } } movieClip 208 { } // unknown tag 88 length 78 movieClip 212 { } movieClip 215 { frame 15 { this.stop(); } } movieClip 217 { } movieClip 219 { } movieClip 220 { } movieClip 223 { } // unknown tag 88 length 86 button 228 { on (release) { (Core.Get()).playSound('button_click'); getURL(_root.downloadURL, '_blank'); } on (rollOver) { (Core.Get()).playSound('button_hover'); } } movieClip 229 { } movieClip 239 { } movieClip 240 button_tab { #initclip Object.registerClass('button_tab', ButtonMenu); #endinitclip } movieClip 249 { } movieClip 250 button_tab_s { #initclip Object.registerClass('button_tab_s', ButtonMenu); #endinitclip } movieClip 260 { } movieClip 261 btn_small { #initclip Object.registerClass('btn_small', ButtonMenu); #endinitclip } movieClip 262 mapscreen { #initclip Object.registerClass('mapscreen', ScreenMap); #endinitclip frame 1 { init(); } } movieClip 272 { frame 7 { } } movieClip 273 buttonX { #initclip Object.registerClass('buttonX', ButtonMenu); #endinitclip } movieClip 274 helpscreen { #initclip Object.registerClass('helpscreen', ScreenHelp); #endinitclip frame 1 { init(); } } movieClip 280 { frame 1 { (Core.Get()).playSound('thunder', -1); } } movieClip 283 { frame 61 { (Core.Get()).playSound('thunder', 1); } } movieClip 287 { frame 301 { (Core.Get()).playSound('thunder', 0); } } movieClip 291 { } button 294 { on (release) { (Core.Get()).playSound('button_click'); getURL(_root.addgameURL, '_blank'); } on (rollOver) { (Core.Get()).playSound('button_hover'); } } movieClip 297 { } button 298 { on (release) { (Core.Get()).playSound('button_click'); getURL(_root.downloadURL, '_blank'); } on (rollOver) { (Core.Get()).playSound('button_hover'); } } movieClip 299 mainscreen { #initclip Object.registerClass('mainscreen', ScreenMain); #endinitclip frame 1 { this.init(); } } movieClip 303 introscreen { #initclip Object.registerClass('introscreen', ScreenIntro); #endinitclip frame 1 { init(); } } movieClip 304 dark_tile { } movieClip 306 mapgrid_x { } movieClip 308 mapgrid_y { } movieClip 310 mapmark { } movieClip 315 map_enemy { } movieClip 319 { } movieClip 321 { } movieClip 322 map_guide { } movieClip 323 { } movieClip 380 { } movieClip 384 { } movieClip 385 teamslot_btn { #initclip Object.registerClass('teamslot_btn', ButtonTeamSlot); #endinitclip } movieClip 539 { } movieClip 540 { } movieClip 541 char_npc { #initclip Object.registerClass('char_npc', NPCSlot); #endinitclip } movieClip 542 { } button 550 { on (rollOver) { this.tooltip._visible = true; (Core.Get()).playSound('button_hover'); } on (rollOut) { this.tooltip._visible = false; } on (release) { (Core.Get()).playSound('button_click'); getURL(_root.gibsonURL, '_blank'); } } movieClip 554 { } movieClip 555 { } movieClip 556 areascreen { #initclip Object.registerClass('areascreen', ScreenArea); #endinitclip frame 1 { init(); } } movieClip 599 { } movieClip 601 maskscreen { frame 30 { stop(); } } movieClip 602 maskscreen1 { frame 30 { stop(); } } movieClip 608 scroll_eff { frame 30 { stop(); } } movieClip 614 popup_eff { } movieClip 617 maskpopup { } movieClip 642 char_drag { } movieClip 644 { } movieClip 646 { } movieClip 650 { } movieClip 654 { } movieClip 655 taskslot { #initclip Object.registerClass('taskslot', TaskSlot); #endinitclip } movieClip 657 { } movieClip 659 questtext_complete { } movieClip 661 questtext_failed { } movieClip 663 questtext_normal { } movieClip 665 { } movieClip 666 dialogue_item { } movieClip 667 { } movieClip 669 { } movieClip 673 { } movieClip 674 talkslot { #initclip Object.registerClass('talkslot', TaskSlot); #endinitclip } movieClip 675 { } movieClip 684 { } movieClip 687 { } movieClip 690 { } movieClip 694 { } movieClip 707 { } movieClip 720 { } movieClip 746 { } movieClip 747 battle_slot { #initclip Object.registerClass('battle_slot', BattleSlot); #endinitclip } button 748 { on (release) { getURL(_root.downloadURL, '_blank'); } on (rollOver) { (Core.Get()).playSound('button_hover'); } } movieClip 750 inventory_use { #initclip Object.registerClass('inventory_use', Inventory); #endinitclip } movieClip 751 { } movieClip 778 { } // unknown tag 88 length 78 movieClip 784 { } // unknown tag 88 length 197 movieClip 809 { } movieClip 810 tooltip { #initclip Object.registerClass('tooltip', TooltipItem); #endinitclip } movieClip 811 battlescreen { #initclip Object.registerClass('battlescreen', ScreenBattle); #endinitclip frame 1 { init(); } } movieClip 836 { } movieClip 969 { } movieClip 994 { } movieClip 1030 { frame 13 { this.stop(); } frame 26 { this.stop(); } frame 39 { this.stop(); } frame 52 { this.stop(); } frame 65 { this.stop(); } } movieClip 1054 { frame 10 { stop(); this.removeMovieClip(); } } movieClip 1080 { } movieClip 1106 { frame 10 { this.stop(); } } movieClip 1126 { } movieClip 1148 { frame 10 { this.stop(); } } movieClip 1183 { frame 9 { this.stop(); } } movieClip 1200 { } movieClip 1203 bu_char { #initclip Object.registerClass('bu_char', BattleUnit); #endinitclip } movieClip 1285 { } movieClip 1358 { } movieClip 1361 bu_enemy { #initclip Object.registerClass('bu_enemy', BattleUnit); #endinitclip } movieClip 1364 { } // unknown tag 88 length 80 movieClip 1368 { } movieClip 1370 { } movieClip 1372 { } movieClip 1374 { } movieClip 1375 { } movieClip 1376 bs_hit { frame 40 { this.onEnterFrame = function () { this._alpha -= 5; }; } frame 60 { this.removeMovieClip(); } } movieClip 1380 run_trace { frame 11 { this.removeMovieClip(); } frame 41 { this.removeMovieClip(); } } movieClip 1387 { } movieClip 1390 grenade_explosion { frame 13 { this.removeMovieClip(); } } movieClip 1394 { } movieClip 1395 bs_heal { frame 40 { this.onEnterFrame = function () { this._alpha -= 5; }; } frame 60 { this.removeMovieClip(); } } movieClip 1409 { } movieClip 1412 { } movieClip 1413 { } movieClip 1414 effect_use_device { frame 25 { this.removeMovieClip(); } } movieClip 1416 { } movieClip 1418 { } movieClip 1419 effect_defend { frame 26 { this.removeMovieClip(); } } movieClip 1420 { } movieClip 1424 { } movieClip 1431 { } movieClip 1433 { } movieClip 1438 { } movieClip 1439 { } movieClip 1447 teamslot { #initclip Object.registerClass('teamslot', TeamSlot); #endinitclip } movieClip 1448 { } movieClip 1467 { } movieClip 1470 { } movieClip 1471 tooltip_char { #initclip Object.registerClass('tooltip_char', TooltipChar); #endinitclip } movieClip 1472 teamscreen { #initclip Object.registerClass('teamscreen', ScreenTeam); #endinitclip frame 1 { init(); } } movieClip 1476 { } movieClip 1487 { } movieClip 1489 { } movieClip 1780 item { } movieClip 1782 itemslot_btn { #initclip Object.registerClass('itemslot_btn', ButtonItem); #endinitclip } movieClip 1789 { } movieClip 1791 { } movieClip 1793 itemslotv_btn { #initclip Object.registerClass('itemslotv_btn', ButtonItem); #endinitclip } movieClip 1795 equipslot { #initclip Object.registerClass('equipslot', EquipSlot); #endinitclip } movieClip 1797 inventory { #initclip Object.registerClass('inventory', Inventory); #endinitclip } movieClip 1809 scroll1 { #initclip Object.registerClass('scroll1', ScrollBar); #endinitclip } movieClip 1810 itemsscreen { #initclip Object.registerClass('itemsscreen', ScreenItems); #endinitclip frame 1 { init(); } } movieClip 1812 { } movieClip 1814 { } movieClip 1816 { } movieClip 1817 quest_descri { #initclip Object.registerClass('quest_descri', QuestDescri); #endinitclip } movieClip 1818 scroll2 { #initclip Object.registerClass('scroll2', ScrollBar); #endinitclip } movieClip 1819 tasksscreen { #initclip Object.registerClass('tasksscreen', ScreenTasks); #endinitclip frame 1 { init(); } } movieClip 1821 drop { } movieClip 1823 { } movieClip 1825 { } movieClip 1827 { } movieClip 1830 { } movieClip 1831 { } movieClip 1832 dialogue { #initclip Object.registerClass('dialogue', Dialogue); #endinitclip } movieClip 1833 { } movieClip 1835 scroll4 { #initclip Object.registerClass('scroll4', ScrollBar); #endinitclip } movieClip 1836 scroll3 { #initclip Object.registerClass('scroll3', ScrollBar); #endinitclip } movieClip 1837 talkscreen { #initclip Object.registerClass('talkscreen', ScreenTalk); #endinitclip frame 1 { this.init(); } } movieClip 1839 inventory_trader { #initclip Object.registerClass('inventory_trader', Inventory); #endinitclip } movieClip 1841 scroll5 { #initclip Object.registerClass('scroll5', ScrollBar); #endinitclip } movieClip 1842 tradescreen { #initclip Object.registerClass('tradescreen', ScreenTrade); #endinitclip frame 1 { init(); } } movieClip 1843 { } movieClip 1846 { } movieClip 1852 expslot { #initclip Object.registerClass('expslot', ExpSlot); #endinitclip } movieClip 1855 inventory_drop { #initclip Object.registerClass('inventory_drop', Inventory); #endinitclip } movieClip 1856 { } movieClip 1858 battlewinscreen { #initclip Object.registerClass('battlewinscreen', ScreenBattleWin); #endinitclip frame 1 { init(); } } movieClip 1861 losescreen { #initclip Object.registerClass('losescreen', ScreenLose); #endinitclip frame 1 { init(); } } movieClip 1869 { } movieClip 1870 { } movieClip 1882 { } movieClip 1883 button_options { #initclip Object.registerClass('button_options', ButtonMenu); #endinitclip } movieClip 1888 button_options_red { #initclip Object.registerClass('button_options_red', ButtonMenu); #endinitclip } button 1896 { on (rollOver) { (Core.Get()).playSound('button_hover'); } on (release) { (Core.Get()).playSound('button_click'); getURL(_root.downloadURL, '_blank'); } } movieClip 1897 DownloadLink { } movieClip 1898 optionsscreen { #initclip Object.registerClass('optionsscreen', ScreenOptions); #endinitclip frame 1 { init(); } } movieClip 1901 { } movieClip 1906 skillupscreen { #initclip Object.registerClass('skillupscreen', ScreenSkillUp); #endinitclip frame 1 { init(); } } movieClip 1909 { } movieClip 1916 { } movieClip 1917 btn_saveslot { #initclip Object.registerClass('btn_saveslot', ButtonMenu); #endinitclip } movieClip 1918 { } movieClip 1923 saveslot { #initclip Object.registerClass('saveslot', SaveSlot); #endinitclip } movieClip 1924 saveloadscreen { #initclip Object.registerClass('saveloadscreen', ScreenSaveLoad); #endinitclip frame 1 { this.init(); } } movieClip 1931 { } movieClip 1933 outroscreen { #initclip Object.registerClass('outroscreen', ScreenOutro); #endinitclip frame 1 { init(); } } frame 16 { this.stop(); Core.Create(this); }




http://swfchan.com/38/189710/info.shtml
Created: 15/10 -2018 12:37:08 Last modified: 15/10 -2018 12:37:08 Server time: 05/11 -2024 09:18:18