billr@saab.CNA.TEK.COM (Bill Randle) (07/12/90)
Submitted-by: Izchak Miller <izchak@linc.cis.upenn.edu> Posting-number: Volume 10, Issue 71 Archive-name: nethack3p9/Part26 Supersedes: NetHack3: Volume 7, Issue 56-93 #! /bin/sh # This is a shell archive. Remove anything before this line, then unpack # it by saving it into a file and typing "sh file". To overwrite existing # files, type "sh file -c". You can also feed this as standard input via # unshar, or by typing "sh <file", e.g.. If this archive is complete, you # will see the following message at the end: # "End of archive 26 (of 56)." # Contents: others/termcap.uu src/potion.c # Wrapped by billr@saab on Wed Jul 11 17:11:30 1990 PATH=/bin:/usr/bin:/usr/ucb ; export PATH if test -f 'others/termcap.uu' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'others/termcap.uu'\" else echo shar: Extracting \"'others/termcap.uu'\" \(25830 characters\) sed "s/^X//" >'others/termcap.uu' <<'END_OF_FILE' Xbegin 644 termcap.arc XM&@A&1T543%(N0P`E)24E,`8```P-F@'&>=0*```,+U1`0M)``0@5"2`E4%'P XM8(*'0][`R2,GS1DT=$"@&),"1(P<.&2P`&%$3ADR)-/,0?-P84.$#T'(!!&$ XM#1L04BQBG(.SS)PR<NR<;.G2($*%#(TFH()&)8@Y;\S0N1/&)(@P;LB\>",' XM!)DW8^JT*>.&3A@Z:=ZX`>'4))LR87ZB-,,5!)PZ8MBD&5/4(1F5="J*J8-6 XM+0BZ7>$`A>HF#)N1;M2V&/.FS5@Y8](X!E'G)PBU;/*X>)C4(9,T;=+0.0FB XMXD4Z/.F\X?QS9)LW?\WD&8D5I<F_<P*G&;SZJE4T0,N(R=,7X1DY6%?/K1O9 XMS>3*ES-OOBL'SIN?<T;"D?/&3AHRK.F@.7O5)NF7"2A/=(T11&2T8WRV+M,F XM3)JU_YDU1D:]M7?3&.NY<89^594!PAAO515:<PE\%=9899WD@DQ,.1@&86C4 XMU=\:^D4&`E5R0%=6'I^9<94;+*[Q'TIWJ,92:0B9-(=B`X(@FX]-\30>;G7T XM6&`9>,"A5V9TA.:52A#ZUP9/6+&(FI)I#(5C`BBJB)9^48&078)FB9&&7G2P XM6)<9JKGA$T^(O<@B'%7A5P<;55'(G7<_C0;)`5LB]=)`+[U04$$,%!302S(Q XMD8004@0A118D5>'$$%0D\803+\%GQH)-=C43J""P\<89>VUF$F5RS$5>&U<= XM=F89G1HETQ)%4'K%$U(0,46M#GU:1JCP!5>1@H?5X<:`:;DQ![`JR#1%%DX\ XM`<442?QJ%'P(5G60L*&B(`8<+(P[1QIZE,&"&7"DP.UZ7:DP[@[P!0B"N>B6 XM0:]21B3!1!'?PK'O08R"0$014PPA11)09+HIM`E(`1<9L2%G'Y(9F8KJ&*J6 XMP:JKE3T5&%RPBL"N"&R5-=M@9I@!%`@BC"L"?,JB=9.;>&2DK$\<*X:2FW?H XMY>9(,<-Q;KHHI^9&9Y^Y^2"\80RX&'SK"75O&63M%P89(Y&%4IALOC52729M XM#0)0Y,GA`GP=EAI71MU")W579:/D%%TVO7$':\O%ZD053#"Q]K9*!5'JJ:G> XMM"I7*/7'XHY8/56&4-#=!`<:>9S+L>(>,\Y3WU7_=P9\<"%X<=#_.<AS&#Z? XM:".0#@;76U4H#7'V'#T[&'?4J\D!G[A1KS$'GBNE,#C!2C'EE%-TRF$GGG(X XMV5D99MQY6%WJB<Z37B3"[B-0;?3LZ:PCW8&<56$\)?I;9Y<EAY6QO3&;J<C& XMJ9:#EV>>.'Q"JPM"'L.ZV$GB=S4?E4TZ5Z&2^A3$OL6UZGA;DA@=ZB`'9[$% XM-K*20W",<P:QD$5G;GC+'*BT%J^U2%;L(]O$2)>BNH`E+!JT2T6P-YLJ/:TJ XMO%O,U42G-3)`L&!"J,(1M(4\A[0--"RB"HM^M(;(W($M+JK;B>+R/3DH[2RL XM(4,='/0CEKFL*T>CE5+TDAJS%`9`!%S-!N.4/J#U[VJ(X:+%>G=%M"@(/DNS XMR0^-8B@%%&0$_X%0'=`#`AX$YR]O<`$:?(`H1>%()M<J0A6(\`00#.$)!X.8 XM$,J`JK6`BPV^4\I,0)"$*$[L,/YA0\7(`I^(#8N":_E;X""8@%$6095B=$@" XMC#"CSQ`&!"%Z8G]@=$.Y]8XG>[-*W6B9@"2X036:T4NZ[/*&`+WL1W3\SUEX XMF$<V,+.4;MM@W'HX19ZX,76P<T,K1PG.<SJ-*CQ97>O4PTJE/$1B2HJ:@\00 XMO.'%!0VN4X_WW%D&9KHRG_DYW1MK)-!N&E1B9BL0ZQ23%3%QI:#KG$D1*IH& XM,[1RHW;SJ#TE",M[U:%E+_..-=4&'UMR5*0.`>EA0`5*:/6Q(.-4P2?E("YR XMX2M=ZVH73N%UD'D5Q%X_U5=!^O6O@.UK#PV9B;V6%CXT#&PF.1V#P`YE$*FZ XM"`7@FD-/RV6T?`6U(SWH`0ADR82.0%4!"3#)!"N(`K:FX*HRZ</9<`F"MR:` XMJJ93J['>XH:>WK4@\8$#"-1J@G%M`;!HZ,*^$M!1C:B@!9-1;%I!<`(NN.$$ XM;D7L*"N+`LB"P`<>`8$)3'`0S&IUL6KM+!=`VU?$+D2K*UC!8CGKV1-,]K:: XM72O@F/#;G6[$IV5-5PL@NX(8G'6RH^P#8J4+5[G"TK!X!0%UJ0L:"$E31$E' XM250N0P`E)24K`P``#`VF`=%N3`4```PO5$!"TD`!"!4)("504?!@@H=#WL#) XM(R?-&31T0*`8DP)$C!PX9+``841.&3(DT\Q!\W!A0X0/0<@$$80-&Q!2+&*< XM@[/,G#)R[)QLZ=(@0H4,C2:@@D8EB#EOS-"Y$\8DB#!NR+QX(P<$F3=CZK0I XMXX9.&#IIWK@!X=0DFS)A?J(TPQ4$G#IBV*094]0A&95T*HJI@U8M"+I=X0"% XMZB8,FY%NU+88\Z;-6#ECTC@&4><G"+5L\KAXF-0ADS1MTM`Y":+B13H\Z;SA XM_'-DFS=_S>09B16ER;]S`J<9O/JJ531`RXC)TQ?A&3E85\^M&]G-Y,J7,V^^ XM*P?.FY]S1L*1\\9.&C*LZ:`Y>]4FZ9<)*$]TC1%$9+1C?+8NTR9,FK7_F35& XM1KVU=],8Z[EQAGY5E0'"&&]5%5IS"7P5UEAEG>2"3$PY&`9A:-35WQKZ108" XM57)`5U8>GYEQE1LLKO$?2G>HQE)I")DTAV(#@B";CTWQ-!YN=?188!EXP*%7 XM9G2$YI5*$/K7!D]8L8B:DFD,A6,"**J(EGY1@9!=@F:)D89>=+!8EQFJN>$3 XM3XB]R"(<5>%7!QM54<B==S^-!LD!6R+UTD`OO5!000P4%-!+,C&1A!!2!"%% XM%B15X<005"3QA!,OP:?27V>H-I.//F6$8%5A#`C48=2)!=1>=I&GF!QI=FJ4 XM3%-DX<034$R1Q!2V.A0@6W.`JMI&:*0`WZE=(;A#L"K(1$014PPA11)09+HI XMM`E(408==<CA!D]42%%%$9]U94003$R!+GJ*9?7?&9QYM]8=R*FWJKY/\9@& XMFR<MNQYTJG;E5!CVN5K1&`\.G.IJ75'W!ATN0"N3$%4<`:Q1\#41!HMF^'>3 XM8?TA^)]^_YW8%(+VG96&4`VC6O!3WQ)KW\0T59M$$A5S;)2A"A0TPG\0UH$> XM"#P$]]<;+J#APZ$*C(`>FVZ"4.ZY'@D]]<DDL>LN"#!`/>RG%AV+H+(*,-OP XMLPKLT=!,_VK$L@\@G)##"2#PP4?#2-<-PPD=N:U``B:!*RX*Z[9;1`ILC]H' XM"&6PX9G@A'\;KALH7+UXXS/U49#G"@`:"$U!2T5&24Q%`"4E)24"`0``#`_/ XM`X4;:@$```PC&BAH\H1($28)>B1`(W"($29!CDQ)F*!%&Q(H"!IDD@)$"R)- XMIA!Y,L4C$2)'EGATTL*C%H]+6K9XXO%."SARWM1LX>8-&8$!%5"9\J2*E"%% XM2BJD4V8.'3ICX+@8`T(@$Z)&D2I-0.=,&:9NZ$P%T?6K&39ASHPM2\=-G39K XMO=)Q*B?N&SIOQG(1F(`KG#ISQZ:90R;-F31BJ9J1RZ;N&*`"J3P1HJ3(D*$@ XMEC9]&M7%&S%JK$ZN?'DKVS)A/8,F*_=L6M5J6']U"_=S;+9T88/8JZ!OU[MY XM;9/]&UCXX,*'Q0I?_+4Q;,@*F,IIPR:-&!?5Q8#0D0`CD]&6AZ80"!H(5$=% XM5$5.5"Y#`"4E);,/```K#Z$Y$&">'P``#"]40$+20`$(%0D@)5!1\&""AT/> XMP,DC)\T9-'1`H!B3`D2,'#ADL`!A1$X9,B33S$'S<&%#A`]!R`01A`T;$%(L XM8IR#L\R<,G+LG&SITB!"A0R-)J""1B6(.6_,T+D3QB2(,&[(O'@C!P29-V/J XMM"GCADX8.FG>N`'AU"2;,F%^HC3#%02<.F+8I!E3U"$9E70JBJF#5BT(NEWA XM`(7J)@R;D6[4MACSILU8.6/2.`91YR<(M6SRN'B8U"&3-&W2T#D)HN)%.CSI XMO.'\<V2;-W_-Y!F)%:7)OW,"IQF\^JI5-$#+B,G3%^$9.5A7SZT;V<WDRI<S XM;[XK!\Z;GW-&PI'SQDX:,JSIH#E[U2;IEPDH3W2-$41DM&-\MB[3)DR:M?^9 XM-49&O;5WTQCKN7&&?E65`<(8;U456G,)?!766&6=Y(),3#D8!F%HU-7?&OI% XM!@)5<D!75AZ?F7&5&RRN\1]*=ZC&4FD(F32'8@."()N/3?$T'FYU]%A@&7C` XMH5=F=(3FE4H0^M<&3UBQB)J2:0R%8P(HJHB6?E&!D%V"9HF1AEYTL%B7&:JY XMX1-/B+W((AQ5X5<'&U51R)UW/XT&R0%;(O720"^]4%!!#!04T$LR,9&$$%($ XM(446)%7AQ!!4)/&$$R_!1\>"JY4U$QMOA('28&:8`=2)-H)`5F`LQKEC&9FQ XMF1Y0J37&1J=&R;1$$91>\8041$S!JT.KR='&&&'`<5@=;@R8EAMSP$?8F:JQ XM2-ZU;E9K%*,@3)&%$T]`,442QGZK5(`^@OHJ"F+`P4)C8Z4`'X)5'13O#O>N XMUY4*]);!K[H'R41$$5,,(4424&2ZZ;$(%8%'8&$,&!MRKI8E1ZQU)9OK9CP$ XM[,-AY+4!I(,>,^LLFV_!5Z"2%>NG&EMKJ><@OM`-N"JJJG;%0[P^;"A3$ADY XM%5:*KX;F\AQSB)7>>AG%RQ:5&448G$<PR$##@_Y6G.P<0B?AHLT9PTJSIQBG XMW.QA9SKH%)YR+-B5>EAA+<,,7%?E]6(GNXI'?DSWJ[?.<O!4HTT@B.$@<,S* XM@1Y*!38[Y'B:%1?<69VQ:A-\BN]'1QURN$F&"Q`G4!-4]KU1'-T9S?%??HD[ XMZU1GK"WWF<USXZHR?-NBU>U(9`?'51@+7L4T6)6S5J-Z?:OM[*L;WXO5?8D[ XM:(9)K$&+UDV.W>3\@]U3:15E;2A9AG2D$XP0%>Z*RNQ:G?]EDLXH_4CJ&VO0 XM?!7;;]V.W-P)0MOBRF"&#[$A(RAXP?G&\`+G=<1VZ&&3&_YSAA=ES#SD<0.& XMZ``?.U1%,WFY6?=80X4B2*$)0P@"%'PTF\Z1C4[J"5B+^H8>U_W&4[I;&\O* XM(#2F.&5V/S'#G0Y3%_0,Y@QGH*!]RG"'LE7$)^ES"+E*J(.^P1`-,FQ"%:9` XMA>HE<2W+0\/^3O""$^0M9\F*XI9.]X:1I&%L&`M.111D/->=070L!$$)3YC" XM%7ZE1*KSXG]8I1Z7@8",9BS0&_M&%@RJ98,@\&!%PA!"/9JP"6(Z"X+T$[(P XMC&5D-G.#`)\B'#K&Q8YX_-$>4:C"J3U((EFJ7POKD*I5_0P.(X//?X(#%Y2$ XMR22F4F(8?)3#E;5-C0D`EQ2*0(4J2,$)Z3H(?%H0`YDLDFS?VR'XW$"]SDF$ XM+">!#PA@8$T7F0AZ5JI9,?GGH/[089,\Z>0GQ5E-MK@(2123EF&<TK0Q`&X. XM0KQ)&%/GJA1QQ5L.`8$,RNFW?!8&0#SIYS\#FCC".)%%@8$6LZ0#,9E,H0A% XMH`D3IO"$TGWJ?&X0RTSPB4;[.*TB8_!1'A0#/CJ9"4UY\!2HS("G"A+S:F)X XMPQLB5+.9BM"FV$J33L\GQYF`BI1SK*`'V5`'!X5)991,:D[5)Y,@5($*2!A6 XMZ4K"&B.H!`T0,Y0""C*"UU$5/2#@07#^\@87H,$';'5K'>`JUU*>P:YX7:L" XM1A#!_SB("E*H0DACP-;"NHDD01AI2&'06`(:%@1"J((1SJ6%Q6:-!BT)"$V8 XMYC24N$X/5KWGQ("BJXK6\E]JK:P$'42N+Q@A"4PH0@)`0,W0JJ`GGPL=:Q;Y XMOA-DY)MKT:8*U$I8RSZVMD5P`F(I-4[?`A=T>"0N5HS+MJQ<]"#,=:R#IE"% XM(0P!85.820RL*X7S87>X]]08QZ#ER_PM5[:71:RE4EA"(BB4O>X5+DH6B4XB XMTK>B&<EHM,![J,':,X(@(,(1EL!6KSC700<S@E>90(4O2.$)3^BB")SG@C&X XMP0PB>(AH91C&-UCTBJ\LGUI>Q6"#D`2W(54!713C!CB@(`4#&T'&<E-A\4:X XM"!JN`H=MBV,0B$"![VQ@,5,LV@@:,,'KW*$,[RM8G!WD"^^$`ZIV0!310@%/ XML/N12<;2!L5UA6>K\DZ`5L7E1"E@4;T"@;F*4`4B/`$$0WC"P4HGA#)\L5WG XM>Y4X9U($Z'BF2G8QB7E<S!,X=X4R&2H+V!8MD_:RV<U]L[1=WC!G.2!S)B`0 XM&S&5I3)VNI)Z=#EP*.&3`%6+FBIP.M-;(`<CJF`4.:)4RFYGTM[@KH6\YD4O XM,A-0!#;\A-:H+C9V05#;V^9VV47P[ALY#8)F/UO85VA*_^;'%3+PY"U2R>.0 XM_@GMF:A:/3_D28&=<@>HG<A!5!'5K(6=@"&0RC/8S/(Q:5WK^)H-USZ2@T;/ XM\C2R$#S:`5Z+?B\5A/Z2$G,(A0FSG5V&AQ,[XN$J[WFGD-[+?6[3_,[V@,W0 XM;IFHW)ZT?GF]VT9K:8>.VD_X0G2G>_&3GYK1VF:Y4EY^TE!QD-^%:C"[BOZN XM>,W+DV6PEP*\K()]E?FW4"!UAN8VR]=J)`:?/:.8_M,1+E,]8&2V;M9+G4>/ XM_6<S!?Z1!%'"Y3TT9";6SK$9Y'60N7]AAS\>V-UE4G5G]8#:2F;"P%`-YC&( XMF98@./R^!F]/C:!@[Y'O+AG^WC9XP2$%'>G!X9V0^([870$)6"0*"@^"$(R^ XM]"`X_;!E8A)CHP#9(Y\"D`N2@#ZXBN.QYSVJ:X]=%%0;Q[M'?1\H[_LR`%_V XM,^_?Y4'%!CEXG@69W6P2.LN"O8,^^*A'M>K/H#I\73]@WY=]`LP`H>^4X?*? XM']A#5!^O+<CQ+6[P?`JHV876'_X$7.`&)V!ZO#=[GE-\$\=?14`$R?<0S?=\ XM!3A\$7=[(H=>#=A[PC<3RZ=\O$=\H6-\.;=SDY)\J+:!&VAG>%8PJ29=)N0$ XMD54IE^(PG*(^ZS<CG-<_,S%WS2-P_5,@R,461>,B?.(Z(=11(/`KP3(LQ5(Z XMI=9:0A0M#Y5Q-9@5-]AQ7!4NXU(NYQ)-6V)R>W%CN=5W-@AX\2)U#D%UDW>% XM!Y,P"],PFC*#TJ0404`'JU$^L)%'I+)1'N)=/QAPK*9#Q]15SC8;"4(&;R&% XMG:%$9--(:9!!D+1*?015PG0Q'C(@=;`9E@8?*,`Z)V`X:,`B4K,>L=%">T@S XM=Y$1=`(=8Y$L*:!&\*%JD-A*3B%>O"9(U$)(8C1,B'1&>P-`#K<N11,;84`B XM-4.*5G066`1U,^2'RP*(/9@5+K,69U&'<!",F017/_*#JA$V<.04!70FE!AL XMR((Q5G8G6/:'QM0_0#1<U+(:IN**2@&+EQ2)LWAAIV)1?\03W61H@S10NEA& XM)R.."#$S3G%*I95'+H0Q7G.)-R%JF&9T0D(>YO$X:,,>\E0&(^-.\,1(;N!( XM&D1CD@1"_;-*\*B"F74$7`@?'6(51@,Z)E$63F(BOH:0#M(T5C%S"+)JS0@' XM\*%-"(=<K.$ZT8(RY$A`5Z8YW,,&OE9I5H@L3S0Z:84HBH(C,K%G??9G@39H XM-%AHA^9W.\1M[_8_;D,EEL1'K<2(CDAC<J2(P$9K85F3?O5J@912B+-O#F&` XM;RF)=%20=H&,,F27&A>6[*%-3@&4IE4D$W4G3@*8+0%QQ@:$0J)U:41P+[=M XMPH9JWM:4@0E'R>%*P[1*%]2(CZ26<<F8,>%N+@*:&HD<\20R`4EP_281+!*+ XM*[26=/0CEK9L#V%S:T%Z3,`$1-05)K)#NHF904>9QWF90+=R,9><";6<,*<4 XMJ/8$/&9A!62..MEJVE0@'K@6.F*.*.<0+^>5-*<^L:4`7AA3>2>&5$B&GU<0 XM:`@'`W-ZJ+:>.L9W.H9<@4=Y5.=X(P$P_GD0[6,'^RE8XN<B*+`1A@<"`XH" XM(D";(O!]KH=XOTF`J*=Z*N!X_D>A3&"A!HBA&BIZAP20?,`'!Q&B_\<%7#"` XMX#=_"`I_F;=C9*&@+"`"<A"A'3&AOMFA+6J`W0E_%[B!!OB`GJ%^JH<"T;*@ XM#?J@EX2C&[JC'OJA""I'8U`^-)JDH7=X,!"E"4"E$W%]CG>!"?"C*&"?*0"E XM\C>D!2BD)<A[&]BF#O9&$"9A%(9ZHD4%&_,@+DEC\D,KLK$QP`-L(`!E#.0\ XM@4H6[:$6%?1"R"A\7)9Z"(IYAR>C^9=A&]9A'Q9B(V&C.%J`W7D8\LE[SN<9 XMJB>I1,1C*&"I2M9A>;>I-PIZG@IR>R=_HVJ%#_&IE.ICJKIDF4H%KBH"(X&F XM%5:KE/>CE)JJ2':I3)9;-?JJR2=D9$%D"G""4PDN2<""S_2"1K!?,E@ZY/=. XMZS$3JW$U/_(3;F-P>>J-=3$KM1)+.OEVNW*%XD(NYH(NWEI^ZW%^4&>&"!&? XMB]>O_G(0:&>$:Z@P#-.M-$@%/G&'Y5H&Y\J19C-(HB8UJZD?S`BO\,&N;^2N XMMA,P0L.;/*%?(;5(J^E*Z+$:]#,2&B99\*$Z_U,C?1*5"H""5*EG'W65@"9H XM14!H_+@6WXHO8.DB#MDUA.-*Y`-).-.+KRELO`E9DO44K^,@:^8?6;$J1H,= XMBB:=C,9Q;CE!:.$8:8!:]J&,<_`^HU9JRQ81Y=,@8SL6+W*/7J<]9S)DG]$5 XMJ3$'J[ELJC95Y_&NC?&G<%(70<4\,E0@HF:;9R"%!MBT(@NU0[D_)8MPL985 XMV,:URBD39N5=;C(QJ6,=,I2T12NQM-0SRX9JJD8]=>,8R?*W#B)#/Y&*#'=I XM1)LL!->T*_M1C@L[)G(;5A$PH\@UM+(&I;NUWW:72[&P2\2YA>M=G_J=!Q2> XM,&&<S"ELE2ETS^ERSADQWO6SZR&S!<&]8:"O]0*?`5MX`W-V4#>?_%F^/;9X XME(>A4B.B)S`"+"I[/WJ[14""&OA[1<I[/99Y`XMZT><@J_>_(LIZ)F`"`NLL XM.@I[>]!C*[`".Q`[$;P#0HJA!OQZOPD"":P1K">B.PH"):HOAO=_?&!&(_S! XM_Z<#`^BA$FA[(MN`1.H@LH=J`^S!4M/`&]S!K#>A)\#"'*S`/6S"]1LO%<RF XM,P&_#$S$47J_D?51#5B"_$O#L6I[X(L"$>QTZ!?%&NBFS%<0&P@:"%1'151& XM3$%'+D,`)26S!```%0^2N_30_P<```PO5$!"TD`!"!4)("504?!@@H=#WL#) XM(R?-&31T0*`8DP)$C!PX9+``841.&3(DT\Q!\W!A0X0/0<@$$80-&Q!2+&*< XM@[/,G#)R[)QLZ=(@0H4,C2:@@D8EB#EOS-"Y$\8DB#!NR+QX(P<$F3=CZK0I XMXX9.&#IIWK@!X=0DFS)A?J(TPQ4$G#IBV*094]0A&95T*HJI@U8M"+I=X0"% XMZB8,FY%NU+88\Z;-6#ECTC@&4><G"+5L\KAXF-0ADS1MTM`Y":+B13H\Z;SA XM_'-DFS=_S>09B16ER;]S`J<9O/JJ531`RXC)TQ?A&3E85\^M&]G-Y,J7,V^^ XM*P?.FY]S1L*1\\9.&C*LZ:`Y>]4FZ9<)*$]TC1%$9+1C?+8NTR9,FK7_F35& XM1KVU=],8Z[EQAGY5E0'"&&]5%5IS"7P5UEAEG>2"3$PY&`9A:-35WQKZ108" XM57)`5U8>GYEQE1LLKO$?2G>HQE)I")DTAV(#@B";CTWQ-!YN=?188!EXP*%7 XM9G2$YI5*$/K7!D]8L8B:DFD,A6,"**J(EGY1@9!=@F:)D89>=+!8EQFJN>$3 XM3XB]R"(<5>%7!QM54<B==S^-!LD!6R+UTD`OO5!000P4%-!+,C&1A!!2!"%% XM%B15X<005"3QA!,OP4?'@G28@><9,R$96!@]BO'&&Q&NM9H<;8P1!AP/SAJ& XMF6CFT:E1,BU1!*57/"$%$5/LZM"KL<YJK`HR39&%$T]`,442Q1KE*:BBAG$& XM"N>E`!^"51UTW@[+RD1$$5,,(4424&2ZZ;()2%$&'77(X09/5$A111%LN;AC XM&9FQR=IY;`FI(UD9_><C4*DUQ@9\",NQ&TE!,#$%OV^H!U2-?2YKJ`(%C?`? XMA'6@!P(/P?WUA@MH^!#RR&R4["#*PBG(LLL@*S`">FRZ"4*^^WH4,L__.6A$ XMQ1>#`$/(_?(,0A-3$/%$M2-X54;/#LZ(Y%.!(2@'TV3E=J@"I@*U%KA=J?`% XM'6/`,9@9.SP4T,\,RTIKQ"R^;090=KT1(-\J?)RH`HOR"H*T150A-0A#/'$N XMO$*4<8;"G\Z;[1GPS01"$FZHIIE>>CCHW=]=_:CQPK#:#0+>(.@-E`N9SW1% XM4V\!F5S!5QV6)1LH_3AD?G/,`5\"4\A(:WE\GRXP[T^502=TLG6%-JJOPJY4 XM`DFXJ)Y33IW.^AT.4E66[6X,KWGVJY<E,>[G(9R&P%V!QJ+&Y5\?[[SUK@5T XM$>;/5`0;/QG>_>AE+XI9C'_7TUP1LM*OX2T0)>^+G4P>>"+:E4&"/2'@6HYV XMP*OPA&<?8@,=K.<0"E8N5*/RV-A.>#END<%;"D";N,A`+@7LH2$SD:$*Q`"' XM&FJN;`74H=;P@((4U!"',N$A"'H`@K6U[6T^G,D=+*@1%"B1B4.T(AQ8<`(= XMG"`%'0D!$YU0!28PH2,W5$`">+B"%=0P`>_3R`[AT,8E8I$,6X!!%T!@`A,< XM1(EB!`$9S<A'/\ZQCCVXXQ9BT`4T%B0!FHLC"N9H1T&6D0D@X`,?_DC'%52R XMBU\$01H?8A(-HF!_1GRDYOJP.@`Z:)0)*&7^4,#!BZ52C:M\9!^0"()=&F0F XMLK07+9%6A%OZ$AH(5$=%5$Y532Y#`"4E):8%```5#Z.[O7GH"0``#"]40$+2 XM0`$(%0D@)5!1\&""AT/>P,DC)\T9-'1`H!B3`D2,'#ADL`!A1$X9,B33S$'S XM<&%#A`]!R`01A`T;$%(L8IR#L\R<,G+LG&SITB!"A0R-)J""1B6(.6_,T+D3 XMQB2(,&[(O'@C!P29-V/JM"GCADX8.FG>N`'AU"2;,F%^HC3#%02<.F+8I!E3 XMU"$9E70JBJF#5BT(NEWA`(7J)@R;D6[4MACSILU8.6/2.`91YR<(M6SRN'B8 XMU"&3-&W2T#D)HN)%.CSIO.'\<V2;-W_-Y!F)%:7)OW,"IQF\^JI5-$#+B,G3 XM%^$9.5A7SZT;V<WDRI<S;[XK!\Z;GW-&PI'SQDX:,JSIH#E[U2;IEPDH3W2- XM$41DM&-\MB[3)DR:M?^9-49&O;5WTQCKN7&&?E65`<(8;U456G,)?!766&6= XMY(),3#D8!F%HU-7?&OI%!@)5<D!75AZ?F7&5&RRN\1]*=ZC&4FD(F32'8@." XM()N/3?$T'FYU]%A@&7C`H5=F=(3FE4H0^M<&3UBQB)J2:0R%8P(HJHB6?E&! XMD%V"9HF1AEYTL%B7&:JYX1-/B+W((AQ5X5<'&U51R)UW/XT&R0%;(O720"^] XM4%!!#!04T$LR,9&$$%($(446)%7AQ!!4)/&$$R_!1\>"=+@AUDQ(!A9&CZ)> XMMM=G<!2VEAGDM>$C4&V,$08<()`56!Z=&B73$D50>L434A`Q1:\.K29'K;?" XME]]A=;@Q8%INS(&L"C)-D8433T`Q11+'&N4IJ*FB<%X*SJ[7E0KG[7"M3$04 XM,<404B0!1::;7IN`%&7048<<U=HG%E"KVN%8'0Z&:2N=9J+)(@_G^3!272W$ XMP):+$)/A`WQ.W7?8&]&2L>&OD=U!I1@@9P2663>E*L9B(]W1%(+PO7S&?R?: XM"`(,+EQKJ`(%C?`?A'6@!P(/P?WUA@MH;*R`T-*R4;2#2`NG(--.CW`Q>BXV XM,0413X2K-=?_.3@CDD\%AJ`<0>>:51IF'*I`J4"MA6!5!WU!QQAP#&;&#@\% XM!`(5M"[L]JX@^&T&4':]$2#C*OR<J`*+^@J"MT54`38(0SP1K[Y"E''S6I_V XMFRI\,X&0A!NJ:::7'@YZ]WA7/ZKGH++,XJJK'"PJ#E3/2J5^15-O`9D<6U0> XMEB4;*/TX9'YS6*M4`E/(B&MYC-NN?!G,/U4&G=#)UM7=T`WX.WP)).&B>DXY XMI?WN+-[A(%5E&>\&^JFK;_SAO"-OWQL$$IBJQF`_].VK7_]ZE7^D9A6#2:T, XMP'-(`E)7!#;\Q("K:YUCT@`[$#@083Z:#>S($T&8I,]%+F.<S?[#DQJI!P0C XMG(WM[C>]"<YD"OVZRA@N=*>S4"MQ<;G=;'!0PI94\((U3!T.";1#L?3054#T XMS(]BP#,#%B$K%S/@\,YT.^18Q2EA$"#!"$B^4RG+@*D+0A/;\,0N.NB#$+0B XM%F7&10/RRU\`\^#!XC@]"F(1;NB[(DH`&;R9"/)$Q"L#ZF9RQP0>9H'_>N,> XMBWC(TH5*+#Z3FR7+=:Z"D.\@[2K('AHRDP#I\8$C$4,0W660F7Q2!6*``RM3 XM1[<\OO)L>$!!"EA)2IG$$@0]`('>^.:W6<Z$CL5#`0I^&4Q<+A,.+#B!#DZ0 XM@HZ$()A.J`(3F-"142H@`;%<P0I8F0"X:026<!`G,)M)ABW`H`L@,($)#O++ XM:X(@F]N,YSS1J<X>L',+,>A"-PMB0YF8$P7H!($]\<D$?=(SG2M0:#!/,`)J XM@L";#S$)'MV`@HKMDJ"IZT.N+.@@C"8`CL#<&3G+Z2*$,G.B,+"H25.G2L\$ XM$P<K%2GW/#/3F=340<&D8DX)RJ5$:D0E?[D9'5P*AVI>E*BI0ZD*@OG3E49U XMCR!803"9JLX6@.`$,?WH-Q/0!Z)J-($H@*-8"PJ"LG[3K2'MY7XVVM$8B-6M XM&@A41T544U12+D,`)24E&@T``!4/KKM7,\,9```,+U1`0M)``0@5"2`E4%'P XM8(*'0][`R2,GS1DT=$"@&),"1(P<.&2P`&%$3ADR)-/,0?-P84.$#T'(!!&$ XM#1L04BQBG(.SS)PR<NR<;.G2($*%#(TFH()&)8@Y;\S0N1/&)(@P;LB\>",' XM!)DW8^JT*>.&3A@Z:=ZX`>'4))LR87ZB-,,5!)PZ8MBD&5/4(1F5="J*J8-6 XM+0BZ7>$`A>HF#)N1;M2V&/.FS5@Y8](X!E'G)PBU;/*X>)C4(9,T;=+0.0FB XMXD4Z/.F\X?QS9)LW?\WD&8D5I<F_<P*G&;SZJE4T0,N(R=,7X1DY6%?/K1O9 XMS>3*ES-OOBL'SIN?<T;"D?/&3AHRK.F@.7O5)NF7"2A/=(T11&2T8WRV+M,F XM3)JU_YDU1D:]M7?3&.NY<89^594!PAAO515:<PE\%=9899WD@DQ,.1@&86C4 XMU=\:^D4&`E5R0%=6'I^9<94;+*[Q'TIWJ,92:0B9-(=B`X(@FX]-\30>;G7T XM6&`9>,"A5V9TA.:52A#ZUP9/6+&(FI)I#(5C`BBJB)9^48&078)FB9&&7G2P XM6)<9JKGA$T^(O<@B'%7A5P<;55'(G7<_C0;)`5LB]=)`+[U04$$,%!302S(Q XMD8004@0A118D5>'$$%0D\803+\%'QX*P!383DH&%T6-P%2GX8!ATFHDFBV:0 XMUX:/0+4Q!JL@D!58'IT:)=,215!ZQ1-2$#%%KPZM)H>MK"*K@DQ39.'$$U!, XMD<2Q1L&'8%4'?5I&J'*@<!X+#8:1@K;K=:7">3N@RZT**I3;;K:^@D!$$5,, XM(4424&2ZJ;,)'/%M;,@])9RJM[9ZIFJPUL7#>3Z(AV=FJJK&EAN>%CR8&68` XM=55&\9H4!F]9746&'5A1?,9!Y?HXFW<!>CJ;FW@0B/*98>3E8'!<A;&@"P`; XM41>28;2A9!DCI>&B>@[29=,;-2+,:LX+?TFE2?#]!Z2#RC(+QV%GEJ$#P`EH XMH44/>J2M!WP)9)%%#WE`8@#;5US1PQUX`\ST6G,4F=\<<Z0AU*HV\=39?RN[ XM/9+9)*-4]XEGL@'?8&>BQ/1A;SP=]<H;=RS'V/0ZE$#<!L"@MAXPX'T'#`!W XM"+8<P1%^4XTV[4=''7*L%89=;P3H\8^DC\0T?#]15C+M-YET>^Y7\>Y[5S^> XM_J+E!:N7AAQDP(>\[;CK[GR&T,^F^H8@./%&<>JQ!Q>"Q!^\LE-NW'E3U_^= XM=1)O5WM8^Q`&IWK&'$`+'4*&D"Y3*4M()LD/>E"RG*VMBCP9V19T!N0Q%'`A XM!C.PP;F4TB`QL4HQ*`G0;"Y'F13YQ#M90=R#U!*8S#VH@!240P`=(K2N$,UH XM;Q%>]>XP&PD:T&,_B4,=R)(?$'@A""`00QDH,Y8YP&=W@5/06U98%O*PH05( XMM"`,8!"#CO@PAC/<DNM\DC`'?5%9;"&8@R*SK,WP3PRF6L,<\+22Z65LC5SI XMSTWX1T96[:P,0B0B@ZR2P#><P0UIT,/]VJ.6,VC/1LW;T1(U<Y,@#M$-18S3 XMY8*0KR0D(5=S*.,+J_)#.<!'BS.800K(Y[I"'C*1K+&D(/,'NH.PC0M%F$D/ XM?""3$W`!!JD\@4Q0P,DA>!*4HCPC4#8H.BZ(09>\!($ON0@#86JDF,>$XQCD XM2*<B*E,.S(0)%UPDDUWV\I<QH($UB=G)3R)F5AUCS3?#^1`NK*6<T9QF#&2P XM3FQ^TDUWT(N;7B#0,L03)1*D9P*XT!5\GI.+->AG.Q]8$9\Y2'G=&R4X;YD1 XMATH3G3&0J#$_62:-EE*A7""#2D%@SH^JE`SKK(J92B4'%OGS26=0#4KQ`,U> XMXL&:,T$!5_[2F)K29*+S=):A%%"0$?P'0G5`#PAX$)R_O,$%:/!!4Y_*AJ@Z XMB*KNPZI6%3`"MI@!/2YJPA2(\`1LE16M_W'0C)#4/P29DJRY2J$9#J4`4@%E XM+1(\R!?H,`8X;&P'#PD("*A0JX3E=5=)K`/'/`8S\!UDJ8E2P*+J5:TB5(&M XM(!C"$^X%,"&4(:=K\1:XX#,3$"0!D6AQ#"R_A\8?7:YKCM6543L'E#`FH+57 XM:,H4F685I^R.365@@^5>1IZ_.5$I"9B"C+Y6GM\5#+G*?4H9Z`0=V73EF[Y- XM0!*6%J0T.E"W++J#@ZA2EJUA#+JM'>]YJV@EGMPGDNYS+]L2((5O9=0)56`" XM$\+;VB*PX2?[I8**YN"Y_JFP0'*@PUHJJRP"SZ0()5,:VS`<PKTJI<#'$VX9 XM6#N3_BYO+0`6,'PX["-0H4JI?`VL"E2+*G&1@5PBVZ",V540&8<,+O/:0T-F XM(F,QP&%>K?4K\W:<%22A(`5()G*Z#H(>RJ#GR?,:LDR,S%(0#+:PA]7RB42L XM$11PN0<70P\>S`P'%IQ`!R=(04="@.84,Z$C0E9``HR\@A7,*P%*TX@*^+P" XMEJ+Y/%N`01=`8`(3'(3+="Y?@)G`:$</&@Y]-C1;R+"%&'0!SP7Y[4P"C8)+ XM@R#2=J[THS%=Z$B?H`=Q!D&>'X+1W*'`SE`.=6O[D*L#.VC6":BU&U!09=R4 XM@<TXAHN<_[SK4/=!S,\VR$R$?>M)YUH!T<[L9@\BDR0X@0I%D((3@D!I(U@* XM4YKBE``KM$1CSZ14;F`P$/.;,*J]:B3%)NK*^JB8Y]JR7M&:5K6N!;#@G&4O XM&J5RNZ]LY&2;RUWJ,C*2$>)C>3E+)O?*U[[ZE>[6+=AS:G2PU!1V;\Y\S;8% XMHUE&WGP"B)=R)-21G_!&J#')-IC"Z9G-<NY(6X]I[<=A()_YT+>>C%SN/ZJA XM)'Q0UE4'A0GHTV.9R,Q;!SB0P7[+I:W,'*CRJ]P,3SH#`1O`<G##A$$JUEVC XM_#Q5J_JA156W_7AR4((JQ(6142`00A6.@*U_.Z1#Q;7O;*HK!S.,_0XO7**, XM5/45-WTFM05#3W#<GI;W.H2W<A@)5-B2$272`8U*%'M5%I37-]3A(BX#08B4 XM^\3:(8E'TA'Y_^YN%,PJ"D<RZ>QGGQ#:T1:AM*?56KY'_.&9O#;ILE6D`^$M XM[\3T#GR^!2Z9B2M7*@'(#7>)(`S1^!:II'Y(SF7;%&I$6#0\_F+9-VD,V3:$ XMN#@(7T,(`A2*4$N8M)8("_=0R?#0X,OQ.Y:`=$GY86$R(00BLP;LYWZ]]VU2 XM\`2.8@194'\Q,1,14469HS0L4B#\EW;V02KJ5V%LTUI!<#(IPS4U-UG.]SP$ XMF'<'R#;X9P8?P@9T((&B)A-8T&"[PT9Z](&]M6$E,P?DQS[%)Q,L=@<B1F(R XMX03R0RO+XG8FZ'2$D7YUIR#15V+\P1]*U!5&F!P.9'IT((7Y97`1!D!("`)5 XM8'7VTX512!B1A8(])T-E:&(9A7/AHX9?R(93>`:^Q6+#!V-,I0`&AQ\)IP+# XMAVSEHF-3=FGS4G$B$V1B)F.%-1*#=DA1)A,R]A5?0$98QE>M55A=!G25.&9A XM(VB05F>3IFJFYFIP!FIZ!H2J@2"E9F2L&!\*Z$M<\&:Z-A-GYA5OD(FAM!&L XMQ@)])HO,IHL'^&>WXADGX`6XJ&>MI0*%E6EHI@+#^#6.!DPW4(Q;QFK:F$3' XM&&IH%8,SF(LR`8VL]HF$UHUB\(UZ%FW-)FWE&(V%9HH"%HIB<$B?:''P*'5P XMT66%%8K4=H]N<&W9=GMXYVW@)F[D5BF7XB_JYG<(@8EDU%K@]R8O@DQ^1'<! XM*$@7!P(!1RW6TG=;<HF]J(E>R`+_<6T.(6->.''QD8C_,7%XEW'ZPB\."3!0 XMT%QOPB!K\7_:%4B8Y"`XEW4[IQ3_(3QRYS^<EWIC=RN%,6'/%WNR,3EJ0AB- XM8W)7]W8K<SETF'K_07N7A2@&R5E3X%F@)5JDM6ZFA5J\Z(MC4(;R=3EL`CO: XM1THQ9%[WM3NIMC=L(U_&A5,6PY?P-1-3\"T@P'1#E'J*1!XK6$,FEWHS`)BP XM$8*0@`!!,`87<B=I>#E]TP8KR&*($8(SH6!8T7P.U)G15YD&YAF!]DWFI34F XMT1]?HQ>Q(YBBTUJD&6_]5S"Q^4'RM'T].)@R,8(H$Y0.]!_IUY5J,8"LI9J^ XM)IK0<B5.PGR[:4;`"8<?IIH9YF$.`6(=%H?^Q3Q5EY6L@9QL2(=[6#(2&4I^ XM6!"!B'`R)INTF1%HEF>M)0)%\$NI)`;.9`;CY`;V)`<,10=<0`<B4!!]D&4* XM0))N*516F9(]EH@M&:'O$I,%89^CUEZ440=E$8J!A2`>FHC_*&9*!E@PV61K XMII*C4C-_=3$9H1)_D5-TL(E_V%JDMBYK@6K6)FNA1FHP:A&J46HI.8N=:'YH XM!@/=&"<;87KM=:0[L$(<FA$\``*1V6AI%*-!BJ-0=C%]-HN_A2!3Q0-H-@-_ XM]J7FQP=H)J1KT0+25$W75H,@$&UPJ@)>*(TO]&>\EERLZ2(H`(Q=-E=K)I^` XMP0):.F?T>&<\ZHPS0:>$8:?4N`(CJJ@R\1]]AJ>]YAFS]HQU.H\'0:E^YFS0 XM)F;4EI+S$FT:"%1'3U1/+D,`)24E)27`"P``%0_CN[A9(Q<```PO5$!"TD`! XM"!4)("504?!@@H=#WL#)(R?-&31T0*`8DP)$C!PX9+``841.&3(DT\Q!\W!A XM0X0/0<@$$80-&Q!2+&*<@[/,G#)R[)QLZ=(@0H4,C2:@@D8EB#EOS-"Y$\8D XMB#!NR+QX(P<$F3=CZK0IXX9.&#IIWK@!X=0DFS)A?J(TPQ4$G#IBV*094]0A XM&95T*HJI@U8M"+I=X0"%ZB8,FY%NU+88\Z;-6#ECTC@&4><G"+5L\KAXF-0A XMDS1MTM`Y":+B13H\Z;SA_'-DFS=_S>09B16ER;]S`J<9O/JJ531`RXC)TQ?A XM&3E85\^M&]G-Y,J7,V^^*P?.FY]S1L*1\\9.&C*LZ:`Y>]4FZ9<)*$]TC1%$ XM9+1C?+8NTR9,FK7_F35&1KVU=],8Z[EQAGY5E0'"&&]5%5IS"7P5UEAEG>2" XM3$PY&`9A:-35WQKZ108"57)`5U8>GYEQE1LLKO$?2G>HQE)I")DTAV(#@B"; XMCTWQ-!YN=?188!EXP*%79G2$YI5*$/K7!D]8L8B:DFD,A6,"**J(EGY1@9!= XM@F:)D89>=+!8EQFJN>$33XB]R"(<5>%7!QM54<B==S^-!LD!6R+UTD`OO5!0 XM00P4%-!+,C&1A!!2!"%%%B15X<005"3QA!,OP4?'&6_\*!.2=&;U8!UR0-55 XM&&20H>,<_YWQE'`*'D9>&P_B.D88=)J)9AZ=&B73$D50>L434A`Q1;`.K29' XM&[O"P:P*,DV1A1-/0#%%$LL:!1^"51WT::AO;-0&"^@%1]ECZ3;Y7QDI?+M> XM5RJ,T<8.\`7HE4]TK(NO4OJVJY>;_Q[$*`A$%#'%$%(D`46FFTZ;@!1ET(&J XM&SR%E6I=K+KZ9JRS5J3@2.A1AMY<MP+IH+W?\AJ&KZJQ&)S(9XSTXVU"G;IQ XM5S^N*]9:[:[[F1OP#>R@P.^Z('&'A[UATQLUUOI3''60E1]/G8'I)EMNW$6@ XM'&>(118=(Y5A(U!%O_M95SZWX09OIBH91GXJ7P7'D.-I5MP<>`6G&F%I$0WP XM6NHY^`9A7H<<JPX2)U`"&0GP+8;?%A=7,FJ;V>%8U1K]1]/"2201KU*.RY"` XM7B2"\#@(Q#6-F7YLEL$&C>>IY^-L,L#G^`RGIY'ZZJTC=O5A6<Y^8NUHW`[" XM#+J7,!KJ#I8P1O,KX-'[[V.P3MA5K?(4!.A)@*`Y&YR'B<?2R#7]=-2R3EVU XM&\/OFK5=Y%T-:ZVWY;;768'/`5_K7[%/J$`@@OG5`0XB&)KA7%0XXX0-0[#9 XM$`B2P$#D`$LI<\N(8;#B0+&5164LRN#0ZN8F/&AP:[+YW\K4(A0Y2$=IWB)= XM"7R`!^:DP44ES,CX./<C,:S0#2V4#EO\1[H$/`<NS@(2!W>XP,\-(70/FA<( XMSE?$PJVE8^+;7!._]\3P@:LKHFF>'!)@DA9Z1G*4`YQAPF0TW26@0&U;"PJ, XM-L2G]`TME3N)&]F4JHPL9U]F^!`;Z)`"&#K$<6F(SX?`P[7$,9$G07/:B\C@ XM1J2A<#8^Y-H83`)!#36O!$9,@U!X<K\SO$5U4:Q*!H'"M<\@CC"&Q)%,A%"% XM(W3+8$HAPAM*-,`KO06"3ZE,$QMX&ZM495=;<Y_58,<5^$#G+[NR"8ON8#8Y XMH,19J6D,&WB"@AV5(3-LBJ:32O`VU0EA)"90'1$*"1\*@B`/AP/!>G*FEF$B XMQS/PK,.^?A(4!]UA/:MIH3QYI1B,Q;)0B%+4EIH`)=GAR4V'(Z7%S&`&A"J@ XM("/X#X3J@!X0\"`X?WF#"]#@`XQJE'P=_2BMSC#2DEY4`2-`#YNVUH0@8$%2 XMM@1![EX:'/YE[XL'^<\.'A*0"69(#MI\D$34Y*+_)&YF(/-.@%BI`D,IH*?X XM226]#D>'H2:@J%!XPU1Y-ANN)JXJT&%150N"U;UP[6MGF,,6:GI3*=BR"T,M XM:A/"@`?4B,4^8O%A5\)4E;@JCS)`!$I&UGI5LV157W"@3!W*XM6B1F2R&G11 XM8854OS>QAK%M_:D4S4J8+=B`!G@E*K4BDE@7L@:JM6)L0A6P*&&!0%M%J`(1 XMG@""(3PA81(30AG.X+EQI5`I,YD@#F<#6UG]:$CV4YG@#DDQBR'5+F(]JO*` XM0IZN-#>6"4AN$;99!MTEP0VJT8Q>].`@J6KW1T[=WG?-BUZT."8-[,7N6)6G XMHSME9+ZD,T(:^NC`.M+1#8%EY1]E*D@Z@#<!4_BF6E!2V#H*#<%M$"SK6,1@ XM_S[8";,IK`=A0S^P>!8E>:C8@Z_0E%,6SBI.P4JHD,.V>:V2K"6VG^Z2Z\XO XMWKB.81`@@5#IXP&QTHING((O620?%OV(M`[>\4S&^Q,W0J&S<XA-^A`;&$DJ XM$WYE>+!X375#W17!5/\\4WE)5]V+Z?>]S'6L6Z&L.`6!=\PH*;-2SGQ-4!T7 XMEP>Q:D&`J@+CELM>Z.+7NA(='*.-CM#V^E?`%.TT27_0DF7XUQX:,I,;:L1> XM(.A!#T#@A"HP@0D=V;0"R%BQBZ%`!$_(UA1$D(*"S:0/()"=9U2=`,^-.M(% XM20!70^U*.GCM7V\$FUQAT`5B8QK9F]U"#)H]ZDBR`=F1/=P'1PT#9*?YE"A0 XM@>=",.I2GSK5P4ZNI\,][E&?H`0G0/>J%\+5%:R`V.)V@[V1G5Q<Z]I!O$X` XM=-^$@EJG^];![D.P36)=-Z``R@8W",(5H'`%)(JVLIR@$ZA0!"DX(0A,J-2E XM(,:I&#IDX%F>"<JU_$,S!NX%E+%,@;Z<GVE5ZUJRYI;$0IMC@H\.T-1"F,(8 XMYC"22^S*)LZR?AI(<P?YD+AN0&^M:F2[!I9`JS<&+Q$&_,TFL:@_Z+T+GE;# XM\D;*=Z5O=I;-D`,?.C<W[4"!VS73)V((SD&"3(#+*#V5OOC^%^WN36+@0?:C XM!N80ZT:6@Z<PV5XLRT7N=7,[X+,K>,K':O$D1)(&7YD1-H"%?VJ18(]9N)C` XMM:CM6PN3X<56D>S5?6P\`8O&PB/=NF4;L_GBB48Y.39/FIRQ%Z_M062"6]WR XMUK?`_7T"A`OUGF<9/LF=@HS@\!F!6AWQSKKS3*9`=02-\/!%3F(8I,+*$D!_ XM)D.(BX-.0(83,(YT2(_NZM*D&*6V%E:&08'F*O*R4]:(#.K!3FQF-O6E7OAE XM.)P'=W+P8$)@$F&P!@6#$,F5?IYQ`C+@?KH3?V^B.M>4!_6'6"Z7?_]G.S(@ XM@-1%@.EU7_E%9X$'%`SH@!!X?C)!@>LW`Q@(?X['@3[B@2U7>B*(/,MC@C!! XM,?^1@NN%@,:V/2VX@+K3@'`1@\B%?NH'`B?@`B>0@3DH/3OX@:27*H'S@D\8 XM@>$EA16X`C=X2!J8<EI(?SWHA89!=<D3%6;P$U%&.D[X@&(X@5-X`CYPAC"1 XMAE0"-B,F)KAQ0_M3&&X`AG@H@[VUAW+@AP\!B!T$3&6T&(ZAB%#H$'I8@6D` XMB0EP7IO$'V,SB:/X2)B8AV2X?O#V?H<4$1.A/%`V$KLGBF41592W&*?(B'SV XM%-V'!O"QBRLW+8)F<6PE9]FS<@57$*JF;A^T&FT`!__":3+Q'_LFC;RH&@C" XM;OJV`O*67+M2@>WW?I&3-V5A!@]'&"P@`H\C`BP0;;=7%O;6!1$G;-LS:B8` XM95LP,V_A<!"76L$F!C!H:S+QC>MW@>*X(R)#!^;(5>E8`C`@`V3`CNXH6?"X XM`O*(;,-FC_BHCV1QCDE(2'CUCP%IC01)A39XD.2HD`O?(>?D8&/OHD5Z3`B&Y:@`9AB2YAU8HCBI0;_<V:A.I;31ID<@V XME(LH<0.YAV:(E$I);$V)6?$(`O>6;]4HE"-)E0^RAWTHCNNVE671;#X05-LH XM;V,H$VI)!\VV`J,&EBN`;/Y&7B#`:\P8E@E0<0D@E9DX$R5Y`H\HCLY(?4P9 XMDS,9E,D65S))D72IE8Y)F2LP;=!VF4Z9F=3F(_P!C2))E&1YF)THCG/9!8`Y XMEYX)F(0ID&59@:L8;$E)&/9&;.]V`E$YEOU6$!4'&@A44%544RY#`"4E)24E XMW`H```P-2$ZAICX5```,+U1`0M)``0@5"2`E4%'P8(*'0][`R2,GS1DT=$"@ XM&),"1(P<.&2P`&%$3ADR)-/,0?-P84.$#T'(!!&$#1L04BQBG(.SS)PR<NR< XM;.G2($*%#(TFH()&)8@Y;\S0N1/&)(@P;LB\>",'!)DW8^JT*>.&3A@Z:=ZX XM`>'4))LR87ZB-,,5!)PZ8MBD&5/4(1F5="J*J8-6+0BZ7>$`A>HF#)N1;M2V XM&/.FS5@Y8](X!E'G)PBU;/*X>)C4(9,T;=+0.0FBXD4Z/.F\X?QS9)LW?\WD XM&8D5I<F_<P*G&;SZJE4T0,N(R=,7X1DY6%?/K1O9S>3*ES-OOBL'SIN?<T;" XMD?/&3AHRK.F@.7O5)NF7"2A/=(T11&2T8WRV+M,F3)JU_YDU1D:]M7?3&.NY XM<89^594!PAAO515:<PE\%=9899WD@DQ,.1@&86C4U=\:^D4&`E5R0%=6'I^9 XM<94;+*[Q'TIWJ,92:0B9-(=B`X(@FX]-\30>;G7T6&`9>,"A5V9TA.:52A#Z XMUP9/6+&(FI)I#(5C`BBJB)9^48&078)FB9&&7G2P6)<9JKGA$T^(O<@B'%7A XM5P<;55'(G7<_C0;)`5LB]=)`+[U04$$,%!302S(QD8004@0A118D5>'$$%0D XM\803+\%'QUVPS233&X2!^I1P"IYHXU5P##F>9L712<9?"G9JE$Q+%$'I%4]( XM0<04MCJTFAQMC!$&',&J(-,463CQ!!13)`&L49Z".L=&<+`0AAEFC%$6"Z32 XMP1%\"%9UT!AP[`!?@%=QZRT=ZBK%+@HJA,L1"BG$>Q"C(!!1Q!1#2)$$%)EN XMFFP"3Y1*&$_!592J=P&F-]MR#V9+VW]G'%:'&P.FM9:]O&4%'UTVO5%CJJJI XMJAZ0'K9*WJMG.>B&6&(`U:)=8<R*\8/K03?@8B[`%X2[93VHEEG_Q8:<?33; XM'*9>;E+);1D_DS'2'4TAR!9/G9T$7UQ7B7DG6EC:'*=Z#NY(=1ILLJ985U`[ XM**N/J)6Q(0A)F`'?VR#$C3-*E&V<D5/WL8JEL7F5P1O1&:U$*ALHU>P1"_`Y XM2P4(>@#U1M#4*M7A85SUEU&8:)_J<,809XC2CQ2CN[4.!R>PQ=QHC=7%%BIT XMP4/#.__X4U8^Q(YU<CHD0'O=(/3@`]UC^3@;>GA:N59J-JE$M5IDS`$?:<DO XMKW9F;2O-7NT..L5WW-LG`-_G<Y?K\[!;7S7''&))O-\<YY6_5NE(#ML8&_"Q XM0U4TDS@0B``*0Q#!W6H"E9'P#P_^VXP`*Q*&`HK@.XHYB0C@X[@[`>YH_MG? XMTL)E*K6QAG1+&U9J_B<_^)"%,NA!R7]`\(+.R.$%_X%0'=#S@CF<@0YI<@$: XM9(("(<"@!4+(@0U@`(,4<&Y?MP*!$*IPA&E!T2%$L$C**.,&H<@!?X9QBACB XM<L*U-`8M0N%95<+PLZ[\A`[PJ=G.@@"P)"3AB3@RE`(2I8!%*:4)4"J#3;!2 XM!E(QC`YUX%:A#J6`$>20#3MTT.[H\)?-H2%X"BC("-ABAJR4P45-F`(1GC"M XM_@%E+>X#`0)WT)*`J#)G:GR?S7[4M8/HT91R0&7//F-",K`R`:XL`L=PL[,P XMD9`P3\D@2E2@QX($YRQ[84O1R#>'+70A>2#80T-F`@,6$,655""+>G@2IBG9 XMQ6:IA`$(QKA#6VY3)C)@8C=;J:QPE@4-Y'21.?F6RAJHDYW+U*.H8C"#@GKS XM(>`4)SYOMD]T[O(&-5CGAP+Z3A#D``8Y."@PZZG0?(I)2`XU5PQB\,^)NM,@ XM,[D!#6:@T83>TZ,-[4HJ"4H#B;:3F16U@4Y;RM&7,A2D,MUE#/QI4XJB5";^ XMG"=">SK.GYXSJ.:*9TEO*M"9%)2E]`2!/9M:3J#&$@0S8&)13SK0G69UJPOM XMZE._NL2I&E54.,#J63OJ5'X*5:ICQ>E105"#&FATHUJEJUKM*E(<B!6@9)T) XM#6+P5Y=R59]>3:4,:'!8D^I55/%L+%/3"MFUII(&AG5K8F5"TF]N%J:1W:42 XM*TO5@O0A7ILD2VX8R4<_'D0FT"I"%48)@B$\P5\'$T(9SC!#.ISA#;*!CZCR XM9KJ=I0Y^3OF/`/6R.N2X87M2*`,B<ZFR$"'S*SNKDGHPAL<$B*H(;/C)]HQ0 XM%[AH;6Y_(6Y&4,`V.:5@>Z(BPO/6UI^;O$4J3VF*5,IKWID$80P7NE/,6-8W XMD]DLOJHAL#"G(X?M!8$,:NA,XXSU%N?Y2+#Z/)->?L+%[&V/N6BSBE/"<)CW XM>6PS;8,<?F<R!1G!@<'HR4Q_[?*&`!%XN2Y*<?FH!(+IGN?#/H4P')7RD`,G XM&$_%*=UJ7OKCF4R8DS.621;G8"PY^(8_(=R9DN<@X:Q@F<G,/=]_AIS,M;6M XMNF3),DTPK&$&'V\L5=8RE*H"Y[7ZS0QXRIC[RBQ#O3'Y"DWIL)"-XR$8Q9*- XMP^+)?Y?LD`(O2[8L:\-GD&D>%A\S(V;86,?40N@3);H,VZ."BN:0&@(Y6E:T XMRIA)XE"'-/RFO.<U,]O@<V7C(O<-R6JF`CZU,&QIBW'@(LRX%)!*%:`K7NS: XM5K?*`NVBT<M>*<!7O+2Y5W;!@7R_!"P48$D^:2+YL6(2L?5*S)/+S@27`"J: XM2I2L;4:*JK[82EX/0."$*C"!"2#@`Q_.=>,>[+O?_^X(MQ-@DNVZ05\SZ0,( XM!.F9A<<)!=]&WKYAL(.MT=O9<,A7Q5:P`H47Q-)V*;<*]DW2>*$\X\U;P;[I XMY;H6@.`$,#A!OD[>AY/#W$$K]PC'3XYOD.O[YB[0>39/+BITD=SE]W81?>?P XM<72EP.0*>,C/02!SC8"<Y""P.<YU#O6(,WTF6#N3@Z9>]9`KW.DKV$'/LS[W XM!!3==0:_N0J4OG!1;3WHTGY7V64"=Y?7/>T=IOF-0W!P?S,!ZRB_MK*S_?62 XM&UZ3G/0D*$5)RI-_Y0NPQAC&R9=L<>V\D1//RJ[W.O>Y\W&3;-,\"$(YRFG9 XM5EF5NE3!.-4YO[P!]#F+M:@"@Q56IZQ*?WMT&WDRZUK_)EG+:M:SHF7%+3T3 XM/U[Y?>@5-/JZE7[9#O$VN-=E[7I-OMZ]Q[V_`"8P@FF*]U=$B'X9].K@[ZSY XMMF8-V+['MBQ%;D[E1E_[TU'P44[J1F+8,P<IX$`CI#"-HTP@0%Q"$6\,!F^. XM$4`#5$$=AD%E<!(ATV?MTS.09C,22!;FAC8N!$&G)$$96$`(A$>+M$>*@B.X XM-06ZQ5N^!5SIEP#"15QK\7G;=P;*-1,HAAPJ1F35T0*90Q[)5VYH<UUH%F1+ XM8X$WT4OQ,T,JLB`L`X65)BI,\`9OL`:<<6.E`SUA,"<V$X)KU$9YAA.D8F9W XMYB!U<&,4LQYLX"(LYCXC*`=M&!%M`"HRTS1=$29ZN'P>]CMDT(;LU17N-41J XM*$M=X3NRE3ZJ5GRM9F>P5(C#TH97AAC;<V6KYQ"Y5FB\9F9`:'^UDG["=GW1 XM=(HZPWT_]WWWI0#B5S?5-E_F9WKHQVVB8A+$%1PVPRX<TS-S`'$RX8N`$8S3 XM!`=C$"\5A6];QW@@T$1+EW7XQH&LX0,;!P(F8`*\!($\,'/XDSE1@0+4E`(O XM\!1I0(YF((!T<'60-WS,B$W4M`782`9=,'@IASQ=9X[SF(XR<'HH-XQ5P1/[ XMMG7I^"G->'8R<7$@T'$$^44@L#P<%W8M$)$*6(T/(7FZB$`"*2IU-W<@Z5J8 X&)UNK!QH` X` Xend END_OF_FILE if test 25830 -ne `wc -c <'others/termcap.uu'`; then echo shar: \"'others/termcap.uu'\" unpacked with wrong size! fi # end of 'others/termcap.uu' fi if test -f 'src/potion.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'src/potion.c'\" else echo shar: Extracting \"'src/potion.c'\" \(30531 characters\) sed "s/^X//" >'src/potion.c' <<'END_OF_FILE' X/* SCCS Id: @(#)potion.c 3.0 88/11/11 X/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ X/* NetHack may be freely redistributed. See license for details. */ X X#include "hack.h" X X#ifdef OVLB Xstatic void NDECL(ghost_from_bottle); Xstatic boolean FDECL(neutralizes, (struct obj *,struct obj *)); X Xstatic int NEARDATA nothing, NEARDATA unkn; X#endif /* OVLB */ X X#ifdef WORM X Xextern boolean notonhead; X X#ifdef OVLB X Xboolean notonhead = FALSE; X X#endif /* OVLB */ X X#endif X X#ifdef OVLB X Xstatic const char NEARDATA beverages[] = { POTION_SYM, 0 }; X Xvoid Xmake_confused(xtime,talk) Xlong xtime; Xboolean talk; X{ X long old = HConfusion; X X if (!xtime && old) { X if (talk) { X if (Hallucination) You("feel less trippy now."); X else You("feel less confused now."); X } X flags.botl = 1; X } X if (xtime && !old) X flags.botl = 1; X HConfusion = xtime; X} X Xvoid Xmake_stunned(xtime,talk) Xlong xtime; Xboolean talk; X{ X long old = HStun; X X if (!xtime && old) { X if (talk) { X if (Hallucination) You("feel less wobbly now."); X else You("feel a bit steadier now."); X } X flags.botl = 1; X } X if (xtime && !old) { X if (talk) X You("stagger..."); X flags.botl = 1; X } X HStun = xtime; X} X Xvoid Xmake_sick(xtime, talk) Xlong xtime; Xboolean talk; X{ X long old = Sick; X X#ifdef POLYSELF X if (xtime && u.usym == S_FUNGUS) return; X#endif X if (!xtime && old) { X if (talk) pline("What a relief!"); X flags.botl = 1; X } X if (!old && xtime) { X You("feel deathly sick."); X flags.botl = 1; X } X Sick = xtime; X} X Xvoid Xmake_vomiting(xtime, talk) Xlong xtime; Xboolean talk; X{ X long old = Vomiting; X X if(!xtime && old) X if(talk) You("feel much less nauseous now."); X X Vomiting = xtime; X} X X Xvoid Xmake_blinded(xtime, talk) Xlong xtime; Xboolean talk; X{ X long old = Blinded; X X if (!xtime && old && !Blindfolded) { X if (talk) { X if (Hallucination) pline("Oh, like, wow! What a rush."); X else You("can see again."); X } X flags.botl = 1; X } X if (xtime && !old && !Blindfolded) { X if (talk) { X if (Hallucination) X pline("Bummer! Everything is dark! Help!"); X else X pline("A cloud of darkness falls upon you."); X } X seeoff(0); X flags.botl = 1; X } X Blinded = xtime; X if (!Blind) X setsee(); X} X Xvoid Xmake_hallucinated(xtime, talk) Xlong xtime; Xboolean talk; X{ X long old = Hallucination; X register struct monst *mtmp; X X if (!xtime && old ) { X if (!Blind && talk) pline("Everything looks SO boring now."); X for (mtmp=fmon; mtmp; mtmp=mtmp->nmon) X if (showmon(mtmp)) X atl(mtmp->mx, mtmp->my, (!mtmp->m_ap_type || X Protection_from_shape_changers) X ? mtmp->data->mlet : (char) mimic_appearance(mtmp)); X flags.botl = 1; X } X if (xtime && !old ) { X if (!Blind && talk) pline("Oh wow! Everything looks so cosmic!"); X flags.botl = 1; X } X Hallucination = xtime; X setsee(); X} X Xstatic void Xghost_from_bottle() X{ X struct monst *mtmp = makemon(&mons[PM_GHOST], u.ux, u.uy); X X if (!mtmp) { X pline("This bottle turns out to be empty."); X return; X } X if (Blind) { X pline("As you open the bottle, something emerges."); X return; X } X pline("As you open the bottle, an enormous %s emerges!", X Hallucination ? rndmonnam() : "ghost"); X if(flags.verbose) X You("are frightened to death, and unable to move."); X nomul(-3); X nomovemsg = "You regain your composure."; X} X Xint Xdodrink() { X register struct obj *otmp; X X if (Strangled) { X pline("If you can't breathe air, how can you drink liquid?"); X return 0; X } X#ifdef FOUNTAINS X /* Is there a fountain to drink from here? */ X if (IS_FOUNTAIN(levl[u.ux][u.uy].typ)) { X pline("Drink from the fountain? "); X if(yn() == 'y') { X (void) drinkfountain(); X return 1; X } X } X#endif X#ifdef SINKS X /* Or a kitchen sink? */ X if (IS_SINK(levl[u.ux][u.uy].typ)) { X pline("Drink from the sink? "); X if (yn() == 'y') { X (void) drinksink(); X return 1; X } X } X#endif X X otmp = getobj(beverages, "drink"); X if(!otmp) return(0); X#ifndef NO_SIGNAL X otmp->in_use = TRUE; /* you've opened the stopper */ X#endif X if(objects[otmp->otyp].oc_descr && !strcmp(objects[otmp->otyp].oc_descr, "smoky") && !rn2(13)) { X ghost_from_bottle(); X useup(otmp); X return(1); X } X if(objects[otmp->otyp].oc_descr && !strcmp(objects[otmp->otyp].oc_descr, "glowing") && !rn2(13)) { X djinni_from_bottle(otmp); X useup(otmp); X return(1); X } X return dopotion(otmp); X} X Xint Xdopotion(otmp) Xregister struct obj *otmp; X{ X int retval; X X nothing = unkn = 0; X if((retval = peffects(otmp)) >= 0) return(retval); X X if(nothing) { X unkn++; X You("have a %s feeling for a moment, then it passes.", X Hallucination ? "normal" : "peculiar"); X } X if(otmp->dknown && !objects[otmp->otyp].oc_name_known) { X if(!unkn) { X makeknown(otmp->otyp); X more_experienced(0,10); X } else if(!objects[otmp->otyp].oc_uname) X docall(otmp); X } X useup(otmp); X return(1); X} X Xint Xpeffects(otmp) X register struct obj *otmp; X{ X register int i, ii, isdone; X X switch(otmp->otyp){ X case POT_RESTORE_ABILITY: X#ifdef SPELLS X case SPE_RESTORE_ABILITY: X#endif X unkn++; X if(otmp->cursed) { X pline("Ulch! This makes you feel mediocre!"); X break; X } else { X pline("Wow! This makes you feel %s!", X (otmp->blessed) ? "great" : "good"); X i = rn2(A_MAX); /* start at a random point */ X for(isdone = ii = 0; !isdone && ii < A_MAX; ii++) { X if(ABASE(i) < AMAX(i)) { X ABASE(i) = AMAX(i); X /* only first found if not blessed */ X isdone = !(otmp->blessed); X flags.botl = 1; X } X if(++i >= A_MAX) i = 0; X } X if((ABASE(A_STR) == AMAX(A_STR)) && (u.uhs >= 3)) X losestr(1); /* kludge - mrs */ X } X break; X case POT_HALLUCINATION: X if (Hallucination) nothing++; X make_hallucinated(Hallucination + X rn1(200, 600 - 300*bcsign(otmp)), TRUE); X break; X case POT_WATER: X if(!otmp->blessed && !otmp->cursed) { X pline("This tastes like %swater.", X otmp->spe == -1 ? "impure " : ""); X lesshungry(rnd(otmp->spe == -1 ? 3 : 10)); X break; X } X unkn++; X#ifdef POLYSELF X if(is_undead(uasmon) || is_demon(uasmon) || X u.ualigntyp == U_CHAOTIC) { X if(otmp->blessed) { X pline("This burns like acid!"); X if (u.ulycn != -1) { X Your("affinity to %s disappears!", X makeplural(mons[u.ulycn].mname)); X if(uasmon == &mons[u.ulycn] && !Polymorph_control) X rehumanize(); X u.ulycn = -1; X } X losehp(d(2,6), "potion of holy water", KILLED_BY_AN); X } else if(otmp->cursed) { X You("feel quite proud of yourself."); X healup(d(2,6),0,0,0); X } X } else X#endif X if(otmp->blessed) { X You("feel full of awe."); X make_sick(0L,TRUE); X#ifdef POLYSELF X if (u.ulycn != -1) { X You("feel purified."); X if(uasmon == &mons[u.ulycn] && !Polymorph_control) X rehumanize(); X u.ulycn = -1; X } X#endif X /* make_confused(0L,TRUE); */ X } else { X if(u.ualigntyp == U_LAWFUL) { X pline("This burns like acid!"); X losehp(d(2,6), "potion of unholy water", X KILLED_BY_AN); X } else X You("feel full of dread."); X } X break; X case POT_BOOZE: X unkn++; X pline("Ooph! This tastes like %s!", X Hallucination ? "furniture polish" : "liquid fire"); X if (!otmp->blessed) make_confused(HConfusion + d(3,8),FALSE); X /* the whiskey makes us feel better */ X if(u.uhp < u.uhpmax) losehp(-1, "", 0); /* can't kill you */ X lesshungry(10 * (2 + bcsign(otmp))); X if(otmp->cursed) { X You("pass out."); X multi = -rnd(15); X nomovemsg = "You awake with a headache."; X } X break; X case POT_ENLIGHTENMENT: X if(otmp->cursed) { X unkn++; X You("have an uneasy feeling..."); X } else { X if (otmp->blessed) { X adjattrib(A_INT, 1, FALSE); X adjattrib(A_WIS, 1, FALSE); X } X You("feel self-knowledgeable..."); X more(); X enlightenment(); X pline("The feeling subsides."); X } X break; X case POT_INVISIBILITY: X#ifdef SPELLS X case SPE_INVISIBILITY: X#endif X if(Invisible || See_invisible) nothing++; X else { X newsym(u.ux,u.uy); X if(!Blind) X pline(Hallucination ? X "Far out, man! You can see right through yourself!" : X "Gee! All of a sudden, you can't see yourself."); X else X You("feel rather airy."), unkn++; X } X if (otmp->blessed && !(HInvis & INTRINSIC)) { X nothing = 0; X#ifndef MACOS X pline("Do you want the invisibility to be permanent? "); X if (yn()=='n') HInvis += rn1(15,31); X else HInvis |= INTRINSIC; X#else X if (UseMacAlertText(128, X "Do you want the invisibility to be permanent ?") X == 2) HInvis += rn1(15,31); X else HInvis |= INTRINSIC; X#endif X } else HInvis += rn1(15,31); X if(otmp->cursed) { X pline("For some reason, you feel your presence is known."); X aggravate(); X } X break; X case POT_SEE_INVISIBLE: X case POT_FRUIT_JUICE: X unkn++; X if(otmp->cursed) X pline("Yecch! This tastes %s.", X Hallucination ? "overripe" : "rotten" X ); X else pline (Hallucination ? X#ifdef TUTTI_FRUTTI X "This tastes like 10%% real %s juice all-natural beverage." : X "This tastes like %s juice.", pl_fruit); X#else X "This tastes like 10%% real fruit juice all-natural beverage." : X "This tastes like fruit juice."); X#endif X if (otmp->otyp == POT_FRUIT_JUICE) { X lesshungry(10 * (2 + bcsign(otmp))); X break; X } X if (!otmp->cursed) { X /* Tell them they can see again immediately, which X * will help them identify the potion... X */ X make_blinded(0L,TRUE); X } X if (otmp->blessed) X HSee_invisible |= INTRINSIC; X else X HSee_invisible += rn1(100,750); X break; X case POT_PARALYSIS: X if(Levitation) X You("are motionlessly suspended."); X else X Your("%s are frozen to the floor!", X makeplural(body_part(FOOT))); X nomul(-(rn1(10, 25 - 12*bcsign(otmp)))); X break; X case POT_MONSTER_DETECTION: X#ifdef SPELLS X case SPE_DETECT_MONSTERS: X#endif X if (monster_detect(otmp)) X return(1); /* nothing detected */ X break; X case POT_OBJECT_DETECTION: X#ifdef SPELLS X case SPE_DETECT_TREASURE: X#endif X if (object_detect(otmp)) X return(1); /* nothing detected */ X break; X case POT_SICKNESS: X pline("Yecch! This stuff tastes like poison."); X if (otmp->blessed) { X#ifdef TUTTI_FRUTTI X pline("(But in fact it was mildly stale %s juice.)", pl_fruit); X#else X pline("(But in fact it was mildly stale orange juice.)"); X#endif X if (pl_character[0] != 'H') X losehp(1, "mildly contaminated potion", X KILLED_BY_AN); X } else { X if(Poison_resistance) X#ifdef TUTTI_FRUTTI X pline("(But in fact it was biologically contaminated %s juice.)",pl_fruit); X#else X pline("(But in fact it was biologically contaminated orange juice.)"); X#endif X if (pl_character[0] == 'H') X pline("Fortunately, you have been immunized."); X else { X int typ = rn2(A_MAX); X poisontell(typ); X adjattrib(typ,Poison_resistance ? -1 : -rn1(4,3), TRUE); X if(!Poison_resistance) X losehp(rnd(10)+5*!!(otmp->cursed), X "contaminated potion", KILLED_BY_AN); X } X } X if(Hallucination) { X You("are shocked back to your senses!"); X make_hallucinated(0L,FALSE); X } X break; X case POT_CONFUSION: X if(!Confusion) X if (Hallucination) { X pline("What a trippy feeling!"); X unkn++; X } else X pline("Huh, What? Where am I?"); X else nothing++; X make_confused(HConfusion + rn1(7,16-8*bcsign(otmp)),FALSE); X break; X case POT_GAIN_ABILITY: X if(otmp->cursed) { X pline("Ulch! That potion tasted foul!"); X unkn++; X } else { X i = rn2(A_MAX); /* start at a random point */ X for(isdone = ii = 0; !isdone && ii < A_MAX; ii++) { X adjattrib(i, 1, FALSE); X /* only first found if not blessed */ X isdone = !(otmp->blessed); X flags.botl = 1; X if(++i >= A_MAX) i = 0; X } X } X break; X case POT_SPEED: X if(Wounded_legs && !otmp->cursed) { X heal_legs(); X unkn++; X break; X } /* and fall through */ X#ifdef SPELLS X case SPE_HASTE_SELF: X#endif X if(!(Fast & TIMEOUT)) X You("are suddenly moving much faster."); X else { X Your("%s get new energy.", X makeplural(body_part(LEG))); X unkn++; X } X Fast += rn1(10,100+60*bcsign(otmp)); X break; X case POT_BLINDNESS: X if(Blind) nothing++; X make_blinded(Blinded + rn1(200, 250-125*bcsign(otmp)), TRUE); X break; X case POT_GAIN_LEVEL: X if (otmp->cursed) { X unkn++; X /* they went up a level */ X#ifdef ENDGAME X if((dlevel > 1 || u.uhave_amulet) && X dlevel <= MAXLEVEL) { X You("rise up, through the ceiling!"); X goto_level((dlevel==1) ? ENDLEVEL X : dlevel-1, FALSE, FALSE); X } else You("have an uneasy feeling."); X#else X if(dlevel > 1 && dlevel <= MAXLEVEL) { X You("rise up, through the ceiling!"); X#ifdef MACOS X segments |= SEG_POTION; X#endif X goto_level(dlevel-1, FALSE, FALSE); X } else You("have an uneasy feeling."); X#endif X break; X } X pluslvl(); X if (otmp->blessed) X /* blessed potions place you at a random spot in the X * middle of the new level instead of the low point X */ X u.uexp = rndexp(); X break; X case POT_HEALING: X You("begin to feel better."); X healup(d(5,2) + 5 * bcsign(otmp), X 1, !!(otmp->blessed), !(otmp->cursed)); X break; X case POT_EXTRA_HEALING: X You("feel much better."); X healup(d(5,4) + 5 * bcsign(otmp), X 2+3*!!(otmp->blessed), !(otmp->cursed), 1); X make_hallucinated(0L,TRUE); X break; X case POT_LEVITATION: X#ifdef SPELLS X case SPE_LEVITATION: X#endif X if(!Levitation) { X float_up(); X if (otmp->cursed) { X#ifdef STRONGHOLD X if((u.ux != xupstair || u.uy != yupstair) && X (!xupladder || u.ux != xupladder || u.uy != yupladder)) { X#else X if(u.ux != xupstair || u.uy != yupstair) { X#endif /* STRONGHOLD /**/ X You("hit your %s on the ceiling.", X body_part(HEAD)); X losehp(uarmh ? 1 : rnd(10), X "colliding with the ceiling", X KILLED_BY); X } else (void) doup(); X } X } else X nothing++; X if (otmp->blessed) { X char buf[BUFSZ]; X int lmoves = 0; X X makeknown(POT_LEVITATION); X pline("How many moves do you wish to levitate for? [1-300] "); X do { X getlin(buf); X } while (buf[0]=='\033' || !buf[0] || X (lmoves = atoi(buf)) < 1 || lmoves > 300); X HLevitation += lmoves; X } else HLevitation += rnd(150); X u.uprops[LEVITATION].p_tofn = float_down; X break; X#ifdef SPELLS X case POT_GAIN_ENERGY: /* M. Stephenson */ X { register int num; X if(otmp->cursed) X You("feel lackluster."); X else X pline("Magical energies course through your body."); X num = rnd(5) + 5 * otmp->blessed + 1; X u.uenmax += (otmp->cursed) ? -num : num; X u.uen += (otmp->cursed) ? -num : num; X if(u.uenmax <= 0) u.uen = u.uenmax = 0; X flags.botl = 1; X } X break; X#endif X default: X impossible("What a funny potion! (%u)", otmp->otyp); X return(0); X } X return(-1); X} X Xvoid Xhealup(nhp, nxtra, curesick, cureblind) X int nhp, nxtra; X register boolean curesick, cureblind; X{ X#ifdef POLYSELF X if (u.mtimedone && nhp) { X u.mh += nhp; X if (u.mh > u.mhmax) u.mh = (u.mhmax += nxtra); X } X#endif X if(nhp) { X u.uhp += nhp; X if(u.uhp > u.uhpmax) u.uhp = (u.uhpmax += nxtra); X } X if(cureblind) make_blinded(0L,TRUE); X if(curesick) make_sick(0L,TRUE); X flags.botl = 1; X return; X} X Xvoid Xstrange_feeling(obj,txt) Xregister struct obj *obj; Xregister const char *txt; X{ X if(flags.beginner) X You("have a %s feeling for a moment, then it passes.", X Hallucination ? "normal" : "strange"); X else X pline(txt); X X if(!obj) /* e.g., crystal ball finds no traps */ X return; X X if(obj->dknown && !objects[obj->otyp].oc_name_known && X !objects[obj->otyp].oc_uname) X docall(obj); X useup(obj); X} X Xconst char *bottlenames[] = { X "bottle", "phial", "flagon", "carafe", "flask", "jar", "vial" X}; X Xvoid Xpotionhit(mon, obj) Xregister struct monst *mon; Xregister struct obj *obj; X{ X register const char *botlnam = bottlenames[rn2(SIZE(bottlenames))]; X boolean uclose, isyou = (mon == &youmonst); X X if(isyou) { X uclose = TRUE; X pline("The %s crashes on your %s and breaks into shivers.", X botlnam, body_part(HEAD)); X losehp(rnd(2), "thrown potion", KILLED_BY_AN); X } else { X uclose = (dist(mon->mx,mon->my) < 3); X if(Blind) pline("Crash!"); X else pline("The %s crashes on %s%s and breaks into shivers.", X botlnam, mon_nam(mon), (haseyes(mon->data) && X mon->data != &mons[PM_FLOATING_EYE]) ? X#ifdef WORM X (notonhead ? "'s body" : "'s head") X#else X "'s head" X#endif X : ""); X if(rn2(5) && mon->mhp > 1) X mon->mhp--; X } X#ifdef WORM X notonhead = FALSE; X#endif X pline("The %s evaporates.", xname(obj)); X X if(!isyou) switch (obj->otyp) { X X case POT_RESTORE_ABILITY: X case POT_GAIN_ABILITY: X case POT_HEALING: X case POT_EXTRA_HEALING: X if(mon->mhp < mon->mhpmax) { X mon->mhp = mon->mhpmax; X if(!Blind) X pline("%s looks sound and hale again.", Monnam(mon)); X } X break; X case POT_SICKNESS: X if((mon->mhpmax > 3) && !resist(mon, POTION_SYM, 0, NOTELL)) X mon->mhpmax /= 2; X if((mon->mhp > 2) && !resist(mon, POTION_SYM, 0, NOTELL)) X mon->mhp /= 2; X if(!Blind) X pline("%s looks rather ill.", Monnam(mon)); X break; X case POT_CONFUSION: X case POT_BOOZE: X if(!resist(mon, POTION_SYM, 0, NOTELL)) mon->mconf = 1; X break; X case POT_INVISIBILITY: X unpmon(mon); X mon->minvis = 1; X pmon(mon); X break; X case POT_PARALYSIS: X if (mon->mcanmove) { X mon->mcanmove = 0; X /* really should be rnd(5) for consistency with players X * breathing potions, but... X */ X mon->mfrozen = rnd(25); X } X break; X case POT_SPEED: X if (mon->mspeed == MSLOW) mon->mspeed = 0; X else mon->mspeed = MFAST; X break; X case POT_BLINDNESS: X { X register int btmp = 64 + rn2(32) + X rn2(32) * !resist(mon, POTION_SYM, 0, NOTELL); X mon->mblinded |= btmp; X mon->mcansee = 0; X } X break; X case POT_WATER: X if (is_undead(mon->data) || is_demon(mon->data)) { X if (obj->blessed) { X kludge("%s shrieks in pain!", Monnam(mon)); X mon->mhp -= d(2,6); X if (mon->mhp <1) killed(mon); X } else if (obj->cursed) { X if(!Blind) X pline("%s looks healthier.", Monnam(mon)); X mon->mhp += d(2,6); X if (mon->mhp > mon->mhpmax) X mon->mhp = mon->mhpmax; X } X } X /* TO DO: Gremlins multiply when doused with water */ X break; X/* X case POT_GAIN_LEVEL: X case POT_LEVITATION: X case POT_FRUIT_JUICE: X case POT_MONSTER_DETECTION: X case POT_OBJECT_DETECTION: X break; X*/ X } X if(uclose && rn2(5)) X potionbreathe(obj); X obfree(obj, (struct obj *)0); X} X Xvoid Xpotionbreathe(obj) Xregister struct obj *obj; X{ X register int i, ii, isdone; X X switch(obj->otyp) { X case POT_RESTORE_ABILITY: X case POT_GAIN_ABILITY: X if(obj->cursed) { X pline("Ulch! That potion smells terrible!"); X break; X } else { X i = rn2(A_MAX); /* start at a random point */ X for(isdone = ii = 0; !isdone && ii < A_MAX; ii++) { X if(ABASE(i) < AMAX(i)) { X ABASE(i)++; X /* only first found if not blessed */ X isdone = !(obj->blessed); X flags.botl = 1; X } X if(++i >= A_MAX) i = 0; X } X } X break; X case POT_HEALING: X case POT_EXTRA_HEALING: X if(u.uhp < u.uhpmax) u.uhp++, flags.botl = 1; X break; X case POT_SICKNESS: X if(u.uhp <= 5) u.uhp = 1; else u.uhp -= 5; X flags.botl = 1; X break; X case POT_HALLUCINATION: X You("have a vision for a moment."); X break; X case POT_CONFUSION: X case POT_BOOZE: X if(!Confusion) X You("feel somewhat dizzy."); X make_confused(HConfusion + rnd(5),FALSE); X break; X case POT_INVISIBILITY: X if (!See_invisible && !Invis) X pline("For an instant you could see through yourself!"); X break; X case POT_PARALYSIS: X pline("Something seems to be holding you."); X nomul(-rnd(5)); X break; X case POT_SPEED: X Fast += rnd(5); X Your("knees seem more flexible now."); X break; X case POT_BLINDNESS: X if(!Blind) pline("It suddenly gets dark."); X make_blinded(Blinded + rnd(5),FALSE); X seeoff(0); X break; X/* X case POT_GAIN_LEVEL: X case POT_LEVITATION: X case POT_FRUIT_JUICE: X case POT_MONSTER_DETECTION: X case POT_OBJECT_DETECTION: X break; X*/ X } X /* note: no obfree() */ X} X Xstatic boolean Xneutralizes(o1, o2) Xregister struct obj *o1, *o2; X{ X switch (o1->otyp) { X case POT_SICKNESS: X case POT_HALLUCINATION: X case POT_BLINDNESS: X case POT_CONFUSION: X if (o2->otyp == POT_HEALING || X o2->otyp == POT_EXTRA_HEALING) X return TRUE; X case POT_HEALING: X case POT_EXTRA_HEALING: X case UNICORN_HORN: X if (o2->otyp == POT_SICKNESS || X o2->otyp == POT_HALLUCINATION || X o2->otyp == POT_BLINDNESS || X o2->otyp == POT_CONFUSION) X return TRUE; X } X X return FALSE; X} X Xboolean Xget_wet(obj) Xregister struct obj *obj; X/* returns TRUE if something happened (potion should be used up) */ X{ X switch (obj->olet) { X case WEAPON_SYM: X if (!obj->rustfree && X objects[obj->otyp].oc_material == METAL && X obj->spe > -6 && !rn2(10)) { X Your("%s somewhat.", aobjnam(obj,"rust")); X obj->spe--; X return TRUE; X } else break; X case POTION_SYM: X if (obj->otyp == POT_WATER) return FALSE; X Your("%s.", aobjnam(obj,"dilute")); X if (obj->spe == -1) { X obj->spe = 0; X obj->blessed = obj->cursed = 0; X obj->otyp = POT_WATER; X } else obj->spe--; X return TRUE; X case SCROLL_SYM: X if (obj->otyp != SCR_BLANK_PAPER X#ifdef MAIL X && obj->otyp != SCR_MAIL X#endif X ) { X if (!Blind) { X if (obj->quan == 1) X pline("The scroll fades."); X else pline("The scrolls fade."); X } X obj->otyp = SCR_BLANK_PAPER; X return TRUE; X } X } X Your("%s wet.", aobjnam(obj,"get")); X return FALSE; X} X Xint Xdodip() X{ X register struct obj *potion, *obj; X const char *tmp; X uchar here; X X if(!(obj = getobj("#", "dip"))) X return(0); X X here = levl[u.ux][u.uy].typ; X#ifdef FOUNTAINS X /* Is there a fountain to dip into here? */ X if (IS_FOUNTAIN(here)) { X pline("Dip it into the fountain? "); X if(yn() == 'y') { X dipfountain(obj); X return(1); X } X } X#endif X if (is_pool(u.ux,u.uy)) { X pline("Dip it into the %s? ", X here == POOL ? "pool" : "moat"); X if(yn() == 'y') { X (void) get_wet(obj); X return(1); X } X } X X if(!(potion = getobj(beverages, "dip into"))) X return(0); X if (potion==obj && potion->quan==1) { X pline("That is a potion bottle, not a Klein bottle!"); X return 0; X } X if(potion->otyp == POT_WATER) { X if (potion->blessed) { X if (obj->cursed) { X if (!Blind) X Your("%s %s.", X aobjnam(obj, "softly glow"), X Hallucination ? hcolor() : amber); X obj->cursed=0; X obj->bknown=1; X poof: X if(!(objects[potion->otyp].oc_name_known) && X !(objects[potion->otyp].oc_uname)) X docall(potion); X useup(potion); X return(1); X } else if(!obj->blessed) { X if (!Blind) { X tmp = Hallucination ? hcolor() : light_blue; X Your("%s with a%s %s aura.", X aobjnam(obj, "softly glow"), X index(vowels, *tmp) ? "n" : "", tmp); X } X obj->blessed=1; X obj->bknown=1; X goto poof; X } X } else if (potion->cursed) { X if (obj->blessed) { X if (!Blind) X Your("%s %s.", aobjnam(obj, "glow"), X Hallucination ? hcolor() : (const char *)"brown"); X obj->blessed=0; X obj->bknown=1; X goto poof; X } else if(!obj->cursed) { X if (!Blind) { X tmp = Hallucination ? hcolor() : black; X Your("%s with a%s %s aura.", X aobjnam(obj, "glow"), X index(vowels, *tmp) ? "n" : "", tmp); X } X obj->cursed=1; X obj->bknown=1; X goto poof; X } X } else X if (get_wet(obj)) X goto poof; X } X else if(obj->olet == POTION_SYM && obj->otyp != potion->otyp) { X /* Mixing potions is dangerous... */ X pline("The potions mix..."); X if (obj->cursed || !rn2(10)) { X pline("BOOM! They explode!"); X u.uhp -= rnd(10); X flags.botl = 1; X potionbreathe(obj); X useup(obj); X useup(potion); X return(1); X } X X obj->blessed = obj->cursed = obj->bknown = 0; X if (Blind) obj->dknown = 0; X X switch (neutralizes(obj, potion) || X obj->spe == -1 /* diluted */ ? 1 : rnd(8)) { X case 1: X obj->otyp = POT_WATER; X obj->blessed = obj->cursed = 0; X break; X case 2: X case 3: X obj->otyp = POT_SICKNESS; X break; X case 4: X { X struct obj *otmp; X otmp = mkobj(POTION_SYM,FALSE); X obj->otyp = otmp->otyp; X obfree(otmp, (struct obj *)0); X } X break; X default: X if (!Blind) X pline("The mixture glows brightly and evaporates."); X useup(obj); X useup(potion); X return(1); X } X X if (obj->otyp == POT_WATER) { X obj->spe = 0; /* in case it was diluted before */ X pline("The mixture bubbles violently%s.", X Blind ? "" : ", then clears"); X } else { X obj->spe--; /* diluted */ X if (!Blind) { X pline("The mixture looks %s.", objects[obj->otyp].oc_descr); X obj->dknown = 1; X } X } X X useup(potion); X return(1); X } X X if(obj->olet == WEAPON_SYM && obj->otyp <= SHURIKEN) { X if(potion->otyp == POT_SICKNESS && !obj->opoisoned) { X char buf[BUFSZ]; X Strcpy(buf, xname(potion)); X pline("The %s form%s a coating on the %s.", X buf, potion->quan==1 ? "s" : "", xname(obj)); X obj->opoisoned = 1; X goto poof; X } else if(obj->opoisoned && X (potion->otyp == POT_HEALING || X potion->otyp == POT_EXTRA_HEALING)) { X pline("A coating wears off the %s.", xname(obj)); X obj->opoisoned = 0; X goto poof; X } X } X X if(obj->otyp == UNICORN_HORN && neutralizes(obj, potion)) { X pline("The potion clears."); X potion->otyp = POT_WATER; X potion->blessed = 0; X potion->cursed = 0; X potion->spe = 0; X return(1); X } X X pline("Interesting..."); X return(1); X} X X Xvoid Xdjinni_from_bottle(obj) Xregister struct obj *obj; X{ X register struct monst *mtmp; X X if(!(mtmp = makemon(&mons[PM_DJINNI], u.ux, u.uy))){ X pline("It turns out to be empty."); X return; X } X X if (!Blind) { X pline("In a cloud of smoke, %s emerges!", defmonnam(mtmp)); X pline("%s speaks.", Monnam(mtmp)); X } else { X You("smell acrid fumes."); X pline("Something speaks."); X } X X switch (obj->blessed ? 0 : obj->cursed ? 4 : rn2(5)) { X case 0 : verbalize("I am in your debt. I will grant one wish!"); X makewish(); X mongone(mtmp); X break; X case 1 : verbalize("Thank you for freeing me!"); X (void) tamedog(mtmp, (struct obj *)0); X break; X case 2 : verbalize("You freed me!"); X mtmp->mpeaceful = 1; X break; X case 3 : verbalize("It is about time!"); X pline("The %s vanishes.", X Hallucination ? rndmonnam() : "djinni"); X mongone(mtmp); X break; X default: verbalize("You disturbed me, fool!"); X break; X } X} X X/* monster_detect is also used in the crystal ball routine */ X/* returns 1 if nothing was detected */ X/* returns 0 if something was detected */ Xint Xmonster_detect(otmp) Xregister struct obj *otmp; X{ X register struct monst *mtmp; X X if(!fmon) { X if (otmp) X strange_feeling(otmp, Hallucination ? X "You get the heebie jeebies." : X "You feel threatened."); X return(1); X } else { X int woken = FALSE; X X cls(); X for(mtmp = fmon; mtmp; mtmp = mtmp->nmon) { X if(mtmp->mx > 0) X at(mtmp->mx, mtmp->my, X (uchar)(Hallucination ? rndmonsym() : mtmp->data->mlet), X AT_MON); X if (otmp && otmp->cursed && (mtmp->msleep || !mtmp->mcanmove)) { X mtmp->msleep = mtmp->mfrozen = 0; X mtmp->mcanmove = 1; X woken = TRUE; X } X } X prme(); X You("sense the presence of monsters."); X if (woken) X pline("Monsters sense the presence of you."); X more(); X docrt(); X } X return(0); X} X X#endif /* OVLB */ X#ifdef OVL0 X X/* object_detect is also used in the crystal ball routine */ X/* returns 1 if nothing was detected */ X/* returns 0 if something was detected */ Xint Xobject_detect(otmp) Xregister struct obj *otmp; X{ X register struct obj *objs; X register struct monst *mtmp; X boolean mfound=FALSE, mofound=FALSE; X X if(!fobj) { X for(mtmp = fmon; mtmp; mtmp = mtmp->nmon) { X /* mofound can be 1 of 2 completely different things, X * either of which stops the "strange feeling"... X */ X if (mtmp->minvent || (mtmp->mimic && otmp->cursed)) { X mofound = TRUE; X break; X } X } X if (!mofound) { X if (otmp) X strange_feeling(otmp, "You feel a pull downward."); X return(1); X } X } X if (mofound) goto outobjmap; X for(objs = fobj; objs; objs = objs->nobj) X if(objs->ox != u.ux || objs->oy != u.uy) X goto outobjmap; X You("sense the presence of objects nearby."); X return(0); Xoutobjmap: X cls(); X for(objs = fobj; objs; objs = objs->nobj) Xat(objs->ox, objs->oy, (uchar)(Hallucination ? rndobjsym() : objs->olet), AT_OBJ); X /* monster possessions added by GAN 12/16/86 */ X for(mtmp = fmon ; mtmp ; mtmp = mtmp->nmon) X if(mtmp->minvent) X for(objs = mtmp->minvent;objs;objs = objs->nobj) X at(mtmp->mx, mtmp->my, (uchar)objs->olet, AT_OBJ); X if (otmp && otmp->cursed) { X for(mtmp = fmon; mtmp; mtmp = mtmp->nmon) { X if (mtmp->mimic) { X mnexto(mtmp); X mfound = TRUE; X } X } X } X prme(); X You("sense the presence of objects."); X if (mfound) pline("Objects sense the presence of you."); X more(); X docrt(); X return(0); X} X X#endif /* OVL0 */ X#ifdef OVLB X X/* the detections are pulled out so they can */ X/* also be used in the crystal ball routine */ X/* returns 1 if nothing was detected */ X/* returns 0 if something was detected */ Xint Xtrap_detect(sobj) Xregister struct obj *sobj; X/* sobj is null if crystal ball, *scroll if gold detection scroll */ X{ X register struct trap *ttmp; X register struct obj *obj; X register int door; X boolean found = FALSE; X coord cc; X X for(ttmp = ftrap; ttmp; ttmp = ttmp->ntrap) { X if(ttmp->tx != u.ux || ttmp->ty != u.uy) X goto outtrapmap; X else found = TRUE; X } X for(obj = fobj; obj; obj = obj->nobj) { X if ((obj->otyp==LARGE_BOX || obj->otyp==CHEST) && obj->otrapped) X if (obj->ox != u.ux || obj->oy != u.uy) X goto outtrapmap; X else found = TRUE; X } X for(door=0; door<=doorindex; door++) { X cc = doors[door]; X if (levl[cc.x][cc.y].doormask & D_TRAPPED) X if (cc.x != u.ux || cc.x != u.uy) X goto outtrapmap; X else found = TRUE; X } X if(!found) { X char buf[42]; X Sprintf(buf, "Your %s stop itching.", X makeplural(body_part(TOE))); X strange_feeling(sobj,buf); X return(1); X } X /* traps exist, but only under me - no separate display required */ X Your("%s itch.", makeplural(body_part(TOE))); X return(0); Xouttrapmap: X cls(); X#define SYMBOL (uchar)(Hallucination ? rndobjsym() : \ X (sobj && sobj->cursed) ? GOLD_SYM : TRAP_SYM) X#define AT Hallucination || (sobj && sobj->cursed) ? AT_OBJ : AT_MAP X for(ttmp = ftrap; ttmp; ttmp = ttmp->ntrap) X at(ttmp->tx, ttmp->ty, SYMBOL, AT); X for(obj = fobj; obj; obj = obj->nobj) { X if ((obj->otyp==LARGE_BOX || obj->otyp==CHEST) && obj->otrapped) X at(obj->ox, obj->oy, SYMBOL, AT); X } X for(door=0; door<=doorindex; door++) { X cc = doors[door]; X if (levl[cc.x][cc.y].doormask & D_TRAPPED) X at(cc.x, cc.y, SYMBOL, AT); X } X#undef SYMBOL X#undef AT X prme(); X if (sobj && sobj->cursed) X You("feel very greedy."); X else X You("feel entrapped."); X more(); X docrt(); X return(0); X} X X#endif /* OVLB */ END_OF_FILE if test 30531 -ne `wc -c <'src/potion.c'`; then echo shar: \"'src/potion.c'\" unpacked with wrong size! fi # end of 'src/potion.c' fi echo shar: End of archive 26 \(of 56\). cp /dev/null ark26isdone MISSING="" for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 ; do if test ! -f ark${I}isdone ; then MISSING="${MISSING} ${I}" fi done if test "${MISSING}" = "" ; then echo You have unpacked all 56 archives. rm -f ark[1-9]isdone ark[1-9][0-9]isdone else echo You still need to unpack the following archives: echo " " ${MISSING} fi ## End of shell archive. exit 0