1C ROBADV-- STEAL WINNER'S VALUABLES 2C 3C COPYRIGHT 1980, INFOCOM COMPUTERS AND COMMUNICATIONS, CAMBRIDGE MA. 02142 4C ALL RIGHTS RESERVED, COMMERCIAL USAGE STRICTLY PROHIBITED 5C WRITTEN BY R. M. SUPNIK 6C 7C DECLARATIONS 8C 9 INTEGER FUNCTION ROBADV(ADV,NR,NC,NA) 10 IMPLICIT INTEGER (A-Z) 11#include "objects.h" 12#include "oflags.h" 13C 14 ROBADV=0 15C !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) 20C !STEAL OBJECT 21 ROBADV=ROBADV+1 22100 CONTINUE 23 RETURN 24 END 25C ROBRM-- STEAL ROOM VALUABLES 26C 27C DECLARATIONS 28C 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" 34C 35 ROBRM=0 36C !COUNT OBJECTS 37 DO 100 I=1,OLNT 38C !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 4750 IF(and(OFLAG2(I),ACTRBT).NE.0) 48& ROBRM=ROBRM+ROBADV(OACTOR(I),NR,NC,NA) 49100 CONTINUE 50 RETURN 51 END 52C WINNIN-- SEE IF VILLAIN IS WINNING 53C 54C DECLARATIONS 55C 56 LOGICAL FUNCTION WINNIN(VL,HR) 57 IMPLICIT INTEGER (A-Z) 58 LOGICAL PROB 59#include "objects.h" 60C 61 VS=OCAPAC(VL) 62C !VILLAIN STRENGTH 63 PS=VS-FIGHTS(HR,.TRUE.) 64C !HIS MARGIN OVER HERO 65 WINNIN=PROB(90,100) 66 IF(PS.GT.3) RETURN 67C !+3... 90% WINNING 68 WINNIN=PROB(75,85) 69 IF(PS.GT.0) RETURN 70C !>0... 75% WINNING 71 WINNIN=PROB(50,30) 72 IF(PS.EQ.0) RETURN 73C !=0... 50% WINNING 74 WINNIN=PROB(25,25) 75 IF(VS.GT.1) RETURN 76C !ANY VILLAIN STRENGTH. 77 WINNIN=PROB(10,0) 78 RETURN 79 END 80C FIGHTS-- COMPUTE FIGHT STRENGTH 81C 82C DECLARATIONS 83C 84 INTEGER FUNCTION FIGHTS(H,FLG) 85 IMPLICIT INTEGER (A-Z) 86 LOGICAL FLG 87C 88C GAME STATE 89C 90#include "state.h" 91#include "advers.h" 92C 93C FUNCTIONS AND DATA 94C 95 DATA SMAX/7/,SMIN/2/ 96C 97 FIGHTS=SMIN+((((SMAX-SMIN)*ASCORE(H))+(MXSCOR/2))/MXSCOR) 98 IF(FLG) FIGHTS=FIGHTS+ASTREN(H) 99 RETURN 100 END 101C VILSTR- COMPUTE VILLAIN STRENGTH 102C 103C DECLARATIONS 104C 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" 113C VILSTR, PAGE 2 114C 115 VILSTR=OCAPAC(V) 116 IF(VILSTR.LE.0) RETURN 117 IF((V.NE.THIEF).OR..NOT.THFENF) GO TO 100 118 THFENF=.FALSE. 119C !THIEF UNENGROSSED. 120 VILSTR=MIN0(VILSTR,2) 121C !NO BETTER THAN 2. 122C 123100 DO 200 I=1,VLNT 124C !SEE IF BEST WEAPON. 125 IF((VILLNS(I).EQ.V).AND.(PRSI.EQ.VBEST(I))) 126& VILSTR=MAX0(1,VILSTR-1) 127200 CONTINUE 128 RETURN 129 END 130