Skip to content

Commit

Permalink
v2.7.0.1 Beta Merge pull request #713 from Die4Ever/develop
Browse files Browse the repository at this point in the history
v2.7.0.1 Beta
  • Loading branch information
Die4Ever authored Apr 22, 2024
2 parents dba72a9 + 84658a5 commit f3564fe
Show file tree
Hide file tree
Showing 24 changed files with 299 additions and 104 deletions.
8 changes: 8 additions & 0 deletions DXRBalance/DeusEx/Classes/MilitaryBotSmaller.uc
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
class DXRMilitaryBot injects MilitaryBot;

// vanilla is CollisionRadius=80.000000
defaultproperties
{
CollisionRadius=75
CollisionHeight=79
}
8 changes: 8 additions & 0 deletions DXRBalance/DeusEx/Classes/SpiderBotSmaller.uc
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
class DXRSpiderBot injects SpiderBot;

// vanilla is CollisionRadius=111.930000
defaultproperties
{
CollisionRadius=105
CollisionHeight=50.79
}
94 changes: 94 additions & 0 deletions DXRCore/DeusEx/Classes/DXRActorsBase.uc
Original file line number Diff line number Diff line change
Expand Up @@ -707,6 +707,90 @@ function Conversation GetConversation(Name conName)
return None;
}
static function RemoveConvEventByLabel(Conversation conv, string label)
{
local ConEvent prev, ce;
for(ce=conv.eventList; ce != None; ce=ce.nextEvent) {
if(ce.label == label) {
FixConversationDeleteEvent(ce, prev);
break;
}
prev = ce;
}
}
static function ConEvent FixConversationDeleteEvent(ConEvent del, ConEvent prev)
{
local ConEvent next;
if(del == del.Conversation.eventList) {
del.Conversation.eventList = del.nextEvent;
}
if(prev != None) {
prev.nextEvent = del.nextEvent;
}
next = del.nextEvent;
if(next != None && next.label == "") {
next.label = del.label;
}
del.Conversation = None;
del.nextEvent = None;
CriticalDelete(del);
return next;
}
static function ConEvent NewConEvent(Conversation c, ConEvent prev, class<ConEvent> newclass)
{
local ConEvent e;
e = new(c) newclass;
AddConEvent(c, prev, e);
return e;
}
static function AddConEvent(Conversation c, ConEvent prev, ConEvent e)
{
e.conversation = c;
if( prev != None ) {
e.nextEvent = prev.nextEvent;
prev.nextEvent = e;
}
else {
c.eventList = e;
}
}
static function DeleteConversationFlag(Conversation c, name Name, bool Value)
{
local ConFlagRef f, prev;
if( c == None ) return;
for(f = c.flagRefList; f!=None; f=f.nextFlagRef) {
if( f.flagName == Name && f.value == Value ) {
if( prev == None )
c.flagRefList = f.nextFlagRef;
else
prev.nextFlagRef = f.nextFlagRef;
return;
}
prev = f;
}
}
static function DeleteChoiceFlag(ConChoice c, name Name, bool Value)
{
local ConFlagRef f, prev;
if( c == None ) return;
for(f = c.flagRef; f!=None; f=f.nextFlagRef) {
if( f.flagName == Name && f.value == Value ) {
if( prev == None )
c.flagRef = f.nextFlagRef;
else
prev.nextFlagRef = f.nextFlagRef;
return;
}
prev = f;
}
}
static function string GetActorName(Actor a)
{
local #var(PlayerPawn) player;
Expand Down Expand Up @@ -1508,3 +1592,13 @@ static function LogInventory(Actor actor)
log(" " $ item);
}
}

