Compare commits

10 Commits

Author SHA1 Message Date
chacha
af7aa6e11a strip source 2026-01-28 23:44:25 +00:00
chacha
92c70eab08 version 126 => integrate with UT v469e 2026-01-27 00:46:55 +00:00
cclecle
09f6f51351 update to version 125 2025-08-26 23:29:55 +02:00
8165b5998c Update Run.sh
fix
2025-08-26 23:23:49 +02:00
da5b4ccbef Update 'Run.sh' 2023-04-15 20:03:10 +02:00
4895e6f68f Mise à jour de 'Run.sh' 2022-11-13 16:40:01 +01:00
1ecb03bc2e Mise à jour de 'Run.sh'
add getmodprefix cmd
2022-07-18 18:07:50 +00:00
161f59b51c fix config ini 2022-07-17 20:00:08 +02:00
2e46a073e2 fix help 2022-07-17 19:45:14 +02:00
32cdf2e412 Mise à jour de 'Run.sh'
implement 'config' command in Run.sh
2022-07-17 00:20:55 +00:00
13 changed files with 2687 additions and 40 deletions

View File

@@ -0,0 +1,28 @@
//=============================================================================
// DummyArenaMutator.
//=============================================================================
class DummyArenaMutator extends Arena;
/*=============================================================================
Used for no other purpose than to put an Arena mutator into the chain so ammo
will stay in LastManStanding NIUT games with weapons being cycled and no auto
incrementing of ammo. If any other arena mutator is used, this should *not*
be used (only one arena mutator at a time can be loaded).
=============================================================================*/
function bool AlwaysKeep(Actor Other)
{
if ( NextMutator != None )
return ( NextMutator.AlwaysKeep(Other) );
return false;
}
function bool CheckReplacement(Actor Other, out byte bSuperRelevant)
{
return true;
}
defaultproperties
{
}

748
Classes/NIUTConfigDialog.uc Normal file
View File

