UE Map Editor

Ultimate Editor; support/discussion/questions

Moderator: thunderchero

Post Reply
User avatar
Spocks-cuddly-tribble
Code Master
Code Master
Posts: 1926
Joined: Sun Apr 27, 2008 2:00 am

UE Map Editor - systInfo dil/ship data

Post by Spocks-cuddly-tribble »

Update for - systInfo (broken/unfinished features):

+0x0274 = Dilithium (running) -> loaded from 0x013C
+0x0278 = bugged AI (& dilithium shortage) Marker 1 = read Industry Output for Ship Construction (AI military power check)
+0x027C = build ship marker (? cf. +80 =3)

+0x02CC = Dilithium (running) -> loaded from 0x01FC
+0x02D0 = bugged AI (& dilithium shortage) Marker 1 = read Industry Output for Ship Construction (AI military power check)
+0x02D4 = build ship marker (? cf. +80 =3)


Codes look like remains of an unfinished feature for global (+local) dilithium pools supposed to be used with ship specific dilithium costs.

Current state of affairs is the AI marker is set for ProvInfo star systems up to [number of running dilithium sources].

NOT sorted by pop, industry or even presence of shipyards i.e. just random system outputs. :mad:


My first patch corrects the marker to ship-producing systems up to the max dilithium capacity. Second patch adjusts the ratio for the AI offensive
military power check.

Code: Select all

NAME: AI Check of Industry Capacities for Ship Construction - Dilithium Allocation Fix
DESC: For mods with disabled dilithium requirements for finishing ships (e.g. UDM3) use deviation code (bottom).
AUTHOR: Spocks-cuddly-tribble
URL: 

>> 0x00060477 e8 54 22 fe ff 01 fb
>> 0x000604ac 8b 14
>> 0x000604af 8d 34 95 00 00 00 00 29 d6 c1 e6 02 29 d6 c1 e6 03 0f bf 18 69 db 28 03 00 00 8b 15 c8 36 5a 00 01 da 81 c2 40 02 00 00 01 f2 85 c9 76 1a
>> 0x000604ed d2

<< 0x00060477 03 df 8b 43 3c 90 90
<< 0x000604ac 6b 34
<< 0x000604af 58 0f bf 18 69 db 28 03 00 00 03 1d c8 36 5a 00 8d 94 33 40 02 00 00 85 c9 76 2d 83 7a 3c 01 75 27 90 90 90 90 90 90 90 90 90 90 90 90 90
<< 0x000604ed c2

#00461077     03DF              ADD EBX,EDI
#00461079     8B43 3C           MOV EAX,[EBX+3C]
#0046107C     9090              NOP

#004610AC     6B3424 58         IMUL ESI,[ESP],58
#004610B0     0FBF18            MOVSX EBX,WORD[EAX]
#004610B3     69DB 28030000     IMUL EBX,EBX,328
#004610B9     031D C8365A00     ADD EBX,[5A36C8]
#004610BF     8D9433 40020000   LEA EDX,[EBX+ESI+240]
#004610C6     85C9              TEST ECX,ECX
#004610C8     76 2D             JBE SHORT 4610F7 -> for mods with disabled dilithium requirements for finishing ships -> NOP
#004610CA     837A 3C 01        CMP DWORD[EDX+3C],1
#004610CE     75 27             JNZ SHORT 4610F7
#004610D0-4610DC      90        NOP

#004610EC    ^75 C2             JNZ SHORT 4610B0

# Code deviation for mods with disabled dilithium requirements for finishing ships:
# >> 0x604C8 76 2D
# << 0x604C8 90 90

Code: Select all

NAME: AI Offensive Military Power Check - Ratio & Source Data Optimisation
DESC: Offensive War Fleet Cost + 8 * Industry Outputs for Ship Construction.
AUTHOR: Spocks-cuddly-tribble
URL: 

>> 0x0002cad6 8d 04 d5 00
>> 0x0002cadc 00 01 d0 c1 e0 02 01 d0 c1 e0 02 89 c2 c1 e0 02 29 d0
>> 0x0002cb4e 8d 04 d5 00
>> 0x0002cb54 00 01 d0 c1 e0 02
>> 0x0002cb5e 01 d0
>> 0x0002cb65 e0 02
>> 0x0002cb6a c2 c1 e0 02
>> 0x0002cb72 29 d0

<< 0x0002cad6 69 c2 bc 01
<< 0x0002cadc 8b 90 4c 1c 5b 00 c1 ea 03 89 54 24 24 90 90 90 90 90
<< 0x0002cb4e 69 c2 bc 01
<< 0x0002cb54 8b 90 4c 1c 5b 00
<< 0x0002cb5e 90 90
<< 0x0002cb65 ea 03
<< 0x0002cb6a 54 24 20 90
<< 0x0002cb72 90 90


#0042D6D6     69C2 BC010000     IMUL EAX,EDX,1BC
#0042D6DC     8B90 4C1C5B00     MOV EDX,[EAX+5B1C4C]
#0042D6E2     C1EA 03           SHR EDX,3
#0042D6E5     895424 24         MOV [ESP+24],EDX
#0042D6E9     9090909090        NOP


#0042D74E     69C2 BC010000     IMUL EAX,EDX,1BC
#0042D754     8B90 4C1C5B00     MOV EDX,[EAX+5B1C4C]

#0042D75E     9090              NOP

#0042D764     C1EA 03           SHR EDX,3

#0042D769     895424 20         MOV [ESP+20],EDX
#0042D76D     90                NOP

#0042D772     9090              NOP
---

Old post:
Flocke wrote: Sun May 22, 2022 4:30 pmI found that I can't view the MUM buildings of stbof.res. This issue however is present with old UE versions as well, so I'm not sure whether I'll address this one any soon.
I guess you mean this issue with trek.exe building IDs and main building IDs, base IDs and upgades? viewtopic.php?p=56248#p56248
viewtopic.php?p=56260#p56260
Flocke wrote: Sun May 22, 2022 4:30 pmI havn't checked the last save uploaded by TC yet either. :???:
To limit issues like this (TF NULL crash after messing with [saved] game features), user could try to re-set all TF move destinations to current position i.e. select current sector as move destination, then release TF interface. Best wait one turn before giving new destination or new order: viewtopic.php?p=37836#p37836
On the other hand, IIRC sometimes you must permit a certain TF to keep moving at least one turn :???:
I don't know how many bugs is too many but that point is reached somewhere before however many in BotF is.
User avatar
thunderchero
Site Administrator aka Fleet Admiral
Site  Administrator aka Fleet Admiral
Posts: 7933
Joined: Fri Apr 25, 2008 2:00 am
Location: On a three month training mission, in command of the USS Valiant.

