Commit Graph
4105 Commits
Author SHA1 Message Date
Asdow 93acd19c11 Try to find a cover spot when advancing to attack
Calling InternalGoAsFarAsPossibleTowards() with target's gridno means AI doesn't take into account eg. nearby friendlies resulting in them bunching up and  making a beeline straight at whoever they're trying to attack.
We'll first at least attempt to find a cover spot near said target, if it doesn't work, only then head straight at them.
2024-02-10 18:35:45 +02:00
Asdow f6052f0eff add another AI logging entry 2024-02-10 18:35:25 +02:00
Asdow eaf76957c0 Use correct string array 2024-02-10 18:35:25 +02:00
Asdow 3c2b048367 Attempt to continue moving towards enemy
when in water. If our current or last action was AI_ACTION_SEEK_OPPONENT.

The AI tends to flipflop between jumping into water, swimming a certain distance and then "panic" because they're in the water and then try to reach the closest land tile. Which is often right where they entered the water. Adding a bit of decision momentum with this change should help with that.
2024-02-10 18:35:25 +02:00
Asdow 4faccb2957 Fix indentation 2024-02-04 20:17:09 +02:00
Asdow 0ed68b6214 Set functions to static 2024-02-04 16:17:36 +02:00
Asdow f646bc2bfa Set correct next action if npc has no AP
With aiData.bAction = AI_ACTION_NONE and aiData.bNextAction = AI_ACTION_END_TURN, the npc turn is correctly ended in the next call to TurnBasedHandleNPCAI()
2024-02-04 16:14:01 +02:00
Asdow 01327265a3 Check if action should stay inprogress state
Several actions tended to get stuck in an invalid state, where it was completed, but aiData.bActionInProgress was still TRUE resulting in an AI deadlock.

If such a situation is found, Actiondone is now called, preventing the deadlock
2024-02-04 16:10:26 +02:00
Asdow cd193c7f5e Call TurnBasedHandleNPCAI() if no action is in progress
Several actions would sometimes get stuck in a forever loop, where they would not be executed, since no proper path for executing the actions is found.

Originally TurnBasedHandleNPCAI() would only be called if aidata.bAction was AI_ACTION_NONE.
Now we'll call it if an action is not already in progress, and will be executed if the action is affordable.
2024-02-04 16:07:03 +02:00
Asdow f249406ba0 Allow specific alert status AI logging
Less clutter in the AI logs if, for example one is only interested in BLACK status decisions
2024-02-04 15:29:05 +02:00
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
Asdow a90e11619d Merge branch 'master' into decideaction 2023-10-10 23:21:12 +03:00
AsdowandGitHub 7483829c65 Merge pull request #236 from 1dot13/container
Remove use of Container.cpp in vsurface, dialogue and event systems
2023-10-10 23:02:49 +03:00
Asdow d6a3a27b58 Address review feedback
* Dialogue control.cpp
* vsurface.cpp
* Event pump.cpp
2023-10-10 19:53:19 +03:00
Asdow f00214d00d Use std::queue and std::vector in event system
instead of old custom code from container.cpp

* Removed initialize and shutdown event manager calls from Init.cpp as they were only used to create and destroy the old HLIST globals

* Moved code from Event Manager.cpp to Event Pump.cpp as the event queue system is only used in said file.

