[Setup] Product=FatTag Version=110 Archive=FatTag.umod SrcPath=. MasterPath=.. Requires=UnrealTournamentRequirement Group=SetupGroup Group=FatTagGroup [UnrealTournamentRequirement] Product=UnrealTournament Version= [SetupGroup] Copy=(Src=System\Manifest.ini,Master=System\Manifest.ini,Size=392,Flags=3) Copy=(Src=System\Manifest.int,Master=System\Manifest.int,Size=527,Flags=3) [FatTagGroup] File=(Src=Help\FatTag.txt,Size=1403) File=(Src=System\FatTag.u,Size=11117) File=(Src=System\FatTag.int,Size=105) [Setup] LocalProduct=FatTag ReadMe=Help\FatTag.txt SetupWindowTitle=Tag! You're Fat! AutoplayWindowTitle=FatTag Options ProductURL=http://www.cgocable.net/~alamar/UTDev/ VersionURL=http://www.cgocable.net/~alamar/UTDev/ Developer=Worlds of Wonder Games DeveloperURL=http://www.cgocable.net/~alamar/ [UnrealTournamentRequirement] LocalProduct=UnrealTournament ProductURL=http://www.unrealtournament.com/ VersionURL=http://unreal.epicgames.com/ Developer=Epic Games, Inc. DeveloperURL=http://www.epicgames.com/ Mod Name: "FatTag", or, "Tag! You're Fat" Mod Type: Mutator Author: Nathan Davies(alamar@cgocable.net) Version: 1.1 Info: FatTag is my first Mutator. This is a completely Original piece of work, except for the Tag part :) This mutator works great in combination with any others, and any game modes. The only concerns could be with instagib(double and half damage are useless) and friendly fire games(some players will kill their own teammates to be tagged). Enjoy... Rules/Scoring: - The first person to kill another becomes the first Tagged Player. - If a Tagged player dies, by any means, they lose the Tag. - If the Tagged player was killed by another player, that player gets the tag - Killing a Tagged player scores you 2 points Effects: Upon being tagged, one of these things will happen the whole time you're Tagged - 3/9 chance you will Jump 1.5x as high - 2/9 chance you will Move 1.5x as fast - 1/9 chance you will Deal Double Damage - 1/9 chance you will Take Half Damage - 1/9 chance you will gain Regeneration - 1/9 chance you will get an extra frag per kill -== Version History ==- 1.1 - Added Regen Effect - Fixed Stronger, Tougher Effects - Added Kill/Time Stats 1.0 - Added Higher, Faster, Stronger, Tougher, Bonus Points Effects Áƒ*žEF@Ş)&ž(،G'rţĚIż’‹ž5˝ŒFNoneClientMessage UntagPawnTagPawnMutatorTakeDamageFatTagPlayerJumpZScalingSystem ScoreKillCoreEngineTimerRegisterDamageMutatorPostBeginPlay TextBufferObjectVectorClass FunctionPackagePawnStruct StrPropertyPlayerReplicationInfo GameInfo LevelInfoMutator NamePropertyActor ScriptText DamageTypeLevelObjectPropertyFloatPropertyFatness BoolPropertyJumpZStructPropertyHealthOtherMsgKiller actualDamage Momentum HitLocation PlayerNameScoreGame nextPawn PawnListNextDamageMutatorVictim instigatedBy DieCount KillCount IntProperty Initialized TaggedPawn TagEffectThePawn TaggedTimeMaxTaggedTimeMaxTaggedTimePawn TaggedKillsMaxTaggedKillsMaxTaggedKillsPawn ByteProperty GroundSpeedTempFloatTime TempIntTime @‚‚€‚€‚€‚€‚   ‚‚€€‚€‚€™€™€Md// "Tag, You're Fat" Version 1.0 class FatTag expands Mutator; var bool Initialized; var Pawn TaggedPawn; var int TagEffect; var Pawn ThePawn; var string Msg; var float TaggedTime, MaxTaggedTime; var Pawn MaxTaggedTimePawn; var int TaggedKills, MaxTaggedKills; var Pawn MaxTaggedKillsPawn; function PostBeginPlay() { if( Initialized ) return; Initialized = True; SetTimer( 0.5, True ); Level.Game.RegisterDamageMutator( Self ); } function Timer() { if( TaggedPawn != None ) { TaggedTime += 0.5; if( TagEffect == 8 && TaggedPawn.Health < TaggedPawn.Default.Health ) { // Regen TaggedPawn.Health++; if( TaggedPawn.Health > TaggedPawn.Default.Health ) TaggedPawn.Health = TaggedPawn.Default.Health; } } } function MutatorTakeDamage( out int ActualDamage, Pawn Victim, Pawn InstigatedBy, out Vector HitLocation, out Vector Momentum, name DamageType ) { if( TagEffect == 6 && InstigatedBy == TaggedPawn ) ActualDamage *= 2; if( TagEffect == 7 && Victim == TaggedPawn ) ActualDamage /= 2; if( NextDamageMutator != None ) NextDamageMutator.MutatorTakeDamage( ActualDamage, Victim, InstigatedBy, HitLocation, Momentum, DamageType ); } function ScoreKill( Pawn Killer, Pawn Other ) { Other.DieCount++; if( Killer != Other && Other != None && Killer != None ) { // Normal Kill Killer.KillCount++; if( TaggedPawn == None ) { // If no Tagged Player yet TagPawn( Killer ); } else if( Killer == TaggedPawn ) { // Tagged Player killed Another, Three points total if No Random Effect if( TagEffect == 0 ) Killer.PlayerReplicationInfo.Score += 1; TaggedKills++; } else if( Other == TaggedPawn ) { // Tagged Player was killed, Bonus Points Killer.PlayerReplicationInfo.Score += 1; UntagPawn( Other ); TagPawn( Killer ); } } if(( Other != None ) && (( Killer == None ) || ( Killer == Other )) && Other == TaggedPawn ) { // Tagged Pawn Suicide UntagPawn( Other ); } Super.ScoreKill( Killer, Other ); } function TagPawn( Pawn Victim ) { Victim.Fatness = 255; Msg = Victim.PlayerReplicationInfo.PlayerName $ " is FAT!"; for( ThePawn = Level.PawnList; ThePawn != None; ThePawn = ThePawn.nextPawn ) { if( ThePawn != Victim ) { ThePawn.ClientMessage( Msg ); } } Msg = "Tag! You're Fat! ... "; // Random Extra Effect TagEffect = Rand( 9 ); // # Between 0 & 8 Inclusive if( TagEffect >= 1 && TagEffect <= 3 ) //3x chance { Msg = Msg $ "Higher"; Victim.Jumpz = Victim.default.jumpz * Level.Game.PlayerJumpZScaling() + 320; } else if( TagEffect >= 4 && TagEffect <= 5 ) //2x chance { Msg = Msg $ "Faster"; Victim.Groundspeed = Victim.default.Groundspeed + 160; } else if( TagEffect == 6 ) Msg = Msg $ "Stronger"; // 6 = Stronger( 2 x Damage ) else if( TagEffect == 7 ) Msg = Msg $ "Tougher"; // 7 = Tougher( Take 1/2 Damage ) else if( TagEffect == 8 ) Msg = Msg $ "Regen"; // 8 = Regen( Regenerate 2/s ) // Not in yet else Msg = Msg $ "Bonus Points"; // 0 = Extra Frag per kill Victim.ClientMessage( Msg, , True ); TaggedPawn = Victim; } function UntagPawn( Pawn Victim ) { local float TempFloatTime; local int TempIntTime; if( Victim == None ) return; Victim.Fatness = Victim.Default.Fatness; Victim.ClientMessage( "You lost weight!", , True ); Msg = Victim.PlayerReplicationInfo.PlayerName $ " lost weight!"; for( ThePawn = Level.PawnList; ThePawn != None; ThePawn = ThePawn.nextPawn ) { if( ThePawn != Victim ) { ThePawn.ClientMessage( Msg ); } } Victim.Groundspeed = Victim.Default.Groundspeed; Victim.Jumpz = Victim.Default.Jumpz; TagEffect = 0; // If the MaxTaggedKills record was broken... if( TaggedKills > MaxTaggedKills ) { // Record a new MaxTaggedKillsPawn MaxTaggedKillsPawn = Victim; MaxTaggedKills = TaggedKills; Msg = "New Max Tagged Kills record of " $ MaxTaggedKills $ " scored by " $ MaxTaggedKillsPawn.PlayerReplicationInfo.PlayerName; for( ThePawn = Level.PawnList; ThePawn != None; ThePawn = ThePawn.nextPawn ) ThePawn.ClientMessage( Msg ); } else { Msg = "Current Max Tagged Kills record of " $ MaxTaggedKills $ " kills, scored by " $ MaxTaggedKillsPawn.PlayerReplicationInfo.PlayerName; for( ThePawn = Level.PawnList; ThePawn != None; ThePawn = ThePawn.nextPawn ) ThePawn.ClientMessage( Msg ); } // If the MaxTaggedTime record was broken... if( TaggedTime > MaxTaggedTime ) { // Record a new MaxTaggedTimePawn MaxTaggedTimePawn = Victim; MaxTaggedTime = TaggedTime; Msg = "New Max Tagged Time record of "; if( TaggedTime <= 60.0 ) { TempIntTime = ( MaxTaggedTime * 100 ); Msg = Msg $ ( TempIntTime / 100 ) $ " seconds"; } else if( TaggedTime < 3600.0 ) { TempIntTime = ( MaxTaggedTime * 100 / 60 ); Msg = Msg $ ( TempIntTime / 100 ) $ " minutes"; } else { TempIntTime = ( MaxTaggedTime * 100 / 3600 ); Msg = Msg $ ( TempIntTime / 100 ) $ " hours"; } Msg = Msg $ " scored by " $ MaxTaggedTimePawn.PlayerReplicationInfo.PlayerName; for( ThePawn = Level.PawnList; ThePawn != None; ThePawn = ThePawn.nextPawn ) ThePawn.ClientMessage( Msg ); } else { Msg = "Current Max Tagged Time record of " $ MaxTaggedTime $ " seconds, scored by " $ MaxTaggedTimePawn.PlayerReplicationInfo.PlayerName; for( ThePawn = Level.PawnList; ThePawn != None; ThePawn = ThePawn.nextPawn ) ThePawn.ClientMessage( Msg ); } TaggedKills = 0; TaggedTime = 0; TaggedPawn = None; } œ=‚8Ľ¤ႂw w* w*ĽŁbr*áĄr—š%¸‰š?&Ľ áár¸‰š?&&‚‚w*„r* r rœ Ÿ U7 - -'a?'ˆ—  h{ ,”=,˙p‰Œ is FAT!ˆŽ”w*}w OTag! You're Fat! ... §, ,‚™& ˜,pHigher‘ŽŤ‘ˆ—?@ €‚™, ˜,pFaster’Ž’?,  Śš,pStronger Ëš,pTougher îš,pRegen pBonus Points  '   ˙–”w*¸ ?”‚š,–‹‹Ľ‹”—‹‹‹‹ •—č r* ””You lost weight! 'p‰Œ lost weight!ˆŽÔw*˝w ’’‘‘%Ţ—    pppNew Max Tagged Kills record of S  scored by ‰ŒˆŽŰw* ĽŠpppCurrent Max Tagged Kills record of S  kills, scored by ‰ŒˆŽŠw* T ą    New Max Tagged Time record of ˛ pB DŤ ?,dppS‘ ,d seconds f° aE DŹŤ ?,d?,<ppS‘ ,d minutes  DŹŤ ?,d?ppS‘ ,d hourspp scored by ‰ŒˆŽw* çÍpppCurrent Max Tagged Time record of U  seconds, scored by ‰ŒˆŽÍw* — % * Š˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙E;›Šl€¤ă‚9ë }‚9ë }‚9ë }‚9ë }„.ę;ű…’ÔűR‚9ë }‚9ë }‚9ë }‚9ë }‚9ë }‚9ë }‚9ë }‚9ë }„.ę;ű…’ÔűR‚9ë }‚9ë }‚9ë }‚9ë }„.ę;ű…’ÔűR‚9ë }‚9ë }‚9ë }‚9ë }„.ę;ű…’ÔűR‚9ë }‚9ë }‚9ë }‚9ë }„.ę;ű…’ÔűR‚9ë }‚9ë }‚9ë }‚9ë }‚9ë }„.ę;ű…’ÔűR‚9ë }‚9ë }‚9ë }‚9ë }‚9ë }…’ÔűR˜Ăš‚9ë }‚9ë }‚9ë }‚9ë }‚9ë }‚9ë }„.ę;ű‚9ë }„.ę;űŠl€¤ă‚9ë }‚9ë }‚9ë }‚9ë }‚9ë }‚9ë }‚9ë }…’ÔűR˜Ăš • Ľ1 ˆ'‚š, rŸ?,N‚š, r ?,†w›*›$   ˙˙˙˙  ˙˙˙˙ ˙˙˙˙ ˙˙˙˙ ý˙˙˙ ú˙˙˙ ţ˙˙˙ ˙˙˙˙ 7ţ˙˙˙& ü˙˙˙- ý˙˙˙ ű˙˙˙1 ţ˙˙˙0 ý˙˙˙7 !ţ˙˙˙$ !ţ˙˙˙C ý˙˙˙! Bú˙˙˙" ý˙˙˙ ý˙˙˙% ű˙˙˙/ ˙˙˙˙ ë˙˙˙ !ü˙˙˙. ö˙˙˙2 ö˙˙˙ ý˙˙˙# ý˙˙˙ ú˙˙˙ ú˙˙˙ ý˙˙˙ ý˙˙˙ 7ţ˙˙˙6 7ţ˙˙˙5 ö˙˙˙ ý˙˙˙˘( A‡; M‡9 Z: g‡3 s‡) @‡' M‡3 Z“= gE s“< ? K@ W‡> c‡A p* }‡3 I‡4 V8 c–, o–+ |ž IĄ4XdUœ_mzŸ AL~`M  |m…Ji‡Šq s•“D d Ľnp [Public] Object=(Name=FatTag.FatTag,Class=Class,MetaClass=Engine.Mutator,Description="Tag! You're Fat")System\Manifest.iniSystem\Manifest.intHelp\FatTag.txt#{System\FatTag.už m+System\FatTag.int 5iŁĹăŸt5$6ŕ‡ńî