Home » MODDING HQ 1.13 » v1.13 Coding Talk » Trunk AI and improvements
|
|
Re: Trunk AI and improvements[message #361035 is a reply to message #358729]
|
Thu, 27 August 2020 12:40
|
|
barra |
|
Messages:6
Registered:July 2017 |
|
|
@sevenfm I really like your (AI) improvements, they are flanking, taking cover, using granades and mortars etc., really good work so far and I can imagine AI work is a tedious task!
But they also show, atleast the first few days, when you are equipped with very limited range pistols/smgs, a slightly annoying behaviour.
It seems the AI trys to stay out of weapon range and at night even out of sightrange of your mercs. I dont know if I really like this kind of behaviour, because in my mind it seems a bit cheaty.
Where do the AI get the info of my mercs visibility and weapon range to be constantly out of range?
If they were out of range because their weapons were superior I would not complaint!
So the question is, why they stay out of weapon range of the player and therefor most often out of their own range? My thought would be the AI should try to come into their own weapon range to actually hit something!
While trying to come in reach of the mercs, its riskier for the AI to been hit by the player for sure, but thats excatly the behaviour I would prefer/expect.
This way there were even more action/movement in some battles.
A good example of the current behaviour would be to look at the Militia-AI fighting against the Soldier-AI, they bulk as soons as they could see each other!
The game would be a bit easier when SOME of the AI-Soldiers and/or militia would try to ambush the opponent, instead of staying at their place, but imo it would be also more fun to play. To counter the getting easier part one could f.e. simply tweak the damage resistance of them.
Maybe (if not already done in the code idk) this "aggressive" rush forward behaviour could be linked to/caused by the traits of them?!
Another general question would be: Is it possible to externalize or seperate the NCTH of grenades/mortars from the regular NCTH.
So the player could set another CTH for grenades then for regular shooting?!
Report message to a moderator
|
Private
|
|
|
Re: Trunk AI and improvements[message #361036 is a reply to message #361035]
|
Thu, 27 August 2020 14:03
|
|
Deleted. |
|
Messages:2663
Registered:December 2012 Location: Russian Federation |
|
|
@barra
As for enemy AI, they don't use exact weapon range to determine position, instead enemy CTGT is checked, which does not depend strictly of weapon range, so I don't think that what you describe is what actually happens in the code. Anyway it's hard to say what happens without examining the actual enemy behavior in actual save. There are also some options that can have serious impact on AI behavior.
Speaking about ability to check enemy vision and hide - it's the same thing that a player can do, also if you don't like this behavior, just disable AI_BETTER_COVER.
Militia and enemy team use the same AI code, with maybe very few minor differences.
Grenades/mortars, as any thrown weapons, have the same CTH code in NCTH and OCTH, and it's separate from regular guns CTH, so there is no "NCTH for grenades" as far as I know.
There are also some ini options for various types of weapons, so you can have different CTH bonus/penalty for grenades/mortars etc.
[Updated on: Sat, 05 September 2020 17:52]
Left this community.Report message to a moderator
|
|
|
|
|
|
|
Re: Trunk AI and improvements[message #361593 is a reply to message #361583]
|
Sat, 17 October 2020 09:38
|
|
Deleted. |
|
Messages:2663
Registered:December 2012 Location: Russian Federation |
|
|
r8904
AI speed optimization
FindNearestUngassedLand, FindNearbyDarkerSpot:
- optimization: don't check spots already checked in previous loop
- increase max distance to 35, reduce to 15 in realtime (try to prevent lagging in realtime)
ManSeesMan: only call SetNewSituation if location or level are different to reduce frequency of AI re-evaluation.
Interface/convenience improvements
Say TAUNT_RELOAD, TAUNT_OUT_OF_AMMO taunts if mag size > 4 or Chance(CHANCE_SAY_ANNOYING_PHRASE) (similar to how no ammo quote works now, to reduce annoying taunts when enemy soldier has weapon with low mag size).
Only allow radio animation on initial red alert, if sector is not jammed (to make the game faster).
Press ESC to stop dragging (small convenience feature).
Only show "suppression fire" message if target soldier cannot be seen after turning (to indicate that enemy soldier really uses suppression fire).
Misc improvements
SpotDangerLevel: also check Water and CorpseWarning for danger level = 1 (so that AI avoid moving into water or near fresh corpses unless in higher danger).
CanDragPerson, CanDragCorpse: use world movement cost instead of LOS check (it should be faster and possibly more correct).
Fixed bug when merc could not start dragging corpse while standing on it, because LOS check from tile to the same tile failed.
[Updated on: Sat, 17 October 2020 11:19]
Left this community.Report message to a moderator
|
|
|
|
|
|
|
|
|
|
Re: Trunk AI and improvements[message #362364 is a reply to message #362361]
|
Thu, 11 February 2021 21:23
|
|
Deleted. |
|
Messages:2663
Registered:December 2012 Location: Russian Federation |
|
|
r8931 adds new AI code: advance to closest opponent using cover when in black state, if weapon range is too short or soldier has high morale or cannot attack from current spot or has no cover.
Also AI will try to cover path using smoke grenade if it's dangerous.
[Updated on: Thu, 11 February 2021 21:24]
Left this community.Report message to a moderator
|
|
|
|
|
|
|
Re: Trunk AI and improvements[message #362416 is a reply to message #362411]
|
Wed, 17 February 2021 17:04
|
|
Deleted. |
|
Messages:2663
Registered:December 2012 Location: Russian Federation |
|
|
r8939
Don't allow to select grey militia menu options, added check if action is available.
Start radio animation when giving orders to militia.
Militia should not change order to SEEKENEMY if given Hold order.
r8941
Optimized Smart tree top hiding code to reduce CPU load.
[Updated on: Wed, 17 February 2021 17:37]
Left this community.Report message to a moderator
|
|
|
|
Re: Trunk AI and improvements[message #362460 is a reply to message #362416]
|
Sun, 21 February 2021 15:24
|
|
Deleted. |
|
Messages:2663
Registered:December 2012 Location: Russian Federation |
|
|
r8945
Various improvements to allow covert operations or hit and run tactics without morale/reputation penalties.
New option DEFEAT_MODE:
- 0: default, any lost battle is considered defeat
- 1: if enemy team was alerted
- 2: if at least one of retreating mercs is not covert
- 3: if at least one merc was killed in battle
- 4: if all mercs were killed in battle
MORALE_RAN_AWAY:
- apply penalty when retreating from sector only if enemy team was alerted
- improved check for mercs in sector (in my tests, original check didn't work properly for detecting retreating merc)
- no MORALE_HEARD_BATTLE_LOST penalty (it should be called separately if sector is lost to enemy)
- no reputation loss when retreating from battle (retreating to save merc lives is smart)
CheckForEndOfBattle:
- only apply morale and loyalty penalty if player was defeated (according to DEFEAT_MODE option)
- only play death music if player is defeated
- log defeat only when player was defeated
- clear aware status for enemy team, clear enemy kill counter
r8946
Small visual improvement: show flash light when throwing flares. It will not trigger interrupt, but may reveal for player enemy position.
[Updated on: Sun, 21 February 2021 18:27]
Left this community.Report message to a moderator
|
|
|
|
Re: Trunk AI and improvements[message #362523 is a reply to message #362460]
|
Tue, 23 February 2021 21:07
|
|
Xafloz |
|
Messages:98
Registered:December 2016 |
|
|
Hi sevenfm,
After a while I'm back in JA2 1.13 action and while having continuous blast while using the modpack (vfs_config.NO+IoV_Revised + JA2+AI ENG - r1888.exe) from certain moment quite regulary during militia turn there is a ctd with final massage (taken from game_log.log):
[6492.69] : ERROR : ========== Tue Feb 23 19:50:38 2021 ==========
File : ..\src\Core\vfs_string.cpp
Line : 210
Location : vfs::String::as_utf16
Invalid UTF8 character '×'=215 str16:AltSounds\Caliber\7.62×37mm Subsonic\case1.ogg
Any help would be appreciated.
Thanks in advance!
EDIT: I found that firing from SL9SD 7.62×37mm causes the ctd. How can I fix it?
[Updated on: Tue, 23 February 2021 21:17] Report message to a moderator
|
Corporal 1st Class
|
|
|
|
Re: Trunk AI and improvements[message #362525 is a reply to message #362523]
|
Tue, 23 February 2021 21:27
|
|
Deleted. |
|
Messages:2663
Registered:December 2012 Location: Russian Federation |
|
|
Xafloz wrote on Wed, 24 February 2021 00:07EDIT: I found that firing from SL9SD 7.62×37mm causes the ctd. How can I fix it?
You need to search Data-IoV_Revised folder for '×' chars in xml files and replace them with 'x' char, this would fix the issue.
Or disable NWSS system in options and play with old sound.
[Updated on: Tue, 23 February 2021 21:30]
Left this community.Report message to a moderator
|
|
|
|
|
|
|
Re: Trunk AI and improvements[message #363006 is a reply to message #362563]
|
Mon, 26 April 2021 13:01
|
|
Deleted. |
|
Messages:2663
Registered:December 2012 Location: Russian Federation |
|
|
r8980
Various fixes and improvements:
- exploit fix: don't allow "handcuff" and "apply item to others" cursors to reveal position of invisible enemy
- fixed vanilla exploit (detect invisible enemy by using plotted path)
- no sector ambients in cutscenes (so no more dog barking in Deidranna's palace)
- fix Deidranna endless clock in cutscene (she can kill Elliot now)
Fixes by Shadooow:
- fix for black windows (Orta) not blocking vision properly
- fix for incorrect cursor when using wire cutters
- fix: allow interrupts after door opening (still only door opener is checked, so there is no effect from placing more mercs behind him, also diagonal door opening is still nothing more than exploit for player since enemy can never get interrupt in this case)
- fix: female and big male body types being transparent when climbing up roof
- small fix in TurnSoldier code
- fix for vision not being updated in many situations
- fixes for bug when you sometimes got vision inside building when climbing from the roof
- fix: CTRL+U cheat command not replenishing energy properly
- EVENT_SoldierBeginBladeAttack: initialize attack data before other calculations, set bTargetLevel to soldier's level as melee attacks don't work between levels (should fix various problems with melee attacks for mercs and creatures)
- fixed AP cost shown at the cursor when pressing ALT during RUN mode since game doesn't allow to "reverse run" and forces walking
- shows walking cursor instead of running if ALT is held
- fix: erase path after switching active merc with mouse wheel
- fix: path not being erased and recalculated when changing selected soldier via SPACE button
- fix: display of merc AP in case he started with value over 99 new APs are lower than that
- fixed queen alternative gridno feature spawning her behind walls in basement instead of in front of the throne in palace
- fixed queen alternative gridno feature triggering even when palace was cleared
- added missing sanity checks when Climbing/Jumping via UI button
- fix: mechanical units are not a valid blood donors
Removed unused options: ARMY_USES_TANKS_IN_ATTACKS, ARMY_USES_TANKS_IN_PATROLS, ARMY_USES_JEEPS_IN_ATTACKS, ARMY_USES_JEEPS_IN_PATROLS, ARMY_USES_ROBOTS_IN_ATTACKS, ARMY_USES_ROBOTS_IN_PATROLS (by rftr).
New SCI can be found here: https://jenkins.maeyanie.com/job/JA2%20SCI/
New exe can be downloaded from the link in the sig.
[Updated on: Mon, 26 April 2021 13:06]
Left this community.Report message to a moderator
|
|
|
|
|
|
Re: Trunk AI and improvements[message #363205 is a reply to message #363086]
|
Tue, 11 May 2021 20:45
|
|
Deleted. |
|
Messages:2663
Registered:December 2012 Location: Russian Federation |
|
|
r9017
A bunch of fixes and improvements (by Shadooow):
Fix for various crashing and merc placement issues when getting ambushed.
Fix: items stacking with those that player cannot take from sector inventory when using CTRL+LMB from merc inventory.
Fix for filling canteens during combat.
Fix for for autobandaging sometimes hang indefinitely.
Fix for leaving merc never reaching final sector until current battle is finished.
Fix for randomly shooting in wrong direction because the game activates spreading code by mistake.
Fix for not enough action points error message not appearing when using consumable without enough AP in turn based mode. (The message got overriden with another one -> "Huh?")
Additionally fixed empty canteens to consume AP just to do nothing. Empty canteen now throws the Huh? error.
Fix: small GUI issue where the body silhouette in merc inventory turned dark after moving applicable item onto it and then out of it.
Fix: GUI issue where the body silhouette wasn't lit up with some of the new consumable items such as energy drinks, etc. Also, empty canteen will no longer lit up the body silhouette anymore.
Fix for incorrect highlighting attachments + lots of efficiency improvements.
Efficiency improvements for code dealing with attachments validity to fix any potential lag issues.
Another efficiency improvement for attachments validity check function - will not check all items in inventory to be a valid gun/ammo for tested item if the tested item is attachment/hidden addon.
Significant improvement for the inventory panel item highlighting code on map screen. There is also a fix for wrong items highlighted when changing currently selected merc.
Old code was constantly running update for highlights several times a second. Now it only happens when the mouse position first finds or loses an item in inventory.
Unified the highlight behavior with currently held item in cursor to only ever highlight compatible items for that item (was the case in tactical, not in map screen)
Enabled the body silhouette in map screen to be lit up when hovering/holding consumable item just as it happens in tactical mode
Feature: displaying action points in upper right corner of the merc portrait on map screen if the merc is in sector under attack and turn based mode.
Fix for assertion failure when right clicking on merc assignment.
Fix for Dynamic Opinions feature not respecting ini setting and not allowing it to be disabled easily.
Reverted optimization code which prevented 40mm grenades to load if <attachment> tag is not set in mod (note: to enable this optimization back all mods should have <attachment> tag set for all GL grenades and mortar shells).
Fixes some old traits not having any popup text or showing "No bonuses" during IMP character creation.
Fixes:
- robot has no (dynamic) opinions anymore. For now I allowed other mercs to have opinion about robot, but that is also a bit odd
- fixed Not Enough Action Points error triggering needlessly, when doing stuff like reloading ammo, using consumables or changing attachments in map screen during battle with mercs that are not in the sector where battle is occurкing
- fix for RPCs sometimes repeating last spoken line after victory in the sector
Fixes NPCs going back to cower animation after collapsing which also caused them not to die properly.
Fix for switch weapon shortcuts taking more AP than doing it manually when inventory costs are enabled.
SHIFT+k shortcut on map screen to use same code as in tactical. Made ALT and CTRL +SHIFT+k shortcuts work on map screen.
Allowed moving items between mercs in map screen during combat for mercs that are not in the sector where battle is occurring.
Allowed inventory management in map screen with inventory costs feature enabled. Actions points will be deducted as expected.
Fix for drugged icon not displaying on merc portrait immediately when taking drug from map screen.
Fix for playing full burst firing sound with less bullets than the usual for the gun burst fire in chamber.
Fix for "bullets too high" sanity check in tilesets with non-zero floor height causing bullets to disappear when firing at roof from too steep degree (the game incorrectly treated bullet as "too high so out of the world" because of not zero height of the floor in sectors with cliffs).
Fixed function PickPocket to work with MOLLE type of LBEs.
Changed code that handles putting medical kit from merc inventory into his main hand to respect pockets restrictions to avoid putting gun into medkit only pocket etc.. Writes an error in case that medical kit cannot be put into hands due to no suitable place for currently held items.
Fix for using items on enemies on roofs from inside room below. This includes multiple actions like first aid kit, blade or punch that shown path into room below enemy on roof and even allowed to stab from there (with zero chance to hit) or punch from there (clocks running for minute).
If refilling canteen makes merc to automatically drink, drinking should make merc to automatically refill canteen - which gives player a way how to refill empty canteen while in battle (refilling code is applied only to "drinking" interactive action, and only for current merc).
Also some fixes by rftr:
ASD deployment fix:
- fix: robots, jeeps, and tanks now appear in garrison reinforcement and patrol groups (if the ASD and these units are enabled)
- fix: ASD continues to purchase jeeps if tanks are disabled
- removed some magic numbers in Strategic AI.cpp
Fix: incorrect variable initialization for number of robots in squad.
Fix: enemy counter not updated correctly when turncoat feature is used.
More turncoat-related fixes and tweaks:
- added "recruit turncoat" to the talk menu
- recruiting turncoats now costs AP (AP_TALK in APBPConstants)
- fixed groups not decrementing soldiers when activating turncoats
- fixed a hang when activating a sector with 100% turncoats in realtime
Small fix by noooooo:
Fix: No longer get individual militia email when individual militia is disabled.
Small fix by serg:
Incorrect initialization (copy-pasted code was zeroing vector arrays inside structure which resulted in errors later).
Minor fixes and improvements by sevenfm:
Fix incorrect CTH message for [F] key when not using gun (was using NCTH message with gun stability instead of OCTH message with CTH).
Only show "sniper" message when shooter uses sniper rifle (the definition of "sniper" shot is debatable, previously any single shot in red state could result in "sniper" message which looked strange sometimes).
Disabled "sniper" message for vehicles.
As always, new SCI can be found here: https://jenkins.maeyanie.com/job/JA2%20SCI/
New exe can be downloaded from the link in the sig.
Left this community.Report message to a moderator
|
|
|
|
Re: Trunk AI and improvements[message #363633 is a reply to message #363205]
|
Fri, 27 August 2021 20:54
|
|
Deleted. |
|
Messages:2663
Registered:December 2012 Location: Russian Federation |
|
|
r9156
ADD_SMOKE_AFTER_EXPLOSION option now works better, it will check if default SMOKE_GRENADE item (151) is valid hand grenade, and if not then search for first useful smoke hand grenade in items, and only use correct smoke grenade item, to avoid bug in Aimnas if item 151 was changed to something different.
[Updated on: Fri, 27 August 2021 21:13]
Left this community.Report message to a moderator
|
|
|
|
|
|
|
|
Re: Trunk AI and improvements[message #363827 is a reply to message #363826]
|
Tue, 05 October 2021 14:11
|
|
Deleted. |
|
Messages:2663
Registered:December 2012 Location: Russian Federation |
|
|
Ortis wrote on Tue, 05 October 2021 16:04Hello!
1. I have 7609en+Modpack installed(from your Modpack link) Can I somehow apply the NEW_SUPPRESSION_CODE to that?
2. When you release a newer version of the Modpack, can I update without having to reinstall Ja2?
3. I have a possible bug: A merc says he can see the enemy, and there is the number on his portrait showing that he does. However the enemy is invisible.
Also, I can hear the enemy fire but no bullets ever hits.
I have a save but don't know how to attach it
Thanks for a great mod
1. NEW_SUPPRESSION_CODE in the trunk is the partial implementation of suppression code from 7609+AI.
2. It may work, but better save vanilla ja2 folder somewhere and use it to copy new installation and unpack modpack over it. Ja2 is portable, you don't need to install it, just copy.
3. I need a save just before the bug appears, to find out why it happens. You can post link here to uploaded file to dropbox or google drive or something.
4. Better post 7609+AI related in the appropriate thread http://thepit.ja-galaxy-forum.com/index.php?t=msg&th=21864, this thread is for trunk improvements.
Left this community.Report message to a moderator
|
|
|
|
|
Re: Trunk AI and improvements[message #363868 is a reply to message #363828]
|
Thu, 14 October 2021 11:41
|
|
Deleted. |
|
Messages:2663
Registered:December 2012 Location: Russian Federation |
|
|
r9177
Removed option AI_DECISION_INFO (to activate AI and quest logs just create "Logs" folder in the game root folder).
Added quest debug logging to Logs\QuestInfo.txt, will log facts, quests change, NPC interaction, NPC actions, boxing quest etc.
Example of Fatima/rebels quest:
Toggle Spoiler10040 Day 1 1:0 Init Quest Engine
10040 Day 1 1:0 start quest 0 sector -1 -1
10040 Day 1 1:0 reset gubBoxersRests 0, gubBoxingMatchesWon 0, gfBoxersResting FALSE gubCambriaMedicalObjects 21
25100 Day 1 1:0 --- Enter Sector A9 Level 0 ---
25100 Day 1 4:0 fact 149 false
25100 Day 1 4:0 fact 226 false
25110 Day 1 7:0 fact 386 false
25110 Day 1 7:0 fact 387 false
25110 Day 1 7:0 fact 388 false
59000 Day 1 7:0 InitiateConversation: from [0] to [206] 8 data 0
59000 Day 1 7:0 Converse: merc<9> to NPC <114> 8 data 0
59000 Day 1 7:0 ResetOncePerConvoRecords for <114>
59000 Day 1 7:0 NPCDoAction:<114>, action code 500, quote num 1
61580 Day 1 7:0 Converse: merc<9> to NPC <114> 3 data 0
63050 Day 1 7:0 reset QUOTE_FLAG_SAID for profile 114
80580 Day 1 7:0 InitiateConversation: from [0] to [207] 8 data 0
80580 Day 1 7:0 Converse: merc<9> to NPC <101> 8 data 0
80580 Day 1 7:0 ResetOncePerConvoRecords for <101>
80580 Day 1 7:0 NPCDoAction:<101>, action code 500, quote num 1
82730 Day 1 7:0 Converse: merc<9> to NPC <101> 1 data 0
84860 Day 1 7:0 reset QUOTE_FLAG_SAID for profile 101
89150 Day 1 7:0 InitiateConversation: from [0] to [207] 6 data 168576568
89150 Day 1 7:0 Converse: merc<9> to NPC <101> 6 data 168576568
89150 Day 1 7:0 fact 199 false
89150 Day 1 7:0 TriggerNPCRecord: <101> record 21
89150 Day 1 7:0 NPCTriggerNPC: <101>, record 21, 10, display 1
96330 Day 1 7:0 HandleNPCTriggerNPC: <101>, record 21, 10, display 1
96340 Day 1 7:0 Converse: merc<200> to NPC <101> 10 data 21
96340 Day 1 7:0 NPCGotoGridNo: <101>, rec 21, usGridNo 9073
96340 Day 1 7:0 TriggerNPCRecord: <114> record 10
96340 Day 1 7:0 NPCTriggerNPC: <114>, record 10, 10, display 0
107650 Day 1 7:0 HandleNPCItemGiven:<101> GridNo 9073 quote num 21
107660 Day 1 7:0 HandleNPCTriggerNPC: <114>, record 10, 10, display 0
107660 Day 1 7:0 Converse: merc<200> to NPC <114> 10 data 10
107660 Day 1 7:0 NPCGotoGridNo: <114>, rec 10, usGridNo 7160
107670 Day 1 7:0 HandleNPCItemGiven:<114> GridNo 7160 quote num 10
121320 Day 1 7:1 TriggerNPCRecordImmediately: <101> record 28
121320 Day 1 7:1 HandleNPCTriggerNPC: <101>, record 28, 10, display 0
121320 Day 1 7:1 Converse: merc<200> to NPC <101> 10 data 28
121320 Day 1 7:1 NPCDoAction:<101>, action code 2, quote num 28
122570 Day 1 7:1 TriggerNPCRecordImmediately: <101> record 29
122570 Day 1 7:1 HandleNPCTriggerNPC: <101>, record 29, 10, display 0
122570 Day 1 7:1 Converse: merc<200> to NPC <101> 10 data 29
122570 Day 1 7:1 NPCGotoGridNo: <101>, rec 29, usGridNo 7482
122570 Day 1 7:1 fact 100 false
122570 Day 1 7:1 HandleNPCItemGiven:<101> GridNo 7482 quote num 29
129030 Day 1 7:1 TriggerNPCRecordImmediately: <101> record 30
129030 Day 1 7:1 HandleNPCTriggerNPC: <101>, record 30, 10, display 0
129030 Day 1 7:1 Converse: merc<200> to NPC <101> 10 data 30
129030 Day 1 7:1 NPCDoAction:<101>, action code 2, quote num 30
130030 Day 1 7:1 TriggerNPCRecordImmediately: <101> record 31
130030 Day 1 7:1 HandleNPCTriggerNPC: <101>, record 31, 10, display 0
130030 Day 1 7:1 Converse: merc<200> to NPC <101> 10 data 31
130030 Day 1 7:1 NPCGotoGridNo: <101>, rec 31, usGridNo 7322
130030 Day 1 7:1 fact 100 false
130030 Day 1 7:1 HandleNPCItemGiven:<101> GridNo 7322 quote num 31
135500 Day 1 7:1 NPCDoAction:<114>, action code 2, quote num 10
135510 Day 1 7:1 TriggerNPCRecordImmediately: <114> record 11
135510 Day 1 7:1 HandleNPCTriggerNPC: <114>, record 11, 10, display 0
135510 Day 1 7:1 Converse: merc<200> to NPC <114> 10 data 11
135520 Day 1 7:1 NPCGotoGridNo: <114>, rec 11, usGridNo 7000
135570 Day 1 7:1 HandleNPCItemGiven:<114> GridNo 7000 quote num 11
146640 Day 1 7:6 fact 278 false
146660 Day 1 7:6 reset QUOTE_FLAG_SAID for profile 101
146660 Day 1 7:6 reset QUOTE_FLAG_SAID for profile 114
146750 Day 1 7:6 --- Enter Sector A10 Level 0 ---
147020 Day 1 7:6 NPCTriggerNPC: <101>, record 32, 27, display 0
147020 Day 1 7:6 HandleNPCTriggerNPC: <101>, record 32, 27, display 0
147020 Day 1 7:6 Converse: merc<200> to NPC <101> 27 data 32
147020 Day 1 7:6 NPCDoAction:<101>, action code 2, quote num 32
149040 Day 1 7:6 TriggerNPCRecordImmediately: <101> record 33
149040 Day 1 7:6 HandleNPCTriggerNPC: <101>, record 33, 10, display 0
149040 Day 1 7:6 Converse: merc<200> to NPC <101> 10 data 33
149040 Day 1 7:6 NPCDoAction:<101>, action code 113, quote num 33
149040 Day 1 7:6 NPCGotoGridNo: <101>, rec 33, usGridNo 17188
149040 Day 1 7:6 fact 100 false
149040 Day 1 7:6 NPCGotoGridNo: <114>, rec 33, usGridNo 16028
149050 Day 1 7:6 HandleNPCItemGiven:<101> GridNo 17188 quote num 33
149060 Day 1 7:6 HandleNPCItemGiven:<114> GridNo 16028 quote num 33
160780 Day 1 7:6 TriggerNPCRecordImmediately: <101> record 12
160780 Day 1 7:6 HandleNPCTriggerNPC: <101>, record 12, 10, display 0
160780 Day 1 7:6 Converse: merc<200> to NPC <101> 10 data 12
160780 Day 1 7:6 NPCDoAction:<101>, action code 2, quote num 12
162040 Day 1 7:6 TriggerNPCRecordImmediately: <101> record 16
162040 Day 1 7:6 HandleNPCTriggerNPC: <101>, record 16, 10, display 0
162040 Day 1 7:6 Converse: merc<200> to NPC <101> 10 data 16
162040 Day 1 7:6 NPCGotoGridNo: <101>, rec 16, usGridNo 11911
162040 Day 1 7:6 fact 100 false
162040 Day 1 7:6 HandleNPCItemGiven:<101> GridNo 11911 quote num 16
177020 Day 1 7:6 TriggerNPCRecordImmediately: <101> record 17
177020 Day 1 7:6 HandleNPCTriggerNPC: <101>, record 17, 10, display 0
177020 Day 1 7:6 Converse: merc<200> to NPC <101> 10 data 17
177020 Day 1 7:6 NPCDoAction:<101>, action code 2, quote num 17
178280 Day 1 7:6 TriggerNPCRecordImmediately: <101> record 18
178280 Day 1 7:6 HandleNPCTriggerNPC: <101>, record 18, 10, display 0
178280 Day 1 7:6 Converse: merc<200> to NPC <101> 10 data 18
178280 Day 1 7:6 NPCGotoGridNo: <101>, rec 18, usGridNo 9177
178280 Day 1 7:6 fact 100 false
178280 Day 1 7:6 HandleNPCItemGiven:<101> GridNo 9177 quote num 18
191430 Day 1 7:6 TriggerNPCRecordImmediately: <101> record 19
191430 Day 1 7:6 HandleNPCTriggerNPC: <101>, record 19, 10, display 0
191430 Day 1 7:6 Converse: merc<200> to NPC <101> 10 data 19
191430 Day 1 7:6 NPCDoAction:<101>, action code 2, quote num 19
192630 Day 1 7:6 TriggerNPCRecordImmediately: <101> record 20
192630 Day 1 7:6 HandleNPCTriggerNPC: <101>, record 20, 10, display 0
192630 Day 1 7:6 Converse: merc<200> to NPC <101> 10 data 20
192630 Day 1 7:6 TriggerNPCRecord: <60> record 1
192630 Day 1 7:6 NPCTriggerNPC: <60>, record 1, 10, display 1
192630 Day 1 7:6 fact 100 false
192630 Day 1 7:6 HandleNPCTriggerNPC: <60>, record 1, 10, display 1
193140 Day 1 7:6 InitiateConversation: from [0] to [207] 10 data 1
193140 Day 1 7:6 Converse: merc<9> to NPC <60> 10 data 1
193140 Day 1 7:6 NPCDoAction:<60>, action code 601, quote num 1
193140 Day 1 7:6 TriggerNPCRecord: <101> record 13
193140 Day 1 7:6 NPCTriggerNPC: <101>, record 13, 10, display 1
193870 Day 1 7:6 HandleNPCTriggerNPC: <101>, record 13, 10, display 1
194380 Day 1 7:6 InitiateConversation: from [0] to [208] 10 data 13
194380 Day 1 7:6 Converse: merc<9> to NPC <101> 10 data 13
194380 Day 1 7:6 NPCDoAction:<101>, action code 560, quote num 13
194380 Day 1 7:6 TriggerNPCRecord: <60> record 2
194380 Day 1 7:6 NPCTriggerNPC: <60>, record 2, 10, display 0
195390 Day 1 7:6 HandleNPCTriggerNPC: <60>, record 2, 10, display 0
195390 Day 1 7:6 Converse: merc<200> to NPC <60> 10 data 2
195390 Day 1 7:6 NPCDoAction:<60>, action code 6, quote num 2
195390 Day 1 7:6 TriggerNPCRecord: <60> record 13
195390 Day 1 7:6 NPCTriggerNPC: <60>, record 13, 10, display 1
195410 Day 1 7:6 HandleNPCTriggerNPC: <60>, record 13, 10, display 1
195920 Day 1 7:6 InitiateConversation: from [0] to [207] 10 data 13
195920 Day 1 7:6 Converse: merc<9> to NPC <60> 10 data 13
195920 Day 1 7:6 NPCDoAction:<60>, action code 601, quote num 13
195920 Day 1 7:6 TriggerNPCRecord: <60> record 5
195920 Day 1 7:6 NPCTriggerNPC: <60>, record 5, 10, display 0
196510 Day 1 7:6 HandleNPCTriggerNPC: <60>, record 5, 10, display 0
196510 Day 1 7:6 InitiateConversation: from [0] to [207] 10 data 5
196520 Day 1 7:6 Converse: merc<9> to NPC <60> 10 data 5
196520 Day 1 7:6 NPCDoAction:<60>, action code 3, quote num 5
196520 Day 1 7:6 NPCGotoGridNo: <60>, rec 5, usGridNo 8052
196520 Day 1 7:6 TriggerNPCRecord: <60> record 6
196520 Day 1 7:6 NPCTriggerNPC: <60>, record 6, 10, display 0
196540 Day 1 7:6 HandleNPCItemGiven:<60> GridNo 8052 quote num 5
196540 Day 1 7:6 HandleNPCTriggerNPC: <60>, record 6, 10, display 0
196540 Day 1 7:6 Converse: merc<200> to NPC <60> 10 data 6
200000 Day 1 7:6 TriggerNPCRecordImmediately: <60> record 6
200000 Day 1 7:6 HandleNPCTriggerNPC: <60>, record 6, 10, display 0
200000 Day 1 7:6 Converse: merc<200> to NPC <60> 10 data 6
200000 Day 1 7:6 NPCDoAction:<60>, action code 3, quote num 6
200000 Day 1 7:6 NPCGotoGridNo: <60>, rec 6, usGridNo 7728
200000 Day 1 7:6 TriggerNPCRecord: <101> record 25
200000 Day 1 7:6 NPCTriggerNPC: <101>, record 25, 10, display 0
200010 Day 1 7:6 HandleNPCItemGiven:<60> GridNo 7728 quote num 6
200020 Day 1 7:6 HandleNPCTriggerNPC: <101>, record 25, 10, display 0
200020 Day 1 7:6 Converse: merc<200> to NPC <101> 10 data 25
200020 Day 1 7:6 NPCGotoGridNo: <101>, rec 25, usGridNo 8373
200030 Day 1 7:6 HandleNPCItemGiven:<101> GridNo 8373 quote num 25
203520 Day 1 7:6 TriggerNPCRecordImmediately: <101> record 26
203520 Day 1 7:6 HandleNPCTriggerNPC: <101>, record 26, 10, display 0
203520 Day 1 7:6 Converse: merc<200> to NPC <101> 10 data 26
203520 Day 1 7:6 NPCDoAction:<101>, action code 100, quote num 26
203760 Day 1 7:6 fact 278 false
203770 Day 1 7:6 reset QUOTE_FLAG_SAID for profile 60
203770 Day 1 7:6 reset QUOTE_FLAG_SAID for profile 101
203950 Day 1 7:6 --- Enter Sector A10 Level 1 ---
204190 Day 1 7:6 TriggerNPCRecordImmediately: <58> record 1
204190 Day 1 7:6 HandleNPCTriggerNPC: <58>, record 1, 10, display 0
204190 Day 1 7:6 Converse: merc<200> to NPC <58> 10 data 1
204190 Day 1 7:6 NPCDoAction:<58>, action code 5, quote num 1
204190 Day 1 7:6 TriggerNPCRecord: <59> record 6
204190 Day 1 7:6 NPCTriggerNPC: <59>, record 6, 10, display 0
204210 Day 1 7:6 HandleNPCTriggerNPC: <59>, record 6, 10, display 0
204210 Day 1 7:6 Converse: merc<200> to NPC <59> 10 data 6
204210 Day 1 7:6 NPCDoAction:<59>, action code 5, quote num 6
204210 Day 1 7:6 TriggerNPCRecord: <58> record 6
204210 Day 1 7:6 NPCTriggerNPC: <58>, record 6, 10, display 1
204230 Day 1 7:6 HandleNPCTriggerNPC: <58>, record 6, 10, display 1
204740 Day 1 7:6 InitiateConversation: from [0] to [218] 10 data 6
204740 Day 1 7:6 Converse: merc<9> to NPC <58> 10 data 6
204740 Day 1 7:6 TriggerNPCRecord: <60> record 3
204740 Day 1 7:6 NPCTriggerNPC: <60>, record 3, 10, display 1
207130 Day 1 7:6 HandleNPCTriggerNPC: <60>, record 3, 10, display 1
207640 Day 1 7:6 InitiateConversation: from [0] to [216] 10 data 3
207640 Day 1 7:6 Converse: merc<9> to NPC <60> 10 data 3
207640 Day 1 7:6 NPCDoAction:<60>, action code 558, quote num 3
207640 Day 1 7:6 TriggerNPCRecord: <101> record 14
207640 Day 1 7:6 NPCTriggerNPC: <101>, record 14, 10, display 1
209050 Day 1 7:6 HandleNPCTriggerNPC: <101>, record 14, 10, display 1
209560 Day 1 7:6 InitiateConversation: from [0] to [215] 10 data 14
209560 Day 1 7:6 Converse: merc<9> to NPC <101> 10 data 14
209560 Day 1 7:6 NPCDoAction:<101>, action code 558, quote num 14
209560 Day 1 7:6 TriggerNPCRecord: <58> record 2
209560 Day 1 7:6 NPCTriggerNPC: <58>, record 2, 10, display 1
210160 Day 1 7:6 HandleNPCTriggerNPC: <58>, record 2, 10, display 1
210670 Day 1 7:6 InitiateConversation: from [0] to [218] 10 data 2
210670 Day 1 7:6 Converse: merc<9> to NPC <58> 10 data 2
210670 Day 1 7:6 NPCDoAction:<58>, action code 6, quote num 2
210670 Day 1 7:6 TriggerNPCRecord: <57> record 1
210670 Day 1 7:6 NPCTriggerNPC: <57>, record 1, 10, display 0
211210 Day 1 7:6 HandleNPCTriggerNPC: <57>, record 1, 10, display 0
211210 Day 1 7:6 Converse: merc<200> to NPC <57> 10 data 1
211210 Day 1 7:6 NPCGotoGridNo: <57>, rec 1, usGridNo 13360
211220 Day 1 7:6 HandleNPCItemGiven:<57> GridNo 13360 quote num 1
216330 Day 1 7:6 NPCDoAction:<57>, action code 601, quote num 1
216330 Day 1 7:6 TriggerNPCRecordImmediately: <57> record 2
216330 Day 1 7:6 HandleNPCTriggerNPC: <57>, record 2, 10, display 1
216840 Day 1 7:6 InitiateConversation: from [0] to [217] 10 data 2
216840 Day 1 7:6 Converse: merc<9> to NPC <57> 10 data 2
216840 Day 1 7:6 NPCDoAction:<57>, action code 255, quote num 2
216840 Day 1 7:6 TriggerNPCRecord: <101> record 15
216840 Day 1 7:6 NPCTriggerNPC: <101>, record 15, 10, display 1
217420 Day 1 7:6 HandleNPCTriggerNPC: <101>, record 15, 10, display 1
217930 Day 1 7:6 InitiateConversation: from [0] to [215] 10 data 15
217930 Day 1 7:6 Converse: merc<9> to NPC <101> 10 data 15
217930 Day 1 7:6 NPCDoAction:<101>, action code 101, quote num 15
220030 Day 1 7:6 InitiateConversation: from [215] to [217] 6 data 168576568
220030 Day 1 7:6 Converse: merc<101> to NPC <57> 6 data 168576568
220030 Day 1 7:6 fact 199 false
220030 Day 1 7:6 end quest 0 sector 10 1
220030 Day 1 7:6 NPCDoAction:<57>, action code 10, quote num 3
220030 Day 1 7:6 TriggerNPCRecord: <59> record 1
220030 Day 1 7:6 NPCTriggerNPC: <59>, record 1, 10, display 0
221230 Day 1 7:6 HandleNPCTriggerNPC: <59>, record 1, 10, display 0
221230 Day 1 7:6 Converse: merc<200> to NPC <59> 10 data 1
221230 Day 1 7:6 NPCDoAction:<59>, action code 6, quote num 1
221230 Day 1 7:6 TriggerNPCRecord: <58> record 7
221230 Day 1 7:6 NPCTriggerNPC: <58>, record 7, 10, display 0
221250 Day 1 7:6 HandleNPCTriggerNPC: <58>, record 7, 10, display 0
221250 Day 1 7:6 Converse: merc<200> to NPC <58> 10 data 7
221250 Day 1 7:6 NPCDoAction:<58>, action code 293, quote num 7
221250 Day 1 7:6 TriggerNPCRecord: <59> record 5
221250 Day 1 7:6 NPCTriggerNPC: <59>, record 5, 10, display 1
221270 Day 1 7:6 HandleNPCTriggerNPC: <59>, record 5, 10, display 1
221780 Day 1 7:6 InitiateConversation: from [215] to [219] 10 data 5
221780 Day 1 7:6 Converse: merc<101> to NPC <59> 10 data 5
221780 Day 1 7:6 NPCDoAction:<59>, action code 51, quote num 5
221780 Day 1 7:6 TriggerNPCRecord: <57> record 4
221780 Day 1 7:6 NPCTriggerNPC: <57>, record 4, 10, display 1
222580 Day 1 7:6 HandleNPCTriggerNPC: <57>, record 4, 10, display 1
223090 Day 1 7:6 InitiateConversation: from [215] to [217] 10 data 4
223090 Day 1 7:6 Converse: merc<101> to NPC <57> 10 data 4
223090 Day 1 7:6 NPCDoAction:<57>, action code 559, quote num 4
223090 Day 1 7:6 NPCClosePanel
225400 Day 1 7:6 TriggerNPCRecord: <57> record 6
225400 Day 1 7:6 NPCTriggerNPC: <57>, record 6, 10, display 1
225410 Day 1 7:6 HandleNPCTriggerNPC: <57>, record 6, 10, display 1
225920 Day 1 7:6 InitiateConversation: from [215] to [217] 10 data 6
225920 Day 1 7:6 Converse: merc<101> to NPC <57> 10 data 6
225920 Day 1 7:6 NPCDoAction:<57>, action code 500, quote num 6
225920 Day 1 7:6 TriggerNPCRecord: <58> record 4
225920 Day 1 7:6 NPCTriggerNPC: <58>, record 4, 10, display 1
228630 Day 1 7:6 HandleNPCTriggerNPC: <58>, record 4, 10, display 1
229140 Day 1 7:6 InitiateConversation: from [215] to [218] 10 data 4
229140 Day 1 7:6 Converse: merc<101> to NPC <58> 10 data 4
229140 Day 1 7:6 NPCDoAction:<58>, action code 557, quote num 4
229140 Day 1 7:6 TriggerNPCRecord: <57> record 7
229140 Day 1 7:6 NPCTriggerNPC: <57>, record 7, 10, display 1
229660 Day 1 7:6 HandleNPCTriggerNPC: <57>, record 7, 10, display 1
230170 Day 1 7:6 InitiateConversation: from [215] to [217] 10 data 7
230170 Day 1 7:6 Converse: merc<101> to NPC <57> 10 data 7
230170 Day 1 7:6 start quest 1 sector 10 1
230170 Day 1 7:6 NPCDoAction:<57>, action code 230, quote num 7
234430 Day 1 7:6 Converse: merc<101> to NPC <57> 4 data 0
234430 Day 1 7:6 NPCDoAction:<57>, action code 4, quote num 0
248950 Day 1 7:6 fact 278 false
248970 Day 1 7:6 reset QUOTE_FLAG_SAID for profile 114
249100 Day 1 7:6 --- Enter Sector A10 Level 0 ---
Note: <id> means profile id, matches MercProfiles.xml, [id] means tactical id, which is the same id used in AI logs.
Also don't forget you can always use built in quest debug system in 1.13, activated by pressing F11 in cheat mode.
[Updated on: Thu, 14 October 2021 21:03]
Left this community.Report message to a moderator
|
|
|
|
|
Re: Trunk AI and improvements[message #363872 is a reply to message #363871]
|
Fri, 15 October 2021 12:15
|
|
Deleted. |
|
Messages:2663
Registered:December 2012 Location: Russian Federation |
|
|
r9183
NEW_SUPPRESSION_CODE option:
- use effective experience level when calculating base suppression tolerance, so nearby squad leaders may raise effective level and help fight suppression
- increased base value, so now level 1 merc with 50 morale will have 7 base tolerance, previously it was 3 which was a bit too low
- if NEARBY_FRIENDLIES_AFFECT_TOLERANCE option is active, nearby friends can help increase suppression tolerance, up to +-5 points added depending on distance, only for merc bodytypes
So, if NEARBY_FRIENDLIES_AFFECT_TOLERANCE, for each conscious and alive friend nearby, merc receives +1 point of suppression tolerance, up to 5 points total from all friends.
This value depends on distance, so if friend is farther than day vision range / 4, bonus is reduced up to 1/4 at max range.
Also the code will check if merc and friend can see each other, so they should be in contact.
If friend is cowering or unconscious, bonus is -0.5, if friend is dying, bonus is -1.0, so being around suppressed, unconscious or dying friends actually reduces suppression tolerance.
So, with SUPPRESSION_TOLERANCE_MAX = 18 by default, having 100 morale and 10 effective experience level (with possibly added bonuses from nearby squad leaders) will result in 18 * 3 / 4 = 13 base suppression, which can be increased by having friends nearby to max tolerance level 18.
That means, early in the game it's best to keep mercs close together in small groups with a squad leader in each group.
High level mercs with high morale and personality/background which can help fight suppression (dauntless, aggressive) may act alone.
Left this community.Report message to a moderator
|
|
|
|
Goto Forum:
Current Time: Thu Apr 18 21:00:58 GMT+3 2024
Total time taken to generate the page: 0.02373 seconds
|