* Removed now useless event manager.cpp and .h files
2023-10-09 23:07:54 +03:00
Asdow 029af63eb8 Remove unused global 2023-10-09 23:01:49 +03:00
Asdow d3b4874af0 Remove unused global 2023-10-09 23:01:49 +03:00
Asdow 8525d3f869 Use std::vector for HVSURFACE->RegionList
Replaces the use of old custom list implementation in container.cpp
2023-10-09 23:01:33 +03:00
AsdowandGitHub 48722f26d6 Merge pull request #237 from 1dot13/remove-novfs-ifdefs
Remove ifdefs related to USE_VFS
2023-10-08 18:53:35 +03:00
Asdow 5a922e3a42 Remove useless function 2023-10-08 16:48:18 +03:00
Asdow f11534e792 Remove orphan function declaration 2023-10-08 16:47:38 +03:00
Asdow f5e0d0bbd8 Remove useless function 2023-10-08 16:47:13 +03:00
Asdow 74a25a2069 Remove empty function 2023-10-08 16:46:36 +03:00
Asdow 0b5f14a3ad Remove empty function 2023-10-08 16:46:01 +03:00
Asdow 4b1de56b01 Remove #ifdefs for USE_VFS 2023-10-08 16:45:06 +03:00
Asdow 56a55f1bc4 Use std::queue instead of old custom queue
implemented in container.cpp
2023-10-07 18:53:39 +03:00
Marco Antonio Jaguaribe Costaandmajcosta eca4086d30 inherit minimum cmake version from ja2
all this does is silence the warning that cmake 2.6 is deprecated, we're
never building bfVFS standalone anyway
2023-10-07 09:21:11 -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
Marco Antonio Jaguaribe Costaandmajcosta b68f206969 remove annoying warning on MSVC 19.37.32822
`register` keyword does exactly nothing:
https://learn.microsoft.com/en-us/cpp/error-messages/compiler-warnings/c5033?view=msvc-170
2023-10-07 09:13:55 -03:00
Andrzej FałkowskiandGitHub 8d49e74df4 Face gear render fixes (#232)
* Face gear is shaded the same as a face

* Render continue button above icons and facegear

* Face gear rendered below "hatch" (inactivity overlay)

* Consistent naming
2023-10-03 15:20:36 +03:00
Asdow d6c9cb20b2 Report soldier ID in DebugMsg when interrupt ends 2023-10-02 22:29:47 +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 ae709f2d19 Merge branch 'master' into decideaction 2023-10-02 21:19:44 +03:00
Andrzej FałkowskiandGitHub 14ec138fc7 Fixed UI movement mode not switching to crawl on character collapse, leading to deadlocks (#231) 2023-10-02 19:32:15 +03:00
Andrzej FałkowskiandGitHub a3be3ecd7e Specific drug types and drug items for background and facilities. (#226) 2023-10-02 19:30:59 +03:00
Andrzej FałkowskiandGitHub 9033e1097a Radar and overhead map color variants (#219) 2023-10-02 19:30:17 +03:00
Xiaoxun92andGitHub 4ebae982dd Downgrade startup ini errors to warnings (#229) 2023-09-22 18:10:08 -07:00
sun-alfandGitHub 8a241d277d Merge pull request #228 from 1dot13/master_1dot13
[Fix] One of optimizations in (2482234e) commit is not suitable for M…
2023-09-14 00:37:04 +02:00
sun-alf 5bfd19e5a8 [Fix] One of optimizations in (2482234e) commit is not suitable for MOLLE stuff in 1.13
It is revealed, MOLLE things in 1.13 are configured in XMLs using both NAS and OAS (old attachment system) methods even if NAS is enabled in New Game Options. Given this, logic of SetAttachmentSlotsFlag() cannot be splitted onto NAS and OAS parts, and both Attachment[] and AttachmentPoints must be checked disregarding the NAS option.
2023-09-14 01:04:55 +03:00
KittyandGitHub 07591e50f5 Merge pull request #225 from zwwooooo/master
Chinese translation update(by TBS)
2023-09-11 17:07:21 +02:00
zwwooooo 556641377c Chinese translation update(by TBS) 2023-09-10 22:31:47 +08:00
zwwooooo 985dace82e Merge branch 'master' of github.com:1dot13/source 2023-09-10 22:03:41 +08:00
sun-alfandGitHub bb73a458ee Merge pull request #224 from 1dot13/master_1dot13
Master 1dot13
2023-09-10 10:21:03 +02:00
sun-alf f8637e5972 [~] Performance optimizations around Attachment[] and Launchable[] arrays
AIMNAS with its ~50K elements in Attachment[] suffered of performance drop when MOLLE stuff is in the visible inventory. To resolve it the following is done:
* Introduce gMAXATTACHMENTS_READ with actual number of elements in Attachment[]; according refactoring.
* Introduce gMAXLAUNCHABLES_READ with actual number of elements in Launchable[]; according refactoring.
* Introduce std::multimap AttachmentBackmap for quick access to attachments using itemId as a key.
* Sort Attachment[] by attachmentIndex right after loading from XML. According order in XML is not needed anymore.
* Introduce FindAttachmentRange() for quick access to attachments using attachmentId as a key (binary search in Attachment[]).
In a few words, GetHelpTextForItemInLaptop(), ValidAttachment(), SetAttachmentSlotsFlag() were heavily optimized.
2023-09-08 21:58:14 +03:00
sun-alf 4c861e441a [Fix] Revive FPS drawing overlay
To enable built-in FPS, change gbFPSDisplay to SHOW_FULL_FPS (1) in debugger (or change it in src code and rebuild).
2023-09-08 21:58:13 +03:00