static function ConEventSpeech GetSpeechEvent(ConEvent start, string speech) {
while (start != None) {
if (start.eventType == ET_Speech && InStr(ConEventSpeech(start).conSpeech.speech, speech) != -1) {
return ConEventSpeech(start);
}
start = start.nextEvent;
}
return None;
}
2 changes: 1 addition & 1 deletion DXRCore/DeusEx/Classes/DXRBase.uc
Original file line number Diff line number Diff line change
Expand Up @@ -298,7 +298,7 @@ simulated function bool RandoLevelValues(Actor a, float min, float max, float we
if(aug != None && aug.bAutomatic) {
s = s $ "|n|nThis aug is automatic";
if(aug.AutoLength>0.1) s = s $ ", with a linger time of " $ TrimTrailingZeros(aug.AutoLength) $ " seconds";
s = s $ ".";
s = s $ ", leave it enabled and it will only use energy when necessary.";
}
#endif
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 @@ -3,9 +3,9 @@ class DXRVersion extends Info;
simulated static function CurrentVersion(optional out int major, optional out int minor, optional out int patch, optional out int build)
{
major=2;
minor=6;
patch=3;
build=9;//build can't be higher than 99
minor=7;
patch=0;
build=1;//build can't be higher than 99
}

simulated static function bool VersionIsStable()
Expand Down
8 changes: 8 additions & 0 deletions DXRMapFixups/DeusEx/Classes/DXRFixupM05.uc
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ function PreFirstEntryMapFixes()
local #var(prefix)BlackHelicopter jock;
local DXRHoverHint hoverHint;
local #var(prefix)HumanCivilian hc;
local #var(prefix)Keypad3 kp;

local DXREnemies dxre;
local int i;
Expand Down Expand Up @@ -94,6 +95,13 @@ function PreFirstEntryMapFixes()
}
}

foreach AllActors(class'#var(prefix)Keypad3', kp, 'Keypad3') {
if(kp.Name=='Keypad10') {
kp.Event = 'ExitDoor';
kp.hackStrength = 0.1;
}
}

class'PlaceholderEnemy'.static.Create(self,vectm(-5066,1368,208),,'Sitting');
class'PlaceholderEnemy'.static.Create(self,vectm(-4981,1521,208),,'Sitting');
class'PlaceholderEnemy'.static.Create(self,vectm(-3417,1369,208),,'Sitting');
Expand Down
127 changes: 97 additions & 30 deletions DXRMapFixups/DeusEx/Classes/DXRFixupVandenberg.uc
Original file line number Diff line number Diff line change
Expand Up @@ -91,22 +91,7 @@ function PreFirstEntryMapFixes()
pg.MaxCount=3;

