Difference between revisions of "Sic/frame3.as"

From Organic Design wiki
(legacy)
m
Line 348: Line 348:
 
return n;
 
return n;
 
}
 
}
randString = "172967612668966913022252846431174282183834771206300046793233168970790217103618437027205118581284050141818472707593217400006083226771524276460817960214255719833032375747646237407802892571219024937706727075976468074654310417186404605133745544853564247767628249211867946160581949306691046934939844081542303679515660740167332114882277825760968958313757216230333435628347493152594203242963830061481188434744430697337558079785053427519251165781255948080250905610523358903972632466832413067889444055286525694608452337347338171883609774858337401184930549885467465663619209713366858408602444684253705970569735652667385649222085535971397869213391647983138119303273032689492873897326111799280199136491064016317745085795588785055516114164965320211372247897450390536897162603926268253580530970723368305881583149261650453041361526966016951479749914230520293464563637714988505717693532755988128895172242058903777404396138173521774750229577720318372725041218160078830243362949229800098395873839325406984015260079210755347623213692946708568221204486671823434508709330612313102831142790930906408861550152347710793626436458823699902166862787376004";
+
randString = "1729676126689669130222528464311742821838347712063000467932331689707902171036184370272051185812840501418184727075932174000060832267715242764608";
 
randTable = [];
 
randTable = [];
 
for (var i = 0; i<1000; i++) randTable.push(parseFloat(randString.substr(i,1)));
 
for (var i = 0; i<1000; i++) randTable.push(parseFloat(randString.substr(i,1)));
 
</as>
 
</as>
 
[[Category:ActionScript]]
 
[[Category:ActionScript]]

Revision as of 23:47, 24 September 2013

Legacy.svg Legacy: This article describes a concept that has been superseded in the course of ongoing development on the Organic Design wiki. Please do not develop this any further or base work on this concept, now this page is for historic record only.

<as> // // Liscenced under LGPL: www.gnu.org/copyleft/lesser.html // // Nad - 2003 - SIC-Games // // Frame3: SICK INITIALISATION


// GAME SPACE // GAME OBJECTS // DEMO SPACE // GUN & TARGET // FADER // ENVIRONMENT // SOUND // RANDOM

// _____________________________________________________________________________________________________________________ // // GAME SPACE createEmptyMovieClip('game', 1); initialiseSpace(game); game._x = 512; game._y = 384;

// _____________________________________________________________________________________________________________________ // // GAME OBJECTS objects = {}; objects.n = 0; objects.max = 6; objects.kills = 0; // The kill event comes 500ms after a peer hits it objects.kill = function(parameters) { var obj = _root.game[parameters[3]]; // Change bg every n kills if (++_root.objects.kills%3==0) _root.environment.change(); // Explosion //_root.game.create([0,0,,'starBurst',10,0.25,obj.x,obj.y,obj.z]); // Kill object obj.die = true; _root.objects.n--; };

// _____________________________________________________________________________________________________________________ // // DEMO SPACE attachMovie('bg', 'demo', 3); initialiseSpace(demo); demo.personas = ['tiger','tamarin','wolf','hawk']; // load new persona demo.setPersona = function(p) { var demo = _root.demo; demo.createEmptyMovieClip('swf', 2); demo.swf.loadMovie('./swf/'+p+'.swf'); if (p == 'tiger') { demo.swf._x = 200; demo.swf._y = 100; } else { demo.swf._x = 70; demo.swf._y = 70; } demo.persona = p; }; demo.active = demo._visible = false; //demo.setPersona('hawk');

