Added _release/Games

master
blitz-research 2014-02-26 16:07:38 +13:00
parent b43a67e781
commit d84d94e796
110 changed files with 16961 additions and 0 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 822 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 450 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 822 B

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 822 B

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 192 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 900 KiB

View File

@ -0,0 +1,484 @@
;
;
; Game Functions
;
; EFX functions smoke first
;
Function Update_Smoke()
For a.smoke=Each smoke
TranslateEntity a\ent,0,0,-EFX_SPEED
ScaleSprite a\ent,a\size,a\size
EntityAlpha a\ent,a\alpha
a\size=a\size+a\disp
a\alpha=a\alpha-a\reduct
a\rot=a\rot+1
RotateSprite a\ent,a\rot
If a\alpha<.1 Or EntityZ(a\ent)<CameraZpos Then
FreeEntity a\ent
Delete a
smk=smk-1
End If
Next
End Function
Function Add_Smoke_puff(size#,dis#,rduct#,x#,y#,z#,r,g,b)
smk=smk+1
a.smoke=New smoke
a\size=size
a\disp=dis
a\alpha=.6
a\reduct=rduct
a\ent=CopyEntity(smoke_spr(Rand(1,4)))
EntityColor a\ent,r,g,b
ScaleSprite a\ent,size,size
PositionEntity a\ent,x,y,z
Return a\ent
End Function
Function Add_White_Smoke(size#,x#,y#,z#)
ent=Add_Smoke_puff(size,.2,.04,x,y,z,255,255,255)
Return ent
End Function
Function Add_Color_Smoke(size,x#,y#,z#,r,g,b)
ent=Add_Smoke_puff(size,.2,.04,x,y,z,r,g,b)
Return ent
End Function
;
;Delete all smoke
Function Free_Smoke()
For a.smoke=Each smoke
If a\ent FreeEntity a\ent
Next
Delete Each smoke
End Function
;
;Asteroid functions
Function Add_Object(x#,y#,z#,dir,speed#,size#,typ)
a.Obj=New Obj
a\speed=speed
a\dir=dir
a\typ=typ
a\st=False
a\piv=CreatePivot()
Select a\typ
Case 1 ;Normal asteroid
a\ent=CopyEntity(Aster_mesh,a\piv)
ScaleEntity a\ent,size,size,size
RotateEntity a\ent,Rnd(360),Rnd(360),Rnd(360)
PositionEntity a\piv,x,y,z
EntityType a\piv,TYPE_ASTER
EntityPickMode a\ent,2
EntityRadius a\piv,size
a\val=100
Case 2 ;Double Points
a\ent=CopyEntity(Aster_mesh,a\piv)
ScaleEntity a\ent,size,size,size
RotateEntity a\ent,Rnd(360),Rnd(360),Rnd(360)
PositionEntity a\piv,x,y,z
EntityType a\piv,TYPE_ASTER
EntityPickMode a\ent,2
EntityRadius a\piv,size
a\val=200
EntityColor a\ent,255,255,0
Case 3
a\ent=CopyEntity(Aster_mesh,a\piv)
ScaleEntity a\ent,size,size,size
RotateEntity a\ent,Rnd(360),Rnd(360),Rnd(360)
PositionEntity a\piv,x,y,z
EntityType a\piv,TYPE_ASTER
EntityPickMode a\ent,2
EntityRadius a\piv,size
a\val=500
EntityColor a\ent,255,0,0
a\col=240
a\cd=10
Case 10
a\ent=CopyEntity(Bad01_mesh,a\piv)
ScaleEntity a\ent,size,size,size
PositionEntity a\piv,x,y,z
a\dx=0
a\dy=0
EntityType a\piv,TYPE_ASTER
EntityPickMode a\ent,2
EntityRadius a\piv,size
a\val=1500
EntityColor a\ent,255,0,0
a\ds=100
a\fx=x
a\fy=y
Case 1000 ;Claw
a\ent=CopyEntity(Claw_Anim_Mesh,a\piv)
ScaleEntity a\ent,size,size,size
PositionEntity a\piv,800*Cos(x),800*Sin(x),z
RotateEntity a\piv,0,0,x-180
a\dx=0
a\dy=0
EntityType GetChild(a\ent,1),TYPE_CLAW
a\ds=100
a\fx=x
a\fy=y
Animate a\ent,3,Rnd(.3,3)
End Select
End Function
;Update Asteroids
Function Update_Objects()
For a.Obj=Each Obj
Select a\typ
Case 1
Control_Asteroid(a,1)
Case 2
Control_Asteroid(a,2)
Case 3
Control_Asteroid(a,3)
Case 1000
If EntityZ(a\piv)>CameraZpos Then
TranslateEntity a\piv,0,0,a\speed*a\dir
Else
FreeEntity a\ent
FreeEntity a\piv
Delete a
End If
End Select
Next
End Function
Function Control_Asteroid(a.Obj,typ)
Select a\typ
Case 3
EntityColor a\ent,a\col,255-a\col,0
a\col=a\col-a\cd
If a\col<140 Or a\col>250 Then a\cd=-a\cd
End Select
If EntityZ(a\piv)>CameraZpos Then
TurnEntity a\piv,2,0,0.5
TranslateEntity a\piv,-a\dx,-a\dy,a\speed*a\dir
Else
FreeEntity a\ent
FreeEntity a\piv
Delete a
End If
End Function
;Delete all objects
Function Delete_Objects()
For a.Obj=Each Obj
If a\ent FreeEntity a\ent
If a\piv FreeEntity a\piv
Delete a
Next
End Function
;
; Shooting funcitons
;
Function Add_Shot.shot(ent,typ,dir,firer.play)
If firer<>Null Then
If firer\rate>0 Then Return
End If
a.shot=New shot
a\typ=typ
a\firer=firer
Select typ
Case 1
If firer<>Null Then
a\firer\rate=6
End If
a\speed=8
a\dx=0
a\dy=0
a\dz=dir
a\life=125
a\ent=CopyEntity(shot1_spr,ent)
If firer<>Null Then
PositionEntity a\ent,a\firer\ox,0,10
a\firer\ox=-a\firer\ox
End If
EntityParent a\ent,0
EntityRadius a\ent,8
EntityType a\ent,TYPE_SHOT1
EmitSound Shoot1_wave,a\ent
End Select
Return a
End Function
;
;Update all players shots
Function Update_Shots()
For a.shot=Each shot
a\life=a\life-1
Select a\typ
Case 1
TranslateEntity a\ent,a\dx,a\dy,a\dz*a\speed
a\ang=a\ang+5
RotateSprite a\ent,a\ang
End Select
If a\life<100 Then
EntityAlpha a\ent,a\life/10
End If
If a\life<1 Then
FreeEntity a\ent
Delete a
Else
If CountCollisions(a\ent)>0
For b=1 To CountCollisions(a\ent)
ent=CollisionEntity(a\ent,b)
x#=EntityX(ent)
y#=EntityY(ent)
z#=EntityZ(ent)
Set_Flash()
For c=1 To 2
add_color_smoke(275,x+Rnd(-2,2),y+Rnd(-2,2),z,255,10,0)
add_color_smoke(170,x+Rnd(-2,2),y+Rnd(-2,2),z,255,200,0)
ent2=add_white_smoke(140,x+Rnd(-2,2),y+Rnd(-2,2),z)
Next
PositionEntity ent,EntityX(ent),EntityY(ent),-1000
EmitSound Explode_wave,ent2
Next
FreeEntity a\ent
If a\firer<>Null Then
a\firer\score=a\firer\score+150
End If
Delete a
End If
End If
Next
End Function
;Delete all shots
Function Free_Shots()
For a.shot=Each shot
If a\ent FreeEntity a\ent
Delete a
Next
End Function
;
; Player functions
; typ = 1 Mouse controled player
; 2 ana Joy Controlled player
; 3 dig Joy controlled player
; 4 keyboard controlled player
; 5 CPU Controlled player
; 6 internet player ** TO DO **
;
Function Add_Player.play(typ,r,g,b,split,id,n$)
a.play=New play
a\dead=False
a\con=typ
a\id=id
a\name=n
a\lives=G_StartLives
a\tlx=0
a\tly=0
a\score=0
a\ox=15
a\brx=GraphicsWidth()
a\bry=GraphicsHeight()
a\piv=CreatePivot()
EntityRadius a\piv,40
EntityType a\piv,TYPE_PLAYER
a\ent=CopyEntity(player_mesh,a\piv)
EntityColor a\ent,r,g,b
a\shield=100
a\shield_ent=CopyEntity(shield_mesh,a\piv)
;
a\cam=CreateCamera()
CameraRange a\cam,1,24000
CameraFogRange a\cam,12000,24000
CameraFogMode a\cam,1
PositionEntity a\cam,0,0,CameraZpos
EntityType a\cam,TYPE_CAM
EntityRadius a\cam,40
If split=True Then
Select id
Case 0
CameraViewport a\cam,0,0,GraphicsWidth(),GraphicsHeight()/2
a\tlx=0
a\tly=0
a\brx=GraphicsWidth()
a\bry=GraphicsHeight()/2
Case 1
CameraViewport a\cam,0,GraphicsHeight()/2,GraphicsWidth(),GraphicsHeight()/2
a\tlx=0
a\tly=GraphicsHeight()/2
a\brx=GraphicsWidth()
a\bry=GraphicsHeight()
End Select
End If
;
Return a
End Function
;
;Main players update
Function Update_Players()
For a.play=Each play
;
;
If a\rate>0 Then a\rate=a\rate-1
score(a\id)=a\score
EntityAlpha a\shield_ent,a\glow
If a\dead=False
If a\glow>0 Then a\glow=a\glow-.05
PositionEntity a\piv,EntityX(a\piv),EntityY(a\piv),0
PositionEntity a\cam,EntityX(a\cam),EntityY(a\cam),CameraZpos
If Cheater=False Then ;Cheat Mode
cnt=CountCollisions(a\piv)
If cnt>0 Then
For b=1 To cnt
te=CollisionEntity(a\piv,cnt)
add_color_Smoke(25,CollisionX(a\piv,b),CollisionY(a\piv,b),CollisionZ(a\piv,b),255,Rnd(100,200),Rnd(100,200))
If te<>Tunnel_Mesh Then
a\shield=a\shield-10
Else
a\shield=a\shield-.5
End If
a\glow=1
Next
End If
End If
;
; Do Camera Code
;
dx#=EntityX(a\piv,True)-EntityX(a\cam,True)
dy#=EntityY(a\piv,True)-(EntityY(a\cam,True)-30)
TranslateEntity a\cam,dx*.05,dy*.05,0
;
If a\shield<20 And a\shield>0 Then
add_color_Smoke(15,EntityX(a\piv)+Rnd(-1,1),EntityY(a\piv),EntityZ(a\piv),255,Rnd(50,140),Rnd(50,140))
End If
If a\shield<100 And a\shield>0 Then
a\shield=a\shield+.01
End If
If a\shield<0 Then
a\dead=True
a\lives=a\lives-1
End If
If a\dead=True Then
PositionEntity a\piv,0,0,CameraZpos-100
a\waiting=(CameraZpos-100)
a\shield=100
End If
Else ;If dead the do dead routene
If a\waiting<0 Then
ResetEntity a\piv
PositionEntity a\piv,EntityX(a\piv),EntityY(a\piv),a\waiting
a\waiting=a\waiting+1
ResetEntity a\piv
Update_PLCam(a)
RotateEntity a\piv,0,0,0
Else
a\dead=False
End If
End If
If a\lives=0 Then
score(a\id)=a\score
Cls
Num_Players=Num_Players-1
Select a\id
Case 0
Go1_timer=300
Case 1
Go2_timer=300
End Select
Free_Player(a)
End If
Next
End Function
Function Resize_Last_Player()
For a.play=Each play
CameraViewport a\cam,0,0,GraphicsWidth(),GraphicsHeight()
a\tlx=0
a\tly=0
a\brx=GraphicsWidth()
a\bry=GraphicsHeight()
cont=a\con
Next
Return cont
End Function
Function Free_Player(a.play)
If a\shield_ent FreeEntity a\shield_ent
If a\ent FreeEntity a\ent
If a\piv FreeEntity a\piv
If a\cam FreeEntity a\cam
Delete a
End Function
;
;Manual update of players camera
Function Update_PLCam(a.play)
;
; Do Camera Code
;
dx#=EntityX(a\piv,True)-EntityX(a\cam,True)
dy#=EntityY(a\piv,True)-(EntityY(a\cam,True)-30)
TranslateEntity a\cam,dx*.05,dy*.05,0
End Function
;Delete all players in memory
Function delete_Players()
For a.play=Each play
If a\shield_ent FreeEntity a\shield_ent
If a\ent FreeEntity a\ent
If a\piv FreeEntity a\piv
If a\cam FreeEntity a\cam
Delete a
Next
End Function
;View Update (players)
Function Update_Players_Views()
For a.play=Each play
Color 255,255,255
Text a\tlx,a\tly,a\score
If a\shield<40 Then
Color 255,255,0
End If
If a\shield<20 Then
Color 255,0,0
End If
Rect a\tlx,a\tly+16,a\shield,10
Color 255,255,255
Text a\brx-100,a\bry-16,a\name
Text a\brx-176,a\tly,"Lives:"
For x=0 To a\lives-1
DrawImage Lives_image,a\brx-80+(x*16),a\tly
Next
Next
End Function
;Find a player from id
Function Get_Player_id.play(id)
For a.play=Each play
If a\id=id Then Return a
Next
Return Null
End Function
;
;Update explosion Flash
Function Update_Flash()
AmbientLight Flash_Cnt,Flash_Cnt,Flash_Cnt
If Flash_Cnt>G_Brightness Then Flash_Cnt=Flash_Cnt-5
End Function
Function Set_Flash()
Flash_Cnt=255
End Function
;
;
;
;
;
;

View File

@ -0,0 +1,102 @@
; Tunnel Run
; (c)2001 David Bird
; dave@birdie72.freeserve.co.uk
;
;
; Globals here
;
;meshes
Global Tunnel_mesh
Global Background
Global Aster_mesh
Global player_mesh
Global shield_mesh
Global missile1_mesh
Global Bad01_mesh
Global claw_anim_mesh
;textures
Global Tunnel_tex
Global Shield_tex
Global tex0
Global tex1
;Sprites
Global shot1_spr
Dim smoke_spr(4)
Global Target_spr
;images
Global TitleScreen1
Global MousePointer
Global Lives_image
Global Gover_image
;Sounds
Global shoot1_wave
Global Explode_wave
;Misc globals
Global Tunnel_Texture_Coord#=0
Global Shield_tex_pos#=0
Global Scroll_Speed#=0.002
Global EFX_SPEED=34
Global CameraZpos=-300
Global Num_Players=0
Global Dead_BandX#=.2
Global Dead_BandY#=.2
Global Flash_Cnt=128
Global Go1_Timer=0
Global Go2_timer=0
Global cntr
Global Exited=False
Global t_r1,t_r2,ta_r1,ta_r2
Global t_g1,t_g2,ta_g1,ta_g2
Global t_b1,t_b2,ta_b1,ta_b2
Global G_Brightness=100
Global G_StartLives=5
Global G_CurrentGFX=1
Global Max_GFXModes=0
Global G_Diff=3
;Options entities
Global optcamera
Global opttunnel
Global optbackground
Global optlight
;
Global g_width
Global g_height
;redefinable keys
Dim keys(6)
keys(1)=203 ; Left Key
keys(2)=205 ; Right Key
keys(3)=200 ; Down Key
keys(4)=208 ; Up Key
keys(5)=57 ; Fire Key
keys(6)=58 ; fire 2 key
;High Score Table
Dim hn$(11),hs(11),score(2)
Restore highs
For a=1 To 11
Read hn$(a),hs(a)
Next
Global player1type=1
Global player2type=3
Global gametype=1
Global Control=1
Dim GM_TYPE$(10)
Dim CN_TYPE$(10)
Dim MENU$(10)
Restore dats
For a=1 To 2 : Read GM_TYPE(a):Next
For a=1 To 6 : Read CN_TYPE(a):Next
For a=1 To 7 : Read MENU(a):Next

View File

@ -0,0 +1,896 @@
; Tunnel Run
; (c)2001 David Bird
; dave@birdie72.freeserve.co.uk
; www.birdie72.freeserve.co.uk
; Main Program
;
Global Cheater=False
Graphics3D 640,480
SetBuffer BackBuffer()
Include "globs.bb"
Include "functions.bb"
ChangeDir "Media"
;
;Set Up collision Constants here.
;
Const TYPE_CAM=1
Const TYPE_PLAYER=2
Const TYPE_SHOT1=3
Const TYPE_TUNNEL=50
Const TYPE_ASTER=51
Const TYPE_ASTERPOLY=52
Const TYPE_CLAW=53
;
;
Load_Media()
Get_GFX_Modes()
Load_Highscores()
Set_GFXMode()
Resize_Images(GraphicsWidth(),GraphicsHeight())
;
Goto MainMenu
End
.Game_Start_Loop
;
FlushMouse
Create_Tunnel()
lit=CreateLight()
TurnEntity lit,45,0,0
;
Select Gametype
Case 1 ;One Player Game
this.play=Add_Player(player1type,255,255,255,False,0,"Player1")
Num_Players=1
Case 2 ;Two Player Game
this.play=Add_Player(player1type,255,255,255,True,0,"")
other.play=Add_Player(player2type,255,255,0,True,1,"")
Num_Players=2
If Player2type>=5 Then Num_Players=2
End Select
Exited=False
Go1_timer=0
Go2_timer=0
Game_Counter=0
dummy=CreatePivot()
Listen=CreateListener(dummy,.001,10,5)
While Exited=False
Game_Counter=Game_Counter+1
Cls
TurnEntity lit,1,1,0
Update_Flash()
Do_Tunnel_Scroll(Tunnel_tex,1)
Do_Tunnel_Scroll(tex0,-2)
Update_Shield_Texture()
Do_Control()
Update_Players()
Update_Shots()
Update_Objects()
Update_Smoke()
Change_Tunnel_Colors()
If (Game_Counter Mod 100)=0 Then Alter_Tunnel_Colors()
;
If cnt=0 Then
cnt=10+(10*(3-G_Diff))
Add_Object(Rnd(-300,300),Rnd(-300,300),9000,-1,Rnd(10,70),Rnd(50,150),Rand(1,3))
; Add_Object(ppop,0,10000,-1,50,4,1000)
ppop=ppop+20
End If
;
If KeyHit(1) Then Num_Players=0:Exited=True
;
cnt=cnt-1
;
UpdateWorld
RenderWorld
lastplayer=Do_GameOver_Overlay()
If lastplayer>=5 Then ppp=100
If ppp>0 Then
ppp=ppp-1
If ppp=2 Then Exited=True
End If
Update_Players_Views()
Flip
Wend
FreeEntity dummy
;Check High Scores
Select gametype
Case 1 ;One player Game
Check_Highs(score(0),1)
Case 2 ;two player Game
If player1type<=4 Then
Check_Highs(score(0),1)
End If
If player2type<=4 Then
Check_Highs(score(1),2)
End If
End Select
FreeEntity lit
FreeEntity Tunnel_Mesh
FreeEntity Background
Free_Smoke()
Free_Shots()
Delete_Objects()
Delete_Players()
FlushMouse
VWait 50
Goto MainMenu
;
;
Function Do_GameOver_Overlay()
If Go1_Timer>0 Then
Go1_Timer=Go1_timer-1
If Go1_Timer>2 Then
If Num_Players=1 Then pos=0 Else pos=GraphicsHeight()/4
If Go2_Timer>2 Then pos=0
DrawImage gover_image,0,pos
Else
If Num_Players=0 Then
Exited=True
Else
lastplayer=Resize_Last_Player()
End If
End If
End If
If Go2_Timer>0 Then
Go2_Timer=Go2_timer-1
If Go2_Timer>2 Then
If Num_Players=1 Then pos=GraphicsHeight()/2 Else pos=GraphicsHeight()/4
If Go1_Timer>2 Then pos=GraphicsHeight()/2
DrawImage gover_image,0,pos
Else
If Num_Players=0 Then
Exited=True
Else
lastplayer=Resize_Last_Player()
End If
End If
End If
Return lastplayer
End Function
;
;
Function Update_Shield_Texture()
shield_tex_pos=shield_tex_pos+.01
If shield_tex_pos>1 Then shield_tex_pos=shield_tex_pos-1
PositionTexture shield_tex,shield_tex_pos,shield_tex_pos
End Function
; Create Scrolling tunnel No entity movement done
; at all. Texture scrolling screates the effect
; Makes controling bad guys a whole lot easier..
;
Function Create_Tunnel()
Tunnel_mesh=CreateCylinder(12)
FlipMesh Tunnel_mesh
ScaleMesh Tunnel_mesh,500,12000,500
RotateEntity Tunnel_mesh,90,0,0
EntityTexture Tunnel_mesh,Tunnel_tex,0,0
EntityType tunnel_mesh,TYPE_TUNNEL
PositionEntity tunnel_mesh,0,0,11400
EntityColor tunnel_mesh,255,100,0
t_r1=255:ta_r1=t_r1
t_g1=100:ta_g1=t_g1
t_b1=0:ta_b1=t_b1
BackGround=CreateCylinder(12)
FlipMesh BackGround
ScaleMesh BackGround,510,12000,510
RotateEntity BackGround,90,0,0
EntityTexture BackGround,tex0,0,0
PositionEntity BackGround,0,0,11400
EntityColor BackGround,0,255,255
t_r2=0:ta_r2=t_r2
t_g2=255:ta_g2=t_g2
t_b2=255:ta_b2=t_b2
End Function
Function Change_Tunnel_Colors()
If t_r1>ta_r1 Then t_r1=t_r1-1
If t_g1>ta_g1 Then t_g1=t_g1-1
If t_b1>ta_b1 Then t_b1=t_b1-1
If t_r2>ta_r2 Then t_r2=t_r2-1
If t_g2>ta_g2 Then t_g2=t_g2-1
If t_b2>ta_b2 Then t_b2=t_b2-1
If t_r1<ta_r1 Then t_r1=t_r1+1
If t_g1<ta_g1 Then t_g1=t_g1+1
If t_b1<ta_b1 Then t_b1=t_b1+1
If t_r2<ta_r2 Then t_r2=t_r2+1
If t_g2<ta_g2 Then t_g2=t_g2+1
If t_b2<ta_b2 Then t_b2=t_b2+1
EntityColor Tunnel_mesh,t_r1,t_g1,t_b1
EntityColor Background,t_r2,t_g2,t_b2
End Function
Function Alter_Tunnel_Colors()
ta_r1=Rand(10,255):ta_g1=Rand(10,255):ta_b1=Rand(10,255)
ta_r2=Rand(10,255):ta_g2=Rand(10,255):ta_b2=Rand(10,255)
End Function
Function Resize_Images(Width,Height)
ResizeImage TitleScreen1,Width,Height
ResizeImage gover_image,Width,Height/2
End Function
;
;
;
Function Load_media()
Tunnel_tex=LoadTexture("tex0.bmp",6):ScaleTexture Tunnel_tex,1,2
tex0=LoadTexture("tex0.bmp"):ScaleTexture tex0,.5,.5
Shield_tex=LoadTexture("tex1.bmp",3)
Rock_Tex=LoadTexture("stone04.bmp")
;
; Global Meshes
;
Aster_mesh=LoadMesh("asteroid.3ds"):EntityTexture Aster_Mesh,Rock_tex
ScaleMesh Aster_mesh,.005,.005,.005
HideEntity Aster_Mesh
;
player_mesh=LoadMesh("hfighter.3ds")
ScaleEntity player_mesh,8,9,11
HideEntity player_mesh
;
shield_mesh=CreateSphere()
ScaleEntity shield_mesh,55,35,60
EntityTexture shield_mesh,shield_tex
HideEntity shield_mesh
;
missile1_mesh=LoadMesh("missile1.3ds")
RotateMesh missile1_mesh,Pi,0,0
ScaleMesh missile1_mesh,2,2,2
temptex=LoadTexture("tex2.bmp")
EntityTexture missile1_mesh,temptex
HideEntity missile1_mesh
FreeTexture temptex
;
Bad01_mesh=CreateSphere()
HideEntity bad01_mesh
claw_anim_mesh=LoadAnimMesh("claw.3ds")
HideEntity claw_anim_mesh
;
;
; Sprites
;
shot1_spr=LoadSprite("shot1.bmp")
HideEntity shot1_spr
ScaleSprite shot1_spr,32,16
;
For a=1 To 4
b$="smoke"+a+".bmp"
smoke_spr(a)=LoadSprite(b$)
HideEntity smoke_spr(a)
Next
target_spr=LoadSprite("target.bmp"):HideEntity target_spr
;
; 2DImages
Titlescreen1=LoadImage("title.bmp")
Mousepointer=LoadImage("mouse.bmp"):MaskImage MousePointer,255,255,0
Lives_Image=LoadImage("lives.bmp")
Gover_Image=LoadImage("go.bmp")
;
;
;Sounds
Shoot1_wave=LoadSound("shoot.wav")
Explode_Wave=LoadSound("boom.wav")
End Function
Function Free_media()
If Tunnel_tex<>0 Then FreeTexture tunnel_tex:tunnel_tex=0
If tex0<>0 Then FreeTexture tex0:tex0=0
If Shield_tex<>0 Then FreeTexture Shield_Tex:Shield_Tex=0
If Rock_Tex<>0 Then FreeTexture Rock_Tex:Rock_Tex=0
If temptex<>0 Then FreeTexture temptex:temptex=0
;
; Global Meshes
;
If Aster_mesh<>0 Then FreeEntity Aster_mesh:Aster_Mesh=0
If player_mesh<>0 Then FreeEntity player_mesh:player_mesh=0
If shield_mesh<>0 Then FreeEntity shield_mesh:shield_mesh=0
If missile1_mesh<>0 Then FreeEntity missile1_mesh:missile1_mesh=0
;
If Bad01_mesh<>0 Then FreeEntity bad01_mesh:Bad01_mesh=0
If Claw_Anim_Mesh<>0 Then FreeEntity Claw_Anim_Mesh:Claw_Anim_Mesh=0
;
;
; Sprites
;
If shot1_spr<>0 Then FreeEntity shot1_spr:shot1_spr=0
;
For a=1 To 4
If smoke_spr(a)<>0 Then FreeEntity smoke_spr(a):smoke_spr(a)=0
Next
If target_spr<>0 Then FreeEntity target_spr:Target_Spr=0
;
; 2DImages
If Titlescreen1<>0 Then FreeImage Titlescreen1:Titlescreen1=0
If Mousepointe<>0 Then FreeImage MousePointer:MousePointer=0
If Lives_Image<>0 Then FreeImage Lives_image:Lives_image=0
If Gover_Image<>0 Then FreeImage Gover_Image:Gover_Image=0
;
;Sounds
If Shoot1_wave<>0 Then FreeSound Shoot1_wave:Shoot1_wave=0
If Explode_Wave<>0 Then FreeSound Explode_Wave:Explode_Wave=0
End Function
;
; Trick scrolling
; Move the texture
Function Do_Tunnel_Scroll(texture,div#)
Tunnel_Texture_Coord=Tunnel_Texture_Coord+Scroll_speed
If Tunnel_Texture_Coord>1 Then Tunnel_Texture_Coord=Tunnel_Texture_Coord-1
PositionTexture texture,Tunnel_Texture_Coord/div,Tunnel_Texture_Coord
End Function
;
; Control an entity
;
; Player functions
; typ = 1 Mouse controled player
; 2 ana Joy Controlled player
; 3 dig Joy controlled player
; 4 keyboard controlled player
; 5 CPU Controlled player
; 6 internet player ** TO DO **
Function Do_Control()
For a.play=Each play
If a\dead=False Then
Select a\con
Case 1 ;Mouse Controlled
Do_MouseMove(a)
Case 2 ;analog controlled
Do_JoyMove(a)
Case 3 ;directional joy controlled
Do_JoyDirMove(a)
Case 4 ;keyboard controlled
Do_KeyMove(a)
Case 5 ;CPU Controlled
CPU_Move(a)
Case 6 ;Internet controlled
End Select
End If
Next
End Function
Function Do_MouseMove(a.play)
dx#=MouseXSpeed()/2
dy#=MouseYSpeed()/2
If dx>0 Then a\roll=a\roll-4
If dx<0 Then a\roll=a\roll+4
If dy>0 Then a\pich=a\pich-4
If dy<0 Then a\pich=a\pich+4
If a\pich<>0 Then a\pich=a\pich*.85
If a\roll<>0 Then a\roll=a\roll*.85
RotateEntity a\piv,a\pich,0,a\roll
TranslateEntity a\piv,dx,dy,0
MoveMouse GraphicsWidth()/2,GraphicsHeight()/2
If MouseDown(1) Then Add_Shot(a\piv,1,10,a)
End Function
Function Do_JoyMove(a.play)
dx#=JoyX()
dy#=JoyY()
If dx>-Dead_BandX And dx<Dead_BandX Then dx=0
If dy>-Dead_BandY And dy<Dead_BandY Then dy=0
dx=dx*5
dy=dy*5
If dx>0 Then a\roll=a\roll-4
If dx<0 Then a\roll=a\roll+4
If dy>0 Then a\pich=a\pich-4
If dy<0 Then a\pich=a\pich+4
If a\pich<>0 Then a\pich=a\pich*.85
If a\roll<>0 Then a\roll=a\roll*.85
RotateEntity a\piv,a\pich,0,a\roll
TranslateEntity a\piv,dx,dy,0
If JoyDown(1) Then Add_Shot(a\piv,1,10,a)
End Function
Function Do_JoyDirMove(a.play)
dx#=JoyXDir()*5
dy#=JoyYDir()*5
If dx>0 Then a\roll=a\roll-4
If dx<0 Then a\roll=a\roll+4
If dy>0 Then a\pich=a\pich-4
If dy<0 Then a\pich=a\pich+4
If a\pich<>0 Then a\pich=a\pich*.85
If a\roll<>0 Then a\roll=a\roll*.85
RotateEntity a\piv,a\pich,0,a\roll
TranslateEntity a\piv,dx,dy,0
If JoyDown(1) Then Add_Shot(a\piv,1,10,a)
End Function
Function Do_KeyMove(a.play)
If KeyDown(Keys(1)) Then dx#=-5
If KeyDown(Keys(2)) Then dx#=5
If KeyDown(Keys(3)) Then dy#=-5
If KeyDown(Keys(4)) Then dy#=5
If dx>0 Then a\roll=a\roll-4
If dx<0 Then a\roll=a\roll+4
If dy>0 Then a\pich=a\pich-4
If dy<0 Then a\pich=a\pich+4
If a\pich<>0 Then a\pich=a\pich*.85
If a\roll<>0 Then a\roll=a\roll*.85
RotateEntity a\piv,a\pich,0,a\roll
TranslateEntity a\piv,dx,dy,0
If KeyDown(keys(5)) Then Add_Shot(a\piv,1,10,a)
End Function
Function CPU_Move(a.play)
b.Obj=Find_Closest_Target()
If b<>Null Then
dx#=(EntityX(b\piv)-EntityX(a\piv))/60
dy#=(EntityY(b\piv)-EntityY(a\piv))/60
If dx>0 Then a\roll=a\roll-2
If dx<0 Then a\roll=a\roll+2
If dy>0 Then a\pich=a\pich-2
If dy<0 Then a\pich=a\pich+2
If a\pich<>0 Then a\pich=a\pich*.85
If a\roll<>0 Then a\roll=a\roll*.85
RotateEntity a\piv,a\pich,0,a\roll
TranslateEntity a\piv,dx,dy,0
ent=LinePick(EntityX(a\piv),EntityY(a\piv),EntityZ(a\piv)+50,0,0,5000)
If dx>-2.5 And dx<2.5 Then
If dy>-2.5 And dy<2.5 Then
Add_Shot(a\piv,1,10,a)
End If
End If
End If
End Function
Function Find_Obj_From_Ent.Obj(ent)
For a.obj=Each obj
If a\piv=ent Or a\ent=ent Then Return a
Next
Return Null
End Function
Function Find_Closest_Target.Obj()
z#=1000000
minz#=100
For a.Obj=Each Obj
If EntityZ(a\piv,True)>0 Then
If EntityZ(a\piv,True)<z And EntityZ(a\piv,True)>minz Then target.Obj=a:z=EntityZ(a\piv,True)
End If
Next
Return target
End Function
;
Type play
Field name$
Field rate
Field ox#
Field cam
Field con
Field piv
Field ent
Field shield_ent
Field glow#
Field dead
Field pich#
Field roll#
Field shield#
Field score
Field waiting
Field id
;
Field tlx
Field tly
Field brx
Field bry
Field lives
End Type
;
;
;
Type shot
Field typ
Field ent
Field life#
Field dx#
Field dy#
Field dz#
Field speed#
Field ang#
Field firer.play
Field target.Obj
End Type
;
; Object
;
; 1-3 are asteroids
Type Obj
Field typ
Field piv
Field ent
Field val
Field col
Field cd
Field speed#
Field dx#
Field dy#
Field ds#
Field fx
Field fy
Field dir
Field st
Field cnt
End Type
;
; Smoke Effect
;
Type smoke
Field alpha#
Field reduct#
Field ent
Field size#
Field rot#
Field disp#
End Type
.MainMenu
SetBuffer BackBuffer()
Cls
FlushMouse:FlushKeys
Game_Start=False
Exit_Game=False
Options=False
While Not Game_Start=True
cntr=cntr+1
If MouseXSpeed()+MouseYSpeed()<>0 Then cntr=0
Cls
DrawImage TitleScreen1,0,0
sel=0
If cntr<500 Then
Draw_Menu(True,0,0)
sel=Draw_Menu(False,-2,-2)
If MouseHit(1) Then
Select sel
Case 1
If gametype=1 Then gametype=2 Else gametype=1
Case 2
player1type=player1type+1
If player1type>6 Then player1type=1
If player2type=player1type Then player1type=player1type+1
Case 3
player2type=player2type+1
If player2type>6 Then player2type=1
If player2type=player1type Then player2type=player2type+1
Case 4
Game_Start=True
Options=True
Case 5
Case 6
If player1type<>6 And player2type<>6 Then
Game_Start=True
End If
Case 7
Exit_Game=True
Game_Start=True
End Select
End If
Else
If cntr>1000 Then cntr=0
Draw_Highs(True,0,0)
Draw_Highs(False,-2,-2)
End If
DrawImage MousePointer,MouseX(),MouseY()
Flip
Wend
cntr=0
If Options=True Then Goto Options
If Exit_Game=True Then Goto Exit_Game_Sub
If Game_Start=True Then Goto Game_Start_Loop
RuntimeError "Game Ended Abnormally"
EndGraphics
End
;
; Exit Game / Save Highs etc
; Do Credits
.Exit_Game_Sub
Save_Highscores()
ChangeDir ".."
EndGraphics
End
;
;
;Save Highscores and options
Function Load_Highscores()
p=0
file=ReadFile("../Highs/Highs.Hsr")
For a=1 To 10
Hn$(a)=ReadLine$(file)
Hs(a)=ReadInt(file)
Next
G_Brightness=ReadInt(file)
G_StartLives=ReadInt(file)
G_Diff=ReadInt(file)
G_CurrentGFX=ReadInt(file)
End Function
Function Save_Highscores()
p=0
file=WriteFile("../Highs/Highs.Hsr")
For a=1 To 10
WriteLine file,Hn$(a)
WriteInt file,Hs(a)
Next
WriteInt file,G_Brightness
WriteInt file,G_StartLives
WriteInt file,G_Diff
WriteInt file,G_CurrentGFX
End Function
Function Draw_Menu(col,ox,oy)
sel=0
For a=1 To 7
b$=""
If col=True Then Color 0,0,0 Else Color 255,255,255
p=0
Select a
Case 1
b$=Menu$(a)+GM_TYPE(gametype)
Case 2
b$=Menu$(a)+CN_TYPE(player1type)
Case 3
If gametype=2 Then
b$=Menu$(a)+CN_TYPE(player2type)
End If
Default
b$=Menu(a)
End Select
c#=(Float(a)*32)/2
w=Len(b$)*8
y=GraphicsHeight()/2
y=((y-c)+a*32)-oy
x=(GraphicsWidth()/2)-ox-(w/2)
h=16
If RectsOverlap(x,y,w,h,MouseX(),MouseY(),1,1) Then sel=a:p=1
If p<>0 And col=False Then Color Rnd(255),Rnd(255),Rnd(255)
Text x,y,b$
Next
Return sel
End Function
;
;Draw High's
Function Draw_Highs(col,ox,oy)
For a=1 To 10
If col=True Then Color 0,0,0 Else Color 255,255,255
b$=a+" "+hn$(a)+" "+hs(a)
c#=(Float(a)*32)/2
w=Len(b$)*8
y=GraphicsHeight()/2
y=((y-c)+a*32)-oy
x=(GraphicsWidth()/2)-ox-(w/2)
h=16
Text x,y,b$
Next
End Function
Function Check_Highs(score,id)
If score>hs(10) Then ; Got a high Score
ps=0
For a=10 To 1 Step -1
If score>hs(a) Then
ps=a
hs(a+1)=hs(a)
hn(a+1)=hn(a)
End If
Next
If ps<>0 Then
hs(ps)=score
SetBuffer FrontBuffer()
Cls
DrawImage TitleScreen1,0,0
Color 0,0,0
Text 0,GraphicsHeight()/2,"Well Done Player "+id+". Your On the High Score Table",0,1
Color 255,255,255
Text 2,2+GraphicsHeight()/2,"Well Done Player "+id+". Your On the High Score Table",0,1
Locate GraphicsWidth/2,GraphicsHeight()/2+16
hn(ps)=Input$("Enter Your Name ?")
SetBuffer BackBuffer()
cntr=1000
End If
End If
End Function
.dats
;Game Type
Data "One Player Game"
Data "Two Player Game"
;Control Type
Data "Mouse Control"
Data "Analog Joystick"
Data "Digital Joystick"
Data "Keyboard (Not Recommended)"
Data "CPU"
Data "Network Game(Not Availible)"
;Menus
Data "Game Type:"
Data "Player One Control:"
Data "Player Two Control:"
Data "Options"
Data ""
Data "START GAME"
Data "QUIT GAME"
.highs
Data "David Bird",100000
Data "Made With",90000
Data "The Great",80000
Data "Blitz Basic3D",70000
Data "(c)2001 David Bird",60000
Data "Donna Bird",50000
Data "Jessica Bird",40000
Data "Rebecca Bird",30000
Data "Daniel Bird",20000
Data "David Bird",10000
Data "",0
.Options
Create_Tunnel()
OptTunnel=CopyEntity(Tunnel_Mesh):FreeEntity Tunnel_Mesh
OptBackground=CopyEntity(Background):FreeEntity Background
Optlight=CreateLight()
TurnEntity OptLight,45,0,0
OptCamera=CreateCamera()
CameraRange Optcamera,1,25000
While Not KeyDown(1)
AmbientLight G_Brightness,G_Brightness,G_Brightness
UpdateWorld
RenderWorld
G_Brightness=Draw_slider("Brightness",50,50,300,16,G_Brightness,255,5,50)
G_StartLives=Draw_slider("Number of Lives",50,75,300,16,G_StartLives,5,1,150)
If G_StartLives<1 Then G_StartLives=1
G_Diff=Draw_slider("Difficulty",50,100,300,16,G_Diff,3,1,150)
G_CurrentGFX=Draw_GFX_Selector(G_CurrentGFX,50,130)
DrawImage MousePointer,MouseX(),MouseY()
Text GraphicsWidth()/2,GraphicsHeight()-16,"Press Escape to Return to Main Menu",1,0
Flip
Wend
If OptLight<>0 Then FreeEntity OptLight:OptLight=0
If OptTunnel<>0 Then FreeEntity OptTunnel:OptTunnel=0
If OptBackground<>0 Then FreeEntity OptBackground:OptBackground=0
If OptCamera<>0 Then FreeEntity OptCamera:OptCamera=0
Goto MainMenu
Function Draw_slider(txt$,x,y,Ln#,hg,pos#,scale#,Stp,dely)
sel=0
Rect x,y,ln,hg,0
Rect x+ln,y,16,hg,0:Text x+ln+8,y+(hg/2)-1,"-",1,1
If RectsOverlap(x+ln,y,16,16,MouseX(),MouseY(),1,1) Then sel=1
Rect x+ln+16,y,16,hg,0:Text x+ln+24,y+(hg/2)-1,"+",1,1
If RectsOverlap(x+ln+16,y+(hg/2)-1,16,16,MouseX(),MouseY(),1,1) Then sel=2
ps=(ln/scale)*pos
Rect ps+x,y,2,hg,1
Text x+ln+38,y,txt+" "+Int(Pos)
newval=pos
If MouseDown(1) And sel<>0 Then
Delay dely
If sel=1 And newval>0 Then newval=newval-stp
If sel=2 And newval<scale Then newval=newval+stp
End If
If newval<0 Then newval=0
If newval>scale Then newval=scale
Return newval
End Function
Function Draw_GFX_Selector(current,x,y)
Rect x-4,y-4,150,24,0
sel=0
Rect x+150,y-4,16,24,0:Text x+158,y+6,"-",1,1
If RectsOverlap(x+150,y-4,16,24,MouseX(),MouseY(),1,1) Then sel=1
Rect x+166,y-4,16,24,0:Text x+172,y+6,"+",1,1
If RectsOverlap(x+166,y-4,16,24,MouseX(),MouseY(),1,1) Then sel=2
Rect x+182,y-4,24,24,0:Text x+194,y+6,"GO",1,1
If RectsOverlap(x+182,y-4,24,24,MouseX(),MouseY(),1,1) Then sel=3
p.GfxMode=First GfxMode
For r=1 To current
p=After p
Next
Text x,y,p\t$
If MouseDown(1) And sel<>0 Then
Delay 100
If sel=1 And current>1 Then current=current-1
If sel=2 And current<Max_GFXModes Then current=current+1
If sel=3 Then ;Reset GFXMODE
If OptLight<>0 Then FreeEntity OptLight:OptLight=0
If OptTunnel<>0 Then FreeEntity OptTunnel:OptTunnel=0
If OptBackground<>0 Then FreeEntity OptBackground:OptBackground=0
If OptCamera<>0 Then FreeEntity OptCamera:OptCamera=0
Set_GFXMode()
Create_Tunnel()
OptTunnel=CopyEntity(Tunnel_Mesh):FreeEntity Tunnel_Mesh
OptBackground=CopyEntity(Background):FreeEntity Background
Optlight=CreateLight()
TurnEntity OptLight,45,0,0
OptCamera=CreateCamera()
CameraRange Optcamera,1,25000
End If
End If
Return current
End Function
Type GfxMode
Field width,height,depth
Field t$
End Type
Function Get_GFX_Modes()
cnt=0
For k=1 To CountGfxModes()
If GfxMode3D(k)
t.GfxMode=New GfxMode
t\width=GfxModeWidth(k)
t\height=GfxModeHeight(k)
t\depth=GfxModeDepth(k)
t\t$=t\width+","+t\height+","+t\Depth
cnt=cnt+1
EndIf
Next
Max_GFXModes=cnt-1
End Function
Function Set_GFXMode()
m.GfxMode=First GfxMode
For r=1 To G_CurrentGFX
m=After m
Next
Free_Media()
ClearCollisions
Graphics3D m\width,m\height,m\depth,1
SetBuffer BackBuffer()
Load_Media()
Text GraphicsWidth()/2,GraphicsHeight()/2,"Please Wait Initialising Graphics",1,1
Flip
Resize_Images(GraphicsWidth(),GraphicsHeight())
;Do Collision Table Here
Collisions TYPE_CAM,TYPE_TUNNEL,2,2
Collisions TYPE_PLAYER,TYPE_TUNNEL,2,2
Collisions TYPE_ASTER,TYPE_PLAYER,1,2
Collisions TYPE_PLAYER,TYPE_ASTER,1,2
Collisions TYPE_SHOT1,TYPE_ASTER,1,1
Collisions TYPE_PLAYER,TYPE_PLAYER,1,1
Collisions TYPE_PLAYER,TYPE_CLAW,2,2
End Function

View File

@ -0,0 +1,888 @@
;EdzUp Asteroids
;Written by EdzUp of Stonegoat Software
Graphics3D 640,480,16
SetBuffer BackBuffer()
SeedRnd MilliSecs() ;setup random numbers
Global ArialLarge=LoadFont("arial",72,1,0,0)
Global ArialMid=LoadFont("arial",48,1,0,0)
Global Arial=LoadFont("arial",14,0,0,0)
Global Explode = LoadSound("Explode.wav") ;Asteroid Explosion
Global ShipExplode = LoadSound("Explode1.wav") ;ship Explosion
Global UFOSound = LoadSound("ufo.wav") ;UFO Engine sound
Global Lazer = LoadSound("Lasergun.wav") ;Lazer Sound
Global PlayerHit = LoadSound("hit.wav") ;Player ship hit
Global as#=0
Global UfoSoundChannel=-1 ;ufo sound channel ;)
SetFont Arial
Type AsteroidInfo
Field x,y,z ;Asteroid position in 3d world
Field Model ;handle to Asteroid model
Field speed ;speed asteroid moving
End Type
Type Shots
Field x,y,z ;position in 3d world
Field Model ;Shot Model
Field Timer ;Shot Timer
Field Speed
End Type
Type UFOShots
Field x,y,z ;position in 3d world
Field Model ;Shot Model
Field Timer ;Shot Timer
Field Speed
End Type
Type UFOInfo
Field x,y,z ;position in 3d world
Field Model ;UFO Model
End Type
Type Fragment ;Explosion Fragment
Field x,y,z ;position in 3d world
Field speed
Field timer
Field model
End Type
Type Explode
Field Model ;Entity attached to it
Field Size ;current size
Field mode ;1 it increases in size
Field timer ;explosion timer
End Type
;************ TRACERS FLAME CODE **************
Global flam = LoadSprite("flame2.bmp")
ScaleSprite flam,50,50
HideEntity flam
Global flam2 = LoadSprite("flame3.bmp") ;UFO Shot
ScaleSprite flam2,50,50
HideEntity flam2
;**********************************************
Global B3DLogo = LoadImage("b3dlogo.png")
MidHandle B3DLogo
Global TitleTex = LoadImage("Title.png")
MidHandle TitleTex
;enemy UFO Mesh
Global UFOMesh=LoadMesh("UFO.3ds")
ScaleMesh UFOMesh,50,50,50
HideEntity UFOMesh
;Load Asteroid Model (Large)
Global LargeAsteroidMesh=LoadMesh("asteroid.3ds")
ScaleMesh LargeAsteroidMesh,60,60,60
HideEntity LargeAsteroidMesh
;Load Asteroid Model (medium)
Global MediumAsteroidMesh=LoadMesh("asteroid.3ds")
ScaleMesh MediumAsteroidMesh,30,30,30
HideEntity MediumAsteroidMesh
;Load Asteroid Model (small)
Global SmallAsteroidMesh=LoadMesh("asteroid.3ds")
ScaleMesh SmallAsteroidMesh,15,15,15
HideEntity SmallAsteroidMesh
;Load Player Model
Global PlayerMesh=LoadMesh("hfighter.3ds")
ScaleMesh PlayerMesh,1,1,1
HideEntity PlayerMesh
;create backdrop
Global Stary=CreateBrush()
BrushColor Stary,155,155,155
StarTex=LoadTexture("Stars.bmp")
ScaleTexture startex,.1,.1
BrushTexture Stary,StarTex
Global BackdropSphere=CreateSphere()
EntityTexture BackDropsphere,startex
HideEntity BackdropSphere
ScaleMesh BackdropSphere,-30000,-30000,-30000 ;negative value so player can be put inside
;and still see the texture ;)
;setup entity types
Const PLAYER_TYPE =1
Const CAMERA_TYPE =2
Const UFOSHOT_TYPE =3
Const PLAYERSHOT_TYPE =5
Const UFO_TYPE =6
Const ASTEROID_TYPE =10
;setup collision system
;1 is player
;3 UFO Shots
;5 player shots
;6 is UFO's
;10 are asteroids
Collisions PLAYER_TYPE, ASTEROID_TYPE,1,2
Collisions CAMERA_TYPE, UFOSHOT_TYPE,1,2
Collisions PLAYERSHOT_TYPE, ASTEROID_TYPE,1,2
Collisions UFOSHOT_TYPE, PLAYER_TYPE,1,2
Collisions PLAYER_TYPE, UFOSHOT_TYPE,1,2
Collisions PLAYER_TYPE, UFO_TYPE,1,2
Collisions PLAYERSHOT_TYPE, UFO_TYPE,1,2
Light=CreateLight(1)
Global Pivot=CreatePivot()
EntityType Pivot,PLAYER_TYPE
EntityRadius pivot,7
;create camera
Global camera=CreateCamera(pivot) ;Or nothing will be drawn
CameraRange camera,1,45000 ;were in space ;)
;CameraFogRange camera,44500,45000
;CameraFogColor camera,0,0,0
EntityType camera,PLAYER_TYPE
EntityRadius camera,7
Global Backing=CopyEntity(BackDropsphere)
Global PlayShip=CopyEntity(PlayerMesh,0)
EntityType PlayShip,1
EntityRadius playship,150
PositionEntity PlayShip,EntityX#(pivot),EntityY#(pivot),EntityZ#(pivot)
RotateEntity PlayShip,EntityPitch#(pivot),EntityYaw#(pivot),EntityRoll#(pivot)
MoveEntity PlayShip,0,0,-3.5
.restart
;declare a few globals
Global UFOCount=0 ;number of UFO's in local area
Global PlayerScore=0
Global HighScore=10000
Global PlayerLives=3
Global PX,PY,PZ ;player position
Global FX,FY,FZ ;player facing
Global AsteroidCount=5 ;number of asteroids in this level
Global Level=1 ;level player is on
Global ExtraLife=10000 ;Extra Life at 10000 points
Global Damage=100 ;how many damage points player has
Global Speed=0 ;current players ship speed
Global Actual=0 ;Actual speed
Global Roll#=0 ;Ships Rolling
Global Hits=0 ;Shots hit
Global Fired=0 ;Shots fired
Global Accuracy=0 ;Accuracy
Global Asteroids=0 ;Current Asteroid number
Global TextTimer=0 ;Text Timer for messages
Global BonusTextTimer=0;Timer for Bonuses
Global BonusText$="" ;message
Global BonusTime=0 ;Timer for Bonus (0 means its run out ;) )
Global Bonus=0 ;Bonus Active
Global GodMode=0 ;1 if godmode active
Global ShotTime=0 ;Shot Timer
Global MaxTime=10 ;Max Shot Timer
Global UFOShotTime=0 ;UFO Firing Timer
Global OldDamage=0 ;Old damage for God Mode
Global Endgame=0 ;1 if player has been killed (and all his lives have run out)
CameraClsColor camera,0,0,0 ;set camera refresh color to black
AmbientLight 255,255,255
Title()
CreateLevel(1)
texttimer=100
Repeat
If GodMode=1 Then OldDamage=Damage
Cls
mxs=MouseXSpeed() ;get mouse speed
mys=MouseYSpeed()
MoveMouse 320,240 ;reset mouse to center of screen (so mousex speed doesnt stop)
TurnEntity Pivot,mys,-mxs,0
If KeyDown(200)=1 Then Speed=Speed+2 ;up
If KeyDown(208)=1 Then Speed=Speed-2 ;down
If KeyDown(203)=1 Then Roll#=Roll#-0.5;left
If KeyDown(205)=1 Then Roll#=Roll#+0.5;right
If Speed<0 Then Speed=0
If Speed>100 Then Speed=100
If Actual>Speed Then Actual=Actual-1
If Actual<Speed Then Actual=Actual+1
MoveEntity pivot,0,0,Actual
TurnEntity pivot,0,0,Roll#
PositionEntity PlayShip,EntityX#(pivot),EntityY#(pivot),EntityZ#(pivot)
RotateEntity PlayShip,EntityPitch#(pivot),EntityYaw#(pivot),EntityRoll#(pivot)
MoveEntity PlayShip,0,0,-3.5
If MouseDown(1)=1 And shottime<=0 Then FireShot(Pivot)
If ShotTime>0 Then ShotTime=ShotTime-1
Roll=0
UpdateLevel()
updateExplosions()
UFOAppear=Rnd(100000)
If UFOAppear<50
PlaceUFO()
EndIf
If Damage<1
PlaySound shipexplode
ClearLevel()
CreateLevel(Level)
PositionEntity camera,0,0,0
texttimer=100
Damage=100
PlayerLives=PlayerLives-1
EndIf
If PlayerLives<0 And texttime<1
Repeat
Until MouseDown(1)=0 And MouseDown(2)=0
ClearLevel()
Goto restart
EndIf
If PlayerLives<0
Endgame=1
texttime=200
EndIf
If Asteroids<1
EndOfLevelAnim()
AccuracyBonus()
ClearLevel()
Level=Level+1
CreateLevel(Level)
PositionEntity camera,0,0,0
texttimer=100
EndIf
PositionEntity PlayShip,EntityX#(pivot),EntityY#(pivot),EntityZ#(pivot)
RotateEntity PlayShip,EntityPitch#(pivot),EntityYaw#(pivot),EntityRoll#(pivot)
MoveEntity PlayShip,0,0,-4.5
UpdateWorld
RenderWorld
If Texttimer>0
SetFont ariallarge
Color 255,255,255
If endgame=0 Then Text 320,240,"LEVEL "+Level,1,1
If endgame=1 Then Text 320,240,"GAME OVER",1,1
SetFont arial
TextTimer=TextTimer-1
EndIf
If BonusTexttimer>0
SetFont arialMid
Color 255,255,255
Text 320,420,BonusText$,1,1
SetFont arial
BonusTextTimer=BonusTextTimer-1
EndIf
BonusTime=BonusTime-5
If BonusTime<1
MaxTime=10
GodMode=0
BonusTime=-2
EndIf
If PlayerScore>=HighScore
HighScore=PlayerScore
SetFont arial
Text 320,60,"YOU HAVE A HIGH SCORE",1,1
EndIf
If PlayerScore>ExtraLife
BonusText$="Extra Life"
BonusTextTimer=100
PlayerLives=PlayerLives+1
ExtraLife=ExtraLife*2
EndIf
ShowStats()
Flip
TestCollisions()
If GodMode=1 Then Damage=OldDamage
Until KeyDown(1)=1
End
Function AccuracyBonus()
a=0
If (Hits>Fired/4)*3 Then a=75
If Hits=Fired Then a=100
Select a
Case 100:BonusText$="Accuracy Bonus"
BonusTextTimer=100
PlayerScore=PlayerScore+1000
Case 75 :BonusText$="Accuracy Bonus"
BonusTextTimer=100
PlayerScore=PlayerScore+500
End Select
Hits=0
Fired=0
Accuracy=-1
End Function
Function PlaceUFO()
UFO.UFOInfo = New UFOInfo
UFO\x=Rnd(-10000,10000)
UFO\y=Rnd(-10000,10000)
UFO\z=-10000
UFO\Model=CopyEntity(UFOMesh,0)
EntityType UFO\Model,6 ;Set UFO Type to 6
EntityRadius UFO\Model,150
PositionEntity UFO\Model,UFO\x,UFO\y,UFO\z
UFOCount=UFOCount+1
End Function
Function explosion(entity)
Boom.Explode = New explode
Boom\Model = CopyEntity(flam)
PositionEntity boom\Model,EntityX#(entity),EntityY#(entity),EntityZ#(entity)
PointEntity Boom\Model,pivot
Boom\Size=5
Boom\Mode=1
Boom\Timer=0
Fragments=Rnd(20)+10
For a=0 To Fragments
Frag.Fragment = New Fragment
Frag\Model = CopyEntity(Flam)
PositionEntity Frag\Model,EntityX#(entity),EntityY#(entity),EntityZ#(entity)
TurnEntity Frag\Model,Rnd(360),Rnd(360),Rnd(360)
Frag\Speed = (Rnd(5)+1)*5
Frag\Timer = 0
Next
End Function
Function UpdateExplosions()
For Boom.Explode=Each explode
If Boom<>Null
If Boom\mode=1
Boom\Size=5+(Boom\Timer)
Else
Boom\Size=5+(25-(Boom\Timer-25))
EndIf
ScaleSprite Boom\Model,Boom\size*25,Boom\size*25
Boom\Timer=Boom\Timer+1
If Boom\Timer>25 Then Boom\Mode=0
If Boom\Timer>50
FreeEntity Boom\Model
Delete Boom
EndIf
EndIf
Next
For Frag.Fragment = Each fragment
If Frag<>Null
MoveEntity Frag\Model,0,0,Frag\Speed
Frag\Timer = Frag\Timer + 1
If Frag\Timer>50
FreeEntity Frag\Model
Delete Frag
EndIf
EndIf
Next
End Function
Function UFOFire(entity)
;ufo firing function
PlaySound Lazer
UFOShot.UFOShots = New UFOShots ;create another Shot
UFOShot\Model = CopyEntity(flam2)
EntityType UFOShot\Model,3
UFOShot\Speed=50
PositionEntity UFOShot\Model,EntityX#(entity),EntityY#(entity),EntityZ#(entity)
TurnEntity UFOShot\Model,EntityPitch#(entity),EntityYaw#(entity),EntityRoll#(entity)
PointEntity UFOShot\Model,Pivot ;make shot face player (so shot moves towards player)
End Function
Function EndOfLevelAnim()
;remember old cam position
ox#=EntityX#(pivot)
oy#=EntityY#(pivot)
oz#=EntityZ#(pivot)
ofx#=EntityPitch#(pivot)
ofy#=EntityYaw#(pivot)
ofz#=EntityRoll#(pivot)
;create a player ship
Ship=CopyEntity(PlayerMesh,0)
PositionEntity Ship,0,0,0
PositionEntity pivot,250,120,250 ;position camera to get a good view ;)
PointEntity pivot,ship ;point camera (attached to pivot) at ship
ScaleEntity ship,3,3,3 ;scale ship so it looks better
timer=50
xm=0
;move ship
Repeat
MoveEntity ship,0,0,1
UpdateWorld
RenderWorld
Flip
timer=timer-1
If KeyDown(1)=1 Then End
Until timer<1
timer=25
ScaleEntity ship,3,3,12 ;scale ship to make it look like its jumping
;move ship forwards
Repeat
MoveEntity ship,0,0,-50
UpdateWorld
RenderWorld
Flip
timer=timer-1
If KeyDown(1)=1 Then End
Until timer<1
jumpstar=CopyEntity(flam2)
PositionEntity jumpstar,EntityX#(ship),EntityY#(ship),EntityZ#(ship)
FreeEntity ship
For a=1 To 10
ScaleSprite jumpstar,50*a,50*a
UpdateWorld
RenderWorld
Flip
Next
For a=10 To 1 Step -1
ScaleSprite jumpstar,50*a,50*a
UpdateWorld
RenderWorld
Flip
Next
FreeEntity jumpstar
UpdateWorld
RenderWorld
Flip
;restore camera position (attached to the pivot)
PositionEntity pivot,ox#,oy#,oz#
RotateEntity pivot,ofx#,ofy#,ofz#
End Function
Function FireShot(entity)
PlaySound Lazer
Shot.Shots = New Shots ;create another Shot
Shot\Model = CopyEntity(flam) ;copy Tracers Sprite Entity ;)
EntityType Shot\Model,5
PositionEntity Shot\Model,EntityX#(Pivot),EntityY#(Pivot),EntityZ#(Pivot)
TurnEntity Shot\Model,EntityPitch#(Pivot),EntityYaw#(Pivot),EntityRoll#(Pivot)
Shot\Speed = 50+(Actual+5)
ShotTime=MaxTime
Fired=Fired+1
End Function
Function NewAsteroid(Entity,speed)
;when something hits an asteroid this function creates new asteroids
If speed=5 Then count=Rnd(3,5)
If speed=10 Then count=Rnd(2,4)
Asteroids=Asteroids+count
For a=1 To count
Asteroid.AsteroidInfo=New AsteroidInfo
Asteroid\x=EntityX#(entity)
Asteroid\y=EntityY#(entity)
Asteroid\z=EntityZ#(entity)
If speed=5 Then Asteroid\Speed=10
If speed=10 Then Asteroid\Speed=20
If speed=5 Then Asteroid\Model=CopyEntity(MediumAsteroidMesh,0)
If speed=10 Then Asteroid\Model=CopyEntity(SmallAsteroidMesh,0)
If speed=5 Then EntityRadius Asteroid\Model,200
If speed=10 Then EntityRadius Asteroid\Model,150
If speed=5 Or speed=10
PositionEntity Asteroid\Model,Asteroid\x,Asteroid\y,Asteroid\z
RotateEntity Asteroid\Model,Rnd(360),Rnd(360),Rnd(360)
EntityType Asteroid\Model,10
Else
FreeEntity Asteroid\Model
Delete Asteroid
Asteroids=Asteroids-1
EndIf
Next
FreeEntity entity
Asteroids=Asteroids-1
End Function
Function TestCollisions()
;function to check collisions
For Asteroid.AsteroidInfo=Each AsteroidInfo
If Asteroid<>Null
;if player has collided with asteroid
If EntityCollided(Asteroid\Model,1)
Actual=0
If speed>0
damage=damage-(speed/2)
Else
damage=damage-5
EndIf
Speed=0
EndIf
If EntityCollided(Asteroid\Model,5) ;if asteroid and player shot collides
Hits=Hits+1
PlaySound Explode
Explosion(Asteroid\Model)
If asteroid\Speed=5 Or asteroid\speed=10 Then NewAsteroid(Asteroid\Model,Asteroid\Speed)
If asteroid\speed=5 Then PlayerScore=PlayerScore+10
If asteroid\speed=10 Then PlayerScore=PlayerScore+20
If asteroid\Speed=20
PlayerScore=PlayerScore+50
FreeEntity Asteroid\Model
Asteroids=Asteroids-1
EndIf
Delete Asteroid
EndIf
EndIf
Next
For UFO.UFOInfo = Each UFOInfo
If UFO<>Null
If EntityCollided(Ufo\Model,1)
Actual=0
Speed=0
EndIf
If EntityCollided(Ufo\Model,5)
Hits=Hits+1
PlaySound ShipExplode
Explosion(UFO\Model)
PlayerScore=PlayerScore+200
Bonus=Rnd(50)
If Bonus<10
BonusTextTimer=100
Bonus=Rnd(7)
If Bonus<0 Then Bonus=0
If Bonus>5 Then Bonus=5
If Bonus=0
BonusText$="Rapid Fire"
MaxTime=1
BonusTime=10000
EndIf
If Bonus=1
BonusText$="Extra Life"
PlayerLives=PlayerLives+1
BonusTime=0
EndIf
If Bonus=2
BonusText$="Full Repair"
Damage=100
OldDamage=100
BonusTime=0
EndIf
If Bonus=3
BonusText$="Extra Score"
PlayerScore=PlayerScore+1000
BonusTime=0
EndIf
If Bonus=4
BonusText$="Level Skip"
Asteroids=0
BonusTime=0
EndIf
If Bonus=5
BonusText$="God Mode"
GodMode=1
BonusTime=10000
OldDamage=Damage
EndIf
EndIf
UFOCount=UFOCount-1
FreeEntity UFO\Model
Delete UFO
EndIf
EndIf
Next
;ufo shots collide with player (type 1) damageing them
For UFOShot.UFOShots = Each UFOShots
If UFOShot<>Null
If EntityCollided(UFOShot\Model,1) ;if shot hits pivot
PlaySound PlayerHit
Damage=Damage-10
FreeEntity UFOShot\Model
Delete UFOShot
EndIf
If UFOShot<>Null
If EntityCollided(UFOShot\Model,2) ;if shot hits cam
PlaySound PlayerHit
Damage=Damage-10
FreeEntity UFOShot\Model
Delete UFOShot
EndIf
EndIf
EndIf
Next
For Shot.Shots = Each Shots
If Shot<>Null
del=0
If EntityCollided(Shot\Model,10)
del=1
EndIf
If EntityCollided(Shot\Model,6)
del=1
EndIf
If del=1
FreeEntity Shot\Model
Delete Shot
EndIf
EndIf
Next
End Function
Function ShowStats()
;player information
Color 255,255,255
SetFont Arialmid
Text 320,20,PlayerScore,1,1
SetFont arial
If PlayerLives>-1
Text 10,10,"LIVES "+PlayerLives,0,0
Else
Text 10,10,"LIVES 0"
EndIf
If BonusTime>0
Rect 519,9,102,22,0
Color 255,0,0
Rect 520,10,BonusTime/100,20,1
Color 255,255,255
Text 570,20,"BONUS",1,1
EndIf
If UFOCount>0
Color 255,0,0
Text 320,280,"-UFO ALERT-",1,1
EndIf
Color 255,255,255
Rect 9,449,102,22,0
Color 0,255,0
Rect 10,450,Damage,20,1
Color 255,0,0
Text 60,460,"DAMAGE",1,1
Color 255,255,255
Rect 519,449,102,22,0
Color 0,255,0
If speed>0 Then Rect 520,450,Speed,10,1
Color 0,0,255
If Actual>0 Then Rect 520,460,Actual,10,1
Color 255,0,0
Text 570,460,"THRUST",1,1
Color 255,255,255
Line 310,240,315,240
Line 325,240,330,240
Line 320,230,320,235
Line 320,245,320,250
End Function
Function Title()
Repeat
Until MouseDown(1)=0 And MouseDown(2)=0
CreateLevel(20)
While MouseDown(1)=0 And MouseDown(2)=0
Cls
PositionEntity backing,0,0,0
UpdateLevel()
di=0
If KeyDown(1)=1 Then End
UpdateWorld
RenderWorld
SetFont ArialLarge
DrawImage TitleTex,320,260
Color 0,0,0
Rect 120,30,400,180
DrawImage B3dLogo,320,120
SetFont Arial
Color 255,255,255
Text 320,10,"Hi Score : "+HighScore,1,1
Text 320,300,"Coded by EdzUp of Stonegoat Software",1,1
Text 320,320,"Controls are as follows:",1
Text 320,340,"Mouse - Move around",1
Text 320,360,"Cursor Up - Speed Up",1
Text 320,380,"Cursor Down - Slow Down",1
Text 320,400,"Mouse Left Button - Fire weapons",1
Text 320,460,"Click mouse to start game",1,1
Flip
Wend
Repeat
Until MouseDown(1)=0 And MouseDown(2)=0
ClearLevel()
End Function
Function ClearLevel()
Hits=0
Fired=0
Accuracy=0
UFOCount=0
;clear out old level info
;Free up all the entities and types allocated (so level can restart afresh)
For Asteroid.AsteroidInfo = Each AsteroidInfo
If Asteroid<>Null
FreeEntity Asteroid\Model
Delete Asteroid
EndIf
Next
For Shot.Shots = Each shots
If Shot<>Null
FreeEntity shot\model
Delete shot
EndIf
Next
For UFOShot.UFOShots = Each UFOshots
If UFOShot<>Null
FreeEntity UFOShot\model
Delete UFOShot
EndIf
Next
For Frag.Fragment = Each Fragment
If Frag<>Null
FreeEntity frag\model
Delete Frag
EndIf
Next
For UFO.UFOinfo = Each UFOInfo
If UFO<>Null
FreeEntity UFO\Model
Delete UFO
EndIf
Next
For Boom.Explode = Each Explode
If Boom<>Null
FreeEntity Boom\Model
Delete Boom
EndIf
Next
End Function
Function fade(model,val#)
vl#=val
as#=((vl#+0.001)-9000)/1000
ax=-1
For asteroid.asteroidinfo = Each asteroidinfo
ax=ax+1
If ax=model Then EntityAlpha asteroid\model,1-as#
Next
End Function
Function UpdateLevel()
si=-1
For Asteroid.AsteroidInfo = Each AsteroidInfo
si=si+1
MoveEntity Asteroid\Model,0,0,Asteroid\Speed
x#=EntityX#(asteroid\Model)
y#=EntityY#(asteroid\Model)
z#=EntityZ#(asteroid\Model)
min=0
max=0
If x#<0 Then min=x#
If y#<0 And y#<min Then min=y#
If z#<0 And z#<min Then min=z#
If x#>0 Then max=x#
If y#>0 And y#>max Then max=y#
If z#>0 And z#>max Then max=z#
If max>Abs(min)
a=max
fade(si,a)
; If a>9000 Then EntityAlpha Asteroid\Model,.9
; If a>9100 Then EntityAlpha Asteroid\Model,.8
; If a>9200 Then EntityAlpha Asteroid\Model,.7
; If a>9300 Then EntityAlpha Asteroid\Model,.6
; If a>9400 Then EntityAlpha Asteroid\Model,.5
; If a>9500 Then EntityAlpha Asteroid\Model,.4
; If a>9600 Then EntityAlpha Asteroid\Model,.3
; If a>9700 Then EntityAlpha Asteroid\Model,.2
; If a>9800 Then EntityAlpha Asteroid\Model,.1
; If a>9900 Then EntityAlpha Asteroid\Model,.0
Else
a=Abs(min)
fade(si,a)
; If a>9000 Then EntityAlpha Asteroid\Model,.9
; If a>9100 Then EntityAlpha Asteroid\Model,.8
; If a>9200 Then EntityAlpha Asteroid\Model,.7
; If a>9300 Then EntityAlpha Asteroid\Model,.6
; If a>9400 Then EntityAlpha Asteroid\Model,.5
; If a>9500 Then EntityAlpha Asteroid\Model,.4
; If a>9600 Then EntityAlpha Asteroid\Model,.3
; If a>9700 Then EntityAlpha Asteroid\Model,.2
; If a>9800 Then EntityAlpha Asteroid\Model,.1
; If a>9900 Then EntityAlpha Asteroid\Model,.0
EndIf
If EntityX#(Asteroid\Model)>10000
PositionEntity Asteroid\Model,-10000,EntityY#(Asteroid\Model),EntityZ#(Asteroid\Model)
EndIf
If EntityX#(Asteroid\Model)<-10000
PositionEntity Asteroid\Model,10000,EntityY#(Asteroid\Model),EntityZ#(Asteroid\Model)
EndIf
If EntityY#(Asteroid\Model)>10000
PositionEntity Asteroid\Model,EntityX#(Asteroid\Model),-10000,EntityZ#(Asteroid\Model)
EndIf
If EntityY#(Asteroid\Model)<-10000
PositionEntity Asteroid\Model,EntityX#(Asteroid\Model),10000,EntityZ#(Asteroid\Model)
EndIf
If EntityZ#(Asteroid\Model)>10000
PositionEntity Asteroid\Model,EntityX#(Asteroid\Model),EntityY#(Asteroid\Model),-10000
EndIf
If EntityZ#(Asteroid\Model)<-10000
PositionEntity Asteroid\Model,EntityX#(Asteroid\Model),EntityY#(Asteroid\Model),10000
EndIf
Next
For Shot.Shots=Each Shots
If Shot<>Null
MoveEntity Shot\Model,0,0,Shot\Speed
Shot\Timer=Shot\Timer+50
del=0
If Shot\Timer>10000
FreeEntity Shot\Model
Del=1
EndIf
If del=1 Then Delete Shot
EndIf
Next
For UFOShot.UFOShots=Each UFOShots
If UFOShot<>Null
MoveEntity UFOShot\Model,0,0,UFOShot\Speed
UFOShot\Timer=UFOShot\Timer+10
del=0
If UFOShot\Timer>40000
FreeEntity UFOShot\Model
Del=1
EndIf
If del=1 Then Delete UFOShot
EndIf
Next
For UFO.UFOInfo = Each UFOInfo
If UFO<>Null
If UFOSoundChannel=-1 Then UFOSoundChannel=PlaySound(UFOSound)
If UFOSoundChannel<>-1 And ChannelPlaying(UFOSoundChannel)=0
UFOSoundChannel=PlaySound(UFOSound)
EndIf
MoveEntity UFO\Model,0,0,20
UFOFire=Rnd(1000)
If UFOFire<20
UFOFire(UFO\Model)
EndIf
If EntityZ#(UFO\Model)>10000
UFOCount=UFOCount-1
FreeEntity UFO\Model
Delete UFO
EndIf
EndIf
Next
End Function
Function CreateLevel(Lev)
AsteroidCount=1+(Lev-1)
If AsteroidCount>20 Then AsteroidCount=20
Asteroids=AsteroidCount
For a=1 To AsteroidCount
Asteroid.AsteroidInfo = New AsteroidInfo
Asteroid\Model=CopyEntity(LargeAsteroidMesh,0) ;create asteroid
EntityRadius Asteroid\Model,450
Repeat
Asteroid\x=Rnd(-10000,10000) ;position asteroid
Asteroid\y=Rnd(-10000,10000)
Asteroid\z=Rnd(-10000,10000)
ok=0
If Asteroid\x>EntityX(Camera)-1000 And asteroid\x<EntityX(Camera)+1000 Then ok=1 ;make sure asteroid wont be where player
If Asteroid\y>EntityY(Camera)-1000 And asteroid\y<EntityY(Camera)+1000 Then ok=1 ;starts on level
If Asteroid\z>EntityZ(Camera)-1000 And asteroid\z<EntityZ(Camera)+1000 Then ok=1
Until ok=0
PositionEntity Asteroid\Model,Asteroid\x,Asteroid\y,Asteroid\z
RotateEntity Asteroid\Model,Rnd(360),Rnd(360),Rnd(360)
EntityType Asteroid\Model,10
Asteroid\speed=5 ;slow asteroid
Next
End Function

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 192 KiB

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1 @@
* At certain moments, music hangs when proceeding from title screen to game or vice versa.

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -0,0 +1,999 @@
xof 0302txt 0064
// DV7810 Copyright Viewpoint Datalabs Intl., Inc.
// www.viewpoint.com, 800-643-8303, 801-229-3333
// for Microsoft Corporation DirectX format only
// see license agreement for description of rights
template Header {
<3D82AB43-62DA-11cf-AB39-0020AF71E433>
WORD major;
WORD minor;
DWORD flags;
}
template ColorRGBA {
<35FF44E0-6C7C-11cf-8F52-0040333594A3>
FLOAT red;
FLOAT green;
FLOAT blue;
FLOAT alpha;
}
template ColorRGB {
<D3E16E81-7835-11cf-8F52-0040333594A3>
FLOAT red;
FLOAT green;
FLOAT blue;
}
template Material {
<3D82AB4D-62DA-11cf-AB39-0020AF71E433>
ColorRGBA faceColor;
FLOAT power;
ColorRGB specularColor;
ColorRGB emissiveColor;
[...]
}
template Vector {
<3D82AB5E-62DA-11cf-AB39-0020AF71E433>
FLOAT x;
FLOAT y;
FLOAT z;
}
template MeshFace {
<3D82AB5F-62DA-11cf-AB39-0020AF71E433>
DWORD nFaceVertexIndices;
array DWORD faceVertexIndices[nFaceVertexIndices];
}
template Mesh {
<3D82AB44-62DA-11cf-AB39-0020AF71E433>
DWORD nVertices;
array Vector vertices[nVertices];
DWORD nFaces;
array MeshFace faces[nFaces];
[...]
}
template MeshMaterialList {
<F6F23F42-7686-11cf-8F52-0040333594A3>
DWORD nMaterials;
DWORD nFaceIndexes;
array DWORD faceIndexes[nFaceIndexes];
[Material]
}
template Frame {
<3D82AB46-62DA-11cf-AB39-0020AF71E433>
[...]
}
template AnimationKey {
<10DD46A8-775B-11cf-8F52-0040333594A3>
DWORD keyType;
DWORD nKeys;
array TimedFloatKeys keys[nKeys];
}
template Animation {
<3D82AB4F-62DA-11cf-AB39-0020AF71E433>
[...]
}
template AnimationSet {
<3D82AB50-62DA-11cf-AB39-0020AF71E433>
[Animation]
}
Header {
1;
0;
1;
}
Frame Root{
Frame quads1 {
Mesh mesh-quads1 {
275;
-0.190442;-1.160147;-0.108200;,
-0.219983;-0.941477;-0.108046;,
-0.219983;-0.941572;-0.044017;,
-0.190442;-1.160242;-0.044171;,
-0.106851;-1.160209;-0.044446;,
-0.131377;-0.941541;-0.044293;,
-0.131377;-0.941464;-0.107990;,
-0.106851;-1.160134;-0.108144;,
-1.412447;-1.352512;-0.185414;,
-1.416893;-1.256237;-0.182206;,
-1.416895;-1.256256;-0.046371;,
-1.412451;-1.352512;-0.042954;,
-0.099692;-0.837430;-0.032984;,
-0.094134;-0.744496;-0.033868;,
-0.094134;-0.744421;-0.111337;,
-0.099692;-0.837355;-0.118975;,
-1.381276;-1.114842;-0.041459;,
-1.444997;-0.816579;-0.041416;,
-1.445009;-0.816539;-0.107838;,
-1.381286;-1.114817;-0.107881;,
-1.446179;-1.151632;-0.107726;,
-1.533264;-0.873968;-0.107683;,
-1.533260;-0.873981;-0.041423;,
-1.446175;-1.151639;-0.041466;,
-1.033131;-1.352548;0.029192;,
-1.030218;-1.257257;0.033513;,
-1.030195;-1.257204;0.176297;,
-1.033106;-1.352548;0.180543;,
-0.091692;-1.157979;0.049234;,
-0.120014;-0.932020;0.048166;,
-0.119945;-0.931947;0.110194;,
-0.091627;-1.157904;0.109455;,
-0.075640;-1.352554;0.036872;,
-0.073494;-1.288708;0.036650;,
-0.073339;-1.288633;0.166565;,
-0.075484;-1.352554;0.170684;,
-0.223739;-0.837367;-0.119051;,
-0.194255;-0.744433;-0.111406;,
-0.194255;-0.744527;-0.033533;,
-0.223739;-0.837461;-0.032612;,
-1.049895;-1.137028;0.041997;,
-1.141524;-0.854364;0.041726;,
-1.141524;-0.854310;0.108773;,
-1.049895;-1.136986;0.109045;,
-1.052034;-0.813102;0.108861;,
-1.008649;-0.628081;0.138425;,
-1.008622;-0.628250;0.036351;,
-1.052032;-0.813275;0.042146;,
-0.180458;-1.352554;-0.167231;,
-0.174331;-1.282108;-0.167208;,
-0.174392;-1.282164;-0.044272;,
-0.180519;-1.352554;-0.044295;,
0.030028;-1.352554;-0.044824;,
0.036155;-1.295139;-0.044801;,
0.036204;-1.295092;-0.167100;,
0.030077;-1.352554;-0.167123;,
-1.076934;-1.219030;0.034891;,
-1.076934;-1.218995;0.116018;,
-1.351628;-1.193240;-0.034920;,
-1.351632;-1.193213;-0.113962;,
-1.457464;-1.214496;-0.113778;,
-1.457464;-1.214504;-0.034928;,
-0.979980;-1.104792;0.109132;,
-0.979980;-1.104927;0.042417;,
-1.592616;-0.713963;-0.146075;,
-1.592609;-0.713982;-0.044033;,
-1.214428;-0.696775;0.035708;,
-1.228289;-0.415008;0.032668;,
-1.228287;-0.414950;0.181412;,
-1.214436;-0.696721;0.138290;,
-0.115880;-1.238503;0.036973;,
-0.115793;-1.238428;0.121885;,
-1.451689;-0.352581;-0.193321;,
-1.451695;-0.352602;-0.048784;,
-1.393136;-0.625008;-0.044023;,
-1.393163;-0.624945;-0.146313;,
-0.962976;-1.193446;0.116124;,
-0.962974;-1.193552;0.035399;,
-0.007511;-1.168057;0.109489;,
-0.029941;-0.942097;0.110229;,
-0.030293;-0.942140;0.047844;,
-0.007840;-1.168097;0.048921;,
0.126988;-1.352554;0.036176;,
0.129133;-1.298827;0.035975;,
-0.130258;-0.839525;0.031630;,
-0.130162;-0.839450;0.126532;,
-1.206744;-1.352519;-0.042940;,
-1.228175;-1.284179;-0.046358;,
-1.228166;-1.284120;-0.182523;,
-1.206735;-1.352519;-0.185748;,
-0.116252;-0.750140;0.035866;,
-0.116186;-0.750057;0.122141;,
-0.002236;-1.248580;0.121932;,
-0.002680;-1.248622;0.036532;,
0.129929;-1.298785;0.166638;,
-0.947538;-0.299145;0.181607;,
-0.947538;-0.299320;0.033600;,
-0.112640;-1.245544;-0.044530;,
-0.112617;-1.245498;-0.108228;,
0.127784;-1.352554;0.170759;,
-0.820780;-1.352548;0.030140;,
-0.932758;-1.352548;0.213595;,
-0.820703;-1.352548;0.180741;,
-1.210533;-0.442558;-0.048770;,
-1.210514;-0.442490;-0.193658;,
-1.311681;-1.352515;-0.227509;,
0.021147;-1.352554;0.202717;,
-0.829814;-1.296049;0.176484;,
-0.829887;-1.296217;0.034407;,
-0.004156;-0.849600;0.126585;,
-0.004648;-0.849643;0.031136;,
-0.071730;-1.352554;-0.201394;,
-0.211356;-1.232511;-0.108284;,
-0.211385;-1.232569;-0.044255;,
-0.018728;-0.750028;0.122189;,
-0.019100;-0.750109;0.035418;,
-0.376709;0.444408;0.086721;,
-0.413566;0.583783;0.076196;,
-0.413566;0.581430;-0.085728;,
-0.376709;0.442367;-0.096253;,
0.902359;0.507559;0.012957;,
0.861274;0.541857;0.018129;,
0.861280;0.541219;-0.020240;,
0.902364;0.507064;-0.014405;,
0.669060;0.226027;0.045973;,
0.455380;-0.078969;0.057917;,
0.424875;0.003954;0.058843;,
0.646293;0.280402;0.046708;,
-0.065603;-1.288814;-0.201371;,
-0.512278;0.647456;0.059329;,
-0.777716;0.563709;0.059650;,
-0.777716;0.561707;-0.067350;,
-0.512278;0.645032;-0.068695;,
0.646761;0.279285;-0.046508;,
0.425501;0.002249;-0.058609;,
0.455790;-0.080082;-0.056843;,
0.669364;0.225297;-0.045107;,
0.716340;0.540917;0.021465;,
0.716677;0.540322;-0.024004;,
1.109756;0.482052;0.010901;,
1.109761;0.481719;-0.012086;,
0.694243;0.376160;0.098199;,
0.737981;0.329862;0.111175;,
-1.508604;-0.072603;-0.010835;,
-1.436331;0.020694;-0.010835;,
-1.436331;0.036457;-0.010785;,
-1.524076;-0.069585;-0.010785;,
1.111766;0.372418;-0.061381;,
0.904369;0.344206;-0.084876;,
0.880581;0.309415;0.000874;,
1.112160;0.350935;0.000614;,
-0.061809;-1.243231;0.142212;,
-0.051639;-1.162708;0.123871;,
-0.184278;-0.321776;-0.323905;,
-0.499008;-0.220514;-0.435453;,
-0.499008;-0.369842;0.004787;,
-0.191618;-0.433734;0.003571;,
-1.382466;-0.041402;0.001291;,
-1.068192;-0.171694;0.002223;,
0.904357;0.345136;0.086154;,
1.111754;0.373043;0.062487;,
0.023293;-1.293437;0.197665;,
-0.499008;-0.216173;0.444079;,
-0.184278;-0.317867;0.330559;,
-0.077158;-0.936751;0.125043;,
-0.448620;0.345401;-0.196800;,
-0.460542;0.083128;-0.382972;,
-0.118349;0.225515;-0.116208;,
-0.174223;-0.941474;-0.125840;,
-0.159677;-0.837363;-0.143072;,
-1.524377;-0.069526;0.011076;,
-1.436331;0.036763;0.011076;,
-1.436331;0.020907;0.011455;,
-1.508814;-0.072562;0.011455;,
-0.935526;-1.275552;0.207478;,
-0.118349;0.230391;0.113207;,
-0.460542;0.089780;0.384449;,
-0.448620;0.351251;0.191671;,
-1.324446;-1.269894;-0.222342;,
-0.819700;0.316816;0.151825;,
-0.819700;0.311745;-0.155874;,
-0.147272;-1.160142;-0.125994;,
-0.070260;-0.844254;0.149250;,
-0.049745;-0.389363;0.002177;,
-1.382466;-0.004291;0.130208;,
-1.382466;0.049437;0.132291;,
-0.843545;0.105449;-0.272897;,
-1.068192;0.106899;-0.176255;,
-1.068192;-0.059102;-0.200281;,
-0.843545;-0.110120;-0.310299;,
-1.068192;0.259597;-0.090610;,
-1.257046;0.161238;-0.067610;,
-0.843545;-0.106356;0.317322;,
-0.843545;0.111216;0.274722;,
0.113189;0.086949;0.047476;,
-0.118349;-0.019865;0.227122;,
0.807497;0.256278;0.001063;,
0.785109;0.279977;0.068075;,
0.845001;0.347673;0.098958;,
-0.142548;-0.744429;-0.133047;,
0.862419;0.439021;0.090877;,
0.903504;0.414479;0.084603;,
0.736716;0.504898;-0.105530;,
0.861643;0.506714;-0.108345;,
0.903521;0.413052;-0.084403;,
0.862437;0.437180;-0.090677;,
0.845324;0.346512;-0.097105;,
0.861628;0.508331;0.107444;,
0.735865;0.506404;0.104072;,
0.785741;0.279306;-0.066176;,
-0.160364;-1.239219;-0.126077;,
-1.068192;0.111915;0.177150;,
-1.068192;0.264008;0.088285;,
1.110901;0.419581;0.063487;,
-1.333551;-0.396621;-0.236029;,
-1.257404;-0.028465;-0.196203;,
-1.382670;-0.005339;-0.148691;,
-0.843545;-0.239602;0.003799;,
-0.069858;-0.750020;0.142794;,
0.397114;0.079414;-0.023103;,
0.113189;0.084364;-0.048693;,
0.113189;-0.048676;-0.123469;,
1.110919;0.418624;-0.063287;,
0.113189;-0.045736;0.123886;,
0.396561;0.080913;0.022561;,
-1.083900;-0.414985;0.213895;,
-1.117216;-0.664289;0.160692;,
-1.382466;0.047830;-0.131850;,
-1.382466;0.096739;-0.052000;,
-1.436331;0.044387;0.000025;,
-1.494915;-0.670356;-0.176226;,
0.469874;-0.118363;0.000593;,
0.679874;0.200194;0.000478;,
-1.257046;0.070346;-0.171416;,
0.625574;0.329885;-0.018329;,
0.625162;0.330869;0.017913;,
-1.414392;-1.133597;-0.127305;,
-1.405624;-1.204070;-0.137077;,
-1.023096;-1.206922;0.133734;,
-1.016866;-1.121774;0.123686;,
-1.490033;-0.845836;-0.127263;,
0.695096;0.375259;-0.099570;,
0.738952;0.328836;-0.110976;,
0.780571;0.427372;-0.112852;,
0.113189;-0.190621;-0.119750;,
-0.118349;-0.025411;-0.226086;,
-0.106985;-0.270358;-0.256973;,
-0.009658;-0.278939;-0.196053;,
0.384033;0.114970;-0.000524;,
0.113189;0.145667;-0.001142;,
0.779603;0.429086;0.113051;,
0.113189;-0.188702;0.121935;,
-1.099245;-0.834839;0.123415;,
-1.257046;0.212101;-0.001599;,
-1.257046;0.163863;0.065893;,
-1.382466;0.098152;0.050695;,
0.645349;0.374924;-0.000804;,
-1.068192;0.359339;-0.002155;,
-1.257046;0.073331;0.171968;,
-0.118349;0.341139;-0.002773;,
0.113189;-0.256622;0.001211;,
-0.009658;-0.275791;0.200449;,
-1.257046;-0.026516;0.199374;,
-0.987491;-0.079552;0.204752;,
-1.531860;-0.068066;0.000025;,
-1.501417;-0.074005;0.000325;,
-1.436331;0.013371;0.000325;,
1.110110;0.462772;0.053898;,
1.156622;0.378088;0.000011;,
1.110125;0.461930;-0.054536;,
0.902713;0.478833;0.056216;,
-0.106985;-0.266738;0.262444;,
0.902726;0.477578;-0.057013;,
-1.382466;0.109967;-0.001222;,
-1.577341;-0.382836;0.000210;;
304;
4; 3,2,1,0;,
4; 7,6,5,4;,
4; 11,10,9,8;,
4; 15,14,13,12;,
4; 19,18,17,16;,
4; 23,22,21,20;,
4; 27,26,25,24;,
4; 31,30,29,28;,
4; 35,34,33,32;,
4; 39,38,37,36;,
4; 43,42,41,40;,
4; 2,39,36,1;,
4; 47,46,45,44;,
4; 51,50,49,48;,
4; 55,54,53,52;,
4; 57,43,40,56;,
4; 59,19,16,58;,
4; 61,23,20,60;,
4; 63,47,44,62;,
4; 22,65,64,21;,
4; 69,68,67,66;,
4; 6,15,12,5;,
4; 52,53,50,51;,
4; 71,31,28,70;,
4; 65,73,72,64;,
4; 18,75,74,17;,
4; 77,63,62,76;,
4; 81,80,79,78;,
4; 4,5,2,3;,
4; 42,69,66,41;,
4; 32,33,83,82;,
4; 30,85,84,29;,
4; 89,88,87,86;,
4; 85,91,90,84;,
4; 5,12,39,2;,
4; 93,81,78,92;,
4; 83,93,92,94;,
4; 46,96,95,45;,
4; 98,7,4,97;,
4; 28,29,80,81;,
4; 82,83,94,99;,
4; 16,17,22,23;,
4; 102,101,24,100;,
4; 75,104,103,74;,
4; 86,11,105,89;,
4; 99,106,32,82;,
4; 108,77,76,107;,
4; 100,108,107,102;,
4; 80,110,109,79;,
4; 88,59,58,87;,
4; 51,48,111,52;,
4; 113,3,0,112;,
4; 54,98,97,53;,
4; 12,13,38,39;,
4; 110,115,114,109;,
4; 97,4,3,113;,
4; 34,71,70,33;,
4; 119,118,117,116;,
4; 123,122,121,120;,
4; 40,41,47,63;,
4; 127,126,125,124;,
4; 66,67,96,46;,
4; 26,57,56,25;,
4; 50,113,112,49;,
4; 48,49,128,111;,
4; 10,61,60,9;,
4; 132,131,130,129;,
4; 111,128,54,55;,
4; 136,135,134,133;,
4; 122,138,137,121;,
4; 140,123,120,139;,
4; 127,124,142,141;,
4; 17,74,65,22;,
4; 118,132,129,117;,
4; 84,90,115,110;,
4; 146,145,144,143;,
4; 70,28,81,93;,
4; 29,84,110,80;,
4; 41,66,46,47;,
4; 150,149,148,147;,
4; 92,78,152,151;,
4; 156,155,154,153;,
4; 103,158,157,73;,
4; 160,159,149,150;,
4; 99,94,161,106;,
4; 163,162,155,156;,
4; 78,79,164,152;,
4; 167,166,165,119;,
4; 1,36,169,168;,
4; 152,164,30,31;,
4; 168,169,15,6;,
4; 173,172,171,170;,
4; 101,174,26,27;,
4; 86,87,10,11;,
4; 177,176,175,116;,
4; 8,9,178,105;,
4; 129,130,179,177;,
4; 38,156,153,37;,
4; 165,180,131,132;,
4; 56,40,63,77;,
4; 0,1,168,181;,
4; 106,161,34,35;,
4; 151,152,31,71;,
4; 181,168,6,7;,
4; 74,103,73,65;,
4; 164,182,85,30;,
4; 25,77,108,24;,
4; 90,156,183,115;,
4; 185,171,172,184;,
4; 189,188,187,186;,
4; 187,191,190,186;,
4; 102,107,174,101;,
4; 176,193,192,162;,
4; 79,109,182,164;,
4; 175,176,195,194;,
4; 154,189,186,166;,
4; 149,198,197,196;,
4; 36,37,199,169;,
4; 201,200,198,159;,
4; 203,202,138,122;,
4; 148,206,205,204;,
4; 58,16,23,61;,
4; 121,137,208,207;,
4; 169,199,14,15;,
4; 13,183,156,38;,
4; 149,196,209,206;,
4; 49,112,210,128;,
4; 179,212,211,193;,
4; 213,201,159,160;,
4; 161,151,71,34;,
4; 72,216,215,214;,
4; 33,70,93,83;,
4; 217,188,189,155;,
4; 105,178,88,89;,
4; 109,114,218,182;,
4; 134,221,220,219;,
4; 147,148,204,222;,
4; 224,194,223,126;,
4; 226,225,68,69;,
4; 45,225,226,44;,
4; 73,157,216,72;,
4; 145,229,228,227;,
4; 64,72,214,230;,
4; 232,231,135,136;,
4; 124,125,231,232;,
4; 215,216,227,233;,
4; 133,134,219,234;,
4; 235,224,126,127;,
4; 94,92,151,161;,
4; 237,236,19,59;,
4; 182,218,91,85;,
4; 210,181,7,98;,
4; 76,62,239,238;,
4; 112,0,181,210;,
4; 21,64,230,240;,
4; 162,192,217,155;,
4; 243,242,241,202;,
4; 247,246,245,244;,
4; 219,220,249,248;,
4; 208,141,142,250;,
4; 126,223,251,125;,
4; 62,44,252,239;,
4; 248,249,194,224;,
4; 252,226,69,42;,
4; 135,244,221,134;,
4; 53,97,113,50;,
4; 128,210,98,54;,
4; 255,185,254,253;,
4; 239,252,42,43;,
4; 177,179,193,176;,
4; 202,241,256,138;,
4; 166,186,180,165;,
4; 221,245,167,220;,
4; 137,256,141,208;,
4; 142,124,197,198;,
4; 195,176,162,163;,
4; 91,163,156,90;,
4; 153,154,166,245;,
4; 228,253,191,227;,
4; 254,258,212,257;,
4; 220,167,259,249;,
4; 194,249,259,175;,
4; 68,184,157,67;,
4; 188,215,233,187;,
4; 87,58,61,10;,
4; 260,183,247,244;,
4; 251,261,183,260;,
4; 14,247,183,13;,
4; 263,211,262,225;,
4; 223,195,261,251;,
4; 199,246,247,14;,
4; 236,240,18,19;,
4; 170,171,229,264;,
4; 264,229,145,146;,
4; 216,144,145,227;,
4; 20,21,240,236;,
4; 196,232,136,209;,
4; 197,124,232,196;,
4; 238,239,43,57;,
4; 67,157,158,96;,
4; 206,242,243,205;,
4; 234,219,248,256;,
4; 240,230,75,18;,
4; 143,144,266,265;,
4; 250,142,198,200;,
4; 265,266,172,173;,
4; 231,260,244,135;,
4; 125,251,260,231;,
4; 60,20,236,237;,
4; 213,160,268,267;,
4; 268,147,222,269;,
4; 256,248,224,235;,
4; 139,120,270,267;,
4; 268,269,140,139;,
4; 114,261,271,218;,
4; 190,191,253,257;,
4; 269,272,123,140;,
4; 180,186,190,257;,
4; 233,227,191,187;,
4; 171,185,255,273;,
4; 120,121,207,270;,
4; 272,203,122,123;,
4; 267,270,201,213;,
4; 222,204,272,269;,
4; 115,183,261,114;,
4; 95,263,225,45;,
4; 104,188,158,103;,
4; 192,263,158,217;,
4; 184,172,266,157;,
4; 9,60,237,178;,
4; 157,266,144,216;,
4; 193,211,263,192;,
4; 178,237,59,88;,
4; 174,238,57,26;,
4; 258,262,211,212;,
4; 230,214,104,75;,
4; 228,229,273,253;,
4; 258,185,184,262;,
4; 68,225,262,184;,
4; 107,76,238,174;,
4; 130,257,212,179;,
4; 214,215,188,104;,
3; 171,273,229;,
3; 254,185,258;,
3; 255,253,273;,
3; 11,8,105;,
3; 24,101,27;,
3; 254,257,253;,
3; 188,217,158;,
3; 180,257,131;,
3; 131,257,130;,
3; 155,189,154;,
3; 165,132,118;,
3; 177,117,129;,
3; 165,118,119;,
3; 177,116,117;,
3; 166,167,245;,
3; 167,119,259;,
3; 116,175,259;,
3; 116,259,119;,
3; 32,106,35;,
3; 195,163,271;,
3; 245,246,153;,
3; 195,271,261;,
3; 52,111,55;,
3; 194,195,223;,
3; 244,245,221;,
3; 127,141,235;,
3; 133,209,136;,
3; 209,133,242;,
3; 133,241,242;,
3; 241,133,234;,
3; 256,241,234;,
3; 256,235,141;,
3; 242,206,209;,
3; 138,256,137;,
3; 250,207,208;,
3; 207,250,200;,
3; 243,203,205;,
3; 203,243,202;,
3; 149,159,198;,
3; 207,201,270;,
3; 201,207,200;,
3; 149,206,148;,
3; 203,204,205;,
3; 204,203,272;,
3; 150,268,160;,
3; 147,268,150;,
3; 267,268,139;,
3; 263,96,158;,
3; 96,263,95;,
3; 44,226,252;,
3; 77,25,56;,
3; 24,108,100;,
3; 246,37,153;,
3; 37,246,199;,
3; 163,218,271;,
3; 218,163,91;,
3; 170,274,173;,
3; 173,274,265;,
3; 265,274,143;,
3; 143,274,146;,
3; 264,274,170;,
3; 146,274,264;;
MeshMaterialList {
1;
304;
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0;;
Material yellowbrt {
1.000000;0.783700;0.000000;1.000000;;
60.000000;
0.300000;0.300000;0.300000;;
0.000000;0.000000;0.000000;;
}
}
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 192 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 192 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,20 @@
Si
100000
Cox
90000
Yog
80000
Yaff
70000
Jevs
60000
Dot
50000
Dave
40000
Vic
30000
Sadie
20000
Sophie
10000

Binary file not shown.

After

Width:  |  Height:  |  Size: 192 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 192 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More