This script made by Loriel used to make "lava balls" bounce around the level. I'm not certain why it doesn't work anymore and my attempts to convert it failed.
NPC Code:
// Lava balls by Loriel
//#CLIENTSIDE
if (playerenters) {
seteffect .1,.05,0,0.03;
this.balls = 50;
setarray this.angle,10;
setarray this.x,10;
setarray this.y,10;
setarray this.radx,10;
setarray this.rady,10;
setarray this.speed,10;
setarray this.dir,10;
for (i=0; i<this.balls; i++)
init(); // First initalizing of all the arrays
while (true) {
for (i=0; i<this.balls; i++) {
if (this.angle[i] in |1.55,4.70|) init(); // Check if under lava (re init),
else loop(); // or above (loop)
}
looplights();
sleep 0.05;
}
}
function init() {
this.x[i] = random(0,60);
this.y[i] = random(0,62);
this.radx[i] = random(0,2);
this.rady[i] = random(2,8);
this.angle[i] = 4.75;
this.speed[i] = random(0.1,0.4);
this.dir[i] = int(random(0,2))*2-1;
}
function loop() {
this.angle[i] += this.speed[i]; // Move ball
this.angle[i] = this.angle[i]%6.3; // Make sure angle stays between 0 and 6.3
showimg i,light2.png,
this.x[i]-this.radx[i]*sin(this.angle[i])*this.dir[i],
this.y[i]-this.rady[i]*cos(this.angle[i]);
changeimgcolors i,0,random(0.1,0.1),.1,0.99;
changeimgzoom i,random(0.15,0.35);
}
function looplights() {
for (i = 0; i < arraylen(this.lpos)/2; i++)
changeimgzoom this.balls+i,random(0.4,0.6);
}
I'm assuming some of the syntax here is just no longer supported but I don't know what it is. Maybe setarray is the problem? A lot of the old gs1 scripts like this on g2k1 perplex me but perhaps they are not hard to fix.