Skip to content

Commit

Permalink
v3.2.0.3 Halloween update! Merge pull request #972 from Die4Ever/develop
Browse files Browse the repository at this point in the history
v3.2.0.3 Halloween update!
  • Loading branch information
Die4Ever authored Oct 1, 2024
2 parents a3ff10a + 5fd3453 commit c3cbb82
Show file tree
Hide file tree
Showing 21 changed files with 118 additions and 39 deletions.
7 changes: 6 additions & 1 deletion .github/release_template.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,12 @@ If you're having an issue with the installer program: [Manual Installation Instr
If you don't know what Deus Ex Randomizer is, then here's our trailer which shows a breakdown of how it works:

<a href="https://www.youtube.com/watch?v=V3mTcG6xeq4&list=PLZIQTa_kwZhBksj7UzcahPiRaHk87fWch&index=1" target="_blank">
<img src="https://img.youtube.com/vi/V3mTcG6xeq4/0.jpg" alt="v3.0 Trailer" width="500"/></a>
<img src="https://img.youtube.com/vi/V3mTcG6xeq4/maxresdefault.jpg" alt="v3.0 Trailer" width="500"/></a>

Here's a trailer for our new Halloween modes!

<a href="https://www.youtube.com/watch?v=FbzNkWJXZ1o&list=PLZIQTa_kwZhBksj7UzcahPiRaHk87fWch&index=1" target="_blank">
<img src="https://github.com/user-attachments/assets/d92bea02-55a3-462d-ac5f-45e3d56a7497" alt="Halloween Trailer" width="500"/></a>

Here's a trailer for WaltonWare mode. WaltonWare mode is focused on quick wins by completing a single bingo line, and increasing difficulty after every win. The bingo goals are all scaled to their minimum settings and you start in a random area. All bingo goals will be completable within just a few maps!

Expand Down
2 changes: 1 addition & 1 deletion DXRBalance/DeusEx/Classes/AugHeartLung.uc
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ function PostPostBeginPlay()
// description gets overwritten by language file, also DXRAugmentations reads from the default.Description
default.Description = "This synthetic heart circulates not only blood but a steady concentration of mechanochemical power cells, smart phagocytes, and liposomes containing prefab diamondoid machine parts,"
$ " resulting in upgraded performance for all installed augmentations, but also increasing their energy use."
$ "|n|n<UNATCO OPS FILE NOTE JR133-VIOLET> However, this will not enhance any augmentation past its maximum upgrade level. -- Jaime Reyes <END NOTE>";
$ "|n|n<UNATCO OPS FILE NOTE JR133-VIOLET> However, not all augmentations can be enhanced past their maximum upgrade level. -- Jaime Reyes <END NOTE>";
Description = default.Description;
}

Expand Down
17 changes: 12 additions & 5 deletions DXRCore/DeusEx/Classes/DXRActorsBase.uc
Original file line number Diff line number Diff line change
Expand Up @@ -1718,15 +1718,22 @@ function bool PositionIsSafeLenient(Vector oldloc, Actor test, Vector newloc)
return _PositionIsSafeOctant(oldloc, GetCenter(test), newloc);
}

