*D@m|]xPiȧNgjP$.'zx2 0zx2 00zx2 00 $.'$.' 9999zx2 zx2zx2zx2zx2 $.'$.' zx2 $.'$.'9999 %S*$%'@?=BdIXB$.'jP?Xzx2zx2?Xzx2zx2?Xgzx2zx2gzx2zx2g %SLSE*$#7$@B6$B'QK5R3ST:90u.  j!J N'+^" , &*K$@ [B[CCňC`/< /9 /9 /< /9/9/G G G GG"++P?"P?G`Gp=+p+GGBGB"p"p=+p=+P+>++@">"P"@""P~+P~"+"P>+P>"A+A"++B"B"+"p"""""8~"P~""p=+p+++++P~+8~+p=++""+uuX_u؃߃uGuX_u " "  ""  + G + + + " GGp}p}`GpG`"p">+>+p"p}+p}+"+++}+P"p""P""}"u(u(//ugu`gu`u`G}G}pp=Gpl>u>up=lp=upup}PGGPlpup=ulluuuBll P@PPPAPllPP l l P Pl P lPlp=PpPp}lpl}P}PGGPGP?PP?PP>GP>GGGPPPG@GAGP~PP~P>G>GpPpPGP Pp=PpPPP8~PPPPBPPp=Pu@uuAullulP?uP?uP>lP>llPuPl@lAlP~uP~lpupulluulu u u upuuu}uu8~uPuuuuu lpllllPl8~lp}lllBlGp=GpGGGPG8~GGGW@??>?~}W>W C// /9߃߃/A@@WWWWwwB>>꽷'@??Wٗ٧''''AA'꽷٧'򴗁|'''W?W?W>W>ٷAAٷ>>ww=p=w=w=go>WW~P~@AAP?W?W>P>>WW~W~Wٷ@@ٷٗw=w='@??}''''''g}w}wwwpw}wٗ◂BB>''ٷ p>8~P`y BBB춼첼 VV V}wB||}B~~~}wB~}|w~~}|~~~=SxxxSJ<xxxS:JxxxA6>IEDzzIHEzG+JGC+GICGFH3F</@Epzz/2@pxzBD@|zzBCD|zB+C|>7A>27>@2>@x>?zx>;?z>8;:<=ЈЈ:3<ЀΈ:43Ѐɀ:54Ђŀ5;9r5;rx5:rxx219678145p104pp034p0/3pp/12΀z/01΂ɀ}B|?@=?=9@0>AB.A.CAC#A#DC.<%'&%&E%EFG G7 7; 1H8 18G 1GI F1I /JK/KL/L/ME/MNOPNPQRST$RTU$$VRUVUWSXYSYTZ[88[8\]VW$$]W^$_]^_^`O-,O,4abcH``acdH`HZefZfbZbg)(N )N5 hihhijhhQQQk,)5,54ON(O(-lNQ lQh lhk H5l Hlj eOmm4?m?cmfbmbPmPe=!d=dcnGjnjiopq88oqr8orstut2vww3332wtxwxytwztz{|wy|y}|}~~K~3~3|tBAA2xxH``H`H}KAܨܨܨ}h}hhpxppyryy~#D###888{:{u;zzv{z;{;:   osroroXS  SR RV  V] ] "nn_\XX         ?0@                                          "oor   n!"!!oor#$#$n#n"$ "!"%"%""%"##i&'(&()*+,*,-*-.6:6>6=><$#<*$<+*'-('*-*%$*'%7:;76:689678145104/23/.2+),+&)010&./&+.*,-*+,&()&'(#%#$%!"8 !88 88KLMD\\KMND\DOPQOQRTUVDD\TVWD\\XYddbXZdb<XZ[d<<\]Ddd\]VDd\\V^D\DUTWDD\UWRD\\URVD\\UV]D\dU]ODddUO_Ddd`ab`bcdef\DDdfg\DDdgh\D\TUWDD\TWiD\\TijD\Dkgj kji lmnlnoapqaqb`rs`stucvuv-BwxBxyBytBtsmlzmz{r`crcu|}~|~-|-v|vo|on  wxbbqLLpapQQPa` `t  tM ML Mt M lQlQlQiQiWovicbcvddkkhXXdYDddYDddDdDN NM \DD\DD\D\{z{y      zz`DddDddKDdDm{m{{mPmP_m_ruqrqpquu-Y,rppsss,+,X,XYsYXX + +  + _  _O  O   .n.+.+``^^W WU UT TY Y    )<$$<$$<$<<\<D\^EGJLOQVY[\`bdjptz    "$*/5:?CHMOQW[adkos{   %)/5 9DHORX^djotz ).4:@FKPWZ]aehkoqsu{ "&)-0357:=AEGMQX\adfimqw{    !$&*,/ 2;?FKQU]`c kw}  %+036;AHORTZ`fkr $,./38=BGNU[bglsx       % ) . 3 9 ? D I O U Y [ ^ d h n r w                                     ! $ * . 3 9 ; > A D F L Q T V Y ] a d g i [B[CCňC k)XXY]^]cdadeQRSRSc=>?~|}<FG$%&&34mnu%&dno78:;<:;:_hi_`fXYfgXi569DEFGH4 @ABC}Ygp`fgm>?@A3?923uv423pq 24 567856798;<H=C=>ABw@mnBCDDEEFGHIJ_`hjIXYhioIJstJcdejkKLMKOPKLPLMNMNTNTUOOP?@Q\]^Z[QRSTUVUVWVWWXZ[[\Z]^rsZ[qv[uvx\ot\]r^\abklabxbnwxeljklmnopqrstwxyz{yghyzz{{|}|~~hivvv|{|rstuv '(z{ijkl_strs7def67@AABCfgCWXHI[\   g|}VW["#(<()ab<=_`MRSQR_ st~!jwx }~oupqs       !   !"#*+,?"()6?@#,-5]$%0DEKL$01kl$%4vy%45QRST&'1kmn&01DFG&'2GOP'23nr)67acd*+.cde*./?@AB+,-abc-45b./3z{/23UVWXY89mno8FGH89DEF9klm:;hi:EK:;KLM;ij<=>]^=>`>BCYHIJPIJZ\JNOPLMTNUVZNOUQ]^STXYZ[\^_`efghijyhloqrstupqrzpz{|}~tuvwxvwyx{|JKLMNGHIJntuw~gnopf}~./0,-.0)+,/0)/#$-.$%+,-%&'(+**!*&) "#$%( !&' "# " ! 1    Z"#$%<=)()*+CBC=>yz%`a$%./01 LMMN1;<oprsgpr KLabxy&' &66789<TWOPUUV:015NO9: ,./  [\`ab}2 !dhicdecdh klmq  '(*cef37    J  GUV GH[]^  1 1IJm;efg678;<!ij !&'()XYlm"#$,-."$%\`"#L[\]#KLMNOP*+Q+MNRST,-V-W/024523453489:=>KMR=KL]^_=>?>DEFRS?@ADDE@A_ABCSTBEFDDE>?DEFFTGHIJQHI^NOQOPUPWUVWXYZ$YZjkl_bwx}~hijqkqnostuvwxyz{|,.,-9; 9:  `abc()mnopRS QS@ABC556>?@AB./56]^_78)127qrstuYw ef !! !fklXYZOPQH69:;<=AEFJK '(+*+/0  VW      RST efg8`a"-;<"#,-./0#*0'()234'*+4178`b123bcd:R?@FBCICGHGIPQTUVWZ[\wx^_uaecdpghiljqrvjkqmwxoptu[B[CCňC >>?@@TF@3)( BRIFF.WAVEfmt @@data.~~~~~~}~{zxwxy{|~}{|v}roov{}wod_vt4N7j^QrLmYWrCAzhKS[OdVZmJO\{EfzEbSSyQ\wMVWP[zWMa_PUo[NMtt_MRl]JYhoWfz|a_]LFC_ydEEI[uĿlB:4A[qkeXHNL^xödND=)/=Pqν~`QFL36vZb^hUF@<)++>RHRzsu$3hnDKhCi°yekKq?FwO2c\Jv\Tq^wjr~h`_WK{sjgq}iz}]WTENQJEiYEy`ZLwk[JTZMUe{xhGEEOjðpYR='1BZwǶrTJG06=Oxξw^OGG84H]|Ϸp[OCHI=M]v½ñs[F98EBGLk¼x[D646FLGE|̰ddN86-;FNIKַW9W:?=6RUVwç^ts9EEIi`IRiܰuvi1Y~w{>/vpMbvt̘ghk>MzeDSry¸gpm:ceSs|aMgmh{xzkek]hhpj?Tx|WF~y}]gqgck|l^tlovymzrpmwzc_ta_NSp]rR=ruy^dbiJr{`cwZrl`iPh~_ahjohRcsm\V|tjNavzzVTZzzz`SSdVkK[ZkF{uYohVN]\roUK^dwzXEAN|kPRR]ogbMRX{aKV]Tg~nOAA`yWLKQvcULJgw|pdZ^ny{t}wy}wunw{|a]QFNay|jC?ALiyosnaQOYoxoetcOSGRfrll[DOSiҳoNt[TT[wiSYwtW[f|}]N^sjx}tyzvhTrr~oqinRPe~hRQ~bIFFy^Q@fmbUPgnUBGvcU]}YD3D{XQK_LEW|UHFsfV\i|YD_nxoSVx{Lhyrh]Ljpct[\cM`~fpplT~sW.W|oogoȴyT?UKV^Qb_QD6A#Mx}}~y`F:*0Qt}`P=0JfXE'&bkrZ+18A]SGdwRA2DM`yaTAWMRc_{鯃}qQ;A@Xpnj]L=RacռcEAS}ն{ziO333_{tnrxQC/Jhhhv÷ZQHhoNPI^˓qgyeB/2k}wXE6Hbsw|jmgc©nwokodR?AOx}j^2/\Ydinyhnz`:abVRLQX\MsƸl^gym`IJV7BrxxpmɪuqsD86Cghh^h~x_[MVcMndjZv{j@JOkvoT:TminȥdUIOtqQIHfjZoγfiZB.b}pTJh÷j\ckM7E~{cMBlo`Q]hI?BkOE[_LX|ME;i]TSoUSw}kXLPuwla`omWUqoRKJ>La·uiaACPMa¹yjWGAAL]{ʶ}hU>:>Un}oNRlPEOYvȵldaG=>Ebw^U[QSPMWmɫthT=33Jh{p``bf]PXeҶ{l`B72:X|p`fkioi]^j}϶pYHA3DQruyy}dNU}wyvhlen~yuwi~_swrZ[gnnw^>7Biqnmb?BbsMNDWƓtskqK>.Pu^X_}nfludD1-CDZ}uzyM4%B{Z_Nqtpqvn\>"8^vwu| bG:9Ug{lN[qp|yt~u\J>57?5Pyr|rFNn\SWW[lupf^rkjuĕreRL7/85reVNMb|xzzmhUNoxj[JINEu~ej}`fge~gVM]cHEuudfg·k_phPA@ojSnm\VZdZcuUG@YbYOZPKV]VRyn\X]vbe`_HHVwǰbJ<:Swo|zntoZPXlϲ~uzkU<52R~ihcotUMlvfZNHPmZ\gWO\~qTHJSe>M}wZOTgV=ix_XVpµ}iLC@ShDQlhgvs`Nt~sbTJVuYqfYZ\woK1hrjc_j´fQGzlWSSsrb\^rycZVeiK?dyYUUu{_^fe|o_^duXJTteUhxvcQI^{mY]~ue^gvUF@b~~g^]\ojqT?1Ag}|}}hYW`v½{SNgrovlgvuRFCm|rfYyryzM;*5Icxvm``lyξWUWffmnqwjq~naYTs}hejdjjxyjR768Lzr[B>>mwwr]PSi~bdmp`b_oqIOn~s[Ze¹XBCob`[ktURnwo{}zy~pJ>Go^OVx\VYhxoygICG\|ʧ|mqsaHBHX͜}ccrzjd]`kpoe\suXSVp]FKhqfhl\NQ~ukn[;6J}sdNFJVdu~udbfwvmk}p`^US_qxzƣ{gQB29Yhzynm_VM\~tldZ]pp\J39R]gUQcuƫpM@B^{ulYQdsV?A?HSKSayڱ`MX`rtqnjgURUx}{bX]QPOW[afizճwqvxtl\RNLB@Im^JJefdfbkx}vqtͪxg^OB@AAH_{W8=[cgoii{iZio[Sbdajlnpkj}~h_WX]_RIAHv}pg^_`b\[[la\cy|mhit}teWLW{qxtjutVNWryutwl^]`˰iae|oVXdjUGNxu`n{sxfN\llih`VQRiѿzhn{|faiZF;Dyg\|tlmti\d`itq\JHWºrbj}||yUKEAbpbof\oqWHWr`Zbv`XTuzv}^B:D|naW^y}kUEB^}ppvq_V\rjXTS`|}{~kO?;Zn]fmkymXGJejov|vy~Ǟz`WZbpug\T[ehcm{ôfC,8ftvii}vho~k\RLKP^ourv˿S-*TlhWO]fnvte[OE@G[|yM3Ylsx][\p’m`XhrfWa{{vrmszzbiržiQXvuqmogRSVl”gXYk|wyxsx}qYLWzy|m[Xjy}}nRIMpo`kjTGH^yxzwseSNUhroe]PFGSoǣlelh}tcboub]`szei~}wx{hSF=FfdVNOZpnPENj|wkflqk`gt{~plnqjUMTdvUCOpv{v}l[U\u~lt{viVG@Lsp\S\ubRPvtjg`Zh|}e\XqricfzxXG?JmlWLnw_UUf|m_SVgdctqRHKazlgtdQPUhubSMQiv~kQZmxwssscRMUe{kURc}yysUIdlZZ\vxiVR[Zaw~c[\y\MFVwiYOYwuwbD:8arelb]y{powYB6>iwaZoxuvvdYRcoTHW}h]`w~^Zovc^f{fW[k[GLhrhqžmWNj[EjzniqygcuvO98Zx~smn}kR?Eox~~Q9Ggz{h`]leB-1Lb~~}|{{p^K:Dh}|TBYomtuvrc^YemR8-3Ckwu~ufM;,5Sr}k__k}thVF>Kiy~^H=H^zxmaUYhthH5/;Kfzhepu^G7,15Qor|wmdRJDGR]}wljswgVg|fLC@Kfêj`v~srtr|zlWGACW{~mtyojkkkn}mZPR`yroz^I<>M}|hb\teLK@Puwzwe__j~wkgcits^RLLd~low{p\<46Ahs_ZYfwoc_^]ftk[__qn`cy|n_C46?[~}i_WW`to^WTW`r~|t[KIX}vwxy^UW`xsoyoaVct{pnfddn}tklvҼ_GGRcong\f{xb^fzcSYqqoaV^fx½rSAEWm}ggzfPEL\fknpnfcgvyUC40:AWvyrvv\LPXURJR^tͲeTOSYip{~wwkpxvZF>FS\elutmp{ŹhN@,%#,[|{~jZKEC?EQ`yݹk`ccRGDPyu]XcwiR@XwyslilwePONKLTct|~ĸnWO_usfYSVe}yi_bilry~vkcfr}{ybQGNav{{|soq{~m_^cgmnmrp_UZm}mfcdhoy{ib\QGBF]|wpouysmb_cpwonur`Y`bhpv}zvzzpkhn}xqostncYVbw}urqprz{lcckuzneadpqees{~~|~}}|gYSWjumnv{rrw|umfglqx~uqrohdhmng[Wav~sjZD62;W|~vsuxmidbfmx|vuvzzkadmqtqpssxxjbeuvlgnzumnw{smklovrpu|{snnmjaYZivl[KB=CZ|}y{}smh^UPQ[q|wohcfnx{tywqopu{pijq~m\V`rshdhw{mhmzeXU\dfjpw}|~|qf[Z[^is~zut{xi[TXdxkYSU]enw}}|~seYOLWjzzjYHBCLawrkfedelxzl`_eo~sdXTST[ivg^[X\er~wgVJJS^kyypjdZVY^m~voh`VMMVepuywljpz~j[V\q}|z{xofbchmqtv}}nXOSYet}x|~ukc[VT]pn`YW_r}mjs|}zy|{l_XWYanl[U\q}pkq||qhemm_^dpx|k[UZk}yy~}rlqrfclw~~xsnpv~uomrwy|xsu{rgciv~vj^W[m}zdRGHWjwxuwsbY]mmdbaccemx~rhdhvLIST8INFOICOPA1 Free Sound EffectsINAM Laser Fire 3g\f^`cE;\TCJ`d]ZyeV?gT`t{UPU@MdkZ}oymxFDhmP`ma{LOUsHdiIvF^lZfyrvumr`}Z~nw{wwuZ9@r]c}f>3rQS{BW}upsfciPoO\{ma>hOURZwg`zX`tkqvQz)}IsziTD215vPqioQ5o)W7HMRqaoz|gcqeaoRNa~}y||pueTCc=?TNRo_UqOlW~n{}d]Zxi`уFTfjmFsG{o]ngofvوpޝE/p1AS.Mxx~wlnfMLraIr8@th|yYhtILtXOxe}zligtD9JmfT|KQgv|{pZu9_8CUNYӗs\EeEPiIFY_HO~lrz~jhzEOgBLtmljr8vDZnQNmcurzɈnĵXiJ;`h6D^nFNYN|yɪzspid_Y[^OPurJ~ma|3%PL#gd66|p]a}mq`zQayGPgK{[iíg懀C9Hhs0KcMjycvW@hw2A_mLmdxQS}O3a=PBoą֩j}u?v74,M7Lm}cp~4uQ.+M7ڄSprKgӈpE#<,uQʤpWWT]CN:mhGMtVǷEz?R>r*Ka*t^HpYyqS>tb7Xd\^kfm޲8|*nY8cBp`Upѓ}Ʌmx;lc,bl'b|77AF̪MƉ@ev5K5[fOjx~u~M~([d!Ti:6?ɛbӆasF_=k4R_JJ`[ƏnҬYBoAI9/@$n'4ݤF}VqI_DžX9cZ9oIhwCyymnMvHI!WJ7q0{Dֵ>]_˸s'og(chQPzs[|yanWv[=ahib}iu\~|WzadvZucM{KshtySz͈w|vsGwbp&d!NI8wGWzR?eGEZ0_uUEbXy]gϼdTbKct?Q2Kw]=ZBUTkxéSilȉRqwYRqq:}=qvppw}ww`V9s{Y3hg7\0k/JcيE@JqJ9y4m{CVup{s[d|sJXl:eV\zȮG\_nM|`aC|sR\bK|zo`|}zty^H}vYnnfn[lyslZk|JllEid^uxubHnl_arnhXnJxv[kY_pHrzLmNnn|<\LrQavFn?]Zrf™JtkhjnwakIo6pYnbtzdQwqju@bFhWi|rhCtZo2{Ca@\0@[vRDLwL~kežn_[c5er[Sw{\˪acaljb=rr(pEVh|SYメEkhxyQSo-qc@]m`]هdjGŊjUH}=d_XLȦvtkvM\m3m]`yls[nT}œWtkrH}og[cMh}ng{pyr:=sa$U1WXT⟟Inū/XR;>'.?QpljȬkNY8`iQv#؍Tiᮇ4%av19ly-_]f̊Xgo0zZ8[gX)0֣>|2t7FnIBl^Y{gf{qXbsjUaxUfgx˜vxjmNWcIVwqxNKRyiWXom=lUtzwk|fg~`bXSziTqnat~jQqJ;cMY*{%udb{ӻ}P*kxzQ4pe0qRUou[Yxuw}wkqicMy]_t{igXaAgHtInileĸvbUZ{pvWx&}mVgzr[Ry~}kf}|9yrz`ckX~Dmo~kx]RgqXkV^ktjTu}jiVm>olqbehdyzga}dK{yacjT`ea}z]OPQzkUQOl}V}t^E}?_bm^aN^jtrsu^gz`p`Qqq=pXmohim`rhT~ssOwmf^uip{}\k]v`crHq5xre_a@ikq_u=X~fiv}uylyv}Y~Y{nj~npxrwonkLSqHThi>vZvgtuipXxnKUyNyfxiwix}wTuZ]tintmvS{WXՐw}AylCofoAvvq`w_|4YvE}eVqy^ZSlU`hWbajaxtnjf~zXikrqyvint{l~s]^fXg~iXa|kawklw\zv~WrZiqjW~wok_yxyqg|~ldrznWisXjfJo[lU~v[rOg`Vvhu{JzkSisvpn|lUnyidkwoyNrqefi{ucmTu|nwRtl@gw]F;qLdst}dMas^kǯfTZvpj~nN_yg^u{y}b`{^frAr~ip`@MlXypxvxj`vx|yTm{oR\y{HlHflx]l|d`wLs78ym^rPkQILjjw\m}L_h[CQQjsKÄMsqzs]diLuƆSX8}\IyaxOozp|wj|}{fomkyoaj{}~^OTzwde}zebacXNpu`lodIo{c~}ZNba~pA'r{:Y_y~Pkcvul^IOaSo^pufaWuJzv|llIem]^YGg4ac]uKkYotwEgW~T|{teEwsNeMLUrWQğQj~{|XPvoxYQhkszvs|y}wq{}|dm}~j[Koqbhpny]`~nj]khPcsujqtgrulcY^t}y_}lRp|q{Q9eK%U~wzoZưlWywqhk:keud?tu`i~Xuo8}keusJ8r`aCHtKbqpIehzPq|wd|bVmgTxIJj@;tj{inlKSTZmglhjizx`]|pikn]U}]~}|G\kpqehsuvqiiXw{nmZ[e}xb~{}np~|jhb[ldi~`e{d}{Ukjqfmc~xwkF[clz_fMRul}gdzģbiɗwqei|]:rwz]!Ixa8hYvnP݄ewi`Dam\n=Q=;?AsWPJh|ntmlwbkntUq38`M,zi}|auqvz~]]PllrJFqj[heR{`tsznbqrYOZdLktVETk}zz{lcjTniuye]xUO_{l]mo|h^cp_uTOiXszlvTTotx{klSXS^sr|]_{c`~~\yuppLVb~o`pt`JpnIi}~RlYiztlwfYĨy^^nbIdu;M~uyW+}mzvGmV{`;ryPqgQnЬnM{uETI3]B~amtxv|]ӑMYmgsohsdKZj[g}Y4Qpq|~v}{lziWYci|zYYPblkrywtquwxz|p|btpr_Fp^hg}[@ly~p`pz|zZ~zmgbq\EUVxpkwnnM\gu~yuĩxnrKfV\vAMmpIj~Y3\|b|̶|x`YeyVic[^VHn`tVFnvbuoukeWoNZ[a^(1qmZxxFXsRh~Ԟe߼Zxmsgn,GzEKq/PnPXmI~ylΐ~Ǧi]zxWHXiRuv:9`xbr8Vy]ƺrȥ]sogSeri|SBVSn~\3NLt{|}NyygwȚ]XwnxoK@CKkDIVm]yfuuVrϵldfw»ysqgiy>Xr}i5EQ\TMqffto|xrusQFNRu|jl2AQ}wrrwfh|soroWigiyslgkd}gUWupT}vklYxvwqDl_5PpgW+pncEvlOWxͣIeM~ӊK4st^R[Im_a|mS\Kpj^CJJݚTu|U4je|iUzqU5~GNjTnNckdajs||cNsjqwx>O[goNNM7kQ^\}veszqrUqypRqN^rlUf~]svsr__gq{z_~TsU?rYp~KwB^ZukHxZlHvmvdwdMM[zmY\Qv{mwxnz_bWhyqJb{}yhrsVZ`yotyPCJdpas]oq\_@wzh=}_|~mizcI:A|x~wC?MsTnjuv`mX[juNEsސpUh\hxjY5eWgzlg>bLiwwkfowRvbmpl{XyؕtXOkhipeTaedT_`iw{j{jxeX_y܀xJbo~dMWhNVv{Wkv^pyrw~}tu~rskppx{pm][XqnZ~cforjmKm_ha|āsvz~Z}U~fllewPZya~ioizpujM{tyv||twjgmsGkhfDzs[s[X}|IfTcgֽq\mxb{ee^n6TdinMfqbr}bvxourypqxpNdtvlq^SZusUvxxhi\yz}s^zr{mg|j\>jreIMsffi~sMy`lkv~pllƘkeyuqm{VktlYJ|tRxs[wlys_VZ^ϏAVYՙKfk|xdLMipljrL0mwiTfod}e~Qkarnèp6^ik]gj{yi[W@hyovKEp}t_czw{rQwwfxb<]b{bqXsi_w~v_yc}M{zhydvd[V~xR\LOm{XOQ.mlky|`iw}yssst|uxpjlxYKaGms~LdWOja{ianqXl~irsx[ls_ktDj]?vNq|zpv~}}}hlpw{}pknwxmutmUyLUnw|vqd~ip~{zXnU}~joFarpyzt~gRejrv{dbpl{tpjvguzwHSVTHAdml{סku~hfwn|MUD~nusy^sRrbssep_]pjyxlYwfxμu[VEuusigu\gU]WXocYMe{so{br~r|jeqv̗ihmtfX@k{]VkZ`jpbf{jfuq|h{x~X[~nnouwy}pxjlgSp{n@yx|~ktsyp|v}voiePT_uycvmkqaww{ypFyps__UxnhxkhUghzu\UW[ηnn<6c]Xweops|zr}j~uurZmH|vrygH}n{ytl~\xknSot|l~hvbd}pt|zWjt_Ty\lztsolyjkfzwGQn}]geHN^vU^tzSpl}wgxzd`Rf|wqmrLg_^{~w{uw\ya^sttzy{p_|hl\xdP-=sXl^GNMfXtp{ypXSaefdjgmkfjZspsqcQVTp~mchqf~gsjyÞsueze`\S~~ŖtZKly}]]a}z|c}hTT[~ŝmkrh{xzuf}mi{|meyh`x~jri}uqereUWrht~ovymwkgln{qStgqs]}nwfilr{]hwcw~w[ioRlkthwytjzqlut~Yg}\q_mahvyuemTPmXulsk}xiepo{qg~ymnudYmdq{_ZrIF~p|qyck}~m`cyi`j~{s{ql|zdHywĘiYzM`}kws^nYZx~sT^y{\xovm~omo[y{hXrrwfoiqW\x~grvq{sl}bxykhuzvzln~kmUhjJTIryfkVB^l|}mk\jxx}UOF9]|`< 8?,  O-&Ca--u!Aa!:-q!Aq! E+a3w.*.=CzCfra  !$?, P$w w w*a/!a/!8a !$?, "a/!3 L>.A.C ,,FL> ?,3.!ի?C !; PeF2nA[L ?X?X?X?Xzx2zx2zx2zx2 ?X?X?X?Xzx2zx2zx2zx2 ?X?X'?X?Xzx2zx2zx2zx2 ?X?X%?X?Xzx2zx2zx2zx2 ?X?X$.'?X?Xzx2zx2zx2zx2 gg$.'ggzx2zx2zx2zx2  0/I]You got a TurretCreator.%Y]1UV W #%J$L>:55::$7r**w*a/!.%.a+. a::$::$r**E0w*a/!.%.E.* . ::$ -a+ ::$-a+.   a#P/e ##.FError: You did not set the new control point and turret point! a  "r* |#Beam a 1  a  r * 8|#charger|#beam -'I -(   @E##.NNew controllable turret spawned. Control point and turret point reset. 4'4% \/ O+).b &+ D$tI%(("ի/?&?ի/??9+"?'*M()"+*()& hq#a/! 4r *aoaa/! &.v!u! "F$;q#a/! 4r *aoaa/! .v!u! "?+Yw*.*Y?%.Turret destroyed!|a! a!q!v! G(3<"w *  L @BG *a* -a%//============================================================================= // TurretCreator. // // Item that gives the user the ability to create turrets. // //============================================================================= class TurretCreator expands Pickup; var vector CP,TP; // Control point location and turret point location. var bool bNotFirstTick; // timer debug function tick(float DT) { super.tick(DT); if ( Drawscale != Default.Drawscale ) Drawscale = Default.Drawscale; } simulated exec function THelp() { Playerpawn(Owner).ClientMessage("Turret Creator: Use this item to make turrets."); Playerpawn(Owner).clientmessage("To set a Control Point location, type SetCP"); playerpawn(owner).clientmessage("To set a Turret Point location, type SetTP"); playerpawn(owner).clientmessage("Then do the CMD: Deploy"); playerpawn(owner).clientmessage("Turret classes: 'charger','regular','beam'"); } exec function SetCP() { CP=Owner.Location; pawn(owner).clientmessage("Current location saved as ControlPoint: "$Owner.location); } exec function SetTP() { TP=Owner.Location; pawn(owner).clientmessage("Current location saved as TurretPoint: "$Owner.location); } exec function Deploy( coerce string TurretClass) { local ControlPoint TheCP; local ControlTurret TheCT; If ( CP == Vect(0,0,0) || TP == Vect(0,0,0) ) { Playerpawn(Owner).clientmessage("Error: You did not set the new control point and turret point!"); Return; } TheCP = Spawn(class'ControlPoint',,,CP,Rot(0,0,0)); If ( TheCP == None ) Return; If ( TurretClass ~= "Beam" ) // Spawn a beam turret? TheCT = Spawn(class'BeamTurret',,,TP); else TheCT = spawn(class'ControlTurret',,,TP); If ( TheCT == None ) Return; If ( TurretClass ~= "charger" || TurretClass ~= "beam" ) // Beam turrets and charger type turrets charge shots theCT.bChargerTurret = True; else theCT.bChargerTurret = False; TheCP.MYTurret = TheCT; TheCT.MYPoint = TheCP; TheCT.Health = 2500; TP=vect(0,0,0); CP=vect(0,0,0); Pawn(owner).clientmessage("New controllable turret spawned. Control point and turret point reset."); } simulated state Activated { function BeginState() { THelp(); } Begin: Gotostate('Deactivated'); } simulated state deactivated { // dont do anything } kR$?%a  w*?, ?,?,a 0a 9 n"v!u! 8>P *a U(Vw*a CXGQq!-  N) ZCBYTjP %I//==================================================================================================== // CTurret - Resource importer class. //==================================================================================================== class CTurret extends Decoration; // Models #exec obj load file=..\Textures\Starship.utx package=Starship #exec mesh import mesh=yep anivfile=Models\yep_a.3d datafile=Models\yep_d.3d x=0 y=0 z=0 mlod=0 #exec mesh origin mesh=yep x=0 y=0 z=0 #exec mesh sequence mesh=yep seq=All startframe=0 numframes=1 #exec meshmap new meshmap=yep mesh=yep #exec meshmap scale meshmap=yep x=0.25000 y=0.25000 z=0.50000 #exec mesh import mesh=beamturret anivfile=Models\beamturret_a.3d datafile=Models\beamturret_d.3d x=0 y=0 z=0 mlod=0 #exec mesh origin mesh=beamturret x=0 y=0 z=0 #exec mesh sequence mesh=beamturret seq=All startframe=0 numframes=1 #exec meshmap new meshmap=beamturret mesh=beamturret #exec meshmap scale meshmap=beamturret x=0.22532 y=0.22532 z=0.45064 // Sounds #EXEC OBJ LOAD FILE=..\Sounds\AmbModern.UAX Package=AmbModern #exec audio import file=c:\ugserver\sturrets\sounds\beep.wav Name=Beep1 #exec audio import file=C:\ugserver\sTurrets\sounds\laser_1.wav Name=Laser1 #exec audio import file=C:\ugserver\sTurrets\sounds\laserfire3.wav Name=Laser2 #exec audio import file=C:\ugserver\sTurrets\sounds\Mechanical_1.wav Name=Mechanical  @fRIFFWAVEfmt @@data~mni^|Zikasrd~oI_z^eslerly\UulTjihtcx~`hl`y}bnlf`bqw}iogQb[OyZ^¨dAcMQhXzRiWMpLfZYlSvWUd[kXoiG]VFp”Z[kCbzJT^NxI\YIxvMaYXhLpSQfVdPmnK]aOhp_UY[Qu{WkaZpTl[^kWvZalYizdvxTc]Vk`XwieuO_[UqZt^bkVtZci]|{\ikYrwc|q[kZSpUUXe`FkvNYaXtNkVRlOmX^gU{WXe`dZviL\aKkdYwJ[VRnRuVZePtS`cVrQi^Rwr[|mRfyPVpP]{]uXOygNhXaiSx}T^eVzwWj_[uW_emX^bRd`Qoi`yMZYP{rWtY^kRoX_hYxXheTtu`}s[jVSvzSYYnZJujLdZ`iQwQ\cQvyUf_WxU\bc\Z}bM`YJnb[sH[UQlTvU]dPsU`aVuTiaRts]|oUiUTwxSZZm^LsoPe]^oTuX]hUv}WfaXyY\fh\^fQ`cOmg^vIYXP~pUqX\eNsT^cV}sShaRwr^}kVjvOR|rN[zWpWIugKgX`dOy}P]aS{wTj\YrS_`jX\]Mg[QxbbnI`}SUgU~}Rc]Q|vSh[[kRq]Wj`gXsnTbhVksbW\^V{xZsa^pYq_dk]~|]jj\r{fzx\h~]_{v_hhwh]yo]ohjsaxchncz|cnlf{fknmmf{kgy}jor{pm|vjvsszt~uy{vy{}z|~~~~b4Eg ]lRIFF$WAVEfmt "VDdata                  !""!  "##$%%#  ߀܀ۀ܀        ""!     "*-,)&$#"!                  ߀߀߀                   ހ݀ـՀՀԀӀӀҀԀҀҀրـ܀܀            ހـ׀ԀЀрр΀π̀̀̀Ȁ̀ЀπЀ׀݀ހ  ""#%&$&'&)(%(%##$!" ހހ܀        " #!! !%)')))),)(%"##                ݀ۀ؀ڀ܀݀                                                                                                                                                                                                                              D)7O.6Turret Creator: Use this item to make turrets..3To set a Control Point location, type SetCP.2To set a Turret Point location, type SetTP.:Then do the CMD: Deploy.2Turret classes: 'charger','regular','beam' _He .ApCurrent location saved as ControlPoint: X  `O%d .@pCurrent location saved as TurretPoint: X  9lo-q!m.Turret engaged!.v!u! hVTz//============================================================================= // ControlTurret. // // A controllable turret. // //============================================================================= class ControlTurret expands Decoration; var bool bChargerTurret; var Float Health; var string TurretName; var ControlPoint MYPoint; var int f; var float charge; var kraalbolt proj; var Rotator NewRotation; // Network variable. The new rotation of the turret each frame. function PreBeginPlay() { charge = 0; Disable('Tick'); } auto state Idle { function BeginState() { MyPoint.Disable('Untouch'); MyPoint.Enable('Touch'); } // Not doing a damn thing! Begin: If ( Charge > 0 ) { Proj = Spawn(class'KraalBolt',,,Location,NewRotation); if (proj != none ) { Proj.Drawscale = Charge; Proj.Damage = (Proj.Default.Damage*20*Charge); Proj.Velocity *= 200; if ( Charge > 4 ) PlaySound(sound'Laser2'); else PlaySound(sound'Laser1'); } Charge = 0; } } // Getting controlled. state Controlling { Function BeginState() { if ( bChargerTurret ) Gotostate('ChargeControlling'); else { Pawn(Owner).Clientmessage("Turret engaged!"); Playerpawn(Owner).ViewTarget = Self; MyPoint.Disable('Touch'); MyPoint.Enable('Untouch'); } } function Fire() { } function TraceFire( float Accuracy ) { local vector HitLocation, HitNormal, StartTrace, EndTrace, X,Y,Z; local actor Other; local Pawn PawnOwner; local rotator AdjustedAim; PawnOwner = Pawn(Owner); MakeNoise(PawnOwner.SoundDampening); GetAxes(PawnOwner.ViewRotation,X,Y,Z); StartTrace = Location; AdjustedAim = PawnOwner.AdjustAim(1000000, StartTrace, 0, False, False); EndTrace = StartTrace + Accuracy * (FRand() - 0.5 )* Y * 1000 + Accuracy * (FRand() - 0.5 ) * Z * 1000; X = vector(AdjustedAim); EndTrace += (10000 * X); Other = PawnOwner.TraceShot(HitLocation,HitNormal,EndTrace,StartTrace); ProcessTraceHit(Other, HitLocation, HitNormal, X,Y,Z); } function ProcessTraceHit(Actor Other, Vector HitLocation, Vector HitNormal, Vector X, Vector Y, Vector Z) { local int rndDam; if ( PlayerPawn(Owner) != None ) PlayerPawn(Owner).ShakeView(0.1, 300, 250); if (Other == Level) Spawn(class'LightWallHitEffect',,, HitLocation+HitNormal*9, Rotator(HitNormal)); else if ( (Other!=self) && (Other!=Owner) && (Other != None) ) { if ( !Other.IsA('Pawn') && !Other.IsA('Carcass') ) spawn(class'SpriteSmokePuff',,,HitLocation+HitNormal*9); if ( Other.IsA('ScriptedPawn') && (FRand() < 0.2) ) Pawn(Other).WarnTarget(Pawn(Owner), 500, X); rndDam = 8 + Rand(6); if ( FRand() < 0.2 ) X *= 2; Other.TakeDamage(rndDam, Pawn(Owner), HitLocation, rndDam*500.0*X, 'gattled'); } } Stopped: AmbientSound = None; PlaySound(sound'WindD2'); Goto('Begin'); Begin: If ( Playerpawn(Owner).bFire == 1 ) { AmbientSound = sound'RegF1'; GoTo('Shooting'); } else if ( PlayerPawn(Owner).bAltFire == 1 ) { GoTo('Zoomstart'); } Sleep(0.05); Goto('Begin'); Shooting: TraceFire(0.75); Sleep(0.07); if ( PlayerPawn(Owner).bFire == 0 ) Goto('Stopped'); Else Goto('Shooting'); Zoomstart: if ( Owner.IsA('PlayerPawn') ) { PlayerPawn(Owner).ToggleZoom(); Goto('Zooming'); } Zooming: if (Pawn(Owner).bAltFire == 0) { if (PlayerPawn(Owner) != None) PlayerPawn(Owner).StopZoom(); GoTo('Begin'); } Sleep(0.0); GoTo('Zooming'); } state ChargeControlling { Function BeginState() { Pawn(Owner).Clientmessage("Charger turret engaged!"); Playerpawn(Owner).ViewTarget = Self; MyPoint.Disable('Touch'); MyPoint.Enable('Untouch'); } Stopped: Ambientsound = None; Goto('begin'); Begin: If ( Playerpawn(Owner).bFire == 1 ) { AmbientSound = sound'Mach10'; GoTo('Shooting'); } else if ( PlayerPawn(Owner).bAltFire == 1 ) { GoTo('Zoomstart'); } Sleep(0.05); Goto('Begin'); Shooting: f++; SoundPitch = ( Charge*(255/5) ); if ( charge == 5 && F%3==0 ) { PlaySound(sound'Beep1'); PlayerPawn(Owner).ShakeView(0.1, 300, 250); } else Charge+=0.1; If ( Charge > 5 ) Charge = 5; Sleep(0.1); if ( Playerpawn(owner).bFire == 1 ) Goto('shooting'); Else { If ( Charge > 0 ) { Proj = Spawn(class'KraalBolt',,,Location,NewRotation); Proj.Drawscale = Charge; Proj.Damage = (Proj.Default.Damage*20*Charge); Proj.Velocity *= 20; if ( Charge > 4 ) PlaySound(sound'Laser2'); else PlaySound(sound'Laser1'); Charge = 0; } Goto('Stopped'); } Zoomstart: if ( Owner.IsA('PlayerPawn') ) { PlayerPawn(Owner).ToggleZoom(); Goto('Zooming'); } Zooming: if (Pawn(Owner).bAltFire == 0) { if (PlayerPawn(Owner) != None) PlayerPawn(Owner).StopZoom(); GoTo('Begin'); } Sleep(0.0); GoTo('Zooming'); } simulated event Tick(float DT) { Super.Tick(DT); If ( Level.NetMode == NM_StandAlone ) { // Omg we're in a standalone game, replication is unncessary here. If ( Owner == None ) EndControlling(None); else if ( Owner != None && Owner.IsA('Pawn') && pawn(owner).health < 0 ) EndControlling(Playerpawn(Owner)); Setrotation(Playerpawn(owner).ViewRotation); } Else If ( Level.NetMode == NM_ListenServer || Level.NetMode == NM_DedicatedServer ) { If ( Owner == None ) EndControlling(None); else if ( Owner != None && Owner.IsA('Pawn') && pawn(owner).health < 0 ) EndControlling(Playerpawn(Owner)); // Update rotation server-side for all others to see Else Playerpawn(Owner).Weapon = None; NewRotation = PlayerPawn(Owner).ViewRotation; } //Update rotation client-side for all clients that are NOT THE OWNER. (non controlling players) Else if ( Level.NetMode == NM_Client && !bNetOwner ) { SetRotation(NewRotation); } // Update rotation client-side as well for the OWNER ONLY (the controlling player) Else If ( Level.NetMode == NM_Client && bNetOwner ) { Setrotation(Playerpawn(owner).ViewRotation); } } function ResetVars() { AmbientSound = None; SetOwner(None); } function BeginControlling(pawn Other) { SetOwner(Other); Instigator = Other; Enable('Tick'); If ( GetStateName() == 'Idle' ) { if ( bChargerTurret ) Gotostate('ChargeControlling'); else Gotostate('Controlling'); } } function EndControlling(pawn Other) { ResetVars(); If ( Other != None ) { playerpawn(other).ViewTarget = None; if ( Health < 0 ) Playerpawn(other).clientmessage("Turret destroyed!"); } If ( GetStateName() == 'Controlling' || GetStateName() == 'ChargeControlling' ) Gotostate('Idle'); Disable('Tick'); } function TakeDamage( int NDamage, Pawn instigatedBy, Vector hitlocation, Vector momentum, name damageType) { Instigator = InstigatedBy; bBobbing = false; if (Health<0) Return; if ( Instigator != None ) MakeNoise(1.0); Health -= NDamage; if (Health <0) { PlaySound(sound'Explode1',,255,,100); Spawn(class'FlameExplosion',,,Location); if ( Owner != None && Owner.IsA('Pawn') ) EndControlling(Pawn(Owner)); Frag(class'GlassFragments',Momentum,1.75,12); } } event NotifyDestroyed() { MyPoint=None; Destroy(); } event Destroyed() { if (mypoint!=none) Mypoint.Destroy(); Super.destroyed(); } Replication { Unreliable if ( Role==Role_Authority && !bNetOwner ) NewRotation; // Only update for clients that are NOT the controller. The controller // has the best idea (on par with the server) of what this variable // is (the controller's view IS this variable!). } N//============================================================================= // ControlPoint. // // The point where the turret can be activated (and controlled) from. // //============================================================================= class ControlPoint expands Decoration; var playerpawn Controller; // Current controller var ControlTurret MYTurret; var bool bActive; // Am I activated? function prebeginplay() { Disable('Untouch'); } singular function Touch(actor Other) { super.touch(other); if ( !Other.IsA('Pawn') ) Return; if ( MYTurret == None ) Destroy(); // No turret, no control point. Else { if ( Other.IsA('pawn') ) MYTurret.BeginControlling(pawn(Other)); Disable('touch'); Enable('UnTouch'); } } singular function UnTouch(actor Other) { Super.UnTouch(Other); if ( !Other.IsA('Pawn') ) Return; If ( MYTurret == None ) Destroy(); Else { if ( Other.IsA('pawn') ) MYTurret.EndControlling(pawn(Other)); Disable('Untouch'); Enable('touch'); } } function destroyed() { if ( MyTURRET != none ) Myturret.NotifyDestroyed(); super.destroyed(); } W-X[ CCC?Ô D8c#;#{˷{˷;%L%G%%I$&&$IVI$I$ωωω&&ω&ω& &I%KVKK KVK% ŗŗ $ VII % $%Iŗ 񛏄 ww#Q#QD#F#WDˏFˏhhF͏FŏFŏWD?PD?PWwFwF&xoww˗ywwxoCA'> V $ $'> V; ; '˷˷'>>V$'V&$'>&>&>&?&?v&?6&;&?&??ŗŏŏI~FILFOF ~I KKI %GOF%I%F~%LLIFO~F% %K%%0%Ws$v%9V?v?v??%?%?vtVt%t%w4w5ww#yyyŗyŗ˗y{#y99y˗˗9;9ŗŗ9%$4Vtt%?6V?v?v?6%??%?6&44%4ypVsvy9>6404tt>6>v>v%p0%Ws%y%v9Vsvpy%t%?6%?vSWi "" " c   .. .. * * * **KJKJKKJKJ KK!"="==       # #$%%&$$%xdL\'xd\p(#$c($%c(%&(&)''**( ( &"+sr&+)r,-.,./012""023"t 034t t567@@`578@``76979:;<8;87;7=;=>;>:;:?;?@AB6A65A5CACDAD958;5;D?:E?EFGHXGHIGIJGJKGKLJIFJFEMN4M433;@3@M04Nvv0NOvvPQRPRJtPJEttPE9tD1QDQPDP9S,/JS/TJSTUJSUVJJSVWJSWXJYSXYXZ[\]*\\[]^*\*[Z_,dd`ab`bc^R`^`c,Sb,baY[c""Ycb"0-a,PP0a`,P,T/.T.dVefVfWgeh,PPghi,P,jGk,jkl,,jlm,,nog0ngj00ih i  G Gi)I..vIH.vvGpk,O.>.vON.vvgqr,d.O%vs!rs!stuoou)o)vsv< sv)< s)+<<FIuv:\TndFu?v:ndJtNMtM@UTTdwxyawyzawz{w{|w|}~~~~~~||||zzxwwwxxyzyyaa|{e|ef}eeeii'kp'ky'kyy'#ky'#(kq'(*kqky䓓 y yVU V higXWfXfZcc<<<ttsbbbKKKbߊK]bߊ\]b\\ b b \"\\"\ccggqkknq0,0,nq0,,no0,777LLpv\JvJxd**uut_fddfdr>r>aaXkXkaeeefffkpkykyykykqkqky䓿yyii"AZc  #'+16;CGL Q[^bfikns y   &')+049:<BG LUX^djmrw{ #(+35;?CGKN S]aflquz   '+-/38@EJNQX\bfjpsy{  CCC?Ô D9kE ~}~ $%  I - $ $%* *+,- ! "#".&"#&' !#'(!()./%*+&'(),-)/+,./01]lm0p01rs1]^r234TUpq2Z2334QRS4PQT56ABEF57@A5678:;69:E78DY\8=>G9:;<=>?EFR9;<<=>?GH?RS@ABCD@BCCDFZ[\GHOXYHNOIJKLMxIJJKNKLNOWXLMMPQSPTUUVWXY[\VZ[VWj]^_`abcl^_rs_``atuabubcdcdnodgefgneeffjkghijkqhmpqhilmoiknostvtuvw{|vw}w}~xyz|xy  yzz{|   {    1:;JK;>?<=?67=T    NONHIHLMKLST RS OPHIJKLM !"#$%023 39 !4589!"467"#F#$,-./FG$%&'/DE%D&(./&'()*+'+E(),.)*,-*+-G012IJV01:AB2389UV456NOPQRSTUV58U7<=@ABC:;>@A<>?@BCDECFGMPQQRCCC?Ô DIf>If>I>5> *w,//============================================================================= // BeamTurret. //============================================================================= class BeamTurret expands ControlTurret; var int ChargeRating; // How charged the turret is. var bool bLeft; // Left or right shot? State ChargeControlling { Function BeginState() { Pawn(Owner).Clientmessage("Beam turret engaged!"); Playerpawn(Owner).ViewTarget = Self; MyPoint.Disable('Touch'); MyPoint.Enable('Untouch'); } function Discharge() { local actor AnActor; local vector Start,End,HitLoc,HitNormal,bMomentum,ShootOffset,x,y,z; // start,end,and hit location local float DMG; /* ChatLog: .:..:: Start = X*ShootOffset.X+Y*-ShootOffset.Y+X*ShootOffset.Z + Location; ChatLog: .:..:: and on right ChatLog: .:..:: take away that - */ if ( ChargeRating > 75 ) Playsound(sound'laser2'); else Playsound(sound'teleprt2'); // code here to fire a beam (use a trace, do damage) GetAxes(Pawn(Owner).viewrotation,x,y,z); // Fire left turret Start = Location + (ShootOffset >> NewRotation); Start = X*ShootOffset.X+Y*-ShootOffset.Y+X*ShootOffset.Z + Location; End = Location+(Vector(Pawn(Owner).ViewRotation)*2500); DMG = ChargeRating*6; AnActor = Trace( HitLoc, HitNormal, End, Start ); BMomentum = (ChargeRating/1.2)*(Normal(HitLoc-Start)); if ( AnActor!=Level && !AnActor.bIsMover == False ) { AnActor.TakeDamage(DMG,Pawn(Owner),AnActor.Location,BMomentum,'zapped'); } // Fire right turret Start = Location + (ShootOffset >> NewRotation); Start = X*ShootOffset.X+Y*ShootOffset.Y+X*ShootOffset.Z + Location; End = Location+(Vector(Pawn(Owner).ViewRotation)*2500); DMG = ChargeRating*6; AnActor = Trace( HitLoc, HitNormal, End, Start ); BMomentum = (ChargeRating/1.2)*(Normal(HitLoc-Start)); if ( AnActor!=Level && !AnActor.bIsMover == False ) { AnActor.TakeDamage(DMG,Pawn(Owner),AnActor.Location,BMomentum,'zapped'); } ChargeRating = 0; } Discharging: AmbientSound = None; If ( ChargeRating > 0 ) Discharge(); Goto('Begin'); Shooting: ChargeRating++; SoundPitch = ChargeRating*2.55; Sleep(0.02); if ( PlayerPawn(Owner).bFire == 1 ) Goto('shooting'); else Goto('discharging'); Begin: If ( Playerpawn(Owner).bFire == 1 ) { AmbientSound = sound'Ambmodern.hum62'; Goto('Shooting'); } else if ( PlayerPawn(Owner).bAltFire == 1 ) { GoTo('Zoomstart'); } Sleep(0.05); Goto('Begin'); Zoomstart: if ( Owner.IsA('PlayerPawn') ) { PlayerPawn(Owner).ToggleZoom(); Goto('Zooming'); } Zooming: if (Pawn(Owner).bAltFire == 0) { if (PlayerPawn(Owner) != None) PlayerPawn(Owner).StopZoom(); GoTo('Begin'); } Sleep(0.0); GoTo('Zooming'); } M v! 2 va.Beam turret engaged!.v!u! v! m2lwIZa  : Z= electified2Y//============================================================================= // Zapped. //============================================================================= class Zapped expands UnrealDamageType; h ga h g g sm gj nm gq gk q] h: gs gZ gP gD ho s` qE s\ gi gg gl wn wC gt tJ ws gu sj k gH gd tb gv k( gq sk k h ul k hO q{ k w_ v[ gY tx n9 u^ tt gp k h@ g ty uv lG k lG gJ hX gM hQ hU dV gN gK ~S dT eW gL tx s k wf d\ d] hF e_ gr hK hV gI dA hW eU dO hN dP hL eM<$g m1X$dT<} x@| DA[ QA;w ^A1Q kA@h xA;c EB;T RBCJ _BylBizB[ IC;x VCE@ cCAbpCGh ~CEr KD;R XDCI dDAF qD;o ~D;p KEFh XEz eE;S qEEx ~EEy KF@^ XFHh dF@xqF@e FEf LGCH YG@g eG~NrGEt @;t MEe ZEg gEh tEA A;g N?h [` hEB tDK@N$SK:_^;y }D} JB} V>R b>un>d|CiJQs<,oD:1ZsNM\[&Ew=+e|F$oaNP APx^ A.V = ND dR dv wZ (0Q z A @tM @y [ c h { u $A A|4l%e hQ Q/y >e h >a u "A (0c AG>S WQ C[o Y|4TJ Bn^ =4L Euh AG ]A)|iAHheAOgM=dt|4_zX|4YwA-*PNmzN4B-g i2<\I1G e'q$kX4dC