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

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

Today.swf

This is the info page for
Flash #81196

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


Text
<p align="left"></p>

ActionScript [AS3]

Section 1
//Animated (moonlib2.Animated) package moonlib2 { import flash.events.*; import flash.geom.*; public class Animated extends Thing { public var anim:Animation; protected var anim_offset_x:Number;// = 0 protected var anim_offset_y:Number;// = 0 public function Animated(_arg1:Animation, _arg2:Number=INF, _arg3:Number=INF){ if (_arg1 != null){ set_animation(_arg1, _arg2, _arg3); }; } override public function on_removed():void{ super.on_removed(); if (anim != null){ removeChild(anim); anim = null; }; } public function flip_away(_arg1:Thing):void{ if (_arg1.x < x){ scaleX = 1; } else { scaleX = -1; }; } override public function update(_arg1:Event):void{ super.update(_arg1); if (anim != null){ anim.update(); }; } public function flip_towards(_arg1:Thing):void{ if (_arg1.x < x){ scaleX = -1; } else { scaleX = 1; }; } public function attach_anim(_arg1:Animation, _arg2:Number=INF, _arg3:Number=INF):Animation{ if (_arg2 == Number.POSITIVE_INFINITY){ _arg2 = Math.floor((_arg1.strip.frameW / 2)); _arg1.x = (_arg1.x - _arg2); }; if (_arg3 == Number.POSITIVE_INFINITY){ _arg3 = Math.floor((_arg1.strip.frameH / 2)); _arg1.y = (_arg1.y - _arg3); }; addChild(_arg1); return (_arg1); } public function flip(_arg1:Number):void{ if (_arg1 > 0){ scaleX = 1; } else { if (_arg1 < 0){ scaleX = -1; }; }; } public function set_animation(_arg1:Animation, _arg2:Number=INF, _arg3:Number=INF):void{ if (_arg1 == anim){ return; }; if (_arg2 == Number.POSITIVE_INFINITY){ _arg2 = Math.floor((_arg1.strip.frameW / 2)); _arg1.x = (_arg1.x - _arg2); } else { _arg1.x = -(_arg2); }; if (_arg3 == Number.POSITIVE_INFINITY){ _arg3 = Math.floor((_arg1.strip.frameH / 2)); _arg1.y = (_arg1.y - _arg3); } else { _arg1.y = -(_arg3); }; this.anim_offset_x = _arg2; this.anim_offset_y = _arg3; if (anim != null){ removeChild(anim); addChild(_arg1); } else { addChild(_arg1); }; anim = _arg1; } override public function get area():Rectangle{ if (anim == null){ return (super.area); }; return (new Rectangle((x - anim_offset_x), (y - anim_offset_y), anim.strip.frameW, anim.strip.frameH)); } } }//package moonlib2
Section 2
//Animation (moonlib2.Animation) package moonlib2 { import flash.display.*; public class Animation extends Sprite { private var looping:Boolean;// = false public var currentFrame:int;// = 0 public var frameTime:int; public var strip:Strip; private var _sequence:Array; private var currentTime:int;// = 0 private var running:Boolean;// = false public function Animation(_arg1:BitmapData, _arg2:int=-1, _arg3:int=-1, _arg4:int=0, _arg5:Boolean=false){ strip = new Strip(_arg1, ((_arg2 == -1)) ? _arg1.width : _arg2, ((_arg3 == -1)) ? _arg1.height : _arg3, _arg5); addChild(strip); this.frameTime = _arg4; setDefaultSequence(); } public function get sequence():Array{ return (_sequence); } public function set sequence(_arg1:Array):void{ _sequence = _arg1; if (currentFrame >= _sequence.length){ currentFrame = (_sequence.length - 1); }; } public function stop():void{ running = false; } public function update():void{ strip.frame = sequence[currentFrame]; if (frameTime <= 0){ stop(); return; }; if (running){ currentTime = (currentTime + Game.frame_time); if (currentTime >= frameTime){ currentTime = (currentTime - frameTime); if (currentFrame < (sequence.length - 1)){ currentFrame++; } else { if (looping){ currentFrame = 0; } else { stop(); }; }; }; }; } public function setFrameTime(_arg1:int):void{ frameTime = _arg1; } public function setDefaultSequence():void{ sequence = new Array(strip.frameCount); var _local1:int; while (_local1 != sequence.length) { sequence[_local1] = _local1; _local1++; }; } public function setFrame(_arg1:int):void{ currentFrame = _arg1; strip.frame = sequence[currentFrame]; } public function setBouncingSequence():void{ var _local1:Array = new Array((strip.frameCount * 2)); var _local2:int; var _local3:int; _local3 = 0; while (_local3 != strip.frameCount) { var _temp1 = _local2; _local2 = (_local2 + 1); var _local4 = _temp1; _local1[_local4] = _local3; _local3++; }; _local3 = 0; while (_local3 != strip.frameCount) { var _temp2 = _local2; _local2 = (_local2 + 1); _local4 = _temp2; _local1[_local4] = ((strip.frameCount - _local3) - 1); _local3++; }; sequence = _local1; } public function play(_arg1:Boolean=false):void{ running = true; looping = _arg1; } public function isRunning():Boolean{ return (running); } public function rewind():void{ currentFrame = 0; } } }//package moonlib2
Section 3
//Expression (moonlib2.Expression) package moonlib2 { import flash.events.*; import flash.geom.*; import flash.display.*; public class Expression extends Thing { private var cache:BitmapData; public var separation:int;// = 3 public var seekTarget:Thing; private var from:Animated; private var old_status:Number;// = 0 public var status:int;// = 1 public var strip:Strip; public static const ANGRY:int = 7; public static const FOCUSED_UP:int = 15; public static const HAPPY:int = 1; public static const DYING:int = 10; public static const NONE:int = 0; public static const EFFORTING:int = 5; public static const FOCUSED:int = 6; public static const ANGRY_UP:int = 14; public static const SEEK:int = 3; public static const UP:int = 12; public static const ASLEEP:int = 17; public static const ANGRY_DOWN:int = 13; public static const ALMOST_CLOSED:int = 18; public static const DOWN:int = 8; public static const FOCUSED_AT:int = 9; public static const SEEK_NOT_FLIP:int = 11; public static const SAD_LONELY:int = 2; public static const SAD_LOOKING:int = 4; public static const SLEEPY_LOOK:int = 16; private static var _cache_rect_update:Rectangle = new Rectangle(); private static var img:Class = Expression_img; private static var _cache_matrix:Matrix = new Matrix(); public function Expression(_arg1:Animated, _arg2:Number=2, _arg3:Number=4, _arg4:Number=3){ super((cache = new BitmapData(((_arg2 * 2) + _arg4), _arg3, true, 0)), 0, 0); strip = new Strip(new img().bitmapData, _arg2, _arg3); this.separation = _arg4; this.from = _arg1; addEventListener(Event.ENTER_FRAME, update); } override public function update(_arg1:Event):void{ super.update(_arg1); old_status = status; _cache_rect_update.width = cache.width; _cache_rect_update.height = cache.height; cache.fillRect(_cache_rect_update, 0); drawEye(cache, 0, 0, true); drawEye(cache, separation, 0, false); } private function drawSeekerEye(_arg1:BitmapData, _arg2:int, _arg3:int):void{ var _local4:int; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:int; if (seekTarget != null){ _local4 = 0; if (seekTarget.x > (from.x + x)){ _local4 = 1; }; _local5 = ((from.y + y) - seekTarget.y); _local6 = ((from.x + x) - seekTarget.x); _local7 = -(Math.atan((_local5 / _local6))); if (_local7 < (-(Math.PI) / 10)){ _local8 = 2; } else { if (_local7 > (Math.PI / 10)){ _local8 = 0; } else { _local8 = 1; }; }; if (from.scaleX < 0){ _local4 = ((_local4 == 0)) ? 1 : 0; if (_local4 == 1){ if (_local8 == 2){ _local8 = 0; } else { if (_local8 == 0){ _local8 = 2; }; }; }; }; if (_local4 == 1){ draw_strip(_arg1, _arg2, _arg3, _local8); } else { draw_strip(_arg1, _arg2, _arg3, (_local8 + 3)); }; }; } private function drawEye(_arg1:BitmapData, _arg2:int, _arg3:int, _arg4:Boolean):void{ switch (status){ case NONE: break; case FOCUSED: draw_strip(_arg1, _arg2, (_arg3 - 1), 13); break; case HAPPY: draw_strip(_arg1, _arg2, _arg3, 6); break; case EFFORTING: draw_strip(_arg1, _arg2, _arg3, (_arg4) ? 11 : 12); drawSeekerEye(_arg1, _arg2, _arg3); break; case ASLEEP: draw_strip(_arg1, _arg2, _arg3, 13); break; case SAD_LONELY: draw_strip(_arg1, _arg2, _arg3, (_arg4) ? 8 : 9); draw_strip(_arg1, _arg2, _arg3, (_arg4) ? 2 : 3); break; case DYING: draw_strip(_arg1, _arg2, _arg3, 18); draw_strip(_arg1, _arg2, _arg3, (_arg4) ? 2 : 3); break; case SAD_LOOKING: draw_strip(_arg1, _arg2, _arg3, (_arg4) ? 8 : 9); drawSeekerEye(_arg1, _arg2, _arg3); break; case SEEK: draw_strip(_arg1, _arg2, _arg3, 7); drawSeekerEye(_arg1, _arg2, _arg3); break; case FOCUSED_AT: draw_strip(_arg1, _arg2, (_arg3 - 1), (_arg4) ? 10 : 10); drawSeekerEye(_arg1, _arg2, _arg3); break; case FOCUSED_UP: draw_strip(_arg1, _arg2, (_arg3 - 1), (_arg4) ? 10 : 10); draw_strip(_arg1, _arg2, _arg3, (_arg4) ? 0 : 5); break; case ANGRY: draw_strip(_arg1, _arg2, _arg3, (_arg4) ? 15 : 14); drawSeekerEye(_arg1, _arg2, _arg3); break; case SLEEPY_LOOK: draw_strip(_arg1, _arg2, _arg3, 18); if (from.x > seekTarget.x){ draw_strip(_arg1, _arg2, _arg3, 4); } else { draw_strip(_arg1, _arg2, _arg3, 1); }; break; case ANGRY_UP: draw_strip(_arg1, _arg2, _arg3, (_arg4) ? 15 : 14); draw_strip(_arg1, _arg2, _arg3, (_arg4) ? 1 : 4); break; case ANGRY_DOWN: draw_strip(_arg1, _arg2, _arg3, (_arg4) ? 15 : 14); draw_strip(_arg1, _arg2, _arg3, (_arg4) ? 2 : 3); break; case DOWN: draw_strip(_arg1, _arg2, _arg3, 7); draw_strip(_arg1, _arg2, _arg3, (_arg4) ? 2 : 3); break; case UP: draw_strip(_arg1, _arg2, _arg3, 7); draw_strip(_arg1, _arg2, _arg3, (_arg4) ? 0 : 5); break; case ALMOST_CLOSED: draw_strip(_arg1, _arg2, _arg3, (_arg4) ? 19 : 20); break; }; } private function draw_strip(_arg1:BitmapData, _arg2:int, _arg3:int, _arg4:int):void{ _cache_matrix.tx = _arg2; _cache_matrix.ty = _arg3; strip.frame = _arg4; _arg1.draw(strip, _cache_matrix); } } }//package moonlib2
Section 4
//Expression_img (moonlib2.Expression_img) package moonlib2 { import mx.core.*; public class Expression_img extends BitmapAsset { } }//package moonlib2
Section 5
//Game (moonlib2.Game) package moonlib2 { import flash.text.*; import flash.events.*; import flash.geom.*; import flash.display.*; public class Game extends Sprite { private var MyFontHolder:Class; public var dragAnchor:Point; public var mouse_clicked:Boolean;// = false public var dragging:Thing;// = null private var proper_size:Point; private var _cache_array_filter:Array; private var _area_cache:Rectangle; var changed:Boolean;// = false public var highligthed:Thing;// = null public static const DEBUG:Boolean = false; public static var debug:TextField; public static var font:TextFormat; public static var time:Number = 0; private static var current_game:Game; public function Game(_arg1:Number, _arg2:Number, _arg3:Number){ MyFontHolder = Game_MyFontHolder; dragAnchor = new Point(); proper_size = new Point(); _cache_array_filter = new Array(); super(); current_game = this; this.scaleX = _arg1; this.scaleY = _arg1; proper_size.x = _arg2; proper_size.y = _arg3; addEventListener(Event.ENTER_FRAME, update); addEventListener(Event.ADDED_TO_STAGE, init); } private function mouseUp(_arg1:MouseEvent):void{ mouse_clicked = false; on_drop_thing(); } private function get_thing(_arg1:MouseEvent, _arg2:Boolean=false):Thing{ var e = _arg1; var include_noninteractive = _arg2; var list:Array = filter(function (_arg1:Thing):Boolean{ var _local2:*; if (((_arg1.interactive) || (include_noninteractive))){ _local2 = _arg1.area; if (_arg1.highlighted){ _local2.height = (_local2.height + 1); }; return (_local2.contains(mouseX, mouseY)); }; return (false); }); if (list.length == 0){ return (null); }; list = list.sortOn("z", (Array.NUMERIC | Array.DESCENDING)); return (list[0]); } public function release_selected(_arg1:Thing):void{ if (dragging == _arg1){ on_drop_thing(); }; } public function get area():Rectangle{ return (_area_cache.clone()); } public function count(_arg1:Class, _arg2:Boolean=false):Array{ var c = _arg1; var include_invisible = _arg2; return (filter(function (_arg1:Thing):Boolean{ return ((((_arg1 is c)) && (((include_invisible) || (_arg1.visible))))); }, null, true)); } public function init(_arg1:Event):void{ stage.addEventListener(MouseEvent.MOUSE_DOWN, mouseDown); stage.addEventListener(MouseEvent.MOUSE_UP, mouseUp); stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseMove); _area_cache = new Rectangle(0, 0, (proper_size.x / scaleX), (proper_size.y / scaleY)); font = create_font(12, 0xFFFFFF); if (DEBUG){ debug = create_text(false); addChild(debug); }; } public function update(_arg1:Event):void{ var _local2:Array; var _local3:int; if (changed){ changed = false; _local2 = filter(null, null, true); _local2 = _local2.sortOn(["z", "y"], Array.NUMERIC); _local3 = 0; while (_local3 != _local2.length) { setChildIndex(_local2[_local3], (numChildren - 1)); _local3++; }; }; time = (time + frame_time); if (DEBUG){ debug.setTextFormat(font); setChildIndex(debug, (numChildren - 1)); }; } public function closest(_arg1:Thing, _arg2:Array):Thing{ var _local6:Number; var _local3:Thing; var _local4:Number = 10000000; var _local5:int; while (_local5 != _arg2.length) { if ((((_arg1 == _arg2[_local5])) || (!(_arg2[_local5].alive)))){ } else { _local6 = _arg2[_local5].distance(_arg1); if (_local6 < _local4){ _local3 = _arg2[_local5]; _local4 = _local6; }; }; _local5++; }; return (_local3); } private function mouseMove(_arg1:MouseEvent):void{ if (!_arg1.buttonDown){ on_drop_thing(); highligthed = get_thing(_arg1); } else { highligthed = null; }; } public function add(_arg1:Thing, _arg2:Number=-1, _arg3:Number=-1):Thing{ if (((!((_arg2 == -1))) && (!((_arg3 == -1))))){ _arg1.x = _arg2; _arg1.y = _arg3; }; _arg1.alive = true; addChildAt(_arg1, 0); changed = true; return (_arg1); } protected function mouseDown(_arg1:MouseEvent):void{ mouse_clicked = true; var _local2:Thing = get_thing(_arg1); if (_local2 == null){ _local2 = get_thing(_arg1, true); if (_local2 != null){ _local2.on_click(); }; return; }; pick_up(_local2, new Point((_local2.x - mouseX), (_local2.y - mouseY))); } public function filter(_arg1:Function, _arg2:Array=null, _arg3:Boolean=false):Array{ var _local6:DisplayObject; var _local7:Thing; var _local4:Array = (_arg2) ? _arg2 : new Array(); var _local5:int; while (_local5 != numChildren) { _local6 = getChildAt(_local5); if ((_local6 is Thing)){ _local7 = Thing(_local6); if (((((((_local7.visible) || (_arg3))) && (_local7.alive))) && ((((_arg1 == null)) || (_arg1(_local7)))))){ _local4.push(_local7); }; }; _local5++; }; return (_local4); } public function pick_up(_arg1:Thing, _arg2:Point):void{ if (_arg1 != null){ _arg1.on_click(); }; if ((((_arg1 as Thing).interactive) && ((_arg1 as Thing).alive))){ dragging = _arg1; dragging.on_grab(); dragAnchor.x = _arg2.x; dragAnchor.y = _arg2.y; }; } private function on_drop_thing():void{ if (dragging != null){ dragging.on_drop(); dragging = null; highligthed = null; }; } public static function create_font(_arg1:Number, _arg2:Number):TextFormat{ var _local3:TextFormat = new TextFormat(); _local3.size = _arg1; _local3.color = (_arg2 | 4278190080); _local3.font = "uni 05_54_8pt_st"; return (_local3); } public static function create_text(_arg1:Boolean=true):TextField{ var _local2:TextField = new TextField(); _local2.selectable = false; _local2.type = TextFieldType.DYNAMIC; _local2.autoSize = TextFieldAutoSize.LEFT; _local2.multiline = true; _local2.wordWrap = true; _local2.gridFitType = GridFitType.PIXEL; _local2.embedFonts = _arg1; return (_local2); } public static function get frame_time():Number{ return ((1000 / current_game.stage.frameRate)); } } }//package moonlib2
Section 6
//Game_MyFontHolder (moonlib2.Game_MyFontHolder) package moonlib2 { import mx.core.*; public class Game_MyFontHolder extends SpriteAsset { } }//package moonlib2
Section 7
//Strip (moonlib2.Strip) package moonlib2 { import flash.geom.*; import flash.display.*; public class Strip extends Sprite { private var _cache_rect:Rectangle; public var frameCount:int; private var _cache_point:Point; private var cacheSprite:BitmapData; public var frameW:int; private var _img:BitmapData; private var _frame:int;// = -1 private var rowSize:int; public var frameH:int; public function Strip(_arg1:BitmapData, _arg2:int, _arg3:int, _arg4:Boolean=false){ _cache_point = new Point(); super(); this._img = _arg1; this.frameW = _arg2; this.frameH = _arg3; rowSize = (_arg1.width / _arg2); frameCount = (rowSize * (_arg1.height / _arg3)); cacheSprite = new BitmapData(_arg2, _arg3, true, 0); addChild(new Bitmap(cacheSprite, PixelSnapping.AUTO, _arg4)); _cache_rect = new Rectangle(0, 0, _arg2, _arg3); frame = 0; } public function set frame(_arg1:int):void{ var _local2:int; var _local3:int; if (_frame != _arg1){ _frame = _arg1; _local2 = (Math.floor((frame / rowSize)) * frameH); _local3 = ((frame % rowSize) * frameW); _cache_rect.x = _local3; _cache_rect.y = _local2; cacheSprite.copyPixels(img, _cache_rect, _cache_point); }; } public function set img(_arg1:BitmapData):void{ var _local2:int; var _local3:int; if (_img != _arg1){ _img = _arg1; _local2 = (Math.floor((frame / rowSize)) * frameH); _local3 = ((frame % rowSize) * frameW); cacheSprite.copyPixels(img, new Rectangle(_local3, _local2, frameW, frameH), new Point(0, 0), null, null, false); }; } public function get frame():int{ return (_frame); } public function get img():BitmapData{ return (_img); } } }//package moonlib2
Section 8
//Text (moonlib2.Text) package moonlib2 { import flash.text.*; import flash.events.*; import flash.geom.*; public class Text extends Thing { protected var field:TextField; protected var format:TextFormat; public function Text(_arg1:TextFormat){ this.format = _arg1; z = 1000; } override protected function init(_arg1:Event):void{ super.init(_arg1); field = create_text(); addChild(field); } override public function update(_arg1:Event):void{ super.update(_arg1); x = int(x); y = int(y); } public function set text(_arg1:String):void{ field.htmlText = _arg1; field.setTextFormat(format); } override public function get area():Rectangle{ return (new Rectangle(x, y, (field.textWidth - 10), field.textHeight)); } public static function create_text():TextField{ var _local1:TextField; _local1 = new TextField(); _local1.selectable = false; _local1.type = TextFieldType.DYNAMIC; _local1.autoSize = TextFieldAutoSize.LEFT; _local1.multiline = true; _local1.wordWrap = true; _local1.antiAliasType = AntiAliasType.ADVANCED; _local1.embedFonts = true; _local1.gridFitType = GridFitType.PIXEL; _local1.width = 800; return (_local1); } } }//package moonlib2
Section 9
//Thing (moonlib2.Thing) package moonlib2 { import flash.text.*; import flash.events.*; import flash.geom.*; import flash.display.*; import utils.*; public class Thing extends Sprite { public var shown:Boolean;// = false private var _interactive:Boolean;// = false public var solid:Boolean;// = true public var alive:Boolean;// = false private var debug:TextField;// = null protected var default_bitmap:Bitmap;// = null private var last_parent:Game; private var _z:Number;// = 0 private var was_highlighted:Boolean;// = false private var highlighted_offset:Number;// = 0 public function Thing(_arg1:BitmapData=null, _arg2:Number=-INF, _arg3:Number=-INF){ if (_arg1 != null){ default_bitmap = attach_bitmap_data(_arg1, _arg2, _arg3); }; mouseEnabled = false; mouseChildren = false; addEventListener(Event.ADDED_TO_STAGE, init); addEventListener(Event.REMOVED_FROM_STAGE, removed); } public function is_completely_inside():Boolean{ return (world.area.containsRect(area)); } public function destroy():void{ on_removed(); alive = false; if (parent != null){ parent.removeChild(this); }; } public function on_removed():void{ if (default_bitmap != null){ removeChild(default_bitmap); default_bitmap = null; }; } public function get z():Number{ return (_z); } public function get area():Rectangle{ if (default_bitmap != null){ return (new Rectangle((x + default_bitmap.x), (y + default_bitmap.y), default_bitmap.width, default_bitmap.height)); }; return (getRect(stage)); } protected function init(_arg1:Event):void{ last_parent = (parent as Game); addEventListener(Event.ENTER_FRAME, update); } public function get world():Game{ var _local1:Object = last_parent; while ((!(last_parent) is Game)) { _local1 = _local1.parent; }; return ((_local1 as Game)); } public function fit_in(_arg1:Rectangle):void{ var _local2:Rectangle; if (!_arg1.containsRect(area)){ _local2 = Utils.fitRectangle(area, _arg1); x = int((_local2.x + (x - area.left))); y = int((_local2.y + (y - area.top))); }; } public function destroy_if_shown():Boolean{ if (((shown) && (!(is_inside())))){ destroy(); return (true); }; return (false); } public function is_clicked():Boolean{ if (!world.mouse_clicked){ return (false); }; return (area.contains(world.mouseX, world.mouseY)); } public function get selected():Boolean{ if (world == null){ return (false); }; return ((world.dragging == this)); } public function direction_towards(_arg1:Number, _arg2:Number, _arg3:Number=1, _arg4:Point=null):Point{ var _local5:Point = new Point((_arg1 - x), (_arg2 - y)); if (_arg4 != null){ _local5.x = (_arg1 - (area.x + _arg4.x)); _local5.y = (_arg2 - (area.y + _arg4.y)); }; _local5.normalize(_arg3); return (_local5); } public function get collision_area():Rectangle{ return (area); } public function on_click():void{ } public function on_grab():void{ } public function is_inside():Boolean{ return (area.intersects(world.area)); } public function collide(_arg1:Thing):void{ } protected function attach_bitmap_data(_arg1:BitmapData, _arg2:Number=-INF, _arg3:Number=-INF):Bitmap{ var _local4:Bitmap = new Bitmap(_arg1); _local4.x = ((_arg2 == Number.NEGATIVE_INFINITY)) ? -(Math.floor((_arg1.width / 2))) : _arg2; _local4.y = ((_arg3 == Number.NEGATIVE_INFINITY)) ? -(Math.floor((_arg1.height / 2))) : _arg3; addChild(_local4); if (default_bitmap == null){ default_bitmap = _local4; }; return (_local4); } public function set interactive(_arg1:Boolean):void{ _interactive = _arg1; } public function place_randomly(_arg1:Rectangle, _arg2:Function=null, _arg3:Boolean=false):void{ var _local4:Array; var _local5:int; x = (_arg1.x + (_arg1.width / 2)); y = (_arg1.y + (_arg1.height / 2)); if (_arg2 != null){ _local4 = world.filter(_arg2, null, _arg3); _local5 = 20; while (((!(place_randomly_check(_local4, _arg3))) && ((_local5 > 0)))) { x = Utils.rand(_arg1.x, _arg1.right); y = Utils.rand(_arg1.y, _arg1.bottom); _local5--; }; } else { x = Utils.rand(_arg1.x, _arg1.right); y = Utils.rand(_arg1.y, _arg1.bottom); }; } public function update(_arg1:Event):void{ if (((Game.DEBUG) && (selected))){ Game.debug.text = ((int(x) + " , ") + int(y)); }; if (((selected) && (!((world == null))))){ x = Math.floor((world.mouseX + world.dragAnchor.x)); y = Math.floor((world.mouseY + world.dragAnchor.y)); }; process_highlight(); if (((((!(shown)) && (!((world == null))))) && (is_inside()))){ shown = true; }; } public function on_drop():void{ } public function collides_with(_arg1:Thing, _arg2:Number=-1, _arg3:Rectangle=null, _arg4:Boolean=false):Boolean{ var _local5:Rectangle; if (((((((((_arg4) || (((visible) && (_arg1.visible))))) && (solid))) && (_arg1.solid))) && (!((_arg1 == this))))){ if (_arg3 != null){ _local5 = collision_area.intersection(_arg1.collision_area); if (((!(_local5.isEmpty())) && ((((_arg2 == -1)) || ((distance(_arg1) < _arg2)))))){ if (_arg3 != null){ _arg3.x = _local5.x; _arg3.y = _local5.y; _arg3.width = _local5.width; _arg3.height = _local5.height; }; return (true); }; } else { return (((collision_area.intersects(_arg1.collision_area)) && ((((_arg2 == -1)) || ((distance(_arg1) < _arg2)))))); }; }; return (false); } private function place_randomly_check(_arg1:Array, _arg2:Boolean):Boolean{ var _local3:Thing; for each (_local3 in _arg1) { if (((!((_local3 == this))) && (collides_with(_local3, -1, null, _arg2)))){ return (false); }; }; return (true); } public function distance_point(_arg1:Number, _arg2:Number):Number{ var _local3:Number = (x - _arg1); var _local4:Number = (y - _arg2); return (Math.sqrt(((_local3 * _local3) + (_local4 * _local4)))); } private function removed(_arg1:Event):void{ if (((!((world == null))) && ((world.dragging == _arg1.target)))){ world.dragging = null; }; if (world != null){ world.changed = true; }; removeEventListener(Event.ADDED_TO_STAGE, init); removeEventListener(Event.ENTER_FRAME, update); removeEventListener(Event.REMOVED_FROM_STAGE, removed); } public function get interactive():Boolean{ return (_interactive); } public function is_mouse_over():Boolean{ return (area.contains(world.mouseX, world.mouseY)); } function process_highlight():void{ var _local1:int; var _local2:int; if (((interactive) && (((highlighted) || (selected))))){ if (!was_highlighted){ was_highlighted = true; _local1 = 0; while (_local1 != numChildren) { getChildAt(_local1).y = (getChildAt(_local1).y - 2); _local1++; }; }; } else { if (was_highlighted){ was_highlighted = false; _local2 = 0; while (_local2 != numChildren) { getChildAt(_local2).y = (getChildAt(_local2).y + 2); _local2++; }; }; }; } protected function attach_bitmap(_arg1:Bitmap, _arg2:Number=-INF, _arg3:Number=-INF):Bitmap{ _arg1.x = ((_arg2 == Number.NEGATIVE_INFINITY)) ? -(Math.floor((_arg1.width / 2))) : _arg2; _arg1.y = ((_arg3 == Number.NEGATIVE_INFINITY)) ? -(Math.floor((_arg1.height / 2))) : _arg3; addChild(_arg1); if (default_bitmap == null){ default_bitmap = _arg1; }; return (_arg1); } public function get highlighted():Boolean{ if (world == null){ return (false); }; return ((world.highligthed == this)); } public function set z(_arg1:Number):void{ _z = _arg1; if (world != null){ world.changed = true; }; } public function distance(_arg1:Thing):Number{ var _local2:Number = (x - _arg1.x); var _local3:Number = (y - _arg1.y); return (Math.sqrt(((_local2 * _local2) + (_local3 * _local3)))); } } }//package moonlib2
Section 10
//Timer (moonlib2.Timer) package moonlib2 { import flash.geom.*; import utils.*; public class Timer { private var timer_range:Point;// = null private var timer:Number;// = 0 public var time:Number; public function Timer(_arg1:Number, _arg2:Number=-1){ this.time = _arg1; if (_arg2 != -1){ timer_range = new Point(_arg1, _arg2); _arg1 = Utils.rand(_arg1, _arg2); }; } public function add(_arg1:Number):void{ timer = (timer + _arg1); timer = Math.min(timer, time); } public function get done():Boolean{ return ((timer == time)); } public function tick_back(_arg1:Number=-1):void{ if (_arg1 == -1){ _arg1 = Game.frame_time; }; timer = (timer - _arg1); if (timer < 0){ timer = 0; }; } public function get ratio():Number{ return ((timer / time)); } public function reset():void{ timer = 0; if (timer_range){ time = Utils.rand(timer_range.x, timer_range.y); }; } public function reset_to(_arg1:Number):void{ timer = 0; time = _arg1; timer_range = null; } public function set ratio(_arg1:Number):void{ timer = (_arg1 * time); } public function trigger():void{ timer = time; } public function tick(_arg1:Boolean=false):void{ timer = (timer + Game.frame_time); if (((_arg1) && ((timer >= time)))){ timer = (timer - time); if (timer_range){ time = Utils.rand(timer_range.x, timer_range.y); }; }; timer = Math.min(timer, time); } public function get running():Boolean{ return ((timer < time)); } } }//package moonlib2
Section 11
//BitmapAsset (mx.core.BitmapAsset) package mx.core { import flash.display.*; public class BitmapAsset extends FlexBitmap implements IFlexAsset, IFlexDisplayObject { mx_internal static const VERSION:String = "3.2.0.3958"; public function BitmapAsset(_arg1:BitmapData=null, _arg2:String="auto", _arg3:Boolean=false){ super(_arg1, _arg2, _arg3); } public function get measuredWidth():Number{ if (bitmapData){ return (bitmapData.width); }; return (0); } public function get measuredHeight():Number{ if (bitmapData){ return (bitmapData.height); }; return (0); } public function setActualSize(_arg1:Number, _arg2:Number):void{ width = _arg1; height = _arg2; } public function move(_arg1:Number, _arg2:Number):void{ this.x = _arg1; this.y = _arg2; } } }//package mx.core
Section 12
//ByteArrayAsset (mx.core.ByteArrayAsset) package mx.core { import flash.utils.*; public class ByteArrayAsset extends ByteArray implements IFlexAsset { mx_internal static const VERSION:String = "3.2.0.3958"; } }//package mx.core
Section 13
//EdgeMetrics (mx.core.EdgeMetrics) package mx.core { public class EdgeMetrics { public var top:Number; public var left:Number; public var bottom:Number; public var right:Number; mx_internal static const VERSION:String = "3.2.0.3958"; public static const EMPTY:EdgeMetrics = new EdgeMetrics(0, 0, 0, 0); ; public function EdgeMetrics(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0, _arg4:Number=0){ this.left = _arg1; this.top = _arg2; this.right = _arg3; this.bottom = _arg4; } public function clone():EdgeMetrics{ return (new EdgeMetrics(left, top, right, bottom)); } } }//package mx.core
Section 14
//FlexBitmap (mx.core.FlexBitmap) package mx.core { import flash.display.*; import mx.utils.*; public class FlexBitmap extends Bitmap { mx_internal static const VERSION:String = "3.2.0.3958"; public function FlexBitmap(_arg1:BitmapData=null, _arg2:String="auto", _arg3:Boolean=false){ var bitmapData = _arg1; var pixelSnapping = _arg2; var smoothing = _arg3; super(bitmapData, pixelSnapping, smoothing); try { name = NameUtil.createUniqueName(this); } catch(e:Error) { }; } override public function toString():String{ return (NameUtil.displayObjectToString(this)); } } }//package mx.core
Section 15
//FlexSprite (mx.core.FlexSprite) package mx.core { import flash.display.*; import mx.utils.*; public class FlexSprite extends Sprite { mx_internal static const VERSION:String = "3.2.0.3958"; public function FlexSprite(){ super(); try { name = NameUtil.createUniqueName(this); } catch(e:Error) { }; } override public function toString():String{ return (NameUtil.displayObjectToString(this)); } } }//package mx.core
Section 16
//FontAsset (mx.core.FontAsset) package mx.core { import flash.text.*; public class FontAsset extends Font implements IFlexAsset { mx_internal static const VERSION:String = "3.2.0.3958"; } }//package mx.core
Section 17
//IBorder (mx.core.IBorder) package mx.core { public interface IBorder { function get borderMetrics():EdgeMetrics; } }//package mx.core
Section 18
//IFlexAsset (mx.core.IFlexAsset) package mx.core { public interface IFlexAsset { } }//package mx.core
Section 19
//IFlexDisplayObject (mx.core.IFlexDisplayObject) package mx.core { import flash.display.*; import flash.geom.*; import flash.events.*; import flash.accessibility.*; public interface IFlexDisplayObject extends IBitmapDrawable, IEventDispatcher { function get visible():Boolean; function get rotation():Number; function localToGlobal(_arg1:Point):Point; function get name():String; function set width(_arg1:Number):void; function get measuredHeight():Number; function get blendMode():String; function get scale9Grid():Rectangle; function set name(_arg1:String):void; function set scaleX(_arg1:Number):void; function set scaleY(_arg1:Number):void; function get measuredWidth():Number; function get accessibilityProperties():AccessibilityProperties; function set scrollRect(_arg1:Rectangle):void; function get cacheAsBitmap():Boolean; function globalToLocal(_arg1:Point):Point; function get height():Number; function set blendMode(_arg1:String):void; function get parent():DisplayObjectContainer; function getBounds(_arg1:DisplayObject):Rectangle; function get opaqueBackground():Object; function set scale9Grid(_arg1:Rectangle):void; function setActualSize(_arg1:Number, _arg2:Number):void; function set alpha(_arg1:Number):void; function set accessibilityProperties(_arg1:AccessibilityProperties):void; function get width():Number; function hitTestPoint(_arg1:Number, _arg2:Number, _arg3:Boolean=false):Boolean; function set cacheAsBitmap(_arg1:Boolean):void; function get scaleX():Number; function get scaleY():Number; function get scrollRect():Rectangle; function get mouseX():Number; function get mouseY():Number; function set height(_arg1:Number):void; function set mask(_arg1:DisplayObject):void; function getRect(_arg1:DisplayObject):Rectangle; function get alpha():Number; function set transform(_arg1:Transform):void; function move(_arg1:Number, _arg2:Number):void; function get loaderInfo():LoaderInfo; function get root():DisplayObject; function hitTestObject(_arg1:DisplayObject):Boolean; function set opaqueBackground(_arg1:Object):void; function set visible(_arg1:Boolean):void; function get mask():DisplayObject; function set x(_arg1:Number):void; function set y(_arg1:Number):void; function get transform():Transform; function set filters(_arg1:Array):void; function get x():Number; function get y():Number; function get filters():Array; function set rotation(_arg1:Number):void; function get stage():Stage; } }//package mx.core
Section 20
//IRepeaterClient (mx.core.IRepeaterClient) package mx.core { public interface IRepeaterClient { function get instanceIndices():Array; function set instanceIndices(_arg1:Array):void; function get isDocument():Boolean; function set repeaters(_arg1:Array):void; function initializeRepeaterArrays(_arg1:IRepeaterClient):void; function get repeaters():Array; function set repeaterIndices(_arg1:Array):void; function get repeaterIndices():Array; } }//package mx.core
Section 21
//mx_internal (mx.core.mx_internal) package mx.core { public namespace mx_internal = "http://www.adobe.com/2006/flex/mx/internal"; }//package mx.core
Section 22
//SoundAsset (mx.core.SoundAsset) package mx.core { import flash.media.*; public class SoundAsset extends Sound implements IFlexAsset { mx_internal static const VERSION:String = "3.2.0.3958"; } }//package mx.core
Section 23
//SpriteAsset (mx.core.SpriteAsset) package mx.core { public class SpriteAsset extends FlexSprite implements IFlexAsset, IFlexDisplayObject, IBorder { private var _measuredHeight:Number; private var _measuredWidth:Number; mx_internal static const VERSION:String = "3.2.0.3958"; public function SpriteAsset(){ _measuredWidth = width; _measuredHeight = height; } public function get measuredWidth():Number{ return (_measuredWidth); } public function get measuredHeight():Number{ return (_measuredHeight); } public function setActualSize(_arg1:Number, _arg2:Number):void{ width = _arg1; height = _arg2; } public function move(_arg1:Number, _arg2:Number):void{ this.x = _arg1; this.y = _arg2; } public function get borderMetrics():EdgeMetrics{ if (scale9Grid == null){ return (EdgeMetrics.EMPTY); }; return (new EdgeMetrics(scale9Grid.left, scale9Grid.top, Math.ceil((measuredWidth - scale9Grid.right)), Math.ceil((measuredHeight - scale9Grid.bottom)))); } } }//package mx.core
Section 24
//NameUtil (mx.utils.NameUtil) package mx.utils { import flash.display.*; import mx.core.*; import flash.utils.*; public class NameUtil { mx_internal static const VERSION:String = "3.2.0.3958"; private static var counter:int = 0; public static function displayObjectToString(_arg1:DisplayObject):String{ var result:String; var o:DisplayObject; var s:String; var indices:Array; var displayObject = _arg1; try { o = displayObject; while (o != null) { if (((((o.parent) && (o.stage))) && ((o.parent == o.stage)))){ break; }; s = o.name; if ((o is IRepeaterClient)){ indices = IRepeaterClient(o).instanceIndices; if (indices){ s = (s + (("[" + indices.join("][")) + "]")); }; }; result = ((result == null)) ? s : ((s + ".") + result); o = o.parent; }; } catch(e:SecurityError) { }; return (result); } public static function createUniqueName(_arg1:Object):String{ if (!_arg1){ return (null); }; var _local2:String = getQualifiedClassName(_arg1); var _local3:int = _local2.indexOf("::"); if (_local3 != -1){ _local2 = _local2.substr((_local3 + 2)); }; var _local4:int = _local2.charCodeAt((_local2.length - 1)); if ((((_local4 >= 48)) && ((_local4 <= 57)))){ _local2 = (_local2 + "_"); }; return ((_local2 + counter++)); } } }//package mx.utils
Section 25
//StringUtil (mx.utils.StringUtil) package mx.utils { public class StringUtil { mx_internal static const VERSION:String = "3.2.0.3958"; public static function trim(_arg1:String):String{ if (_arg1 == null){ return (""); }; var _local2:int; while (isWhitespace(_arg1.charAt(_local2))) { _local2++; }; var _local3:int = (_arg1.length - 1); while (isWhitespace(_arg1.charAt(_local3))) { _local3--; }; if (_local3 >= _local2){ return (_arg1.slice(_local2, (_local3 + 1))); }; return (""); } public static function isWhitespace(_arg1:String):Boolean{ switch (_arg1){ case " ": case "\t": case "\r": case "\n": case "\f": return (true); default: return (false); }; } public static function substitute(_arg1:String, ... _args):String{ var _local4:Array; if (_arg1 == null){ return (""); }; var _local3:uint = _args.length; if ((((_local3 == 1)) && ((_args[0] is Array)))){ _local4 = (_args[0] as Array); _local3 = _local4.length; } else { _local4 = _args; }; var _local5:int; while (_local5 < _local3) { _arg1 = _arg1.replace(new RegExp((("\\{" + _local5) + "\\}"), "g"), _local4[_local5]); _local5++; }; return (_arg1); } public static function trimArrayElements(_arg1:String, _arg2:String):String{ var _local3:Array; var _local4:int; var _local5:int; if (((!((_arg1 == ""))) && (!((_arg1 == null))))){ _local3 = _arg1.split(_arg2); _local4 = _local3.length; _local5 = 0; while (_local5 < _local4) { _local3[_local5] = StringUtil.trim(_local3[_local5]); _local5++; }; if (_local4 > 0){ _arg1 = _local3.join(_arg2); }; }; return (_arg1); } } }//package mx.utils
Section 26
//Strip (utils.Strip) package utils { import flash.geom.*; import flash.display.*; public class Strip { public var frameCount:int; public var img:BitmapData; private var cacheSprite:BitmapData; public var frameW:int; public var frameH:int; private var rowSize:int; public function Strip(_arg1:BitmapData, _arg2:int, _arg3:int){ this.img = _arg1; this.frameW = _arg2; this.frameH = _arg3; rowSize = (_arg1.width / _arg2); frameCount = (rowSize * (_arg1.height / _arg3)); } public function drawMatrix(_arg1:BitmapData, _arg2:int, _arg3:Matrix, _arg4:Number=1):void{ var _local8:Number; var _local5:int = (Math.floor((_arg2 / rowSize)) * frameH); var _local6:int = ((_arg2 % rowSize) * frameW); var _local7:ColorTransform; if (_arg4 != 1){ _local7 = new ColorTransform(1, 1, 1, _arg4); }; if (cacheSprite == null){ _local8 = Math.max(frameW, frameH); cacheSprite = new BitmapData(frameW, frameH, true, 0); }; _arg3.translate(_local6, _local6); cacheSprite.draw(img, _arg3, null, null, new Rectangle(_local6, _local5, frameW, frameH)); _arg1.draw(cacheSprite, null, _local7); } public function draw(_arg1:BitmapData, _arg2:int, _arg3:int, _arg4:int, _arg5:int=0, _arg6:int=0, _arg7:Number=1, _arg8:Number=0):void{ var _local13:int; var _local14:int; var _local15:Number; var _local9:int = (Math.floor((_arg4 / rowSize)) * frameH); var _local10:int = ((_arg4 % rowSize) * frameW); if ((_arg6 & Utils.ANCHOR_HCENTER) != 0){ _arg2 = (_arg2 - (frameW / 2)); }; if ((((((_arg5 == 0)) && ((_arg7 == 1)))) && ((_arg8 == 0)))){ _arg1.copyPixels(img, new Rectangle(_local10, _local9, frameW, frameH), new Point(_arg2, _arg3), null, null, true); return; }; var _local11:Matrix = new Matrix(); var _local12:ColorTransform; if (_arg7 != 1){ _local12 = new ColorTransform(1, 1, 1, _arg7); }; if (_arg8 == 0){ _local11.translate(-(_local10), _local9); if (_arg5 != 0){ _local11.scale(-1, 1); _local11.translate(frameW, 0); }; _local11.translate(_arg2, _arg3); _arg1.draw(img, _local11, _local12, null, new Rectangle(_arg2, _arg3, frameW, frameH)); } else { if (cacheSprite == null){ _local15 = Math.max(frameW, frameH); cacheSprite = new BitmapData(frameW, frameH, true, 0); }; cacheSprite.fillRect(new Rectangle(0, 0, cacheSprite.width, cacheSprite.height), 0); _local11.translate(-(_local10), -(_local9)); cacheSprite.draw(img, _local11, null, null, new Rectangle(0, 0, frameW, frameH)); _local11.identity(); _local13 = (frameW >> 1); _local14 = (frameH >> 1); _local11.translate(-(_local13), -(_local14)); _local11.rotate(Utils.deg2rad(_arg8)); _local11.translate((_arg2 + _local13), (_arg3 + _local14)); _arg1.draw(cacheSprite, _local11, new ColorTransform(1, 1, 1, _arg7)); }; } } }//package utils
Section 27
//Utils (utils.Utils) package utils { import flash.text.*; import flash.geom.*; import flash.display.*; import mx.utils.*; import flash.utils.*; public class Utils { public static const ANCHOR_HCENTER:int = 4; public static const ANCHOR_RIGHT:int = 1; public static const ANCHOR_BOTTOM:int = 2; private static var textField:TextField; private static var _di_rect:Rectangle = new Rectangle(); private static var textWrap:MovieClip; private static var _di_point:Point = new Point(); public static function newMatrix(_arg1:int, _arg2:int, _arg3:Function=null):Array{ var _local6:int; var _local4:Array = new Array(_arg1); var _local5:int; while (_local5 != _arg1) { _local4[_local5] = new Array(_arg2); _local6 = 0; while (_local6 != _arg2) { if (_arg3 != null){ _local4[_local5][_local6] = _arg3(_local5, _local6); } else { _local4[_local5][_local6] = null; }; _local6++; }; _local5++; }; return (_local4); } public static function getClass(_arg1:Object):Class{ return (Class(getDefinitionByName(getQualifiedClassName(_arg1)))); } public static function cloneArray(_arg1:Array):Array{ var _local2:Array = new Array(_arg1.length); var _local3:int; while (_local3 < _arg1.length) { _local2[_local3] = _arg1[_local3]; _local3++; }; return (_local2); } public static function remove(_arg1:Array, _arg2:Object):void{ var _local3:int; if (_arg2 != null){ _local3 = _arg1.indexOf(_arg2); if (_local3 != -1){ _arg1.splice(_local3, 1); }; }; } public static function fillRect(_arg1:BitmapData, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:uint, _arg7:Number=1):void{ var _local8:Sprite = new Sprite(); _local8.graphics.beginFill(_arg6); _local8.graphics.drawRect(0, 0, _arg4, _arg5); _local8.graphics.endFill(); var _local9:Matrix = new Matrix(); _local9.translate(_arg2, _arg3); _arg1.draw(_local8, _local9, new ColorTransform(1, 1, 1, _arg7)); } public static function set_put(_arg1:Array, _arg2):Boolean{ if (_arg1.indexOf(_arg2) == -1){ _arg1.push(_arg2); return (true); }; return (false); } public static function drawTargetOutline(_arg1:Graphics, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number):void{ _arg1.lineStyle(1, 4294967295); drawLine(_arg1, _arg2, _arg3, (_arg2 + _arg6), _arg3); drawLine(_arg1, _arg2, _arg3, _arg2, (_arg3 + _arg6)); drawLine(_arg1, (_arg2 + _arg4), _arg3, ((_arg2 + _arg4) - _arg6), _arg3); drawLine(_arg1, (_arg2 + _arg4), _arg3, (_arg2 + _arg4), (_arg3 + _arg6)); drawLine(_arg1, (_arg2 + _arg4), (_arg3 + _arg5), ((_arg2 + _arg4) - _arg6), (_arg3 + _arg5)); drawLine(_arg1, (_arg2 + _arg4), (_arg3 + _arg5), (_arg2 + _arg4), ((_arg3 + _arg5) - _arg6)); drawLine(_arg1, _arg2, (_arg3 + _arg5), (_arg2 + _arg6), (_arg3 + _arg5)); drawLine(_arg1, _arg2, (_arg3 + _arg5), _arg2, ((_arg3 + _arg5) - _arg6)); } public static function textSize(_arg1:String, _arg2:TextFormat, _arg3:int=-1):Point{ return (drawText(null, _arg1, _arg2, ((_arg3 == -1)) ? 10000 : _arg3, 0, 0).size); } public static function fillRoundRect(_arg1:BitmapData, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:uint, _arg8:Number=1):void{ var _local9:Sprite = new Sprite(); _local9.graphics.beginFill(_arg7); _local9.graphics.drawRoundRect(0, 0, _arg4, _arg5, _arg6); _local9.graphics.endFill(); var _local10:Matrix = new Matrix(); _local10.translate(_arg2, _arg3); _arg1.draw(_local9, _local10, new ColorTransform(1, 1, 1, _arg8)); } public static function drawText(_arg1:BitmapData, _arg2:String, _arg3:TextFormat, _arg4:int, _arg5:int, _arg6:int, _arg7:Number=1, _arg8:int=0, _arg9:Boolean=true):Rectangle{ var _local10:Matrix; if (textField == null){ textField = new TextField(); textWrap = new MovieClip(); textWrap.addChild(textField); textField.selectable = false; textField.antiAliasType = AntiAliasType.ADVANCED; textField.type = TextFieldType.DYNAMIC; textField.autoSize = TextFieldAutoSize.LEFT; textField.multiline = true; textField.wordWrap = true; textField.sharpness = 400; textField.gridFitType = GridFitType.PIXEL; textField.embedFonts = _arg9; }; textField.width = _arg4; textField.text = _arg2; textField.setTextFormat(_arg3); if (_arg1 != null){ _local10 = new Matrix(); if ((_arg8 & ANCHOR_RIGHT) != 0){ _local10.translate(-(textField.textWidth), 0); } else { if ((_arg8 & ANCHOR_HCENTER) != 0){ _local10.translate((-(textField.textWidth) / 2), 0); }; }; if ((_arg8 & ANCHOR_BOTTOM) != 0){ _local10.translate(0, -(textField.textHeight)); }; _local10.translate(_arg5, _arg6); _arg1.draw(textWrap, _local10, new ColorTransform(1, 1, 1, _arg7)); }; return (new Rectangle(0, 0, Math.min(_arg4, textField.textWidth), textField.textHeight)); } public static function fillUI(_arg1:BitmapData, _arg2:Strip, _arg3:Rectangle):void{ var _local9:int; var _local10:int; var _local4:int = (_arg3.width / _arg2.frameW); var _local5:int = (_arg3.height / _arg2.frameH); var _local6:int = _arg3.x; var _local7:int = _arg3.y; var _local8:int; while (_local8 != _local5) { _local6 = _arg3.x; _local9 = 0; while (_local9 != _local4) { _local10 = 4; if (_local9 == 0){ _local10 = 3; }; if (_local8 == 0){ _local10 = 1; }; if (_local9 == 0){ _local10 = 3; }; if (_local9 == (_local4 - 1)){ _local10 = 5; }; if (_local8 == (_local5 - 1)){ _local10 = 7; }; if ((((_local9 == 0)) && ((_local8 == 0)))){ _local10 = 0; }; if ((((_local9 == (_local4 - 1))) && ((_local8 == 0)))){ _local10 = 2; }; if ((((_local9 == (_local4 - 1))) && ((_local8 == (_local5 - 1))))){ _local10 = 8; }; if ((((_local9 == 0)) && ((_local8 == (_local5 - 1))))){ _local10 = 6; }; _arg2.draw(_arg1, _local6, _local7, _local10); _local6 = (_local6 + _arg2.frameW); _local9++; }; _local7 = (_local7 + _arg2.frameH); _local8++; }; } public static function drawLine(_arg1:Graphics, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number):void{ _arg1.moveTo(_arg2, _arg3); _arg1.lineTo(_arg4, _arg5); } public static function iterateMatrix(_arg1:Array, _arg2:Function):void{ var _local4:int; var _local3:int; while (_local3 != _arg1.length) { _local4 = 0; while (_local4 != _arg1[0].length) { _arg1[_local3][_local4] = _arg2(_local3, _local4); _local4++; }; _local3++; }; } public static function splitTrim(_arg1:String, _arg2:String):Array{ if (_arg1 == ""){ return ([]); }; var _local3:Array = _arg1.split(_arg2); var _local4:int; while (_local4 != _local3.length) { _local3[_local4] = StringUtil.trim(_local3[_local4]); _local4++; }; return (_local3); } public static function drawFlipH(_arg1:BitmapData, _arg2:BitmapData, _arg3:Rectangle, _arg4:Point, _arg5:Number=1):void{ var _local6:Matrix = new Matrix(); _local6.scale(-1, 1); _local6.translate((_arg4.x + _arg3.width), _arg4.y); var _local7:BitmapData = new BitmapData(_arg3.width, _arg3.height, true, 0); _local7.copyPixels(_arg2, _arg3, new Point()); _arg1.draw(_local7, _local6, ((_arg5 == 1)) ? null : new ColorTransform(1, 1, 1, _arg5)); } public static function pick(_arg1:Array){ return (_arg1[rand(0, (_arg1.length - 1))]); } public static function fitRectangle(_arg1:Rectangle, _arg2:Rectangle):Rectangle{ var _local3:Rectangle = new Rectangle(); _local3.x = ((_arg1.x < _arg2.x)) ? _arg2.x : (((_arg1.x + _arg1.width) > (_arg2.x + _arg2.width))) ? ((_arg2.x + _arg2.width) - _arg1.width) : _arg1.x; _local3.y = ((_arg1.y < _arg2.y)) ? _arg2.y : (((_arg1.y + _arg1.height) > (_arg2.y + _arg2.height))) ? ((_arg2.y + _arg2.height) - _arg1.height) : _arg1.y; _local3.width = _arg1.width; _local3.height = _arg1.height; return (_local3); } public static function draw_bar(_arg1:Graphics, _arg2:Number, _arg3:Number, _arg4:Rectangle):void{ _arg1.beginFill(0xFF0000); _arg1.drawRect(int(_arg4.x), int(_arg4.y), int(_arg4.width), _arg4.height); _arg1.endFill(); _arg1.beginFill(0xFF00); _arg1.drawRect(int(_arg4.x), int(_arg4.y), int(((_arg2 * _arg4.width) / _arg3)), _arg4.height); _arg1.endFill(); } public static function deg2rad(_arg1:Number):Number{ return (((_arg1 * Math.PI) / 180)); } public static function rand(_arg1:int, _arg2:int):int{ if (_arg1 >= _arg2){ return (int(_arg2)); }; _arg2 = (_arg2 + 1); var _local3:int = (_arg2 - _arg1); var _local4:Number = ((Math.random() * _local3) + _arg1); return (_local4); } public static function rad2deg(_arg1:Number):Number{ return (((_arg1 * 180) / Math.PI)); } public static function drawTextCentered(_arg1:BitmapData, _arg2:String, _arg3:TextFormat, _arg4:int, _arg5:int, _arg6:int):Rectangle{ var _local7:Point = textSize(_arg2, _arg3, _arg4); return (drawText(_arg1, _arg2, _arg3, _arg4, (_arg5 - (_local7.x / 2)), (_arg6 - _local7.y))); } public static function drawImage(_arg1:BitmapData, _arg2:BitmapData, _arg3:Number, _arg4:Number):void{ _di_rect.width = _arg2.width; _di_rect.height = _arg2.height; _di_point.x = _arg3; _di_point.y = _arg4; _arg1.copyPixels(_arg2, _di_rect, _di_point, null, null, true); } public static function shuffle(_arg1:Array):Array{ var _local4:uint; var _local2:Array = new Array(); var _local3:Array = _arg1.slice(); while (_local3.length > 0) { _local4 = Math.floor((Math.random() * _local3.length)); _local2.push(_local3.splice(_local4, 1)); }; return (_local2); } public static function drawAlpha(_arg1:BitmapData, _arg2:BitmapData, _arg3:Rectangle, _arg4:Point, _arg5:Number=1):void{ if (_arg5 <= 0){ return; }; var _local6:Matrix = new Matrix(); _local6.translate(_arg4.x, _arg4.y); _arg1.draw(_arg2, _local6, ((_arg5 == 1)) ? null : new ColorTransform(1, 1, 1, _arg5)); } public static function sign(_arg1:Number):Number{ if (_arg1 == 0){ return (0); }; if (_arg1 > 0){ return (1); }; return (-1); } } }//package utils
Section 28
//Background (Background) package { import flash.events.*; import moonlib2.*; import flash.geom.*; import flash.display.*; public class Background extends Thing { private var depth:Number;// = 0 private var back_free:BitmapData; private var flash_time:Timer; private var back_dark:BitmapData; private var back_fear:BitmapData; private var blend:BitmapData; private var light:Bitmap; private var atlantis:Bitmap; private var explosion_timer:Timer; private var backs:Array; private var last_back:BitmapData;// = null private var leaving_timer:Timer; private var back_dead:BitmapData; private static var img_dead:Class = Background_img_dead; private static var img_fear:Class = Background_img_fear; private static var img_free:Class = Background_img_free; private static var img_dark:Class = Background_img_dark; private static var img_light:Class = Background_img_light; private static var img_atlantis:Class = Background_img_atlantis; public function Background(){ var _local2:Bitmap; backs = new Array(); leaving_timer = new Timer(4000); flash_time = new Timer(70); explosion_timer = new Timer(250, 1200); super(); back_dark = new img_dark().bitmapData; back_free = new img_free().bitmapData; back_fear = new img_fear().bitmapData; back_dead = new img_dead().bitmapData; blend = back_fear.clone(); var _local1:int; while (_local1 != 3) { _local2 = new Bitmap(back_dead); addChild(_local2); _local2.y = ((_local1 - 1) * back_dark.height); backs.push(_local2); _local1++; }; z = 0; light = attach_bitmap_data(new img_light().bitmapData, 0, 0); setChildIndex(light, (numChildren - 1)); light.visible = false; atlantis = attach_bitmap_data(new img_atlantis().bitmapData, 0, 0); atlantis.visible = false; flash_time.trigger(); } override public function update(_arg1:Event):void{ var _local2:Number; super.update(_arg1); light.visible = false; atlantis.visible = false; depth = (depth + ((poem.velocity < 0)) ? poem.velocity : 0); transform.colorTransform = new ColorTransform(); if (poem.epilogue){ y = 0; backs[0].bitmapData = light.bitmapData; backs[1].bitmapData = light.bitmapData; backs[2].bitmapData = light.bitmapData; } else { if (poem.environment == Today.word_dark){ y = 0; atlantis.y = ((world.area.height - atlantis.height) - depth); atlantis.visible = true; atlantis.transform.colorTransform = (Today.she.shining) ? new ColorTransform() : new ColorTransform(0, 0, 0); backs[0].bitmapData = back_dark; backs[1].bitmapData = back_dark; backs[2].bitmapData = back_dark; } else { if (poem.environment == Today.word_struggle){ y = (y - poem.velocity); backs[0].bitmapData = blend; backs[1].bitmapData = blend; backs[2].bitmapData = blend; blend.copyPixels(back_fear, new Rectangle(0, 0, blend.width, blend.height), new Point(0, 0), null, null, true); blend.draw(back_free, null, new ColorTransform(1, 1, 1, Today.word_free.alpha)); explosion_timer.tick(); if (explosion_timer.done){ explosion_timer.reset(); }; } else { if (poem.environment == Today.word_death){ y = 0; backs[0].bitmapData = back_dead; backs[1].bitmapData = back_dead; backs[2].bitmapData = back_dead; } else { y = (y - poem.velocity); backs[0].bitmapData = back_free; backs[1].bitmapData = back_free; backs[2].bitmapData = back_free; if (Today.boy.rescuing){ leaving_timer.tick(); light.visible = true; light.y = -(y); light.alpha = leaving_timer.ratio; }; }; }; }; }; if ((((poem.environment == Today.word_dark)) && (!(Today.she.shining)))){ transform.colorTransform = new ColorTransform(0.4, 0.4, 0.4); }; if (((!(poem.epilogue)) && (!(Today.boy.rescuing)))){ if (poem.environment == Today.word_free){ _local2 = ((poem.beacon_completeness(true) * 0.15) + 0.85); transform.colorTransform = new ColorTransform(_local2, _local2, _local2); } else { if (poem.environment == Today.word_struggle){ _local2 = ((poem.beacon_completeness(true) * 0.25) + 0.75); transform.colorTransform = new ColorTransform(_local2, _local2, _local2); }; }; }; if (!poem.epilogue){ flash_time.tick(); if (flash_time.running){ transform.colorTransform = new ColorTransform(1, 1, 1, 1, 64, 64, 64); }; }; y = (y % area.height); light.y = (light.y % area.height); } override public function get area():Rectangle{ return (new Rectangle(x, y, back_dark.width, back_dark.height)); } public function explosion():void{ flash_time.reset(); } override protected function init(_arg1:Event):void{ super.init(_arg1); } private function get poem():Today{ return ((world as Today)); } } }//package
Section 29
//Background_img_atlantis (Background_img_atlantis) package { import mx.core.*; public class Background_img_atlantis extends BitmapAsset { } }//package
Section 30
//Background_img_dark (Background_img_dark) package { import mx.core.*; public class Background_img_dark extends BitmapAsset { } }//package
Section 31
//Background_img_dead (Background_img_dead) package { import mx.core.*; public class Background_img_dead extends BitmapAsset { } }//package
Section 32
//Background_img_fear (Background_img_fear) package { import mx.core.*; public class Background_img_fear extends BitmapAsset { } }//package
Section 33
//Background_img_free (Background_img_free) package { import mx.core.*; public class Background_img_free extends BitmapAsset { } }//package
Section 34
//Background_img_light (Background_img_light) package { import mx.core.*; public class Background_img_light extends BitmapAsset { } }//package
Section 35
//Boy (Boy) package { import flash.events.*; import moonlib2.*; import flash.geom.*; import utils.*; public class Boy extends Animated { public var rescuing:Boolean;// = false private var struggling_bubble_timer:Timer; private var expression:Expression; public var tired_of_waiting:Timer; private static var img:Class = Boy_img; public function Boy(){ struggling_bubble_timer = new Timer(250); tired_of_waiting = new Timer(15000); super(new Animation(new img().bitmapData, 7, 22, 150)); anim.play(true); interactive = true; visible = false; expression = new Expression(this, 2, 3); addChild(expression); expression.x = (anim.x + 2); expression.y = (anim.y + 2); (expression.status == Expression.SEEK); expression.seekTarget = Today.she; z = (Today.she.z - 1); } override public function update(_arg1:Event):void{ var bubble:Thing; var e = _arg1; super.update(e); visible = ((Today.word_beauty.is_on_poem()) && (((rescuing) || ((Today.main.beacon_completeness(true) == 1))))); if (visible){ if (!is_inside()){ bubble = world.closest(this, world.filter(function (_arg1:Thing):Boolean{ return ((((_arg1 is Bubble)) && ((_arg1 as Bubble).grown))); })); if (bubble != null){ y = bubble.y; }; }; if (!Today.main.epilogue){ tired_of_waiting.tick(); }; expression.seekTarget = Today.she; expression.status = Expression.SEEK; make_bubbles(); if (rescuing){ y = (Today.she.y + 7); x = int((Today.she.x - (area.width * 1.5))); alpha = 0.2; expression.status = Expression.NONE; anim.transform.colorTransform = new ColorTransform(0, 0, 0, 1); } else { if (tired_of_waiting.done){ x = (x - 0.5); expression.status = Expression.SAD_LONELY; if (!is_inside()){ destroy(); return; }; } else { if (x < (area.width * 4)){ x = (x + 1); } else { if (Math.abs((y - Today.she.y)) > 5){ y = (y - (Utils.sign((y - Today.she.y)) * 0.5)); }; if (collides_with(Today.she)){ rescuing = true; x = (Today.she.x - area.width); }; }; }; }; }; } protected function make_bubbles():void{ struggling_bubble_timer.tick(); if (struggling_bubble_timer.done){ world.add(new Whirlwind(), (x + 3), (y + 6)); struggling_bubble_timer.reset(); }; } } }//package
Section 36
//Boy_img (Boy_img) package { import mx.core.*; public class Boy_img extends BitmapAsset { } }//package
Section 37
//Bubble (Bubble) package { import flash.events.*; import moonlib2.*; import flash.geom.*; import flash.display.*; public class Bubble extends Animated { public var original_enviro:Word;// = null private var degradation_timer:Timer; private var light:Bitmap; private var struggling_bubble_timer:Timer; private var stuck_anchor:Point; public var grow_timer:Timer; private var has_grown:Boolean;// = false public var stuck_to:Thing;// = null private static const DEGRADATION_BASE:Number = 14000; private static var img:Class = Bubble_img; private static var img_light:Class = Bubble_img_light; public static var built_at_least_a_bubble:Boolean = false; public function Bubble(){ grow_timer = new Timer(1000); stuck_anchor = new Point(); degradation_timer = new Timer(DEGRADATION_BASE); struggling_bubble_timer = new Timer(500); super(new Animation(new img().bitmapData, 12, 12)); anim.setFrame(0); light = attach_bitmap_data(new img_light().bitmapData); light.alpha = 0; setChildIndex(light, 0); interactive = true; z = (Today.she.z + 1); } public function burst():void{ world.add(new Explosion(), x, y); grow_timer.reset(); destroy(); if (Today.she.carrying == this){ Today.she.carrying = null; }; } override public function update(_arg1:Event):void{ var s:Shadow; var hitting:Array; var b:Bubble; var e = _arg1; super.update(e); interactive = true; if (selected){ fit_in(world.area); }; if (((((!((original_enviro == poem.environment))) || (poem.epilogue))) || (Today.boy.rescuing))){ burst(); return; }; var max = 9; if (poem.epilogue){ max = 9; } else { if (poem.environment == Today.word_dark){ max = 2; anim.setFrame(1); if (!grown){ degradation_timer.reset_to((DEGRADATION_BASE / 2)); }; } else { if ((((poem.environment == Today.word_fear)) || ((poem.environment == Today.word_struggle)))){ max = 5; }; }; }; var size:Number = (grow_timer.ratio - degradation_timer.ratio); anim.setFrame(Math.floor((size * max))); if (grown){ z = (Today.she.z + 1); built_at_least_a_bubble = true; has_grown = true; if (((selected) && (!(is_inside())))){ destroy(); }; light.alpha = 0.5; if (poem.filled == Today.word_beauty){ z = (Today.she.z - 1); anim.setFrame((anim.strip.frameCount - 1)); if (stuck_to == null){ if (collides_with(Today.she, 15)){ stick_to(Today.she); } else { hitting = world.filter(function (_arg1:Thing):Boolean{ return ((((((_arg1 is Bubble)) && (collides_with(_arg1, 11)))) && ((_arg1 as Bubble).grown))); }); for each (b in hitting) { if (((!((b == this))) && (!((b.stuck_to == this))))){ stick_to(b); break; }; }; }; }; if (stuck_to != null){ if (!selected){ x = (stuck_anchor.x + stuck_to.x); y = (stuck_anchor.y + stuck_to.y); } else { stuck_to = null; }; light.alpha = Math.max(0.4, Today.she.pulse); }; }; return; }; light.alpha = Math.max(0.4, (grow_timer.ratio * (anim.currentFrame / (anim.strip.frameCount - 1)))); if (Today.she.carrying == this){ interactive = false; } else { interactive = true; }; for each (s in Today.shadows) { if (((s.is_completely_inside()) && (s.collides_with(this, 10)))){ burst(); return; }; }; if (((((((((((Today.she.visible) && (!(selected)))) && (!(grown)))) && (!(has_grown)))) && ((Today.she.carrying == null)))) && (collides_with(Today.she, 10)))){ if (Today.she.shining){ Today.she.carrying = this; } else { if (Today.main.action != Today.word_swim){ burst(); return; }; }; }; y = (y - 2); x = (x + (Math.sin((Game.time / 1000)) * 0.2)); if (((shown) && ((y < (-(area.height) * 2))))){ destroy(); }; x = int(x); y = int(y); } public function get grown():Boolean{ return (grow_timer.done); } protected function make_bubbles():void{ struggling_bubble_timer.tick(); if (struggling_bubble_timer.done){ world.add(new Whirlwind(), (x + 3), (y + 6)); struggling_bubble_timer.reset(); }; } override protected function init(_arg1:Event):void{ super.init(_arg1); original_enviro = poem.environment; if (poem.environment == Today.word_free){ grow_timer.add((grow_timer.time / 2)); }; } public function inflate():void{ if (!has_grown){ grow_timer.tick(); }; } private function stick_to(_arg1:Thing):void{ stuck_to = _arg1; stuck_anchor.x = (x - _arg1.x); stuck_anchor.y = (y - _arg1.y); } public function get poem():Today{ return ((world as Today)); } } }//package
Section 38
//Bubble_img (Bubble_img) package { import mx.core.*; public class Bubble_img extends BitmapAsset { } }//package
Section 39
//Bubble_img_light (Bubble_img_light) package { import mx.core.*; public class Bubble_img_light extends BitmapAsset { } }//package
Section 40
//ChaseBehavior (ChaseBehavior) package { import moonlib2.*; import flash.geom.*; public class ChaseBehavior { public var dir:Point; private var avoid:Function;// = null public var launch_timer:Timer; public function ChaseBehavior(_arg1:Timer, _arg2:Function){ dir = new Point(); launch_timer = new Timer(250, 600); super(); this.launch_timer = _arg1; this.avoid = _arg2; } public function go_away_from(_arg1:Thing, _arg2:Thing):void{ dir = _arg1.direction_towards(_arg2.x, _arg2.y); dir.x = (dir.x * -1); dir.y = (dir.y * -1); } public function go_towards(_arg1:Thing, _arg2:Thing):void{ dir = _arg1.direction_towards(_arg2.x, _arg2.y); } public function update(_arg1:Thing, _arg2:Number):void{ _arg1.x = (_arg1.x + (dir.x * _arg2)); _arg1.y = (_arg1.y + (dir.y * _arg2)); } public function go_away(_arg1:Thing, _arg2:Number, _arg3:Number):void{ dir = _arg1.direction_towards(_arg2, _arg3); dir.x = (dir.x * -1); dir.y = (dir.y * -1); } public function chase(_arg1:Animated, _arg2:Thing):Boolean{ var _local3:Array; if (_arg2 != null){ _local3 = ((avoid)!=null) ? _arg1.world.filter(avoid) : []; if (_local3.length > 0){ go_away_from(_arg1, _local3[0]); } else { launch_timer.tick(); if (launch_timer.done){ go_towards(_arg1, _arg2); launch_timer.reset(); }; }; _arg1.flip_towards(_arg2); if (_arg1.collides_with(_arg2, 17)){ _arg2 = null; return (true); }; } else { dir.x = (dir.y = 0); launch_timer.reset(); }; return (false); } public function reset():void{ launch_timer.reset(); } } }//package
Section 41
//Darkness (Darkness) package { import flash.events.*; import moonlib2.*; import flash.geom.*; public class Darkness extends Fear { private static var img:Class = Darkness_img; public function Darkness(){ super(null, new Point(), new Animation(new img().bitmapData, 31, 20)); visible = false; interactive = true; z = 6; } override protected function init(_arg1:Event):void{ super.init(_arg1); } override public function update(_arg1:Event):void{ super.update(_arg1); visible = (poem.environment == Today.word_dark); if (visible){ if (selected){ fit_in(world.area); }; if (Today.she.shining){ anim.setFrame(1); interactive = true; escape(20); } else { anim.setFrame(0); interactive = false; }; flip(1); }; } } }//package
Section 42
//Darkness_img (Darkness_img) package { import mx.core.*; public class Darkness_img extends BitmapAsset { } }//package
Section 43
//Explosion (Explosion) package { import flash.events.*; import moonlib2.*; import flash.geom.*; public class Explosion extends Animated { private var life:Timer; private static var img:Class = Explosion_img; public function Explosion(_arg1:Boolean=false){ life = new Timer(800); super(new Animation(new img().bitmapData)); z = (Today.she.z + 1); if (_arg1){ transform.colorTransform = new ColorTransform(0, 0, 0); }; } override public function update(_arg1:Event):void{ super.update(_arg1); y = (y - 1); life.tick(); if (life.done){ destroy(); }; } } }//package
Section 44
//Explosion_img (Explosion_img) package { import mx.core.*; public class Explosion_img extends BitmapAsset { } }//package
Section 45
//Fear (Fear) package { import flash.events.*; import moonlib2.*; import flash.geom.*; public class Fear extends Animated { protected var movement:ChaseBehavior; private static var optim_shiner_update:Number = 0; private static var optim_shiners:Array = new Array(); public function Fear(_arg1:Function, _arg2:Point, _arg3:Animation, _arg4:Number=INF, _arg5:Number=INF){ super(_arg3, _arg4, _arg5); movement = new ChaseBehavior(new Timer(_arg2.x, _arg2.y), _arg1); visible = false; interactive = true; z = 17; } override protected function init(_arg1:Event):void{ super.init(_arg1); } protected function escape(_arg1:Number=25):Boolean{ var _local4:Number; var _local2:Thing = this; var _local3:Thing = world.closest(this, optim_shiners); if (_local3){ _local4 = ((_local3 is She)) ? _arg1 : (_local3.area.width + 6); if (distance(_local3) < _local4){ flip_away(_local3); movement.go_away_from(this, _local3); movement.update(this, 3); if ((((_local3 is She)) && (!(((_local3 as She).carrying == null))))){ (_local3 as She).carrying.burst(); }; return (true); }; }; return (false); } protected function get poem():Today{ return ((world as Today)); } override public function update(_arg1:Event):void{ var e = _arg1; super.update(e); if (selected){ fit_in(world.area); }; if (optim_shiner_update != Game.time){ optim_shiner_update = Game.time; optim_shiners.length = 0; world.filter(function (_arg1:Thing):Boolean{ return (((_arg1.alive) && (is_shining(_arg1)))); }, optim_shiners); }; } protected function best_target():Thing{ if (poem.environment == Today.word_free){ return (null); }; var _local1:She = Today.she; if (!_local1.visible){ return (null); }; if (((!(_local1.shining)) && ((poem.action == Today.word_swim)))){ if (distance(_local1) < 40){ return (((distance(_local1) < 40)) ? _local1 : null); }; return (_local1); }; return (null); } public static function is_shining(_arg1:Thing):Boolean{ if ((((((_arg1 is She)) && ((_arg1 as She).shining))) && (((_arg1 as She).carrying == null)))){ return (true); }; if ((((_arg1 is Bubble)) && ((_arg1 as Bubble).grown))){ return (true); }; if ((((_arg1 is Fish)) && ((_arg1 as Fish).lit))){ return (true); }; return (false); } } }//package
Section 46
//Fish (Fish) package { import flash.events.*; import moonlib2.*; import flash.geom.*; import flash.display.*; import utils.*; public class Fish extends Animated { private var struggle_timer:Timer; private var speed:Number;// = 1 private var lumped_against:Fish;// = null private var light:Bitmap; private var initial_rotation:Number; private var was_holding_word:Fish;// = null public var dead:Boolean;// = true private var lumped_anchor:Point; private var impulse_timer:Timer; private var initial_y:Number; private static var img_light:Class = Fish_img_light; private static var img:Class = Fish_img; public function Fish(){ struggle_timer = new Timer(6000); lumped_anchor = new Point(); impulse_timer = new Timer(1000, 4000); super(new Animation(new img().bitmapData, 9, 12, 2000)); speed = (Utils.rand(50, 200) / 100); rotation = Utils.rand(0, 360); visible = false; interactive = true; z = 16; light = attach_bitmap_data(new img_light().bitmapData, -20, -24); light.alpha = 0; struggle_timer.ratio = 0.1; initial_rotation = rotation; } public function is_lumped():Boolean{ return (!((lumped_against == null))); } override public function update(_arg1:Event):void{ super.update(_arg1); visible = (poem.environment == Today.word_death); if (visible){ if (selected){ fit_in(world.area); if (dead){ dead = false; anim.rewind(); anim.setFrameTime(150); anim.play(true); }; } else { anim.stop(); }; if (lit){ z = 18; }; if (Today.she.shining){ struggle_timer.tick(); if (dead){ dead = false; anim.rewind(); anim.setFrameTime(150); anim.play(true); }; }; if (dead){ light.alpha = 0; y = (y - 0.2); transform.colorTransform = new ColorTransform(0.7, 0.7, 0.7); } else { rotation = 0; transform.colorTransform = new ColorTransform(); if (selected){ struggle_timer.tick(); Today.she.event(this); if (!Today.word_shine.is_available()){ Today.word_shine.stop_fade_out(); Today.word_shine.alpha = struggle_timer.ratio; was_holding_word = this; }; } else { impulse_timer.tick(); if (impulse_timer.done){ impulse_timer.reset_to(Utils.rand(2000, 3000)); }; if (impulse_timer.ratio < 0.3){ anim.setFrame(1); } else { anim.setFrame(0); }; y = (y - (speed * (1 - impulse_timer.ratio))); if (((!(Today.word_shine.is_available())) && ((was_holding_word == this)))){ struggle_timer.tick_back(); Today.word_shine.alpha = 0; dead = true; anim.stop(); anim.setFrame(0); rotation = initial_rotation; }; if (((Today.word_shine.is_available()) && ((was_holding_word == this)))){ was_holding_word = null; }; }; if ((((was_holding_word == this)) && (!(Today.word_shine.is_available())))){ poem.place_word(Today.word_shine, was_holding_word); }; light.alpha = struggle_timer.ratio; }; if (((shown) && (!(is_inside())))){ y = (world.area.height + Utils.rand(20, 50)); if (!Today.word_shine.is_available()){ dead = true; anim.stop(); }; shown = false; }; }; } override protected function init(_arg1:Event):void{ var e = _arg1; super.init(e); var r:Rectangle = world.area; r.y = 0; r.height = (world.area.height * 2); r.inflate(-(area.width), 0); place_randomly(r, function (_arg1:Thing):Boolean{ return ((_arg1 is Fish)); }, true); } override public function get area():Rectangle{ var _local1:Rectangle = super.area; _local1.inflate(5, 5); return (_local1); } public function get lit():Boolean{ return ((struggle_timer.ratio == 1)); } public function on_eaten():void{ var _local1:Fish; if (!Today.word_shine.is_available()){ Today.word_shine.fade_out(); struggle_timer.reset(); }; world.add(new Whirlwind(), (x + 3), (y + 6)); world.add(new Tail(this), x, y); _local1 = new Fish(); world.add(_local1); _local1.x = x; _local1.y = (world.area.height + Utils.rand(40, 70)); destroy(); } private function get poem():Today{ return ((world as Today)); } } }//package
Section 47
//Fish_img (Fish_img) package { import mx.core.*; public class Fish_img extends BitmapAsset { } }//package
Section 48
//Fish_img_light (Fish_img_light) package { import mx.core.*; public class Fish_img_light extends BitmapAsset { } }//package
Section 49
//FloatingBehavior (FloatingBehavior) package { import moonlib2.*; import utils.*; public class FloatingBehavior { private var wait:Timer; public function FloatingBehavior(){ wait = new Timer(400, 800); super(); } public function update(_arg1:Thing):void{ wait.tick(); if (wait.done){ wait.reset(); _arg1.y = (_arg1.y + (Utils.rand(0, 2) - 1)); }; } } }//package
Section 50
//Floor (Floor) package { import flash.events.*; import moonlib2.*; import flash.geom.*; public class Floor extends Animated { private static var img:Class = Floor_img; public function Floor(){ super(new Animation(new img().bitmapData), 0, 0); visible = false; z = 5; } override protected function init(_arg1:Event):void{ super.init(_arg1); y = (world.area.height - area.height); } override public function update(_arg1:Event):void{ super.update(_arg1); visible = (Today.main.environment == Today.word_dark); if (visible){ transform.colorTransform = new ColorTransform(0, 0, 0); }; } } }//package
Section 51
//Floor_img (Floor_img) package { import mx.core.*; public class Floor_img extends BitmapAsset { } }//package
Section 52
//Girl (Girl) package { import moonlib2.*; import flash.geom.*; public class Girl extends Animated { protected var anim_sinking:Animation; protected var anim_swimming:Animation; protected var anim_floating:Animation; private var struggling_bubble_timer:Timer; protected var expression:Expression; private static var img:Class = Girl_img; private static var img_drowning:Class = Girl_img_drowning; private static var img_swimmer:Class = Girl_img_swimmer; public function Girl(){ struggling_bubble_timer = new Timer(140); super(new Animation(new img().bitmapData, 21, 13, 1500)); anim_sinking = anim; anim_floating = attach_anim(new Animation(new img_drowning().bitmapData, 14, 20, 150)); anim_floating.visible = false; anim_swimming = attach_anim(new Animation(new img_swimmer().bitmapData, 8, 20, 150)); anim_swimming.visible = false; expression = new Expression(this, 2, 3); addChild(expression); anim.sequence = new Array(0, 1); anim.play(true); } protected function update_sinking(_arg1:Thing, _arg2:Boolean=false):void{ set_no_anims(); anim_sinking.visible = true; if (_arg1 != null){ anim_sinking.stop(); anim_sinking.sequence = new Array(2, 3); anim_sinking.setFrame(((_arg1.y < y)) ? 0 : 1); } else { anim_sinking.sequence = [0, 1]; anim_sinking.play(true); }; expression.status = Expression.NONE; } protected function update_float():void{ set_no_anims(); anim_floating.update(); anim_floating.play(true); anim_floating.sequence = [2, 3]; anim_floating.visible = true; expression.x = (anim_floating.x + 6); expression.y = anim_floating.y; expression.status = Expression.ALMOST_CLOSED; } public function get poem():Today{ return ((world as Today)); } protected function update_drowning():void{ set_no_anims(); anim_floating.update(); anim_floating.play(true); anim_floating.sequence = [6, 7]; anim_floating.visible = true; expression.x = (anim_floating.x + 6); expression.y = (anim_floating.y + 2); expression.status = Expression.ALMOST_CLOSED; make_bubbles(); } protected function update_shining():void{ set_no_anims(); anim_floating.update(); anim_floating.play(true); anim_floating.sequence = [4, 5]; anim_floating.visible = true; expression.status = Expression.FOCUSED; expression.x = (anim_floating.x + 6); expression.y = (anim_floating.y + 2); flip(1); } private function set_no_anims():void{ anim_swimming.visible = false; anim_floating.visible = false; anim_sinking.visible = false; } override public function get collision_area():Rectangle{ var _local1:Rectangle = area; _local1.inflate(-1, -1); return (_local1); } protected function update_swimmer():void{ set_no_anims(); anim_swimming.update(); anim_swimming.visible = true; expression.x = (anim_swimming.x + 2); expression.y = (anim_swimming.y + 2); if (poem.environment == Today.word_fear){ expression.status = Expression.FOCUSED_UP; } else { expression.status = Expression.UP; }; } protected function make_bubbles():void{ struggling_bubble_timer.tick(); if (struggling_bubble_timer.done){ world.add(new Whirlwind(), (x - 1), (y + 5)); struggling_bubble_timer.reset(); }; } protected function get_visible_anim():Animation{ if (anim_swimming.visible){ return (anim_swimming); }; if (anim_floating.visible){ return (anim_floating); }; if (anim_sinking.visible){ return (anim_sinking); }; return (anim); } } }//package
Section 53
//Girl_img (Girl_img) package { import mx.core.*; public class Girl_img extends BitmapAsset { } }//package
Section 54
//Girl_img_drowning (Girl_img_drowning) package { import mx.core.*; public class Girl_img_drowning extends BitmapAsset { } }//package
Section 55
//Girl_img_swimmer (Girl_img_swimmer) package { import mx.core.*; public class Girl_img_swimmer extends BitmapAsset { } }//package
Section 56
//Hyperlink (Hyperlink) package { import flash.text.*; import flash.events.*; import moonlib2.*; import flash.geom.*; import flash.net.*; public class Hyperlink extends Text { private var txt:String; public var url:String; public function Hyperlink(_arg1:TextFormat, _arg2:String, _arg3:String){ super(_arg1); this.url = _arg3; this.txt = _arg2; z = 5000; } override protected function init(_arg1:Event):void{ super.init(_arg1); text = txt; field.antiAliasType = AntiAliasType.NORMAL; buttonMode = true; mouseEnabled = true; mouseChildren = false; useHandCursor = true; } override public function on_click():void{ super.on_click(); var _local1:URLRequest = new URLRequest(url); navigateToURL(_local1, "_blank"); } override public function get area():Rectangle{ return (new Rectangle(x, y, field.textWidth, field.textHeight)); } } }//package
Section 57
//MochiBot (MochiBot) package { import flash.display.*; import flash.system.*; import flash.net.*; public dynamic class MochiBot extends Sprite { public static function track(_arg1:Sprite, _arg2:String):MochiBot{ if (Security.sandboxType == "localWithFile"){ return (null); }; var _local3:MochiBot = new (MochiBot); _arg1.addChild(_local3); Security.allowDomain("*"); Security.allowInsecureDomain("*"); var _local4 = "http://core.mochibot.com/my/core.swf"; var _local5:URLVariables = new URLVariables(); _local5["sb"] = Security.sandboxType; _local5["v"] = Capabilities.version; _local5["swfid"] = _arg2; _local5["mv"] = "8"; _local5["fv"] = "9"; var _local6:String = _local3.root.loaderInfo.loaderURL; if (_local6.indexOf("http") == 0){ _local5["url"] = _local6; } else { _local5["url"] = "local"; }; var _local7:URLRequest = new URLRequest(_local4); _local7.contentType = "application/x-www-form-urlencoded"; _local7.method = URLRequestMethod.POST; _local7.data = _local5; var _local8:Loader = new Loader(); _local3.addChild(_local8); _local8.load(_local7); return (_local3); } } }//package
Section 58
//Pirana (Pirana) package { import flash.events.*; import moonlib2.*; import flash.geom.*; public class Pirana extends Fear { public var target:Thing;// = null private var floating:FloatingBehavior; private var leader:Boolean;// = false private static var img_pirana:Class = Pirana_img_pirana; public function Pirana(_arg1:Boolean){ var me:Thing; var leader = _arg1; floating = new FloatingBehavior(); super((leader) ? null : function (_arg1:Thing):Boolean{ return ((((_arg1 is Pirana)) && (_arg1.collides_with(me)))); }, new Point(100, 300), new Animation(new img_pirana().bitmapData)); this.leader = leader; if (leader){ movement.launch_timer.reset_to(0); }; me = this; interactive = true; visible = false; } override public function update(_arg1:Event):void{ var fish:Fish; var e = _arg1; super.update(e); visible = (poem.environment == Today.word_death); if (!visible){ return; }; target = null; var chasing:Boolean; if (!Today.word_shine.is_available()){ if ((world.dragging is Fish)){ target = world.dragging; } else { fish = (world.closest(this, world.filter(function (_arg1:Thing):Boolean{ return ((((_arg1 is Fish)) && (!((_arg1 as Fish).dead)))); })) as Fish); if (fish != null){ target = fish; }; }; if (((!((target == null))) && ((Today.word_shine.alpha > 0.4)))){ chasing = true; if (movement.chase(this, target)){ (target as Fish).on_eaten(); target = null; movement.reset(); poem.shake(); }; } else { movement.dir.x = (movement.dir.y = 0); }; movement.update(this, 2); } else { escape(); }; if (!chasing){ floating.update(this); }; } } }//package
Section 59
//Pirana_img_pirana (Pirana_img_pirana) package { import mx.core.*; public class Pirana_img_pirana extends BitmapAsset { } }//package
Section 60
//Preloader (Preloader) package { import flash.text.*; import flash.display.*; import flash.geom.*; import flash.events.*; import flash.utils.*; public class Preloader extends MovieClip { private var instructions:TextField; private var MyFontHolder:Class; private var begin:Boolean;// = false private var text:TextField; private var font:TextFormat; private var loading_bar_y:Number; private var bar:Sprite; private var waiting_begin:Boolean;// = false private var title:TextField; private static var img_dead:Class = Preloader_img_dead; private static var img:Class = Preloader_img; public function Preloader(){ var _local1:Bitmap; MyFontHolder = Preloader_MyFontHolder; bar = new Sprite(); super(); stop(); if (((((!(check_domain("daniel_benmergui_games.s3.amazonaws.com"))) && (!(check_domain("ludomancy.com/games"))))) && (!((stage.loaderInfo.url.substring(0, 4) == "file"))))){ throw (new String(("Checksum failed. Please update your flash player. URL: " + stage.loaderInfo.url))); }; addEventListener(Event.ENTER_FRAME, onEnterFrame); addEventListener(Event.ADDED_TO_STAGE, init); stage.addEventListener(MouseEvent.MOUSE_DOWN, mouse_down); _local1 = new Bitmap(new img_dead().bitmapData); _local1.scaleX = (_local1.scaleY = 3); addChild(_local1); _local1 = new Bitmap(new img().bitmapData); _local1.x = ((390 - _local1.width) / 2); _local1.y = 200; addChild(_local1); addChild(bar); var _local2:Object = root.loaderInfo.parameters; new Texts(_local2["lang"]); } public function onEnterFrame(_arg1:Event):void{ if (waiting_begin){ if (begin){ removeEventListener(Event.ENTER_FRAME, onEnterFrame); nextFrame(); init_main(); }; } else { if (framesLoaded == totalFrames){ text.text = Texts.txt(Texts.CLICK); text.setTextFormat(font); text.x = ((390 - text.width) / 2); waiting_begin = true; }; }; bar.graphics.clear(); draw_bar(bar.graphics, root.loaderInfo.bytesLoaded, root.loaderInfo.bytesTotal, new Rectangle(20, (loading_bar_y + 45), (390 - 40), 20)); } private function init_main():void{ var _local2:Object; var _local1:Class = Class(getDefinitionByName("Today")); if (_local1){ _local2 = new (_local1); addChild((_local2 as DisplayObject)); }; } public function check_domain(_arg1:String):Boolean{ var _local2:String = stage.loaderInfo.url; var _local3:Number = (_local2.indexOf("://") + 3); var _local4:Number = _local2.lastIndexOf("/"); var _local5:String = _local2.substring(_local3, _local4); if ((((_local5.indexOf(_arg1) == -1)) && (!((_local5 == ""))))){ return (false); }; return (true); } private function mouse_down(_arg1:MouseEvent):void{ if (waiting_begin){ begin = true; stage.removeEventListener(MouseEvent.MOUSE_DOWN, mouse_down); }; } private function init(_arg1:Event):void{ font = create_font(24, 0xFFFFFF); text = create_text(true); text.text = "Loading..."; text.width = 390; text.y = (loading_bar_y = (570 - 90)); text.setTextFormat(font); text.wordWrap = false; text.multiline = true; text.autoSize = TextFieldAutoSize.CENTER; addChild(text); instructions = create_text(true); instructions.width = (390 - 20); instructions.multiline = true; instructions.wordWrap = true; instructions.y = 300; instructions.x = 10; instructions.setTextFormat(font); addChild(instructions); } private static function create_text(_arg1:Boolean=true):TextField{ var _local2:TextField = new TextField(); _local2.selectable = false; _local2.type = TextFieldType.DYNAMIC; _local2.autoSize = TextFieldAutoSize.LEFT; _local2.multiline = true; _local2.wordWrap = true; _local2.gridFitType = GridFitType.PIXEL; _local2.embedFonts = _arg1; return (_local2); } private static function draw_bar(_arg1:Graphics, _arg2:Number, _arg3:Number, _arg4:Rectangle):void{ _arg1.beginFill(4026000); _arg1.drawRect(int(_arg4.x), int(_arg4.y), int(((_arg2 * _arg4.width) / _arg3)), _arg4.height); _arg1.endFill(); } private static function create_font(_arg1:Number, _arg2:Number):TextFormat{ var _local3:TextFormat = new TextFormat(); _local3.size = _arg1; _local3.color = (_arg2 | 4278190080); _local3.font = "uni 05_54_8pt_st"; return (_local3); } } }//package
Section 61
//Preloader_img (Preloader_img) package { import mx.core.*; public class Preloader_img extends BitmapAsset { } }//package
Section 62
//Preloader_img_dead (Preloader_img_dead) package { import mx.core.*; public class Preloader_img_dead extends BitmapAsset { } }//package
Section 63
//Preloader_MyFontHolder (Preloader_MyFontHolder) package { import mx.core.*; public class Preloader_MyFontHolder extends SpriteAsset { } }//package
Section 64
//Shadow (Shadow) package { import flash.events.*; import moonlib2.*; import flash.geom.*; import utils.*; public class Shadow extends Fear { private var speed:Number; private var eyes_shown:Boolean;// = false private var stuck_anchor:Point; public var stuck_to:Thing;// = null private static var img_shadow:Class = Shadow_img_shadow; private static var music_triggered:Boolean = false; public function Shadow(_arg1:Boolean=false){ stuck_anchor = new Point(); super((_arg1) ? null : hitting_colleague, new Point(100, 600), new Animation(new img_shadow().bitmapData, 14, 18)); if (_arg1){ movement.launch_timer.reset_to(0); }; anim.setFrame(2); speed = Utils.rand(2, 4); interactive = true; z = (Today.she.z + 1); } override public function update(_arg1:Event):void{ var _local2:Bubble; var _local3:Thing; super.update(_arg1); visible = (((poem.filled == Today.word_fear)) && ((((poem.environment == Today.word_struggle)) || ((poem.environment == Today.word_free))))); if (!visible){ stuck_to = null; return; }; if (poem.environment == Today.word_free){ fit_in(world.area); anim.setFrame(1); if (collides_with(Today.she, 8)){ stuck_to = null; world.add(new Explosion(true), x, y); _local2 = new Bubble(); world.add(_local2, x, y); _local2.grow_timer.trigger(); Utils.remove(Today.shadows, this); destroy(); return; }; }; if (selected){ fit_in(world.area); }; if (stuck_to != null){ if (((selected) && (!(collides_with(Today.she))))){ stuck_to = null; } else { x = (stuck_anchor.x + stuck_to.x); y = (stuck_anchor.y + stuck_to.y); }; }; if (!escape()){ if (stuck_to == null){ _local3 = best_target(); if ((((Today.word_free.alpha <= 0.2)) && ((Today.she.velocity < 0)))){ if (!eyes_shown){ anim.setFrame(2); }; flip_towards(Today.she); }; if (((!((_local3 == null))) && ((((Today.word_free.alpha > 0.2)) || (Today.she.has_weight))))){ anim.setFrame(0); eyes_shown = true; if (!music_triggered){ music_triggered = true; Today.background.explosion(); SoundManager.play_struggle(); }; if (movement.chase(this, _local3)){ if (_local3 == Today.she){ stick_to(_local3); Today.she.on_hit(); poem.shake(); Today.background.explosion(); }; }; movement.update(this, speed); }; }; } else { stuck_to = null; }; x = int(x); y = int(y); } private function stick_to(_arg1:Thing):void{ if (_arg1.visible){ stuck_to = _arg1; stuck_anchor.x = (x - _arg1.x); stuck_anchor.y = (y - _arg1.y); }; } private function hitting_colleague(_arg1:Thing):Boolean{ return ((((((((_arg1 is Shadow)) && (!((_arg1.x == x))))) && (((_arg1 as Shadow).stuck_to == null)))) && (_arg1.collides_with(this)))); } override protected function init(_arg1:Event):void{ super.init(_arg1); var _local2:Rectangle = world.area; _local2.y = Today.POEM_BOTTOM; _local2.inflate(-8, 0); _local2.height = ((world.area.height - _local2.y) - area.height); } } }//package
Section 65
//Shadow_img_shadow (Shadow_img_shadow) package { import mx.core.*; public class Shadow_img_shadow extends BitmapAsset { } }//package
Section 66
//She (She) package { import flash.events.*; import moonlib2.*; import flash.geom.*; import flash.display.*; public class She extends Girl { private var weight_up:Bitmap; private var initial_y:Number; private var speed:Number;// = 2 private var weight_down:Bitmap; private var debug:Array; private var light:Bitmap; private var hit_timer:Timer; public var velocity:Number;// = 0 private var pulse_timer:Timer; private var stare_timer:Timer; private var stare_at:Thing;// = null public var carrying:Bubble;// = null private var shade:ColorTransform; private var impulse_timer:Timer; private var debug_i:int;// = 0 private static var img_weight_up:Class = She_img_weight_up; private static var img_light:Class = She_img_light; private static var img_weight_down:Class = She_img_weight_down; public function She(){ pulse_timer = new Timer(1500); stare_timer = new Timer(1500); shade = new ColorTransform(0.7, 0.7, 0.7); hit_timer = new Timer(300); impulse_timer = new Timer(500); debug = [BlendMode.ADD, BlendMode.ALPHA, BlendMode.DARKEN, BlendMode.DIFFERENCE, BlendMode.ERASE, BlendMode.HARDLIGHT, BlendMode.INVERT, BlendMode.LAYER, BlendMode.LIGHTEN, BlendMode.MULTIPLY, BlendMode.OVERLAY, BlendMode.SCREEN, BlendMode.SUBTRACT]; super(); weight_up = attach_bitmap_data(new img_weight_up().bitmapData); weight_up.visible = false; weight_down = attach_bitmap_data(new img_weight_down().bitmapData); weight_down.visible = false; hit_timer.trigger(); interactive = true; light = attach_bitmap_data(new img_light().bitmapData); light.visible = false; setChildIndex(light, 0); stare_timer.trigger(); z = 22; } private function swim():void{ anim_swimming.play(true); velocity = -(speed); } public function on_hit():void{ var b:Bubble; hit_timer.reset(); var complete:Array = world.filter(function (_arg1:Thing):Boolean{ return ((((_arg1 is Bubble)) && ((_arg1 as Bubble).grown))); }); for each (b in complete) { b.burst(); }; } public function get has_weight():Boolean{ var me:Thing; if (hit_timer.running){ return (true); }; me = this; var shadows:Array = world.filter(function (_arg1:Thing):Boolean{ return ((((_arg1 is Shadow)) && (((_arg1 as Shadow).stuck_to == me)))); }); return ((shadows.length > 0)); } override protected function init(_arg1:Event):void{ super.init(_arg1); } override public function get area():Rectangle{ var _local1:Animation; if (((anim_swimming.visible) || (anim_floating.visible))){ _local1 = get_visible_anim(); return (new Rectangle((x - (_local1.strip.frameW / 2)), (y - (_local1.strip.frameH / 2)), _local1.strip.frameW, _local1.strip.frameH)); }; return (super.area); } override public function update(_arg1:Event):void{ super.update(_arg1); pulse_timer.tick(true); if (y < -80){ visible = false; return; }; stare_timer.tick(); if (stare_at != null){ if (((stare_timer.done) || (!(stare_at.visible)))){ stare_at = null; }; }; light.visible = shining; hit_timer.tick(); if (poem.epilogue){ update_epilogue(); } else { if (!Today.boy.rescuing){ fit_in(world.area); update_ingame(); } else { update_swimmer(); y = (y - 1); alpha = 0.2; get_visible_anim().transform.colorTransform = new ColorTransform(0, 0, 0, 1); expression.status = Expression.NONE; }; }; weight_down.visible = false; weight_up.visible = false; weight_down.alpha = (weight_up.alpha = Today.word_struggle.alpha); if (get_visible_anim() == anim_floating){ weight_up.visible = true; weight_up.x = (anim_floating.x + 5); weight_up.y = (anim_floating.y + 11); } else { if (get_visible_anim() == anim_swimming){ weight_up.visible = true; weight_up.x = (anim_swimming.x + 2); weight_up.y = (anim_swimming.y + 14); } else { if (get_visible_anim() == anim_sinking){ weight_down.visible = true; weight_down.x = (anim_sinking.x + 10); weight_down.y = (anim_sinking.y + 7); }; }; }; } private function update_ingame():void{ var _local1:Rectangle; var _local2:Thing; if (poem.environment == Today.word_dark){ _local1 = world.area; _local1.top = Today.POEM_BOTTOM; _local1.bottom = Today.floor.area.top; _local1.inflate(-3, 0); fit_in(_local1); }; if ((((poem.environment == Today.word_dark)) && (!(shining)))){ shade.redMultiplier = (shade.greenMultiplier = (shade.blueMultiplier = 0.7)); } else { shade.redMultiplier = (shade.greenMultiplier = (shade.blueMultiplier = 1)); }; transform.colorTransform = shade; if (poem.action == Today.word_die){ velocity = 0.2; update_sinking(stare_at); } else { if (shining){ if (poem.environment == Today.word_free){ update_swimmer(); swim(); _local2 = world.closest(this, Today.shadows); if (_local2 != null){ expression.status = Expression.ANGRY; expression.seekTarget = _local2; } else { expression.status = Expression.HAPPY; }; } else { velocity = 0; update_shining(); light.alpha = 1; if (carrying != null){ expression.status = Expression.DOWN; }; }; if (((stare_timer.running) && (!((stare_at == null))))){ expression.status = Expression.SEEK; expression.seekTarget = stare_at; }; if (Today.boy.is_completely_inside()){ expression.status = Expression.ANGRY; expression.seekTarget = Today.boy; }; } else { if (poem.action == Today.word_swim){ if (has_weight){ velocity = 3; update_drowning(); expression.status = Expression.SAD_LONELY; } else { if (poem.environment == Today.word_dark){ if (area.top <= Today.POEM_BOTTOM){ update_drowning(); } else { update_swimmer(); y = (y - 2); }; } else { update_swimmer(); swim(); if (poem.environment == Today.word_struggle){ expression.status = Expression.FOCUSED_UP; } else { if (((stare_timer.running) && (!((stare_at == null))))){ expression.status = Expression.SEEK; expression.seekTarget = stare_at; }; }; if (Today.boy.is_completely_inside()){ expression.status = Expression.ANGRY; expression.seekTarget = Today.boy; }; }; }; } else { if (Today.boy.rescuing){ }; }; }; }; if (carrying != null){ carrying.x = x; carrying.y = (y + 2); if (((carrying.grown) || (!(shining)))){ carrying.x = (carrying.x + 1); carrying = null; } else { if (((hit_timer.done) && (shining))){ carrying.grow_timer.tick(); }; }; }; } public function event(_arg1:Thing):void{ if (((!((_arg1 == null))) && (_arg1.is_inside()))){ stare_timer.reset(); stare_at = _arg1; }; } private function update_epilogue():void{ alpha = 1; if (poem.action == Today.word_struggle){ update_swimmer(); } else { if (poem.action == Today.word_shine){ update_shining(); } else { if (poem.action == Today.word_dark){ update_float(); anim.stop(); transform.colorTransform = new ColorTransform(0.6, 0.6, 0.6); } else { if (poem.action == Today.word_fear){ update_sinking(null, true); }; }; }; }; if (poem.endings[Today.ENDING_ALONE]){ velocity = 0; alpha = 0.2; y = (y - 1); get_visible_anim().transform.colorTransform = new ColorTransform(0, 0, 0, 1); expression.status = Expression.NONE; } else { if (poem.endings[Today.ENDING_COURAGE]){ y = (y - 1); expression.status = Expression.ANGRY_UP; }; }; visible = !((poem.action == Today.word_dark)); } public function get pulse():Number{ var _local1:Number = ((pulse_timer.ratio - 0.5) * 2); return (Math.abs(_local1)); } private function key(_arg1:KeyboardEvent):void{ debug_i++; debug_i = (debug_i % debug.length); light.blendMode = debug[debug_i]; trace(("blend: " + debug_i)); } public function get shining():Boolean{ return ((((poem.action == Today.word_shine)) || ((poem.environment == Today.word_free)))); } } }//package
Section 67
//She_img_light (She_img_light) package { import mx.core.*; public class She_img_light extends BitmapAsset { } }//package
Section 68
//She_img_weight_down (She_img_weight_down) package { import mx.core.*; public class She_img_weight_down extends BitmapAsset { } }//package
Section 69
//She_img_weight_up (She_img_weight_up) package { import mx.core.*; public class She_img_weight_up extends BitmapAsset { } }//package
Section 70
//SoundManager (SoundManager) package { import flash.events.*; import mx.core.*; import flash.media.*; public class SoundManager { private static var loaded:Boolean = false; private static var music_sound_asset_happy:SoundAsset; public static var ending_finished:Boolean = false; private static var music_data_change:Class = SoundManager_music_data_change; private static var music_data_dark:Class = SoundManager_music_data_dark; public static var on:Boolean = true; private static var music_sound_asset_hostile:SoundAsset; private static var music_data_happy:Class = SoundManager_music_data_happy; private static var music_sound_asset_dark:SoundAsset; private static var music_sound_asset_change:SoundAsset; private static var current:SoundChannel; private static var music_data_hostile:Class = SoundManager_music_data_hostile; public static function play_change_words():void{ if (!on){ return; }; music_sound_asset_change.play(); } private static function on_complete(_arg1:Event):void{ if (current != null){ current.stop(); }; } private static function load():void{ if (current != null){ current.stop(); }; if (!loaded){ music_sound_asset_dark = (new music_data_dark() as SoundAsset); music_sound_asset_hostile = (new music_data_hostile() as SoundAsset); music_sound_asset_happy = (new music_data_happy() as SoundAsset); music_sound_asset_change = (new music_data_change() as SoundAsset); loaded = true; }; } public static function play_intro():void{ if (!on){ return; }; load(); current = music_sound_asset_dark.play(30, 99); } public static function play_ending():void{ ending_finished = false; if (!on){ return; }; load(); current = music_sound_asset_happy.play(0); current.addEventListener(Event.SOUND_COMPLETE, ending_over); } public static function ending_over(_arg1:Event):void{ ending_finished = true; } public static function play_struggle():void{ if (!on){ return; }; load(); current = music_sound_asset_hostile.play(0, 99); } } }//package
Section 71
//SoundManager_music_data_change (SoundManager_music_data_change) package { import mx.core.*; public class SoundManager_music_data_change extends SoundAsset { } }//package
Section 72
//SoundManager_music_data_dark (SoundManager_music_data_dark) package { import mx.core.*; public class SoundManager_music_data_dark extends SoundAsset { } }//package
Section 73
//SoundManager_music_data_happy (SoundManager_music_data_happy) package { import mx.core.*; public class SoundManager_music_data_happy extends SoundAsset { } }//package
Section 74
//SoundManager_music_data_hostile (SoundManager_music_data_hostile) package { import mx.core.*; public class SoundManager_music_data_hostile extends SoundAsset { } }//package
Section 75
//Statue (Statue) package { import flash.events.*; import moonlib2.*; import flash.geom.*; public class Statue extends Thing { private var swim_delivered:Boolean;// = false private var initial_x:Number; private static var img:Class = Statue_img; public function Statue(){ super(new img().bitmapData, Number.NEGATIVE_INFINITY, 0); visible = false; interactive = true; rotation = 20; z = 2; } override protected function init(_arg1:Event):void{ super.init(_arg1); x = 70; y = (world.area.height - 20); initial_x = x; } private function get poem():Today{ return ((world as Today)); } override public function update(_arg1:Event):void{ var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Rectangle; super.update(_arg1); visible = (poem.environment == Today.word_dark); if (visible){ Today.word_swim.visible = true; if (((Today.word_swim.is_on_poem()) || (Today.word_swim.user_placed))){ swim_delivered = true; }; if (Today.she.shining){ _local2 = 35; _local3 = 80; _local4 = Today.she.distance_point(x, (area.top + (area.height / 2))); _local5 = ((_local4 - _local2) / (_local3 - _local2)); _local5 = (1 - Math.max(0, Math.min(1, _local5))); interactive = (_local5 > 0.6); transform.colorTransform = new ColorTransform(_local5, _local5, _local5); if (rotation != 0){ if ((y + area.height) < Today.floor.area.top){ rotation = 0; }; x = initial_x; } else { z = 7; _local6 = world.area; _local6.top = Today.POEM_BOTTOM; _local6.bottom = Today.floor.area.top; _local6.inflate(-3, 0); fit_in(_local6); if (((((y + area.height) < Today.floor.area.top)) && (!(selected)))){ y = (y + 1); }; if (!swim_delivered){ Today.word_swim.alpha = _local5; poem.place_word(Today.word_swim, this); Today.she.event(this); }; }; } else { interactive = false; transform.colorTransform = new ColorTransform(0.1, 0.1, 0.1); }; }; } override public function get area():Rectangle{ var _local1:Rectangle = super.area; _local1.inflate(5, 0); return (_local1); } } }//package
Section 76
//Statue_img (Statue_img) package { import mx.core.*; public class Statue_img extends BitmapAsset { } }//package
Section 77
//Tail (Tail) package { import flash.events.*; import moonlib2.*; public class Tail extends Animated { private static var img:Class = Tail_img; public function Tail(_arg1:Fish){ super(new Animation(new img().bitmapData)); interactive = true; visible = true; rotation = 315; z = 2; } override public function update(_arg1:Event):void{ super.update(_arg1); visible = (Today.main.environment == Today.word_death); y = (y + 1); destroy_if_shown(); } } }//package
Section 78
//Tail_img (Tail_img) package { import mx.core.*; public class Tail_img extends BitmapAsset { } }//package
Section 79
//Texts (Texts) package { import flash.utils.*; public class Texts { private var text_file:Class; public static const PAINFUL:int = 6; public static const SHINE:int = 7; public static const SWIM:int = 8; public static const DIE:int = 5; public static const DEAD:int = 1; public static const LINE_2:int = 10; public static const LINE_3:int = 11; public static const SHADES:int = 3; public static const CLICK:int = 14; public static const FREE:int = 4; public static const LINE_1:int = 9; public static const DARK:int = 0; public static const BEAUTY:int = 2; public static const UNTIL:int = 12; public static const MYSELF:int = 13; private static var texts:Dictionary = new Dictionary(); public static var selected:String; public function Texts(_arg1:String){ var _local4:String; var _local5:Array; text_file = Texts_text_file; super(); Texts.selected = _arg1; if ((((Texts.selected == null)) || ((Texts.selected.length == 0)))){ Texts.selected = "en"; }; var _local2:String = new text_file(); var _local3:Array = _local2.split("-"); for each (_local4 in _local3) { if (_local4.length > 0){ _local5 = _local4.split("\r\n"); texts[_local5[0]] = _local5.splice(1, (_local5.length - 1)); }; }; if (texts[Texts.selected] == null){ _arg1 = "en"; }; } public static function txt(_arg1:int):String{ return (texts[selected][_arg1]); } } }//package
Section 80
//Texts_text_file (Texts_text_file) package { import mx.core.*; public class Texts_text_file extends ByteArrayAsset { } }//package
Section 81
//Today (Today) package { import flash.text.*; import flash.events.*; import moonlib2.*; import flash.geom.*; import utils.*; import mx.utils.*; public class Today extends Game { public var interactive_words:Array; public var freedom_timer:Timer; public var lights:Array; private var bubble_spawn_freedom_timer:Timer; public var endings:Array; private var pending_exchange:Array; private var endgame_timer:Timer; private var bubble_spawn_struggle_timer:Timer; private var shake_timer:Timer; private var hyperlink:Hyperlink; private var poem:Array; private var light_mask:Thing; public var epilogue:Boolean;// = false public static const POEM_BOTTOM:Number = 50; public static const ENDINGS:int = 3; public static const ENDING_COURAGE:int = 2; public static const ENDING_ALONE:int = 1; public static const ENDING_RESCUE:int = 0; private static const SHADOWS:int = 5; public static const ACTION:int = 2; private static const LINE_HEIGHT:Number = 13; public static const FILLED:int = 1; public static const FREE:int = 3; public static const ENVIRONMENT:int = 0; private static var font_asset:Class = Today_font_asset; public static var word_free:Word; public static var word_dark:Word; public static var floor:Floor; public static var word_swim:Word; public static var background:Background; public static var she:She; public static var main:Today; public static var fixed_font:TextFormat; public static var word_fear:Word; public static var word_die:Word; public static var boy:Boy; public static var word_beauty:Word; public static var word_struggle:Word; public static var shadows:Array = []; public static var noun_font:TextFormat; public static var adjective_font:TextFormat; public static var verb_font:TextFormat; public static var word_shine:Word; public static var word_death:Word; public function Today(){ endgame_timer = new Timer(5000); interactive_words = new Array(); poem = new Array(); endings = [false, false, false]; bubble_spawn_struggle_timer = new Timer(2000); bubble_spawn_freedom_timer = new Timer(500); freedom_timer = new Timer(12000); shake_timer = new Timer(800); lights = []; pending_exchange = []; super(3, 390, 570); visible = false; } public function shake():void{ shake_timer.reset(); } override public function init(_arg1:Event):void{ var _local4:Word; var _local5:Array; var _local6:Word; super.init(_arg1); main = this; MochiBot.track(this, "836a893f"); var _local2:Number = 10; if ((((Texts.selected == "de")) || ((Texts.selected == "fr")))){ _local2 = 9; }; fixed_font = new TextFormat(new font_asset().fontName, _local2, 0xEBEBEB); adjective_font = new TextFormat(new font_asset().fontName, _local2, 1039713); noun_font = new TextFormat(new font_asset().fontName, _local2, 0xFF00); verb_font = new TextFormat(new font_asset().fontName, _local2, 14539535); add((background = new Background()), 0, 0); add((she = new She()), (area.width / 2), 126); light_mask = new Thing(); light_mask.z = 19; light_mask.graphics.beginFill(4278190080, 0.5); light_mask.graphics.drawRect(-(area.width), -(area.height), (area.width * 2), (area.height * 2)); light_mask.graphics.drawCircle(0, 0, 50); light_mask.graphics.endFill(); light_mask.visible = false; add(light_mask); add(new Statue()); add((boy = new Boy()), -100, 70); add((floor = new Floor())); add(new Pirana(false), 64, 160); add(new Pirana(false), 99, 150); add(new Darkness(), 26, 174); add(new Darkness(), 30, 167); add(new Darkness(), 55, 166); add(new Darkness(), 60, 178); add(new Darkness(), 67, 154); add(new Darkness(), 87, 176); add(new Darkness(), 80, 165); add(new Shadow(), 45, 102); add(new Shadow(), 25, 132); add(new Shadow(), 50, 161); (add(new Shadow(), 95, 109) as Shadow).flip_towards(she); (add(new Shadow(), 89, 159) as Shadow).flip_towards(she); shadows = count(Shadow, true); add_multiple(Fish, 10); word_dark = new Word(Texts.txt(Texts.DARK), ENVIRONMENT, 6, 76); word_death = new Word(Texts.txt(Texts.DEAD), ENVIRONMENT, 1, 76); word_beauty = new Word(Texts.txt(Texts.BEAUTY), FILLED, 3, 98); word_fear = new Word(Texts.txt(Texts.SHADES), FILLED, 7, 110); word_free = new Word(Texts.txt(Texts.FREE), ENVIRONMENT, 5, 65); word_die = new Word(Texts.txt(Texts.DIE), ACTION, 0, 52); word_struggle = new Word(Texts.txt(Texts.PAINFUL), ENVIRONMENT, 2, 93); word_shine = new Word(Texts.txt(Texts.SHINE), ACTION, 9, 80); word_swim = new Word(Texts.txt(Texts.SWIM), ACTION, 4, 81); interactive_words.push(word_dark); interactive_words.push(word_fear); interactive_words.push(word_death); interactive_words.push(word_free); interactive_words.push(word_die); interactive_words.push(word_struggle); interactive_words.push(word_shine); interactive_words.push(word_beauty); interactive_words.push(word_swim); var _local3:Number = 50; for each (_local4 in interactive_words) { add(_local4, (area.width / 2), _local3); _local4.alpha = 0; _local4.update(_arg1); _local3 = (_local3 + LINE_HEIGHT); }; word_dark.alpha = 1; word_death.alpha = 1; word_struggle.alpha = 1; word_free.x = int(((area.width - word_free.area.width) / 2)); word_free.y = (POEM_BOTTOM + 15); word_beauty.x = word_free.x; word_beauty.y = word_free.area.bottom; word_dark.x = 13; word_dark.y = 63; word_struggle.x = 75; word_struggle.y = 63; word_shine.x = 88; word_shine.y = 50; word_swim.x = 88; word_swim.y = 62; add_line(Texts.txt(Texts.LINE_1), 3, word_death); add_line(Texts.txt(Texts.LINE_2), 1, word_fear); add_line(Texts.txt(Texts.LINE_3), 4, word_die); for each (_local5 in poem) { for each (_local6 in _local5) { if (_local6.fixed){ add(_local6); }; }; }; adjust_poem(); shake_timer.trigger(); visible = true; SoundManager.play_intro(); hyperlink = new Hyperlink(create_font(8, 0xFFFFFF), "[+]", "http://www.ludomancy.com/blog/downloads/"); hyperlink.visible = false; add(hyperlink); hyperlink.x = ((area.width - hyperlink.area.width) - 11); hyperlink.y = ((area.height - hyperlink.height) - 10); } public function get environment():Word{ return (get_word_for_type(ENVIRONMENT)); } private function must_be_forgotten(_arg1:Word):Boolean{ if ((((((((((((((((_arg1 == word_die)) || ((((((_arg1 == word_dark)) && (word_swim.is_available()))) && (word_swim.user_placed))))) || ((((_arg1 == word_death)) && (word_shine.is_available()))))) || ((((_arg1 == word_fear)) && (word_beauty.is_on_poem()))))) || ((((_arg1 == word_struggle)) && (word_free.is_on_poem()))))) || ((((_arg1 == word_shine)) && (word_free.is_on_poem()))))) || ((((_arg1 == word_swim)) && (word_beauty.is_on_poem()))))) || ((((_arg1 == word_shine)) && (word_beauty.is_on_poem()))))){ return (true); }; return (false); } public function adjust_poem():void{ if (Texts.selected == "en"){ adjust_poem_images(); } else { adjust_poem_text(); }; } public function on_word_arrived(_arg1:Word):void{ if ((((pending_exchange.length > 0)) && (!((pending_exchange.indexOf(_arg1) == -1))))){ exchange(pending_exchange[0], pending_exchange[1]); pending_exchange = []; }; } private function adjust_poem_images():void{ var _local6:Number; var _local7:int; var _local8:Word; var _local1:Number = 30; var _local2:int; var _local3 = 11; var _local4:Array = [0, 47, 38]; var _local5:int; while (_local5 != poem.length) { _local6 = _local1; _local2 = _local6; _local7 = 0; while (_local7 != poem[_local5].length) { _local8 = poem[_local5][_local7]; if (_local8.fixed){ _local8.x = _local2; _local2 = (_local2 + (_local8.area.width - _local4[_local5])); _local8.y = _local3; } else { _local8.x = _local2; _local2 = ((_local8 == word_free)) ? (_local6 - 7) : _local6; _local8.y = (_local3 - 1); }; _local8.starting_pos.x = _local8.x; _local8.starting_pos.y = _local8.y; _local7++; }; _local3 = (_local3 + LINE_HEIGHT); _local5++; }; } private function spawn_bubbles(_arg1:Timer):void{ var _local3:Bubble; var _local4:Number; var _local2:Number = ((environment == word_free)) ? 8 : 5; _arg1.tick(); if (_arg1.done){ _arg1.reset(); if (count(Bubble).length < _local2){ _local3 = new Bubble(); _local4 = Utils.rand(20, (area.width - 20)); add(_local3, _local4, (area.height + 10)); }; }; } public function get_word_type(_arg1:Word):int{ var _local3:int; var _local2:int; while (_local2 != poem.length) { _local3 = 0; while (_local3 != poem[_local2].length) { if (poem[_local2][_local3] == _arg1){ return (_local2); }; _local3++; }; _local2++; }; return (FREE); } public function exchange(_arg1:Word, _arg2:Word):void{ var _local6:int; var _local7:Point; if (_arg1 == _arg2){ return; }; SoundManager.play_change_words(); var _local3:Word = (_arg1.is_on_poem()) ? _arg2 : _arg1; var _local4:Word = (_arg1.is_on_poem()) ? _arg1 : _arg2; var _local5:int; while (_local5 != poem.length) { _local6 = 0; while (_local6 != poem[_local5].length) { if (poem[_local5][_local6] == _local4){ poem[_local5][_local6] = _local3; }; _local6++; }; _local5++; }; if (_local3 == word_free){ SoundManager.play_ending(); }; if (must_be_forgotten(_local4)){ _local4.fade_out(); } else { _local7 = new Point(((_local3.starting_pos.x + (_local3.area.width / 2)) - (_local4.area.width / 2)), ((_local3.starting_pos.y + (_local3.area.height / 2)) - (_local4.area.height / 2))); _local4.starting_pos.x = (_local4.x = _local7.x); _local4.starting_pos.y = (_local4.y = _local7.y); }; adjust_poem(); } public function beacon_completeness(_arg1:Boolean=false):Number{ var include_pulsating = _arg1; var complete:Array = filter(function (_arg1:Thing):Boolean{ return ((((((((_arg1 is Bubble)) && (((_arg1 as Bubble).original_enviro == Today.word_free)))) && ((_arg1 as Bubble).grown))) && (((!(include_pulsating)) || (!(((_arg1 as Bubble).stuck_to == null))))))); }); var pulse:Number = complete.length; return (Math.min(1, (pulse / (SHADOWS - 1)))); } private function update_epilogue():void{ var _local1:Word; for each (_local1 in interactive_words) { _local1.interactive = false; }; } public function is_on_poem(_arg1:Word):Boolean{ return (!((get_word_type(_arg1) == FREE))); } public function discovered_endings():int{ var _local2:Boolean; var _local1:int; for each (_local2 in endings) { if (_local2){ _local1++; }; }; return (_local1); } public function get action():Word{ return (get_word_for_type(ACTION)); } public function place_word(_arg1:Word, _arg2:Thing):void{ if (((((!((_arg2 == null))) && (!(_arg1.selected)))) && (!(_arg1.user_placed)))){ _arg1.x = (_arg2.x - (_arg1.area.width / 2)); if (Texts.selected == "en"){ _arg1.y = ((_arg2.area.top - _arg1.area.height) + 5); } else { _arg1.y = (_arg2.area.top - _arg1.area.height); }; if (_arg2 == she){ _arg1.y = (_arg1.y - 5); }; _arg1.fit_in(area); }; } override public function update(_arg1:Event):void{ var _local2:Word; super.update(_arg1); shake_timer.tick(); if (shake_timer.running){ y = Utils.rand(-1, 1); x = Utils.rand(-1, 1); } else { x = 0; y = 0; }; check_endings(); for each (_local2 in interactive_words) { if (((!(_local2.is_on_poem())) && (must_be_forgotten(_local2)))){ _local2.fade_out(); }; }; light_mask.visible = false; if (epilogue){ Today.she.visible = false; update_epilogue(); endgame_timer.tick(); if (endgame_timer.done){ hyperlink.visible = true; }; } else { if (environment == word_dark){ if (action == word_shine){ light_mask.visible = true; light_mask.x = she.x; light_mask.y = she.y; }; } else { if (environment == word_death){ } else { if (environment == word_free){ if (!word_beauty.is_available()){ word_beauty.alpha = beacon_completeness(); }; } else { if (environment == word_struggle){ if (word_swim.is_available()){ if (!word_swim.user_placed){ word_swim.visible = false; } else { word_swim.visible = true; }; }; word_free.alpha = freedom_timer.ratio; if (!word_free.user_placed){ place_word(word_free, she); }; if (!she.has_weight){ if (action == Today.word_shine){ spawn_bubbles(bubble_spawn_struggle_timer); }; if (she.velocity < 0){ freedom_timer.tick(); } else { word_free.alpha = 0; }; } else { freedom_timer.tick_back((Game.frame_time * 6)); }; }; }; }; }; }; } private function add_line(_arg1:String, _arg2:int, _arg3:Word):void{ var _local4:Array = []; var _local5:Array = _arg1.split("*"); if (_local5[0].length == 0){ _local4.push(_arg3); _local4.push(new Word(_local5[1], -1, _arg2)); } else { if (_local5[1].length == 0){ _local4.push(new Word(_local5[0], -1, _arg2)); _local4.push(_arg3); } else { _local4.push(new Word(_local5[0], -1, _arg2)); _local4.push(_arg3); _local4.push(new Word(StringUtil.trim(_local5[1]), -1, _arg2)); }; }; poem.push(_local4); } private function adjust_poem_text():void{ var _local6:int; var _local7:Word; var _local1:Number = new Word(Texts.txt(Texts.MYSELF), Today.ACTION, 0, 0).area.width; var _local2:Number = Math.floor(((area.width - _local1) / 3)); var _local3:int; var _local4 = 7; var _local5:int; while (_local5 != poem.length) { _local3 = _local2; _local6 = 0; while (_local6 != poem[_local5].length) { _local7 = poem[_local5][_local6]; _local7.reinterpret(); _local7.x = _local3; _local7.y = _local4; _local7.starting_pos.x = _local7.x; _local7.starting_pos.y = _local7.y; _local3 = (_local3 + _local7.area.width); _local6++; }; _local4 = (_local4 + LINE_HEIGHT); _local5++; }; } public function get_word_for_type(_arg1:int):Word{ var _local2:int; while (_local2 != poem[_arg1].length) { if (!poem[_arg1][_local2].fixed){ return (poem[_arg1][_local2]); }; _local2++; }; return (null); } public function get velocity():Number{ if (epilogue){ return (-1); }; return (she.velocity); } public function get filled():Word{ return (get_word_for_type(FILLED)); } private function add_multiple(_arg1:Class, _arg2:int, _arg3:Array=null):void{ var _local5:Thing; var _local4:int; while (_local4 != _arg2) { _local5 = new (_arg1); add(_local5); if (_arg3){ _arg3.push(_local5); }; _local4++; }; } public function ensure_multiple(_arg1:Class, _arg2:int):void{ var _local3:int = (_arg2 - count(_arg1, true).length); add_multiple(_arg1, _local3); } private function check_endings():void{ var _local2:Word; if (epilogue){ return; }; var _local1 = ""; if ((((she.y < -40)) && (boy.rescuing))){ epilogue = true; endings[ENDING_RESCUE] = true; _local1 = "The End"; _local2 = new Word(Texts.txt(Texts.UNTIL), -1, 0); } else { if (((boy.tired_of_waiting.done) && (!(boy.alive)))){ epilogue = true; endings[ENDING_ALONE] = true; _local1 = "The End"; _local2 = new Word(Texts.txt(Texts.MYSELF), -1, 2); }; }; if (_local1 != ""){ add(_local2); poem.push([_local2]); adjust_poem(); }; } public function get fears_visible():Boolean{ return ((((environment == word_fear)) && (!(word_dark.is_available())))); } } }//package
Section 82
//Today_font_asset (Today_font_asset) package { import mx.core.*; public class Today_font_asset extends FontAsset { } }//package
Section 83
//Whirlwind (Whirlwind) package { import flash.events.*; import moonlib2.*; import flash.display.*; import utils.*; public class Whirlwind extends Thing { private var speed:Number; private var dir:Number; private var rot_speed:Number; private static var img:Class = Whirlwind_img; private static var bitmap:BitmapData; public function Whirlwind(){ super(((bitmap == null)) ? bitmap = new img().bitmapData : bitmap); dir = (Utils.rand(-30, 30) / 100); speed = (Utils.rand(50, 150) / 100); z = 3; alpha = 0.3; visible = !(Today.main.epilogue); } override public function update(_arg1:Event):void{ super.update(_arg1); y = (y - (speed + Today.main.velocity)); x = (x + dir); destroy_if_shown(); if (y > (world.area.height + 40)){ destroy(); }; } } }//package
Section 84
//Whirlwind_img (Whirlwind_img) package { import mx.core.*; public class Whirlwind_img extends BitmapAsset { } }//package
Section 85
//Word (Word) package { import flash.text.*; import flash.events.*; import moonlib2.*; import flash.geom.*; public class Word extends Animated { private var destination_x:Number;// = 0 private var destination_y:Number;// = 0 private var def_width:Number; private var initial_rotation:Number;// = 0 private var hover_rotation:Number;// = 0 public var user_placed:Boolean;// = false private var fading:Boolean;// = false private var the_text:String; private var hovering_offset_y:Number;// = 0 private var fade_timer:Timer; private var initial_frame:int; private var font:TextFormat;// = null public var type:int; public var starting_pos:Point; private var hovered:Boolean;// = false private var destinating:Boolean;// = false public var fixed:Boolean; public var field:TextField; private static const ANIM_SPEED:Number = 3; private static var img_fixed:Class = Word_img_fixed; private static var img_moving:Class = Word_img_moving; public function Word(_arg1:String, _arg2:int, _arg3:int, _arg4:Number=-1){ starting_pos = new Point(); fade_timer = new Timer(1500); super(create_animation(_arg2), 0, 0); this.type = _arg2; this.the_text = _arg1; if (!is_img){ if (_arg2 == Today.ACTION){ font = Today.verb_font; } else { if (_arg2 == Today.FILLED){ font = Today.noun_font; } else { if (_arg2 == Today.ENVIRONMENT){ font = Today.adjective_font; } else { font = Today.fixed_font; }; }; }; }; this.fixed = (_arg2 == -1); solid = false; initial_frame = _arg3; interactive = !(fixed); if (is_img){ scaleX = (scaleY = (1 / 3)); this.def_width = (_arg4 / 3); if (_arg4 == -1){ this.def_width = (anim.strip.frameW / 3); }; if (fixed){ anim.setFrame((initial_frame * 2)); } else { anim.setFrame(int(_arg3)); }; } else { field = create_text(_arg1); addChild(field); }; z = (fixed) ? 19 : 20; } private function create_animation(_arg1:int):Animation{ if (!is_img){ return (null); }; if (_arg1 == -1){ return (new Animation(new img_fixed().bitmapData, 250, 50, 0, true)); }; return (new Animation(new img_moving().bitmapData, 125, 50, 0, true)); } public function is_only_word_of_its_type():Boolean{ var _local1:Word; for each (_local1 in sea.interactive_words) { if (((((!((_local1 == this))) && ((_local1.alpha == 1)))) && ((_local1.type == type)))){ return (false); }; }; return (true); } public function fade_out():void{ fading = true; fade_timer.ratio = (1 - alpha); } override public function get area():Rectangle{ var _local1:Rectangle; if (is_img){ _local1 = super.area; _local1.width = def_width; _local1.height = (44 / 3); return (_local1); }; return (new Rectangle(x, (y + 5), (field.textWidth + 3), (field.textHeight - 5))); } private function update_animation():void{ if (!destinating){ return; }; if (((selected) || ((Math.abs((y - destination_y)) < ANIM_SPEED)))){ destinating = false; return; }; var _local1:Point = direction_towards(destination_x, destination_y, ANIM_SPEED); x = (x + _local1.x); y = (y + _local1.y); } override protected function init(_arg1:Event):void{ super.init(_arg1); starting_pos.x = x; starting_pos.y = y; if (is_on_poem()){ visible = true; alpha = 1; }; reinterpret(); } public function stop_fade_out():void{ fading = false; y = starting_pos.y; } private function get is_img():Boolean{ return ((Texts.selected == "en")); } public function reinterpret():void{ if (!is_img){ if (((!(fixed)) && (!((field.text == the_text))))){ field.text = the_text; field.setTextFormat(font); field.cacheAsBitmap = true; }; }; } public function is_on_poem():Boolean{ return (sea.is_on_poem(this)); } public function get sea():Today{ return ((world as Today)); } override public function update(_arg1:Event):void{ super.update(_arg1); rotation = initial_rotation; if (fading){ if (alpha == 0){ fading = false; } else { fade_timer.tick(); alpha = Math.max(0, (1 - fade_timer.ratio)); }; }; fit_in(world.area); if (is_on_poem()){ visible = true; alpha = 1; rotation = 0; } else { if (((((((!(selected)) && (!(destinating)))) && (!(fixed)))) && (!(fading)))){ y = Math.max(Today.POEM_BOTTOM, y); starting_pos.y = y; }; update_animation(); }; if (fading){ if (is_img){ anim.setFrame(((initial_frame * 2) + 1)); } else { field.setTextFormat(Today.fixed_font); }; y = (y + 1); } else { if (fixed){ if (is_img){ anim.setFrame(initial_frame); }; } else { if (!interactive){ if (is_img){ anim.setFrame(((initial_frame * 2) + 1)); } else { field.setTextFormat(Today.fixed_font); }; } else { if (is_img){ anim.setFrame((initial_frame * 2)); } else { field.setTextFormat(font); }; }; }; }; hover_rotation = 0; if (hovering_offset_y != 0){ if (is_img){ anim.y = (anim.y - hovering_offset_y); } else { field.y = (field.y - hovering_offset_y); }; hovering_offset_y = 0; }; if (selected){ user_placed = true; z = 22; } else { if (((!((world.dragging == null))) && ((world.dragging is Word)))){ z = 21; if ((world.dragging as Word).is_over_interactive_word() == this){ hover_rotation = -12; if (hovering_offset_y == 0){ hovering_offset_y = (-(area.height) / 2); }; }; }; }; if (fixed){ z = 20; }; if (selected){ rotation = 0; }; rotation = (rotation + hover_rotation); if (is_img){ anim.y = (anim.y + hovering_offset_y); } else { field.y = (field.y + hovering_offset_y); }; x = int(x); y = int(y); } override public function on_drop():void{ if (new Rectangle(starting_pos.x, (starting_pos.y + 5), area.width, area.height).contains((stage.mouseX / world.scaleX), (stage.mouseY / world.scaleY))){ sea.adjust_poem(); return; }; var _local1:Word = is_over_interactive_word(); if ((((_local1 == null)) || ((_local1 == this)))){ if (is_on_poem()){ sea.adjust_poem(); } else { starting_pos.x = x; starting_pos.y = y; reinterpret(); }; } else { if (((is_on_poem()) || (_local1.is_on_poem()))){ sea.exchange(this, _local1); }; }; } override public function get interactive():Boolean{ var _local1:Word; if (((((((super.interactive) && ((alpha == 1)))) && (visible))) && (!(fixed)))){ if (is_only_word_of_its_type()){ return (false); }; if ((((world.dragging == null)) || (!((world.dragging is Word))))){ return (true); }; _local1 = (world.dragging as Word); return ((type == _local1.type)); }; return (false); } public function is_available():Boolean{ return ((alpha == 1)); } private function is_over_interactive_word():Word{ var mouse:Point; var me:Word; var mostOverlapping:Word; var biggestArea:Number; var i:int; var word_area:Number; var overlap:Rectangle; var amount:Number; mouse = new Point((stage.mouseX / world.scaleX), (stage.mouseY / world.scaleY)); me = this; var cols:Array = world.filter(function (_arg1:Thing):Boolean{ return ((((((((((((_arg1 is Word)) && (!((_arg1 == me))))) && (_arg1.interactive))) && ((_arg1 as Word).interactive))) && ((sea.get_word_type((_arg1 as Word)) == sea.get_word_type(me))))) && (_arg1.area.containsPoint(mouse)))); }); if (cols.length > 0){ return ((cols[0] as Word)); }; cols = world.filter(function (_arg1:Thing):Boolean{ return ((((((((_arg1 is Word)) && (!((_arg1 == me))))) && (_arg1.interactive))) && ((_arg1 as Word).interactive))); }); mostOverlapping = null; biggestArea = 0; i = 0; while (i != cols.length) { word_area = Math.min((area.width * area.height), (cols[i].area.width * cols[i].area.height)); overlap = area.intersection(cols[i].area); amount = (overlap.height * overlap.width); if ((((amount > (word_area / 2))) && ((amount > biggestArea)))){ mostOverlapping = cols[i]; biggestArea = amount; }; i = (i + 1); }; return (mostOverlapping); } public function animate_towards(_arg1:Number, _arg2:Number):void{ destinating = true; destination_x = _arg1; destination_y = _arg2; } public static function create_text(_arg1:String):TextField{ var _local2:TextField; _local2 = new TextField(); _local2.selectable = false; _local2.type = TextFieldType.DYNAMIC; _local2.autoSize = TextFieldAutoSize.LEFT; _local2.multiline = true; _local2.wordWrap = true; _local2.antiAliasType = AntiAliasType.ADVANCED; _local2.embedFonts = true; _local2.gridFitType = GridFitType.PIXEL; _local2.text = _arg1; _local2.htmlText.replace(_local2.text, _arg1); _local2.setTextFormat(Today.fixed_font); return (_local2); } } }//package
Section 86
//Word_img_fixed (Word_img_fixed) package { import mx.core.*; public class Word_img_fixed extends BitmapAsset { } }//package
Section 87
//Word_img_moving (Word_img_moving) package { import mx.core.*; public class Word_img_moving extends BitmapAsset { } }//package