Re: UE Map Editor

Post by thunderchero »

Hi Flocke,

I tried to build current version (modded_save_detection) and got error again when building

Code: Select all

org.gradle.internal.exceptions.LocationAwareException: Execution failed for task ':compileJava'.
	at org.gradle.initialization.exception.DefaultExceptionAnalyser.transform(DefaultExceptionAnalyser.java:103)
	at org.gradle.initialization.exception.DefaultExceptionAnalyser.collectFailures(DefaultExceptionAnalyser.java:67)
	at org.gradle.initialization.exception.MultipleBuildFailuresExceptionAnalyser.transform(MultipleBuildFailuresExceptionAnalyser.java:40)
	at org.gradle.initialization.exception.StackTraceSanitizingExceptionAnalyser.transform(StackTraceSanitizingExceptionAnalyser.java:30)
	at org.gradle.initialization.DefaultGradleLauncher.finishBuild(DefaultGradleLauncher.java:188)
	at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:151)
	at org.gradle.initialization.DefaultGradleLauncher.executeTasks(DefaultGradleLauncher.java:124)
	at org.gradle.internal.invocation.GradleBuildController$1.create(GradleBuildController.java:72)
	at org.gradle.internal.invocation.GradleBuildController$1.create(GradleBuildController.java:67)
	at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:213)
	at org.gradle.internal.invocation.GradleBuildController.doBuild(GradleBuildController.java:67)
	at org.gradle.internal.invocation.GradleBuildController.run(GradleBuildController.java:56)
	at org.gradle.tooling.internal.provider.runner.BuildModelActionRunner.run(BuildModelActionRunner.java:56)
	at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
	at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
	at org.gradle.launcher.exec.BuildOutcomeReportingBuildActionRunner.run(BuildOutcomeReportingBuildActionRunner.java:63)
	at org.gradle.tooling.internal.provider.ValidatingBuildActionRunner.run(ValidatingBuildActionRunner.java:32)
	at org.gradle.tooling.internal.provider.FileSystemWatchingBuildActionRunner.run(FileSystemWatchingBuildActionRunner.java:77)
	at org.gradle.launcher.exec.BuildCompletionNotifyingBuildActionRunner.run(BuildCompletionNotifyingBuildActionRunner.java:41)
	at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$3.call(RunAsBuildOperationBuildActionRunner.java:49)
	at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$3.call(RunAsBuildOperationBuildActionRunner.java:44)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:200)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:195)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:62)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$call$2(DefaultBuildOperationExecutor.java:76)
	at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.callWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:54)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:76)
	at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner.run(RunAsBuildOperationBuildActionRunner.java:44)
	at org.gradle.launcher.exec.InProcessBuildActionExecuter.lambda$execute$0(InProcessBuildActionExecuter.java:54)
	at org.gradle.composite.internal.DefaultRootBuildState.run(DefaultRootBuildState.java:86)
	at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:53)
	at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:29)
	at org.gradle.launcher.exec.BuildTreeScopeLifecycleBuildActionExecuter.lambda$execute$0(BuildTreeScopeLifecycleBuildActionExecuter.java:33)
	at org.gradle.internal.buildtree.BuildTreeState.run(BuildTreeState.java:49)
	at org.gradle.launcher.exec.BuildTreeScopeLifecycleBuildActionExecuter.execute(BuildTreeScopeLifecycleBuildActionExecuter.java:32)
	at org.gradle.launcher.exec.BuildTreeScopeLifecycleBuildActionExecuter.execute(BuildTreeScopeLifecycleBuildActionExecuter.java:27)
	at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:104)
	at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:55)
	at org.gradle.tooling.internal.provider.SubscribableBuildActionExecuter.execute(SubscribableBuildActionExecuter.java:64)
	at org.gradle.tooling.internal.provider.SubscribableBuildActionExecuter.execute(SubscribableBuildActionExecuter.java:37)
	at org.gradle.tooling.internal.provider.SessionScopeLifecycleBuildActionExecuter.lambda$execute$0(SessionScopeLifecycleBuildActionExecuter.java:54)
	at org.gradle.internal.session.BuildSessionState.run(BuildSessionState.java:67)
	at org.gradle.tooling.internal.provider.SessionScopeLifecycleBuildActionExecuter.execute(SessionScopeLifecycleBuildActionExecuter.java:50)
	at org.gradle.tooling.internal.provider.SessionScopeLifecycleBuildActionExecuter.execute(SessionScopeLifecycleBuildActionExecuter.java:36)
	at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:36)
	at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:25)
	at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:59)
	at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:31)
	at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:55)
	at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:41)
	at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:47)
	at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:31)
	at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:65)
	at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:39)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:29)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:35)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.create(ForwardClientInput.java:78)
	at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.create(ForwardClientInput.java:75)
	at org.gradle.util.Swapper.swap(Swapper.java:38)
	at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:75)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:55)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:63)
	at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:84)
	at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:52)
	at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:297)
	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
Caused by: org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':compileJava'.
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$3(ExecuteActionsTaskExecuter.java:186)
	at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:268)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:184)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:173)
	at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:109)
	at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
	at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:62)
	at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
	at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)
	at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:200)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:195)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:62)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$call$2(DefaultBuildOperationExecutor.java:76)
	at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.callWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:54)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:76)
	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
	at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:41)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:411)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:398)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:391)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:377)
	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.lambda$run$0(DefaultPlanExecutor.java:127)
	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:191)
	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:182)
	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:124)
	... 3 more
