[comp.sources.games] v03i005: NetHack2.2 - display oriented dungeons and dragons, Part05/20

games-request@tekred.TEK.COM (12/02/87)

Submitted by: mike@genat.UUCP (Mike Stephenson)
Comp.sources.games: Volume 3, Issue 5
Archive-name: nethack2.2/Part05



#! /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 5 (of 20)."
# Contents:  permonst.h termcap.uu zap.c
# Wrapped by billr@tekred on Tue Dec  1 16:24:52 1987
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f permonst.h -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"permonst.h\"
else
echo shar: Extracting \"permonst.h\" \(1373 characters\)
sed "s/^X//" >permonst.h <<'END_OF_permonst.h'
X/*	SCCS Id: @(#)permonst.h	2.2	87/11/29
X/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
X
Xstruct permonst {
X	char *mname,mlet;
X	schar mlevel,mmove,ac,mr,damn,damd;
X	unsigned pxlth;
X};
X
Xextern struct permonst mons[];
X#define PM_GNOME	&mons[1]
X#define PM_HOBGOBLIN	&mons[2]
X#ifndef KOPS
X#define PM_KOBOLD	&mons[4]
X#endif
X#define PM_ACID_BLOB	&mons[7]
X#ifdef ROCKMOLE
X#define PM_ORC		&mons[10]
X#define	PM_ZOMBIE	&mons[12]
X#else
X#define PM_ORC		&mons[11]
X#define	PM_ZOMBIE	&mons[13]
X#endif
X#define	PM_PIERCER	&mons[17]
X#define PM_CENTAUR	&mons[22]
X#define	PM_KILLER_BEE	&mons[26]
X#ifdef SPIDERS
X#define PM_SPIDER	&mons[31]
X#endif
X#define	PM_WRAITH	&mons[33]
X#define	PM_MIMIC	&mons[37]
X#define PM_TROLL	&mons[38]
X#define	PM_VAMPIRE	&mons[43]
X#define PM_XORN		&mons[44]
X#define	PM_CHAMELEON	&mons[47]
X#define PM_DRAGON	&mons[48]
X#define PM_ETTIN	&mons[49]
X/* The ones below changed to include giants. */
X#define	PM_DEMON	&mons[55]
X
X#ifdef SAC
X#define PM_SOLDIER	&mons[56]
X#define	PM_MINOTAUR	&mons[57]	/* last in mons array */
X#define	PM_SHK		&mons[58]	/* very last */
X#else
X#define	PM_MINOTAUR	&mons[56]
X#define	PM_SHK		&mons[57]
X#endif
X
X#define	PM_GHOST	&pm_ghost
X#define	PM_EEL		&pm_eel
X#define	PM_WIZARD	&pm_wizard
X#ifdef RPH
X#define PM_MEDUSA	&pm_medusa
X#endif
X#ifdef SAC
X#define	CMNUM		57		/* number of common monsters */
X#else
X#define	CMNUM		56
X#endif
END_OF_permonst.h
if test 1373 -ne `wc -c <permonst.h`; then
    echo shar: \"permonst.h\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f termcap.uu -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"termcap.uu\"
