Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

v3.2.2.1 Alpha #979

Merged
merged 14 commits into from
Oct 7, 2024
Merged
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
3 changes: 2 additions & 1 deletion DXRCore/DeusEx/Classes/DXRActorsBase.uc
Original file line number Diff line number Diff line change
Expand Up @@ -379,7 +379,7 @@ function Inventory MoveNextItemTo(Inventory item, vector Location, name Tag)
local int i;
l("MoveNextItemTo("$item@Location@Tag$")");
// Find the next item we can process.
while(item != None && (item.IsA('NanoKeyRing') || (!item.bDisplayableInv) || Ammo(item) != None))
while(item != None && (item.IsA('NanoKeyRing') || (!item.bDisplayableInv) || Ammo(item) != None || MemConUnit(item) != None))
item = item.Inventory;

if(item == None) return None;
Expand Down Expand Up @@ -581,6 +581,7 @@ static function HateEveryone(ScriptedPawn sp, optional name except)
local ScriptedPawn other;
sp.ChangeAlly('Player',-1,True);
foreach sp.AllActors(class'ScriptedPawn',other) {
if(IsCritter(other.class)) continue;
if(other.Alliance != except && other.Alliance != sp.Alliance) {
sp.ChangeAlly(other.Alliance,-1,True);
}
Expand Down
8 changes: 4 additions & 4 deletions DXRCore/DeusEx/Classes/DXRVersion.uc
Original file line number Diff line number Diff line change
Expand Up @@ -4,21 +4,21 @@ simulated static function CurrentVersion(optional out int major, optional out in
{
major=3;
minor=2;
patch=1;
build=0;//build can't be higher than 99
patch=2;
build=1;//build can't be higher than 99
}

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

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

status = "";
status = "Alpha";

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 @@ -148,6 +148,15 @@ function PreFirstEntryMapFixes()
light.LightBrightness=16;
light.LightRadius=10;

//add a small spotlight from the lamp in the alley.
//This helps to just put a little bit of light on the generator location
//in the case of 0 brightness boost
light = DynamicLight(Spawnm(class'DynamicLight',,, vect(-645,1760,310),rot(-10000,-16384,0)));
light.LightType=LT_Steady;
light.LightEffect=LE_Spotlight;
light.LightBrightness=32;
light.LightRadius=64;

// 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
11 changes: 0 additions & 11 deletions DXRMapFixups/DeusEx/Classes/DXRFixupM03.uc
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ function PostFirstEntryMapFixes()
local Actor a;
local bool RevisionMaps;
local #var(prefix)NanoKey key;
local AllianceTrigger at;

RevisionMaps = class'DXRMapVariants'.static.IsRevisionMaps(player());

Expand All @@ -35,16 +34,6 @@ function PostFirstEntryMapFixes()
}
break;

case "03_NYC_MOLEPEOPLE":
if (dxr.flags.settings.starting_map >= 35) {
foreach AllActors(class'AllianceTrigger', at, 'surrender') {
at.Trigger(None, None);
break;
}
dxr.flagbase.SetBool('M03MeetTerroristLeader_Played', true);
}
break;

case "03_NYC_AirfieldHeliBase":
if (!RevisionMaps){
//crates to get back over the beginning of the level
Expand Down
69 changes: 58 additions & 11 deletions DXRMissions/DeusEx/Classes/DXRMissionsM02.uc
Original file line number Diff line number Diff line change
Expand Up @@ -49,16 +49,34 @@ function int InitGoals(int mission, string map)
AddGoalActor(goal, 2, 'CrateExplosiveSmall6', PHYS_None);
AddGoalActor(goal, 3, 'AmbientSoundTriggered0', PHYS_None);
AddGoalActor(goal, 4, 'AmbientSoundTriggered1', PHYS_None);
AddGoalLocation("02_NYC_WAREHOUSE", "Warehouse", GOAL_TYPE1 | VANILLA_GOAL, vect(576.000000, -512.000000, 71.999939), rot(32768, -16384, 0));
generator_alley = AddGoalLocation("02_NYC_WAREHOUSE", "Alley", GOAL_TYPE1, vect(-640.000000, 1760.000000, 128.000000), rot(0,32768,-16384));
AddMutualExclusion(generator_alley, jock_sewer);// too easy
AddGoalLocation("02_NYC_WAREHOUSE", "Apartment", GOAL_TYPE1, vect(368.000000, 1248.000000, 992.000000), rot(0,32768,-16384));
AddGoalLocation("02_NYC_WAREHOUSE", "Basement", GOAL_TYPE1, vect(224, -512, -192), rot(0,-16384,-16384));
generator_sewer = AddGoalLocation("02_NYC_WAREHOUSE", "Sewer", GOAL_TYPE1, vect(-1600.000000, 784.000000, -256.000000), rot(32768,-32768,0));

if (FeatureFlag(3,3,0, "M02GeneratorRework")){
AddGoalLocation("02_NYC_WAREHOUSE", "Warehouse", GOAL_TYPE1 | VANILLA_GOAL, vect(575,-608,122), rot(32768, -16384, 0));
generator_alley = AddGoalLocation("02_NYC_WAREHOUSE", "Alley", GOAL_TYPE1, vect(-550, 1700, 110), rot(0,32768,-16384));
AddMutualExclusion(generator_alley, jock_sewer);// too easy
AddGoalLocation("02_NYC_WAREHOUSE", "Apartment", GOAL_TYPE1, vect(460,1130,1000), rot(0,32768,-16384));
AddGoalLocation("02_NYC_WAREHOUSE", "Basement", GOAL_TYPE1, vect(300,-480,-125), rot(0,-16384,-16384));
generator_sewer = AddGoalLocation("02_NYC_WAREHOUSE", "Sewer", GOAL_TYPE1, vect(-1695,784,-210), rot(32768,-32768,0));
AddMutualExclusion(generator_sewer, jock_sewer);// can't put Jock and the generator both in the sewers
//This location works now (with the rework), but we can wait on enabling it until we feel like we want to ruin runs
//AddGoalLocation("02_NYC_WAREHOUSE", "3rd Floor", GOAL_TYPE1, vect(1340, -700, 575), rot(32768, 0, 32768)); //Near the ramp
//AddGoalLocation("02_NYC_WAREHOUSE", "4th Floor", GOAL_TYPE1, vect(390,-660,832), rot(32768,0,0)); //Among the boxes

} else {
AddGoalLocation("02_NYC_WAREHOUSE", "Warehouse", GOAL_TYPE1 | VANILLA_GOAL, vect(576.000000, -512.000000, 71.999939), rot(32768, -16384, 0));
generator_alley = AddGoalLocation("02_NYC_WAREHOUSE", "Alley", GOAL_TYPE1, vect(-640.000000, 1760.000000, 128.000000), rot(0,32768,-16384));
AddMutualExclusion(generator_alley, jock_sewer);// too easy
AddGoalLocation("02_NYC_WAREHOUSE", "Apartment", GOAL_TYPE1, vect(368.000000, 1248.000000, 992.000000), rot(0,32768,-16384));
AddGoalLocation("02_NYC_WAREHOUSE", "Basement", GOAL_TYPE1, vect(224, -512, -192), rot(0,-16384,-16384));
generator_sewer = AddGoalLocation("02_NYC_WAREHOUSE", "Sewer", GOAL_TYPE1, vect(-1600.000000, 784.000000, -256.000000), rot(32768,-32768,0));

// pawns run into these and break them
//AddGoalLocation("02_NYC_WAREHOUSE", "3rd Floor", GOAL_TYPE1, vect(1360.000000, -512.000000, 528.000000), rot(32768, -16384, 0));
//AddGoalLocation("02_NYC_WAREHOUSE", "3rd Floor Corner", GOAL_TYPE1, vect(1600, -1136.000000, 540), rot(32768, 16384, 0));

}
AddMutualExclusion(generator_sewer, jock_sewer);// can't put Jock and the generator both in the sewers
// pawns run into these and break them
//AddGoalLocation("02_NYC_WAREHOUSE", "3rd Floor", GOAL_TYPE1, vect(1360.000000, -512.000000, 528.000000), rot(32768, -16384, 0));
//AddGoalLocation("02_NYC_WAREHOUSE", "3rd Floor Corner", GOAL_TYPE1, vect(1600, -1136.000000, 540), rot(32768, 16384, 0));


AddGoal("02_NYC_WAREHOUSE", "Generator Computer", GOAL_TYPE2, 'ComputerPersonal5', PHYS_Falling);
AddGoal("02_NYC_WAREHOUSE", "Email Computer", GOAL_TYPE2, 'ComputerPersonal0', PHYS_Falling);
Expand Down Expand Up @@ -212,6 +230,7 @@ function PreFirstEntryMapFixes()
{
local #var(prefix)AnnaNavarre anna;
local #var(prefix)InterpolateTrigger it;
local #var(DeusExPrefix)Mover dxm;
local bool RevisionMaps;

RevisionMaps = class'DXRMapVariants'.static.IsRevisionMaps(player());
Expand All @@ -234,6 +253,17 @@ function PreFirstEntryMapFixes()
}
if(dxr.localURL=="02_NYC_WAREHOUSE") {
ConsoleCommand("set #var(prefix)AmbientSoundTriggered bstatic false");// HACK? maybe better than creating a new subclass for DynamicSoundTriggered and then doing replacements

if (!RevisionMaps && FeatureFlag(3,3,0, "M02GeneratorRework")){
foreach AllActors(class'#var(DeusExPrefix)Mover',dxm,'Generator'){
dxm.SetCollision(false,false,false);
RemoveMoverPrePivot(dxm);
dxm.PrePivot=vect(-80,0,-50); //This is intentionally not a vectm
dxm.BasePos=dxm.BasePos+dxm.PrePivot;
dxm.SetLocation(dxm.BasePos);
dxm.SetCollision(true,true,true);
}
}
}
}

Expand All @@ -257,10 +287,27 @@ function AfterMoveGoalToLocation(Goal g, GoalLocation Loc)
local #var(DeusExPrefix)Mover m;
local #var(prefix)ComputerPersonal cp;
local DXRPasswords passwords;
local int i;
local int i,rad,height;
local bool RevisionMaps;

RevisionMaps = class'DXRMapVariants'.static.IsRevisionMaps(player());

if (g.name=="Generator"){
class'DXRHoverHint'.static.Create(self, "NSF Generator", g.actors[0].a.Location, 175, 140, g.actors[0].a);
if (!RevisionMaps && FeatureFlag(3,3,0, "M02GeneratorRework")){
if (Loc.Name=="Warehouse" || Loc.Name=="Sewer" || Loc.Name=="3rd Floor" || Loc.Name=="4th Floor"){ //These ones lie horizontal
rad=175;
height=100;
} else { //The rest stand upright
rad=120;
height=131;
}
class'DXRHoverHint'.static.Create(self, "NSF Generator", g.actors[0].a.Location, rad, height, g.actors[0].a);
a = Spawn(class'DynamicBlockMonsters',,, g.actors[0].a.Location);
a.SetBase(g.actors[0].a);
a.SetCollisionSize(rad, height);
} else {
class'DXRHoverHint'.static.Create(self, "NSF Generator", g.actors[0].a.Location, 175, 140, g.actors[0].a);
}

for(i=0; i<ArrayCount(g.actors); i++) {
if( AmbientSoundTriggered(g.actors[i].a) != None) {
Expand Down
10 changes: 7 additions & 3 deletions DXRModules/DeusEx/Classes/DXRAutosave.uc
Original file line number Diff line number Diff line change
Expand Up @@ -187,7 +187,7 @@ static function string GetSaveFailReason(DeusExPlayer player)
}
if( f.autosave == FixedSaves || f.autosave == UnlimitedFixedSaves ) {
if(Computers(player.FrobTarget) == None && ATM(player.FrobTarget) == None) {
return "You need to have a computer highlighted to save! Good Luck!";
return "Saving is only allowed when a computer is highlighted! Good Luck!";
}
}

Expand Down Expand Up @@ -347,16 +347,20 @@ function MapAdjustments()
local Actor a;
local vector loc;
local bool fixed, limited;
local int i;

fixed = dxr.flags.autosave==FixedSaves || dxr.flags.autosave==UnlimitedFixedSaves;
limited = dxr.flags.autosave == FixedSaves || dxr.flags.autosave == LimitedSaves;

if(limited) {
SetSeed("spawn MCU");
if(chance_single(80)) {
for(i=0; i<10; i++) {
loc = GetRandomPositionFine();
a = Spawn(class'MemConUnit',,, loc);
l("MapAdjustments() spawned MCU " $ a $ " at " $ loc);
if(a != None) {
l("MapAdjustments() spawned MCU " $ a $ " at " $ loc);
break;
}
}
}
}
5 changes: 5 additions & 0 deletions DXRModules/DeusEx/Classes/DXRFashion.uc
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,11 @@ simulated function PreFirstEntry()
cr.lootableClothes=class'#var(prefix)StantonDowdCarcass';
break;

case "10_PARIS_CHATEAU":
cr = #var(injectsprefix)ClothesRack(Spawnm(class'#var(injectsprefix)ClothesRack',,,vect(-743,677,445),rot(0,16384,0))); //In Nicolette's room
cr.lootableClothes=class'#var(prefix)NicoletteDuclareCarcass';
break;

case "11_PARIS_CATHEDRAL":
cr = #var(injectsprefix)ClothesRack(Spawnm(class'#var(injectsprefix)ClothesRack',,,vect(4776,-661,-827),rot(0,16328,0))); //Near Gunther's vanilla spot
cr.lootableClothes=class'#var(prefix)GuntherHermannCarcass';
Expand Down
3 changes: 2 additions & 1 deletion DXRModules/DeusEx/Classes/DXRHints.uc
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,8 @@ simulated function InitHints()

if(dxr.flags.IsHalloweenMode()) {
AddHint("Mr. H cannot die, run away!");
AddHint("Dead bodies will come back as zombies!", "You might want to destroy the bodies.");
if(dxr.flags.settings.enemyrespawn > 0)
AddHint("Dead bodies will come back as zombies!", "You might want to destroy the bodies.");
}
if(dxr.flags.autosave == 3 && !dxr.flags.IsHordeMode()) {
AddHint("You're not allowed to manually save,", "you only get an autosave when first entering a map.");
Expand Down
48 changes: 35 additions & 13 deletions DXRModules/DeusEx/Classes/DXRStartMap.uc
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@ function PreFirstEntry()
local ElevatorMover eMover;
local #var(DeusExPrefix)Mover dxMover;
local Dispatcher disp;
local AllianceTrigger at;
local #var(prefix)AnnaNavarre anna;
local #var(prefix)OrdersTrigger ot;

Expand All @@ -62,15 +61,6 @@ function PreFirstEntry()
}
break;

case "03_NYC_MOLEPEOPLE":
if (dxr.flags.settings.starting_map >= 35) {
foreach AllActors(class'AllianceTrigger', at, 'surrender') {
at.Trigger(None, None);
break;
}
}
break;

case "05_NYC_UNATCOMJ12LAB":
if(dxr.flags.settings.starting_map > 50) {
foreach AllActors(class'#var(prefix)AnnaNavarre', anna) {
Expand Down Expand Up @@ -105,6 +95,24 @@ function PreFirstEntry()
}
break;

case "14_VANDENBERG_SUB":
if (dxr.flags.settings.starting_map == 141 || dxr.flags.settings.starting_map == 142) {
foreach AllActors(class'#var(DeusExPrefix)Mover', dxMover, 'Elevator1') {
dxMover.InterpolateTo(1, 0.0);
break;
}
}
break;

case "14_OCEANLAB_LAB":
if (dxr.flags.settings.starting_map == 142) {
foreach AllActors(class'ElevatorMover', eMover, 'lift') {
eMover.InterpolateTo(1, 0.0);
break;
}
}
break;

case "15_Area51_Bunker":
if (dxr.flags.settings.starting_map > 150) {
foreach AllActors(class'ElevatorMover', eMover, 'elevator_shaft') {
Expand Down Expand Up @@ -133,9 +141,22 @@ function PreFirstEntry()

function PostFirstEntry()
{
local AllianceTrigger at;

if(IsStartMap()) {
PostFirstEntryStartMapFixes(player(), dxr.flagbase, dxr.flags.settings.starting_map);
}

switch(dxr.localURL) {
case "03_NYC_MOLEPEOPLE":
if (dxr.flags.settings.starting_map >= 35) {
foreach AllActors(class'AllianceTrigger', at, 'surrender') {
at.Trigger(None, None);
break;
}
}
break;
}
}

static function int GetStartMapMission(int start_map_val)
Expand Down Expand Up @@ -721,12 +742,13 @@ function PreFirstEntryStartMapFixes(#var(PlayerPawn) player, FlagBase flagbase,

case 145:
flagbase.SetBool('schematic_downloaded',true,,-1); //Make sure the oceanlab UC schematics are downloaded
// fallthrough
case 142: // fallthrough
case 141:
case 142:
case 140:
MarkConvPlayed("DL_Underwater", bFemale); // The URV bay is in this module. You might not hear from me again.
case 140: // fallthrough
flagbase.SetBool('TiffanySavage_Dead',true,,15);
break;

case 153:
MarkConvPlayed("DL_Helios_Door1", bFemale); // Not yet. No... I will not allow you to enter Sector 4 until you have received my instructions.
MarkConvPlayed("DL_Helios_Intro", bFemale); // I will now explain why you have been allowed to reach Sector 3.
Expand Down
Loading