Caused by: org.gradle.api.internal.tasks.compile.CompilationFailedException: Compilation failed; see the compiler error output for details.
	at org.gradle.api.internal.tasks.compile.JdkJavaCompiler.execute(JdkJavaCompiler.java:57)
	at org.gradle.api.internal.tasks.compile.JdkJavaCompiler.execute(JdkJavaCompiler.java:40)
	at org.gradle.api.internal.tasks.compile.NormalizingJavaCompiler.delegateAndHandleErrors(NormalizingJavaCompiler.java:97)
	at org.gradle.api.internal.tasks.compile.NormalizingJavaCompiler.execute(NormalizingJavaCompiler.java:51)
	at org.gradle.api.internal.tasks.compile.NormalizingJavaCompiler.execute(NormalizingJavaCompiler.java:37)
	at org.gradle.api.internal.tasks.compile.AnnotationProcessorDiscoveringCompiler.execute(AnnotationProcessorDiscoveringCompiler.java:51)
	at org.gradle.api.internal.tasks.compile.AnnotationProcessorDiscoveringCompiler.execute(AnnotationProcessorDiscoveringCompiler.java:37)
	at org.gradle.api.internal.tasks.compile.ModuleApplicationNameWritingCompiler.execute(ModuleApplicationNameWritingCompiler.java:46)
	at org.gradle.api.internal.tasks.compile.ModuleApplicationNameWritingCompiler.execute(ModuleApplicationNameWritingCompiler.java:36)
	at org.gradle.api.internal.tasks.compile.CleaningJavaCompiler.execute(CleaningJavaCompiler.java:53)
	at org.gradle.api.internal.tasks.compile.incremental.IncrementalCompilerFactory.lambda$createRebuildAllCompiler$0(IncrementalCompilerFactory.java:98)
	at org.gradle.api.internal.tasks.compile.incremental.IncrementalResultStoringCompiler.execute(IncrementalResultStoringCompiler.java:61)
	at org.gradle.api.internal.tasks.compile.incremental.IncrementalResultStoringCompiler.execute(IncrementalResultStoringCompiler.java:45)
	at org.gradle.api.internal.tasks.compile.CompileJavaBuildOperationReportingCompiler$2.call(CompileJavaBuildOperationReportingCompiler.java:59)
	at org.gradle.api.internal.tasks.compile.CompileJavaBuildOperationReportingCompiler$2.call(CompileJavaBuildOperationReportingCompiler.java:51)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:200)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:195)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:62)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$call$2(DefaultBuildOperationExecutor.java:76)
	at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.callWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:54)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:76)
	at org.gradle.api.internal.tasks.compile.CompileJavaBuildOperationReportingCompiler.execute(CompileJavaBuildOperationReportingCompiler.java:51)
	at org.gradle.api.tasks.compile.JavaCompile.performCompilation(JavaCompile.java:345)
	at org.gradle.api.tasks.compile.JavaCompile.performIncrementalCompilation(JavaCompile.java:239)
	at org.gradle.api.tasks.compile.JavaCompile.compile(JavaCompile.java:211)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:104)
	at org.gradle.api.internal.project.taskfactory.IncrementalInputsTaskAction.doExecute(IncrementalInputsTaskAction.java:32)
	at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:51)
	at org.gradle.api.internal.project.taskfactory.AbstractIncrementalTaskAction.execute(AbstractIncrementalTaskAction.java:25)
	at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:29)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$2.run(ExecuteActionsTaskExecuter.java:494)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:56)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$run$1(DefaultBuildOperationExecutor.java:71)
	at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.runWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:45)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:71)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:479)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:462)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.access$400(ExecuteActionsTaskExecuter.java:105)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.executeWithPreviousOutputFiles(ExecuteActionsTaskExecuter.java:273)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.execute(ExecuteActionsTaskExecuter.java:251)
	at org.gradle.internal.execution.steps.ExecuteStep.lambda$executeOperation$0(ExecuteStep.java:65)
	at org.gradle.internal.execution.steps.ExecuteStep.executeOperation(ExecuteStep.java:65)
	at org.gradle.internal.execution.steps.ExecuteStep.access$000(ExecuteStep.java:34)
	at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:47)
	at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:44)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:200)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:195)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:62)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$call$2(DefaultBuildOperationExecutor.java:76)
	at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.callWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:54)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:76)
	at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:44)
	at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:34)
	at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:72)
	at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:42)
	at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:53)
	at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:39)
	at org.gradle.internal.execution.steps.CancelExecutionStep.execute(CancelExecutionStep.java:44)
	at org.gradle.internal.execution.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:77)
	at org.gradle.internal.execution.steps.TimeoutStep.execute(TimeoutStep.java:58)
	at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:54)
	at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:32)
	at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.execute(CaptureStateAfterExecutionStep.java:57)
	at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.execute(CaptureStateAfterExecutionStep.java:38)
	at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:63)
	at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:30)
	at org.gradle.internal.execution.steps.BuildCacheStep.executeWithoutCache(BuildCacheStep.java:176)
	at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:76)
	at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:47)
	at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:43)
	at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:32)
	at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:39)
	at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:25)
	at org.gradle.internal.execution.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:102)
	at org.gradle.internal.execution.steps.SkipUpToDateStep.lambda$execute$0(SkipUpToDateStep.java:95)
	at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:55)
	at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:39)
	at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:83)
	at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:44)
	at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:37)
	at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:27)
	at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:96)
	at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:52)
	at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:83)
	at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:54)
	at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:74)
	at org.gradle.internal.execution.steps.SkipEmptyWorkStep.lambda$execute$2(SkipEmptyWorkStep.java:88)
	at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:88)
	at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:34)
	at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsStartedStep.execute(MarkSnapshottingInputsStartedStep.java:38)
	at org.gradle.internal.execution.steps.LoadExecutionStateStep.execute(LoadExecutionStateStep.java:46)
	at org.gradle.internal.execution.steps.LoadExecutionStateStep.execute(LoadExecutionStateStep.java:34)
	at org.gradle.internal.execution.steps.AssignWorkspaceStep.lambda$execute$0(AssignWorkspaceStep.java:43)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution$3.withWorkspace(ExecuteActionsTaskExecuter.java:286)
	at org.gradle.internal.execution.steps.AssignWorkspaceStep.execute(AssignWorkspaceStep.java:43)
	at org.gradle.internal.execution.steps.AssignWorkspaceStep.execute(AssignWorkspaceStep.java:33)
	at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:40)
	at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:30)
	at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:54)
	at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:40)
	at org.gradle.internal.execution.impl.DefaultExecutionEngine.execute(DefaultExecutionEngine.java:41)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$1(ExecuteActionsTaskExecuter.java:183)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:183)
	... 33 more

Root cause: org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':compileJava'.
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$3(ExecuteActionsTaskExecuter.java:186)
	at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:268)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:184)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:173)
	at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:109)
	at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
	at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:62)
	at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
	at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)
	at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:200)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:195)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:62)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$call$2(DefaultBuildOperationExecutor.java:76)
	at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.callWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:54)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:76)
	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
	at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:41)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:411)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:398)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:391)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:377)
	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.lambda$run$0(DefaultPlanExecutor.java:127)
	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:191)
	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:182)
	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:124)
	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