else
echo shar: Extracting \"termcap.uu\" \(25830 characters\)
sed "s/^X//" >termcap.uu <<'END_OF_termcap.uu'
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![9D#`P`Q'9CLJV!>](
XM!_$XCQD)`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_termcap.uu
if test 25830 -ne `wc -c <termcap.uu`; then
    echo shar: \"termcap.uu\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f zap.c -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"zap.c\"
else
echo shar: Extracting \"zap.c\" \(24867 characters\)
sed "s/^X//" >zap.c <<'END_OF_zap.c'
X/*	SCCS Id: @(#)zap.c	2.1	87/11/10
X/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
X
X#include "hack.h"
X
Xextern struct obj *mkobj_at();
Xextern struct monst *makemon(), *mkmon_at(), youmonst;
Xstruct monst *bhit();
Xchar *exclam();
X#ifdef KAA
Xextern char *xname();
X#endif
X
Xchar *fl[]= {
X	"magic missile",
X	"bolt of fire",
X	"sleep ray",
X	"bolt of cold",
X	"death ray",
X	"magic missile",	/* Spell equivalents of above wands */
X	"fireball",
X	"sleep ray",
X	"cone of cold",
X	"finger of death"
X};
X
X/* Routines for IMMEDIATE wands and spells. */
X/* bhitm: monster mtmp was hit by the effect of wand or spell otmp */
Xbhitm(mtmp, otmp)
Xregister struct monst *mtmp;
Xregister struct obj *otmp;
X{
X	wakeup(mtmp);
X	switch(otmp->otyp) {
X	case WAN_STRIKING:
X#ifdef SPELLS
X	case SPE_FORCE_BOLT:
X#endif
X		if(u.uswallow || rnd(20) < 10+mtmp->data->ac) {
X			register int tmp = d(2,12);
X			hit((otmp->otyp == WAN_STRIKING) ? "wand" : "spell", mtmp, exclam(tmp));
X			resist(mtmp, otmp->olet, tmp, TELL);
X		} else miss((otmp->otyp == WAN_STRIKING) ? "wand" : "spell", mtmp);
X		break;
X	case WAN_SLOW_MONSTER:
X#ifdef SPELLS
X	case SPE_SLOW_MONSTER:
X#endif
X		if(! resist(mtmp, otmp->olet, 0, NOTELL))
X			mtmp->mspeed = MSLOW;
X		break;
X	case WAN_SPEED_MONSTER:
X		if (!resist(mtmp, otmp->olet, 0, NOTELL))
X			mtmp->mspeed = MFAST;
X		break;
X	case WAN_UNDEAD_TURNING:
X#ifdef SPELLS
X	case SPE_TURN_UNDEAD:
X#endif
X		if(index(UNDEAD,mtmp->data->mlet)) {
X
X			if(!resist(mtmp, otmp->olet, rnd(8), NOTELL))
X				mtmp->mflee = 1;
X		}
X		break;
X	case WAN_POLYMORPH:
X#ifdef SPELLS
X	case SPE_POLYMORPH:
X#endif
X		if(!resist(mtmp, otmp->olet, 0, NOTELL))
X		    if( newcham(mtmp,&mons[rn2(CMNUM)]) )
X			if (!Hallucination)
X			    objects[otmp->otyp].oc_name_known = 1;
X		break;
X	case WAN_CANCELLATION:
X#ifdef SPELLS
X	case SPE_CANCELLATION:
X#endif
X		if(!resist(mtmp, otmp->olet, 0, NOTELL))
X			mtmp->mcan = 1;
X		break;
X	case WAN_TELEPORTATION:
X#ifdef SPELLS
X	case SPE_TELEPORT_AWAY:
X#endif
X		rloc(mtmp);
X		break;
X	case WAN_MAKE_INVISIBLE:
X		mtmp->minvis = 1;
X		break;
X	case WAN_NOTHING:
X		break;
X	case WAN_PROBING:
X#ifdef PROBING
X		mstatusline(mtmp);
X#else
X		pline("Nothing Happens.");
X#endif
X		break;
X	default:
X		impossible("What an interesting effect (%u)", otmp->otyp);
X	}
X}
X
Xbhito(obj, otmp)	/* object obj was hit by the effect of wand otmp */
Xregister struct obj *obj, *otmp;	/* returns TRUE if sth was done */
X{
X	register int res = TRUE;
X#ifdef DGKMOD
X	struct obj *otmp2;
X#endif
X
X	if(obj == uball || obj == uchain)
X		res = FALSE;
X	else
X	switch(otmp->otyp) {
X	case WAN_POLYMORPH:
X#ifdef SPELLS
X	case SPE_POLYMORPH:
X#endif
X		/* preserve symbol and quantity, but turn rocks into gems */
X#ifdef DGKMOD
X		otmp2 = mkobj_at((obj->otyp == ROCK
X			|| obj->otyp == ENORMOUS_ROCK) ? GEM_SYM : obj->olet,
X			obj->ox, obj->oy);
X		otmp2->quan = obj->quan;
X		/* keep special fields (including charges on wands) */
X		/* The DGK modification doesn't allow polymorphing a weapon
X		   with enchantments into another one, and doesn't allow 
X		   polymorphed rings to have plusses.  KAA*/
X		if (index("/)[", otmp2->olet)) otmp2->spe = obj->spe;
X	        /* Amulets gets cheap   stewr 870807 */
X		if (obj->otyp == AMULET_OF_YENDOR) otmp2->spe = obj->spe;
X		/* Wands of wishing max 3 stewr 870808 */
X		if ((otmp2->otyp == WAN_WISHING) 
X		    && (obj->spe > 3)) otmp2->spe = 3;
X		otmp2->cursed = otmp->cursed;
X		/* update the weight */
X		otmp2->owt = weight(otmp2);
X#else
X		mkobj_at((obj->otyp == ROCK || obj->otyp == ENORMOUS_ROCK)
X			? GEM_SYM : obj->olet,
X			obj->ox, obj->oy) -> quan = obj->quan;
X#endif
X		delobj(obj);
X		break;
X	case WAN_STRIKING:
X#ifdef SPELLS
X	case SPE_FORCE_BOLT:
X#endif
X		if(obj->otyp == ENORMOUS_ROCK)
X			fracture_rock(obj);
X		else
X			res = FALSE;
X		break;
X	case WAN_CANCELLATION:
X#ifdef SPELLS
X	case SPE_CANCELLATION:
X#endif
X		if(obj->spe && obj->olet != AMULET_SYM) {
X			obj->known = 0;
X			obj->spe = (obj->olet == WAND_SYM) ? -1 : 0;
X		}
X		break;
X	case WAN_TELEPORTATION:
X#ifdef SPELLS
X	case SPE_TELEPORT_AWAY:
X#endif
X		rloco(obj);
X		break;
X	case WAN_MAKE_INVISIBLE:
X		obj->oinvis = 1;
X		break;
X	case WAN_UNDEAD_TURNING:
X#ifdef SPELLS
X	case SPE_TURN_UNDEAD:
X#endif
X		res = revive(obj);
X		break;
X	case WAN_SLOW_MONSTER:		/* no effect on objects */
X#ifdef SPELLS
X	case SPE_SLOW_MONSTER:
X#endif
X	case WAN_SPEED_MONSTER:
X	case WAN_NOTHING:
X	case WAN_PROBING:
X		res = FALSE;
X		break;
X	default:
X		impossible("What an interesting effect (%u)", otmp->otyp);
X	}
X	return(res);
X}
X
X/*
X * zappable - returns 1 if zap is available, 0 otherwise.
X *	      it removes a charge from the wand if zappable.
X * added by GAN 11/03/86
X */
Xint
Xzappable(wand)
Xregister struct obj *wand;
X{
X	if(wand->spe < 0 || (wand->spe ==0 && rn2(121)))
X		return(0);
X	else  {
X		if(wand->spe == 0)
X			pline("You wrest one more spell from the worn-out wand.");
X		wand->spe--;
X		return(1);
X	}
X}
X
X/*
X * zapnodir - zaps an NODIR wand.
X * added by GAN 11/03/86
X */
Xzapnodir(wand)
Xregister struct obj *wand;
X{
X	switch(wand->otyp){
X		case WAN_LIGHT:
X			litroom(TRUE);
X			break;
X		case WAN_SECRET_DOOR_DETECTION:
X			if(!findit()) return;
X			break;
X		case WAN_CREATE_MONSTER:
X			{ register int cnt = 1;
X			if(!rn2(23)) cnt += rn2(7) + 1;
X			while(cnt--)
X			    (void) makemon((struct permonst *) 0, u.ux, u.uy);
X			}
X			break;
X		case WAN_WISHING:
X			  
X			if(u.uluck + rn2(5) < 0) {
X				pline("Unfortunately, nothing happens.");
X				break;
X			}
X			makewish();
X			break;
X	}
X	if(!objects[wand->otyp].oc_name_known) {
X			objects[wand->otyp].oc_name_known = 1;
X			more_experienced(0,10);
X	}
X}
X
Xdozap()
X{
X	register struct obj *obj;
X	int	damage;
X
X	obj = getobj("/", "zap");
X	if(!obj) return(0);
X	
X	/* zappable addition done by GAN 11/03/86 */
X	if(!zappable(obj))  {
X		pline("Nothing Happens.");
X		return(1);
X	}
X	if(!(objects[obj->otyp].bits & NODIR) && !getdir(1)) {
X		pline("The %s glows and fades.",xname(obj));
X		return(1);	/* make him pay for knowing !NODIR */
X	}
X#ifdef KAA
X     if(!u.dx && !u.dy && !u.dz && !(objects[obj->otyp].bits & NODIR)) {
X
X		if((damage = zapyourself(obj)))
X			losehp(damage,"self-inflicted injury");
X		return(1);
X     }
X#endif
X	weffects(obj);
X#ifdef HARD
X	if (obj->spe < 0) {
X	    pline ("The %s glows violently, then turns to dust.", xname(obj));
X	    useup(obj);
X	}
X#endif
X	return(1);
X}
X
X#ifdef KAA
X#define	makeknown(x)	objects[x].oc_name_known = 1
X
Xzapyourself(obj)
X	register struct obj	*obj;
X{
Xstruct obj	*otmp;
Xint	damage = 0;
X
X	switch(obj->otyp) {
X		case WAN_STRIKING:
X#ifdef SPELLS
X		case SPE_FORCE_BOLT:
X#endif
X		    pline("You magically bash yourself!");
X		    damage=d(8,6);
X		    break;
X		case WAN_FIRE:
X		    makeknown(WAN_FIRE);
X#ifdef SPELLS
X		case SPE_FIREBALL:
X#endif
X		    pline("You've set light to yourself!");
X		    if (!Fire_resistance) damage=d(12,6);
X		    burn_scrolls();
X		    boil_potions();
X		    break;
X		case WAN_COLD:
X		    makeknown(WAN_COLD);
X#ifdef SPELLS
X		case SPE_CONE_OF_COLD:
X#endif
X		    pline("You imitate a popsicle!");
X		    if (!Cold_resistance) damage=d(12,6);
X		    break;
X		case WAN_MAGIC_MISSILE:
X		    makeknown(WAN_MAGIC_MISSILE);
X#ifdef SPELLS
X		case SPE_MAGIC_MISSILE:
X#endif
X		    damage = d(4,6);
X		    pline("Idiot!  You've shot yourself!"); 
X		    break;
X		case WAN_POLYMORPH:
X		    makeknown(WAN_POLYMORPH);
X#ifdef SPELLS
X		case SPE_POLYMORPH:
X#endif
X		    polyself();
X		    break;
X		case WAN_CANCELLATION:
X#ifdef SPELLS
X		case SPE_CANCELLATION:
X#endif
X		    for(otmp = invent; otmp; otmp = otmp->nobj)
X		       if(otmp != uball && otmp->otyp != AMULET_OF_YENDOR)
X			    otmp->spe = (obj->olet == WAND_SYM) ? -1 : 0;
X		    if(u.mtimedone) rehumanize();
X		    flags.botl = 1;  /* because of potential AC change */
X		    find_ac();
X		    break;
X	       case WAN_MAKE_INVISIBLE:
X		    HInvis |= INTRINSIC;
X		    /* Tough luck if you cannot see invisible! */
X		    if (!See_invisible) newsym(u.ux, u.uy);
X		    break;
X	       case WAN_SPEED_MONSTER:
X		    Fast |= INTRINSIC;
X		    break;
X	       case WAN_SLEEP:
X		    makeknown(WAN_SLEEP);
X#ifdef SPELLS
X		case SPE_SLEEP:
X#endif
X		    pline("The sleep ray hits you!");
X		    nomul(-rn2(50));
X		    break;
X		case WAN_SLOW_MONSTER:
X#ifdef SPELLS
X		case SPE_SLOW_MONSTER:
X#endif
X		    Fast = 0;
X		    break;
X		case WAN_TELEPORTATION:
X#ifdef SPELLS
X		case SPE_TELEPORT_AWAY:
X#endif
X		    tele();
X		    break;
X		case WAN_DEATH:
X#ifdef SPELLS
X		case SPE_FINGER_OF_DEATH:
X#endif
X		    killer = "death ray";
X		    pline("You irradiate yourself with pure energy!");
X		    pline("You die.");
X		    done("died");
X		    break;
X#ifdef SPELLS
X		case SPE_LIGHT:
X		    pline("You've blinded yourself!");
X		    Blinded += rnd(100);
X		    break;		
X		case SPE_DIG:
X		case SPE_TURN_UNDEAD:
X		case SPE_DETECT_UNSEEN:
X#endif
X	       case WAN_PROBING:
X#ifdef PROBING
X		    ustatusline();
X#else
X		    pline("Nothing happens.");
X#endif
X		    break;
X		case WAN_DIGGING:
X		case WAN_UNDEAD_TURNING:
X		case WAN_NOTHING:
X		    break;
X		default: impossible("object %d used?",obj->otyp);
X	}
X	return(damage);
X}
X#endif /* KAA /**/
X
X/* called for various wand and spell effects - M. Stephenson */
Xweffects(obj)
X	register struct	obj	*obj;
X{
X	xchar zx,zy;
X
X	if(objects[obj->otyp].bits & IMMEDIATE) {
X		if(u.uswallow)
X			bhitm(u.ustuck, obj);
X		else if(u.dz) {
X			if(u.dz > 0 && o_at(u.ux,u.uy)) {
X				register struct obj *otmp;
X				
X				/* changed by GAN to hit all objects there */
X				for(otmp = fobj; otmp ; otmp = otmp->nobj)
X					if(otmp->ox == u.ux &&
X					   otmp->oy == u.uy)
X						(void) bhito(otmp, obj);
X			}
X		} else
X			(void) bhit(u.dx,u.dy,rn1(8,6),0,bhitm,bhito,obj);
X	} else {
X	    switch(obj->otyp){
X		case WAN_LIGHT:
X#ifdef SPELLS
X		case SPE_LIGHT:
X#endif
X			litroom(TRUE);
X			break;
X		case WAN_SECRET_DOOR_DETECTION:
X#ifdef SPELLS
X		case SPE_DETECT_UNSEEN:
X#endif
X			if(!findit()) return;
X			break;
X		case WAN_CREATE_MONSTER:
X			{ register int cnt = 1;
X			if(!rn2(23)) cnt += rn2(7) + 1;
X			while(cnt--)
X			    (void) makemon((struct permonst *) 0, u.ux, u.uy);
X			}
X			break;
X		case WAN_WISHING:
X			if(u.uluck + rn2(5) < 0) {
X			    pline("Unfortunately, nothing happens.");
X			    break;
X			}
X			makewish();
X			break;
X		case WAN_DIGGING:
X#ifdef SPELLS
X		case SPE_DIG:
X#endif
X			/* Original effect (approximately):
X			 * from CORR: dig until we pierce a wall
X			 * from ROOM: piece wall and dig until we reach
X			 * an ACCESSIBLE place.
X			 * Currently: dig for digdepth positions;
X			 * also down on request of Lennart Augustsson.
X			 */
X			{ register struct rm *room;
X			  register int digdepth;
X			if(u.uswallow) {
X				register struct monst *mtmp = u.ustuck;
X
X				pline("You pierce %s's stomach wall!",
X					monnam(mtmp));
X				mtmp->mhp = 1;	/* almost dead */
X				unstuck(mtmp);
X				mnexto(mtmp);
X				break;
X			}
X			if(u.dz) {
X			    if(u.dz < 0) {
X				pline("You loosen a rock from the ceiling.");
X				pline("It falls on your head!");
X				losehp(1, "falling rock");
X				mksobj_at(ROCK, u.ux, u.uy);
X				fobj->quan = 1;
X				stackobj(fobj);
X				if(Invisible) newsym(u.ux, u.uy);
X			    } else {
X				dighole();
X			    }
X			    break;
X			}
X			zx = u.ux+u.dx;
X			zy = u.uy+u.dy;
X			digdepth = 8 + rn2(18);
X			Tmp_at(-1, '*');	/* open call */
X			while(--digdepth >= 0) {
X				if(!isok(zx,zy)) break;
X				room = &levl[zx][zy];
X				Tmp_at(zx,zy);
X				if(!xdnstair){
X					if(zx < 3 || zx > COLNO-3 ||
X					    zy < 3 || zy > ROWNO-3)
X						break;
X					if(room->typ == HWALL ||
X					    room->typ == VWALL){
X						room->typ = ROOM;
X						break;
X					}
X				} else
X				if(room->typ == HWALL || room->typ == VWALL ||
X				   room->typ == SDOOR || room->typ == LDOOR){
X					room->typ = DOOR;
X					digdepth -= 2;
X				} else
X				if(room->typ == SCORR || !room->typ) {
X					room->typ = CORR;
X					digdepth--;
X				}
X				mnewsym(zx,zy);
X				zx += u.dx;
X				zy += u.dy;
X			}
X			mnewsym(zx,zy);	/* not always necessary */
X			Tmp_at(-1,-1);	/* closing call */
X			break;
X			}
X		default:
X#ifdef SPELLS
X			if((int) obj->otyp >= SPE_MAGIC_MISSILE) {
X
X				buzz((int) obj->otyp - SPE_MAGIC_MISSILE + 5,
X					u.ux, u.uy, u.dx, u.dy);
X			} else
X#endif
X
X				buzz((int) obj->otyp - WAN_MAGIC_MISSILE,
X					u.ux, u.uy, u.dx, u.dy);
X			break;
X		}
X		if(!objects[obj->otyp].oc_name_known) {
X			objects[obj->otyp].oc_name_known = 1;
X			more_experienced(0,10);
X		}
X	}
X	return;
X}
X
Xchar *
Xexclam(force)
Xregister int force;
X{
X	/* force == 0 occurs e.g. with sleep ray */
X	/* note that large force is usual with wands so that !! would
X		require information about hand/weapon/wand */
X	return( (force < 0) ? "?" : (force <= 4) ? "." : "!" );
X}
X
Xhit(str,mtmp,force)
Xregister char *str;
Xregister struct monst *mtmp;
Xregister char *force;		/* usually either "." or "!" */
X{
X	if(!cansee(mtmp->mx,mtmp->my)) pline("The %s hits it.", str);
X	else pline("The %s hits %s%s", str, monnam(mtmp), force);
X}
X
Xmiss(str,mtmp)
Xregister char *str;
Xregister struct monst *mtmp;
X{
X	if(!cansee(mtmp->mx,mtmp->my)) pline("The %s misses it.",str);
X	else pline("The %s misses %s.",str,monnam(mtmp));
X}
X
X/* bhit: called when a weapon is thrown (sym = obj->olet) or when an
X   IMMEDIATE wand is zapped (sym = 0); the weapon falls down at end of
X   range or when a monster is hit; the monster is returned, and bhitpos
X   is set to the final position of the weapon thrown; the ray of a wand
X   may affect several objects and monsters on its path - for each of
X   these an argument function is called. */
X/* check !u.uswallow before calling bhit() */
X
Xstruct monst *
Xbhit(ddx,ddy,range,sym,fhitm,fhito,obj)
Xregister int ddx,ddy,range;		/* direction and range */
Xchar sym;				/* symbol displayed on path */
Xint (*fhitm)(), (*fhito)();		/* fns called when mon/obj hit */
Xstruct obj *obj;			/* 2nd arg to fhitm/fhito */
X{
X	register struct monst *mtmp;
X	register struct obj *otmp;
X	register int typ;
X
X	bhitpos.x = u.ux;
X	bhitpos.y = u.uy;
X
X	if(sym) tmp_at(-1, sym);	/* open call */
X	while(range-- > 0) {
X		bhitpos.x += ddx;
X		bhitpos.y += ddy;
X		typ = levl[bhitpos.x][bhitpos.y].typ;
X		if(mtmp = m_at(bhitpos.x,bhitpos.y)){
X			if(sym) {
X				tmp_at(-1, -1);	/* close call */
X				return(mtmp);
X			}
X			(*fhitm)(mtmp, obj);
X			range -= 3;
X		}
X		/* modified by GAN to hit all objects */
X		if(fhito && o_at(bhitpos.x,bhitpos.y)){
X			int hitanything = 0;
X			for(otmp = fobj; otmp; otmp = otmp->nobj)
X				if(otmp->ox == bhitpos.x &&
X				   otmp->oy == bhitpos.y)
X					hitanything += (*fhito)(otmp, obj);
X			if(hitanything)	range--;
X		}
X		if(!ZAP_POS(typ)) {
X			bhitpos.x -= ddx;
X			bhitpos.y -= ddy;
X			break;
X		}
X		if(sym) tmp_at(bhitpos.x, bhitpos.y);
X	}
X
X	/* leave last symbol unless in a pool */
X	if(sym)
X	   tmp_at(-1, (levl[bhitpos.x][bhitpos.y].typ == POOL) ? -1 : 0);
X	return(0);
X}
X
Xstruct monst *
Xboomhit(dx,dy) {
X	register int i, ct;
X	register struct monst *mtmp;
X	char sym = ')';
X	extern schar xdir[], ydir[];
X
X	bhitpos.x = u.ux;
X	bhitpos.y = u.uy;
X
X	for(i=0; i<8; i++) if(xdir[i] == dx && ydir[i] == dy) break;
X	tmp_at(-1, sym);	/* open call */
X	for(ct=0; ct<10; ct++) {
X		if(i == 8) i = 0;
X		sym = ')' + '(' - sym;
X		tmp_at(-2, sym);	/* change let call */
X		dx = xdir[i];
X		dy = ydir[i];
X		bhitpos.x += dx;
X		bhitpos.y += dy;
X		if(mtmp = m_at(bhitpos.x, bhitpos.y)){
X			tmp_at(-1,-1);
X			return(mtmp);
X		}
X		if(!ZAP_POS(levl[bhitpos.x][bhitpos.y].typ)) {
X			bhitpos.x -= dx;
X			bhitpos.y -= dy;
X			break;
X		}
X		if(bhitpos.x == u.ux && bhitpos.y == u.uy) { /* ct == 9 */
X			if(rn2(20) >= 10+u.ulevel){	/* we hit ourselves */
X				(void) thitu(10, rnd(10), "boomerang");
X				break;
X			} else {	/* we catch it */
X				tmp_at(-1,-1);
X				pline("Skillfully, you catch the boomerang.");
X				return(&youmonst);
X			}
X		}
X		tmp_at(bhitpos.x, bhitpos.y);
X		if(ct % 5 != 0) i++;
X	}
X	tmp_at(-1, -1);	/* do not leave last symbol */
X	return(0);
X}
X
Xuchar
Xdirlet(dx,dy) register dx,dy; {
X	return
X		(dx == dy) ? '\\' : (dx && dy) ? '/' : dx ? HWALL_SYM : VWALL_SYM;
X}
X
X/* type == -1: monster spitting fire at you */
X/* type == -1,-2,-3: bolts sent out by wizard */
X/* called with dx = dy = 0 with vertical bolts */
Xbuzz(type,sx,sy,dx,dy)
Xregister int type;
Xregister xchar sx,sy;
Xregister int dx,dy;
X{
X	int abstype = (type == 10) ? 1 : abs(type);
X	register char *fltxt = (type == -1 || type == 10) ? "blaze of fire" : fl[abstype];
X	struct rm *lev;
X	xchar range;
X	struct monst *mon;
X
X	if(u.uswallow) {
X		register int tmp;
X
X		if(type < 0) return;
X		tmp = zhit(u.ustuck, type);
X		if(!u.ustuck)	u.uswallow = 0;
X		else	pline("The %s rips into %s%s",
X				fltxt, monnam(u.ustuck), exclam(tmp));
X		return;
X	}
X	if(type < 0) pru();
X	range = rn1(7,7);
X	Tmp_at(-1, dirlet(dx,dy));	/* open call */
X	while(range-- > 0) {
X		sx += dx;
X		sy += dy;
X		if((lev = &levl[sx][sy])->typ) Tmp_at(sx,sy);
X		else {
X			int bounce = 0;
X			if(cansee(sx-dx,sy-dy))
X				pline("The %s bounces!", fltxt);
X			if(ZAP_POS(levl[sx][sy-dy].typ))
X				bounce = 1;
X			if(ZAP_POS(levl[sx-dx][sy].typ)) {
X				if(!bounce || rn2(2)) bounce = 2;
X			}
X			switch(bounce){
X			case 0:
X				dx = -dx;
X				dy = -dy;
X				continue;
X			case 1:
X				dy = -dy;
X				sx -= dx;
X				break;
X			case 2:
X				dx = -dx;
X				sy -= dy;
X				break;
X			}
X			Tmp_at(-2,dirlet(dx,dy));
X			continue;
X		}
X		if(lev->typ == POOL && abstype == 1 /* fire */) {
X			range -= 3;
X			lev->typ = ROOM;
X			if(cansee(sx,sy)) {
X				mnewsym(sx,sy);
X				pline("The water evaporates.");
X			} else
X				pline("You hear a hissing sound.");
X		}
X		if(o_at(sx,sy) && abstype == 1)
X			if(burn_floor_scrolls(sx,sy) && cansee(sx,sy))  {
X				mnewsym(sx,sy);
X				pline("You see a puff of smoke.");
X			}
X		if((mon = m_at(sx,sy)) &&
X		   (type != -1 || mon->data->mlet != 'D')) {
X			wakeup(mon);
X			if(rnd(20) < 18 + mon->data->ac) {
X				register int tmp = zhit(mon,abstype);
X				if(mon->mhp < 1) {
X					if(type < 0) {
X					    if(cansee(mon->mx,mon->my))
X					      pline("%s is killed by the %s!",
X						Monnam(mon), fltxt);
X					    mondied(mon);
X					} else
X					    killed(mon);
X				} else
X					hit(fltxt, mon, exclam(tmp));
X				range -= 2;
X			} else
X				miss(fltxt,mon);
X		} else if(sx == u.ux && sy == u.uy) {
X			nomul(0);
X			if(rnd(20) < 18+u.uac) {
X				register int dam = 0;
X				range -= 2;
X				pline("The %s hits you!",fltxt);
X				switch(abstype) {
X				case 0:
X				case 5:	dam = d(2,6);
X					break;
X				case 1:
X				case 6:	if(Fire_resistance)
X						pline("You don't feel hot!");
X					else dam = d(6,6);
X					if(!rn2(3)) {
X						boil_potions();
X						burn_scrolls();
X					}
X					break;
X				case 2:
X				case 7:	nomul(-rnd(25)); /* sleep ray */
X					break;
X				case 3:
X				case 8:	if(Cold_resistance)
X						pline("You don't feel cold!");
X					else dam = d(6,6);
X					break;
X				case 4:
X				case 9:	u.uhp = -1;
X					break;
X				}
X				losehp(dam,fltxt);
X			} else pline("The %s whizzes by you!",fltxt);
X			stop_occupation();
X		}
X		if(!ZAP_POS(lev->typ)) {
X			int bounce = 0, rmn;
X			if(cansee(sx,sy)) pline("The %s bounces!",fltxt);
X			range--;
X			if(!dx || !dy || !rn2(20)){
X				dx = -dx;
X				dy = -dy;
X			} else {
X			  if(ZAP_POS(rmn = levl[sx][sy-dy].typ) &&
X			    (IS_ROOM(rmn) || ZAP_POS(levl[sx+dx][sy-dy].typ)))
X				bounce = 1;
X			  if(ZAP_POS(rmn = levl[sx-dx][sy].typ) &&
X			    (IS_ROOM(rmn) || ZAP_POS(levl[sx-dx][sy+dy].typ)))
X				if(!bounce || rn2(2))
X					bounce = 2;
X
X			  switch(bounce){
X			  case 0:
X				dy = -dy;
X				dx = -dx;
X				break;
X			  case 1:
X				dy = -dy;
X				break;
X			  case 2:
X				dx = -dx;
X				break;
X			  }
X			  Tmp_at(-2, dirlet(dx,dy));
X			}
X		}
X	}
X	Tmp_at(-1,-1);
X}
X
Xzhit(mon,type)			/* returns damage to mon */
Xregister struct monst *mon;
Xregister type;
X{
X	register int tmp = 0;
X
X	switch(type) {
X	case 0:			/* magic missile */
X	case 5: tmp = d(2,6);
X		break;
X	case -1:		/* Dragon blazing fire */
X	case 1:			/* fire wand*/
X	case 6:			/* fire spell */
X	case 10:		/* Polymorphed human blazing fire */
X		if(index("Dg", mon->data->mlet)) break;
X		tmp = d(6,6);
X		if(index("YF", mon->data->mlet)) tmp += 7;
X		break;
X	case 2:			/* sleep*/
X	case 7: tmp = 0;
X		if(!resist(mon, (type == 2) ? '/' : '+', 0, NOTELL))
X			mon->mfroz = 1;
X		break;
X	case 3:			/* cold */
X	case 8:
X		if(index("YFgf", mon->data->mlet)) break;
X		tmp = d(6,6);
X		if(mon->data->mlet == 'D') tmp += 7;
X		break;
X	case 4:			/* death*/
X	case 9:
X		if(index(UNDEAD, mon->data->mlet)) break;
X		tmp = mon->mhp+1;
X		break;
X	}
X	if (resist(mon, (type < 5) ? '/' : '+', 0, NOTELL)) tmp /= 2;
X	mon->mhp -= tmp;
X	return(tmp);
X}
X
X#define	CORPSE_I_TO_C(otyp)	(char) ((otyp >= DEAD_ACID_BLOB)\
X		     ?  'a' + (otyp - DEAD_ACID_BLOB)\
X		     :	'@' + (otyp - DEAD_HUMAN))
Xrevive(obj)
Xregister struct obj *obj;
X{
X	register struct monst *mtmp;
X	register int let;
X
X	if(obj->olet == FOOD_SYM && obj->otyp > CORPSE) {
X#ifdef KAA
X		switch (obj->otyp) {
X			case DEAD_HUMAN: { let = 'Z'; break; }
X			case DEAD_GIANT: { let = '9'; break; }
X			case DEAD_DEMON: { let = '&'; break; }
X			default: let = CORPSE_I_TO_C(obj->otyp);
X		}
X		delobj(obj);
X/* Originally there was a bug which caused the object not to be erased
X   from the screen.  This happened because first the monster got created,
X   then the corpse removed.  Although delobj() called unpobj(), the object
X   didn't get erased from the screen because the monster was sitting on top
X   of it.  Solution: place the delobj() call before the mkmon() call. */
X		mtmp = mkmon_at(let, obj->ox, obj->oy);
X		if (mtmp && obj->otyp == DEAD_HUMAN) {
X			mtmp->mhp = mtmp->mhpmax = 100;
X			mtmp->mspeed = MFAST;
X		}
X#endif
X		/* do not (yet) revive shopkeepers */
X		/* Note: this might conceivably produce two monsters
X			at the same position - strange, but harmless */
X#ifndef KAA
X		delobj(obj);
X		mtmp = mkmon_at(CORPSE_I_TO_C(obj->otyp),obj->ox,obj->oy);
X#endif
X	}
X	return(!!mtmp);		/* TRUE if some monster created */
X}
X
Xrloco(obj)
Xregister struct obj *obj;
X{
X	register tx,ty,otx,oty;
X
X	otx = obj->ox;
X	oty = obj->oy;
X	do {
X		tx = rn1(COLNO-3,2);
X		ty = rn2(ROWNO);
X	} while(!goodpos(tx,ty));
X	obj->ox = tx;
X	obj->oy = ty;
X	if(cansee(otx,oty))
X		newsym(otx,oty);
X}
X
Xfracture_rock(obj)	/* fractured by pick-axe or wand of striking */
Xregister struct obj *obj;			   /* no texts here! */
X{
X	/* unpobj(obj); */
X	obj->otyp = ROCK;
X	obj->quan = 7 + rn2(60);
X	obj->owt = weight(obj);
X	obj->olet = WEAPON_SYM;
X	if(cansee(obj->ox,obj->oy))
X		prl(obj->ox,obj->oy);
X}
X
Xboil_potions()
X{
X	register struct obj *obj, *obj2;
X	register int scrquan, i;
X	
X	for(obj = invent; obj; obj = obj2) {
X		obj2 = obj->nobj;
X		if(obj->olet == POTION_SYM) {
X			scrquan = obj->quan;
X			for(i = 1; i <= scrquan; i++) 
X				if(!rn2(3)) {
X					pline("%s %s boils and explodes!",
X					(obj->quan != 1) ? "One of your" : "Your",
X					xname(obj));
X					potionbreathe(obj);
X					useup(obj);
X					losehp(rn2(4),"boiling potion");
X				}
X		}
X	}
X}
X				
Xburn_scrolls()
X{
X	register struct obj *obj, *obj2;
X	register int cnt = 0;
X	register int scrquan, i;
X
X	for(obj = invent; obj; obj = obj2) {
X		obj2 = obj->nobj;
X		if(obj->olet == SCROLL_SYM) {
X			scrquan = obj->quan;
X			for(i = 1; i <= scrquan ; i++)
X				if(!rn2(3))  {
X					cnt++;
X					useup(obj);
X				}
X		}
X	}
X
X	/* "Killed by a burning scrolls" doesn't make too much sense.  KAA*/
X	if (cnt) {
X		pline("%s of your scrolls catch%s fire!",
X		cnt==1 ? "One" : "Some", cnt==1 ? "es" : "");
X		if(Fire_resistance)
X			pline("You aren't hurt!");
X		else
X			losehp(cnt,"burning scroll");
X	}
X}
X
Xresist(mtmp, olet, damage, tell)
Xregister struct monst	*mtmp;
Xregister char	olet;
Xregister int	damage, tell;
X{
Xregister int	resisted = 0;
X#ifdef HARD
Xregister int	level;
X
X	switch(olet)  {
X
X	    case '/':	level = 8;
X			break;
X
X	    case '?':	level = 6;
X			break;
X
X	    case '!':	level = 5;
X			break;
X
X	    default:	level = u.ulevel;
X			break;
X	}
X
X	resisted = (rn2(100) - mtmp->data->mlevel + level) < mtmp->data->mr;
X	if(resisted) {
X
X		if(tell) pline("The %s resists!", mtmp->data->mname);
X		mtmp->mhp -= damage/2;
X	} else
X#endif
X		mtmp->mhp -= damage;
X
X	if(mtmp->mhp < 1) killed(mtmp);
X	return(resisted);
X}
X
X/*
X * burn scrolls on floor at position x,y
X * return the number of scrolls burned
X */
Xint
Xburn_floor_scrolls(x,y)
X{
X	register struct obj *obj, *obj2;
X	register int scrquan, i;
X	register int cnt = 0;
X
X	for(obj = fobj; obj; obj = obj2) {
X		obj2 = obj->nobj;
X		/* Bug fix - KAA */
X		if(obj->ox == x && obj->oy == y && obj->olet == SCROLL_SYM) {
X			scrquan = obj->quan;
X			for(i = 1; i <= scrquan ; i++)
X				if(!rn2(3))  {
X					cnt++;
X					useupf(obj);
X				}
X		}
X	}
X	return(cnt);
X}
X
Xmakewish()	/* Separated as there are now 3 places you can wish at. */
X{
X	char buf[BUFSZ];
X	register struct obj *otmp;
X	extern struct obj *readobjnam(), *addinv();
X	int wishquan, mergquan;
X
X	pline("You may wish for an object. What do you want? ");
X	getlin(buf);
X	if(buf[0] == '\033') buf[0] = 0;
X	otmp = readobjnam(buf);
X#ifdef KAA
X/* Wishing for gold has been implemented in readobjnam() and returns 0
X   if successful. */
X	if (otmp) { 
X#endif
X		wishquan = otmp->quan;
X		otmp = addinv(otmp);
X		/* indented lines added below so quantity shows
X		 *  right.     GAN - 11/13/86
X		 */
X		  mergquan = otmp->quan;
X		  otmp->quan = wishquan; /* to fool prinv() */
X		prinv(otmp);
X		  otmp->quan = mergquan;
X#ifdef KAA
X	}
X#endif
X}
END_OF_zap.c
if test 24867 -ne `wc -c <zap.c`; then
    echo shar: \"zap.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
echo shar: End of archive 5 \(of 20\).
cp /dev/null ark5isdone
MISSING=""
for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have unpacked all 20 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