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