Annotation of 43BSDReno/games/dungeon/dso4.F, revision 1.1

1.1     ! root        1: C ROBADV-- STEAL WINNER'S VALUABLES
        !             2: C
        !             3: C COPYRIGHT 1980, INFOCOM COMPUTERS AND COMMUNICATIONS, CAMBRIDGE MA. 02142
        !             4: C ALL RIGHTS RESERVED, COMMERCIAL USAGE STRICTLY PROHIBITED
        !             5: C WRITTEN BY R. M. SUPNIK
        !             6: C
        !             7: C DECLARATIONS
        !             8: C
        !             9:        INTEGER FUNCTION ROBADV(ADV,NR,NC,NA)
        !            10:        IMPLICIT INTEGER (A-Z)
        !            11: #include "objects.h"
        !            12: #include "oflags.h"
        !            13: C
        !            14:        ROBADV=0
        !            15: C                                              !COUNT OBJECTS
        !            16:        DO 100 I=1,OLNT
        !            17:          IF((OADV(I).NE.ADV).OR.(OTVAL(I).LE.0).OR.
        !            18: &              (and(OFLAG2(I),SCRDBT).NE.0)) GO TO 100
        !            19:          CALL NEWSTA(I,0,NR,NC,NA)
        !            20: C                                              !STEAL OBJECT
        !            21:          ROBADV=ROBADV+1
        !            22: 100    CONTINUE
        !            23:        RETURN
        !            24:        END
        !            25: C ROBRM-- STEAL ROOM VALUABLES
        !            26: C
        !            27: C DECLARATIONS
        !            28: C
        !            29:        INTEGER FUNCTION ROBRM(RM,PR,NR,NC,NA)
        !            30:        IMPLICIT INTEGER (A-Z)
        !            31:        LOGICAL PROB,QHERE
        !            32: #include "objects.h"
        !            33: #include "oflags.h"
        !            34: C
        !            35:        ROBRM=0
        !            36: C                                              !COUNT OBJECTS
        !            37:        DO 100 I=1,OLNT
        !            38: C                                              !LOOP ON OBJECTS.
        !            39:          IF(.NOT. QHERE(I,RM)) GO TO 100
        !            40:          IF((OTVAL(I).LE.0).OR.(and(OFLAG2(I),SCRDBT).NE.0).OR.
        !            41: &              (and(OFLAG1(I),VISIBT).EQ.0).OR.(.NOT.PROB(PR,PR)))
        !            42: &              GO TO 50
        !            43:          CALL NEWSTA(I,0,NR,NC,NA)
        !            44:          ROBRM=ROBRM+1
        !            45:          OFLAG2(I)=or(OFLAG2(I),TCHBT)
        !            46:          GO TO 100
        !            47: 50       IF(and(OFLAG2(I),ACTRBT).NE.0)
        !            48: &              ROBRM=ROBRM+ROBADV(OACTOR(I),NR,NC,NA)
        !            49: 100    CONTINUE
        !            50:        RETURN
        !            51:        END
        !            52: C WINNIN-- SEE IF VILLAIN IS WINNING
        !            53: C
        !            54: C DECLARATIONS
        !            55: C
        !            56:        LOGICAL FUNCTION WINNIN(VL,HR)
        !            57:        IMPLICIT INTEGER (A-Z)
        !            58:        LOGICAL PROB
        !            59: #include "objects.h"
        !            60: C
        !            61:        VS=OCAPAC(VL)
        !            62: C                                              !VILLAIN STRENGTH
        !            63:        PS=VS-FIGHTS(HR,.TRUE.)
        !            64: C                                              !HIS MARGIN OVER HERO
        !            65:        WINNIN=PROB(90,100)
        !            66:        IF(PS.GT.3) RETURN
        !            67: C                                              !+3... 90% WINNING
        !            68:        WINNIN=PROB(75,85)
        !            69:        IF(PS.GT.0) RETURN
        !            70: C                                              !>0... 75% WINNING
        !            71:        WINNIN=PROB(50,30)
        !            72:        IF(PS.EQ.0) RETURN
        !            73: C                                              !=0... 50% WINNING
        !            74:        WINNIN=PROB(25,25)
        !            75:        IF(VS.GT.1) RETURN
        !            76: C                                              !ANY VILLAIN STRENGTH.
        !            77:        WINNIN=PROB(10,0)
        !            78:        RETURN
        !            79:        END
        !            80: C FIGHTS-- COMPUTE FIGHT STRENGTH
        !            81: C
        !            82: C DECLARATIONS
        !            83: C
        !            84:        INTEGER FUNCTION FIGHTS(H,FLG)
        !            85:        IMPLICIT INTEGER (A-Z)
        !            86:        LOGICAL FLG
        !            87: C
        !            88: C GAME STATE
        !            89: C
        !            90: #include "state.h"
        !            91: #include "advers.h"
        !            92: C
        !            93: C FUNCTIONS AND DATA
        !            94: C
        !            95:        DATA SMAX/7/,SMIN/2/
        !            96: C
        !            97:        FIGHTS=SMIN+((((SMAX-SMIN)*ASCORE(H))+(MXSCOR/2))/MXSCOR)
        !            98:        IF(FLG) FIGHTS=FIGHTS+ASTREN(H)
        !            99:        RETURN
        !           100:        END
        !           101: C VILSTR-      COMPUTE VILLAIN STRENGTH
        !           102: C
        !           103: C DECLARATIONS
        !           104: C
        !           105:        INTEGER FUNCTION VILSTR(V)
        !           106:        IMPLICIT INTEGER (A-Z)
        !           107: #include "parser.h"
        !           108: #include "objects.h"
        !           109: #include "oflags.h"
        !           110: #include "oindex.h"
        !           111: #include "villians.h"
        !           112: #include "flags.h"
        !           113: C VILSTR, PAGE 2
        !           114: C
        !           115:        VILSTR=OCAPAC(V)
        !           116:        IF(VILSTR.LE.0) RETURN
        !           117:        IF((V.NE.THIEF).OR..NOT.THFENF) GO TO 100
        !           118:        THFENF=.FALSE.
        !           119: C                                              !THIEF UNENGROSSED.
        !           120:        VILSTR=MIN0(VILSTR,2)
        !           121: C                                              !NO BETTER THAN 2.
        !           122: C
        !           123: 100    DO 200 I=1,VLNT
        !           124: C                                              !SEE IF  BEST WEAPON.
        !           125:          IF((VILLNS(I).EQ.V).AND.(PRSI.EQ.VBEST(I)))
        !           126: &              VILSTR=MAX0(1,VILSTR-1)
        !           127: 200    CONTINUE
        !           128:        RETURN
        !           129:        END

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.