Commit Graph
436 Commits
Author SHA1 Message Date
Asdow 7ee8165e02 Prevent AI deadlocking if NEW_SITUATION is encountered 2024-02-04 15:18:43 +02:00
Asdow caf5828153 Remove deadlock breaking from TurnBasedHandleNPCAI
It's already handled before a call to this function, and TurnBasedHandleNPCAI() is only called when pSoldier's action is AI_ACTION_NONE
2024-02-04 12:39:57 +02:00
Asdow ffb95a2418 Remove unused variable from if checks
aiData.bRTPCombat is never initialized and is always 0 when valid values should be

#define RTP_COMBAT_AGGRESSIVE		1
#define RTP_COMBAT_CONSERVE			2
#define RTP_COMBAT_REFRAIN			3
2024-02-03 20:49:43 +02:00
Asdow 22f2c9ff9a Correct AP check
We can't do anything with negative action points either.
2024-02-02 01:00:12 +02:00
AsdowandGitHub 0910dba472 Revert "Disable AI logging by default" (#270)
This reverts commit 5a74323d1f.
2024-01-30 11:44:00 +02:00
Asdow 2697a17010 Check if pSoldier is null
Prevent nullptr dereference in AI logging function
2024-01-28 11:16:41 +02:00
Asdow 5a74323d1f Disable AI logging by default
We only want this on when specifically debugging/working on AI.
2024-01-28 11:16:41 +02:00
majcostaandGitHub ae55496e39 Move main executable source to its own directory (#248)
* Move main executable files to their own directory

* Adapt the build to the new file structure

... and fix some weird #include's that were relying on the project root
being an include directory.
2023-10-23 15:46:51 -03:00
Asdow a90e11619d Merge branch 'master' into decideaction 2023-10-10 23:21:12 +03:00
AsdowandGitHub b8a870df02 Reduce code duplication (#233)
* Use ConvertGridNoToCenterCellXY instead of CenterX & CenterY

* Add direction utility function

We have a lot of places in the code that calculate direction based on center cell coordinates, but lack a utility function for it similar to other direction methods.

* Use utility function for calculating direction

* Use ConvertGridNoToCenterCellXY

* Use utility function for direction

* Use ConvertGridNoToCenterCellXY instead of CenterX & CenterY

* Use ConvertGridNoToCenterCellXY instead of CenterX & CenterY

* Remove CenterX & CenterY functions

Use ConvertGridNoToCenterCellXY instead

* Remove CenterX & CenterY calls from UB configuration

* Address review feedback

* Remove duplicate function

ConvertGridNoToCenterCellXY and ConvertMapPosToWorldTileCenter do the exact same thing

* Use PythSpacesAway instead of GetRangeFromGridNoDiff

Both functions calculate the same thing

* Remove GetRangeFromGridNoDiff

* Remove calls to abs()

The values end up being squared anyways making these unnecessary
2023-10-07 15:14:15 +03:00
Asdow 1586e8fd2b Allow possibly taking cover without full APs 2023-10-02 22:28:56 +03:00
Asdow 88af94eaaf Use Flugente's AI deadlock break & fix wstring for screenMsg 2023-10-02 22:26:30 +03:00
Asdow 6131ebc689 Comment out temp. fixes to flush out AI deadlocks 2023-10-02 22:20:43 +03:00
Asdow a45f3ae319 Add more AI logging 2023-08-20 23:38:56 +03:00
Asdow 318e4a40cf Improve AI logging 2023-08-19 23:23:59 +03:00
Asdow 1170f82159 Move variable declarations to point of initialization 2023-08-19 21:47:31 +03:00
Asdow d28ed97dff Add section comments do DecideActionRed 2023-08-19 21:45:01 +03:00
Asdow 96a7fa0538 Add section comments to DecideActionBlack 2023-08-19 14:41:16 +03:00
Asdow c5d1615035 Move decision if stuck in water or gas into its own function 2023-08-19 14:39:33 +03:00
Asdow 138ad0656f Prevent AI deadlocks
Canceling current AI actions at the start of soldier's turn prevents a lot of ai deadlocks. The status RED & BLACK actions are supposed re-evaluate the situation every turn anyways
2023-08-19 14:37:49 +03:00
Asdow a0cbe42a01 Create function for decision to wear a gasmask 2023-08-18 23:56:40 +03:00
Asdow 06478266d0 Moved armed vehicle/robot in gas check into function
Originally placed in DecideAction(green/yellow/red/black) functions separately
2023-08-18 23:11:39 +03:00
Asdow 613de1b869 Remove useless code
!AimingGun(pSoldier) would always evaluate to true and there are no hits to CrowDecideAction in the entire solution even in commented out code
2023-08-18 21:05:11 +03:00
Asdow 1c4929c3e1 Improve AI item handling log entry 2023-08-17 19:52:21 +03:00
Asdow 664142c36c Don't log AI info if pSoldier is null 2023-08-17 19:50:59 +03:00
Asdow 1c8d008a66 Move DebugAI() calls inside if blocks
Clutters logs and slows down game less when logging is on.
2023-08-17 19:49:55 +03:00
Asdow 0e529070c4 Allow AI to shoot with lower aim if out of AP for current aim level 2023-08-17 19:42:43 +03:00
Asdow bacad9b4c0 Prevent AI deadlock when they try to shoot and player gets an interrupt 2023-08-17 19:41:41 +03:00
Asdow e502727828 Disable canceling AI actions for escorted mercs
Logging AI decisions shows that this conditional would constantly cancel AI actions during regular gameplay. A special case like this should not affect normal AI routines and I'd rather disable this for now to prevent it from masking other problems with AI decisions.
2023-08-17 19:41:08 +03:00
Asdow d99b12cb5f Allow status black cover advance with full AP 2023-08-16 23:08:03 +03:00
Asdow 070867d965 Check for closest known opponent in status black 2023-08-16 23:07:29 +03:00
rftrdevandGitHub aaeea9aac8 Replace evolution with growth rates (#201) 2023-08-09 18:36:44 -07:00
Asdow 03482ffc3d Merge branch 'master' into ExtraMercs 2023-07-26 13:17:49 +03:00
AsdowandGitHub 0decb14856 Prevent endless clock (#186)
Stop AI from attempting to steal a weapon that has a sling attachment, which prevents stealing. (by Seven)
2023-07-26 10:18:13 +03:00
rftrdevandGitHub 119c6fe6bb Fix FindBestNearbyCover() and delete global var (#156) 2023-05-26 21:28:00 -07:00
Marco Antonio Jaguaribe Costaandmajcosta 760f8ab3d7 Remove all MSBuild files
now that CI is using cmake, we can be clean up the tree quite a bit

btw, cmake can still configure for the msbuild generator for those so inclined:

create the folder, cmd to it, run `cmake [project_root_dir] -G"Visual Studio 17 2022" -A Win32 -DLanguages=ENGLISH -DApplications=JA2` once, then open the solution file using Visual Studio 2022
2023-05-08 06:44:35 -03:00
AsdowandGitHub 35109a5615 Guard against possible illegal array access (by Seven) (#121)
ClosestPanicTrigger() can return -1 but its use in indexing gTacticalStatus.bPanicTriggerIsAlarm was not checked in all the places in the code
2023-01-31 20:26:21 +02:00
rftrdevandGitHub b5ec955324 Disable backpack climb check for non-player soldiers (#117) 2023-01-27 17:56:46 -08:00
AsdowandGitHub ae1fd0a2ee Prisoner feature bugfix (#110)
* Allow game to continue after offering to surrender to enemies

* Fix issues related to surrender and POW quests

- Quests were ended prematurely if one had prisoners in both alma and tixa
- Strategic status flags for rescue/escape were not set properly
- Only the maximum amount a prison can hold will be taken as POWs, rest of the mercs will either escape or have to fight to the death, to prevent a player having unrescuable POWs
- Capturing a mercenary had a lot of functions called that should not have been, IF the merc is not going to be captured after all

* Switch all tactical surrender calls to use one unified function

* Only mercs that are capable can escape

Incapacitated mercs left behind will die.
Should probably prioritize incapacitated mercs to be captured by the enemy to prevent needless deaths

* Combine pow quest state changes into one function

* Add JumpIntoEscapedSector to header file

* Allow enemy to demand surrender even if they already have POWs in Tixa and Alma

* Remove surrender from UB

* Address review feedback
2023-01-22 23:35:08 +02:00
Marco Antonio Jaguaribe CostaandAsdow 8b1c4effa0 nuke all the #if 0's
scripted commit:

find . -not -path '*/.*' -and -not -path '*/ext*' -type d -exec coan source -R -E {} ';'

https://coan2.sourceforge.net/coan_man_1.html
2023-01-19 00:13:08 +02:00
Marco Antonio Jaguaribe Costa 8609944467 Add a CMake build
Tried to stay as close as possible to ja2_2019.sln

On Visual Studio 2022 just Project -> CMake Settings for Ja2, add
the x86 configurations you want and press F7.

Below shows how the -DLanguages -DApplications switches work, If you don't
set them, the CMakeCache.txt of them will be set to ENGLISH and JA2,
respectively:

cmake [...] // nothing set, configure just JA2_ENGLISH.exe by default
cmake [...] -DApplications="JA2UB" // configures just Unfinished Business
cmake [...] build -DApplications="JA2UB;JA2UBMAPEDITOR" // Unfinished Business and UB Map Editor
cmake [...] build -DApplications="JA2UB;JA2MAPEDITOR;ALL" // ALL is in the list, configures every application
cmake [...] build -DApplications="JA2MAPEDITOR;DeathStranding" // fatal error: DeathStranding not an application

cmake [...] -DLanguages="GERMAN" // configures just German targets
cmake [...] build -DLanguages="GERMAN;ENGLISH" // German and English
cmake [...] build -DLanguages="GERMAN;ENGLISH;ALL" // ALL is in the list, configures every language
cmake [...] build -DLanguages="ENGLISH;ESPERANTO" // fatal error: ESPERANTO not supported
2023-01-14 02:08:39 -03:00
majcostaandGitHub 24425a82b1 More unused stuff removal (#49)
* More unused stuff removal

delete:
- giant 'metaheaders' (JA2 All.h, Laptop All.h, etc), preferring to add #includes directly where needed
- unused ExceptionHandling and DbMan translation units
- unused WizShare.h, Bitmap.h, trle.h, video_private.h headers

* remove mentions from vc proj files too

* remove preprocessor conditionals for unused definitions

find . -iname '*.h' -o -iname '*.cpp' -exec unifdef.exe -m -UPRECOMPILED_HEADERS -UJA2_PRECOMPILED_HEADERS -UWIZ8_PRECOMPILED_HEADERS -UPRECOMPILEDHEADERS {} ';'

then manually fixed a couple files the tool errored out on

* yes, the comments too

as title
2023-01-03 15:51:48 +02:00
Asdow 1f0a8f46e8 Import changes from the local SVN working copy 2022-10-10 10:08:44 +03:00
Sevenfm dc8fffb471 Fix: use system time instead of game time for breaking AI deadlock as game time is affected by fast timer mode, as a result breaking AI decision before it can execute normally.
Allow to break AI deadlock manually by pressing ESC key after 10 seconds, auto break AI after DEAD_LOCK_DELAY seconds.

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@9383 3b4a5df2-a311-0410-b5c6-a8a6f20db521
2022-05-10 18:45:19 +00:00
rftr 2cdc346934 fix divide-by-zero crash in some cases when crepitus queen is doing a tentacle attack
bug found by BigBritishGuy on discord

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@9376 3b4a5df2-a311-0410-b5c6-a8a6f20db521
2022-05-03 22:24:44 +00:00
Sevenfm f8be9a0db1 AI: minor code improvements (best cover calculation).
git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@9273 3b4a5df2-a311-0410-b5c6-a8a6f20db521
2022-01-23 03:10:13 +00:00
Sevenfm 7803378388 Militia: don't always spare RPGs when in tactical combat.
git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@9270 3b4a5df2-a311-0410-b5c6-a8a6f20db521
2022-01-21 19:22:12 +00:00
Sevenfm b06b9132a7 Added functions for utf8 <> wstring conversion.
Added message when AI breaks deadlock because cannot complete action.

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@9262 3b4a5df2-a311-0410-b5c6-a8a6f20db521
2022-01-16 17:09:09 +00:00
Sevenfm 992c487176 Reverted r9221 change.
git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@9222 3b4a5df2-a311-0410-b5c6-a8a6f20db521
2021-12-21 21:20:48 +00:00
Sevenfm ad044f38c6 Improved code for AI attack location randomization.
git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@9221 3b4a5df2-a311-0410-b5c6-a8a6f20db521
2021-12-21 08:09:41 +00:00