*E`@ZiZ9[O9P`None InternalTimeColorbMaskedUClamp ThermoLookPaletteMipZeroVClampVSizeUSizeSetTextVBitsUBits SetHelpText_cc SLV2WindowCoreGetLookAndFeelTextureUWindow MaxColorSystem GetValueSLOCWgetFontUMenu SetValue SLOHTMLPageCreated updateLabels SetRangeLoadCurrentValues BeforePaintSetHTMLCreateControl ClientClassNotifyctPresEntriesLoadDefaultValuesSLOPage AutoWidthAddPage AfterCreate SLV2Weblink setStoredarmStatusEntriesAlign ParseHTML SetEditableAddItem TextColorgetHTTPHeaderGetPage ctRotEntriesResizedResolvePath flipToTab SLOClientCW getStored SLOServerCWsuckSetSelectedIndex stripLinesPaintgoIRC updateHTML SaveConfigsEngineCloseWhite PreBeginPlayActiveClear SendTextConsoleCommandOpen ThermoUnChkD ThermoMenuTL ThermoMenuT ThermoMenuTRThermoMenuLine ThermoMenuL ThermoMenuR ThermoMenuHM ThermoMenuHL ThermoMenuHR ThermoMenuBL ThermoMenuB ThermoMenuBR ThermoChkD ThermoChkThermoClientArea ThermoBarWinThermoBarTile ThermoButtonThermoBarOutMThermoBarOutLThermoBarOutR ThermoBarL ThermoBarInR ThermoBarMaxSetFont ShowWindowThermoMenuArea ThermoBarInM ThermoBarInL credCommand credsHelpAddText bCreditsPlayMenuSoundircHelp CloseUWindow credsTextGotoTab clientTab FW_HitTestFW_GetClientArea Tab_DrawTabTab_GetTabSize SetTextColor closeHelpMenu_DrawMenuBarItemSB_SetupDownButton AfterPaint fuelcapHelp Menu_DrawPulldownMenuBackground fuelcapTextTab_DrawTabPageArea maxammoHelpTab_SetTabPageSizeTab_SetupRightButtonFW_DrawWindowFrameDrawClientAreaCombo_SetupSizesFW_SetupFrameButtonsCombo_GetButtonBitmaps Combo_Draw GetValue2shockwaveTextTab_SetupLeftButtonCheckbox_SetupSizes SB_HDraw SB_VDrawMenu_DrawPulldownMenuItemSB_SetupRightButtonSB_SetupLeftButtonarmStatusHelpFindItemIndex2GetSelectedIndexSB_SetupUpButton Editbox_DrawComboList_DrawItemEditbox_SetupSizesComboList_DrawBackgroundpilotOverTextGetLookAndFeelButton_DrawSmallButton botsObeyHelpControlFrame_DrawMenu_DrawMenuBar botsObeyTextCombo_SetupRightButtonCombo_SetupLeftButton nstayTextControlFrame_SetupSizesmutMaxAmmoHelp noyjHelp noyjTextreplaceVialsHelpreplaceVialsTextreplacePacksHelparmStatusText storelen nstayHelpshockwaveHelp blackHelp blackText revYHelp revYText showKeysHelppilotOverHelp ctRotHelp showKeysText maxammoText ctPresText SLOWindowSLOServerWindow SLWeblinkSLOModMenuItemSLOManualWindow SLOManualCWSLOInfoWindow SLOInfoCWSLOHTMLTextAreaDoJoinUWindowComboControlResolveFailedClosedOpened ReceivedText BindPort ResolvedFFHelp MenuCaption RandomHelpExecute DefaultsHelp MenuHelpreplacePacksTextmutMaxAmmoText CloseTextorig ctRotText ctLenHelp ctLenText ctPresHelp ctOnText ctOnHelpircText manualTabinfoTablastModHeader WindowTitleSLOClientWindowhostsetDefaultWarheadcontrailClass InactiveSActiveSMiscPort ThermoUnChk RandomText DefaultsTextFFText InactiveOffset ServerTab LoadUBrowserIpDrvgetVersionString TabSelectedMComboBtnDisabled EditBoxBevelTabUnselectedLTabUnselectedR TabSelectedL CreateWindow ComboBtnDown ComboBtnUp FrameTitleYFrameInactiveTitleColorDrawClippedTexture BringToFront TabSelectedRFrameBSize_ScrollbarWidthDrawStretchedTextureFrameLDrawStretchedTextureSegmentFrameTFrameActiveTitleColorSBUpUpSize_TabAreaHeight SBUpDownFrameBRClipTextWidth FrameTitleX SBDownDown SBDownUpNormal ClipTextTabUnselectedM SBLeftDownSBDownDisabledSBLeftDisabledUWindowMenuBarItem ActiveWindowTextXSetSizeFrameBLFrameRFrameTR bUseRegionImageXImageYEditAreaDrawXFrameTL bDisabled ViewportUWindowRootWindowSize_TabSpacing DownTextureWinLeft UpTexture SBUpDisabled WhiteTexture OverTexture DownRegionItemsSize_ScrollbarButtonHeightEditBoxCanvasButton LeftButton RightButtonSpacingDrawMiscBevelCaptionTabArea WinHeight DrawUpBevelStaticSaveConfig MenuSubArrowRoot Selected bReleased TextBorder SBLeftUp FrameHitTestOver SliderWidthDesiredHeightTab SBRightUpUWindowFramedWindowUWindowComboLeftButton SBBackground SBRightDownFramed ThumbStartSBRightDisabled FrameSBR FrameSBLFrameSBCloseBoxOffsetX CloseBoxUp CloseBoxDownGetPlayerOwnerUWindowMenuBarUWindowTabControlTabAreaCloseBoxOffsetY LevelInfo UWindowBaseUWindowEditControlWindowConsoleMenuBar DesiredWidthFontUMenuBlueLookAndFeelActorUWindowHTMLTextAreaUWindowTabControlUWindowButtonUWindowPulldownMenuUWindowWindowTextY UpRegionUMenuRootWindowDisabledRegion OverRegionUMenuMultiplayerMenuEditAreaDrawYUMenuPageWindowUMenuFramedWindowUMenuModMenuItem UMenuMenuBar Multiplayer CenterWidth CenterPosUBrowserMainWindow UBrowserPagesUWindowDialogControlBrowserWindowbRotate MenuItem BigSelect LittleSelect WindowOpenUWindowCheckboxUWindowSBDownButton PlayerPawnUWindowClientWindowUWindowSBLeftButtonUWindowComboButton ParentWindow bMouseDownDisabledTextureUBrowserIRCSetupClientUBrowserIRCSystemPageUBrowserIRCWindowUBrowserMainClientWindow InternetLinkTcpLinkServerData bButtonsIpAddr SetupClient PageControl ServerCombo ChannelComboIRC SystemPageRT LinkModeChannel ShockWaveSLV2 StrangeShellUtilSLHUD contrailStrangeMutatorPlayerSLAmmo StrangeWave Konglauncher StrangeExpllife WinWidth StrangeAmmobReplaceVials bDDShort shockMult bCanOverride bNeverStayWinTop bShowKeysIconsconfigMaxAmmofuelthermobNoYJ SLV2Texturescwrandom teamDamage bNoContrailswarstatbBotsObeyOrdersbRevY bNoBlack bDDStartbDDEnd bViewAlignbReplacePacks bMaxAmmobRandomPlacementoptoptbackListSoundTextureUWindowComboListBlackConsoleUWindowListControl UWindowListUWindowSBUpButtonUWindowComboRightButtonUWindowDialogClientWindowUWindowControlFrameClass ClientAreaStatusBarText bStatusBarPackage CloseBoxmodtimenlUWindowSmallButtonbDateOK TextBufferlportObjectheadersEnum oldfontslafcocl FunctionctOnUWindowSmallCloseButton MiscBevelRctPres MiscBevelT MenuTickStructctLenUWindowDynamicTextAreaUWindowTabControlLeftButtonctRotUWindowTabControlRightButtonUWindowPageControlPageName showKeysUWindowPageControlUWindowPageWindowrevYUWindowTabControlItemUWindowPulldownMenuItemUWindowHSliderControlUWindowSBRightButton StrPropertyStructPropertyUWindowScrollingDialogClientUWindowEditBoxstoredClassPropertymodtObjectPropertyFloatProperty replacePacksUWindowVScrollbarUWindowFrameCloseBox replaceVialsUWindowHScrollbar ReturnValuenoyjG bLeftmostTab mutMaxAmmoBRnstay bSizable MiscBevelL botsObeyCombo bActiveTab armStatusSubMenutW pilotOver LookAndFeelXSC MiscBevelB ScriptTextfuelcapt TextSizeff BoolProperty ThumbWidthEicloseB defaultsBircBcredsB ThumbHeightYW bShowTextHTMLFontstempdef1def2gap IntPropertymmpcp BytePropertypccapOWThermoActiveFrame DrawColor bSelectedPGetEntryLevelIP ReplaceTextUWindowLookAndFeelIndexMaxAmmoCRHLastText bCheckedThermoInactiveFrameLinkOwner Palette1ValueCommandRegionNextLItemMItemTopPagetH ThermoMisc EditBoxWidth MenuSoundboldboldedBeRW @ &&&...111555999===>>>???@@@AAABBBDDDIIIJJJLLLPKKMMMQKKPLLRKKNNNSKKPPPQQQRRRTTTUUUVVVWWWXXXZZZ^^^bbbfffjjjnnnqqqsssyyy{{{}}}~~~:S-Y672Pkq@YdR Tad^[Xfq#B{ZoyO@nc~bgjNwa} 3}2!Rv3}3}3}3}3}3}qD_]Last-Modified: ~"mDF[C;YHmaRCFEYCF]lHwpK=MAFy>k]Jf Rv]T$;Y;Y;Y;Y> Y3}+U]<;No Weblink data. Please wait...n"b]www.planetunreal.comh"P@JD@~E' ]T$a))_4jb)))n"2*333F*.,( `*#C? tM;R@s@KH :m. xT{2r[>0o o o o #I`]Strangelove V2 Options@_VlUswI]GCA$SxnAII i$AfAa/!E.Al  GW]|S<2~H]T$|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڋ_4_4_4|.Xڊ|.Xږ|[$|[$|[$|[$|[$|[$|[$|[$|[$|[$|[$|[$|[$|[$|[$|[$|[$|[$|[$|[${u|.Xڍ{u|.Xڍ{u|.Xڍ{u|.Xڍ{u|.XڍM[]|.Xڍ7_47|.Xڍ7|[$7|[$N |[$^n|[$7|.Xڍ{u7^nN M[]{u{u{u{u{uM[]777N 77^n|.Xڍ{u|.Xڍ{u|.Xڍ{u|.XڍM[]|.Xڍ7_47_4|.Xڍ7|.Xڍ{u|.Xڍ{u|[$^n|[$N |[$7|[$7|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڋ_4_4_4_4_4|.Xڊ|.Xږ|[$|[$|[$|[$|[$|[$|[$|[$|[$|[$|[$|[$|[$R]"!Replace Medboxes With Fuel Coresl]PNIf checked, replaces medboxes with fuel cores, with the regular SLV2 mutator.k]&%Replace Health Vials with Fuel Coresj]TRIf checked, replaces health vials with fuel cores, with the regular SLV2 mutator.j]Random Strangelove SpawnsN]MKUseful for maps without Redeemer placements with the regular SLV2 mutator.i]('Classic Strangelove (No Yellow Jacket)h]>=Removes the Yellow Jacket from both Strangelove V2 mutators.S]Give Maximum Ammog]wuGives maximum ammo to the Strangelove and Yellow Jacket in the Strangelove V2 mutator, similar to the arena version.e]Strangelove Never Stayso]TRIf true, the Strangelove will disregard the weapon stay settings, and never stay.b]Bots Obey Orders as Gunners_]<;If unchecked, bots may jump off depending on their orders.m]Default Warhead StatusT]/.Determines the default status of the warhead.\]$#Pilots Can Override Warhead Statusv]10Pilots can change the warhead status in-flight.L]Shockwave Size:p]#"The shockwave size on detonation.y]Maximum Strangelove Loadout:B]32The maximum number of Strangeloves you can carry.@MFuel Capacity:~])(Amount of fuel Strangeloves start with.l]Team Hull Damage:L]FDPercentage of damage your Strangelove will take from friendly fire.-]Auto-Armed-  Disarmed2*333U@]Nv:2UJ@]T$|.Xڊ|.Xڊ|.Xڊ|.Xږ|[$|[$|[$|[$|[$|[$_4_4_4|.Xڊ|.Xڊ|.Xڊ|.Xږ|[$|[$|[$|[$7|.Xڍް<Ŋ|.Xږ|[$ֲֲֲֲֲֲֲֲֲֲֲֲֲ|[$_4ֲֲֲֲֲֲ7|.Xڍ[h|.Xڍֲް<ō7[h7ֲֲֲֲֲֲް<ō7[h|.Xڍ7|.Xڍް<Ŋ|.Xڍ7|.Xڍ[hֲֲֲ|[$|[$ֲֲֲ_4|.Xڊ|.Xږ|[$|[$|[$|[$_4_4_4_4_4_4|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.XZ]Contrails Enabled[]$#If checked, contrails are enabled.z]Contrail Presence:Y]fdThe lower the setting, the more aggressively contrails will be inhibited when the frame rate drops.%] Minimum%Medium%High% MaximumX]Contrail Lifetime:W]#"Effectively, the contrail length.V]Contrail Rotationw]CARotation style for contrails. Set to none for minimal CPU usage.5]None5  Constantx]Show Keys on HUDu]0/If checked, the keys are displayed on the HUD.t]Reverse Mouse Y Axiss]?>If checked, the mouse Y axis will be reversed while piloting.r]Reduced Explosion Qualityq]DBCheck this to reduce explosion quality. May increase performance.dK@@@rSwe@g{P|B@S@l@Xdxba@@kcb^huijo^p@m{OTA@q@@yVK@QtP0<@HuiyN@x@@Q@K3~@lN_@ORO_JW`V[@A@]u@H[j@fi@cn@Wa@@@H@o@k@@8@L@@kq/G @@h@E@t@B@{|yZ@v@@V@s@ @C@9@G@L@E@|@@}@I@J@I@F@K@G@O@C@S@V@W@@Y@Z@@\@`@v@^IbQ@}I@cghB@N'RmnUpq@tu@lRy@z@j@B@{M@UN@A@P@zO|D|g$#HBEL$#FRC@F ȜRv+8]/0fus/slv2/manual.htmlDAG_}$#HREcBHA}Rv;Y+8]/0fus/slv2/readme.htmlKJ6CI`+~7`K4?{?{7`?{imP Yo /T2В7`7`ВВ7Xä7Xä7Xä7Xä7Xä7Xä7Xä7Xä7XВ7Xä7Xä7Xè7`7`7`7`7`?{$7`?{$ВВ7Xä7Xä7Xä7Xä7Xä7X^]InfotMClient OptionsoMServer Options]]ManualT= Save/Closez]*)Save all settings and close this window.k] DefaultsP]'&Restore default Strangelove settings.\]IRC #strangelovep]DBOpen IRC chat window and connect to #strangelove on EnterTheGame.r] View Creditsl]View the Strangelove credits.k]#"open ..\Save\SLV2CreditsMovie.usanLQaJgT$#J|@I@PM@f~igT@FZ|e\]gX`abX^[   " """*"w ^@zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[_   " """**"w 2_@[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[   " """*" w _zz[zz[[[[  " """*"w R`@zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz   " """*"w `zzzzzzz[[rY3eIrX*X%Y(X&Y(]-VXcX   " """*"w a@zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz   " """*hff"w %@zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz[zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz[zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz[zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz[zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz[zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz[zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz[zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz[zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz[zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz[z[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzqqqwwrqllllllllzzzLzzzzzzzzzzzzzHzzzzzzzzzz/88765321BzzzzzzzzzzzzzzzzzzzzzzLzzzzzzzzzzzzz,zhhhhhhhhG8========KzhhhhhhhhGzzhhGzzLzzzzzzzzzzzzz,zhhhhhhhL5========KzhhhUhhhhLzzhhLzzLzzzzzzzzzzzzz,zhhhhhhM5=======KzhhUhUhhhMzzhhhMzzLzzzzzzzzzzzzz,zhhhhhhP3======KzhUhhhUhhPzzLzzLzzzzzzzzzzzzz,zhhhhhhhhP2======KzhhhhhhhhPzzhhhhhMzzLzzzzzzzzzzzzz,zhhhhhhhhX1========KzhhhhhhhhXzzhhPzzLzzzzzzzzzzzzz,lGLMPRTXX:KKKKKKKKKKlGLMPPRTX:zzhhhhhhhXzzLzzzzzzzzzzzzz,zlGLMPRTX:zzLzzzzzzzzzzzzz,zzzLzzzzzzzzzzzzz,zzzzzzzzzz/88765321BzzzzzzzzzzzzzLzzzzzzzzzzzzz,zhhhhhhhhG8========KzhhhhhhhhGz/8765321BzzLzzzzzzzzzzzzz,zhhhhhhL5========KzhUhhhUhhLz8=======KzzLLLLLLLLLLLLLL<zhhhhhhM5======KzhhUhUhhhMz5===zzzhhhhhhhP3======KzhhhUhhhhPz3===zzzzzzzzhhhhhhhhP2=======KzhhhhhhhhPz2====zzzzzzzzzzzzzzzzzhhhhhhhhX1========KzhhhhhhhhXz3=zzzhhhhhhhGzzzzzlGLMPRTXX:KKKKKKKKKKlGLMPPRTX:z2=====KzzzhhhhhLzzzzzz1==KzzzhhhhhMzzzzzzzzzzzzKKKKKKKKKzzzhhhhhhLzzzzzzzzzzzzl/853321KzzzzzzzlzzzzzzzzzzhhhhhMzzzzzzhhhhhhG8======KzhhhhhhGzzzzzzzzzzzzzzzzzzzzzhhhhhPzzzzzzhhhhhL7======KzhUhhhhLzzzzzzzzzzzzzzzzzzzzzhhhhhhhXzzzzzzhhhhhM6=====KzhhUhhhMzzzzzzzzzzzzzzzzzzzzlGLMPRTX:zzzzzzhhhhhM5=====KzhhhUhhMzzzzzzzzzzzzzzzzzzzzzzzzzzhhhhhP3=====KzhhUhhhPzzzzzzzzzzzzzzzzzzzzzzzzzzhhhhhR3=====KzhUhhhhRzzzzzzzzzzzzzzzzzzzz/8765321BzzzzzzhhhhhhT2=====KzhhhhhhTzzzzzzzzzzzzzzzzzzzz8=======KzzzzzzhhhhhhX1======KzhhhhhhXzzzzzzzzzzzzzzzzzzzz5=======KzzzzzzGLMMPX:BKKKKKKKzGLMMPX:zzzzzzzzzzzzzzzzzzzz3=====Kzzzzzzzzzzzzzzzzzzzzzzzzz2=====Kzzzzzzzzzzzzzzzzzzzzzzzzz3======Kzzzzzzzzzzzzl/853321Kzzzzzzzlzzzzzzzzzzzzzzzzzzzz2=====KzzzzzzhhhhhhG8======KzhhhhhhGzzzzzzzzzzzzzzzzzzzz1=====KzzzzzzhhhhhL7======KzhhhUhhLzzzzzzzzzzzzzzzzzzzzKKKKKKKKKzzzzzzhhhhhM6=====KzhhUhhhMzzzzzzzzzzzzzzzzzzzzzzzzzzhhhhhP5=====KzhUhhhhPzzzzzzzzzzzzzzzzzzzzzzzzzzhhhhhR3=====KzhhUhhhRzzzzzzzzzzzzzzzzzzzz/8765321BzzzzzzhhhhhR3=====KzhhhUhhRzzzzzzzzzzzzzzzzzzzz8=======KzzzzzzhhhhhhT2=====KzhhhhhhTzzzzzzzzzzzzzzzzzzzz5=======KzzzzzzhhhhhhX1======KzhhhhhhXzzzzzzzzzzzzzzzzzzzz3==KzzzzzzGLMMPX:BKKKKKKKzGLMMPX:zzzzzzzzzzzzzzzzzzzz2==Kzzzzzzzzzzzzzzzzzzzzzzzzz3=====Kzzzzzzzzzzzzzzzzzzzz2=====Kzzzzzzzzzzzzzzz/87653321Bzzzzzzzzzzzzzzzzzzzzzzzz1==KzzzzzzhhhhhhhhG8========KzhhhhhhhGzzzzzzzzzzzzzzzKKKKKKKKKzzzzzzhhhhhhhhL5========KzhhhhhhhLzzzzzzzzzzzzzzzzzzzzzhhhhhhM3========KzhUhhhUhMzzzzzzzzzzzzzzzzzzzzzhhhhhhL3======KzhhUhUhhLzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzhhhhhhhM2======KzhhhUhhhMzzzzzzzzzzzzzzzzhhhhhhhGzzzzzzhhhhhhhhM3=======KzhhhhhhhMzzzzzzzzzzzzzzzzhhLzzzzzzhhhhhhhhP2========KzhhhhhhhPzzzzzzzzzzzzzzzzhhMzzzzzzhhhhhhhhX1========KzhhhhhhhXzzzzzzzzzzzzzzzzhhhhhLzzzzzlGLMPPRTX:KKKKKKKKKKlGLMPRTX:zzzzzzzzzzzzzzzzhhhhhMzzzzzzzzzzzzzzzzzzzzzhhPzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzhhhhhhhXzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzlGLMPRTX:zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzD*zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz[zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz[aaCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzQLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz   " """**"Mw v@ [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[lEG6 =,6 =,6 =,-\ ?6?6?6?6?6?6- ?6?6?6?6?6?6?6?6-r ?6?6?6?6?6?6?6--BB ?6?6?6?6B?6?6?6?6- ?6?6?6?6?6B?6?6?6?6-j-ur ?6?6?6?6?6?6?6-- ?6?6?6?6?6?6?6?6?6-W ?6?6?6?6?6?6?6?6?6-w- ?6?6?6?6?6?6?6?6-er    8 ???,- 6 $6 $6 $D @?, ?,6 =,6 =,6 =,    " """*<<*"w M@@@>>>>>>A@yxxvvvvA@ynnnnm\A@xn/o/m^A@xno/om^?@xn/o/m`?@xnnnmmc?@p]_`bdY?@>>>>>AA?   " """*..*"ߢw @vuuttssvgggfeEugheIughheIugheNugffeeVjFJOSW9   "@ "@"@"@*oo"7٢w @@zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz[zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz[zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz[zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz[zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz[zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz[zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz[zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz[zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz[zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz[zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz[zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz[z[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkzZZkzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzZZkzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzZZkzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzZZkzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzZZkzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzZZkzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzZZkzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzZZkzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzZZkzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzZZkzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzZZkzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzZZkzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzZZzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC. C............................................. @@   " """*":Ӣw 2@zzzzzzzzzzzzzzzzzz[zzzzzzzzzzzz[zzzhhGz[zzzhhLz[zzzhhhMz[zzzLz[zzzhhhhhMz[zzzhhPz[zzzhhhhhhhXz[zzlGLMPRTX:z[zzz[zzzzzzzzzzzzzz[[[[[[[[[[[[[[[[  " """*"Q͢w zzzzzzzzzzzzz[   " """*"&Dw @[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz  " """*"K7w zzz  " """*"Mw fzz[  " """**"¢w [[[[[[[[[[[[[[XSv6\66\66\DS?66S-6\DS?666\DS?66\   " """*MMM*MMM"w \   " """*"}w @zzzzzzzzzzzzzzzzzz[zzzzzzzzzzzz[zzzhhhhhhhGz[zzzhhLz[zzzhhMz[zzzhhhhhLz[zzzhhhhhMz[zzzhhPz[zzzhhhhhhhXz[zzlGLMPRTX:z[zzz[zzzzzzzzzzzzzz[[[[[[[[[[[[[[[[   " """*"]*w @[[[z[[[z[[[z[[[z[[[z[[[z[[[z[[[z[[[z[[[z[[[z[[[z[[[z[[[z[[[z[[[z   " """*"w @zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz[[[[[[[[[[[[[[  " """**"Ũw P[[[[[[[[[[[[[[[  " """**"ʣw [[[[[[[[[[[[[[[]Fe2f22@?,@h(2?,i(2?,m@2@?,?,@p62?,?,{22@@?,j@2?,@@?,o@2@@?,?,O   " """**"w [[[[[[[[[[[[[[[   " """*522*"w  @ 444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444 44444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444) 44444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444) 44444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444) 44444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444) 44444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444) 44444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444) 44444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444) 44444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444) 44444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444) 44444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444) 4))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) 444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444 44 40003320//////// 4 4 4!4444444444444  4444444444  4444444444 4 444444444 4 4!4444444444444  4--------  4-------- 4 4-- 4 4!4444444444444  4-------!  4---'----! 4 4--! 4 4!4444444444444  4------"   4--'-'---" 4 4---" 4 4!4444444444444  4------#    4-'---'--# 4 4! 4 4!4444444444444  4--------#    4--------# 4 4-----" 4 4!4444444444444  4--------(  4--------( 4 4--# 4 4!4444444444444  /!"#%&(( /!"##%&( 4 4-------( 4 4!4444444444444  4 /!"#%&( 4 4!4444444444444  4 4 4!4444444444444  4444444444  4444444444 4 4 4!4444444444444  4--------  4-------- 4  4 4!4444444444444  4------!  4-'---'--! 4  4 4!!!!!!!!!!!!!! 4------"    4--'-'---" 4  4 4 4-------#    4---'----# 4  4 4 44444 4--------#   4--------# 4   4 4 444444444 44444 4--------(  4--------( 4  4 4 4------- 44444 /!"#%&(( /!"##%&( 4    4 4 4-----! 44444 4   4 4 4-----" 44444 4444444 4 4 4------! 44444 4444444/  4444444/ 4444444 4 4 4-----" 44444 4------  4------ 4444444444444444444 4 4-----# 44444 4-----!  4-'----! 4444444444444444444 4 4-------( 44444 4-----"   4--'---" 4444444444444444444 4 /!"#%&( 44444 4-----"   4---'--" 4444444444444444444 4 44444 4-----#   4--'---# 4444444444444444444 4 44444 4-----%   4-'----% 4444444444444444444 4  44444 4------&   4------& 4444444444444444444 4  44444 4------(  4------( 4444444444444444444 4  44444 4!""#(  4!""#( 4444444444444444444 4   44444 4444444444444444444 4    44444 4444444444444444444 4   44444 4444444/  4444444/ 4444444444444444444 4    44444 4------  4------ 4444444444444444444 4   44444 4-----!  4---'--! 4444444444444444444 4 44444 4-----"   4--'---" 4444444444444444444 4 44444 4-----#   4-'----# 4444444444444444444 4 44444 4-----%   4--'---% 4444444444444444444 4  44444 4-----%   4---'--% 4444444444444444444 4  44444 4------&   4------& 4444444444444444444 4  44444 4------(  4------( 4444444444444444444 4  44444 4!""#(  4!""#( 4444444444444444444 4  44444 4444444444444444444 4   44444 44444444444444 4   44444 4444444444  444444444 44444444444444 4  44444 4--------  4------- 44444444444444 4 44444 4--------!  4-------! 44444444444444 4 44444 4------"  4-'---'-" 44444444444444 4 44444 4------!    4--'-'--! 44444444444444 4 444444444 44444 4-------"    4---'---" 44444444444444 4 4------- 44444 4--------"   4-------" 44444444444444 4 4--! 44444 4--------#  4-------# 44444444444444 4 4--" 44444 4--------(  4-------( 44444444444444 4 4-----! 44444 /!"##%&( /!"#%&( 44444444444444 4 4-----" 44444 44444444444444 4 4--# 444444444444444444444444444444444444444444444444444444 4 4-------( 444444444444444444444444444444444444444444444444444444 4 /!"#%&( 444444444444444444444444444444444444444444444444444444 4 444444444444444444444444444444444444444444444444444444 444444444444444444444444444444444444444444444444444444444444444444 444444444444444444444444444444444444444444444444444444444444444444 444444444444444444444444444444444444444444444444444444444444444444 4 444444444444444444444444444444444444444444444444444444444444444 4 4 4 44444444444444444444444444444444444444444444444 4 4 444444444444444444444444444444444444444444444444) 4 4 4444444444444444444444444444444444444444444444444) ++++++++++++++++++++++++++++++++++++++++++++++++ 4 4 4444444444444444444444444444444444444444444444444) +++++++++++++++++++++++++++++++++++++++++++++++++ 4 4 4444444444444444444444444444444444444444444444444) ++++++++++++++++++++++++++++++++++++++++++++++++++ 4 4 4444444444444444444444444444444444444444444444444) ++++++++++++++++++++++++++++++++++++++++++++++++++ 4 4 4444444444444444444444444444444444444444444444444) ++++++++++++++++++++++++++++++++++++++++++++++++++ 4 4 4444444444444444444444444444444444444444444444444) ++++++++++++++++++++++++++++++++++++++++++++++++++ 4 4 4444444444444444444444444444444444444444444444444) ++++++++++++++++++++++++++++++++++++++++++++++++++ 4 4 4444444444444444444444444444444444444444444444444) ++++++++++++++++++++++++++++++++++++++++++++++++++ 4 4 4444444444444444444444444444444444444444444444444) ++++++++++++++++++++++++++++++++++++++++++++++++++ 4 4 4444444444444444444444444444444444444444444444444) ++++++++++++++++++++++++++++++++++++++++++++++++++ 4 4 4444444444444444444444444444444444444444444444444) ++++++++++++++++++++++++++++++++++++++++++++++++++ 4 4 4444444444444444444444444444444444444444444444444) ++ 4 444444444444444444444444444444444444444444444444444444 444444444444444444444444444444444444444444444444444444 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 4$!!!!!!!!!!!!!!!!!!!!!"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!4 444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444    " """*"Sw J@zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzLO,wL*LgLL.r. r A A A A' TLc98T.c|wT*`zTfc sT'TT.T"* j*J:N *Ac***,{*c**5c***6c=,6c=,6c=, M_A v..wv*vpqwv*V9.vChatFwV*l.Vwl*l _l `lDCpV.goIRC(): couldn't find setup pagenpV.goIRC(): couldn't open chat tabpV.goIRC(): couldn't open ubrowser windowpV.goIRC(): no multiplayer menu OY$m ArYJ :d,U&_& rY= :d,Airc.enterthegame.com#strangelove -IrYC :d, KNEq K[H!6f26@?,@h(6?,i(6?,m@6@?,?,@p66?,?,{26@@?,j@6?,@@?,o@6@@?,?,T P:6O}w, :D?wVD?,44?,V?:V?:D?wJJ?:J?:D?w==?:=?{-I:D?wCC?:C? Rz ?vzUV6V (zJ (z= (zt-IC (z N}YX{$6=,6=,6=,-T}RPV}.R?,Pg?,AW}&Rg?,P`6$6$6$^6$6$6$}5R?}?,P?,U 4X4. ?,4)~ G4)Z J4)[ D4)A EU.J.4 4Z_.H.4 4[V." V  FV GJ." J  LJ I=." =  |= jV-IC." C  BC A pTz *!pz{|?????E??E?8??8?H??H?I??I?B??B?K??K????BG??G????B???B???B???B U" ) pppf (SD)1 ppp^ (SDB%)) pppa (SD). pppd (SD rnds) EV\$PE\]] K$\ S? -?-K }E -E-K 8 -8-K H -H-K I -I-K %B -B-K O cJKK yG -G-K  K  K  K  DK HK -K-K  [CS      UpHm??6??6?6-'mmmm mQ Ns&: #S gu ?Du?&,  $  ?, 3 $   g3 0$  ?,?,  g?,3   ?,?,  u?, - [ [ [ c8 b b b ^ m& -( -' -( -( -( -' -' $ -'  A pB  ,   " """*MMM*MMM"Ǣw X"z5u%M"?,"5?, #?, #?,$"?, #?,"?, #?,$"5?, #?,*"5?, #?,$D"?,#5?,*"?,#5?,$"5?,#5?,$#?,$#5?,$"?,$"5?,$$     " """*.."Jew /d@ CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC. C....................................................................................................................... zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz[zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz[zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz[zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz[zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz[zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz[zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz[zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz[zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz[zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz[zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz[zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz[z[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[;;;;;;;;;;;i;zzzzzzzzzi;zzzzzzzzzi;zzzzzzzzzi;zzzzzzzzzi;zzzzzzzzzi;zzzzzzzzzi;zzzzzzzzzi;zzzzzzzzzi;zzzzzzzzziiiiiiiiiii   " """*"Xw dzzzzzzzzz`?_J`?. ?????  ? vE. ????E  lE o8. ????8  m8 kH. ????H  pH LI. ????I  KI },B. ????B  CB PK. ????K  MK J,. ????  d Q0($_%|_,{_h1_hS__2G. ????G  wG t,. ????  a j@@A& '. ????  d i? A&. ????  f n AC,<. ????  ^ u?D #< <o'dD+y''-''y'y'y'y'''' r@/ Je?@ppThis is  r. z@b+c,~++-'+~+~+~+~++++ gd;s8 <4{zKypyzKzy iJ,`nN,@ NKJ|wJ|[}w%,wN&lN&K e Z%.0  # tA @A?60?60  $     $$   t $   ?,  t?,   ?,?,  A?,  ?60 ?60  ?60?60  ?60?60 rxBN=e ?x,xKq!x CGCUe#ecb@A?6,?6, $y $cy v$?,c?,y ?,?,b?,?6,?6,?6-?6,?6,?6?6?6?6,?6,?6?6,?6?6?6,?6?6?6,?6?6?6?6?6$?6,?6,?6?6,?6,?6?6, p}!@b!/}e !} l   " """*>>*"tw r@@@>>>>>>A@yxxvvvvA@ynnnnm\A@xnnnnm^A@xnnnnm^?@xnnnmm`?@xnnnmmc?@p]_`bdY?@>>>>>AA?mpro :@e ??e? H|f 2U|?6U|?6U|n|?6U?6U|?6U?6U at*0Ia U`en`Ma 3M=xsBKe.;" ;????n;{n!n!K qd`36t=,6t=,6t=,d6tdd d;tdd pwe pe}yD??D?<??<????B???B???BF??F?9??9? z@w*, ppp[ DYw*, pppX SD secs uw"56 =,6 =,6 =,W-Y\ LA?6?6?6?6?6?6W} L?6AY?6?6?6?6?6?6?6Wp LY?6A?6?6?6?6?6?6W 6 $6 $6 $-B TDG3 LYD?,A?,T'\ LA?6?6?6?6?6?6W} L?6AY?6?6?6?6?6?6?6Wp LY?6A?6?6?6?6?6?6W 6 $6 $6 $-B TDG3 LYD?,A?,T' E}D$!EDHH $D OD -D- y< -<-   -' -' -' ? -' -( -' L@ -( -( -' @@ -( -( -(    `V % -( -(] 0& -' -(] Z, -( -']  F -F- 9 -9-     " """*22*"_nw L}@vuuttssvgggfeEuggffeIuggffeIuggfeeNugffeeVjFJOSW9L~CD     & -( -( -( -' A -( -( -' -( -( A1v D- -<- -F- -9- -N$ -N=:N& -N=:N&& -N=:N&,N $1%3 $1&3 ($1,3 1, ?1  -1& -1,1% >1 TaB*k a? `DX2yQ`D. ????D  ]D \. ???? Z@@&. ???? W@pB,. ????  T S0($X%X,{XC1XCSXXD?@<. ????<  R< OF. ????F  HF E9. ????9  D9 C D.I{%RD @OD?,?R,lD?,?OD?,D?, p\@A_\a^\ \CC  Ex)W`y;n))-')n)n)n)n)))) F[G/|s<j//-'/j/j/j/j//// ai,=p["ihgcbhw[*[ yk[f%[[ 'J.S+>g..-'.g.g.g.g.... L'  M&R?o&&-'&o&o&o&o&&&&   P@P@_@u@bE@@?6u?6u?6u?6u_@-@6E@@_ Vo}>onm Wr 25rqp Za_a]SLV2Window.ThermoLookBwa*a-'CC?,d?,?, SMOVBsMiMbFMM?6i?6i?6i?6isM-M6FMMs  Y \s!%xIms ^h?ghp, ,  h,  h,  h h

 XMCOq?,-'qqqq v@ Fvut-( `@]DEJ@-'@@@@ bL3xh]`~QLU`kQ`}Lkk~kSk dsGZI-M((~(pSS,SB(Us3({s{UspppV: Last mod. time: s.Us-M'(7OpV: No update necessary.( `CCG]@]C?66?,]^C?,CC?66?, ewIS(p(w gWHGq$-MWGET+WHEADJpppppW^HTTP/1.0SHost: OSS cfAHfRf?66fff?66f kF@rpV.resolveFailed()    " """*"F_w zzzzz[zz[f@x =J\P@@PN~QM~P pZK26ZexJ@Zw-MppppppV: Opening http://O:Se^...pV: Checking for updates.LZ nv?- -E- -8- -B- -K- -vUR v >vG- -H- -I- -?     a`*Ea? Z$I){$$-'${${${${$$$$ sN=#eONe~^{UzSy(7N @jxaJxl\x2lAx?, A]x(lx?,_ (G>Sp, ,  w // SLV2. Copyright (C) Al McElrath 2001. // http://www.planetunreal.com/0fus/ // $Id: ThermoLook.uc,v 1.2 2001/07/01 00:49:24 yrns Exp $ /** This is a mess. Basically copied the whole file and made changes. */ class ThermoLook extends UMenuBlueLookAndFeel; #exec OBJ LOAD FILE=Thermo.utx PACKAGE=SLV2Window.thermo var() Texture thermoButton; var() Texture thermoMenuArea; var() Texture thermoClientArea; var() Texture thermoMenuTL; var() Texture thermoMenuT; var() Texture thermoMenuTR; var() Texture thermoMenuL; var() Texture thermoMenuR; var() Texture thermoMenuBL; var() Texture thermoMenuB; var() Texture thermoMenuBR; var() Texture thermoMenuHL; var() Texture thermoMenuHM; var() Texture thermoMenuHR; var() Texture thermoMenuLine; var() Texture thermoBarL; var() Texture thermoBarTile; var() Texture thermoBarMax; var() Texture thermoBarWin; var() Texture thermoBarInL; var() Texture thermoBarInR; var() Texture thermoBarInM; var() Texture thermoBarOutL; var() Texture thermoBarOutR; var() Texture thermoBarOutM; var() Texture thermoChk; var() Texture thermoUnChk; var() Texture thermoChkD; var() Texture thermoUnChkD; var() Font normal, bold; function Font getFont(UWindowWindow w, optional bool bolded) { if (normal == none) { normal = w.root.fonts[F_Normal]; bold = w.root.fonts[F_Bold]; //normal = class'Fontlib'.static.getFont(FS_Title, false); //bold = class'Fontlib'.static.getFont(FS_Title, false); } if (!bolded) return normal; else return bold; } /* Framed Window Drawing Functions */ function FW_DrawWindowFrame(UWindowFramedWindow W, Canvas C) { local Texture T; local Region R, Temp; C.DrawColor.r = 255; C.DrawColor.g = 255; C.DrawColor.b = 255; T = W.GetLookAndFeelTexture(); R = FrameTL; W.DrawStretchedTextureSegment( C, 0, 0, R.W, R.H, R.X, R.Y, R.W, R.H, T ); R = FrameT; W.DrawStretchedTextureSegment( C, FrameTL.W, 0, W.WinWidth - FrameTL.W - FrameTR.W, R.H, R.X, R.Y, R.W, R.H, T ); R = FrameTR; W.DrawStretchedTextureSegment( C, W.WinWidth - R.W, 0, R.W, R.H, R.X, R.Y, R.W, R.H, T ); if(W.bStatusBar) Temp = FrameSBL; else Temp = FrameBL; R = FrameL; W.DrawStretchedTextureSegment( C, 0, FrameTL.H, R.W, W.WinHeight - FrameTL.H - Temp.H, R.X, R.Y, R.W, R.H, T ); R = FrameR; W.DrawStretchedTextureSegment( C, W.WinWidth - R.W, FrameTL.H, R.W, W.WinHeight - FrameTL.H - Temp.H, R.X, R.Y, R.W, R.H, T ); if(W.bStatusBar) R = FrameSBL; else R = FrameBL; W.DrawStretchedTextureSegment( C, 0, W.WinHeight - R.H, R.W, R.H, R.X, R.Y, R.W, R.H, T ); if(W.bStatusBar) { R = FrameSB; W.DrawStretchedTextureSegment( C, FrameBL.W, W.WinHeight - R.H, W.WinWidth - FrameSBL.W - FrameSBR.W, R.H, R.X, R.Y, R.W, R.H, T ); } else { R = FrameB; W.DrawStretchedTextureSegment( C, FrameBL.W, W.WinHeight - R.H, W.WinWidth - FrameBL.W - FrameBR.W, R.H, R.X, R.Y, R.W, R.H, T ); } if(W.bStatusBar) R = FrameSBR; else R = FrameBR; W.DrawStretchedTextureSegment( C, W.WinWidth - R.W, W.WinHeight - R.H, R.W, R.H, R.X, R.Y, R.W, R.H, T ); if(W.ParentWindow.ActiveWindow == W) { C.DrawColor = FrameActiveTitleColor; C.Font = getFont(w); } else { C.DrawColor = FrameInactiveTitleColor; C.Font = getFont(w); } W.ClipTextWidth(C, FrameTitleX, FrameTitleY, W.WindowTitle, W.WinWidth - 22); if(W.bStatusBar) { C.Font = getFont(w); C.DrawColor.r = 0; C.DrawColor.g = 0; C.DrawColor.b = 0; W.ClipTextWidth(C, 6, W.WinHeight - 13, W.StatusBarText, W.WinWidth - 22); C.DrawColor.r = 255; C.DrawColor.g = 255; C.DrawColor.b = 255; } } function FW_SetupFrameButtons(UWindowFramedWindow W, Canvas C) { local Texture T; T = W.GetLookAndFeelTexture(); W.CloseBox.WinLeft = W.WinWidth - CloseBoxOffsetX - CloseBoxUp.W; W.CloseBox.WinTop = CloseBoxOffsetY; W.CloseBox.SetSize(CloseBoxUp.W, CloseBoxUp.H); W.CloseBox.bUseRegion = True; W.CloseBox.UpTexture = T; W.CloseBox.DownTexture = T; W.CloseBox.OverTexture = T; W.CloseBox.DisabledTexture = T; W.CloseBox.UpRegion = CloseBoxUp; W.CloseBox.DownRegion = CloseBoxDown; W.CloseBox.OverRegion = CloseBoxUp; W.CloseBox.DisabledRegion = CloseBoxUp; } function Region FW_GetClientArea(UWindowFramedWindow W) { local Region R; R.X = FrameL.W; R.Y = FrameT.H; R.W = W.WinWidth - (FrameL.W + FrameR.W); if(W.bStatusBar) R.H = W.WinHeight - (FrameT.H + FrameSB.H); else R.H = W.WinHeight - (FrameT.H + FrameB.H); return R; } function FrameHitTest FW_HitTest(UWindowFramedWindow W, float X, float Y) { if((X >= 3) && (X <= W.WinWidth-3) && (Y >= 3) && (Y <= 14)) return HT_TitleBar; if((X < BRSIZEBORDER && Y < SIZEBORDER) || (X < SIZEBORDER && Y < BRSIZEBORDER)) return HT_NW; if((X > W.WinWidth - SIZEBORDER && Y < BRSIZEBORDER) || (X > W.WinWidth - BRSIZEBORDER && Y < SIZEBORDER)) return HT_NE; if((X < BRSIZEBORDER && Y > W.WinHeight - SIZEBORDER)|| (X < SIZEBORDER && Y > W.WinHeight - BRSIZEBORDER)) return HT_SW; if((X > W.WinWidth - BRSIZEBORDER) && (Y > W.WinHeight - BRSIZEBORDER)) return HT_SE; if(Y < SIZEBORDER) return HT_N; if(Y > W.WinHeight - SIZEBORDER) return HT_S; if(X < SIZEBORDER) return HT_W; if(X > W.WinWidth - SIZEBORDER) return HT_E; return HT_None; } /* Client Area Drawing Functions */ function DrawClientArea(UWindowClientWindow W, Canvas C) { W.DrawClippedTexture(C, 0, 0, thermoMenuTL); W.DrawStretchedTexture(C, 2, 0, W.WinWidth-4, 2, thermoMenuT); W.DrawClippedTexture(C, W.WinWidth-2, 0, thermoMenuTR); W.DrawClippedTexture(C, 0, W.WinHeight-2, thermoMenuBL); W.DrawStretchedTexture(C, 2, W.WinHeight-2, W.WinWidth-4, 2, thermoMenuB); W.DrawClippedTexture(C, W.WinWidth-2, W.WinHeight-2, thermoMenuBR); W.DrawStretchedTexture(C, 0, 2, 2, W.WinHeight-4, thermoMenuL); W.DrawStretchedTexture(C, W.WinWidth-2, 2, 2, W.WinHeight-4, thermoMenuR); W.DrawStretchedTexture(C, 2, 2, W.WinWidth-4, W.WinHeight-4, thermoClientArea); } /* Combo Drawing Functions */ function Combo_SetupSizes(UWindowComboControl W, Canvas C) { local float TW, TH; C.Font = getFont(w); W.TextSize(C, W.Text, TW, TH); W.WinHeight = 12 + MiscBevelT[2].H + MiscBevelB[2].H; switch(W.Align) { case TA_Left: W.EditAreaDrawX = W.WinWidth - W.EditBoxWidth; W.TextX = 0; break; case TA_Right: W.EditAreaDrawX = 0; W.TextX = W.WinWidth - TW; break; case TA_Center: W.EditAreaDrawX = (W.WinWidth - W.EditBoxWidth) / 2; W.TextX = (W.WinWidth - TW) / 2; break; } W.EditAreaDrawY = (W.WinHeight - 2) / 2; W.TextY = (W.WinHeight - TH) / 2; W.EditBox.WinLeft = W.EditAreaDrawX + MiscBevelL[2].W; W.EditBox.WinTop = MiscBevelT[2].H; W.Button.WinWidth = ComboBtnUp.W; if(W.bButtons) { W.EditBox.WinWidth = W.EditBoxWidth - MiscBevelL[2].W - MiscBevelR[2].W - ComboBtnUp.W - SBLeftUp.W - SBRightUp.W; W.EditBox.WinHeight = W.WinHeight - MiscBevelT[2].H - MiscBevelB[2].H; W.Button.WinLeft = W.WinWidth - ComboBtnUp.W - MiscBevelR[2].W - SBLeftUp.W - SBRightUp.W; W.Button.WinTop = W.EditBox.WinTop; W.LeftButton.WinLeft = W.WinWidth - MiscBevelR[2].W - SBLeftUp.W - SBRightUp.W; W.LeftButton.WinTop = W.EditBox.WinTop; W.RightButton.WinLeft = W.WinWidth - MiscBevelR[2].W - SBRightUp.W; W.RightButton.WinTop = W.EditBox.WinTop; W.LeftButton.WinWidth = SBLeftUp.W; W.LeftButton.WinHeight = SBLeftUp.H; W.RightButton.WinWidth = SBRightUp.W; W.RightButton.WinHeight = SBRightUp.H; } else { W.EditBox.WinWidth = W.EditBoxWidth - MiscBevelL[2].W - MiscBevelR[2].W - ComboBtnUp.W; W.EditBox.WinHeight = W.WinHeight - MiscBevelT[2].H - MiscBevelB[2].H; W.Button.WinLeft = W.WinWidth - ComboBtnUp.W - MiscBevelR[2].W; W.Button.WinTop = W.EditBox.WinTop; } W.Button.WinHeight = W.EditBox.WinHeight; } function Combo_Draw(UWindowComboControl W, Canvas C) { W.DrawMiscBevel(C, W.EditAreaDrawX, 0, W.EditBoxWidth, W.WinHeight, Misc, 2); if(W.Text != "") { C.DrawColor = W.TextColor; W.ClipText(C, W.TextX, W.TextY, W.Text); C.DrawColor.R = 255; C.DrawColor.G = 255; C.DrawColor.B = 255; } } function ComboList_DrawBackground(UWindowComboList W, Canvas C) { W.DrawClippedTexture(C, 0, 0, thermoMenuTL); W.DrawStretchedTexture(C, 4, 0, W.WinWidth-8, 4, thermoMenuT); W.DrawClippedTexture(C, W.WinWidth-4, 0, thermoMenuTR); W.DrawClippedTexture(C, 0, W.WinHeight-4, thermoMenuBL); W.DrawStretchedTexture(C, 4, W.WinHeight-4, W.WinWidth-8, 4, thermoMenuB); W.DrawClippedTexture(C, W.WinWidth-4, W.WinHeight-4, thermoMenuBR); W.DrawStretchedTexture(C, 0, 4, 4, W.WinHeight-8, thermoMenuL); W.DrawStretchedTexture(C, W.WinWidth-4, 4, 4, W.WinHeight-8, thermoMenuR); W.DrawStretchedTexture(C, 4, 4, W.WinWidth-8, W.WinHeight-8, thermoMenuArea); } function ComboList_DrawItem(UWindowComboList Combo, Canvas C, float X, float Y, float W, float H, string Text, bool bSelected) { C.DrawColor.R = 255; C.DrawColor.G = 255; C.DrawColor.B = 255; if(bSelected) { Combo.DrawClippedTexture(C, X, Y, thermoMenuHL); Combo.DrawStretchedTexture(C, X + 4, Y, W - 8, 16, thermoMenuHM); Combo.DrawClippedTexture(C, X + W - 4, Y, thermoMenuHR); C.DrawColor.R = 0; C.DrawColor.G = 0; C.DrawColor.B = 0; } else { C.DrawColor.R = 0; C.DrawColor.G = 0; C.DrawColor.B = 0; } Combo.ClipText(C, X + Combo.TextBorder + 2, Y + 3, Text); } function Checkbox_SetupSizes(UWindowCheckbox W, Canvas C) { local float TW, TH; W.TextSize(C, W.Text, TW, TH); W.WinHeight = Max(TH+1, 16); switch(W.Align) { case TA_Left: W.ImageX = W.WinWidth - 16; W.TextX = 0; break; case TA_Right: W.ImageX = 0; W.TextX = W.WinWidth - TW; break; case TA_Center: W.ImageX = (W.WinWidth - 16) / 2; W.TextX = (W.WinWidth - TW) / 2; break; } W.ImageY = (W.WinHeight - 16) / 2; W.TextY = (W.WinHeight - TH) / 2; if(W.bChecked) { W.UpTexture = thermoChk; W.DownTexture = thermoChk; W.OverTexture = thermoChk; W.DisabledTexture = thermoChkD; } else { W.UpTexture = thermoUnChk; W.DownTexture = thermoUnChk; W.OverTexture = thermoUnChk; W.DisabledTexture = thermoUnChkD; } } function Combo_GetButtonBitmaps(UWindowComboButton W) { local Texture T; T = W.GetLookAndFeelTexture(); W.bUseRegion = True; W.UpTexture = T; W.DownTexture = T; W.OverTexture = T; W.DisabledTexture = T; W.UpRegion = ComboBtnUp; W.DownRegion = ComboBtnDown; W.OverRegion = ComboBtnUp; W.DisabledRegion = ComboBtnDisabled; } function Combo_SetupLeftButton(UWindowComboLeftButton W) { local Texture T; T = W.GetLookAndFeelTexture(); W.bUseRegion = True; W.UpTexture = T; W.DownTexture = T; W.OverTexture = T; W.DisabledTexture = T; W.UpRegion = SBLeftUp; W.DownRegion = SBLeftDown; W.OverRegion = SBLeftUp; W.DisabledRegion = SBLeftDisabled; } function Combo_SetupRightButton(UWindowComboRightButton W) { local Texture T; T = W.GetLookAndFeelTexture(); W.bUseRegion = True; W.UpTexture = T; W.DownTexture = T; W.OverTexture = T; W.DisabledTexture = T; W.UpRegion = SBRightUp; W.DownRegion = SBRightDown; W.OverRegion = SBRightUp; W.DisabledRegion = SBRightDisabled; } function Editbox_SetupSizes(UWindowEditControl W, Canvas C) { local float TW, TH; local int B; B = EditBoxBevel; C.Font = getFont(w); W.TextSize(C, W.Text, TW, TH); W.WinHeight = 12 + MiscBevelT[B].H + MiscBevelB[B].H; switch(W.Align) { case TA_Left: W.EditAreaDrawX = W.WinWidth - W.EditBoxWidth; W.TextX = 0; break; case TA_Right: W.EditAreaDrawX = 0; W.TextX = W.WinWidth - TW; break; case TA_Center: W.EditAreaDrawX = (W.WinWidth - W.EditBoxWidth) / 2; W.TextX = (W.WinWidth - TW) / 2; break; } W.EditAreaDrawY = (W.WinHeight - 2) / 2; W.TextY = (W.WinHeight - TH) / 2; W.EditBox.WinLeft = W.EditAreaDrawX + MiscBevelL[B].W; W.EditBox.WinTop = MiscBevelT[B].H; W.EditBox.WinWidth = W.EditBoxWidth - MiscBevelL[B].W - MiscBevelR[B].W; W.EditBox.WinHeight = W.WinHeight - MiscBevelT[B].H - MiscBevelB[B].H; } function Editbox_Draw(UWindowEditControl W, Canvas C) { W.DrawMiscBevel(C, W.EditAreaDrawX, 0, W.EditBoxWidth, W.WinHeight, Misc, EditBoxBevel); if(W.Text != "") { C.DrawColor = W.TextColor; W.ClipText(C, W.TextX, W.TextY, W.Text); C.DrawColor.R = 255; C.DrawColor.G = 255; C.DrawColor.B = 255; } } function ControlFrame_SetupSizes(UWindowControlFrame W, Canvas C) { local int B; B = EditBoxBevel; W.Framed.WinLeft = MiscBevelL[B].W; W.Framed.WinTop = MiscBevelT[B].H; W.Framed.SetSize(W.WinWidth - MiscBevelL[B].W - MiscBevelR[B].W, W.WinHeight - MiscBevelT[B].H - MiscBevelB[B].H); } function ControlFrame_Draw(UWindowControlFrame W, Canvas C) { C.DrawColor.R = 255; C.DrawColor.G = 255; C.DrawColor.B = 255; W.DrawStretchedTexture(C, 0, 0, W.WinWidth, W.WinHeight, Texture'WhiteTexture'); W.DrawMiscBevel(C, 0, 0, W.WinWidth, W.WinHeight, Misc, EditBoxBevel); } function Tab_DrawTab(UWindowTabControlTabArea Tab, Canvas C, bool bActiveTab, bool bLeftmostTab, float X, float Y, float W, float H, string Text, bool bShowText) { local Region R; local Texture T; local float TW, TH; C.DrawColor.R = 255; C.DrawColor.G = 255; C.DrawColor.B = 255; T = Tab.GetLookAndFeelTexture(); if(bActiveTab) { R = TabSelectedL; Tab.DrawStretchedTextureSegment( C, X, Y, R.W, R.H, R.X, R.Y, R.W, R.H, T ); R = TabSelectedM; Tab.DrawStretchedTextureSegment( C, X+TabSelectedL.W, Y, W - TabSelectedL.W - TabSelectedR.W, R.H, R.X, R.Y, R.W, R.H, T ); R = TabSelectedR; Tab.DrawStretchedTextureSegment( C, X + W - R.W, Y, R.W, R.H, R.X, R.Y, R.W, R.H, T ); C.Font = getFont(tab); C.DrawColor.R = 0; C.DrawColor.G = 0; C.DrawColor.B = 0; if(bShowText) { Tab.TextSize(C, Text, TW, TH); Tab.ClipText(C, X + (W-TW)/2, Y + 3, Text, True); } } else { R = TabUnselectedL; Tab.DrawStretchedTextureSegment( C, X, Y, R.W, R.H, R.X, R.Y, R.W, R.H, T ); R = TabUnselectedM; Tab.DrawStretchedTextureSegment( C, X+TabUnselectedL.W, Y, W - TabUnselectedL.W - TabUnselectedR.W, R.H, R.X, R.Y, R.W, R.H, T ); R = TabUnselectedR; Tab.DrawStretchedTextureSegment( C, X + W - R.W, Y, R.W, R.H, R.X, R.Y, R.W, R.H, T ); C.Font = getFont(tab); C.DrawColor.R = 0; C.DrawColor.G = 0; C.DrawColor.B = 0; if(bShowText) { Tab.TextSize(C, Text, TW, TH); Tab.ClipText(C, X + (W-TW)/2, Y + 4, Text, True); } } } function SB_SetupUpButton(UWindowSBUpButton W) { local Texture T; T = W.GetLookAndFeelTexture(); W.bUseRegion = True; W.UpTexture = T; W.DownTexture = T; W.OverTexture = T; W.DisabledTexture = T; W.UpRegion = SBUpUp; W.DownRegion = SBUpDown; W.OverRegion = SBUpUp; W.DisabledRegion = SBUpDisabled; } function SB_SetupDownButton(UWindowSBDownButton W) { local Texture T; T = W.GetLookAndFeelTexture(); W.bUseRegion = True; W.UpTexture = T; W.DownTexture = T; W.OverTexture = T; W.DisabledTexture = T; W.UpRegion = SBDownUp; W.DownRegion = SBDownDown; W.OverRegion = SBDownUp; W.DisabledRegion = SBDownDisabled; } function SB_SetupLeftButton(UWindowSBLeftButton W) { local Texture T; T = W.GetLookAndFeelTexture(); W.bUseRegion = True; W.UpTexture = T; W.DownTexture = T; W.OverTexture = T; W.DisabledTexture = T; W.UpRegion = SBLeftUp; W.DownRegion = SBLeftDown; W.OverRegion = SBLeftUp; W.DisabledRegion = SBLeftDisabled; } function SB_SetupRightButton(UWindowSBRightButton W) { local Texture T; T = W.GetLookAndFeelTexture(); W.bUseRegion = True; W.UpTexture = T; W.DownTexture = T; W.OverTexture = T; W.DisabledTexture = T; W.UpRegion = SBRightUp; W.DownRegion = SBRightDown; W.OverRegion = SBRightUp; W.DisabledRegion = SBRightDisabled; } function SB_VDraw(UWindowVScrollbar W, Canvas C) { local Region R; local Texture T; T = W.GetLookAndFeelTexture(); R = SBBackground; W.DrawStretchedTextureSegment( C, 0, 0, W.WinWidth, W.WinHeight, R.X, R.Y, R.W, R.H, T); if(!W.bDisabled) { W.DrawUpBevel( C, 0, W.ThumbStart, Size_ScrollbarWidth, W.ThumbHeight, T); } } function SB_HDraw(UWindowHScrollbar W, Canvas C) { local Region R; local Texture T; T = W.GetLookAndFeelTexture(); R = SBBackground; W.DrawStretchedTextureSegment( C, 0, 0, W.WinWidth, W.WinHeight, R.X, R.Y, R.W, R.H, T); if(!W.bDisabled) { W.DrawUpBevel( C, W.ThumbStart, 0, W.ThumbWidth, Size_ScrollbarWidth, T); } } function Tab_SetupLeftButton(UWindowTabControlLeftButton W) { local Texture T; T = W.GetLookAndFeelTexture(); W.WinWidth = Size_ScrollbarButtonHeight; W.WinHeight = Size_ScrollbarWidth; W.WinTop = Size_TabAreaHeight - W.WinHeight; W.WinLeft = W.ParentWindow.WinWidth - 2*W.WinWidth; W.bUseRegion = True; W.UpTexture = T; W.DownTexture = T; W.OverTexture = T; W.DisabledTexture = T; W.UpRegion = SBLeftUp; W.DownRegion = SBLeftDown; W.OverRegion = SBLeftUp; W.DisabledRegion = SBLeftDisabled; } function Tab_SetupRightButton(UWindowTabControlRightButton W) { local Texture T; T = W.GetLookAndFeelTexture(); W.WinWidth = Size_ScrollbarButtonHeight; W.WinHeight = Size_ScrollbarWidth; W.WinTop = Size_TabAreaHeight - W.WinHeight; W.WinLeft = W.ParentWindow.WinWidth - W.WinWidth; W.bUseRegion = True; W.UpTexture = T; W.DownTexture = T; W.OverTexture = T; W.DisabledTexture = T; W.UpRegion = SBRightUp; W.DownRegion = SBRightDown; W.OverRegion = SBRightUp; W.DisabledRegion = SBRightDisabled; } function Tab_SetTabPageSize(UWindowPageControl W, UWindowPageWindow P) { P.WinLeft = 2; P.WinTop = W.TabArea.WinHeight-(TabSelectedM.H-TabUnselectedM.H) + 3; P.SetSize(W.WinWidth - 4, W.WinHeight-(W.TabArea.WinHeight-(TabSelectedM.H-TabUnselectedM.H)) - 6); } function Tab_DrawTabPageArea(UWindowPageControl W, Canvas C, UWindowPageWindow P) { W.DrawUpBevel( C, 0, W.TabArea.WinHeight-(TabSelectedM.H-TabUnselectedM.H), W.WinWidth, W.WinHeight-(W.TabArea.WinHeight-(TabSelectedM.H-TabUnselectedM.H)), W.GetLookAndFeelTexture()); } function Tab_GetTabSize(UWindowTabControlTabArea Tab, Canvas C, string Text, out float W, out float H) { local float TW, TH; C.Font = getFont(tab); Tab.TextSize( C, Text, TW, TH ); W = TW + Size_TabSpacing; H = Size_TabAreaHeight; } function Menu_DrawMenuBar(UWindowMenuBar W, Canvas C) { W.DrawClippedTexture(C, 0, 0, thermoBarL); W.DrawStretchedTexture( C, 16, 0, W.WinWidth - 32, 16, thermoBarTile); W.DrawClippedTexture(C, W.WinWidth - 16, 0, thermoBarWin); } function Menu_DrawMenuBarItem(UWindowMenuBar B, UWindowMenuBarItem I, float X, float Y, float W, float H, Canvas C) { if(B.Selected == I) { B.DrawClippedTexture(C, X, 0, thermoBarInL); B.DrawClippedTexture(C, X+W-1, 0, thermoBarInR); B.DrawStretchedTexture(C, X+1, 0, W-2, 16, thermoBarInM); } else if (B.Over == I) { B.DrawClippedTexture(C, X, 0, thermoBarOutL); B.DrawClippedTexture(C, X+W-1, 0, thermoBarOutR); B.DrawStretchedTexture(C, X+1, 0, W-2, 16, thermoBarOutM); } C.Font = getFont(b); C.DrawColor.R = 0; C.DrawColor.G = 0; C.DrawColor.B = 0; B.ClipText(C, X + B.SPACING / 2, 3, I.Caption, True); } function Menu_DrawPulldownMenuBackground(UWindowPulldownMenu W, Canvas C) { W.DrawClippedTexture(C, 0, 0, thermoMenuTL); W.DrawStretchedTexture(C, 4, 0, W.WinWidth-8, 4, thermoMenuT); W.DrawClippedTexture(C, W.WinWidth-4, 0, thermoMenuTR); W.DrawClippedTexture(C, 0, W.WinHeight-4, thermoMenuBL); W.DrawStretchedTexture(C, 4, W.WinHeight-4, W.WinWidth-8, 4, thermoMenuB); W.DrawClippedTexture(C, W.WinWidth-4, W.WinHeight-4, thermoMenuBR); W.DrawStretchedTexture(C, 0, 4, 4, W.WinHeight-8, thermoMenuL); W.DrawStretchedTexture(C, W.WinWidth-4, 4, 4, W.WinHeight-8, thermoMenuR); W.DrawStretchedTexture(C, 4, 4, W.WinWidth-8, W.WinHeight-8, thermoMenuArea); } function Menu_DrawPulldownMenuItem(UWindowPulldownMenu M, UWindowPulldownMenuItem Item, Canvas C, float X, float Y, float W, float H, bool bSelected) { C.DrawColor.R = 255; C.DrawColor.G = 255; C.DrawColor.B = 255; Item.ItemTop = Y + M.WinTop; if(Item.Caption == "-") { C.DrawColor.R = 255; C.DrawColor.G = 255; C.DrawColor.B = 255; M.DrawStretchedTexture(C, X, Y+5, W, 2, thermoMenuLine); return; } C.Font = getFont(m); //M.Root.Fonts[F_Normal]; if(bSelected) { M.DrawClippedTexture(C, X, Y, thermoMenuHL); M.DrawStretchedTexture(C, X + 4, Y, W - 8, 16, thermoMenuHM); M.DrawClippedTexture(C, X + W - 4, Y, thermoMenuHR); } if(Item.bDisabled) { // Black Shadow C.DrawColor.R = 96; C.DrawColor.G = 96; C.DrawColor.B = 96; } else { C.DrawColor.R = 0; C.DrawColor.G = 0; C.DrawColor.B = 0; } // DrawColor will render the tick black white or gray. if(Item.bChecked) M.DrawClippedTexture(C, X + 1, Y + 3, Texture'MenuTick'); if(Item.SubMenu != None) M.DrawClippedTexture(C, X + W - 9, Y + 3, Texture'MenuSubArrow'); M.ClipText(C, X + M.TextBorder + 2, Y + 3, Item.Caption, True); } function Button_DrawSmallButton(UWindowSmallButton B, Canvas C) { local float Y; if(B.bDisabled) Y = 34; else if(B.bMouseDown) Y = 17; else Y = 0; B.DrawStretchedTextureSegment(C, 0, 0, 3, 16, 0, Y, 3, 16, thermoButton); B.DrawStretchedTextureSegment(C, B.WinWidth - 3, 0, 3, 16, 45, Y, 3, 16, thermoButton); B.DrawStretchedTextureSegment(C, 3, 0, B.WinWidth-6, 16, 3, Y, 42, 16, thermoButton); } simulated function PlayMenuSound(UWindowWindow W, MenuSound S) { switch(S) { case MS_MenuPullDown: W.GetPlayerOwner().PlaySound(sound'WindowOpen'); break; case MS_MenuCloseUp: break; case MS_MenuItem: W.GetPlayerOwner().PlaySound(sound'LittleSelect'); break; case MS_WindowOpen: W.GetPlayerOwner().PlaySound(sound'BigSelect'); break; case MS_WindowClose: break; case MS_ChangeTab: W.GetPlayerOwner().PlaySound(sound'LittleSelect'); break; } } r { Lr q !O` %!OQ?&a -!O?&Q?,AbAAr q !OX %!OQ?&Z -!O?&Q?,Ae! 6!$6!$6!$ 9!O? ,@@q' tMG v"1*k$.'l> Y.'l> Y.'l> Y.'l> Y7Xä7Xä7Xä7Xä7Xä7Xä7XÉxxx;aGնm;aGxxxնmxնmնmնm;aGxxxxxx;aGնm;aGնmնmնm;aGնmնmնmնmնmնmնmնmնmնmնmնmնmնmնmնmնmնmնmնmնm_P_P_P_P_P_P_P_Pxxxx_P_PEf$_P_P_P_P_Px57`7`57`7`7`57`˨7`5˨7`7`7`5 7D 7D 7D 7D 7D 7D 7D.'l 7D 7D 7D 7D 7D 7D 7D 7D 7D 7DezPϲezPϲezPϲezPϲezPϲezPϲezPσ.'lezPϲezPϲezPϲezPϲezPϲezPϲezPϲezPϲezPϲezPKKKKKKKKiiiiiiiiii[@[@[@[@[@[@[@[@[@[@4444444444xxx5555xxxx55555xxxx55xxxeeeeeee.'le.'le.'leetttttxtttttxxxxtttttttttttttttttttttU K/ttU K/tU K/ttU K/tR<R<R<R<R<R<R<R<R<R<٦p٦p٦p٦p٦p٦p٦p٦p٦p٦p[1Թ[1Թ[1Թ[1Թ[1Թ[1Թ[1Թ[1Թ[1Թ[1Ԋ|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xڊ|.Xډxxxjbjbjbxxxxxxjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjbjb_4_4_4_4_4x_4_4_4_4_4xxxx_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4U K/_4_4U K/_4[1ԋ_4_4U K/_4_4U K/_4_4[1ԋ_4_4[1ԋ_4U K/_4٦p_4_4٦p_4U K/_4R<_4_4R<_4U K/_4٦p_4٦p_4R<_4R<_4U K/_4_4U K/_4_4[1ԋ_4_4[1ԋ_4U K/_4[1ԋ_4U K/A4yA4yA4yA4yA4yA4yA4yA4yA4yA4yA4yA4yA4yA4yA4yA4yA4yA4yA4yA4yA4yMMMMMMMMMMMMMMMYMMYMYMYMYMYMYMYMYMYMYMYxxxMMMMMMMMMMMMMMMMMMMMMMMMMMM.'lxxxxMMMMxxxxMMMMxxx.'lo .'lo _shj\mN_OGPhRwSxWkXfYiUhToV~Qvc^ue}]tjDd@iAa{b\`y[ri{ZqMnHnmEfeg^N$ // SLV2. Copyright (C) Al McElrath 2001. // http://www.planetunreal.com/0fus/ // $Id: SLWeblink.uc,v 1.2 2001/07/12 08:17:07 yrns Exp $ /** Instantiate this object, then call suck(). It will fill your HTML page with data from the web - only if the modtime is different from what's stored. */ class SLWeblink extends TcpLink; var string data; var string host; var int port; var string path; var IpAddr ip; var string modtime; var string nl; var string lastModHeader; var bool bDateOK; var SLOHTMLPage html; function preBeginPlay() { nl = chr(13) $ chr(10); } function bool suck(string host, int port, string path, string modtime, SLOHTMLPage html) { self.host = host; self.port = port; self.path = path; self.modtime = modtime; self.html = html; data = ""; resolve(host); } event resolved(IpAddr ip) { local int lport; ip.port = port; lport = bindPort(); self.ip = ip; if (bDateOK) log(class $ ": Opening http://" $ host $ ":" $ port $ path $ "..."); else log(class $ ": Checking for updates."); open(ip); } event resolveFailed() { log(class $ ".resolveFailed()"); } event opened() { local string command; linkMode = MODE_Text; if (bDateOK) command = "GET"; else command = "HEAD"; sendText(command @ path @ "HTTP/1.0" $ nl $ "Host: " $ host $ nl $ nl); } event receivedText(string text) { data = data $ text; } event closed() { local string last; if (bDateOK) { data = mid(data, instr(data, nl $ nl) + 4); html.updateHTML(data, modtime); } else { last = getHTTPHeader(lastModHeader, data); if (last != "") { if (modtime != last) { log(class $ ": Last mod. time: " $ last $ "."); //log("len modtime: " $ len(modtime) $ " len last: " $ len(last)); modtime = last; bDateOK = true; // Start all over again. data = ""; //open(ip); resolve(host); } else { log(class $ ": No update necessary."); } } } data = ""; } function string getHTTPHeader(string name, string headers) { local int i; local string value; i = instr(headers, name); if (i != -1) { value = mid(headers, i + len(name)); value = left(value, instr(value, nl)); } return value; } // end S // SLV2. Copyright (C) Al McElrath 2001. // http://www.planetunreal.com/0fus/ // $Id: SLOWindow.uc,v 1.2 2001/07/01 00:49:24 yrns Exp $ /** Main options window frame for Strangelove. */ class SLOWindow expands UMenuFramedWindow; var Font fonts[10]; var Font oldfonts[10]; function created() { local UWindowLookAndFeel laf; laf = root.getLookAndFeel("SLV2Window.ThermoLook"); if (laf != none) lookAndFeel = laf; super.created(); /* fonts[F_Normal] = ThermoLook(lookAndFeel).getFont(self); fonts[F_Bold] = ThermoLook(lookAndFeel).getFont(self); fonts[F_Large] = ThermoLook(lookAndFeel).getFont(self); fonts[F_LargeBold] = ThermoLook(lookAndFeel).getFont(self); */ bSizable = true; setSize(420, fmin(380, root.winHeight - 100)); winLeft = (root.winWidth - winWidth) / 2; winTop = (root.winHeight - winHeight) / 2; } function beforePaint(Canvas c, float x, float y) { local int i; /* for (i = 0; i < 10; i++) oldfonts[i] = root.fonts[i]; for (i = 0; i < 10; i++) root.fonts[i] = fonts[i]; */ super.beforePaint(c, x, y); } function afterPaint(Canvas c, float x, float y) { local int i; /* for (i = 0; i < 10; i++) root.fonts[i] = oldfonts[i]; */ super.afterPaint(c, x, y); } // end QW // SLV2. Copyright (C) Al McElrath 2001. // http://www.planetunreal.com/0fus/ // $Id: SLOServerWindow.uc,v 1.1.1.1 2001/06/27 18:17:47 yrns Exp $ class SLOServerWindow extends UWindowScrollingDialogClient; function created() { super.created(); } // end !b // SLV2. Copyright (C) Al McElrath 2001. // http://www.planetunreal.com/0fus/ // $Id: SLOServerCW.uc,v 1.5 2001/07/29 23:58:33 yrns Exp $ /** Server options. */ class SLOServerCW extends SLOPage; #exec OBJ LOAD FILE=..\Textures\SLV2Textures.utx PACKAGE=SLV2Textures var UWindowCheckbox replacePacks; var localized string replacePacksText; var localized string replacePacksHelp; var UWindowCheckbox replaceVials; var localized string replaceVialsText; var localized string replaceVialsHelp; var UWindowCheckbox random; var localized string randomText; var localized string randomHelp; var UWindowCheckbox noyj; var localized string noyjText; var localized string noyjHelp; var UWindowCheckbox mutMaxAmmo; var localized string mutMaxAmmoText; var localized string mutMaxAmmoHelp; var UWindowCheckbox nstay; var localized string nstayText; var localized string nstayHelp; var UWindowCheckbox botsObey; var localized string botsObeyText; var localized string botsObeyHelp; var UWindowComboControl armStatus; var localized string armStatusText; var localized string armStatusHelp; var UWindowCheckbox pilotOver; var localized string pilotOverText; var localized string pilotOverHelp; var UWindowHSliderControl shockwave; var localized string shockwaveText; var localized string shockwaveHelp; var UWindowHSliderControl maxammo; var localized string maxammoText; var localized string maxammoHelp; var UWindowHSliderControl fuelcap; var localized string fuelcapText; var localized string fuelcapHelp; var UWindowHSliderControl ff; var localized string ffText; var localized string ffHelp; var string armStatusEntries[3]; var() color textColor; function created() { local int i; super.created(); replacePacks = UWindowCheckbox(_cc(class'UWindowCheckbox', centerPos, co, centerWidth, 1)); replacePacks.setText(replacePacksText); replacePacks.setHelpText(replacePacksHelp); co += offset; replaceVials = UWindowCheckbox(_cc(class'UWindowCheckbox', centerPos, co, centerWidth, 1)); replaceVials.setText(replaceVialsText); replaceVials.setHelpText(replaceVialsHelp); co += offset; random = UWindowCheckbox(_cc(class'UWindowCheckbox', centerPos, co, centerWidth, 1)); random.setText(randomText); random.setHelpText(randomHelp); co += offset; noyj = UWindowCheckbox(_cc(class'UWindowCheckbox', centerPos, co, centerWidth, 1)); noyj.setText(noyjText); noyj.setHelpText(noyjHelp); co += offset; mutMaxAmmo = UWindowCheckbox(_cc(class'UWindowCheckbox', centerPos, co, centerWidth, 1)); mutMaxAmmo.setText(mutMaxAmmoText); mutMaxAmmo.setHelpText(mutMaxAmmoHelp); co += offset * 2; nstay = UWindowCheckbox(_cc(class'UWindowCheckbox', centerPos, co, centerWidth, 1)); nstay.setText(nstayText); nstay.setHelpText(nstayHelp); co += offset; botsObey = UWindowCheckbox(_cc(class'UWindowCheckbox', centerPos, co, centerWidth, 1)); botsObey.setText(botsObeyText); botsObey.setHelpText(botsObeyHelp); co += offset * 2; armStatus = UWindowComboControl(_cc(class'UWindowComboControl', centerPos, co, centerWidth, 1)); armStatus.setText(armStatusText); armStatus.setHelpText(armStatusHelp); armStatus.setEditable(False); armStatus.align = TA_Left; for(i = 0; i < arrayCount(armStatusEntries) && armStatusEntries[i] != ""; i++) { armStatus.AddItem(armStatusEntries[i], string(i)); } co += offset; pilotOver = UWindowCheckbox(_cc(class'UWindowCheckbox', centerPos, co, centerWidth, 1)); pilotOver.setText(pilotOverText); pilotOver.setHelpText(pilotOverHelp); co += offset * 2; shockwave = UWindowHSliderControl(_cc(class'UWindowHSliderControl', centerPos, co, centerWidth, 1)); shockwave.setText(shockwaveText); shockwave.setHelpText(shockwaveHelp); shockwave.setRange(3, 30, 1); shockwave.setValue(0, true); co += offset; maxammo = UWindowHSliderControl(_cc(class'UWindowHSliderControl', centerPos, co, centerWidth, 1)); maxammo.setText(maxammoText); maxammo.setHelpText(maxammoHelp); maxammo.setRange(1, 10, 1); //maxammo.setValue(0, true); co += offset; fuelcap = UWindowHSliderControl(_cc(class'UWindowHSliderControl', centerPos, co, centerWidth, 1)); fuelcap.setText(fuelcapText); fuelcap.setHelpText(fuelcapHelp); fuelcap.setRange(10, 300, 60); //fuelcap.setValue(0, true); co += offset; ff = UWindowHSliderControl(_cc(class'UWindowHSliderControl', centerPos, co, centerWidth, 1)); ff.setText(ffText); ff.setHelpText(ffHelp); ff.setRange(0, 1.0, 0.01); co += offset; loadCurrentValues(); } function afterCreate() { super.afterCreate(); desiredHeight = co; } function loadCurrentValues() { local int i; replacePacks.bChecked = Class'SLV2.StrangeMutator'.default.bReplacePacks; replaceVials.bChecked = Class'SLV2.StrangeMutator'.default.bReplaceVials; random.bChecked = Class'SLV2.StrangeMutator'.default.bRandomPlacement; nstay.bChecked = Class'SLV2.Konglauncher'.default.bNeverStay; botsObey.bChecked = Class'SLV2.StrangeShell'.default.bBotsObeyOrders; i = armStatus.findItemIndex2(string(Class'SLV2.StrangeShell'.default.warstat)); if (i != -1) armStatus.setSelectedIndex(i); pilotOver.bChecked = Class'SLV2.StrangeShell'.default.bCanOverride; noyj.bChecked = Class'SLV2.StrangeMutator'.default.bNoYJ; mutMaxAmmo.bChecked = Class'SLV2.StrangeMutator'.default.bMaxAmmo; maxammo.setValue(Class'SLV2.StrangeAmmo'.default.configMaxAmmo); shockwave.setValue(Class'SLV2.StrangeWave'.default.shockMult); fuelcap.setValue(Class'SLV2.StrangeShell'.default.fuel); ff.setValue(Class'SLV2.StrangeShell'.default.teamDamage); updateLabels(); } function loadDefaultValues() { Class'SLV2.StrangeMutator'.default.bReplacePacks = false; Class'SLV2.StrangeMutator'.default.bReplaceVials = true; Class'SLV2.StrangeMutator'.default.bRandomPlacement = false; Class'SLV2.StrangeMutator'.default.bNoYJ = false; Class'SLV2.StrangeMutator'.default.bMaxAmmo = false; Class'SLV2.Konglauncher'.default.bNeverStay = true; Class'SLV2.StrangeShell'.default.bBotsObeyOrders = true; Class'SLV2.StrangeShell'.default.warstat = WH_Auto; Class'SLV2.StrangeShell'.default.bCanOverride = true; Class'SLV2.StrangeWave'.default.shockMult = 10; Class'SLV2.StrangeShell'.default.fuel = 60; Class'SLV2.StrangeShell'.default.teamDamage = 0.0; Class'SLV2.StrangeAmmo'.default.configMaxammo = 2; loadCurrentValues(); } function saveConfigs() { class'StrangeMutator'.static.staticSaveConfig(); class'StrangeShell'.static.staticSaveConfig(); class'StrangeAmmo'.static.staticSaveConfig(); class'StrangeWave'.static.staticSaveConfig(); class'Konglauncher'.static.staticSaveConfig(); super.saveConfigs(); } function notify(UWindowDialogControl c, byte e) { super.notify(c, e); switch (e) { case DE_Change: updateLabels(); switch (c) { case replacePacks: Class'SLV2.StrangeMutator'.default.bReplacePacks = replacePacks.bChecked; break; case replaceVials: Class'SLV2.StrangeMutator'.default.bReplaceVials = replaceVials.bChecked; break; case random: Class'SLV2.StrangeMutator'.default.bRandomPlacement = random.bChecked; break; case noyj: Class'SLV2.StrangeMutator'.default.bNoYJ = noyj.bChecked; break; case mutMaxAmmo: Class'SLV2.StrangeMutator'.default.bMaxAmmo = mutMaxAmmo.bChecked; break; case nstay: Class'SLV2.Konglauncher'.default.bNeverStay = nstay.bChecked; break; case armStatus: Class'SLV2.StrangeShell'.static.setDefaultWarhead(int(armStatus.getValue2())); break; case pilotOver: Class'SLV2.StrangeShell'.default.bCanOverride = pilotOver.bChecked; break; case fuelcap: Class'SLV2.StrangeShell'.default.fuel = fuelcap.getValue(); break; case ff: Class'SLV2.StrangeShell'.default.teamDamage = ff.getValue(); break; case shockwave: Class'SLV2.StrangeWave'.default.shockMult = shockwave.getValue(); break; case maxammo: Class'SLV2.StrangeAmmo'.default.configMaxAmmo = maxammo.getValue(); break; case botsObey: Class'SLV2.StrangeShell'.default.bBotsObeyOrders = botsObey.bChecked; break; } } } function updateLabels() { fuelcap.setText(fuelcapText $ " (" $ int(fuelcap.getValue()) $ ")"); ff.setText(ffText $ " (" $ int(ff.getValue() * 100.0) $ "%)"); shockwave.setText(shockwaveText $ " (" $ int(shockwave.getValue()) $ ")"); maxammo.setText(maxammoText $ " (" $ int(maxammo.getValue()) $ " rnds)"); } function beforePaint(Canvas c, float x, float y) { super.beforePaint(c, x, y); replacePacks.setSize(centerWidth, 1); replacePacks.winLeft = centerPos; replaceVials.setSize(centerWidth, 1); replaceVials.winLeft = centerPos; random.setSize(centerWidth, 1); random.winLeft = centerPos; noyj.setSize(centerWidth, 1); noyj.winLeft = centerPos; mutMaxAmmo.setSize(centerWidth, 1); mutMaxAmmo.winLeft = centerPos; nstay.setSize(centerWidth, 1); nstay.winLeft = centerPos; botsObey.setSize(centerWidth, 1); botsObey.winLeft = centerPos; armStatus.setSize(centerWidth, 1); armStatus.winLeft = centerPos; armStatus.editBoxWidth = 90; pilotOver.setSize(centerWidth, 1); pilotOver.winLeft = centerPos; shockwave.setSize(centerWidth, 1); shockwave.winLeft = centerPos; shockwave.sliderWidth = 90; maxammo.setSize(centerWidth, 1); maxammo.winLeft = centerPos; maxammo.sliderWidth = 90; fuelcap.setSize(centerWidth, 1); fuelcap.winLeft = centerPos; fuelcap.sliderWidth = 90; ff.setSize(centerWidth, 1); ff.winLeft = centerPos; ff.sliderWidth = 90; } // end u3N7f27@?,@h(7?,i(7?,m@7@?,?,@p67?,?,{27@@?,j@7?,@@?,o@7@@?,?,T v // SLV2. Copyright (C) Al McElrath 2001. // http://www.planetunreal.com/0fus/ // $Id: SLOPage.uc,v 1.1.1.1 2001/06/27 18:17:47 yrns Exp $ /** Page window with some general stuff in it. */ class SLOPage extends UMenuPageWindow; var int co; var int cw; var int cl; var int cr; var int centerWidth, centerPos; var int offset; var() color textColor; var() Color white, black; function created() { super.created(); align(); // Start 40 down. co += 40; } function afterCreate() { super.afterCreate(); desiredWidth = 260; desiredHeight = co; } function UWindowDialogControl _cc(Class class, float x, float y, float w, float h) { //, optional UWindowWindow ownerWin, optional bool bUnique, optional name objName) { local UWindowDialogControl c; c = createControl(class, x, y, w, h); //, ownerWin, bUnique, objName); if (c != none) { c.setTextColor(textColor); c.setFont(F_Normal); // May not be necessary, but for dropdowns. c.lookAndFeel = lookAndFeel; } return c; } function beforePaint(Canvas c, float x, float y) { align(); } function paint(Canvas c, float x, float y) { //c.drawColor = white; super.paint(c, x, y); drawStretchedTexture(c, 0, 0, winwidth, winheight, Texture'WhiteTexture'); drawStretchedTexture(c, 0, 0, 256, 256, Texture'SLV2Textures.opt.optback'); } function align() { co = 0; cw = winwidth / 2.5; cl = (winwidth / 2 - cw) / 2; cr = winwidth / 2 + cl; centerWidth = winwidth - 30; centerPos = (winwidth - centerWidth) / 2; } function notify(UWindowDialogControl c, byte e) { super.notify(c, e); switch (e) { // Install our look and feel. case DE_Created: c.lookAndFeel = lookAndFeel; if (c.isA('UWindowComboControl')) { UWindowComboControl(c).list.lookAndFeel = lookAndFeel; } break; } } // end f // SLV2. Copyright (C) Al McElrath 2001. // http://www.planetunreal.com/0fus/ // $Id: SLOModMenuItem.uc,v 1.1.1.1 2001/06/27 18:17:47 yrns Exp $ /** Mod menu item object. */ class SLOModMenuItem extends UMenuModMenuItem; var SLOWindow OW; function execute() { if (OW != none) { OW.showWindow(); OW.bringToFront(); } else { OW = SLOWindow(menuItem.owner.root.createWindow(class'SLOWindow', 10, 10, 10, 10, menuItem.owner, true)); } } // end },QBQ 6=,6=,6=,b>,zb-6=,6=,6=,,)P>?,F@[ ,-d,P>V,.P?,>F?,AW,&PF?,>`b-6$`6$`6$`=6$6$6${b-,#P?&>?, wb*,+PF?, >?, ,?P?,?,>?,b' H~2Aєr[>r[>;aGնmo ;aGM] &StrangeloveQ]Configure Strangelove V2.] // SLV2. Copyright (C) Al McElrath 2001. // http://www.planetunreal.com/0fus/ // $Id: SLOManualWindow.uc,v 1.1.1.1 2001/06/27 18:17:47 yrns Exp $ class SLOManualWindow extends UWindowScrollingDialogClient; //class SLOManualWindow extends UWindowFramedWindow; // end L // SLV2. Copyright (C) Al McElrath 2001. // http://www.planetunreal.com/0fus/ // $Id: SLOManualCW.uc,v 1.2 2001/07/12 08:17:07 yrns Exp $ class SLOManualCW extends SLOHTMLPage; // end W // SLV2. Copyright (C) Al McElrath 2001. // http://www.planetunreal.com/0fus/ // $Id: SLOInfoWindow.uc,v 1.1.1.1 2001/06/27 18:17:47 yrns Exp $ class SLOInfoWindow extends UWindowScrollingDialogClient; //class SLOInfoWindow extends UWindowFramedWindow; // end ^ // SLV2. Copyright (C) Al McElrath 2001. // http://www.planetunreal.com/0fus/ // $Id: SLOInfoCW.uc,v 1.2 2001/07/12 08:17:07 yrns Exp $ class SLOInfoCW extends SLOHTMLPage; function parseHTML(out string text) { html.replaceText(text, "", "This is " $ Class'Util'.static.getVersionString() $ "."); } // end W // SLV2. Copyright (C) Al McElrath 2001. // http://www.planetunreal.com/0fus/ // $Id: SLOHTMLTextArea.uc,v 1.1.1.1 2001/06/27 18:17:47 yrns Exp $ class SLOHTMLTextArea extends UWindowHTMLTextArea; /* The parent class blanks the screen. We want it transparent. */ function paint(canvas c, float x, float y) { super(UWindowDynamicTextArea).paint(c, x, y); bReleased = false; } /** We put this in a separate function so we can call it separately. */ function stripLines(out string html) { replaceText(html, chr(13) $ chr(10), " "); replaceText(html, chr(13), " "); replaceText(html, chr(10), " "); replaceText(html, " ", ""); // Bleh. replaceText(html, "
", "
"); } /** Supercedes super call. Stripping only done on updates. If it's wrong in the config file or script, we're fucked anyway. */ function setHTML(string html) { clear(); addText(html); } dh%Xx1%DZ%%%{%Z%%5Z%%%6Z=,6Z=,6Z=, @Q^vU, Q-^BK@Q-^AK^Q8k@@A^@@ArQFkQ?,@@A4B^@@ArQFk@@Q?,A@@^(BAr T& // SLV2. Copyright (C) Al McElrath 2001. // http://www.planetunreal.com/0fus/ // $Id: SLOHTMLPage.uc,v 1.2 2001/07/12 08:17:07 yrns Exp $ class SLOHTMLPage extends SLOPage config (SLV2Weblink); var SLOHTMLTextArea html; var SLWeblink link; var() string orig; var() int storelen; var() config string stored[64]; var() config string modtime; var() string host, path; var() config int port; /** Check to see if we have stored HTML. If so, use it. Launch the weblink to see if there's new copy available. Need to determine if we are Internet-connected. FIX. */ function created() { local string stored; super.created(); link = getPlayerOwner().getEntryLevel().spawn(Class'SLWeblink'); link.suck(host, port, path, modtime, self); html = SLOHTMLTextArea(createControl(class'SLOHTMLTextArea', centerPos, co, winWidth - centerPos, winHeight - co)); stored = getStored(); if (stored != "") { setHTML(stored); } else { setHTML(orig); } } /** The HTML area has it's own scroll bars, so just use those. */ function afterCreate() { super.afterCreate(); desiredWidth = 0; desiredHeight = 0; } function beforePaint(Canvas c, float x, float y) { //super.beforePaint(c, x, y); html.setSize(winWidth - centerPos, winHeight - co); html.winLeft = centerPos; } function setHTML(string text) { parseHTML(text); html.setHTML(text); } /** Subclass should fill this in. */ function parseHTML(out string text) {} /** SLWeblink calls this when new data arrives. We store it stripped (necessary for the config file), but not parsed (parseHTML()). */ function updateHTML(string data, string modt) { html.stripLines(data); setStored(data); default.modtime = modt; setHTML(data); staticSaveConfig(); } /** Can't read back in strings from the config file longer than 1024 bytes! Break it up. Sigh. */ function setStored(string text, optional int index) { local string rt; // Out of space! if (index >= arrayCount(stored)) return; default.stored[index] = left(text, storelen); rt = mid(text, storelen); if (len(rt) > 0) { setStored(rt, index + 1); } else { default.stored[index + 1] = ""; } } /** Read our stored fragments back in. */ function string getStored() { local int i; local string text; while (stored[i] != "") { text = text $ stored[i]; i++; } return text; } HL // SLV2. Copyright (C) Al McElrath 2001. // http://www.planetunreal.com/0fus/ // $Id: SLOCW.uc,v 1.4 2001/07/31 04:58:53 yrns Exp $ /** Main options client window object. */ class SLOCW extends UWindowDialogClientWindow config (SLV2Window); var UWindowPageControl pages; var localized string infoTab, clientTab, serverTab, manualTab; var UWindowSmallCloseButton closeB; var UWindowSmallButton defaultsB, ircB, credsB; var() localized string closeText, closeHelp, defaultsText, defaultsHelp, ircText, ircHelp, credsText, credsHelp; var() string credCommand; /** This option is used for distributions without the credits movie or RTMS. */ var() config bool bCredits; // Pages to default. var SLOClientCW def1; var SLOServerCW def2; function created() { super.created(); pages = UWindowPageControl(createWindow(Class'UWindowPageControl', 0, 0, winWidth, winHeight - 24)); pages.addPage(infoTab, Class'SLOInfoWindow'); pages.addPage(clientTab, Class'SLOClientWindow'); pages.addPage(serverTab, Class'SLOServerWindow'); pages.addPage(manualTab, Class'SLOManualWindow'); def1 = SLOClientCW(UWindowScrollingDialogClient(pages.getPage(clientTab).page).clientarea); def2 = SLOServerCW(UWindowScrollingDialogClient(pages.getPage(serverTab).page).clientarea); closeB = UWindowSmallCloseButton(createControl(class'UWindowSmallCloseButton', 0, 0, 0, 0)); closeB.setText(closeText); closeB.setHelpText(closeHelp); defaultsB = UWindowSmallButton(createControl(class'UWindowSmallButton', 0, 0, 0, 0)); defaultsB.setText(defaultsText); defaultsB.setHelpText(defaultsHelp); ircB = UWindowSmallButton(createControl(class'UWindowSmallButton', 0, 0, 0, 0)); ircB.setText(ircText); ircB.setHelpText(ircHelp); if (bCredits) { credsB = UWindowSmallButton(createControl(class'UWindowSmallButton', 0, 0, 0, 0)); credsB.setText(credsText); credsB.setHelpText(credsHelp); } } function beforePaint(Canvas c, float x, float y) { super.beforePaint(c, x, y); resized(); closeB.autoWidth(c); defaultsB.autoWidth(c); ircB.autoWidth(c); if (bCredits) { credsB.autoWidth(c); } } function resized() { local int x, y, gap; gap = 10; super.resized(); x = winwidth - gap - closeB.winwidth; y = winheight - 20; pages.winWidth = winWidth; pages.winHeight = winHeight - 24; closeB.winleft = x; closeB.wintop = y; x -= gap + defaultsB.winwidth; defaultsB.winleft = x; defaultsB.wintop = y; x -= gap + ircB.winwidth; ircB.winleft = x; ircB.wintop = y; if (bCredits) { x -= gap + credsB.winwidth; credsB.winleft = x; credsB.wintop = y; } } function notify(UWindowDialogControl c, byte e) { if (c == defaultsB && e == DE_Click) { def1.loadDefaultValues(); def2.loadDefaultValues(); return; } else if (c == ircB && e == DE_Click) { goIRC("irc.enterthegame.com", "#strangelove"); return; } else if (bCredits && (c == credsB && e == DE_Click)) { root.console.viewPort.actor.consoleCommand(credCommand); close(); root.console.closeUWindow(); } } /** Navigates the UT menu system, opens the browser window, selects chat, and connects to the specified IRC server and channel. */ function goIRC(string server, string channel) { local UMenuMultiplayerMenu mm; local UWindowPageControlPage pcp; local UBrowserIRCSetupClient irc; // Find the multiplayer menu. mm = UMenuMultiplayerMenu(UMenuRootWindow(root).menuBar.multiplayer); //log(self $ ".goIRC(): mm: " $ mm); if (mm != none) { // Load it up. mm.loadUBrowser(); // Still no browser window? Forget it. if (mm.browserWindow != none) { // Flip to the chat page. pcp = flipToTab(UBrowserMainClientWindow(mm.browserWindow.clientArea).pageControl, "Chat"); if (pcp != none) { // Find the IRC setup page. irc = UBrowserIRCWindow(pcp.page).systemPage.setupClient; if (irc != none) { // Enter our IRC info and go. irc.serverCombo.setValue(server); irc.channelCombo.setValue(channel); irc.doJoin(); } else { log(self $ ".goIRC(): couldn't find setup page"); } } else { log(self $ ".goIRC(): couldn't open chat tab"); } } else { log(self $ ".goIRC(): couldn't open ubrowser window"); } } else { log(self $ ".goIRC(): no multiplayer menu"); } } /** Given a UWindowPageControl, this will flip to the specified tab based on its caption. Returns none if unsuccessful. */ function UWindowPageControlPage flipToTab(UWindowPageControl pc, string cap) { local UWindowPageControlPage p; for (p = UWindowPageControlPage(pc.items.next); p != none; p = UWindowPageControlPage(p.next)) { if (p.caption == cap) { pc.gotoTab(p, true); return p; } } return none; } // end W // SLV2. Copyright (C) Al McElrath 2001. // http://www.planetunreal.com/0fus/ // $Id: SLOClientWindow.uc,v 1.1.1.1 2001/06/27 18:17:47 yrns Exp $ class SLOClientWindow extends UWindowScrollingDialogClient; function created() { super.created(); } // end IGoWW *$Ga  2$ U$Ga  x$Ga  $ $Ga   Ks // SLV2. Copyright (C) Al McElrath 2001. // http://www.planetunreal.com/0fus/ // $Id: SLOClientCW.uc,v 1.3 2001/07/21 07:08:14 yrns Exp $ class SLOClientCW extends SLOPage; #exec OBJ LOAD FILE=..\Textures\SLV2Textures.utx PACKAGE=SLV2Textures var UWindowCheckbox ctOn; var localized string ctOnText; var localized string ctOnHelp; var UWindowHSliderControl ctPres; var localized string ctPresText; var localized string ctPresHelp; var string ctPresEntries[4]; var UWindowHSliderControl ctLen; var localized string ctLenText; var localized string ctLenHelp; var UWindowComboControl ctRot; var localized string ctRotText; var localized string ctRotHelp; // Took out "view aligned" until ready. var string ctRotEntries[2]; //[3]; var UWindowCheckbox showKeys; var localized string showKeysText; var localized string showKeysHelp; var UWindowCheckbox revY; var localized string revYText; var localized string revYHelp; var UWindowCheckbox black; var localized string blackText; var localized string blackHelp; var() Class contrailClass; function created() { local int i; super.created(); ctOn = UWindowCheckbox(_cc(class'UWindowCheckbox', centerPos, co, centerWidth, 1)); ctOn.setText(ctOnText); ctOn.setHelpText(ctOnHelp); co += offset; ctPres = UWindowHSliderControl(_cc(class'UWindowHSliderControl', centerPos, co, centerWidth, 1)); ctPres.setHelpText(ctPresHelp); ctPres.setRange(0, 3, 1); co += offset; ctLen = UWindowHSliderControl(_cc(class'UWindowHSliderControl', centerPos, co, centerWidth, 1)); ctLen.setHelpText(ctLenHelp); ctLen.setRange(5, 60, 5); //ctLen.setValue(0, false); co += offset;// * 2.0; ctRot = UWindowComboControl(_cc(class'UWindowComboControl', centerPos, co, centerWidth, 1)); ctRot.lookAndFeel = lookAndFeel; ctRot.setText(ctRotText); ctRot.setHelpText(ctRotHelp); ctRot.setEditable(false); ctRot.align = TA_Left; for(i = 0; i < arrayCount(ctRotEntries) && ctRotEntries[i] != ""; i++) { ctRot.AddItem(ctRotEntries[i], string(i)); } co += offset * 2.0; showKeys = UWindowCheckbox(_cc(class'UWindowCheckbox', centerPos, co, centerWidth, 1)); showKeys.setText(showKeysText); showKeys.setHelpText(showKeysHelp); co += offset; revY = UWindowCheckbox(_cc(class'UWindowCheckbox', centerPos, co, centerWidth, 1)); revY.setText(revYText); revY.setHelpText(revYHelp); co += offset; black = UWindowCheckbox(_cc(class'UWindowCheckbox', centerPos, co, centerWidth, 1)); black.setText(blackText); black.setHelpText(blackHelp); co += offset; loadCurrentValues(); } function afterCreate() { super.afterCreate(); desiredHeight = co; } function loadCurrentValues() { local int i; local byte b; //log("loading current values"); ctOn.bChecked = !(Class'SLV2.StrangeShell'.default.bNoContrails); showKeys.bChecked = Class'SLV2.SLHUD'.default.bShowKeys; revY.bChecked = Class'SLV2.StrangeShell'.default.bRevY; black.bChecked = Class'SLV2.StrangeExpl'.default.bNoBlack; // Load presence. Build bit array. b = 0x0; if (contrailClass.default.bDDStart) b = b | 0x1; if (contrailClass.default.bDDEnd) b = b | (0x1 << 1); if (contrailClass.default.bDDShort) b = b | (0x1 << 2); switch (b) { case 7: i = 0; break; // 111 min case 5: i = 1; break; // 101 med //case 4: i = 2; break; // 100 high case 0: i = 3; break; // 000 max default: i = 2; } ctPres.setValue(i); // Load life. ctLen.setValue(contrailClass.default.life); // Load rotation. if (contrailClass.default.bRotate) i = 1; else if (contrailClass.default.bViewAlign) i = 2; else i = 0; ctRot.setSelectedIndex(i); updateLabels(); } function loadDefaultValues() { Class'SLV2.StrangeShell'.default.bNoContrails = false; contrailClass.default.bDDStart = false; contrailClass.default.bDDEnd = false; contrailClass.default.bDDShort = true; contrailClass.default.life = 20; contrailClass.default.bRotate = false; contrailClass.default.bViewAlign = false; Class'SLV2.SLHUD'.default.bShowKeys = true; Class'SLV2.StrangeShell'.default.bRevY = false; Class'SLV2.StrangeExpl'.default.bNoBlack = false; loadCurrentValues(); } function saveConfigs() { class'SLV2.Contrail'.static.staticSaveConfig(); class'SLV2.SLHUD'.static.staticSaveConfig(); class'SLV2.StrangeShell'.static.staticSaveConfig(); class'SLV2.StrangeExpl'.static.staticSaveConfig(); super.saveConfigs(); } function notify(UWindowDialogControl c, byte e) { local UWindowList l; super.notify(c, e); switch (e) { case DE_Change: switch (c) { case ctOn: Class'SLV2.StrangeShell'.default.bNoContrails = !(ctOn.bChecked); break; case showKeys: Class'SLV2.SLHUD'.default.bShowKeys = showKeys.bChecked; break; case ctPres: switch (ctPres.getValue()) { case 0: contrailClass.default.bDDStart = true; contrailClass.default.bDDEnd = true; contrailClass.default.bDDShort = true; break; case 1: contrailClass.default.bDDStart = true; contrailClass.default.bDDEnd = false; contrailClass.default.bDDShort = true; break; case 2: contrailClass.default.bDDStart = false; contrailClass.default.bDDEnd = false; contrailClass.default.bDDShort = true; break; case 3: contrailClass.default.bDDStart = false; contrailClass.default.bDDEnd = false; contrailClass.default.bDDShort = false; break; } updateLabels(); break; case ctLen: contrailClass.default.life = ctLen.getValue(); updateLabels(); break; case ctRot: switch ctRot.getSelectedIndex() { case 0: contrailClass.default.bRotate = false; contrailClass.default.bViewAlign = false; break; case 1: contrailClass.default.bRotate = true; contrailClass.default.bViewAlign = false; break; case 2: contrailClass.default.bRotate = false; contrailClass.default.bViewAlign = true; break; } break; case revY: Class'SLV2.StrangeShell'.default.bRevY = revY.bChecked; break; case black: Class'SLV2.StrangeExpl'.default.bNoBlack = black.bChecked; break; } } } function updateLabels() { //log("in updateLabels()"); // Disable other inputs? //ctPres.setEditable(ctOn.bChecked); //ctLen.setEditable(ctOn.bChecked); //ctRot.setEditable(ctOn.bChecked); if (ctPres != none) ctPres.setText(ctPresText $ " " $ ctPresEntries[ctPres.getValue()] $ ""); if (ctLen != none) ctLen.setText(ctLenText $ " " $ int(ctLen.getValue()) $ " secs"); } function beforePaint(Canvas c, float x, float y) { super.beforePaint(c, x, y); ctOn.setSize(centerWidth, 1); ctOn.winLeft = centerPos; showKeys.setSize(centerWidth, 1); showKeys.winLeft = centerPos; ctPres.setSize(centerWidth, 1); ctPres.winLeft = centerPos; ctPres.sliderWidth = 100; ctLen.setSize(centerWidth, 1); ctLen.winLeft = centerPos; ctLen.sliderWidth = 100; ctRot.setSize(centerWidth, 1); ctRot.winLeft = centerPos; ctRot.editBoxWidth = 100; revY.setSize(centerWidth, 1); revY.winLeft = centerPos; black.setSize(centerWidth, 1); black.winLeft = centerPos; } // end VVReVDV[RYlS RCRpR~REVRRRE RcR_R|RGReDgR^RzwoDxRHwI R\R_}lRDRZR`RwDgRZRdRIRwRueL eYeCe~RADneERURqRoRVR~wnw\RyzORCzPzLRQR\RRHVuRORrRdR}CfRFCkCWRICFRGCh}FReRdR^Rc}@RBDXR{RNVqRCo}je]ez}i}l}gC^C|RPC[ReRg}jRh}hD\ RzR@Rk}aeQ}{}S|K }_eUe~ecCqDCe}RejRmRGRKeD RaARR^RveTD`DfD`RLRoz.}Ze@}s}ReyCoeCRb}FCsD\ DBwuCowDDeRMCreDICY eoeAeCDketele CgD^eyeuwRqDfDr}JRb}O}MemlPeyDxeieBCDRIRJ}U}v}x}S}De{e|RVRhe}CK}\CSDn}ACr}[}@eL}w|veye e}Ke6D]e}CO }2DHjCKVpe$}H}O}I}PCxRnzzCfT R]e*R[Cxz}NDG|e@RpRHRADlew|`eGRLeE}t|TD_ew|eQDH&keZCm}}eM}zeNRxeF`] DX eXeReceSe|RnedeJeIeOePDH&{wMefC>\eOeDe`eAeaeHeoeCC}exeY|?vDleL e@DG}DG{}GDeeue{eW}T}i}JwWwQ}S}NCqexORteRCGReECHVe^CQCBCTCSeFeKe~wNhzXeyIeyGeyHeB VueveGC`eCcRXRcwRK|vebR`wtebebCFCXe$DmDfCWebe@RRaRVwCSDLDLe[`Ae!VDDHEpPcoq]c ]s LPX]r fpo rP CdBoPo^p^ l^yo Go To a^n]n |oIoWoeWs^AE Op\ZjG xdFiTmbapO~^ L\ Yn eoro@oNo]3N koxoGoUW dpb rooNO ]h i^ v}rCIvuo C^ P^ ]wjJx\ FCZStmIk{n IEVodn sQ@IlNf\HjwxZFKTNbIj pT}\ KoXO g\ t\ A OM]D[3Y _A lO zIiFbUh co o^ |^ IzP V'pc n Sh _])k]*1TV  E^ Ro_Rqmo{b Iq VPbb pQ  }UIb Wb db q] !~b _{dlJ  P^ \Pixwv FoRb `^mb {oHU Vb cn pb }^Jps XoeY s]$m@o m oz]<Q1HIn Y]:E!fR@ k}x3[ FF  S3b `n mo z\ GzoTK  b3X oy|R  KPW^fC t[C^QA _38 mb zh Gb TiaY og |3h INVY dOqPRM ^[^ iWv@ DSPX^hl_{b IY VZ  ch oW {N GK  Th `YmRn {K  HY T^aEoZ  }p I5 U^a^o^}Z  KgWg eK  rRX s LRN Yb g]d t^A_ O]v \3qihwItEUTTb^ plo~It LIo Y^fg tl AIuNV\L jZ  w{Cy Q^^@ lo y- FB Sp _N kk xj E~ Rj ^i jB wR/CRh `v lL xl E\ RRb _n l^x\ Fn S\ _I^ lR yK  FI] RR8 _q lr xs EIT QIz ^t kIP x_ ES Qh ^b kIk xu Eo RT _x lw yV F\ Sn `W lX x% EY Qz ^[ kZ wn DM PY ]\ jI  wo Dm Q^^| ln y\ FRSIp b]2o]H  }n I\ V^cn q\ ~^Kq Yn e\ q^~K  L] XqdX s8 @I\ Mg Zh g3_ t3C AIl PIr ]e j|]w\TR@vpA\fRBSBuUa]JRU gIk to AK  N\[I  iZ  v^B^P@  ^K  jl_  w ]DaRV `bmQ{cI^WMe]sjAdOi]Zk@  y`EXJ Se]UQkYY|hGUWY\hu\G]~KdTQ!oEF@ZQF[QW_JAh]Jr^V|QJRRJ\SJf`]pvgMa]tzJQeJ_VJicJsd]}i]ZJwFHEj]MM RjlJ|OJ JOBTJVI9yeJG^IA[eI$n@[HnI6QvI hGYioIjXp {By}E$yvCWoI  FHtS^GNiU&G~ b]E uLb [ Kn NYy `vR 2 H d_U rH/[t J O c_\ R;G{ R,lB Z|n RBBj GPl R!0| n l \ x MQE ^V pR Cd fog aR*3V ^I `RQW `hh p gP xw wk o U Z E$]h iQE M V CLc &\o UK I  ` a*(m `]U ].pr ]@`b pn B p\ N W_[ p^z JH |_V ]hu ]J ] S_j ]FI D W R_w J V h v PuB r},w h c r +o reZ Ou rat rrB ;!)Q ;?nz Mth ;@1\ J M DoZ 33^I 3GWg Cc~ 3I)a 3HxJ ANB 3F8P PYH A a xZo 3KfI J o C{ a*(~ I_f 3=dE K  i aIu 3G+~ `4Ci {`lKWL3`4Y$Wr`4^pn ND`4b[I  }`4nIHw]`4A`4q@QUq~FFE`4hLF`4WtG`4bKH`4im;`4bVI  xXHE^PMR`4_&]I`4SL|J`4bOokq`4Vs\sr