@@ -0,0 +1,748 @@
//============================================================================
// NIUTConfigDialog.
//=============================================================================
class NIUTConfigDialog expands UWindowDialogClientWindow;
var UWindowSmallCloseButton CloseButton;
var UWindowSmallButton DefaultsButton;
const AmmoTableHOffset = 120;
const AmmoTableSize = 48;
const EditControlVerticalSpacing = 18;
const PowerUpsTableOffset = 120;
const PowerUpsTableSize = 80;
const TablesVOffset = 8;
// NIUT main options
var UWindowCheckBox
CycleWeaponsCheckBox,
RandomWeaponsCheckBox,
UseAllWeaponsCheckBox;
var UWindowLabelControl
TimeBetweenWeaponSwitchesMinLC,
TimeBetweenWeaponSwitchesMaxLC,
TimeBetweenAmmoIncrementsLC,
TimeBetweenHealthIncrementsLC,
HealthIncrementAmountLC,
StartHealthLC,
MaxHealthLC;
var UWindowEditControl
TimeBetweenAmmoIncrementsEC,
TimeBetweenWeaponSwitchesMinEC,
TimeBetweenWeaponSwitchesMaxEC,
TimeBetweenHealthIncrementsEC,
HealthIncrementAmountEC,
StartHealthEC,
MaxHealthEC;
// weapons
var UWindowCheckBox
UseBioRifleCheckBox,
UseChainSawCheckBox,
UseEnforcerCheckBox,
UseFlakCannonCheckBox,
UseImpactHammerCheckBox,
UseMiniGunCheckBox,
UsePulseGunCheckBox,
UseRipperCheckBox,
UseRocketLauncherCheckBox,
UseRedeemerCheckBox,
UseShockRifleCheckBox,
UseSniperRifleCheckBox,
UseSuperShockRifleCheckBox,
UseUnrealIASMDCheckBox,
UseUnrealIAutoMagCheckBox,
UseUnrealIDispersionPistolCheckBox,
UseUnrealIFlakCannonCheckBox,
UseUnrealIEightballCheckBox,
UseUnrealIGESBioRifleCheckBox,
UseUnrealIMinigunCheckBox,
UseUnrealIRazorjackCheckBox,
UseUnrealIRifleCheckBox,
UseUnrealIStingerCheckBox;
// ammo labels
var UWindowLabelControl
InitialAmmoLC,
MaxAmmoLC,
RateAmmoLC,
BioAmmoLC,
GunAmmoLC,
FlakAmmoLC,
PulseAmmoLC,
RedeemerAmmoLC,
RifleAmmoLC,
RipperAmmoLC,
RocketAmmoLC,
ShockAmmoLC,
StingerAmmoLC;
// ammo edits - disabled if cycling weapons and not incrementing ammo
var UWindowEditControl
InitialBioAmmoEC, RateBioAmmoPerSecEC, MaxBioAmmoEC,
InitialGunAmmoEC, RateGunAmmoPerSecEC, MaxGunAmmoEC,
InitialFlakAmmoEC, RateFlakAmmoPerSecEC, MaxFlakAmmoEC,
InitialPulseAmmoEC, RatePulseAmmoPerSecEC, MaxPulseAmmoEC,
InitialRedeemerAmmoEC, RateRedeemerAmmoPerSecEC, MaxRedeemerAmmoEC,
InitialRifleAmmoEC, RateRifleAmmoPerSecEC, MaxRifleAmmoEC,
InitialRipperAmmoEC, RateRipperAmmoPerSecEC, MaxRipperAmmoEC,
InitialRocketAmmoEC, RateRocketAmmoPerSecEC, MaxRocketAmmoEC,
InitialShockAmmoEC, RateShockAmmoPerSecEC, MaxShockAmmoEC,
InitialStingerAmmoEC, RateStingerAmmoPerSecEC, MaxStingerAmmoEC;
// power ups
var UWindowLabelControl
PowerUpDelayMinLC, PowerUpDelayMaxLC, PowerUpDurationMinLC, PowerUpDurationMaxLC,
DamageAmplifierLC, JumpbootsLC, InvisibilityLC;
var UWindowEditControl
InvisibilityDelayMinEC, InvisibilityDelayMaxEC, InvisibilityDurationMinEC, InvisibilityDurationMaxEC,
DamageAmplifierDelayMinEC, DamageAmplifierDelayMaxEC, DamageAmplifierDurationMinEC, DamageAmplifierDurationMaxEC,
JumpBootsDelayMinEC, JumpBootsDelayMaxEC, JumpBootsDurationMinEC, JumpBootsDurationMaxEC;
var class<NIUTMutator> UMutator;
// used to vertically position the components
var int SpacingOffset;
var int HOffset, VOffset;
//-----------------------------------------------------------------------------
function AddCheckBox( out int HorzOffset, int HorzInc, out int VertOffset, int VertInc, out UWindowCheckBox CB, string LabelText, string HelpText, bool bChecked )
{
CB = UWindowCheckBox( CreateControl(class'UWindowCheckBox', HorzOffset, VertOffset, (WinWidth/4)-16, 16) );
CB.SetText( LabelText );
CB.SetHelpText( HelpText );
CB.SetFont(F_Normal);
CB.bChecked = bChecked;
CB.Align = TA_Left;
CB.Register(self);
HorzOffset += HorzInc;
VertOffset += VertInc;
}
//-----------------------------------------------------------------------------
function AddLabelControl( out int HorzOffset, int HorzInc, out int VertOffset, int VertInc, int Width, out UWindowLabelControl LC, string LabelText, string HelpText )
{
LC = UWindowLabelControl( CreateControl(class'UWindowLabelControl', HorzOffset, VertOffset, Width, 16) );
LC.SetText( LabelText );
LC.SetHelpText( HelpText );
LC.SetFont(F_Normal);
LC.Align = TA_Left;
LC.Register(self);
HorzOffset += HorzInc;
VertOffset += VertInc;
}
//-----------------------------------------------------------------------------
function AddIntEditControl( out int HorzOffset, int HorzInc, out int VertOffset, int VertInc, int Width, out UWindowEditControl EC, string LabelText, string HelpText, int Val, optional int MaxLen )
{
EC = UWindowEditControl(CreateControl(class'UWindowEditControl', HorzOffset, VertOffset, Width, 16));
EC.SetText( LabelText );
EC.SetHelpText( HelpText );
EC.SetFont(F_Normal);
EC.SetNumericOnly(True);
if( MaxLen != 0 )
EC.SetMaxLength( MaxLen );
else
EC.SetMaxLength(3);
EC.Align = TA_Right;
EC.EditBox.Offset = 0;
EC.EditBoxWidth = WinWidth/22;
EC.SetValue(string(Val));
EC.Register(self);
HorzOffset += HorzInc;
VertOffset += VertInc;
}
//-----------------------------------------------------------------------------
function AddFltEditControl( out int HorzOffset, int HorzInc, out int VertOffset, int VertInc, int Width, out UWindowEditControl EC, string LabelText, string HelpText, float Val )
{
EC = UWindowEditControl(CreateControl(class'UWindowEditControl', HorzOffset, VertOffset, Width, 16));
EC.SetText( LabelText );
EC.SetHelpText( HelpText );
EC.SetFont(F_Normal);
EC.SetNumericOnly(True);
EC.SetNumericFloat(True);
EC.SetMaxLength(8);
EC.Align = TA_Right;
EC.EditBox.Offset = 0;
EC.EditBoxWidth = WinWidth/11;
EC.SetValue(string(Val));
EC.Register(self);
HorzOffset += HorzInc;
VertOffset += VertInc;
}
//-----------------------------------------------------------------------------
function Created()
{
Super.Created();
// close button
CloseButton = UWindowSmallCloseButton(CreateWindow(class'UWindowSmallCloseButton', WinWidth-48, WinHeight-19, 48, 16));
// defaults button
DefaultsButton = UWindowSmallButton(CreateControl(class'UWindowSmallButton', WinWidth-96-8, WinHeight-19, 48, 16));
DefaultsButton.SetText( "Defaults" );
DefaultsButton.SetHelpText( "Restore default settings." );
// main options
HOffset = 8;
VOffset = 8;
AddCheckBox( HOffset, 0, VOffset, SpacingOffset, CycleWeaponsCheckBox, "Cycle Weapons:", "If checked, specified weapons are cycled, otherwise everyone has all specified weapons at all times (and ammo is given out automatically).", UMutator.default.bCycleWeapons );
AddCheckBox( HOffset, 0, VOffset, SpacingOffset, RandomWeaponsCheckBox, "Random Weapons:", "If checked and cycling weapons, weapons are selected randomly, otherwise weapons are selected in order.", UMutator.default.bRandomWeapons );
AddCheckBox( HOffset, 0, VOffset, SpacingOffset, UseAllWeaponsCheckBox, "Use All Weapons:", "If checked and cycling weapons randomly, each weapon will be used once each time through the list.", UMutator.default.bUseAllWeapons );
HOffset = 168;
VOffset = 8;
AddLabelControl( HOffset, 0, VOffset, EditControlVerticalSpacing, WinWidth/3, TimeBetweenWeaponSwitchesMinLC, "Min Time Between Weapon Switches:", "Minimum time (seconds) server waits between weapon switches (when cycling weapons)." );
AddLabelControl( HOffset, 0, VOffset, EditControlVerticalSpacing, WinWidth/3, TimeBetweenWeaponSwitchesMaxLC, "Max Time Between Weapon Switches:", "Maximum time (seconds) server waits between weapon switches (when cycling weapons)." );
AddLabelControl( HOffset, 0, VOffset, EditControlVerticalSpacing, WinWidth/3, TimeBetweenAmmoIncrementsLC, "Time Between Ammo Increments:", "Time (seconds) between ammo increments. Use 0.0 to disable (pickups become ammo). If set to 0.0 and weapons not cycled will default to 1.0." );
AddLabelControl( HOffset, 0, VOffset, EditControlVerticalSpacing, WinWidth/3, TimeBetweenHealthIncrementsLC, "Time Between Health Increments:", "Time (seconds) server waits between health increments." );
AddLabelControl( HOffset, 0, VOffset, EditControlVerticalSpacing, WinWidth/3, HealthIncrementAmountLC, "Health Increment Amount:", "Amount of health server will give to everyone when it is time to give out health." );
AddLabelControl( HOffset, 0, VOffset, EditControlVerticalSpacing, WinWidth/3, StartHealthLC, "Initial Health:", "Health that everyone starts out with (if 0, uses default for pawns)." );
AddLabelControl( HOffset, 0, VOffset, EditControlVerticalSpacing, WinWidth/3, MaxHealthLC, "Maximum Incremented Health:", "Maximum that health can be incremented to by server (if 0, uses default for pawns). Health vials still increment to 199." );
HOffset = 360;
VOffset = 8;
AddFltEditControl( HOffset, 0, VOffset, EditControlVerticalSpacing, WinWidth/11, TimeBetweenWeaponSwitchesMinEC, "", "Minimum time (seconds) server waits between weapon switches (when cycling weapons).", UMutator.default.TimeBetweenWeaponSwitchesMin );
AddFltEditControl( HOffset, 0, VOffset, EditControlVerticalSpacing, WinWidth/11, TimeBetweenWeaponSwitchesMaxEC, "", "Maximum time (seconds) server waits between weapon switches (when cycling weapons).", UMutator.default.TimeBetweenWeaponSwitchesMax );
AddFltEditControl( HOffset, 0, VOffset, EditControlVerticalSpacing, WinWidth/11, TimeBetweenAmmoIncrementsEC, "", "Time (seconds) server waits between giving out ammo to everyone (if 0.0, pickups become ammo for the current weapon).", UMutator.default.TimeBetweenAmmoIncrements );
AddFltEditControl( HOffset, 0, VOffset, EditControlVerticalSpacing, WinWidth/11, TimeBetweenHealthIncrementsEC, "", "Time (seconds) server waits between giving out health to everyone.", UMutator.default.TimeBetweenHealthIncrements );
AddIntEditControl( HOffset, 0, VOffset, EditControlVerticalSpacing, WinWidth/22, HealthIncrementAmountEC, "", "Amount of health server will give to everyone when it is time to give out health.", UMutator.default.HealthIncrementAmount );
AddIntEditControl( HOffset, 0, VOffset, EditControlVerticalSpacing, WinWidth/22, StartHealthEC, "", "Health that everyone starts out with (if 0, uses default for pawns).", UMutator.default.StartHealth, 4 );
AddIntEditControl( HOffset, 0, VOffset, EditControlVerticalSpacing, WinWidth/22, MaxHealthEC, "", "Maximum that health can be incremented to by server (if 0, uses default for pawns). Health vials still increment to 199.", UMutator.default.MaxHealth, 4 );
// ammo
HOffset = 8 + AmmoTableHOffset;
VOffset += TablesVOffset;
AddLabelControl( HOffset, AmmoTableSize, VOffset, 0, WinWidth/20, InitialAmmoLC, "Initial", "Amount of ammo that the weapon starts out with." );
AddLabelControl( HOffset, AmmoTableSize, VOffset, 0, WinWidth/20, MaxAmmoLC, "Max", "Maximum amount of ammo for the weapon (0 = default)." );
AddLabelControl( HOffset, AmmoTableSize, VOffset, 0, WinWidth/20, RateAmmoLC, "Rate", "Rate (amount per second) at which the weapon's ammo increments (if not cycling weapons or if AmmoIncrementRate is set)." );
HOffset = 8;
VOffset += EditControlVerticalSpacing;
AddLabelControl( HOffset, AmmoTableHOffset, VOffset, 0, WinWidth/5, BioAmmoLC, "Bio Rifle Ammo:", "" );
AddIntEditControl( HOffset, AmmoTableSize, VOffset, 0, WinWidth/22, InitialBioAmmoEC, "", "", UMutator.default.InitialBioAmmo );
AddIntEditControl( HOffset, AmmoTableSize, VOffset, 0, WinWidth/22, MaxBioAmmoEC, "", "", UMutator.default.MaxBioAmmo );
AddFltEditControl( HOffset, AmmoTableSize, VOffset, 0, WinWidth/11, RateBioAmmoPerSecEC, "", "", UMutator.default.RateBioAmmoPerSec );
HOffset = 8;
VOffset += EditControlVerticalSpacing;
AddLabelControl( HOffset, AmmoTableHOffset, VOffset, 0, WinWidth/5, GunAmmoLC, "Gun Ammo:", "" );
AddIntEditControl( HOffset, AmmoTableSize, VOffset, 0, WinWidth/22, InitialGunAmmoEC, "", "", UMutator.default.InitialGunAmmo );
AddIntEditControl( HOffset, AmmoTableSize, VOffset, 0, WinWidth/22, MaxGunAmmoEC, "", "", UMutator.default.MaxGunAmmo );
AddFltEditControl( HOffset, AmmoTableSize, VOffset, 0, WinWidth/11, RateGunAmmoPerSecEC, "", "", UMutator.default.RateGunAmmoPerSec );
HOffset = 8;
VOffset += EditControlVerticalSpacing;
AddLabelControl( HOffset, AmmoTableHOffset, VOffset, 0, WinWidth/5, FlakAmmoLC, "Flak Cannon Ammo:", "" );
AddIntEditControl( HOffset, AmmoTableSize, VOffset, 0, WinWidth/22, InitialFlakAmmoEC, "", "", UMutator.default.InitialFlakAmmo );
AddIntEditControl( HOffset, AmmoTableSize, VOffset, 0, WinWidth/22, MaxFlakAmmoEC, "", "", UMutator.default.MaxFlakAmmo );
AddFltEditControl( HOffset, AmmoTableSize, VOffset, 0, WinWidth/11, RateFlakAmmoPerSecEC, "", "", UMutator.default.RateFlakAmmoPerSec );
HOffset = 8;
VOffset += EditControlVerticalSpacing;
AddLabelControl( HOffset, AmmoTableHOffset, VOffset, 0, WinWidth/5, PulseAmmoLC, "Pulse Gun Ammo:", "" );
AddIntEditControl( HOffset, AmmoTableSize, VOffset, 0, WinWidth/22, InitialPulseAmmoEC, "", "", UMutator.default.InitialPulseAmmo );
AddIntEditControl( HOffset, AmmoTableSize, VOffset, 0, WinWidth/22, MaxPulseAmmoEC, "", "", UMutator.default.MaxPulseAmmo );
AddFltEditControl( HOffset, AmmoTableSize, VOffset, 0, WinWidth/11, RatePulseAmmoPerSecEC, "", "", UMutator.default.RatePulseAmmoPerSec );
HOffset = 8;
VOffset += EditControlVerticalSpacing;
AddLabelControl( HOffset, AmmoTableHOffset, VOffset, 0, WinWidth/5, RedeemerAmmoLC, "Redeemer Ammo:", "" );
AddIntEditControl( HOffset, AmmoTableSize, VOffset, 0, WinWidth/22, InitialRedeemerAmmoEC, "", "", UMutator.default.InitialRedeemerAmmo );
AddIntEditControl( HOffset, AmmoTableSize, VOffset, 0, WinWidth/22, MaxRedeemerAmmoEC, "", "", UMutator.default.MaxRedeemerAmmo );
AddFltEditControl( HOffset, AmmoTableSize, VOffset, 0, WinWidth/11, RateRedeemerAmmoPerSecEC, "", "", UMutator.default.RateRedeemerAmmoPerSec );
HOffset = 8;
VOffset += EditControlVerticalSpacing;
AddLabelControl( HOffset, AmmoTableHOffset, VOffset, 0, WinWidth/5, RifleAmmoLC, "Rifle Ammo:", "" );
AddIntEditControl( HOffset, AmmoTableSize, VOffset, 0, WinWidth/22, InitialRifleAmmoEC, "", "", UMutator.default.InitialRifleAmmo );
AddIntEditControl( HOffset, AmmoTableSize, VOffset, 0, WinWidth/22, MaxRifleAmmoEC, "", "", UMutator.default.MaxRifleAmmo );
AddFltEditControl( HOffset, AmmoTableSize, VOffset, 0, WinWidth/11, RateRifleAmmoPerSecEC, "", "", UMutator.default.RateRifleAmmoPerSec );
HOffset = 8;
VOffset += EditControlVerticalSpacing;
AddLabelControl( HOffset, AmmoTableHOffset, VOffset, 0, WinWidth/5, RipperAmmoLC, "Ripper Ammo:", "" );
AddIntEditControl( HOffset, AmmoTableSize, VOffset, 0, WinWidth/22, InitialRipperAmmoEC, "", "", UMutator.default.InitialRipperAmmo );
AddIntEditControl( HOffset, AmmoTableSize, VOffset, 0, WinWidth/22, MaxRipperAmmoEC, "", "", UMutator.default.MaxRipperAmmo );
AddFltEditControl( HOffset, AmmoTableSize, VOffset, 0, WinWidth/11, RateRipperAmmoPerSecEC, "", "", UMutator.default.RateRipperAmmoPerSec );
HOffset = 8;
VOffset += EditControlVerticalSpacing;
AddLabelControl( HOffset, AmmoTableHOffset, VOffset, 0, WinWidth/5, RocketAmmoLC, "Rocket Launcher Ammo:", "" );
AddIntEditControl( HOffset, AmmoTableSize, VOffset, 0, WinWidth/22, InitialRocketAmmoEC, "", "", UMutator.default.InitialRocketAmmo );
AddIntEditControl( HOffset, AmmoTableSize, VOffset, 0, WinWidth/22, MaxRocketAmmoEC, "", "", UMutator.default.MaxRocketAmmo );
AddFltEditControl( HOffset, AmmoTableSize, VOffset, 0, WinWidth/11, RateRocketAmmoPerSecEC, "", "", UMutator.default.RateRocketAmmoPerSec );
HOffset = 8;
VOffset += EditControlVerticalSpacing;
AddLabelControl( HOffset, AmmoTableHOffset, VOffset, 0, WinWidth/5, ShockAmmoLC, "Shock Rifle Ammo:", "" );
AddIntEditControl( HOffset, AmmoTableSize, VOffset, 0, WinWidth/22, InitialShockAmmoEC, "", "", UMutator.default.InitialShockAmmo );
AddIntEditControl( HOffset, AmmoTableSize, VOffset, 0, WinWidth/22, MaxShockAmmoEC, "", "", UMutator.default.MaxShockAmmo );
AddFltEditControl( HOffset, AmmoTableSize, VOffset, 0, WinWidth/11, RateShockAmmoPerSecEC, "", "", UMutator.default.RateShockAmmoPerSec );
HOffset = 8;
VOffset += EditControlVerticalSpacing;
AddLabelControl( HOffset, AmmoTableHOffset, VOffset, 0, WinWidth/5, StingerAmmoLC, "Stinger Ammo:", "" );
AddIntEditControl( HOffset, AmmoTableSize, VOffset, 0, WinWidth/22, InitialStingerAmmoEC, "", "", UMutator.default.InitialStingerAmmo );
AddIntEditControl( HOffset, AmmoTableSize, VOffset, 0, WinWidth/22, MaxStingerAmmoEC, "", "", UMutator.default.MaxStingerAmmo );
AddFltEditControl( HOffset, AmmoTableSize, VOffset, 0, WinWidth/11, RateStingerAmmoPerSecEC, "", "", UMutator.default.RateStingerAmmoPerSec );
// power-ups
HOffset = 8 + PowerUpsTableOffset;
VOffset += TablesVOffset;
VOffset += EditControlVerticalSpacing;
AddLabelControl( HOffset, PowerUpsTableSize, VOffset, 0, WinWidth/10, PowerUpDelayMinLC, "Min Delay", "Min time (seconds) before power up is given to everyone (0.0 disables power up)." );
AddLabelControl( HOffset, PowerUpsTableSize, VOffset, 0, WinWidth/10, PowerUpDelayMaxLC, "Max Delay", "Max time (seconds) before power up is given to everyone (if enabled)." );
AddLabelControl( HOffset, PowerUpsTableSize, VOffset, 0, WinWidth/10, PowerUpDurationMinLC, "Min Duration", "Min duration (seconds) of power up (if enabled)." );
AddLabelControl( HOffset, PowerUpsTableSize, VOffset, 0, WinWidth/10, PowerUpDurationMaxLC, "Max Duration", "Max duration (seconds) of power up (if enabled)." );
HOffset = 8;
VOffset += EditControlVerticalSpacing;
AddLabelControl( HOffset, PowerUpsTableOffset, VOffset, 0, WinWidth/5, DamageAmplifierLC, "Damage Amplifier:", "" );
AddFltEditControl( HOffset, PowerUpsTableSize, VOffset, 0, WinWidth/11, DamageAmplifierDelayMinEC, "", "", UMutator.default.DamageAmplifierDelayMin );
AddFltEditControl( HOffset, PowerUpsTableSize, VOffset, 0, WinWidth/11, DamageAmplifierDelayMaxEC, "", "", UMutator.default.DamageAmplifierDelayMax );
AddFltEditControl( HOffset, PowerUpsTableSize, VOffset, 0, WinWidth/11, DamageAmplifierDurationMinEC, "", "", UMutator.default.DamageAmplifierDurationMin );
AddFltEditControl( HOffset, PowerUpsTableSize, VOffset, 0, WinWidth/11, DamageAmplifierDurationMaxEC, "", "", UMutator.default.DamageAmplifierDurationMax );
HOffset = 8;
VOffset += EditControlVerticalSpacing;
AddLabelControl( HOffset, PowerUpsTableOffset, VOffset, 0, WinWidth/5, JumpBootsLC, "JumpBoots:", "" );
AddFltEditControl( HOffset, PowerUpsTableSize, VOffset, 0, WinWidth/11, JumpBootsDelayMinEC, "", "", UMutator.default.JumpBootsDelayMin );
AddFltEditControl( HOffset, PowerUpsTableSize, VOffset, 0, WinWidth/11, JumpBootsDelayMaxEC, "", "", UMutator.default.JumpBootsDelayMax );
AddFltEditControl( HOffset, PowerUpsTableSize, VOffset, 0, WinWidth/11, JumpBootsDurationMinEC, "", "", UMutator.default.JumpBootsDurationMin );
AddFltEditControl( HOffset, PowerUpsTableSize, VOffset, 0, WinWidth/11, JumpBootsDurationMaxEC, "", "", UMutator.default.JumpBootsDurationMax );
HOffset = 8;
VOffset += EditControlVerticalSpacing;
AddLabelControl( HOffset, PowerUpsTableOffset, VOffset, 0, WinWidth/5, InvisibilityLC, "Invisibility:", "" );
AddFltEditControl( HOffset, PowerUpsTableSize, VOffset, 0, WinWidth/11, InvisibilityDelayMinEC, "", "", UMutator.default.InvisibilityDelayMin );
AddFltEditControl( HOffset, PowerUpsTableSize, VOffset, 0, WinWidth/11, InvisibilityDelayMaxEC, "", "", UMutator.default.InvisibilityDelayMax );
AddFltEditControl( HOffset, PowerUpsTableSize, VOffset, 0, WinWidth/11, InvisibilityDurationMinEC, "", "", UMutator.default.InvisibilityDurationMin );
AddFltEditControl( HOffset, PowerUpsTableSize, VOffset, 0, WinWidth/11, InvisibilityDurationMaxEC, "", "", UMutator.default.InvisibilityDurationMax );
// weapons
HOffset = (3*WinWidth/4) + 8;
VOffset = 8;
AddCheckBox( HOffset, 0, VOffset, SpacingOffset, UseBioRifleCheckBox, "Bio Rifle", "If checked Bio Rifle will be used.", UMutator.default.bUseBioRifle );
AddCheckBox( HOffset, 0, VOffset, SpacingOffset, UseChainSawCheckBox, "Chainsaw", "If checked Chainsaw will be used.", UMutator.default.bUseChainSaw );
AddCheckBox( HOffset, 0, VOffset, SpacingOffset, UseEnforcerCheckBox, "Enforcer", "If checked Enforcer will be used.", UMutator.default.bUseEnforcer );
AddCheckBox( HOffset, 0, VOffset, SpacingOffset, UseFlakCannonCheckBox, "Flak Cannon", "If checked Flak Cannon will be used.", UMutator.default.bUseFlakCannon );
AddCheckBox( HOffset, 0, VOffset, SpacingOffset, UseImpactHammerCheckBox, "Impact Hammer", "If checked Impact Hammer will be used.", UMutator.default.bUseImpactHammer );
AddCheckBox( HOffset, 0, VOffset, SpacingOffset, UseMiniGunCheckBox, "Minigun", "If checked Minigun will be used.", UMutator.default.bUseMiniGun );
AddCheckBox( HOffset, 0, VOffset, SpacingOffset, UsePulseGunCheckBox, "Pulse Gun", "If checked Pulse Gun will be used.", UMutator.default.bUsePulseGun );
AddCheckBox( HOffset, 0, VOffset, SpacingOffset, UseRedeemerCheckBox, "Redeemer", "If checked Redeemer will be used.", UMutator.default.bUseRedeemer );
AddCheckBox( HOffset, 0, VOffset, SpacingOffset, UseRipperCheckBox, "Ripper", "If checked Ripper will be used.", UMutator.default.bUseRipper );
AddCheckBox( HOffset, 0, VOffset, SpacingOffset, UseRocketLauncherCheckBox, "Rocket Launcher", "If checked Rocket Launcher will be used.", UMutator.default.bUseRocketLauncher );
AddCheckBox( HOffset, 0, VOffset, SpacingOffset, UseShockRifleCheckBox, "Shock Rifle", "If checked Shock Rifle will be used.", UMutator.default.bUseShockRifle );
AddCheckBox( HOffset, 0, VOffset, SpacingOffset, UseSniperRifleCheckBox, "Sniper Rifle", "If checked Sniper Rifle will be used.", UMutator.default.bUseSniperRifle );
AddCheckBox( HOffset, 0, VOffset, SpacingOffset, UseSuperShockRifleCheckBox, "Super Shock Rifle", "If checked Super Shock Rifle will be used.", UMutator.default.bUseSuperShockRifle );
VOffset += SpacingOffset;
AddCheckBox( HOffset, 0, VOffset, SpacingOffset, UseUnrealIASMDCheckBox, "UnrealI ASMD*", "If checked UnrealI ASMD will be used (*only works in singleplayer games).", UMutator.default.bUseUnrealIASMD );
AddCheckBox( HOffset, 0, VOffset, SpacingOffset, UseUnrealIAutoMagCheckBox, "UnrealI Auto Mag*", "If checked UnrealI Auto Mag will be used (*only works in singleplayer games).", UMutator.default.bUseUnrealIAutoMag );
AddCheckBox( HOffset, 0, VOffset, SpacingOffset, UseUnrealIDispersionPistolCheckBox,"UnrealI Dispersion Pistol*", "If checked UnrealI Dispersion Pistol will be used (*only works in singleplayer games).",UMutator.default.bUseUnrealIDispersionPistol );
AddCheckBox( HOffset, 0, VOffset, SpacingOffset, UseUnrealIEightballCheckBox, "UnrealI Eightball*", "If checked UnrealI Eightball will be used (*only works in singleplayer games).", UMutator.default.bUseUnrealIEightball );
AddCheckBox( HOffset, 0, VOffset, SpacingOffset, UseUnrealIFlakCannonCheckBox, "UnrealI Flak Cannon*", "If checked UnrealI Flak Cannon will be used (*only works in singleplayer games).", UMutator.default.bUseUnrealIFlakCannon );
AddCheckBox( HOffset, 0, VOffset, SpacingOffset, UseUnrealIGESBioRifleCheckBox, "UnrealI GES Bio Rifle*", "If checked UnrealI GES Bio Rifle will be used (*only works in singleplayer games).", UMutator.default.bUseUnrealIGESBioRifle );
AddCheckBox( HOffset, 0, VOffset, SpacingOffset, UseUnrealIMinigunCheckBox, "UnrealI Minigun*", "If checked UnrealI Minigun will be used (*only works in singleplayer games).", UMutator.default.bUseUnrealIMinigun );
AddCheckBox( HOffset, 0, VOffset, SpacingOffset, UseUnrealIRazorjackCheckBox, "UnrealI Razorjack*", "If checked UnrealI Razorjack be used (*only works in singleplayer games).", UMutator.default.bUseUnrealIRazorjack );
AddCheckBox( HOffset, 0, VOffset, SpacingOffset, UseUnrealIRifleCheckBox, "UnrealI Rifle*", "If checked UnrealI Rifle will be used (*only works in singleplayer games).", UMutator.default.bUseUnrealIRifle );
AddCheckBox( HOffset, 0, VOffset, SpacingOffset, UseUnrealIStingerCheckBox, "UnrealI Stinger*", "If checked UnrealI Stinger will be used (*only works in singleplayer games).", UMutator.default.bUseUnrealIStinger );
}
//-----------------------------------------------------------------------------
function Paint(Canvas C, float X, float Y)
{
local Texture T;
Super.Paint(C, X, Y);
T = GetLookAndFeelTexture();
}
//-----------------------------------------------------------------------------
function Close(optional bool bByParent)
{
// save NIUTMutator config
UMutator.default.bCycleWeapons = CycleWeaponsCheckBox.bChecked;
UMutator.default.bRandomWeapons = RandomWeaponsCheckBox.bChecked;
UMutator.default.bUseAllWeapons = UseAllWeaponsCheckBox.bChecked;
UMutator.default.TimeBetweenWeaponSwitchesMin = RangeFloat( float(TimeBetweenWeaponSwitchesMinEC.EditBox.Value), 0.0, 999.0 );
UMutator.default.TimeBetweenWeaponSwitchesMax = RangeFloat( float(TimeBetweenWeaponSwitchesMaxEC.EditBox.Value), 0.0, 999.0 );
UMutator.default.TimeBetweenAmmoIncrements = RangeFloat( float(TimeBetweenAmmoIncrementsEC.EditBox.Value), 0.0, 999.0 );
UMutator.default.TimeBetweenHealthIncrements = RangeFloat( float(TimeBetweenHealthIncrementsEC.EditBox.Value), 0.0, 999.0 );
UMutator.default.HealthIncrementAmount = RoundRangeInt( float(HealthIncrementAmountEC.EditBox.Value), 0, 999 );
UMutator.default.StartHealth = RoundRangeInt( float(StartHealthEC.EditBox.Value), 0, 9999 );
UMutator.default.MaxHealth = RoundRangeInt( float(MaxHealthEC.EditBox.Value), 0, 9999 );
UMutator.default.InitialBioAmmo = RoundRangeInt( float(InitialBioAmmoEC.EditBox.Value), 0, 999 );
UMutator.default.MaxBioAmmo = RoundRangeInt( float(MaxBioAmmoEC.EditBox.Value), 0, 999 );
UMutator.default.RateBioAmmoPerSec = RangeFloat( float(RateBioAmmoPerSecEC.EditBox.Value), 0.0, 100.0 );
UMutator.default.InitialGunAmmo = RoundRangeInt( float(InitialGunAmmoEC.EditBox.Value), 0, 999 );
UMutator.default.MaxGunAmmo = RoundRangeInt( float(MaxGunAmmoEC.EditBox.Value), 0, 999 );
UMutator.default.RateGunAmmoPerSec = RangeFloat( float(RateGunAmmoPerSecEC.EditBox.Value), 0.0, 100.0 );
UMutator.default.InitialFlakAmmo = RoundRangeInt( float(InitialFlakAmmoEC.EditBox.Value), 0, 999 );
UMutator.default.MaxFlakAmmo = RoundRangeInt( float(MaxFlakAmmoEC.EditBox.Value), 0, 999 );
UMutator.default.RateFlakAmmoPerSec = RangeFloat( float(RateFlakAmmoPerSecEC.EditBox.Value), 0.0, 100.0 );
UMutator.default.InitialPulseAmmo = RoundRangeInt( float(InitialPulseAmmoEC.EditBox.Value), 0, 999 );
UMutator.default.MaxPulseAmmo = RoundRangeInt( float(MaxPulseAmmoEC.EditBox.Value), 0, 999 );
UMutator.default.RatePulseAmmoPerSec = RangeFloat( float(RatePulseAmmoPerSecEC.EditBox.Value), 0.0, 100.0 );
UMutator.default.InitialRedeemerAmmo = RoundRangeInt( float(InitialRedeemerAmmoEC.EditBox.Value), 0, 999 );
UMutator.default.MaxRedeemerAmmo = RoundRangeInt( float(MaxRedeemerAmmoEC.EditBox.Value), 0, 999 );
UMutator.default.RateRedeemerAmmoPerSec = RangeFloat( float(RateRedeemerAmmoPerSecEC.EditBox.Value), 0.0, 100.0 );
UMutator.default.InitialRifleAmmo = RoundRangeInt( float(InitialRifleAmmoEC.EditBox.Value), 0, 999 );
UMutator.default.MaxRifleAmmo = RoundRangeInt( float(MaxRifleAmmoEC.EditBox.Value), 0, 999 );
UMutator.default.RateRifleAmmoPerSec = RangeFloat( float(RateRifleAmmoPerSecEC.EditBox.Value), 0.0, 100.0 );
UMutator.default.InitialRipperAmmo = RoundRangeInt( float(InitialRipperAmmoEC.EditBox.Value), 0, 999 );
UMutator.default.MaxRipperAmmo = RoundRangeInt( float(MaxRipperAmmoEC.EditBox.Value), 0, 999 );
UMutator.default.RateRipperAmmoPerSec = RangeFloat( float(RateRipperAmmoPerSecEC.EditBox.Value), 0.0, 100.0 );
UMutator.default.InitialRocketAmmo = RoundRangeInt( float(InitialRocketAmmoEC.EditBox.Value), 0, 999 );
UMutator.default.MaxRocketAmmo = RoundRangeInt( float(MaxRocketAmmoEC.EditBox.Value), 0, 999 );
UMutator.default.RateRocketAmmoPerSec = RangeFloat( float(RateRocketAmmoPerSecEC.EditBox.Value), 0.0, 100.0 );
UMutator.default.InitialShockAmmo = RoundRangeInt( float(InitialShockAmmoEC.EditBox.Value), 0, 999 );
UMutator.default.MaxShockAmmo = RoundRangeInt( float(MaxShockAmmoEC.EditBox.Value), 0, 999 );
UMutator.default.RateShockAmmoPerSec = RangeFloat( float(RateShockAmmoPerSecEC.EditBox.Value), 0.0, 100.0 );
UMutator.default.InitialStingerAmmo = RoundRangeInt( float(InitialStingerAmmoEC.EditBox.Value), 0, 999 );
UMutator.default.MaxStingerAmmo = RoundRangeInt( float(MaxStingerAmmoEC.EditBox.Value), 0, 999 );
UMutator.default.RateStingerAmmoPerSec = RangeFloat( float(RateStingerAmmoPerSecEC.EditBox.Value), 0.0, 100.0 );
UMutator.default.bUseBioRifle = UseBioRifleCheckBox.bChecked;
UMutator.default.bUseChainSaw = UseChainSawCheckBox.bChecked;
UMutator.default.bUseEnforcer = UseEnforcerCheckBox.bChecked;
UMutator.default.bUseFlakCannon = UseFlakCannonCheckBox.bChecked;
UMutator.default.bUseImpactHammer = UseImpactHammerCheckBox.bChecked;
UMutator.default.bUseMiniGun = UseMiniGunCheckBox.bChecked;
UMutator.default.bUsePulseGun = UsePulseGunCheckBox.bChecked;
UMutator.default.bUseRedeemer = UseRedeemerCheckBox.bChecked;
UMutator.default.bUseRipper = UseRipperCheckBox.bChecked;
UMutator.default.bUseRocketLauncher = UseRocketLauncherCheckBox.bChecked;
UMutator.default.bUseShockRifle = UseShockRifleCheckBox.bChecked;
UMutator.default.bUseSniperRifle = UseSniperRifleCheckBox.bChecked;
UMutator.default.bUseSuperShockRifle = UseSuperShockRifleCheckBox.bChecked;
UMutator.default.bUseUnrealIASMD = UseUnrealIASMDCheckBox.bChecked;
UMutator.default.bUseUnrealIAutoMag = UseUnrealIAutoMagCheckBox.bChecked;
UMutator.default.bUseUnrealIDispersionPistol = UseUnrealIDispersionPistolCheckBox.bChecked;
UMutator.default.bUseUnrealIEightball = UseUnrealIEightballCheckBox.bChecked;
UMutator.default.bUseUnrealIFlakCannon = UseUnrealIFlakCannonCheckBox.bChecked;
UMutator.default.bUseUnrealIGESBioRifle = UseUnrealIGESBioRifleCheckBox.bChecked;
UMutator.default.bUseUnrealIMinigun = UseUnrealIMinigunCheckBox.bChecked;
UMutator.default.bUseUnrealIRazorjack = UseUnrealIRazorjackCheckBox.bChecked;
UMutator.default.bUseUnrealIRifle = UseUnrealIRifleCheckBox.bChecked;
UMutator.default.bUseUnrealIStinger = UseUnrealIStingerCheckBox.bChecked;
UMutator.default.DamageAmplifierDelayMin = RangeFloat(float(DamageAmplifierDelayMinEC.EditBox.Value), 0.0, 999.0 );
UMutator.default.DamageAmplifierDelayMax = RangeFloat(float(DamageAmplifierDelayMaxEC.EditBox.Value), 0.0, 999.0 );
UMutator.default.DamageAmplifierDurationMin = RangeFloat(float(DamageAmplifierDurationMinEC.EditBox.Value), 0.0, 999.0 );
UMutator.default.DamageAmplifierDurationMax = RangeFloat(float(DamageAmplifierDurationMaxEC.EditBox.Value), 0.0, 999.0 );
UMutator.default.JumpBootsDelayMin = RangeFloat(float(JumpBootsDelayMinEC.EditBox.Value), 0.0, 999.0 );
UMutator.default.JumpBootsDelayMax = RangeFloat(float(JumpBootsDelayMaxEC.EditBox.Value), 0.0, 999.0 );
UMutator.default.JumpBootsDurationMin = RangeFloat(float(JumpBootsDurationMinEC.EditBox.Value), 0.0, 999.0 );
UMutator.default.JumpBootsDurationMax = RangeFloat(float(JumpBootsDurationMaxEC.EditBox.Value), 0.0, 999.0 );
UMutator.default.InvisibilityDelayMin = RangeFloat(float(InvisibilityDelayMinEC.EditBox.Value), 0.0, 999.0 );
UMutator.default.InvisibilityDelayMax = RangeFloat(float(InvisibilityDelayMaxEC.EditBox.Value), 0.0, 999.0 );
UMutator.default.InvisibilityDurationMin = RangeFloat(float(InvisibilityDurationMinEC.EditBox.Value), 0.0, 999.0 );
UMutator.default.InvisibilityDurationMax = RangeFloat(float(InvisibilityDurationMaxEC.EditBox.Value), 0.0, 999.0 );
UMutator.static.StaticSaveConfig();
Super.Close(bByParent);
}
//-----------------------------------------------------------------------------
function RestoreDefaults()
{
// restore default NIUTMutator config -- can't figure out a way to get at class defaults
// so far before these are overridden by values in the config file (no can do?).
CycleWeaponsCheckBox.bChecked = true;
RandomWeaponsCheckBox.bChecked = true;
UseAllWeaponsCheckBox.bChecked = true;
TimeBetweenWeaponSwitchesMinEC.SetValue( "75.000000" );
TimeBetweenWeaponSwitchesMaxEC.SetValue( "75.000000" );
TimeBetweenAmmoIncrementsEC.SetValue( "0.000000" );
TimeBetweenHealthIncrementsEC.SetValue( "1.000000" );
HealthIncrementAmountEC.SetValue( "5" );
StartHealthEC.SetValue( "0" );
MaxHealthEC.SetValue( "0" );
InitialBioAmmoEC.SetValue( "50" );
MaxBioAmmoEC.SetValue( "100" );
RateBioAmmoPerSecEC.SetValue( "0.250000" );
InitialGunAmmoEC.SetValue( "100" );
MaxGunAmmoEC.SetValue( "199" );
RateGunAmmoPerSecEC.SetValue( "5.000000" );
InitialFlakAmmoEC.SetValue( "12" );
MaxFlakAmmoEC.SetValue( "50" );
RateFlakAmmoPerSecEC.SetValue( "0.200000" );
InitialPulseAmmoEC.SetValue( "50" );
MaxPulseAmmoEC.SetValue( "199" );
RatePulseAmmoPerSecEC.SetValue( "2.000000" );
InitialRedeemerAmmoEC.SetValue( "0" );
MaxRedeemerAmmoEC.SetValue( "1" );
RateRedeemerAmmoPerSecEC.SetValue( "0.050000" );
InitialRifleAmmoEC.SetValue( "12" );
MaxRifleAmmoEC.SetValue( "50" );
RateRifleAmmoPerSecEC.SetValue( "0.500000" );
InitialRipperAmmoEC.SetValue( "25" );
MaxRipperAmmoEC.SetValue( "75" );
RateRipperAmmoPerSecEC.SetValue( "1.500000" );
InitialRocketAmmoEC.SetValue( "12" );
MaxRocketAmmoEC.SetValue( "48" );
RateRocketAmmoPerSecEC.SetValue( "0.250000" );
InitialShockAmmoEC.SetValue( "12" );
MaxShockAmmoEC.SetValue( "50" );
RateShockAmmoPerSecEC.SetValue( "0.670000" );
InitialStingerAmmoEC.SetValue( "50" );
MaxStingerAmmoEC.SetValue( "200" );
RateStingerAmmoPerSecEC.SetValue( "5.000000" );
UseBioRifleCheckBox.bChecked = false;
UseChainSawCheckBox.bChecked = false;
UseEnforcerCheckBox.bChecked = false;
UseFlakCannonCheckBox.bChecked = false;
UseImpactHammerCheckBox.bChecked = false;
UseMiniGunCheckBox.bChecked = true;
UsePulseGunCheckBox.bChecked = false;
UseRedeemerCheckBox.bChecked = false;
UseRipperCheckBox.bChecked = true;
UseRocketLauncherCheckBox.bChecked = true;
UseShockRifleCheckBox.bChecked = false;
UseSniperRifleCheckBox.bChecked = true;
UseSuperShockRifleCheckBox.bChecked = false;
UseUnrealIASMDCheckBox.bChecked = false;
UseUnrealIAutoMagCheckBox.bChecked = false;
UseUnrealIDispersionPistolCheckBox.bChecked = false;
UseUnrealIEightballCheckBox.bChecked = false;
UseUnrealIFlakCannonCheckBox.bChecked = false;
UseUnrealIGESBioRifleCheckBox.bChecked = false;
UseUnrealIMinigunCheckBox.bChecked = false;
UseUnrealIRazorjackCheckBox.bChecked = false;
UseUnrealIRifleCheckBox.bChecked = false;
UseUnrealIStingerCheckBox.bChecked = false;
DamageAmplifierDelayMinEC.SetValue( "240.000000" );
DamageAmplifierDelayMaxEC.SetValue( "240.000000" );
DamageAmplifierDurationMinEC.SetValue( "30.000000" );
DamageAmplifierDurationMaxEC.SetValue( "30.000000" );
JumpBootsDelayMinEC.SetValue( "0.000000" );
JumpBootsDelayMaxEC.SetValue( "0.000000" );
JumpBootsDurationMinEC.SetValue( "15.000000" );
JumpBootsDurationMaxEC.SetValue( "15.000000" );
InvisibilityDelayMinEC.SetValue( "0.000000" );
InvisibilityDelayMaxEC.SetValue( "0.000000" );
InvisibilityDurationMinEC.SetValue( "30.000000" );
InvisibilityDurationMaxEC.SetValue( "30.000000" );
}
//-----------------------------------------------------------------------------
function int RangeInt(int Num, int Min, int Max)
{
if (Num > Max)
return Max;
else if (Num < Min)
return Min;
else
return Num;
}
//-----------------------------------------------------------------------------
function float RangeFloat( float Num, float Min, float Max)
{
if (Num > Max)
return Max;
else if (Num < Min)
return Min;
else return
Num;
}
//-----------------------------------------------------------------------------
function int RoundRangeInt(float Num, int Min, int Max)
{
return RangeInt( int(Num + 0.5), Min, Max );
}
//-----------------------------------------------------------------------------
function Notify(UWindowDialogControl C, byte E)
{
Super.Notify(C, E);
if(E == DE_MouseMove)
{
if(UMenuRootWindow(Root) != None)
if(UMenuRootWindow(Root).StatusBar != None)
UMenuRootWindow(Root).StatusBar.SetHelp(C.HelpText);
}
if(E == DE_MouseLeave)
{
if(UMenuRootWindow(Root) != None)
if(UMenuRootWindow(Root).StatusBar != None)
UMenuRootWindow(Root).StatusBar.SetHelp("");
}
if( E == DE_Click )
{
switch( C )
{
case DefaultsButton:
RestoreDefaults();
break;
}
}
}
defaultproperties
{
CloseButton=None
DefaultsButton=None
CycleWeaponsCheckBox=None
RandomWeaponsCheckBox=None
UseAllWeaponsCheckBox=None
TimeBetweenWeaponSwitchesMinLC=None
TimeBetweenWeaponSwitchesMaxLC=None
TimeBetweenAmmoIncrementsLC=None
TimeBetweenHealthIncrementsLC=None
HealthIncrementAmountLC=None
StartHealthLC=None
MaxHealthLC=None
TimeBetweenAmmoIncrementsEC=None
TimeBetweenWeaponSwitchesMinEC=None
TimeBetweenWeaponSwitchesMaxEC=None
TimeBetweenHealthIncrementsEC=None
HealthIncrementAmountEC=None
StartHealthEC=None
MaxHealthEC=None
UseBioRifleCheckBox=None
UseChainSawCheckBox=None
UseEnforcerCheckBox=None
UseFlakCannonCheckBox=None
UseImpactHammerCheckBox=None
UseMiniGunCheckBox=None
UsePulseGunCheckBox=None
UseRipperCheckBox=None
UseRocketLauncherCheckBox=None
UseRedeemerCheckBox=None
UseShockRifleCheckBox=None
UseSniperRifleCheckBox=None
UseSuperShockRifleCheckBox=None
UseUnrealIASMDCheckBox=None
UseUnrealIAutoMagCheckBox=None
UseUnrealIDispersionPistolCheckBox=None
UseUnrealIFlakCannonCheckBox=None
UseUnrealIEightballCheckBox=None
UseUnrealIGESBioRifleCheckBox=None
UseUnrealIMinigunCheckBox=None
UseUnrealIRazorjackCheckBox=None
UseUnrealIRifleCheckBox=None
UseUnrealIStingerCheckBox=None
InitialAmmoLC=None
MaxAmmoLC=None
RateAmmoLC=None
BioAmmoLC=None
GunAmmoLC=None
FlakAmmoLC=None
PulseAmmoLC=None
RedeemerAmmoLC=None
RifleAmmoLC=None
RipperAmmoLC=None
RocketAmmoLC=None
ShockAmmoLC=None
StingerAmmoLC=None
InitialBioAmmoEC=None
RateBioAmmoPerSecEC=None
MaxBioAmmoEC=None
InitialGunAmmoEC=None
RateGunAmmoPerSecEC=None
MaxGunAmmoEC=None
InitialFlakAmmoEC=None
RateFlakAmmoPerSecEC=None
MaxFlakAmmoEC=None
InitialPulseAmmoEC=None
RatePulseAmmoPerSecEC=None
MaxPulseAmmoEC=None
InitialRedeemerAmmoEC=None
RateRedeemerAmmoPerSecEC=None
MaxRedeemerAmmoEC=None
InitialRifleAmmoEC=None
RateRifleAmmoPerSecEC=None
MaxRifleAmmoEC=None
InitialRipperAmmoEC=None
RateRipperAmmoPerSecEC=None
MaxRipperAmmoEC=None
InitialRocketAmmoEC=None
RateRocketAmmoPerSecEC=None
MaxRocketAmmoEC=None
InitialShockAmmoEC=None
RateShockAmmoPerSecEC=None
MaxShockAmmoEC=None
InitialStingerAmmoEC=None
RateStingerAmmoPerSecEC=None
MaxStingerAmmoEC=None
PowerUpDelayMinLC=None
PowerUpDelayMaxLC=None
PowerUpDurationMinLC=None
PowerUpDurationMaxLC=None
DamageAmplifierLC=None
JumpbootsLC=None
InvisibilityLC=None
InvisibilityDelayMinEC=None
InvisibilityDelayMaxEC=None
InvisibilityDurationMinEC=None
InvisibilityDurationMaxEC=None
DamageAmplifierDelayMinEC=None
DamageAmplifierDelayMaxEC=None
DamageAmplifierDurationMinEC=None
DamageAmplifierDurationMaxEC=None
JumpBootsDelayMinEC=None
JumpBootsDelayMaxEC=None
JumpBootsDurationMinEC=None
JumpBootsDurationMaxEC=None
UMutator=None
SpacingOffset=16
HOffset=0
VOffset=0
}

