New HUB controller class and global singular tick that all cores operate from.
All war core (not player assist) tickrate properties have gone obsolete.
[ HUB ]
HUB.TickRate=4444 // Controls the rate at which all war cores operate from the HUB controller.
The HUB will tick at this rate regardless of any core status. Everything is in sync and everything knows if everything else is ready or not.
The cores themselves will always operate as fast as they can based on the rig itself, so the value here has a nominal setting.
Cores release slices to other cores after they finish a heavy operation so the entire system gets a chance to attempt an operation.
This is now possible due to the recent changes I made and can take advantage of the huge performance increase due to the new strategy I put in place.
[ Performance ]
I've implemented something I've been chewing for awhile and fundamentally changed some implementations based on my thinking.
This yielded a GIGANTIC improvement in general performance and optimization.
It should now be much, much improved speed / less impact across the board, as long as the processor is at-least a dual-core.
As always the more cores the better.
Due to my new implementation it now depends far more on the true raw horsepower of the rig.
This significantly reduces "hitching / bursting" at the expense of previously blasting numbers into the world at break-neck speeds regardless if the engine is actually ready or not.
This new implementation is also designed to produce more stuff relative to the player generally, faster and more consistently when things are actually available and suitable.
Certain properties have also been tweaked to go along with this for a more complete experience.
Some properties are no longer used and will eventually go obsolete / get-deleted.
[ Clean-up ]
Dramatically improved the speed of cleaning up when the cores go offline, especially car crews.
[ In-game Editor ]
All actice cores will now automatically be turned off when the editor is triggered.
[ Thugs ]
Due to the raw numbers required for the car crews (up to 4 per vehicle) the priorities/default numbers are now inverted.
That is to say, previously the crews were given more priority over street thugs.
That is no longer the case. Street thugs now rule the day with crews coming in behind.
This provides a MUCH more active, consistent, constant environment because of raw numbers available and horsepower.
The war presets will now do a math floor of either none, /2 or /3 for crews against street thugs based on which was selected.
Mayhem is now pushed to the lowest priority in relation to any other core activity.
[ Recruits ]
Recruits are now released to the game instead of killed outright so the game can more quickly reuse them as it sees fit.
Recruits that bail to make room for new recruits might get punished by former mates for leaving.
[ Fixed Bugs ]
Recruits should now correctly warp into and show with the player when the player is inside buildings and spawns vehicles with auto-warp enabled.
Fixed group related problem I noticed in the recruit collection.
(Hopefully) fixed a bug that was causing recruit statues to eventually appear or general recruitment failure.
Fixed numerous minor bugs / glitches.
[ Known Bugs ]
Occasional world statues, especially garbagemen at night.
Car windows might still be inconsistently removed.
There might be a leak in Mayhem somewhere.
[ Fixed Bugs ]
Window removal and some other properties should be applied consistently again.
[ Exclusions ]
Firemen, Paramedics and Cops are now excluded from recruitment, crews and street thugs. Cops can still be caught up in Mayhem.
Hookers are now excluded from Recruits.
[ Police ]
Now with the ability to recruit for backup as well as (and more importantly) no longer having cops in crews, the default setting no longer has wanted levels cleared on tick.
This applies only to the PlayerAssist.ClearWantedLevelOnTick and does not affect PlayerAssist.MaxWantedLevel.
The original default of True was in place because having cops in crews means you would CONSTANTLY get huge wanted levels by killing them.
Having cops (as well as firemen and medics) now excluded from all core scooping except Mayhem makes it less likely to get such huge levels so fast, though moderate levels are normal, and fun
It can always be turned back on as you see fit.
Note toggling the cores will still clear the wanted level regardless of this setting.
This is intentional for "clean slate" in either case.
[ Recruits ]
If PlayerAssist.RecruitsMax is set > 7 it will now always get reset to 7 when loaded in the game regardless.
Made some enhancements to the recruitment code. They should be more likely now to make it to the vehicle, less likely to shoot at new recruits after being recruited and more likely to join the player when switching or entering new vehicles generally.
Additional restrictions already applied in other cores are now also applied on recruits to be considered acceptable.
Recruits will now mostly only attack other peds they deem a direct threat to the player or them.
PlayerAssist.RecruitsMatchSeats=True // If True, when new recruits are signaled, existing counts will be adjusted to the current vehicle passenger seat count if applicable.
Since it is useless to have more recruits than passenger seats generally speaking I thought this would be a fun idea to try and I like the result.
When True, and new recruits are signaled, the current recruit cache is tested against current vehicle passenger seats. If it's > then it will get purged until there is room for
the new recruit up to the seat count. So this means if you have 5 say on foot and snatch a bike and signal for a new recruit, the new recruit will wind up being the only
one left alive as they join you on the bike and the rest will suffer death as normal. So then you dump the bike and get a 4dr ride. You can signal 2 more recruits to fill
up the car etc etc. This keeps the crew in line with what you can actually use based on the ride you're in at the time so there isn't wasted processing power on recruits trying
to chase you down because they couldn't fit in the vehicle.
This will only apply when you are in a vehicle and signal a recruit. Being on foot when you signal will always use up to RecruitsMax.
[ Car Selector ]
This has been enhanced to now include any living recruits.
Recruits are whittled down to the number of available passenger seats and then warped on in just like the player so everyone is ready to rock'n roll immediately.
Had to implement a synced bi-directional cross script call for this one but it was interesting and gave me an excuse to finally do it
CarSpawner.UseHelmets=True // If True, and Warp is True and the spawned vehicle is a Boke, the Player and any Recruits warped to the bike will get helmets.
There appears to be a bug in SHDN where the ForceHelmet function doesn't actually work.
After roaming the raw ScriptHook API I implemented a new API method which "gives" the ped a helmet and then calls SHDN Ped.ForceHelmet. This solved the problem.
[ Car Repair ]
Now that AW provides recruiting the raw API used to remove the front windows now also removes rear windows for the same reason.
[ In-Game Editor ]
Made the selection colors for the lists much easier to see.
[ TickRates ]
Adjusted some rates up a bit as originally intended now that long term extreme testing phase is finally wrapping up.
They were extra aggressive to make it more likely to encounter problems faster, especially sync issues.
[ Performance ]
Enhanced performance a bit more with another quick pass.
[ Internal SyncAbort ]
Implemented internal sync abort so all scripts can instantly know they should dump their current operation for cleaning up.
This applies to heavy hitting or iteration based code where my global sync pool forces the scripts to perform busy checks.
With this in place it is now possible to have a faster clean-up when AW gets toggled off without causing additional problems.
The Car Crews will always take the longest to clean up due to the nature of it. Messages will say to wait for clean up to complete.
Always wait for clean-up complete messages when toggling off before doing anything else.
This does not apply to Player Assist core. It is exceedingly fast in its operation generally.
Added an additional sync structure so the entire system now knows when all enabled cores have cleaned up and able to now show an accurate, final "Everything is cleaned-up" message when it goes offline.
This applies to the war cores not player assist.
[ Fixed Bugs ]
Fixed a sync bug introduced with the recent addition of player recruits.
Fixed a bug in an API call.
Fixed a few messages that were not controlled by debug property.
Fixed a bug in TogSync where it didn't have the recent in-game hotkey ability applied yet.
[ Known Bugs ]
There's a leak in Mayhem somewhere.
[ Bugs ]
Fixed a critical bug introduced related to hot key toggles in v22.214.171.124. The war cores will no longer be affected by the player assist toggle.
Fixed a typo. Let me know if see any more.
[ Recruits ]
Added some new logic for recruiting after messing around with it for a bit.
PlayerAssist.RecruitingSkipCops=True // If True, Police will be skipped when nearby Peds are considered for recruitment.
PlayerAssist.RecruitingUseHonk=True // If True, and player is in a vehicle, player will tap honk a couple times.
This will also be used in place of a message. The message will still show if not in a vehicle.
If the honks occurs, then a ped was in range and summoned to you. If not then the no peds message will still display.
PlayerAssist.RecruitsMaxBlockTime=8000 // Controls the minimum time in milliseconds a new recruit has before they're allowed to respond to world events.
This is used to prevent recruits from dropping their task of joining the player in a vehicle when they've just been recruited and something else gets their attention like combat.
The default gives them 8 seconds + innate animation times to make it to the vehicle regardless of any war raging around them.
This is only applicable if the player is in a vehicle when the recruit was signaled, only applies once, and only applies to new recruits.
Recruits already in combat when the player enters a vehicle will/may not automatically join in the car. This is normal behavior.
When a ped is in combat they are focused on living and killing the target, so just because the player entered a car doesn't change that.
PlayerAssist.RecruitSenseRange=100 // Controls the sense range applied to new recruits.
[ Hotkeys ]
it is now possible to directly change all hotkeys using the in-game editor.
They will take affect immediately when the changes are Saved using the Save command on the interface just like everything else.
Player assist and the war cores should still be turned off before making any changes, including hotkeys, just to help insure no issues.
Just kick them back on after making and saving changes.
[ Key Chart ]
Added a AW.KeyChart.2010.Txt file with default keys for external reference.
Hotkey Reference. Use AW.Config.2010.exe to change these.
[ In-game editor ]
Added a read-only hotkey reference list so it's easy to see or remember what the key maps are.
To change hotkeys the external editor needs to be used.
[ Player Recruits ]
Began adding a new ability to recuit nearby peds to assist the player. This will need work over time to get it fully bug free.
If you are within 10 radius of a healthy non mission ped pressing the hotkey (ALT+P default) will arm them, heal them, armor them and send them your way.
Pressing ALT+CTRL+P will dispose all current recruits.
Some new recruit related properties can now be found in the Player Assist property list.
One of the properties (RecruitsGetPlayerBenefits) can be used to apply certain benefits the player gets to their recruits as well. This happens at tickrate.
[ In-game editor ]
Added a War Presets selection list.
Added an automation list.
Broke the glass more to represent carnage.
Created another top command bar while goofing around.
Finished the 1st draft of an in-game configuration editor.
You should always turn OFF all the cores before bringing up the editor and making changes. Although I have in fact tested it without doing that, it is less likley to cause issues if the cores are turned off 1st.
Also note there is stll no data validation so entering invalid data will cause problems as always.
And finally the controls provided by SHDN are very limited and do not provide -many- features common to the types of controls they simulate.
This is understandable because HazardX would have had to hand code these anyway since they are likely technically using Direct3D.
I have overridden and inherited many underlying controls and coded up missing functionality however I do not have access to the true underlying objects so I can only go so far atm.
Things I've enhanced includes making it possible to scroll list boxex with keyboard arow keys, have the scroll bars track, object linking etc etc.
The editor will get expanded eventually to include some way of using war presets. There isn't a combo box equivalent so the likely replacement will be a listbox instead.
Removed a debugger call that was still in test code added recently to the Load button of the config editor.
[ Hotkeys ]
Realized the dev keys I've added for troubleshooting are simply wasting key binds users may have in something else.
So now the binds simply won't even happen unless it's on my rig. These are in place to assist me and now prevent having to keep removing the things before releasing versions.
[ Common Properties ]
Fixed bug where some underlying common properties weren't fully applied to inherited objects.
[ Crew Passengers ]
Oops. Forgot to remove a flag check which prevented full car crews. Cars should now be full again when reserves are actually available for them.
[ AllThugs ]
Found and fixed a bug where some properties weren't being applied correctly. This includes blip scales, some file names and others.
All properties in AllThugs should now be correctly applied to the war cores. This includes dynamic loading as well.
[ Blip Scales ]
The scales have been lowered further so they are less annoying on the radar when enabled.
[ Direct ScriptHook API ]
Since it is unknown when if ever SHDN will see another release that fixes critical known issues, I have enhanced my API class further.
It now includes a number of direct calls that entirely bypass SHDN versions and the result is very good.
These include but are not limited too real-time entity validation checks that are not cached like the SHDN versions and report the real status of the object when it's needed, any time.
These also include warp related and other operations.
The end result is a more stable Ambient Wars operation because it gets critical real-time results from the game instead of depending on SHDN results that are cached and very often cause failures, when it wouldn't have too, because of the cached nature.
Having cached results as SHDN does may be good for less complex mods, however it is proven unsuitable for Ambient Wars because of what it does, how much it does, and how often it does it.
Luckily I am still able to use the majority of the excellent .NET wrapped features of SHDN and greatly enjoy using it.
As other problems are uncovered identified as being caused by cached results, new API calls will be created to replace them. This will provide a better Ambient Wars deployment strategy that doesn't rely on SHDN being updated to fix the problems.
[ Independent Toggles ]
The Player Assist core is now entirely seperate from the war cores.
F9 now toggles the Player Assist.
F10 now toggles the war cores.
This allows using Player Assist while on missions where the war cores can not be consistently used without problems.
[ Dynamic Configuration ]
A core must have been turned on at-least once in a game session for the following to apply.
Loader code has been enhanced and now reloads all property blocks from the configuration file when the core is toggled on again.
This allows changes to be made to the config file and see those changes reflected simply by toggling on the relevant core again.
This is early stage code so some properties should not be changed for use like this and instead use the normal ReloadScripts commands.
Examples of properties that may cause odd behavior if changed and reloaded using this feature until code to deal with it is created include Enabled and Hotkey bindings etc.
[ Reserve Corp ]
A new system has been built and serves as a recruiting, configuration, maintenance and release system for Car Crews and Street Thugs.
This eliminates the "dragger" issue and help further reduce but not eliminate the long term statue phenom. If the war cores are left running for extended periods without repeatedly toggled on and off then statues are less likely to show, take longer to show and are generally reduced in numbers.
[ Rage Mode ]
A new mini rage system has been created and allows changing general behavior applicable as described below. This is in the AllThugs property section.
RageMode 1: Policy - It's still moving. Shoot it again. The city is in total war with no loyalty of any kind. This is the normal, default mode.
RageMode 2: Policy - Cop Killers. All Thugs will mostly focus their rage on the police whenever and whereever they encounter them, and mostly ignore anything else.
RageMode 3: Policy - Brothers in Blood. All Thugs will mostly focus their rage on any living thing except other Criminals.
Medics and Firemen are now automatically excluded from any rage include mode 1.
Felt bad about seeing those guys get hit. Plus, it's more fun seeing the ones they just helped get shot in the head in a drive-by as they are standing up again
If this is set to any value other than those listed above an exception will be repeatedly thrown with a message to go fix it.
[ Thug Models ]
The file is still required for now, but the models are no longer used. This is because the new reserve system and the inability of any known method to update a game-created ped entity with a different model after it already exists.
[ Mayhem Disabled ]
The Mayhem core is internally disabled until it is updaed to use the new systems and enhancements being applied to the thug cores.
[ Weapon Chances ]
The Weapon chance code has been updated and is now operating as originally intended.
All weapon chance properties are now pre-sorted with the lowest numbers (highest chances) tested first, then next highest numbers etc.
The global randomizer is now also re-seeded providing maximum random chance selection behavior.
Car crews will always (in addition to) get a suitable weapon they can use out a window regardless of the chances to have other weapons too.
[ Spawnable Cars List ]
The list has been updated and now includes previously disabled models.
Thanks to Motorsport71 for spending time and snatching the names from the ide file for the ones that are named differently in the handling file.
[ Performance ]
Performance has been slightly enhanced further with a new entity system that can in many cases bypass the need to gather further entitites until its current known supply is exhausted.
This results in occasional bursts instead of continuous heavy hits which is perfer based on my own testing.
[ Debug ]
A few more debug related properties exist.
[ Fixed ]
The Mayhem core should no longer count the headers and spaces in the spawnable cars list in the totals count.
[ Troubleshooting ]
Updated the file with a note about turning off clip capture that help some folks.
Emergency release due to trying to assist with a rare issue only some may experience.
[ Debug ]
A new Debug property class has been created to try and provide work arounds for 1 or more issues some people experience. It may grow over time.
Debug.UseTaskSequences=True // If False, the use of a task sequence object will be replaced with an alternate direct single task call instead.
[ Police ]
A new Police property class has been created and its first role controls the creation and clearing of standard LCPD.
Police.ClearLCPD=True // If True, then ClearLCPDRadius around the Player will be cleared. This is NOT elegant but it works.
Police.ClearLCPDRadius=400 // If ClearLCPD=True, this radius around the Player will be cleared of all standard police.
[ Weapon Chances ]
Ok the weapon arming code with weapon chances is back in operation so have at it. See notes in editor on AK47 for general info.
The default chances have been reduced to 1 in 5 for most except the most dangerous and those are about 1 in 15 to 1 in 20 now.
[ Car Crews Reborn ]
I've re-written substantial portions -again- and implemented a substantial new reserve corp system, so custom thug models are back and so are packed vehicles, except this time their drivers could be anything from old men to librarians. This is not perfected see note in Bugs section.
The MinCarCrewPollRadius is back to 50 and is now used in conjunction with OnScreen checks. This helps minimize pop-in for SOD factor while allowing them to spawn -very- close (much closer than 50) when they are NOT on screen as much as possible.
[ Blood Sport ]
As requested by knightofni on the boards, there are now options to get melee weapons only, or fists in the city. I will look into also adding an option to remove all police in the next build as I think that would help your intent, and it could be very useful for other things in the future too.
AllThugs.NothingButFists=False // If True, nothing controlled by AW will have weapons at all. This overrides all other weapon props.
AllThugs.NothingButMelee=False // If True, nothing controlled by AW will have non melee weapons. This overrides all other weapon props except NothingButFists.
[ Weapon Chances Still Old ]
Just to re-note I still have not looked into the weapon selection code but I might finally get a chance too in the next build we'll see. So until then changing chances may have no affect as noted in the editor.
[ Mayhem ]
API class enhanced to add more types of damage to cars involved.
[ Misc ]
Made various changes to try and address occasional script aborts seen by Motor and possibly others. These do not include fundamental SHDN issues that need addressed in the long run, althuogh some try to work around SHDN in related cases.
Reimplemented AmmoMin and AmmoMax usage in the arming code. The arming code still needs a serious look and overhaul as noted above and in the editor.
Some properties marked as unused or obsolete.
[ Bugs ]
The new thug reserves corp is slowly losing their numbers over time. The net effect is a slowly diminishing supply of available crew members as the war rages over very long periods.
There may be an occasional [ EXCEPTION ] with a null object during initial startup. This is a trapped .NET issue and not an abort so if you see this you can use F9 to restart the system without a game restart. I will track this down when I can. I believe it's related to init of the reserve corp but not certain yet.
Updated: I may have resolved this issue. Report it if you see it at startup.
[ Fixed ]
Fixed a leak in street thugs that occasionally surfaced when toggling AW state.
[ Performance Pass ]
AW is undergoing its first performance analysis pass for areas where performance can be optimized or made more effecient.
New properties, code and other factors will be created, changed or deleted applicable to the goal.
CarCrew.MaxCarCrewPollRadiusOptimized=50 // Now controls the final pass and can increase performance. If to few cars are being returned increase this to increase the amount.
CarCrew.PedScooperMaxRadius reduced to 80.
StreetThug.MaxStreetThugSpawnDistanceOptimized=50 // Now controls the final pass and can increase performance.
Performance.UseOnScreenChecks=True // If True, certain operations will use this instead of distance based calculations.
There is a caution associated with this. See config editor.
[ Ambient Wars Object Policy ]
Due to the recent changes where existing objects the game itself has created are being used instead of AW explicitly creating them, a project wide change will take affect in conjunction with it.
Previously AW would automatically delete objects under its control in many situations, mostly related to garbage collection. This behavior will be changed to simply release them back to the game.
The reasoning is simple. The game is not expecting these objects to be arbitrarily deleted outside its normal logic in general, because they are objects fully under its garbage collector and recycler.
I believe the game may have trouble in the long run (just a hunch for now) with these objects suddenly vanishing from its pool, where it can not account for it in its GC or recycle stages. So to
stem any possible issue this may cause (if I am correct) I am going to implement this change and see what happens.
[ Car Crews ]
MinCarCrewPollRadius is now being used in conjunction with MaxCarCrewPollRadius returning a random number between the 2. This provides a better randomized experience or variance in their locations.
[ Street Thugs ]
Idle Street Thugs can now steal cars instead of always just continuing to go insane.
StreetThug.MaxChanceStealsCars=4 // The max chance (higher is less likely) an idle Street Thug decides to steal a nearby car.
StreetThug.MinStreetThugSpawnDistance reduced from 15 to 5.
AllThugs.MaxChanceWantedByPolice=5 // Max chance (higher is less likely) any thug in any core is immediately wanted by the cops. See notes.
[ Car Spawner ]
Because the Player Assist core is now fully operational, the Car Spawner will no longer make any changes to the player at all including wanted level, health, etc as it previously did.
The former behavior was intended as a temporary measure until the Player Assist core came online.
[ Misc ]
Removed the x64 version link of the 2010 C++ redist from the TS file, as the core ScripHook is only 32 and the x64 won't resolve the issue where some people need the latest. Only the x86 will.
[ SHDN Exists() ]
Because SHDN.Exists is a cached result updated only once per frame, AW has new code to bypass this and directly call the core ScriptHook object check methods in real time. This is optional.
[ Performance ]
Performance.ThreadWait increased to 500.
Performance.ThreadWaitFine=200 // Will be used in situations where a heavy operation failed and throttle until the next occurs.
Performance.UseNativeObjectChecks=True // If True, AW will directly call native functions to determine if an object still exists instead of depending on SHDN.Exists versions.
This is a new feature intended to bypass the cached SHDN.Exiss result in favor of a direct ScriptHook object null ptr check in real time.
[ Bugs ]
The car selector might cause an unexpected reset or change in certain properties including the enabled status of all cores.
The GetCarsLoadedUp method that uses WarpIntoCar can not be stabilized and has been disabled entirely for now.
[ Fixed ]
Exceptions were not being logged.
Finally saw the private build tag was still in the logs. It's been removed.
Updated header to reflect the 2010 version of the project.
[ Properties ]
Deleted an obsolete property.
Moved property ThugModelsFile from CarCrews to AllThugs base so it can be inherit by Street Thugs too. This is in prep for later when / if a way to change an existing entity model is found due to the recent changes in the way Car Crews are created.
Increased CarCrews.EngineQualityMin from 60 to 250 so they start with a better low end car if this is the random low selected.
Decreased StreetThug.MinStreetThugSpawnDistance from 55 to 15
Decreased StreetThug.MaxChanceStreetThugCreated frpm 3 to 2
Decreased StreetThug.MaxStreetThugSpawnDistance to 100
Decreased StreetThug.MaxStreetThugRetentionDistance to 130
Increased a number of tickrates as some recent changes hopefully require less execution cycles.
[ Auto Remove Windows ]
I (and probably you too) got sick of constantly having to re-break the windows for shooting after car is auto repaired. That is no longer a problem. I added a new call to my API wrapper that knocks this issue right out.
PlayerAssist.RemoveWindowsOnRepair=True // If True, and the car was repaired during tick, then the left front and right front windows will be removed.
[ Config Editor ]
Added a new automation menu that can bulk enable / disable cores and blips including exclusions. Very handy / fast for testing or quick changing these particular settings. It may get extended.
- War Presets
Added a new War Presets combo setting a number of properties in bulk for quick change of the most relavent properties.
Note some of these, especially Rebellion and Armageddon are/can-be extremely taxing on a system.
The number of properties changed in bulk will grow over time. Use the spitter above the bottom log panel to see propeties being changed by selections.
The default as shipped will always be Ambient.
[ Performance ]
A new Performance property class now exists and will be used over time where or when I think of, discover or uncover things that can be used to explicitly boost performance generally.
The entire project still needs a serious performance-focused analysis pass but this new class is a quick way to increase performance a little as follows:
Performance.UseLowPriorityThreads=True // If True, all AW script threads are set to Low Priority.
Performance.UseBackgroundThreads=True // Intended for use in conjunction with UseLowPriorityThreads.
Performance.UseThreadWait=True // If True, each heavy operation in all applicable AW threads will wait after.
Performance.ThreadWait=333 // A millisecond time all applicable AW threads will wait if UseThreadWait = True.
Made some more changes to get back a bit more performance in certain areas.
[ Ped Scooper ]
The new code has been made configurable so a choice can be made to allow or disallow how it operates with respect to scooping for crews. See additional comments in the config editor.
CarCrew.PedScooperFlexible=False // If True, the ped scooper will snatch them for crews even if they are in a vehicle somewhere, otherwise they will be skipped.
CarCrew.PedScooperMaxRadius=120 // It will be allowed to reach up to this range looking for candidates.
CarCrew.PedScooperMaxCache=30 // The max allowed to scoop and cache. The cache is used to help performance preventing a billion repeated calls.
* There is a performance warning associated with these. See config editor.
CarCrew.PreferMoreSeats=True // Not implemented yet. Intended to try and increase the probability of heavier crews.
[ Bugs ]
- It's occasionally possible for a street thug to be in the air. Cause unknown and will be investigated.
[ Fixed ]
- Fixed a bug where a Rogue crew member had a blip created even if CreateBlips was False.
[ Car Crews ]
Due to the ever present, as-yet unsolvable long term play statue syndrome related to creating car crew peds from thin air and eventual statue form, the car crew code has been dramatically altered and now uses civs already existing in the world, specifically already in vehicles. This is an attempt at discovering if this change eliminates long term statue problems. From current experience, Street Thugs do no exhibit this problem, and because they are existing entities within the game, is the reason car crews will now also use existing entities so we'll see.
An obvious side effect of this change is the use of thugmodels is temporarily disabled until I find a method of directly updating an existing Ped model to another model. If you know a native method sig or otherwise know how to do this shoot me a message on it at the forums and I'll implement it so thug models can return faster.
This new technique has all but eliminated the dreaded statue issue based on my testing, so I will keep this new strategy and go forward with releasing this version now, as it has a number of other extensive changes as well.
- Crews that have an immediate car failure (internal open chance) now have a 50/50 chance of being violent to the player regardless of MaxChanceHatesPlayer.
- Crews that wind up outside their vehicle and trip the Rogue chance or are Idle now have a 50/50 chance of being violent to the player regardless of MaxChanceHatesPlayer.
- The code monitoring a crew in an apparent stuck car is now more tolerant in giving them time to get it moving again and is also now more vriant in how much time that is for randomness.
- Since the changes to crews moves away from creating entities the game has problems with and instead using those it has already created, I've now created an additional set of functions that help fill a vehicle up when it at-least gets one that already has a driver as required. This further reduces the solo Leader phenom and also helps get full loads in 4dr again much better.
[ New Properties ]
CarCrew.MaxChanceOldTires=4 // Max chance (higher is less likely) 1 or more tires on a crew car have seen so much extreme driving they are about to blow out.
CarCrew.MaxChanceSoloLeader=6 // Max chance (higher is less likely) an evaluated car is allowed to have a solo Leader out on his own looking for a crew instead of having one already.
Note this should naturally occur more often at night, as there are fewer cars with more than 1 occupant generally.
It is eventually anticipated that I will add a new set of logic so a solo Leader will be solo less often by using existing entities. This is part of reducing statue formation by not creating new ones on the fly as before.
[ Street Thugs ]
The min and max times for custom tasks has been reduced.
[ Blips ]
In an attempt to increase performance as well as potential stability or statue-form, Blips are now created and destroyed immediately. They are no longer retained for garbage collection later.
Ny testing has shown the game has a more limited resource pool than was previously thought, and due to the way I now create and destroy blips immediatey, where in many cases the delete fails because the game supposedly nulled it, in reality the game TOOK it and therefore changed its mem ptr, because later you can start to see the game recycle peds and cars randomly into the game world and see a purple blip ped walking along a sidewalk, or a green blip car driving along. So this was important and I will keep the new strategy and no longer retain blips for extended periods (for updating colors) as it appears to cause the game real problems over time.
[ Performance Specific ]
UseThreadWaits is now True by default and should provide a boost in performance by self throttling heavy hitting operations that can iterate more than once per TickRate.
[ Bugs ]
There may be times when car crew drivers are more retarded / less reactive than they should be. I'll look into this some time next week when I get a chance after getting back to my contract site out of state.
Fixed a bug where a much smaller dev test setting was still being used in place of MaxCarCrewPollRadius.
Fixed a bug where a suitability check on a car was after instead of before a mutually exclusive check and resulted in an inop car.
Fixed a bug related to snatching street thugs.