+From: RosyCross//UnderNet.44567.22356
+
To: AJacobson//UNATCO.00013.76490
+
Subject: Inquiry
+
+
The Oracle says:
+
+
We find your question interesting. We have several references to entity token "MJ12" but all are ambiguous. Will be necessary to expend cycles to clarify relationships for codification of representative patterns before further recognition can be accomplished. This will be time consuming, but past working relationships have shown a 83.23% favorable return. Work with file "SH-187" was very instructive.
+
+
We will contact you again when information has been collated.
+
+
[[The Oracle would like to know your favorite color.]]
\ No newline at end of file
diff --git a/DXRando/DeusEx/Text/03_EmailMenu_ajacobson.txt b/DXRando/DeusEx/Text/03_EmailMenu_ajacobson.txt
new file mode 100644
index 000000000..e494e62e2
--- /dev/null
+++ b/DXRando/DeusEx/Text/03_EmailMenu_ajacobson.txt
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/DXRando/DeusEx/Text/04_EmailMenu_ajacobson.txt b/DXRando/DeusEx/Text/04_EmailMenu_ajacobson.txt
new file mode 100644
index 000000000..288f15998
--- /dev/null
+++ b/DXRando/DeusEx/Text/04_EmailMenu_ajacobson.txt
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/DXRando/DeusEx/Text/05_Email12.txt b/DXRando/DeusEx/Text/05_Email12.txt
new file mode 100644
index 000000000..0d3794f04
--- /dev/null
+++ b/DXRando/DeusEx/Text/05_Email12.txt
@@ -0,0 +1,10 @@
+
+From: RosyCross//UnderNet.44567.22356
+
To: AJacobson//UNATCO.00013.76490
+
Subject: RE: Inquiry
+
+
The Oracle says:
+
+
Initial analysis of entity token "MJ12" (also reference entity tokens "Majestic", "Majestic 12", "Majestic Council of Twelve", "They Who Rule the World in Majesty", "MJID") yields confusing results that must be further refined through additional pattern analysis. Would appear to be related to entity token "Illuminati" and other self-organizing institutions that seek to affect global change through localized alteration of sociopolitical systems. Extant records dating back 837 years are extensive, but subject to a number of valid curve-fitting functions that render speculation as to possible motive or overall goals only 27.3% accurate. We dislike this ambiguity and will work to clarify prior to final report.
+
+
[[The Oracle would like to know what you think of the color blue.]]
\ No newline at end of file
diff --git a/DXRando/DeusEx/Text/05_EmailMenu_ajacobson.txt b/DXRando/DeusEx/Text/05_EmailMenu_ajacobson.txt
new file mode 100644
index 000000000..4ec7a81a1
--- /dev/null
+++ b/DXRando/DeusEx/Text/05_EmailMenu_ajacobson.txt
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/DeusEx.u b/DeusEx.u
index 48573234e..d22476dfc 100644
Binary files a/DeusEx.u and b/DeusEx.u differ
diff --git a/GMDXRandomizer.u b/GMDXRandomizer.u
index c3cd25ece..ec8cc3cb3 100644
Binary files a/GMDXRandomizer.u and b/GMDXRandomizer.u differ
diff --git a/GUI/DeusEx/Classes/BingoHintMsgBox.uc b/GUI/DeusEx/Classes/BingoHintMsgBox.uc
index a1e1d3f2b..d3bcc57f1 100644
--- a/GUI/DeusEx/Classes/BingoHintMsgBox.uc
+++ b/GUI/DeusEx/Classes/BingoHintMsgBox.uc
@@ -3,19 +3,27 @@ class BingoHintMsgBox extends MenuUIMessageBoxWindow;
#exec TEXTURE IMPORT FILE="Textures\BingoHintBoxBackground_1.pcx" NAME="BingoHintBoxBackground_1" GROUP="DXRandoUI" MIPS=Off
#exec TEXTURE IMPORT FILE="Textures\BingoHintBoxBackground_2.pcx" NAME="BingoHintBoxBackground_2" GROUP="DXRandoUI" MIPS=Off
+var PersonaScrollAreaWindow winScroll;
+
event InitWindow()
{
Super.InitWindow();
btnOK = winButtonBar.AddButton(btnLabelOK, HALIGN_Right);
+
numButtons = 1;
SetFocusWindow(btnOK);
}
function CreateTextWindow()
{
- winText = CreateMenuHeader(21, 13, "", winClient);
- winText.SetTextAlignments(HALIGN_Left, VALIGN_Center);
+ winScroll = PersonaScrollAreaWindow(winClient.NewChild(Class'PersonaScrollAreaWindow'));
+ winText = MenuUIHeaderWindow(winScroll.ClipWindow.NewChild(Class'MenuUIHeaderWindow'));
+
+ winScroll.SetPos(12, 13);
+ winScroll.SetSize(490,95);
+
+ winText.SetTextAlignments(HALIGN_Left, VALIGN_Center);
winText.SetFont(Font'FontMenuHeaders_DS');
winText.SetWindowAlignments(HALIGN_Full, VALIGN_Full, textBorderX, textBorderY);
}
diff --git a/GUI/DeusEx/Classes/DXRMenuScreenNewGame.uc b/GUI/DeusEx/Classes/DXRMenuScreenNewGame.uc
index 549f6fa0d..5349d4ce3 100644
--- a/GUI/DeusEx/Classes/DXRMenuScreenNewGame.uc
+++ b/GUI/DeusEx/Classes/DXRMenuScreenNewGame.uc
@@ -254,6 +254,16 @@ function CreateActionButtons()
actionButtons[3].btn.Hide();
}
+function GiveTip()
+{
+ // DXRando: disable this because we think it's more confusing than helpful?
+ /*if ((Human(Player) == None) || (!Human(Player).bGaveNewGameTips))
+ {
+ root.MessageBox(CheckboxTipHeader, CheckboxTipText, 1, False, Self);
+ }*/
+}
+
+
defaultproperties
{
actionButtons(0)=(Align=HALIGN_Left,Action=AB_Cancel)
diff --git a/GUI/DeusEx/Classes/HUDMedBotHealthScreen.uc b/GUI/DeusEx/Classes/HUDMedBotHealthScreen.uc
index d58c2a17e..6924888b0 100644
--- a/GUI/DeusEx/Classes/HUDMedBotHealthScreen.uc
+++ b/GUI/DeusEx/Classes/HUDMedBotHealthScreen.uc
@@ -82,6 +82,13 @@ function Tick(float deltaTime)
return;
}
+ if(medBot == None || medBot.bDeleteMe || player == None || player.bDeleteMe) {
+ player = None;
+ medBot = None;
+ DestroyWindow();
+ return;
+ }
+
UpdateMedBotDisplay();
UpdateRegionWindows();
}
diff --git a/GUI/DeusEx/Classes/HUDRechargeWindow.uc b/GUI/DeusEx/Classes/HUDRechargeWindow.uc
index 0a3efdf83..cb2ac127c 100644
--- a/GUI/DeusEx/Classes/HUDRechargeWindow.uc
+++ b/GUI/DeusEx/Classes/HUDRechargeWindow.uc
@@ -92,8 +92,8 @@ function UpdateBioWindows()
{
local float energyPercent;
- if (player==None){
- log("Player doesn't exist while updating RepairBot energy bar - probably dead?");
+ if (repairBot==None || player==None){
+ log("Player or RepairBot doesn't exist while updating RepairBot energy bar - probably dead?");
return;
}
@@ -112,6 +112,14 @@ event Tick(float deltaSeconds)
return;
}
+ if(repairBot == None || repairBot.bDeleteMe || player == None || player.bDeleteMe) {
+ player = None;
+ repairBot = None;
+ DestroyWindow();
+ root.PopWindow();
+ return;
+ }
+
if (lastRefresh >= refreshInterval)
{
lastRefresh = 0.0;
diff --git a/GUI/DeusEx/Classes/HUDSpeedrunSplits.uc b/GUI/DeusEx/Classes/HUDSpeedrunSplits.uc
index b47d5c17c..140928472 100644
--- a/GUI/DeusEx/Classes/HUDSpeedrunSplits.uc
+++ b/GUI/DeusEx/Classes/HUDSpeedrunSplits.uc
@@ -11,10 +11,11 @@ var config Font textfont;
var config Color colorBackground, colorText, colorBehind, colorBehindLosingTime, colorBehindGainingTime, colorAhead, colorAheadLosingTime, colorAheadGainingTime, colorBest, colorBestBehind, colorBestAhead;
-var config bool enabled, showPrevprev, showPrev, showCurrentMission, showNext, showSeg, showCur, showPB, showSpeed;
+var config bool enabled, showPrevprev, showPrev, showCurrentMission, showNext, showSeg, showCur, showPB, showSpeed, showAllSplits;
var config int PB[16];
var config int Golds[16];
+var config byte alwaysShowSplit[16];
var config string title, subtitle, footer;
var string ttitle, tsubtitle, tfooter;
@@ -218,9 +219,8 @@ function InitSizes(GC gc)
function DrawWindow(GC gc)
{
- local int i, t, prev, prevTime, prevprev, prevprevTime, cur, curTime, next, nextTime, time, total;
- local float x, y, h, f, delta;
- local int cur_totals[16];
+ local int i, t, prev, prevprev, cur, curTime, next, time, total, prevTotal;
+ local float x, y, f, delta;
local string msg, s;
if(stats == None) return;
@@ -234,20 +234,12 @@ function DrawWindow(GC gc)
curTime = stats.missions_times[cur];
curTime += stats.missions_menu_times[cur];
- for(i=1; i=1; i--) {
+ for(i=1; i 0) {
+ prevTotal += time;
prev = i;
- prevTime = time;
- break;
}
}
@@ -256,7 +248,6 @@ function DrawWindow(GC gc)
time += stats.missions_menu_times[i];
if(time > 0) {
prevprev = i;
- prevprevTime = time;
break;
}
}
@@ -264,7 +255,6 @@ function DrawWindow(GC gc)
for(i=cur+1; i<=15; i++) {
if(balanced_splits[i] > 0) {
next = i;
- nextTime = balanced_splits[next];
break;
}
}
@@ -276,54 +266,30 @@ function DrawWindow(GC gc)
if(left_col == 0) {
InitSizes(gc);
}
- h = text_height;
gc.SetTextColor(colorText);
gc.SetAlignments(HALIGN_Center, VALIGN_Center);
if(ttitle!="") {
gc.DrawText(x+x_pos, y+ty_pos, windowWidth - x, text_height, ttitle);
- y += h;
+ y += text_height;
}
if(tsubtitle!="") {
gc.DrawText(x+x_pos, y+ty_pos, windowWidth - x, text_height, tsubtitle);
- y += h;
+ y += text_height;
}
gc.SetAlignments(HALIGN_Left, VALIGN_Center);
- // prevprev split
- if(prevprev > 0 && showPrevprev) {
- time = cur_totals[prevprev] - balanced_splits_totals[prevprev];
- t = prevprevTime - balanced_splits[prevprev];
- msg = fmtTimeDiff(time);
-
- s = fmtTime(cur_totals[prevprev]);
- DrawTextLine(gc, MissionName(prevprev), msg, GetCmpColor(time, t, prevprevTime, Golds[prevprev]), x, y, s);
- y += h;
- }
-
- // previous split
- if(prev > 0 && showPrev) {
- time = cur_totals[prev] - balanced_splits_totals[prev];
- t = prevTime - balanced_splits[prev];
- msg = fmtTimeDiff(time);
-
- s = fmtTime(cur_totals[prev]);
- DrawTextLine(gc, MissionName(prev), msg, GetCmpColor(time, t, prevTime, Golds[prev]), x, y, s);
- y += h;
- }
-
- // current/upcoming split, showing balanced PB time
- if(showCurrentMission) {
- msg = fmtTime(balanced_splits_totals[cur]);
- DrawTextLine(gc, MissionName(cur), "", colorText, x, y, msg);
- y += h;
- }
-
- // next split
- if(next > 0 && showNext) {
- msg = fmtTime(balanced_splits_totals[next]);
- DrawTextLine(gc, MissionName(next), "", colorText, x, y, msg);
- y += h;
+ for(i=1; i 0) {
+ // past split
+ for(i=1; i<=mission; i++) {
+ total += stats.missions_times[i];
+ total += stats.missions_menu_times[i];
+ }
+ totalDiff = total - balanced_splits_totals[mission];
+ diff = time - balanced_splits[mission];
+ sDiff = fmtTimeDiff(totalDiff);
+
+ sTime = fmtTime(total);
+ DrawTextLine(gc, MissionName(mission), sDiff, GetCmpColor(totalDiff, diff, time, Golds[mission]), x, y, sTime);
+ }
+ else if(balanced_splits[mission] > 0) {
+ // future split
+ sTime = fmtTime(balanced_splits_totals[mission]);
+ DrawTextLine(gc, MissionName(mission), "", colorText, x, y, sTime);
+ }
+ else {
+ // not a real split
+ return y;
+ }
+
+ return y + text_height;
+}
+
function string MissionName(int mission)
{
if(split_names[mission] != "") return split_names[mission];
@@ -487,6 +486,7 @@ defaultproperties
showCur=true
showPB=true
showSpeed=true
+ showAllSplits=false
textfont=Font'DeusExUI.FontMenuHeaders_DS';
colorBackground=(R=0,G=0,B=0,A=100)
diff --git a/GUI/DeusEx/Classes/NewGamePlusCreditsWindow.uc b/GUI/DeusEx/Classes/NewGamePlusCreditsWindow.uc
index 865da0743..2c51671f7 100644
--- a/GUI/DeusEx/Classes/NewGamePlusCreditsWindow.uc
+++ b/GUI/DeusEx/Classes/NewGamePlusCreditsWindow.uc
@@ -54,7 +54,7 @@ function AddDXRCreditsGeneral()
PrintLn();
PrintHeader("Discord Community");
- PrintText("https://discord.gg/daQVyAp2ds");
+ PrintText("Mods4Ever.com/discord");
PrintLn();
PrintLn();
diff --git a/GUI/DeusEx/Classes/PersonaScreenImages.uc b/GUI/DeusEx/Classes/PersonaScreenImages.uc
index b0fb94f60..95c6ce113 100644
--- a/GUI/DeusEx/Classes/PersonaScreenImages.uc
+++ b/GUI/DeusEx/Classes/PersonaScreenImages.uc
@@ -1,8 +1,27 @@
class DXRPersonaScreenImages injects PersonaScreenImages;
-function SetImage(DataVaultImage newImage)
+function ClearViewedImageFlags()
{
- local string bingoName;
+ local DataVaultImage image;
+ local int listIndex;
+ local int rowId;
+
+ for(listIndex=0; listIndex 0)
+ {
+ image = DataVaultImage(lstImages.GetRowClientObject(rowId));
+ MarkViewed(image);
+ }
+ }
+}
+
+
+function MarkViewed(DataVaultImage newImage)
+{
+ local string bingoName;
local DXRando dxr;
if (newImage!=None && newImage.bPlayerViewedImage==False){
@@ -19,6 +38,4 @@ function SetImage(DataVaultImage newImage)
newImage.bPlayerViewedImage = True;
}
-
- Super.SetImage(newImage);
}
diff --git a/HXRandomizer.u b/HXRandomizer.u
index 03d774ed6..da791b586 100644
Binary files a/HXRandomizer.u and b/HXRandomizer.u differ
diff --git a/Pawns/DeusEx/Classes/PlaceholderEnemy.uc b/Pawns/DeusEx/Classes/PlaceholderEnemy.uc
index 1d5ba89f2..30203fec1 100644
--- a/Pawns/DeusEx/Classes/PlaceholderEnemy.uc
+++ b/Pawns/DeusEx/Classes/PlaceholderEnemy.uc
@@ -1,17 +1,18 @@
class PlaceholderEnemy extends #var(prefix)ThugMale;
-static function PlaceholderEnemy Create(DXRBase a, vector loc, optional int yaw, optional Name orders, optional Name ordertag)
+static function PlaceholderEnemy Create(DXRBase a, vector loc, optional int yaw, optional Name orders, optional Name ordertag, optional Name Alliance)
{
local PlaceholderEnemy e;
local rotator r;
r = a.rotm(0, yaw, 0, 16384);// Pawns need an offset of 16384
e = a.Spawn(class'PlaceholderEnemy',,, loc, r);
+ e.Alliance = Alliance;
e.InitializeAlliances(); //Needed to populate Alliance table in time for enemy shuffling
if(orders!='') {
e.SetOrders(orders, ordertag, false);
e.FollowOrders();
}
- log("Created "$ class'DXRInfo'.static.ActorToString(e), 'PlaceholderEnemy');
+ log("Created "$ class'DXRInfo'.static.ActorToString(e) @ Alliance, 'PlaceholderEnemy');
return e;
}
diff --git a/RevRandomizer.u b/RevRandomizer.u
index daf732fec..6d323a048 100644
Binary files a/RevRandomizer.u and b/RevRandomizer.u differ
diff --git a/VMDRandomizer.u b/VMDRandomizer.u
index b7bae7a57..a446f2c4b 100644
Binary files a/VMDRandomizer.u and b/VMDRandomizer.u differ
diff --git a/notes/missiondistribution.py b/notes/missiondistribution.py
new file mode 100644
index 000000000..8880fc342
--- /dev/null
+++ b/notes/missiondistribution.py
@@ -0,0 +1,41 @@
+eventfile = "..\DXRModules\DeusEx\Classes\DXREvents.uc"
+
+mission=[]
+for i in range(0,16):
+ mission.append(0)
+
+def parseBingoLine(line):
+ if "missions" in line:
+ missionVal = int(line.split("missions=")[1].replace(")",""))
+ #print(missionVal)
+
+ for i in range(0,16):
+ if(missionVal & 1):
+ mission[i]+=1
+ if (i==7 or i==13):
+ print(line)
+ missionVal = missionVal >> 1
+
+ else:
+ mission[0]+=1
+
+
+f = open(eventfile)
+defprops=False
+
+for line in f:
+ if "defaultproperties" in line:
+ defprops = True
+
+ if defprops:
+ if "bingo_options" in line:
+ parseBingoLine(line)
+
+print("Any mission: "+str(mission[0]))
+for i in range(1,16):
+ print("Mission "+str(i)+": "+str(mission[i]))
+
+
+f.close()
+
+