// _____________________________________________________________________________________________________________________ // // GUN & TARGET game.target = game.create([0,0,,'torus',4,150,5000]); gun = {}; gun.onMouseMove = function() { if (_root.shell.state == 2) return; var x = _root._xmouse-512; var y = _root._ymouse-384; _root.game.target._x = x; _root.game.target._y = y; x = x/512; if (x > 1) x = 1; if (x < -1) x = -1; var b=40.5,r = 5; if (y > 200) {b = 29.5; r = -5;} else if (y > -50) {b = 17.5; r=4;} else if (y > -180) {b = 6.5; r=-5;} this.frame = int(b+x*r+0.5); }; gun.onMouseDown = function() { if (_root.shell.state == 2) return; if (_root.gun.patch++%7) _root.gun.fire.state = 1; else _root.sounds.load1.start(); }; gun.sr = function(f1,f2,x1,x2,y) { for (var f = f1; f <= f2; f++) { gun.ox[f] = x1+(f-f1)/(f2-f1)*(x2-x1); gun.oy[f] = y; } }; gun.bullets = gun.shots; gun.object = game.create([0,0,,'gun']); gun.fire = game.create([0,0,,'fire']); gun.lastShot = time; gun.frame = 1; gun.ox = []; gun.oy = []; gun.sr(1,12,120,-150,-75); gun.sr(13,22,-170,180,-30); gun.sr(24,35,100,-150,50); gun.sr(36,45,-75,100,-80); gun.ox[7] -= 20; gun.ox[8] -= 40; gun.ox[9] -= 60; gun.ox[10] -= 50; gun.ox[30] -= 50; gun.ox[31] -= 75; gun.ox[37] -= 20; gun.ox[38] -= 20; gun.ox[39] -= 20; gun.ox[42] += 40; gun.ox[43] += 50; gun.ox[44] += 40; Mouse.addListener(gun);

// _____________________________________________________________________________________________________________________ // // FADER attachMovie('spacer', 'fader', 4); fader._x = 512; fader._y = 384; fader._width = 1024; fader._height = 768;

// _____________________________________________________________________________________________________________________ // // ENVIRONMENT // bg-changer resets game-space and clears finishedEvents createEmptyMovieClip('environment', 0); environment._xscale = environment._yscale = 400; environment.lastActivity = time; environment.lastSync = time; environment.lastChange = time; environment.timeout = 30000; // milliseconds (300000 = 5min) environment.time = null; environment.phase = null; environment.current = 0; // Called per-frame environment.frame = function() { var t = _root.time - this.time; // time into this phase // Set bg frame var f = Math.floor(t/150+_root.network.thisIndex*this.swf._totalFrames/4); this.swf.gotoAndStop(1+(f%this.swf._totalFrames)); if (this.phase == 1) { // phase1: normal game-play

// change environment if same for too long if (_root.time-this.lastChange > 60000) _root.environment.change([0,time]);

// screams with gunshots if (_root.time-_root.gun.lastShot < 2000) { if (Math.random() < 0.02) { var snd = _root.sounds['scream'+int(Math.random()*10)]; var vol = int(-this.z/15); if (vol < 20) vol = 20; if (vol > 100) vol = 100; snd.setVolume(vol); snd.start(); } }

