Here's my entry, nice and done. I haven't updated the pics on my website yet, but they're still there.
Works in DBPro, don't know about classic.
Exactly 200K in media so my computer says, Rich, be sure not to include the readme file as part of the media. If it's too much, I'll send up a different midi file instead. Most everything is straight from Doom, I changed a few things, for instance, the ability to look up and down lol
Download the source and everything from here (116KB zip):
http://www.xeridox.com/Phobos.zip
See the old pics here:
http://www.xeridox.com/Phobos.html
and be sure to read the readme for controls and storyline.
Enjoy!
Rem Project: Return To Phobos
rem Author: Darin Snow
rem Initialize setup, player, and variables
hide mouse:sync rate 60:set camera range 0.1,100000:set image colorkey 0,255,255:make object plain 1000,100,100:make object collision box 1000,-30,-60,-30,30,10,30,0:load music "music.mid",1:load image "floor.bmp",1:load image "wall.bmp",2:load image "ceiling.bmp",3:load image "light.bmp",4:load image "cacodemon.bmp",5:load image "rifle.bmp",6:load image "cacodeath.bmp",7:load image "fireball.bmp",8:load image "machine.bmp",10:load sound "shot.wav",1:set sound speed 1,6000:load 3dsound "expl.wav",2:load image "clouds8.bmp",9:make object sphere 1001,100000:texture object 1001,9:set object 1001,1,0,0,1,0,0,0:set object collision off 1001:scale object texture 1001,4,4
load sound "cacodeath.wav",4:set sound volume 4,80:load image "cacofire.bmp",15:dim rate(999):load image "bg.bmp",16:make object cylinder 1002,80000:scale object 1002,100,40,100:texture object 1002,16:scale object texture 1002,3,1:set object 1002,1,0,0,1,0,0,0:set object transparency 1002,1:set object collision off 1002:backdrop on:color backdrop rgb(0,0,0):load image "machine2.bmp",11:load image "terminal.bmp",12:load image "machine2a.bmp",13
rem Load map
start:enemy=899:enemies=0:sync on:obj=0:dim actor(1000,3):dim actortype$(1000):open to read 1,"base.phobos":repeat:read string 1,s$:if s$="cube":read float 1,x#:read float 1,y#:read float 1,z#:read float 1,scx#:read float 1,scy#:read float 1,scz#:read string 1,tex$:read float 1,tx#:read float 1,ty#:inc obj:actortype$(obj)=s$:make object cube obj,100:texture object obj,val(tex$)
make object collision box obj,scx#/2.0-scx#,scy#/2.0-scy#,scz#/2.0-scz#,scx#/2.0,scy#/2.0,scz#/2.0,0:scale listener 0.5
scale object obj,scx#,scy#,scz#:scale object texture obj,tx#,ty#:position object obj,x#,y#,z#:endif:if s$="enemy":inc enemies:inc enemy:actor(enemy,2)=1:actortype$(enemy)="enemy":read float 1,x#:read float 1,y#:read float 1,z#:make object plain enemy,100,100:make object collision box enemy,-49,-49,-49,49,49,49,0:set object transparency enemy,1:set object light enemy,0:texture object enemy,5:actor(enemy)=5
position object enemy,x#,y#,z#:endif:if s$="player":read float 1,x#:read float 1,y#:read float 1,z#:position object 1000,x#,y#,z#:endif:until s$="EndMap":for obj=800 to 899:make object plain obj,30,30:make object collision box obj,-30,-9,-30,30,9,30,0:set object transparency obj,1:texture object obj,8:ghost object on obj:set object light obj,0
hide object obj:set object collision off obj:next obj:sprite 1,196,297,6:scale sprite 1,300:sprite 2,192,220,8:scale sprite 2,400:set sprite alpha 2,150:set sprite priority 1,1:actor(1000,2)=10:actor(1000)=1:dead=0:hide object 1000:close file 1:set music volume 1,30:set ambient light 60:if sound exist(3)=0:load sound "detect.wav",3:endif:set sound volume 1,90:set sound speed 2,6000:set sound volume 3,90
rem Main loop --------------------------------------
rem Player Control
do:move object down 1000,24:move object 1000,upkey()*20:move object left 1000,leftkey()*20:move object right 1000,rightkey()*15:move object 1000,-(downkey()*15):rotate camera camera angle x()+mousemovey()/2.0,camera angle y()+mousemovex()/2.0,0:position camera object position x(1000),object position y(1000),object position z(1000):yrotate object 1000,camera angle y():if mouseclick()=1 and rate<1
rem player fire
show sprite 2:play sound 1:rate=10:obj=799:repeat:inc obj:fire=0:if actor(obj)=0:actor(obj)=1:fire=1:actortype$(obj)="player_proj":actor(obj,1)=500:show object obj:set object to camera orientation obj:set object collision on obj:position object obj,object position x(1000),object position y(1000),object position z(1000):move object obj,100:endif:until fire=1:endif
rem Projectile Collision
obj=799:repeat:inc obj:enemy_proj_col=0:if actor(obj)=1:col=object collision(obj,0):if actortype$(obj)="enemy_proj" and actortype$(col)="enemy":enemy_proj_col=1:endif:proj_speed=90:if actortype$(obj)="enemy_proj":proj_speed=30:endif
if (col>0 and col<800) or (col>0 and enemy_proj_col=0):position sound 2,object position x(obj),object position y(obj),object position z(obj):play sound 2:set object collision off obj:hide object obj:actor(obj)=0:endif:move object obj,proj_speed:dec actor(obj,1),1:if actor(obj,1)<1:actor(obj)=0:hide object obj:endif:endif:until obj=899:dec rate:fire=0
rem Enemy control
obj=899:repeat:inc obj:if object exist(obj)=1:point object obj,object position x(1000),object position y(1000),object position z(1000):act=0:if actor(obj)=5 and ((object position x(1000)-object position x(obj))^2+(object position y(1000)-object position y(obj))^2+(object position z(1000)-object position z(obj))^2)/500<1000:play sound 3:actor(obj)=1:endif:if actor(obj)=1:move object obj,5:rate(obj)=rate(obj)-1:if rate(obj)<2 then texture object obj,5
act=0:endif:endif:if actor(obj,2)<0 and actor(obj)=1:actor(obj)=2:dec enemies:play sound 4:scale object obj,100,74,100:make object collision box obj,0,-30,0,0,-10,0,0:endif:if actor(obj)=2:xrotate object obj,0:move object down obj,25:if object collision(obj,0)>0:texture object obj,7:endif:endif:until object exist(obj)=0:for enemy=900 to 999
if actor(enemy)=1:if rnd(20)=5:rate(enemy)=5:texture object enemy,15:obj=799:repeat:inc obj:if actor(obj)=0:actortype$(obj)="enemy_proj":actor(obj)=1:fire=1:actor(obj,1)=500:show object obj:set object to object orientation obj,enemy:position object obj,object position x(enemy),object position y(enemy),object position z(enemy):move object down obj,20:set object collision on obj:endif:until fire=1:endif:endif:next enemy:obj=899
rem Player and Enemy Collision
repeat:enemy_proj_col=0:projcol=0:inc obj:if actor(obj)<>0:col=object collision(obj,0):if actor(obj)=5 and col>0:actor(obj)=1:play sound 3:endif:if actortype$(obj)="enemy" and actortype$(col)="enemy_proj":enemy_proj_col=1:endif:if col<900 and col>799 and enemy_proj_col=0:actor(obj,2)=actor(obj,2)-1:position sound 2,object position x(obj),object position y(obj),object position z(obj):play sound 2:hide object col:set object collision off col:projcol=1:endif
if obj=1000 and projcol=0:act=23:endif:x#=object position x(obj):y#=object position y(obj)+act:z#=object position z(obj):if col>0 and projcol=0 and enemy_proj_col=0:dec x#,get object collision x():dec y#,get object collision y():dec z#,get object collision z():position object obj,x#,y#,z#:rate(obj)=2:endif:endif:until obj=1000
position object 1001,object position x(1000),object position y(1000),object position z(1000):position object 1002,object position x(1000),object position y(1000)+9000,object position z(1000):set cursor 1,10:print "FPS: ";screen fps():set cursor 10,460:print "[+]";actor(1000,2)*10:set cursor 1,40:print "Cacodemons remaining: ";enemies:if camera angle x()>90 and camera angle x()<180:xrotate camera 90:endif:if camera angle x()<270 and camera angle x()>180:xrotate camera 270:endif
sync
if actor(1000,2)<1:sync off:repeat:set cursor 150,240:print "GAME OVER. PRESS SPACE TO RESTART.":until spacekey()=1:repeat:set cursor 150,240:print "....restarting, one moment please....":until just_showing_message=0:obj=0:repeat:inc obj:sync on:if object exist(obj)=1:delete object obj:endif:until obj=999:dead=1:endif
if enemies<1:position sound 2,object position x(1000),object position y(1000),object position z(1000):play sound 2:sync off:repeat:set cursor 1,150:print "All the cacodemons that were patrolling the new moon base have just":print "had a plasma rifle shoved up their --- well, if they had one anyway.":print "Now you wonder if there might be more undiscovered bases....":print "Press ESC to be transported outta here.":until forever=1:stop:endif:loop music 1:hide sprite 2:position listener camera position x(),camera position y(),camera position z():rotate listener camera angle x(),camera angle y(),camera angle z():if dead=1:undim actor(1000,3):undim actortype$(1000):goto start:endif:loop
rem End main loop ----------------------------------