Caused by: org.gradle.api.internal.tasks.compile.CompilationFailedException: Compilation failed; see the compiler error output for details.
	at org.gradle.api.internal.tasks.compile.JdkJavaCompiler.execute(JdkJavaCompiler.java:57)
	at org.gradle.api.internal.tasks.compile.JdkJavaCompiler.execute(JdkJavaCompiler.java:40)
	at org.gradle.api.internal.tasks.compile.NormalizingJavaCompiler.delegateAndHandleErrors(NormalizingJavaCompiler.java:97)
	at org.gradle.api.internal.tasks.compile.NormalizingJavaCompiler.execute(NormalizingJavaCompiler.java:51)
	at org.gradle.api.internal.tasks.compile.NormalizingJavaCompiler.execute(NormalizingJavaCompiler.java:37)
	at org.gradle.api.internal.tasks.compile.AnnotationProcessorDiscoveringCompiler.execute(AnnotationProcessorDiscoveringCompiler.java:51)
	at org.gradle.api.internal.tasks.compile.AnnotationProcessorDiscoveringCompiler.execute(AnnotationProcessorDiscoveringCompiler.java:37)
	at org.gradle.api.internal.tasks.compile.ModuleApplicationNameWritingCompiler.execute(ModuleApplicationNameWritingCompiler.java:46)
	at org.gradle.api.internal.tasks.compile.ModuleApplicationNameWritingCompiler.execute(ModuleApplicationNameWritingCompiler.java:36)
	at org.gradle.api.tasks.compile.JavaCompile.performCompilation(JavaCompile.java:345)
	at org.gradle.api.tasks.compile.JavaCompile.performIncrementalCompilation(JavaCompile.java:239)
	at org.gradle.api.tasks.compile.JavaCompile.compile(JavaCompile.java:211)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:104)
	at org.gradle.api.internal.project.taskfactory.IncrementalInputsTaskAction.doExecute(IncrementalInputsTaskAction.java:32)
	at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:51)
	at org.gradle.api.internal.project.taskfactory.AbstractIncrementalTaskAction.execute(AbstractIncrementalTaskAction.java:25)
	at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:29)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$2.run(ExecuteActionsTaskExecuter.java:494)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:56)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$run$1(DefaultBuildOperationExecutor.java:71)
	at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.runWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:45)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:71)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:479)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:462)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.access$400(ExecuteActionsTaskExecuter.java:105)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.executeWithPreviousOutputFiles(ExecuteActionsTaskExecuter.java:273)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.execute(ExecuteActionsTaskExecuter.java:251)
	at org.gradle.internal.execution.steps.ExecuteStep.lambda$executeOperation$0(ExecuteStep.java:65)
	at org.gradle.internal.execution.steps.ExecuteStep.executeOperation(ExecuteStep.java:65)
	at org.gradle.internal.execution.steps.ExecuteStep.access$000(ExecuteStep.java:34)
	at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:47)
	at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:44)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:200)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:195)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:62)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$call$2(DefaultBuildOperationExecutor.java:76)
	at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.callWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:54)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:76)
	at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:44)
	at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:34)
	at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:72)
	at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:42)
	at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:53)
	at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:39)
	at org.gradle.internal.execution.steps.CancelExecutionStep.execute(CancelExecutionStep.java:44)
	at org.gradle.internal.execution.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:77)
	at org.gradle.internal.execution.steps.TimeoutStep.execute(TimeoutStep.java:58)
	at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:54)
	at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:32)
	at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.execute(CaptureStateAfterExecutionStep.java:57)
	at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.execute(CaptureStateAfterExecutionStep.java:38)
	at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:63)
	at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:30)
	at org.gradle.internal.execution.steps.BuildCacheStep.executeWithoutCache(BuildCacheStep.java:176)
	at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:76)
	at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:47)
	at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:43)
	at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:32)
	at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:39)
	at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:25)
	at org.gradle.internal.execution.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:102)
	at org.gradle.internal.execution.steps.SkipUpToDateStep.lambda$execute$0(SkipUpToDateStep.java:95)
	at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:55)
	at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:39)
	at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:83)
	at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:44)
	at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:37)
	at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:27)
	at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:96)
	at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:52)
	at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:83)
	at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:54)
	at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:74)
	at org.gradle.internal.execution.steps.SkipEmptyWorkStep.lambda$execute$2(SkipEmptyWorkStep.java:88)
	at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:88)
	at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:34)
	at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsStartedStep.execute(MarkSnapshottingInputsStartedStep.java:38)
	at org.gradle.internal.execution.steps.LoadExecutionStateStep.execute(LoadExecutionStateStep.java:46)
	at org.gradle.internal.execution.steps.LoadExecutionStateStep.execute(LoadExecutionStateStep.java:34)
	at org.gradle.internal.execution.steps.AssignWorkspaceStep.lambda$execute$0(AssignWorkspaceStep.java:43)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution$3.withWorkspace(ExecuteActionsTaskExecuter.java:286)
	at org.gradle.internal.execution.steps.AssignWorkspaceStep.execute(AssignWorkspaceStep.java:43)
	at org.gradle.internal.execution.steps.AssignWorkspaceStep.execute(AssignWorkspaceStep.java:33)
	at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:40)
	at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:30)
	at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:54)
	at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:40)
	at org.gradle.internal.execution.impl.DefaultExecutionEngine.execute(DefaultExecutionEngine.java:41)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$1(ExecuteActionsTaskExecuter.java:183)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:183)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:173)
	at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:109)
	at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
	at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:62)
	at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
	at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)
	at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:200)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:195)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:62)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$call$2(DefaultBuildOperationExecutor.java:76)
	at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.callWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:54)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:76)
	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
	at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:41)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:411)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:398)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:391)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:377)
	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.lambda$run$0(DefaultPlanExecutor.java:127)
	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:191)
	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:182)
	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:124)
	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
User avatar
Flocke
BORG Trouble Maker
BORG Trouble Maker
Posts: 3246
Joined: Sun Apr 27, 2008 2:00 am
Location: Hamburg, Germany
Contact:

Re: UE Map Editor

Post by Flocke »

thunderchero wrote: Wed Jun 01, 2022 11:15 pm I tried to build current version (modded_save_detection) and got error again when building
Since it is a work in progress branch, you have to expect some compile errors from time to time. I currently am in the middle of some refactoring and have lots of code I still need to push. But I'll check what I missed or got wrong.

Regarding your error log, the only meaningful I found is:
Caused by: org.gradle.api.internal.tasks.compile.CompilationFailedException: Compilation failed; see the compiler error output for details.
The rest of the gradle messages don't tell me anything on the issue :lol:
User avatar
thunderchero
Site Administrator aka Fleet Admiral
Site  Administrator aka Fleet Admiral
Posts: 7933
Joined: Fri Apr 25, 2008 2:00 am
Location: On a three month training mission, in command of the USS Valiant.

Re: UE Map Editor

Post by thunderchero »

Flocke wrote: Thu Jun 02, 2022 11:51 am Since it is a work in progress branch, you have to expect some compile errors from time to time. I currently am in the middle of some refactoring and have lots of code I still need to push. But I'll check what I missed or got wrong.
I expected as much, but you know me I like to peak at changes :grin:
User avatar
Spocks-cuddly-tribble
Code Master
Code Master
Posts: 1926
Joined: Sun Apr 27, 2008 2:00 am