// Object creation if ((++_root.objects.ctr%250 == 40*(1+_root.network.thisIndex)+1) && (_root.objects.n < _root.objects.max)) { // if ((Math.random(100)<10) && (_root.objects.n < _root.objects.max)) { var s = swfList[Math.floor(Math.random()*swfList.length)]; var t = +(time+1000); createEvent(t+',game.create,obj,'+s, null); createEvent(t+',playSound,implode1,50', null); objects.n++; }

} else if (this.phase == 2) { // fade out of current env var fader = _root.fader; var a = t/20; if (a > 100) a = 100; fader._alpha = a; if (fader._alpha = 100) { this.time = _root.time; this.phase++; } } else if (this.phase == 3) { // clear game space (but gun and fire need to be put back) for (var i = 0; i < _root.game.zbLength; i++) { var obj = _root.game.zbuff[i]; if (obj.applySR) {logAdd('die'); obj.die = true;} } _root.objects.n = 0; // later: set up starfield this.time = _root.time; this.phase++; } else if (this.phase == 4) { // fade-in starfield this.time = _root.time; this.phase++; } else if (this.phase == 5) { // normal starfield this.time = _root.time; this.phase++; } else if (this.phase == 6) { // fade-out starfield this.time = _root.time; this.phase++; } else if (this.phase == 7) { // clear game space (but gun and fire need to be put back) // load new bg var file = _root.bgList[++this.current%_root.bgList.length]; this.createEmptyMovieClip('swf', 0); this.swf.loadMovie('./swf/'+file); this.swf.stop(); this.time = _root.time; this.phase++; } else if (this.phase == 8) { // fade in to new env var fader = _root.fader; var a = 100-t/20; if (a < 0) a = 0; fader._alpha = a; if (fader._alpha = 0) { this.time = _root.time; this.phase = 1; } } else if (this.phase == 10) { // Demo activated, fade out of current env var fader = _root.fader; var a = t/20; if (a > 100) a = 100; fader._alpha = a; if (fader._alpha = 100) { this.time = _root.time; this.phase++; } } else if (this.phase == 11) { // Switch on demo and deactivate game _root.demo._visible = _root.demo.active = true; _root.game._visible = _root.game.active = false; this.phase++; } else if (this.phase == 12) { // fade in demo var fader = _root.fader; var a = 100-t/20; if (a < 0) a = 0; fader._alpha = a; // set demo frame var f = 1+Math.floor((t/100)%_root.demo.swf._totalFrames); _root.demo.swf.gotoAndStop(f); // Sound if (f == 1) { var snd = sounds['cam'+Math.floor(Math.random()*9)]; snd.setVolume(30); snd.start(); } } }; // Change to next enviironment environment.change = function(parameters) { var env = _root.environment; // remember bg change-time (for fader phases etc) env.time = 1*parameters[1]; if (env.time == 0) env.time = _root.time; env.phase = 2; env.lastChange = env.time; }; // Record last input for activating demo mode (screensaver) - actual change is in frame4 code environment.onMouseDown = environment.onMouseMove = function() { if (_root.shell.state == 2) return; _root.demo._visible = _root.demo.active = false; _root.game._visible = _root.game.active = true; _root.fader._alpha = 0; // Propagate input if we haven't done so for a few seconds (to ensure screensavers are synced) if ((_root.time - environment.lastSync) > (environment.timeout-5000)) { environment.lastSync = _root.time; createEvent(+_root.time+',environment.inputEvent', null); _root.environment.lastActivity = _root.time; } // _root.environment.lastChange = _root.time; }; // respond to incoming inputEvent (to sync screensavers) environment.inputEvent = function(parameters) { if (_root.shell.state == 2) return; _root.demo._visible = _root.demo.active = false; _root.game._visible = _root.game.active = true; _root.fader._alpha = 0; _root.environment.phase = 1; _root.environment.lastActivity = 1*parameters[1]; // _root.environment.lastChange = _root.time; }; Mouse.addListener(environment); environment.change([0,time]);

// _____________________________________________________________________________________________________________________ // // SOUND sounds = {}; sounds.list = []; loadSounds('scream', 10); loadSounds('ric', 12); loadSounds('load', 1); loadSounds('gun', 5); loadSounds('die', 10); loadSounds('cam', 9); loadSounds('bone', 10); loadSounds('implode', 1);

function loadSounds(name, n) { for (var i = 1; i <= n; i++) { var id = name+i; _root.sounds[id] = new Sound(); var s = _root.sounds[id]; s.loadSound('./sound/'+id+'.mp3', false); s.setVolume(100); _root.sounds.list.push(s); } }

// Play sound function which can be called from an event function playSound(parameters) { var snd = _root.sounds[parameters[3]]; snd.setVolume(parseInt(parameters[4])); snd.start(); }

// _____________________________________________________________________________________________________________________ // // RANDOM // - from shared random table function rnd(j, k) { j = Math.floor(j)%600; var n = 0.1*_root.randTable[j]; n += 0.01*_root.randTable[j+k]; n += 0.001*_root.randTable[j+k*2]; n += 0.0001*_root.randTable[j+k*3]; n += 0.00001*_root.randTable[j+k*4]; n += 0.000001*_root.randTable[j+k*5]; return n; } randString = "1729676126689669130222528464311742821838347712063000467932331689707902171036184370272051185812840501418184727075932174000060832267715242764608"; randTable = []; for (var i = 0; i<1000; i++) randTable.push(parseFloat(randString.substr(i,1))); </as>