10
Classes/NIUTConfigMenu.uc Normal file
View File

@@ -0,0 +1,10 @@
//=============================================================================
// NIUTConfigMenu.
//=============================================================================
class NIUTConfigMenu expands UWindowFramedWindow;
defaultproperties
{
ClientClass=None
WindowTitle="NIUT126 Mutator Options (see www.planetunreal.com/niu and/or niut.txt for more information)"
}

View File

@@ -0,0 +1,20 @@
//=============================================================================
// NIUTConfigMenuItem.
//=============================================================================
class NIUTConfigMenuItem expands UMenuModMenuItem;
// assumes 640x480 resolution for now -- only alternative is to go to property pages
const SizeX = 624;
const SizeY = 448;
// Called when the menu item is chosen
function Execute()
{
MenuItem.Owner.Root.CreateWindow(class'NIUTConfigMenu', (MenuItem.Owner.Root.WinWidth/2 - (SizeX/2)), (MenuItem.Owner.Root.WinHeight/2 - (SizeY/2)), SizeX, SizeY);
}
defaultproperties
{
MenuCaption="NIUT126 Mutator Options"
MenuHelp="Configure the NIUT126 Mutator options."
}

1717
Classes/NIUTMutator.uc Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,9 +1,9 @@
-------------------------------------------------------------------------------
NIUT 1.24 Mutator for UT (No Item Unreal Tournament)
NIUT 1.25 Mutator for UT (No Item Unreal Tournament)
-------------------------------------------------------------------------------
Version: 1.24
Created: 03/07/00
Version: 1.25
Created: 26/08/25
Author: Mike Fox (a.k.a. ArtfulDodger)
Contact: mfox@legendent.com
URL: www.planetunreal.com/niu
@@ -266,6 +266,12 @@ Settings in niut.ini which can be modified directly (not on the options menu).
History
-------
1.25 (chacha):
+Fix randomly no weapon when joining.
+Code cleaning.
1.24:
+Made NIUT work better with other mutators (no longer an Arena mutator).

