Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 40 additions & 0 deletions Classes/ItemEventSpawner.uc
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
class ItemEventSpawner extends Actor;

var() class<Actor> SpawnClass;
var() float SpawnDelay; // Delay in seconds (default 0, set to 10 for 10s delay)
var bool bPendingSpawn;

function Trigger(actor Other, pawn EventInstigator)
{
if (SpawnDelay > 0)
{
bPendingSpawn = true;
SetTimer(SpawnDelay, false);
}
else
{
DoSpawn();
}
}

function Timer()
{
if (bPendingSpawn)
DoSpawn();
}

function DoSpawn()
{
local Actor A;
A = Spawn(SpawnClass,,, Location);
}

defaultproperties
{
SpawnClass=class'Armor2'
Tag=DP2
bHidden=True
bCollideActors=False
bCollideWorld=False
SpawnDelay=0.0 // Set to 10.0 for 10 seconds
}
6 changes: 6 additions & 0 deletions Classes/MapFixes.uc
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,9 @@ function fixMaps()
case "AS-BRIDGE":
F = Spawn(class'fix_Bridge');
break;
case "AS-BRIDGEPV_BETA8":
F = Spawn(class'fix_BridgePV_beta8');
break;
case "AS-COLDERSTEEL":
F = Spawn(class'fix_Coldersteel');
break;
Expand Down Expand Up @@ -105,6 +108,9 @@ function fixMaps()
case "AS-SUBMARINEBASE][":
F = Spawn(class'fix_Submarinebase2');
break;
case "AS-THEDUNGEON]L[AL":
F = Spawn(class'fix_TheDungeon3AL');
break;
case "THEDUNGEON]L[BETA2":
F = Spawn(class'fix_TheDungeons3Betas');
break;
Expand Down
15 changes: 15 additions & 0 deletions Classes/fix_Ballistic.uc
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ function BeginPlay()
fixWalls();
if (bIncludeLAS140Tweaks)
fixBallisticObjects();
spawnBallisticItems();
}
}
}
Expand Down Expand Up @@ -96,6 +97,20 @@ function fixWalls()
if (bDebug) log("Ballistic Wall Fixes -->");
}

function spawnBallisticItems()
{
local ItemEventSpawner Spawner;

// Example: Spawn a ShieldBelt after the generator is destroyed (event "powerdestroyed")
Spawner = Spawn(class'ItemEventSpawner',,, vect(-778.608215, -377.934814, -1006.903076));
if (Spawner != None)
{
Spawner.SpawnClass = class'UT_ShieldBelt';
Spawner.Tag = 'powerdestroyed';
Spawner.SpawnDelay = 10.0; // Set to 10 seconds delay
}
}

function fixTele_ThanksToMyM()
{
local Dispatcher D;
Expand Down
99 changes: 99 additions & 0 deletions Classes/fix_BridgePV_beta8.uc
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
//=============================================================================
// BridgePV_beta8 - lilfvb@gmail.com - Ulv 2025
//=============================================================================
class fix_BridgePV_beta8 extends MapFix config(MapFixes);

var bool bTweaked;
var() config bool bEnabled;
var() config bool bDebug;

function BeginPlay()
{
Super.BeginPlay();
if (!bTweaked)
{
bTweaked = True;
if (bEnabled)
{
fixBridgePV_beta8Objects();
}
}
}

function fixBridgePV_beta8Objects()
{
local string S;
local string SA;
local BulletBox BB;
local RifleShell RS;
local UT_ShieldBelt SB;
local Armor2 A2;
local HealthPack HP;
local Vector V;
local Rotator R;
local UT_Eightball RL;

S = Left(Self, InStr(Self, "."));
if(S~="AS-BridgePV_beta8")
{
foreach AllActors(class'BulletBox', BB)
{
SA = Mid(string(BB), InStr(string(BB), ".") + 1);
if ( (SA == "BulletBox0") || (SA == "BulletBox2") || (SA == "BulletBox3") || (SA == "BulletBox4") || (SA == "BulletBox11") )
{
V = BB.Location;
R = BB.Rotation;
BB.Destroy();
RS = Spawn(class'RifleShell',,, V, R);
}
}

// Replace the belt with armor in defender spawn
foreach AllActors(class'UT_ShieldBelt', SB)
{
SA = Mid(string(SB), InStr(string(SB), ".") + 1);
if (SA == "ut_shieldbelt0")
{
V = SB.Location;
R = SB.Rotation;
SB.Destroy();
A2 = Spawn(class'Armor2',,, V, R);
}
}

// Add a Keg in the box in attacker spawn
V.X = -3120.438721;
V.Y = 581.074585;
V.Z = 792.103943;
R.Pitch = 0;
R.Roll = 0;
R.Yaw = 0;
HP = Spawn(class'HealthPack',,, V, R);

// Add a RifleShell near the Sniper at Final exit
V.X = -2507.945801;
V.Y = -1440.486694;
V.Z = 1462.380005;
R.Pitch = 0;
R.Roll = 0;
R.Yaw = 0;
RS = Spawn(class'RifleShell',,, V, R);

// Add a RocketLauncher near sniper and flak at the underwater tele exit
V.X = 295.726440;
V.Y = -448.705444;
V.Z = -1373.900024;
R.Pitch = 0;
R.Roll = 0;
R.Yaw = 0;
RL = Spawn(class'UT_EightBall',,, V, R);
RL.bRotatingPickup = False;
RL.SetWeaponStay();
}
}

defaultproperties
{
bEnabled=True
bHidden=True
}
12 changes: 12 additions & 0 deletions Classes/fix_Desolate2.uc
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ function BeginPlay()
if (bIncludeLAS140Tweaks)
fixD2Spawns();
fixDesolateObjs();
spawnDesolate2Items();
}
}
}
Expand Down Expand Up @@ -61,6 +62,17 @@ function fixDesolateObjs() {
if (bDebug) log("Desolate][ Fixes -->");
}

