Added _release/Games
After Width: | Height: | Size: 822 B |
After Width: | Height: | Size: 65 KiB |
After Width: | Height: | Size: 450 KiB |
After Width: | Height: | Size: 822 B |
After Width: | Height: | Size: 822 B |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 192 KiB |
After Width: | Height: | Size: 3.1 KiB |
After Width: | Height: | Size: 32 KiB |
After Width: | Height: | Size: 65 KiB |
After Width: | Height: | Size: 3.1 KiB |
After Width: | Height: | Size: 900 KiB |
|
@ -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
|
||||
;
|
||||
;
|
||||
;
|
||||
;
|
||||
;
|
||||
;
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
After Width: | Height: | Size: 8.6 KiB |
After Width: | Height: | Size: 58 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 2.1 KiB |
After Width: | Height: | Size: 117 KiB |
After Width: | Height: | Size: 192 KiB |
|
@ -0,0 +1 @@
|
|||
* At certain moments, music hangs when proceeding from title screen to game or vice versa.
|
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 8.1 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 12 KiB |
|
@ -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;;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
After Width: | Height: | Size: 192 KiB |
After Width: | Height: | Size: 192 KiB |
After Width: | Height: | Size: 12 KiB |
|
@ -0,0 +1,20 @@
|
|||
Si
|
||||
100000
|
||||
Cox
|
||||
90000
|
||||
Yog
|
||||
80000
|
||||
Yaff
|
||||
70000
|
||||
Jevs
|
||||
60000
|
||||
Dot
|
||||
50000
|
||||
Dave
|
||||
40000
|
||||
Vic
|
||||
30000
|
||||
Sadie
|
||||
20000
|
||||
Sophie
|
||||
10000
|
After Width: | Height: | Size: 192 KiB |
After Width: | Height: | Size: 56 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 192 KiB |
After Width: | Height: | Size: 8.1 KiB |