UE Map Editor - gameInfo

Post by Spocks-cuddly-tribble »

Hi Flocke, I doublechecked the codes for the gameInfo file and there is no intel and/or system ranks, so my labels should be right:viewtopic.php?p=56648#p56648
AI intel issues are handled directly via EmpsInfo & intelInfo values (not even the given tech score & rank is used by default, but just techInfo values).

Also Ds:5A2B78 gets mistakenly deleted when loading a saved game @ 44B8E5 -> gameInfo+2A0 GeneratedMonstersBitmask.
This is good news since the gameinfo file itself remains uncorrupted when loading/storing games.

gameInfo (0xDC0 bytes)

+B8 dword 1 = multiplayer GameIsHost ?
+248 (1 byte per empire) multiplayer teamdomination buddy empire(s) bitmasks
+24D-24F unused
+251 (byte) beaten/dead empires bitmask
+25C STARTINGSEED (new game via random system time or from stbof.ini when launching trek.exe -n)

+C84 (word per empire) starting score
+C8E (word per empire) 'total' score rank -> vanilla bugged due to different overflow issues and starting score deviation bias
+D06 (word per empire) military score rank -> vanilla overflow issue with score
+D1A (word per empire) economic score rank -> vanilla overflow issue with score
+D92 (word per empire) tech/science score rank

Code: Select all

NAME: Generated Monsters Bitmask Load Game Bug Fix
DESC: Ds:5A2B78 gets mistakenly deleted when loading a saved game.
AUTHOR: Spocks-cuddly-tribble
URL: https://www.armadafleetcommand.com/onscreen/botf/viewtopic.php?p=20540#p20540

>> 0x0004ace5 89 15 78 2b 5a 00
<< 0x0004ace5 90 90 90 90 90 90

# 0044B8E5  NOP

Code: Select all

NAME: Undo outdated Generated Monsters Bitmask 5A2B78 workaround via alienInfo.
AUTHOR: Spocks-cuddly-tribble
URL: https://www.armadafleetcommand.com/onscreen/botf/viewtopic.php?p=20540#p20540

>> 0x4A693 4C 20
<< 0x4A693 78 2B
>> 0x4A6A7 4C 20
<< 0x4A6A7 78 2B
I don't know how many bugs is too many but that point is reached somewhere before however many in BotF is.
User avatar
Flocke
BORG Trouble Maker
BORG Trouble Maker
Posts: 3246
Joined: Sun Apr 27, 2008 2:00 am
Location: Hamburg, Germany
Contact:

Re: UE Map Editor

Post by Flocke »

I found something weird on the result.lst of the vanilla tutorial save games. I didn't check any further saves yet, but it might explain the well structured memory mess for the description and name properties of the military orders.

Checking on sneaked hex changes I found that for the tutorial saves many military order descriptions start with a special DLE-character (blue). This character is not for printing but signals a special read mode of the onfollowing characters. It however might also be a plain data fault or only apply to the tutorial games. Nonetheless it is something to keep checking. UE for now reads and overwrites it like it was all text characters.
resultLst_DLE.jpg
resultLst_DLE.jpg (112.49 KiB) Viewed 2192 times

For back reference, here the military results from vanilla tutorial game3.sav:
Military result header (yellow):

Code: Select all

05 00 00 00 00 00 FF FF 00 03 00 00 01 00 00 00  FF FF FF FF 00 00 04 00 00 00 00 00 00 00 00 00  40 AA F2 00 9C 00 00 00
06 00 00 00 00 00 FF FF 00 03 00 00 01 00 00 00  FF FF FF FF 00 80 04 00 00 00 00 00 00 00 00 00  00 A9 F2 00 9C 00 00 00
07 00 00 00 00 00 00 00 00 03 00 00 00 FF FF FA  FF FF FF FF 00 00 05 00 00 00 00 00 00 00 00 00  28 A8 F2 00 9C 00 00 00
08 00 00 00 00 00 00 00 00 03 00 00 01 00 00 00  00 00 00 00 00 00 04 00 00 00 00 00 00 00 00 00  50 A7 F2 00 9C 00 00 00
AF AA AA 2A 01 00 FF FF 00 03 00 00 02 00 00 00  FF FF FF FF 00 00 04 00 00 00 00 00 00 00 00 00  78 A6 F2 00 9C 00 00 00
B0 AA AA 2A 01 00 FF FF 00 03 00 00 02 00 00 00  FF FF FF FF 00 80 04 00 00 00 00 00 00 00 00 00  A0 A5 F2 00 9C 00 00 00
05 00 00 80 03 00 FF FF 00 03 00 00 08 00 00 00  FF FF FF FF 00 00 04 00 00 00 00 00 00 00 00 00  10 A4 F2 00 9C 00 00 00
06 00 00 80 03 00 FF FF 00 03 00 00 08 00 00 00  FF FF FF FF 00 80 04 00 00 00 00 00 00 00 00 00  38 A3 F2 00 9C 00 00 00
AC AA AA AA 04 00 FF FF 00 03 00 00 18 00 00 00  00 00 00 00 00 00 24 00 00 00 00 00 00 00 00 00  60 A2 F2 00 9C 00 00 00
AD AA AA AA 04 00 00 00 00 03 00 00 00 FF FF FA  FF FF FF FF 00 00 05 00 00 00 00 00 00 00 00 00  88 A1 F2 00 9C 00 00 00
AE AA AA AA 04 00 00 00 00 03 00 00 10 00 00 00  00 00 00 00 00 00 04 00 00 00 00 00 00 00 00 00  28 A0 F2 00 9C 00 00 00
53 55 55 D5 20 00 FF FF 00 03 00 00 01 00 00 00  FF FF FF FF 00 00 04 00 00 00 00 00 00 00 00 00  50 9F F2 00 9C 00 00 00
54 55 55 D5 20 00 FF FF 00 03 00 00 00 00 00 00  FF FF FF FF 00 80 04 00 00 00 00 00 00 00 00 00  78 9E F2 00 9C 00 00 00
55 55 55 D5 13 00 00 00 00 03 00 00 00 FF FF 00  FF FF FF FF 00 00 05 00 00 00 00 00 00 00 00 00  08 7C F2 00 9C 00 00 00
56 55 55 D5 13 00 00 00 00 03 00 00 00 FF FF D6  FF FF FF FF 00 00 04 00 00 00 00 00 00 00 00 00  20 7B F2 00 9C 00 00 00
----------- ----- ----- ----- ----- -- ----- --  ----- ----- ----- ----- ----------- -----------  ----------- -----------
resultId    race  unk1  type  emp1   | unk2  |   unk4  shpId flgs1 cntT  flags2      subAddr      contentAddr contentSize
0x00                                 |     ?evt  -----------                                                              0x28
                                 race flags      ?deps->evt
