├── Build ├── oldskool.u.230 ├── oldskoolbuild.bat └── oldskoolbuild.ini ├── Classes ├── Ash.uc ├── BloodNotify.uc ├── DecalNotify.uc ├── EverythingNotify.uc ├── FemaleOne.uc ├── FemaleOneBot.uc ├── FemaleTwo.uc ├── FemaleTwoBot.uc ├── GreenBloodSplat.uc ├── GreenUTBloodPool2.uc ├── Hollow.uc ├── Illhaven.uc ├── KeyBinderOpener.uc ├── MaleOne.uc ├── MaleOneBot.uc ├── MaleThree.uc ├── MaleThreeBot.uc ├── MaleTwo.uc ├── MaleTwoBot.uc ├── OSAExtraKeyBindings.uc ├── OSWeaponPowerUp.uc ├── OlBloodBurst.uc ├── OlUTBloodPool2.uc ├── OldSkoolAboutClient.uc ├── OldSkoolCustomizeClientWindow.uc ├── OldSkoolMutatorCW.uc ├── OldSkoolPagesClientWindow.uc ├── OldSkoolScoreBoard.uc ├── OldSkoolScrollKeys.uc ├── OldSkoolspectatorhud.uc ├── OldskoolMutatorWindow.uc ├── OldskoolScrollAbout.uc ├── OldskoolScrollGOp.uc ├── OldskoolScrollMain.uc ├── OldskoolScrollMusic.uc ├── OldskoolScrollSP.uc ├── SinglePlayer2.uc ├── U1humanbot.uc ├── UnrealFemale.uc ├── UnrealMale.uc ├── Unrealhuman.uc ├── asscoreboard.uc ├── boltskorchlong.uc ├── coopHUD.uc ├── coopbase.uc ├── coopcw.uc ├── coopgame2.uc ├── coopwindow.uc ├── invasion.uc ├── ol1337krallBolt.uc ├── olBloodSplat.uc ├── olBloodSpurt.uc ├── olBruteProjectile.uc ├── olCreatureCarcass.uc ├── olCreatureChunks.uc ├── olGasBagBelch.uc ├── olKraalBolt.uc ├── olMercRocket.uc ├── olQueenProjectile.uc ├── olSkaarjProjectile.uc ├── olSlithProjectile.uc ├── olTentacleProjectile.uc ├── olWarlordRocket.uc ├── oldboardNotify.uc ├── oldhudNotify.uc ├── oldskoolHUDConfig.uc ├── oldskoolTeamScoreBoard.uc ├── oldskoolashud.uc ├── oldskoolbaseHUD.uc ├── oldskoolconfigclient.uc ├── oldskoolconfigwindow.uc ├── oldskooldomhud.uc ├── oldskoolgameoptionsclient.uc ├── oldskoolhud.uc ├── oldskoollmsboard.uc ├── oldskoolmusicclient.uc ├── oldskoolspclient.uc ├── oldskoolteamhud.uc ├── olpawnshadow.uc ├── oneday.uc ├── origUnreal.uc ├── peril.uc ├── playbutton.uc ├── realctfhud.uc ├── scorekeeper.uc ├── shinigami.uc ├── shrak.uc ├── skinbotset.uc ├── skinconfiguration.uc ├── skinsetclass.uc ├── sktrooper.uc ├── sktrooperbot.uc ├── spoldskool.uc ├── strangeworld.uc ├── transhack.uc ├── troopercarcass2.uc ├── unrealCreditsCW.uc ├── unrealCreditsWindow.uc ├── unrealfbot.uc └── unrealmbot.uc ├── LICENSE.md ├── README.md └── Textures ├── AshShot.pcx ├── BluePlay.pcx ├── DayShot.pcx ├── Goldplay.pcx ├── GreenSplat1.pcx ├── GreenSplat10.pcx ├── GreenSplat2.pcx ├── GreenSplat3.pcx ├── GreenSplat4.pcx ├── GreenSplat5.pcx ├── GreenSplat6.pcx ├── GreenSplat7.pcx ├── GreenSplat8.pcx ├── GreenSplat9.pcx ├── I_RealBlueFlagGone.pcx ├── I_RealBlueFlagInBase.pcx ├── I_RealBlueSkull.pcx ├── I_RealRedFlagGone.pcx ├── I_RealRedFlagInBase.pcx ├── I_RealRedSkull.pcx ├── MetalPlay.pcx ├── RealSkull.pcx ├── UnrealShot.pcx ├── holShot.pcx ├── illShot.pcx ├── invadeShot.pcx ├── perilShot.pcx ├── pulseicon.pcx ├── shinShot.pcx └── shrakShot.pcx /Build/oldskool.u.230: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OldUnreal/oldskool/4d62dc50c33b9afddd719a12373878ac0ff21afe/Build/oldskool.u.230 -------------------------------------------------------------------------------- /Build/oldskoolbuild.bat: -------------------------------------------------------------------------------- 1 | @ECHO OFF 2 | ECHO --- Deleting Old Files... 3 | del oldskool.u 4 | 5 | ECHO --- Compiling... 6 | REM This only works with UT v469c RC2 and upwards 7 | ucc make -ini=oldskoolbuild.ini -fixcompat -noconstchecks 8 | ucc conform oldskool.u oldskool.u.230 9 | 10 | ECHO --- All Done! 11 | -------------------------------------------------------------------------------- /Build/oldskoolbuild.ini: -------------------------------------------------------------------------------- 1 | [Editor.EditorEngine] 2 | EditPackages=Core 3 | EditPackages=Engine 4 | EditPackages=Editor 5 | EditPackages=UWindow 6 | EditPackages=Fire 7 | EditPackages=IpDrv 8 | EditPackages=UWeb 9 | EditPackages=UBrowser 10 | EditPackages=UnrealShare 11 | EditPackages=UnrealI 12 | EditPackages=UMenu 13 | EditPackages=Botpack 14 | EditPackages=IpServer 15 | EditPackages=UTServerAdmin 16 | EditPackages=UTMenu 17 | EditPackages=olroot 18 | EditPackages=olweapons 19 | EditPackages=oldskool 20 | 21 | [Engine.GameEngine] 22 | CacheSizeMegs=4 23 | UseSound=True 24 | MinClientVersion=432 25 | ServerPackages=SoldierSkins 26 | ServerPackages=CommandoSkins 27 | ServerPackages=FCommandoSkins 28 | ServerPackages=SGirlSkins 29 | ServerPackages=BossSkins 30 | ServerPackages=Botpack 31 | ServerPackages=MultiMesh 32 | ServerPackages=EpicCustomModels 33 | ServerPackages=TCowMeshSkins 34 | ServerPackages=TNaliMeshSkins 35 | ServerPackages=TSkMSkins 36 | ServerActors=IpDrv.UdpBeacon 37 | ServerActors=IpServer.UdpServerQuery 38 | ServerActors=IpServer.UdpServerUplink MasterServerAddress=unreal.epicgames.com MasterServerPort=27900 39 | ServerActors=IpServer.UdpServerUplink MasterServerAddress=master0.gamespy.com MasterServerPort=27900 40 | ServerActors=IpServer.UdpServerUplink MasterServerAddress=master.mplayer.com MasterServerPort=27900 41 | ServerActors=UWeb.WebServer 42 | 43 | [Core.System] 44 | PurgeCacheDays=0 45 | SavePath=../Save 46 | CachePath=../Cache 47 | CacheExt=.uxx 48 | Paths=../System/*.u 49 | Paths=../Maps/*.unr 50 | Paths=../Textures/*.utx 51 | Paths=../Sounds/*.uax 52 | Paths=../Music/*.umx 53 | Suppress=DevLoad 54 | Suppress=DevSave 55 | Suppress=DevNetTraffic 56 | Suppress=DevGarbage 57 | Suppress=DevKill 58 | Suppress=DevReplace 59 | Suppress=DevSound 60 | Suppress=DevCompile 61 | Suppress=DevBind 62 | Suppress=DevMD5 63 | 64 | [Engine.Engine] 65 | GameRenderDevice=OpenGLDrv.OpenGLRenderDevice 66 | AudioDevice=ALAudio.ALAudioSubsytem 67 | NetworkDevice=IpDrv.TcpNetDriver 68 | DemoRecordingDevice=udemo.uDemoDriver 69 | Console=UTMenu.UTConsole 70 | Language=int 71 | GameEngine=Engine.GameEngine 72 | EditorEngine=Editor.EditorEngine 73 | WindowedRenderDevice=SoftDrv.SoftwareRenderDevice 74 | RenderDevice=OpenGLDrv.OpenGLRenderDevice 75 | DefaultGame=Botpack.DeathMatchPlus 76 | DefaultServerGame=Botpack.DeathMatchPlus 77 | ViewportManager=WinDrv.WindowsClient 78 | Render=Render.Render 79 | Input=Engine.Input 80 | Canvas=Engine.Canvas 81 | CdPath=E: 82 | RunCount=11111 -------------------------------------------------------------------------------- /Classes/Ash.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | // oldskool.ash: for ballad of ash 3 | // ============================================================ 4 | 5 | class ash expands mappack; 6 | #exec TEXTURE IMPORT NAME=AshShot FILE=Textures\ashShot.pcx MIPS=OFF 7 | 8 | defaultproperties 9 | { 10 | Maps(0)=Ash 11 | Maps(1)=Intro 12 | Maps(2)=ash2 13 | Maps(3)=ash1 14 | Maps(4)=ash3 15 | Author="Lestat" 16 | Title="The Ballad Of Ash" 17 | FlyBy="Intro.Unr" 18 | basedir="ash" 19 | Screenshot=Texture'AshShot' 20 | } 21 | -------------------------------------------------------------------------------- /Classes/BloodNotify.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | //The main oldskool package. 3 | //Holds the mutators, singleplayer game, windows, Unreal I models and mappacks. 4 | //BloodNotify. This is used for adding blood decals to the unreali blood effects. 5 | // ============================================================ 6 | 7 | class BloodNotify expands SpawnNotify; 8 | simulated event postbeginplay(){ 9 | if (level.netmode!=nm_client||class'spoldskool'.default.busedecals) 10 | super.postbeginplay(); 11 | else 12 | destroy(); //useless on clients that have decals false. 13 | //log ("OSA Blood notify initialized:"@!bdeleteme); 14 | } 15 | function prebeginplay(); //don't call parent! (screwed up) 16 | simulated event Actor SpawnNotification(Actor A) //put in olbloodburst. 17 | { 18 | if (a.class!=class'OlBloodBurst'&&class'spoldskool'.default.busedecals){ 19 | a.bhidden=true; //don't want to risk destroying. 20 | if (level.netmode!=nm_client) 21 | a.remoterole=role_none; //why replicate? 22 | return spawn(class'olbloodburst',a.owner,a.tag,a.location,a.rotation); //copy :P 23 | } 24 | return A; 25 | } 26 | defaultproperties 27 | { 28 | ActorClass=Class'UnrealShare.BloodBurst' 29 | } 30 | -------------------------------------------------------------------------------- /Classes/DecalNotify.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | // oldskool.DecalNotify : Disables timer on decals, thus preventing their destruction. are bgamerelevant. 3 | // The main oldskool package. 4 | // Holds the mutators, singleplayer game, windows, Unreal I models and mappacks. 5 | // ============================================================ 6 | 7 | class DecalNotify expands SpawnNotify; 8 | 9 | simulated event postbeginplay(){ 10 | if (level.netmode!=nm_client||class'spoldskool'.default.PermaDecals) 11 | super.postbeginplay(); 12 | else 13 | destroy(); //useless on clients that have decals false. 14 | //log ("OSA Blood notify initialized:"@!bdeleteme); 15 | } 16 | function prebeginplay(); //don't call parent! (screwed up) 17 | simulated event Actor SpawnNotification(Actor A) //put in olbloodburst. 18 | { 19 | if (class'spoldskool'.default.PermaDecals&&A.class!=class'pock'){ 20 | A.disable('timer'); 21 | A.bstasis=true; //doesn't change :P 22 | } 23 | return A; 24 | } 25 | defaultproperties 26 | { 27 | ActorClass=Class'botpack.Scorch' 28 | } 29 | -------------------------------------------------------------------------------- /Classes/EverythingNotify.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | // oldskool.EverythingNotify : for co-op. runs tests client-side 3 | // The main oldskool package. 4 | // Holds the mutators, singleplayer game, windows, Unreal I models and mappacks. 5 | // ============================================================ 6 | 7 | class EverythingNotify expands SpawnNotify; 8 | function prebeginplay(); //don't call parent! (screwed up) 9 | simulated function PostBeginPlay() 10 | { 11 | local actor other; 12 | if (level.netmode!=nm_client) //mutator works on server. 13 | return; 14 | Super.PostBeginPlay(); //add. 15 | log ("EveryThing Notify Initialized"); 16 | ForEach Allactors(class'actor',other){ //mask. 17 | if (other.style==STY_NORMAL&&(other.IsA('decoration')&&((other.isa('tree')||left(getitemname(string(other.class)),5)~="plant"))||(other.role==role_authority&&other.isa('pawn')&&(other.isa('skaarjwarrior')||other.isa('krall')||other.isa('warlord')||other.isa('bird1')||other.isa('Slith')||other.isa('manta'))))) 18 | Other.Style=Sty_masked; 19 | if (other.IsA('scriptedpawn')&&!other.isa('tentacle')&&pawn(other).shadow==none) //no decal for them. 20 | scriptedpawn(other).Shadow = Spawn(class'olpawnShadow',other,,other.location); 21 | } 22 | } 23 | simulated event Actor SpawnNotification(Actor other) 24 | { 25 | if (other.style==STY_NORMAL&&(other.IsA('decoration')&&((other.isa('tree')||left(getitemname(string(other.class)),5)~="plant"))||(other.role==role_authority&&other.isa('pawn')&&(other.isa('skaarjwarrior')||other.isa('krall')||other.isa('warlord')||other.isa('bird1')||other.isa('Slith')||other.isa('manta'))))) 26 | Other.Style=Sty_masked; 27 | if (other.IsA('scriptedpawn')&&!other.isa('tentacle')&&pawn(other).shadow==none) //no decal for them. 28 | scriptedpawn(other).Shadow = Spawn(class'olpawnShadow',other,,other.location); 29 | return other; 30 | } 31 | defaultproperties 32 | { 33 | } 34 | -------------------------------------------------------------------------------- /Classes/FemaleOne.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | // OldSkool.Femaleone:They call her "Gina!" 3 | // Psychic_313: DEPRECATED. DON'T USE ME. 4 | //================================================================= 5 | class FemaleOne extends UnrealFemale; 6 | 7 | defaultproperties 8 | { 9 | DefaultTalkTexture="female1skiny.gina5" 10 | TeamSkin="female1skiny.gina1" 11 | altpackage="female1skins." 12 | DefaultSkinName="female1skiny.gina" 13 | DefaultPackage="female1skiny." 14 | SelectionMesh="UnrealShare.Female1" 15 | SpecialMesh="Botpack.TrophyFemale1" 16 | MenuName="Drace" 17 | VoiceType="BotPack.VoiceFemaleOn" 18 | Mesh=LodMesh'UnrealShare.Female1' 19 | } 20 | -------------------------------------------------------------------------------- /Classes/FemaleOneBot.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | // oldskool.femaleonebot: put your comment here 3 | // Psychic_313: DEPRECATED. DON'T USE ME. 4 | // ============================================================ 5 | 6 | class femaleonebot expands unrealfbot; 7 | 8 | function ForceMeshToExist() 9 | { 10 | Spawn(class'oldskool.femaleone'); 11 | } 12 | 13 | defaultproperties 14 | { 15 | DefaultTalkTexture="female1skiny.gina5" 16 | TeamSkin="female1skiny.gina1" 17 | altpackage="female1skins." 18 | DefaultSkinName="female1skiny.gina" 19 | DefaultPackage="female1skiny." 20 | SelectionMesh="UnrealShare.Female1" 21 | SpecialMesh="Botpack.TrophyFemale1" 22 | MenuName="Drace" 23 | VoiceType="BotPack.VoiceFemaleOn" 24 | Mesh=LodMesh'UnrealShare.Female1' 25 | } 26 | -------------------------------------------------------------------------------- /Classes/FemaleTwo.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | // Oldskool.FemaleTwo: A.K.A. Sonya 3 | // Psychic_313: DEPRECATED. DON'T USE ME. 4 | // ============================================================ 5 | 6 | class FemaleTwo extends UnrealFemale; 7 | 8 | //ahh...no code at all :) 9 | 10 | defaultproperties 11 | { 12 | DefaultTalkTexture="female2skiny.sony5" 13 | TeamSkin="female2skiny.sony1" 14 | altpackage="female2skins." 15 | DefaultSkinName="female2skiny.sonya" 16 | DefaultPackage="female2skiny." 17 | SelectionMesh="UnrealI.Female2" 18 | SpecialMesh="Botpack.TrophyFemale1" 19 | MenuName="Demitra" 20 | VoiceType="BotPack.VoiceFemaleOn" 21 | Mesh=LodMesh'UnrealI.Female2' 22 | } 23 | -------------------------------------------------------------------------------- /Classes/FemaleTwoBot.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | // oldskool.femaletwobot: put your comment here 3 | // Psychic_313: DEPRECATED. DON'T USE ME. 4 | // ============================================================ 5 | 6 | class femaletwobot expands unrealfbot; 7 | 8 | function ForceMeshToExist() 9 | { 10 | Spawn(class'oldskool.femaletwo'); 11 | } 12 | 13 | defaultproperties 14 | { 15 | DefaultTalkTexture="female2skiny.sony5" 16 | TeamSkin="female2skiny.sony1" 17 | altpackage="female2skins." 18 | DefaultSkinName="female2skiny.sonya" 19 | DefaultPackage="female2skiny." 20 | SelectionMesh="UnrealI.Female2" 21 | SpecialMesh="Botpack.TrophyFemale1" 22 | MenuName="Demitra" 23 | VoiceType="BotPack.VoiceFemaleOn" 24 | Mesh=LodMesh'UnrealI.Female2' 25 | } 26 | -------------------------------------------------------------------------------- /Classes/GreenBloodSplat.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | // oldskool.GreenBloodSplat : Uses Alcor's green blood decals 3 | // The main oldskool package. 4 | // Holds the mutators, singleplayer game, windows, Unreal I models and mappacks. 5 | // ============================================================ 6 | 7 | class GreenBloodSplat expands olBloodSplat; 8 | #exec TEXTURE IMPORT NAME=GreenSplat1 FILE=TEXTURES\GreenSplat1.PCX LODSET=2 9 | #exec TEXTURE IMPORT NAME=GreenSplat2 FILE=TEXTURES\GreenSplat2.PCX LODSET=2 10 | #exec TEXTURE IMPORT NAME=GreenSplat3 FILE=TEXTURES\GreenSplat3.PCX LODSET=2 11 | #exec TEXTURE IMPORT NAME=GreenSplat4 FILE=TEXTURES\GreenSplat4.PCX LODSET=2 12 | #exec TEXTURE IMPORT NAME=GreenSplat5 FILE=TEXTURES\GreenSplat5.PCX LODSET=2 13 | #exec TEXTURE IMPORT NAME=GreenSplat6 FILE=TEXTURES\GreenSplat6.PCX LODSET=2 14 | #exec TEXTURE IMPORT NAME=GreenSplat7 FILE=TEXTURES\GreenSplat7.PCX LODSET=2 15 | #exec TEXTURE IMPORT NAME=GreenSplat8 FILE=TEXTURES\GreenSplat8.PCX LODSET=2 16 | #exec TEXTURE IMPORT NAME=GreenSplat9 FILE=TEXTURES\GreenSplat9.PCX LODSET=2 17 | #exec TEXTURE IMPORT NAME=GreenSplat10 FILE=TEXTURES\GreenSplat10.PCX LODSET=2 18 | 19 | defaultproperties 20 | { 21 | Splats(0)=Texture'GreenSplat1' 22 | Splats(1)=Texture'GreenSplat2' 23 | Splats(2)=Texture'GreenSplat3' 24 | Splats(3)=Texture'GreenSplat4' 25 | Splats(4)=Texture'GreenSplat5' 26 | Splats(5)=Texture'GreenSplat6' 27 | Splats(6)=Texture'GreenSplat7' 28 | Splats(7)=Texture'GreenSplat8' 29 | Splats(8)=Texture'GreenSplat9' 30 | Splats(9)=Texture'GreenSplat10' 31 | Texture=Texture'GreenSplat1' 32 | } 33 | -------------------------------------------------------------------------------- /Classes/GreenUTBloodPool2.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | //The main oldskool package. 3 | //Holds the mutators, singleplayer game, windows, Unreal I models and mappacks. 4 | //GreenUTBloodPool2. simply uses bio textures. 5 | // ============================================================ 6 | 7 | class GreenUTBloodPool2 expands UTBloodPool2; 8 | /*simulated function BeginPlay() 9 | { 10 | if ( class'GameInfo'.Default.bveryLowGore ) //its green :P 11 | { 12 | destroy(); 13 | return; 14 | } 15 | if ( !Level.bDropDetail&&frand()<0.5 ) //well, 2 textures only! 16 | Texture = Texture'botpack.biosplat2'; 17 | } */ 18 | simulated function AttachToSurface() //fog zone hack (note that this code cannot be compiled normaly) 19 | { 20 | local bool oldfog; 21 | oldfog=region.zone.bfogzone; 22 | region.zone.bfogzone=false; //ignore fog zone when attaching. (decals don't work in fogzones) 23 | if(AttachDecal(100) == None) // trace 100 units ahead in direction of current rotation 24 | Destroy(); 25 | region.zone.bfogzone=oldfog; 26 | } 27 | defaultproperties 28 | { 29 | Splats(0)=Texture'GreenSplat7' 30 | Splats(1)=Texture'GreenSplat5' 31 | Splats(2)=Texture'GreenSplat1' 32 | Splats(3)=Texture'GreenSplat3' 33 | Splats(4)=Texture'GreenSplat4' 34 | Texture=Texture'GreenSplat1' 35 | } 36 | -------------------------------------------------------------------------------- /Classes/Hollow.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | // oldskool.Hollow: for Hollow 3 | // ============================================================ 4 | 5 | class Hollow expands mappack; 6 | #exec TEXTURE IMPORT NAME=holShot FILE=Textures\holshot.pcx 7 | 8 | defaultproperties 9 | { 10 | Maps(0)=Hollow 11 | Maps(1)=hollow2 12 | Maps(2)=hollow3 13 | Maps(3)=hollow4 14 | Maps(4)=hollow5 15 | Author="Paul Roberts" 16 | Title="Hollow" 17 | Screenshot=Texture'holShot' 18 | } 19 | -------------------------------------------------------------------------------- /Classes/Illhaven.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | // oldskool.Illhaven: for Illhaven 3 | // ============================================================ 4 | 5 | class Illhaven expands mappack; 6 | #exec TEXTURE IMPORT NAME=illShot FILE=Textures\illShot.pcx MIPS=OFF 7 | 8 | defaultproperties 9 | { 10 | Maps(0)=illhaven_st 11 | Maps(1)=illhaven_1 12 | Maps(2)=illhaven_2 13 | Maps(3)=illhaven_3 14 | Maps(4)=illhaven_4 15 | Maps(5)=illhaven_5 16 | Maps(6)=illhaven_6 17 | Maps(7)=illhaven_end 18 | Author="Kew" 19 | Title="The Illhaven Saga" 20 | Screenshot=Texture'illShot' 21 | } 22 | -------------------------------------------------------------------------------- /Classes/KeyBinderOpener.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | // oldskool.KeyBinderOpener : For the purpose of ONP. Will allow the keybinder to be accessed in the future when changed. 3 | // The main oldskool package. 4 | // Holds the mutators, singleplayer game, windows, Unreal I models and mappacks. 5 | // ============================================================ 6 | 7 | class KeyBinderOpener expands Object; 8 | 9 | static function OpenBinder(playerpawn p){ 10 | local OldSkoolPagesClientWindow opcw; 11 | WindowConsole(P.Player.Console).LaunchUWindow(); 12 | if (!WindowConsole(P.Player.Console).bcreatedroot) //odd that this occured, but I must generate root 13 | WindowConsole(P.Player.Console).createrootwindow(none); 14 | //make menu: 15 | opcw=OldSkoolPagesClientWindow(uwindowframedwindow(WindowConsole(P.Player.Console).Root.CreateWindow(class(DynamicLoadObject("oldskool.OldskoolConfigWindow", class'class')) , 100, 100, 200, 200)).clientarea); 16 | //log ("Page seems to be:"@OPCW.Pages.GetPage("Keys")); 17 | OPCW.Pages.GotoTab(OPCW.Pages.GetPage("Keys")); 18 | } 19 | defaultproperties 20 | { 21 | } 22 | -------------------------------------------------------------------------------- /Classes/MaleOne.uc: -------------------------------------------------------------------------------- 1 | //============================================================================= 2 | // MaleOne for Oldskool 3 | // Psychic_313: DEPRECATED. DON'T USE ME. 4 | //============================================================================= 5 | class MaleOne extends UnrealMale; 6 | /* 7 | that did alot 8 | if you are looking in the editor this looks like it does nothing 9 | Hey! why ya looking at my all secret code 10 | If you export this class..I......Will.....aw...screw this 11 | 12 | #exec AUDIO IMPORT FILE="Sounds\metwalk1.WAV" NAME="metwalk1" GROUP="Male" 13 | #exec AUDIO IMPORT FILE="Sounds\metwalk2.WAV" NAME="metwalk2" GROUP="Male" 14 | #exec AUDIO IMPORT FILE="Sounds\metwalk3.WAV" NAME="metwalk3" GROUP="Male" */ 15 | simulated function PlayMetalStep() 16 | { 17 | local sound step; 18 | local float decision; 19 | 20 | if ( !bIsWalking && (Level.Game != None) && (Level.Game.Difficulty > 1) && ((Weapon == None) || !Weapon.bPointing) ) 21 | MakeNoise(0.05 * Level.Game.Difficulty); 22 | if ( FootRegion.Zone.bWaterZone ) 23 | { 24 | PlaySound(sound 'LSplash', SLOT_Interact, 1, false, 1000.0, 1.0); 25 | return; 26 | } 27 | 28 | decision = FRand(); 29 | if ( decision < 0.34 ) 30 | step = sound'unrealshare.male.MetWalk1'; 31 | else if (decision < 0.67 ) 32 | step = sound'unrealshare.male.MetWalk2'; 33 | else 34 | step = sound'unrealshare.male.MetWalk3'; 35 | 36 | if ( bIsWalking ) 37 | PlaySound(step, SLOT_Interact, 0.5, false, 400.0, 1.0); 38 | else 39 | PlaySound(step, SLOT_Interact, 1, false, 800.0, 1.0); 40 | 41 | } 42 | 43 | defaultproperties 44 | { 45 | DefaultTalkTexture="male1skiny.kurg5" 46 | TeamSkin="male1skiny.kurg1" 47 | altpackage="male1skins." 48 | DefaultSkinName="male1skiny.kurgan" 49 | DefaultPackage="male1skiny." 50 | CarcassType=Class'UnrealI.MaleOneCarcass' 51 | SelectionMesh="UnrealI.Male1" 52 | SpecialMesh="Botpack.TrophyMale1" 53 | MenuName="Kurgan" 54 | Mesh=LodMesh'UnrealI.Male1' 55 | } 56 | -------------------------------------------------------------------------------- /Classes/MaleOneBot.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | // oldskool.MaleoneBot: whatever...... 3 | // Psychic_313: DEPRECATED. DON'T USE ME. 4 | // ============================================================ 5 | 6 | class MaleoneBot expands unrealmbot; 7 | 8 | function ForceMeshToExist() 9 | { 10 | Spawn(class'oldskool.maleone'); 11 | } 12 | 13 | simulated function PlayMetalStep() 14 | { 15 | local sound step; 16 | local float decision; 17 | 18 | if ( !bIsWalking && (Level.Game != None) && (Level.Game.Difficulty > 1) && ((Weapon == None) || !Weapon.bPointing) ) 19 | MakeNoise(0.05 * Level.Game.Difficulty); 20 | if ( FootRegion.Zone.bWaterZone ) 21 | { 22 | PlaySound(sound 'LSplash', SLOT_Interact, 1, false, 1000.0, 1.0); 23 | return; 24 | } 25 | 26 | decision = FRand(); 27 | if ( decision < 0.34 ) 28 | step = sound'MetWalk1'; 29 | else if (decision < 0.67 ) 30 | step = sound'MetWalk2'; 31 | else 32 | step = sound'MetWalk3'; 33 | 34 | if ( bIsWalking ) 35 | PlaySound(step, SLOT_Interact, 0.5, false, 400.0, 1.0); 36 | else 37 | PlaySound(step, SLOT_Interact, 1, false, 800.0, 1.0); 38 | 39 | } 40 | 41 | defaultproperties 42 | { 43 | DefaultTalkTexture="male1skiny.kurg5" 44 | TeamSkin="male1skiny.kurg1" 45 | altpackage="male1skins." 46 | CarcassType=Class'UnrealI.MaleOneCarcass' 47 | DefaultSkinName="male1skiny.kurgan" 48 | DefaultPackage="male1skiny." 49 | SelectionMesh="UnrealI.Male1" 50 | SpecialMesh="Botpack.TrophyMale1" 51 | MenuName="Kurgan" 52 | Mesh=LodMesh'UnrealI.Male1' 53 | } 54 | -------------------------------------------------------------------------------- /Classes/MaleThree.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | // OldSkool.MaleThree:why bother reading? I really don't actually comment code you know... 3 | // Psychic_313: DEPRECATED. DON'T USE ME. 4 | // ============================================================ 5 | class MaleThree extends UnrealMale; 6 | 7 | //mostly because there is nothing to comment.. 8 | //well see the default properties? 9 | //CarcassType tells what carcass to spawn when this dude gets killed 10 | //Default Package tells where to look for the skinz 11 | //Selection Mesh is that idiot standing in the selection menu who can't move 'cause //epic screwed this all up 12 | //Special Mesh is virtually pointless to have here ;) 13 | //Menu Name does nothing in UT 14 | //Mesh...well......that is very important :) 15 | 16 | //thank you for reading these pointless comments you code h4x0r 17 | 18 | defaultproperties 19 | { 20 | DefaultTalkTexture="male3skiny.dant5" 21 | TeamSkin="male3skiny.dant1" 22 | altpackage="male3skins." 23 | DefaultSkinName="male3skiny.dante" 24 | DefaultPackage="male3skiny." 25 | CarcassType=Class'UnrealShare.MaleThreeCarcass' 26 | SelectionMesh="UnrealI.Male3" 27 | SpecialMesh="Botpack.TrophyMale1" 28 | MenuName="Bane" 29 | Mesh=LodMesh'UnrealShare.Male3' 30 | } 31 | -------------------------------------------------------------------------------- /Classes/MaleThreeBot.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | // oldskool.malethreebot: put your comment here 3 | // Psychic_313: DEPRECATED. DON'T USE ME. 4 | // ============================================================ 5 | 6 | class malethreebot expands unrealmbot; 7 | 8 | function ForceMeshToExist() 9 | { 10 | Spawn(class'malethree'); 11 | } 12 | 13 | defaultproperties 14 | { 15 | DefaultTalkTexture="male3skiny.dant5" 16 | TeamSkin="male3skiny.dant1" 17 | altpackage="male3skins." 18 | CarcassType=Class'UnrealShare.MaleThreeCarcass' 19 | DefaultSkinName="male3skiny.dante" 20 | DefaultPackage="male3skiny." 21 | SelectionMesh="UnrealI.Male3" 22 | SpecialMesh="Botpack.TrophyMale1" 23 | MenuName="Bane" 24 | Mesh=LodMesh'UnrealShare.Male3' 25 | } 26 | -------------------------------------------------------------------------------- /Classes/MaleTwo.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | // Oldskool.Maletwo: also called ash... 3 | // Psychic_313: DEPRECATED. DON'T USE ME. 4 | // ============================================================ 5 | class MaleTwo extends UnrealMale; 6 | 7 | //nothing is here...It's the evil blank class :) 8 | 9 | defaultproperties 10 | { 11 | DefaultTalkTexture="male2skiny.ash15" 12 | TeamSkin="male2skiny.ash11" 13 | altpackage="male2skins." 14 | DefaultSkinName="male2skiny.ash" 15 | DefaultPackage="male2skiny." 16 | CarcassType=Class'UnrealI.MaleTwoCarcass' 17 | SelectionMesh="UnrealI.Male2" 18 | SpecialMesh="Botpack.TrophyMale1" 19 | MenuName="Ash" 20 | Mesh=LodMesh'UnrealI.Male2' 21 | } 22 | -------------------------------------------------------------------------------- /Classes/MaleTwoBot.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | // oldskool.maletwobot: Ashy 3 | // Psychic_313: DEPRECATED. DON'T USE ME. 4 | // ============================================================ 5 | 6 | class maletwobot expands unrealmbot; 7 | 8 | function ForceMeshToExist() 9 | { 10 | Spawn(class'oldskool.maletwo'); 11 | } 12 | 13 | defaultproperties 14 | { 15 | DefaultTalkTexture="male2skiny.ash15" 16 | TeamSkin="male2skiny.ash11" 17 | altpackage="male2skins." 18 | CarcassType=Class'UnrealI.MaleTwoCarcass' 19 | DefaultSkinName="male2skiny.ash" 20 | DefaultPackage="male2skiny." 21 | SelectionMesh="UnrealI.Male2" 22 | SpecialMesh="Botpack.TrophyMale1" 23 | MenuName="Ash" 24 | Mesh=LodMesh'UnrealI.Male2' 25 | } 26 | -------------------------------------------------------------------------------- /Classes/OSAExtraKeyBindings.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | // oldskool.OSAExtraKeyBindings : A simple class to allow extra bindings into the OSA bindings window 3 | // The main oldskool package. 4 | // Holds the mutators, singleplayer game, windows, Unreal I models and mappacks. 5 | // ============================================================ 6 | 7 | class OSAExtraKeyBindings expands UTExtraKeyBindings; 8 | 9 | defaultproperties 10 | { 11 | } 12 | -------------------------------------------------------------------------------- /Classes/OSWeaponPowerUp.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | // DEPRECATED: here for compatibility only 3 | // Will only appear when loaded from old saves 4 | // -- Psychic_313 5 | // ============================================================ 6 | 7 | class OSWeaponPowerUp expands tournamentpickup; 8 | var float idletime; //unused now 9 | var oldskool mastermutator; //unused now, this never appears in DM 10 | var bool doswap; 11 | var Sound PowerUpSounds[4]; 12 | /*wipe from here! 13 | function prebeginplay(){ 14 | super.prebeginplay(); 15 | if ( class'oldskool.oldskool'.default.poweruptime==0) 16 | disable('tick'); //don't tick or it'll crash :D 17 | } 18 | 19 | function Destroyed() 20 | { 21 | if (Level.Game.Isa('deathmatchplus')&&(Mastermutator != None)&&(mastermutator.bpowerups)&&doswap){ //verify that we do want to call the function.... 22 | mastermutator.Spawnpowerup(0); 23 | } 24 | Super.Destroyed(); 25 | } 26 | 27 | function Tick(float deltatime) //only actually set from the mutator so nothing to worry about here...... 28 | { 29 | if (Owner == None&&mastermutator!=none&&mastermutator.poweruptime!=0&&doswap) 30 | { 31 | IdleTime += deltatime; 32 | if ( IdleTime >= mastermutator.poweruptime ) 33 | { 34 | IdleTime = 0; 35 | Spawn(class'osringexplosion2', self,, self.Location, self.Rotation); //uses asmd blast.. 36 | Destroy(); 37 | } 38 | } 39 | } 40 | //to here 41 | */ 42 | event float BotDesireability( pawn Bot ) 43 | { 44 | local OLDPistol D; 45 | 46 | D = OlDPistol(Bot.FindInventoryType(class'olDPistol')); 47 | if ( (D == None) || (D.PowerLevel >=4) ) 48 | return -1; 49 | else 50 | return Super.BotDesireability(Bot); 51 | } 52 | 53 | auto state Pickup 54 | { 55 | function BeginState() 56 | { 57 | BecomePickup(); 58 | SetOwner(None); 59 | LoopAnim('AnimEnergy',0.4); 60 | bCollideWorld = true; 61 | //check that no idle stuff.... 62 | } 63 | function Touch( actor Other ) 64 | { 65 | local olDPistol d; 66 | local Inventory Copy; 67 | 68 | if ( Pawn(Other)!=None && Pawn(Other).bIsPlayer) 69 | { 70 | d = olDPistol(Pawn(Other).FindInventoryType(class'olDPistol')); 71 | if ( (d != None) && (d.PowerLevel < 4) ){ 72 | Disable('tick'); 73 | IdleTime = 0; 74 | ActivateSound = PowerUpSounds[d.PowerLevel]; 75 | Level.Game.PickupQuery(Pawn(Other), Self); 76 | if (Level.Game.LocalLog != None) 77 | Level.Game.LocalLog.LogPickup(Self, Pawn(Other)); 78 | if (Level.Game.WorldLog != None) 79 | Level.Game.WorldLog.LogPickup(Self, Pawn(Other)); 80 | if ( PickupMessageClass == None) 81 | Pawn(Other).ClientMessage(PickupMessage, 'Pickup'); 82 | else 83 | Pawn(Other).ReceiveLocalizedMessage( PickupMessageClass, 0, None, None, Self.Class ); 84 | } 85 | } 86 | } 87 | 88 | } 89 | 90 | defaultproperties 91 | { 92 | PowerUpSounds(0)=Sound'UnrealShare.Dispersion.number1' 93 | PowerUpSounds(1)=Sound'UnrealShare.Dispersion.number2' 94 | PowerUpSounds(2)=Sound'UnrealShare.Dispersion.number3' 95 | PowerUpSounds(3)=Sound'UnrealShare.Dispersion.number4' 96 | PickupMessage="You got the Dispersion Pistol Powerup" 97 | RespawnTime=30.00 98 | PickupViewMesh=Mesh'UnrealShare.WeaponPowerUpMesh' 99 | AnimSequence=AnimEnergy 100 | Mesh=Mesh'UnrealShare.WeaponPowerUpMesh' 101 | CollisionRadius=12.00 102 | } 103 | -------------------------------------------------------------------------------- /Classes/OlBloodBurst.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | //The main oldskool package. 3 | //Holds the mutators, singleplayer game, windows, Unreal I models and mappacks. 4 | //OlBloodFirst. Code ripped from utbloodhit for decal support 5 | // ============================================================ 6 | 7 | class OlBloodBurst expands BloodBurst; 8 | Auto State StartUp 9 | { 10 | simulated function Tick(float DeltaTime) 11 | { 12 | local vector WallHit, WallNormal; 13 | local Actor WallActor; 14 | 15 | if ( Level.NetMode != NM_DedicatedServer &&class'spoldskool'.default.busedecals) 16 | { 17 | WallActor = Trace(WallHit, WallNormal, Location - 300 * vector(Rotation), Location, false); //inversed. 18 | if ( WallActor != None ){ 19 | if (Texture != texture'BloodSGrn') 20 | spawn(class'olBloodSplat',,,WallHit + 20 * (WallNormal + VRand()), rotator(WallNormal)); 21 | else 22 | spawn(class'GreenBloodSplat',,,WallHit + 20 * (WallNormal + VRand()), rotator(WallNormal)); 23 | } 24 | } 25 | 26 | Disable('Tick'); 27 | } 28 | 29 | } 30 | simulated function PreBeginPlay() //gore stuff for client 31 | { 32 | if( class'GameInfo'.Default.bVeryLowGore ) 33 | GreenBlood(); 34 | } 35 | defaultproperties 36 | { 37 | } 38 | -------------------------------------------------------------------------------- /Classes/OlUTBloodPool2.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | //The main oldskool package. 3 | //Holds the mutators, singleplayer game, windows, Unreal I models and mappacks. 4 | // ============================================================ 5 | 6 | class OlUTBloodPool2 expands UTBloodPool2; 7 | simulated function AttachToSurface() //fog zone hack (note that this code cannot be compiled normaly) 8 | { 9 | local bool oldfog; 10 | oldfog=region.zone.bfogzone; 11 | region.zone.bfogzone=false; //ignore fog zone when attaching. (decals don't work in fogzones) 12 | if(AttachDecal(100) == None) // trace 100 units ahead in direction of current rotation 13 | Destroy(); 14 | region.zone.bfogzone=oldfog; 15 | } 16 | defaultproperties 17 | { 18 | } 19 | -------------------------------------------------------------------------------- /Classes/OldSkoolAboutClient.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | //oldskool.oldskoolaboutclient: About this mod! 3 | //The main oldskool package. 4 | //Holds the mutators, singleplayer game, windows, Unreal I models and mappacks. 5 | // ============================================================ 6 | 7 | class OldSkoolAboutClient expands UMenuPageWindow; 8 | //write text: 9 | function WriteText(canvas C, string text, out float Y, optional string TestTEx){ 10 | local float W, H; 11 | if (testtex=="") 12 | testtex=text; 13 | TextSize(C, TestTex, W, H); 14 | Y+=H; 15 | ClipText(C, (WinWidth - W)/2, Y, text, true); 16 | } 17 | function Paint(Canvas C, float X, float Y) 18 | { 19 | Super.Paint(C,X,Y); 20 | //Set black: 21 | c.drawcolor.R=0; 22 | c.drawcolor.G=0; 23 | c.drawcolor.B=0; 24 | C.Font=root.fonts[F_Bold]; 25 | Y=5; 26 | WriteText(C, "OldSkool Amp'd 2.38", Y); 27 | Y+=8; 28 | WriteText(C, "By UsAaR33", Y); 29 | Y+=5; 30 | WriteText(C, "and much code and skins by Psychic_313", Y); 31 | Y+=5; 32 | C.Font=root.fonts[F_Normal]; 33 | WriteText(C, "Special Thanks to:", Y); 34 | y+=5; 35 | WriteText(C, "Preacher: Hosting my WebSite", Y); 36 | WriteText(C, "The Renegade Master: Creating my WebSite:", Y); 37 | WriteText(C, "&H&T&T&P&:&/&/&w&w&w&.&u&n&r&e&a&l&i&t&y&.&d&k&/&u&s&a&a&r&3&3", Y,"HTTP://www.unreality.dk/usaar33"); 38 | y+=5; 39 | WriteText(C, "The Real CTF team: Many Skins", Y); 40 | y+=5; 41 | WriteText(C, "Nemo_NX: Consistant", Y); 42 | WriteText(C, "support thoughout this project", Y); 43 | y+=5; 44 | WriteText(C, "Antonio \"NetDevil\" Cordero:", Y); 45 | WriteText(C, "UTPT for mesh extraction", Y); 46 | y+=5; 47 | WriteText(C, "Bane: Akimbo automag code", Y); 48 | y+=5; 49 | WriteText(C, "Hellscrag: Music Description", Y); 50 | y+=5; 51 | WriteText(C, "DrSin: Hosting Forums", Y); 52 | y+=5; 53 | WriteText(C, "Mongo: Ever wonder why he is on", Y); 54 | WriteText(C, "almost every mod's credits list?", Y); 55 | y+=5; 56 | WriteText(C, "EzKeel and Cerr:", Y); 57 | WriteText(C, "Support and testing for Legacy", Y); 58 | y+=5; 59 | WriteText(C, "DavidM: \"Where are the scripts?", Y); 60 | WriteText(C, "Give me the scripts, dammit!\"", Y); 61 | y+=5; 62 | WriteText(C, "All of my beta testers, and anyone", Y); 63 | WriteText(C, "else who somehow contributed to OSA.", Y); 64 | y+=5; 65 | WriteText(C, "Epic Megagames and Digital Extremes:", Y); 66 | WriteText(C, "without &t&h&e&m &y&o&u wouldn't have UT :0", Y,"without them you wouldn't have UT :0"); 67 | c.drawcolor.R=255; //reset 68 | c.drawcolor.G=255; 69 | c.drawcolor.B=255; 70 | DesiredWidth = 220; 71 | DesiredHeight = Y+13; 72 | } 73 | 74 | defaultproperties 75 | { 76 | } 77 | -------------------------------------------------------------------------------- /Classes/OldSkoolCustomizeClientWindow.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | //OldSkool.OldSkoolCustomizeClientWindow: Key bindings are easier when seperate 3 | //The main oldskool package. 4 | //Holds the mutators, singleplayer game, windows, Unreal I models and mappacks. 5 | // ============================================================ 6 | 7 | class OldSkoolCustomizeClientWindow expands UTCustomizeClientWindow; 8 | function Created() //ripped from utcostomize. used right now for ONP 9 | { 10 | local int NumBindingClasses; 11 | local string NextBindingClass; 12 | local class BindingClass; 13 | local int ButtonWidth, ButtonLeft, ButtonTop, I, J, pos; 14 | local int LabelWidth, LabelLeft; 15 | local UMenuLabelControl Heading; 16 | local bool bTop; 17 | 18 | 19 | for (i=6;i<100;i++) //hack. (defaults wouldn't work right 20 | AliasNames[i]=""; 21 | i=6; 22 | NextBindingClass = GetPlayerOwner().GetNextInt("OldSkool.OSAExtraKeyBindings", 0); 23 | if(NextBindingClass != "") 24 | { 25 | while( (NextBindingClass != "") && (NumBindingClasses < 50) && (i < ArrayCount(AliasNames)) ) 26 | { 27 | BindingClass = class(DynamicLoadObject(NextBindingClass, class'Class')); 28 | for( j=0;j= ArrayCount(AliasNames) ) 40 | break; 41 | } 42 | NumBindingClasses++; 43 | NextBindingClass = GetPlayerOwner().GetNextInt("OldSkool.OSAExtraKeyBindings", NumBindingClasses); 44 | } 45 | } 46 | 47 | bIgnoreLDoubleClick = True; 48 | bIgnoreMDoubleClick = True; 49 | bIgnoreRDoubleClick = True; 50 | 51 | Super(UMenuPageWindow).Created(); 52 | 53 | SetAcceptsFocus(); 54 | 55 | ButtonWidth = WinWidth - 140; 56 | ButtonLeft = WinWidth - ButtonWidth - 40; 57 | 58 | LabelWidth = WinWidth - 100; 59 | LabelLeft = 20; 60 | 61 | ButtonTop = 10; 62 | bTop = True; 63 | for (I=0; I<100; I++) 64 | { 65 | if(AliasNames[I] == "") 66 | break; 67 | 68 | j = InStr(LabelList[I], ","); 69 | if(j != -1) 70 | { 71 | if(!bTop) 72 | ButtonTop += 10; 73 | Heading = UMenuLabelControl(CreateControl(class'UMenuLabelControl', LabelLeft-10, ButtonTop+3, WinWidth, 1)); 74 | Heading.SetText(Left(LabelList[I], j)); 75 | Heading.SetFont(F_Bold); 76 | LabelList[I] = Mid(LabelList[I], j+1); 77 | ButtonTop += 19; 78 | } 79 | bTop = False; 80 | 81 | KeyNames[I] = UMenuLabelControl(CreateControl(class'UMenuLabelControl', LabelLeft, ButtonTop+3, LabelWidth, 1)); 82 | KeyNames[I].SetText(LabelList[I]); 83 | KeyNames[I].SetHelpText(CustomizeHelp); 84 | KeyNames[I].SetFont(F_Normal); 85 | KeyButtons[I] = UMenuRaisedButton(CreateControl(class'UMenuRaisedButton', ButtonLeft, ButtonTop, ButtonWidth, 1)); 86 | KeyButtons[I].SetHelpText(CustomizeHelp); 87 | KeyButtons[I].bAcceptsFocus = False; 88 | KeyButtons[I].bIgnoreLDoubleClick = True; 89 | KeyButtons[I].bIgnoreMDoubleClick = True; 90 | KeyButtons[I].bIgnoreRDoubleClick = True; 91 | ButtonTop += 19; 92 | } 93 | AliasCount = I; 94 | NoJoyDesiredHeight = ButtonTop + 10; 95 | LoadExistingKeys(); 96 | 97 | DesiredWidth = 220; 98 | 99 | } 100 | function WindowShown() 101 | { 102 | Super(UMenuPageWindow).WindowShown(); 103 | Root.bAllowConsole = False; 104 | } 105 | function LoadExistingKeys() 106 | { 107 | local int I, J, pos; 108 | local string KeyName; 109 | local string Alias; 110 | 111 | for (I=0; I 0) 61 | DrawBodyCount("Brutes", scoreholder.Brutes, Canvas, row++); 62 | if (scoreholder.Gasbags > 0) 63 | DrawBodyCount("Gasbag", scoreholder.Gasbags, Canvas, row++); 64 | if (scoreholder.Krall > 0) 65 | DrawBodyCount("Krall", scoreholder.Krall, Canvas, row++); 66 | if (scoreholder.Mercs > 0) 67 | DrawBodyCount("Mercenaries", scoreholder.Mercs, Canvas, row++); 68 | if (scoreholder.blobs > 0) 69 | DrawBodyCount("Blobs", scoreholder.blobs, Canvas, row++); 70 | if (scoreholder.Sliths > 0) 71 | DrawBodyCount("Sliths", scoreholder.Sliths, Canvas, row++); 72 | if (scoreholder.flies > 0) 73 | DrawBodyCount("Flies", scoreholder.flies, Canvas, row++); 74 | if (scoreholder.tentacles > 0) 75 | DrawBodyCount("Tentacles", scoreholder.tentacles, Canvas, row++); 76 | if (scoreholder.pupae > 0) 77 | DrawBodyCount("Pupae", scoreholder.pupae, Canvas, row++); 78 | if (scoreholder.mantas > 0) 79 | DrawBodyCount("Mantas", scoreholder.mantas, Canvas, row++); 80 | if (scoreholder.fish > 0) 81 | DrawBodyCount("Fish", scoreholder.Fish, Canvas, row++); 82 | if (scoreholder.Titans > 0) 83 | DrawBodyCount("Titans", scoreholder.Titans, Canvas, row++); 84 | if (scoreholder.Skaarjw > 0) 85 | DrawBodyCount("Skaarj Warriors", scoreholder.Skaarjw, Canvas, row++); 86 | if (scoreholder.Skaarjt > 0) 87 | DrawBodyCount("Skaarj Troopers", scoreholder.Skaarjt, Canvas, row++); 88 | if (scoreholder.hugeguys > 0) 89 | DrawBodyCount("Skaarj Leaders", scoreholder.hugeguys, Canvas, row++); 90 | if (scoreholder.Nali > 0){ 91 | Canvas.DrawColor = Red; 92 | DrawBodyCount("Nali", scoreholder.Nali, Canvas, row++); 93 | Canvas.DrawColor = White;} 94 | if (scoreholder.animals > 0){ 95 | Canvas.DrawColor = Red; 96 | DrawBodyCount("Harmless Critters", scoreholder.animals, Canvas, row++); 97 | Canvas.DrawColor = White; } 98 | row++; 99 | DrawBodyCount("Total Kills", scoreholder.killtotal, Canvas, row++); 100 | DrawdiffCount("Difficulty", difficulties[Level.Game.Difficulty], Canvas, row++); 101 | DrawBodyCount("Score", scoreholder.score, Canvas, row++); 102 | row++; 103 | DrawdiffCount("Map Title", level.title, Canvas, row++); //kinda mirror DM.... 104 | DrawdiffCount("Author", level.author, Canvas, row++); 105 | 106 | 107 | 108 | } else { 109 | 110 | Canvas.Font = oldskoolbasehud(OwnerHUD).MyFonts.GetMediumFont(Canvas.ClipX); 111 | Canvas.SetPos(0.2 * Canvas.ClipX, 0.2 * Canvas.ClipY ); 112 | Canvas.DrawText("Score Keeper inventory not found!!! Please stop ]-[4xx1ng the code!", False); 113 | 114 | } 115 | } 116 | 117 | function DrawBodyCount(string thingy, int amount, canvas Canvas, int row) 118 | { 119 | Canvas.SetPos(0.2 * Canvas.ClipX, 0.1 * Canvas.ClipY + (RowHeight + 2) * row ); 120 | Canvas.DrawText(thingy, False); 121 | Canvas.SetPos(0.6 * Canvas.ClipX, 0.1 * Canvas.ClipY + (RowHeight + 2) * row ); 122 | Canvas.DrawText(amount, False); 123 | } 124 | function DrawdiffCount(string thingy, string amount, canvas Canvas, int row) //just for the difficulties... 125 | { 126 | Canvas.SetPos(0.2 * Canvas.ClipX, 0.1 * Canvas.ClipY + (RowHeight + 2) * row ); 127 | Canvas.DrawText(thingy, False); 128 | Canvas.SetPos(0.6 * Canvas.ClipX, 0.1 * Canvas.ClipY + (RowHeight + 2) * row ); 129 | Canvas.DrawText(amount, False); 130 | } 131 | 132 | defaultproperties 133 | { 134 | Difficulties(0)="Easy" 135 | Difficulties(1)="Medium" 136 | Difficulties(2)="Hard" 137 | Difficulties(3)="Unreal" 138 | } 139 | -------------------------------------------------------------------------------- /Classes/OldSkoolScrollKeys.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | // oldskool.OldSkoolScrollKeys : 3 | // The main oldskool package. 4 | // Holds the mutators, singleplayer game, windows, Unreal I models and mappacks. 5 | // ============================================================ 6 | 7 | class OldSkoolScrollKeys expands UWindowScrollingDialogClient; 8 | 9 | defaultproperties 10 | { 11 | ClientClass=Class'OldSkoolCustomizeClientWindow' 12 | } 13 | -------------------------------------------------------------------------------- /Classes/OldSkoolspectatorhud.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | //oldskoolspectatorhud. The HUD for spectators (to use parent's stuff :D) 3 | // Psychic_313: unchanged 4 | // ============================================================ 5 | 6 | class OldSkoolspectatorhud expands OldSkoolBASEHUD; 7 | simulated function PostRender( canvas Canvas ) 8 | { 9 | local float ypos, YL, XL, fadevalue; 10 | local int i; 11 | local float StartX; 12 | 13 | HUDSetup(canvas); 14 | 15 | if ( PlayerPawn(Owner) != None ) 16 | { 17 | if ( bShowInfo ) //check this first 18 | { 19 | ServerInfo.RenderInfo( Canvas ); 20 | return; } 21 | if ( PlayerPawn(Owner).bShowMenu ) 22 | { 23 | DisplayMenu(Canvas); 24 | return; 25 | } 26 | if ( PlayerPawn(Owner).bShowScores ) 27 | { 28 | if ( (PlayerPawn(Owner).Scoring == None) && (PlayerPawn(Owner).ScoringType != None) ) 29 | PlayerPawn(Owner).Scoring = Spawn(PlayerPawn(Owner).ScoringType, PlayerPawn(Owner)); 30 | if ( PlayerPawn(Owner).Scoring != None ) 31 | { 32 | PlayerOwner.Scoring.OwnerHUD = self; 33 | PlayerPawn(Owner).Scoring.ShowScores(Canvas); 34 | return; 35 | } 36 | } 37 | else if ( PlayerPawn(Owner).ProgressTimeOut > Level.TimeSeconds ) 38 | DisplayProgressMessage(Canvas); 39 | // Master localized message control loop. 40 | for (i=0; i<10; i++) 41 | { 42 | if (LocalMessages[i].Message != None) 43 | { 44 | if (LocalMessages[i].Message.Default.bFadeMessage && Level.bHighDetailMode) 45 | { 46 | Canvas.Style = ERenderStyle.STY_Translucent; 47 | FadeValue = (LocalMessages[i].EndOfLife - Level.TimeSeconds); 48 | if (FadeValue > 0.0) 49 | { 50 | if ( bResChanged || (LocalMessages[i].XL == 0) ) 51 | { 52 | if ( LocalMessages[i].Message.Static.GetFontSize(LocalMessages[i].Switch) == 1 ) 53 | LocalMessages[i].StringFont = MyFonts.GetBigFont( Canvas.ClipX ); 54 | else // ==2 55 | LocalMessages[i].StringFont = MyFonts.GetHugeFont( Canvas.ClipX ); 56 | Canvas.Font = LocalMessages[i].StringFont; 57 | Canvas.StrLen(LocalMessages[i].StringMessage, LocalMessages[i].XL, LocalMessages[i].YL); 58 | LocalMessages[i].YPos = LocalMessages[i].Message.Static.GetOffset(LocalMessages[i].Switch, LocalMessages[i].YL, Canvas.ClipY); 59 | } 60 | Canvas.Font = LocalMessages[i].StringFont; 61 | Canvas.DrawColor = LocalMessages[i].DrawColor * (FadeValue/LocalMessages[i].LifeTime); 62 | Canvas.SetPos( 0.5 * (Canvas.ClipX - LocalMessages[i].XL), LocalMessages[i].YPos ); 63 | Canvas.DrawText( LocalMessages[i].StringMessage, False ); 64 | } 65 | } 66 | else 67 | { 68 | if ( bResChanged || (LocalMessages[i].XL == 0) ) 69 | { 70 | if ( LocalMessages[i].Message.Static.GetFontSize(LocalMessages[i].Switch) == 1 ) 71 | LocalMessages[i].StringFont = MyFonts.GetBigFont( Canvas.ClipX ); 72 | else // == 2 73 | LocalMessages[i].StringFont = MyFonts.GethugeFont( Canvas.ClipX ); 74 | Canvas.Font = LocalMessages[i].StringFont; 75 | Canvas.StrLen(LocalMessages[i].StringMessage, LocalMessages[i].XL, LocalMessages[i].YL); 76 | LocalMessages[i].YPos = LocalMessages[i].Message.Static.GetOffset(LocalMessages[i].Switch, LocalMessages[i].YL, Canvas.ClipY); 77 | } 78 | Canvas.Font = LocalMessages[i].StringFont; 79 | Canvas.Style = ERenderStyle.STY_Normal; 80 | Canvas.DrawColor = LocalMessages[i].DrawColor; 81 | Canvas.SetPos( 0.5 * (Canvas.ClipX - LocalMessages[i].XL), LocalMessages[i].YPos ); 82 | Canvas.DrawText( LocalMessages[i].StringMessage, False ); 83 | } 84 | } 85 | } 86 | Canvas.Style = ERenderStyle.STY_Normal; 87 | //start unreal messages loop. 88 | drawunrealmessages(canvas); 89 | Canvas.DrawColor.r = 255; //reset 90 | Canvas.DrawColor.g = 255; 91 | Canvas.DrawColor.b = 255; 92 | Canvas.Font = Font'WhiteFont'; 93 | } 94 | // Display Identification Info 95 | DrawIdentifyInfo(Canvas, 0, Canvas.ClipY - 64.0); 96 | 97 | // Message of the Day / Map Info Header 98 | if (MOTDFadeOutTime != 0.0) 99 | DrawMOTD(Canvas); 100 | 101 | if ( HUDMutator != None ) 102 | HUDMutator.PostRender(Canvas); //use hud mutators..... 103 | if (Canvas.ClipY<290) Return; 104 | 105 | Canvas.Style = ERenderStyle.STY_Translucent; 106 | StartX = 0.5 * Canvas.ClipX - 128; 107 | Canvas.SetPos(StartX,Canvas.ClipY-58); 108 | Canvas.DrawTile( Texture'MenuBarrier', 256, 64, 0, 0, 256, 64 ); 109 | Canvas.Style = ERenderStyle.STY_Normal; 110 | StartX = 0.5 * Canvas.ClipX - 128; 111 | Canvas.SetPos(StartX,Canvas.ClipY-52); 112 | Canvas.DrawIcon(texture'Logo2', 1.0); 113 | Canvas.Style = 1; 114 | } 115 | 116 | defaultproperties 117 | { 118 | } 119 | -------------------------------------------------------------------------------- /Classes/OldskoolMutatorWindow.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | // nothing.... 3 | // ============================================================ 4 | 5 | class OldskoolMutatorWindow expands UMenuMutatorWindow; 6 | 7 | defaultproperties 8 | { 9 | ClientClass=Class'OldSkoolMutatorCW' 10 | WindowTitle="Configure SinglePlayer Mutators" 11 | } 12 | -------------------------------------------------------------------------------- /Classes/OldskoolScrollAbout.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | // oldskool.OldskoolScrollAbout : 3 | // The main oldskool package. 4 | // Holds the mutators, singleplayer game, windows, Unreal I models and mappacks. 5 | // ============================================================ 6 | 7 | class OldskoolScrollAbout expands UWindowScrollingDialogClient; 8 | 9 | defaultproperties 10 | { 11 | ClientClass=Class'OldSkoolAboutClient' 12 | } 13 | -------------------------------------------------------------------------------- /Classes/OldskoolScrollGOp.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | // oldskool.OldskoolScrollGOp : 3 | // The main oldskool package. 4 | // Holds the mutators, singleplayer game, windows, Unreal I models and mappacks. 5 | // ============================================================ 6 | 7 | class OldskoolScrollGOp expands UWindowScrollingDialogClient; 8 | 9 | defaultproperties 10 | { 11 | ClientClass=Class'oldskoolgameoptionsclient' 12 | } 13 | -------------------------------------------------------------------------------- /Classes/OldskoolScrollMain.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | // oldskool.OldskoolScrollMain : 3 | // The main oldskool package. 4 | // Holds the mutators, singleplayer game, windows, Unreal I models and mappacks. 5 | // ============================================================ 6 | 7 | class OldskoolScrollMain expands UWindowScrollingDialogClient; 8 | 9 | defaultproperties 10 | { 11 | ClientClass=Class'oldskoolconfigclient' 12 | } 13 | -------------------------------------------------------------------------------- /Classes/OldskoolScrollMusic.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | // oldskool.OldskoolScrollMusic : 3 | // The main oldskool package. 4 | // Holds the mutators, singleplayer game, windows, Unreal I models and mappacks. 5 | // ============================================================ 6 | 7 | class OldskoolScrollMusic expands UWindowScrollingDialogClient; 8 | 9 | defaultproperties 10 | { 11 | ClientClass=Class'oldskoolmusicclient' 12 | } 13 | -------------------------------------------------------------------------------- /Classes/OldskoolScrollSP.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | // oldskool.OldskoolScrollSP : 3 | // The main oldskool package. 4 | // Holds the mutators, singleplayer game, windows, Unreal I models and mappacks. 5 | // ============================================================ 6 | 7 | class OldskoolScrollSP expands UWindowScrollingDialogClient; 8 | 9 | defaultproperties 10 | { 11 | ClientClass=Class'oldskoolspclient' 12 | } 13 | -------------------------------------------------------------------------------- /Classes/UnrealFemale.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | // oldskool.UnrealFemale: another short script :) 3 | // 4 | // Psychic_313: DEPRECATED. DON'T USE ME. 5 | // ============================================================ 6 | 7 | class UnrealFemale expands UnrealHuman; 8 | 9 | defaultproperties 10 | { 11 | drown=Sound'UnrealShare.Female.mdrown2fem' 12 | breathagain=Sound'UnrealShare.Female.hgasp3fem' 13 | HitSound3=Sound'UnrealShare.Female.linjur3fem' 14 | HitSound4=Sound'UnrealShare.Female.hinjur4fem' 15 | Die2=Sound'UnrealShare.Female.death3cfem' 16 | Die3=Sound'UnrealShare.Female.death2afem' 17 | Die4=Sound'UnrealShare.Female.death4cfem' 18 | GaspSound=Sound'UnrealShare.Female.lgasp1fem' 19 | UWHit1=Sound'UnrealShare.Female.FUWHit1' 20 | UWHit2=Sound'UnrealShare.Male.MUWHit2' 21 | LandGrunt=Sound'UnrealShare.Female.lland1fem' 22 | StatusDoll=Texture'botpack.Icons.Woman' 23 | StatusBelt=Texture'botpack.Icons.WomanBelt' 24 | VoicePackMetaClass="BotPack.VoicefeMale" 25 | CarcassType=Class'UnrealShare.FemaleBody' 26 | JumpSound=Sound'UnrealShare.Female.jump1fem' 27 | bIsFemale=True 28 | HitSound1=Sound'UnrealShare.Female.linjur1fem' 29 | HitSound2=Sound'UnrealShare.Female.linjur2fem' 30 | Die=Sound'UnrealShare.Female.death1dfem' 31 | } 32 | -------------------------------------------------------------------------------- /Classes/UnrealMale.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | // Oldskool.Unrealmale: Allows proper demises of converted models 3 | // Psychic_313: DEPRECATED. DON'T USE ME. 4 | // ============================================================ 5 | 6 | class Unrealmale extends Unrealhuman 7 | abstract; 8 | 9 | function PlayDying(name DamageType, vector HitLoc) 10 | { 11 | local vector X,Y,Z, HitVec, HitVec2D; 12 | local float dotp; 13 | local carcass carc; 14 | 15 | BaseEyeHeight = Default.BaseEyeHeight; 16 | PlayDyingSound(); 17 | 18 | if ( DamageType == 'Suicided' ) 19 | { 20 | PlayAnim('Dead7', 0.7, 0.1); 21 | return; 22 | } 23 | 24 | if ( FRand() < 0.15 ) 25 | { 26 | PlayAnim('Dead2',0.7,0.1); 27 | return; 28 | } 29 | 30 | // check for big hit 31 | if ( (Velocity.Z > 250) ) 32 | { 33 | if ( FRand() < 0.7 ){ 34 | PlayAnim('Dead5',0.7,0.1);} 35 | else{ 36 | PlayAnim('Dead1',0.7,0.1);} 37 | if ( Level.NetMode != NM_Client ) 38 | { 39 | carc = Spawn(class 'MaleHead',,, Location + CollisionHeight * vect(0,0,0.8), Rotation + rot(3000,0,16384) ); 40 | if (carc != None) 41 | { 42 | carc.Initfor(self); 43 | carc.Velocity = Velocity + VSize(Velocity) * VRand(); 44 | carc.Velocity.Z = FMax(carc.Velocity.Z, Velocity.Z); 45 | ViewTarget = carc; 46 | } 47 | carc = Spawn(class 'CreatureChunks'); 48 | if (carc != None) 49 | { 50 | carc.Mesh = mesh 'CowBody1'; 51 | carc.Initfor(self); 52 | carc.Velocity = Velocity + VSize(Velocity) * VRand(); 53 | carc.Velocity.Z = FMax(carc.Velocity.Z, Velocity.Z); 54 | } 55 | carc = Spawn(class 'Arm1',,, Location + CollisionHeight * vect(0,0,0.8), Rotation + rot(3000,0,16384) ); 56 | if (carc != None) 57 | { 58 | carc.Initfor(self); 59 | carc.Velocity = Velocity + VSize(Velocity) * VRand(); 60 | carc.Velocity.Z = FMax(carc.Velocity.Z, Velocity.Z); 61 | } 62 | } 63 | 64 | 65 | return; 66 | } 67 | 68 | // check for head hit 69 | if ( ((DamageType == 'Decapitated') || (HitLoc.Z - Location.Z > 0.6 * CollisionHeight)) 70 | && !Level.Game.bVeryLowGore ) 71 | { 72 | DamageType = 'Decapitated'; 73 | PlayAnim('Dead4', 0.7, 0.1); 74 | if ( Level.NetMode != NM_Client ) 75 | { 76 | carc = Spawn(class 'MaleHead',,, Location + CollisionHeight * vect(0,0,0.8), Rotation + rot(3000,0,16384) ); 77 | if (carc != None) 78 | { 79 | carc.Initfor(self); 80 | carc.Velocity = Velocity + VSize(Velocity) * VRand(); 81 | carc.Velocity.Z = FMax(carc.Velocity.Z, Velocity.Z); 82 | ViewTarget = carc; 83 | } 84 | } 85 | return; 86 | } 87 | 88 | GetAxes(Rotation,X,Y,Z); 89 | X.Z = 0; 90 | HitVec = Normal(HitLoc - Location); 91 | HitVec2D= HitVec; 92 | HitVec2D.Z = 0; 93 | dotp = HitVec2D dot X; 94 | 95 | if (Abs(dotp) > 0.71) //then hit in front or back 96 | PlayAnim('Dead3', 0.7, 0.1); 97 | else 98 | { 99 | dotp = HitVec dot Y; 100 | if (dotp > 0.0) 101 | PlayAnim('Dead6', 0.7, 0.1); 102 | else 103 | PlayAnim('Dead7', 0.7, 0.1); 104 | } 105 | } 106 | 107 | function PlayGutHit(float tweentime) 108 | { 109 | if ( (AnimSequence == 'GutHit') || (AnimSequence == 'Dead2') ) 110 | { 111 | if (FRand() < 0.5) 112 | TweenAnim('LeftHit', tweentime); 113 | else 114 | TweenAnim('RightHit', tweentime); 115 | } 116 | else if ( FRand() < 0.6 ) 117 | TweenAnim('GutHit', tweentime); 118 | else 119 | TweenAnim('Dead2', tweentime); 120 | 121 | } 122 | 123 | function PlayHeadHit(float tweentime) 124 | { 125 | if ( (AnimSequence == 'HeadHit') || (AnimSequence == 'Dead3') ) 126 | TweenAnim('GutHit', tweentime); 127 | else if ( FRand() < 0.6 ) 128 | TweenAnim('HeadHit', tweentime); 129 | else 130 | TweenAnim('Dead3', tweentime); 131 | } 132 | 133 | function PlayLeftHit(float tweentime) 134 | { 135 | if ( (AnimSequence == 'LeftHit') || (AnimSequence == 'Dead6') ) 136 | TweenAnim('GutHit', tweentime); 137 | else if ( FRand() < 0.6 ) 138 | TweenAnim('LeftHit', tweentime); 139 | else 140 | TweenAnim('Dead6', tweentime); 141 | } 142 | 143 | function PlayRightHit(float tweentime) 144 | { 145 | if ( (AnimSequence == 'RightHit') || (AnimSequence == 'Dead1') ) 146 | TweenAnim('GutHit', tweentime); 147 | else if ( FRand() < 0.6 ) 148 | TweenAnim('RightHit', tweentime); 149 | else 150 | TweenAnim('Dead1', tweentime); 151 | } 152 | 153 | defaultproperties 154 | { 155 | drown=Sound'UnrealShare.Male.MDrown1' 156 | breathagain=Sound'UnrealShare.Male.MGasp1' 157 | HitSound3=Sound'UnrealShare.Male.MInjur3' 158 | HitSound4=Sound'UnrealShare.Male.MInjur4' 159 | Die2=Sound'UnrealShare.Male.MDeath3' 160 | Die3=Sound'UnrealShare.Male.MDeath3' 161 | Die4=Sound'UnrealShare.Male.MDeath4' 162 | GaspSound=Sound'UnrealShare.Male.MGasp2' 163 | UWHit1=Sound'UnrealShare.Male.MUWHit1' 164 | UWHit2=Sound'UnrealShare.Male.MUWHit2' 165 | LandGrunt=Sound'UnrealShare.Male.lland01' 166 | VoicePackMetaClass="BotPack.VoiceMale" 167 | CarcassType=Class'UnrealShare.MaleBody' 168 | JumpSound=Sound'UnrealShare.Male.MJump1' 169 | HitSound1=Sound'UnrealShare.Male.MInjur1' 170 | HitSound2=Sound'UnrealShare.Male.MInjur2' 171 | Die=Sound'UnrealShare.Male.MDeath1' 172 | } 173 | -------------------------------------------------------------------------------- /Classes/asscoreboard.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | // a scoreboard for assault..... 3 | // Psychic_313: unchanged 4 | // ============================================================ 5 | 6 | class asscoreboard expands oldskoolTeamScoreBoard; 7 | function ShowScores( canvas Canvas ) //check to draw the time stuff..... 8 | { 9 | Super.ShowScores(Canvas); 10 | 11 | if ( OwnerHUD.IsA('oldskoolashud') ) 12 | oldskoolashud(OwnerHUD).DrawTimeAt(Canvas, 0.5 * Canvas.ClipX - 80 * Canvas.ClipX/1280, 4); 13 | } 14 | 15 | defaultproperties 16 | { 17 | } 18 | -------------------------------------------------------------------------------- /Classes/boltskorchlong.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | //boltskorchlong. a longer lasting bolt skorch (for krallbolts) 3 | // Psychic_313: unchanged 4 | // ============================================================ 5 | 6 | class boltskorchlong expands EnergyImpact; 7 | 8 | simulated function AttachToSurface() //fog zone hack (note that this code cannot be compiled normaly) 9 | { 10 | local bool oldfog; 11 | oldfog=region.zone.bfogzone; 12 | region.zone.bfogzone=false; //ignore fog zone when attaching. (decals don't work in fogzones) 13 | if(AttachDecal(100) == None) // trace 100 units ahead in direction of current rotation 14 | Destroy(); 15 | region.zone.bfogzone=oldfog; 16 | } 17 | defaultproperties 18 | { 19 | MultiDecalLevel=0 20 | Texture=Texture'botpack.energymark' 21 | DrawScale=0.20 22 | } 23 | -------------------------------------------------------------------------------- /Classes/coopHUD.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | // coop hud... different calling of fragcount.... 3 | // Psychic_313: unchanged 4 | // ============================================================ 5 | 6 | class coopHUD expands oldskoolHUD; 7 | simulated function DrawFragCount(Canvas Canvas, int X, int Y) //to make better use of scoring #'s... 8 | { 9 | local color oldcol; 10 | Canvas.SetPos(X,Y); 11 | if (realicons) { 12 | Canvas.DrawIcon(Texture'Realskull', 1.0); 13 | oldcol=canvas.drawcolor; 14 | canvas.drawcolor=redcolor; } 15 | else 16 | Canvas.DrawIcon(Texture'IconSkull', 1.0); 17 | Canvas.CurX -= 31; 18 | Canvas.CurY += 23; 19 | if ( PawnOwner.PlayerReplicationInfo == None ) 20 | return; 21 | Canvas.Font = MyFonts.GetSmallFont(Canvas.ClipX); 22 | if (PawnOwner.PlayerReplicationInfo.score<10000) 23 | Canvas.CurX+=6; 24 | if (PawnOwner.PlayerReplicationInfo.score<1000) 25 | Canvas.CurX+=6; 26 | if (PawnOwner.PlayerReplicationInfo.score<100) 27 | Canvas.CurX+=6; 28 | if (PawnOwner.PlayerReplicationInfo.score<10) 29 | Canvas.CurX+=6; 30 | if (PawnOwner.PlayerReplicationInfo.score<0) 31 | Canvas.CurX-=6; 32 | if (PawnOwner.PlayerReplicationInfo.score<-9) 33 | Canvas.CurX-=6; 34 | if (PawnOwner.PlayerReplicationInfo.score<-90) 35 | Canvas.CurX-=6; 36 | if (PawnOwner.PlayerReplicationInfo.score<-900) 37 | Canvas.CurX-=6; 38 | if (PawnOwner.PlayerReplicationInfo.score<-9000) 39 | Canvas.CurX-=6; 40 | Canvas.DrawText(int(PawnOwner.PlayerReplicationInfo.score),False); 41 | if (realicons) 42 | canvas.drawcolor=oldcol; 43 | } 44 | 45 | defaultproperties 46 | { 47 | } 48 | -------------------------------------------------------------------------------- /Classes/coopbase.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | //coopbase. builds the duel-pages for Co-op..... 3 | // ============================================================ 4 | 5 | class coopbase expands UMenuDialogClientWindow; 6 | var string Map; 7 | var UMenuPageControl Pages; 8 | var UWindowSmallCloseButton CloseButton; 9 | var UWindowSmallButton StartButton; 10 | var UWindowSmallButton DedicatedButton; 11 | var UWindowMessageBox ConfirmStart; 12 | var UWindowPageControlPage ServerTab; 13 | var coopcw coopTab; 14 | 15 | function Created() 16 | { 17 | CreatePages(); 18 | DedicatedButton = UWindowSmallButton(CreateControl(class'UWindowSmallButton', WinWidth-156, WinHeight-24, 48, 16)); 19 | DedicatedButton.SetText(class'utmenu.utstartgamecw'.default.DedicatedText); 20 | DedicatedButton.SetHelpText(class'utmenu.utstartgamecw'.default.DedicatedHelp); 21 | CloseButton = UWindowSmallCloseButton(CreateControl(class'UWindowSmallCloseButton', WinWidth-56, WinHeight-24, 48, 16)); 22 | StartButton = UWindowSmallButton(CreateControl(class'UWindowSmallButton', WinWidth-106, WinHeight-24, 48, 16)); 23 | StartButton.SetText(class'umenu.umenubotmatchclientwindow'.default.StartText); 24 | } 25 | 26 | function CreatePages() 27 | { 28 | Pages = UMenuPageControl(CreateWindow(class'UMenuPageControl', 0, 0, WinWidth, WinHeight)); 29 | Pages.AddPage(class'umenu.umenubotmatchclientwindow'.default.StartMatchTab, class'oldskool.coopcw'); 30 | ServerTab = Pages.AddPage(class'utmenu.utstartgamecw'.default.ServerText, class'UTServerSetupSC'); 31 | } 32 | function Resized() 33 | { 34 | Pages.WinWidth = WinWidth; 35 | Pages.WinHeight = WinHeight - 24; 36 | CloseButton.WinLeft = WinWidth-52; 37 | CloseButton.WinTop = WinHeight-20; 38 | StartButton.WinLeft = WinWidth-102; 39 | StartButton.WinTop = WinHeight-20; 40 | DedicatedButton.WinLeft = WinWidth-152; 41 | DedicatedButton.WinTop = WinHeight-20; 42 | } 43 | 44 | function Paint(Canvas C, float X, float Y) 45 | { 46 | local Texture T; 47 | 48 | T = GetLookAndFeelTexture(); 49 | DrawUpBevel( C, 0, LookAndFeel.TabUnselectedM.H, WinWidth, WinHeight-LookAndFeel.TabUnselectedM.H, T); 50 | } 51 | 52 | function Notify(UWindowDialogControl C, byte E) 53 | { 54 | switch(E) 55 | { 56 | case DE_Click: 57 | switch (C) 58 | { 59 | case StartButton: 60 | if ((GetLevel().Game.Default.bWorldLog == True) && (GetPlayerOwner().GetNGSecret() == "") && (!GetPlayerOwner().ngSecretSet)) 61 | { 62 | ConfirmStart = MessageBox(class'utmenu.utstartgamecw'.default.ConfirmTitle, class'utmenu.utstartgamecw'.default.ConfirmText, MB_YesNo, MR_Yes, MR_No); 63 | } else 64 | StartPressed(); 65 | return; 66 | case DedicatedButton: 67 | DedicatedPressed(); 68 | return; 69 | default: 70 | Super.Notify(C, E); 71 | return; 72 | } 73 | default: 74 | Super.Notify(C, E); 75 | return; 76 | } 77 | } 78 | function GetDesiredDimensions(out float W, out float H) 79 | { 80 | Super(UWindowWindow).GetDesiredDimensions(W, H); 81 | H += 30; 82 | } 83 | function MessageBoxDone(UWindowMessageBox W, MessageBoxResult Result) 84 | { 85 | if(W == ConfirmStart) 86 | { 87 | switch(Result) 88 | { 89 | case MR_Yes: 90 | Root.CreateWindow(class(DynamicLoadObject("UTMenu.ngWorldSecretWindow", class'Class')), 100, 100, 200, 200, Root, True); 91 | break; 92 | case MR_No: 93 | GetPlayerOwner().ngSecretSet = True; 94 | GetPlayerOwner().SaveConfig(); 95 | StartPressed(); 96 | break; 97 | } 98 | } 99 | } 100 | 101 | function DedicatedPressed() 102 | { 103 | local string URL; 104 | local GameInfo NewGame; 105 | local string LanPlay; 106 | 107 | if(UTServerSetupPage(UTServerSetupSC(ServerTab.Page).ClientArea).bLanPlay) 108 | LanPlay = " -lanplay"; 109 | 110 | if (oldskoolnewgameclientwindow(ownerwindow).selectedpacktype~="custom") 111 | URL = Map $ "?Game=oldskool.coopgame2?Mutator="$oldskoolnewgameclientwindow(ownerwindow).MutatorList; 112 | else 113 | URL = oldskoolnewgameclientwindow(ownerwindow).selectedpackclass.default.basedir$Map $ "?Game="$oldskoolnewgameclientwindow(ownerwindow).selectedpackclass.default.coopgameinfo$"?Mutator="$oldskoolnewgameclientwindow(ownerwindow).MutatorList; 114 | URL = URL $ "?Listen"; 115 | 116 | ParentWindow.Close(); 117 | oldskoolnewgameclientwindow(ownerwindow).Close(); 118 | Root.Console.CloseUWindow(); 119 | GetPlayerOwner().ConsoleCommand("RELAUNCH "$URL$LanPlay$" -server log="$class'oldskool.coopgame2'.Default.ServerLogName); 120 | } 121 | 122 | // Override botmatch's start behavior 123 | function StartPressed() 124 | { 125 | local string URL, Checksum; 126 | local GameInfo NewGame; 127 | 128 | class'coopgame2'.Static.ResetGame(); 129 | if (oldskoolnewgameclientwindow(ownerwindow).selectedpacktype~="custom") 130 | URL = Map $ "?Game=oldskool.coopgame2?Mutator="$oldskoolnewgameclientwindow(ownerwindow).MutatorList; 131 | else 132 | URL = oldskoolnewgameclientwindow(ownerwindow).selectedpackclass.default.basedir$Map$"?Game="$oldskoolnewgameclientwindow(ownerwindow).selectedpackclass.default.coopgameinfo$"?Mutator="$oldskoolnewgameclientwindow(ownerwindow).MutatorList; 133 | URL = URL $ "?Listen"; 134 | class'StatLog'.Static.GetPlayerChecksum(GetPlayerOwner(), Checksum); 135 | URL = URL $ "?Checksum="$Checksum; 136 | 137 | ParentWindow.Close(); 138 | oldskoolnewgameclientwindow(ownerwindow).Close(); 139 | Root.Console.CloseUWindow(); 140 | GetPlayerOwner().ClientTravel(URL, TRAVEL_Absolute, false); 141 | } 142 | 143 | defaultproperties 144 | { 145 | } 146 | -------------------------------------------------------------------------------- /Classes/coopcw.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | //coopcw. Cleint window to setup co-op games......... 3 | // ============================================================ 4 | 5 | class coopcw expands UMenuPageWindow; 6 | //main window vars (settings done via localization in UT, thus no text vars....... 7 | var oldskoolnewgameclientwindow mainparent; 8 | var coopbase pagebase; 9 | var uwindowcombocontrol mapcombo; 10 | var UWindowSmallCloseButton CloseButton; 11 | var UWindowSmallButton StartButton; 12 | var UWindowSmallButton DedicatedButton; 13 | var UWindowHSliderControl FFSlider; 14 | var UWindowEditControl MaxPlayersEdit; 15 | var UWindowMessageBox ConfirmStart; 16 | var UWindowEditControl MaxSpectatorsEdit; 17 | var UWindowHSliderControl SpeedSlider; 18 | var UWindowEditControl GamePasswordEdit; 19 | //webserver vars 20 | var Uwindowlabelcontrol adminlabel; 21 | var UWindowEditControl AdminPasswordEdit; 22 | var UWindowCheckbox baddiecheck; 23 | var UWindowEditControl WebAdminUsernameEdit; 24 | var UWindowEditControl WebAdminPasswordEdit; 25 | var UWindowEditControl ListenPortEdit; 26 | //create window 27 | function Created() 28 | { 29 | local int ControlWidth, ControlLeft, ControlRight; 30 | local int CenterWidth, CenterPos, i, Controloffset; 31 | local int FFS; 32 | 33 | pagebase = coopbase(GetParent(class'oldskool.coopbase')); 34 | //NEVER should happen....... except cause of h4x0rs :D 35 | if (pagebase == None) 36 | Log("Error: coopcw without coopbase window. Stop hacking these scripts you idiot!!!"); 37 | mainParent = oldskoolnewgameclientwindow(pagebase.OwnerWindow); 38 | ControlOffset = 10; 39 | Super.Created(); 40 | 41 | ControlWidth = WinWidth/2.5; 42 | ControlLeft = (WinWidth/2 - ControlWidth)/2; 43 | ControlRight = WinWidth/2 + ControlLeft; 44 | 45 | CenterWidth = (WinWidth/4)*3; 46 | CenterPos = (WinWidth - CenterWidth)/2; 47 | /*not fully in client....... 48 | DedicatedButton = UWindowSmallButton(CreateControl(class'UWindowSmallButton', WinWidth-156, WinHeight-24, 48, 16)); 49 | DedicatedButton.SetText(class'utmenu.utstartgamecw'.default.DedicatedText); 50 | DedicatedButton.SetHelpText(class'utmenu.utstartgamecw'.default.DedicatedHelp); 51 | CloseButton = UWindowSmallCloseButton(CreateControl(class'UWindowSmallCloseButton', WinWidth-56, WinHeight-24, 48, 16)); 52 | StartButton = UWindowSmallButton(CreateControl(class'UWindowSmallButton', WinWidth-106, WinHeight-24, 48, 16)); 53 | StartButton.SetText(class'umenu.umenubotmatchclientwindow'.default.StartText); */ 54 | //main stuff 55 | mapcombo = UWindowcombocontrol(CreateControl(class'UWindowcombocontrol', ControlLeft, ControlOffset, ControlWidth, 1)); 56 | MapCombo.SetButtons(True); 57 | MapCombo.SetText(class'umenu.umenustartmatchclientwindow'.default.MapText); 58 | MapCombo.SetHelpText(class'umenu.umenustartmatchclientwindow'.default.MapHelp); 59 | MapCombo.SetFont(F_Normal); 60 | MapCombo.SetEditable(False); 61 | for (i=0;i<44;i++){ 62 | if (mainparent.selectedpackclass.default.maps[i]!='') 63 | Mapcombo.additem(string(mainparent.selectedpackclass.default.maps[i]), string(mainparent.selectedpackclass.default.maps[i])); 64 | } 65 | mapcombo.setselectedindex(0); 66 | if (mainparent.selectedpacktype~="custom"){ 67 | mapcombo.hidewindow(); 68 | pagebase.map=mainparent.map;} 69 | else 70 | pagebase.map=string(mainparent.selectedpackclass.default.maps[0]); 71 | 72 | ControlOffset += 25; 73 | MaxPlayersEdit = UWindowEditControl(CreateControl(class'UWindowEditControl', ControlLeft, ControlOffset, ControlWidth, 1)); 74 | MaxPlayersEdit.SetText(class'umenu.umenugamerulesbase'.default.MaxPlayersText); 75 | MaxPlayersEdit.SetHelpText(class'umenu.umenugamerulesbase'.default.MaxPlayersHelp); 76 | MaxPlayersEdit.SetFont(F_Normal); 77 | MaxPlayersEdit.SetNumericOnly(True); 78 | MaxPlayersEdit.SetMaxLength(2); 79 | MaxPlayersEdit.Align = TA_Right; 80 | MaxPlayersEdit.SetDelayedNotify(True); 81 | 82 | // Max Spectators 83 | MaxSpectatorsEdit = UWindowEditControl(CreateControl(class'UWindowEditControl', ControlRight, ControlOffset, ControlWidth, 1)); 84 | MaxSpectatorsEdit.SetText(class'umenu.umenugamerulesbase'.default.MaxSpectatorsText); 85 | MaxSpectatorsEdit.SetHelpText(class'umenu.umenugamerulesbase'.default.MaxSpectatorsHelp); 86 | MaxSpectatorsEdit.SetFont(F_Normal); 87 | MaxSpectatorsEdit.SetNumericOnly(True); 88 | MaxSpectatorsEdit.SetMaxLength(2); 89 | MaxSpectatorsEdit.Align = TA_Right; 90 | MaxSpectatorsEdit.SetDelayedNotify(True); 91 | ControlOffset += 25; 92 | if(MaxPlayersEdit != None) 93 | MaxPlayersEdit.SetValue(string(Class'oldskool.coopgame2'.Default.MaxPlayers)); 94 | 95 | if(MaxSpectatorsEdit != None) 96 | MaxSpectatorsEdit.SetValue(string(Class'oldskool.coopgame2'.Default.MaxSpectators)); 97 | 98 | baddiecheck = UWindowCheckBox(CreateControl(class'UWindowCheckBox', Controlleft, ControlOffset, centerwidth*2, 1)); 99 | baddiecheck.SetText("Allow spectating of monsters"); 100 | baddiecheck.SetFont(F_Normal); 101 | baddiecheck.bChecked = class'Oldskool.coopgame2'.default.baddiespectate; 102 | ControlOffset += 25; 103 | FFSlider = UWindowHSliderControl(CreateControl(class'UWindowHSliderControl', CenterPos, ControlOffset, CenterWidth, 1)); 104 | FFSlider.SetRange(0, 10, 1); 105 | FFS = Class'oldskool.coopgame2'.Default.FriendlyFireScale * 10; 106 | FFSlider.SetValue(FFS); 107 | FFSlider.SetText(class'utmenu.utteamrcwindow'.default.FFText$" ["$FFS*10$"%]:"); 108 | FFSlider.SetHelpText(class'utmenu.utteamrcwindow'.default.FFHelp); 109 | FFSlider.SetFont(F_Normal); 110 | ControlOffset += 25; 111 | 112 | SpeedSlider = UWindowHSliderControl(CreateControl(class'UWindowHSliderControl', CenterPos, ControlOffset, CenterWidth, 1)); 113 | SpeedSlider.SetRange(50, 200, 5); 114 | SpeedSlider.SetText(class'umenu.umenugamesettingsbase'.default.speedtext); 115 | SpeedSlider.SetHelpText(class'umenu.umenugamesettingsbase'.default.SpeedHelp); 116 | SpeedSlider.SetFont(F_Normal); 117 | SpeedSlider.SetValue(Class'oldskool.coopgame2'.Default.GameSpeed * 100.0); 118 | ControlOffset += 25; 119 | 120 | } 121 | //stuff...... 122 | function BeforePaint(Canvas C, float X, float Y) 123 | { 124 | local int ControlWidth, ControlLeft, ControlRight; 125 | local int CenterWidth, CenterPos, ButtonWidth, ButtonLeft, EditWidth; 126 | 127 | Super.BeforePaint(C, X, Y); 128 | 129 | ControlWidth = WinWidth/2.5; 130 | ControlLeft = (WinWidth/2 - ControlWidth)/2; 131 | ControlRight = WinWidth/2 + ControlLeft; 132 | 133 | CenterWidth = (WinWidth/4)*3; 134 | CenterPos = (WinWidth - CenterWidth)/2; 135 | 136 | MapCombo.SetSize(CenterWidth, 1); 137 | MapCombo.WinLeft = CenterPos; 138 | MapCombo.EditBoxWidth = 150; 139 | baddiecheck.SetSize(CenterWidth, 1); 140 | baddiecheck.WinLeft = CenterPos; 141 | FFSlider.SetSize(CenterWidth, 1); 142 | FFSlider.SliderWidth = 90; 143 | FFSlider.WinLeft = CenterPos; 144 | 145 | if(MaxPlayersEdit != None) 146 | { 147 | MaxPlayersEdit.SetSize(ControlWidth, 1); 148 | MaxPlayersEdit.WinLeft = ControlLeft; 149 | MaxPlayersEdit.EditBoxWidth = 25; 150 | } 151 | 152 | if(MaxSpectatorsEdit != None) 153 | { 154 | MaxSpectatorsEdit.SetSize(ControlWidth, 1); 155 | MaxSpectatorsEdit.WinLeft = ControlRight; 156 | MaxSpectatorsEdit.EditBoxWidth = 25; 157 | } 158 | SpeedSlider.SetSize(CenterWidth, 1); 159 | SpeedSlider.SliderWidth = 90; 160 | SpeedSlider.WinLeft = CenterPos; 161 | EditWidth = CenterWidth - 100; 162 | 163 | } 164 | function Notify(UWindowDialogControl C, byte E) 165 | { 166 | switch(E) 167 | { 168 | case DE_Change: 169 | switch(C) 170 | { 171 | case MaxPlayersEdit: 172 | MaxPlayersChanged(); 173 | break; 174 | case MaxSpectatorsEdit: 175 | MaxSpectatorsChanged(); 176 | break; 177 | case FFSlider: 178 | FFChanged(); 179 | break; 180 | case baddiecheck: 181 | class'Oldskool.coopgame2'.default.baddiespectate = baddiecheck.bChecked; 182 | break; 183 | case SpeedSlider: 184 | SpeedChanged(); 185 | break; 186 | case mapcombo: 187 | pagebase.map=string(mainparent.selectedpackclass.default.maps[mapcombo.Getselectedindex()]); 188 | break; 189 | } 190 | } 191 | 192 | Super.Notify(C, E); 193 | } 194 | function MaxPlayersChanged() 195 | { 196 | if(int(MaxPlayersEdit.GetValue()) > 16) 197 | MaxPlayersEdit.SetValue("16"); 198 | if(int(MaxPlayersEdit.GetValue()) < 1) 199 | MaxPlayersEdit.SetValue("1"); 200 | 201 | Class'oldskool.coopgame2'.Default.MaxPlayers = int(MaxPlayersEdit.GetValue()); 202 | } 203 | 204 | function MaxSpectatorsChanged() 205 | { 206 | if(int(MaxSpectatorsEdit.GetValue()) > 16) 207 | MaxSpectatorsEdit.SetValue("16"); 208 | 209 | if(int(MaxSpectatorsEdit.GetValue()) < 0) 210 | MaxSpectatorsEdit.SetValue("0"); 211 | 212 | Class'oldskool.coopgame2'.Default.MaxSpectators = int(MaxSpectatorsEdit.GetValue()); 213 | } 214 | function SpeedChanged() 215 | { 216 | local int S; 217 | 218 | S = SpeedSlider.GetValue(); 219 | SpeedSlider.SetText(class'umenu.umenugamesettingsbase'.default.SpeedText$" ["$S$"%]:"); 220 | Class'oldskool.coopgame2'.Default.GameSpeed = float(S) / 100.0; 221 | } 222 | function FFChanged() 223 | { 224 | Class'oldskool.coopgame2'.Default.FriendlyFireScale = FFSlider.GetValue() / 10; 225 | FFSlider.SetText(class'utmenu.utteamrcwindow'.default.FFText$" ["$int(FFSlider.GetValue()*10)$"%]:"); 226 | } 227 | function RightClickTab() // :D 228 | { 229 | MessageBox("Think about it!", "In case you haven't noticed, right clicking doesn't do anything in Uwindow's mode.\\nWell, at least in Epic's windows ;)", MB_OK, MR_OK, MR_OK); //;p 230 | } 231 | 232 | defaultproperties 233 | { 234 | } 235 | -------------------------------------------------------------------------------- /Classes/coopgame2.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | // coopgame2.the new co-operative mode.... 3 | // Psychic_313: changed login to be a little less hard-coded 4 | // (checks mesh name and bSinglePlayer instead of requiring 5 | // that SkTrooper is still in OldSkool.u, which it isn't) 6 | // [yes, I know it's still there... shhh] 7 | // ============================================================ 8 | 9 | class coopgame2 expands UnrealGameInfo; 10 | 11 | var() config float friendlyfirescale; //changed the no friendly fire to this.... 12 | var bool bSpecialFallDamage; 13 | var float LastTauntTime; 14 | var int LastTaunt[4]; //taunt holder..... 15 | var config bool baddiespectate; 16 | 17 | function PostBeginPlay() 18 | { 19 | Super.PostBeginPlay(); 20 | 21 | bClassicDeathMessages = True; 22 | } 23 | function bool CanSpectate( pawn Viewer, actor ViewTarget ){ 24 | if ( ViewTarget.bIsPawn && (Pawn(ViewTarget).PlayerReplicationInfo != None) 25 | && Pawn(ViewTarget).PlayerReplicationInfo.bIsSpectator ) 26 | return false; 27 | if (viewtarget.bIsPawn && !Pawn(Viewtarget).bisplayer ) //only spectate baddies if server allows this... 28 | return baddiespectate; 29 | if (Viewtarget.bispawn) 30 | return true; 31 | return false; 32 | } 33 | function bool IsRelevant(actor Other) 34 | { 35 | // hide all playerpawns (these are incoming ones...) 36 | 37 | if ( Other.IsA('PlayerPawn') && !Other.IsA('Spectator') ) 38 | { 39 | Other.SetCollision(false,false,false); 40 | Other.bHidden = true; 41 | } 42 | return Super.IsRelevant(Other); 43 | } 44 | 45 | event PostLogin( playerpawn NewPlayer ){ 46 | //local PlayerPawn NewPlayer; 47 | local Pawn P; 48 | // Start player's music. 49 | If (Level.Song!=None) 50 | NewPlayer.ClientSetMusic( Level.Song, Level.SongSection, Level.CdTrack, MTRAN_Fade ); 51 | else { 52 | NewPlayer.ClientSetMusic( Music'olroot.null', 0, 0, MTRAN_Fade ); } //no music..... 53 | if (class'spoldskool'.default.unair&&string(class)!="olextras.tvcoop") 54 | NewPlayer.Aircontrol=class'pawn'.default.aircontrol; 55 | } 56 | function float PlaySpawnEffect(inventory Inv) 57 | { 58 | Playsound(sound'RespawnSound'); 59 | if ( !bCoopWeaponMode || !Inv.IsA('Weapon') ) 60 | { 61 | spawn( class 'ReSpawn',,, Inv.Location ); 62 | return 0.3; 63 | } 64 | return 0.0; 65 | } 66 | 67 | function PreCacheReferences() 68 | { 69 | //never called - here to force precaching of meshes 70 | spawn(class'olweapons.olautomag'); 71 | spawn(class'olweapons.oldpistol'); 72 | spawn(class'olweapons.oleightball'); 73 | spawn(class'olweapons.olflakcannon'); 74 | spawn(class'olweapons.olrazorjack'); 75 | spawn(class'olweapons.olasmd'); 76 | spawn(class'olweapons.olgesbiorifle'); 77 | spawn(class'olweapons.olrifle'); 78 | spawn(class'olweapons.olminigun'); 79 | } 80 | 81 | function PlayTeleportEffect( actor Incoming, bool bOut, bool bSound) //Ut tele effect..... 82 | { 83 | local UTTeleportEffect PTE; 84 | 85 | if ( Incoming.bIsPawn && (Incoming.Mesh != None) ) 86 | { 87 | if ( bSound ) 88 | { 89 | PTE = Spawn(class'UTTeleportEffect',,, Incoming.Location, Incoming.Rotation); 90 | PTE.Initialize(Pawn(Incoming), bOut); 91 | Incoming.PlaySound(sound'Resp2A',, 10.0); 92 | } 93 | } 94 | } 95 | event playerpawn Login 96 | ( 97 | string Portal, 98 | string Options, 99 | out string Error, 100 | class SpawnClass 101 | ) 102 | { 103 | local PlayerPawn NewPlayer; 104 | local string InVoice; 105 | local string InName, InPassword; 106 | local pawn aPawn; 107 | if ( ClassIsChildOf(SpawnClass, class'Spectator') ) 108 | { 109 | if ( !ClassIsChildOf( SpawnClass, class'unrealSpectator') ) //force unreal spectator.... 110 | SpawnClass = class'unrealSpectator'; 111 | } 112 | /*Psychic_313 else if ( !ClassIsChildOf(SpawnClass, class'TournamentPlayer') || Left(string(spawnclass),6) ~= "u4etc."|| ClassIsChildOf(SpawnClass, class'oldskool.sktrooper'))*/ 113 | else if ( !ClassIsChildOf(SpawnClass, class'TournamentPlayer') || Left(string(spawnclass),6) ~= "u4etc."|| SpawnClass.default.Mesh==LodMesh'UnrealI.SkTrooper' || !SpawnClass.default.bSinglePlayer ) 114 | //taken from tournamentgameinfo 115 | SpawnClass = DefaultPlayerClass; 116 | NewPlayer = Super.Login(Portal, Options, Error, SpawnClass); 117 | if ( NewPlayer != None ) 118 | { 119 | if ( !NewPlayer.IsA('Spectator') ) 120 | { 121 | NewPlayer.bHidden = false; 122 | NewPlayer.SetCollision(true,true,true); 123 | InVoice = ParseOption ( Options, "Voice" ); 124 | if ( InVoice != "" ) 125 | NewPlayer.PlayerReplicationInfo.VoiceType = class(DynamicLoadObject(InVoice, class'Class')); 126 | if ( NewPlayer.PlayerReplicationInfo.VoiceType == None ) 127 | NewPlayer.PlayerReplicationInfo.VoiceType = class(DynamicLoadObject(NewPlayer.VoiceType, class'Class')); 128 | if ( NewPlayer.PlayerReplicationInfo.VoiceType == None ) 129 | NewPlayer.PlayerReplicationInfo.VoiceType = class(DynamicLoadObject("Botpack.VoiceMaleOne", class'Class')); 130 | } 131 | else{ //we have to swap the spectator's HUD 132 | newplayer.hudtype=class'oldskool.oldskoolspectatorhud'; 133 | If (newplayer.myhud!=None) //if it is none then the hudtype swap will fix it anyway :D 134 | newplayer.myhud.destroy(); 135 | newplayer.myhud=none; } 136 | log("Logging in to "$Level.Title); 137 | if ( Level.Title ~= "The Source Antechamber" ) //level h4ck... 138 | { 139 | bSpecialFallDamage = true; 140 | log("reduce fall damage"); 141 | } 142 | } 143 | return NewPlayer; 144 | } 145 | 146 | function NavigationPoint FindPlayerStart( Pawn Player, optional byte InTeam, optional string incomingName ) 147 | { 148 | local PlayerStart Dest, Candidate[8], Best; 149 | local float Score[8], BestScore, NextDist; 150 | local pawn OtherPlayer; 151 | local int i, num; 152 | local Teleporter Tel; 153 | 154 | num = 0; 155 | //choose candidates 156 | foreach AllActors( class 'PlayerStart', Dest ) 157 | { 158 | if ( (Dest.bSinglePlayerStart || Dest.bCoopStart) && !Dest.Region.Zone.bWaterZone ) 159 | { 160 | if (num<4) 161 | Candidate[num] = Dest; 162 | else if (Rand(num) < 4) 163 | Candidate[Rand(4)] = Dest; 164 | num++; 165 | } 166 | } 167 | 168 | if (num>4) num = 4; 169 | else if (num == 0) 170 | return None; 171 | 172 | //assess candidates 173 | for (i=0;i BestScore) 195 | { 196 | BestScore = Score[i]; 197 | Best = Candidate[i]; 198 | } 199 | } 200 | 201 | return Best; 202 | } 203 | 204 | function int ReduceDamage(int Damage, name DamageType, pawn injured, pawn instigatedBy) 205 | { 206 | if( injured.Region.Zone.bNeutralZone ) 207 | return 0; 208 | 209 | if ( instigatedBy == None ) 210 | return Damage; 211 | 212 | if ( instigatedBy.bIsPlayer && injured.bIsPlayer && (instigatedBy != injured) ) 213 | return Damage*friendlyfirescale; 214 | 215 | if ( (DamageType == 'Fell') && bSpecialFallDamage ) 216 | return Min(Damage, 5); 217 | 218 | return Damage; 219 | } 220 | 221 | function bool ShouldRespawn(Actor Other) 222 | { 223 | if ( Other.IsA('Weapon') && !Weapon(Other).bHeldItem && (Weapon(Other).ReSpawnTime != 0) ) 224 | { 225 | Inventory(Other).ReSpawnTime = 1.0; 226 | return true; 227 | } 228 | return false; 229 | } 230 | 231 | function SendPlayer( PlayerPawn aPlayer, string URL ) 232 | { 233 | // hack to skip end game in coop play 234 | if ( left(URL,7) ~= "endgame") 235 | { 236 | Level.ServerTravel( "Vortex2", false); 237 | return; 238 | } 239 | 240 | Level.ServerTravel( URL, true ); 241 | } 242 | 243 | function ScoreKill(pawn Killer, pawn Other) //make use of sp rules.... 244 | { 245 | local int points, intlevel; 246 | Other.DieCount++; 247 | if( (killer == Other) || (killer == None) ) 248 | Other.PlayerReplicationInfo.Score -= 79; 249 | else if ( killer != None ) 250 | { 251 | switch (Other.intelligence){ //AI figure-outer..... 252 | Case Brains_None: 253 | intlevel=0; 254 | break; 255 | Case Brains_Reptile: 256 | intlevel=1; 257 | break; 258 | Case Brains_Mammal: 259 | intlevel=2; 260 | break; 261 | Case Brains_Human: 262 | intlevel=3; 263 | break; } 264 | points = int(10*((other.skill/2) + 1)*(other.default.health/150)+intlevel/1.5); //calculated by difficulty (major), health (slightly less important) and AI (tiny difference) 265 | If (points<8) points=8; //force to at least give 8 points. 266 | If (Other.bIsPlayer) 267 | Points=-84; //idiot..... 268 | else if (Other.IsA('Nali')) 269 | Points=-32; 270 | else if (Other.IsA('nalirabbit')) points= -4; 271 | else if (Other.IsA('bird1')) points= -7; 272 | else if (Other.IsA('cow')) points= -10; 273 | if (Other.IsA('ScriptedPawn')) 274 | if (ScriptedPawn(Other).bIsBoss) points *=3; 275 | killer.killCount++; 276 | if ( killer.PlayerReplicationInfo != None ) 277 | killer.PlayerReplicationInfo.Score += points; 278 | } 279 | 280 | BaseMutator.ScoreKill(Killer, Other); 281 | } 282 | function Killed(pawn killer, pawn Other, name damageType) //taunts.... 283 | { 284 | local int NextTaunt, i; 285 | local bool bAutoTaunt; 286 | if ( (damageType == 'Decapitated') && (Killer != Other) && (Killer != None) &&(TournamentPlayer(Killer) != None) && TournamentPlayer(Killer).bAutoTaunt) //play headshot thingy :D 287 | Killer.ReceiveLocalizedMessage( class'DecapitationMessage' ); 288 | super.Killed(killer, Other, damageType); 289 | bAutoTaunt = ((TournamentPlayer(Killer) != None) && TournamentPlayer(Killer).bAutoTaunt); //stupid auto taunting 290 | if (bAutoTaunt 291 | && (Killer != Other) && (DamageType != 'gibbed') && (Killer.Health > 0) 292 | && (Level.TimeSeconds - LastTauntTime > 3) ) 293 | { 294 | LastTauntTime = Level.TimeSeconds; 295 | NextTaunt = Rand(class(Killer.PlayerReplicationInfo.VoiceType).Default.NumTaunts); 296 | for ( i=0; i<4; i++ ) //keeps taunts unique..... 297 | { 298 | if ( NextTaunt == LastTaunt[i] ) 299 | NextTaunt = Rand(class(Killer.PlayerReplicationInfo.VoiceType).Default.NumTaunts); 300 | if ( i > 0 ) 301 | LastTaunt[i-1] = LastTaunt[i]; 302 | } 303 | LastTaunt[3] = NextTaunt; 304 | killer.SendGlobalMessage(None, 'AUTOTAUNT', NextTaunt, 5); 305 | } 306 | } 307 | 308 | function AddDefaultInventory( pawn PlayerPawn ) 309 | { 310 | local Translator newTranslator; 311 | 312 | if ( Level.DefaultGameType != class'VRikersGame' ) 313 | Super.AddDefaultInventory(PlayerPawn); 314 | 315 | // Spawn translator. 316 | if( PlayerPawn.IsA('Spectator') || PlayerPawn.FindInventoryType(class'Translator') != None ) 317 | return; 318 | newTranslator = Spawn(class'Translator',,, Location); 319 | if( newTranslator != None ) 320 | { 321 | newTranslator.bHeldItem = true; 322 | newTranslator.GiveTo( PlayerPawn ); 323 | PlayerPawn.SelectedItem = newTranslator; 324 | newTranslator.PickupFunction(PlayerPawn); 325 | } 326 | } 327 | 328 | 329 | //Psychic_313: changed default.DefaultPlayerClass to Tournament guy 330 | //so players lacking OldModels aren't left out. Sorry, Dante fans :-) 331 | 332 | defaultproperties 333 | { 334 | bHumansOnly=True 335 | bRestartLevel=False 336 | bPauseable=False 337 | bCoopWeaponMode=True 338 | DefaultPlayerClass=Class'botpack.TMale2' 339 | DefaultWeapon=Class'olweapons.OLDpistol' 340 | ScoreBoardType=Class'UnrealShare.UnrealScoreBoard' 341 | GameMenuType=Class'UnrealShare.UnrealCoopGameOptions' 342 | RulesMenuType="UMenu.UMenuCoopGameRulesSClient" 343 | SettingsMenuType="UMenu.UMenuCoopGameRulesSClient" 344 | MultiplayerUMenuType="UTMenu.UTMultiplayerMenu" 345 | HUDType=Class'coopHUD' 346 | BeaconName="Coop" 347 | GameName="Coop Game" 348 | MutatorClass=Class'spoldskool' 349 | } 350 | -------------------------------------------------------------------------------- /Classes/coopwindow.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | // framed window for co-op 3 | // ============================================================ 4 | 5 | class coopwindow expands UWindowFramedWindow; 6 | 7 | function Created() 8 | { 9 | bStatusBar = False; 10 | bSizable = False; 11 | 12 | Super.Created(); 13 | 14 | SetSizePos(); 15 | } 16 | 17 | function SetSizePos() 18 | { 19 | if(Root.WinHeight < 290) 20 | SetSize(Min(Root.WinWidth-10, 280) , 220); 21 | else 22 | SetSize(Min(Root.WinWidth-10, 280), 270); 23 | 24 | WinLeft = Root.WinWidth/2 - WinWidth/2; 25 | WinTop = Root.WinHeight/2 - WinHeight/2; 26 | } 27 | 28 | function ResolutionChanged(float W, float H) 29 | { 30 | SetSizePos(); 31 | Super.ResolutionChanged(W, H); 32 | } 33 | 34 | defaultproperties 35 | { 36 | ClientClass=Class'coopbase' 37 | WindowTitle="Co-op Game" 38 | } 39 | -------------------------------------------------------------------------------- /Classes/invasion.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | // oldskool.invasion: for EzKeel's 3l337 pack, "Invasion" 3 | // ============================================================ 4 | 5 | class invasion expands mappack; 6 | 7 | #exec TEXTURE IMPORT NAME=invadeShot FILE=Textures\invadeShot.pcx MIPS=OFF 8 | 9 | defaultproperties 10 | { 11 | Maps(0)=invasion_1 12 | Maps(1)=invasion_2 13 | Maps(2)=invasion_3 14 | Maps(3)=invasion_4 15 | Maps(4)=invasion_5 16 | Maps(5)=invasion_6 17 | Author="Simon West-Bulford (EZkeel)" 18 | Title="Invasion (Xerania's Fall - part 2)" 19 | Screenshot=Texture'invadeShot' 20 | } 21 | -------------------------------------------------------------------------------- /Classes/ol1337krallBolt.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | //hehe 3 | // Psychic_313: unchanged 4 | // ============================================================ 5 | 6 | class ol1337krallBolt expands EliteKrallBolt; 7 | 8 | defaultproperties 9 | { 10 | ExplosionDecal=Class'boltskorchlong' 11 | } 12 | -------------------------------------------------------------------------------- /Classes/olBloodSplat.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | //The main oldskool package. 3 | //Holds the mutators, singleplayer game, windows, Unreal I models and mappacks. 4 | // ============================================================ 5 | 6 | class olBloodSplat expands BloodSplat; 7 | simulated function AttachToSurface() //fog zone hack (note that this code cannot be compiled normaly) 8 | { 9 | local bool oldfog; 10 | oldfog=region.zone.bfogzone; 11 | region.zone.bfogzone=false; //ignore fog zone when attaching. (decals don't work in fogzones) 12 | if(AttachDecal(100) == None) // trace 100 units ahead in direction of current rotation 13 | Destroy(); 14 | region.zone.bfogzone=oldfog; 15 | } 16 | defaultproperties 17 | { 18 | } 19 | -------------------------------------------------------------------------------- /Classes/olBloodSpurt.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | //The main oldskool package. 3 | //Holds the mutators, singleplayer game, windows, Unreal I models and mappacks. 4 | //olbloodspurt. Decal support 5 | // ============================================================ 6 | 7 | class olBloodSpurt expands BloodSpurt; 8 | Auto State StartUp 9 | { 10 | simulated function Tick(float DeltaTime) 11 | { 12 | local vector WallHit, WallNormal; 13 | local Actor WallActor; 14 | 15 | if ( Level.NetMode != NM_DedicatedServer&&class'spoldskool'.default.busedecals) 16 | { 17 | WallActor = Trace(WallHit, WallNormal, Location + 300 * vector(Rotation), Location, false); 18 | if ( WallActor != None ){ 19 | if (Texture == texture'BloodSGrn') 20 | spawn(class'GreenBloodSplat',,,WallHit + 20 * (WallNormal + VRand()), rotator(WallNormal)); 21 | else 22 | spawn(class'olBloodSplat',,,WallHit + 20 * (WallNormal + VRand()), rotator(WallNormal)); 23 | } 24 | } 25 | Disable('Tick'); 26 | } 27 | 28 | } 29 | simulated function PreBeginPlay() //gore stuff for client 30 | { 31 | if( class'GameInfo'.Default.bVeryLowGore ) 32 | GreenBlood(); 33 | } 34 | defaultproperties 35 | { 36 | } 37 | -------------------------------------------------------------------------------- /Classes/olBruteProjectile.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | //The main oldskool package. 3 | //Holds the mutators, singleplayer game, windows, Unreal I models and mappacks. 4 | // Psychic_313: unchanged 5 | // ============================================================ 6 | 7 | class olBruteProjectile expands BruteProjectile; 8 | 9 | defaultproperties 10 | { 11 | ExplosionDecal=Class'olweapons.ODBlastMark' 12 | } 13 | -------------------------------------------------------------------------------- /Classes/olCreatureCarcass.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | //The main oldskool package. 3 | //Holds the mutators, singleplayer game, windows, Unreal I models and mappacks. 4 | //olcreaturecarcass. The creature carcass for all classes if blood decals mode is on. 5 | // Uses decals and thx to static functions makes use for all creatures. 6 | // used as a decoration, it would screw up. 7 | // ============================================================ 8 | 9 | class olCreatureCarcass expands CreatureCarcass; 10 | var class realcarcass; 11 | var Decal Pool; //blood pool 12 | var config bool PermaCarcass; //carcass does not auto-destruct? 13 | //permacarcass: 14 | function PostBeginPlay() 15 | { 16 | if ( !bDecorative &&!PermaCarcass) 17 | { 18 | DeathZone = Region.Zone; 19 | DeathZone.NumCarcasses++; 20 | } 21 | Super(Carcass).PostBeginPlay(); 22 | if ( Physics == PHYS_None ) 23 | SetCollision(bCollideActors, false, false); 24 | } 25 | 26 | //DEFAULTED CHECKS: 27 | //realcarcass check 28 | function Initfor(actor Other) 29 | { 30 | local rotator carcRotation; 31 | local int i; 32 | if ( bDecorative) 33 | { 34 | DeathZone = Region.Zone; 35 | DeathZone.NumCarcasses++; 36 | } 37 | bDecorative = false; 38 | bMeshCurvy = Other.bMeshCurvy; 39 | bMeshEnviroMap = Other.bMeshEnviroMap; 40 | for (i=0;i<8;i++) //NEED THIS! 41 | multiskins[i]=other.multiskins[i]; 42 | Mesh = Other.Mesh; 43 | Skin = Other.Skin; 44 | if (skin!=none) 45 | skin.lodset=lodset_skin; 46 | Texture = Other.Texture; 47 | if (texture!=none) 48 | texture.lodset=lodset_skin; 49 | Fatness = Other.Fatness; 50 | DrawScale = Other.DrawScale; 51 | SetCollisionSize(Other.CollisionRadius + 4, Other.CollisionHeight); 52 | if ( !SetLocation(Location) ) 53 | SetCollisionSize(CollisionRadius - 4, CollisionHeight); 54 | //if (pawn(other).isa('scriptedpawn')) 55 | realcarcass=class(scriptedpawn(other).default.carcasstype); //use default! 56 | bgreenblood=realcarcass.default.bgreenblood; //copy. 57 | bPermanent=realcarcass.default.bPermanent; 58 | lifespan=realcarcass.default.lifespan; 59 | DesiredRotation = other.Rotation; 60 | DesiredRotation.Roll = 0; 61 | DesiredRotation.Pitch = 0; 62 | AnimSequence = Other.AnimSequence; 63 | AnimFrame = Other.AnimFrame; 64 | AnimRate = Other.AnimRate; 65 | TweenRate = Other.TweenRate; 66 | AnimMinRate = Other.AnimMinRate; 67 | AnimLast = Other.AnimLast; 68 | bAnimLoop = Other.bAnimLoop; 69 | SimAnim.X = 10000 * AnimFrame; 70 | SimAnim.Y = 5000 * AnimRate; 71 | SimAnim.Z = 1000 * TweenRate; 72 | SimAnim.W = 10000 * AnimLast; 73 | bAnimFinished = Other.bAnimFinished; 74 | Velocity = other.Velocity; 75 | Mass = Other.Mass; 76 | if ( Buoyancy < 0.8 * Mass ) 77 | Buoyancy = 0.9 * Mass; 78 | if ( AnimSequence == 'LeglessDeath' ) //krall 79 | SetCollision(true, false, false); 80 | } 81 | function tick(float delta){ 82 | if (realcarcass==class'KrallCarcass'&&AnimSequence!='LegLessDeath') //fix up stupid krall col-height bug 83 | bReducedHeight = false; //fix this! 84 | Disable('tick'); 85 | } 86 | 87 | function CreateReplacement() 88 | { 89 | local CreatureChunks carc; 90 | 91 | if (bHidden) 92 | return; 93 | if (realcarcass==class'NaliCarcass'||realcarcass==class'SkaarjCarcass'||realcarcass==class'TrooperCarcass') 94 | carc = Spawn(class 'olCreatureChunks'); 95 | else if ( realcarcass.default.bodyparts[0] != None ) 96 | carc = Spawn(class 'olCreatureChunks',,, Location + realcarcass.default.ZOffset[0] * CollisionHeight * vect(0,0,1)); 97 | if (carc != None) 98 | { 99 | if (realcarcass!=class'NaliCarcass'&&realcarcass!=class'SkaarjCarcass'&&realcarcass!=class'TrooperCarcass'){ 100 | carc.TrailSize = realcarcass.default.Trails[0]; 101 | carc.Mesh = realcarcass.default.bodyparts[0];} 102 | carc.bMasterChunk = true; 103 | carc.CarcassClass=realcarcass; //set my static to this. 104 | carc.Initfor(self); 105 | carc.Bugs = Bugs; 106 | if ( Bugs != None ) 107 | Bugs.SetBase(carc); 108 | Bugs = None; 109 | } 110 | else if ( Bugs != None ) 111 | Bugs.Destroy(); 112 | } 113 | function GibSound() //statics. 114 | { 115 | local float decision; 116 | 117 | decision = FRand(); 118 | if (decision < 0.2) 119 | PlaySound(realcarcass.default.GibOne, SLOT_Interact, 0.06 * Mass); 120 | else if ( decision < 0.35 ) 121 | PlaySound(realcarcass.default.GibTwo, SLOT_Interact, 0.06 * Mass); 122 | else if ( decision < 0.5 ) 123 | PlaySound(sound'Gib3', SLOT_Interact, 0.06 * Mass); 124 | else if ( decision < 0.8 ) 125 | PlaySound(sound'Gib4', SLOT_Interact, 0.06 * Mass); 126 | else 127 | PlaySound(sound'Gib5', SLOT_Interact, 0.06 * Mass); 128 | } 129 | //crap for warlord: 130 | function AnimEnd() 131 | { 132 | if (realcarcass!=class'WarlordCarcass'){ 133 | super.animend(); 134 | return;} 135 | if ( AnimSequence == 'Dead2A' ) 136 | { 137 | if ( Physics == PHYS_None ) 138 | { 139 | LieStill(); 140 | PlayAnim('Dead2B', 0.7, 0.07); 141 | } 142 | else 143 | LoopAnim('Fall'); 144 | } 145 | else if ( Physics == PHYS_None ) 146 | LieStill(); 147 | } 148 | //some blood decal stuff 149 | simulated function Landed(vector HitNormal) 150 | { 151 | if (role==role_authority){ //I could do 1337 new net stuff, but nah.. 152 | if (realcarcass==class'WarlordCarcass'){ 153 | if ( AnimSequence == 'Fall' ) 154 | { 155 | LieStill(); 156 | PlayAnim('Dead2B', 0.7, 0.07); 157 | } 158 | SetPhysics(PHYS_None); 159 | } 160 | else if (realcarcass==class'tentacleCarcass'){ 161 | if ( AnimSequence == 'Dead1') 162 | PlayAnim('Dead1Land', 1.5); 163 | SetPhysics(PHYS_None); 164 | LieStill(); } 165 | else 166 | super.landed(hitnormal); }//normal carcass 167 | if (level.netmode==nm_dedicatedserver||!class'spoldskool'.default.busedecals&&realcarcass==class'tentaclecarcass'||region.zone.bwaterzone) 168 | return; //I can not see tentacles or water creatures having blood pools. 169 | if ( Pool == None){ 170 | if (bGreenBlood) 171 | Pool = Spawn(class'GreenUTBloodPool2',,,Location, rotator(HitNormal)); //mercs get this :P 172 | else{ 173 | class'olutBloodpool2'.default.drawscale=0.038*(collisionradius-4); //change drawscale to match size 174 | Pool = Spawn(class'olUTBloodPool2',,,Location, rotator(HitNormal)); 175 | class'olutBloodpool2'.default.drawscale=0.68;}} //reset 176 | else 177 | Spawn(class'olBloodSplat',,,Location, rotator(HitNormal + 0.5 * VRand())); 178 | } 179 | function LieStill(){ 180 | super.LieStill(); 181 | if (PermaCarcass){ 182 | bdecorative=true; 183 | bstasis=true; //save mem 184 | } 185 | } 186 | function Drop(vector newVel) //only ever called on tentacle 187 | { 188 | Velocity.X = 0; 189 | Velocity.Y = 0; 190 | SetPhysics(PHYS_Falling); 191 | } 192 | 193 | 194 | state Dead 195 | { 196 | function BeginState() 197 | { 198 | if ( bDecorative || bPermanent||PermaCarcass ) 199 | lifespan = 0.0; 200 | else 201 | { 202 | if (realcarcass==class'WarlordCarcass') 203 | return; 204 | if ( Mover(Base) != None ) 205 | { 206 | ExistTime = FMax(12.0, 30.0 - 2 * DeathZone.NumCarcasses); 207 | SetTimer(3.0, true); 208 | } 209 | else 210 | SetTimer(FMax(12.0, 30.0 - 2 * DeathZone.NumCarcasses), false); 211 | } 212 | } 213 | } 214 | 215 | //BLOODDECALS: 216 | function TakeDamage( int Damage, Pawn InstigatedBy, Vector Hitlocation, 217 | Vector Momentum, name DamageType) 218 | { 219 | local BloodSpurt b; 220 | 221 | b = Spawn(class'olBloodSpurt',,,HitLocation,rotator(Momentum)); //options can change. 222 | if ( bGreenBlood ) 223 | b.GreenBlood(); 224 | if ( !bPermanent ) 225 | { 226 | if ( (DamageType == 'Corroded') && (Damage >= 100) ) 227 | { 228 | bCorroding = true; 229 | GotoState('Corroding'); 230 | } 231 | else 232 | Super.TakeDamage(Damage, instigatedBy, HitLocation, Momentum, DamageType); 233 | } 234 | } 235 | 236 | simulated event destroyed(){ 237 | if (pool!=none) 238 | pool.destroy(); 239 | if ( !bDecorative&&!PermaCarcass ) 240 | DeathZone.NumCarcasses--; 241 | super(Carcass).destroyed(); 242 | } 243 | defaultproperties 244 | { 245 | PermaCarcass=True 246 | } 247 | -------------------------------------------------------------------------------- /Classes/olCreatureChunks.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | //The main oldskool package. 3 | //Holds the mutators, singleplayer game, windows, Unreal I models and mappacks. 4 | //olcreaturechunks. more decalz 5 | // ============================================================ 6 | 7 | class olCreatureChunks expands CreatureChunks; 8 | simulated function HitWall(vector HitNormal, actor Wall) 9 | { 10 | local float speed, decision; 11 | local BloodSpurt b; 12 | 13 | Velocity = 0.8 * (Velocity - 2 * HitNormal * (Velocity Dot HitNormal)); 14 | Velocity.Z = FMin(Velocity.Z * 0.8, 700); 15 | speed = VSize(Velocity); 16 | if ( speed < 250 ) 17 | { 18 | if ( trail != None ) 19 | { 20 | if ( Level.bHighDetailMode && !Level.bDropDetail) 21 | bUnlit = false; 22 | trail.Destroy(); 23 | trail = None; 24 | } 25 | if ( speed < 120 ) 26 | { 27 | bBounce = false; 28 | Disable('HitWall'); 29 | } 30 | } 31 | else if ( speed > 350 ) 32 | { 33 | if ( speed > 700 ) 34 | velocity *= 0.8; 35 | if ( Level.NetMode != NM_DedicatedServer ) 36 | { 37 | decision = FRand(); 38 | if ( decision < 0.2 ) 39 | PlaySound(sound 'gibP1'); 40 | else if ( decision < 0.4 ) 41 | PlaySound(sound 'gibP3'); 42 | else if ( decision < 0.6 ) 43 | PlaySound(sound 'gibP4'); 44 | else if ( decision < 0.8 ) 45 | PlaySound(sound 'gibP5'); 46 | else 47 | PlaySound(sound 'gibP6'); 48 | } 49 | } 50 | if (Level.NetMode != NM_DedicatedServer){ 51 | if (trail == None&& !Level.bDropDetail ) 52 | { 53 | b = Spawn(class 'Bloodspurt',,,,Rotator(HitNormal)); 54 | if ( bGreenBlood ) 55 | b.GreenBlood(); 56 | b.RemoteRole = ROLE_None; 57 | } 58 | if ((!Level.bDropDetail || (FRand() < 0.65)) ){ //from UT 59 | if (!bGreenBlood) 60 | Spawn(class'olBloodSplat',,,Location,rotator(HitNormal)); 61 | else 62 | Spawn(class'GreenBloodSplat',,,Location,rotator(HitNormal)); 63 | } 64 | } 65 | } 66 | simulated function Landed(vector HitNormal) 67 | { 68 | local rotator finalRot; 69 | local BloodSpurt b; 70 | 71 | if ( trail != None ) 72 | { 73 | if ( Level.bHighDetailMode && !Level.bDropDetail) 74 | bUnlit = false; 75 | trail.Destroy(); 76 | trail = None; 77 | } 78 | finalRot = Rotation; 79 | finalRot.Roll = 0; 80 | finalRot.Pitch = 0; 81 | setRotation(finalRot); 82 | if ( Level.NetMode != NM_DedicatedServer && !Level.bDropDetail ) 83 | { 84 | b = Spawn(class 'Bloodspurt',,,,rot(16384,0,0)); 85 | if ( bGreenBlood ) 86 | b.GreenBlood(); 87 | b.RemoteRole = ROLE_None; 88 | if ( !bGreenBlood ) 89 | Spawn(class'olBloodSplat',,,Location,rotator(HitNormal)); 90 | else 91 | Spawn(class'GreenBloodSplat',,,Location,rotator(HitNormal)); 92 | } 93 | SetPhysics(PHYS_None); 94 | SetCollision(true, false, false); 95 | } 96 | function SetAsMaster(Actor Other) //all 97 | { 98 | Velocity = Other.Velocity; 99 | if (carcassclass==class'NaliCarcass'){ 100 | Mesh=LodMesh'UnrealShare.NaliPart'; 101 | TrailSize=0.500000;} 102 | else if (carcassclass==class'SkaarjCarcass'){ 103 | Mesh=LodMesh'UnrealShare.SkaarjTail'; 104 | TrailSize=0.500000;} 105 | else if (carcassclass==class'TrooperCarcass'){ 106 | Mesh=None; 107 | TrailSize=0.500000;} 108 | else 109 | CarcLocation = Other.Location; 110 | CarcassAnim = Other.AnimSequence; 111 | CarcHeight = Other.CollisionHeight; 112 | } 113 | 114 | simulated function ClientExtraChunks(bool bSpawnChunks) 115 | { 116 | local CreatureChunks carc; 117 | local bloodpuff Blood; 118 | local bloodspurt b; 119 | local int n; 120 | 121 | If ( Level.NetMode == NM_DedicatedServer ) 122 | return; 123 | 124 | bMustSpawnChunks = false; 125 | b = Spawn(class 'Bloodspurt',,,,rot(16384,0,0)); 126 | if ( bGreenBlood ) 127 | b.GreenBlood(); 128 | b.RemoteRole = ROLE_None; 129 | 130 | if ( !bSpawnChunks || (CarcassClass == None) ) 131 | return; 132 | 133 | n = 1; 134 | 135 | while ( (n<8) && (CarcassClass.Default.bodyparts[n] != none) ) 136 | { 137 | if ( CarcassClass.Static.AllowChunk(n, CarcassAnim) ) 138 | { 139 | if ( CarcLocation == vect(0,0,0) ) CarcLocation = Location; 140 | carc = Spawn(class 'olCreatureChunks',,, CarcLocation 141 | + CarcassClass.Default.ZOffset[n] * CarcHeight * vect(0,0,1)); 142 | if (carc != None) 143 | { 144 | carc.TrailSize = CarcassClass.Default.Trails[n]; 145 | carc.Mesh = CarcassClass.Default.bodyparts[n]; 146 | carc.Initfor(self); 147 | carc.RemoteRole = ROLE_None; 148 | } 149 | } 150 | n++; 151 | } 152 | 153 | if ( Level.bHighDetailMode && !bGreenBlood ) 154 | { 155 | Blood = spawn(class'BloodPuff',,, CarcLocation); 156 | Blood.drawscale = 0.2 * CollisionRadius; 157 | Blood.RemoteRole = ROLE_None; 158 | } 159 | } 160 | 161 | state Dead //permanent. 162 | { 163 | function BeginState() 164 | { 165 | if ( bDecorative ||class'olCreatureCarcass'.default.PermaCarcass){ 166 | lifespan = 0.0; 167 | bstasis=true; 168 | } 169 | else 170 | SetTimer(5.0, false); 171 | } 172 | } 173 | defaultproperties 174 | { 175 | } 176 | -------------------------------------------------------------------------------- /Classes/olGasBagBelch.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | //The main oldskool package. 3 | //Holds the mutators, singleplayer game, windows, Unreal I models and mappacks. 4 | // Psychic_313: unchanged 5 | // ============================================================ 6 | 7 | class olGasBagBelch expands GasBagBelch; 8 | 9 | defaultproperties 10 | { 11 | ExplosionDecal=Class'olweapons.ODBlastMark' 12 | } 13 | -------------------------------------------------------------------------------- /Classes/olKraalBolt.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | // kraalbot. 3 | // Psychic_313: unchanged 4 | // ============================================================ 5 | 6 | class olKraalBolt expands KraalBolt; 7 | 8 | defaultproperties 9 | { 10 | ExplosionDecal=Class'boltskorchlong' 11 | } 12 | -------------------------------------------------------------------------------- /Classes/olMercRocket.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | //The main oldskool package. 3 | //Holds the mutators, singleplayer game, windows, Unreal I models and mappacks. 4 | // Psychic_313: unchanged 5 | // ============================================================ 6 | 7 | class olMercRocket expands MercRocket; 8 | 9 | defaultproperties 10 | { 11 | ExplosionDecal=Class'olweapons.ODBlastMark' 12 | } 13 | -------------------------------------------------------------------------------- /Classes/olQueenProjectile.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | //The main oldskool package. 3 | //Holds the mutators, singleplayer game, windows, Unreal I models and mappacks. 4 | // Psychic_313: unchanged 5 | // ============================================================ 6 | 7 | class olQueenProjectile expands QueenProjectile; 8 | 9 | auto state Flying 10 | { 11 | simulated function BeginState() //dumb bug 12 | { 13 | SetTimer(0.20,False); 14 | Super.BeginState(); 15 | } 16 | } 17 | 18 | defaultproperties 19 | { 20 | ExplosionDecal=Class'olweapons.ODEnergyImpact' 21 | } 22 | -------------------------------------------------------------------------------- /Classes/olSkaarjProjectile.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | //The main oldskool package. 3 | //Holds the mutators, singleplayer game, windows, Unreal I models and mappacks. 4 | // Psychic_313: unchanged 5 | // ============================================================ 6 | 7 | class olSkaarjProjectile expands SkaarjProjectile; 8 | auto state Flying 9 | { 10 | simulated function BeginState() //dumb bug 11 | { 12 | SetTimer(0.20,False); 13 | Super.BeginState(); 14 | } 15 | } 16 | defaultproperties 17 | { 18 | ExplosionDecal=Class'olweapons.ODEnergyImpact' 19 | } 20 | -------------------------------------------------------------------------------- /Classes/olSlithProjectile.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | //oldskool.olslithprojectile: addded in OSA 2.20 finally. like slith decals? 3 | //The main oldskool package. 4 | //Holds the mutators, singleplayer game, windows, Unreal I models and mappacks. 5 | // ============================================================ 6 | 7 | class olSlithProjectile expands SlithProjectile; 8 | auto state Flying 9 | { 10 | simulated function HitWall( vector HitNormal, actor Wall ) 11 | { 12 | if (level.netmode!=nm_dedicatedserver) 13 | Spawn(class'ODbiomark',self,,Location, rotator(HitNormal)); 14 | super.hitwall(hitnormal,wall); 15 | } 16 | } 17 | defaultproperties 18 | { 19 | } 20 | -------------------------------------------------------------------------------- /Classes/olTentacleProjectile.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | //The main oldskool package. 3 | //Holds the mutators, singleplayer game, windows, Unreal I models and mappacks. 4 | // Psychic_313: unchanged 5 | // ============================================================ 6 | 7 | class olTentacleProjectile expands TentacleProjectile; 8 | 9 | defaultproperties 10 | { 11 | ExplosionDecal=Class'olweapons.ODpock' 12 | } 13 | -------------------------------------------------------------------------------- /Classes/olWarlordRocket.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | //The main oldskool package. 3 | //Holds the mutators, singleplayer game, windows, Unreal I models and mappacks. 4 | // Psychic_313: unchanged 5 | // ============================================================ 6 | 7 | class olWarlordRocket expands WarlordRocket; 8 | //more net bugs: 9 | simulated function Tick(float DeltaTime) 10 | { 11 | local SpriteSmokePuff b; 12 | 13 | Count += DeltaTime; 14 | if ( (Count>(SmokeRate+FRand()*SmokeRate)) && (Level.NetMode!=NM_DedicatedServer) ) 15 | { 16 | b = Spawn(class'SpriteSmokePuff'); 17 | b.RemoteRole = ROLE_None; 18 | Count=0.0; 19 | } 20 | } 21 | auto state Flying 22 | { 23 | simulated function BeginState() 24 | { 25 | if (Level.bHighDetailMode) SmokeRate = 0.035; 26 | else SmokeRate = 0.15; 27 | Super.BeginState(); 28 | } 29 | } 30 | defaultproperties 31 | { 32 | ExplosionDecal=Class'olweapons.ODBlastMark' 33 | } 34 | -------------------------------------------------------------------------------- /Classes/oldboardNotify.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | // notification to swap scoreboards..... 3 | // ============================================================ 4 | 5 | class oldboardNotify expands spawnnotify; 6 | var bool bdisabled; 7 | simulated event Actor SpawnNotification( Actor A ) 8 | { 9 | local actor oldowner; 10 | local bool isteam, isas, islms; 11 | if (bdisabled) 12 | return a; 13 | islms=A.isa('lmsscoreboard'); 14 | isteam=A.isa('teamscoreboard'); 15 | isas=A.isa('AssaultScoreboard'); 16 | oldowner = A.Owner; //as we are destroying the actor we still need to know who it's owner was.. 17 | A.Destroy(); 18 | if (isteam) //check which ones we will use..... 19 | { 20 | if (isas) //for time on HUD to show..... 21 | return Spawn( Class'oldskool.asscoreboard', oldowner ); 22 | else 23 | return Spawn( Class'oldskool.oldskoolTeamScoreBoard', oldowner ); 24 | } 25 | else{ //use normal scoreboard 26 | if (islms) //if we're in LMS mode..... 27 | return Spawn( Class'oldskool.oldskoollmsboard', oldowner ); 28 | else 29 | return Spawn( class'UnrealShare.UnrealScoreBoard', oldowner ); } 30 | } 31 | 32 | defaultproperties 33 | { 34 | ActorClass=Class'botpack.TournamentScoreBoard' 35 | } 36 | -------------------------------------------------------------------------------- /Classes/oldhudNotify.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | // to swap HUDS....... 3 | // ============================================================ 4 | 5 | class oldhudNotify expands SpawnNotify; 6 | var bool bdisabled; 7 | simulated event Actor SpawnNotification( Actor A ) 8 | { 9 | if (bdisabled) 10 | return a; 11 | if (a.owner.Isa('spectator')){ 12 | a.destroy();//use spectator HUD for spectators 13 | return Spawn( Class'oldskool.oldskoolspectatorhud', A.Owner ); } 14 | if (a.class.name=='assaultHUD'){ 15 | a.destroy(); 16 | return Spawn( Class'oldskool.oldskoolashud', A.Owner );} 17 | if (a.class.name=='ChallengectfHUD'){ 18 | a.destroy(); 19 | return Spawn( Class'oldskool.realctfhud', A.Owner );} 20 | if (a.class.name=='ChallengeDominationHUD'){ 21 | a.destroy(); 22 | return Spawn( Class'oldskool.oldskooldomHUD', A.Owner );} 23 | if (a.class.name=='ChallengeTeamHUD'){ 24 | a.destroy(); 25 | return Spawn( Class'oldskool.oldskoolTeamHUD', A.Owner );} 26 | 27 | if (a.class.name=='ChallengeHUD'){ //use normal HUD 28 | a.destroy(); 29 | return Spawn( Class'oldskool.oldskoolBASEHUD', A.Owner );} 30 | return a; //custom HUD: use it. 31 | } 32 | 33 | defaultproperties 34 | { 35 | ActorClass=Class'botpack.ChallengeHUD' 36 | } 37 | -------------------------------------------------------------------------------- /Classes/oldskoolHUDConfig.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | //oldskoolhudconfig. configure da oldskool hud 3 | // Psychic_313: FIXME make this save to default properties so it doesn't require that you're using an OS HUD? 4 | // Needs to stay in Oldskool due to circular dependency... 5 | // ============================================================ 6 | 7 | class oldskoolHUDConfig expands UMenuHUDConfigCW; 8 | var uwindowcheckbox realicons, showtalktex, fragiconsp; 9 | function Created() 10 | { 11 | local int ControlWidth, ControlLeft, ControlRight, controloffset; 12 | local int CenterWidth, CenterPos; 13 | local int I, S; 14 | 15 | Super(umenupagewindow).Created(); 16 | 17 | ControlWidth = WinWidth/2.5; 18 | ControlLeft = (WinWidth/2 - ControlWidth)/2; 19 | ControlRight = WinWidth/2 + ControlLeft; 20 | 21 | CenterWidth = (WinWidth/4)*3; 22 | CenterPos = (WinWidth - CenterWidth)/2; 23 | 24 | DesiredWidth = 220; 25 | DesiredHeight = 70; 26 | controloffset=50; 27 | 28 | // HUD Config 29 | HUDConfigSlider = UWindowHSliderControl(CreateControl(class'UWindowHSliderControl', ControlLeft+64, controloffset, ControlWidth-64, 1)); 30 | HUDConfigSlider.SetRange(0, 5, 1); 31 | HUDConfigSlider.SetValue(Root.Console.ViewPort.Actor.myHUD.HUDMode); 32 | HUDConfigSlider.SetText(HUDConfigText); 33 | HUDConfigSlider.SetHelpText(HUDConfigHelp); 34 | HUDConfigSlider.SetFont(F_Normal); 35 | controloffset+=25; 36 | 37 | // Crosshair 38 | CrosshairSlider = UWindowHSliderControl(CreateControl(class'UWindowHSliderControl', CenterPos, controloffset, CenterWidth, 1)); 39 | CrosshairSlider.SetRange(0, 5, 1); 40 | CrosshairSlider.SetValue(oldskoolbasehud(Root.Console.ViewPort.Actor.myHUD).olCrosshair); 41 | CrosshairSlider.SetText(CrosshairText); 42 | CrosshairSlider.SetHelpText(CrosshairHelp); 43 | CrosshairSlider.SetFont(F_Normal); 44 | controloffset+=25; 45 | //talktexture 46 | showtalktex = UWindowCheckBox(CreateControl(class'UWindowCheckBox', CenterPos, controloffset, centerwidth, 1)); 47 | showtalktex.SetText("Show talktexture"); 48 | showtalktex.SethelpText("If checked, the talktexture of players will appear in the HUD, when messages are sent."); 49 | showtalktex.SetFont(F_Normal); 50 | showtalktex.bChecked = oldskoolbasehud(Root.Console.ViewPort.Actor.myHUD).showtalkface; 51 | controloffset+=25; 52 | 53 | //Real-CTF icons 54 | realicons = UWindowCheckBox(CreateControl(class'UWindowCheckBox', CenterPos, controloffset, centerwidth, 1)); 55 | realicons.SetText("Use Real CTF skulls"); 56 | realicons.SethelpText("If checked, the skulls from the Unreal Mod, 'Real CTF', will be used."); 57 | realicons.SetFont(F_Normal); 58 | realicons.bChecked = oldskoolbasehud(Root.Console.ViewPort.Actor.myHUD).realicons; 59 | controloffset+=25; 60 | 61 | //frag in SP.... 62 | fragiconsp = UWindowCheckBox(CreateControl(class'UWindowCheckBox', CenterPos, controloffset, centerwidth, 1)); 63 | fragiconsp.SetText("Show Frag count"); 64 | fragiconsp.SethelpText("Do you want the frag count to display on the HUD in Single Player and co-op?"); 65 | fragiconsp.SetFont(F_Normal); 66 | fragiconsp.bChecked = oldskoolbasehud(Root.Console.ViewPort.Actor.myHUD).showfrag; 67 | if (!Root.Console.ViewPort.Actor.myHUD.Isa('oldskoolhud')) 68 | fragiconsp.hidewindow(); 69 | 70 | 71 | } 72 | function BeforePaint(Canvas C, float X, float Y) //more shtuff...... 73 | { 74 | local int ControlWidth, ControlLeft, ControlRight; 75 | local int CenterWidth, CenterPos; 76 | 77 | ControlWidth = WinWidth/2.5; 78 | ControlLeft = (WinWidth/2 - ControlWidth)/2; 79 | ControlRight = WinWidth/2 + ControlLeft; 80 | 81 | CenterWidth = (WinWidth/4)*3; 82 | CenterPos = (WinWidth - CenterWidth)/2; 83 | 84 | HUDConfigSlider.SetSize(CenterWidth-60, 1); 85 | HUDConfigSlider.SliderWidth = 90; 86 | HUDConfigSlider.WinLeft = CenterPos+60; 87 | 88 | CrosshairSlider.SetSize(CenterWidth, 1); 89 | CrosshairSlider.SliderWidth = 90; 90 | CrosshairSlider.WinLeft = CenterPos; 91 | 92 | CenterWidth = (WinWidth/4)*3; 93 | CenterPos = (WinWidth - CenterWidth)/2; 94 | 95 | fragiconsp.WinLeft = CenterPos; 96 | realicons.WinLeft = CenterPos; 97 | showtalktex.WinLeft = CenterPos; 98 | 99 | 100 | } 101 | function Paint(Canvas C, float X, float Y) //over-ride and add too...... 102 | { 103 | local int ControlWidth, ControlLeft, ControlRight; 104 | local int CenterWidth, CenterPos, CrosshairX; 105 | 106 | ControlWidth = WinWidth/2.5; 107 | ControlLeft = (WinWidth/2 - ControlWidth)/2; 108 | ControlRight = WinWidth/2 + ControlLeft; 109 | 110 | CenterWidth = (WinWidth/4)*3; 111 | CenterPos = (WinWidth - CenterWidth)/2; 112 | 113 | Super(umenupagewindow).Paint(C, X, Y); 114 | 115 | CrosshairX = CenterPos + CenterWidth + 5; 116 | 117 | // DrawCrosshair 118 | if (oldskoolbasehud(GetPlayerOwner().myHUD).olCrosshair==0) 119 | DrawClippedTexture(C, CrosshairX, 75, Texture'Crosshair1'); 120 | else if (oldskoolbasehud(GetPlayerOwner().myHUD).olCrosshair==1) 121 | DrawClippedTexture(C, CrosshairX, 75, Texture'Crosshair2'); 122 | else if (oldskoolbasehud(GetPlayerOwner().myHUD).olCrosshair==2) 123 | DrawClippedTexture(C, CrosshairX, 75, Texture'Crosshair3'); 124 | else if (oldskoolbasehud(GetPlayerOwner().myHUD).olCrosshair==3) 125 | DrawClippedTexture(C, CrosshairX, 75, Texture'Crosshair4'); 126 | else if (oldskoolbasehud(GetPlayerOwner().myHUD).olCrosshair==4) 127 | DrawClippedTexture(C, CrosshairX, 75, Texture'Crosshair5'); 128 | else if (oldskoolbasehud(GetPlayerOwner().myHUD).olCrosshair==5) 129 | DrawClippedTexture(C, CrosshairX, 75, Texture'Crosshair7'); 130 | //hud iconz 131 | if (GetPlayerOwner().myHUD.hudmode==0) 132 | DrawClippedTexture(C, centerpos-10, 5, Texture'unrealshare.hud1'); 133 | else if (GetPlayerOwner().myHUD.hudmode==1) 134 | DrawClippedTexture(C, centerpos-10, 5, Texture'unrealshare.hud2'); 135 | else if (GetPlayerOwner().myHUD.hudmode==2) 136 | DrawClippedTexture(C, centerpos-10, 5, Texture'unrealshare.hud3'); 137 | else if (GetPlayerOwner().myHUD.hudmode==3) 138 | DrawClippedTexture(C, centerpos-10, 5, Texture'unrealshare.hud4'); 139 | else if (GetPlayerOwner().myHUD.hudmode==4) 140 | DrawClippedTexture(C, centerpos-10, 5, Texture'unrealshare.hud5'); 141 | else if (GetPlayerOwner().myHUD.hudmode==5) 142 | DrawClippedTexture(C, centerpos-10, 5, Texture'unrealshare.hud6'); 143 | } 144 | function Notify(UWindowDialogControl C, byte E) 145 | { 146 | super(umenupagewindow).notify(c,e); //stupid thing wouldn't show help then :D 147 | switch(E) 148 | { 149 | case DE_Change: 150 | switch(C) 151 | { 152 | case CrosshairSlider: 153 | CrosshairChanged(); 154 | break; 155 | case HUDConfigSlider: 156 | HUDConfigChanged(); 157 | break; 158 | case showtalktex: 159 | oldskoolbasehud(GetPlayerOwner().myHUD).showtalkface=showtalktex.bchecked; 160 | break; 161 | case realicons: 162 | oldskoolbasehud(GetPlayerOwner().myHUD).realicons=realicons.bchecked; 163 | break; 164 | case fragiconsp: 165 | oldskoolbasehud(GetPlayerOwner().myHUD).showfrag=fragiconsp.bchecked; 166 | break; 167 | } 168 | break; 169 | } 170 | } 171 | function CrosshairChanged() //ol crosshair stuff..... 172 | { 173 | oldskoolbasehud(GetPlayerOwner().myHUD).olCrosshair = int(CrosshairSlider.Value); 174 | } 175 | 176 | defaultproperties 177 | { 178 | } 179 | -------------------------------------------------------------------------------- /Classes/oldskoolTeamScoreBoard.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | // fixes team name bug. 3 | // Psychic_313: unchanged 4 | // ============================================================ 5 | 6 | class oldskoolTeamScoreBoard expands UnrealTeamScoreBoard; 7 | var TournamentGameReplicationInfo OwnerGame; 8 | 9 | var bool bCheckedRegFont; 10 | 11 | function ShowScores( canvas Canvas ) 12 | { 13 | local PlayerReplicationInfo PRI; 14 | local int PlayerCount, I, XOffset; 15 | local int LoopCountTeam[4]; 16 | local float XL, YL, YOffset; 17 | local TeamInfo TI; 18 | OwnerGame = TournamentGameReplicationInfo(PlayerPawn(Owner).GameReplicationInfo); 19 | 20 | if (!bCheckedRegFont && oldskoolbasehud(OwnerHUD) != None) 21 | { 22 | bCheckedRegFont = true; 23 | if (RegFont == Font'WhiteFont') 24 | RegFont = oldskoolbasehud(OwnerHUD).MyFonts.GetMediumFont(Canvas.ClipX); 25 | } 26 | 27 | Canvas.Font = RegFont; 28 | 29 | // Header 30 | DrawHeader(Canvas); 31 | 32 | // Trailer 33 | DrawTrailer(Canvas); 34 | 35 | for ( I=0; I<16; I++ ) 36 | Scores[I] = -500; 37 | 38 | for ( I=0; I<4; I++ ) 39 | PlayerCounts[I] = 0; 40 | 41 | PlayerCount = 0; 42 | for ( i=0; i<32; i++ ) 43 | { 44 | if (PlayerPawn(Owner).GameReplicationInfo.PRIArray[i] != None) 45 | { 46 | PRI = PlayerPawn(Owner).GameReplicationInfo.PRIArray[i]; 47 | if ( !PRI.bIsSpectator || PRI.bWaitingPlayer ) 48 | { 49 | PlayerNames[PlayerCount] = PRI.PlayerName; 50 | TeamNames[PlayerCount] = PRI.TeamName; 51 | Scores[PlayerCount] = PRI.Score; 52 | Teams[PlayerCount] = PRI.Team; 53 | Pings[PlayerCount] = PRI.Ping; 54 | PlayerCount++; 55 | PlayerCounts[PRI.Team]++; 56 | } 57 | } 58 | } 59 | SortScores(PlayerCount); 60 | 61 | for ( I=0; I 0) 85 | { 86 | if ( i % 2 == 1 ) //the % means divide and give remainder..... wow...these Epic guyz can code ;) 87 | XOffset = Canvas.ClipX/8 + Canvas.ClipX/2; 88 | else 89 | XOffset = Canvas.ClipX/8; 90 | if (i - 1 > 0) 91 | YOffset = Canvas.ClipY/4 + PlayerCounts[i - 2] * 16 + 32; 92 | else 93 | YOffset = Canvas.ClipY/4 - 16; 94 | Canvas.DrawColor = TeamColor[i]; 95 | Canvas.SetPos(XOffset, Yoffset); //only thing that had to be changed (don't know why epic did it this way) 96 | Canvas.StrLen(TeamName[i], XL, YL); 97 | Canvas.DrawText(TeamName[i], false); 98 | Canvas.SetPos(XOffset + 96, Yoffset); 99 | Canvas.DrawText(int(OwnerGame.Teams[i].Score), false); 100 | } 101 | } 102 | 103 | Canvas.DrawColor.R = 255; 104 | Canvas.DrawColor.G = 255; 105 | Canvas.DrawColor.B = 255; 106 | } 107 | 108 | defaultproperties 109 | { 110 | } 111 | -------------------------------------------------------------------------------- /Classes/oldskoolashud.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | // an assault HUD...... 3 | // Psychic_313: unchanged 4 | // ============================================================ 5 | 6 | class oldskoolashud expands oldskoolteamhud; 7 | 8 | simulated function DrawFragCount(Canvas Canvas, int X, int Y) 9 | { 10 | local float b; 11 | if ( Canvas.ClipX <= Canvas.ClipX - 256 ) 12 | B = Canvas.ClipY - 128; 13 | else 14 | B = Canvas.ClipY - 192; 15 | DrawTimeAt(Canvas, 2.0, b); 16 | Super.DrawFragCount(Canvas, X, Y); 17 | } 18 | 19 | simulated function DrawTimeAt(Canvas Canvas,float x, float y) 20 | { 21 | local int Minutes, Seconds, d; 22 | if ( PlayerOwner.GameReplicationInfo == None ) 23 | return; 24 | Canvas.DrawColor = RedColor; 25 | Canvas.CurX = X; 26 | Canvas.CurY = Y; 27 | Canvas.Style = Style; 28 | 29 | if ( PlayerOwner.GameReplicationInfo.RemainingTime > 0 ) 30 | { 31 | Minutes = PlayerOwner.GameReplicationInfo.RemainingTime/60; 32 | Seconds = PlayerOwner.GameReplicationInfo.RemainingTime % 60; 33 | } 34 | else 35 | { 36 | Minutes = 0; 37 | Seconds = 0; 38 | } 39 | 40 | if ( Minutes > 0 ) 41 | { 42 | if ( Minutes >= 10 ) 43 | { 44 | d = Minutes/10; 45 | Canvas.DrawTile(Texture'BotPack.HudElements1', 25, 64, d*25, 0, 25.0, 64.0); 46 | Canvas.CurX += 7; 47 | Minutes= Minutes - 10 * d; 48 | } 49 | else 50 | { 51 | Canvas.DrawTile(Texture'BotPack.HudElements1', 25, 64, 0, 0, 25.0, 64.0); 52 | Canvas.CurX += 7; 53 | } 54 | 55 | Canvas.DrawTile(Texture'BotPack.HudElements1', 25, 64, Minutes*25, 0, 25.0, 64.0); 56 | Canvas.CurX += 7; 57 | } else { 58 | Canvas.DrawTile(Texture'BotPack.HudElements1', 25, 64, 0, 0, 25.0, 64.0); 59 | Canvas.CurX += 7; 60 | } 61 | Canvas.CurX -= 4 ; 62 | Canvas.DrawTile(Texture'BotPack.HudElements1', 25, 64, 32, 64, 25.0, 64.0); 63 | Canvas.CurX += 3; 64 | 65 | d = Seconds/10; 66 | Canvas.DrawTile(Texture'BotPack.HudElements1', 25, 64, 25*d, 0, 25.0, 64.0); 67 | Canvas.CurX += 7; 68 | 69 | Seconds = Seconds - 10 * d; 70 | Canvas.DrawTile(Texture'BotPack.HudElements1', 25, 64, 25*Seconds, 0, 25.0, 64.0); 71 | Canvas.CurX += 7; 72 | } 73 | 74 | simulated function bool SpecialIdentify(Canvas Canvas, Actor Other ) //never seems to show..... 75 | { 76 | local float XL, YL; 77 | 78 | if ( !Other.IsA('FortStandard') ) 79 | return false; 80 | 81 | Canvas.Font = MyFonts.GetMediumFont(Canvas.ClipX); 82 | Canvas.DrawColor = RedColor * IdentifyFadeTime * 0.333; 83 | Canvas.StrLen(class'botpack.AssaultHUD'.default.IdentifyAssault, XL, YL); 84 | Canvas.SetPos(Canvas.ClipX/2 - XL/2, Canvas.ClipY - 74); 85 | Canvas.DrawText(class'botpack.AssaultHUD'.default.IdentifyAssault); 86 | 87 | return true; 88 | } 89 | 90 | defaultproperties 91 | { 92 | ServerInfoClass=Class'botpack.ServerInfoAS' 93 | } 94 | -------------------------------------------------------------------------------- /Classes/oldskoolconfigwindow.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | // oldskool.oldskoolconfigwindow: whatever 3 | // ============================================================ 4 | class OldskoolConfigWindow expands UWindowFramedWindow; 5 | /* 6 | function Created() 7 | { 8 | Super.Created(); 9 | SetSize(250, 480); 10 | WinLeft = (Root.WinWidth - WinWidth) / 2; 11 | WinTop = (Root.WinHeight - WinHeight) / 2; 12 | } */ 13 | function Created() 14 | { 15 | bStatusBar = False; 16 | bSizable = True; 17 | 18 | Super.Created(); 19 | 20 | MinWinWidth = 200; 21 | MinWinHeight = 100; 22 | 23 | SetSizePos(); 24 | } 25 | 26 | function SetSizePos() 27 | { 28 | local float W, H; 29 | if(Root.WinHeight < 400) 30 | SetSize(260, Min(Root.WinHeight - 32, H + (LookAndFeel.FrameT.H + LookAndFeel.FrameB.H))); 31 | else 32 | SetSize(260, Min(Root.WinHeight - 50, /*H + (LookAndFeel.FrameT.H + LookAndFeel.FrameB.H)*/480)); 33 | 34 | GetDesiredDimensions(W, H); 35 | 36 | WinLeft = Root.WinWidth/2 - WinWidth/2; 37 | WinTop = Root.WinHeight/2 - WinHeight/2; 38 | } 39 | 40 | function ResolutionChanged(float W, float H) 41 | { 42 | SetSizePos(); 43 | Super.ResolutionChanged(W, H); 44 | } 45 | 46 | function Resized() 47 | { 48 | if(WinWidth != 260) 49 | WinWidth = 260; 50 | 51 | Super.Resized(); 52 | } 53 | 54 | //mem hack 55 | function HideWindow() 56 | { 57 | local uwindowwindow p; 58 | Super.HideWindow(); 59 | p=root.createwindow(class'uwindowwindow',0,0,1,1,self); //holds this in mem. 60 | p.bTransient=true; 61 | p.sendtoback(); 62 | } 63 | 64 | defaultproperties 65 | { 66 | ClientClass=Class'OldSkoolPagesClientWindow' 67 | WindowTitle="Configure OldSkool" 68 | } 69 | -------------------------------------------------------------------------------- /Classes/oldskooldomhud.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | // HUD for domination 3 | // Psychic_313: unchanged 4 | // ============================================================ 5 | 6 | class oldskooldomhud expands oldskoolteamhud; 7 | simulated function PostRender( canvas Canvas ) 8 | { 9 | local int TeamScore; 10 | local int X, Y; 11 | local float XL, YL; 12 | local ControlPoint CP; 13 | local NavigationPoint N; 14 | local Texture CPTexture; 15 | 16 | Super.PostRender( Canvas ); 17 | 18 | if ( TournamentConsole(PlayerPawn(Owner).Player.Console).bShowSpeech == True ) 19 | return; 20 | 21 | X = 0.95*Canvas.ClipX; 22 | Y = Canvas.ClipY-128; 23 | Canvas.Style = Style; 24 | Canvas.Font = MyFonts.GetMediumFont(Canvas.ClipX); 25 | /* 26 | for ( N=Level.NavigationPointList; N!=None; N=N.NextNavigationPoint ) 27 | if ( N.IsA('ControlPoint') ) 28 | { 29 | CP = ControlPoint(N); 30 | if (CP.ControllingTeam != None) 31 | CPTexture = TeamIcon[CP.ControllingTeam.TeamIndex]; 32 | else 33 | CPTexture = texture'I_TeamN'; 34 | 35 | Canvas.DrawColor = whitecolor; 36 | Canvas.SetPos(X,Y); 37 | Canvas.DrawIcon(CPTexture, 1); 38 | Y -= 140; 39 | } 40 | */ 41 | // separate name drawing to reduce texture changes 42 | Y = Canvas.ClipY - 384; 43 | for ( N=Level.NavigationPointList; N!=None; N=N.NextNavigationPoint ) 44 | if ( N.IsA('ControlPoint') ) 45 | { 46 | CP = ControlPoint(N); 47 | if (CP.ControllingTeam != None) 48 | Canvas.DrawColor = TeamColor[CP.ControllingTeam.TeamIndex]; 49 | else 50 | Canvas.DrawColor = WhiteColor; 51 | Canvas.SetPos(0, 0); 52 | Canvas.StrLen(CP.PointName, XL, YL); 53 | Canvas.SetPos(0.99*Canvas.ClipX-XL, Y + 96 - YL); 54 | Canvas.DrawText(CP.PointName); 55 | Y += 16; 56 | } 57 | } 58 | 59 | simulated function bool SpecialIdentify(Canvas Canvas, Actor Other ) 60 | { 61 | local float XL, YL; 62 | 63 | if ( !Other.IsA('ControlPoint') ) 64 | return false; 65 | 66 | Canvas.Font = MyFonts.GetMediumFont(Canvas.ClipX); 67 | Canvas.DrawColor = RedColor; 68 | Canvas.DrawColor.R = 255 * (IdentifyFadeTime / 3.0); 69 | 70 | Canvas.StrLen(ControlPoint(Other).PointName, XL, YL); 71 | Canvas.SetPos(Canvas.ClipX/2 - XL/2, Canvas.ClipY - 74); 72 | Canvas.DrawText(ControlPoint(Other).PointName); 73 | 74 | return true; 75 | } 76 | 77 | defaultproperties 78 | { 79 | ServerInfoClass=Class'botpack.ServerInfoDOM' 80 | } 81 | -------------------------------------------------------------------------------- /Classes/oldskoolhud.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | // oldskool.oldskoolHUD: for green menu h4ck........ and frag counter showing pts. 3 | // Psychic_313: @@@ OLROOT DEPENDENCIES INSIDE 4 | // ============================================================ 5 | 6 | class oldskoolHUD expands oldskoolbaseHUD; 7 | simulated function DisplayMenu( canvas Canvas ) //prevent green menu from showing... 8 | { 9 | local class packclass;//local playerpawn playerowner; 10 | Playerpawn(Owner).bShowMenu = false; 11 | //show uwindow menu 12 | 13 | WindowConsole(Playerpawn(Owner).Player.Console).bQuickKeyEnable = true; //ensures it will then close..... 14 | WindowConsole(Playerpawn(Owner).Player.Console).LaunchUWindow(); //open window..... 15 | if (class'olroot.oldskoolnewgameclientwindow'.default.SelectedPackType!="Custom"&&class'olroot.oldskoolnewgameclientwindow'.default.SelectedPackType!=""){ 16 | packclass=Class(DynamicLoadObject(class'olroot.oldskoolnewgameclientwindow'.default.SelectedPackType, class'Class')); 17 | WindowConsole(Playerpawn(Owner).Player.Console).Root.CreateWindow(PackClass.default.loadmenu, 100, 100, 200, 200); } 18 | else 19 | WindowConsole(Playerpawn(Owner).Player.Console).Root.CreateWindow(class'OldSkoolLoadGameWindow', 100, 100, 200, 200); 20 | } 21 | 22 | 23 | simulated function DrawFragCount(Canvas Canvas, int X, int Y) //to use the scorekeeper's score.... 24 | { 25 | local scorekeeper scoreholder; 26 | scoreholder = scorekeeper(pawn(owner).FindInventoryType(class 'scorekeeper')); 27 | if (scoreholder == None) 28 | DrawFragCountInternal(Canvas, X, Y, false); 29 | else 30 | DrawFragCountInternal(Canvas, X, Y, true, scoreholder.score); 31 | } 32 | 33 | defaultproperties 34 | { 35 | } 36 | -------------------------------------------------------------------------------- /Classes/oldskoollmsboard.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | // coloring for LMS..... 3 | // Psychic_313: unchanged 4 | // ============================================================ 5 | 6 | class oldskoollmsboard expands UnrealScoreBoard; 7 | function DrawScore( canvas Canvas, int I, float XOffset, int LoopCount ) //uses different colors for out dudes... 8 | { 9 | local int Step; 10 | local color LightCyanColor, GoldColor; 11 | LightCyanColor.R=128; 12 | LightCyanColor.G=255; 13 | LightCyanColor.B=255; //set color....... 14 | GoldColor.R=255; 15 | GoldColor.G=255; 16 | GoldColor.B=255; 17 | 18 | if (Canvas.ClipX >= 640) 19 | Step = 16; 20 | else 21 | Step = 8; 22 | 23 | Canvas.SetPos(Canvas.ClipX/4 * 3, Canvas.ClipY/4 + (LoopCount * Step)); 24 | 25 | if(Scores[I] >= 100.0) 26 | Canvas.CurX -= 6.0; 27 | if(Scores[I] >= 10.0) 28 | Canvas.CurX -= 6.0; 29 | if(Scores[I] < 1.0) 30 | Canvas.DrawColor = LightCyanColor; 31 | else 32 | Canvas.DrawColor = GoldColor; 33 | if(Scores[I] < 0.0) 34 | Canvas.CurX -= 6.0; 35 | Canvas.DrawText(int(Scores[I]), false); 36 | } 37 | 38 | defaultproperties 39 | { 40 | } 41 | -------------------------------------------------------------------------------- /Classes/oldskoolspclient.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | // oldskool.oldskoolspclient: the SP mutator client based on oldskool client....:D 3 | // ============================================================ 4 | 5 | class oldskoolspclient expands UMenuPageWindow; 6 | 7 | var UWindowCheckBox 8 | item1, 9 | item2, 10 | item3, 11 | item4, 12 | item5, 13 | item6, 14 | item7, 15 | item8, 16 | item9, 17 | item13, 18 | item14, 19 | item15, 20 | item16, 21 | item17, 22 | item19, 23 | item21, 24 | Pause, 25 | SpTaunt, 26 | Aircon, 27 | PermaCarc, 28 | PermaDec; 29 | 30 | var localized string warnhelp; 31 | function Created() 32 | { 33 | Super.Created(); 34 | item1 = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 10, 210, 1)); 35 | item1.SetText("Automag to Enforcer"); 36 | item1.SetHelpText(warnhelp$" Furthermore, Liandri will confiscate one enforcer if you have two of them, upon entering a new level."); 37 | item1.SetFont(F_Normal); 38 | item1.Align = TA_Left; 39 | item1.bChecked = class'Oldskool.spoldskool'.default.bMag; 40 | 41 | item2 = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 28, 210, 1)); 42 | item2.SetText("UT BioRifle"); 43 | item2.SetHelpText(warnhelp); 44 | item2.SetFont(F_Normal); 45 | item2.Align = TA_Left; 46 | item2.bChecked = class'Oldskool.spoldskool'.default.bBioRifle; 47 | 48 | item3 = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 46, 210, 1)); 49 | item3.SetText("Change ASMD into ShockRifle"); 50 | item3.SetFont(F_Normal); 51 | item3.Align = TA_Left; 52 | item3.bChecked = class'Oldskool.spoldskool'.default.bASMD; 53 | 54 | item4 = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 64, 210, 1)); 55 | item4.SetText("Change Stinger into Pulse Gun"); 56 | item4.SetHelpText(warnhelp); 57 | item4.SetFont(F_Normal); 58 | item4.Align = TA_Left; 59 | item4.bChecked = class'Oldskool.spoldskool'.default.bStingy; 60 | 61 | item5 = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10,82, 210, 1)); 62 | item5.SetText("Change Razorjack into Ripper"); 63 | item5.SetHelpText(warnhelp); 64 | item5.SetFont(F_Normal); 65 | item5.Align = TA_Left; 66 | item5.bChecked = class'Oldskool.spoldskool'.default.bRazor; 67 | 68 | item6 = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10,98, 210, 1)); 69 | item6.SetText("UT minigun"); 70 | item6.SetFont(F_Normal); 71 | item6.Align = TA_Left; 72 | item6.bChecked = class'Oldskool.spoldskool'.default.bmini; 73 | 74 | item7 = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 116, 210, 1)); 75 | item7.SetText("UT Flak Cannon"); 76 | item7.SetHelpText(warnhelp); 77 | item7.SetFont(F_Normal); 78 | item7.Align = TA_Left; 79 | item7.bChecked = class'Oldskool.spoldskool'.default.bFlak; 80 | 81 | item8 = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 134, 210, 1)); 82 | item8.SetText("Change Eightball into Rocket Launcher"); 83 | item8.SetFont(F_Normal); 84 | item8.Align = TA_Left; 85 | item8.bChecked = class'Oldskool.spoldskool'.default.bEball; 86 | 87 | item9 = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 152, 210, 1)); 88 | item9.SetText("UT Sniper Rifle"); 89 | item9.SetFont(F_Normal); 90 | item9.Align = TA_Left; 91 | item9.bChecked = class'Oldskool.spoldskool'.default.bRifle; 92 | 93 | item13 = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 170, 210, 1)); 94 | item13.SetText("UT Jumpboots"); 95 | item13.SetFont(F_Normal); 96 | item13.Align = TA_Left; 97 | item13.bChecked = class'Oldskool.spoldskool'.default.bJump; 98 | 99 | item14 = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 188, 210, 1)); 100 | item14.SetText("Amplifier to Udamage"); 101 | item14.SetHelpText(warnhelp$" Note that this damage only will last 9 seconds..."); 102 | item14.SetFont(F_Normal); 103 | item14.Align = TA_Left; 104 | item14.bChecked = class'Oldskool.spoldskool'.default.bdamage; 105 | 106 | item15 = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 206, 210, 1)); 107 | item15.SetText("Kevlar Suit to Thigh Pads"); 108 | item15.SetFont(F_Normal); 109 | item15.Align = TA_Left; 110 | item15.bChecked = class'Oldskool.spoldskool'.default.bpad; 111 | 112 | item16 = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 224, 210, 1)); 113 | item16.SetText("UT Megahealth"); 114 | item16.SetFont(F_Normal); 115 | item16.Align = TA_Left; 116 | item16.bChecked = class'Oldskool.spoldskool'.default.bmegahealth; 117 | 118 | item17 = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 242, 210, 1)); 119 | item17.SetText("UT Armor"); 120 | item17.SetFont(F_Normal); 121 | item17.Align = TA_Left; 122 | item17.bChecked = class'Oldskool.spoldskool'.default.barmor; 123 | 124 | item19 = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10,260, 210, 1)); 125 | item19.SetText("UT shieldbelts"); 126 | item19.SetFont(F_Normal); 127 | item19.Align = TA_Left; 128 | item19.bChecked = class'Oldskool.spoldskool'.default.bshield; 129 | 130 | 131 | item21 = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10,278, 210, 1)); 132 | item21.SetText("UT HealthPack"); 133 | item21.SetFont(F_Normal); 134 | item21.Align = TA_Left; 135 | item21.bChecked = class'Oldskool.spoldskool'.default.bmed; 136 | SpTaunt = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 296, 210, 1)); 137 | SpTaunt.SetText("SinglePlayer Auto-Taunt"); 138 | SpTaunt.SethelpText("If checked, a taunt will be played when you defeat an enemy in SinglePlayer. Also, headshot messages will appear if you headshot an enemy. Does not apply to coop"); 139 | SpTaunt.SetFont(F_Normal); 140 | SpTaunt.Align = TA_Left; 141 | SpTaunt.bChecked = class'singleplayer2'.default.SpTaunts; 142 | Pause = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 314, 210, 1)); 143 | Pause.SetText("Load w/ Pause"); 144 | Pause.SethelpText("If checked, the game will be paused after loading a saved game"); 145 | Pause.SetFont(F_Normal); 146 | Pause.Align = TA_Left; 147 | Pause.bChecked = class'singleplayer2'.default.Pause; 148 | AirCon = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 332, 210, 1)); 149 | AirCon.SetText("Un&r&e&a&l Air Control"); 150 | AirCon.SethelpText("If checked, the game will have very little air control, as unreal did. Thus is always false for Legacy. Please note that some maps may require that this is true and others wish it to be false."); 151 | AirCon.SetFont(F_Normal); 152 | AirCon.Align = TA_Left; 153 | AirCon.bChecked = class'spoldskool'.default.UnAir; 154 | PermaCarc = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 350, 210, 1)); 155 | PermaCarc.SetText("Permanent Carcasses"); 156 | PermaCarc.SethelpText("If checked, carcasses will remain until destroyed."); 157 | PermaCarc.SetFont(F_Normal); 158 | PermaCarc.Align = TA_Left; 159 | PermaCarc.bChecked = class'olcreaturecarcass'.default.PermaCarcass; 160 | PermaDec = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 368, 210, 1)); 161 | PermaDec.SetText("Permanent Decals"); 162 | PermaDec.SethelpText("If checked, decals will remain forever in the level."); 163 | PermaDec.SetFont(F_Normal); 164 | PermaDec.Align = TA_Left; 165 | PermaDec.bChecked = class'spoldskool'.default.PermaDecals; 166 | DesiredWidth = 220; 167 | DesiredHeight = 388; 168 | } 169 | 170 | function Notify(UWindowDialogControl C, byte E) 171 | { 172 | Super.Notify(C, E); 173 | switch(E) { 174 | case DE_Change: 175 | switch(C) { 176 | 177 | case item1: 178 | 179 | class'Oldskool.spoldskool'.default.bMag = item1.bChecked; 180 | class'Oldskool.spoldskool'.static.StaticSaveConfig(); 181 | 182 | break; 183 | case item2: 184 | 185 | class'Oldskool.spoldskool'.default.bBioRifle = item2.bChecked; 186 | class'Oldskool.spoldskool'.static.StaticSaveConfig(); 187 | break; 188 | case item3: 189 | 190 | class'Oldskool.spoldskool'.default.bASMD = item3.bChecked; 191 | 192 | class'Oldskool.spoldskool'.static.StaticSaveConfig(); 193 | 194 | break; 195 | case item4: 196 | 197 | class'Oldskool.spoldskool'.default.bStingy = item4.bChecked; 198 | 199 | class'Oldskool.spoldskool'.static.StaticSaveConfig(); 200 | 201 | break; 202 | case item5: 203 | class'Oldskool.spoldskool'.default.bRazor = item5.bChecked; 204 | class'Oldskool.spoldskool'.static.StaticSaveConfig(); 205 | break; 206 | case item6: 207 | class'Oldskool.spoldskool'.default.bmini = item6.bChecked; 208 | class'Oldskool.spoldskool'.static.StaticSaveConfig(); 209 | break; 210 | case item7: 211 | class'Oldskool.spoldskool'.default.bFlak = item7.bChecked; 212 | class'Oldskool.spoldskool'.static.StaticSaveConfig(); 213 | break; 214 | case item8: 215 | class'Oldskool.spoldskool'.default.bEball = item8.bChecked; 216 | class'Oldskool.spoldskool'.static.StaticSaveConfig(); 217 | break; 218 | case item9: 219 | class'Oldskool.spoldskool'.default.bRifle = item9.bChecked; 220 | class'Oldskool.spoldskool'.static.StaticSaveConfig(); 221 | break; 222 | case item13: 223 | class'Oldskool.spoldskool'.default.bjump = item13.bChecked; 224 | class'Oldskool.spoldskool'.static.StaticSaveConfig(); 225 | break; 226 | case item14: 227 | class'Oldskool.spoldskool'.default.bdamage = item14.bChecked; 228 | class'Oldskool.spoldskool'.static.StaticSaveConfig(); 229 | break; 230 | case item15: 231 | class'Oldskool.spoldskool'.default.bpad = item15.bChecked; 232 | class'Oldskool.spoldskool'.static.StaticSaveConfig(); 233 | break; 234 | case item16: 235 | class'Oldskool.spoldskool'.default.bmegahealth = item16.bChecked; 236 | class'Oldskool.spoldskool'.static.StaticSaveConfig(); 237 | break; 238 | case item17: 239 | class'Oldskool.spoldskool'.default.barmor = item17.bChecked; 240 | class'Oldskool.spoldskool'.static.StaticSaveConfig(); 241 | break; 242 | 243 | case item19: 244 | 245 | class'Oldskool.spoldskool'.default.bshield = item19.bChecked; 246 | class'Oldskool.spoldskool'.static.StaticSaveConfig(); 247 | break; 248 | 249 | case item21: 250 | class'Oldskool.spoldskool'.default.bmed = item21.bChecked; 251 | class'Oldskool.spoldskool'.static.StaticSaveConfig(); 252 | break; 253 | Case Pause: 254 | class'singleplayer2'.default.Pause=Pause.bChecked; 255 | class'singleplayer2'.static.staticSaveConfig(); 256 | break; 257 | case SPTaunt: 258 | class'singleplayer2'.default.SpTaunts=SpTaunt.bChecked; 259 | class'singleplayer2'.static.staticSaveConfig(); 260 | if (getlevel().game!=none&&Getlevel().game.isa('singleplayer2')) 261 | singleplayer2(getlevel().game).SpTaunts=SpTaunt.bChecked; 262 | break; 263 | case AirCon: 264 | class'spoldskool'.default.UnAir=AirCon.bChecked; 265 | class'spoldskool'.static.staticSaveConfig(); 266 | if (getlevel().game!=none&&Getlevel().game.isa('singleplayer2')&&!GetLevel().Game.isa('LegacySP')&&!GetLevel().Game.Isa('tvsp')){ 267 | if (AirCon.bchecked) 268 | getPlayerOwner().aircontrol=class'pawn'.default.aircontrol; 269 | else 270 | getPlayerOwner().aircontrol=getPlayerOwner().default.aircontrol; 271 | } 272 | break; 273 | case PermaCarc: 274 | class'olcreaturecarcass'.default.PermaCarcass=PermaCarc.bChecked; 275 | class'olcreaturecarcass'.static.StaticSaveConfig(); 276 | break; 277 | case PermaDec: 278 | class'spoldskool'.default.PermaDEcals=PermaDec.bChecked; 279 | class'spoldskool'.static.StaticSaveConfig(); 280 | break; 281 | } 282 | break; 283 | } 284 | } 285 | 286 | defaultproperties 287 | { 288 | warnhelp="Warning: Enabling this may be considered cheating." 289 | } 290 | -------------------------------------------------------------------------------- /Classes/oldskoolteamhud.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | // team hud with real ctf enhancements..... 3 | // Psychic_313: unchanged 4 | // ============================================================ 5 | 6 | class oldskoolteamhud expands oldskoolbaseHUD; 7 | // RealTeamHUD 8 | #exec TEXTURE IMPORT NAME=I_RealRedSkull FILE=TEXTURES\I_RealRedSkull.PCX GROUP="Icons" MIPS=OFF 9 | #exec TEXTURE IMPORT NAME=I_RealBlueSkull FILE=TEXTURES\I_RealBlueSkull.PCX GROUP="Icons" MIPS=OFF 10 | var bool bTraceIdentify; 11 | 12 | //reduction of iterators.... 13 | simulated function DrawTeamGameSynopsis(Canvas Canvas) 14 | { 15 | local TeamInfo TI; 16 | local float XL, YL; 17 | local TournamentGameReplicationInfo GRI; 18 | local int i; 19 | 20 | if (class==class'realctfhud') //dont do this for CTF (scores on right side) 21 | return; 22 | GRI = TournamentGameReplicationInfo(PlayerOwner.GameReplicationInfo); 23 | if ( GRI != None ){ 24 | for ( i=0 ;i<4; i++ ) 25 | { 26 | Ti=GRI.Teams[i]; 27 | if (TI.Size > 0) 28 | { 29 | Canvas.Font = MyFonts.GetMediumFont(Canvas.ClipX); 30 | Canvas.DrawColor = TeamColor[TI.TeamIndex]; 31 | Canvas.StrLen(TeamName[TI.TeamIndex], XL, YL); 32 | Canvas.SetPos(0, Canvas.ClipY - 128 + 16 * TI.TeamIndex); 33 | Canvas.DrawText(TeamName[TI.TeamIndex], false); 34 | Canvas.SetPos(XL, Canvas.ClipY - 128 + 16 * TI.TeamIndex); 35 | Canvas.DrawText(int(TI.Score), false); 36 | } 37 | } 38 | } 39 | Canvas.DrawColor.R = 255; 40 | Canvas.DrawColor.G = 255; 41 | Canvas.DrawColor.B = 255; 42 | } 43 | final simulated function int OwnerTeam() 44 | { 45 | local byte Team; 46 | local Pawn p; 47 | 48 | Team = 255; 49 | p = Pawn(Owner); 50 | if (p != none) { 51 | if (p.PlayerReplicationInfo != none) { 52 | Team = p.PlayerReplicationInfo.Team; 53 | } 54 | } 55 | return(Team); 56 | } 57 | simulated function bool TraceIdentify(canvas Canvas) 58 | { 59 | local actor Other; 60 | local vector HitLocation, HitNormal, X, Y, Z, StartTrace, EndTrace; 61 | local PlayerPawn ppOwner; 62 | 63 | ppOwner = PlayerPawn(Owner); 64 | StartTrace = Owner.Location; 65 | StartTrace.Z += ppOwner.BaseEyeHeight; 66 | 67 | EndTrace = StartTrace + vector(ppOwner.ViewRotation) * 1000.0; 68 | 69 | Other = Trace(HitLocation, HitNormal, EndTrace, StartTrace, true); 70 | 71 | if (Other != none) { 72 | if ( (Pawn(Other) != None) && (Pawn(Other).bIsPlayer) ) 73 | { 74 | IdentifyTarget = Pawn(Other); 75 | IdentifyFadeTime = 3.0; 76 | } 77 | } 78 | else if ( (Other != None) && SpecialIdentify(Canvas, Other) ) 79 | return false; //we can leave here... 80 | if ( IdentifyFadeTime == 0.0 ) { 81 | bTraceIdentify = false; 82 | } else if ( (IdentifyTarget == None) || (!IdentifyTarget.bIsPlayer) || 83 | (IdentifyTarget.PlayerReplicationInfo == None )) { 84 | bTraceIdentify = false; 85 | } else if (IdentifyTarget.bHidden) { 86 | if (ppOwner.GameReplicationInfo.bTeamGame && 87 | (IdentifyTarget.PlayerReplicationInfo.Team == 88 | ppOwner.PlayerReplicationInfo.Team)) { 89 | // Invisible teammates are identified 90 | bTraceIdentify = true; 91 | } else { 92 | bTraceIdentify = false; 93 | } 94 | } else { 95 | bTraceIdentify = true; 96 | } 97 | 98 | return(bTraceIdentify); 99 | } 100 | 101 | simulated function bool SpecialIdentify(Canvas Canvas, Actor Other ) //for DOM 102 | { 103 | return false; 104 | } 105 | function DrawTalkFace(Canvas Canvas, float YPos) //draw the face..... (with team stuff) 106 | { 107 | if ( Hudmode<5 ) 108 | { 109 | Canvas.Style = ERenderStyle.STY_Normal; 110 | Canvas.SetPos(armoroffset, 4); 111 | Canvas.DrawColor = FaceTeam; 112 | Canvas.DrawTile(texture'botpack.LadrStatic.Static_a00',Ypos + 7, YPos + 7, 0-faceareaoffset, 0, texture'FacePanel1'.USize-faceareaoffset, texture'FacePanel1'.VSize); 113 | Canvas.DrawColor = WhiteColor; 114 | Canvas.Style = ERenderStyle.STY_Normal; 115 | Canvas.SetPos(armoroffset, 4); 116 | Canvas.DrawTile(FaceTexture, Ypos-1, YPos - 1, 0-faceareaoffset, 0, FaceTexture.USize-faceareaoffset, FaceTexture.VSize); 117 | Canvas.Style = ERenderStyle.STY_Translucent; 118 | Canvas.DrawColor = FaceColor; 119 | Canvas.SetPos(armoroffset, 0); 120 | Canvas.DrawTile(texture'botpack.LadrStatic.Static_a00',Ypos + 7, YPos + 7, 0-faceareaoffset, 0, texture'botpack.LadrStatic.Static_a00'.USize-faceareaoffset, texture'botpack.LadrStatic.Static_a00'.VSize); 121 | Canvas.DrawColor = WhiteColor; 122 | } 123 | } 124 | 125 | final simulated function DrawSkull(Canvas Canvas, int X, int Y, texture SkullTexture, optional bool bDrawRed) 126 | { 127 | local int iScore; 128 | 129 | Canvas.SetPos(X,Y); 130 | Canvas.DrawIcon(SkullTexture, Scale); 131 | Canvas.CurX -= 19 * Scale; 132 | Canvas.CurY += 23 * Scale; 133 | Canvas.Font = MyFonts.GetSmallFont(Canvas.ClipX); 134 | 135 | iScore = 0; 136 | if (Owner.IsA('playerPawn')) { 137 | if (PawnOwner.PlayerReplicationInfo != none) { 138 | iScore = PawnOwner.PlayerReplicationInfo.Score; 139 | } 140 | } 141 | // TODO: Scale CurX 142 | if (iScore<100) Canvas.CurX+=6; 143 | if (iScore<10) Canvas.CurX+=6; 144 | if (iScore<0) Canvas.CurX-=6; 145 | 146 | if (bDrawRed) { 147 | Canvas.DrawColor.G = 0; 148 | Canvas.DrawColor.B = 0; 149 | } 150 | Canvas.DrawText(iScore,False); 151 | if (bDrawRed) { 152 | Canvas.DrawColor.G = 255; 153 | Canvas.DrawColor.B = 255; 154 | } 155 | } 156 | simulated function DrawIdentifyInfo(canvas Canvas, float PosX, float PosY) 157 | { 158 | local float XL, YL, XOffset; 159 | 160 | if (!TraceIdentify(Canvas)) 161 | return; 162 | 163 | Canvas.Font = MyFonts.GetMediumFont(Canvas.ClipX); 164 | Canvas.Style = 3; 165 | 166 | XOffset = 0.0; 167 | Canvas.StrLen(IdentifyName$": "$IdentifyTarget.PlayerReplicationInfo.PlayerName, XL, YL); 168 | XOffset = Canvas.ClipX/2 - XL/2; 169 | Canvas.SetPos(XOffset, Canvas.ClipY - 74); 170 | 171 | if(IdentifyTarget.PlayerReplicationInfo.PlayerName != "") 172 | { 173 | SetDrawColor(Canvas,IdentifyTarget.PlayerReplicationInfo.Team,2,IdentifyFadeTime); 174 | Canvas.StrLen(IdentifyName$": ", XL, YL); 175 | XOffset += XL; 176 | Canvas.DrawText(IdentifyName$": "); 177 | Canvas.SetPos(XOffset, Canvas.ClipY - 74); 178 | 179 | SetDrawColor(Canvas,IdentifyTarget.PlayerReplicationInfo.Team,1,IdentifyFadeTime); 180 | Canvas.StrLen(IdentifyTarget.PlayerReplicationInfo.PlayerName, XL, YL); 181 | Canvas.DrawText(IdentifyTarget.PlayerReplicationInfo.PlayerName); 182 | } 183 | 184 | XOffset = 0.0; 185 | Canvas.StrLen(IdentifyHealth$": "$IdentifyTarget.Health, XL, YL); 186 | XOffset = Canvas.ClipX/2 - XL/2; 187 | Canvas.SetPos(XOffset, Canvas.ClipY - 64); 188 | 189 | if (PlayerPawn(Owner).GameReplicationInfo.bTeamGame && 190 | (Pawn(Owner).PlayerReplicationInfo.Team == IdentifyTarget.PlayerReplicationInfo.Team)) { 191 | SetDrawColor(Canvas,IdentifyTarget.PlayerReplicationInfo.Team,2,IdentifyFadeTime); 192 | Canvas.StrLen(IdentifyHealth$": ", XL, YL); 193 | XOffset += XL; 194 | Canvas.DrawText(IdentifyHealth$": "); 195 | Canvas.SetPos(XOffset, Canvas.ClipY - 64); 196 | 197 | SetDrawColor(Canvas,IdentifyTarget.PlayerReplicationInfo.Team,1,IdentifyFadeTime); 198 | Canvas.StrLen(IdentifyTarget.Health, XL, YL); 199 | Canvas.DrawText(IdentifyTarget.Health); 200 | } 201 | 202 | Canvas.Style = 1; 203 | Canvas.DrawColor.R = 255; 204 | Canvas.DrawColor.G = 255; 205 | Canvas.DrawColor.B = 255; 206 | } 207 | simulated function DrawFragCount(Canvas Canvas, int X, int Y) 208 | { 209 | local texture SkullTexture; 210 | if (realicons) 211 | Skulltexture = texture'realskull'; 212 | else 213 | SkullTexture = texture'IconSkull'; //default....... 214 | switch (ownerTeam()) { 215 | case 0: 216 | if (realicons) 217 | SkullTexture = Texture'I_RealRedSkull'; 218 | else 219 | SkullTexture = Texture'redskull'; 220 | break; 221 | case 1: 222 | if (realicons) 223 | SkullTexture = Texture'I_RealBlueSkull'; 224 | else 225 | Skulltexture = Texture'blueskull'; 226 | break; 227 | case 2: 228 | SkullTexture = texture'GreenSkull'; //normal skullz for these colors..... (no realctf versions) 229 | break; 230 | case 3: 231 | SkullTexture = texture'YellowSkull'; 232 | break; 233 | } 234 | If (pawnowner.PlayerReplicationInfo.Team!=255||!realicons) 235 | DrawSkull(Canvas, X, Y, SkullTexture); 236 | else 237 | DrawSkull(Canvas, X, Y, SkullTexture, true); 238 | 239 | } 240 | 241 | defaultproperties 242 | { 243 | ServerInfoClass=Class'botpack.ServerInfoTeam' 244 | } 245 | -------------------------------------------------------------------------------- /Classes/olpawnshadow.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | // oldskool.olPawnShadow: By UsAaR33 (well, ripped from playershadow and modified :P 3 | // shadows for scripted pawns (not skaarj trooper though). 4 | // Why can't I use playershadow and update? It only works if the owner is a player. I still have yet to figure out what L is... 5 | // Unfortunately, lighting data is lossed making the shadows a little less 1337 :( 6 | // Psychic_313: unchanged. I don't know this stuff :-) 7 | // ============================================================ 8 | 9 | class olpawnshadow expands Decal; 10 | var vector OldOwnerLocation; 11 | //var vector offset; 12 | var float lastanimframe; //stasis check 13 | var bool timing; //check if timeing. 14 | simulated event PostBeginPlay() 15 | { 16 | drawscale=0.028*owner.collisionradius; //I'm basing this kinda on the playerpawn one :P 17 | if (owner.isa('ledino')||owner.isa('nali')||owner.isa('slith')) //too big on dinos, sliths and nalis! 18 | drawscale*=0.75; 19 | //if (owner.isa('ledino')) 20 | //offset=vect(-40,0,0); 21 | } 22 | simulated function bool CheckRender(){ 23 | local bool bRetVal; 24 | if (lastanimframe==0) 25 | bRetVal=false; 26 | else 27 | bretval=(lastanimframe!=owner.animframe); 28 | lastanimframe=owner.animframe; 29 | return bRetVal; 30 | } 31 | simulated event timer(){ 32 | local pawn p; 33 | owner.style=owner.default.style; 34 | /*( for (p=level.pawnlist;p!=none;p=p.nextpawn) 35 | if (p.isa('playerpawn')){ 36 | p.clientmessage(owner@"reset to normal at"@level.timeseconds@"with anim"@owner.animsequence); 37 | return; 38 | } 39 | */ 40 | } 41 | simulated event tick(float delta) 42 | { 43 | local Actor HitActor; 44 | local Vector HitNormal,HitLocation, ShadowStart; 45 | local bool oldfog; 46 | //masked stuff? 47 | if (!timing&&owner.style==STY_MASKED&&owner.default.style==STY_NORMAL&&(level.game==none||level.game.gamereplicationinfo.priarray[0]!=none&&(/*owner.isa('slith')||*/owner.isa('SkaarjWarrior'))&&!owner.IsInState('startup')&&(owner.bstasis||!owner.IsInState('waiting'))&&owner.PlayerCanSeeMe())&&CheckRender()/*&&owner.IsAnimating()&&(owner.bviewtarget||owner.PlayCanSeeMe())&&owner.RenderInterface!=none&&owner.RenderInterface.Observer!=none*/){ 48 | timing=true; 49 | SetTimer(0.08,false); 50 | //owner.style=owner.default.style; 51 | //bstasis=false; 52 | } 53 | //owner.style=owner.default.style; 54 | if ( OldOwnerLocation == Owner.Location ) 55 | return; 56 | 57 | OldOwnerLocation = Owner.Location; 58 | 59 | DetachDecal(); 60 | if ( !Level.bHighDetailMode ) 61 | return; 62 | if ( Owner.Style == STY_Translucent ) 63 | return; 64 | if (owner.isa('skaarj')&&owner.AnimSequence == 'Death2') //feign death. 65 | return; 66 | ShadowStart = Owner.Location +/*offset+ */Owner.CollisionRadius * vect(0.1,0.1,0); 67 | HitActor = Trace(HitLocation, HitNormal, ShadowStart - vect(0,0,300), ShadowStart, false); 68 | 69 | if ( HitActor == None ) 70 | return; 71 | 72 | SetLocation(HitLocation); 73 | SetRotation(rotator(HitNormal)); 74 | oldfog=region.zone.bfogzone; //ignore fog zone. 75 | region.zone.bfogzone=false; 76 | AttachDecal(10, vect(0.1,0.1,0)); 77 | region.zone.bfogzone=oldfog; 78 | } 79 | 80 | defaultproperties 81 | { 82 | MultiDecalLevel=3 83 | Texture=Texture'botpack.energymark' 84 | DrawScale=0.50 85 | } 86 | -------------------------------------------------------------------------------- /Classes/oneday.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | // oldskool.oneday: for "One Day" 3 | // ============================================================ 4 | 5 | class oneday expands mappack; 6 | 7 | #exec TEXTURE IMPORT NAME=DayShot FILE=Textures\DayShot.pcx MIPS=OFF 8 | 9 | defaultproperties 10 | { 11 | Maps(0)=dawn 12 | Maps(1)=dusk 13 | Maps(2)=Eve 14 | Maps(3)=Night 15 | Maps(4)=Noon 16 | Maps(5)=Nightfall 17 | Author="Chris Burgess" 18 | Title="One Day" 19 | Screenshot=Texture'DayShot' 20 | } 21 | -------------------------------------------------------------------------------- /Classes/origUnreal.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | // oldskool.origUnreal: The unreal map pack...... 3 | // ============================================================ 4 | 5 | class origUnreal expands mappack; 6 | #exec TEXTURE IMPORT NAME=UnrealShot FILE=Textures\unrealshot.pcx MIPS=OFF 7 | 8 | defaultproperties 9 | { 10 | creditswindow=Class'unrealCreditsWindow' 11 | Maps(0)=Vortex2 12 | Maps(1)=ceremony 13 | Maps(2)=chizra 14 | Maps(3)=dark 15 | Maps(4)=DasaCellars 16 | Maps(5)=DasaPass 17 | Maps(6)=dcrater 18 | Maps(7)=dig 19 | Maps(8)=DknightOp 20 | Maps(9)=dug 21 | Maps(10)=EndGame 22 | Maps(11)=Entry 23 | Maps(12)=Extremelab 24 | Maps(13)=ExtremeEnd 25 | Maps(14)=ExtremeGen 26 | Maps(15)=ExtremeBeg 27 | Maps(16)=ExtremeCore 28 | Maps(17)=ExtremeDark 29 | Maps(18)=ExtremeDGen 30 | Maps(19)=Gateway 31 | Maps(20)=Harobed 32 | Maps(21)=IsvDeck1 33 | Maps(22)=IsvKran4 34 | Maps(23)=Isvkran32 35 | Maps(24)=NaliBoat 36 | Maps(25)=NaliC 37 | Maps(26)=NaliLord 38 | Maps(27)=Noork 39 | Maps(28)=Nyleve 40 | Maps(29)=Passage 41 | Maps(30)=Queenend 42 | Maps(31)=ruins 43 | Maps(32)=skybase 44 | Maps(33)=skycaves 45 | Maps(34)=SkyTown 46 | Maps(35)=SpireVillage 47 | Maps(36)=TerraLift 48 | Maps(37)=Terraniux 49 | Maps(38)=TheSunspire 50 | Maps(39)=Trench 51 | Maps(40)=Unreal 52 | Maps(41)=VeloraEnd 53 | Maps(42)=Bluff 54 | Author="Epic MegaGames & Digital Extremes" 55 | Title="Original Unreal Episode" 56 | FlyBy="Unreal.Unr" 57 | Screenshot=Texture'UnrealShot' 58 | } 59 | -------------------------------------------------------------------------------- /Classes/peril.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | // oldskool.peril: for Peril Ut.... 3 | // ============================================================ 4 | 5 | class peril expands mappack; 6 | #exec TEXTURE IMPORT NAME=perilShot FILE=Textures\perilShot.pcx MIPS=OFF 7 | 8 | defaultproperties 9 | { 10 | Maps(0)=pml1 11 | Maps(1)=pml2 12 | Maps(2)=pml3 13 | Maps(3)=pml4 14 | Maps(4)=pml5 15 | Maps(5)=pmlend 16 | Author="Team 86" 17 | Title="2113: Peril on Mars" 18 | Screenshot=Texture'perilShot' 19 | } 20 | -------------------------------------------------------------------------------- /Classes/playbutton.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | // playbutton. A button with the play icon on it :D 3 | // ============================================================ 4 | 5 | class playbutton expands UWindowSmallButton; 6 | 7 | #exec TEXTURE IMPORT NAME=BluePlay FILE=Textures\blueplay.pcx GROUP="Icons" MIPS=OFF 8 | #exec TEXTURE IMPORT NAME=MetalPlay FILE=Textures\metalplay.pcx GROUP="Icons" MIPS=OFF 9 | #exec TEXTURE IMPORT NAME=Goldplay FILE=Textures\goldplay.pcx GROUP="Icons" MIPS=OFF 10 | //use the look and feels...... 11 | function Paint(Canvas C, float X, float Y) 12 | { 13 | local float K; 14 | local texture drawtex; 15 | 16 | if(bDisabled) 17 | K = 34; 18 | else 19 | if(bMouseDown) 20 | K = 17; 21 | else 22 | k = 0; 23 | if (lookandfeel.Isa('UMenuBlueLookAndFeel')) //I.D. look and feels and set accordingly.... 24 | drawtex=Texture'Blueplay'; 25 | else if (lookandfeel.Isa('UMenuMetalLookAndFeel')) 26 | drawtex=Texture'metalplay'; 27 | else //gold or some custom one.... 28 | drawtex=Texture'goldplay'; 29 | 30 | DrawStretchedTextureSegment(C, 0, 0, 3, 16, 0, K, 3, 16, drawtex); //ripped from the look and feel's 31 | DrawStretchedTextureSegment(C, WinWidth - 3, 0, 3, 16, 45, K, 3, 16, drawtex); 32 | DrawStretchedTextureSegment(C, 3, 0, WinWidth-6, 16, 3, k, 42, 16, drawtex); 33 | Super(uwindowbutton).Paint(C, X, Y); 34 | } 35 | 36 | defaultproperties 37 | { 38 | } 39 | -------------------------------------------------------------------------------- /Classes/realctfhud.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | //HUD taken from realctf.... and edited for ctf-plus, so to speak..... 3 | // Psychic_313: Hey, UsAaR33, if Team is 0 or 1, Abs(Team-1) == 1-Team. 4 | // Sorry, the extra Abs() just offended my sense of mathematical laziness :-) 5 | // ============================================================ 6 | 7 | class realctfhud expands oldskoolteamhud; 8 | // RealCTFHUD 9 | #exec TEXTURE IMPORT NAME=I_RealRedFlagGone FILE=TEXTURES\I_RealRedFlagGone.PCX GROUP="Icons" MIPS=OFF 10 | #exec TEXTURE IMPORT NAME=I_RealRedFlagInBase FILE=TEXTURES\I_RealRedFlagInBase.PCX GROUP="Icons" MIPS=OFF 11 | #exec TEXTURE IMPORT NAME=I_RealBlueFlagGone FILE=TEXTURES\I_RealBlueFlagGone.PCX GROUP="Icons" MIPS=OFF 12 | #exec TEXTURE IMPORT NAME=I_RealBlueFlagInBase FILE=TEXTURES\I_RealBlueFlagInBase.PCX GROUP="Icons" MIPS=OFF 13 | var CTFFlag MyFlag; 14 | simulated function postbeginplay(){ 15 | Super.PostBeginPlay(); 16 | SetTimer(1.0, True); 17 | } 18 | function Timer() //message thing.... 19 | { 20 | if ( (PlayerOwner == None) || (Pawn(Owner) == None) ) 21 | return; 22 | if ( Pawn(Owner).PlayerReplicationInfo.HasFlag != None ) 23 | PlayerOwner.ReceiveLocalizedMessage( class'CTFMessage2', 0 ); 24 | if ( (MyFlag != None) && !MyFlag.bHome ) 25 | PlayerOwner.ReceiveLocalizedMessage( class'CTFMessage2', 1 ); 26 | } 27 | simulated function DrawFlag(Canvas Canvas, int X, int Y, int teamindex) 28 | { 29 | local Texture texFlag; 30 | local CTFFlag Flag; 31 | local int iScore; 32 | local playerreplicationInfo pri; 33 | local float fWidth,fHeight; 34 | local color colorOld; 35 | //local CTFReplicationInfo CTFReplicationInfo; 36 | local teaminfo ti; 37 | local TournamentGameReplicationInfo GRI; 38 | 39 | 40 | if ( (PlayerOwner == None) || (PlayerOwner.GameReplicationInfo == None)) 41 | return; 42 | Flag = CTFReplicationInfo(PlayerOwner.GameReplicationInfo).FlagList[teamindex]; 43 | // Determine which flag status icon to draw 44 | if ( Flag != None ) 45 | { 46 | if (Flag.Team == Pawn(Owner).PlayerReplicationInfo.Team) 47 | MyFlag = Flag; 48 | if (TeamIndex == 0) { 49 | // Red team 50 | if (Flag.bHome) 51 | texFlag = Texture'I_RealRedFlagInBase'; 52 | else 53 | texFlag = Texture'I_RealRedFlagGone'; 54 | 55 | } else if (TeamIndex == 1) { 56 | // Blue team 57 | if ( Flag.bHome ) 58 | texFlag = Texture'I_RealBlueFlagInBase'; 59 | else 60 | texFlag = Texture'I_RealBlueFlagGone'; 61 | 62 | } else //error 63 | return; 64 | } 65 | else //error 66 | return; 67 | 68 | // Draw flag status icon 69 | Canvas.SetPos(X,Y); 70 | Canvas.DrawIcon(texFlag, 1.0); 71 | 72 | // Draw team score 73 | Canvas.CurX -= 25; 74 | Canvas.CurY += 23; 75 | Canvas.Font = MyFonts.GetSmallFont(Canvas.ClipX); 76 | GRI = TournamentGameReplicationInfo(PlayerOwner.GameReplicationInfo); 77 | TI = GRI.Teams[teamindex]; 78 | iScore = int(ti.Score); 79 | // TODO: Scale CurX 80 | if (iScore < 1000) Canvas.CurX+=6; 81 | if (iScore < 100) Canvas.CurX+=6; 82 | if (iScore < 10) Canvas.CurX+=6; 83 | if (iScore < 0) Canvas.CurX-=6; 84 | Canvas.DrawText(iScore); 85 | 86 | if (Flag.bHeld) { 87 | // Draw name of flag carrier 88 | if (level.netmode!=nm_client) 89 | pri = flag.Holder.playerreplicationinfo; 90 | else //client-side replication. I have to go through the entire PRIs to find it :( 91 | pri = findflagholder(flag); 92 | if (pri != none) { 93 | Canvas.Font = MyFonts.GetMediumFont(Canvas.ClipX); 94 | Canvas.StrLen(pri.PlayerName,fWidth,fHeight); 95 | if (X == 0) { 96 | Canvas.CurX = X + 34; 97 | } else { 98 | Canvas.CurX = X - fWidth - 2; 99 | } 100 | Canvas.CurY = Y + (32 - fHeight); 101 | SetDrawColor(Canvas,pri.Team,2); 102 | Canvas.DrawText(pri.PlayerName); 103 | Canvas.DrawColor.R = 255; 104 | Canvas.DrawColor.G = 255; 105 | Canvas.DrawColor.B = 255; 106 | } 107 | } 108 | } 109 | 110 | simulated function DrawFlagStatus(Canvas Canvas, int X, int Y) 111 | { 112 | local texture texBase; 113 | local int Team; 114 | 115 | // Friendly flag 116 | Team = OwnerTeam(); 117 | if (Team == 255) 118 | // Spectator 119 | Team = 0; 120 | 121 | 122 | // Draw friendly flag in place 123 | DrawFlag(Canvas,X,Y,Team); 124 | 125 | 126 | // Enemy flag 127 | // Draw enemy flag status above friendly flag status 128 | // Psychic_313: I do maths :-) UsAaR33: hehe 129 | DrawFlag(Canvas,X,Y-32,1 - Team); 130 | 131 | } 132 | 133 | simulated function DrawFragCount(Canvas Canvas, int X, int Y) 134 | { 135 | Super.DrawFragCount(Canvas,X,Y); 136 | DrawFlagStatus(Canvas,X,Y-42); 137 | } 138 | final simulated function Playerreplicationinfo FindFlagHolder (ctfflag flag){ //search through PRIs to get flag holder 139 | local int i; 140 | for (i=0;i<32;i++){ 141 | if (playerowner.gamereplicationinfo.priarray[i]==none) 142 | return none; //? 143 | if (playerowner.gamereplicationinfo.priarray[i].hasflag==flag) 144 | return playerowner.gamereplicationinfo.priarray[i]; 145 | } 146 | } 147 | defaultproperties 148 | { 149 | ServerInfoClass=Class'botpack.ServerInfoCTF' 150 | } 151 | -------------------------------------------------------------------------------- /Classes/scorekeeper.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | // oldskool.scorekeeper: a hidden inventory spawned by singleplayer which keeps track of the score and stuff (so maps keep going and going...) no way to save though.... 3 | // based on unrogue's tally translator.... 4 | // Psychic_313: unchanged, although maybe extensibility would be good? 5 | // ============================================================ 6 | 7 | class scorekeeper expands TournamentPickup; 8 | var travel int Skaarjw; 9 | var travel int Skaarjt; 10 | var travel int hugeguys; 11 | var travel int Nali; 12 | var travel int Tentacles; 13 | var travel int Pupae; 14 | var travel int Animals; 15 | var travel int Brutes; 16 | var travel int Gasbags; 17 | var travel int Krall; 18 | var travel int Mercs; 19 | var travel int Sliths; 20 | var travel int Titans; 21 | var travel int Fish; 22 | var travel int Flies; 23 | var travel int Mantas; 24 | var travel int blobs; 25 | var travel int killtotal; 26 | var travel int Score; 27 | 28 | function PreBeginPlay() 29 | { 30 | If (!Level.Game.Isa('SinglePlayer2')) 31 | Destroy(); //can only exist for SP2.... 32 | } 33 | 34 | //ripped and modified from tallytranslator...... 35 | function scoreit(pawn WhatDied) 36 | { 37 | local int points, intlevel; 38 | if (WhatDied != None) 39 | { 40 | points = int(10*((WhatDied.skill/2) + 1)*(whatdied.default.health/150)+whatdied.intelligence/1.5); //calculated by difficulty (major), health (slightly less important) and AI (tiny difference) 41 | If (points<8) 42 | points=8; //force to at least give 8 points. 43 | if (PlayerPawn(Owner).ReducedDamageType == 'All') 44 | Points*=(-10); //cheater!!!!!!!! 45 | if (WhatDied.IsA('Nali')){ //killing nalis is bad..... 46 | Nali++; 47 | Points=-32; 48 | } 49 | else if (WhatDied.IsA('Brute')) Brutes++; 50 | else if (WhatDied.IsA('Gasbag')) Gasbags++; 51 | else if (WhatDied.IsA('Krall')) Krall++; 52 | else if (WhatDied.IsA('Mercenary')) Mercs++; 53 | else if (WhatDied.IsA('Queen')) hugeguys++; 54 | else if (WhatDied.IsA('Slith')) Sliths++; 55 | else if (WhatDied.IsA('Titan')) Titans++; 56 | else if (WhatDied.IsA('Warlord')) hugeguys++; 57 | else if (WhatDied.IsA('Skaarjwarrior')) Skaarjw++; 58 | else if (WhatDied.IsA('Skaarjtrooper')) Skaarjt++; 59 | else if (WhatDied.IsA('nalirabbit')) { Animals++; points= -4;} 60 | else if (WhatDied.IsA('bird1')) { Animals++; points= -7;} 61 | else if (WhatDied.IsA('Brute')) Brutes++; 62 | else if (WhatDied.IsA('cow')){ Animals++; points= -10;} //don't kill innocent animals :D 63 | else if (WhatDied.IsA('tentacle')) tentacles++; 64 | else if ((WhatDied.IsA('ParentBlob'))||(Whatdied.Isa('Bloblet'))) blobs++; 65 | else if ((WhatDied.IsA('BiterfishSchool'))||(Whatdied.Isa('biterfish'))||(Whatdied.Isa('devilfish'))||(Whatdied.Isa('squid'))) fish++; 66 | else if (WhatDied.IsA('manta')) mantas++; 67 | else if (WhatDied.IsA('fly')) flies++; 68 | else if (WhatDied.IsA('pupae')) pupae++; 69 | if (WhatDied.IsA('ScriptedPawn')) 70 | if (ScriptedPawn(WhatDied).bIsBoss) points *=3; //bonus for killing bosses..... 71 | Score += points; 72 | Killtotal += 1; 73 | 74 | } 75 | 76 | } 77 | 78 | defaultproperties 79 | { 80 | PickupMessage="You weren't supposed to pick this up!" 81 | ItemName="Scorekeeper" 82 | bHidden=True 83 | } 84 | -------------------------------------------------------------------------------- /Classes/shinigami.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | // oldskool.shinigami: Shinigami Pack 1 3 | // ============================================================ 4 | 5 | class shinigami expands mappack; 6 | 7 | #exec TEXTURE IMPORT NAME=shinShot FILE=Textures\shinShot.pcx MIPS=OFF 8 | 9 | defaultproperties 10 | { 11 | Maps(0)=Arrival 12 | Maps(1)=Example 13 | Maps(2)=NaliShip 14 | Maps(3)=Skyship 15 | Maps(4)=Crashed 16 | Author="Shinigami" 17 | Title="Shimigami Pack 1" 18 | Screenshot=Texture'shinShot' 19 | } 20 | -------------------------------------------------------------------------------- /Classes/shrak.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | // oldskool.shrak: Shrak pack 3 | // ============================================================ 4 | 5 | class shrak expands mappack; 6 | 7 | #exec TEXTURE IMPORT NAME=shrakShot FILE=Textures\shrakShot.pcx MIPS=OFF 8 | 9 | defaultproperties 10 | { 11 | Maps(0)=shrak1 12 | Maps(1)=shrak2 13 | Maps(2)=shrak3 14 | Author="Geoffrey Field (Mad Martigan)" 15 | Title="Tower of Shrakith'a" 16 | Screenshot=Texture'shrakShot' 17 | } 18 | -------------------------------------------------------------------------------- /Classes/skinbotset.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | // oldskool.skinbotset: the bot skin setter (same as player version) 3 | // Psychic_313: DEPRECATED. DON'T USE ME. 4 | // ============================================================ 5 | 6 | class skinbotset expands Bot 7 | abstract; 8 | 9 | var() string DefaultTalkTexture; //no talktexture will use this one.... 10 | var() string TeamSkin; //what is the main skin to use for TC's? 11 | var bool bpartialteam; //only two colours (i.e. skaarj trooper)... 12 | var string tbackup; //setmultiskin is called twice. by having this variable being defined outside the function, the talktexture is preserved..... 13 | var () string altpackage; //for use with only Unreal Skins..... 14 | 15 | 16 | static function SetMultiSkin(Actor SkinActor, string SkinName, string FaceName, byte TeamNum) 17 | { 18 | local string SkinItem, SkinPackage, SkinTeam, Tfix, combine; //various local strings..... 19 | local Texture NewSkin, Talktestskin; 20 | local int i; 21 | local string TeamColor[4]; //from unreali player. used for non-full versions.... 22 | TeamColor[0]="Red"; 23 | TeamColor[1]="Blue"; 24 | TeamColor[2]="Green"; 25 | TeamColor[3]="Yellow"; 26 | SkinItem = SkinActor.GetItemName(SkinName); 27 | SkinPackage = Left(SkinName, Len(SkinName) - Len(SkinItem)); 28 | //back-up talktexture, so it doesn't revert to team one 29 | If (Left(Right(default.teamskin, 5),4) != Left(skinitem, 4)) 30 | default.tbackup=skinitem; 31 | if( TeamNum != 255 ) 32 | { 33 | tfix = Left(skinitem$"111", 4); 34 | combine=skinpackage$tfix$"1T_"$String(TeamNum); 35 | //check if team skin exists..if it does set it!!!!!! 36 | if (Right(skinpackage, 6) ~= "skins.") //user is using partail mode........ 37 | NewSkin = texture(DynamicLoadObject(skinpackage$"T_"$TeamColor[TeamNum], class'Texture')); 38 | else 39 | NewSkin = Texture(DynamicLoadObject(skinpackage$tfix$"1T_"$String(TeamNum), class'Texture')); 40 | if ( NewSkin != None ) 41 | SkinActor.Multiskins[0] = Newskin; 42 | else 43 | { 44 | log("Team color not under "$SkinName); 45 | //check if only two team colors (Skaarj)... skinners willing to help? 46 | If (!default.bpartialteam) 47 | skinteam = default.Teamskin$"t_"$String(TeamNum); 48 | else 49 | { 50 | if (TeamNum <2) 51 | skinteam = default.Teamskin$"t_"$String(TeamNum); 52 | else 53 | skinteam = skinname; } 54 | SetSkinElement(SkinActor, 0, Skinteam, default.Altpackage$"T_"$TeamColor[TeamNum]); 55 | for( i=0; i<64; i++ ) 56 | { 57 | if( class'Oldskool.skinconfiguration'.default.skins[i] == combine ) 58 | { 59 | SetSkinElement(SkinActor, 0, skinpackage$default.tbackup, skinpackage$default.tbackup); 60 | break; 61 | } 62 | } 63 | } 64 | } 65 | //not team...... 66 | else 67 | SetSkinElement(SkinActor, 0, SkinName, ""); 68 | // Set the talktexture 69 | if(Pawn(SkinActor) != None) 70 | { 71 | if (Right(skinpackage, 6) ~= "skins."){ //user is using partial mode........ 72 | if (Left(skinpackage, 6) ~= "female") 73 | Pawn(SkinActor).PlayerReplicationInfo.TalkTexture = Texture(DynamicLoadObject("fcommandoskins.cMDo5Ivana", class'Texture')); //Ivana's face for females...... 74 | else //cliffyB mode... 75 | Pawn(SkinActor).PlayerReplicationInfo.TalkTexture = Texture(DynamicLoadObject("UTtech2.Deco.xmetex2x1", class'Texture')); //a face: cliffy B :D (males or sktrooper.....) 76 | } 77 | else { 78 | talktestskin = Texture(DynamicLoadObject(skinpackage$Left(default.tbackup$"111", 4)$"5", class'Texture')); 79 | if(talktestskin != none) 80 | Pawn(SkinActor).PlayerReplicationInfo.TalkTexture = talktestskin; 81 | else{ 82 | log("no talktexture for "$skinname); 83 | Pawn(SkinActor).PlayerReplicationInfo.TalkTexture = Texture(DynamicLoadObject(default.defaulttalktexture, class'Texture')); 84 | If (Pawn(SkinActor).PlayerReplicationInfo.TalkTexture ==None){ //apparently we're using some custom skin, yet in the lite version.... 85 | if (Left(skinpackage, 6) ~= "female") 86 | Pawn(SkinActor).PlayerReplicationInfo.TalkTexture = Texture(DynamicLoadObject("fcommandoskins.cMDo5Ivana", class'Texture')); //Ivana's face for females...... 87 | else //cliffyB mode... 88 | Pawn(SkinActor).PlayerReplicationInfo.TalkTexture = Texture(DynamicLoadObject("UTtech2.Deco.xmetex2x1", class'Texture')); //a face: cliffy B :D (males or sktrooper.....) 89 | }} 90 | } } 91 | } 92 | //hehehahaha..this keeps dumb team game from changing stuff.... 93 | static function GetMultiSkin( Actor SkinActor, out string SkinName, out string FaceName ) 94 | { 95 | 96 | SkinName = String(SkinActor.Multiskins[0]); 97 | FaceName = ""; 98 | } 99 | 100 | defaultproperties 101 | { 102 | DefaultTalkTexture="male2skiny.ashy5" 103 | TeamSkin="male1skiny.cart1" 104 | bIsMultiSkinned=False 105 | } 106 | -------------------------------------------------------------------------------- /Classes/skinconfiguration.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | // skinconfiguration. stores the skin stuff....... 3 | // Psychic_313: DEPRECATED. DON'T USE ME. 4 | // ============================================================ 5 | 6 | class skinconfiguration expands Object 7 | config (oldskool); 8 | //var config string skinbackup; 9 | var config string skins[64]; 10 | var config bool skaarjprop; 11 | 12 | defaultproperties 13 | { 14 | Skins(0)="Male1Skiny.Gibb1T_0" 15 | Skins(1)="Male2Skiny.Ivan1T_1" 16 | Skins(2)="SkTrooperSkiny.offi1T_0" 17 | Skins(3)="SkTrooperSkiny.snip1T_1" 18 | Skins(4)="Female1Skiny.Gibb1T_0" 19 | Skins(5)="Female1Skiny.Drac1T_1" 20 | Skins(6)="Female1Skiny.Raqu1T_1" 21 | Skins(7)="Female1Skiny.Niki1T_1" 22 | Skins(8)="Female2Skiny.Demi1T_1" 23 | Skins(9)="Male1Skiny.Cart1T_3" 24 | Skins(10)="Male2Skiny.Kris1T_2" 25 | Skins(11)="Male3Skiny.Dreg1T_2" 26 | Skins(12)="Male3Skiny.Krig1T_1" 27 | Skins(13)="Female2Skiny.Katr1T_2" 28 | } 29 | -------------------------------------------------------------------------------- /Classes/skinsetclass.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | // oldskool.skinsetclass: this baby gets the skin format.... 3 | // Psychic_313: DEPRECATED. DON'T USE ME. 4 | // ============================================================ 5 | 6 | class skinsetclass expands TournamentPlayer 7 | abstract; 8 | 9 | var() string DefaultTalkTexture; //no talktexture will use this one.... 10 | var() string TeamSkin; //what is the main skin to use for TC's? 11 | var bool bpartialteam; //only two colours (i.e. skaarj trooper)... 12 | var string tbackup; //setmultiskin is called twice. by having this variable being defined outside the function, the talktexture is preserved..... 13 | var () string altpackage; //for use with only Unreal Skins..... 14 | 15 | 16 | static function SetMultiSkin(Actor SkinActor, string SkinName, string FaceName, byte TeamNum) 17 | { 18 | local string SkinItem, SkinPackage, SkinTeam, Tfix, combine; //various local strings..... 19 | local Texture NewSkin, Talktestskin; 20 | local int i; 21 | local string TeamColor[4]; //from unreali player. used for non-full versions.... 22 | TeamColor[0]="Red"; 23 | TeamColor[1]="Blue"; 24 | TeamColor[2]="Green"; 25 | TeamColor[3]="Yellow"; 26 | SkinItem = SkinActor.GetItemName(SkinName); 27 | SkinPackage = Left(SkinName, Len(SkinName) - Len(SkinItem)); 28 | //back-up talktexture, so it doesn't revert to team one 29 | If (Left(Right(default.teamskin, 5),4) != Left(skinitem, 4)) //could use mid but \me don't get it 100%.... 30 | default.tbackup=skinitem; 31 | if( TeamNum != 255 ) 32 | { 33 | tfix = Left(skinitem$"111", 4); 34 | combine=skinpackage$tfix$"1T_"$String(TeamNum); 35 | //check if team skin exists..if it does set it!!!!!! 36 | if (Right(skinpackage, 6) ~= "skins.") //user is using partail mode........ 37 | NewSkin = texture(DynamicLoadObject(skinpackage$"T_"$TeamColor[TeamNum], class'Texture')); 38 | else 39 | NewSkin = Texture(DynamicLoadObject(skinpackage$tfix$"1T_"$String(TeamNum), class'Texture')); 40 | if ( NewSkin != None ) 41 | SkinActor.Multiskins[0] = Newskin; 42 | else 43 | { 44 | log("Team color not under "$SkinName); 45 | //check if only two team colors (Skaarj)... skinners willing to help? 46 | If (!default.bpartialteam) 47 | skinteam = default.Teamskin$"t_"$String(TeamNum); 48 | else 49 | { 50 | if (TeamNum <2) 51 | skinteam = default.Teamskin$"t_"$String(TeamNum); 52 | else 53 | skinteam = skinname; } 54 | SetSkinElement(SkinActor, 0, Skinteam, default.Altpackage$"T_"$TeamColor[TeamNum]); 55 | for( i=0; i<64; i++ ) 56 | { 57 | if( class'Oldskool.skinconfiguration'.default.skins[i] == combine ) 58 | { 59 | SetSkinElement(SkinActor, 0, skinpackage$default.tbackup, skinpackage$default.tbackup); 60 | break; 61 | } 62 | } 63 | } 64 | } 65 | //not team...... 66 | else 67 | SetSkinElement(SkinActor, 0, SkinName, ""); 68 | // Set the talktexture 69 | if(Pawn(SkinActor) != None) 70 | { 71 | if (Right(skinpackage, 6) ~= "skins."){ //user is using partial mode........ 72 | if (Left(skinpackage, 6) ~= "female") 73 | Pawn(SkinActor).PlayerReplicationInfo.TalkTexture = Texture(DynamicLoadObject("fcommandoskins.cMDo5Ivana", class'Texture')); //Ivana's face for females...... 74 | else //cliffyB mode... 75 | Pawn(SkinActor).PlayerReplicationInfo.TalkTexture = Texture(DynamicLoadObject("UTtech2.Deco.xmetex2x1", class'Texture')); //a face: cliffy B :D (males or sktrooper.....) 76 | } 77 | else { 78 | talktestskin = Texture(DynamicLoadObject(skinpackage$Left(default.tbackup$"111", 4)$"5", class'Texture')); 79 | if(talktestskin != none) 80 | Pawn(SkinActor).PlayerReplicationInfo.TalkTexture = talktestskin; 81 | else{ 82 | log("no talktexture for "$skinname); 83 | Pawn(SkinActor).PlayerReplicationInfo.TalkTexture = Texture(DynamicLoadObject(default.defaulttalktexture, class'Texture')); 84 | If (Pawn(SkinActor).PlayerReplicationInfo.TalkTexture ==None){ //apparently we're using some custom skin, yet in the lite version.... 85 | if (Left(skinpackage, 6) ~= "female") 86 | Pawn(SkinActor).PlayerReplicationInfo.TalkTexture = Texture(DynamicLoadObject("fcommandoskins.cMDo5Ivana", class'Texture')); //Ivana's face for females...... 87 | else //cliffyB mode... 88 | Pawn(SkinActor).PlayerReplicationInfo.TalkTexture = Texture(DynamicLoadObject("UTtech2.Deco.xmetex2x1", class'Texture')); //a face: cliffy B :D (males or sktrooper.....) 89 | }} 90 | } } 91 | } 92 | //hehehahaha..this keeps dumb team game from changing stuff.... 93 | static function GetMultiSkin( Actor SkinActor, out string SkinName, out string FaceName ) 94 | { 95 | 96 | SkinName = String(SkinActor.Multiskins[0]); 97 | FaceName = ""; 98 | } 99 | 100 | defaultproperties 101 | { 102 | DefaultTalkTexture="male2skiny.ashy5" 103 | TeamSkin="male1skiny.cart1" 104 | bIsMultiSkinned=False 105 | } 106 | -------------------------------------------------------------------------------- /Classes/strangeworld.uc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OldUnreal/oldskool/4d62dc50c33b9afddd719a12373878ac0ff21afe/Classes/strangeworld.uc -------------------------------------------------------------------------------- /Classes/transhack.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | //for oldskool 2.20 3 | //and with the unrealshare.transporter epic said let's break future compatibility by only searching for unreali players! 4 | //and so it was 5 | //this is a nice ugly hack to fix it. 6 | //mutator checks if a transporter is spawned and then copies properties over to this. 7 | // Psychic_313: unchanged in Oldskool III. So _that's_ why I couldn't get past Illumination without cheating. Thanks UsAaR33 :-) 8 | // ============================================================ 9 | 10 | class transhack expands Info; 11 | var Vector Offset; 12 | function Trigger( Actor Other, Pawn EventInstigator ) 13 | { 14 | local pawn p; //do tournamentplayer here 15 | 16 | // Move the player instantaneously by the Offset vector 17 | 18 | // Find the players 19 | for (p=level.pawnlist;p!=none;p=p.nextpawn) 20 | { 21 | if (p.isa('playerpawn')) 22 | p.SetLocation( p.Location + Offset ); 23 | } 24 | 25 | Disable( 'Trigger' ); 26 | } 27 | 28 | defaultproperties 29 | { 30 | } 31 | -------------------------------------------------------------------------------- /Classes/troopercarcass2.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | // oldskool.troopercarcass2: needed so when Skaarj dies his skin won't revert back....... 3 | // Psychic_313: DEPRECATED. DON'T USE ME. 4 | // ============================================================ 5 | 6 | class troopercarcass2 expands HumanCarcass; 7 | 8 | function ForceMeshToExist() 9 | { 10 | //never called 11 | Spawn(class 'SkaarjTrooper'); 12 | } 13 | 14 | function CreateReplacement() 15 | { 16 | local CreatureChunks carc; 17 | 18 | if (bHidden) 19 | return; 20 | carc = Spawn(class'TrooperMasterChunk'); 21 | if (carc != None) 22 | { 23 | carc.bMasterChunk = true; 24 | carc.Initfor(self); 25 | carc.Bugs = Bugs; 26 | if ( Bugs != None ) 27 | Bugs.SetBase(carc); 28 | Bugs = None; 29 | } 30 | else if ( Bugs != None ) 31 | Bugs.Destroy(); 32 | } 33 | 34 | defaultproperties 35 | { 36 | bodyparts(0)=LodMesh'UnrealShare.SkaarjBody' 37 | bodyparts(1)=LodMesh'UnrealShare.SkaarjHead' 38 | bodyparts(2)=LodMesh'UnrealShare.SkaarjBody' 39 | bodyparts(3)=LodMesh'UnrealShare.SkaarjLeg' 40 | bodyparts(4)=LodMesh'UnrealShare.SkaarjLeg' 41 | bodyparts(5)=LodMesh'UnrealShare.CowBody1' 42 | bodyparts(6)=LodMesh'UnrealShare.CowBody2' 43 | AnimSequence=Death 44 | Mesh=LodMesh'UnrealI.sktrooper' 45 | CollisionRadius=32.00 46 | CollisionHeight=42.00 47 | Mass=130.00 48 | } 49 | -------------------------------------------------------------------------------- /Classes/unrealCreditsCW.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | // oldskool.unrealCreditsCW: the credits for Unreal.... 3 | // Psychic_313: @@@ move to OlRoot 4 | // ============================================================ 5 | 6 | class unrealCreditsCW expands UTCreditsCW; 7 | 8 | defaultproperties 9 | { 10 | ProgrammerNames(1)="Nick Michon" 11 | ProgrammerNames(2)="Steven Polge" 12 | ProgrammerNames(3)="James Schmalz" 13 | DesignerNames(1)="T. Elliot Cannon" 14 | DesignerNames(4)="Cedric Fiorentino" 15 | DesignerNames(5)="Jeremy War" 16 | MaxDesigners=6 17 | ArtText="Art & Animation" 18 | ArtNames(0)="Artur Bialas" 19 | ArtNames(1)="Dave Carter" 20 | ArtNames(2)="Mike Leatham" 21 | ArtNames(3)="James Schmalz" 22 | MaxArts=4 23 | MusicNames(1)="Dave Ewing" 24 | MusicNames(2)="Michiel Van De Bos" 25 | MaxMusics=3 26 | BizNames(0)="Nigel Kent" 27 | BizNames(1)="Craig Lafferty" 28 | BizNames(2)="Mark Rein" 29 | MaxBiz=3 30 | } 31 | -------------------------------------------------------------------------------- /Classes/unrealCreditsWindow.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | // oldskool.unrealCreditsWindow: Credits For Unreal I 3 | // Psychic_313: @@@ move this to OlRoot 4 | // ============================================================ 5 | 6 | class unrealCreditsWindow expands UTCreditsWindow; 7 | 8 | defaultproperties 9 | { 10 | ClientClass=Class'unrealCreditsCW' 11 | WindowTitle="Unreal I Credits" 12 | } 13 | -------------------------------------------------------------------------------- /Classes/unrealfbot.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | // oldskool.unrealFbot: gal botz 3 | // Psychic_313: DEPRECATED. DON'T USE ME. 4 | // ============================================================ 5 | 6 | class unrealFbot expands U1humanbot 7 | abstract; 8 | 9 | defaultproperties 10 | { 11 | CarcassType=Class'UnrealShare.FemaleBody' 12 | drown=Sound'UnrealShare.Female.mdrown2fem' 13 | breathagain=Sound'UnrealShare.Female.hgasp3fem' 14 | HitSound3=Sound'UnrealShare.Female.linjur3fem' 15 | HitSound4=Sound'UnrealShare.Female.hinjur4fem' 16 | Deaths(2)=Sound'UnrealShare.Female.death3cfem' 17 | Deaths(3)=Sound'UnrealShare.Female.death2afem' 18 | Deaths(4)=Sound'UnrealShare.Female.death4cfem' 19 | GaspSound=Sound'UnrealShare.Female.lgasp1fem' 20 | UWHit1=Sound'UnrealShare.Female.FUWHit1' 21 | UWHit2=Sound'UnrealShare.Male.MUWHit2' 22 | LandGrunt=Sound'UnrealShare.Female.lland1fem' 23 | JumpSound=Sound'UnrealShare.Female.jump1fem' 24 | StatusDoll=Texture'botpack.Icons.Woman' 25 | StatusBelt=Texture'botpack.Icons.WomanBelt' 26 | VoicePackMetaClass="BotPack.VoicefeMale" 27 | bIsFemale=True 28 | HitSound1=Sound'UnrealShare.Female.linjur1fem' 29 | HitSound2=Sound'UnrealShare.Female.linjur2fem' 30 | Die=Sound'UnrealShare.Female.death1dfem' 31 | } 32 | -------------------------------------------------------------------------------- /Classes/unrealmbot.uc: -------------------------------------------------------------------------------- 1 | // ============================================================ 2 | // oldskool.unrealMbot: the male d00dz 3 | // Psychic_313: DEPRECATED. DON'T USE ME. 4 | // ============================================================ 5 | 6 | class unrealMbot expands U1humanbot 7 | abstract; 8 | 9 | function PlayDying(name DamageType, vector HitLoc) 10 | { 11 | local vector X,Y,Z, HitVec, HitVec2D; 12 | local float dotp; 13 | local carcass carc; 14 | 15 | BaseEyeHeight = Default.BaseEyeHeight; 16 | PlayDyingSound(); 17 | 18 | if ( FRand() < 0.15 ) 19 | { 20 | PlayAnim('Dead2',0.7,0.1); 21 | return; 22 | } 23 | 24 | // check for big hit 25 | if ( (Velocity.Z > 250) ) 26 | { 27 | if ( FRand() < 0.7 ){ 28 | PlayAnim('Dead5',0.7,0.1);} 29 | else{ 30 | PlayAnim('Dead1',0.7,0.1);} 31 | if ( Level.NetMode != NM_Client ) 32 | { 33 | carc = Spawn(class 'MaleHead',,, Location + CollisionHeight * vect(0,0,0.8), Rotation + rot(3000,0,16384) ); 34 | if (carc != None) 35 | { 36 | carc.Initfor(self); 37 | carc.Velocity = Velocity + VSize(Velocity) * VRand(); 38 | carc.Velocity.Z = FMax(carc.Velocity.Z, Velocity.Z); 39 | 40 | } 41 | carc = Spawn(class 'CreatureChunks'); 42 | if (carc != None) 43 | { 44 | carc.Mesh = mesh 'CowBody1'; 45 | carc.Initfor(self); 46 | carc.Velocity = Velocity + VSize(Velocity) * VRand(); 47 | carc.Velocity.Z = FMax(carc.Velocity.Z, Velocity.Z); 48 | } 49 | carc = Spawn(class 'Arm1',,, Location + CollisionHeight * vect(0,0,0.8), Rotation + rot(3000,0,16384) ); 50 | if (carc != None) 51 | { 52 | carc.Initfor(self); 53 | carc.Velocity = Velocity + VSize(Velocity) * VRand(); 54 | carc.Velocity.Z = FMax(carc.Velocity.Z, Velocity.Z); 55 | } 56 | } 57 | 58 | 59 | return; 60 | } 61 | 62 | // check for head hit 63 | if ( ((DamageType == 'Decapitated') || (HitLoc.Z - Location.Z > 0.6 * CollisionHeight)) 64 | && !Level.Game.bVeryLowGore ) 65 | { 66 | DamageType = 'Decapitated'; 67 | PlayAnim('Dead4', 0.7, 0.1); 68 | if ( Level.NetMode != NM_Client ) 69 | { 70 | carc = Spawn(class 'MaleHead',,, Location + CollisionHeight * vect(0,0,0.8), Rotation + rot(3000,0,16384) ); 71 | if (carc != None) 72 | { 73 | carc.Initfor(self); 74 | carc.Velocity = Velocity + VSize(Velocity) * VRand(); 75 | carc.Velocity.Z = FMax(carc.Velocity.Z, Velocity.Z); 76 | } 77 | } 78 | return; 79 | } 80 | 81 | GetAxes(Rotation,X,Y,Z); 82 | X.Z = 0; 83 | HitVec = Normal(HitLoc - Location); 84 | HitVec2D= HitVec; 85 | HitVec2D.Z = 0; 86 | dotp = HitVec2D dot X; 87 | 88 | if (Abs(dotp) > 0.71) //then hit in front or back 89 | PlayAnim('Dead3', 0.7, 0.1); 90 | else 91 | { 92 | dotp = HitVec dot Y; 93 | if (dotp > 0.0) 94 | PlayAnim('Dead6', 0.7, 0.1); 95 | else 96 | PlayAnim('Dead7', 0.7, 0.1); 97 | } 98 | } 99 | 100 | function PlayGutHit(float tweentime) 101 | { 102 | if ( (AnimSequence == 'GutHit') || (AnimSequence == 'Dead2') ) 103 | { 104 | if (FRand() < 0.5) 105 | TweenAnim('LeftHit', tweentime); 106 | else 107 | TweenAnim('RightHit', tweentime); 108 | } 109 | else if ( FRand() < 0.6 ) 110 | TweenAnim('GutHit', tweentime); 111 | else 112 | TweenAnim('Dead2', tweentime); 113 | 114 | } 115 | 116 | function PlayHeadHit(float tweentime) 117 | { 118 | if ( (AnimSequence == 'HeadHit') || (AnimSequence == 'Dead3') ) 119 | TweenAnim('GutHit', tweentime); 120 | else if ( FRand() < 0.6 ) 121 | TweenAnim('HeadHit', tweentime); 122 | else 123 | TweenAnim('Dead3', tweentime); 124 | } 125 | 126 | function PlayLeftHit(float tweentime) 127 | { 128 | if ( (AnimSequence == 'LeftHit') || (AnimSequence == 'Dead6') ) 129 | TweenAnim('GutHit', tweentime); 130 | else if ( FRand() < 0.6 ) 131 | TweenAnim('LeftHit', tweentime); 132 | else 133 | TweenAnim('Dead6', tweentime); 134 | } 135 | 136 | function PlayRightHit(float tweentime) 137 | { 138 | if ( (AnimSequence == 'RightHit') || (AnimSequence == 'Dead1') ) 139 | TweenAnim('GutHit', tweentime); 140 | else if ( FRand() < 0.6 ) 141 | TweenAnim('RightHit', tweentime); 142 | else 143 | TweenAnim('Dead1', tweentime); 144 | } 145 | 146 | defaultproperties 147 | { 148 | CarcassType=Class'UnrealShare.MaleBody' 149 | drown=Sound'UnrealShare.Male.MDrown1' 150 | breathagain=Sound'UnrealShare.Male.MGasp1' 151 | HitSound3=Sound'UnrealShare.Male.MInjur3' 152 | HitSound4=Sound'UnrealShare.Male.MInjur4' 153 | Deaths(2)=Sound'UnrealShare.Male.MDeath3' 154 | Deaths(3)=Sound'UnrealShare.Male.MDeath3' 155 | Deaths(4)=Sound'UnrealShare.Male.MDeath4' 156 | GaspSound=Sound'UnrealShare.Male.MGasp2' 157 | UWHit1=Sound'UnrealShare.Male.MUWHit1' 158 | UWHit2=Sound'UnrealShare.Male.MUWHit2' 159 | LandGrunt=Sound'UnrealShare.Male.lland01' 160 | JumpSound=Sound'UnrealShare.Male.MJump1' 161 | VoicePackMetaClass="BotPack.VoiceMale" 162 | HitSound1=Sound'UnrealShare.Male.MInjur1' 163 | HitSound2=Sound'UnrealShare.Male.MInjur2' 164 | Die=Sound'UnrealShare.Male.MDeath1' 165 | } 166 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # OldSkool Amp'd for Unreal Tournament 469 2 | 3 | This is a modified version of UsAaR33's OldSkool Amp'd mod (version 2.39). 4 | 5 | This version leverages UT 469-specific features to scale up the HUD and crosshair, while remaining network-compatible with UT 432-451 clients. 6 | 7 | ## Setup 8 | 9 | To compile the source code, you should install the latest version of oldskool, and then clone this repository into a folder called "oldskool" in your Unreal Tournament root folder. 10 | 11 | Next, you should copy the files in the oldskool/Build folder into your Unreal Tournament System folder. 12 | 13 | ## Compiling 14 | 15 | You will need Unreal Tournament v469c Release Candidate 2 (or upwards) to compile the mod. 16 | 17 | Compilation is pretty straightforward. Simply navigate into your Unreal Tournament System folder and run the batch script: 18 | 19 | ``` 20 | cd /path/to/UnrealTournament/System 21 | oldskoolbuild.bat 22 | ``` 23 | 24 | ## Credits 25 | 26 | * OldSkool Amp'd was originally written by UsAaR33 27 | * UT 469 HUD/Crosshair scaling was added by AnthraX 28 | 29 | ## Support 30 | 31 | This mod is not actively maintained. However, if you have any questions, people on the [OldUnreal discord server](https://discord.gg/thURucxzs6) might be able to help you out. 32 | 33 | ## Contributing 34 | 35 | Even though this mod is not actively maintained, I will gladly accept contributions in the form of pull requests. 36 | 37 | ## License 38 | 39 | Shield: [![CC BY-SA 4.0][cc-by-sa-shield]][cc-by-sa] 40 | 41 | This work is licensed under a 42 | [Creative Commons Attribution-ShareAlike 4.0 International License][cc-by-sa]. 43 | 44 | [![CC BY-SA 4.0][cc-by-sa-image]][cc-by-sa] 45 | 46 | [cc-by-sa]: http://creativecommons.org/licenses/by-sa/4.0/ 47 | [cc-by-sa-image]: https://licensebuttons.net/l/by-sa/4.0/88x31.png 48 | [cc-by-sa-shield]: https://img.shields.io/badge/License-CC%20BY--SA%204.0-lightgrey.svg -------------------------------------------------------------------------------- /Textures/AshShot.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OldUnreal/oldskool/4d62dc50c33b9afddd719a12373878ac0ff21afe/Textures/AshShot.pcx -------------------------------------------------------------------------------- /Textures/BluePlay.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OldUnreal/oldskool/4d62dc50c33b9afddd719a12373878ac0ff21afe/Textures/BluePlay.pcx -------------------------------------------------------------------------------- /Textures/DayShot.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OldUnreal/oldskool/4d62dc50c33b9afddd719a12373878ac0ff21afe/Textures/DayShot.pcx -------------------------------------------------------------------------------- /Textures/Goldplay.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OldUnreal/oldskool/4d62dc50c33b9afddd719a12373878ac0ff21afe/Textures/Goldplay.pcx -------------------------------------------------------------------------------- /Textures/GreenSplat1.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OldUnreal/oldskool/4d62dc50c33b9afddd719a12373878ac0ff21afe/Textures/GreenSplat1.pcx -------------------------------------------------------------------------------- /Textures/GreenSplat10.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OldUnreal/oldskool/4d62dc50c33b9afddd719a12373878ac0ff21afe/Textures/GreenSplat10.pcx -------------------------------------------------------------------------------- /Textures/GreenSplat2.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OldUnreal/oldskool/4d62dc50c33b9afddd719a12373878ac0ff21afe/Textures/GreenSplat2.pcx -------------------------------------------------------------------------------- /Textures/GreenSplat3.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OldUnreal/oldskool/4d62dc50c33b9afddd719a12373878ac0ff21afe/Textures/GreenSplat3.pcx -------------------------------------------------------------------------------- /Textures/GreenSplat4.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OldUnreal/oldskool/4d62dc50c33b9afddd719a12373878ac0ff21afe/Textures/GreenSplat4.pcx -------------------------------------------------------------------------------- /Textures/GreenSplat5.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OldUnreal/oldskool/4d62dc50c33b9afddd719a12373878ac0ff21afe/Textures/GreenSplat5.pcx -------------------------------------------------------------------------------- /Textures/GreenSplat6.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OldUnreal/oldskool/4d62dc50c33b9afddd719a12373878ac0ff21afe/Textures/GreenSplat6.pcx -------------------------------------------------------------------------------- /Textures/GreenSplat7.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OldUnreal/oldskool/4d62dc50c33b9afddd719a12373878ac0ff21afe/Textures/GreenSplat7.pcx -------------------------------------------------------------------------------- /Textures/GreenSplat8.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OldUnreal/oldskool/4d62dc50c33b9afddd719a12373878ac0ff21afe/Textures/GreenSplat8.pcx -------------------------------------------------------------------------------- /Textures/GreenSplat9.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OldUnreal/oldskool/4d62dc50c33b9afddd719a12373878ac0ff21afe/Textures/GreenSplat9.pcx -------------------------------------------------------------------------------- /Textures/I_RealBlueFlagGone.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OldUnreal/oldskool/4d62dc50c33b9afddd719a12373878ac0ff21afe/Textures/I_RealBlueFlagGone.pcx -------------------------------------------------------------------------------- /Textures/I_RealBlueFlagInBase.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OldUnreal/oldskool/4d62dc50c33b9afddd719a12373878ac0ff21afe/Textures/I_RealBlueFlagInBase.pcx -------------------------------------------------------------------------------- /Textures/I_RealBlueSkull.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OldUnreal/oldskool/4d62dc50c33b9afddd719a12373878ac0ff21afe/Textures/I_RealBlueSkull.pcx -------------------------------------------------------------------------------- /Textures/I_RealRedFlagGone.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OldUnreal/oldskool/4d62dc50c33b9afddd719a12373878ac0ff21afe/Textures/I_RealRedFlagGone.pcx -------------------------------------------------------------------------------- /Textures/I_RealRedFlagInBase.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OldUnreal/oldskool/4d62dc50c33b9afddd719a12373878ac0ff21afe/Textures/I_RealRedFlagInBase.pcx -------------------------------------------------------------------------------- /Textures/I_RealRedSkull.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OldUnreal/oldskool/4d62dc50c33b9afddd719a12373878ac0ff21afe/Textures/I_RealRedSkull.pcx -------------------------------------------------------------------------------- /Textures/MetalPlay.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OldUnreal/oldskool/4d62dc50c33b9afddd719a12373878ac0ff21afe/Textures/MetalPlay.pcx -------------------------------------------------------------------------------- /Textures/RealSkull.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OldUnreal/oldskool/4d62dc50c33b9afddd719a12373878ac0ff21afe/Textures/RealSkull.pcx -------------------------------------------------------------------------------- /Textures/UnrealShot.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OldUnreal/oldskool/4d62dc50c33b9afddd719a12373878ac0ff21afe/Textures/UnrealShot.pcx -------------------------------------------------------------------------------- /Textures/holShot.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OldUnreal/oldskool/4d62dc50c33b9afddd719a12373878ac0ff21afe/Textures/holShot.pcx -------------------------------------------------------------------------------- /Textures/illShot.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OldUnreal/oldskool/4d62dc50c33b9afddd719a12373878ac0ff21afe/Textures/illShot.pcx -------------------------------------------------------------------------------- /Textures/invadeShot.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OldUnreal/oldskool/4d62dc50c33b9afddd719a12373878ac0ff21afe/Textures/invadeShot.pcx -------------------------------------------------------------------------------- /Textures/perilShot.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OldUnreal/oldskool/4d62dc50c33b9afddd719a12373878ac0ff21afe/Textures/perilShot.pcx -------------------------------------------------------------------------------- /Textures/pulseicon.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OldUnreal/oldskool/4d62dc50c33b9afddd719a12373878ac0ff21afe/Textures/pulseicon.pcx -------------------------------------------------------------------------------- /Textures/shinShot.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OldUnreal/oldskool/4d62dc50c33b9afddd719a12373878ac0ff21afe/Textures/shinShot.pcx -------------------------------------------------------------------------------- /Textures/shrakShot.pcx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OldUnreal/oldskool/4d62dc50c33b9afddd719a12373878ac0ff21afe/Textures/shrakShot.pcx --------------------------------------------------------------------------------