these are the two functions for controlling the spawning and movement of them
//alien B functions
function SmallAienSpawnControl()
local j as integer
local n as integer
local spawn as integer
local option as string
local activecount# as integer
local FA# as integer
local randoyone as float
local randoytwo as float
local randoxone as float
local f as integer
Alienkind[0].spawntimer = Alienkind[0].spawntimer -1
if Alienkind[0].spawntimer <= 0 and Alienkind[0].currentspawn < Alienkind[0].maxspawn and AlienKind[0].alien.length > -1
activecount# = -1
for j = 0 to AlienKind[0].alien.length
if AlienKind[0].alien[j].active = 0
FA# = j
exit
endif
next j
if GetSpriteExists(AlienKind[0].alien[FA#].id) = 0
if FA# = 0
AlienKind[0].alien[FA#].id = CreateSprite (images.AlienBSheet)
AlienKind[0].alien[FA#].Hpbarback=CreateSprite(0)
AlienKind[0].alien[FA#].Hpbarfront=CreateSprite(0)
AlienKind[0].alien[FA#].dummy.id = CreateSprite(images.Dummy)
AlienKind[0].alien[FA#].ice = createsprite(images.alienfrost)
AlienKind[0].alien[FA#].blood = createsprite(images.alienblood)
AlienKind[0].alien[FA#].shadow = createsprite(images.alienshadow[1])
setspritevisible(AlienKind[0].alien[FA#].blood,0)
setspriteanimation(AlienKind[0].alien[FA#].blood,getspritewidth(AlienKind[0].alien[FA#].blood)/6,getspriteheight(AlienKind[0].alien[FA#].blood),6)
setspritevisible(AlienKind[0].alien[FA#].ice,0)
setspritedepth(AlienKind[0].alien[FA#].id,1)
//SetSpriteShape(Alienkind[0].alien[FA#].id,3)
SetSpriteShape(AlienKind[0].alien[FA#].dummy.id,3)
SetSpriteScale(AlienKind[0].alien[FA#].id ,univScale,univScale)
SetSpriteScale(AlienKind[0].alien[FA#].shadow,univScale,univScale)
setspritesize(AlienKind[0].alien[FA#].dummy.id,25*univScale,25*univScale)
SetSpriteSize(AlienKind[0].alien[FA#].Hpbarback,40*univScale,5*univScale)
SetSpriteDepth(AlienKind[0].alien[FA#].dummy.id,5)
SetSpriteDepth(AlienKind[0].alien[FA#].Hpbarfront,0)
setspritedepth(AlienKind[0].alien[FA#].Hpbarback,0)
SetSpriteColor(AlienKind[0].alien[FA#].Hpbarback, 0, 0, 0, 100)
SetSpriteColor(AlienKind[0].alien[FA#].Hpbarfront, 255, 0, 66, 255)
SetSpriteAnimation(AlienKind[0].alien[FA#].id,50,50,45)
SetSpriteVisible(AlienKind[0].alien[FA#].dummy.id,0)
AlienKind[0].alien[FA#].active=0
else
AlienKind[0].alien[FA#].ice = clonesprite(AlienKind[0].alien[0].ice)
AlienKind[0].alien[FA#].id = CloneSprite(AlienKind[0].alien[0].id)
AlienKind[0].alien[FA#].Hpbarback = CloneSprite(AlienKind[0].alien[0].Hpbarback)
AlienKind[0].alien[FA#].Hpbarfront = CloneSprite(AlienKind[0].alien[0].Hpbarfront)
AlienKind[0].alien[FA#].dummy.id = CloneSprite(AlienKind[0].alien[0].dummy.id)
AlienKind[0].alien[FA#].blood = CloneSprite(AlienKind[0].alien[0].blood)
AlienKind[0].alien[FA#].shadow = CloneSprite(AlienKind[0].alien[0].shadow)
AlienKind[0].alien[FA#].active=0
endif
endif
spawn = random2(1,2)
spawn = 2
if enableclimb = 1 and spawn = 1
setspriteposition(AlienKind[0].alien[FA#].dummy.id,vw# + random2(200,300),getspritey(Boundsline.top))
else
randoyone = getspritey(Boundsline.mid)+getspriteheight(Boundsline.mid)+getspriteheight(AlienKind[0].alien[FA#].id)
randoytwo = getspritey(panel.id)-GetSpriteHeight(AlienKind[0].alien[FA#].id)
randoxone = random2(200,300)
setspriteposition(AlienKind[0].alien[FA#].dummy.id,vw# + randoxone,random2(randoyone,randoytwo))
endif
fpsdropfind("small spawn mid")
SetSpriteSize(AlienKind[0].alien[FA#].Hpbarfront,40*univScale,5*univScale)
setspriteposition(Alienkind[0].alien[FA#].id,AlienKind[0].alien[FA#].dummy.x - GetSpriteWidth(Alienkind[0].alien[FA#].id) /3,AlienKind[0].alien[FA#].dummy.y - GetSpriteHeight(Alienkind[0].alien[FA#].id)/2)
SetSpritePosition(AlienKind[0].alien[FA#].Hpbarback, Getspritex(AlienKind[0].alien[FA#].id),getspritey(AlienKind[0].alien[FA#].id))
SetSpritePosition(AlienKind[0].alien[FA#].Hpbarfront,Getspritex(AlienKind[0].alien[FA#].id),getspritey(AlienKind[0].alien[FA#].id))
setspriteposition(Alienkind[0].alien[FA#].shadow,Getspritex(AlienKind[0].alien[FA#].id)+getspritewidth(AlienKind[0].alien[FA#].id)/2-getspritewidth(AlienKind[0].alien[FA#].shadow)/2,getspritey(AlienKind[0].alien[FA#].id)+getspriteheight(AlienKind[0].alien[FA#].id)-getspriteheight(AlienKind[0].alien[FA#].shadow)/2 )
setspritesize(AlienKind[0].alien[FA#].ice,GetSpriteWidth(AlienKind[0].alien[FA#].id),getspriteheight(AlienKind[0].alien[FA#].id))
SetSpritePosition(AlienKind[0].alien[FA#].ice,getspritex(Alienkind[0].alien[FA#].id),getspritey(Alienkind[0].alien[FA#].id))
AlienKind[0].alien[FA#].x = getspritex(AlienKind[0].alien[FA#].id)
AlienKind[0].alien[FA#].y = getspritey(AlienKind[0].alien[FA#].id)
AlienKind[0].alien[FA#].dummy.x = GetSpriteX(AlienKind[0].alien[FA#].dummy.id)
AlienKind[0].alien[FA#].dummy.y = GetSpriteY(AlienKind[0].alien[FA#].dummy.id)
AlienKind[0].alien[FA#].speed = Alienkind[0].speed
AlienKind[0].alien[FA#].dmg = Alienkind[0].dmg
AlienKind[0].alien[FA#].health = AlienKind[0].maxhp
AlienKind[0].alien[FA#].tokens = levelnum
AlienKind[0].alien[FA#].tokens = 1
AlienKind[0].alien[FA#].dead =0
AlienKind[0].alien[FA#].state_now = 'spawned'
AlienKind[0].alien[FA#].state_last = 'spawned'
Alienkind[0].spawntimer = Alienkind[0].maxspawntimer - wavenum*5
Alienkind[0].currentspawn = Alienkind[0].currentspawn + 1
AlienKind[0].alien[FA#].health = AlienKind[0].maxhp
AlienKind[0].alien[FA#].lasthp=AlienKind[0].alien[FA#].health
AlienKind[0].alien[FA#].newhp= AlienKind[0].alien[FA#].health
AlienKind[0].alien[FA#].active=1
setspritevisible(AlienKind[0].alien[FA#].id,1)
setspritecoloralpha(AlienKind[0].alien[FA#].id,255)
setspritevisible(AlienKind[0].alien[FA#].Hpbarback,1)
setspritevisible(AlienKind[0].alien[FA#].Hpbarfront,1)
setspritevisible(AlienKind[0].alien[FA#].shadow,1)
endif
endfunction
//
function SmallAlienstuff()
local i as integer
local n as integer
local oldx as float
local oldy as float
local newx as float
local randoyone as integer
local randoytwo as integer
local randoxone as integer
for i = 0 to AlienKind[0].alien.length
if getspriteexists(AlienKind[0].alien[i].id) = 1
if AlienKind[0].alien[i].active = 1
if getspritex(AlienKind[0].alien[i].dummy.id) <> getspritex(AlienKind[0].alien[i].dummy.id)
randoyone = getspritey(Boundsline.mid)+getspriteheight(Boundsline.mid)+getspriteheight(AlienKind[0].alien[i].id)
randoytwo = getspritey(panel.id)-GetSpriteHeight(AlienKind[0].alien[i].id)
randoxone = random2(200,300)
deletesprite(AlienKind[0].alien[i].dummy.id)
AlienKind[0].alien[i].dummy.id = CreateSprite(images.Dummy)
SetSpriteVisible(AlienKind[0].alien[i].dummy.id,0)
setspritesize(AlienKind[0].alien[i].dummy.id,25*univScale,25*univScale)
SetSpriteShape(AlienKind[0].alien[i].dummy.id,3)
SetSpriteDepth(AlienKind[0].alien[i].dummy.id,5)
setspriteposition(AlienKind[0].alien[i].dummy.id,vw# + randoxone,random2(randoyone,randoytwo))
repairs = repairs + 1
endif
AlienKind[0].alien[i].x = getspritex(AlienKind[0].alien[i].id)
AlienKind[0].alien[i].y = getspritey(AlienKind[0].alien[i].id)
AlienKind[0].alien[i].dummy.x = GetSpriteX(AlienKind[0].alien[i].dummy.id)
AlienKind[0].alien[i].dummy.y = GetSpriteY(AlienKind[0].alien[i].dummy.id)
//life check
AlienKind[0].alien[i].newhp = AlienKind[0].alien[i].health
if AlienKind[0].alien[i].health <=0 and AlienKind[0].alien[i].state_now <> 'dead'
AlienKind[0].alien[i].state_now = 'dead'
endif
if AlienKind[0].alien[i].newhp < AlienKind[0].alien[i].lasthp
AlienKind[0].alien[i].Progress_Step = AlienKind[0].alien[i].health*100.0/AlienKind[0].maxhp/100
AlienKind[0].alien[i].lasthp = AlienKind[0].alien[i].health
if getspriteexists(AlienKind[0].alien[i].Hpbarfront)=1
setspritesize(AlienKind[0].alien[i].Hpbarfront, AlienKind[0].alien[i].Progress_Step*40*univScale,5*univScale)
endif
endif
fpsdropfind("small life check")
//attacking
if AlienKind[0].alien[i].state_now = 'atk' and AlienKind[0].alien[i].atktime <= 0
if GetSoundsPlaying(AlienKind[0].attackfx)=0
playsounds("alien",1,"attack",0,50,0)
endif
if Barrier.armor <= 0
Barrier.health = Barrier.health - AlienKind[0].alien[i].dmg ///3
endif
if Barrier.armor > 0
Barrier.armor = Barrier.armor - AlienKind[0].alien[i].dmg ///3
endif
AlienKind[0].alien[i].atktime = 50
endif
if AlienKind[0].alien[i].atktime >0
AlienKind[0].alien[i].atktime = AlienKind[0].alien[i].atktime -1
endif
//endattacking
fpsdropfind("small attacking")
//if alien dead
if AlienKind[0].alien[i].state_now = 'dead'
if enableclimb = 1 and AlienKind[0].alien[i].y < getspritey(Boundsline.mid)- GetSpriteHeight(AlienKind[0].alien[i].id)/2
AlienKind[0].alien[i].dummy.y = AlienKind[0].alien[i].dummy.y + 10
SetSpritePosition(AlienKind[0].alien[i].dummy.id,AlienKind[0].alien[i].dummy.x,AlienKind[0].alien[i].dummy.y)
setspriteposition(AlienKind[0].alien[i].id,AlienKind[0].alien[i].dummy.x,AlienKind[0].alien[i].dummy.y)
elseif GetSpriteCurrentFrame(AlienKind[0].alien[i].id) = 45
SetSpriteColorAlpha(AlienKind[0].alien[i].id,getspritecoloralpha(AlienKind[0].alien[i].id)-1)
if getspritecoloralpha(AlienKind[0].alien[i].id) <=0
AlienKind[0].alien[i].active = 0
deletesprite(AlienKind[0].alien[i].id)
deletesprite(Alienkind[0].alien[i].shadow)
deletesprite(AlienKind[0].alien[i].dummy.id)
deletesprite(Alienkind[0].alien[i].ice)
deletesprite(AlienKind[0].alien[i].Hpbarback)
deletesprite(AlienKind[0].alien[i].Hpbarfront)
endif
endif
endif
//end if dead
fpsdropfind("small dead check")
//alien move/////
if getspritedepth(AlienKind[0].alien[i].id) > 999
setspritedepth(AlienKind[0].alien[i].id, GetSpriteDistance(AlienKind[0].alien[i].id,panel.id))
setspritedepth(AlienKind[0].alien[i].dummy.id, GetSpriteDepth(AlienKind[0].alien[i].id)+1)
endif
//if not dead or fozen
if AlienKind[0].alien[i].state_now <> 'dead' and AlienKind[0].alien[i].state_now <> 'frozen'
//if alien atacking
if GetSpriteCollision(Barrier.dummy,AlienKind[0].alien[i].id)=1
AlienKind[0].alien[i].state_now = 'atk'
elseif AlienKind[0].alien[i].state_now <> 'frozen'
//if not attacking
if AlienKind[0].alien[i].dummy.y >= getspritey(BoundsLine.mid)+getspriteheight(BoundsLine.mid)-getspriteheight(AlienKind[0].alien[i].id) and AlienKind[0].alien[i].dummy.x < vw#-vw#/3
SetSpritePhysicsOn(AlienKind[0].alien[i].dummy.id,2)
SetSpritePhysicsCanRotate(AlienKind[0].alien[i].dummy.id,0)
AlienKind[0].alien[i].state_now = 'left'
elseif enableclimb = 1 and getspritey(AlienKind[0].alien[i].id) < getspritey(Boundsline.top)+getspriteheight(Boundsline.top)
AlienKind[0].alien[i].state_now = 'climb'
endif
//walk forwad
AlienKind[0].alien[i].dummy.x=AlienKind[0].alien[i].dummy.x - AlienKind[0].alien[i].speed
//climb down
if AlienKind[0].alien[i].dummy.x < getspritex(Barrier.dummy)+300 and AlienKind[0].alien[i].dummy.y < getspritey(Barrier.dummy)+GetSpriteHeight(Barrier.dummy)/2
AlienKind[0].alien[i].dummy.y=AlienKind[0].alien[i].dummy.y +AlienKind[0].alien[i].speed*2
endif
if oldx <> AlienKind[0].alien[i].dummy.x or oldy <> AlienKind[0].alien[i].dummy.y
SetSpritePosition(AlienKind[0].alien[i].dummy.id,AlienKind[0].alien[i].dummy.x,AlienKind[0].alien[i].dummy.y)
if getspriteexists(AlienKind[0].alien[i].Hpbarback)=1
SetSpritePosition(AlienKind[0].alien[i].Hpbarback, Getspritex(AlienKind[0].alien[i].id),getspritey(AlienKind[0].alien[i].id))
SetSpritePosition(AlienKind[0].alien[i].Hpbarfront,Getspritex(AlienKind[0].alien[i].id),getspritey(AlienKind[0].alien[i].id))
endif
endif
endif
setspriteposition(Alienkind[0].alien[i].id,AlienKind[0].alien[i].dummy.x - GetSpriteWidth(Alienkind[0].alien[i].id) /3,AlienKind[0].alien[i].dummy.y - GetSpriteHeight(Alienkind[0].alien[i].id)/2)
SetSpritePosition(Alienkind[0].alien[i].ice,getspritex(AlienKind[0].alien[i].id),getspritey(AlienKind[0].alien[i].id))
if AlienKind[0].alien[i].state_now = 'climb'
setspriteposition(Alienkind[0].alien[i].shadow,Getspritex(AlienKind[0].alien[i].id)+getspritewidth(AlienKind[0].alien[i].id)/2-getspritewidth(AlienKind[0].alien[i].shadow)/2,getspritey(BoundsLine.mid)+getspriteheight(AlienKind[0].alien[i].shadow)/2 )
else
setspriteposition(Alienkind[0].alien[i].shadow,Getspritex(AlienKind[0].alien[i].id)+getspritewidth(AlienKind[0].alien[i].id)/2-getspritewidth(AlienKind[0].alien[i].shadow)/2,getspritey(AlienKind[0].alien[i].id)+getspriteheight(AlienKind[0].alien[i].id)-getspriteheight(AlienKind[0].alien[i].shadow)/2 )
endif
endif
endif
fpsdropfind("small move 1/2")
oldx = AlienKind[0].alien[i].dummy.x
oldy = AlienKind[0].alien[i].dummy.y
/// set animation for new state
if AlienKind[0].alien[i].state_now <> AlienKind[0].alien[i].state_last
select AlienKind[0].alien[i].state_now
case 'left':
SetSpriteFlip(AlienKind[0].alien[i].id,0,0)
PlaySprite(AlienKind[0].alien[i].id,30,1,1,16)
AlienKind[0].alien[i].state_last = 'left'
endcase
case 'atk':
SetSpriteFlip(AlienKind[0].alien[i].id,0,0)
PlaySprite(AlienKind[0].alien[i].id,30,1,17,28)
AlienKind[0].alien[i].state_last = 'atk'
endcase
case 'climb':
SetSpriteFlip(AlienKind[0].alien[i].id,0,0)
PlaySprite(AlienKind[0].alien[i].id,20,1,29,36)
AlienKind[0].alien[i].state_last = 'climb'
endcase
case 'fall':
SetSpriteFlip(AlienKind[0].alien[i].id,0,0)
stopSprite(AlienKind[0].alien[i].id)
AlienKind[0].alien[i].state_last = 'fall'
endcase
case 'frozen':
stopsprite(AlienKind[0].alien[i].id)
AlienKind[0].alien[i].state_last = 'frozen'
setspritevisible(AlienKind[0].alien[i].ice,1)
endcase
case 'unfrozen':
AlienKind[0].alien[i].state_last = 'unfrozen'
setspritevisible(AlienKind[0].alien[i].ice,0)
endcase
case 'dead':
rewards.tokens = rewards.tokens + AlienKind[0].alien[i].tokens
droptokens(0,i)
AlienKind[0].alien[i].state_last = 'dead'
AlienSpawNum= AlienSpawNum-1
AlienKind[0].alien[i].dead = 1
SetSpritePhysicsOff(AlienKind[0].alien[i].dummy.id)
StopSprite(AlienKind[0].alien[i].id)
playsprite (AlienKind[0].alien[i].id,15,0,37,45)
playsounds("alien",1,"dying",0,50,0)
setspritevisible(AlienKind[0].alien[i].Hpbarback,0)
setspritevisible(AlienKind[0].alien[i].Hpbarfront,0)
setspritevisible(AlienKind[0].alien[i].ice,0)
dropeggs(0,i)
endcase
case 'spawned':
AlienKind[0].alien[i].state_last = 'spawned'
endcase
endselect
endif
///end alien move
fpsdropfind("small move 2/2")
endif
next i
endfunction
this bit i recently added to deal with the issue temporarily
if getspritex(AlienKind[0].alien[i].dummy.id) <> getspritex(AlienKind[0].alien[i].dummy.id)
randoyone = getspritey(Boundsline.mid)+getspriteheight(Boundsline.mid)+getspriteheight(AlienKind[0].alien[i].id)
randoytwo = getspritey(panel.id)-GetSpriteHeight(AlienKind[0].alien[i].id)
randoxone = random2(200,300)
deletesprite(AlienKind[0].alien[i].dummy.id)
AlienKind[0].alien[i].dummy.id = CreateSprite(images.Dummy)
SetSpriteVisible(AlienKind[0].alien[i].dummy.id,0)
setspritesize(AlienKind[0].alien[i].dummy.id,25*univScale,25*univScale)
SetSpriteShape(AlienKind[0].alien[i].dummy.id,3)
SetSpriteDepth(AlienKind[0].alien[i].dummy.id,5)
setspriteposition(AlienKind[0].alien[i].dummy.id,vw# + randoxone,random2(randoyone,randoytwo))
repairs = repairs + 1
endif
i commented out the set sprite shape and also made them always spawn not " climbing" by setting spawn to 2