145
Run.sh Normal file → Executable file
View File

@@ -1,13 +1,18 @@
#!/bin/bash
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
OUTPUT_DIR="$2"
CFG_FILE="$3"
DEFAULT_CFG_FILE=UnrealTournament.ini
DEFAULT_CFG_FILE=NIUT.ini
CFG_FILE="${3:-$DEFAULT_CFG_FILE}"
DEFAULT_INSTALL_CFG_FILE=UnrealTournament.ini
function add_iniKeyEx() {
crudini --set $OUTPUT_DIR/System/$1 $2 __$3 $4
# Warning: ugly hack with sed to allow multiple key instances + to remove space around '='
sed -i "s/[[:space:]]*__$(echo $3 | sed -e 's/\([[\/.*]\|\]\)/\\&/g')[[:space:]]*=[[:space:]]*/$(echo $3 | sed -e 's/\([[\/.*]\|\]\)/\\&/g')=/g" $OUTPUT_DIR/System/$1
}
function set_iniKeyEx() {
crudini --set $OUTPUT_DIR/System/$1 $2 $3 $4
}
# !!Warning!! section is not considered
function del_iniKeyEx() {
sed -i "/[[:space:]]*$(echo $3 | sed -e 's/\([[\/.*]\|\]\)/\\&/g')[[:space:]]*=[[:space:]]*$(echo $4 | sed -e 's/\([[\/.*]\|\]\)/\\&/g')/d" $OUTPUT_DIR/System/$1
@@ -15,53 +20,105 @@ function del_iniKeyEx() {
function add_iniKey() {
add_iniKeyEx $CFG_FILE $1 $2 $3
}
function set_iniKey() {
set_iniKeyEx $CFG_FILE $1 $2 $3
}
# !!Warning!! section is not considered
function del_iniKey() {
del_iniKeyEx $CFG_FILE $1 $2 $3
}
function add_ServerPackage() {
add_iniKey 'Engine.GameEngine' ServerPackages $1
add_iniKey 'XC_Engine.XC_GameEngine' ServerPackages $1
add_iniKeyEx $DEFAULT_INSTALL_CFG_FILE 'Engine.GameEngine' ServerPackages $1
add_iniKeyEx $DEFAULT_INSTALL_CFG_FILE 'XC_Engine.XC_GameEngine' ServerPackages $1
}
function del_ServerPackage() {
del_iniKey 'Engine.GameEngine' ServerPackages $1
del_iniKey 'XC_Engine.XC_GameEngine' ServerPackages $1
del_iniKeyEx $DEFAULT_INSTALL_CFG_FILE 'Engine.GameEngine' ServerPackages $1
del_iniKeyEx $DEFAULT_INSTALL_CFG_FILE 'XC_Engine.XC_GameEngine' ServerPackages $1
}
function add_ServerActors() {
add_iniKey 'Engine.GameEngine' ServerActors $1
add_iniKey 'XC_Engine.XC_GameEngine' ServerActors $1
add_iniKeyEx $DEFAULT_INSTALL_CFG_FILE 'Engine.GameEngine' ServerActors $1
add_iniKeyEx $DEFAULT_INSTALL_CFG_FILE 'XC_Engine.XC_GameEngine' ServerActors $1
}
function del_ServerActors() {
del_iniKey 'Engine.GameEngine' ServerActors $1
del_iniKey 'XC_Engine.XC_GameEngine' ServerActors $1
del_iniKeyEx $DEFAULT_INSTALL_CFG_FILE 'Engine.GameEngine' ServerActors $1
del_iniKeyEx $DEFAULT_INSTALL_CFG_FILE 'XC_Engine.XC_GameEngine' ServerActors $1
}
function getmodprefix() {
UFile=$(find $OUTPUT_DIR/System -type f -iname "niut*.u" -exec basename {} \;)
BaseName="${UFile%.*}"
echo "$BaseName"
}
function install() {
rsync -a $SCRIPT_DIR/Help/ $OUTPUT_DIR/Help/ --exclude '.git'
rsync -a $SCRIPT_DIR/System/ $OUTPUT_DIR/System/ --exclude '.git'
rsync -a $SCRIPT_DIR/Help/ $OUTPUT_DIR/Help/ --exclude '.git'
rsync -a $SCRIPT_DIR/System/ $OUTPUT_DIR/System/ --exclude '.git'
echo install ok
}
function enable() {
NIUTUFile=$(find $OUTPUT_DIR/System -type f -iname "niut*.u" -exec basename {} \;)
NIUTBaseName="${NIUTUFile%.*}"
add_ServerPackage $NIUTBaseName
BaseName="$(getmodprefix)"
add_ServerPackage $BaseName
echo enable ok
}
function disable() {
NIUTUFile=$(find $OUTPUT_DIR/System -type f -iname "niut*.u" -exec basename {} \;)
NIUTBaseName="${NIUTUFile%.*}"
del_ServerPackage $NIUTBaseName
BaseName="$(getmodprefix)"
del_ServerPackage $BaseName
echo disable ok
}
function config() {
case $# in
5)
OptionKey=$4
OptionValue=$5
;;
4)
OptionKey=$3
OptionValue=$4
;;
*)
echo "Not enough arguments"
show_help
exit 1
;;
esac
NIUTUFile=$(find $OUTPUT_DIR/System -type f -iname "niut*.u" -exec basename {} \;)
echo $NIUTUFile
NIUTBaseName="${NIUTUFile%.*}"
echo $NIUTBaseName
case "$OptionKey" in
*)
set_iniKeyEx NIUT.ini "${NIUTBaseName^^}.NIUTMutator" $OptionKey $OptionValue
;;
esac
}
function show_help() {
echo
echo "Usage: $0 { install | enable | disable } <UT99_INSTALL_DIR> [<UT99_CONFIG_FILE>]"
echo "Usage: $0 { getmodprefix | install | enable | disable | config } <UT99_INSTALL_DIR> [<UT99_CONFIG_FILE>] [<CONFIG_KEY> <CONFIG_VALUE>]"
echo
}
function check_cfg_file() {
function check_cfg_file_config() {
if [ $# -eq 4 ]
then
echo "CFG_FILE is unset, setting it to $DEFAULT_CFG_FILE"
CFG_FILE=$DEFAULT_CFG_FILE
elif [ $# -eq 5 ]
then
echo "CFG_FILE is set to '$CFG_FILE'"
else
echo "Wrong number of arguments"
show_help
exit 9999 # die with error code 9999
fi
if [ ! -f $OUTPUT_DIR/System/$CFG_FILE ]
then
echo "$OUTPUT_DIR/System/$CFG_FILE does not exist"
show_help
exit 9999 # die with error code 9999
fi
}
function check_cfg_file_gen() {
if [ -z ${CFG_FILE} ]
then
echo "CFG_FILE is unset, setting it to $DEFAULT_CFG_FILE"
@@ -76,9 +133,24 @@ function check_cfg_file() {
exit 9999 # die with error code 9999
fi
}
function check_cfg_file_gen2() {
if [ -z ${CFG_FILE} ]
then
echo "CFG_FILE is unset, setting it to $DEFAULT_INSTALL_CFG_FILE"
CFG_FILE=$DEFAULT_INSTALL_CFG_FILE
else
echo "CFG_FILE is set to '$CFG_FILE'"
fi
if [ ! -f $OUTPUT_DIR/System/$CFG_FILE ]
then
echo "$OUTPUT_DIR/System/$CFG_FILE does not exist"
show_help
exit 9999 # die with error code 9999
fi
}
function check_game_dir() {
### Check if a directory does not exist ###
if [ ! -d $OUTPUT_DIR ]
if [ -z $OUTPUT_DIR ]
then
echo "incorrect <UT99_INSTALL_DIR>"
show_help
@@ -86,24 +158,33 @@ function check_game_dir() {
fi
}
case "$1" in
'install')
'getmodprefix')
check_game_dir
install
getmodprefix
;;
'install')
check_game_dir "$@"
install "$@"
;;
'enable')
check_game_dir
check_cfg_file
disable
enable
check_game_dir "$@"
check_cfg_file_gen2 "$@"
disable "$@"
enable "$@"
;;
'config')
check_game_dir "$@"
check_cfg_file_config "$@"
config "$@"
;;
'disable')
check_game_dir
check_cfg_file
disable
check_game_dir "$@"
check_cfg_file_gen2 "$@"
disable "$@"
;;
*)
show_help
exit 1
;;
esac
exit 0
exit 0