Military result 0x0-0x4B:

Code: Select all

FF E6 FF FF FF FF FF FF 22 01 FF FF FF FF FF FF  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00 FF FF 00 00  FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00
FF 0D FF FF FF FF FF FF 1E 01 FF FF FF FF FF FF  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00 FF FF 00 00  FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 19 00 AF 01
FF 00 FF FF FF FF FF FF FF FF 6B 00 FF FF FF FF  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00 FF FF 00 00  FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00
FF 00 FF FF FF FF FF FF 27 01 FF FF FF FF FF FF  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00 FF FF 00 00  FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00
FF 11 FF FF FF FF FF FF 23 01 FF FF FF FF FF FF  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00 FF FF 00 00  FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 19 00 1F 01
FF 50 FF FF FF FF FF FF 1F 01 FF FF FF FF FF FF  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00 FF FF 00 00  FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00
FF 47 FF FF FF FF FF FF 24 01 FF FF FF FF FF FF  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00 FF FF 00 00  FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00
FF 51 FF FF FF FF FF FF 20 01 FF FF FF FF FF FF  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00 FF FF 00 00  FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00
FF 0C FF FF FF FF FF FF FF FF FF FF FF FF FF FF  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00 03 00 00 00  FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00
FF 0A FF FF FF FF FF FF FF FF 6A 00 FF FF FF FF  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00 FF FF 00 00  FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 19 00 1F 01
FF E8 FF FF FF FF FF FF 26 01 FF FF FF FF FF FF  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00 FF FF 00 00  FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 19 00 1F 01
FF 52 FF FF FF FF FF FF 25 01 FF FF FF FF FF FF  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00 FF FF 00 00  FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00
FF BA FF FF FF FF FF FF 21 01 FF FF FF FF FF FF  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00 FF FF 00 00  FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00
FF 00 FF FF FF FF FF FF FF FF 6C 00 FF FF FF FF  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00 FF FF 00 00  FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00
FF 00 FF FF FF FF FF FF 28 01 FF FF FF FF FF FF  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00 FF FF 00 00  FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00
-- -- ----- ----------- ----- ----- ----- -----  ------------------------------------------------------------------------------------ ----- -----  ----------- ----------- -----------------------  ----------- ----------- ----- -----
r  ?  unk1  unk2        tfId  shpId sctr  sysId  empty1                                                                               trgt  unk3   sector row  sector col  empty2                   unk4        unk5        unk6  emp3
0x00                                idx          0x10                                             0x20                                race         0x30                                             09 = sys                            0x4B
                                                                                                                                                                                                    attack
Military result 0x4C-0x9B:

Code: Select all

00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00
10 00 00 00  00 00 00 00 22 00 FF FF EF 00 00 00 01 00 00 00  24 00 9F 00 9F 00 00 00 00 00 00 00 04 00 20 00  20 00 00 00 00 00 00 00 27 00 3B 00 3B 00 00 00  00 00 00 00 08 00 FF FF 89 00 00 00 00 00 00 00  28 00 A3 01 19 00 00 00 00 00 00 00
00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 61 6E 64 69 00 00 00 08 00 00 00  01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00
10 00 00 00  00 00 00 00 22 00 FF FF EF 00 00 00 01 00 00 00  24 00 FF FF 9F 00 00 00 00 00 00 00 04 00 0A 01  20 00 00 00 00 44 53 20 4E 65 77 20 57 6F 72 6C  64 20 41 00 08 00 FF FF 89 00 00 00 00 00 00 00  28 00 11 01 19 00 00 00 00 00 00 00
00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 61 6E 64 69 00 00 00 08 00 00 00  01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00 08 00 00 00  01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 61 6E 64 69 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00
10 00 00 00  00 00 00 00 22 00 FF FF EF 00 00 00 01 00 00 00  24 00 FF FF 9F 00 00 00 00 00 00 00 04 00 0A 01  20 00 00 00 00 44 53 20 4E 65 77 20 57 6F 72 6C  64 20 41 00 08 00 FF FF 89 00 00 00 00 00 00 00  28 00 11 01 19 00 00 00 00 00 00 00
10 00 00 00  00 00 00 00 22 00 FF FF EF 00 00 00 01 00 00 00  24 00 FF FF 9F 00 00 00 00 00 00 00 04 00 0A 01  20 00 00 00 00 44 53 20 4E 65 77 20 57 6F 72 6C  64 20 41 00 08 00 FF FF 89 00 00 00 00 00 00 00  28 00 11 01 19 00 00 00 00 00 00 00
00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00 00 00
-----------  ------------------------------------------------------------------------------------------------------------- ------------------------------------------------ ------------------------------------------------------------------------
|            | <-- up to 9 shpIds                                                                                    --> | name: race, ship, outpost - 00 terminated        likely unused memory garbage of the name, total would be 40 characters
| <-- usually just memory garbage, 00 terminated, totals 40 characters                                               --> | first letter usually zeroed out
0x4C                                                          0x60                                             0x70                                             0x80                                             0x90                                0x9C
User avatar
Spocks-cuddly-tribble
Code Master
Code Master
Posts: 1926
Joined: Sun Apr 27, 2008 2:00 am

Re: UE Map Editor

Post by Spocks-cuddly-tribble »

Hi Flocke,

for what project do you analyse the boring result.lst? Or is this just an auto check for random deviations?

---

Using your research on save game files I tried to fix a pesky patch glitch (works now): viewtopic.php?p=57729#p57729

The issue is sub_449820 read_GTForceList_GWTForce__edx1working

5B2354 GTForceList__next
5B2358 GWTForce_Working_current? (the 'W' means 'Working')

You said 'W' has current coordinates the other next turn positions: viewtopic.php?p=55981#p55981 (-25000 for temp minors is in trek.exe :wink: )

If I want new/next turn orders (players) it only works with the 'W' list (proper/complicated way is OrdInfo). Very strange. :???:
But the patch can cause crashes with GWTForce (AI codes?). So I have to use GTForceList. :sad:

And there is deviations when loading single/multi player saves:
MP doesn't read the 'W' list but then it should get wrong coordinates (unless the position data is ignored during game load).

---

I adapted another load game MP deviation to auto-fix the systInfo+314 labor glitch (Line: 5279): viewtopic.php?p=57851#p57851

---

sector.lst+38/+3C -> I think I was wrong. +38 should be current?

sector.lst+38 = adr list of TF IDs in the sector (effective mode)
sector.lst+3C = adr list of TF IDs with sector move destination (next turn? preview mode)

