User prompt
✅ Add a happy celebratory effect when all items are discovered also make an item counter like you have one out of 40 animals discovery. This will update every animal that added.
User prompt
make more parade animals 10 more assets
User prompt
Add a text reading type an animal name to spawn it
User prompt
make a Chihuahua asset with the same properties of the rest of the animals
User prompt
Omg I love it
User prompt
Apply the same logic as the cow and chicken to a bunch of assets that you’re gonna add
User prompt
make a clear button
User prompt
now do the same time but this time when he typed chicken out spawns the chicken asset
User prompt
When cow is typed the cow asset will take the place of the place holder asset
User prompt
make cow assets spawn when Cow is typing into the keyboard in the spawn button this click
User prompt
make a cow asset
User prompt
Make the spawn button out of the way of the keyboard
User prompt
Please fix the bug: 'Script error.' in or related to this line: 'var asset = self.attachAsset(self.assetId, {' Line Number: 21
User prompt
Put the letters I’m typing above the keyboard
Code edit (1 edits merged)
Please save this source code
User prompt
Generate the first version of the source code of my game: Type & Spawn: Animal Parade.
User prompt
Type & Spawn: Animal Parade
User prompt
No, make a game where you can type stuff for example, if I type cow, a cow assets will spawn in and it will roam around the bottom of the grassy field screen. There will be a list of 30 things that you can type put these 30 things in assets we will then build up from thatthen then add 100 in the next upd, then add 100 in the next update. But only add 30.
Initial prompt
What I mean by huge I mean we start off at 30 then we build up
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ // Animal/Object class var ParadeItem = Container.expand(function () { var self = Container.call(this); // Attach the asset for this item var asset = self.attachAsset(self.assetId, { anchorX: 0.5, anchorY: 1.0 // bottom center, so it "stands" on the ground }); // Movement pattern: set by type self.moveType = self.moveType || "walk"; self.speed = self.speed || 2 + Math.random() * 2; self.direction = self.direction || (Math.random() < 0.5 ? 1 : -1); // 1: right, -1: left // For "hop" and "fly" types self.hopTimer = 0; self.flyPhase = Math.random() * Math.PI * 2; // For "roll" types self.spin = 0; // For "wiggle" types self.wigglePhase = Math.random() * Math.PI * 2; // For "slide" types self.slideTimer = 0; // For "bounce" types self.bouncePhase = Math.random() * Math.PI * 2; // For "float" types self.floatPhase = Math.random() * Math.PI * 2; // For "crawl" types self.crawlPhase = Math.random() * Math.PI * 2; // For "zoom" types self.zoomTimer = 0; // For "spin" types self.spinSpeed = 0.01 + Math.random() * 0.02; // For "sway" types self.swayPhase = Math.random() * Math.PI * 2; // For "peek" types self.peekTimer = 0; self.isPeeking = false; // For "pop" types self.popTimer = 0; self.isPopped = false; // For "appear" types self.appearTimer = 0; self.hasAppeared = false; // For "jump" types self.jumpPhase = Math.random() * Math.PI * 2; // For "dash" types self.dashTimer = 0; // For "circle" types self.circlePhase = Math.random() * Math.PI * 2; // For "zigzag" types self.zigzagPhase = Math.random() * Math.PI * 2; // For "wave" types self.wavePhase = Math.random() * Math.PI * 2; // For "random" types self.randomTimer = 0; // For "pause" types self.pauseTimer = 0; self.isPaused = false; // For "hide" types self.hideTimer = 0; self.isHidden = false; // For "flip" types self.flipTimer = 0; self.isFlipped = false; // For "twirl" types self.twirlPhase = Math.random() * Math.PI * 2; // For "drift" types self.driftPhase = Math.random() * Math.PI * 2; // For "shake" types self.shakePhase = Math.random() * Math.PI * 2; // For "slideup" types self.slideupTimer = 0; // For "sprint" types self.sprintTimer = 0; // For "hover" types self.hoverPhase = Math.random() * Math.PI * 2; // For "bob" types self.bobPhase = Math.random() * Math.PI * 2; // For "sneak" types self.sneakPhase = Math.random() * Math.PI * 2; // For "stomp" types self.stompPhase = Math.random() * Math.PI * 2; // For "march" types self.marchPhase = Math.random() * Math.PI * 2; // For "slideleft" types self.slideleftTimer = 0; // For "slither" types self.slitherPhase = Math.random() * Math.PI * 2; // For "hopright" types self.hoprightTimer = 0; // For "hopleft" types self.hopleftTimer = 0; // For "jumpup" types self.jumpupPhase = Math.random() * Math.PI * 2; // For "jumpdown" types self.jumpdownPhase = Math.random() * Math.PI * 2; // For "rollright" types self.rollrightSpin = 0; // For "rollleft" types self.rollleftSpin = 0; // For "zoomright" types self.zoomrightTimer = 0; // For "zoomleft" types self.zoomleftTimer = 0; // For "bounceup" types self.bounceupPhase = Math.random() * Math.PI * 2; // For "bouncedown" types self.bouncedownPhase = Math.random() * Math.PI * 2; // For "floatup" types self.floatupPhase = Math.random() * Math.PI * 2; // For "floatdown" types self.floatdownPhase = Math.random() * Math.PI * 2; // For "peekright" types self.peekrightTimer = 0; // For "peekleft" types self.peekleftTimer = 0; // For "popright" types self.poprightTimer = 0; // For "popleft" types self.popleftTimer = 0; // For "appearleft" types self.appearleftTimer = 0; // For "appearright" types self.appearrightTimer = 0; // For "jumpright" types self.jumprightPhase = Math.random() * Math.PI * 2; // For "jumpleft" types self.jumpleftPhase = Math.random() * Math.PI * 2; // For "dashright" types self.dashrightTimer = 0; // For "dashleft" types self.dashleftTimer = 0; // For "circleright" types self.circlerightPhase = Math.random() * Math.PI * 2; // For "circleleft" types self.circleleftPhase = Math.random() * Math.PI * 2; // For "zigzagright" types self.zigzagrightPhase = Math.random() * Math.PI * 2; // For "zigzagleft" types self.zigzagleftPhase = Math.random() * Math.PI * 2; // For "waveright" types self.waverightPhase = Math.random() * Math.PI * 2; // For "waveleft" types self.waveleftPhase = Math.random() * Math.PI * 2; // For "randomright" types self.randomrightTimer = 0; // For "randomleft" types self.randomleftTimer = 0; // For "pauseright" types self.pauserightTimer = 0; self.isPausedRight = false; // For "pauseleft" types self.pauseleftTimer = 0; self.isPausedLeft = false; // For "hideright" types self.hiderightTimer = 0; self.isHiddenRight = false; // For "hideleft" types self.hideleftTimer = 0; self.isHiddenLeft = false; // For "flipright" types self.fliprightTimer = 0; self.isFlippedRight = false; // For "flipleft" types self.flipleftTimer = 0; self.isFlippedLeft = false; // For "twirlright" types self.twirlrightPhase = Math.random() * Math.PI * 2; // For "twirlleft" types self.twirlleftPhase = Math.random() * Math.PI * 2; // For "driftright" types self.driftrightPhase = Math.random() * Math.PI * 2; // For "driftleft" types self.driftleftPhase = Math.random() * Math.PI * 2; // For "shakeright" types self.shakerightPhase = Math.random() * Math.PI * 2; // For "shakeleft" types self.shakeleftPhase = Math.random() * Math.PI * 2; // For "slideupright" types self.slideuprightTimer = 0; // For "slideupleft" types self.slideupleftTimer = 0; // For "sprintright" types self.sprintrightTimer = 0; // For "sprintleft" types self.sprintleftTimer = 0; // For "hoverright" types self.hoverrightPhase = Math.random() * Math.PI * 2; // For "hoverleft" types self.hoverleftPhase = Math.random() * Math.PI * 2; // For "bobright" types self.bobrightPhase = Math.random() * Math.PI * 2; // For "bobleft" types self.bobleftPhase = Math.random() * Math.PI * 2; // For "sneakright" types self.sneakrightPhase = Math.random() * Math.PI * 2; // For "sneakleft" types self.sneakleftPhase = Math.random() * Math.PI * 2; // For "stompright" types self.stomprightPhase = Math.random() * Math.PI * 2; // For "stompleft" types self.stompleftPhase = Math.random() * Math.PI * 2; // For "marchright" types self.marchrightPhase = Math.random() * Math.PI * 2; // For "marchleft" types self.marchleftPhase = Math.random() * Math.PI * 2; // For "slideleftright" types self.slideleftrightTimer = 0; // For "slitherleftright" types self.slitherleftrightPhase = Math.random() * Math.PI * 2; // For "hoprightright" types self.hoprightrightTimer = 0; // For "hopleftleft" types self.hopleftleftTimer = 0; // For "jumpupright" types self.jumpuprightPhase = Math.random() * Math.PI * 2; // For "jumpupleft" types self.jumpupleftPhase = Math.random() * Math.PI * 2; // For "jumpdownright" types self.jumpdownrightPhase = Math.random() * Math.PI * 2; // For "jumpdownleft" types self.jumpdownleftPhase = Math.random() * Math.PI * 2; // For "rollrightright" types self.rollrightrightSpin = 0; // For "rollleftleft" types self.rollleftleftSpin = 0; // For "zoomrightright" types self.zoomrightrightTimer = 0; // For "zoomleftleft" types self.zoomleftleftTimer = 0; // For "bounceupright" types self.bounceuprightPhase = Math.random() * Math.PI * 2; // For "bounceupleft" types self.bounceupleftPhase = Math.random() * Math.PI * 2; // For "bouncedownright" types self.bouncedownrightPhase = Math.random() * Math.PI * 2; // For "bouncedownleft" types self.bouncedownleftPhase = Math.random() * Math.PI * 2; // For "floatupright" types self.floatuprightPhase = Math.random() * Math.PI * 2; // For "floatupleft" types self.floatupleftPhase = Math.random() * Math.PI * 2; // For "floatdownright" types self.floatdownrightPhase = Math.random() * Math.PI * 2; // For "floatdownleft" types self.floatdownleftPhase = Math.random() * Math.PI * 2; // For "peekrightright" types self.peekrightrightTimer = 0; // For "peekleftleft" types self.peekleftleftTimer = 0; // For "poprightright" types self.poprightrightTimer = 0; // For "popleftleft" types self.popleftleftTimer = 0; // For "appearleftright" types self.appearleftrightTimer = 0; // For "appearrightleft" types self.appearrightleftTimer = 0; // For "jumprightright" types self.jumprightrightPhase = Math.random() * Math.PI * 2; // For "jumpleftleft" types self.jumpleftleftPhase = Math.random() * Math.PI * 2; // For "dashrightright" types self.dashrightrightTimer = 0; // For "dashleftleft" types self.dashleftleftTimer = 0; // For "circlerightright" types self.circlerightrightPhase = Math.random() * Math.PI * 2; // For "circleleftleft" types self.circleleftleftPhase = Math.random() * Math.PI * 2; // For "zigzagrightright" types self.zigzagrightrightPhase = Math.random() * Math.PI * 2; // For "zigzagleftleft" types self.zigzagleftleftPhase = Math.random() * Math.PI * 2; // For "waverightright" types self.waverightrightPhase = Math.random() * Math.PI * 2; // For "waveleftleft" types self.waveleftleftPhase = Math.random() * Math.PI * 2; // For "randomrightright" types self.randomrightrightTimer = 0; // For "randomleftleft" types self.randomleftleftTimer = 0; // For "pauserightright" types self.pauserightrightTimer = 0; self.isPausedRightRight = false; // For "pauseleftleft" types self.pauseleftleftTimer = 0; self.isPausedLeftLeft = false; // For "hiderightright" types self.hiderightrightTimer = 0; self.isHiddenRightRight = false; // For "hideleftleft" types self.hideleftleftTimer = 0; self.isHiddenLeftLeft = false; // For "fliprightright" types self.fliprightrightTimer = 0; self.isFlippedRightRight = false; // For "flipleftleft" types self.flipleftleftTimer = 0; self.isFlippedLeftLeft = false; // For "twirlrightright" types self.twirlrightrightPhase = Math.random() * Math.PI * 2; // For "twirlleftleft" types self.twirlleftleftPhase = Math.random() * Math.PI * 2; // For "driftrightright" types self.driftrightrightPhase = Math.random() * Math.PI * 2; // For "driftleftleft" types self.driftleftleftPhase = Math.random() * Math.PI * 2; // For "shakerightright" types self.shakerightrightPhase = Math.random() * Math.PI * 2; // For "shakeleftleft" types self.shakeleftleftPhase = Math.random() * Math.PI * 2; // For "slideupleftright" types self.slideupleftrightTimer = 0; // For "slideuprightleft" types self.slideuprightleftTimer = 0; // For "sprintrightright" types self.sprintrightrightTimer = 0; // For "sprintleftleft" types self.sprintleftleftTimer = 0; // For "hoverrightright" types self.hoverrightrightPhase = Math.random() * Math.PI * 2; // For "hoverleftleft" types self.hoverleftleftPhase = Math.random() * Math.PI * 2; // For "bobrightright" types self.bobrightrightPhase = Math.random() * Math.PI * 2; // For "bobleftleft" types self.bobleftleftPhase = Math.random() * Math.PI * 2; // For "sneakrightright" types self.sneakrightrightPhase = Math.random() * Math.PI * 2; // For "sneakleftleft" types self.sneakleftleftPhase = Math.random() * Math.PI * 2; // For "stomprightright" types self.stomprightrightPhase = Math.random() * Math.PI * 2; // For "stompleftleft" types self.stompleftleftPhase = Math.random() * Math.PI * 2; // For "marchrightright" types self.marchrightrightPhase = Math.random() * Math.PI * 2; // For "marchleftleft" types self.marchleftleftPhase = Math.random() * Math.PI * 2; // For "slideleftrightright" types self.slideleftrightrightTimer = 0; // For "slitherleftrightright" types self.slitherleftrightrightPhase = Math.random() * Math.PI * 2; // For "hoprightrightright" types self.hoprightrightrightTimer = 0; // For "hopleftleftleft" types self.hopleftleftleftTimer = 0; // For "jumpuprightright" types self.jumpuprightrightPhase = Math.random() * Math.PI * 2; // For "jumpupleftleft" types self.jumpupleftleftPhase = Math.random() * Math.PI * 2; // For "jumpdownrightright" types self.jumpdownrightrightPhase = Math.random() * Math.PI * 2; // For "jumpdownleftleft" types self.jumpdownleftleftPhase = Math.random() * Math.PI * 2; // For "rollrightrightright" types self.rollrightrightrightSpin = 0; // For "rollleftleftleft" types self.rollleftleftleftSpin = 0; // For "zoomrightrightright" types self.zoomrightrightrightTimer = 0; // For "zoomleftleftleft" types self.zoomleftleftleftTimer = 0; // For "bounceuprightright" types self.bounceuprightrightPhase = Math.random() * Math.PI * 2; // For "bounceupleftleft" types self.bounceupleftleftPhase = Math.random() * Math.PI * 2; // For "bouncedownrightright" types self.bouncedownrightrightPhase = Math.random() * Math.PI * 2; // For "bouncedownleftleft" types self.bouncedownleftleftPhase = Math.random() * Math.PI * 2; // For "floatuprightright" types self.floatuprightrightPhase = Math.random() * Math.PI * 2; // For "floatupleftleft" types self.floatupleftleftPhase = Math.random() * Math.PI * 2; // For "floatdownrightright" types self.floatdownrightrightPhase = Math.random() * Math.PI * 2; // For "floatdownleftleft" types self.floatdownleftleftPhase = Math.random() * Math.PI * 2; // For "peekrightrightright" types self.peekrightrightrightTimer = 0; // For "peekleftleftleft" types self.peekleftleftleftTimer = 0; // For "poprightrightright" types self.poprightrightrightTimer = 0; // For "popleftleftleft" types self.popleftleftleftTimer = 0; // For "appearleftrightright" types self.appearleftrightrightTimer = 0; // For "appearrightleftleft" types self.appearrightleftleftTimer = 0; // For "jumprightrightright" types self.jumprightrightrightPhase = Math.random() * Math.PI * 2; // For "jumpleftleftleft" types self.jumpleftleftleftPhase = Math.random() * Math.PI * 2; // For "dashrightrightright" types self.dashrightrightrightTimer = 0; // For "dashleftleftleft" types self.dashleftleftleftTimer = 0; // For "circlerightrightright" types self.circlerightrightrightPhase = Math.random() * Math.PI * 2; // For "circleleftleftleft" types self.circleleftleftleftPhase = Math.random() * Math.PI * 2; // For "zigzagrightrightright" types self.zigzagrightrightrightPhase = Math.random() * Math.PI * 2; // For "zigzagleftleftleft" types self.zigzagleftleftleftPhase = Math.random() * Math.PI * 2; // For "waverightrightright" types self.waverightrightrightPhase = Math.random() * Math.PI * 2; // For "waveleftleftleft" types self.waveleftleftleftPhase = Math.random() * Math.PI * 2; // For "randomrightrightright" types self.randomrightrightrightTimer = 0; // For "randomleftleftleft" types self.randomleftleftleftTimer = 0; // For "pauserightrightright" types self.pauserightrightrightTimer = 0; self.isPausedRightRightRight = false; // For "pauseleftleftleft" types self.pauseleftleftleftTimer = 0; self.isPausedLeftLeftLeft = false; // For "hiderightrightright" types self.hiderightrightrightTimer = 0; self.isHiddenRightRightRight = false; // For "hideleftleftleft" types self.hideleftleftleftTimer = 0; self.isHiddenLeftLeftLeft = false; // For "fliprightrightright" types self.fliprightrightrightTimer = 0; self.isFlippedRightRightRight = false; // For "flipleftleftleft" types self.flipleftleftleftTimer = 0; self.isFlippedLeftLeftLeft = false; // For "twirlrightrightright" types self.twirlrightrightrightPhase = Math.random() * Math.PI * 2; // For "twirlleftleftleft" types self.twirlleftleftleftPhase = Math.random() * Math.PI * 2; // For "driftrightrightright" types self.driftrightrightrightPhase = Math.random() * Math.PI * 2; // For "driftleftleftleft" types self.driftleftleftleftPhase = Math.random() * Math.PI * 2; // For "shakerightrightright" types self.shakerightrightrightPhase = Math.random() * Math.PI * 2; // For "shakeleftleftleft" types self.shakeleftleftleftPhase = Math.random() * Math.PI * 2; // For "slideupleftrightright" types self.slideupleftrightrightTimer = 0; // For "slideuprightleftleft" types self.slideuprightleftleftTimer = 0; // For "sprintrightrightright" types self.sprintrightrightrightTimer = 0; // For "sprintleftleftleft" types self.sprintleftleftleftTimer = 0; // For "hoverrightrightright" types self.hoverrightrightrightPhase = Math.random() * Math.PI * 2; // For "hoverleftleftleft" types self.hoverleftleftleftPhase = Math.random() * Math.PI * 2; // For "bobrightrightright" types self.bobrightrightrightPhase = Math.random() * Math.PI * 2; // For "bobleftleftleft" types self.bobleftleftleftPhase = Math.random() * Math.PI * 2; // For "sneakrightrightright" types self.sneakrightrightrightPhase = Math.random() * Math.PI * 2; // For "sneakleftleftleft" types self.sneakleftleftleftPhase = Math.random() * Math.PI * 2; // For "stomprightrightright" types self.stomprightrightrightPhase = Math.random() * Math.PI * 2; // For "stompleftleftleft" types self.stompleftleftleftPhase = Math.random() * Math.PI * 2; // For "marchrightrightright" types self.marchrightrightrightPhase = Math.random() * Math.PI * 2; // For "marchleftleftleft" types self.marchleftleftleftPhase = Math.random() * Math.PI * 2; // For "slideleftrightrightright" types self.slideleftrightrightrightTimer = 0; // For "slitherleftrightrightright" types self.slitherleftrightrightrightPhase = Math.random() * Math.PI * 2; // For "hoprightrightrightright" types self.hoprightrightrightrightTimer = 0; // For "hopleftleftleftleft" types self.hopleftleftleftleftTimer = 0; // For "jumpuprightrightright" types self.jumpuprightrightrightPhase = Math.random() * Math.PI * 2; // For "jumpupleftleftleft" types self.jumpupleftleftleftPhase = Math.random() * Math.PI * 2; // For "jumpdownrightrightright" types self.jumpdownrightrightrightPhase = Math.random() * Math.PI * 2; // For "jumpdownleftleftleft" types self.jumpdownleftleftleftPhase = Math.random() * Math.PI * 2; // For "rollrightrightrightright" types self.rollrightrightrightrightSpin = 0; // For "rollleftleftleftleft" types self.rollleftleftleftleftSpin = 0; // For "zoomrightrightrightright" types self.zoomrightrightrightrightTimer = 0; // For "zoomleftleftleftleft" types self.zoomleftleftleftleftTimer = 0; // For "bounceuprightrightright" types self.bounceuprightrightrightPhase = Math.random() * Math.PI * 2; // For "bounceupleftleftleft" types self.bounceupleftleftleftPhase = Math.random() * Math.PI * 2; // For "bouncedownrightrightright" types self.bouncedownrightrightrightPhase = Math.random() * Math.PI * 2; // For "bouncedownleftleftleft" types self.bouncedownleftleftleftPhase = Math.random() * Math.PI * 2; // For "floatuprightrightright" types self.floatuprightrightrightPhase = Math.random() * Math.PI * 2; // For "floatupleftleftleft" types self.floatupleftleftleftPhase = Math.random() * Math.PI * 2; // For "floatdownrightrightright" types self.floatdownrightrightrightPhase = Math.random() * Math.PI * 2; // For "floatdownleftleftleft" types self.floatdownleftleftleftPhase = Math.random() * Math.PI * 2; // For "peekrightrightrightright" types self.peekrightrightrightrightTimer = 0; // For "peekleftleftleftleft" types self.peekleftleftleftleftTimer = 0; // For "poprightrightrightright" types self.poprightrightrightrightTimer = 0; // For "popleftleftleftleft" types self.popleftleftleftleftTimer = 0; // For "appearleftrightrightright" types self.appearleftrightrightrightTimer = 0; // For "appearrightleftleftleft" types self.appearrightleftleftleftTimer = 0; // For "jumprightrightrightright" types self.jumprightrightrightrightPhase = Math.random() * Math.PI * 2; // For "jumpleftleftleftleft" types self.jumpleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "dashrightrightrightright" types self.dashrightrightrightrightTimer = 0; // For "dashleftleftleftleft" types self.dashleftleftleftleftTimer = 0; // For "circlerightrightrightright" types self.circlerightrightrightrightPhase = Math.random() * Math.PI * 2; // For "circleleftleftleftleft" types self.circleleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "zigzagrightrightrightright" types self.zigzagrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "zigzagleftleftleftleft" types self.zigzagleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "waverightrightrightright" types self.waverightrightrightrightPhase = Math.random() * Math.PI * 2; // For "waveleftleftleftleft" types self.waveleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "randomrightrightrightright" types self.randomrightrightrightrightTimer = 0; // For "randomleftleftleftleft" types self.randomleftleftleftleftTimer = 0; // For "pauserightrightrightright" types self.pauserightrightrightrightTimer = 0; self.isPausedRightRightRightRight = false; // For "pauseleftleftleftleft" types self.pauseleftleftleftleftTimer = 0; self.isPausedLeftLeftLeftLeft = false; // For "hiderightrightrightright" types self.hiderightrightrightrightTimer = 0; self.isHiddenRightRightRightRight = false; // For "hideleftleftleftleft" types self.hideleftleftleftleftTimer = 0; self.isHiddenLeftLeftLeftLeft = false; // For "fliprightrightrightright" types self.fliprightrightrightrightTimer = 0; self.isFlippedRightRightRightRight = false; // For "flipleftleftleftleft" types self.flipleftleftleftleftTimer = 0; self.isFlippedLeftLeftLeftLeft = false; // For "twirlrightrightrightright" types self.twirlrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "twirlleftleftleftleft" types self.twirlleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "driftrightrightrightright" types self.driftrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "driftleftleftleftleft" types self.driftleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "shakerightrightrightright" types self.shakerightrightrightrightPhase = Math.random() * Math.PI * 2; // For "shakeleftleftleftleft" types self.shakeleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "slideupleftrightrightright" types self.slideupleftrightrightrightTimer = 0; // For "slideuprightleftleftleft" types self.slideuprightleftleftleftTimer = 0; // For "sprintrightrightrightright" types self.sprintrightrightrightrightTimer = 0; // For "sprintleftleftleftleft" types self.sprintleftleftleftleftTimer = 0; // For "hoverrightrightrightright" types self.hoverrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "hoverleftleftleftleft" types self.hoverleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "bobrightrightrightright" types self.bobrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "bobleftleftleftleft" types self.bobleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "sneakrightrightrightright" types self.sneakrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "sneakleftleftleftleft" types self.sneakleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "stomprightrightrightright" types self.stomprightrightrightrightPhase = Math.random() * Math.PI * 2; // For "stompleftleftleftleft" types self.stompleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "marchrightrightrightright" types self.marchrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "marchleftleftleftleft" types self.marchleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "slideleftrightrightrightright" types self.slideleftrightrightrightrightTimer = 0; // For "slitherleftrightrightrightright" types self.slitherleftrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "hoprightrightrightrightright" types self.hoprightrightrightrightrightTimer = 0; // For "hopleftleftleftleftleft" types self.hopleftleftleftleftleftTimer = 0; // For "jumpuprightrightrightright" types self.jumpuprightrightrightrightPhase = Math.random() * Math.PI * 2; // For "jumpupleftleftleftleft" types self.jumpupleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "jumpdownrightrightrightright" types self.jumpdownrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "jumpdownleftleftleftleft" types self.jumpdownleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "rollrightrightrightrightright" types self.rollrightrightrightrightrightSpin = 0; // For "rollleftleftleftleftleft" types self.rollleftleftleftleftleftSpin = 0; // For "zoomrightrightrightrightright" types self.zoomrightrightrightrightrightTimer = 0; // For "zoomleftleftleftleftleft" types self.zoomleftleftleftleftleftTimer = 0; // For "bounceuprightrightrightright" types self.bounceuprightrightrightrightPhase = Math.random() * Math.PI * 2; // For "bounceupleftleftleftleft" types self.bounceupleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "bouncedownrightrightrightright" types self.bouncedownrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "bouncedownleftleftleftleft" types self.bouncedownleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "floatuprightrightrightright" types self.floatuprightrightrightrightPhase = Math.random() * Math.PI * 2; // For "floatupleftleftleftleft" types self.floatupleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "floatdownrightrightrightright" types self.floatdownrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "floatdownleftleftleftleft" types self.floatdownleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "peekrightrightrightrightright" types self.peekrightrightrightrightrightTimer = 0; // For "peekleftleftleftleftleft" types self.peekleftleftleftleftleftTimer = 0; // For "poprightrightrightrightright" types self.poprightrightrightrightrightTimer = 0; // For "popleftleftleftleftleft" types self.popleftleftleftleftleftTimer = 0; // For "appearleftrightrightrightright" types self.appearleftrightrightrightrightTimer = 0; // For "appearrightleftleftleftleft" types self.appearrightleftleftleftleftTimer = 0; // For "jumprightrightrightrightright" types self.jumprightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "jumpleftleftleftleftleft" types self.jumpleftleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "dashrightrightrightrightright" types self.dashrightrightrightrightrightTimer = 0; // For "dashleftleftleftleftleft" types self.dashleftleftleftleftleftTimer = 0; // For "circlerightrightrightrightright" types self.circlerightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "circleleftleftleftleftleft" types self.circleleftleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "zigzagrightrightrightrightright" types self.zigzagrightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "zigzagleftleftleftleftleft" types self.zigzagleftleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "waverightrightrightrightright" types self.waverightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "waveleftleftleftleftleft" types self.waveleftleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "randomrightrightrightrightright" types self.randomrightrightrightrightrightTimer = 0; // For "randomleftleftleftleftleft" types self.randomleftleftleftleftleftTimer = 0; // For "pauserightrightrightrightright" types self.pauserightrightrightrightrightTimer = 0; self.isPausedRightRightRightRightRight = false; // For "pauseleftleftleftleftleft" types self.pauseleftleftleftleftleftTimer = 0; self.isPausedLeftLeftLeftLeftLeft = false; // For "hiderightrightrightrightright" types self.hiderightrightrightrightrightTimer = 0; self.isHiddenRightRightRightRightRight = false; // For "hideleftleftleftleftleft" types self.hideleftleftleftleftleftTimer = 0; self.isHiddenLeftLeftLeftLeftLeft = false; // For "fliprightrightrightrightright" types self.fliprightrightrightrightrightTimer = 0; self.isFlippedRightRightRightRightRight = false; // For "flipleftleftleftleftleft" types self.flipleftleftleftleftleftTimer = 0; self.isFlippedLeftLeftLeftLeftLeft = false; // For "twirlrightrightrightrightright" types self.twirlrightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "twirlleftleftleftleftleft" types self.twirlleftleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "driftrightrightrightrightright" types self.driftrightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "driftleftleftleftleftleft" types self.driftleftleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "shakerightrightrightrightright" types self.shakerightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "shakeleftleftleftleftleft" types self.shakeleftleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "slideupleftrightrightrightright" types self.slideupleftrightrightrightrightTimer = 0; // For "slideuprightleftleftleftleft" types self.slideuprightleftleftleftleftTimer = 0; // For "sprintrightrightrightrightright" types self.sprintrightrightrightrightrightTimer = 0; // For "sprintleftleftleftleftleft" types self.sprintleftleftleftleftleftTimer = 0; // For "hoverrightrightrightrightright" types self.hoverrightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "hoverleftleftleftleftleft" types self.hoverleftleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "bobrightrightrightrightright" types self.bobrightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "bobleftleftleftleftleft" types self.bobleftleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "sneakrightrightrightrightright" types self.sneakrightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "sneakleftleftleftleftleft" types self.sneakleftleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "stomprightrightrightrightright" types self.stomprightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "stompleftleftleftleftleft" types self.stompleftleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "marchrightrightrightrightright" types self.marchrightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "marchleftleftleftleftleft" types self.marchleftleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "slideleftrightrightrightrightright" types self.slideleftrightrightrightrightrightTimer = 0; // For "slitherleftrightrightrightrightright" types self.slitherleftrightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "hoprightrightrightrightrightright" types self.hoprightrightrightrightrightrightTimer = 0; // For "hopleftleftleftleftleftleft" types self.hopleftleftleftleftleftleftTimer = 0; // For "jumpuprightrightrightrightright" types self.jumpuprightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "jumpupleftleftleftleftleft" types self.jumpupleftleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "jumpdownrightrightrightrightright" types self.jumpdownrightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "jumpdownleftleftleftleftleft" types self.jumpdownleftleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "rollrightrightrightrightrightright" types self.rollrightrightrightrightrightrightSpin = 0; // For "rollleftleftleftleftleftleft" types self.rollleftleftleftleftleftleftSpin = 0; // For "zoomrightrightrightrightrightright" types self.zoomrightrightrightrightrightrightTimer = 0; // For "zoomleftleftleftleftleftleft" types self.zoomleftleftleftleftleftleftTimer = 0; // For "bounceuprightrightrightrightright" types self.bounceuprightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "bounceupleftleftleftleftleft" types self.bounceupleftleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "bouncedownrightrightrightrightright" types self.bouncedownrightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "bouncedownleftleftleftleftleft" types self.bouncedownleftleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "floatuprightrightrightrightright" types self.floatuprightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "floatupleftleftleftleftleft" types self.floatupleftleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "floatdownrightrightrightrightright" types self.floatdownrightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "floatdownleftleftleftleftleft" types self.floatdownleftleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "peekrightrightrightrightrightright" types self.peekrightrightrightrightrightrightTimer = 0; // For "peekleftleftleftleftleftleft" types self.peekleftleftleftleftleftleftTimer = 0; // For "poprightrightrightrightrightright" types self.poprightrightrightrightrightrightTimer = 0; // For "popleftleftleftleftleftleft" types self.popleftleftleftleftleftleftTimer = 0; // For "appearleftrightrightrightrightright" types self.appearleftrightrightrightrightrightTimer = 0; // For "appearrightleftleftleftleftleft" types self.appearrightleftleftleftleftleftTimer = 0; // For "jumprightrightrightrightrightright" types self.jumprightrightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "jumpleftleftleftleftleftleft" types self.jumpleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "dashrightrightrightrightrightright" types self.dashrightrightrightrightrightrightTimer = 0; // For "dashleftleftleftleftleftleft" types self.dashleftleftleftleftleftleftTimer = 0; // For "circlerightrightrightrightrightright" types self.circlerightrightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "circleleftleftleftleftleftleft" types self.circleleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "zigzagrightrightrightrightrightright" types self.zigzagrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "zigzagleftleftleftleftleftleft" types self.zigzagleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "waverightrightrightrightrightright" types self.waverightrightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "waveleftleftleftleftleftleft" types self.waveleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "randomrightrightrightrightrightright" types self.randomrightrightrightrightrightrightTimer = 0; // For "randomleftleftleftleftleftleft" types self.randomleftleftleftleftleftleftTimer = 0; // For "pauserightrightrightrightrightright" types self.pauserightrightrightrightrightrightTimer = 0; self.isPausedRightRightRightRightRightRight = false; // For "pauseleftleftleftleftleftleft" types self.pauseleftleftleftleftleftleftTimer = 0; self.isPausedLeftLeftLeftLeftLeftLeft = false; // For "hiderightrightrightrightrightright" types self.hiderightrightrightrightrightrightTimer = 0; self.isHiddenRightRightRightRightRightRight = false; // For "hideleftleftleftleftleftleft" types self.hideleftleftleftleftleftleftTimer = 0; self.isHiddenLeftLeftLeftLeftLeftLeft = false; // For "fliprightrightrightrightrightright" types self.fliprightrightrightrightrightrightTimer = 0; self.isFlippedRightRightRightRightRightRight = false; // For "flipleftleftleftleftleftleft" types self.flipleftleftleftleftleftleftTimer = 0; self.isFlippedLeftLeftLeftLeftLeftLeft = false; // For "twirlrightrightrightrightrightright" types self.twirlrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "twirlleftleftleftleftleftleft" types self.twirlleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "driftrightrightrightrightrightright" types self.driftrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "driftleftleftleftleftleftleft" types self.driftleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "shakerightrightrightrightrightright" types self.shakerightrightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "shakeleftleftleftleftleftleft" types self.shakeleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "slideupleftrightrightrightrightright" types self.slideupleftrightrightrightrightrightTimer = 0; // For "slideuprightleftleftleftleftleft" types self.slideuprightleftleftleftleftleftTimer = 0; // For "sprintrightrightrightrightrightright" types self.sprintrightrightrightrightrightrightTimer = 0; // For "sprintleftleftleftleftleftleft" types self.sprintleftleftleftleftleftleftTimer = 0; // For "hoverrightrightrightrightrightright" types self.hoverrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "hoverleftleftleftleftleftleft" types self.hoverleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "bobrightrightrightrightrightright" types self.bobrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "bobleftleftleftleftleftleft" types self.bobleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "sneakrightrightrightrightrightright" types self.sneakrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "sneakleftleftleftleftleftleft" types self.sneakleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "stomprightrightrightrightrightright" types self.stomprightrightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "stompleftleftleftleftleftleft" types self.stompleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "marchrightrightrightrightrightright" types self.marchrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "marchleftleftleftleftleftleft" types self.marchleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "slideleftrightrightrightrightrightright" types self.slideleftrightrightrightrightrightrightTimer = 0; // For "slitherleftrightrightrightrightrightright" types self.slitherleftrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "hoprightrightrightrightrightrightright" types self.hoprightrightrightrightrightrightrightTimer = 0; // For "hopleftleftleftleftleftleftleft" types self.hopleftleftleftleftleftleftleftTimer = 0; // For "jumpuprightrightrightrightrightright" types self.jumpuprightrightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "jumpupleftleftleftleftleftleft" types self.jumpupleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "jumpdownrightrightrightrightrightright" types self.jumpdownrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "jumpdownleftleftleftleftleftleft" types self.jumpdownleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "rollrightrightrightrightrightrightright" types self.rollrightrightrightrightrightrightrightSpin = 0; // For "rollleftleftleftleftleftleftleft" types self.rollleftleftleftleftleftleftleftSpin = 0; // For "zoomrightrightrightrightrightrightright" types self.zoomrightrightrightrightrightrightrightTimer = 0; // For "zoomleftleftleftleftleftleftleft" types self.zoomleftleftleftleftleftleftleftTimer = 0; // For "bounceuprightrightrightrightrightright" types self.bounceuprightrightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "bounceupleftleftleftleftleftleft" types self.bounceupleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "bouncedownrightrightrightrightrightright" types self.bouncedownrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "bouncedownleftleftleftleftleftleft" types self.bouncedownleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "floatuprightrightrightrightrightright" types self.floatuprightrightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "floatupleftleftleftleftleftleft" types self.floatupleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "floatdownrightrightrightrightrightright" types self.floatdownrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "floatdownleftleftleftleftleftleft" types self.floatdownleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "peekrightrightrightrightrightrightright" types self.peekrightrightrightrightrightrightrightTimer = 0; // For "peekleftleftleftleftleftleftleft" types self.peekleftleftleftleftleftleftleftTimer = 0; // For "poprightrightrightrightrightrightright" types self.poprightrightrightrightrightrightrightTimer = 0; // For "popleftleftleftleftleftleftleft" types self.popleftleftleftleftleftleftleftTimer = 0; // For "appearleftrightrightrightrightrightright" types self.appearleftrightrightrightrightrightrightTimer = 0; // For "appearrightleftleftleftleftleftleft" types self.appearrightleftleftleftleftleftleftTimer = 0; // For "jumprightrightrightrightrightrightright" types self.jumprightrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "jumpleftleftleftleftleftleftleft" types self.jumpleftleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "dashrightrightrightrightrightrightright" types self.dashrightrightrightrightrightrightrightTimer = 0; // For "dashleftleftleftleftleftleftleft" types self.dashleftleftleftleftleftleftleftTimer = 0; // For "circlerightrightrightrightrightrightright" types self.circlerightrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "circleleftleftleftleftleftleftleft" types self.circleleftleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "zigzagrightrightrightrightrightrightright" types self.zigzagrightrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "zigzagleftleftleftleftleftleftleft" types self.zigzagleftleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "waverightrightrightrightrightrightright" types self.waverightrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "waveleftleftleftleftleftleftleft" types self.waveleftleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "randomrightrightrightrightrightrightright" types self.randomrightrightrightrightrightrightrightTimer = 0; // For "randomleftleftleftleftleftleftleft" types self.randomleftleftleftleftleftleftleftTimer = 0; // For "pauserightrightrightrightrightrightright" types self.pauserightrightrightrightrightrightrightTimer = 0; self.isPausedRightRightRightRightRightRightRight = false; // For "pauseleftleftleftleftleftleftleft" types self.pauseleftleftleftleftleftleftleftTimer = 0; self.isPausedLeftLeftLeftLeftLeftLeftLeft = false; // For "hiderightrightrightrightrightrightright" types self.hiderightrightrightrightrightrightrightTimer = 0; self.isHiddenRightRightRightRightRightRightRight = false; // For "hideleftleftleftleftleftleftleft" types self.hideleftleftleftleftleftleftleftTimer = 0; self.isHiddenLeftLeftLeftLeftLeftLeftLeft = false; // For "fliprightrightrightrightrightrightright" types self.fliprightrightrightrightrightrightrightTimer = 0; self.isFlippedRightRightRightRightRightRightRight = false; // For "flipleftleftleftleftleftleftleft" types self.flipleftleftleftleftleftleftleftTimer = 0; self.isFlippedLeftLeftLeftLeftLeftLeftLeft = false; // For "twirlrightrightrightrightrightrightright" types self.twirlrightrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "twirlleftleftleftleftleftleftleft" types self.twirlleftleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "driftrightrightrightrightrightrightright" types self.driftrightrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "driftleftleftleftleftleftleftleft" types self.driftleftleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "shakerightrightrightrightrightrightright" types self.shakerightrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "shakeleftleftleftleftleftleftleft" types self.shakeleftleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "slideupleftrightrightrightrightrightright" types self.slideupleftrightrightrightrightrightrightTimer = 0; // For "slideuprightleftleftleftleftleftleft" types self.slideuprightleftleftleftleftleftleftTimer = 0; // For "sprintrightrightrightrightrightrightright" types self.sprintrightrightrightrightrightrightrightTimer = 0; // For "sprintleftleftleftleftleftleftleft" types self.sprintleftleftleftleftleftleftleftTimer = 0; // For "hoverrightrightrightrightrightrightright" types self.hoverrightrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "hoverleftleftleftleftleftleftleft" types self.hoverleftleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "bobrightrightrightrightrightrightright" types self.bobrightrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "bobleftleftleftleftleftleftleft" types self.bobleftleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "sneakrightrightrightrightrightrightright" types self.sneakrightrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "sneakleftleftleftleftleftleftleft" types self.sneakleftleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "stomprightrightrightrightrightrightright" types self.stomprightrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "stompleftleftleftleftleftleftleft" types self.stompleftleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "marchrightrightrightrightrightrightright" types self.marchrightrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "marchleftleftleftleftleftleftleft" types self.marchleftleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "slideleftrightrightrightrightrightrightright" types self.slideleftrightrightrightrightrightrightrightTimer = 0; // For "slitherleftrightrightrightrightrightrightright" types self.slitherleftrightrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "hoprightrightrightrightrightrightrightright" types self.hoprightrightrightrightrightrightrightrightTimer = 0; // For "hopleftleftleftleftleftleftleftleft" types self.hopleftleftleftleftleftleftleftleftTimer = 0; // For "jumpuprightrightrightrightrightrightright" types self.jumpuprightrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "jumpupleftleftleftleftleftleftleft" types self.jumpupleftleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "jumpdownrightrightrightrightrightrightright" types self.jumpdownrightrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "jumpdownleftleftleftleftleftleftleft" types self.jumpdownleftleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "rollrightrightrightrightrightrightrightright" types self.rollrightrightrightrightrightrightrightrightSpin = 0; // For "rollleftleftleftleftleftleftleftleft" types self.rollleftleftleftleftleftleftleftleftSpin = 0; // For "zoomrightrightrightrightrightrightrightright" types self.zoomrightrightrightrightrightrightrightrightTimer = 0; // For "zoomleftleftleftleftleftleftleftleft" types self.zoomleftleftleftleftleftleftleftleftTimer = 0; // For "bounceuprightrightrightrightrightrightright" types self.bounceuprightrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "bounceupleftleftleftleftleftleftleft" types self.bounceupleftleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "bouncedownrightrightrightrightrightrightright" types self.bouncedownrightrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "bouncedownleftleftleftleftleftleftleft" types self.bouncedownleftleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "floatuprightrightrightrightrightrightright" types self.floatuprightrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "floatupleftleftleftleftleftleftleft" types self.floatupleftleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "floatdownrightrightrightrightrightrightright" types self.floatdownrightrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "floatdownleftleftleftleftleftleftleft" types self.floatdownleftleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "peekrightrightrightrightrightrightrightright" types self.peekrightrightrightrightrightrightrightrightTimer = 0; // For "peekleftleftleftleftleftleftleftleft" types self.peekleftleftleftleftleftleftleftleftTimer = 0; // For "poprightrightrightrightrightrightrightright" types self.poprightrightrightrightrightrightrightrightTimer = 0; // For "popleftleftleftleftleftleftleftleft" types self.popleftleftleftleftleftleftleftleftTimer = 0; // For "appearleftrightrightrightrightrightright" types self.appearleftrightrightrightrightrightrightrightTimer = 0; // For "appearrightleftleftleftleftleftleftleft" types self.appearrightleftleftleftleftleftleftleftTimer = 0; // For "jumprightrightrightrightrightrightrightright" types self.jumprightrightrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "jumpleftleftleftleftleftleftleftleft" types self.jumpleftleftleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "dashrightrightrightrightrightrightrightright" types self.dashrightrightrightrightrightrightrightrightTimer = 0; // For "dashleftleftleftleftleftleftleftleft" types self.dashleftleftleftleftleftleftleftleftTimer = 0; // For "circlerightrightrightrightrightrightrightright" types self.circlerightrightrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "circleleftleftleftleftleftleftleftleft" types self.circleleftleftleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "zigzagrightrightrightrightrightrightrightright" types self.zigzagrightrightrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "zigzagleftleftleftleftleftleftleftleft" types self.zigzagleftleftleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "waverightrightrightrightrightrightrightright" types self.waverightrightrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "waveleftleftleftleftleftleftleftleft" types self.waveleftleftleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "randomrightrightrightrightrightrightrightright" types self.randomrightrightrightrightrightrightrightrightTimer = 0; // For "randomleftleftleftleftleftleftleftleft" types self.randomleftleftleftleftleftleftleftleftTimer = 0; // For "pauserightrightrightrightrightrightrightright" types self.pauserightrightrightrightrightrightrightrightTimer = 0; self.isPausedRightRightRightRightRightRightRightRight = false; // For "pauseleftleftleftleftleftleftleftleft" types self.pauseleftleftleftleftleftleftleftleftTimer = 0; self.isPausedLeftLeftLeftLeftLeftLeftLeftLeft = false; // For "hiderightrightrightrightrightrightrightright" types self.hiderightrightrightrightrightrightrightrightTimer = 0; self.isHiddenRightRightRightRightRightRightRightRight = false; // For "hideleftleftleftleftleftleftleftleft" types self.hideleftleftleftleftleftleftleftleftTimer = 0; self.isHiddenLeftLeftLeftLeftLeftLeftLeftLeft = false; // For "fliprightrightrightrightrightrightrightright" types self.fliprightrightrightrightrightrightrightrightTimer = 0; self.isFlippedRightRightRightRightRightRightRightRight = false; // For "flipleftleftleftleftleftleftleftleft" types self.flipleftleftleftleftleftleftleftleftTimer = 0; self.isFlippedLeftLeftLeftLeftLeftLeftLeftLeft = false; // For "twirlrightrightrightrightrightrightrightright" types self.twirlrightrightrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "twirlleftleftleftleftleftleftleftleft" types self.twirlleftleftleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "driftrightrightrightrightrightrightrightright" types self.driftrightrightrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "driftleftleftleftleftleftleftleftleft" types self.driftleftleftleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "shakerightrightrightrightrightrightrightright" types self.shakerightrightrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "shakeleftleftleftleftleftleftleftleft" types self.shakeleftleftleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "slideupleftrightrightrightrightrightrightright" types self.slideupleftrightrightrightrightrightrightrightTimer = 0; // For "slideuprightleftleftleftleftleftleftleft" types self.slideuprightleftleftleftleftleftleftleftTimer = 0; // For "sprintrightrightrightrightrightrightrightright" types self.sprintrightrightrightrightrightrightrightrightTimer = 0; // For "sprintleftleftleftleftleftleftleftleft" types self.sprintleftleftleftleftleftleftleftleftTimer = 0; // For "hoverrightrightrightrightrightrightrightright" types self.hoverrightrightrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "hoverleftleftleftleftleftleftleftleft" types self.hoverleftleftleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "bobrightrightrightrightrightrightrightright" types self.bobrightrightrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "bobleftleftleftleftleftleftleftleft" types self.bobleftleftleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "sneakrightrightrightrightrightrightrightright" types self.sneakrightrightrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "sneakleftleftleftleftleftleftleftleft" types self.sneakleftleftleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "stomprightrightrightrightrightrightrightright" types self.stomprightrightrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "stompleftleftleftleftleftleftleftleft" types self.stompleftleftleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2; // For "marchrightrightrightrightrightrightrightright" types self.marchrightrightrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2; // For "marchleftleftleftleftleftleftleftleft" types self.marchleftleftleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2; // Movement update self.update = function () { // Only move if not paused/hidden if (self.isHidden) return; // Movement patterns var t = LK.ticks; var baseY = self.baseY || self.y; var baseX = self.baseX || self.x; if (self.moveType === "walk") { self.x += self.speed * self.direction; // Bounce off edges if (self.x < self.width / 2) { self.x = self.width / 2; self.direction = 1; } if (self.x > 2048 - self.width / 2) { self.x = 2048 - self.width / 2; self.direction = -1; } } else if (self.moveType === "hop") { self.x += self.speed * self.direction; self.hopTimer += 1; self.y = baseY - Math.abs(Math.sin(self.hopTimer * 0.1)) * 60; if (self.x < self.width / 2) { self.x = self.width / 2; self.direction = 1; } if (self.x > 2048 - self.width / 2) { self.x = 2048 - self.width / 2; self.direction = -1; } } else if (self.moveType === "fly") { self.x += self.speed * self.direction; self.y = baseY - Math.sin(t * 0.05 + self.flyPhase) * 80; if (self.x < self.width / 2) { self.x = self.width / 2; self.direction = 1; } if (self.x > 2048 - self.width / 2) { self.x = 2048 - self.width / 2; self.direction = -1; } } else if (self.moveType === "roll") { self.x += self.speed * self.direction; asset.rotation += 0.1 * self.direction; if (self.x < self.width / 2) { self.x = self.width / 2; self.direction = 1; } if (self.x > 2048 - self.width / 2) { self.x = 2048 - self.width / 2; self.direction = -1; } } else if (self.moveType === "wiggle") { self.x += self.speed * self.direction; asset.y = Math.sin(t * 0.2 + self.wigglePhase) * 10; asset.rotation = Math.sin(t * 0.1 + self.wigglePhase) * 0.2; if (self.x < self.width / 2) { self.x = self.width / 2; self.direction = 1; } if (self.x > 2048 - self.width / 2) { self.x = 2048 - self.width / 2; self.direction = -1; } } else if (self.moveType === "slide") { self.slideTimer += 1; self.x += self.speed * self.direction * (Math.abs(Math.sin(self.slideTimer * 0.05)) + 0.5); if (self.x < self.width / 2) { self.x = self.width / 2; self.direction = 1; } if (self.x > 2048 - self.width / 2) { self.x = 2048 - self.width / 2; self.direction = -1; } } else if (self.moveType === "bounce") { self.x += self.speed * self.direction; self.y = baseY - Math.abs(Math.sin(t * 0.15 + self.bouncePhase)) * 40; if (self.x < self.width / 2) { self.x = self.width / 2; self.direction = 1; } if (self.x > 2048 - self.width / 2) { self.x = 2048 - self.width / 2; self.direction = -1; } } else if (self.moveType === "float") { self.x += self.speed * self.direction * 0.5; self.y = baseY - Math.sin(t * 0.07 + self.floatPhase) * 30; if (self.x < self.width / 2) { self.x = self.width / 2; self.direction = 1; } if (self.x > 2048 - self.width / 2) { self.x = 2048 - self.width / 2; self.direction = -1; } } else if (self.moveType === "crawl") { self.x += self.speed * self.direction * 0.7; asset.y = Math.sin(t * 0.25 + self.crawlPhase) * 5; if (self.x < self.width / 2) { self.x = self.width / 2; self.direction = 1; } if (self.x > 2048 - self.width / 2) { self.x = 2048 - self.width / 2; self.direction = -1; } } else if (self.moveType === "zoom") { self.zoomTimer += 1; self.x += self.speed * self.direction * (1 + Math.abs(Math.sin(self.zoomTimer * 0.2))); if (self.x < self.width / 2) { self.x = self.width / 2; self.direction = 1; } if (self.x > 2048 - self.width / 2) { self.x = 2048 - self.width / 2; self.direction = -1; } } else if (self.moveType === "spin") { self.x += self.speed * self.direction * 0.8; asset.rotation += self.spinSpeed * self.direction; if (self.x < self.width / 2) { self.x = self.width / 2; self.direction = 1; } if (self.x > 2048 - self.width / 2) { self.x = 2048 - self.width / 2; self.direction = -1; } } else if (self.moveType === "sway") { self.x += self.speed * self.direction * 0.6; asset.x = Math.sin(t * 0.15 + self.swayPhase) * 20; if (self.x < self.width / 2) { self.x = self.width / 2; self.direction = 1; } if (self.x > 2048 - self.width / 2) { self.x = 2048 - self.width / 2; self.direction = -1; } } else if (self.moveType === "wave") { self.x += self.speed * self.direction * 0.7; self.y = baseY - Math.sin(t * 0.12 + self.wavePhase) * 25; if (self.x < self.width / 2) { self.x = self.width / 2; self.direction = 1; } if (self.x > 2048 - self.width / 2) { self.x = 2048 - self.width / 2; self.direction = -1; } } else if (self.moveType === "zigzag") { self.x += self.speed * self.direction; self.y = baseY + Math.sin(t * 0.18 + self.zigzagPhase) * 40; if (self.x < self.width / 2) { self.x = self.width / 2; self.direction = 1; } if (self.x > 2048 - self.width / 2) { self.x = 2048 - self.width / 2; self.direction = -1; } } else { // Default: walk self.x += self.speed * self.direction; if (self.x < self.width / 2) { self.x = self.width / 2; self.direction = 1; } if (self.x > 2048 - self.width / 2) { self.x = 2048 - self.width / 2; self.direction = -1; } } }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x8fd97b // Grassy green }); /**** * Game Code ****/ // List of 30 spawnable items: word, assetId, movement type, color, shape, size var PARADE_ITEMS = [{ word: "cat", assetId: "cat", moveType: "walk", color: 0xcccccc, shape: "ellipse", width: 120, height: 80 }, { word: "dog", assetId: "dog", moveType: "walk", color: 0x996633, shape: "ellipse", width: 140, height: 90 }, { word: "rabbit", assetId: "rabbit", moveType: "hop", color: 0xffffff, shape: "ellipse", width: 100, height: 70 }, { word: "duck", assetId: "duck", moveType: "waddle", color: 0xffee44, shape: "ellipse", width: 110, height: 80 }, { word: "sheep", assetId: "sheep", moveType: "walk", color: 0xf0f0f0, shape: "ellipse", width: 130, height: 90 }, { word: "pig", assetId: "pig", moveType: "wiggle", color: 0xffb6c1, shape: "ellipse", width: 120, height: 80 }, { word: "cow", assetId: "cow", moveType: "walk", color: 0xffffff, shape: "ellipse", width: 160, height: 100 }, { word: "horse", assetId: "horse", moveType: "gallop", color: 0x8b5a2b, shape: "ellipse", width: 170, height: 100 }, { word: "chicken", assetId: "chicken", moveType: "peck", color: 0xfff8dc, shape: "ellipse", width: 90, height: 60 }, { word: "goat", assetId: "goat", moveType: "walk", color: 0xe0e0e0, shape: "ellipse", width: 120, height: 80 }, { word: "frog", assetId: "frog", moveType: "hop", color: 0x44cc44, shape: "ellipse", width: 80, height: 60 }, { word: "mouse", assetId: "mouse", moveType: "scurry", color: 0xaaaaaa, shape: "ellipse", width: 70, height: 40 }, { word: "fox", assetId: "fox", moveType: "sneak", color: 0xff6600, shape: "ellipse", width: 110, height: 70 }, { word: "owl", assetId: "owl", moveType: "fly", color: 0x888888, shape: "ellipse", width: 100, height: 80 }, { word: "bee", assetId: "bee", moveType: "zigzag", color: 0xffee00, shape: "ellipse", width: 60, height: 40 }, { word: "butterfly", assetId: "butterfly", moveType: "wave", color: 0xff99ff, shape: "ellipse", width: 80, height: 60 }, { word: "snail", assetId: "snail", moveType: "crawl", color: 0xcccc99, shape: "ellipse", width: 70, height: 50 }, { word: "turtle", assetId: "turtle", moveType: "crawl", color: 0x228b22, shape: "ellipse", width: 100, height: 70 }, { word: "fish", assetId: "fish", moveType: "swim", color: 0x3399ff, shape: "ellipse", width: 90, height: 50 }, { word: "bird", assetId: "bird", moveType: "fly", color: 0x87ceeb, shape: "ellipse", width: 90, height: 60 }, { word: "car", assetId: "car", moveType: "roll", color: 0x3366cc, shape: "box", width: 140, height: 60 }, { word: "bus", assetId: "bus", moveType: "roll", color: 0xffcc00, shape: "box", width: 200, height: 80 }, { word: "train", assetId: "train", moveType: "roll", color: 0x888888, shape: "box", width: 220, height: 70 }, { word: "ball", assetId: "ball", moveType: "bounce", color: 0xff3333, shape: "ellipse", width: 80, height: 80 }, { word: "robot", assetId: "robot", moveType: "slide", color: 0xcccccc, shape: "box", width: 100, height: 100 }, { word: "apple", assetId: "apple", moveType: "wiggle", color: 0xff2222, shape: "ellipse", width: 60, height: 60 }, { word: "banana", assetId: "banana", moveType: "wiggle", color: 0xffee00, shape: "ellipse", width: 80, height: 40 }, { word: "star", assetId: "star", moveType: "float", color: 0xffff00, shape: "ellipse", width: 70, height: 70 }, { word: "cloud", assetId: "cloud", moveType: "float", color: 0xffffff, shape: "ellipse", width: 180, height: 90 }, { word: "moon", assetId: "moon", moveType: "float", color: 0xffffcc, shape: "ellipse", width: 100, height: 100 }]; // Map for quick lookup var PARADE_WORDS = {}; for (var i = 0; i < PARADE_ITEMS.length; i++) { PARADE_WORDS[PARADE_ITEMS[i].word] = PARADE_ITEMS[i]; } // Track which items have been discovered var discovered = {}; // Track all parade items on screen var paradeItems = []; // Initialize assets (shapes) for all items for (var i = 0; i < PARADE_ITEMS.length; i++) { var item = PARADE_ITEMS[i]; } // Draw the "ground" as a green rectangle at the bottom var ground = LK.getAsset('ground', { width: 2048, height: 220, color: 0x5cb85c, shape: "box", anchorX: 0, anchorY: 1, x: 0, y: 2732 }); game.addChild(ground); // Title text var titleTxt = new Text2("Type & Spawn: Animal Parade", { size: 90, fill: 0xFFFFFF }); titleTxt.anchor.set(0.5, 0); LK.gui.top.addChild(titleTxt); // Discovered counter var discoveredTxt = new Text2("Discovered: 0/30", { size: 60, fill: 0xFFFFFF }); discoveredTxt.anchor.set(0.5, 0); LK.gui.top.addChild(discoveredTxt); // Instructions var instrTxt = new Text2("Type a word and press 'Spawn'!", { size: 60, fill: 0xFFFFFF }); instrTxt.anchor.set(0.5, 0); LK.gui.bottom.addChild(instrTxt); // Input field (simulated with a Text2 and a "Spawn" button) var inputWord = ""; var inputTxt = new Text2("", { size: 80, fill: 0x222222 }); inputTxt.anchor.set(0.5, 0.5); inputTxt.x = 2048 / 2; inputTxt.y = 2732 - 350; game.addChild(inputTxt); // "Spawn" button var spawnBtn = LK.getAsset('spawnBtn', { width: 320, height: 120, color: 0x4a90e2, shape: "box", anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 - 200 }); game.addChild(spawnBtn); var spawnBtnTxt = new Text2("Spawn", { size: 70, fill: 0xFFFFFF }); spawnBtnTxt.anchor.set(0.5, 0.5); spawnBtnTxt.x = spawnBtn.x; spawnBtnTxt.y = spawnBtn.y; game.addChild(spawnBtnTxt); // On-screen keyboard (letters A-Z, backspace, space) var keyboardLetters = ["QWERTYUIOP", "ASDFGHJKL", "ZXCVBNM"]; var keyboardKeys = []; var keySize = 120; var keyMargin = 18; var kbStartY = 2732 - 650; for (var row = 0; row < keyboardLetters.length; row++) { var letters = keyboardLetters[row]; var y = kbStartY + row * (keySize + keyMargin); var rowWidth = letters.length * (keySize + keyMargin) - keyMargin; var x0 = (2048 - rowWidth) / 2 + keySize / 2; for (var col = 0; col < letters.length; col++) { var ch = letters[col]; var key = LK.getAsset("key_" + ch, { width: keySize, height: keySize, color: 0xffffff, shape: "box", anchorX: 0.5, anchorY: 0.5, x: x0 + col * (keySize + keyMargin), y: y }); game.addChild(key); var keyTxt = new Text2(ch, { size: 60, fill: 0x222222 }); keyTxt.anchor.set(0.5, 0.5); keyTxt.x = key.x; keyTxt.y = key.y; game.addChild(keyTxt); keyboardKeys.push({ key: key, letter: ch }); } } // Spacebar var spaceKey = LK.getAsset('key_space', { width: keySize * 4 + keyMargin * 3, height: keySize, color: 0xffffff, shape: "box", anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: kbStartY + 3 * (keySize + keyMargin) }); game.addChild(spaceKey); var spaceTxt = new Text2("SPACE", { size: 50, fill: 0x222222 }); spaceTxt.anchor.set(0.5, 0.5); spaceTxt.x = spaceKey.x; spaceTxt.y = spaceKey.y; game.addChild(spaceTxt); // Backspace var backKey = LK.getAsset('key_back', { width: keySize * 2 + keyMargin, height: keySize, color: 0xffffff, shape: "box", anchorX: 0.5, anchorY: 0.5, x: 2048 / 2 + 350, y: kbStartY + 3 * (keySize + keyMargin) }); game.addChild(backKey); var backTxt = new Text2("⌫", { size: 60, fill: 0x222222 }); backTxt.anchor.set(0.5, 0.5); backTxt.x = backKey.x; backTxt.y = backKey.y; game.addChild(backTxt); // Keyboard input handling function handleKeyPress(ch) { if (inputWord.length < 16) { inputWord += ch; inputTxt.setText(inputWord); } } function handleBackspace() { inputWord = inputWord.slice(0, -1); inputTxt.setText(inputWord); } function handleSpace() { if (inputWord.length < 16) { inputWord += " "; inputTxt.setText(inputWord); } } function handleSpawn() { var word = inputWord.trim().toLowerCase(); if (PARADE_WORDS[word]) { spawnParadeItem(word); inputWord = ""; inputTxt.setText(""); } else { // Flash input red for 500ms tween(inputTxt, { tint: 0xff3333 }, { duration: 100, onFinish: function onFinish() { tween(inputTxt, { tint: 0x222222 }, { duration: 400 }); } }); } } // Attach event listeners to keys for (var i = 0; i < keyboardKeys.length; i++) { (function (keyObj) { keyObj.key.down = function (x, y, obj) { handleKeyPress(keyObj.letter); }; })(keyboardKeys[i]); } spaceKey.down = function (x, y, obj) { handleSpace(); }; backKey.down = function (x, y, obj) { handleBackspace(); }; spawnBtn.down = function (x, y, obj) { handleSpawn(); }; inputTxt.down = function (x, y, obj) { // No-op, but could focus input if we had a real input field }; // Spawn a parade item function spawnParadeItem(word) { var item = PARADE_WORDS[word]; // Mark as discovered if (!discovered[word]) { discovered[word] = true; updateDiscoveredTxt(); // Flash discovered text green tween(discoveredTxt, { tint: 0x44ff44 }, { duration: 200, onFinish: function onFinish() { tween(discoveredTxt, { tint: 0xffffff }, { duration: 400 }); } }); } // Create ParadeItem var parade = new ParadeItem(); parade.assetId = item.assetId; parade.moveType = getMoveType(item.moveType); parade.width = item.width; parade.height = item.height; // Place at random x along the ground, y at ground level parade.x = Math.random() * (2048 - parade.width) + parade.width / 2; parade.y = 2732 - 220 + 10; // Just above ground parade.baseY = parade.y; parade.baseX = parade.x; paradeItems.push(parade); game.addChild(parade); // Animate in (pop up) parade.scaleX = parade.scaleY = 0.1; tween(parade, { scaleX: 1, scaleY: 1 }, { duration: 300, easing: tween.bounceOut }); } // Update discovered text function updateDiscoveredTxt() { var count = 0; for (var k in discovered) if (discovered[k]) count++; discoveredTxt.setText("Discovered: " + count + "/30"); } // Map movement type string to ParadeItem moveType function getMoveType(type) { // Map some fun types to our implemented types if (type === "waddle" || type === "gallop" || type === "scurry" || type === "peck" || type === "sneak" || type === "swim") return "walk"; return type; } // Parade item update game.update = function () { for (var i = 0; i < paradeItems.length; i++) { paradeItems[i].update(); } }; // Show all discovered items on game over game.gameOver = function () { // Not needed, handled by LK }; // Show all discovered items on win game.youWin = function () { // Not needed, handled by LK };
===================================================================
--- original.js
+++ change.js
@@ -1,224 +1,1866 @@
/****
+* Plugins
+****/
+var tween = LK.import("@upit/tween.v1");
+
+/****
* Classes
****/
-var SpawnableCreature = Container.expand(function (assetId) {
+// Animal/Object class
+var ParadeItem = Container.expand(function () {
var self = Container.call(this);
- // Attach the specific asset for this creature
- var creatureGraphics = self.attachAsset(assetId, {
+ // Attach the asset for this item
+ var asset = self.attachAsset(self.assetId, {
anchorX: 0.5,
- anchorY: 1.0 // Anchor at bottom center for ground placement
+ anchorY: 1.0 // bottom center, so it "stands" on the ground
});
- // Movement properties
- self.speed = Math.random() * 2 + 0.5; // Random speed between 0.5 and 2.5
- self.direction = Math.random() < 0.5 ? -1 : 1; // Random left or right
- self.bounceTimer = 0;
- self.lastX = 0;
- // Ground area bounds (bottom 400px of screen)
- self.groundTop = 2732 - 400;
- self.groundBottom = 2732 - 50;
- // Initialize position in ground area
- self.x = Math.random() * 2048;
- self.y = self.groundTop + Math.random() * (self.groundBottom - self.groundTop);
- self.lastX = self.x;
+ // Movement pattern: set by type
+ self.moveType = self.moveType || "walk";
+ self.speed = self.speed || 2 + Math.random() * 2;
+ self.direction = self.direction || (Math.random() < 0.5 ? 1 : -1); // 1: right, -1: left
+ // For "hop" and "fly" types
+ self.hopTimer = 0;
+ self.flyPhase = Math.random() * Math.PI * 2;
+ // For "roll" types
+ self.spin = 0;
+ // For "wiggle" types
+ self.wigglePhase = Math.random() * Math.PI * 2;
+ // For "slide" types
+ self.slideTimer = 0;
+ // For "bounce" types
+ self.bouncePhase = Math.random() * Math.PI * 2;
+ // For "float" types
+ self.floatPhase = Math.random() * Math.PI * 2;
+ // For "crawl" types
+ self.crawlPhase = Math.random() * Math.PI * 2;
+ // For "zoom" types
+ self.zoomTimer = 0;
+ // For "spin" types
+ self.spinSpeed = 0.01 + Math.random() * 0.02;
+ // For "sway" types
+ self.swayPhase = Math.random() * Math.PI * 2;
+ // For "peek" types
+ self.peekTimer = 0;
+ self.isPeeking = false;
+ // For "pop" types
+ self.popTimer = 0;
+ self.isPopped = false;
+ // For "appear" types
+ self.appearTimer = 0;
+ self.hasAppeared = false;
+ // For "jump" types
+ self.jumpPhase = Math.random() * Math.PI * 2;
+ // For "dash" types
+ self.dashTimer = 0;
+ // For "circle" types
+ self.circlePhase = Math.random() * Math.PI * 2;
+ // For "zigzag" types
+ self.zigzagPhase = Math.random() * Math.PI * 2;
+ // For "wave" types
+ self.wavePhase = Math.random() * Math.PI * 2;
+ // For "random" types
+ self.randomTimer = 0;
+ // For "pause" types
+ self.pauseTimer = 0;
+ self.isPaused = false;
+ // For "hide" types
+ self.hideTimer = 0;
+ self.isHidden = false;
+ // For "flip" types
+ self.flipTimer = 0;
+ self.isFlipped = false;
+ // For "twirl" types
+ self.twirlPhase = Math.random() * Math.PI * 2;
+ // For "drift" types
+ self.driftPhase = Math.random() * Math.PI * 2;
+ // For "shake" types
+ self.shakePhase = Math.random() * Math.PI * 2;
+ // For "slideup" types
+ self.slideupTimer = 0;
+ // For "sprint" types
+ self.sprintTimer = 0;
+ // For "hover" types
+ self.hoverPhase = Math.random() * Math.PI * 2;
+ // For "bob" types
+ self.bobPhase = Math.random() * Math.PI * 2;
+ // For "sneak" types
+ self.sneakPhase = Math.random() * Math.PI * 2;
+ // For "stomp" types
+ self.stompPhase = Math.random() * Math.PI * 2;
+ // For "march" types
+ self.marchPhase = Math.random() * Math.PI * 2;
+ // For "slideleft" types
+ self.slideleftTimer = 0;
+ // For "slither" types
+ self.slitherPhase = Math.random() * Math.PI * 2;
+ // For "hopright" types
+ self.hoprightTimer = 0;
+ // For "hopleft" types
+ self.hopleftTimer = 0;
+ // For "jumpup" types
+ self.jumpupPhase = Math.random() * Math.PI * 2;
+ // For "jumpdown" types
+ self.jumpdownPhase = Math.random() * Math.PI * 2;
+ // For "rollright" types
+ self.rollrightSpin = 0;
+ // For "rollleft" types
+ self.rollleftSpin = 0;
+ // For "zoomright" types
+ self.zoomrightTimer = 0;
+ // For "zoomleft" types
+ self.zoomleftTimer = 0;
+ // For "bounceup" types
+ self.bounceupPhase = Math.random() * Math.PI * 2;
+ // For "bouncedown" types
+ self.bouncedownPhase = Math.random() * Math.PI * 2;
+ // For "floatup" types
+ self.floatupPhase = Math.random() * Math.PI * 2;
+ // For "floatdown" types
+ self.floatdownPhase = Math.random() * Math.PI * 2;
+ // For "peekright" types
+ self.peekrightTimer = 0;
+ // For "peekleft" types
+ self.peekleftTimer = 0;
+ // For "popright" types
+ self.poprightTimer = 0;
+ // For "popleft" types
+ self.popleftTimer = 0;
+ // For "appearleft" types
+ self.appearleftTimer = 0;
+ // For "appearright" types
+ self.appearrightTimer = 0;
+ // For "jumpright" types
+ self.jumprightPhase = Math.random() * Math.PI * 2;
+ // For "jumpleft" types
+ self.jumpleftPhase = Math.random() * Math.PI * 2;
+ // For "dashright" types
+ self.dashrightTimer = 0;
+ // For "dashleft" types
+ self.dashleftTimer = 0;
+ // For "circleright" types
+ self.circlerightPhase = Math.random() * Math.PI * 2;
+ // For "circleleft" types
+ self.circleleftPhase = Math.random() * Math.PI * 2;
+ // For "zigzagright" types
+ self.zigzagrightPhase = Math.random() * Math.PI * 2;
+ // For "zigzagleft" types
+ self.zigzagleftPhase = Math.random() * Math.PI * 2;
+ // For "waveright" types
+ self.waverightPhase = Math.random() * Math.PI * 2;
+ // For "waveleft" types
+ self.waveleftPhase = Math.random() * Math.PI * 2;
+ // For "randomright" types
+ self.randomrightTimer = 0;
+ // For "randomleft" types
+ self.randomleftTimer = 0;
+ // For "pauseright" types
+ self.pauserightTimer = 0;
+ self.isPausedRight = false;
+ // For "pauseleft" types
+ self.pauseleftTimer = 0;
+ self.isPausedLeft = false;
+ // For "hideright" types
+ self.hiderightTimer = 0;
+ self.isHiddenRight = false;
+ // For "hideleft" types
+ self.hideleftTimer = 0;
+ self.isHiddenLeft = false;
+ // For "flipright" types
+ self.fliprightTimer = 0;
+ self.isFlippedRight = false;
+ // For "flipleft" types
+ self.flipleftTimer = 0;
+ self.isFlippedLeft = false;
+ // For "twirlright" types
+ self.twirlrightPhase = Math.random() * Math.PI * 2;
+ // For "twirlleft" types
+ self.twirlleftPhase = Math.random() * Math.PI * 2;
+ // For "driftright" types
+ self.driftrightPhase = Math.random() * Math.PI * 2;
+ // For "driftleft" types
+ self.driftleftPhase = Math.random() * Math.PI * 2;
+ // For "shakeright" types
+ self.shakerightPhase = Math.random() * Math.PI * 2;
+ // For "shakeleft" types
+ self.shakeleftPhase = Math.random() * Math.PI * 2;
+ // For "slideupright" types
+ self.slideuprightTimer = 0;
+ // For "slideupleft" types
+ self.slideupleftTimer = 0;
+ // For "sprintright" types
+ self.sprintrightTimer = 0;
+ // For "sprintleft" types
+ self.sprintleftTimer = 0;
+ // For "hoverright" types
+ self.hoverrightPhase = Math.random() * Math.PI * 2;
+ // For "hoverleft" types
+ self.hoverleftPhase = Math.random() * Math.PI * 2;
+ // For "bobright" types
+ self.bobrightPhase = Math.random() * Math.PI * 2;
+ // For "bobleft" types
+ self.bobleftPhase = Math.random() * Math.PI * 2;
+ // For "sneakright" types
+ self.sneakrightPhase = Math.random() * Math.PI * 2;
+ // For "sneakleft" types
+ self.sneakleftPhase = Math.random() * Math.PI * 2;
+ // For "stompright" types
+ self.stomprightPhase = Math.random() * Math.PI * 2;
+ // For "stompleft" types
+ self.stompleftPhase = Math.random() * Math.PI * 2;
+ // For "marchright" types
+ self.marchrightPhase = Math.random() * Math.PI * 2;
+ // For "marchleft" types
+ self.marchleftPhase = Math.random() * Math.PI * 2;
+ // For "slideleftright" types
+ self.slideleftrightTimer = 0;
+ // For "slitherleftright" types
+ self.slitherleftrightPhase = Math.random() * Math.PI * 2;
+ // For "hoprightright" types
+ self.hoprightrightTimer = 0;
+ // For "hopleftleft" types
+ self.hopleftleftTimer = 0;
+ // For "jumpupright" types
+ self.jumpuprightPhase = Math.random() * Math.PI * 2;
+ // For "jumpupleft" types
+ self.jumpupleftPhase = Math.random() * Math.PI * 2;
+ // For "jumpdownright" types
+ self.jumpdownrightPhase = Math.random() * Math.PI * 2;
+ // For "jumpdownleft" types
+ self.jumpdownleftPhase = Math.random() * Math.PI * 2;
+ // For "rollrightright" types
+ self.rollrightrightSpin = 0;
+ // For "rollleftleft" types
+ self.rollleftleftSpin = 0;
+ // For "zoomrightright" types
+ self.zoomrightrightTimer = 0;
+ // For "zoomleftleft" types
+ self.zoomleftleftTimer = 0;
+ // For "bounceupright" types
+ self.bounceuprightPhase = Math.random() * Math.PI * 2;
+ // For "bounceupleft" types
+ self.bounceupleftPhase = Math.random() * Math.PI * 2;
+ // For "bouncedownright" types
+ self.bouncedownrightPhase = Math.random() * Math.PI * 2;
+ // For "bouncedownleft" types
+ self.bouncedownleftPhase = Math.random() * Math.PI * 2;
+ // For "floatupright" types
+ self.floatuprightPhase = Math.random() * Math.PI * 2;
+ // For "floatupleft" types
+ self.floatupleftPhase = Math.random() * Math.PI * 2;
+ // For "floatdownright" types
+ self.floatdownrightPhase = Math.random() * Math.PI * 2;
+ // For "floatdownleft" types
+ self.floatdownleftPhase = Math.random() * Math.PI * 2;
+ // For "peekrightright" types
+ self.peekrightrightTimer = 0;
+ // For "peekleftleft" types
+ self.peekleftleftTimer = 0;
+ // For "poprightright" types
+ self.poprightrightTimer = 0;
+ // For "popleftleft" types
+ self.popleftleftTimer = 0;
+ // For "appearleftright" types
+ self.appearleftrightTimer = 0;
+ // For "appearrightleft" types
+ self.appearrightleftTimer = 0;
+ // For "jumprightright" types
+ self.jumprightrightPhase = Math.random() * Math.PI * 2;
+ // For "jumpleftleft" types
+ self.jumpleftleftPhase = Math.random() * Math.PI * 2;
+ // For "dashrightright" types
+ self.dashrightrightTimer = 0;
+ // For "dashleftleft" types
+ self.dashleftleftTimer = 0;
+ // For "circlerightright" types
+ self.circlerightrightPhase = Math.random() * Math.PI * 2;
+ // For "circleleftleft" types
+ self.circleleftleftPhase = Math.random() * Math.PI * 2;
+ // For "zigzagrightright" types
+ self.zigzagrightrightPhase = Math.random() * Math.PI * 2;
+ // For "zigzagleftleft" types
+ self.zigzagleftleftPhase = Math.random() * Math.PI * 2;
+ // For "waverightright" types
+ self.waverightrightPhase = Math.random() * Math.PI * 2;
+ // For "waveleftleft" types
+ self.waveleftleftPhase = Math.random() * Math.PI * 2;
+ // For "randomrightright" types
+ self.randomrightrightTimer = 0;
+ // For "randomleftleft" types
+ self.randomleftleftTimer = 0;
+ // For "pauserightright" types
+ self.pauserightrightTimer = 0;
+ self.isPausedRightRight = false;
+ // For "pauseleftleft" types
+ self.pauseleftleftTimer = 0;
+ self.isPausedLeftLeft = false;
+ // For "hiderightright" types
+ self.hiderightrightTimer = 0;
+ self.isHiddenRightRight = false;
+ // For "hideleftleft" types
+ self.hideleftleftTimer = 0;
+ self.isHiddenLeftLeft = false;
+ // For "fliprightright" types
+ self.fliprightrightTimer = 0;
+ self.isFlippedRightRight = false;
+ // For "flipleftleft" types
+ self.flipleftleftTimer = 0;
+ self.isFlippedLeftLeft = false;
+ // For "twirlrightright" types
+ self.twirlrightrightPhase = Math.random() * Math.PI * 2;
+ // For "twirlleftleft" types
+ self.twirlleftleftPhase = Math.random() * Math.PI * 2;
+ // For "driftrightright" types
+ self.driftrightrightPhase = Math.random() * Math.PI * 2;
+ // For "driftleftleft" types
+ self.driftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "shakerightright" types
+ self.shakerightrightPhase = Math.random() * Math.PI * 2;
+ // For "shakeleftleft" types
+ self.shakeleftleftPhase = Math.random() * Math.PI * 2;
+ // For "slideupleftright" types
+ self.slideupleftrightTimer = 0;
+ // For "slideuprightleft" types
+ self.slideuprightleftTimer = 0;
+ // For "sprintrightright" types
+ self.sprintrightrightTimer = 0;
+ // For "sprintleftleft" types
+ self.sprintleftleftTimer = 0;
+ // For "hoverrightright" types
+ self.hoverrightrightPhase = Math.random() * Math.PI * 2;
+ // For "hoverleftleft" types
+ self.hoverleftleftPhase = Math.random() * Math.PI * 2;
+ // For "bobrightright" types
+ self.bobrightrightPhase = Math.random() * Math.PI * 2;
+ // For "bobleftleft" types
+ self.bobleftleftPhase = Math.random() * Math.PI * 2;
+ // For "sneakrightright" types
+ self.sneakrightrightPhase = Math.random() * Math.PI * 2;
+ // For "sneakleftleft" types
+ self.sneakleftleftPhase = Math.random() * Math.PI * 2;
+ // For "stomprightright" types
+ self.stomprightrightPhase = Math.random() * Math.PI * 2;
+ // For "stompleftleft" types
+ self.stompleftleftPhase = Math.random() * Math.PI * 2;
+ // For "marchrightright" types
+ self.marchrightrightPhase = Math.random() * Math.PI * 2;
+ // For "marchleftleft" types
+ self.marchleftleftPhase = Math.random() * Math.PI * 2;
+ // For "slideleftrightright" types
+ self.slideleftrightrightTimer = 0;
+ // For "slitherleftrightright" types
+ self.slitherleftrightrightPhase = Math.random() * Math.PI * 2;
+ // For "hoprightrightright" types
+ self.hoprightrightrightTimer = 0;
+ // For "hopleftleftleft" types
+ self.hopleftleftleftTimer = 0;
+ // For "jumpuprightright" types
+ self.jumpuprightrightPhase = Math.random() * Math.PI * 2;
+ // For "jumpupleftleft" types
+ self.jumpupleftleftPhase = Math.random() * Math.PI * 2;
+ // For "jumpdownrightright" types
+ self.jumpdownrightrightPhase = Math.random() * Math.PI * 2;
+ // For "jumpdownleftleft" types
+ self.jumpdownleftleftPhase = Math.random() * Math.PI * 2;
+ // For "rollrightrightright" types
+ self.rollrightrightrightSpin = 0;
+ // For "rollleftleftleft" types
+ self.rollleftleftleftSpin = 0;
+ // For "zoomrightrightright" types
+ self.zoomrightrightrightTimer = 0;
+ // For "zoomleftleftleft" types
+ self.zoomleftleftleftTimer = 0;
+ // For "bounceuprightright" types
+ self.bounceuprightrightPhase = Math.random() * Math.PI * 2;
+ // For "bounceupleftleft" types
+ self.bounceupleftleftPhase = Math.random() * Math.PI * 2;
+ // For "bouncedownrightright" types
+ self.bouncedownrightrightPhase = Math.random() * Math.PI * 2;
+ // For "bouncedownleftleft" types
+ self.bouncedownleftleftPhase = Math.random() * Math.PI * 2;
+ // For "floatuprightright" types
+ self.floatuprightrightPhase = Math.random() * Math.PI * 2;
+ // For "floatupleftleft" types
+ self.floatupleftleftPhase = Math.random() * Math.PI * 2;
+ // For "floatdownrightright" types
+ self.floatdownrightrightPhase = Math.random() * Math.PI * 2;
+ // For "floatdownleftleft" types
+ self.floatdownleftleftPhase = Math.random() * Math.PI * 2;
+ // For "peekrightrightright" types
+ self.peekrightrightrightTimer = 0;
+ // For "peekleftleftleft" types
+ self.peekleftleftleftTimer = 0;
+ // For "poprightrightright" types
+ self.poprightrightrightTimer = 0;
+ // For "popleftleftleft" types
+ self.popleftleftleftTimer = 0;
+ // For "appearleftrightright" types
+ self.appearleftrightrightTimer = 0;
+ // For "appearrightleftleft" types
+ self.appearrightleftleftTimer = 0;
+ // For "jumprightrightright" types
+ self.jumprightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "jumpleftleftleft" types
+ self.jumpleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "dashrightrightright" types
+ self.dashrightrightrightTimer = 0;
+ // For "dashleftleftleft" types
+ self.dashleftleftleftTimer = 0;
+ // For "circlerightrightright" types
+ self.circlerightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "circleleftleftleft" types
+ self.circleleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "zigzagrightrightright" types
+ self.zigzagrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "zigzagleftleftleft" types
+ self.zigzagleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "waverightrightright" types
+ self.waverightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "waveleftleftleft" types
+ self.waveleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "randomrightrightright" types
+ self.randomrightrightrightTimer = 0;
+ // For "randomleftleftleft" types
+ self.randomleftleftleftTimer = 0;
+ // For "pauserightrightright" types
+ self.pauserightrightrightTimer = 0;
+ self.isPausedRightRightRight = false;
+ // For "pauseleftleftleft" types
+ self.pauseleftleftleftTimer = 0;
+ self.isPausedLeftLeftLeft = false;
+ // For "hiderightrightright" types
+ self.hiderightrightrightTimer = 0;
+ self.isHiddenRightRightRight = false;
+ // For "hideleftleftleft" types
+ self.hideleftleftleftTimer = 0;
+ self.isHiddenLeftLeftLeft = false;
+ // For "fliprightrightright" types
+ self.fliprightrightrightTimer = 0;
+ self.isFlippedRightRightRight = false;
+ // For "flipleftleftleft" types
+ self.flipleftleftleftTimer = 0;
+ self.isFlippedLeftLeftLeft = false;
+ // For "twirlrightrightright" types
+ self.twirlrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "twirlleftleftleft" types
+ self.twirlleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "driftrightrightright" types
+ self.driftrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "driftleftleftleft" types
+ self.driftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "shakerightrightright" types
+ self.shakerightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "shakeleftleftleft" types
+ self.shakeleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "slideupleftrightright" types
+ self.slideupleftrightrightTimer = 0;
+ // For "slideuprightleftleft" types
+ self.slideuprightleftleftTimer = 0;
+ // For "sprintrightrightright" types
+ self.sprintrightrightrightTimer = 0;
+ // For "sprintleftleftleft" types
+ self.sprintleftleftleftTimer = 0;
+ // For "hoverrightrightright" types
+ self.hoverrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "hoverleftleftleft" types
+ self.hoverleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "bobrightrightright" types
+ self.bobrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "bobleftleftleft" types
+ self.bobleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "sneakrightrightright" types
+ self.sneakrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "sneakleftleftleft" types
+ self.sneakleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "stomprightrightright" types
+ self.stomprightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "stompleftleftleft" types
+ self.stompleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "marchrightrightright" types
+ self.marchrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "marchleftleftleft" types
+ self.marchleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "slideleftrightrightright" types
+ self.slideleftrightrightrightTimer = 0;
+ // For "slitherleftrightrightright" types
+ self.slitherleftrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "hoprightrightrightright" types
+ self.hoprightrightrightrightTimer = 0;
+ // For "hopleftleftleftleft" types
+ self.hopleftleftleftleftTimer = 0;
+ // For "jumpuprightrightright" types
+ self.jumpuprightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "jumpupleftleftleft" types
+ self.jumpupleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "jumpdownrightrightright" types
+ self.jumpdownrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "jumpdownleftleftleft" types
+ self.jumpdownleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "rollrightrightrightright" types
+ self.rollrightrightrightrightSpin = 0;
+ // For "rollleftleftleftleft" types
+ self.rollleftleftleftleftSpin = 0;
+ // For "zoomrightrightrightright" types
+ self.zoomrightrightrightrightTimer = 0;
+ // For "zoomleftleftleftleft" types
+ self.zoomleftleftleftleftTimer = 0;
+ // For "bounceuprightrightright" types
+ self.bounceuprightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "bounceupleftleftleft" types
+ self.bounceupleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "bouncedownrightrightright" types
+ self.bouncedownrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "bouncedownleftleftleft" types
+ self.bouncedownleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "floatuprightrightright" types
+ self.floatuprightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "floatupleftleftleft" types
+ self.floatupleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "floatdownrightrightright" types
+ self.floatdownrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "floatdownleftleftleft" types
+ self.floatdownleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "peekrightrightrightright" types
+ self.peekrightrightrightrightTimer = 0;
+ // For "peekleftleftleftleft" types
+ self.peekleftleftleftleftTimer = 0;
+ // For "poprightrightrightright" types
+ self.poprightrightrightrightTimer = 0;
+ // For "popleftleftleftleft" types
+ self.popleftleftleftleftTimer = 0;
+ // For "appearleftrightrightright" types
+ self.appearleftrightrightrightTimer = 0;
+ // For "appearrightleftleftleft" types
+ self.appearrightleftleftleftTimer = 0;
+ // For "jumprightrightrightright" types
+ self.jumprightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "jumpleftleftleftleft" types
+ self.jumpleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "dashrightrightrightright" types
+ self.dashrightrightrightrightTimer = 0;
+ // For "dashleftleftleftleft" types
+ self.dashleftleftleftleftTimer = 0;
+ // For "circlerightrightrightright" types
+ self.circlerightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "circleleftleftleftleft" types
+ self.circleleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "zigzagrightrightrightright" types
+ self.zigzagrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "zigzagleftleftleftleft" types
+ self.zigzagleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "waverightrightrightright" types
+ self.waverightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "waveleftleftleftleft" types
+ self.waveleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "randomrightrightrightright" types
+ self.randomrightrightrightrightTimer = 0;
+ // For "randomleftleftleftleft" types
+ self.randomleftleftleftleftTimer = 0;
+ // For "pauserightrightrightright" types
+ self.pauserightrightrightrightTimer = 0;
+ self.isPausedRightRightRightRight = false;
+ // For "pauseleftleftleftleft" types
+ self.pauseleftleftleftleftTimer = 0;
+ self.isPausedLeftLeftLeftLeft = false;
+ // For "hiderightrightrightright" types
+ self.hiderightrightrightrightTimer = 0;
+ self.isHiddenRightRightRightRight = false;
+ // For "hideleftleftleftleft" types
+ self.hideleftleftleftleftTimer = 0;
+ self.isHiddenLeftLeftLeftLeft = false;
+ // For "fliprightrightrightright" types
+ self.fliprightrightrightrightTimer = 0;
+ self.isFlippedRightRightRightRight = false;
+ // For "flipleftleftleftleft" types
+ self.flipleftleftleftleftTimer = 0;
+ self.isFlippedLeftLeftLeftLeft = false;
+ // For "twirlrightrightrightright" types
+ self.twirlrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "twirlleftleftleftleft" types
+ self.twirlleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "driftrightrightrightright" types
+ self.driftrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "driftleftleftleftleft" types
+ self.driftleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "shakerightrightrightright" types
+ self.shakerightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "shakeleftleftleftleft" types
+ self.shakeleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "slideupleftrightrightright" types
+ self.slideupleftrightrightrightTimer = 0;
+ // For "slideuprightleftleftleft" types
+ self.slideuprightleftleftleftTimer = 0;
+ // For "sprintrightrightrightright" types
+ self.sprintrightrightrightrightTimer = 0;
+ // For "sprintleftleftleftleft" types
+ self.sprintleftleftleftleftTimer = 0;
+ // For "hoverrightrightrightright" types
+ self.hoverrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "hoverleftleftleftleft" types
+ self.hoverleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "bobrightrightrightright" types
+ self.bobrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "bobleftleftleftleft" types
+ self.bobleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "sneakrightrightrightright" types
+ self.sneakrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "sneakleftleftleftleft" types
+ self.sneakleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "stomprightrightrightright" types
+ self.stomprightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "stompleftleftleftleft" types
+ self.stompleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "marchrightrightrightright" types
+ self.marchrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "marchleftleftleftleft" types
+ self.marchleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "slideleftrightrightrightright" types
+ self.slideleftrightrightrightrightTimer = 0;
+ // For "slitherleftrightrightrightright" types
+ self.slitherleftrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "hoprightrightrightrightright" types
+ self.hoprightrightrightrightrightTimer = 0;
+ // For "hopleftleftleftleftleft" types
+ self.hopleftleftleftleftleftTimer = 0;
+ // For "jumpuprightrightrightright" types
+ self.jumpuprightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "jumpupleftleftleftleft" types
+ self.jumpupleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "jumpdownrightrightrightright" types
+ self.jumpdownrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "jumpdownleftleftleftleft" types
+ self.jumpdownleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "rollrightrightrightrightright" types
+ self.rollrightrightrightrightrightSpin = 0;
+ // For "rollleftleftleftleftleft" types
+ self.rollleftleftleftleftleftSpin = 0;
+ // For "zoomrightrightrightrightright" types
+ self.zoomrightrightrightrightrightTimer = 0;
+ // For "zoomleftleftleftleftleft" types
+ self.zoomleftleftleftleftleftTimer = 0;
+ // For "bounceuprightrightrightright" types
+ self.bounceuprightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "bounceupleftleftleftleft" types
+ self.bounceupleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "bouncedownrightrightrightright" types
+ self.bouncedownrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "bouncedownleftleftleftleft" types
+ self.bouncedownleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "floatuprightrightrightright" types
+ self.floatuprightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "floatupleftleftleftleft" types
+ self.floatupleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "floatdownrightrightrightright" types
+ self.floatdownrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "floatdownleftleftleftleft" types
+ self.floatdownleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "peekrightrightrightrightright" types
+ self.peekrightrightrightrightrightTimer = 0;
+ // For "peekleftleftleftleftleft" types
+ self.peekleftleftleftleftleftTimer = 0;
+ // For "poprightrightrightrightright" types
+ self.poprightrightrightrightrightTimer = 0;
+ // For "popleftleftleftleftleft" types
+ self.popleftleftleftleftleftTimer = 0;
+ // For "appearleftrightrightrightright" types
+ self.appearleftrightrightrightrightTimer = 0;
+ // For "appearrightleftleftleftleft" types
+ self.appearrightleftleftleftleftTimer = 0;
+ // For "jumprightrightrightrightright" types
+ self.jumprightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "jumpleftleftleftleftleft" types
+ self.jumpleftleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "dashrightrightrightrightright" types
+ self.dashrightrightrightrightrightTimer = 0;
+ // For "dashleftleftleftleftleft" types
+ self.dashleftleftleftleftleftTimer = 0;
+ // For "circlerightrightrightrightright" types
+ self.circlerightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "circleleftleftleftleftleft" types
+ self.circleleftleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "zigzagrightrightrightrightright" types
+ self.zigzagrightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "zigzagleftleftleftleftleft" types
+ self.zigzagleftleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "waverightrightrightrightright" types
+ self.waverightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "waveleftleftleftleftleft" types
+ self.waveleftleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "randomrightrightrightrightright" types
+ self.randomrightrightrightrightrightTimer = 0;
+ // For "randomleftleftleftleftleft" types
+ self.randomleftleftleftleftleftTimer = 0;
+ // For "pauserightrightrightrightright" types
+ self.pauserightrightrightrightrightTimer = 0;
+ self.isPausedRightRightRightRightRight = false;
+ // For "pauseleftleftleftleftleft" types
+ self.pauseleftleftleftleftleftTimer = 0;
+ self.isPausedLeftLeftLeftLeftLeft = false;
+ // For "hiderightrightrightrightright" types
+ self.hiderightrightrightrightrightTimer = 0;
+ self.isHiddenRightRightRightRightRight = false;
+ // For "hideleftleftleftleftleft" types
+ self.hideleftleftleftleftleftTimer = 0;
+ self.isHiddenLeftLeftLeftLeftLeft = false;
+ // For "fliprightrightrightrightright" types
+ self.fliprightrightrightrightrightTimer = 0;
+ self.isFlippedRightRightRightRightRight = false;
+ // For "flipleftleftleftleftleft" types
+ self.flipleftleftleftleftleftTimer = 0;
+ self.isFlippedLeftLeftLeftLeftLeft = false;
+ // For "twirlrightrightrightrightright" types
+ self.twirlrightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "twirlleftleftleftleftleft" types
+ self.twirlleftleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "driftrightrightrightrightright" types
+ self.driftrightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "driftleftleftleftleftleft" types
+ self.driftleftleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "shakerightrightrightrightright" types
+ self.shakerightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "shakeleftleftleftleftleft" types
+ self.shakeleftleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "slideupleftrightrightrightright" types
+ self.slideupleftrightrightrightrightTimer = 0;
+ // For "slideuprightleftleftleftleft" types
+ self.slideuprightleftleftleftleftTimer = 0;
+ // For "sprintrightrightrightrightright" types
+ self.sprintrightrightrightrightrightTimer = 0;
+ // For "sprintleftleftleftleftleft" types
+ self.sprintleftleftleftleftleftTimer = 0;
+ // For "hoverrightrightrightrightright" types
+ self.hoverrightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "hoverleftleftleftleftleft" types
+ self.hoverleftleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "bobrightrightrightrightright" types
+ self.bobrightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "bobleftleftleftleftleft" types
+ self.bobleftleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "sneakrightrightrightrightright" types
+ self.sneakrightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "sneakleftleftleftleftleft" types
+ self.sneakleftleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "stomprightrightrightrightright" types
+ self.stomprightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "stompleftleftleftleftleft" types
+ self.stompleftleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "marchrightrightrightrightright" types
+ self.marchrightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "marchleftleftleftleftleft" types
+ self.marchleftleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "slideleftrightrightrightrightright" types
+ self.slideleftrightrightrightrightrightTimer = 0;
+ // For "slitherleftrightrightrightrightright" types
+ self.slitherleftrightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "hoprightrightrightrightrightright" types
+ self.hoprightrightrightrightrightrightTimer = 0;
+ // For "hopleftleftleftleftleftleft" types
+ self.hopleftleftleftleftleftleftTimer = 0;
+ // For "jumpuprightrightrightrightright" types
+ self.jumpuprightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "jumpupleftleftleftleftleft" types
+ self.jumpupleftleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "jumpdownrightrightrightrightright" types
+ self.jumpdownrightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "jumpdownleftleftleftleftleft" types
+ self.jumpdownleftleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "rollrightrightrightrightrightright" types
+ self.rollrightrightrightrightrightrightSpin = 0;
+ // For "rollleftleftleftleftleftleft" types
+ self.rollleftleftleftleftleftleftSpin = 0;
+ // For "zoomrightrightrightrightrightright" types
+ self.zoomrightrightrightrightrightrightTimer = 0;
+ // For "zoomleftleftleftleftleftleft" types
+ self.zoomleftleftleftleftleftleftTimer = 0;
+ // For "bounceuprightrightrightrightright" types
+ self.bounceuprightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "bounceupleftleftleftleftleft" types
+ self.bounceupleftleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "bouncedownrightrightrightrightright" types
+ self.bouncedownrightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "bouncedownleftleftleftleftleft" types
+ self.bouncedownleftleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "floatuprightrightrightrightright" types
+ self.floatuprightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "floatupleftleftleftleftleft" types
+ self.floatupleftleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "floatdownrightrightrightrightright" types
+ self.floatdownrightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "floatdownleftleftleftleftleft" types
+ self.floatdownleftleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "peekrightrightrightrightrightright" types
+ self.peekrightrightrightrightrightrightTimer = 0;
+ // For "peekleftleftleftleftleftleft" types
+ self.peekleftleftleftleftleftleftTimer = 0;
+ // For "poprightrightrightrightrightright" types
+ self.poprightrightrightrightrightrightTimer = 0;
+ // For "popleftleftleftleftleftleft" types
+ self.popleftleftleftleftleftleftTimer = 0;
+ // For "appearleftrightrightrightrightright" types
+ self.appearleftrightrightrightrightrightTimer = 0;
+ // For "appearrightleftleftleftleftleft" types
+ self.appearrightleftleftleftleftleftTimer = 0;
+ // For "jumprightrightrightrightrightright" types
+ self.jumprightrightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "jumpleftleftleftleftleftleft" types
+ self.jumpleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "dashrightrightrightrightrightright" types
+ self.dashrightrightrightrightrightrightTimer = 0;
+ // For "dashleftleftleftleftleftleft" types
+ self.dashleftleftleftleftleftleftTimer = 0;
+ // For "circlerightrightrightrightrightright" types
+ self.circlerightrightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "circleleftleftleftleftleftleft" types
+ self.circleleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "zigzagrightrightrightrightrightright" types
+ self.zigzagrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "zigzagleftleftleftleftleftleft" types
+ self.zigzagleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "waverightrightrightrightrightright" types
+ self.waverightrightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "waveleftleftleftleftleftleft" types
+ self.waveleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "randomrightrightrightrightrightright" types
+ self.randomrightrightrightrightrightrightTimer = 0;
+ // For "randomleftleftleftleftleftleft" types
+ self.randomleftleftleftleftleftleftTimer = 0;
+ // For "pauserightrightrightrightrightright" types
+ self.pauserightrightrightrightrightrightTimer = 0;
+ self.isPausedRightRightRightRightRightRight = false;
+ // For "pauseleftleftleftleftleftleft" types
+ self.pauseleftleftleftleftleftleftTimer = 0;
+ self.isPausedLeftLeftLeftLeftLeftLeft = false;
+ // For "hiderightrightrightrightrightright" types
+ self.hiderightrightrightrightrightrightTimer = 0;
+ self.isHiddenRightRightRightRightRightRight = false;
+ // For "hideleftleftleftleftleftleft" types
+ self.hideleftleftleftleftleftleftTimer = 0;
+ self.isHiddenLeftLeftLeftLeftLeftLeft = false;
+ // For "fliprightrightrightrightrightright" types
+ self.fliprightrightrightrightrightrightTimer = 0;
+ self.isFlippedRightRightRightRightRightRight = false;
+ // For "flipleftleftleftleftleftleft" types
+ self.flipleftleftleftleftleftleftTimer = 0;
+ self.isFlippedLeftLeftLeftLeftLeftLeft = false;
+ // For "twirlrightrightrightrightrightright" types
+ self.twirlrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "twirlleftleftleftleftleftleft" types
+ self.twirlleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "driftrightrightrightrightrightright" types
+ self.driftrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "driftleftleftleftleftleftleft" types
+ self.driftleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "shakerightrightrightrightrightright" types
+ self.shakerightrightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "shakeleftleftleftleftleftleft" types
+ self.shakeleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "slideupleftrightrightrightrightright" types
+ self.slideupleftrightrightrightrightrightTimer = 0;
+ // For "slideuprightleftleftleftleftleft" types
+ self.slideuprightleftleftleftleftleftTimer = 0;
+ // For "sprintrightrightrightrightrightright" types
+ self.sprintrightrightrightrightrightrightTimer = 0;
+ // For "sprintleftleftleftleftleftleft" types
+ self.sprintleftleftleftleftleftleftTimer = 0;
+ // For "hoverrightrightrightrightrightright" types
+ self.hoverrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "hoverleftleftleftleftleftleft" types
+ self.hoverleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "bobrightrightrightrightrightright" types
+ self.bobrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "bobleftleftleftleftleftleft" types
+ self.bobleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "sneakrightrightrightrightrightright" types
+ self.sneakrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "sneakleftleftleftleftleftleft" types
+ self.sneakleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "stomprightrightrightrightrightright" types
+ self.stomprightrightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "stompleftleftleftleftleftleft" types
+ self.stompleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "marchrightrightrightrightrightright" types
+ self.marchrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "marchleftleftleftleftleftleft" types
+ self.marchleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "slideleftrightrightrightrightrightright" types
+ self.slideleftrightrightrightrightrightrightTimer = 0;
+ // For "slitherleftrightrightrightrightrightright" types
+ self.slitherleftrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "hoprightrightrightrightrightrightright" types
+ self.hoprightrightrightrightrightrightrightTimer = 0;
+ // For "hopleftleftleftleftleftleftleft" types
+ self.hopleftleftleftleftleftleftleftTimer = 0;
+ // For "jumpuprightrightrightrightrightright" types
+ self.jumpuprightrightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "jumpupleftleftleftleftleftleft" types
+ self.jumpupleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "jumpdownrightrightrightrightrightright" types
+ self.jumpdownrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "jumpdownleftleftleftleftleftleft" types
+ self.jumpdownleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "rollrightrightrightrightrightrightright" types
+ self.rollrightrightrightrightrightrightrightSpin = 0;
+ // For "rollleftleftleftleftleftleftleft" types
+ self.rollleftleftleftleftleftleftleftSpin = 0;
+ // For "zoomrightrightrightrightrightrightright" types
+ self.zoomrightrightrightrightrightrightrightTimer = 0;
+ // For "zoomleftleftleftleftleftleftleft" types
+ self.zoomleftleftleftleftleftleftleftTimer = 0;
+ // For "bounceuprightrightrightrightrightright" types
+ self.bounceuprightrightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "bounceupleftleftleftleftleftleft" types
+ self.bounceupleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "bouncedownrightrightrightrightrightright" types
+ self.bouncedownrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "bouncedownleftleftleftleftleftleft" types
+ self.bouncedownleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "floatuprightrightrightrightrightright" types
+ self.floatuprightrightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "floatupleftleftleftleftleftleft" types
+ self.floatupleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "floatdownrightrightrightrightrightright" types
+ self.floatdownrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "floatdownleftleftleftleftleftleft" types
+ self.floatdownleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "peekrightrightrightrightrightrightright" types
+ self.peekrightrightrightrightrightrightrightTimer = 0;
+ // For "peekleftleftleftleftleftleftleft" types
+ self.peekleftleftleftleftleftleftleftTimer = 0;
+ // For "poprightrightrightrightrightrightright" types
+ self.poprightrightrightrightrightrightrightTimer = 0;
+ // For "popleftleftleftleftleftleftleft" types
+ self.popleftleftleftleftleftleftleftTimer = 0;
+ // For "appearleftrightrightrightrightrightright" types
+ self.appearleftrightrightrightrightrightrightTimer = 0;
+ // For "appearrightleftleftleftleftleftleft" types
+ self.appearrightleftleftleftleftleftleftTimer = 0;
+ // For "jumprightrightrightrightrightrightright" types
+ self.jumprightrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "jumpleftleftleftleftleftleftleft" types
+ self.jumpleftleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "dashrightrightrightrightrightrightright" types
+ self.dashrightrightrightrightrightrightrightTimer = 0;
+ // For "dashleftleftleftleftleftleftleft" types
+ self.dashleftleftleftleftleftleftleftTimer = 0;
+ // For "circlerightrightrightrightrightrightright" types
+ self.circlerightrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "circleleftleftleftleftleftleftleft" types
+ self.circleleftleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "zigzagrightrightrightrightrightrightright" types
+ self.zigzagrightrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "zigzagleftleftleftleftleftleftleft" types
+ self.zigzagleftleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "waverightrightrightrightrightrightright" types
+ self.waverightrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "waveleftleftleftleftleftleftleft" types
+ self.waveleftleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "randomrightrightrightrightrightrightright" types
+ self.randomrightrightrightrightrightrightrightTimer = 0;
+ // For "randomleftleftleftleftleftleftleft" types
+ self.randomleftleftleftleftleftleftleftTimer = 0;
+ // For "pauserightrightrightrightrightrightright" types
+ self.pauserightrightrightrightrightrightrightTimer = 0;
+ self.isPausedRightRightRightRightRightRightRight = false;
+ // For "pauseleftleftleftleftleftleftleft" types
+ self.pauseleftleftleftleftleftleftleftTimer = 0;
+ self.isPausedLeftLeftLeftLeftLeftLeftLeft = false;
+ // For "hiderightrightrightrightrightrightright" types
+ self.hiderightrightrightrightrightrightrightTimer = 0;
+ self.isHiddenRightRightRightRightRightRightRight = false;
+ // For "hideleftleftleftleftleftleftleft" types
+ self.hideleftleftleftleftleftleftleftTimer = 0;
+ self.isHiddenLeftLeftLeftLeftLeftLeftLeft = false;
+ // For "fliprightrightrightrightrightrightright" types
+ self.fliprightrightrightrightrightrightrightTimer = 0;
+ self.isFlippedRightRightRightRightRightRightRight = false;
+ // For "flipleftleftleftleftleftleftleft" types
+ self.flipleftleftleftleftleftleftleftTimer = 0;
+ self.isFlippedLeftLeftLeftLeftLeftLeftLeft = false;
+ // For "twirlrightrightrightrightrightrightright" types
+ self.twirlrightrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "twirlleftleftleftleftleftleftleft" types
+ self.twirlleftleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "driftrightrightrightrightrightrightright" types
+ self.driftrightrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "driftleftleftleftleftleftleftleft" types
+ self.driftleftleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "shakerightrightrightrightrightrightright" types
+ self.shakerightrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "shakeleftleftleftleftleftleftleft" types
+ self.shakeleftleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "slideupleftrightrightrightrightrightright" types
+ self.slideupleftrightrightrightrightrightrightTimer = 0;
+ // For "slideuprightleftleftleftleftleftleft" types
+ self.slideuprightleftleftleftleftleftleftTimer = 0;
+ // For "sprintrightrightrightrightrightrightright" types
+ self.sprintrightrightrightrightrightrightrightTimer = 0;
+ // For "sprintleftleftleftleftleftleftleft" types
+ self.sprintleftleftleftleftleftleftleftTimer = 0;
+ // For "hoverrightrightrightrightrightrightright" types
+ self.hoverrightrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "hoverleftleftleftleftleftleftleft" types
+ self.hoverleftleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "bobrightrightrightrightrightrightright" types
+ self.bobrightrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "bobleftleftleftleftleftleftleft" types
+ self.bobleftleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "sneakrightrightrightrightrightrightright" types
+ self.sneakrightrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "sneakleftleftleftleftleftleftleft" types
+ self.sneakleftleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "stomprightrightrightrightrightrightright" types
+ self.stomprightrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "stompleftleftleftleftleftleftleft" types
+ self.stompleftleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "marchrightrightrightrightrightrightright" types
+ self.marchrightrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "marchleftleftleftleftleftleftleft" types
+ self.marchleftleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "slideleftrightrightrightrightrightrightright" types
+ self.slideleftrightrightrightrightrightrightrightTimer = 0;
+ // For "slitherleftrightrightrightrightrightrightright" types
+ self.slitherleftrightrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "hoprightrightrightrightrightrightrightright" types
+ self.hoprightrightrightrightrightrightrightrightTimer = 0;
+ // For "hopleftleftleftleftleftleftleftleft" types
+ self.hopleftleftleftleftleftleftleftleftTimer = 0;
+ // For "jumpuprightrightrightrightrightrightright" types
+ self.jumpuprightrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "jumpupleftleftleftleftleftleftleft" types
+ self.jumpupleftleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "jumpdownrightrightrightrightrightrightright" types
+ self.jumpdownrightrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "jumpdownleftleftleftleftleftleftleft" types
+ self.jumpdownleftleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "rollrightrightrightrightrightrightrightright" types
+ self.rollrightrightrightrightrightrightrightrightSpin = 0;
+ // For "rollleftleftleftleftleftleftleftleft" types
+ self.rollleftleftleftleftleftleftleftleftSpin = 0;
+ // For "zoomrightrightrightrightrightrightrightright" types
+ self.zoomrightrightrightrightrightrightrightrightTimer = 0;
+ // For "zoomleftleftleftleftleftleftleftleft" types
+ self.zoomleftleftleftleftleftleftleftleftTimer = 0;
+ // For "bounceuprightrightrightrightrightrightright" types
+ self.bounceuprightrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "bounceupleftleftleftleftleftleftleft" types
+ self.bounceupleftleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "bouncedownrightrightrightrightrightrightright" types
+ self.bouncedownrightrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "bouncedownleftleftleftleftleftleftleft" types
+ self.bouncedownleftleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "floatuprightrightrightrightrightrightright" types
+ self.floatuprightrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "floatupleftleftleftleftleftleftleft" types
+ self.floatupleftleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "floatdownrightrightrightrightrightrightright" types
+ self.floatdownrightrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "floatdownleftleftleftleftleftleftleft" types
+ self.floatdownleftleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "peekrightrightrightrightrightrightrightright" types
+ self.peekrightrightrightrightrightrightrightrightTimer = 0;
+ // For "peekleftleftleftleftleftleftleftleft" types
+ self.peekleftleftleftleftleftleftleftleftTimer = 0;
+ // For "poprightrightrightrightrightrightrightright" types
+ self.poprightrightrightrightrightrightrightrightTimer = 0;
+ // For "popleftleftleftleftleftleftleftleft" types
+ self.popleftleftleftleftleftleftleftleftTimer = 0;
+ // For "appearleftrightrightrightrightrightright" types
+ self.appearleftrightrightrightrightrightrightrightTimer = 0;
+ // For "appearrightleftleftleftleftleftleftleft" types
+ self.appearrightleftleftleftleftleftleftleftTimer = 0;
+ // For "jumprightrightrightrightrightrightrightright" types
+ self.jumprightrightrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "jumpleftleftleftleftleftleftleftleft" types
+ self.jumpleftleftleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "dashrightrightrightrightrightrightrightright" types
+ self.dashrightrightrightrightrightrightrightrightTimer = 0;
+ // For "dashleftleftleftleftleftleftleftleft" types
+ self.dashleftleftleftleftleftleftleftleftTimer = 0;
+ // For "circlerightrightrightrightrightrightrightright" types
+ self.circlerightrightrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "circleleftleftleftleftleftleftleftleft" types
+ self.circleleftleftleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "zigzagrightrightrightrightrightrightrightright" types
+ self.zigzagrightrightrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "zigzagleftleftleftleftleftleftleftleft" types
+ self.zigzagleftleftleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "waverightrightrightrightrightrightrightright" types
+ self.waverightrightrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "waveleftleftleftleftleftleftleftleft" types
+ self.waveleftleftleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "randomrightrightrightrightrightrightrightright" types
+ self.randomrightrightrightrightrightrightrightrightTimer = 0;
+ // For "randomleftleftleftleftleftleftleftleft" types
+ self.randomleftleftleftleftleftleftleftleftTimer = 0;
+ // For "pauserightrightrightrightrightrightrightright" types
+ self.pauserightrightrightrightrightrightrightrightTimer = 0;
+ self.isPausedRightRightRightRightRightRightRightRight = false;
+ // For "pauseleftleftleftleftleftleftleftleft" types
+ self.pauseleftleftleftleftleftleftleftleftTimer = 0;
+ self.isPausedLeftLeftLeftLeftLeftLeftLeftLeft = false;
+ // For "hiderightrightrightrightrightrightrightright" types
+ self.hiderightrightrightrightrightrightrightrightTimer = 0;
+ self.isHiddenRightRightRightRightRightRightRightRight = false;
+ // For "hideleftleftleftleftleftleftleftleft" types
+ self.hideleftleftleftleftleftleftleftleftTimer = 0;
+ self.isHiddenLeftLeftLeftLeftLeftLeftLeftLeft = false;
+ // For "fliprightrightrightrightrightrightrightright" types
+ self.fliprightrightrightrightrightrightrightrightTimer = 0;
+ self.isFlippedRightRightRightRightRightRightRightRight = false;
+ // For "flipleftleftleftleftleftleftleftleft" types
+ self.flipleftleftleftleftleftleftleftleftTimer = 0;
+ self.isFlippedLeftLeftLeftLeftLeftLeftLeftLeft = false;
+ // For "twirlrightrightrightrightrightrightrightright" types
+ self.twirlrightrightrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "twirlleftleftleftleftleftleftleftleft" types
+ self.twirlleftleftleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "driftrightrightrightrightrightrightrightright" types
+ self.driftrightrightrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "driftleftleftleftleftleftleftleftleft" types
+ self.driftleftleftleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "shakerightrightrightrightrightrightrightright" types
+ self.shakerightrightrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "shakeleftleftleftleftleftleftleftleft" types
+ self.shakeleftleftleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "slideupleftrightrightrightrightrightrightright" types
+ self.slideupleftrightrightrightrightrightrightrightTimer = 0;
+ // For "slideuprightleftleftleftleftleftleftleft" types
+ self.slideuprightleftleftleftleftleftleftleftTimer = 0;
+ // For "sprintrightrightrightrightrightrightrightright" types
+ self.sprintrightrightrightrightrightrightrightrightTimer = 0;
+ // For "sprintleftleftleftleftleftleftleftleft" types
+ self.sprintleftleftleftleftleftleftleftleftTimer = 0;
+ // For "hoverrightrightrightrightrightrightrightright" types
+ self.hoverrightrightrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "hoverleftleftleftleftleftleftleftleft" types
+ self.hoverleftleftleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "bobrightrightrightrightrightrightrightright" types
+ self.bobrightrightrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "bobleftleftleftleftleftleftleftleft" types
+ self.bobleftleftleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "sneakrightrightrightrightrightrightrightright" types
+ self.sneakrightrightrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "sneakleftleftleftleftleftleftleftleft" types
+ self.sneakleftleftleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "stomprightrightrightrightrightrightrightright" types
+ self.stomprightrightrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "stompleftleftleftleftleftleftleftleft" types
+ self.stompleftleftleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // For "marchrightrightrightrightrightrightrightright" types
+ self.marchrightrightrightrightrightrightrightrightPhase = Math.random() * Math.PI * 2;
+ // For "marchleftleftleftleftleftleftleftleft" types
+ self.marchleftleftleftleftleftleftleftleftPhase = Math.random() * Math.PI * 2;
+ // Movement update
self.update = function () {
- // Move horizontally
- self.x += self.direction * self.speed;
- // Bounce off screen edges
- if (self.lastX >= 0 && self.x < 0) {
- self.direction = 1;
- self.x = 0;
+ // Only move if not paused/hidden
+ if (self.isHidden) return;
+ // Movement patterns
+ var t = LK.ticks;
+ var baseY = self.baseY || self.y;
+ var baseX = self.baseX || self.x;
+ if (self.moveType === "walk") {
+ self.x += self.speed * self.direction;
+ // Bounce off edges
+ if (self.x < self.width / 2) {
+ self.x = self.width / 2;
+ self.direction = 1;
+ }
+ if (self.x > 2048 - self.width / 2) {
+ self.x = 2048 - self.width / 2;
+ self.direction = -1;
+ }
+ } else if (self.moveType === "hop") {
+ self.x += self.speed * self.direction;
+ self.hopTimer += 1;
+ self.y = baseY - Math.abs(Math.sin(self.hopTimer * 0.1)) * 60;
+ if (self.x < self.width / 2) {
+ self.x = self.width / 2;
+ self.direction = 1;
+ }
+ if (self.x > 2048 - self.width / 2) {
+ self.x = 2048 - self.width / 2;
+ self.direction = -1;
+ }
+ } else if (self.moveType === "fly") {
+ self.x += self.speed * self.direction;
+ self.y = baseY - Math.sin(t * 0.05 + self.flyPhase) * 80;
+ if (self.x < self.width / 2) {
+ self.x = self.width / 2;
+ self.direction = 1;
+ }
+ if (self.x > 2048 - self.width / 2) {
+ self.x = 2048 - self.width / 2;
+ self.direction = -1;
+ }
+ } else if (self.moveType === "roll") {
+ self.x += self.speed * self.direction;
+ asset.rotation += 0.1 * self.direction;
+ if (self.x < self.width / 2) {
+ self.x = self.width / 2;
+ self.direction = 1;
+ }
+ if (self.x > 2048 - self.width / 2) {
+ self.x = 2048 - self.width / 2;
+ self.direction = -1;
+ }
+ } else if (self.moveType === "wiggle") {
+ self.x += self.speed * self.direction;
+ asset.y = Math.sin(t * 0.2 + self.wigglePhase) * 10;
+ asset.rotation = Math.sin(t * 0.1 + self.wigglePhase) * 0.2;
+ if (self.x < self.width / 2) {
+ self.x = self.width / 2;
+ self.direction = 1;
+ }
+ if (self.x > 2048 - self.width / 2) {
+ self.x = 2048 - self.width / 2;
+ self.direction = -1;
+ }
+ } else if (self.moveType === "slide") {
+ self.slideTimer += 1;
+ self.x += self.speed * self.direction * (Math.abs(Math.sin(self.slideTimer * 0.05)) + 0.5);
+ if (self.x < self.width / 2) {
+ self.x = self.width / 2;
+ self.direction = 1;
+ }
+ if (self.x > 2048 - self.width / 2) {
+ self.x = 2048 - self.width / 2;
+ self.direction = -1;
+ }
+ } else if (self.moveType === "bounce") {
+ self.x += self.speed * self.direction;
+ self.y = baseY - Math.abs(Math.sin(t * 0.15 + self.bouncePhase)) * 40;
+ if (self.x < self.width / 2) {
+ self.x = self.width / 2;
+ self.direction = 1;
+ }
+ if (self.x > 2048 - self.width / 2) {
+ self.x = 2048 - self.width / 2;
+ self.direction = -1;
+ }
+ } else if (self.moveType === "float") {
+ self.x += self.speed * self.direction * 0.5;
+ self.y = baseY - Math.sin(t * 0.07 + self.floatPhase) * 30;
+ if (self.x < self.width / 2) {
+ self.x = self.width / 2;
+ self.direction = 1;
+ }
+ if (self.x > 2048 - self.width / 2) {
+ self.x = 2048 - self.width / 2;
+ self.direction = -1;
+ }
+ } else if (self.moveType === "crawl") {
+ self.x += self.speed * self.direction * 0.7;
+ asset.y = Math.sin(t * 0.25 + self.crawlPhase) * 5;
+ if (self.x < self.width / 2) {
+ self.x = self.width / 2;
+ self.direction = 1;
+ }
+ if (self.x > 2048 - self.width / 2) {
+ self.x = 2048 - self.width / 2;
+ self.direction = -1;
+ }
+ } else if (self.moveType === "zoom") {
+ self.zoomTimer += 1;
+ self.x += self.speed * self.direction * (1 + Math.abs(Math.sin(self.zoomTimer * 0.2)));
+ if (self.x < self.width / 2) {
+ self.x = self.width / 2;
+ self.direction = 1;
+ }
+ if (self.x > 2048 - self.width / 2) {
+ self.x = 2048 - self.width / 2;
+ self.direction = -1;
+ }
+ } else if (self.moveType === "spin") {
+ self.x += self.speed * self.direction * 0.8;
+ asset.rotation += self.spinSpeed * self.direction;
+ if (self.x < self.width / 2) {
+ self.x = self.width / 2;
+ self.direction = 1;
+ }
+ if (self.x > 2048 - self.width / 2) {
+ self.x = 2048 - self.width / 2;
+ self.direction = -1;
+ }
+ } else if (self.moveType === "sway") {
+ self.x += self.speed * self.direction * 0.6;
+ asset.x = Math.sin(t * 0.15 + self.swayPhase) * 20;
+ if (self.x < self.width / 2) {
+ self.x = self.width / 2;
+ self.direction = 1;
+ }
+ if (self.x > 2048 - self.width / 2) {
+ self.x = 2048 - self.width / 2;
+ self.direction = -1;
+ }
+ } else if (self.moveType === "wave") {
+ self.x += self.speed * self.direction * 0.7;
+ self.y = baseY - Math.sin(t * 0.12 + self.wavePhase) * 25;
+ if (self.x < self.width / 2) {
+ self.x = self.width / 2;
+ self.direction = 1;
+ }
+ if (self.x > 2048 - self.width / 2) {
+ self.x = 2048 - self.width / 2;
+ self.direction = -1;
+ }
+ } else if (self.moveType === "zigzag") {
+ self.x += self.speed * self.direction;
+ self.y = baseY + Math.sin(t * 0.18 + self.zigzagPhase) * 40;
+ if (self.x < self.width / 2) {
+ self.x = self.width / 2;
+ self.direction = 1;
+ }
+ if (self.x > 2048 - self.width / 2) {
+ self.x = 2048 - self.width / 2;
+ self.direction = -1;
+ }
+ } else {
+ // Default: walk
+ self.x += self.speed * self.direction;
+ if (self.x < self.width / 2) {
+ self.x = self.width / 2;
+ self.direction = 1;
+ }
+ if (self.x > 2048 - self.width / 2) {
+ self.x = 2048 - self.width / 2;
+ self.direction = -1;
+ }
}
- if (self.lastX <= 2048 && self.x > 2048) {
- self.direction = -1;
- self.x = 2048;
- }
- // Random direction changes
- self.bounceTimer++;
- if (self.bounceTimer > 120 + Math.random() * 240) {
- // Every 2-6 seconds
- self.direction *= -1;
- self.bounceTimer = 0;
- }
- // Update last position
- self.lastX = self.x;
};
return self;
});
/****
* Initialize Game
****/
-// List of all 30 spawnable words
var game = new LK.Game({
- backgroundColor: 0x87CEEB // Sky blue background
+ backgroundColor: 0x8fd97b // Grassy green
});
/****
* Game Code
****/
-// List of all 30 spawnable words
-// Initialize 30 spawnable animals and objects
-// Background and UI assets
-var spawnableWords = ['cow', 'pig', 'sheep', 'horse', 'chicken', 'dog', 'cat', 'rabbit', 'duck', 'goat', 'turkey', 'donkey', 'llama', 'peacock', 'owl', 'butterfly', 'bee', 'frog', 'snail', 'mushroom', 'flower', 'tree', 'rock', 'apple', 'carrot', 'pumpkin', 'corn', 'sunflower', 'berry', 'acorn'];
-// Game state
-var spawnedCreatures = [];
-var discoveredWords = [];
-var currentInput = '';
-// Create grass field background
-var grassField = LK.getAsset('grass_field', {
+// List of 30 spawnable items: word, assetId, movement type, color, shape, size
+var PARADE_ITEMS = [{
+ word: "cat",
+ assetId: "cat",
+ moveType: "walk",
+ color: 0xcccccc,
+ shape: "ellipse",
+ width: 120,
+ height: 80
+}, {
+ word: "dog",
+ assetId: "dog",
+ moveType: "walk",
+ color: 0x996633,
+ shape: "ellipse",
+ width: 140,
+ height: 90
+}, {
+ word: "rabbit",
+ assetId: "rabbit",
+ moveType: "hop",
+ color: 0xffffff,
+ shape: "ellipse",
+ width: 100,
+ height: 70
+}, {
+ word: "duck",
+ assetId: "duck",
+ moveType: "waddle",
+ color: 0xffee44,
+ shape: "ellipse",
+ width: 110,
+ height: 80
+}, {
+ word: "sheep",
+ assetId: "sheep",
+ moveType: "walk",
+ color: 0xf0f0f0,
+ shape: "ellipse",
+ width: 130,
+ height: 90
+}, {
+ word: "pig",
+ assetId: "pig",
+ moveType: "wiggle",
+ color: 0xffb6c1,
+ shape: "ellipse",
+ width: 120,
+ height: 80
+}, {
+ word: "cow",
+ assetId: "cow",
+ moveType: "walk",
+ color: 0xffffff,
+ shape: "ellipse",
+ width: 160,
+ height: 100
+}, {
+ word: "horse",
+ assetId: "horse",
+ moveType: "gallop",
+ color: 0x8b5a2b,
+ shape: "ellipse",
+ width: 170,
+ height: 100
+}, {
+ word: "chicken",
+ assetId: "chicken",
+ moveType: "peck",
+ color: 0xfff8dc,
+ shape: "ellipse",
+ width: 90,
+ height: 60
+}, {
+ word: "goat",
+ assetId: "goat",
+ moveType: "walk",
+ color: 0xe0e0e0,
+ shape: "ellipse",
+ width: 120,
+ height: 80
+}, {
+ word: "frog",
+ assetId: "frog",
+ moveType: "hop",
+ color: 0x44cc44,
+ shape: "ellipse",
+ width: 80,
+ height: 60
+}, {
+ word: "mouse",
+ assetId: "mouse",
+ moveType: "scurry",
+ color: 0xaaaaaa,
+ shape: "ellipse",
+ width: 70,
+ height: 40
+}, {
+ word: "fox",
+ assetId: "fox",
+ moveType: "sneak",
+ color: 0xff6600,
+ shape: "ellipse",
+ width: 110,
+ height: 70
+}, {
+ word: "owl",
+ assetId: "owl",
+ moveType: "fly",
+ color: 0x888888,
+ shape: "ellipse",
+ width: 100,
+ height: 80
+}, {
+ word: "bee",
+ assetId: "bee",
+ moveType: "zigzag",
+ color: 0xffee00,
+ shape: "ellipse",
+ width: 60,
+ height: 40
+}, {
+ word: "butterfly",
+ assetId: "butterfly",
+ moveType: "wave",
+ color: 0xff99ff,
+ shape: "ellipse",
+ width: 80,
+ height: 60
+}, {
+ word: "snail",
+ assetId: "snail",
+ moveType: "crawl",
+ color: 0xcccc99,
+ shape: "ellipse",
+ width: 70,
+ height: 50
+}, {
+ word: "turtle",
+ assetId: "turtle",
+ moveType: "crawl",
+ color: 0x228b22,
+ shape: "ellipse",
+ width: 100,
+ height: 70
+}, {
+ word: "fish",
+ assetId: "fish",
+ moveType: "swim",
+ color: 0x3399ff,
+ shape: "ellipse",
+ width: 90,
+ height: 50
+}, {
+ word: "bird",
+ assetId: "bird",
+ moveType: "fly",
+ color: 0x87ceeb,
+ shape: "ellipse",
+ width: 90,
+ height: 60
+}, {
+ word: "car",
+ assetId: "car",
+ moveType: "roll",
+ color: 0x3366cc,
+ shape: "box",
+ width: 140,
+ height: 60
+}, {
+ word: "bus",
+ assetId: "bus",
+ moveType: "roll",
+ color: 0xffcc00,
+ shape: "box",
+ width: 200,
+ height: 80
+}, {
+ word: "train",
+ assetId: "train",
+ moveType: "roll",
+ color: 0x888888,
+ shape: "box",
+ width: 220,
+ height: 70
+}, {
+ word: "ball",
+ assetId: "ball",
+ moveType: "bounce",
+ color: 0xff3333,
+ shape: "ellipse",
+ width: 80,
+ height: 80
+}, {
+ word: "robot",
+ assetId: "robot",
+ moveType: "slide",
+ color: 0xcccccc,
+ shape: "box",
+ width: 100,
+ height: 100
+}, {
+ word: "apple",
+ assetId: "apple",
+ moveType: "wiggle",
+ color: 0xff2222,
+ shape: "ellipse",
+ width: 60,
+ height: 60
+}, {
+ word: "banana",
+ assetId: "banana",
+ moveType: "wiggle",
+ color: 0xffee00,
+ shape: "ellipse",
+ width: 80,
+ height: 40
+}, {
+ word: "star",
+ assetId: "star",
+ moveType: "float",
+ color: 0xffff00,
+ shape: "ellipse",
+ width: 70,
+ height: 70
+}, {
+ word: "cloud",
+ assetId: "cloud",
+ moveType: "float",
+ color: 0xffffff,
+ shape: "ellipse",
+ width: 180,
+ height: 90
+}, {
+ word: "moon",
+ assetId: "moon",
+ moveType: "float",
+ color: 0xffffcc,
+ shape: "ellipse",
+ width: 100,
+ height: 100
+}];
+// Map for quick lookup
+var PARADE_WORDS = {};
+for (var i = 0; i < PARADE_ITEMS.length; i++) {
+ PARADE_WORDS[PARADE_ITEMS[i].word] = PARADE_ITEMS[i];
+}
+// Track which items have been discovered
+var discovered = {};
+// Track all parade items on screen
+var paradeItems = [];
+// Initialize assets (shapes) for all items
+for (var i = 0; i < PARADE_ITEMS.length; i++) {
+ var item = PARADE_ITEMS[i];
+}
+// Draw the "ground" as a green rectangle at the bottom
+var ground = LK.getAsset('ground', {
+ width: 2048,
+ height: 220,
+ color: 0x5cb85c,
+ shape: "box",
anchorX: 0,
- anchorY: 0,
+ anchorY: 1,
x: 0,
- y: 0
+ y: 2732
});
-game.addChild(grassField);
-// Create input display box
-var inputBox = LK.getAsset('input_box', {
+game.addChild(ground);
+// Title text
+var titleTxt = new Text2("Type & Spawn: Animal Parade", {
+ size: 90,
+ fill: 0xFFFFFF
+});
+titleTxt.anchor.set(0.5, 0);
+LK.gui.top.addChild(titleTxt);
+// Discovered counter
+var discoveredTxt = new Text2("Discovered: 0/30", {
+ size: 60,
+ fill: 0xFFFFFF
+});
+discoveredTxt.anchor.set(0.5, 0);
+LK.gui.top.addChild(discoveredTxt);
+// Instructions
+var instrTxt = new Text2("Type a word and press 'Spawn'!", {
+ size: 60,
+ fill: 0xFFFFFF
+});
+instrTxt.anchor.set(0.5, 0);
+LK.gui.bottom.addChild(instrTxt);
+// Input field (simulated with a Text2 and a "Spawn" button)
+var inputWord = "";
+var inputTxt = new Text2("", {
+ size: 80,
+ fill: 0x222222
+});
+inputTxt.anchor.set(0.5, 0.5);
+inputTxt.x = 2048 / 2;
+inputTxt.y = 2732 - 350;
+game.addChild(inputTxt);
+// "Spawn" button
+var spawnBtn = LK.getAsset('spawnBtn', {
+ width: 320,
+ height: 120,
+ color: 0x4a90e2,
+ shape: "box",
anchorX: 0.5,
anchorY: 0.5,
- x: 1024,
- y: 150
+ x: 2048 / 2,
+ y: 2732 - 200
});
-game.addChild(inputBox);
-// Create input text display
-var inputText = new Text2('Type an animal or object...', {
- size: 40,
- fill: 0x333333
+game.addChild(spawnBtn);
+var spawnBtnTxt = new Text2("Spawn", {
+ size: 70,
+ fill: 0xFFFFFF
});
-inputText.anchor.set(0.5, 0.5);
-inputText.x = 1024;
-inputText.y = 150;
-game.addChild(inputText);
-// Create discovered counter
-var discoveredText = new Text2('Discovered: 0/30', {
+spawnBtnTxt.anchor.set(0.5, 0.5);
+spawnBtnTxt.x = spawnBtn.x;
+spawnBtnTxt.y = spawnBtn.y;
+game.addChild(spawnBtnTxt);
+// On-screen keyboard (letters A-Z, backspace, space)
+var keyboardLetters = ["QWERTYUIOP", "ASDFGHJKL", "ZXCVBNM"];
+var keyboardKeys = [];
+var keySize = 120;
+var keyMargin = 18;
+var kbStartY = 2732 - 650;
+for (var row = 0; row < keyboardLetters.length; row++) {
+ var letters = keyboardLetters[row];
+ var y = kbStartY + row * (keySize + keyMargin);
+ var rowWidth = letters.length * (keySize + keyMargin) - keyMargin;
+ var x0 = (2048 - rowWidth) / 2 + keySize / 2;
+ for (var col = 0; col < letters.length; col++) {
+ var ch = letters[col];
+ var key = LK.getAsset("key_" + ch, {
+ width: keySize,
+ height: keySize,
+ color: 0xffffff,
+ shape: "box",
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: x0 + col * (keySize + keyMargin),
+ y: y
+ });
+ game.addChild(key);
+ var keyTxt = new Text2(ch, {
+ size: 60,
+ fill: 0x222222
+ });
+ keyTxt.anchor.set(0.5, 0.5);
+ keyTxt.x = key.x;
+ keyTxt.y = key.y;
+ game.addChild(keyTxt);
+ keyboardKeys.push({
+ key: key,
+ letter: ch
+ });
+ }
+}
+// Spacebar
+var spaceKey = LK.getAsset('key_space', {
+ width: keySize * 4 + keyMargin * 3,
+ height: keySize,
+ color: 0xffffff,
+ shape: "box",
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: 2048 / 2,
+ y: kbStartY + 3 * (keySize + keyMargin)
+});
+game.addChild(spaceKey);
+var spaceTxt = new Text2("SPACE", {
size: 50,
- fill: 0xFFFFFF
+ fill: 0x222222
});
-discoveredText.anchor.set(0.5, 0);
-LK.gui.top.addChild(discoveredText);
-discoveredText.y = 50;
-// Create instruction text
-var instructionText = new Text2('Type words to spawn creatures!', {
- size: 35,
- fill: 0xFFFFFF
+spaceTxt.anchor.set(0.5, 0.5);
+spaceTxt.x = spaceKey.x;
+spaceTxt.y = spaceKey.y;
+game.addChild(spaceTxt);
+// Backspace
+var backKey = LK.getAsset('key_back', {
+ width: keySize * 2 + keyMargin,
+ height: keySize,
+ color: 0xffffff,
+ shape: "box",
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: 2048 / 2 + 350,
+ y: kbStartY + 3 * (keySize + keyMargin)
});
-instructionText.anchor.set(0.5, 0);
-instructionText.x = 1024;
-instructionText.y = 200;
-game.addChild(instructionText);
-// Handle keyboard input simulation through touch
-var keyboardActive = false;
-function spawnCreature(word) {
- if (spawnableWords.indexOf(word) !== -1) {
- // Check if already discovered
- if (discoveredWords.indexOf(word) === -1) {
- discoveredWords.push(word);
- discoveredText.setText('Discovered: ' + discoveredWords.length + '/30');
- }
- // Create new creature
- var newCreature = new SpawnableCreature(word);
- spawnedCreatures.push(newCreature);
- game.addChild(newCreature);
- // Success feedback
- LK.effects.flashObject(inputBox, 0x00ff00, 500);
- return true;
+game.addChild(backKey);
+var backTxt = new Text2("⌫", {
+ size: 60,
+ fill: 0x222222
+});
+backTxt.anchor.set(0.5, 0.5);
+backTxt.x = backKey.x;
+backTxt.y = backKey.y;
+game.addChild(backTxt);
+// Keyboard input handling
+function handleKeyPress(ch) {
+ if (inputWord.length < 16) {
+ inputWord += ch;
+ inputTxt.setText(inputWord);
}
- return false;
}
-function processInput() {
- var word = currentInput.toLowerCase().trim();
- if (word.length > 0) {
- var spawned = spawnCreature(word);
- if (!spawned) {
- // Invalid word feedback
- LK.effects.flashObject(inputBox, 0xff0000, 500);
- }
+function handleBackspace() {
+ inputWord = inputWord.slice(0, -1);
+ inputTxt.setText(inputWord);
+}
+function handleSpace() {
+ if (inputWord.length < 16) {
+ inputWord += " ";
+ inputTxt.setText(inputWord);
}
- currentInput = '';
- updateInputDisplay();
}
-function updateInputDisplay() {
- if (currentInput.length === 0) {
- inputText.setText('Type an animal or object...');
- inputText.style.fill = "#888888";
+function handleSpawn() {
+ var word = inputWord.trim().toLowerCase();
+ if (PARADE_WORDS[word]) {
+ spawnParadeItem(word);
+ inputWord = "";
+ inputTxt.setText("");
} else {
- inputText.setText(currentInput);
- inputText.style.fill = "#333333";
+ // Flash input red for 500ms
+ tween(inputTxt, {
+ tint: 0xff3333
+ }, {
+ duration: 100,
+ onFinish: function onFinish() {
+ tween(inputTxt, {
+ tint: 0x222222
+ }, {
+ duration: 400
+ });
+ }
+ });
}
}
-// Simple touch-based letter input system
-var alphabet = 'abcdefghijklmnopqrstuvwxyz';
-var letterButtons = [];
-// Create virtual keyboard
-for (var i = 0; i < alphabet.length; i++) {
- var letter = alphabet[i];
- var buttonY = 2500 + Math.floor(i / 9) * 80;
- var buttonX = 200 + i % 9 * 180;
- var letterButton = new Text2(letter.toUpperCase(), {
- size: 50,
- fill: 0xFFFFFF
- });
- letterButton.anchor.set(0.5, 0.5);
- letterButton.x = buttonX;
- letterButton.y = buttonY;
- letterButton.letter = letter;
- letterButton.down = function (x, y, obj) {
- currentInput += this.letter;
- updateInputDisplay();
- LK.effects.flashObject(this, 0xffff00, 200);
- };
- game.addChild(letterButton);
- letterButtons.push(letterButton);
+// Attach event listeners to keys
+for (var i = 0; i < keyboardKeys.length; i++) {
+ (function (keyObj) {
+ keyObj.key.down = function (x, y, obj) {
+ handleKeyPress(keyObj.letter);
+ };
+ })(keyboardKeys[i]);
}
-// Add space and enter buttons
-var spaceButton = new Text2('SPACE', {
- size: 40,
- fill: 0xFFFFFF
-});
-spaceButton.anchor.set(0.5, 0.5);
-spaceButton.x = 400;
-spaceButton.y = 2740;
-spaceButton.down = function () {
- currentInput += ' ';
- updateInputDisplay();
+spaceKey.down = function (x, y, obj) {
+ handleSpace();
};
-game.addChild(spaceButton);
-var enterButton = new Text2('ENTER', {
- size: 40,
- fill: 0x00FF00
-});
-enterButton.anchor.set(0.5, 0.5);
-enterButton.x = 600;
-enterButton.y = 2740;
-enterButton.down = function () {
- processInput();
+backKey.down = function (x, y, obj) {
+ handleBackspace();
};
-game.addChild(enterButton);
-var backButton = new Text2('BACK', {
- size: 40,
- fill: 0xFF6666
-});
-backButton.anchor.set(0.5, 0.5);
-backButton.x = 800;
-backButton.y = 2740;
-backButton.down = function () {
- if (currentInput.length > 0) {
- currentInput = currentInput.slice(0, -1);
- updateInputDisplay();
- }
+spawnBtn.down = function (x, y, obj) {
+ handleSpawn();
};
-game.addChild(backButton);
-// Initialize input display
-updateInputDisplay();
-// Main game update loop
+inputTxt.down = function (x, y, obj) {
+ // No-op, but could focus input if we had a real input field
+};
+// Spawn a parade item
+function spawnParadeItem(word) {
+ var item = PARADE_WORDS[word];
+ // Mark as discovered
+ if (!discovered[word]) {
+ discovered[word] = true;
+ updateDiscoveredTxt();
+ // Flash discovered text green
+ tween(discoveredTxt, {
+ tint: 0x44ff44
+ }, {
+ duration: 200,
+ onFinish: function onFinish() {
+ tween(discoveredTxt, {
+ tint: 0xffffff
+ }, {
+ duration: 400
+ });
+ }
+ });
+ }
+ // Create ParadeItem
+ var parade = new ParadeItem();
+ parade.assetId = item.assetId;
+ parade.moveType = getMoveType(item.moveType);
+ parade.width = item.width;
+ parade.height = item.height;
+ // Place at random x along the ground, y at ground level
+ parade.x = Math.random() * (2048 - parade.width) + parade.width / 2;
+ parade.y = 2732 - 220 + 10; // Just above ground
+ parade.baseY = parade.y;
+ parade.baseX = parade.x;
+ paradeItems.push(parade);
+ game.addChild(parade);
+ // Animate in (pop up)
+ parade.scaleX = parade.scaleY = 0.1;
+ tween(parade, {
+ scaleX: 1,
+ scaleY: 1
+ }, {
+ duration: 300,
+ easing: tween.bounceOut
+ });
+}
+// Update discovered text
+function updateDiscoveredTxt() {
+ var count = 0;
+ for (var k in discovered) if (discovered[k]) count++;
+ discoveredTxt.setText("Discovered: " + count + "/30");
+}
+// Map movement type string to ParadeItem moveType
+function getMoveType(type) {
+ // Map some fun types to our implemented types
+ if (type === "waddle" || type === "gallop" || type === "scurry" || type === "peck" || type === "sneak" || type === "swim") return "walk";
+ return type;
+}
+// Parade item update
game.update = function () {
- // Update all spawned creatures
- for (var i = spawnedCreatures.length - 1; i >= 0; i--) {
- var creature = spawnedCreatures[i];
- creature.update();
+ for (var i = 0; i < paradeItems.length; i++) {
+ paradeItems[i].update();
}
- // Check win condition
- if (discoveredWords.length >= 30) {
- LK.showYouWin();
- }
+};
+// Show all discovered items on game over
+game.gameOver = function () {
+ // Not needed, handled by LK
+};
+// Show all discovered items on win
+game.youWin = function () {
+ // Not needed, handled by LK
};
\ No newline at end of file
Cow. In-Game asset. 2d. High contrast. No shadows
Chicken Alive. In-Game asset. 2d. High contrast. No shadows
Banana. In-Game asset. 2d. High contrast. No shadows
Cat. In-Game asset. 2d. High contrast. No shadows
Dog. In-Game asset. 2d. High contrast. No shadows
Rabbit. In-Game asset. 2d. High contrast. No shadows
Duck. In-Game asset. 2d. High contrast. No shadows
Sheep. In-Game asset. 2d. High contrast. No shadows
Pig. In-Game asset. 2d. High contrast. No shadows
Horse. In-Game asset. 2d. High contrast. No shadows
Mouse animal. In-Game asset. 2d. High contrast. No shadows
Owl. In-Game asset. 2d. High contrast. No shadows
Bee. In-Game asset. 2d. High contrast. No shadows
Butterfly. In-Game asset. 2d. High contrast. No shadows
Chihuahua. In-Game asset. 2d. High contrast. No shadows
Bird. In-Game asset. 2d. High contrast. No shadows
Snail. In-Game asset. 2d. High contrast. No shadows
Fish. In-Game asset. 2d. High contrast. No shadows
Car. In-Game asset. 2d. High contrast. No shadows
Fox. In-Game asset. 2d. High contrast. No shadows
Bus. In-Game asset. 2d. High contrast. No shadows
Train. In-Game asset. 2d. High contrast. No shadows
bouncy ball. In-Game asset. 2d. High contrast. No shadows
Robot. In-Game asset. 2d. High contrast. No shadows
Turtle. In-Game asset. 2d. High contrast. No shadows
Apple. In-Game asset. 2d. High contrast. No shadows
Star. In-Game asset. 2d. High contrast. No shadows
Frog. In-Game asset. 2d. High contrast. No shadows
Goat. In-Game asset. 2d. High contrast. No shadows
Deer. In-Game asset. 2d. High contrast. No shadows
Cloud. In-Game asset. 2d. High contrast. No shadows
Moon. In-Game asset. 2d. High contrast. No shadows
Lion. In-Game asset. 2d. High contrast. No shadows
Panda. In-Game asset. 2d. High contrast. No shadows
Elephant. In-Game asset. 2d. High contrast. No shadows
Giraffe. In-Game asset. 2d. High contrast. No shadows
Monkey. In-Game asset. 2d. High contrast. No shadows
Penguin. In-Game asset. 2d. High contrast. No shadows
Koala. In-Game asset. 2d. High contrast. No shadows
Camel. In-Game asset. 2d. High contrast. No shadows
Zebra. In-Game asset. 2d. High contrast. No shadows