function spawnDesolate2Items() {
local ItemEventSpawner Spawner;
// Spawn Armor after Lower Levels
Spawner = Spawn(class'ItemEventSpawner',,, vect(-5275.133789, -477.687500, -1106.479858));
if (Spawner != None)
{
Spawner.SpawnClass = class'Armor2';
Spawner.Tag = 'dis1';
}
}

function fixD2Spawns() {
local Dispatcher D;
local string S;
Expand Down
18 changes: 16 additions & 2 deletions Classes/fix_Riverbed3AL.uc
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ var() config bool bDebug;
function BeginPlay()
{
local string S;

Super.BeginPlay();
if (!bTweaked)
{
Expand All @@ -18,7 +19,7 @@ function BeginPlay()
if (bEnabled && S~="AS-Riverbed]l[AL")
{
fixRiverbed3();

spawnRiverbed3Items();
}
}
}
Expand Down Expand Up @@ -47,11 +48,24 @@ function fixRiverbed3() {
KR.SetCollisionSize(KickerR[i],KickerH[i]);
KR.KickVelocity = vect(150.000000,150.000000,-80.000000);
if (bDebug) log("* Spawned KR - L:"@KR.Location@"/ R:"@KR.CollisionRadius@"/ H:"@KR.CollisionHeight);

}
if (bDebug) log("Riv3 Wall Tweak -->");
}

function spawnRiverbed3Items() {
local ItemEventSpawner Spawner;
// Spawns armor in truck after Compressor
Spawner = Spawn(class'ItemEventSpawner',,, vect(-2340.212158, -3763.420410, 975.493347));
if (Spawner != None)
{
Spawner.SpawnClass = class'Armor2';
Spawner.Tag = 'DP2';
}
}

defaultproperties
{
bEnabled=False
bEnabled=True
Tag=DP2
}
46 changes: 46 additions & 0 deletions Classes/fix_TheDungeon3AL.uc
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
//=============================================================================
// TheDungeon]l[AL - lilfvb@gmail.com - Ulv 2025
//=============================================================================
class fix_TheDungeon3AL extends MapFix config(MapFixes);

var bool bTweaked;
var() config bool bEnabled;
var() config bool bDebug;

function BeginPlay()
{
local string S;

Super.BeginPlay();
if (!bTweaked)
{
bTweaked = True;
S = Left(Self, InStr(Self, "."));
if (bEnabled && S~="AS-TheDungeon]L[AL")
{

spawnDungeon3Items();
}
}
}

function spawnDungeon3Items() {
local ItemEventSpawner Spawner;

// Spawn armor at boots 10 seconds after skull lock.
Spawner = Spawn(class'ItemEventSpawner',,, vect(11218.932617, 11338.771484, 1018.700195));
if (Spawner != None)
{
Spawner.SpawnClass = class'Armor2';
Spawner.Tag = 'skullboom';
Spawner.SpawnDelay = 10.0;
Spawner.Rotation.Pitch = 12;
Spawner.Rotation.Roll = 3456;
Spawner.Rotation.Yaw = 15364;
}
}

defaultproperties
{
bEnabled=True
}