[Setup] Product=Pinata Version=200 Archive=Pinata.umod SrcPath=. MasterPath=.. Requires=UnrealTournamentRequirement Group=SetupGroup Group=PinataGroup Group=umodIncludeFilesGroup [UnrealTournamentRequirement] Product=UnrealTournament Version= [SetupGroup] Copy=(Src=System\Manifest.ini,Master=System\Manifest.ini,Size=455,Flags=3) Copy=(Src=System\Manifest.int,Master=System\Manifest.int,Size=412,Flags=3) [PinataGroup] File=(Src=System\Pinata.int,Size=185) File=(Src=System\Pinata.u,Size=22139) [umodIncludeFilesGroup] File=(Src=Help\Pinata_readme.txt,Size=1196) [Setup] LocalProduct=Pinata ReadMe=Help\Pinata_readme.txt SetupWindowTitle=Pinata AutoplayWindowTitle=Pinata Options ProductURL=none VersionURL=none Developer=shiftre DeveloperURL=none [UnrealTournamentRequirement] LocalProduct=UnrealTournament ProductURL=http://www.unrealtournament.com/ VersionURL=http://unreal.epicgames.com/ Developer=Epic Games, Inc. DeveloperURL=http://www.epicgames.com/ [Public] Object=(Name=Pinata.PinataModMenuItem,Class=Class, MetaClass=UMenu.UMenuModMenuItem) Object=(Name=Pinata.Pinata,Class=Class,MetaClass=Engine.Mutator,Description="Piata") *D@7BSXTPwkCU7NoneBecomePickup setVelocityPinataPinataClientWindowSystemSetTextCore SetValueAddItemUWindowCreatedCreateControl ScoreKilldropRandomHealthEnginePinataConfigWindowNotifySetFont HealthDrop MenuCaption MenuHelpPickupExecutePinataModMenuItem BeginPlay GetValue2UMenu TossWeaponPostBeginPlayClosedropped SetEditableStaticSaveConfigiYZModeX ScriptTextbCollideWorldC TextBufferEMutatorTemp Location bCanThrowOtherKillerFloatProperty RespawnTime TimerRatespeedOwner NextMutatorweapInv bTossedOutCharge bCheckedPickupAmmoCount AmmoType Velocity InventoryWeaponImpactHammerBoolProperty FunctionVectorClassPackageStruct StrPropertyStructPropertyClassPropertyTimerCounter ClientClassAmmo bSizableUWindowPulldownMenuItemUWindowSmallCloseButtonUWindowSmallButtonUWindowDialogClientWindowUWindowFramedWindowUWindowComboControlUWindowRootWindowUWindowCheckboxUWindowDialogControlUWindowWindowUWindowPulldownMenuSetSizeCreateWindow WindowTitleParentWindowNotifyWindowWinLeftEditBoxWidth WinHeight WinWidthWinTopRootCancelButton CloseButton GameMode TimeChargeActorPawnObject RemoteRoleUMenuModMenuItembInitialized MenuItemBotpackut_jumpbootsUDamage HealthPackMedBox HealthVial FinalCount NoPowerups checkbox IntPropertyBytePropertyObjectProperty ChainSaw bWeaponStay AmmoAmountWarheadLauncher noWeapons firstpassudamjbootslottery/5T>1pTԋ Tԋ TԈj@j@TԈj@j@TԈj@j@TԈj@j@TԈj@j@TԈj@TԌTԎ={ѸBTԈj@TԌTԌTԎ={TԎ={ѸB={={TԎ={={={={={={={8 8 8 8 8 TԒ8 8 8 ɫɫɫTԑɫɫɫɫj@j@TԈj@j@j@TԈj@j@1pEGÆEGÆEG'  ()&$|EGã~_43#|.Xچ3#.'l_4_4_4_4_4_4_4_4_4_4|.Xڅ|.Xڇ7XÇ7XÍВ_4W߅|.XچW߉.'l_4_4_4_4_4_4_4_4_4_4|.Xڅ|.Xڇ7XÇ7XÍВ_4 ;|.Xچ ;.'l_4_4_4_4_4_4_4_4_4_4|.Xڅ|.Xڇ7XÇ7XÍВ_4i|.Xچi.'l_4_4_4_4_4_4_4_4_4_4|.Xڅ|.Xڇ7XÇ7XÍВ_4'q|.Xچ'q.'l_4_4_4_4_4_4_4_4_4_4|.Xڅ|.Xڇ7XÇ7XÍВ_43|.Xچ3.'l_4_4_4_4_4_4_4_4_4_4|.Xڅ|.Xڇ7XÇ7XÍВ_4|.Xچ>.'l_4_4_4_4_4_4_4_4_4_4|.Xڅ|.Xڇ7XÇ7XÍВ_4b>|.Xچb>.'l_4_4_4_4_4_4_4_4_4_4|.Xڅ|.Xڇ7XÇ7XÍВ_4>|.Xچ>.'l_4_4_4_4_4_4_4_4_4_4|.Xڅ|.Xڇ7XÇ7XÍВ_4&d|.Xچ&d.'l_4_4_4_4_4_4_4_4_4_4|.Xڅ|.Xڇ7XÇ7XÍВ_4>|.Xچ>.'l_4_4_4_4_4_4_4_4_4_4|.Xڅ|.Xڇ7XÇ7XÍВ  @@@# 3,2!VMo o  015 $ J-(-(h,-'||,-'  --'-(  $ b  |%//============================================================================= // PinataClientWindow. //============================================================================= class PinataClientWindow expands UWindowDialogClientWindow config; var UWindowComboControl gamemode; var UWindowCheckBox checkbox; var UWindowSmallButton CloseButton; var UWindowSmallCloseButton CancelButton; //Pinata config file variables var() config bool noWeapons; var() config bool noPowerups; var() config bool HealthDrop; function Created() { Super.Created(); // Combo box. gamemode = UWindowComboControl( CreateControl( class'UWindowComboControl', 10, 10, 200, 1 ) ); gamemode.SetText( "Game Mode: " ); gamemode.SetFont(F_Normal); gamemode.SetEditable( FALSE ); gamemode.EditBoxWidth = 115; gamemode.AddItem("Drop All", "1"); gamemode.AddItem("Drop PowerUps Only", "2"); gamemode.AddItem("Drop Weapons Only", "3"); if (noWeapons) gamemode.SetValue ("Drop PowerUps Only","2"); else if (noPowerups) gamemode.SetValue ("Drop Weapons Only","3"); else gamemode.SetValue ("Drop All","1"); checkbox = UWindowCheckBox(CreateControl(class'UWindowCheckBox', 10, 45, 150, 1)); checkbox.SetText("Random Health Drop"); checkbox.bChecked = HealthDrop; CloseButton = UWindowSmallButton(CreateWindow(class'UWindowSmallButton', 94 , 80, 48, 16)); CloseButton.SetText( "Close" ); CloseButton.NotifyWindow = Self; // Cancel button CancelButton = UWindowSmallCloseButton(CreateWindow(class'UWindowSmallCloseButton', 152, 80, 48, 16)); CancelButton.SetText( "Cancel" ); } function Notify( UWindowDialogControl C, byte E ) { local int mode; Super.Notify( C, E ); switch(E) { case DE_Change: switch(C) { case gamemode: mode = int(gamemode.GetValue2()); noPowerups = false; noWeapons = false; if (mode==3) noPowerups = true; else if (mode==2) noWeapons = true; class'Pinata'.static.StaticSaveConfig(); break; case checkbox: if (checkbox.bChecked) HealthDrop = true; else HealthDrop = false; class'Pinata'.static.StaticSaveConfig(); break; } case DE_Click: switch(C) { case CloseButton: SaveConfig(); ParentWindow.Close(); break; } } } * 3Configure Pinata -' + X\CB?,?, .22-%;Bͷ;aGV撩o  ]&Pinata Setup]Sets up the Pinata Mutator]//============================================================================= // PinataModMenuItem. //============================================================================= class PinataModMenuItem expands UMenuModMenuItem; function Execute() { MenuItem.Owner.Root.CreateWindow(class'PinataConfigWindow',10,10,150,100); } Nb//============================================================================= // Pinata. // Author: |404|shiftre // Pawn drops all inventory, powerups only, or weapons only when killed //============================================================================= class Pinata expands Mutator; var bool noWeapons; var bool noPowerups; var bool HealthDrop; var bool bInitialized; function PostBeginPlay() { if ( bInitialized ) return; noWeapons = class'PinataClientWindow'.Default.noWeapons; noPowerups = class'PinataClientWindow'.Default.noPowerups; HealthDrop = class'PinataClientWindow'.Default.HealthDrop; bInitialized = TRUE; } function ScoreKill(Pawn Killer, Pawn Other) { local actor dropped; local float speed; local float temp; local int charge; local int finalcount; local int timecharge; local bool firstpass; local vector X,Y,Z; //Local list of droppable inv types local inventory inv; local weapon weap; local udamage udam; local ut_jumpboots jboots; //No, not those EverCamped items ;) firstpass = true; //Cycle through inventory, dropping weapons, pickups and armor for (inv=Other.Inventory; inv!=None; inv=inv.Inventory) { weap = Weapon(inv); if ( (weap != None)) { //If noWeapons selected, toss out selected item only (if allowable) if (noWeapons) { if (firstpass) { //This prevents redeemer from being dropped owner kills himself with it if (WarheadLauncher(Other.Weapon)!=none && Other.Weapon.AmmoType.AmmoAmount == 0) { Other.Inventory.Destroy(); continue; } else if (ImpactHammer(Other.Weapon)==None && ChainSaw(Other.Weapon)==None && Other.Weapon.bCanThrow) { Other.TossWeapon(); } firstpass = false; } continue; } //Get ammo count for this weapon charge = weap.AmmoType.AmmoAmount; if (WarheadLauncher(weap)!=none && charge == 0) continue; //Do not drop if impact hammer or chainsaw if (ImpactHammer(weap)!= None || ChainSaw(weap)!=none || !weap.bCanThrow) continue; //Spawn this item & set attributes dropped = Spawn(weap.Class,,,Other.Location); weap = Weapon(dropped); if (charge ==0) weap.PickupAmmoCount=1; else weap.PickupAmmoCount = charge; if ( weap != None ) { weap.RespawnTime = 0.0; //don't respawn weap.BecomePickup(); weap.bTossedOut = true; weap.bWeaponStay = false; weap.GotoState('PickUp', 'Dropped'); } } else if (!noPowerUps) { if (UDamage(inv) != None) { udam = UDamage(inv); if (udam != None) { //don't make much sense, but works if (udam.TimerRate-udam.TimerCounter < 5) charge = 50; else charge =((udam.TimerRate-udam.TimerCounter)*10); dropped = Spawn(udam.Class,,,Other.Location); udam = UDamage(dropped); udam.Charge = charge; if (udam != None) { udam.RespawnTime = 0.0; udam.BecomePickup(); } } } else if (UT_jumpboots(inv) != None) { jboots = UT_jumpboots(inv); if (jboots != None) { //Since jboots have a timelimit & charge limit, record both timecharge = jboots.TimeCharge; charge = jboots.Charge; dropped = Spawn(jboots.Class,,,Other.Location); jboots = UT_jumpboots(dropped); jboots.TimeCharge = timecharge; jboots.Charge = charge; if (jboots != None) { jboots.RespawnTime = 0.0; jboots.BecomePickup(); } } } //Else drop anything else that is not ammo (dropped with weapons) else if (Ammo(inv) == None) { charge = inv.Charge; dropped = Spawn(inv.Class,,,Other.Location); inv = Inventory(dropped); inv.Charge = charge; if (inv != None) { inv.RespawnTime = 0.0; inv.BecomePickup(); } } } //Now set the speed of the dropped item based off victom's speed setVelocity (Other, dropped); //Destroy Item from victom's inventory Other.Inventory.Destroy(); } if (HealthDrop) dropRandomHealth (Other); //Call next mutator down the line if ( NextMutator != None ) NextMutator.ScoreKill(Killer, Other); } function dropRandomHealth (Pawn Other) { local int lottery; local int i; local actor dropped; local float speed; lottery = Rand(100); //BroadcastMessage ("Random ->"@lottery); if (lottery<=25); else if (lottery<=55) { for (i=0; i<2; i++) { dropped = Spawn(class'HealthVial',,,Other.Location); setVelocity (Other, dropped); Inventory(dropped).RespawnTime = 0.0; Inventory(dropped).BecomePickup(); } } else if (lottery<=70) { dropped = Spawn(class'MedBox',,,Other.Location); setVelocity (Other, dropped); Inventory(dropped).RespawnTime = 0.0; Inventory(dropped).BecomePickup(); } else if (lottery<=85) { for (i=0; i<5; i++) { dropped = Spawn(class'HealthVial',,,Other.Location); setVelocity (Other, dropped); Inventory(dropped).RespawnTime = 0.0; Inventory(dropped).BecomePickup(); } } else if (lottery<=98) { for (i=0; i<1; i++) { dropped = Spawn(class'MedBox',,,Other.Location); setVelocity (Other, dropped); Inventory(dropped).RespawnTime = 0.0; Inventory(dropped).BecomePickup(); } } else if (lottery<=100) { dropped = Spawn(class'HealthPack',,,Other.Location); setVelocity (Other, dropped); Inventory(dropped).RespawnTime = 0.0; Inventory(dropped).BecomePickup(); } } //Set's the velocity of an actor dropped by pawn Other function setVelocity (Pawn Other, Actor dropped) { local float speed; //Now set the speed of the dropped item based off victom's speed speed = VSize(Other.Velocity); if ( dropped != None ) { dropped.RemoteRole = ROLE_DumbProxy; dropped.SetPhysics(PHYS_Falling); dropped.bCollideWorld = true; if (speed != 0) dropped.Velocity = Normal(Other.Velocity/speed + 0.5 * VRand()) * (speed + 280); else { dropped.Velocity.X = 0; dropped.Velocity.Y = 0; dropped.Velocity.Z = 0; } } } % *\.  A AHC?Game Mode: % (B Drop All1 Drop PowerUps Only2 Drop Weapons Only3-Drop PowerUps Only2fJ-Drop Weapons Only3fDrop All1.  A4BC?Random Health Drop--. BB@BAClose. CB@BACancel < ! A ACB k //============================================================================= // PinataConfigWindow. //============================================================================= class PinataConfigWindow expands UWindowFramedWindow; function BeginPlay() { Super.BeginPlay(); //Set the title of the Framed Window WindowTitle = "Configure Pinata"; //The class of the content ClientClass = class'PinataClientWindow'; bSizable = true; } function Created() { Super.Created(); SetSize(220, 120); WinLeft = (Root.WinWidth - WinWidth) / 2; WinTop = (Root.WinHeight - WinHeight) / 2; } W -  - -- -- -- ' 7 w*$o$-'?%  ??6 6 6  4"+5f-',w*.dw*--w.*$%ar.*r.*--(Xw.* %w.*w.*- a  . %&aw*-'-( q!!-pw.*.mw*?,,2D,  a  . mw*Sw.* .Pw *   a    .   Pw *  r.* a  . w* a@-dw*" 6 ,d,~,7 % ,a    .. ,~ ,Fa    ..~,U % ,a    .. ~,b % &a    .. ~~,da     .. G FUGGFWFFFRF@FYGqFjFkFQFAFlF|FrFs23FDJ.FCFTFzF,HEJ?z;|AFNF*|@F2FnFSGKF|eD\FJFV|7zz=D 2c2bC<FvziFPC/FXF}2LD!FB24DD DFu|>F@D[|^DC(C~{m2aI]FZKM2$2#|pD2&2d2`DCOF{C:Ft|_|6${ W!7R.68_.69l.60y.hF/6CS/6; `/6Dl/70y/7" F06R05_0$`Hl07E LyyXy55 eyA qy }ygIzx Vz$% bz6B nz$)zzx G{50S{A `{6i l{fx{ E|$+Q|o ^|gj|61Q~6&^~Gk~6$r'4G&75 F6w R65 ^6- j!@v! VvcL-'4ho'4YbW6#p a}-I^!'4v gP]@m@mgmPiata v2 Description: Get your party bags ready kids! When finishing off an oppenent in this mutator, they will drop all the goodies in their inventory, which includes all guns and/or powerups (is configurable). A random health drop mode has been added in this version. Instructions: With the umod version just double click on the pinata.umod and follow the instructions. There are three gametypes and a random health drop mode you can select from in Mod/Pinata Setup: drop_All: Drop all powerups and weapons in inventory on death drop_Powerups_Only: Drops all powerups and only held weapon on death drop_Weapons_Only: Drops all weapons in inventory on death, not powerups Random Health Drop: Players drop random health items when killed Notes: - The weapon stay problem in the last version has been fixed Enjoy the party! -|404|shiftre Suggestions are welcome: shiftre@hotmail.com ---------------------------------------------- Note: For those of you that don't know what a piata is, this may help: pinata n : a container filled with toys and candy; suspended from a height for blindfolded children to break with sticks - hehe >:)System\Manifest.iniSSystem\Manifest.intSSystem\Pinata.intSystem\Pinata.u{VHelp\Pinata_readme.txt#[_`