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

v2.5.5 #568

Merged
merged 84 commits into from
Nov 30, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
84 commits
Select commit Hold shift + click to select a range
120542c
bingo display case insensitive
Die4Ever Oct 14, 2023
5ba3951
add current steam path to BindoDisplay.py
MQDuck Oct 14, 2023
fac3509
add current path for hanfling's launcher on linux
MQDuck Oct 14, 2023
ee8c25c
bingo viewer Steam Deck paths Merge pull request #547 from MQDuck/dev…
Die4Ever Oct 14, 2023
b73a50a
DXRGrenades now uses the tag, event, and owner of the old grenade on
theastropath Oct 14, 2023
f0ab5e5
Add the ability to peep BingoTriggers with DXRBinoculars. Added
theastropath Oct 14, 2023
233a70a
Add a hotkey for the known accounts login button
theastropath Oct 21, 2023
ab941dd
Make Rando colour scheme less of a legal liability
theastropath Oct 21, 2023
d8574a1
Add colour scheme for menu and HUD that reflect your average health
theastropath Oct 21, 2023
c71a45d
Health colour schemes now show pure red when health is 0 (instead of
theastropath Oct 21, 2023
450acab
don't shuffle police datacube about Maggie Chow
Die4Ever Oct 22, 2023
07a5785
always show update notification
Die4Ever Oct 23, 2023
f6ce619
Bingo Viewer now ignores errors when trying to read the file more
theastropath Oct 24, 2023
93b9570
Add switch to the back door of Vandenberg command
theastropath Oct 24, 2023
1d636d1
Make sure phone call bingo goal won't appear after start of Paris (only
theastropath Oct 24, 2023
2b058c5
Make sure bingo help text accurately reflects the goal based on the
theastropath Oct 24, 2023
c4a997d
Fem JC can now always pay for companionship
theastropath Oct 24, 2023
7a8b973
Weapon mods can now be automatically applied to the weapon in your hand
theastropath Oct 24, 2023
8a48d3f
Weapon mods won't auto apply in Zero Rando
theastropath Oct 25, 2023
c240bb4
fix DXRHints spy drone hint
Die4Ever Oct 27, 2023
102c8c6
chill out with logging to the server, to save disk space lol
Die4Ever Oct 27, 2023
fd0c8d7
Serious Sam mode fix medbot scaling, WaltonWare mode without a space
Die4Ever Oct 27, 2023
3dad9f2
chill out some logging to server, to save disk space
Die4Ever Oct 27, 2023
d942087
nerf randomized security cameras
Die4Ever Oct 27, 2023
2639663
nerf randomized turrets
Die4Ever Oct 27, 2023
5d09d7e
sub base jock immediately available in WaltWare (#546)
Die4Ever Oct 27, 2023
1469450
NG+ MaxMultipleItems of 3 to prevent camo abuse in WaltWare by MQDuck
Die4Ever Oct 27, 2023
4ceaa70
01 liberty island crate behind electricity
Die4Ever Oct 27, 2023
fb64d17
Add a Forgot Your Password button to the Helios Computer room in Area
theastropath Oct 28, 2023
e4d8dec
Scopes can now do "watch x" bingo goals!
theastropath Oct 28, 2023
cfc3674
Replace ScopeView in mods to use the DXRScopeView which doesn't have
theastropath Oct 28, 2023
47c3c43
Only replace binoculars in HX
theastropath Oct 28, 2023
80f39c7
Fix lasers in Oceanlab UC so they only trigger the doors once. Add new
theastropath Oct 28, 2023
a8abe17
Vandenberg sub base elevator now crushes when encroached
theastropath Oct 28, 2023
f596ed4
speedrun splits notes
Die4Ever Oct 28, 2023
36bada9
illuminate dangerous stairs in paris apartment
Die4Ever Oct 29, 2023
1c87d6f
Add rotation offset to Dragon Tooth Sword that seems about right
theastropath Oct 29, 2023
ca796a5
BarrelFire moveable
Die4Ever Oct 29, 2023
c12ebcc
Credits can now actually properly represent Impossible difficulty
theastropath Oct 30, 2023
c481def
Dockyard sewer lasers will now only trigger once, so the spiderbot door
theastropath Oct 30, 2023
09f02a0
Fix issues with Gordon and Max moving to the temple when pawns get in
theastropath Oct 31, 2023
4beeb5d
Move Mission 2 Underground datacube out of water, add multiple
theastropath Nov 1, 2023
f27964f
Add option to make flickering and strobing lights more chill
theastropath Nov 1, 2023
456b6ad
Update Capitalism help text to mention Shannon
theastropath Nov 1, 2023
dc59500
Kills and knockouts of characters are now distinguished (so knocking
theastropath Nov 7, 2023
a9a2473
Added more pigeon generators and fish generators (#498)
theastropath Nov 8, 2023
ce34e3b
improve ChooseRandomStartMap rng (#554)
Die4Ever Nov 10, 2023
af9bef0
Add rotation offsets for security and public computers (along with a
theastropath Nov 18, 2023
2c4b965
cloned enemies clear old alliances (#454)
Die4Ever Nov 18, 2023
899afc2
fixed reduced rando paul conversation skip, and M05 goals
Die4Ever Nov 18, 2023
00a7454
v2.5.5.1 Alpha builds
Die4Ever Nov 19, 2023
7f3f05f
Add bingo goals for watching dogs, cats, and binoculars. Update
theastropath Nov 19, 2023
facb456
reduce simulated Crowd Control frequency
Die4Ever Nov 20, 2023
1ae04e0
fix tong starting m08 early
Die4Ever Nov 22, 2023
961d4aa
"time bonus" shouldn't go below 0
Die4Ever Nov 23, 2023
77e7b6b
ninja mode crossbow and knife
Die4Ever Nov 25, 2023
d9b0485
WaltWare make skills attainable
Die4Ever Nov 25, 2023
d079f39
installer Zero Changes mode (fixes for vanilla)
Die4Ever Nov 26, 2023
de12c43
installer fix DeusExe.u for kentie
Die4Ever Nov 26, 2023
783117a
further nerf randomized turrets and cameras
Die4Ever Nov 26, 2023
5fdbbc5
nerf AddStartingAugs
Die4Ever Nov 26, 2023
80c9f10
v2.5.5.2 Beta builds
Die4Ever Nov 26, 2023
5cf1832
installer fix config overwrite
Die4Ever Nov 26, 2023
2d80276
health theme MIN(head, torso) instead of average
Die4Ever Nov 26, 2023
069cd54
v2.5.5.3 Beta builds
Die4Ever Nov 26, 2023
5332156
tone down enemy thrown grenades timing based on demo skill
Die4Ever Nov 26, 2023
fc0a7fe
autosave lower the player so they don't rise up for whatever reason
Die4Ever Nov 26, 2023
9cbce18
Prevent things from being placed in skyboxes, like datacubes
theastropath Nov 27, 2023
6cb7535
Make sure all options for GetRandomPosition are present in
theastropath Nov 27, 2023
7f86d19
remove weird enemy grenade fuse time adjustment
Die4Ever Nov 27, 2023
ff2db76
shipbelow tnt crate in locked closet for Prod players
Die4Ever Nov 28, 2023
8e7de4a
DXRMissions don't adjust goal texts in reduced rando
Die4Ever Nov 29, 2023
90ced57
vand cmd keypads glow white
Die4Ever Nov 29, 2023
6e55a47
fix RiotCop always being immune to pepper spray even without visor
Die4Ever Nov 29, 2023
fed49aa
installer clarify "Zero Changes" mode in tooltip
Die4Ever Nov 29, 2023
a0a3a60
WaltonWare Entrance Rando
Die4Ever Nov 30, 2023
7fd3872
14_OCEANLAB_LAB backtracking buttons for greasel lab and crew module
Die4Ever Nov 30, 2023
d0f067a
v2.5.5.4 Beta builds
Die4Ever Nov 30, 2023
3ad6712
WaltonWare Entrance Rando only in vanilla
Die4Ever Nov 30, 2023
d96b9cb
MaxMultipleItems 5 instead of 3
Die4Ever Nov 30, 2023
fcc9992
v2.5.5.5 Beta builds
Die4Ever Nov 30, 2023
fd1da98
fixed binoculars starting item class for other mods
Die4Ever Nov 30, 2023
ac14f3d
fixed binoculars starting item class for HX
Die4Ever Nov 30, 2023
d319a22
v2.5.5.6 release candidate
Die4Ever Nov 30, 2023
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
56 changes: 34 additions & 22 deletions BingoDisplay.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
import argparse
import time
import sys
import json
import os.path
import urllib.request
import urllib.parse
import re
from tkinter import filedialog as fd
from tkinter import font
Expand Down Expand Up @@ -38,7 +41,10 @@ def __init__(self,targetFile):
self.height=500
self.selectedMod=""
self.prevLines=None
self.bingoLineMatch = re.compile(r'bingoexport\[(?P<key>\d+)\]=\(Event="(?P<event>.*)",Desc="(?P<desc>.*)",Progress=(?P<progress>\d+),Max=(?P<max>\d+),Active=(?P<active>\d+)\)')
self.bingoLineMatch = re.compile(
r'bingoexport\[(?P<key>\d+)\]=\(Event="(?P<event>.*)",Desc="(?P<desc>.*)",Progress=(?P<progress>\d+),Max=(?P<max>\d+),Active=(?P<active>\d+)\)',
re.IGNORECASE
)
self.initDrawnBoard()

def closeWindow(self):
Expand Down Expand Up @@ -141,7 +147,7 @@ def parseBingoLine(self,bingoLine):
bingoMatches=self.bingoLineMatch.match(bingoLine)
if (bingoMatches==None):
return

bingoNumber=int(bingoMatches.group('key'))
bingoCoord = self.bingoNumberToCoord(bingoNumber)

Expand All @@ -157,8 +163,12 @@ def parseBingoLine(self,bingoLine):
def readBingoFile(self):
allLines = dict()
try:
with open(self.targetFile) as file:
bingoFile = file.readlines()
try:
with open(self.targetFile) as file:
bingoFile = file.readlines()
except Exception as e:
print("Couldn't read file, ignoring - "+str(e));
return False

for line in bingoFile:
if BINGO_MOD_LINE_DETECT in line:
Expand Down Expand Up @@ -213,29 +223,29 @@ def generateBingoStateJson(self):
square["possible"]=self.board[x][y]["active"]!=-1
#print(square)
board.append(square)
#return {"bingo":json.dumps({"bingo":board},indent=4)}
#return json.dumps(board,indent=4)
return {"bingo":json.dumps({"bingo":board},indent=4)}

def sendBingoState(self):
pass
# if not os.path.isfile(JSON_DEST_FILENAME):
# return
if not os.path.isfile(JSON_DEST_FILENAME):
return

# f = open(JSON_DEST_FILENAME,'r')
# desturl=f.readline()
# f.close()
f = open(JSON_DEST_FILENAME,'r')
desturl=f.readline()
f.close()

# if (desturl==""):
# print("Make sure to specify where you want to push your json!")
# return
if (desturl==""):
print("Make sure to specify where you want to push your json!")
return

# bingoState = self.generateBingoStateJson()
# #print(bingoState)
# try:
# r = urllib.request.urlopen(desturl,data=urllib.parse.urlencode(bingoState).encode('utf-8'))
# #print(r.status)
# #print(r.read().decode('utf-8'))
# except Exception as e:
# print("Couldn't push JSON to "+desturl+" - "+str(e))
bingoState = self.generateBingoStateJson()
#print(bingoState)
try:
r = urllib.request.urlopen(desturl,data=urllib.parse.urlencode(bingoState).encode('utf-8'))
#print(r.status)
#print(r.read().decode('utf-8'))
except Exception as e:
print("Couldn't push JSON to "+desturl+" - "+str(e))


def saveLastUsedBingoFile(f):
Expand All @@ -252,6 +262,8 @@ def getDefaultPath():
# Linux
Path.home() /'snap'/'steam'/'common'/'.local'/'share'/'Steam'/'steamapps'/'common'/'Deus Ex'/'System',
Path.home() /'.steam'/'steam'/'SteamApps'/'common'/'Deus Ex'/'System',
Path.home() /'.local'/'share'/'Steam'/'steamapps'/'compatdata'/'6910'/'pfx'/'drive_c'/'users'/'steamuser'/'Documents'/'Deus Ex'/'System',
Path.home() /'.local'/'share'/'Steam'/'steamapps'/'common'/'Deus Ex'/'System',
]
p:Path
for p in checks:
Expand Down
42 changes: 0 additions & 42 deletions DXRBalance/DeusEx/Classes/ScopeView.uc

This file was deleted.

8 changes: 3 additions & 5 deletions DXRBalance/DeusEx/Classes/ThrownProjectile.uc
Original file line number Diff line number Diff line change
Expand Up @@ -37,11 +37,9 @@ simulated function PreBeginPlay()
fuseLength += 3.0 * player.SkillSystem.GetSkillLevelValue(class'SkillDemolition');
fuseLength = FClamp(fuseLength, 0.2, 6);
} else if(!bProximityTriggered) {
// higher skill gives the enemies longer fuses for thrown grenades
player = #var(PlayerPawn)(GetPlayerPawn());
if(player != None) {
fuseLength -= player.SkillSystem.GetSkillLevelValue(class'SkillDemolition') * 2.0 + 0.5;
}
// enemy fuses for thrown grenades, a bit quicker than vanilla
fuseLength -= 0.4;
fuseLength = FClamp(fuseLength, 0.2, 6);
}
}

Expand Down
27 changes: 20 additions & 7 deletions DXRCore/DeusEx/Classes/DXRActorsBase.uc
Original file line number Diff line number Diff line change
Expand Up @@ -327,7 +327,7 @@ function Inventory MoveNextItemTo(Inventory item, vector Location, name Tag)
local Inventory nextItem;
local #var(PlayerPawn) player;
local int i;
info("MoveNextItemTo("$item@Location@Tag$")");
l("MoveNextItemTo("$item@Location@Tag$")");
// Find the next item we can process.
while(item != None && (item.IsA('NanoKeyRing') || (!item.bDisplayableInv) || Ammo(item) != None))
item = item.Inventory;
Expand All @@ -336,7 +336,7 @@ function Inventory MoveNextItemTo(Inventory item, vector Location, name Tag)

nextItem = item.Inventory;
player = #var(PlayerPawn)(item.owner);
info("MoveNextItemTo found: " $ item $ "(" $ item.Location $ ") with owner: " $ item.owner $ ", nextItem: " $ nextItem);
l("MoveNextItemTo found: " $ item $ "(" $ item.Location $ ") with owner: " $ item.owner $ ", nextItem: " $ nextItem);

//== Y|y: Turn off any charged pickups we were using and remove the associated HUD. Per Lork on the OTP forums
if(player != None) {
Expand All @@ -354,7 +354,7 @@ function Inventory MoveNextItemTo(Inventory item, vector Location, name Tag)
item.DropFrom(Location);
item.Tag = Tag;// so we can find the item again later
item.bIsSecretGoal = true;// so they don't get deleted by DXRReduceItems
info("MoveNextItemTo "$item$" drop from: ("$Location$"), now at ("$item.Location$"), attempts: "$i);
l("MoveNextItemTo "$item$" drop from: ("$Location$"), now at ("$item.Location$"), attempts: "$i);

// restore any ammo amounts for a weapon to default; Y|y: except for grenades
if (item.IsA('Weapon') && (Weapon(item).AmmoType != None) && !item.IsA('WeaponLAM') && !item.IsA('WeaponGasGrenade') && !item.IsA('WeaponEMPGrenade') && !item.IsA('WeaponNanoVirusGrenade'))
Expand Down Expand Up @@ -737,6 +737,17 @@ static function int GetRotationOffset(class<Actor> c)
return 16384;
if(ClassIsChildOf(c, class'#var(prefix)ThrownProjectile'))
return 16384;
if(ClassIsChildOf(c, class'#var(prefix)WHRedCandleabra'))
return 16384;
if(ClassIsChildOf(c, class'#var(prefix)WeaponNanoSword'))
return 10755;
if(ClassIsChildOf(c, class'#var(prefix)ComputerSecurity'))
return 16384;
if(ClassIsChildOf(c, class'#var(prefix)ComputerPublic'))
return 16384;
//ComputerPersonal is fine without this, so just leave it commented out
//if(ClassIsChildOf(c, class'#var(prefix)ComputerPersonal'))
// return 32768;
if(ClassIsChildOf(c, class'Brush')) {
log("WARNING: GetRotationOffset for "$c$", Brushes/Movers have negative scaling so they don't need rotation adjustments!");
return -1;
Expand Down Expand Up @@ -944,7 +955,7 @@ function bool CheckFreeSpace(out vector loc, float radius, float height)
return true;
}

function vector GetRandomPosition(optional vector target, optional float mindist, optional float maxdist, optional bool allowWater, optional bool allowPain)
function vector GetRandomPosition(optional vector target, optional float mindist, optional float maxdist, optional bool allowWater, optional bool allowPain, optional bool allowSky)
{
local PathNode temp[4096];
local PathNode p;
Expand All @@ -955,6 +966,7 @@ function vector GetRandomPosition(optional vector target, optional float mindist
maxdist = 9999999;

foreach AllActors(class'PathNode', p) {
if( (!allowSky) && p.Region.Zone.IsA('SkyZoneInfo') ) continue;
if( (!allowWater) && p.Region.Zone.bWaterZone ) continue;
if( (!allowPain) && (p.Region.Zone.bKillZone || p.Region.Zone.bPainZone ) ) continue;
dist = VSize(p.Location-target);
Expand All @@ -974,10 +986,10 @@ function vector JitterPosition(vector loc)
return loc;
}

function vector GetRandomPositionFine(optional vector target, optional float mindist, optional float maxdist, optional bool allowWater, optional bool allowPain)
function vector GetRandomPositionFine(optional vector target, optional float mindist, optional float maxdist, optional bool allowWater, optional bool allowPain, optional bool allowSky)
{
local vector loc;
loc = GetRandomPosition(target, mindist, maxdist, allowWater, allowPain);
loc = GetRandomPosition(target, mindist, maxdist, allowWater, allowPain, allowSky);
loc = JitterPosition(loc);
return loc;
}
Expand Down Expand Up @@ -1363,13 +1375,14 @@ function bool PositionIsSafeLenient(Vector oldloc, Actor test, Vector newloc)
return _PositionIsSafeOctant(oldloc, GetCenter(test), newloc);
}

static function GlowUp(Actor a, optional byte hue)
static function GlowUp(Actor a, optional byte hue, optional byte saturation)
{
a.LightType=LT_Steady;
a.LightEffect=LE_None;
a.LightBrightness=160;
if(hue == 0) hue = 155;
a.LightHue=hue;
if(saturation !=0) a.LightSaturation=saturation;
a.LightRadius=6;
}

Expand Down
8 changes: 4 additions & 4 deletions DXRCore/DeusEx/Classes/DXRBase.uc
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ simulated function ReEntry(bool IsTravel);

simulated function bool CheckLogin(#var(PlayerPawn) player)
{
info("CheckLogin("$player$"), inited: "$inited$", dxr.flagbase: "$dxr.flagbase$", dxr.flags.flags_loaded: "$dxr.flags.flags_loaded$", player.SkillSystem: "$player.SkillSystem$", player.SkillSystem.FirstSkill: "$player.SkillSystem.FirstSkill);
l("CheckLogin("$player$"), inited: "$inited$", dxr.flagbase: "$dxr.flagbase$", dxr.flags.flags_loaded: "$dxr.flags.flags_loaded$", player.SkillSystem: "$player.SkillSystem$", player.SkillSystem.FirstSkill: "$player.SkillSystem.FirstSkill);
if( inited == false ) return false;
if( player == None ) return false;
if( player.SkillSystem == None ) return false;
Expand Down Expand Up @@ -275,7 +275,7 @@ simulated function bool RandoLevelValues(Actor a, float min, float max, float we

s = "(DXRando) " $ word $ ":|n " $ s;

info("RandoLevelValues "$a$" = "$s);
l("RandoLevelValues "$a$" = "$s);
ReapplySeed( oldseed );

if(add_desc != "") {
Expand Down Expand Up @@ -433,7 +433,7 @@ simulated function CreateMessageBox( String msgTitle, String msgText, int msgBox

local DXRMessageBoxWindow msgBox;

info(module$" CreateMessageBox "$msgTitle$" - "$msgText);
l(module$" CreateMessageBox "$msgTitle$" - "$msgText);

msgBox = DXRMessageBoxWindow(DeusExRootWindow(player().rootWindow).PushWindow(Class'DXRMessageBoxWindow', False, noPause ));
msgBox.SetTitle(msgTitle);
Expand All @@ -451,7 +451,7 @@ simulated function CreateCustomMessageBox (String msgTitle, String msgText, int
DXRBase module, int id, optional bool noPause) {
local DXRMessageBoxWindow msgBox;

info(module$" CreateCustomMessageBox "$msgTitle$" - "$msgText);
l(module$" CreateCustomMessageBox "$msgTitle$" - "$msgText);

msgBox = DXRMessageBoxWindow(DeusExRootWindow(player().rootWindow).PushWindow(Class'DXRMessageBoxWindow', False, noPause ));
msgBox.SetTitle(msgTitle);
Expand Down
3 changes: 1 addition & 2 deletions DXRCore/DeusEx/Classes/DXRMenuSetupRando.uc
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,7 @@ function BindControls(optional string action)
EnumOption("Ocean Lab", 140, f.settings.starting_map);
EnumOption("Area 51", 150, f.settings.starting_map);
if(EnumOption("Random", -1)) {
f.SetGlobalSeed("random starting map");
f.settings.starting_map = class'DXRStartMap'.static.ChooseRandomStartMap(f.dxr,0);
f.settings.starting_map = class'DXRStartMap'.static.ChooseRandomStartMap(f, 0);
}

BreakLine();
Expand Down
4 changes: 2 additions & 2 deletions DXRCore/DeusEx/Classes/DXRVersion.uc
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ simulated static function CurrentVersion(optional out int major, optional out in
{
major=2;
minor=5;
patch=4;
build=7;//build can't be higher than 99
patch=5;
build=6;//build can't be higher than 99
}

simulated static function string VersionString(optional bool full)
Expand Down
6 changes: 6 additions & 0 deletions DXRFixes/DeusEx/Classes/RiotCop.uc
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
class DXRRiotCopy injects RiotCop;

function GotoDisabledState(name damageType, EHitLocation hitPos)
{
Super(HumanMilitary).GotoDisabledState(damageType, hitPos);
}
6 changes: 4 additions & 2 deletions DXRMapFixups/DeusEx/Classes/DXRFixupM01.uc
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ function PostFirstEntryMapFixes()

switch(dxr.localURL) {
case "01_NYC_UNATCOISLAND":
AddBox(class'#var(prefix)CrateUnbreakableSmall', vectm(6720.866211, -3346.700684, -445.899597));// electrical hut
foreach AllActors(class'DeusExMover', m, 'UN_maindoor') {
m.bBreakable = false;
m.bPickable = false;
Expand Down Expand Up @@ -83,10 +84,11 @@ function PreFirstEntryMapFixes()
FixUNATCOCarterCloset();

#ifdef injections
foreach AllActors(class'#var(prefix)Newspaper',np){
foreach AllActors(class'#var(prefix)Newspaper',np)
#else
foreach AllActors(class'DXRInformationDevices',np){
foreach AllActors(class'DXRInformationDevices',np)
#endif
{
//Make both Joe Greene articles in HQ the same one
if (np.textTag=='01_Newspaper06'){
np.textTag='01_Newspaper08';
Expand Down
Loading