---

Can you provide any insights for the two saved game issues:

1.) viewtopic.php?p=58089#p58089

2.) INTEL MANAGEMENT Screen -> locked-sliders of eliminated empires Bug: download/file.php?id=3090 (ECM 5 save)
Sum of Total Percentage(s) in my case 81% (3 empires gone with 19% Intel locked in hidden sliders)
If an intel slider was locked while the target empire dies the assigned intel percentage is lost for good....(funny bug)
I don't know how many bugs is too many but that point is reached somewhere before however many in BotF is.
User avatar
Flocke
BORG Trouble Maker
BORG Trouble Maker
Posts: 3246
Joined: Sun Apr 27, 2008 2:00 am
Location: Hamburg, Germany
Contact:

Re: UE Map Editor

Post by Flocke »

Spocks-cuddly-tribble wrote: Wed Jan 04, 2023 3:03 pm for what project do you analyse the boring result.lst? Or is this just an auto check for random deviations?
It's just a random finding when I implemented sneaking change checks and hex comparison for the stbof.res and game.sav files. :)
I checked all file changes UE sneaked in and fixed all that got messed. Well except this possible finding of result.lst.

Spocks-cuddly-tribble wrote: Wed Jan 04, 2023 3:03 pm You said 'W' has current coordinates the other next turn positions: viewtopic.php?p=55981#p55981
No, that's not what I said. I said that during turn progress for some reason it accessed the old turn outcome from GTForceList. This might be some broken code or some special calculation or what so ever. The current 'working' file that include current turn player task force regroupings is GWTForce.

The error I was talking about came from the fact that the task force id of GTForceList and GWTForce don't necessarily match. When ingame the player already re-grouped task forces they now have temporary ids - or the ships might be moved to another already existing task force. UE then failed to change ship coordinates in both files, which lead to the crash.

To fix that issue I had to automatically re-group task forces of GTForceList when only part of the old task force ships were moved by the new groupings of GWTForce.

Sample:
GTForceList TF1 has ships 1, 2 , 3 and TF2 has ships 4, 5, 6
GWTForce is missing TF1, TF2 has ships 2, 3 and 6, and there is a temporary TF with ships 1, 4, 5
Now when on the UE map I move either of the task forces but leave the other one in place, the ships of GTForceList suddenly don't match sector position with GWTForce any longer, which lead to the crash.

Spocks-cuddly-tribble wrote: Wed Jan 04, 2023 3:03 pm If I want new/next turn orders (players) it only works with the 'W' list (proper/complicated way is OrdInfo).
But the patch can cause crashes with GWTForce. So I have to use GTForceList. :sad:
To be clear, whenever you depend on GTForceList for next turn calculation it is broken from the start. Vanilla BotF in certain cases however obvioulsy does so, since during intermediate player turn you can neither move or destroy any ship. Even when you order to scrap a ship, it will still be part of the list till next turn. So while task force re-groupings and task force speed, range and all that might have changed, it is still the very same ships in same sector.
It however must have been a lazy programmer to read from GTForceList.

Edit: I forgot, it ofc could be that by the time you access GTForceList it is already updated by the changes of GWTForce. Then it would be a valid choice again, but not reasonable thoug cause GWTForce at next turn start is identical to GTForceList.
Spocks-cuddly-tribble wrote: Wed Jan 04, 2023 3:03 pm And there is deviations when loading single/multi player saves:
MP doesn't read the 'W' list but then it should get wrong coordinates (unless the position data is ignored during game load).
The ship positions keep same but players will notice that their re-groupings get lost. And I think I remember that was a common annoyance when loading MP games, but not sure.

Spocks-cuddly-tribble wrote: Wed Jan 04, 2023 3:03 pm I adapted another load game MP deviation to auto-fix the systInfo+314 labor glitch (Line: 5279): viewtopic.php?p=57851#p57851
I noticed that one. Very nice! :grin:

Spocks-cuddly-tribble wrote: Wed Jan 04, 2023 3:03 pm sector.lst+38/+3C -> I think I was wrong. +38 should be current?

sector.lst+38 = adr list of TF IDs in the sector (effective mode)
sector.lst+3C = adr list of TF IDs with sector move destination (next turn? preview mode)
So sector.lst+38 is not ' if >0 sector monster occupied?'
Thats both been missing from UE but will add, thx.

But again, there exist no preview. GWTForce holds current intermediate player turn changes, while GTForceList keeps the list like it was when the previous turn ended. This totally makes sense because the task force ids might be reffered to by many places, like OrdInfo, result.list, alienTFInfo and possibly other files. All those ids become invalidated when the task forces are re-grouped and need to be updated. To not mess on this the game keeps a backup instead and only applies changes with the next turn.

Spocks-cuddly-tribble wrote: Wed Jan 04, 2023 3:03 pm Can you provide any insights for the two saved game issues: 1.) viewtopic.php?p=58089#p58089
I have it on my bookmarks.
Spocks-cuddly-tribble wrote: Wed Jan 04, 2023 3:03 pm 2.) INTEL MANAGEMENT Screen -> locked-sliders of eliminated empires Bug: download/file.php?id=3090
Sum of Total Percentage(s) in my case 81% (3 empires gone with 19% Intel locked in hidden sliders)
If an intel slider was locked while the target empire dies the assigned intel percentage is lost for good....(funny bug)
Sounds like a typical Brien opted to fiddle bug. Thanks for uploading the save, I'll put it on my list and take a look some time.
User avatar
Spocks-cuddly-tribble
Code Master
Code Master
Posts: 1926
Joined: Sun Apr 27, 2008 2:00 am

Re: UE Map Editor

Post by Spocks-cuddly-tribble »

Flocke wrote: Wed Jan 04, 2023 4:40 pmNo, that's not what I said.
My bad, I should have quoted only this:
Offset 0x0038 to 0x003B = sector row (GTForceList => next turn, GWTForce => actual turn)
Offset 0x003C to 0x003F = sector column (GTForceList => next turn, GWTForce => actual turn)
---
Flocke wrote: Wed Jan 04, 2023 4:40 pmTo be clear, whenever you depend on GTForceList for next turn calculation it is broken from the start. Vanilla BotF in certain cases however obvioulsy does so, since during intermediate player turn you can neither move or destroy any ship. It however must have been a lazy programmer to read from GTForceList.
Edit: I forgot, it ofc could be that by the time you access GTForceList it is already updated by the changes of GWTForce. Then it would be a valid choice again, but not reasonable thoug cause GWTForce at next turn start is identical to GTForceList.
Yes, it's about the order of processing during turn process (before or after update conversion), but yes, I too suspect inconsistencies/bugs.