function RemoveDXMoverPrePivot(#var(DeusExPrefix)Mover dxm)
function RemoveMoverPrePivot(Mover m)
{
local vector pivot;
local rotator r;
local bool AbCollideActors, AbBlockActors, AbBlockPlayers;

AbCollideActors = m.bCollideActors;
AbBlockActors = m.bBlockActors;
AbBlockPlayers = m.bBlockPlayers;

pivot = dxm.PrePivot >> dxm.Rotation;
dxm.BasePos = dxm.BasePos - vectm(pivot.X,pivot.Y,pivot.Z);
dxm.PrePivot=vect(0,0,0);
dxm.SetLocation(dxm.BasePos);
m.SetCollision(false,false,false);
pivot = m.PrePivot >> m.Rotation;
m.BasePos = m.BasePos - vectm(pivot.X,pivot.Y,pivot.Z);
m.PrePivot=vect(0,0,0);
m.SetLocation(m.BasePos);
m.SetCollision(AbCollideActors, AbBlockActors, AbBlockPlayers);
}

static function Actor GlowUp(Actor a, optional byte hue, optional byte saturation)
Expand Down
6 changes: 3 additions & 3 deletions DXRCore/DeusEx/Classes/DXRVersion.uc
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,20 @@ simulated static function CurrentVersion(optional out int major, optional out in
major=3;
minor=2;
patch=0;
build=2;//build can't be higher than 99
build=3;//build can't be higher than 99
}

simulated static function bool VersionIsStable()
{
return false;
return true;
}

simulated static function string VersionString(optional bool full)
{
local int major,minor,patch,build;
local string status;

status = "Beta";
status = "";

if(status!="") {
status = " " $ status;
Expand Down
9 changes: 9 additions & 0 deletions DXRMapFixups/DeusEx/Classes/DXRFixupM02.uc
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ function PreFirstEntryMapFixes()
local Vector loc;
local Teleporter tel;
local DynamicTeleporter dtel;
local DynamicLight light;

#ifdef injections
local #var(prefix)Newspaper np;
Expand Down Expand Up @@ -139,6 +140,14 @@ function PreFirstEntryMapFixes()
buttonHint = DXRButtonHoverHint(class'DXRButtonHoverHint'.static.Create(self, "", button.Location, button.CollisionRadius+5, button.CollisionHeight+5, exit));
buttonHint.SetBaseActor(button);

//add a small light to the lower floor of the apartment.
//This helps to just put a little bit of light on the generator location
//in the case of 0 brightness boost
light = Spawn(class'DynamicLight',,, vectm(500,900,1050));
light.LightType=LT_Steady;
light.LightBrightness=16;
light.LightRadius=10;

// fix collision with the fence https://github.com/Die4Ever/deus-ex-randomizer/issues/665
foreach AllActors(class'DeusExMover', d) {
if(d.Event == 'BlewFence') break;
Expand Down
2 changes: 1 addition & 1 deletion DXRMapFixups/DeusEx/Classes/DXRFixupVandenberg.uc
Original file line number Diff line number Diff line change
Expand Up @@ -233,7 +233,7 @@ function PreFirstEntryMapFixes()

//Fix prepivot, since the upper door was set way off to the side. Just adjust both in the same way
//so that they are centered roughly in the middle of the door
RemoveDXMoverPrePivot(door);
RemoveMoverPrePivot(door);
}
}
AddSwitch( vect(654.545,3889.5397,-367.262), rot(0, 16384, 0), 'ShedDoor');
Expand Down
2 changes: 1 addition & 1 deletion DXRMissions/DeusEx/Classes/DXRMissionsM15.uc
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,7 @@ function PreFirstEntryMapFixes()

v=vectm(0,0,dxm.PrePivot.Z);

RemoveDXMoverPrePivot(dxm);
RemoveMoverPrePivot(dxm);

//Return the Z component of the prepivot so the switches rotate on center
dxm.PrePivot=v;
Expand Down
18 changes: 11 additions & 7 deletions DXRModules/DeusEx/Classes/DXREvents.uc
Original file line number Diff line number Diff line change
Expand Up @@ -415,7 +415,7 @@ function SetWatchFlags() {
WatchFlag('MeetWindowBum_Played');
break;
case "02_NYC_SMUG":
WatchFlag('MetSmuggler');
WatchFlag('MeetSmuggler_Played');
bt = class'BingoTrigger'.static.Create(self,'botordertrigger',vectm(0,0,0));
bt = class'BingoTrigger'.static.Create(self,'mirrordoor',vectm(0,0,0));
bt.Tag = 'mirrordoorout';
Expand Down Expand Up @@ -574,7 +574,7 @@ function SetWatchFlags() {
bt = class'BingoTrigger'.static.Create(self,'MadeItToBP',vectm(0,0,0));
break;
case "04_NYC_SMUG":
RewatchFlag('MetSmuggler');
WatchFlag('M04MeetSmuggler_Played');
bt = class'BingoTrigger'.static.Create(self,'botordertrigger',vectm(0,0,0));
bt = class'BingoTrigger'.static.Create(self,'mirrordoor',vectm(0,0,0));
bt.Tag = 'mirrordoorout';
Expand Down Expand Up @@ -867,7 +867,7 @@ function SetWatchFlags() {
break;
case "08_NYC_SMUG":
WatchFlag('M08WarnedSmuggler');
RewatchFlag('MetSmuggler');
WatchFlag('M08SmugglerConvos_Played');
bt = class'BingoTrigger'.static.Create(self,'botordertrigger',vectm(0,0,0));
bt = class'BingoTrigger'.static.Create(self,'mirrordoor',vectm(0,0,0));
bt.Tag = 'mirrordoorout';
Expand Down Expand Up @@ -2052,6 +2052,10 @@ function string RemapBingoEvent(string eventname)
return "Cat_peeptime";
case "PetAnimal_BlackCat":
return "PetAnimal_Cat";
case "MeetSmuggler_Played":
case "M04MeetSmuggler_Played":
case "M08SmugglerConvos_Played":
return "MeetSmuggler";
default:
return eventname;
}
Expand Down Expand Up @@ -2264,7 +2268,7 @@ static simulated function string GetBingoGoalHelpText(string event,int mission,
return msg;
case "JoeGreene_Dead":
msg= "Kill Joe Greene, the reporter poking around in New York. ";
if (mission<=2){
if (mission<=4){
msg=msg$"He can be found in the Underworld bar.";
}else if (mission<=8){
msg=msg$"He can be found somewhere in New York after you return from Hong Kong.";
Expand Down Expand Up @@ -2352,7 +2356,7 @@ static simulated function string GetBingoGoalHelpText(string event,int mission,
return "Kill Manderley while escaping from UNATCO.";
case "MadeItToBP":
return "After the raid on the 'Ton hotel, escape to Gunther's roadblock in Battery Park.";
case "MetSmuggler":
case "MeetSmuggler":
return "Talk to Smuggler in his Hell's Kitchen hideout.";
case "SickMan_Dead":
return "Kill the junkie in Battery Park who asks for someone to kill him. He is typically found near the East Coast Memorial (the eagle statue and large plaques)";
Expand Down Expand Up @@ -3226,7 +3230,7 @@ defaultproperties
bingo_options(56)=(event="SilhouetteHostagesAllRescued",desc="Save both hostages in the catacombs",max=1,missions=1024)
bingo_options(57)=(event="JosephManderley_Dead",desc="Kill Joseph Manderley",max=1,missions=32)
bingo_options(58)=(event="MadeItToBP",desc="Escape to Battery Park",max=1,missions=16)
bingo_options(59)=(event="MetSmuggler",desc="Meet Smuggler",max=1,missions=276)
bingo_options(59)=(event="MeetSmuggler",desc="Meet Smuggler",max=1,missions=276)
bingo_options(60)=(event="SickMan_Dead",desc="Kill the sick man who wants to die",max=1,missions=12)
bingo_options(61)=(event="M06PaidJunkie",desc="Help the junkie on Tonnochi Road",max=1,missions=64)
bingo_options(62)=(event="M06BoughtVersaLife",desc="Get maps of the VersaLife building",max=1,missions=64)
Expand Down Expand Up @@ -3472,7 +3476,7 @@ defaultproperties
bingo_options(283)=(event="PhoneCall",desc="Make %s phone calls",desc_singular="Make 1 phone call",max=5,missions=1916)
bingo_options(284)=(event="Area51ElevatorPower",desc="Power the elevator in Area 51",max=1,missions=32768)
bingo_options(285)=(event="Area51SleepingPod",desc="Open %s sleeping pods in Area 51",desc_singular="Open 1 sleeping pod in Area 51",max=4,missions=32768)
bingo_options(286)=(event="Area51SteamValve",desc="Close %s steam valves in Area 51",desc_singular="Close 1 steam valve in Area 51",max=2,missions=32768)
bingo_options(286)=(event="Area51SteamValve",desc="Close the steam valves in Area 51",max=2,missions=32768)
bingo_options(287)=(event="DockyardLaser",desc="Deactivate %s laser grids under the dockyard",desc_singular="Deactivate 1 laser grid under the dockyard",max=3,missions=512)
bingo_options(288)=(event="A51CommBuildingBasement",desc="Enter the basement of the Area 51 Command building",max=1,missions=32768)
bingo_options(289)=(event="FreighterHelipad",desc="Walk on the helipad inside the superfreighter",max=1,missions=512)
Expand Down
19 changes: 17 additions & 2 deletions DXRModules/DeusEx/Classes/DXRFixup.uc
Original file line number Diff line number Diff line change
Expand Up @@ -522,12 +522,27 @@ function FixFOV()
function ShowTeleporters()
{
local #var(prefix)Teleporter t;
local bool hide;
local bool hide, collision;

hide = ! class'MenuChoice_ShowTeleporters'.static.ShowTeleporters();

switch(dxr.localURL) {
// smuggler maps are exempt from teleporter collision, since they don't need it, and it blocks the elevator's button
case "02_NYC_SMUG":
case "04_NYC_SMUG":
case "08_NYC_SMUG":
case "02_NYC_BATTERYPARK":// the hostages need to be able to get into the subway!
collision=false;
break;
default:
collision=true;
break;
}

foreach AllActors(class'#var(prefix)Teleporter', t) {
t.SetCollision( t.bCollideActors, true, t.bBlockPlayers );// don't let pawns walk through
if(t.bCollideActors && t.bEnabled) {
t.SetCollision( t.bCollideActors, collision, t.bBlockPlayers );// don't let pawns walk through
}
t.bHidden = hide || !t.bCollideActors || !t.bEnabled;
t.DrawScale = 0.75;
}
Expand Down
4 changes: 3 additions & 1 deletion DXRModules/DeusEx/Classes/DXRHalloween.uc
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,9 @@ function PostFirstEntry()

if(dxr.flags.IsHalloweenMode()) {
// Mr. H is only for the Halloween game mode, but other things will instead be controlled by IsOctober(), such as cosmetic changes
class'MrH'.static.Create(self);
if(!dxr.OnTitleScreen()) {
class'MrH'.static.Create(self);
}
MapFixes();
}
if(IsOctober()) {
Expand Down
18 changes: 15 additions & 3 deletions DXRModules/DeusEx/Classes/DXRMemes.uc
Original file line number Diff line number Diff line change
Expand Up @@ -849,13 +849,17 @@ function Actor ReplaceWithRandomClass(Actor old)
if(#var(injectsprefix)MedicalBot(a) != None && chance_single(50)) {
#var(injectsprefix)MedicalBot(a).MakeAugsOnly();
}
if(DXRJackOLantern(a) != None) {
a.SetRotation(rot(0, 16384, 0));
a.DrawScale *= 4;
}
if( a != None ) return a;
}
warning("ReplaceWithRandomClass("$old$") failed");
return None;
}

const num_random_actor_classes = 549;
const num_random_actor_classes = 551;

function string GetRandomActorClass()
{
Expand Down Expand Up @@ -883,15 +887,23 @@ function ExtendedTests()
r = num_random_actor_classes;
s = _GetRandomActorClass(r);
teststring(s, "", "_GetRandomActorClass(" $ r $ ") is empty string, " $ s);
s = _GetRandomActorClass(r-1);
test(s!="", "_GetRandomActorClass(" $ (r - 1) $ ") is not empty string, " $ s);

r--;
s = _GetRandomActorClass(r);
test(s!="", "_GetRandomActorClass(" $ r $ ") is not empty string, " $ s);

s = _GetRandomActorClass(0);
test(s!="", "_GetRandomActorClass(0) is not empty string, " $ s);
}

function string _GetRandomActorClass(int r)
{
local int i;

// DXRando classes
if(r==i++) return "#var(package).MrH";
//if(r=i++) return "#var(package).Spiderweb"; // doesn't look good
if(r==i++) return "#var(package).DXRJackOLantern";
if(r==i++) return "#var(package).DeathMarker";
if(r==i++) return "#var(package).BarDancer";
if(r==i++) return "#var(package).FrenchGray";
Expand Down
9 changes: 9 additions & 0 deletions DXRModules/DeusEx/Classes/DXRMissions.uc
Original file line number Diff line number Diff line change
Expand Up @@ -651,6 +651,7 @@ function MoveGoalToLocation(Goal g, GoalLocation Loc)
local ScriptedPawn sp;
local string result;
local DXRGoalMarker marker;
local #var(DeusExPrefix)Mover dxm;

result = g.name $ " to " $ Loc.name;
info("Moving " $ result $ " (" $ Loc.mapName @ Loc.positions[0].pos $")");
Expand Down Expand Up @@ -681,6 +682,14 @@ function MoveGoalToLocation(Goal g, GoalLocation Loc)
if(ElectronicDevices(a) != None)
ElectronicDevices(a).ItemName = g.name;
MoveActor(a, Loc.positions[i].pos, Loc.positions[i].rot, g.actors[i].physics);
//If actor was a mover, make it have dynamic lighting so it looks right
dxm = #var(DeusExPrefix)Mover(a);
if (dxm!=None){
dxm.bDynamicLightMover=False;//very quickly disable
dxm.bDynamicLightMover=True; //Make lighting apply properly
}
}
if( (Loc.bitMask & SITTING_GOAL) != 0) {
Expand Down
1 change: 1 addition & 0 deletions DXRModules/DeusEx/Classes/DXRStartMap.uc
Original file line number Diff line number Diff line change
Expand Up @@ -690,6 +690,7 @@ function PreFirstEntryStartMapFixes(#var(PlayerPawn) player, FlagBase flagbase,

case 95:
GiveKey(player, 'EngineRoomDoor', "Below Decks key");
MarkConvPlayed("DL_ShipEntry", bFemale); // find a way to get below decks
break;

case 115:
Expand Down
13 changes: 12 additions & 1 deletion DXRando/DeusEx/Classes/DXRFashionManager.uc
Original file line number Diff line number Diff line change
Expand Up @@ -78,12 +78,21 @@ simulated function static DXRFashionManager GiveItem(#var(PlayerPawn) p)
f.isFemale=p.flagBase.GetBool('LDDPJCIsFemale');
clothesLooting = bool(p.flagBase.GetInt('Rando_clothes_looting'));
f.InitClothes(!clothesLooting);
p.RemoveObjectFromBelt(f); //Now that it has an icon, it ends up on the belt...
log("spawned new " $ f $ " for " $ p);
}
p.RemoveObjectFromBelt(f); //Now that it has an icon, it ends up on the belt sometimes...
return f;
}

event TravelPreAccept()
{
Super.TravelPreAccept();

//Just make sure it doesn't end up on your belt, for real
bInObjectBelt=False;
beltPos=-1;
}

function Mesh ModelFromOutfitGender(EOutfitType type, bool female)
{
switch(type){
Expand Down Expand Up @@ -143,6 +152,7 @@ function InitClothes(bool giveAll)
IngestCarcass(class'#var(prefix)ScientistMaleCarcass');
IngestCarcass(class'#var(prefix)ScientistFemaleCarcass');
IngestCarcass(class'#var(prefix)BartenderCarcass');
IngestCarcass(class'#var(prefix)SandraRentonCarcass');
IngestCarcass(class'#var(prefix)JordanSheaCarcass');
IngestCarcass(class'#var(prefix)MaxChenCarcass');
IngestCarcass(class'#var(prefix)MaggieChowCarcass');
Expand Down Expand Up @@ -937,6 +947,7 @@ simulated function bool IngestCarcass(class<#var(DeusExPrefix)Carcass> carcassCl

defaultproperties
{
bCanUseObjectBelt=false
bDisplayableInv=false
ItemName="DXRFashionManager"
bHidden=true
Expand Down
7 changes: 7 additions & 0 deletions DXRando/DeusEx/Classes/EndgameQuoteManager.uc
Original file line number Diff line number Diff line change
Expand Up @@ -185,6 +185,13 @@ function LoadQuotes()
AddQuote("THIS MEETING BETWEEN YOU AND I IS THE CULMINATION OF THOUSANDS OF YEARS OF B-BALL. THIS IS B-BALL IN ALL ITS GLORY, THIS IS THE FINAL GAME! IT'S JUST YOU AND ME, BARKLEY. NO REFS. NO WHISTLES. NO RULES. JUST YOU, ME, AND SWEET GEORGIA BROWN.","MICHAEL JORDAN");
AddQuote("I AM THE BEGINNING AND THE END. THE ALPHA AND THE OMEGA. THE FIRST AND THE LAST.","CHARLES BARKLEY");

//Fallout: New Vegas
AddQuote("SUCCESS DEPENDS ON FORETHOUGHT, DISPASSIONATE CALCULATION OF PROBABILITIES, ACCOUNTING FOR EVERY STRAY VARIABLE.", "ROBERT EDWIN HOUSE");
AddQuote("I HAVEN'T SHOWN MY HAND - I'VE SHOWN ONE CARD. I'VE GIVEN MY ENEMIES A SINGLE, PROVOCATIVE DATUM UPON WHICH TO FIXATE. THEY HAVE NO IDEA WHAT OTHER CARDS I'M HOLDING. IT'S A STRONG HAND, BELIEVE ME - I DEALT IT TO MYSELF.", "ROBERT EDWIN HOUSE");
AddQuote("THEY ASKED ME HOW WELL I UNDERSTOOD THEORETICAL PHYSICS. I SAID I HAD A THEORETICAL DEGREE IN PHYSICS. THEY SAID WELCOME ABOARD.", "FANTASTIC");
AddQuote("THE GAME WAS RIGGED FROM THE START.", "BENNY");
AddQuote("WE SHALL SEE HOW BRAVE YOU ARE WHEN NAILED TO THE WALLS OF HOOVER DAM, YOUR BODY FACING WEST SO YOU MAY WATCH YOUR WORLD DIE.", "LEGATE LANIUS");

log("EndgameQuoteManager loaded "$numQuotes$" endgame quotes");
}

Expand Down
Binary file modified DeusEx.u
Binary file not shown.
Binary file modified GMDXRandomizer.u
Binary file not shown.
Binary file modified HXRandomizer.u
Binary file not shown.
Loading

0 comments on commit c3cbb82

Please sign in to comment.