if (VanillaMaps){
if(!dxr.flags.IsZeroRando()) {
//Add a key to Tim's closet
foreach AllActors(class'#var(DeusExPrefix)Mover',door){
if (door.Name=='DeusExMover28'){
door.KeyIDNeeded='TimsClosetKey';
door.Tag = 'TimsDoor';
AddSwitch( vect(-1782.48,1597.85,-1969), rot(0, 0, 0), 'TimsDoor');
}
}

key = Spawn(class'#var(prefix)NanoKey',,,vectm(-1502.665771,2130.560791,-1996.783691)); //Windowsill in Hazard Lab
key.KeyID='TimsClosetKey';
key.Description="Tim's Closet Key";
key.SkinColor=SC_Level3;
key.MultiSkins[0] = Texture'NanoKeyTex3';
}
VandenbergCmdFixTimsDoor();

foreach AllActors(class'#var(DeusExPrefix)Mover',door){
if(door.name=='DeusExMover15'){
Expand Down Expand Up @@ -372,6 +357,13 @@ function PreFirstEntryMapFixes()
class'PlaceholderEnemy'.static.Create(self,vectm(-1257,-3472,1468));
class'PlaceholderEnemy'.static.Create(self,vectm(1021,-3323,1476));
}

dxr.flagbase.SetBool('MS_UnhideHelicopter', True,, 15);
foreach AllActors(class'DataLinkTrigger', dlt, 'klax') {
dlt.Destroy();
break;
}

break;
case "12_VANDENBERG_COMPUTER":
if (VanillaMaps){
Expand Down Expand Up @@ -432,6 +424,29 @@ function PreFirstEntryMapFixes()
}
}

function VandenbergCmdFixTimsDoor()
{
local #var(DeusExPrefix)Mover door;
local #var(prefix)NanoKey key;

if(!dxr.flags.IsZeroRando()) {
//Add a key to Tim's closet
foreach AllActors(class'#var(DeusExPrefix)Mover',door){
if (door.Name=='DeusExMover28'){
door.KeyIDNeeded='TimsClosetKey';
door.Tag = 'TimsDoor';
AddSwitch( vect(-1782.48,1597.85,-1969), rot(0, 0, 0), 'TimsDoor');
}
}

key = Spawn(class'#var(prefix)NanoKey',,,vectm(-1502.665771,2130.560791,-1996.783691)); //Windowsill in Hazard Lab
key.KeyID='TimsClosetKey';
key.Description="Tim's Closet Key";
key.SkinColor=SC_Level3;
key.MultiSkins[0] = Texture'NanoKeyTex3';
}
}

//Add a new button in the elevator to open the doors
function FixCmdElevator()
{
Expand Down Expand Up @@ -596,6 +611,7 @@ function AnyEntryMapFixes()
local #var(prefix)ScriptedPawn sp;
local NanoKey key;
local #var(prefix)HowardStrong hs;
local bool prevMapsDone;

if(dxr.flagbase.GetBool('schematic_downloaded') && !dxr.flagbase.GetBool('DL_downloaded_Played')) {
dxr.flagbase.SetBool('DL_downloaded_Played', true);
Expand Down Expand Up @@ -631,8 +647,22 @@ function AnyEntryMapFixes()
RemoveFears(hs);
hs.MinHealth = 0;
}

Player().StartDataLinkTransmission("DL_FrontGate");

prevMapsDone = dxr.flagbase.GetBool('Heliosborn') && //Finished Vandenberg, mission 12
dxr.flagbase.GetBool('schematic_downloaded'); //Finished Ocean Lab, mission 14,
prevMapsDone = prevMapsDone || !#defined(injections) || dxr.flags.settings.goals<=0;
if(prevMapsDone && !dxr.flagbase.GetBool('MS_HowardStrongUnhidden')) {
foreach AllActors(class'#var(prefix)HowardStrong', hs) {
hs.EnterWorld();
break;
}
dxr.flagbase.SetBool('MS_HowardStrongUnhidden', True,, 15);
}

SetTimer(1, true);

break;
case "12_VANDENBERG_COMPUTER":
SetTimer(1, true);
Expand Down Expand Up @@ -675,8 +705,6 @@ function FixSavageSkillPointsDupe()
function TimerMapFixes()
{
local #var(prefix)GarySavage gary;
local #var(prefix)HowardStrong hs;
local bool prevMapsDone;

switch(dxr.localURL)
{
Expand Down Expand Up @@ -704,21 +732,60 @@ function TimerMapFixes()
break;

case "14_Oceanlab_silo":
prevMapsDone = dxr.flagbase.GetBool('Heliosborn') && //Finished Vandenberg, mission 12
dxr.flagbase.GetBool('schematic_downloaded'); //Finished Ocean Lab, mission 14,
prevMapsDone = prevMapsDone || !#defined(injections) || dxr.flags.settings.goals<=0;
_SiloGoalChecks();
break;
}
}

if(prevMapsDone
&& dxr.flagbase.GetBool('missile_launched') //Redirected the missile in Silo, mission 14
&& !dxr.flagbase.GetBool('MS_HowardStrongUnhidden'))
{
foreach AllActors(class'#var(prefix)HowardStrong', hs) {
hs.EnterWorld();
}
dxr.flagbase.SetBool('MS_HowardStrongUnhidden', True,, 15);
}
function private _SiloGoalChecks() {
local #var(prefix)HowardStrong hs;
local bool strongAlive;
local BlackHelicopter chopper;

// by design, no infolink plays after killing Howard Strong if the missile hasn't been redirected
if (dxr.flagbase.GetBool('DXR_SiloEscapeHelicopterUnhidden') || !dxr.flagbase.GetBool('missile_launched')) {
return;
}

// but we do play the vanilla infolink if you redirect the missile and howard is still alive
foreach AllActors(class'#var(prefix)HowardStrong', hs) {
strongAlive = True;
break;
}

if (strongAlive == False) {
// both goals completed
if (dxr.flagbase.GetBool('DL_Savage3_Played')) {
// both goals completed in order, computer infolink already played, play vanilla infolink
player().StartDataLinkTransmission("DL_Dead");
} else {
// goals completed out of order
_SiloRedirectedMissileWithHowardDead();
}

foreach AllActors(class'BlackHelicopter', chopper, 'BlackHelicopter') {
chopper.EnterWorld();
break;
}
dxr.flagbase.SetBool('DXR_SiloEscapeHelicopterUnhidden', True,, 15);
} else {
// only computer goal completed, play vanilla infolink
player().StartDataLinkTransmission("DL_Savage3");
}
}

function private _SiloRedirectedMissileWithHowardDead() {
// both goals completed out of order, computer infolink not played
local ConEventSpeech cesInitiated, cesMinutes;

cesInitiated = GetSpeechEvent(GetConversation('DL_Savage3').eventList, "Launch sequence initiated");
cesMinutes = GetSpeechEvent(cesInitiated, "You've got about 10 minutes");

cesInitiated.nextEvent = cesMinutes;
cesMinutes.nextEvent = GetConversation('DL_Dead').eventList;
dxr.flagbase.SetBool('DL_Dead_Played', True);

player().StartDataLinkTransmission("DL_Savage3");
}

function CountMJ12Bots()
Expand Down
6 changes: 3 additions & 3 deletions DXRMissions/DeusEx/Classes/DXRMissionsM05.uc
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ function int InitGoals(int mission, string map)
AddActorLocation(loc, 3, vect(1891.301514, -289.854248, -64.997406), rot(-3000, 58200, 0));
AddMapMarker(class'Image05_NYC_MJ12Lab',379,96,"P","Paul", loc,"Paul can be located in the surgery ward. This is the vanilla location. If Paul is in this location, your equipment will be located in the armory.");

loc = AddGoalLocation("05_NYC_UNATCOMJ12LAB", "Greasel Pit", NORMAL_GOAL, vect(375,3860,-604), rot(0, 8048, 0));
loc = AddGoalLocation("05_NYC_UNATCOMJ12LAB", "Greasel Pit", NORMAL_GOAL, vect(456,3947,-604), rot(0, 8048, 0));
AddActorLocation(loc, 3, vect(745.180481, 4150.960449, -477.601196), rot(-3100, 39700, 0));
AddMapMarker(class'Image05_NYC_MJ12Lab',325,226,"P","Paul", loc,"Paul can be located in the greasel pit accessed through the vent on the back wall of the nanotech lab. If Paul is in this location, your equipment will be located in the armory.");

Expand Down Expand Up @@ -85,7 +85,7 @@ function int InitGoalsRev(int mission, string map)
AddActorLocation(loc, 2, vect(2177.405273, -552.487671, -200.899811), rot(0, 16944, 0)); //DataLinkTrigger should be centered on his carcass rather than his living location
AddActorLocation(loc, 3, vect(1891.301514, -289.854248, -64.997406), rot(-3000, 58200, 0));

loc = AddGoalLocation("05_NYC_UNATCOMJ12LAB", "Greasel Pit", NORMAL_GOAL, vect(375,3860,-604), rot(0, 8048, 0));
loc = AddGoalLocation("05_NYC_UNATCOMJ12LAB", "Greasel Pit", NORMAL_GOAL, vect(456,3947,-604), rot(0, 8048, 0));
AddActorLocation(loc, 3, vect(745.180481, 4150.960449, -477.601196), rot(-3100, 39700, 0));

loc = AddGoalLocation("05_NYC_UNATCOMJ12LAB", "Robotics Bay Office", NORMAL_GOAL, vect(-4297,1083,210), rot(0, 16392, 0));
Expand Down Expand Up @@ -215,7 +215,7 @@ function PreFirstEntryMapFixes()
foreach AllActors(class'#var(prefix)ComputerSecurity', cs) {
if(cs.name != 'ComputerSecurity4') continue;
for(i=0; i<ArrayCount(cs.Views); i++) {
if(cs.Views[i].CameraTag != 'medcam') {
if(cs.Views[i].CameraTag == 'medcam') {
cs.Views[i].titleString = "Paul Denton";
}
}
Expand Down
3 changes: 3 additions & 0 deletions DXRMissions/DeusEx/Classes/DXRMissionsVandenberg.uc
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,9 @@ function int InitGoals(int mission, string map)
AddMutualExclusion(howard_meeting, jock_tower); //Surface meeting room and sniper tower
AddMutualExclusion(howard_radio, jock_vanilla); //Radio/Poker building and vanilla Jock
AddMutualExclusion(howard_computer, jock_computer); // both in the same room

AddMutualExclusion(computer_vanilla, jock_computer);

return 142;
}

Expand Down
2 changes: 1 addition & 1 deletion DXRModules/DeusEx/Classes/DXREnemies.uc
Original file line number Diff line number Diff line change
Expand Up @@ -201,7 +201,7 @@ function RandoEnemies(int percent, int hidden_percent)
#ifdef gmdx
if( SpiderBot2(p) != None && SpiderBot2(p).bUpsideDown ) continue;
#endif
if(!p.bImportant) {
if(!p.bImportant && Robot(p) == None) {
RandomizeSize(p);
}

Expand Down
Loading

0 comments on commit f3564fe

Please sign in to comment.