home *** CD-ROM | disk | FTP | other *** search
- SUBROUTINE RATING(IR)
- C ...END OF GAME ROUTINE.
-
- c include 'tcommon.for'
- %include tcommon.for
-
- DIMENSION PWIN(3,4),PLOSE(3,4)
- DATA PWIN/1.,2.,3.,2.,4.,6.,3.,6.,9.,5.,10.,15./
- DATA PLOSE/3*1.,3*2.,3*3.,3*5./
- DATA ILOSE/0/
- GO TO (10,20,30,40,50,60,60),IR
- 10 write(*,1)
- 1 FORMAT(' Collision with Star! Ship Destroyed')
- GO TO 100
- 20 ENERGY=ENERGY+DEFL
- DEFL=0.
- IF(ENERGY.LE.0.)GO TO 4000
- write(*,5000)
- 5000 FORMAT(' Defectors automatically dropped to obtain energy')
- RETURN
- 4000 write(*,2)
- 2 FORMAT(' Out of energy')
- GO TO 100
- 30 write(*,3)
- 3 FORMAT(' Time''s Up!')
- GO TO 100
- 40 write(*,4)
- 4 FORMAT(' Congratulations!!')
- GO TO 100
- 50 write(*,5)
- 5 FORMAT(' Crew wiped out!')
- GO TO 100
- 60 write(*,6)
- 6 FORMAT(' Warp drive explosion!...everything in quadrant destroyed!
- 1!')
- IF(PSP.GE.1.)GO TO 100
- IF(KLNGNS.EQ.0)GO TO 90
- DO 80 J=1,KLNGNS
- IF(XKL(J,1).EQ.0.)GO TO 80
- LEFTK=LEFTK-1
- 80 CONTINUE
- 90 IF(NROM.EQ.0)GO TO 100
- DO 70 J=1,NROM
- IF(XROM(J,1).EQ.0.)GO TO 70
- LEFTR=LEFTR-1
- 70 CONTINUE
- 100 R=LEFTK+LEFTR
- S=NKL+MROM
- R=(S-R)/S
- KR=R*1000.
- IF(KR.GE.1000)GO TO 999
- IF(KR.GE.900)GO TO 998
- IF(KR.GE.750)GO TO 997
- IF(KR.GE.500)GO TO 996
- IF(KR.GE.250)GO TO 995
- write(*,94)
- 94 FORMAT(' You really blew it. the incumbent will lose by'/ ' a3576
- 1 landslide and don''t be surprised if they rename the Vulcan Bowl'3577
- 1/ ' the Klingon Bowl!')
- GO TO 994
- 995 write(*,95)
- 95 FORMAT(' Starfleet command hangs you in effigy.'/ ' at least
- 1you won''t be called upon to testify at the stargate hearings!')
- GO TO 994
- 996 write(*,96)
- 96 FORMAT(' You seem to be getting the hang of it.'/ ' the presi3585
- 1dent may be able to pull the election out by referring to'/ '3586
- 1 your efforts as a "tactical redeployment in certain non-'/ '3587
- 1 critical sectors of the galaxy."')
- GO TO 994
- 997 write(*,97)
- 97 FORMAT(' A most valiant effort. your name will long be remembered 3591
- 1with fear'/ ' by the pitiful remnants of the once mighty Klin3592
- 1gon-Romulan Empire'/ ' the president would have appointed you3593
- 1 attorney general at least..')
- GO TO 994
- 998 write(*,98)
- 98 FORMAT(' congratulations!! you have overcome incredible odds'/ 3597
- 1 ' to come within a hair of victory. your children will be well'/3598
- 1 ' provided for.')
- GO TO 994
- 999 IF(IR.EQ.7)GO TO 993
- write(*,99)
- 99 FORMAT(' Victory, total and complete, is yours!!!'/ ' your fa3603
- 1me will spread throughout the entire universe! unfortunately,'/ 3604
- 1 ' the president doesn''t like being knocked off the front pag3605
- 1e'/ ' so he has appointed you as permanent ambassador to the 3606
- 1outer stotinki'/ ' colonies.')
- GO TO 994
- 993 write(*,92)
- 92 FORMAT(' Your place in Valhalla is assured. you have eliminated th3610
- 1e last'/ ' major threat to the federation in this era. you ma3611
- 1y even inspire'/ ' a new television series!?!?')
- 994 write(*,93)
- 93 FORMAT(///)
- write(*,7)KR
- 7 FORMAT(' Rating = ',I5)
- C ...DETERMINE POINT GAIN OR LOSS FACTOR.
- IF(NRW.EQ.0)GO TO 661
- IWIN=1
- IF(KR.LT.750)IWIN=-1
- IF(KR.LT.900.AND.IRANK.GE.10)IWIN=-1
- C ...DETERMINE INDICES FOR PWIN OR PLOSE. S IS TOTAL ENEMY AT START.3622
- IL=4
- IF(S.LT.100.)IL=3
- IF(S.LT.50.)IL=2
- IF(S.LT.25)IL=1
- IF(IRANK.EQ.NRANKS)GO TO 3005
- IF(LEVEL.EQ.1.AND.IRANK.GE.7.AND.IWIN.GT.0)write(*,6601 )
- 6601 format(' if you want to gain rank you''ll have to play at a higher3629
- 1 level')
- IF(LEVEL.EQ.1.AND.IRANK.GE.7.AND.IWIN.GT.0)IWIN=0
- IF(IL.EQ.1.AND.IRANK.GE.9.AND.IWIN.GT.0)write(*,6602 )
- 6602 format(' sir if you want to gain rank you''ll have to play against3633
- 1 more enemies')
- IF(IL.EQ.1.AND.IRANK.GE.9.AND.IWIN.GT.0)IWIN=0
- IF(IRANK.GE.11.AND.IL.LT.3.AND.IWIN.GT.0)write(*,6602 )
- IF(IRANK.GE.11.AND.IL.LT.3.AND.IWIN.GT.0)IWIN=0
- IF(IRANK.EQ.NRANKS-1.AND.(S.LT.198.OR.LEVEL.LT.3.OR.KR.NE.1000.OR.3638
- 1 ITFCTR.GT.10).AND.IWIN.GT.0)write(*,6603 )
-
- 6603 FORMAT(' Admiral sir: if you want to become a Fleet Admiral you''l3640
- 1l have'/' to play a level 3 game with 198 enemies and a timing fac3641
- 1tor of 10 or less.')
- IF(IRANK.EQ.NRANKS-1.AND.(S.LT.198.OR.LEVEL.LT.3.OR.KR.NE.1000.OR.3643
- 1 ITFCTR.GT.10).AND.IWIN.GT.0)IWIN=0
- 3005 IF(IRANK.EQ.NRANKS.AND.IWIN.LT.0)GO TO 1999
- IF(IWIN)1000,1999,3000
- C ...LOSS. DEMOTION.
- 1000 XPTS=-IWIN*PLOSE(LEVEL,IL)
- XPTS=XPTS-XPTS*R
- XPTS=AMIN1(XPTS,POINTS)
- IF(XPTS.EQ.0.)GO TO 1999
- write(*,1001)XPTS
- 1001 FORMAT(' Well, you blew',f5.2,' points on that one, meathead.')
- IF(POINTS.GE.1.)POINTS=AMAX1(1.,POINTS-XPTS)
- IF(POINTS.GE.1.)GO TO 1002
- POINTS=AMAX1(0.,POINTS-XPTS)
- 1002 IF(POINTS.GE.RANKPT(IRANK))GO TO 1003
- IRANK=IRANK-1
- GO TO 1002
- 1003 write(*,1004)RANKS(1,IRANK),RANKS(2,IRANK),POINTS
- 1004 FORMAT(' your present rank is ',2a8,'. # points = ',f6.2)
- GO TO 2000
- C ...WIN. PROMOTION.
- 3000 XPTS=IWIN*PWIN(LEVEL,IL)
- XPTS=XPTS*R
- IF(IR.EQ.7)XPTS=XPTS/2.
- write(*,3001)XPTS
- 3001 format(' you gained ',f5.2,' points on that one.')
- POINTS=POINTS+XPTS
- IF(IRANK.EQ.NRANKS)GO TO 1003
- IF(POINTS.LT.RANKPT(IRANK+1))GO TO 1003
- IRANK=IRANK+1
- IF(IRANK.EQ.NRANKS)GO TO 1003
- POINTS=AMIN1(POINTS,RANKPT(IRANK+1)-1.)
- GO TO 1003
- 1999 write(*,1998)
- 1998 FORMAT(' No change in status this time.')
- GO TO 661
- 2000 READ(3,REC=MMKEY)MNAME,X,MPASS,X6,X7
- WRITE(3,REC=MMKEY)MNAME,POINTS,MPASS,X6,X7
- 661 WRITE(9,REC=1)MNAME,POINTS,MPASS,ILOSE
- close(3)
- close(9)
- STOP
- END