Library Items

Symbol 1 FontUsed by:2
Symbol 2 EditableTextUses:1Used by:3
Symbol 3 MovieClip {moonlib2.Game_MyFontHolder} [MyFontHolder]Uses:2
Symbol 4 Bitmap {Background_img_dead}
Symbol 5 Bitmap {Preloader_img}
Symbol 6 BinaryData {Texts_text_file}
Symbol 7 Sound {SoundManager_music_data_dark} [SoundManager_music_data_dark]
Symbol 8 Sound {SoundManager_music_data_hostile} [SoundManager_music_data_hostile]
Symbol 9 Sound {SoundManager_music_data_happy} [SoundManager_music_data_happy]
Symbol 10 Sound {SoundManager_music_data_change} [SoundManager_music_data_change]
Symbol 11 Bitmap {She_img_weight_down}
Symbol 12 Bitmap {Tail_img}
Symbol 13 Bitmap {Shadow_img_shadow}
Symbol 14 Bitmap {Background_img_dark}
Symbol 15 Bitmap {Fish_img_light}
Symbol 16 Bitmap {Fish_img}
Symbol 17 Bitmap {Explosion_img}
Symbol 18 Bitmap {moonlib2.Expression_img}
Symbol 19 Bitmap {Floor_img}
Symbol 20 Bitmap {Whirlwind_img}
Symbol 21 Bitmap {Word_img_moving}
Symbol 22 Bitmap {Statue_img}
Symbol 23 Bitmap {Girl_img_drowning}
Symbol 24 Bitmap {Background_img_atlantis}
Symbol 25 Bitmap {Girl_img_swimmer}
Symbol 26 Bitmap {Word_img_fixed}
Symbol 27 Bitmap {Background_img_free}
Symbol 28 Bitmap {Background_img_fear}
Symbol 29 Bitmap {Girl_img}
Symbol 30 Bitmap {Darkness_img}
Symbol 31 Bitmap {Background_img_light}
Symbol 32 Font {Today_font_asset}
Symbol 33 Bitmap {Pirana_img_pirana}
Symbol 34 Bitmap {Bubble_img}
Symbol 35 Bitmap {She_img_weight_up}
Symbol 36 Bitmap {Boy_img}

Special Tags

FileAttributes (69)Timeline Frame 1Access network only, Metadata present, AS3.
SWFMetaData (77)Timeline Frame 1457 bytes "<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'><rdf:Description rdf:about='' xmlns ..."
ScriptLimits (65)Timeline Frame 1MaxRecursionDepth: 1000, ScriptTimeout: 60 seconds
ExportAssets (56)Timeline Frame 1Symbol 3 as "MyFontHolder"
ExportAssets (56)Timeline Frame 2Symbol 3 as "MyFontHolder"
ExportAssets (56)Timeline Frame 2Symbol 7 as "SoundManager_music_data_dark"
ExportAssets (56)Timeline Frame 2Symbol 8 as "SoundManager_music_data_hostile"
ExportAssets (56)Timeline Frame 2Symbol 9 as "SoundManager_music_data_happy"
ExportAssets (56)Timeline Frame 2Symbol 10 as "SoundManager_music_data_change"
SerialNumber (41)Timeline Frame 1

Labels

"Preloader"Frame 1
"Today"Frame 2




http://swfchan.com/17/81196/info.shtml
Created: 2/4 -2019 02:30:30 Last modified: 2/4 -2019 02:30:30 Server time: 27/04 -2024 09:45:58