Flocke wrote: Wed Jan 04, 2023 4:40 pmThe ship positions keep same but players will notice that their re-groupings get lost. And I think I remember that was a common annoyance when loading MP games, but not sure.
Can be fixed but might cause other issues:

load game

Code: Select all

00466B40           jz    string_GWTForce_if_single_player -> jump

00466BFA           jz    x2_GWTForce_if_single_player  -> jump

Flocke wrote: Wed Jan 04, 2023 4:40 pmSo sector.lst+38 is not ' if >0 sector monster occupied?'
It's used for new monster positions during turn process (strange exploit code to avoid more than one per sector): viewtopic.php?p=56589#p56589
loop via TF +4C control category 3 - alien
Not sure the lists are stored and/or loaded in/from saved games.

Flocke wrote: Wed Jan 04, 2023 4:40 pmBut again, there exist no preview. GWTForce holds current intermediate player turn changes, while GTForceList keeps the list like it was when the previous turn ended. This totally makes sense because the task force ids might be reffered to by many places, like OrdInfo, result.list, alienTFInfo and possibly other files.
Yes, 'supposed' preview if no interferences. And I think player only, not AI?
I don't know how many bugs is too many but that point is reached somewhere before however many in BotF is.
User avatar
Flocke
BORG Trouble Maker
BORG Trouble Maker
Posts: 3246
Joined: Sun Apr 27, 2008 2:00 am
Location: Hamburg, Germany
Contact:

Re: UE Map Editor

Post by Flocke »

Spocks-cuddly-tribble wrote: Wed Jan 04, 2023 5:32 pm
Flocke wrote: Wed Jan 04, 2023 4:40 pmNo, that's not what I said.
My bad, I should have quoted only this:
Offset 0x0038 to 0x003B = sector row (GTForceList => next turn, GWTForce => actual turn)
Offset 0x003C to 0x003F = sector column (GTForceList => next turn, GWTForce => actual turn)
That is a quote I quoted in said post. And the first sentence I wrote is:
Flocke wrote: Analysing an UE fleet movement issue, I found that I messed GTForceList and GWTForce.
I'd actually have to retest my previous results you are reffering. It might have been coincidence by a weird bug or something.
User avatar
Spocks-cuddly-tribble
Code Master
Code Master
Posts: 1926
Joined: Sun Apr 27, 2008 2:00 am

Re: UE Map Editor

Post by Spocks-cuddly-tribble »

'Messed' = the other way round or coordinates are always the same in both files? The topic is about regrouping only, not coordinates.

EDIT: I see we need to re-test, but my patches are ready, so no urgency on my part. :smile:
I don't know how many bugs is too many but that point is reached somewhere before however many in BotF is.
User avatar
Flocke
BORG Trouble Maker
BORG Trouble Maker
Posts: 3246
Joined: Sun Apr 27, 2008 2:00 am
Location: Hamburg, Germany
Contact:

Re: UE Map Editor

Post by Flocke »

Spocks-cuddly-tribble wrote: Wed Jan 04, 2023 5:32 pm Yes, 'supposed' preview if no interferences. And I think player only, not AI?
I understand GWTForce such that is a temporary copy for player re-groupings only and as such can be seen as a preview. On turn progress the changes then are applied to GTForceList, which holds the operational data that is used for further calculation and is used to index task forces by the many other files.

That would also explain why I found that changing positions in GTForceList affected next turn. The reason likely is that the game failed to apply changes from GWTForce to GTForceList and so the outdated data from GTForceList became the new GWTForce copy the next turn.

In that sense:
GTForceList has the effective game status of current turn start
GWTForce is a copy that can be modified by user input during intermediate turn
on turn progress, changes of GWTForce are evaluated and applied to GTForceList where it can
GTForceList further is used by turn processing to compute new turn state
GWTForce becomes a fresh copy of the new turn status
and so on
User avatar
Flocke
BORG Trouble Maker
BORG Trouble Maker
Posts: 3246
Joined: Sun Apr 27, 2008 2:00 am
Location: Hamburg, Germany
Contact:

Re: UE Map Editor - systInfo dil/ship data

Post by Flocke »

Spocks-cuddly-tribble wrote: Sun May 29, 2022 10:27 am Update for - systInfo (broken/unfinished features):

+0x0274 = Dilithium (running) -> loaded from 0x013C
+0x0278 = bugged AI (& dilithium shortage) Marker 1 = read Industry Output for Ship Construction (AI military power check)
+0x027C = build ship marker (? cf. +80 =3)

+0x02CC = Dilithium (running) -> loaded from 0x01FC
+0x02D0 = bugged AI (& dilithium shortage) Marker 1 = read Industry Output for Ship Construction (AI military power check)
+0x02D4 = build ship marker (? cf. +80 =3)
I added those variables to UE now. More to follow.
https://gitlab.com/stbotf/ultimate-edit ... ec77c20d36
I however refuse to name them gui preview but instead opted to 'floating'. Afterall like GWTForce shows, it is valuable data that includes current turn player changes. :grin:

The wiki on the other hand I don't care on for now. There is too much waiting for update and given the little usage I rather move the info to AFC at some point, or I set up a new wiki..
User avatar
Spocks-cuddly-tribble
Code Master
Code Master
Posts: 1926
Joined: Sun Apr 27, 2008 2:00 am

Re: UE Map Editor

Post by Spocks-cuddly-tribble »

Flocke wrote: Thu Jan 05, 2023 5:30 amon turn progress, changes of GWTForce are evaluated and applied to GTForceList where it can
Uncertain, I think the ordInfo takes precedence?

Working data often is just for easier access (e.g. for UI display) to avoid the complicated but more accurate ordInfo codes.
In theory you can remove all 'GUI preview' data areas/files and depend on ordInfo only (redundant double info).
You might call it active UI data? I'm open to suggestions. Not that valuable due to missing AI data (for MP also other players?).
Basically it's just for the UI represenation of newly issued orders. But there is exceptions (bugs/inconsistencies).
'GUI preview'(for expected effects of issued orders). Cf buy, it lowers your credits display (ignoring expected refunds).
I don't know how many bugs is too many but that point is reached somewhere before however many in BotF is.
User avatar
Flocke
BORG Trouble Maker
BORG Trouble Maker
Posts: 3246
Joined: Sun Apr 27, 2008 2:00 am
Location: Hamburg, Germany
Contact:

Re: UE Map Editor

Post by Flocke »

In case of GWTForce I don't think there is any alternate order for re-grouping ships. Regarding movement I guess you are right. When I tested I don't think I edited ordInfo, therefore the task forces and ships jumped back to position of GTForceList the next turn.
The usage is mixed I'd say.
Post Reply

Return to “Ultimate Editor”