View File

@@ -1,4 +1,4 @@
[NIUT124.NIUTMutator]
[NIUT126.NIUTMutator]
bRandomWeapons=True
bUseAllWeapons=True
bCycleWeapons=False

View File

@@ -1,8 +1,8 @@
[Public]
Object=(Name=NIUT124.NIUTMutator,Class=Class,MetaClass=Engine.Mutator,Description="NIUT124, NIUT V1.24: Server controls weapons, gives out ammo and/or turns pickups into ammo or health vials (www.planetunreal.com/niu).")
Object=(Name=NIUT124.NIUTConfigMenuItem,Class=Class,MetaClass=UMenu.UMenuModMenuItem)
Object=(Name=NIUT124.DummyArenaMutator,Class=Class,MetaClass=Engine.Mutator,Description="DAM, DummyArena: use with some game types (e.g. LastManStanding) to force ammo to stay etc.")
Object=(Name=NIUT126.NIUTMutator,Class=Class,MetaClass=Engine.Mutator,Description="NIUT126, NIUT V1.26: Server controls weapons, gives out ammo and/or turns pickups into ammo or health vials (www.planetunreal.com/niu).")
Object=(Name=NIUT125.NIUTConfigMenuItem,Class=Class,MetaClass=UMenu.UMenuModMenuItem)
Object=(Name=NIUT125.DummyArenaMutator,Class=Class,MetaClass=Engine.Mutator,Description="DAM, DummyArena: use with some game types (e.g. LastManStanding) to force ammo to stay etc.")
Preferences=(Caption="Mutators",Parent="Advanced Options")
Preferences=(Caption="NIUT124",Parent="Mutators",Class=NIUT124.NIUTMutator,Immediate=True)
Preferences=(Caption="NIUT125",Parent="Mutators",Class=NIUT125.NIUTMutator,Immediate=True)

Binary file not shown.

BIN
System/niut126.u Normal file

Binary file not shown.

6
make.bat Normal file
View File

@@ -0,0 +1,6 @@
set UArtifactName=niut126
del %~dp0\..\System\%UArtifactName%.u
del %~dp0\System\%UArtifactName%.u
%~dp0\..\System\ucc.exe make ini=%~dp0\make.ini
%~dp0\..\System\ucc.exe stripsource %UArtifactName%
xcopy %~dp0\..\System\%UArtifactName%.u %~dp0\System\

31
make.ini Normal file
View File

@@ -0,0 +1,31 @@
[Core.System]
Paths=../System/*.u
Paths=../Maps/*.unr
Paths=../Textures/*.utx
Paths=../Sounds/*.uax
Paths=../Music/*.umx
[Engine.Engine]
EditorEngine=Editor.EditorEngine
Language=int
[Editor.EditorEngine]
CacheSizeMegs=32
EditPackages=Core
EditPackages=Engine
EditPackages=Editor
EditPackages=UWindow
EditPackages=Fire
EditPackages=IpDrv
EditPackages=UWeb
EditPackages=UBrowser
EditPackages=UnrealShare
EditPackages=UnrealI
EditPackages=UMenu
EditPackages=IpServer
EditPackages=Botpack
EditPackages=UTServerAdmin
EditPackages=UTMenu
EditPackages=UTBrowser
EditPackages=niut126