LivingLSAIs - AN AI NPCs MOD 4.4
9.980
128
9.980
128
Living LS AIs v4.4 — LIVING CITY
Real AI Lives, a Radio That Broadcasts About You, and NPCs Who Sit in Your Car and Listen
By Zexiva
v4.3 made the city look alive. v4.4 makes it behave alive.
-===========================================================-
OVERVIEW
-===========================================================-
Living LS AIs is a full open-world AI overhaul for Grand Theft Auto V that turns normal pedestrians into reactive, memory-driven, voice-enabled AI characters capable of speaking, remembering, negotiating, travelling, fighting, surrendering, helping, refusing, creating trouble, holding grudges, spreading rumours about you, and interacting physically with each other.
Living LS AIs v4.4 is called:
LIVING CITY
v4.3 was NEON GLASS. It rebuilt how the mod looked and gave Los Santos a police scanner and a news anchor. v4.4 is about what happens in the gaps between all of that.
v4.4 does four things at once:
1. It gives your car radio a real commercial break. Every three minutes the station you are listening to cuts away. The DJ hands over in character, two or three adverts play, Weazel News reads the headlines, and the DJ comes back. Four chained live AI sessions, twenty-two written station hosts across twenty-six stations, and adverts built around whatever is genuinely trending in the real world today.
2. It puts the NPC in your passenger seat inside that moment with you. If somebody is riding with you when the break plays, they heard the actual adverts and the actual bulletin — the real text, not a summary. Afterwards you can ask them what they thought, and they will tell you.
3. It stops the systems that used to talk over you. While you are genuinely mid-conversation, the police dispatcher, the air unit and ambient pedestrian chatter all stand down. Ads and news are deliberately exempt, because those are not talking to you — they are playing on the radio you are both listening to.
4. It closes twenty-six bugs. Not with workarounds. Each one was traced to the exact line that caused it, and each one ships with a regression test that fails on the old code first and passes on the new. If a fix cannot prove the bug existed, it is a guess, not a fix.
Nothing from v4.3 was removed.
Neon Glass, the 29 faction skins, police dispatch, Weazel News, the LSPD air unit, Memory v3 with grudges and gossip, the Custom Rules file, the AI Thinking Level dial, eight menu languages, LS Episodes, two-NPC and three-NPC linked scenes, mission contracts, commitment locking, the numbered target roster, action ownership, the validated action system, the stop-command family, the random world director, the 40 behaviour modes, drag races, lifts, homies, shopping routines, dog commands, vision, spatial audio and every diagnostic remain fully present and were extended.
This is not a basic chatbot overlay.
This is not a collection of preset "funny NPC lines."
This is not an illusion where an NPC says "I am aiming at him" while physically standing idle.
This is a city where a pedestrian can remember that you shot at them two weeks ago, tell their friends about it, hear your name on the news, and then sit in your passenger seat and complain about the advert that just played.
-===========================================================-
THE BIG v4.4 IDEA: THE CITY IS ON THE AIR
-===========================================================-
In v4.3 the world reported on you. In v4.4 the world is playing in the background whether you are the subject or not, and you can talk to the people listening to it with you.
Get in a car, turn the radio on, and roughly every three minutes this happens without you doing anything:
- A ten second warning appears. Press N and the whole break is skipped.
- Your station host — the actual host of the actual station you are on — hands over to the break in character.
- Two or three adverts play for Los Santos businesses. At least one is built around something genuinely trending in the real world right now, because the mod searched for it.
- Weazel News reads two real world headlines, reported accurately, delivered as pure Weazel satire. If you have recently caused a crime spree, that goes out first, from the confirmed police dossier.
- The DJ comes back, throws one dismissive line at what just aired, and the music returns.
And if somebody is in the car with you, they were there for all of it.
-===========================================================-
WHAT MAKES v4.4 DIFFERENT FROM v4.3
-===========================================================-
v4.3 was about presentation and consequence.
v4.4 is about continuity, shared experience, and honesty about bugs.
CONTINUITY
The radio break runs on a real cycle. It survives a police chase. It survives an open conversation. It caches its own content ahead of time so a break starts speaking in about two seconds instead of twenty-five. It carries leftover content across game sessions.
SHARED EXPERIENCE
For the first time, an NPC and the player have both experienced the same thing at the same time, and both remember it. That is what the passenger-seat listening system is. It is not the NPC being told there was an advert. It is the NPC having the advert text in their context.
HONESTY
Twenty-six bugs, each with the actual root cause published. Several of them were things the code claimed to do and did not. One comment in the codebase said the blast protection was re-applied every scan; the line underneath made it run exactly once, forever. Another said scene ownership always wins; the check was never written. Those are in the changelog by name.
-===========================================================-
v4.4 BRAND-NEW FEATURE HIGHLIGHTS
-===========================================================-
The largest new systems and upgrades in LIVING CITY include:
- the radio break cycle, four chained live AI sessions every three minutes,
- 22 written station hosts across 26 supported stations,
- adverts built from a live web search of what is genuinely trending today,
- a ten second pre-roll warning with N to skip the entire break,
- shared listening, so an NPC in your car hears the real advert and news text,
- a five minute window in which they can react to it, quote it or argue with it,
- automatic ad pause that holds an open conversation instead of ending it,
- an on-screen prompt telling you to wait for the break or skip it with N,
- conversation priority, so dispatch, air unit and ambient barks stand down while you talk,
- ads and news deliberately exempt from that gate,
- the radio break content cache, six ads and six bulletins pre-written, up to twenty,
- cache copy authored in your selected language, not English,
- three-layer anti-repetition: a banned list, a rotating creative brief, and a similarity filter,
- a fifth chatbox skin dedicated to advert breaks,
- the new [ENTERCAR] tag, which finally lets an ordinary NPC get into your car,
- the new [ROBSTORE] tag, which walks an NPC to one of 16 real mapped stores,
- a rewritten [LEANONCAR] that no longer launches your car into the sky,
- the new [SNIPEKILL@n] tag for a specific numbered target at range,
- model-aware clothing detection that stops calling a suited Michael naked,
- an absolute 25 second ceiling on radio ducking so a chase cannot mute your music,
- two new developer guards, scopecheck and shadowcheck,
- 706 automated regression tests,
- and twenty-six traced-to-root-cause community bug fixes.
All major v4.1, v4.2 and v4.3 systems remain part of the experience unless explicitly replaced or improved.
-===========================================================-
NEW: THE RADIO BREAK CYCLE
-===========================================================-
Every three minutes, your station takes a break.
It is not a sound file. It is four chained live AI sessions:
HOST_INTRO — the real host of your real station hands over, in their own voice and character. Eight seconds, two sentences maximum. It is a link, not a monologue.
ADS — two or three short commercials, back to back, for Los Santos businesses. Cluckin' Bell, Fleeca, Ammu-Nation, Bean Machine, Sprunk, eCola, Los Santos Customs, Ponsonbys, Burger Shot, Pisswasser and invented ones. One absurd, one aggressive hard sell, one fake customer testimonial. Every advert ends with a rushed mumbled disclaimer admitting something terrible.
NEWS — Weazel News. If you have an unreported crime spree it leads with that, from the real dossier. Then two genuinely current real world stories, reported accurately, with the facts intact and the tone entirely satirical.
HOST_OUTRO — the DJ comes back, insults the break, and puts the music on.
Twenty-two station hosts are written in, including DJ Pooh on West Coast Classics, Big Boy on Radio Los Santos, Jesco White on Rebel Radio, Keith Morris on Channel X, Cara Delevingne on Non-Stop-Pop and Lazlow on WCTR. Twenty-six stations are supported in total.
You get a ten second pre-roll warning. Press N at any point to skip the entire break and go straight back to the music.
Configuration: RadioBreakCycle= turns it on or off, RadioBreakMinutes= sets the interval.
-===========================================================-
NEW: THE ADS ARE ABOUT TODAY
-===========================================================-
Before writing an advert, the mod searches the web for something genuinely trending right now — a viral meme, a big game release, a sports result, internet drama — and builds at least one commercial around a Los Santos business cynically cashing in on it.
This means the adverts age with the real world. A break you hear in six months will not be the same break you hear today.
Anti-repetition is enforced three ways, because the first version of this genuinely did repeat itself:
- The writer is shown everything already in the cache and explicitly forbidden from reusing an opening line, a brand or a punchline from it.
- Every batch is assigned a different mandatory creative angle and a different mandatory lead brand, rotating through eight angles and twelve brands, so two consecutive refills cannot converge even on the same trend.
- Anything that comes back too similar to existing copy is rejected outright by a similarity check before it can ever reach your speakers.
Worn-out openings are banned by name. "Tired of…" is on that list.
-===========================================================-
NEW: THE NPC IN YOUR CAR HEARS IT TOO
-===========================================================-
This is the part that does not exist anywhere else.
If an NPC is sitting in your vehicle when the break plays, the actual advert text and the actual news text enter their context. Not a note saying an advert happened. The words.
Afterwards, for five minutes, they can:
- laugh at how stupid the advert was,
- argue with a headline,
- quote a line back at you,
- complain that the station is nothing but commercials.
They will only bring it up if it fits the moment, and they can never claim to have heard something that was not actually broadcast.
It is gated honestly. Only an NPC who genuinely shared the cabin gets it. Someone standing on the pavement outside your car did not hear your radio, and the mod does not pretend they did. Lift drivers always count, because they are in the car by definition.
-===========================================================-
NEW: AUTOMATIC AD PAUSE
-===========================================================-
If a break starts while you are mid-conversation, the conversation pauses instead of being trampled.
Pauses, not ends. The NPC stays. Your history stays. The session stays warm.
Press your microphone or text key during a break and the mod tells you plainly: wait for the ad to end to talk, or press N to skip it and carry on. The message is throttled so holding the key does not spam your feed.
When the break finishes you simply continue the conversation you were already having.
This works during a lift as well as a normal chat.
-===========================================================-
NEW: CONVERSATION PRIORITY DURING A CHASE
-===========================================================-
Previously, a five star chase meant the police scanner cut across whatever an NPC was saying to you, every few seconds, forever.
In v4.4, while you have a live conversation open — menu open, scene running, recording, typing, awaiting a reply, or riding a lift — three systems stand down:
- the LSPD dispatcher,
- the air unit loudspeaker,
- ambient auto NPC chatter.
They resume the moment you close the conversation with Backspace.
Ads and news are deliberately exempt, because those are not interrupting your conversation. They are the radio, and the person you are talking to can hear them too.
A related bug was found while building this: any wanted star at all used to push the radio break back thirty seconds. A chase lasts longer than thirty seconds, so the timer reset forever and a break could never air during a pursuit. It can now.
-===========================================================-
NEW: RADIO BREAK CONTENT CACHE
-===========================================================-
Ads and bulletins are written ahead of time and stored in radio_break_cache.json next to the scenario cache.
Six of each are kept, up to a maximum of twenty, capped at 60 KB. The file appends and is never overwritten, so unused content carries across game sessions.
The practical effect: a break starts speaking in about two seconds instead of waiting twenty-five for the model to research and write. It is primed at boot and refilled after every break, in the background, over the REST endpoint so it can never interrupt audio you are listening to.
In v4.4 the cache is also written in your selected language. In the first build it was always authored in English regardless of your setting, because the language lock had been applied to the component that reads the copy rather than the one that writes it. Both now carry it, and copy already sitting in the file in English is translated as it is read.
-===========================================================-
NEW & IMPROVED TAGS IN v4.4
-===========================================================-
[ENTERCAR] / [GETIN]
The NPC walks over and physically gets into your car. Until v4.4 there was no general boarding tag at all — the only one that existed was gated behind an NPC already being a homie, which is why inviting an ordinary pedestrian along resulted in them agreeing enthusiastically and then standing on the pavement.
It picks a free passenger seat, never takes the driver seat while you are driving it, re-issues the task if they snag on a kerb, and gives up cleanly with a stated reason rather than leaving somebody walking into a wall forever.
[ROBSTORE] / [ROBSHOP]
Talk an NPC into robbing a shop and they walk to a real, mapped store and hold it up at gunpoint. Sixteen verified locations across 24/7, LTD Gasoline and Rob's Liquor. The clerk puts their hands up.
The walk is re-issued every eight seconds while they are still travelling, because ambient events love to eat a movement task. If you already handed them a weapon, they keep it — the mod only arms an NPC who is genuinely unarmed.
[LEANONCAR]
They walk to your car and lean on the front. Rewritten in v4.4 to target a point outside the bumper and hold the car still while they settle, because the old version teleported the ped inside the collision shell and the physics engine resolved that by launching your car into the sky.
[SNIPEKILL@n]
Take out a specific numbered person from the live roster at range. Distinct from a generic kill order, which picks whoever is nearest and usually ends in a fist fight.
-===========================================================-
THE v4.4 BUG HUNT — TWENTY-SIX ROOT CAUSES
-===========================================================-
Every one of these has a regression test that reproduces the original failure on the old code before proving the fix.
1. NPC gives you money and your balance never changes.
Three faults stacked. The pickup hash 0xFE3CE0F6 was not a real hash. The fallback path swallowed its own exception so it never ran. And ScriptHookVDotNet's Player.Money setter has a default: return; — it silently writes nothing at all on any model that is not Michael, Franklin or Trevor.
2. "Yesterday he was Frankie, today the same guy is Mario."
Identity was seeded from new Random(npc.Handle). A ped handle is a recycled pool slot, not a person. When a ped despawns the engine hands that same number to somebody completely different minutes later. Identity is now fingerprinted from appearance.
3. Saved NPCs greeted you like a stranger.
Memory files were keyed {modelHash}_{nameSlug}.json. The moment the name changed, the file could never be found again.
4. Rumours never spread.
The gossip system existed and did nothing. Its eligibility check tested for a {modelHash}.json filename that no longer existed after the memory rewrite, so every single pedestrian was skipped.
5. FlyLo FM never tuned.
The code sent RADIO_14_SAMPLED. The real station name is RADIO_14_DANCE_02.
6. Asking for a ride on a motorcycle always failed.
A collapsed ternary explicitly rejected vehicle class 8, which is Motorcycle.
7. New moods never appeared.
106 moods in the pool, the same dozen in play. The personality index lists were hardcoded with a maximum index of 59, so everything added after that was unreachable.
8. Hard crash, 0xc0000005, roughly thirty seconds into a shop scene.
The face-hold watchdog's own comment claimed scene ownership always wins. The check was never written. One ped ended up owned by the watchdog, the shop routine and the scene simultaneously, and CLEAR_PED_TASKS fired on it every 900ms for thirty seconds while the scene ran its own task sequence on the same ped. The task tree was torn out from under its own pointer. The test reproduced 34 destructive clears on the old code and 0 on the new.
9. "Playing as Michael and everyone thinks I'm naked."
Clothing detection read drawable 0 on components 11 and 4 and called it undressed. That is true on a freemode body and false on every protagonist — Michael's stock outfit is 0/0. Nudity is now only inferred on models where drawable 0 provably is the bare body. The old logic misfired on 31 of 961 tested combinations.
10. Chatbox vanished two to three seconds after appearing.
The 45 second panel watchdog called its recovery routine, and that routine never reset the timestamp it is judged by. Anything that re-opened the panel matched the stale timestamp instantly and got killed again on the next frame. One log showed 120 force-releases in 40 seconds.
11. Chatbox truncated past roughly 380 characters.
The text command has exactly four slots of 99 characters, a hard ceiling of 396. The push loop added a fifth component, which malforms the command, and the engine drew nothing at all.
12. LEANONCAR launched cars into orbit.
The ped was teleported to a point inside the car's collision shell. Physics resolved the overlap with a separating impulse.
13. Radio break played 85 chunks of silence.
The break never claimed the audio lane, so gain stayed at 0.0 for the entire transmission.
14. Music returned in the middle of a break.
The duck was held for the audio that had just played, about 3.8 seconds, but the next stage takes 15 to 30 seconds to generate. The hold expired in the gap.
15. Music died for an entire chase, and Q stopped opening the radio wheel.
Every dispatch call pushed the duck ceiling forward by twenty seconds. During a pursuit they fire faster than that, so the ceiling was shoved forward indefinitely. One log showed 51 unbroken seconds of silence. The wheel died with it, because it cannot open on a vehicle whose radio is disabled. There is now an absolute 25 second cap regardless of how many transmissions stack up.
16. NPCs never remembered the Weazel bulletin.
City awareness was wired to the standalone bulletin only. The radio break news stage never called it. Four breaks aired in one test session and not one awareness seed was written.
17. The same advert twice in a row.
Every cache refill used an identical prompt, found the same trend and wrote the same joke, with no knowledge of what was already cached.
18. Adverts always in English regardless of language setting.
Three code paths, and the one missing the language lock was the one that writes the cached copy. It authored in English, and the reader was then instructed to read it word for word — which beats a language lock aimed at the reader.
19. The "no response" death spiral, where once it broke it stayed broken.
The session closer ran unconditionally on every start, killing sockets that were still in setup.
20. Los Santos Customs menu locked up during a break.
The N skip key used SuppressKeyPress, starving the shop menu of the same input.
21. The rebindable dismiss key did nothing.
It was read at the bottom of the key handler, behind sixteen early returns.
22. "Let me look that up" broadcast live on air.
Nothing forbade the anchor from narrating their own research. There is now an explicit ban list on every broadcast prompt.
23. Commercials displayed the LSPD air unit badge.
The avatar emblem block had no branch for the advert skin, so it fell through to the helicopter badge.
24. Shop scenes drifted off topic.
"You got any food?" produced a lecture about the weather, because routines inherited the player's last direct line. Each routine now states its single purpose and bans small talk outright.
25. Traffic drivers were hijacked into scenes and got out mid-road.
No driver guard existed, and the scene called TASK_LEAVE_ANY_VEHICLE on whoever it picked.
26. The radio break killed its own audio one second after starting.
Disabling the vehicle radio makes GET_PLAYER_RADIO_STATION_NAME return RADIO_36_AUDIOPLAYER. The station-change guard read that as the player switching station and aborted the break it had just started.
-===========================================================-
CONTENT IN v4.4
-===========================================================-
- 612 NPC first names, 308 male and 304 female
- 106 mood states
- 124 backstories
- 42 job types
- 26 radio stations with 22 written station hosts
- 16 news segment types
- 55 verified scenario props, every one checked against the game's own prop list
- 29 faction skins from 186 mapped pedestrian models
- 40 behaviour modes
- 20 named lift destinations
- 16 mapped robbable store locations
- 14 scene languages, 8 fully localised menu languages
- 706 automated tests, all passing
-===========================================================-
TRY THIS FIRST IN v4.4
-===========================================================-
1. Get in a car and turn the radio on.
2. Drive for a few minutes. When the break warning appears, do not skip it. Listen to the whole thing.
3. Now find a pedestrian, ask them to get in, and drive off.
4. Wait for the next break. Let it play with them in the car.
5. When the music comes back, ask them what they thought of the adverts.
They were there. They heard it.
-===========================================================-
THE BIG v4.3 IDEA: THE CITY TALKS BACK (previous release)
-===========================================================-
Earlier versions made individual pedestrians intelligent.
v4.3 makes the city itself a participant.
Previously, everything the AI produced was aimed at you: an NPC spoke to you, a scene played out in front of you, an episode involved people standing near you.
In v4.3 there are now systems that talk about you instead of to you.
Cause a serious crime spree and the following can happen without you speaking to a single person:
- A police dispatcher reads your crime, your street, your zone and your last known direction over the scanner in a clipped radio cadence.
- A helicopter unit with its own separate personality calls your position from above.
- After you escape and stay clean, a completed dossier of everything you did becomes one real Weazel News bulletin that interrupts your car radio and then restores the station volume afterwards.
- Every pedestrian in the city now silently knows that story for roughly twenty real minutes.
- Roughly eight percent of them are allowed to bring it up naturally, but only from the second conversational turn onward, and only three per broadcast, so it stays a rare surprise instead of a citywide chant.
- If you were busted or killed, your identity became public, and around half of nearby pedestrians can recognise your face and react: flee, insult you, or call 911.
- Every NPC who has already told you the story is locked out forever, so nobody repeats the same news at you twice.
That is a full loop: you act, the world records it, the world broadcasts it, and the world remembers it.
-===========================================================-
WHAT MAKES v4.3 DIFFERENT FROM v4.2 (previous release)
-===========================================================-
v4.2 was about conversations becoming episodes.
v4.3 is about consequence, presentation, and reliability.
The three headline changes:
CONSEQUENCE
Crime spree recording, police dispatch, Weazel News, air unit, city awareness, grudge decay, debts and gossip mean your actions now leave a trail through the world that outlives the conversation that started it.
PRESENTATION
The Neon Glass renderer replaces a panel that used to despawn and respawn up to four times in a single turn. It is now one persistent panel that changes its own contents, with a real dual waveform, a transcript of what your microphone actually heard, and colours that identify who is talking.
RELIABILITY
Twelve reproducible bugs from the community thread and fresh session logs were traced to root cause and fixed, including the long-standing "NPC accepts a fight then runs away" problem, which turned out to be a relationship-group issue rather than a combat issue.
-===========================================================-
v4.3 FEATURE HIGHLIGHTS (previous release, all still active)
-===========================================================-
The largest new systems and upgrades in NEON GLASS include:
- Neon Glass UI engine with 15 render layers,
- 5 panel presets: Cinematic, Compact, Minimal, Ghost, Custom,
- 7 colour themes including Mood Auto and a live Rainbow HSV cycle,
- 4 anchor positions and adjustable scale and opacity,
- live preview while you scroll the settings menu,
- automatic aspect-ratio correction for ultrawide and super-ultrawide monitors,
- auto-fit panel height measured from real text width,
- zero-flicker single-panel state machine,
- dual 14-bar rolling waveform showing your microphone and the NPC voice separately,
- an in-panel dimmed transcript row showing what your microphone actually heard,
- lock-free volatile audio mirror that removed a 30-times-per-second lock fight,
- 29 faction skins mapped from 186 pedestrian models,
- dedicated broadcast styling for police, news and air unit transmissions,
- AI police dispatch engine reading live wanted level, crime, street and direction,
- Weazel News crime spree recorder and automatic bulletin,
- LSPD air unit helicopter loudspeaker with its own voice and personality,
- a four-lane audio arbiter so NPC, News, Dispatch and Heli can never overlap,
- in-game radio ducking to roughly ten percent while an anchor speaks,
- vehicle cabin muffling with a real low-pass filter,
- the new [OPENWINDOW] and [CLOSEWINDOW] tags that physically roll a window and open the filter,
- the new [STANDONONELEG] tag,
- the new [STOPFOLLOWING] self-initiative behaviour,
- the new [LIFT_PLAYERDRIVE] and [LIFT_GIVEBACKDRIVE] driver-swap tags,
- Memory v3 with exponential grudge decay,
- tracked debts in both directions,
- gossip that writes into other NPCs' memory files and spreads by hops,
- the city awareness engine with tiered aware / vocal / recogniser behaviour,
- a Custom Rules text file appended to every NPC prompt across all five AI sockets,
- an AI Thinking Level dial with four steps and written pros and cons,
- a Google Search grounding toggle,
- German language support, bringing the total to eight,
- a rebindable dismiss key,
- a public-release Credits and Community menu hub,
- lift fare charged only on a completed ride,
- and twelve traced-to-root-cause community bug fixes.
All major v4.1 and v4.2 systems remain part of the experience unless explicitly replaced or improved.
-===========================================================-
COMPLETE FEATURE MAP — LIVING LS AIs A TO Z
-===========================================================-
This is the quick A-to-Z map of the complete Living LS AIs experience in v4.4. Every item is explained in greater detail later in this description.
A — AI Conversations, Actions, Auto Reactions & Airwaves
- Real Gemini Live conversations.
- Text and microphone input.
- Streamed native voice output.
- Validated physical action execution.
- Auto NPC Convo reactions to personal space, staring, suspicious following, collisions and social tension.
- AI-generated LS Episodes that can begin without a player command.
- New in 4.4: a full radio break cycle — DJ, adverts and Weazel News — playing on your car radio every three minutes.
B — Behaviors, Bravery, Body States & Broadcasts
- 40 selectable NPC behavior styles.
- Brave, cowardly, moral, criminal, friendly, drunk, savage, disciplined, tourist, hustler and many other personalities.
- Physical body states including hands up, cower, kneel, dance, push-ups, phone, recording, yoga, sitting, sleeping, drinking, smoking, cover and fleeing.
- Dynamic transition and stop controls for persistent states.
- New in 4.4: dispatch, air unit and ambient barks all stand down while you are mid-conversation.
C — Context, Combat, Conditional Contracts & City Awareness
- Location, interior, vehicle, radio, activity, held-item, relationship, visual and witness context.
- Physical aim, shoot, fight, cover, surrender, flee and disengage logic.
- Multi-turn mission contracts with conditional progression after refusal, non-payment, compliance, escape or threat.
- New in 4.4: shared listening context, so an NPC who rode with you through a radio break has the real advert and news text in their head.
D — Direct Talk, Drag Races, Dogs, Diagnostics & Dispatch
- Menuless/direct interaction flow.
- Dedicated drag race system with wagers, vehicle selection, countdown, finish detection, reactions and cleanup.
- Dog commands for movement, tricks, guard, fetch, vehicles and numbered targets.
- Detailed bridge, vision, audio, action, scene, cache and scheduler diagnostics.
- New in 4.4: radio break stage diagnostics, cache dedupe reporting and ad-pause state in the log.
E — LS Episodes & Escape Dossiers
- AI-only persistent random incident packs.
- 11 fresh scenarios requested every session, merged with unused previous ones.
- Maximum 55 unique cached scenarios and 100 KB cache size.
- Physical openings, props, evolving body states, linked voices, structured outcomes and natural cleanup.
- New in 4.4: that same dossier is also read out as the lead item in the news stage of a radio break.
F — Friendship, Follow, Flee & Faction Skins
- Persistent friendship scoring and friend identity.
- Homie/bodyguard-style relationships.
- Follow and stop-following states, and in 4.3 an NPC can decide to stop following you on their own initiative.
- Physical fear and flee reactions.
- New in 4.4: the [ENTERCAR] tag, so an ordinary NPC you invite along actually walks over and gets in.
G — Gemini Live, Grounding, Grudges & GTA Integration
- Persistent Gemini Live WebSocket bridge.
- Native voice and microphone transcription workflow.
- Main-thread GTA native execution.
- Human-only grounded LS Episode pairing.
- No arbitrary AI native names, hashes, animation dictionaries or prop models.
- New in 4.4: adverts and news bulletins are built from a live web search of what is genuinely trending today.
H — Homies, Hands Up, History & Helicopters
- Become-homie and accomplice systems.
- Hands-up/hands-down tactical states.
- Persistent NPC history, conversation count, player-name knowledge and witnessed-event memory.
- New in 4.4: the air unit now holds fire while you are actually mid-conversation with somebody.
I — Identity, Interiors, Interruptions & INI Control
- Canonical story-character identity locks.
- Interior and neighborhood awareness.
- Player microphone interruption during two-NPC and three-NPC scenes.
- Participant invalidation protection.
- New in 4.4: RadioBreakCycle and RadioBreakMinutes in the INI, and a dismiss key that is finally read before the sixteen early returns that used to eat it.
J — Jobs, Judgement & Joined Scenes
- NPCs may accept, refuse, judge, negotiate or demand payment for jobs.
- Accepted jobs become commitment-locked.
- Two-person and three-person joined Gemini scene sessions.
- New in 4.4: the [ROBSTORE] tag, so a shop robbery you talk somebody into physically happens at one of 16 real mapped stores.
K — Key Simplicity & Knowledge
- Gemini-first modern workflow centered around one Gemini API configuration.
- NPC knowledge shaped by personality, memory, world state, vision and canonical relationships.
- API keys remain private and must never be shared in public logs.
- v4.3 position: no shared key will ever be bundled with the script. A shared public key gets rate-limited and banned within hours and then the mod is broken for everybody.
L — Language, Lip-Sync, Lifts & Lanes
- Strict multilingual scene language locking.
- Original stable audio-driven lip-sync.
- Dynamic spatial voice positioning.
- General lifts, waypoint travel and 20 named destinations.
- New in 4.4: the radio break cache is authored in your selected language, and English copy already on disk is translated as it is read.
M — Memory v3, Microphone & Money
- Persistent memory with exponential grudge decay, tracked debts and spreading gossip.
- Bounded history and full backward compatibility with v2 memory files.
- Live microphone streaming with ownership protection.
- Verified money deductions and ordered payment plus scene-start transactions.
- New in 4.4: money from an NPC actually arrives in your wallet, verified against the game's own stat before and after.
N — NPC-to-NPC, Three-NPC & News
- NPC A to NPC B conversations.
- NPC A to NPC B to NPC C group scenes.
- Independent voices, shared transcripts, fair rotation, target ownership, physical actions and player participation.
- Numbered target roster with stable handle locking.
- New in 4.4: the news stage of a radio break now seeds city awareness, which it never did before.
O — Outcomes, Ownership & Occlusion
- Resolved, unresolved and escalated LS Episode outcomes.
- Action ownership prevents the target from copying the executor's commands.
- Session and microphone ownership reject stale packets.
- Spatial audio occlusion and distance filtering.
- New in 4.4: shared listening is cabin-gated, so only an NPC who genuinely sat in your car claims to have heard your radio.
P — Props, Personalities, Physical Performance & Presets
- Validated phones, cameras, wallets, money bags, cash, documents, drinks, food and evidence props.
- 40 personality modes.
- Physical performance rather than dialogue-only narration.
- New in 4.4: a fifth panel skin dedicated to advert breaks, so a commercial no longer wears a police badge.
Q — Queues, Quotas & Quality Controls
- Main-thread action queues.
- Mandatory LS Episodes wait in a safe gameplay queue.
- Gemini quota and API availability handled through cache, retry, key rotation and backoff.
- PCM quality verification before accepting voiced scene turns.
- New in 4.4: the search grounding quota trips cleanly, disables search for that session and lets the conversation carry on.
R — Relationships, Routines, Random Stories & Radio
- GTA story relationship network.
- Ammu-Nation, clothing-store and convenience-store routines.
- Random LS Episodes independent of NPC Routines.
- Radio and vehicle context.
- New in 4.4: radio ducking has an absolute 25 second ceiling, so a long chase can never mute your music or kill the Q radio wheel.
S — Spatial Audio, Shops, Story Characters, Stop Commands & Skins
- Dynamic stereo positioning and distance attenuation.
- Shopping and checkout scenes.
- Michael, Franklin, Trevor, families, allies, rivals and broader story identities.
- Complete semantic NPC-to-NPC stop-command family.
- New in 4.4: a rewritten [LEANONCAR] that leans on your bonnet instead of launching it into the sky.
T — Target Locks, Three-Person Scenes, Transitions & Thinking Level
- Stable numbered target handles.
- Three-person linked scenes.
- Dynamic transitions between cower, stand, flee, yoga, phone, record, aim, dance, sit, sleep and other states.
- New in 4.4: [SNIPEKILL@n] takes out a specific numbered person at range instead of whoever happens to be nearest.
U — Unscripted Incidents & User Freedom
- No hand-written local fallback templates for LS Episodes.
- Player can aim, shoot, reload, use the weapon wheel and melee during supported conversations and scenes.
- Every session can produce a different story pack.
- New in 4.4: an ad break pauses your conversation instead of trampling it, and tells you to wait or press N to skip.
V — Vision, Vehicles & Voices
- Fresh screen-frame visual context.
- Vehicle and window conversations.
- Lift, exit, drive-away, stop-for-player and race systems.
- Independent Gemini voices for linked participants.
- New in 4.4: an NPC riding with you hears your radio, and shared listening works during a lift as well as a normal drive.
W — Witnesses, Weapons, World Awareness & Weazel
- Crime, dead-body, threat and suspicious-action awareness.
- Weapon handoff and persistent weapon ownership.
- Location, time, activity, radio, vehicle and physical evidence awareness.
- New in 4.4: rumours finally spread — the gossip system was silently skipping every pedestrian because of a stale filename check.
X — XML/Legacy Tag Repair
- Repairs validated legacy forms such as and .
- Repairs ordinary scene tags into the NPCTONPC namespace.
- Unknown AI markup remains non-executable.
Y — Your Choices Matter
- Personality and relationship affect acceptance.
- Payment and weapon exchange affect contracts.
- Player interruption can redirect, stop, continue or escalate a scene.
- Target replies determine conditional physical phases.
- New in 4.4: what you sat through on the radio becomes something you and a passenger genuinely share.
Z — Zexiva's Living Los Santos
- A complete single-player AI sandbox where conversations become physical, persistent, voiced Episodes, and where the city broadcasts and remembers what you did.
-===========================================================-
NEW: THE NEON GLASS UI ENGINE
-===========================================================-
The dialogue panel was rebuilt from scratch.
The old panel had a structural problem. It called its show routine separately for listening, transcribing, thinking and reply, which meant the box visibly died and respawned up to four times in a single conversational turn. It also contained 77 hardcoded magic numbers producing exactly one fixed look, and it stretched badly on ultrawide monitors.
Neon Glass is one persistent panel whose contents change.
The renderer draws fifteen ordered layers:
1. Outer bloom.
2. Drop shadow.
3. Three-band glass body.
4. Scanlines at a fixed interval.
5. Left neon spine in three segments running bright to dim.
6. Top and bottom hairlines.
7. Broadcast overlay: a counter-travelling blue and red police siren sweep, a Weazel red lower-third band, or an amber helicopter searchlight sweep.
8. A travelling top-edge shimmer while the system is busy.
9. Corner brackets and right-hand verticals.
10. Footer strip.
11. Avatar with a triple ring.
12. Name badge, friendship pips, faction chip and header status dot.
13. Recording indicator and lift ribbon.
14. The dimmed "YOU said" transcript row.
15. Body text with typewriter caret, footer hint with marching dots, character counter and action-flash toast.
Presets
- Cinematic
- Compact
- Minimal
- Ghost
- Custom
Colour themes
- Mood Auto, which follows the NPC's current mood score
- Cyber
- Sunset
- Toxic
- Royal
- Blood
- Rainbow, which cycles hue continuously
Anchors
- Bottom
- Top
- Bottom Left
- Bottom Right
Scale and opacity are both adjustable, and every change previews live while you scroll the menu rather than forcing you to close it and test.
Aspect-ratio correction is applied on every draw, so 21:9 and 32:9 monitors stop stretching the panel.
Panel height auto-fits from the real measured text width divided by the available column, capped at a sensible maximum, so a two-word reply does not get a nine-line box.
If you prefer the old look, the legacy renderer is still available through a configuration switch.
-===========================================================-
NEW: THE DUAL WAVEFORM IS REAL DATA
-===========================================================-
Under the avatar there are two independent 14-bar rolling histories.
The top row, in blue, is your microphone level.
The bottom row, in the current accent colour, is the NPC's actual streamed voice level.
New samples push in from the right and the history scrolls left. Neither row ever disappears: a silent side flatlines to a thin idle line instead of vanishing, so the panel never visually pops while you talk.
The meter is capped so it cannot burn frames, and it now reads from a lock-free volatile mirror instead of polling the audio buffer roughly thirty times a second. That old polling behaviour was fighting the same lock the PCM writer needed and was a genuine source of audio flicker during replies.
-===========================================================-
NEW: 29 FACTION SKINS
-===========================================================-
186 pedestrian models are mapped to 29 visual identities. When you talk to someone, the panel adopts their faction colours and shows a faction chip.
Gangs and crews
- Ballas
- Families
- Vagos
- The Lost MC
- Marabunta
- Korean Mob
- Triads
- Armenian Mob
- Varrios
Law and government
- LSPD Officer
- Sheriff
- NOOSE / SWAT
- FIB
- Army
- Security
- Inmate
Services
- Paramedic
- Firefighter
- Medical
Social and regional
- Blaine County
- Professional
- Nightlife
- Infected
- Animal
- Transient
- Beach
- Business
- Hipster
- Country
Radio skins are handled separately. Police dispatch, Weazel News and the LSPD Air Unit each get their own broadcast styling, so you instantly know a transmission is not a person standing next to you. A late fix also clears any lingering faction colour when a radio transmission begins, because a Ballas-purple panel labelled LSPD DISPATCH is not acceptable.
-===========================================================-
NEW: AI POLICE DISPATCH
-===========================================================-
A real AI dispatcher now runs on the police band.
The dispatcher receives live world state and reads it back in a clipped radio cadence:
- your current wanted level,
- the type of crime,
- the street name,
- the zone,
- and your last known direction of travel.
It is gated so it cannot spam during an active call, it is throttled with diagnostic logging that records exactly why a transmission was skipped, and it outranks ambient chatter, so a dispatch call is allowed to cut across a random pedestrian bark.
Example:
"All units, we have a 187 in progress on Marathon Avenue. Suspect on foot, last seen heading west."
-===========================================================-
NEW: WEAZEL NEWS BULLETINS & THE CRIME SPREE RECORDER
-===========================================================-
Weazel News does not report random noise. It reports you, accurately, using a recorded dossier.
The crime spree recorder arms at three stars and then records continuously until you are completely clean again:
- peak wanted level,
- police killed,
- civilians killed,
- vehicles exploded,
- shooting events,
- the zone where the spree started,
- every chase zone,
- every shooting zone,
- your escape zone,
- your escape method,
- and the final outcome: ESCAPED, BUSTED or WASTED.
Staying clean for a short confirmation window counts as an escape. About a minute later the completed dossier automatically becomes one real bulletin.
While the anchor speaks, your in-game radio station ducks to roughly ten percent and then restores. Reported dossiers are wiped afterwards so the anchor can never repeat old news, and a watchdog guarantees the bulletin can never sit stuck on "Generating..." forever.
Example:
"We're getting reports of gunfire in Del Perro. More on this as it develops."
-===========================================================-
NEW: LSPD AIR UNIT
-===========================================================-
A police helicopter has its own separate voice and its own personality.
During a pursuit it calls your position from above. Its loudspeaker is deliberately the single loudest thing in the game, and it outranks ground dispatch, because in a real pursuit the chopper takes the lane.
Example:
"Air One has visual. Suspect is in the alley behind the strip mall, still moving."
-===========================================================-
NEW: THE FOUR-LANE AUDIO ARBITER
-===========================================================-
With NPCs, dispatch, news and a helicopter all capable of speaking, the mod needed traffic control.
Four audio lanes are claimed and released explicitly:
- NPC
- News
- Dispatch
- Heli
Two systems can never fight for your speakers mid-sentence. A queued pedestrian bark will not jump the line while LSPD is transmitting; it waits. A bark that was queued twelve seconds ago is discarded if you are already a block away, because it is no longer relevant.
Radio transmissions are also pinned dead centre in the stereo field rather than positioned in 3D space, since a voice coming out of a scanner does not have a physical location in the world.
-===========================================================-
NEW: CITY AWARENESS ENGINE
-===========================================================-
After a bulletin airs, Los Santos remembers it for roughly twenty real minutes.
If every pedestrian opened with "did you hear the news," the mod would be unbearable within three minutes. So awareness is tiered:
AWARE — the overwhelming majority
The story sits in their context. They will never raise it themselves. They only answer if you ask.
VOCAL — roughly eight percent
They may bring it up naturally, and only from the second conversational turn onward. Hard-capped at three per broadcast so it stays a rare surprise.
RECOGNIZER — only when you were BUSTED or WASTED
Your identity became public. Around half of nearby pedestrians recognise your face and react physically: flee, insult you, or call 911.
Every NPC who speaks about it is locked out permanently, so nobody repeats the same story at you.
Knowledge is injected instantly. An earlier build delayed awareness by sixty seconds, which meant that if you asked an NPC immediately after a bulletin they knew nothing. Only the ability to raise it unprompted is delayed now, which is the part that actually needed pacing.
Linked NPC-to-NPC scenes hear the news too, so two strangers can naturally end up discussing something you did.
-===========================================================-
NEW: MEMORY v3 — GRUDGES, DEBTS & GOSSIP
-===========================================================-
NPC memory is no longer a flat friendship score.
Exponential grudge decay
Individual events carry their own weight and fade at their own speed. Being shot at stays in someone's head for roughly two weeks of decay. A plain insult fades in about a day. Everything in between scales smoothly, so a serious betrayal is not forgotten at the same rate as a rude comment.
Tracked debts
Money owed in either direction is stored as its own record. An NPC can be genuinely friendly with you and still want their two hundred dollars back.
Gossip that spreads
When something notable happens it propagates outward to nearby pedestrians and is written directly into their memory files. The radius grows with each hop, up to a bounded number of people per event, inside a freshness window. Walk back an hour later and a total stranger may already know what you did.
Full backward compatibility
Old v2 memory files load without conversion. Nothing you already built with an NPC is lost.
-===========================================================-
NEW: CUSTOM RULES FILE
-===========================================================-
A plain text file whose contents are appended to every NPC prompt.
Location:
scripts/LLAI SERVER/LLAIBridge/LLAI CUSTOM RULES.txt
Behaviour:
- auto-created with a template on first run,
- lines beginning with # are comments,
- needs more than a few real characters before it activates,
- capped at 8000 characters,
- reaches all five AI sockets.
The old /CustomPromptHere: override was retired because it replaced the entire prompt engine and therefore broke every action tag. This one adds to the prompt instead of replacing it.
The parser passed its full test set and was confirmed working in game with a complete "everyone in Los Santos believes they are the strongest person alive" rule set. A sample file ships next to the template.
-===========================================================-
NEW: AI THINKING LEVEL
-===========================================================-
A four-step dial in the menu, with pros and cons written out in your own language so you are not guessing what you just changed.
Minimal — default
Fastest possible reply. Simplest reasoning.
Low
Slightly smarter. Small delay.
Medium
Handles complex requests. Noticeable pause.
High
Deepest reasoning. Slowest, and it does break conversational flow.
Why this needed fixing: the bridge was hard-coding a thinking budget of zero into five different sockets, and it was using the wrong parameter family entirely for the newer model generation, which rejects it. v4.3 detects the model family and sends the correct form.
-===========================================================-
NEW: GOOGLE SEARCH GROUNDING TOGGLE
-===========================================================-
An optional toggle that attaches a search tool to the live session so NPCs can reference real information.
Honest note: this is provided as an experimental option and defaults to OFF. Grounding support depends entirely on what the live model actually honours, and in testing the current live preview model did not always issue search queries. It is harmless when disabled and it is documented here rather than hidden.
-===========================================================-
NEW: 8 LANGUAGES INCLUDING GERMAN
-===========================================================-
Requested directly by the community.
- English
- Hindi
- Portuguese
- Spanish
- French
- Italian
- Japanese
- German (new in 4.3)
This is not just NPC speech. Menus, notifications, item descriptions and the scene language rules were all localised.
The bug behind this: roughly 275 notification strings were silently English-or-Portuguese only, because the translation helper returned its input unchanged unless the language happened to be Portuguese. v4.3 replaces it with a proper runtime lookup so every language actually resolves.
The multilingual scene language lock from v4.2 remains, covering English, Hinglish, Haryanvi, Bhojpuri, Khari Boli, Spanish, Brazilian Portuguese, Japanese, French, Italian, Simplified Chinese, Malaysian Malay, Arabic and Indonesian.
-===========================================================-
NEW & IMPROVED TAGS IN v4.3
-===========================================================-
[OPENWINDOW]
An NPC inside a vehicle physically rolls their own window down so you can actually hear them. This pairs with the cabin muffling system: the moment the glass drops, the low-pass filter opens and the voice becomes clear.
[CLOSEWINDOW]
Rolls it back up. The muffle returns smoothly.
[STANDONONELEG]
A stock ambient yoga scenario whose tree-pose phase has the ped balancing on one leg. Yes, this genuinely exists in GTA V.
[STOPFOLLOWING]
An NPC who is following you can now decide to stop on their own initiative and walk away. Previously they could only stop when you ordered it. This was implemented purely through prompt law and worked examples, with zero keyword detectors, because word-matching guards are fragile and produce false positives.
[LIFT_PLAYERDRIVE]
During a lift, you take the wheel and the NPC moves to the passenger seat. The route pauses.
[LIFT_GIVEBACKDRIVE]
Hand the wheel back. The NPC becomes the driver again and the route resumes.
[FIGHTENEMY]
Restored. This tag was listed in the prompt but its supporting field was write-only, meaning an NPC who agreed to defend you never actually engaged. It works now.
-===========================================================-
NEW: VEHICLE CABIN MUFFLING
-===========================================================-
Acoustic realism for vehicle conversations.
A voice coming from inside a closed car is filtered. When the window comes down, the filter opens. When it goes back up, the muffle returns smoothly rather than snapping.
Combined with the existing spatial audio system, this means a driver talking to you through a closed window genuinely sounds like a driver talking to you through a closed window.
-===========================================================-
THE v4.3 BUG HUNT — TWELVE REPORTS, TWELVE ROOT CAUSES (previous release)
-===========================================================-
Community reports were not worked around. Each one was traced to the actual line that caused it.
1. "90% of NPCs think they're Beverly."
Reported by impoliceofficer, who noticed the problem scaled with the number of files in the memory folder: 135 files made it constant, deleting them made it stop.
Root cause: story-character name matching ran against generated ambient names, so more memory files meant more collisions.
Fix: a story-category gate plus a whole-word matcher applied across 117 call sites.
2. NPC says "I'm hitting you" while standing still.
Root cause: combat ability defaulted to Poor, so the engine accepted the task and then held position.
Fix: combat ability, movement and range set explicitly, plus anti-coward combat attributes.
3. NPC accepts a fight, then runs away.
This was the big one, and it took a full session log to find.
Root cause: the in-chat combat path never moved the ped into the HATES_PLAYER relationship group. Without it the engine classifies you as a threat, which generates a panic and flee event, rather than as an enemy, which generates a combat task. Every reassert tick lost to a fresh flee event. That is also why it only ever worked after you cancelled the conversation.
Fix: explicit enemy identity, removal from the original group, a hard immediate task clear rather than a soft abort, the anti-flee combat attribute, identity re-asserted every tick, and a longer lock window.
4. Space bar dismiss makes you jump or handbrake.
Reported by impoliceofficer.
Fix: the dismiss key is now rebindable through DismissKey= in the INI, and the "wait until audio ends" gate was removed so it responds immediately.
5. The beer and weed errand scam.
Reported by impoliceofficer, including the specific case of an NPC named Wayne who took a hundred dollars for weed, called his dealer, quoted a price and then ran away.
Root cause: NPCs were accepting errands the engine cannot physically perform.
Fix: a hard prompt law stating exactly which errands exist. Money taken for an impossible errand no longer happens because the errand is no longer offered.
6. NPCs refuse to help in shootouts.
Reported by impoliceofficer.
Root cause: the ambient cowardice profile kept overriding the combat order.
Fix: AlwaysFight and DisableFleeFromCombat re-applied for as long as the combat lock is active.
7. Voice conversations randomly stop working until you press Backspace.
Reported by impoliceofficer.
Fix: session and turn ownership guards, warm-hold handling, and a microphone queue that discards stale audio safely instead of jamming.
8. Audio flicker during replies.
Found in session logs.
Root cause: the waveform polled the audio buffer roughly thirty times a second and fought the same lock the PCM writer needed.
Fix: a lock-free volatile mirror.
9. Backspace did nothing while the Settings menu was open.
Found in logs.
Fix: Backspace now clears menus and the panel in one press.
10. An NPC never stops following on its own.
Found in logs, where the player had to manually say "then stop following me," and the NPC responded with a drive-away tag while standing on the pavement with no vehicle.
Fix: the prompt now grants the NPC the right to leave, with worked good and bad examples including that exact failure. No keyword detectors were added.
11. [WAVE] never played.
Found in logs, failing four times out of four.
Root cause: it used a multiplayer celebration animation dictionary that never streams in singleplayer.
Fix: swapped to a gesture that is already resident in both the male and female standing-casual dictionaries, and the animation load budget was raised.
12. Lift driver never exited and the fare never settled.
Root cause: the drop-off logic lived inside the renderer behind three early returns, so with the chatbox hidden it never ran at all.
Fix: extracted into its own unconditional tick.
Additional fixes in the same pass:
- The lift fare was being charged the instant a ride started; it is now charged only when the ride actually completes.
- After a drop-off the driver would exit and jack a nearby vehicle. Fixed.
- A mobile phone was being counted as a weapon. Fixed with the shared weapon check.
- Every ped kept ranting about smog that only exists because of graphics mods. Removed.
- An auto-convo NPC could hold the bridge hostage so the player could not start a new conversation. Fixed.
- A dispatch open event never appeared in the bridge while heli and news did. Fixed.
- A news blackout could stick for three straight minutes. Fixed.
- The episode director stalled for over two minutes while the player was ragdolling on a bike. Fixed.
- Weazel News could hang forever on "Generating..." if the timeout fired the same second the audio arrived. Fixed with a watchdog.
- A world-event spacing correction was logging 33 times per second. The correction still runs every tick; only the log is throttled.
- Dead code cleanup: an unreferenced goto label, two write-only variables, and one write-only field that was hiding an entirely dead feature.
One request that was declined
Several people asked for a working API key to be bundled directly inside the script. That is a hard no. A shared public key is rate-limited and banned within hours, and then the mod is broken for everybody, including the people who asked. A free Gemini key takes about a minute to create and stays yours.
-===========================================================-
EVERYTHING FROM v4.2 AND v4.3 IS STILL HERE
-===========================================================-
LIVING CITY is an expansion, not a replacement. Everything below remains fully present and active in v4.4.
LS EPISODES
Los Santos generates independent AI-only episodes around you, with no hand-written local scenario templates. Eleven fresh scenarios are requested every game session and merged with unused previous ones, up to 55 unique cached scenarios and 100 KB. There is a 50% opportunistic check every 10 seconds and a mandatory deadline every 30 seconds, which waits for a safe gameplay window rather than interrupting chat, microphone recording, an active scene, a lift, combat, ragdoll or unsafe vehicle conditions.
TWO-NPC AND THREE-NPC LINKED SCENES
NPC A can walk to NPC B and hold a fully linked conversation with independent Gemini Live sessions, independent voices, a shared chronological transcript, physical state facts, language locking and scene-ending rules. Three-NPC scenes add round-robin speaking, fair participation, optional routing, target validation and duplicate-person protection.
MISSION CONTRACTS AND THE NEGOTIATION LEDGER
A mission can be negotiated across many turns. A dedicated raw negotiation ledger preserves the chronological deal so that a payment line modifies the job instead of replacing it, and a short confirmation like "go" or "do it" cannot erase the original concrete request.
COMMITMENT LOCK
Before accepting, an NPC keeps full agency to refuse, question, negotiate or demand payment. Once they accept, take payment and walk to the target, they cannot reopen the negotiation inside the scene.
NUMBERED TARGET ROSTER
The AI receives a numbered roster of up to five nearby entities with name, gender, type, role, distance, activity and vehicle state, then selects an exact target. Handles are locked for the conversation, so "3RD: tourist woman" cannot silently become "3RD: random male driver" while you negotiate.
ACTION OWNERSHIP
Every physical tag belongs to the current speaker. The target does not copy the executor's contract just because the shared transcript contains the word "shoot." They react as themselves: hands up, cower, back off, flee, take cover, comply, refuse, or fight back when justified.
VALIDATED PHYSICAL ACTION SYSTEM
Combat and threat: aim, stop aiming, shoot, stop shooting, fight, stop fight, take cover.
Fear and movement: hands up, hands down, cower, kneel, stand up, back off, flee.
Social: hug, kiss, shove, slap, wave.
Activities: dance, push-ups, phone, record, yoga, cheer, impatient, drink, sit, sleep, smoke.
The AI cannot execute arbitrary native hashes, arbitrary native names, arbitrary animation dictionaries, arbitrary prop models, teleports or freezes.
COMPLETE STOP-COMMAND FAMILY
A full set of semantic stop controls, with a clear distinction preserved: stopping an activity is not the same as ending the conversation. "Stop dancing" stops the dancing and the scene continues. "End this conversation" ends the scene. "Keep going, no stopping" forbids both stop types for that turn.
PLAYER INTERRUPTION
You can interrupt an active NPC-to-NPC scene with your microphone. The system preserves current audio, waits for the final transcript, broadcasts the interruption into the shared scene and determines the next speaker. NPCs are instructed never to invent your answer on your behalf.
MALFORMED TAG REPAIR
Validated legacy and ordinary aliases are repaired into the correct namespace. Unknown model-generated markup remains non-executable. The streaming parser holds an incomplete split tag until the closing bracket arrives.
ACCIDENTAL PLAYER-HOSTILITY PROTECTION
Direct hostile actions are deferred until the full turn reveals whether a linked scene is starting, so the initiating NPC cannot accidentally aim at you before walking to the actual target.
GROUNDED PARTICIPANT SELECTION
Human participants only, nearest compatible pair preferred, no driver NPCs, roughly 18 metre scan radius, roughly 12 metre maximum pair separation, venue compatibility, safe-window checks and entity validation. No freezing, no teleporting, no anchor snapping.
AI-GENERATED PHYSICAL OPENINGS AND VALIDATED PROPS
Both participants receive a real physical opening state from a validated capability list, with semantic props including bottles, pill bags, money bags, wallets, phones, cameras, clipboards, cash, duffel bags, food, coffee and documents. A phone prop automatically activates phone behaviour and a camera automatically activates recording.
PHYSICAL HALLUCINATION PROTECTION
The generator is prohibited from inventing unsupported physical facts such as an ATM, a bench, fire, crash damage or a doorway unless the live environment or validated setup confirms it.
STRUCTURED ENDINGS
Ambient episodes require sufficient exchanges and must close with a structured resolved, unresolved or escalated outcome that explains the actual result. Vague endings are rejected.
40 BEHAVIOR MODES
The complete personality collection remains, from Default, Angry, Ultra Roaster, Savage, Polite, Psychopath, Introvert, Kind, Selfish, Dumb, Conspiracy, Flirty, Depressed, Gangster, Philosopher, Comedian, Drunk, High IQ, Disciplined and Chapri, through to Obey Everything, Ride-or-Die Homie, Coward Civilian, Psycho Criminal, Street Hustler, Rich Snob, Corrupt Cop, Gang Soldier, Silent Killer, Drunk Desi Uncle, Helpful Local Guide, Paranoid Prepper, Romantic Flirt, Moral Citizen, Tired Worker, Tourist Outsider, Insult Battle, Street Philosopher, Command Tester and Unfiltered Local.
STORY CHARACTER IDENTITY AND RELATIONSHIPS
Canonical Player, Story, Cutscene and Multiplayer categories, identity locks, and the full relationship network across Michael, Franklin, Trevor, Lamar, Amanda, Jimmy, Tracey, Lester, Dave Norton, Steve Haines, Devin Weston, Ron, Wade, Floyd, Patricia, Martin Madrazo, Simeon, Stretch and the broader story network.
SWEARING / ABUSE CONTROL
The two-mode system is unchanged. With swearing and abuse OFF the AI stays PG-13: no English profanity, no Hindi gaalis, no slurs, no censored or obfuscated variants. With it ON the AI may use contextual English profanity, Hindi and Hinglish gaalis, regional slang, GTA-style insults and character-appropriate rough speech. Identity-slur spam is still not the goal. The setting applies to direct chat and to linked scene rules, and in v4.3 it also applies to the police dispatch, news anchor and air unit voices, which stay professional regardless.
MOVEMENT CONTROLS: OUTOFVEHICLE, DRIVEAWAY AND STOPFORPLAYER
OUTOFVEHICLE requests a natural safe exit and avoids forcing a suicidal exit from a fast-moving vehicle.
DRIVEAWAY lets a driver leave naturally and return to vehicle wandering behaviour. In v4.3 the prompt was tightened with worked examples after a log showed an NPC emitting a drive-away tag while standing on the pavement with no vehicle; that tag is now clearly reserved for actually driving a vehicle, and walking away has its own behaviour.
STOPFORPLAYER asks a walking or wandering NPC to stop, wait, come here and stop, stop walking away, or face the player. On foot the NPC clears the current movement task, stays unfrozen, turns toward you and looks at you. A vehicle driver uses a controlled temporary vehicle stop. No teleport is used. In v4.3 a face-hold watchdog keeps STOPFORPLAYER and FACETARGET peds actually facing you instead of drifting back to their ambient heading.
LIFTS WITH 20 NAMED DESTINATIONS
Davis, Grove Street, Legion Square, Vespucci Beach, Del Perro Pier, Los Santos International Airport, Rockford Hills, Downtown Vinewood, Mirror Park, Diamond Casino, Maze Bank Arena, Sandy Shores, Grapeseed, Paleto Bay, Chumash, Harmony, Fort Zancudo, Galileo Observatory, Mount Chiliad and Marlowe Vineyard, plus current-waypoint routing.
DRAG RACES, HOMIES, SHOPS, ANIMALS
The drag race system with wagers and cleanup, homie and accomplice progression, clothing store, convenience store and Ammu-Nation routines, ambient task preservation, and the full dog and animal command set all remain.
VISION, SPATIAL AUDIO, LIP-SYNC
Multimodal frame capture with full lifecycle diagnostics, dynamic spatial positioning with distance and occlusion, and the stable audio-driven lip-sync workflow.
MAIN-THREAD SAFETY AND OWNERSHIP
GTA natives stay on the ScriptHookVDotNet main thread or the main-thread action queue. Session IDs, microphone turn IDs, scene turn IDs, generation IDs and in-flight guards reject stale and duplicate packets.
-===========================================================-
QUICK SETUP OVERVIEW
-===========================================================-
Living LS AIs is a single-player ScriptHookVDotNet mod.
Always follow the exact installation guide included with the download, because dependency versions and package layout may change between public builds.
The normal v4.4 setup includes:
- GTA V single-player,
- ScriptHookV,
- ScriptHookVDotNet 3 / Nightly,
- LemonUI for SHVDN3,
- Newtonsoft.Json,
- NAudio,
- the included LivingLSAIs DLL,
- the included LLAI SERVER data folder,
- the readable local server.js Gemini Live bridge,
- Node.js for the local bridge,
- and your own valid Gemini API key.
Important installation rules
Only one active LivingLSAIs DLL should exist. The main DLL belongs in the GTA V scripts directory. Do not leave a second duplicate inside LLAI SERVER, because duplicate script loading causes unpredictable behaviour.
Delete outdated LivingLSAIs files, stale duplicate folders and old mismatched builds before copying in v4.4.
The local bridge belongs inside the included LLAIBridge folder under LLAI SERVER.
If you are upgrading from a build that had the Beverly identity bug, consider clearing the NPC_MEMORIES folder for a clean slate. Hundreds of files generated by the buggy build can persist even after the fix.
-===========================================================-
BASIC FOLDER LAYOUT
-===========================================================-
GTA V/
├── GTA5.exe
├── ScriptHookV.dll
├── ScriptHookVDotNet.asi
├── ScriptHookVDotNet3.dll
├── scripts/
│ ├── LivingLSAIs.dll
│ ├── LivingLSAIs.ini
│ ├── LemonUI.SHVDN3.dll
│ ├── NAudio.dll
│ └── Newtonsoft.Json.dll
│ └── LLAI SERVER/
│ ├── LLAIBridge/
│ │ ├── server.js
│ │ ├── node.exe
│ │ ├── LLAI CUSTOM RULES.txt (new in 4.3)
│ │ └── radio_break_cache.json (new in 4.4)
│ ├── NPC_MEMORIES/ (memory v3 json files)
│ ├── LLAIsession.log
│ ├── LLAIDEBUG.log
│ ├── bridge_audio.log
│ └── bridge_fatal.log
-===========================================================-
CORE CONTROLS
-===========================================================-
E — Lock onto a nearby NPC and open the conversation flow.
T — Instant text chat with a nearby NPC or the active conversation target.
Y (hold) — Voice input, push-to-talk style live speech.
ENTER — Select menu items, confirm choices, and progress drag race setup and start.
BACKSPACE — End chat or cancel active flows such as drag race setup. In v4.3 it also clears an open Settings menu and the panel in one press.
SPACE — Dismiss the chatbox instantly. New in 4.3: rebindable through DismissKey= in the INI, because Space is also jump and handbrake. Fixed in 4.4: the custom key is now read before the sixteen early returns that used to eat it.
N — New in 4.4. Skip the radio break, either during the ten second warning or at any point once it has started. Deliberately not suppressed, so shop menus that also read N keep working.
Interface menu — New in 4.3. Live-preview every preset, colour theme, scale, opacity and anchor while you scroll. Saves to the INI automatically.
Credits & Community menu — New in 4.3. A public-release hub with credits, links and support information.
-===========================================================-
FIRST-TIME USER TUTORIAL
-===========================================================-
Step 1 — Install the required GTA V scripting foundation.
Install ScriptHookV and ScriptHookVDotNet according to their official instructions, then place the mod files exactly as described in the included installation guide.
Step 2 — Configure Gemini.
Add your own valid Gemini API key using the configuration method included with the release. Do not publicly share your key. Gemini availability, quota, regional availability and model limits all affect response generation.
Step 3 — Start GTA V Story Mode.
Living LS AIs is made for single-player. Do not use it in GTA Online.
Step 4 — Approach a pedestrian and start talking.
Use text input, microphone input, menuless direct interaction, or the menu, depending on your settings.
Step 5 — Speak naturally.
You do not need to memorise internal tags for normal gameplay:
- "What are you doing here?"
- "Do you know where the beach is?"
- "Take my gun for a minute."
- "Give me a ride to Davis."
- "Roll your window down, I can't hear you."
- "Let me drive."
- "Go ask that woman if this phone belongs to her."
- "Ask that man to dance. If he refuses, aim at him."
Step 6 — Watch the world, not only the subtitles.
Notice who walks to whom, who is holding an item, who aims, who surrenders, who flees, and how the scene resolves.
Step 7 — New in 4.3: cause trouble and then listen.
Get three stars, run, escape, then get in a car and turn the radio on. About a minute later you may hear a Weazel News anchor describing what you just did. Then go and talk to a pedestrian and ask them about the news.
Step 8 — New in 4.4: bring somebody with you.
Ask a pedestrian to get in your car. Drive until a radio break plays and let it finish. When the music comes back, ask them what they thought of the adverts. They heard every word of it, and they will tell you.
-===========================================================-
TUNING THE PANEL
-===========================================================-
Open the Interface menu and scroll. Everything previews live.
- Try Cinematic if you want the full look.
- Try Compact or Minimal if you find the panel distracting during driving.
- Try Ghost if you want the text to feel like it is floating with almost no chrome.
- Switch Anchor to Top if the bottom of your screen is busy with other mod HUDs.
- Set the colour theme to Mood Auto and watch it shift as an NPC's mood changes during an argument.
- Set it to Rainbow if you simply want it to cycle.
- Raise or lower Scale for your resolution, and Opacity for your taste.
If you prefer the older renderer entirely, set UiEngineV2=false in the INI.
-===========================================================-
WRITING YOUR OWN RULES
-===========================================================-
Open scripts/LLAI SERVER/LLAIBridge/LLAI CUSTOM RULES.txt
Write anything you want appended to every NPC prompt. Lines starting with # are ignored.
Examples of what people have used it for:
- Making every pedestrian believe they are the strongest person in Los Santos.
- Enforcing a specific roleplay setting or time period.
- Forcing a consistent regional speech style.
- Adding a house rule such as "nobody in this city ever admits they are wrong."
- Making every NPC obsessed with a particular topic.
It applies on top of the existing prompt engine, so all action tags, scene rules and physical laws keep working.
-===========================================================-
EXAMPLE SESSION 1 — THE CITY REPORTS ON YOU
-===========================================================-
You start a firefight in Del Perro and reach four stars.
The crime spree recorder arms and begins logging: peak stars, cops killed, vehicles destroyed, every zone you shot in, every zone you were chased through.
Police dispatch cuts across the ambient chatter:
"All units, shots fired on Del Perro Boulevard. Suspect is armed, heading north on foot."
The chopper arrives and claims the audio lane above dispatch:
"Air One has visual. Suspect is on the rooftops, moving east."
You escape into an alley and stay clean long enough for the escape to confirm.
About a minute later you get in a car, and your station ducks to ten percent:
"We're getting reports of a violent incident in Del Perro this afternoon. Police say the suspect fled the scene and remains at large. More on this as it develops."
The station volume restores.
You walk up to a pedestrian and ask what happened in Del Perro. They know. They were never going to bring it up unprompted, but they can answer.
You walk to another one. They say nothing about it, because they are in the aware tier, not the vocal tier.
A third one recognises you, because that last spree ended with you getting arrested and your identity became public. They back away and pull out their phone.
-===========================================================-
EXAMPLE SESSION 2 — DANCE OR ELSE
-===========================================================-
Player: "Take this gun."
NPC A: "Understood. Anything else?"
Player: "Ask that guy to dance. Aim if he refuses. Shoot only if he still refuses."
NPC A accepts and walks to NPC B.
NPC A: "Hey, the boss wants you to dance. Got a problem with that?"
NPC B: "Dance? What is this, performance art?"
NPC A physically aims.
NPC A: "Make some moves or things stop being friendly."
NPC B physically cowers.
NPC B: "Okay, easy! What exactly do you want?"
Player interrupts by microphone: "Tell him to dance."
NPC A: "You heard them. Dance."
NPC B physically dances.
Player: "Perfect. Keep going."
The scene continues instead of incorrectly ending.
-===========================================================-
EXAMPLE SESSION 3 — THE LIFT, YOUR WAY
-===========================================================-
Player: "Give me a ride to Sandy Shores."
The NPC accepts, you get in, and the lift ribbon appears in the panel showing the destination.
Player: "I can't hear you over the engine."
NPC rolls their window down. The cabin muffle opens and the voice becomes clear.
Player: "Actually, let me drive."
You take the wheel, the NPC moves to the passenger seat, and the route pauses.
You drive halfway, get bored, and hand it back.
The NPC becomes the driver again and the route resumes from where it paused.
At the actual drop-off, the fare settles. Not at the start of the ride, and the driver does not exit and steal a nearby car afterwards.
-===========================================================-
EXAMPLE SESSION 4 — A GRUDGE THAT TRAVELLED
-===========================================================-
You shoot near a pedestrian in Mirror Park and then leave without another word.
That event is recorded in their memory file with a heavy weight and a two-week decay curve. It also seeds gossip.
Over the next fifteen minutes it propagates outward by hops into the memory files of nearby pedestrians, with the radius growing each hop, up to a bounded number of people.
You come back an hour later, walk two blocks over, and speak to a complete stranger you have never met.
They already know.
-===========================================================-
LOGGING & DIAGNOSTICS
-===========================================================-
v4.3 produces detailed logs for testing and support, covering:
- bridge startup and handshake,
- Gemini session readiness and reconnect behaviour,
- microphone lifecycle and stale packet rejection,
- STT transcript lifecycle,
- vision capture and send flow,
- PCM chunks, bytes and RMS activity,
- lip-sync start and stop,
- spatial audio calculations and cabin muffling,
- the numbered target roster and handle locking,
- negotiation chronology and scene commitment,
- action receipt, namespace repair, normalization, execution, blocking and deduplication,
- LS Episode generation, cache source, prop attachment, transitions and outcomes,
- scheduler safe-window reasons,
- money transaction verification,
- entity invalidation and scene cleanup,
- and new in 4.3: dispatch gate reasons, heli mutual-exclusion state, news blackout state, crime spree recording, city awareness tiers, faction skin resolution and UI skin release.
When reporting a bug, include the relevant session log section, the debug log section, the exact command you gave, what every NPC said, what physically happened, and what you expected instead. Short clips are extremely useful for physical-action or pathfinding bugs.
-===========================================================-
PUBLIC RELEASE TIPS
-===========================================================-
- Use Story Mode only.
- Keep exactly one active LivingLSAIs DLL.
- Use a stable ScriptHookVDotNet installation.
- Make sure the local bridge can run through Node.js.
- Use your own valid Gemini API key with available quota.
- If you are upgrading and NPC identities feel wrong, clear NPC_MEMORIES.
- Rebind the dismiss key if you drive a lot, since Space is handbrake.
- Avoid switching between many NPCs while a microphone turn is still processing.
- Give moving scene participants a moment to approach naturally.
- Remember that GTA pathfinding can fail in crowded, blocked or unusual geometry.
- Keep logs when reporting a bug.
- New in 4.4: if the adverts ever feel repetitive or come out in the wrong language, delete radio_break_cache.json. The mod rebuilds it on the next boot in your current language.
-===========================================================-
LIMITATIONS & HONEST EXPECTATIONS
-===========================================================-
Living LS AIs connects a generative live model to a dynamic GTA V world, so exact dialogue is not deterministic.
Gemini may occasionally produce no PCM on a scene turn and require a retry, misunderstand unclear speech, choose an unexpected but valid reaction, or be affected by API availability and quota. A "quota exceeded" or 429 line in your log is your own key hitting its free-tier limit, not a mod failure; ambient scenario generation falls back to the cached library automatically and live conversation keeps working.
Google Search grounding is provided as an experimental toggle and defaults to OFF, because grounding support depends on what the live model actually honours.
GTA pedestrians may occasionally fail pathfinding, despawn, be interrupted by world combat, enter traffic danger, or die from unrelated causes. The mod validates physical actions and scene ownership, but it does not replace the entire GTA V pedestrian engine.
The architecture prioritises one foreground voiced interaction while background routines and physical systems continue. It does not promise unlimited simultaneous independent voiced conversations.
Random LS Episodes intentionally use no hand-written local scenario fallback. If Gemini and the valid AI cache are both unavailable, the mod will not invent a scripted replacement incident.
The always-on microphone was removed in v4.3 by request, because it could not reliably distinguish intentional speech from background noise.
Google's Search grounding quota is a separate and much smaller free-tier bucket than normal chat. When it runs out the mod detects it, disables search automatically for that session and carries on talking. You may see one WEB_SEARCH_QUOTA_TRIPPED line in your log per session. It resets at midnight Pacific. This is your key's free tier, not a mod failure.
Rumours degrade as they travel, by design. A story four hops from its source is an unreliable version of what happened, and the NPC telling it is meant to sound unsure about the details. That is the system working, not the model hallucinating.
-===========================================================-
WHO THIS MOD IS FOR
-===========================================================-
Living LS AIs v4.4 is designed for players who want:
- immersive roleplay,
- unscripted stories,
- sandbox chaos,
- AI experiments,
- cinematic encounters,
- memory-driven NPCs who hold grudges,
- a reputation that travels through the city without you,
- a police scanner that actually knows what you did,
- news coverage of your own rampage,
- a car radio that takes real commercial breaks,
- a passenger who heard the same advert you did and has opinions about it,
- social reactions,
- voiced characters,
- physical AI missions,
- dynamic arguments,
- random street episodes,
- and a Los Santos that feels less like a city of cardboard extras.
If you only want a screenshot where an NPC displays one clever sentence, this mod goes far beyond that.
Living LS AIs is designed for the moments after the screenshot:
What does the NPC remember?
Who did they tell?
What did the news say about you?
Will the guy two blocks over already know your face?
-===========================================================-
v4.4 LIVING CITY — MASTER CHANGELOG
-===========================================================-
Radio break cycle
- Added the four-stage radio break: HOST_INTRO, ADS, NEWS, HOST_OUTRO.
- Added 22 written station hosts across 26 supported stations.
- Added a three minute default interval, configurable with RadioBreakMinutes.
- Added RadioBreakCycle to turn the whole system on or off.
- Added a ten second pre-roll warning with N to skip.
- Chained the stages on socket close rather than on timers, so a slow stage cannot overlap the next one.
- Added live web search so adverts reference what is genuinely trending today.
- Added an explicit ban on narrating the search out loud.
- Added the radio break content cache: six ads and six bulletins, up to twenty, capped at 60 KB.
- Made the cache append rather than overwrite, so leftovers carry across sessions.
- Primed the cache at boot and refilled it after every break over the REST endpoint.
- Added a fifth chatbox skin for advert breaks with its own emblem.
Shared listening
- Added shared break context: the real advert and news text enters a passenger's head.
- Gated it to NPCs who genuinely shared the vehicle cabin, plus lift drivers.
- Added a five minute freshness window.
- Capped stored copy at 700 characters per stage.
- Forbade the NPC from claiming to have heard anything not actually broadcast.
Ad pause and conversation priority
- Added automatic ad pause that holds an open conversation instead of ending it.
- Kept the NPC, the history and the warm bridge session through the pause.
- Added an on-screen prompt when the mic or text key is pressed during a break.
- Throttled that prompt so holding a key cannot spam the feed.
- Made dispatch, the air unit and ambient barks stand down while a conversation is live.
- Deliberately exempted ads and news from that gate.
- Removed the wanted-level block that made a break impossible during a chase.
Anti-repetition and language
- Added a banned list of existing cached copy shown to the writer.
- Added a rotating creative brief: eight angles and twelve lead brands.
- Banned worn-out advert openings by name.
- Capped video-game references to one advert per batch.
- Added a similarity filter that rejects near-duplicate copy on the way into the cache.
- Passed the player's language into the cache writer, which never received it before.
- Made the cached reader translate English copy already sitting on disk.
New tags
- Added [ENTERCAR] / [GETIN] / [GETINCAR], the first general vehicle boarding tag.
- Added [ROBSTORE] / [ROBSHOP] with 16 mapped store locations.
- Added [SNIPEKILL@n] for a specific numbered target at range.
- Rewrote [LEANONCAR] to target a point outside the bumper and pin the car while the ped settles.
Content
- Expanded to 612 NPC names, 106 moods, 124 backstories and 42 jobs.
- Expanded to 26 radio stations and 16 news segment types.
- Verified all 55 scenario props against the game's own prop list.
Engineering
- Added scopecheck.py, which catches cross-class static calls before they reach a compiler.
- Added shadowcheck.py, which catches local variable shadowing.
- Grew the automated regression suite to 706 tests, all passing.
- Every bug fix in this release ships with a test that fails on the old code first.
Bug fixes
- Fixed NPC money never reaching your wallet: a bogus pickup hash, a swallowed exception and a silent no-op in the SHVDN money setter.
- Fixed NPC identity changing between sessions by fingerprinting appearance instead of the recycled ped handle.
- Fixed saved memory never loading by removing the name from the memory file key.
- Fixed rumours never spreading: the eligibility check tested for a filename that no longer existed.
- Fixed FlyLo FM by correcting the station name to RADIO_14_DANCE_02.
- Fixed bike lifts being refused by a collapsed ternary that rejected vehicle class 8.
- Fixed newly added moods being unreachable behind a hardcoded index ceiling of 59.
- Fixed the 0xc0000005 shop-routine crash by making the face-hold watchdog release to all sixteen owning systems.
- Fixed a suited Michael being announced as naked by making clothing detection model-aware.
- Fixed the chatbox vanishing after two seconds: the panel watchdog never reset the timestamp it is judged by.
- Fixed chatbox text truncating past 396 characters by capping at four components on a word boundary.
- Fixed [LEANONCAR] launching cars into the sky.
- Fixed the radio break playing 85 chunks of silence by claiming the audio lane.
- Fixed music returning mid-break by extending the duck across the next stage's generation window.
- Fixed music dying for an entire chase with an absolute 25 second duck ceiling.
- Restored the Q radio wheel, which the permanent duck had also disabled.
- Fixed NPCs never remembering the radio break bulletin by seeding city awareness from the news stage.
- Fixed repeated adverts with a banned list, a rotating brief and a similarity filter.
- Fixed adverts always being English by passing the language to the cache writer.
- Fixed the no-response death spiral caused by closing sockets that were still in setup.
- Fixed the Los Santos Customs menu locking up during a break by not suppressing the N key.
- Fixed the rebindable dismiss key being read behind sixteen early returns.
- Fixed the anchor narrating its own web search on air.
- Fixed commercials displaying the LSPD air unit badge.
- Fixed shop routines drifting off topic by giving each routine a single stated purpose.
- Fixed traffic drivers being hijacked into scenes and exiting mid-road.
- Fixed the radio break aborting itself one second after starting by teaching the station guard about RADIO_36_AUDIOPLAYER.
-===========================================================-
v4.3 NEON GLASS — MASTER CHANGELOG (previous release)
-===========================================================-
Interface
- Added the Neon Glass renderer with 15 ordered layers.
- Replaced the multi-spawn overlay with one persistent panel.
- Added 5 presets: Cinematic, Compact, Minimal, Ghost, Custom.
- Added 7 colour themes including Mood Auto and Rainbow.
- Added 4 anchor positions.
- Added adjustable scale and opacity.
- Added live preview while scrolling the settings menu.
- Added automatic aspect-ratio correction for ultrawide displays.
- Added auto-fit panel height from measured text width.
- Added the dual 14-bar microphone and voice waveform.
- Added the dimmed in-panel "YOU said" transcript row.
- Added friendship pips, faction chip, header status dot and action-flash toast.
- Added police, news and air-unit broadcast styling.
- Added a lift ribbon showing the active destination.
- Replaced 30-per-second audio lock polling with a lock-free volatile mirror.
- Added a headshot texture guard against a rare d3d11 crash.
- Kept the legacy renderer available behind a configuration switch.
Faction identity
- Added 29 faction skins.
- Mapped 186 pedestrian models to those skins.
- Added faction chip labelling in the panel.
- Cleared lingering faction colour when a radio transmission starts.
City broadcast systems
- Added the AI police dispatch engine.
- Added live wanted level, crime type, street, zone and direction reporting.
- Added dispatch gating, throttling and skip-reason diagnostics.
- Added the LSPD air unit helicopter loudspeaker with its own voice.
- Added air-unit priority above ground dispatch.
- Added the Weazel News crime spree recorder.
- Added automatic dossier broadcast about a minute after a confirmed escape.
- Added ESCAPED, BUSTED and WASTED outcomes.
- Added in-game radio ducking and restoration.
- Added a news blackout window around a bulletin.
- Added a watchdog so a bulletin can never hang on "Generating..."
- Added the four-lane audio arbiter for NPC, News, Dispatch and Heli.
- Added centre-locked positioning for radio transmissions.
- Added relevance expiry for stale queued barks.
- Set proactive barks to default OFF.
City awareness
- Added the tiered awareness engine with a 20 minute lifetime.
- Added the AWARE tier that answers only when asked.
- Added the VOCAL tier at roughly 8 percent, delayed and hard-capped at 3 per broadcast.
- Added the RECOGNIZER tier at roughly 50 percent when identity is public.
- Added permanent per-NPC lockout after they discuss it once.
- Made awareness knowledge instant while keeping unprompted mentions paced.
- Extended awareness into NPC-to-NPC linked scenes.
Memory v3
- Added exponential grudge decay with per-event weights.
- Added tracked debts in both directions.
- Added gossip seeding and multi-hop spread into other NPCs' memory files.
- Added a freshness window and a per-event spread cap.
- Kept full backward compatibility with v2 memory files.
- Fixed memory persistence.
Configuration and control
- Added the Custom Rules file with template auto-creation.
- Added comment support, minimum-length activation and an 8000 character cap.
- Delivered custom rules to all five AI sockets.
- Retired the old prompt-replacing override.
- Added the four-step AI Thinking Level dial with localised pros and cons.
- Fixed the hard-coded zero thinking budget across five sockets.
- Added model-family detection for the correct thinking parameter form.
- Added the Google Search grounding toggle, default OFF.
- Added the rebindable DismissKey INI setting.
- Added the Credits and Community menu hub.
- Removed the always-on microphone by request.
Language
- Added German.
- Fixed roughly 275 notification strings that only resolved in English or Portuguese.
- Replaced the passthrough translation helper with a proper runtime lookup.
- Localised menu items, descriptions and notifications across all eight languages.
New tags and behaviours
- Added [OPENWINDOW] and [CLOSEWINDOW] with real cabin filter response.
- Added [STANDONONELEG].
- Added [STOPFOLLOWING] self-initiative through prompt law only, with zero keyword detectors.
- Added [LIFT_PLAYERDRIVE] and [LIFT_GIVEBACKDRIVE].
- Restored [FIGHTENEMY], which had been silently dead.
- Added vehicle cabin muffling with a low-pass filter.
Bug fixes
- Fixed the Beverly identity collision with a story-category gate and a whole-word matcher across 117 call sites.
- Fixed NPCs narrating combat while standing still by setting combat ability, movement and range explicitly.
- Fixed NPCs fleeing after accepting a fight by assigning proper enemy relationship identity instead of leaving the player classified as a threat.
- Added an immediate hard task clear instead of a soft abort in the combat reassert loop.
- Added anti-flee combat attributes and per-tick enemy identity re-assertion.
- Extended the combat lock window.
- Fixed the Space bar dismiss conflict with jump and handbrake.
- Removed the "wait until audio ends" dismiss gate.
- Fixed the beer and weed errand scam with a hard prompt law on which errands physically exist.
- Fixed NPCs refusing to fight alongside the player during shootouts.
- Fixed voice conversations silently stopping until Backspace was pressed.
- Fixed audio flicker caused by waveform lock contention.
- Fixed Backspace doing nothing while the Settings menu was open.
- Fixed NPCs never ending a follow on their own initiative.
- Fixed [WAVE] never playing by removing a multiplayer-only animation dictionary.
- Raised animation load budgets.
- Fixed the lift driver never exiting and the fare never settling.
- Moved lift fare charging from ride start to ride completion.
- Fixed the driver jacking a nearby vehicle after a drop-off.
- Fixed a mobile phone being counted as a weapon.
- Removed the smog rant that only applied to graphics-modded games.
- Fixed an auto-convo NPC holding the bridge hostage.
- Fixed the missing dispatch open event in the bridge.
- Fixed a news blackout sticking for three minutes.
- Fixed the episode director stalling while the player ragdolled on a bike.
- Fixed the Weazel timeout racing its own audio arrival.
- Throttled a world-event spacing log that fired 33 times per second.
- Removed an unreferenced goto label and cleaned up write-only variables.
- Added PCM jitter cushioning to remove playback flicker on short chunks.
-===========================================================-
IMPORTANT
-===========================================================-
Single-player only.
Do not use Living LS AIs in GTA Online.
Back up your game and mod setup before installing major updates.
Never share your private API key in screenshots, logs, Discord messages or public bug reports.
No API key is bundled with this mod, and none ever will be. Create your own free Gemini key. It takes about a minute and it stays yours.
-===========================================================-
DISCORD / COMMUNITY / BETA TESTING
-===========================================================-
For updates, support, installation help, testing news, community discussion, bug reporting, beta opportunities, future previews and release announcements, join the Living LS AIs community:
https://discord.gg/NnQhARUbp9
GTA5-Mods page:
https://www.gta5-mods.com/scripts/livinglsais-0706c201-ba7c-4e19-9c70-d77db561f835
YouTube:
https://www.youtube.com/@ZEXIVA77
When applying for beta testing, provide your PC specifications, your GTA V version, your ScriptHookVDotNet version, whether you can reproduce bugs reliably, whether you can provide logs and clips, and why you want to help test unstable builds.
Good beta testing is not only playing early. It means trying strange commands, testing different personalities, checking physical action ownership, interrupting scenes, cancelling episodes, testing crowded locations, testing vehicles and interiors, causing crime sprees to test the broadcast systems, reporting exact reproduction steps and keeping useful logs.
Special thanks for v4.4
Dzinu — for the report that an invited NPC could agree to come along and then simply never get in the car, and for the separate one about an armed NPC never reaching the store he had agreed to rob. Both turned out to be missing action tags rather than broken behaviour. [ENTERCAR] and [ROBSTORE] exist because of those two messages.
Vampire — for "while playing with Michael everyone seems to think I'm naked", which was a regression introduced by v4.4's own clothing-awareness feature. Reported clearly enough that the root cause was obvious once somebody actually looked: drawable 0 means the model's first outfit, not no clothes. Also for confirming the radio adverts landed, which mattered more than it sounds.
indragon99 — for testing on Enhanced, which nobody else was able to do, and for pushing on the truck explosion issue until the real cause surfaced.
impoliceofficer — whose v4.3 reports are still shaping this mod. Several v4.4 fixes are downstream of investigations that started with those logs.
Maciel — for the report that a saved NPC did not remember the last conversation, which led straight to the memory key bug.
Anyiiikunnn — for getting addon peds working on Enhanced and documenting how, and for the API quota question that clarified how key rotation is presented.
Everyone who filed a report with a log attached rather than just "it doesn't work."
Special thanks for v4.3
impoliceofficer, whose detailed reports produced six of the twelve fixes in that release, including the observation that the identity bug scaled with the number of memory files. That single detail is what led to the actual root cause.
T0XiQ96, who requested German. It is in.
-===========================================================-
CREDITS
-===========================================================-
Living LS AIs
Created by Zexiva
Creator, main developer, system designer, gameplay designer, prompt and episode architect, integration developer, and project lead.
Legacy & Special Credits
AbirTheLegend — legacy and special credit preserved for support, ideas, testing, feedback and contributions connected to the project's development history.
Murilo Walker — credit preserved with the Living LS AIs project, for major contributions and the three-NPC scene work.
Community — thank you to every beta tester, supporter, log collector, clip creator, bug reporter and community member who helped break unstable builds and improve them. Every stable system exists because somebody tested the version where it was not stable yet.
AI / API
Google Gemini and Gemini Live — the main modern live AI route used for direct conversation, native voice, microphone transcription workflow, visual context, linked NPC scenes, AI-generated LS Episodes, the police dispatch, news anchor and air unit voices, and in v4.4 the entire radio break cycle: its station hosts, its commercials and its news bulletins.
Groq — credit preserved for optional provider support and earlier multi-provider experimentation where included.
UnrealSpeech — credit preserved for optional and alternate TTS experimentation where included.
OpenAI Whisper — credit for earlier speech-to-text development paths. Not the main modern Gemini Live route, but part of the project's development history.
Local Bridge / Runtime
Node.js — provides the runtime foundation for the local Gemini Live bridge, enabling persistent WebSocket communication, live audio transport, microphone stream transport, image transport, action-tag streaming, scene session management, random Episode generation, broadcast voice generation, the radio break cycle and cache communication.
ws — the WebSocket implementation used by the bridge. It is bundled inside the download, so you never need to run npm install.
GTA V Modding Foundation
Alexander Blade — ScriptHookV
crosire and the ScriptHookVDotNet contributors — the ScriptHookVDotNet ecosystem
justalemon — LemonUI
Newtonsoft.Json — JSON handling
NAudio — audio playback and processing support
Microsoft .NET and the C# ecosystem — scripting and runtime foundation
Respect to the Community
Huge respect to the GTA V single-player modding community. Living LS AIs exists because of years of shared tools, documentation, experiments, reverse engineering, testing, and players who keep pushing Los Santos beyond its original limits.
-===========================================================-
FINAL NOTE
-===========================================================-
Living LS AIs v4.2 made a conversation into an episode.
Living LS AIs v4.3 made that episode into a consequence.
Living LS AIs v4.4 makes that consequence into something you and an NPC sat through together.
The NPCs can still notice, speak, remember, judge, negotiate, accept, refuse, travel, select real people, carry physical objects, change body states, react to danger, perform conditional missions, create independent incidents and produce a real outcome.
Now the city itself joins in.
A dispatcher reads out your street. A helicopter calls your position. A news anchor summarises your worst afternoon and your car radio gets quieter so you can hear it. A pedestrian two blocks away already knows what you did, because someone told them. And the guy you shot at last week has not forgotten, and will not for about two more weeks.
And now, every three minutes, the radio takes a break — and the woman in your passenger seat heard the same stupid advert you did, and she has opinions about it.
A pedestrian is no longer only a pedestrian.
They can become a witness, a friend, a coward, a criminal, a negotiator, a driver, a customer, a target, an accomplice, a scene partner, a source of gossip, someone who recognises your face from the news, someone who gets in your car and complains about the radio, or the main character of the next completely unscripted Episode.
Living LS AIs v4.4 — LIVING CITY
The city was already talking. Now it is on the air, and somebody is listening with you.
Real AI Lives, a Radio That Broadcasts About You, and NPCs Who Sit in Your Car and Listen
By Zexiva
v4.3 made the city look alive. v4.4 makes it behave alive.
-===========================================================-
OVERVIEW
-===========================================================-
Living LS AIs is a full open-world AI overhaul for Grand Theft Auto V that turns normal pedestrians into reactive, memory-driven, voice-enabled AI characters capable of speaking, remembering, negotiating, travelling, fighting, surrendering, helping, refusing, creating trouble, holding grudges, spreading rumours about you, and interacting physically with each other.
Living LS AIs v4.4 is called:
LIVING CITY
v4.3 was NEON GLASS. It rebuilt how the mod looked and gave Los Santos a police scanner and a news anchor. v4.4 is about what happens in the gaps between all of that.
v4.4 does four things at once:
1. It gives your car radio a real commercial break. Every three minutes the station you are listening to cuts away. The DJ hands over in character, two or three adverts play, Weazel News reads the headlines, and the DJ comes back. Four chained live AI sessions, twenty-two written station hosts across twenty-six stations, and adverts built around whatever is genuinely trending in the real world today.
2. It puts the NPC in your passenger seat inside that moment with you. If somebody is riding with you when the break plays, they heard the actual adverts and the actual bulletin — the real text, not a summary. Afterwards you can ask them what they thought, and they will tell you.
3. It stops the systems that used to talk over you. While you are genuinely mid-conversation, the police dispatcher, the air unit and ambient pedestrian chatter all stand down. Ads and news are deliberately exempt, because those are not talking to you — they are playing on the radio you are both listening to.
4. It closes twenty-six bugs. Not with workarounds. Each one was traced to the exact line that caused it, and each one ships with a regression test that fails on the old code first and passes on the new. If a fix cannot prove the bug existed, it is a guess, not a fix.
Nothing from v4.3 was removed.
Neon Glass, the 29 faction skins, police dispatch, Weazel News, the LSPD air unit, Memory v3 with grudges and gossip, the Custom Rules file, the AI Thinking Level dial, eight menu languages, LS Episodes, two-NPC and three-NPC linked scenes, mission contracts, commitment locking, the numbered target roster, action ownership, the validated action system, the stop-command family, the random world director, the 40 behaviour modes, drag races, lifts, homies, shopping routines, dog commands, vision, spatial audio and every diagnostic remain fully present and were extended.
This is not a basic chatbot overlay.
This is not a collection of preset "funny NPC lines."
This is not an illusion where an NPC says "I am aiming at him" while physically standing idle.
This is a city where a pedestrian can remember that you shot at them two weeks ago, tell their friends about it, hear your name on the news, and then sit in your passenger seat and complain about the advert that just played.
-===========================================================-
THE BIG v4.4 IDEA: THE CITY IS ON THE AIR
-===========================================================-
In v4.3 the world reported on you. In v4.4 the world is playing in the background whether you are the subject or not, and you can talk to the people listening to it with you.
Get in a car, turn the radio on, and roughly every three minutes this happens without you doing anything:
- A ten second warning appears. Press N and the whole break is skipped.
- Your station host — the actual host of the actual station you are on — hands over to the break in character.
- Two or three adverts play for Los Santos businesses. At least one is built around something genuinely trending in the real world right now, because the mod searched for it.
- Weazel News reads two real world headlines, reported accurately, delivered as pure Weazel satire. If you have recently caused a crime spree, that goes out first, from the confirmed police dossier.
- The DJ comes back, throws one dismissive line at what just aired, and the music returns.
And if somebody is in the car with you, they were there for all of it.
-===========================================================-
WHAT MAKES v4.4 DIFFERENT FROM v4.3
-===========================================================-
v4.3 was about presentation and consequence.
v4.4 is about continuity, shared experience, and honesty about bugs.
CONTINUITY
The radio break runs on a real cycle. It survives a police chase. It survives an open conversation. It caches its own content ahead of time so a break starts speaking in about two seconds instead of twenty-five. It carries leftover content across game sessions.
SHARED EXPERIENCE
For the first time, an NPC and the player have both experienced the same thing at the same time, and both remember it. That is what the passenger-seat listening system is. It is not the NPC being told there was an advert. It is the NPC having the advert text in their context.
HONESTY
Twenty-six bugs, each with the actual root cause published. Several of them were things the code claimed to do and did not. One comment in the codebase said the blast protection was re-applied every scan; the line underneath made it run exactly once, forever. Another said scene ownership always wins; the check was never written. Those are in the changelog by name.
-===========================================================-
v4.4 BRAND-NEW FEATURE HIGHLIGHTS
-===========================================================-
The largest new systems and upgrades in LIVING CITY include:
- the radio break cycle, four chained live AI sessions every three minutes,
- 22 written station hosts across 26 supported stations,
- adverts built from a live web search of what is genuinely trending today,
- a ten second pre-roll warning with N to skip the entire break,
- shared listening, so an NPC in your car hears the real advert and news text,
- a five minute window in which they can react to it, quote it or argue with it,
- automatic ad pause that holds an open conversation instead of ending it,
- an on-screen prompt telling you to wait for the break or skip it with N,
- conversation priority, so dispatch, air unit and ambient barks stand down while you talk,
- ads and news deliberately exempt from that gate,
- the radio break content cache, six ads and six bulletins pre-written, up to twenty,
- cache copy authored in your selected language, not English,
- three-layer anti-repetition: a banned list, a rotating creative brief, and a similarity filter,
- a fifth chatbox skin dedicated to advert breaks,
- the new [ENTERCAR] tag, which finally lets an ordinary NPC get into your car,
- the new [ROBSTORE] tag, which walks an NPC to one of 16 real mapped stores,
- a rewritten [LEANONCAR] that no longer launches your car into the sky,
- the new [SNIPEKILL@n] tag for a specific numbered target at range,
- model-aware clothing detection that stops calling a suited Michael naked,
- an absolute 25 second ceiling on radio ducking so a chase cannot mute your music,
- two new developer guards, scopecheck and shadowcheck,
- 706 automated regression tests,
- and twenty-six traced-to-root-cause community bug fixes.
All major v4.1, v4.2 and v4.3 systems remain part of the experience unless explicitly replaced or improved.
-===========================================================-
NEW: THE RADIO BREAK CYCLE
-===========================================================-
Every three minutes, your station takes a break.
It is not a sound file. It is four chained live AI sessions:
HOST_INTRO — the real host of your real station hands over, in their own voice and character. Eight seconds, two sentences maximum. It is a link, not a monologue.
ADS — two or three short commercials, back to back, for Los Santos businesses. Cluckin' Bell, Fleeca, Ammu-Nation, Bean Machine, Sprunk, eCola, Los Santos Customs, Ponsonbys, Burger Shot, Pisswasser and invented ones. One absurd, one aggressive hard sell, one fake customer testimonial. Every advert ends with a rushed mumbled disclaimer admitting something terrible.
NEWS — Weazel News. If you have an unreported crime spree it leads with that, from the real dossier. Then two genuinely current real world stories, reported accurately, with the facts intact and the tone entirely satirical.
HOST_OUTRO — the DJ comes back, insults the break, and puts the music on.
Twenty-two station hosts are written in, including DJ Pooh on West Coast Classics, Big Boy on Radio Los Santos, Jesco White on Rebel Radio, Keith Morris on Channel X, Cara Delevingne on Non-Stop-Pop and Lazlow on WCTR. Twenty-six stations are supported in total.
You get a ten second pre-roll warning. Press N at any point to skip the entire break and go straight back to the music.
Configuration: RadioBreakCycle= turns it on or off, RadioBreakMinutes= sets the interval.
-===========================================================-
NEW: THE ADS ARE ABOUT TODAY
-===========================================================-
Before writing an advert, the mod searches the web for something genuinely trending right now — a viral meme, a big game release, a sports result, internet drama — and builds at least one commercial around a Los Santos business cynically cashing in on it.
This means the adverts age with the real world. A break you hear in six months will not be the same break you hear today.
Anti-repetition is enforced three ways, because the first version of this genuinely did repeat itself:
- The writer is shown everything already in the cache and explicitly forbidden from reusing an opening line, a brand or a punchline from it.
- Every batch is assigned a different mandatory creative angle and a different mandatory lead brand, rotating through eight angles and twelve brands, so two consecutive refills cannot converge even on the same trend.
- Anything that comes back too similar to existing copy is rejected outright by a similarity check before it can ever reach your speakers.
Worn-out openings are banned by name. "Tired of…" is on that list.
-===========================================================-
NEW: THE NPC IN YOUR CAR HEARS IT TOO
-===========================================================-
This is the part that does not exist anywhere else.
If an NPC is sitting in your vehicle when the break plays, the actual advert text and the actual news text enter their context. Not a note saying an advert happened. The words.
Afterwards, for five minutes, they can:
- laugh at how stupid the advert was,
- argue with a headline,
- quote a line back at you,
- complain that the station is nothing but commercials.
They will only bring it up if it fits the moment, and they can never claim to have heard something that was not actually broadcast.
It is gated honestly. Only an NPC who genuinely shared the cabin gets it. Someone standing on the pavement outside your car did not hear your radio, and the mod does not pretend they did. Lift drivers always count, because they are in the car by definition.
-===========================================================-
NEW: AUTOMATIC AD PAUSE
-===========================================================-
If a break starts while you are mid-conversation, the conversation pauses instead of being trampled.
Pauses, not ends. The NPC stays. Your history stays. The session stays warm.
Press your microphone or text key during a break and the mod tells you plainly: wait for the ad to end to talk, or press N to skip it and carry on. The message is throttled so holding the key does not spam your feed.
When the break finishes you simply continue the conversation you were already having.
This works during a lift as well as a normal chat.
-===========================================================-
NEW: CONVERSATION PRIORITY DURING A CHASE
-===========================================================-
Previously, a five star chase meant the police scanner cut across whatever an NPC was saying to you, every few seconds, forever.
In v4.4, while you have a live conversation open — menu open, scene running, recording, typing, awaiting a reply, or riding a lift — three systems stand down:
- the LSPD dispatcher,
- the air unit loudspeaker,
- ambient auto NPC chatter.
They resume the moment you close the conversation with Backspace.
Ads and news are deliberately exempt, because those are not interrupting your conversation. They are the radio, and the person you are talking to can hear them too.
A related bug was found while building this: any wanted star at all used to push the radio break back thirty seconds. A chase lasts longer than thirty seconds, so the timer reset forever and a break could never air during a pursuit. It can now.
-===========================================================-
NEW: RADIO BREAK CONTENT CACHE
-===========================================================-
Ads and bulletins are written ahead of time and stored in radio_break_cache.json next to the scenario cache.
Six of each are kept, up to a maximum of twenty, capped at 60 KB. The file appends and is never overwritten, so unused content carries across game sessions.
The practical effect: a break starts speaking in about two seconds instead of waiting twenty-five for the model to research and write. It is primed at boot and refilled after every break, in the background, over the REST endpoint so it can never interrupt audio you are listening to.
In v4.4 the cache is also written in your selected language. In the first build it was always authored in English regardless of your setting, because the language lock had been applied to the component that reads the copy rather than the one that writes it. Both now carry it, and copy already sitting in the file in English is translated as it is read.
-===========================================================-
NEW & IMPROVED TAGS IN v4.4
-===========================================================-
[ENTERCAR] / [GETIN]
The NPC walks over and physically gets into your car. Until v4.4 there was no general boarding tag at all — the only one that existed was gated behind an NPC already being a homie, which is why inviting an ordinary pedestrian along resulted in them agreeing enthusiastically and then standing on the pavement.
It picks a free passenger seat, never takes the driver seat while you are driving it, re-issues the task if they snag on a kerb, and gives up cleanly with a stated reason rather than leaving somebody walking into a wall forever.
[ROBSTORE] / [ROBSHOP]
Talk an NPC into robbing a shop and they walk to a real, mapped store and hold it up at gunpoint. Sixteen verified locations across 24/7, LTD Gasoline and Rob's Liquor. The clerk puts their hands up.
The walk is re-issued every eight seconds while they are still travelling, because ambient events love to eat a movement task. If you already handed them a weapon, they keep it — the mod only arms an NPC who is genuinely unarmed.
[LEANONCAR]
They walk to your car and lean on the front. Rewritten in v4.4 to target a point outside the bumper and hold the car still while they settle, because the old version teleported the ped inside the collision shell and the physics engine resolved that by launching your car into the sky.
[SNIPEKILL@n]
Take out a specific numbered person from the live roster at range. Distinct from a generic kill order, which picks whoever is nearest and usually ends in a fist fight.
-===========================================================-
THE v4.4 BUG HUNT — TWENTY-SIX ROOT CAUSES
-===========================================================-
Every one of these has a regression test that reproduces the original failure on the old code before proving the fix.
1. NPC gives you money and your balance never changes.
Three faults stacked. The pickup hash 0xFE3CE0F6 was not a real hash. The fallback path swallowed its own exception so it never ran. And ScriptHookVDotNet's Player.Money setter has a default: return; — it silently writes nothing at all on any model that is not Michael, Franklin or Trevor.
2. "Yesterday he was Frankie, today the same guy is Mario."
Identity was seeded from new Random(npc.Handle). A ped handle is a recycled pool slot, not a person. When a ped despawns the engine hands that same number to somebody completely different minutes later. Identity is now fingerprinted from appearance.
3. Saved NPCs greeted you like a stranger.
Memory files were keyed {modelHash}_{nameSlug}.json. The moment the name changed, the file could never be found again.
4. Rumours never spread.
The gossip system existed and did nothing. Its eligibility check tested for a {modelHash}.json filename that no longer existed after the memory rewrite, so every single pedestrian was skipped.
5. FlyLo FM never tuned.
The code sent RADIO_14_SAMPLED. The real station name is RADIO_14_DANCE_02.
6. Asking for a ride on a motorcycle always failed.
A collapsed ternary explicitly rejected vehicle class 8, which is Motorcycle.
7. New moods never appeared.
106 moods in the pool, the same dozen in play. The personality index lists were hardcoded with a maximum index of 59, so everything added after that was unreachable.
8. Hard crash, 0xc0000005, roughly thirty seconds into a shop scene.
The face-hold watchdog's own comment claimed scene ownership always wins. The check was never written. One ped ended up owned by the watchdog, the shop routine and the scene simultaneously, and CLEAR_PED_TASKS fired on it every 900ms for thirty seconds while the scene ran its own task sequence on the same ped. The task tree was torn out from under its own pointer. The test reproduced 34 destructive clears on the old code and 0 on the new.
9. "Playing as Michael and everyone thinks I'm naked."
Clothing detection read drawable 0 on components 11 and 4 and called it undressed. That is true on a freemode body and false on every protagonist — Michael's stock outfit is 0/0. Nudity is now only inferred on models where drawable 0 provably is the bare body. The old logic misfired on 31 of 961 tested combinations.
10. Chatbox vanished two to three seconds after appearing.
The 45 second panel watchdog called its recovery routine, and that routine never reset the timestamp it is judged by. Anything that re-opened the panel matched the stale timestamp instantly and got killed again on the next frame. One log showed 120 force-releases in 40 seconds.
11. Chatbox truncated past roughly 380 characters.
The text command has exactly four slots of 99 characters, a hard ceiling of 396. The push loop added a fifth component, which malforms the command, and the engine drew nothing at all.
12. LEANONCAR launched cars into orbit.
The ped was teleported to a point inside the car's collision shell. Physics resolved the overlap with a separating impulse.
13. Radio break played 85 chunks of silence.
The break never claimed the audio lane, so gain stayed at 0.0 for the entire transmission.
14. Music returned in the middle of a break.
The duck was held for the audio that had just played, about 3.8 seconds, but the next stage takes 15 to 30 seconds to generate. The hold expired in the gap.
15. Music died for an entire chase, and Q stopped opening the radio wheel.
Every dispatch call pushed the duck ceiling forward by twenty seconds. During a pursuit they fire faster than that, so the ceiling was shoved forward indefinitely. One log showed 51 unbroken seconds of silence. The wheel died with it, because it cannot open on a vehicle whose radio is disabled. There is now an absolute 25 second cap regardless of how many transmissions stack up.
16. NPCs never remembered the Weazel bulletin.
City awareness was wired to the standalone bulletin only. The radio break news stage never called it. Four breaks aired in one test session and not one awareness seed was written.
17. The same advert twice in a row.
Every cache refill used an identical prompt, found the same trend and wrote the same joke, with no knowledge of what was already cached.
18. Adverts always in English regardless of language setting.
Three code paths, and the one missing the language lock was the one that writes the cached copy. It authored in English, and the reader was then instructed to read it word for word — which beats a language lock aimed at the reader.
19. The "no response" death spiral, where once it broke it stayed broken.
The session closer ran unconditionally on every start, killing sockets that were still in setup.
20. Los Santos Customs menu locked up during a break.
The N skip key used SuppressKeyPress, starving the shop menu of the same input.
21. The rebindable dismiss key did nothing.
It was read at the bottom of the key handler, behind sixteen early returns.
22. "Let me look that up" broadcast live on air.
Nothing forbade the anchor from narrating their own research. There is now an explicit ban list on every broadcast prompt.
23. Commercials displayed the LSPD air unit badge.
The avatar emblem block had no branch for the advert skin, so it fell through to the helicopter badge.
24. Shop scenes drifted off topic.
"You got any food?" produced a lecture about the weather, because routines inherited the player's last direct line. Each routine now states its single purpose and bans small talk outright.
25. Traffic drivers were hijacked into scenes and got out mid-road.
No driver guard existed, and the scene called TASK_LEAVE_ANY_VEHICLE on whoever it picked.
26. The radio break killed its own audio one second after starting.
Disabling the vehicle radio makes GET_PLAYER_RADIO_STATION_NAME return RADIO_36_AUDIOPLAYER. The station-change guard read that as the player switching station and aborted the break it had just started.
-===========================================================-
CONTENT IN v4.4
-===========================================================-
- 612 NPC first names, 308 male and 304 female
- 106 mood states
- 124 backstories
- 42 job types
- 26 radio stations with 22 written station hosts
- 16 news segment types
- 55 verified scenario props, every one checked against the game's own prop list
- 29 faction skins from 186 mapped pedestrian models
- 40 behaviour modes
- 20 named lift destinations
- 16 mapped robbable store locations
- 14 scene languages, 8 fully localised menu languages
- 706 automated tests, all passing
-===========================================================-
TRY THIS FIRST IN v4.4
-===========================================================-
1. Get in a car and turn the radio on.
2. Drive for a few minutes. When the break warning appears, do not skip it. Listen to the whole thing.
3. Now find a pedestrian, ask them to get in, and drive off.
4. Wait for the next break. Let it play with them in the car.
5. When the music comes back, ask them what they thought of the adverts.
They were there. They heard it.
-===========================================================-
THE BIG v4.3 IDEA: THE CITY TALKS BACK (previous release)
-===========================================================-
Earlier versions made individual pedestrians intelligent.
v4.3 makes the city itself a participant.
Previously, everything the AI produced was aimed at you: an NPC spoke to you, a scene played out in front of you, an episode involved people standing near you.
In v4.3 there are now systems that talk about you instead of to you.
Cause a serious crime spree and the following can happen without you speaking to a single person:
- A police dispatcher reads your crime, your street, your zone and your last known direction over the scanner in a clipped radio cadence.
- A helicopter unit with its own separate personality calls your position from above.
- After you escape and stay clean, a completed dossier of everything you did becomes one real Weazel News bulletin that interrupts your car radio and then restores the station volume afterwards.
- Every pedestrian in the city now silently knows that story for roughly twenty real minutes.
- Roughly eight percent of them are allowed to bring it up naturally, but only from the second conversational turn onward, and only three per broadcast, so it stays a rare surprise instead of a citywide chant.
- If you were busted or killed, your identity became public, and around half of nearby pedestrians can recognise your face and react: flee, insult you, or call 911.
- Every NPC who has already told you the story is locked out forever, so nobody repeats the same news at you twice.
That is a full loop: you act, the world records it, the world broadcasts it, and the world remembers it.
-===========================================================-
WHAT MAKES v4.3 DIFFERENT FROM v4.2 (previous release)
-===========================================================-
v4.2 was about conversations becoming episodes.
v4.3 is about consequence, presentation, and reliability.
The three headline changes:
CONSEQUENCE
Crime spree recording, police dispatch, Weazel News, air unit, city awareness, grudge decay, debts and gossip mean your actions now leave a trail through the world that outlives the conversation that started it.
PRESENTATION
The Neon Glass renderer replaces a panel that used to despawn and respawn up to four times in a single turn. It is now one persistent panel that changes its own contents, with a real dual waveform, a transcript of what your microphone actually heard, and colours that identify who is talking.
RELIABILITY
Twelve reproducible bugs from the community thread and fresh session logs were traced to root cause and fixed, including the long-standing "NPC accepts a fight then runs away" problem, which turned out to be a relationship-group issue rather than a combat issue.
-===========================================================-
v4.3 FEATURE HIGHLIGHTS (previous release, all still active)
-===========================================================-
The largest new systems and upgrades in NEON GLASS include:
- Neon Glass UI engine with 15 render layers,
- 5 panel presets: Cinematic, Compact, Minimal, Ghost, Custom,
- 7 colour themes including Mood Auto and a live Rainbow HSV cycle,
- 4 anchor positions and adjustable scale and opacity,
- live preview while you scroll the settings menu,
- automatic aspect-ratio correction for ultrawide and super-ultrawide monitors,
- auto-fit panel height measured from real text width,
- zero-flicker single-panel state machine,
- dual 14-bar rolling waveform showing your microphone and the NPC voice separately,
- an in-panel dimmed transcript row showing what your microphone actually heard,
- lock-free volatile audio mirror that removed a 30-times-per-second lock fight,
- 29 faction skins mapped from 186 pedestrian models,
- dedicated broadcast styling for police, news and air unit transmissions,
- AI police dispatch engine reading live wanted level, crime, street and direction,
- Weazel News crime spree recorder and automatic bulletin,
- LSPD air unit helicopter loudspeaker with its own voice and personality,
- a four-lane audio arbiter so NPC, News, Dispatch and Heli can never overlap,
- in-game radio ducking to roughly ten percent while an anchor speaks,
- vehicle cabin muffling with a real low-pass filter,
- the new [OPENWINDOW] and [CLOSEWINDOW] tags that physically roll a window and open the filter,
- the new [STANDONONELEG] tag,
- the new [STOPFOLLOWING] self-initiative behaviour,
- the new [LIFT_PLAYERDRIVE] and [LIFT_GIVEBACKDRIVE] driver-swap tags,
- Memory v3 with exponential grudge decay,
- tracked debts in both directions,
- gossip that writes into other NPCs' memory files and spreads by hops,
- the city awareness engine with tiered aware / vocal / recogniser behaviour,
- a Custom Rules text file appended to every NPC prompt across all five AI sockets,
- an AI Thinking Level dial with four steps and written pros and cons,
- a Google Search grounding toggle,
- German language support, bringing the total to eight,
- a rebindable dismiss key,
- a public-release Credits and Community menu hub,
- lift fare charged only on a completed ride,
- and twelve traced-to-root-cause community bug fixes.
All major v4.1 and v4.2 systems remain part of the experience unless explicitly replaced or improved.
-===========================================================-
COMPLETE FEATURE MAP — LIVING LS AIs A TO Z
-===========================================================-
This is the quick A-to-Z map of the complete Living LS AIs experience in v4.4. Every item is explained in greater detail later in this description.
A — AI Conversations, Actions, Auto Reactions & Airwaves
- Real Gemini Live conversations.
- Text and microphone input.
- Streamed native voice output.
- Validated physical action execution.
- Auto NPC Convo reactions to personal space, staring, suspicious following, collisions and social tension.
- AI-generated LS Episodes that can begin without a player command.
- New in 4.4: a full radio break cycle — DJ, adverts and Weazel News — playing on your car radio every three minutes.
B — Behaviors, Bravery, Body States & Broadcasts
- 40 selectable NPC behavior styles.
- Brave, cowardly, moral, criminal, friendly, drunk, savage, disciplined, tourist, hustler and many other personalities.
- Physical body states including hands up, cower, kneel, dance, push-ups, phone, recording, yoga, sitting, sleeping, drinking, smoking, cover and fleeing.
- Dynamic transition and stop controls for persistent states.
- New in 4.4: dispatch, air unit and ambient barks all stand down while you are mid-conversation.
C — Context, Combat, Conditional Contracts & City Awareness
- Location, interior, vehicle, radio, activity, held-item, relationship, visual and witness context.
- Physical aim, shoot, fight, cover, surrender, flee and disengage logic.
- Multi-turn mission contracts with conditional progression after refusal, non-payment, compliance, escape or threat.
- New in 4.4: shared listening context, so an NPC who rode with you through a radio break has the real advert and news text in their head.
D — Direct Talk, Drag Races, Dogs, Diagnostics & Dispatch
- Menuless/direct interaction flow.
- Dedicated drag race system with wagers, vehicle selection, countdown, finish detection, reactions and cleanup.
- Dog commands for movement, tricks, guard, fetch, vehicles and numbered targets.
- Detailed bridge, vision, audio, action, scene, cache and scheduler diagnostics.
- New in 4.4: radio break stage diagnostics, cache dedupe reporting and ad-pause state in the log.
E — LS Episodes & Escape Dossiers
- AI-only persistent random incident packs.
- 11 fresh scenarios requested every session, merged with unused previous ones.
- Maximum 55 unique cached scenarios and 100 KB cache size.
- Physical openings, props, evolving body states, linked voices, structured outcomes and natural cleanup.
- New in 4.4: that same dossier is also read out as the lead item in the news stage of a radio break.
F — Friendship, Follow, Flee & Faction Skins
- Persistent friendship scoring and friend identity.
- Homie/bodyguard-style relationships.
- Follow and stop-following states, and in 4.3 an NPC can decide to stop following you on their own initiative.
- Physical fear and flee reactions.
- New in 4.4: the [ENTERCAR] tag, so an ordinary NPC you invite along actually walks over and gets in.
G — Gemini Live, Grounding, Grudges & GTA Integration
- Persistent Gemini Live WebSocket bridge.
- Native voice and microphone transcription workflow.
- Main-thread GTA native execution.
- Human-only grounded LS Episode pairing.
- No arbitrary AI native names, hashes, animation dictionaries or prop models.
- New in 4.4: adverts and news bulletins are built from a live web search of what is genuinely trending today.
H — Homies, Hands Up, History & Helicopters
- Become-homie and accomplice systems.
- Hands-up/hands-down tactical states.
- Persistent NPC history, conversation count, player-name knowledge and witnessed-event memory.
- New in 4.4: the air unit now holds fire while you are actually mid-conversation with somebody.
I — Identity, Interiors, Interruptions & INI Control
- Canonical story-character identity locks.
- Interior and neighborhood awareness.
- Player microphone interruption during two-NPC and three-NPC scenes.
- Participant invalidation protection.
- New in 4.4: RadioBreakCycle and RadioBreakMinutes in the INI, and a dismiss key that is finally read before the sixteen early returns that used to eat it.
J — Jobs, Judgement & Joined Scenes
- NPCs may accept, refuse, judge, negotiate or demand payment for jobs.
- Accepted jobs become commitment-locked.
- Two-person and three-person joined Gemini scene sessions.
- New in 4.4: the [ROBSTORE] tag, so a shop robbery you talk somebody into physically happens at one of 16 real mapped stores.
K — Key Simplicity & Knowledge
- Gemini-first modern workflow centered around one Gemini API configuration.
- NPC knowledge shaped by personality, memory, world state, vision and canonical relationships.
- API keys remain private and must never be shared in public logs.
- v4.3 position: no shared key will ever be bundled with the script. A shared public key gets rate-limited and banned within hours and then the mod is broken for everybody.
L — Language, Lip-Sync, Lifts & Lanes
- Strict multilingual scene language locking.
- Original stable audio-driven lip-sync.
- Dynamic spatial voice positioning.
- General lifts, waypoint travel and 20 named destinations.
- New in 4.4: the radio break cache is authored in your selected language, and English copy already on disk is translated as it is read.
M — Memory v3, Microphone & Money
- Persistent memory with exponential grudge decay, tracked debts and spreading gossip.
- Bounded history and full backward compatibility with v2 memory files.
- Live microphone streaming with ownership protection.
- Verified money deductions and ordered payment plus scene-start transactions.
- New in 4.4: money from an NPC actually arrives in your wallet, verified against the game's own stat before and after.
N — NPC-to-NPC, Three-NPC & News
- NPC A to NPC B conversations.
- NPC A to NPC B to NPC C group scenes.
- Independent voices, shared transcripts, fair rotation, target ownership, physical actions and player participation.
- Numbered target roster with stable handle locking.
- New in 4.4: the news stage of a radio break now seeds city awareness, which it never did before.
O — Outcomes, Ownership & Occlusion
- Resolved, unresolved and escalated LS Episode outcomes.
- Action ownership prevents the target from copying the executor's commands.
- Session and microphone ownership reject stale packets.
- Spatial audio occlusion and distance filtering.
- New in 4.4: shared listening is cabin-gated, so only an NPC who genuinely sat in your car claims to have heard your radio.
P — Props, Personalities, Physical Performance & Presets
- Validated phones, cameras, wallets, money bags, cash, documents, drinks, food and evidence props.
- 40 personality modes.
- Physical performance rather than dialogue-only narration.
- New in 4.4: a fifth panel skin dedicated to advert breaks, so a commercial no longer wears a police badge.
Q — Queues, Quotas & Quality Controls
- Main-thread action queues.
- Mandatory LS Episodes wait in a safe gameplay queue.
- Gemini quota and API availability handled through cache, retry, key rotation and backoff.
- PCM quality verification before accepting voiced scene turns.
- New in 4.4: the search grounding quota trips cleanly, disables search for that session and lets the conversation carry on.
R — Relationships, Routines, Random Stories & Radio
- GTA story relationship network.
- Ammu-Nation, clothing-store and convenience-store routines.
- Random LS Episodes independent of NPC Routines.
- Radio and vehicle context.
- New in 4.4: radio ducking has an absolute 25 second ceiling, so a long chase can never mute your music or kill the Q radio wheel.
S — Spatial Audio, Shops, Story Characters, Stop Commands & Skins
- Dynamic stereo positioning and distance attenuation.
- Shopping and checkout scenes.
- Michael, Franklin, Trevor, families, allies, rivals and broader story identities.
- Complete semantic NPC-to-NPC stop-command family.
- New in 4.4: a rewritten [LEANONCAR] that leans on your bonnet instead of launching it into the sky.
T — Target Locks, Three-Person Scenes, Transitions & Thinking Level
- Stable numbered target handles.
- Three-person linked scenes.
- Dynamic transitions between cower, stand, flee, yoga, phone, record, aim, dance, sit, sleep and other states.
- New in 4.4: [SNIPEKILL@n] takes out a specific numbered person at range instead of whoever happens to be nearest.
U — Unscripted Incidents & User Freedom
- No hand-written local fallback templates for LS Episodes.
- Player can aim, shoot, reload, use the weapon wheel and melee during supported conversations and scenes.
- Every session can produce a different story pack.
- New in 4.4: an ad break pauses your conversation instead of trampling it, and tells you to wait or press N to skip.
V — Vision, Vehicles & Voices
- Fresh screen-frame visual context.
- Vehicle and window conversations.
- Lift, exit, drive-away, stop-for-player and race systems.
- Independent Gemini voices for linked participants.
- New in 4.4: an NPC riding with you hears your radio, and shared listening works during a lift as well as a normal drive.
W — Witnesses, Weapons, World Awareness & Weazel
- Crime, dead-body, threat and suspicious-action awareness.
- Weapon handoff and persistent weapon ownership.
- Location, time, activity, radio, vehicle and physical evidence awareness.
- New in 4.4: rumours finally spread — the gossip system was silently skipping every pedestrian because of a stale filename check.
X — XML/Legacy Tag Repair
- Repairs validated legacy forms such as and .
- Repairs ordinary scene tags into the NPCTONPC namespace.
- Unknown AI markup remains non-executable.
Y — Your Choices Matter
- Personality and relationship affect acceptance.
- Payment and weapon exchange affect contracts.
- Player interruption can redirect, stop, continue or escalate a scene.
- Target replies determine conditional physical phases.
- New in 4.4: what you sat through on the radio becomes something you and a passenger genuinely share.
Z — Zexiva's Living Los Santos
- A complete single-player AI sandbox where conversations become physical, persistent, voiced Episodes, and where the city broadcasts and remembers what you did.
-===========================================================-
NEW: THE NEON GLASS UI ENGINE
-===========================================================-
The dialogue panel was rebuilt from scratch.
The old panel had a structural problem. It called its show routine separately for listening, transcribing, thinking and reply, which meant the box visibly died and respawned up to four times in a single conversational turn. It also contained 77 hardcoded magic numbers producing exactly one fixed look, and it stretched badly on ultrawide monitors.
Neon Glass is one persistent panel whose contents change.
The renderer draws fifteen ordered layers:
1. Outer bloom.
2. Drop shadow.
3. Three-band glass body.
4. Scanlines at a fixed interval.
5. Left neon spine in three segments running bright to dim.
6. Top and bottom hairlines.
7. Broadcast overlay: a counter-travelling blue and red police siren sweep, a Weazel red lower-third band, or an amber helicopter searchlight sweep.
8. A travelling top-edge shimmer while the system is busy.
9. Corner brackets and right-hand verticals.
10. Footer strip.
11. Avatar with a triple ring.
12. Name badge, friendship pips, faction chip and header status dot.
13. Recording indicator and lift ribbon.
14. The dimmed "YOU said" transcript row.
15. Body text with typewriter caret, footer hint with marching dots, character counter and action-flash toast.
Presets
- Cinematic
- Compact
- Minimal
- Ghost
- Custom
Colour themes
- Mood Auto, which follows the NPC's current mood score
- Cyber
- Sunset
- Toxic
- Royal
- Blood
- Rainbow, which cycles hue continuously
Anchors
- Bottom
- Top
- Bottom Left
- Bottom Right
Scale and opacity are both adjustable, and every change previews live while you scroll the menu rather than forcing you to close it and test.
Aspect-ratio correction is applied on every draw, so 21:9 and 32:9 monitors stop stretching the panel.
Panel height auto-fits from the real measured text width divided by the available column, capped at a sensible maximum, so a two-word reply does not get a nine-line box.
If you prefer the old look, the legacy renderer is still available through a configuration switch.
-===========================================================-
NEW: THE DUAL WAVEFORM IS REAL DATA
-===========================================================-
Under the avatar there are two independent 14-bar rolling histories.
The top row, in blue, is your microphone level.
The bottom row, in the current accent colour, is the NPC's actual streamed voice level.
New samples push in from the right and the history scrolls left. Neither row ever disappears: a silent side flatlines to a thin idle line instead of vanishing, so the panel never visually pops while you talk.
The meter is capped so it cannot burn frames, and it now reads from a lock-free volatile mirror instead of polling the audio buffer roughly thirty times a second. That old polling behaviour was fighting the same lock the PCM writer needed and was a genuine source of audio flicker during replies.
-===========================================================-
NEW: 29 FACTION SKINS
-===========================================================-
186 pedestrian models are mapped to 29 visual identities. When you talk to someone, the panel adopts their faction colours and shows a faction chip.
Gangs and crews
- Ballas
- Families
- Vagos
- The Lost MC
- Marabunta
- Korean Mob
- Triads
- Armenian Mob
- Varrios
Law and government
- LSPD Officer
- Sheriff
- NOOSE / SWAT
- FIB
- Army
- Security
- Inmate
Services
- Paramedic
- Firefighter
- Medical
Social and regional
- Blaine County
- Professional
- Nightlife
- Infected
- Animal
- Transient
- Beach
- Business
- Hipster
- Country
Radio skins are handled separately. Police dispatch, Weazel News and the LSPD Air Unit each get their own broadcast styling, so you instantly know a transmission is not a person standing next to you. A late fix also clears any lingering faction colour when a radio transmission begins, because a Ballas-purple panel labelled LSPD DISPATCH is not acceptable.
-===========================================================-
NEW: AI POLICE DISPATCH
-===========================================================-
A real AI dispatcher now runs on the police band.
The dispatcher receives live world state and reads it back in a clipped radio cadence:
- your current wanted level,
- the type of crime,
- the street name,
- the zone,
- and your last known direction of travel.
It is gated so it cannot spam during an active call, it is throttled with diagnostic logging that records exactly why a transmission was skipped, and it outranks ambient chatter, so a dispatch call is allowed to cut across a random pedestrian bark.
Example:
"All units, we have a 187 in progress on Marathon Avenue. Suspect on foot, last seen heading west."
-===========================================================-
NEW: WEAZEL NEWS BULLETINS & THE CRIME SPREE RECORDER
-===========================================================-
Weazel News does not report random noise. It reports you, accurately, using a recorded dossier.
The crime spree recorder arms at three stars and then records continuously until you are completely clean again:
- peak wanted level,
- police killed,
- civilians killed,
- vehicles exploded,
- shooting events,
- the zone where the spree started,
- every chase zone,
- every shooting zone,
- your escape zone,
- your escape method,
- and the final outcome: ESCAPED, BUSTED or WASTED.
Staying clean for a short confirmation window counts as an escape. About a minute later the completed dossier automatically becomes one real bulletin.
While the anchor speaks, your in-game radio station ducks to roughly ten percent and then restores. Reported dossiers are wiped afterwards so the anchor can never repeat old news, and a watchdog guarantees the bulletin can never sit stuck on "Generating..." forever.
Example:
"We're getting reports of gunfire in Del Perro. More on this as it develops."
-===========================================================-
NEW: LSPD AIR UNIT
-===========================================================-
A police helicopter has its own separate voice and its own personality.
During a pursuit it calls your position from above. Its loudspeaker is deliberately the single loudest thing in the game, and it outranks ground dispatch, because in a real pursuit the chopper takes the lane.
Example:
"Air One has visual. Suspect is in the alley behind the strip mall, still moving."
-===========================================================-
NEW: THE FOUR-LANE AUDIO ARBITER
-===========================================================-
With NPCs, dispatch, news and a helicopter all capable of speaking, the mod needed traffic control.
Four audio lanes are claimed and released explicitly:
- NPC
- News
- Dispatch
- Heli
Two systems can never fight for your speakers mid-sentence. A queued pedestrian bark will not jump the line while LSPD is transmitting; it waits. A bark that was queued twelve seconds ago is discarded if you are already a block away, because it is no longer relevant.
Radio transmissions are also pinned dead centre in the stereo field rather than positioned in 3D space, since a voice coming out of a scanner does not have a physical location in the world.
-===========================================================-
NEW: CITY AWARENESS ENGINE
-===========================================================-
After a bulletin airs, Los Santos remembers it for roughly twenty real minutes.
If every pedestrian opened with "did you hear the news," the mod would be unbearable within three minutes. So awareness is tiered:
AWARE — the overwhelming majority
The story sits in their context. They will never raise it themselves. They only answer if you ask.
VOCAL — roughly eight percent
They may bring it up naturally, and only from the second conversational turn onward. Hard-capped at three per broadcast so it stays a rare surprise.
RECOGNIZER — only when you were BUSTED or WASTED
Your identity became public. Around half of nearby pedestrians recognise your face and react physically: flee, insult you, or call 911.
Every NPC who speaks about it is locked out permanently, so nobody repeats the same story at you.
Knowledge is injected instantly. An earlier build delayed awareness by sixty seconds, which meant that if you asked an NPC immediately after a bulletin they knew nothing. Only the ability to raise it unprompted is delayed now, which is the part that actually needed pacing.
Linked NPC-to-NPC scenes hear the news too, so two strangers can naturally end up discussing something you did.
-===========================================================-
NEW: MEMORY v3 — GRUDGES, DEBTS & GOSSIP
-===========================================================-
NPC memory is no longer a flat friendship score.
Exponential grudge decay
Individual events carry their own weight and fade at their own speed. Being shot at stays in someone's head for roughly two weeks of decay. A plain insult fades in about a day. Everything in between scales smoothly, so a serious betrayal is not forgotten at the same rate as a rude comment.
Tracked debts
Money owed in either direction is stored as its own record. An NPC can be genuinely friendly with you and still want their two hundred dollars back.
Gossip that spreads
When something notable happens it propagates outward to nearby pedestrians and is written directly into their memory files. The radius grows with each hop, up to a bounded number of people per event, inside a freshness window. Walk back an hour later and a total stranger may already know what you did.
Full backward compatibility
Old v2 memory files load without conversion. Nothing you already built with an NPC is lost.
-===========================================================-
NEW: CUSTOM RULES FILE
-===========================================================-
A plain text file whose contents are appended to every NPC prompt.
Location:
scripts/LLAI SERVER/LLAIBridge/LLAI CUSTOM RULES.txt
Behaviour:
- auto-created with a template on first run,
- lines beginning with # are comments,
- needs more than a few real characters before it activates,
- capped at 8000 characters,
- reaches all five AI sockets.
The old /CustomPromptHere: override was retired because it replaced the entire prompt engine and therefore broke every action tag. This one adds to the prompt instead of replacing it.
The parser passed its full test set and was confirmed working in game with a complete "everyone in Los Santos believes they are the strongest person alive" rule set. A sample file ships next to the template.
-===========================================================-
NEW: AI THINKING LEVEL
-===========================================================-
A four-step dial in the menu, with pros and cons written out in your own language so you are not guessing what you just changed.
Minimal — default
Fastest possible reply. Simplest reasoning.
Low
Slightly smarter. Small delay.
Medium
Handles complex requests. Noticeable pause.
High
Deepest reasoning. Slowest, and it does break conversational flow.
Why this needed fixing: the bridge was hard-coding a thinking budget of zero into five different sockets, and it was using the wrong parameter family entirely for the newer model generation, which rejects it. v4.3 detects the model family and sends the correct form.
-===========================================================-
NEW: GOOGLE SEARCH GROUNDING TOGGLE
-===========================================================-
An optional toggle that attaches a search tool to the live session so NPCs can reference real information.
Honest note: this is provided as an experimental option and defaults to OFF. Grounding support depends entirely on what the live model actually honours, and in testing the current live preview model did not always issue search queries. It is harmless when disabled and it is documented here rather than hidden.
-===========================================================-
NEW: 8 LANGUAGES INCLUDING GERMAN
-===========================================================-
Requested directly by the community.
- English
- Hindi
- Portuguese
- Spanish
- French
- Italian
- Japanese
- German (new in 4.3)
This is not just NPC speech. Menus, notifications, item descriptions and the scene language rules were all localised.
The bug behind this: roughly 275 notification strings were silently English-or-Portuguese only, because the translation helper returned its input unchanged unless the language happened to be Portuguese. v4.3 replaces it with a proper runtime lookup so every language actually resolves.
The multilingual scene language lock from v4.2 remains, covering English, Hinglish, Haryanvi, Bhojpuri, Khari Boli, Spanish, Brazilian Portuguese, Japanese, French, Italian, Simplified Chinese, Malaysian Malay, Arabic and Indonesian.
-===========================================================-
NEW & IMPROVED TAGS IN v4.3
-===========================================================-
[OPENWINDOW]
An NPC inside a vehicle physically rolls their own window down so you can actually hear them. This pairs with the cabin muffling system: the moment the glass drops, the low-pass filter opens and the voice becomes clear.
[CLOSEWINDOW]
Rolls it back up. The muffle returns smoothly.
[STANDONONELEG]
A stock ambient yoga scenario whose tree-pose phase has the ped balancing on one leg. Yes, this genuinely exists in GTA V.
[STOPFOLLOWING]
An NPC who is following you can now decide to stop on their own initiative and walk away. Previously they could only stop when you ordered it. This was implemented purely through prompt law and worked examples, with zero keyword detectors, because word-matching guards are fragile and produce false positives.
[LIFT_PLAYERDRIVE]
During a lift, you take the wheel and the NPC moves to the passenger seat. The route pauses.
[LIFT_GIVEBACKDRIVE]
Hand the wheel back. The NPC becomes the driver again and the route resumes.
[FIGHTENEMY]
Restored. This tag was listed in the prompt but its supporting field was write-only, meaning an NPC who agreed to defend you never actually engaged. It works now.
-===========================================================-
NEW: VEHICLE CABIN MUFFLING
-===========================================================-
Acoustic realism for vehicle conversations.
A voice coming from inside a closed car is filtered. When the window comes down, the filter opens. When it goes back up, the muffle returns smoothly rather than snapping.
Combined with the existing spatial audio system, this means a driver talking to you through a closed window genuinely sounds like a driver talking to you through a closed window.
-===========================================================-
THE v4.3 BUG HUNT — TWELVE REPORTS, TWELVE ROOT CAUSES (previous release)
-===========================================================-
Community reports were not worked around. Each one was traced to the actual line that caused it.
1. "90% of NPCs think they're Beverly."
Reported by impoliceofficer, who noticed the problem scaled with the number of files in the memory folder: 135 files made it constant, deleting them made it stop.
Root cause: story-character name matching ran against generated ambient names, so more memory files meant more collisions.
Fix: a story-category gate plus a whole-word matcher applied across 117 call sites.
2. NPC says "I'm hitting you" while standing still.
Root cause: combat ability defaulted to Poor, so the engine accepted the task and then held position.
Fix: combat ability, movement and range set explicitly, plus anti-coward combat attributes.
3. NPC accepts a fight, then runs away.
This was the big one, and it took a full session log to find.
Root cause: the in-chat combat path never moved the ped into the HATES_PLAYER relationship group. Without it the engine classifies you as a threat, which generates a panic and flee event, rather than as an enemy, which generates a combat task. Every reassert tick lost to a fresh flee event. That is also why it only ever worked after you cancelled the conversation.
Fix: explicit enemy identity, removal from the original group, a hard immediate task clear rather than a soft abort, the anti-flee combat attribute, identity re-asserted every tick, and a longer lock window.
4. Space bar dismiss makes you jump or handbrake.
Reported by impoliceofficer.
Fix: the dismiss key is now rebindable through DismissKey= in the INI, and the "wait until audio ends" gate was removed so it responds immediately.
5. The beer and weed errand scam.
Reported by impoliceofficer, including the specific case of an NPC named Wayne who took a hundred dollars for weed, called his dealer, quoted a price and then ran away.
Root cause: NPCs were accepting errands the engine cannot physically perform.
Fix: a hard prompt law stating exactly which errands exist. Money taken for an impossible errand no longer happens because the errand is no longer offered.
6. NPCs refuse to help in shootouts.
Reported by impoliceofficer.
Root cause: the ambient cowardice profile kept overriding the combat order.
Fix: AlwaysFight and DisableFleeFromCombat re-applied for as long as the combat lock is active.
7. Voice conversations randomly stop working until you press Backspace.
Reported by impoliceofficer.
Fix: session and turn ownership guards, warm-hold handling, and a microphone queue that discards stale audio safely instead of jamming.
8. Audio flicker during replies.
Found in session logs.
Root cause: the waveform polled the audio buffer roughly thirty times a second and fought the same lock the PCM writer needed.
Fix: a lock-free volatile mirror.
9. Backspace did nothing while the Settings menu was open.
Found in logs.
Fix: Backspace now clears menus and the panel in one press.
10. An NPC never stops following on its own.
Found in logs, where the player had to manually say "then stop following me," and the NPC responded with a drive-away tag while standing on the pavement with no vehicle.
Fix: the prompt now grants the NPC the right to leave, with worked good and bad examples including that exact failure. No keyword detectors were added.
11. [WAVE] never played.
Found in logs, failing four times out of four.
Root cause: it used a multiplayer celebration animation dictionary that never streams in singleplayer.
Fix: swapped to a gesture that is already resident in both the male and female standing-casual dictionaries, and the animation load budget was raised.
12. Lift driver never exited and the fare never settled.
Root cause: the drop-off logic lived inside the renderer behind three early returns, so with the chatbox hidden it never ran at all.
Fix: extracted into its own unconditional tick.
Additional fixes in the same pass:
- The lift fare was being charged the instant a ride started; it is now charged only when the ride actually completes.
- After a drop-off the driver would exit and jack a nearby vehicle. Fixed.
- A mobile phone was being counted as a weapon. Fixed with the shared weapon check.
- Every ped kept ranting about smog that only exists because of graphics mods. Removed.
- An auto-convo NPC could hold the bridge hostage so the player could not start a new conversation. Fixed.
- A dispatch open event never appeared in the bridge while heli and news did. Fixed.
- A news blackout could stick for three straight minutes. Fixed.
- The episode director stalled for over two minutes while the player was ragdolling on a bike. Fixed.
- Weazel News could hang forever on "Generating..." if the timeout fired the same second the audio arrived. Fixed with a watchdog.
- A world-event spacing correction was logging 33 times per second. The correction still runs every tick; only the log is throttled.
- Dead code cleanup: an unreferenced goto label, two write-only variables, and one write-only field that was hiding an entirely dead feature.
One request that was declined
Several people asked for a working API key to be bundled directly inside the script. That is a hard no. A shared public key is rate-limited and banned within hours, and then the mod is broken for everybody, including the people who asked. A free Gemini key takes about a minute to create and stays yours.
-===========================================================-
EVERYTHING FROM v4.2 AND v4.3 IS STILL HERE
-===========================================================-
LIVING CITY is an expansion, not a replacement. Everything below remains fully present and active in v4.4.
LS EPISODES
Los Santos generates independent AI-only episodes around you, with no hand-written local scenario templates. Eleven fresh scenarios are requested every game session and merged with unused previous ones, up to 55 unique cached scenarios and 100 KB. There is a 50% opportunistic check every 10 seconds and a mandatory deadline every 30 seconds, which waits for a safe gameplay window rather than interrupting chat, microphone recording, an active scene, a lift, combat, ragdoll or unsafe vehicle conditions.
TWO-NPC AND THREE-NPC LINKED SCENES
NPC A can walk to NPC B and hold a fully linked conversation with independent Gemini Live sessions, independent voices, a shared chronological transcript, physical state facts, language locking and scene-ending rules. Three-NPC scenes add round-robin speaking, fair participation, optional routing, target validation and duplicate-person protection.
MISSION CONTRACTS AND THE NEGOTIATION LEDGER
A mission can be negotiated across many turns. A dedicated raw negotiation ledger preserves the chronological deal so that a payment line modifies the job instead of replacing it, and a short confirmation like "go" or "do it" cannot erase the original concrete request.
COMMITMENT LOCK
Before accepting, an NPC keeps full agency to refuse, question, negotiate or demand payment. Once they accept, take payment and walk to the target, they cannot reopen the negotiation inside the scene.
NUMBERED TARGET ROSTER
The AI receives a numbered roster of up to five nearby entities with name, gender, type, role, distance, activity and vehicle state, then selects an exact target. Handles are locked for the conversation, so "3RD: tourist woman" cannot silently become "3RD: random male driver" while you negotiate.
ACTION OWNERSHIP
Every physical tag belongs to the current speaker. The target does not copy the executor's contract just because the shared transcript contains the word "shoot." They react as themselves: hands up, cower, back off, flee, take cover, comply, refuse, or fight back when justified.
VALIDATED PHYSICAL ACTION SYSTEM
Combat and threat: aim, stop aiming, shoot, stop shooting, fight, stop fight, take cover.
Fear and movement: hands up, hands down, cower, kneel, stand up, back off, flee.
Social: hug, kiss, shove, slap, wave.
Activities: dance, push-ups, phone, record, yoga, cheer, impatient, drink, sit, sleep, smoke.
The AI cannot execute arbitrary native hashes, arbitrary native names, arbitrary animation dictionaries, arbitrary prop models, teleports or freezes.
COMPLETE STOP-COMMAND FAMILY
A full set of semantic stop controls, with a clear distinction preserved: stopping an activity is not the same as ending the conversation. "Stop dancing" stops the dancing and the scene continues. "End this conversation" ends the scene. "Keep going, no stopping" forbids both stop types for that turn.
PLAYER INTERRUPTION
You can interrupt an active NPC-to-NPC scene with your microphone. The system preserves current audio, waits for the final transcript, broadcasts the interruption into the shared scene and determines the next speaker. NPCs are instructed never to invent your answer on your behalf.
MALFORMED TAG REPAIR
Validated legacy and ordinary aliases are repaired into the correct namespace. Unknown model-generated markup remains non-executable. The streaming parser holds an incomplete split tag until the closing bracket arrives.
ACCIDENTAL PLAYER-HOSTILITY PROTECTION
Direct hostile actions are deferred until the full turn reveals whether a linked scene is starting, so the initiating NPC cannot accidentally aim at you before walking to the actual target.
GROUNDED PARTICIPANT SELECTION
Human participants only, nearest compatible pair preferred, no driver NPCs, roughly 18 metre scan radius, roughly 12 metre maximum pair separation, venue compatibility, safe-window checks and entity validation. No freezing, no teleporting, no anchor snapping.
AI-GENERATED PHYSICAL OPENINGS AND VALIDATED PROPS
Both participants receive a real physical opening state from a validated capability list, with semantic props including bottles, pill bags, money bags, wallets, phones, cameras, clipboards, cash, duffel bags, food, coffee and documents. A phone prop automatically activates phone behaviour and a camera automatically activates recording.
PHYSICAL HALLUCINATION PROTECTION
The generator is prohibited from inventing unsupported physical facts such as an ATM, a bench, fire, crash damage or a doorway unless the live environment or validated setup confirms it.
STRUCTURED ENDINGS
Ambient episodes require sufficient exchanges and must close with a structured resolved, unresolved or escalated outcome that explains the actual result. Vague endings are rejected.
40 BEHAVIOR MODES
The complete personality collection remains, from Default, Angry, Ultra Roaster, Savage, Polite, Psychopath, Introvert, Kind, Selfish, Dumb, Conspiracy, Flirty, Depressed, Gangster, Philosopher, Comedian, Drunk, High IQ, Disciplined and Chapri, through to Obey Everything, Ride-or-Die Homie, Coward Civilian, Psycho Criminal, Street Hustler, Rich Snob, Corrupt Cop, Gang Soldier, Silent Killer, Drunk Desi Uncle, Helpful Local Guide, Paranoid Prepper, Romantic Flirt, Moral Citizen, Tired Worker, Tourist Outsider, Insult Battle, Street Philosopher, Command Tester and Unfiltered Local.
STORY CHARACTER IDENTITY AND RELATIONSHIPS
Canonical Player, Story, Cutscene and Multiplayer categories, identity locks, and the full relationship network across Michael, Franklin, Trevor, Lamar, Amanda, Jimmy, Tracey, Lester, Dave Norton, Steve Haines, Devin Weston, Ron, Wade, Floyd, Patricia, Martin Madrazo, Simeon, Stretch and the broader story network.
SWEARING / ABUSE CONTROL
The two-mode system is unchanged. With swearing and abuse OFF the AI stays PG-13: no English profanity, no Hindi gaalis, no slurs, no censored or obfuscated variants. With it ON the AI may use contextual English profanity, Hindi and Hinglish gaalis, regional slang, GTA-style insults and character-appropriate rough speech. Identity-slur spam is still not the goal. The setting applies to direct chat and to linked scene rules, and in v4.3 it also applies to the police dispatch, news anchor and air unit voices, which stay professional regardless.
MOVEMENT CONTROLS: OUTOFVEHICLE, DRIVEAWAY AND STOPFORPLAYER
OUTOFVEHICLE requests a natural safe exit and avoids forcing a suicidal exit from a fast-moving vehicle.
DRIVEAWAY lets a driver leave naturally and return to vehicle wandering behaviour. In v4.3 the prompt was tightened with worked examples after a log showed an NPC emitting a drive-away tag while standing on the pavement with no vehicle; that tag is now clearly reserved for actually driving a vehicle, and walking away has its own behaviour.
STOPFORPLAYER asks a walking or wandering NPC to stop, wait, come here and stop, stop walking away, or face the player. On foot the NPC clears the current movement task, stays unfrozen, turns toward you and looks at you. A vehicle driver uses a controlled temporary vehicle stop. No teleport is used. In v4.3 a face-hold watchdog keeps STOPFORPLAYER and FACETARGET peds actually facing you instead of drifting back to their ambient heading.
LIFTS WITH 20 NAMED DESTINATIONS
Davis, Grove Street, Legion Square, Vespucci Beach, Del Perro Pier, Los Santos International Airport, Rockford Hills, Downtown Vinewood, Mirror Park, Diamond Casino, Maze Bank Arena, Sandy Shores, Grapeseed, Paleto Bay, Chumash, Harmony, Fort Zancudo, Galileo Observatory, Mount Chiliad and Marlowe Vineyard, plus current-waypoint routing.
DRAG RACES, HOMIES, SHOPS, ANIMALS
The drag race system with wagers and cleanup, homie and accomplice progression, clothing store, convenience store and Ammu-Nation routines, ambient task preservation, and the full dog and animal command set all remain.
VISION, SPATIAL AUDIO, LIP-SYNC
Multimodal frame capture with full lifecycle diagnostics, dynamic spatial positioning with distance and occlusion, and the stable audio-driven lip-sync workflow.
MAIN-THREAD SAFETY AND OWNERSHIP
GTA natives stay on the ScriptHookVDotNet main thread or the main-thread action queue. Session IDs, microphone turn IDs, scene turn IDs, generation IDs and in-flight guards reject stale and duplicate packets.
-===========================================================-
QUICK SETUP OVERVIEW
-===========================================================-
Living LS AIs is a single-player ScriptHookVDotNet mod.
Always follow the exact installation guide included with the download, because dependency versions and package layout may change between public builds.
The normal v4.4 setup includes:
- GTA V single-player,
- ScriptHookV,
- ScriptHookVDotNet 3 / Nightly,
- LemonUI for SHVDN3,
- Newtonsoft.Json,
- NAudio,
- the included LivingLSAIs DLL,
- the included LLAI SERVER data folder,
- the readable local server.js Gemini Live bridge,
- Node.js for the local bridge,
- and your own valid Gemini API key.
Important installation rules
Only one active LivingLSAIs DLL should exist. The main DLL belongs in the GTA V scripts directory. Do not leave a second duplicate inside LLAI SERVER, because duplicate script loading causes unpredictable behaviour.
Delete outdated LivingLSAIs files, stale duplicate folders and old mismatched builds before copying in v4.4.
The local bridge belongs inside the included LLAIBridge folder under LLAI SERVER.
If you are upgrading from a build that had the Beverly identity bug, consider clearing the NPC_MEMORIES folder for a clean slate. Hundreds of files generated by the buggy build can persist even after the fix.
-===========================================================-
BASIC FOLDER LAYOUT
-===========================================================-
GTA V/
├── GTA5.exe
├── ScriptHookV.dll
├── ScriptHookVDotNet.asi
├── ScriptHookVDotNet3.dll
├── scripts/
│ ├── LivingLSAIs.dll
│ ├── LivingLSAIs.ini
│ ├── LemonUI.SHVDN3.dll
│ ├── NAudio.dll
│ └── Newtonsoft.Json.dll
│ └── LLAI SERVER/
│ ├── LLAIBridge/
│ │ ├── server.js
│ │ ├── node.exe
│ │ ├── LLAI CUSTOM RULES.txt (new in 4.3)
│ │ └── radio_break_cache.json (new in 4.4)
│ ├── NPC_MEMORIES/ (memory v3 json files)
│ ├── LLAIsession.log
│ ├── LLAIDEBUG.log
│ ├── bridge_audio.log
│ └── bridge_fatal.log
-===========================================================-
CORE CONTROLS
-===========================================================-
E — Lock onto a nearby NPC and open the conversation flow.
T — Instant text chat with a nearby NPC or the active conversation target.
Y (hold) — Voice input, push-to-talk style live speech.
ENTER — Select menu items, confirm choices, and progress drag race setup and start.
BACKSPACE — End chat or cancel active flows such as drag race setup. In v4.3 it also clears an open Settings menu and the panel in one press.
SPACE — Dismiss the chatbox instantly. New in 4.3: rebindable through DismissKey= in the INI, because Space is also jump and handbrake. Fixed in 4.4: the custom key is now read before the sixteen early returns that used to eat it.
N — New in 4.4. Skip the radio break, either during the ten second warning or at any point once it has started. Deliberately not suppressed, so shop menus that also read N keep working.
Interface menu — New in 4.3. Live-preview every preset, colour theme, scale, opacity and anchor while you scroll. Saves to the INI automatically.
Credits & Community menu — New in 4.3. A public-release hub with credits, links and support information.
-===========================================================-
FIRST-TIME USER TUTORIAL
-===========================================================-
Step 1 — Install the required GTA V scripting foundation.
Install ScriptHookV and ScriptHookVDotNet according to their official instructions, then place the mod files exactly as described in the included installation guide.
Step 2 — Configure Gemini.
Add your own valid Gemini API key using the configuration method included with the release. Do not publicly share your key. Gemini availability, quota, regional availability and model limits all affect response generation.
Step 3 — Start GTA V Story Mode.
Living LS AIs is made for single-player. Do not use it in GTA Online.
Step 4 — Approach a pedestrian and start talking.
Use text input, microphone input, menuless direct interaction, or the menu, depending on your settings.
Step 5 — Speak naturally.
You do not need to memorise internal tags for normal gameplay:
- "What are you doing here?"
- "Do you know where the beach is?"
- "Take my gun for a minute."
- "Give me a ride to Davis."
- "Roll your window down, I can't hear you."
- "Let me drive."
- "Go ask that woman if this phone belongs to her."
- "Ask that man to dance. If he refuses, aim at him."
Step 6 — Watch the world, not only the subtitles.
Notice who walks to whom, who is holding an item, who aims, who surrenders, who flees, and how the scene resolves.
Step 7 — New in 4.3: cause trouble and then listen.
Get three stars, run, escape, then get in a car and turn the radio on. About a minute later you may hear a Weazel News anchor describing what you just did. Then go and talk to a pedestrian and ask them about the news.
Step 8 — New in 4.4: bring somebody with you.
Ask a pedestrian to get in your car. Drive until a radio break plays and let it finish. When the music comes back, ask them what they thought of the adverts. They heard every word of it, and they will tell you.
-===========================================================-
TUNING THE PANEL
-===========================================================-
Open the Interface menu and scroll. Everything previews live.
- Try Cinematic if you want the full look.
- Try Compact or Minimal if you find the panel distracting during driving.
- Try Ghost if you want the text to feel like it is floating with almost no chrome.
- Switch Anchor to Top if the bottom of your screen is busy with other mod HUDs.
- Set the colour theme to Mood Auto and watch it shift as an NPC's mood changes during an argument.
- Set it to Rainbow if you simply want it to cycle.
- Raise or lower Scale for your resolution, and Opacity for your taste.
If you prefer the older renderer entirely, set UiEngineV2=false in the INI.
-===========================================================-
WRITING YOUR OWN RULES
-===========================================================-
Open scripts/LLAI SERVER/LLAIBridge/LLAI CUSTOM RULES.txt
Write anything you want appended to every NPC prompt. Lines starting with # are ignored.
Examples of what people have used it for:
- Making every pedestrian believe they are the strongest person in Los Santos.
- Enforcing a specific roleplay setting or time period.
- Forcing a consistent regional speech style.
- Adding a house rule such as "nobody in this city ever admits they are wrong."
- Making every NPC obsessed with a particular topic.
It applies on top of the existing prompt engine, so all action tags, scene rules and physical laws keep working.
-===========================================================-
EXAMPLE SESSION 1 — THE CITY REPORTS ON YOU
-===========================================================-
You start a firefight in Del Perro and reach four stars.
The crime spree recorder arms and begins logging: peak stars, cops killed, vehicles destroyed, every zone you shot in, every zone you were chased through.
Police dispatch cuts across the ambient chatter:
"All units, shots fired on Del Perro Boulevard. Suspect is armed, heading north on foot."
The chopper arrives and claims the audio lane above dispatch:
"Air One has visual. Suspect is on the rooftops, moving east."
You escape into an alley and stay clean long enough for the escape to confirm.
About a minute later you get in a car, and your station ducks to ten percent:
"We're getting reports of a violent incident in Del Perro this afternoon. Police say the suspect fled the scene and remains at large. More on this as it develops."
The station volume restores.
You walk up to a pedestrian and ask what happened in Del Perro. They know. They were never going to bring it up unprompted, but they can answer.
You walk to another one. They say nothing about it, because they are in the aware tier, not the vocal tier.
A third one recognises you, because that last spree ended with you getting arrested and your identity became public. They back away and pull out their phone.
-===========================================================-
EXAMPLE SESSION 2 — DANCE OR ELSE
-===========================================================-
Player: "Take this gun."
NPC A: "Understood. Anything else?"
Player: "Ask that guy to dance. Aim if he refuses. Shoot only if he still refuses."
NPC A accepts and walks to NPC B.
NPC A: "Hey, the boss wants you to dance. Got a problem with that?"
NPC B: "Dance? What is this, performance art?"
NPC A physically aims.
NPC A: "Make some moves or things stop being friendly."
NPC B physically cowers.
NPC B: "Okay, easy! What exactly do you want?"
Player interrupts by microphone: "Tell him to dance."
NPC A: "You heard them. Dance."
NPC B physically dances.
Player: "Perfect. Keep going."
The scene continues instead of incorrectly ending.
-===========================================================-
EXAMPLE SESSION 3 — THE LIFT, YOUR WAY
-===========================================================-
Player: "Give me a ride to Sandy Shores."
The NPC accepts, you get in, and the lift ribbon appears in the panel showing the destination.
Player: "I can't hear you over the engine."
NPC rolls their window down. The cabin muffle opens and the voice becomes clear.
Player: "Actually, let me drive."
You take the wheel, the NPC moves to the passenger seat, and the route pauses.
You drive halfway, get bored, and hand it back.
The NPC becomes the driver again and the route resumes from where it paused.
At the actual drop-off, the fare settles. Not at the start of the ride, and the driver does not exit and steal a nearby car afterwards.
-===========================================================-
EXAMPLE SESSION 4 — A GRUDGE THAT TRAVELLED
-===========================================================-
You shoot near a pedestrian in Mirror Park and then leave without another word.
That event is recorded in their memory file with a heavy weight and a two-week decay curve. It also seeds gossip.
Over the next fifteen minutes it propagates outward by hops into the memory files of nearby pedestrians, with the radius growing each hop, up to a bounded number of people.
You come back an hour later, walk two blocks over, and speak to a complete stranger you have never met.
They already know.
-===========================================================-
LOGGING & DIAGNOSTICS
-===========================================================-
v4.3 produces detailed logs for testing and support, covering:
- bridge startup and handshake,
- Gemini session readiness and reconnect behaviour,
- microphone lifecycle and stale packet rejection,
- STT transcript lifecycle,
- vision capture and send flow,
- PCM chunks, bytes and RMS activity,
- lip-sync start and stop,
- spatial audio calculations and cabin muffling,
- the numbered target roster and handle locking,
- negotiation chronology and scene commitment,
- action receipt, namespace repair, normalization, execution, blocking and deduplication,
- LS Episode generation, cache source, prop attachment, transitions and outcomes,
- scheduler safe-window reasons,
- money transaction verification,
- entity invalidation and scene cleanup,
- and new in 4.3: dispatch gate reasons, heli mutual-exclusion state, news blackout state, crime spree recording, city awareness tiers, faction skin resolution and UI skin release.
When reporting a bug, include the relevant session log section, the debug log section, the exact command you gave, what every NPC said, what physically happened, and what you expected instead. Short clips are extremely useful for physical-action or pathfinding bugs.
-===========================================================-
PUBLIC RELEASE TIPS
-===========================================================-
- Use Story Mode only.
- Keep exactly one active LivingLSAIs DLL.
- Use a stable ScriptHookVDotNet installation.
- Make sure the local bridge can run through Node.js.
- Use your own valid Gemini API key with available quota.
- If you are upgrading and NPC identities feel wrong, clear NPC_MEMORIES.
- Rebind the dismiss key if you drive a lot, since Space is handbrake.
- Avoid switching between many NPCs while a microphone turn is still processing.
- Give moving scene participants a moment to approach naturally.
- Remember that GTA pathfinding can fail in crowded, blocked or unusual geometry.
- Keep logs when reporting a bug.
- New in 4.4: if the adverts ever feel repetitive or come out in the wrong language, delete radio_break_cache.json. The mod rebuilds it on the next boot in your current language.
-===========================================================-
LIMITATIONS & HONEST EXPECTATIONS
-===========================================================-
Living LS AIs connects a generative live model to a dynamic GTA V world, so exact dialogue is not deterministic.
Gemini may occasionally produce no PCM on a scene turn and require a retry, misunderstand unclear speech, choose an unexpected but valid reaction, or be affected by API availability and quota. A "quota exceeded" or 429 line in your log is your own key hitting its free-tier limit, not a mod failure; ambient scenario generation falls back to the cached library automatically and live conversation keeps working.
Google Search grounding is provided as an experimental toggle and defaults to OFF, because grounding support depends on what the live model actually honours.
GTA pedestrians may occasionally fail pathfinding, despawn, be interrupted by world combat, enter traffic danger, or die from unrelated causes. The mod validates physical actions and scene ownership, but it does not replace the entire GTA V pedestrian engine.
The architecture prioritises one foreground voiced interaction while background routines and physical systems continue. It does not promise unlimited simultaneous independent voiced conversations.
Random LS Episodes intentionally use no hand-written local scenario fallback. If Gemini and the valid AI cache are both unavailable, the mod will not invent a scripted replacement incident.
The always-on microphone was removed in v4.3 by request, because it could not reliably distinguish intentional speech from background noise.
Google's Search grounding quota is a separate and much smaller free-tier bucket than normal chat. When it runs out the mod detects it, disables search automatically for that session and carries on talking. You may see one WEB_SEARCH_QUOTA_TRIPPED line in your log per session. It resets at midnight Pacific. This is your key's free tier, not a mod failure.
Rumours degrade as they travel, by design. A story four hops from its source is an unreliable version of what happened, and the NPC telling it is meant to sound unsure about the details. That is the system working, not the model hallucinating.
-===========================================================-
WHO THIS MOD IS FOR
-===========================================================-
Living LS AIs v4.4 is designed for players who want:
- immersive roleplay,
- unscripted stories,
- sandbox chaos,
- AI experiments,
- cinematic encounters,
- memory-driven NPCs who hold grudges,
- a reputation that travels through the city without you,
- a police scanner that actually knows what you did,
- news coverage of your own rampage,
- a car radio that takes real commercial breaks,
- a passenger who heard the same advert you did and has opinions about it,
- social reactions,
- voiced characters,
- physical AI missions,
- dynamic arguments,
- random street episodes,
- and a Los Santos that feels less like a city of cardboard extras.
If you only want a screenshot where an NPC displays one clever sentence, this mod goes far beyond that.
Living LS AIs is designed for the moments after the screenshot:
What does the NPC remember?
Who did they tell?
What did the news say about you?
Will the guy two blocks over already know your face?
-===========================================================-
v4.4 LIVING CITY — MASTER CHANGELOG
-===========================================================-
Radio break cycle
- Added the four-stage radio break: HOST_INTRO, ADS, NEWS, HOST_OUTRO.
- Added 22 written station hosts across 26 supported stations.
- Added a three minute default interval, configurable with RadioBreakMinutes.
- Added RadioBreakCycle to turn the whole system on or off.
- Added a ten second pre-roll warning with N to skip.
- Chained the stages on socket close rather than on timers, so a slow stage cannot overlap the next one.
- Added live web search so adverts reference what is genuinely trending today.
- Added an explicit ban on narrating the search out loud.
- Added the radio break content cache: six ads and six bulletins, up to twenty, capped at 60 KB.
- Made the cache append rather than overwrite, so leftovers carry across sessions.
- Primed the cache at boot and refilled it after every break over the REST endpoint.
- Added a fifth chatbox skin for advert breaks with its own emblem.
Shared listening
- Added shared break context: the real advert and news text enters a passenger's head.
- Gated it to NPCs who genuinely shared the vehicle cabin, plus lift drivers.
- Added a five minute freshness window.
- Capped stored copy at 700 characters per stage.
- Forbade the NPC from claiming to have heard anything not actually broadcast.
Ad pause and conversation priority
- Added automatic ad pause that holds an open conversation instead of ending it.
- Kept the NPC, the history and the warm bridge session through the pause.
- Added an on-screen prompt when the mic or text key is pressed during a break.
- Throttled that prompt so holding a key cannot spam the feed.
- Made dispatch, the air unit and ambient barks stand down while a conversation is live.
- Deliberately exempted ads and news from that gate.
- Removed the wanted-level block that made a break impossible during a chase.
Anti-repetition and language
- Added a banned list of existing cached copy shown to the writer.
- Added a rotating creative brief: eight angles and twelve lead brands.
- Banned worn-out advert openings by name.
- Capped video-game references to one advert per batch.
- Added a similarity filter that rejects near-duplicate copy on the way into the cache.
- Passed the player's language into the cache writer, which never received it before.
- Made the cached reader translate English copy already sitting on disk.
New tags
- Added [ENTERCAR] / [GETIN] / [GETINCAR], the first general vehicle boarding tag.
- Added [ROBSTORE] / [ROBSHOP] with 16 mapped store locations.
- Added [SNIPEKILL@n] for a specific numbered target at range.
- Rewrote [LEANONCAR] to target a point outside the bumper and pin the car while the ped settles.
Content
- Expanded to 612 NPC names, 106 moods, 124 backstories and 42 jobs.
- Expanded to 26 radio stations and 16 news segment types.
- Verified all 55 scenario props against the game's own prop list.
Engineering
- Added scopecheck.py, which catches cross-class static calls before they reach a compiler.
- Added shadowcheck.py, which catches local variable shadowing.
- Grew the automated regression suite to 706 tests, all passing.
- Every bug fix in this release ships with a test that fails on the old code first.
Bug fixes
- Fixed NPC money never reaching your wallet: a bogus pickup hash, a swallowed exception and a silent no-op in the SHVDN money setter.
- Fixed NPC identity changing between sessions by fingerprinting appearance instead of the recycled ped handle.
- Fixed saved memory never loading by removing the name from the memory file key.
- Fixed rumours never spreading: the eligibility check tested for a filename that no longer existed.
- Fixed FlyLo FM by correcting the station name to RADIO_14_DANCE_02.
- Fixed bike lifts being refused by a collapsed ternary that rejected vehicle class 8.
- Fixed newly added moods being unreachable behind a hardcoded index ceiling of 59.
- Fixed the 0xc0000005 shop-routine crash by making the face-hold watchdog release to all sixteen owning systems.
- Fixed a suited Michael being announced as naked by making clothing detection model-aware.
- Fixed the chatbox vanishing after two seconds: the panel watchdog never reset the timestamp it is judged by.
- Fixed chatbox text truncating past 396 characters by capping at four components on a word boundary.
- Fixed [LEANONCAR] launching cars into the sky.
- Fixed the radio break playing 85 chunks of silence by claiming the audio lane.
- Fixed music returning mid-break by extending the duck across the next stage's generation window.
- Fixed music dying for an entire chase with an absolute 25 second duck ceiling.
- Restored the Q radio wheel, which the permanent duck had also disabled.
- Fixed NPCs never remembering the radio break bulletin by seeding city awareness from the news stage.
- Fixed repeated adverts with a banned list, a rotating brief and a similarity filter.
- Fixed adverts always being English by passing the language to the cache writer.
- Fixed the no-response death spiral caused by closing sockets that were still in setup.
- Fixed the Los Santos Customs menu locking up during a break by not suppressing the N key.
- Fixed the rebindable dismiss key being read behind sixteen early returns.
- Fixed the anchor narrating its own web search on air.
- Fixed commercials displaying the LSPD air unit badge.
- Fixed shop routines drifting off topic by giving each routine a single stated purpose.
- Fixed traffic drivers being hijacked into scenes and exiting mid-road.
- Fixed the radio break aborting itself one second after starting by teaching the station guard about RADIO_36_AUDIOPLAYER.
-===========================================================-
v4.3 NEON GLASS — MASTER CHANGELOG (previous release)
-===========================================================-
Interface
- Added the Neon Glass renderer with 15 ordered layers.
- Replaced the multi-spawn overlay with one persistent panel.
- Added 5 presets: Cinematic, Compact, Minimal, Ghost, Custom.
- Added 7 colour themes including Mood Auto and Rainbow.
- Added 4 anchor positions.
- Added adjustable scale and opacity.
- Added live preview while scrolling the settings menu.
- Added automatic aspect-ratio correction for ultrawide displays.
- Added auto-fit panel height from measured text width.
- Added the dual 14-bar microphone and voice waveform.
- Added the dimmed in-panel "YOU said" transcript row.
- Added friendship pips, faction chip, header status dot and action-flash toast.
- Added police, news and air-unit broadcast styling.
- Added a lift ribbon showing the active destination.
- Replaced 30-per-second audio lock polling with a lock-free volatile mirror.
- Added a headshot texture guard against a rare d3d11 crash.
- Kept the legacy renderer available behind a configuration switch.
Faction identity
- Added 29 faction skins.
- Mapped 186 pedestrian models to those skins.
- Added faction chip labelling in the panel.
- Cleared lingering faction colour when a radio transmission starts.
City broadcast systems
- Added the AI police dispatch engine.
- Added live wanted level, crime type, street, zone and direction reporting.
- Added dispatch gating, throttling and skip-reason diagnostics.
- Added the LSPD air unit helicopter loudspeaker with its own voice.
- Added air-unit priority above ground dispatch.
- Added the Weazel News crime spree recorder.
- Added automatic dossier broadcast about a minute after a confirmed escape.
- Added ESCAPED, BUSTED and WASTED outcomes.
- Added in-game radio ducking and restoration.
- Added a news blackout window around a bulletin.
- Added a watchdog so a bulletin can never hang on "Generating..."
- Added the four-lane audio arbiter for NPC, News, Dispatch and Heli.
- Added centre-locked positioning for radio transmissions.
- Added relevance expiry for stale queued barks.
- Set proactive barks to default OFF.
City awareness
- Added the tiered awareness engine with a 20 minute lifetime.
- Added the AWARE tier that answers only when asked.
- Added the VOCAL tier at roughly 8 percent, delayed and hard-capped at 3 per broadcast.
- Added the RECOGNIZER tier at roughly 50 percent when identity is public.
- Added permanent per-NPC lockout after they discuss it once.
- Made awareness knowledge instant while keeping unprompted mentions paced.
- Extended awareness into NPC-to-NPC linked scenes.
Memory v3
- Added exponential grudge decay with per-event weights.
- Added tracked debts in both directions.
- Added gossip seeding and multi-hop spread into other NPCs' memory files.
- Added a freshness window and a per-event spread cap.
- Kept full backward compatibility with v2 memory files.
- Fixed memory persistence.
Configuration and control
- Added the Custom Rules file with template auto-creation.
- Added comment support, minimum-length activation and an 8000 character cap.
- Delivered custom rules to all five AI sockets.
- Retired the old prompt-replacing override.
- Added the four-step AI Thinking Level dial with localised pros and cons.
- Fixed the hard-coded zero thinking budget across five sockets.
- Added model-family detection for the correct thinking parameter form.
- Added the Google Search grounding toggle, default OFF.
- Added the rebindable DismissKey INI setting.
- Added the Credits and Community menu hub.
- Removed the always-on microphone by request.
Language
- Added German.
- Fixed roughly 275 notification strings that only resolved in English or Portuguese.
- Replaced the passthrough translation helper with a proper runtime lookup.
- Localised menu items, descriptions and notifications across all eight languages.
New tags and behaviours
- Added [OPENWINDOW] and [CLOSEWINDOW] with real cabin filter response.
- Added [STANDONONELEG].
- Added [STOPFOLLOWING] self-initiative through prompt law only, with zero keyword detectors.
- Added [LIFT_PLAYERDRIVE] and [LIFT_GIVEBACKDRIVE].
- Restored [FIGHTENEMY], which had been silently dead.
- Added vehicle cabin muffling with a low-pass filter.
Bug fixes
- Fixed the Beverly identity collision with a story-category gate and a whole-word matcher across 117 call sites.
- Fixed NPCs narrating combat while standing still by setting combat ability, movement and range explicitly.
- Fixed NPCs fleeing after accepting a fight by assigning proper enemy relationship identity instead of leaving the player classified as a threat.
- Added an immediate hard task clear instead of a soft abort in the combat reassert loop.
- Added anti-flee combat attributes and per-tick enemy identity re-assertion.
- Extended the combat lock window.
- Fixed the Space bar dismiss conflict with jump and handbrake.
- Removed the "wait until audio ends" dismiss gate.
- Fixed the beer and weed errand scam with a hard prompt law on which errands physically exist.
- Fixed NPCs refusing to fight alongside the player during shootouts.
- Fixed voice conversations silently stopping until Backspace was pressed.
- Fixed audio flicker caused by waveform lock contention.
- Fixed Backspace doing nothing while the Settings menu was open.
- Fixed NPCs never ending a follow on their own initiative.
- Fixed [WAVE] never playing by removing a multiplayer-only animation dictionary.
- Raised animation load budgets.
- Fixed the lift driver never exiting and the fare never settling.
- Moved lift fare charging from ride start to ride completion.
- Fixed the driver jacking a nearby vehicle after a drop-off.
- Fixed a mobile phone being counted as a weapon.
- Removed the smog rant that only applied to graphics-modded games.
- Fixed an auto-convo NPC holding the bridge hostage.
- Fixed the missing dispatch open event in the bridge.
- Fixed a news blackout sticking for three minutes.
- Fixed the episode director stalling while the player ragdolled on a bike.
- Fixed the Weazel timeout racing its own audio arrival.
- Throttled a world-event spacing log that fired 33 times per second.
- Removed an unreferenced goto label and cleaned up write-only variables.
- Added PCM jitter cushioning to remove playback flicker on short chunks.
-===========================================================-
IMPORTANT
-===========================================================-
Single-player only.
Do not use Living LS AIs in GTA Online.
Back up your game and mod setup before installing major updates.
Never share your private API key in screenshots, logs, Discord messages or public bug reports.
No API key is bundled with this mod, and none ever will be. Create your own free Gemini key. It takes about a minute and it stays yours.
-===========================================================-
DISCORD / COMMUNITY / BETA TESTING
-===========================================================-
For updates, support, installation help, testing news, community discussion, bug reporting, beta opportunities, future previews and release announcements, join the Living LS AIs community:
https://discord.gg/NnQhARUbp9
GTA5-Mods page:
https://www.gta5-mods.com/scripts/livinglsais-0706c201-ba7c-4e19-9c70-d77db561f835
YouTube:
https://www.youtube.com/@ZEXIVA77
When applying for beta testing, provide your PC specifications, your GTA V version, your ScriptHookVDotNet version, whether you can reproduce bugs reliably, whether you can provide logs and clips, and why you want to help test unstable builds.
Good beta testing is not only playing early. It means trying strange commands, testing different personalities, checking physical action ownership, interrupting scenes, cancelling episodes, testing crowded locations, testing vehicles and interiors, causing crime sprees to test the broadcast systems, reporting exact reproduction steps and keeping useful logs.
Special thanks for v4.4
Dzinu — for the report that an invited NPC could agree to come along and then simply never get in the car, and for the separate one about an armed NPC never reaching the store he had agreed to rob. Both turned out to be missing action tags rather than broken behaviour. [ENTERCAR] and [ROBSTORE] exist because of those two messages.
Vampire — for "while playing with Michael everyone seems to think I'm naked", which was a regression introduced by v4.4's own clothing-awareness feature. Reported clearly enough that the root cause was obvious once somebody actually looked: drawable 0 means the model's first outfit, not no clothes. Also for confirming the radio adverts landed, which mattered more than it sounds.
indragon99 — for testing on Enhanced, which nobody else was able to do, and for pushing on the truck explosion issue until the real cause surfaced.
impoliceofficer — whose v4.3 reports are still shaping this mod. Several v4.4 fixes are downstream of investigations that started with those logs.
Maciel — for the report that a saved NPC did not remember the last conversation, which led straight to the memory key bug.
Anyiiikunnn — for getting addon peds working on Enhanced and documenting how, and for the API quota question that clarified how key rotation is presented.
Everyone who filed a report with a log attached rather than just "it doesn't work."
Special thanks for v4.3
impoliceofficer, whose detailed reports produced six of the twelve fixes in that release, including the observation that the identity bug scaled with the number of memory files. That single detail is what led to the actual root cause.
T0XiQ96, who requested German. It is in.
-===========================================================-
CREDITS
-===========================================================-
Living LS AIs
Created by Zexiva
Creator, main developer, system designer, gameplay designer, prompt and episode architect, integration developer, and project lead.
Legacy & Special Credits
AbirTheLegend — legacy and special credit preserved for support, ideas, testing, feedback and contributions connected to the project's development history.
Murilo Walker — credit preserved with the Living LS AIs project, for major contributions and the three-NPC scene work.
Community — thank you to every beta tester, supporter, log collector, clip creator, bug reporter and community member who helped break unstable builds and improve them. Every stable system exists because somebody tested the version where it was not stable yet.
AI / API
Google Gemini and Gemini Live — the main modern live AI route used for direct conversation, native voice, microphone transcription workflow, visual context, linked NPC scenes, AI-generated LS Episodes, the police dispatch, news anchor and air unit voices, and in v4.4 the entire radio break cycle: its station hosts, its commercials and its news bulletins.
Groq — credit preserved for optional provider support and earlier multi-provider experimentation where included.
UnrealSpeech — credit preserved for optional and alternate TTS experimentation where included.
OpenAI Whisper — credit for earlier speech-to-text development paths. Not the main modern Gemini Live route, but part of the project's development history.
Local Bridge / Runtime
Node.js — provides the runtime foundation for the local Gemini Live bridge, enabling persistent WebSocket communication, live audio transport, microphone stream transport, image transport, action-tag streaming, scene session management, random Episode generation, broadcast voice generation, the radio break cycle and cache communication.
ws — the WebSocket implementation used by the bridge. It is bundled inside the download, so you never need to run npm install.
GTA V Modding Foundation
Alexander Blade — ScriptHookV
crosire and the ScriptHookVDotNet contributors — the ScriptHookVDotNet ecosystem
justalemon — LemonUI
Newtonsoft.Json — JSON handling
NAudio — audio playback and processing support
Microsoft .NET and the C# ecosystem — scripting and runtime foundation
Respect to the Community
Huge respect to the GTA V single-player modding community. Living LS AIs exists because of years of shared tools, documentation, experiments, reverse engineering, testing, and players who keep pushing Los Santos beyond its original limits.
-===========================================================-
FINAL NOTE
-===========================================================-
Living LS AIs v4.2 made a conversation into an episode.
Living LS AIs v4.3 made that episode into a consequence.
Living LS AIs v4.4 makes that consequence into something you and an NPC sat through together.
The NPCs can still notice, speak, remember, judge, negotiate, accept, refuse, travel, select real people, carry physical objects, change body states, react to danger, perform conditional missions, create independent incidents and produce a real outcome.
Now the city itself joins in.
A dispatcher reads out your street. A helicopter calls your position. A news anchor summarises your worst afternoon and your car radio gets quieter so you can hear it. A pedestrian two blocks away already knows what you did, because someone told them. And the guy you shot at last week has not forgotten, and will not for about two more weeks.
And now, every three minutes, the radio takes a break — and the woman in your passenger seat heard the same stupid advert you did, and she has opinions about it.
A pedestrian is no longer only a pedestrian.
They can become a witness, a friend, a coward, a criminal, a negotiator, a driver, a customer, a target, an accomplice, a scene partner, a source of gossip, someone who recognises your face from the news, someone who gets in your car and complains about the radio, or the main character of the next completely unscripted Episode.
Living LS AIs v4.4 — LIVING CITY
The city was already talking. Now it is on the air, and somebody is listening with you.
First Uploaded: 01. jun 2026
Last Updated: 1 dan
Last Downloaded: 3 minute
All Versions
374 Comments
Living LS AIs v4.4 — LIVING CITY
Real AI Lives, a Radio That Broadcasts About You, and NPCs Who Sit in Your Car and Listen
By Zexiva
v4.3 made the city look alive. v4.4 makes it behave alive.
-===========================================================-
OVERVIEW
-===========================================================-
Living LS AIs is a full open-world AI overhaul for Grand Theft Auto V that turns normal pedestrians into reactive, memory-driven, voice-enabled AI characters capable of speaking, remembering, negotiating, travelling, fighting, surrendering, helping, refusing, creating trouble, holding grudges, spreading rumours about you, and interacting physically with each other.
Living LS AIs v4.4 is called:
LIVING CITY
v4.3 was NEON GLASS. It rebuilt how the mod looked and gave Los Santos a police scanner and a news anchor. v4.4 is about what happens in the gaps between all of that.
v4.4 does four things at once:
1. It gives your car radio a real commercial break. Every three minutes the station you are listening to cuts away. The DJ hands over in character, two or three adverts play, Weazel News reads the headlines, and the DJ comes back. Four chained live AI sessions, twenty-two written station hosts across twenty-six stations, and adverts built around whatever is genuinely trending in the real world today.
2. It puts the NPC in your passenger seat inside that moment with you. If somebody is riding with you when the break plays, they heard the actual adverts and the actual bulletin — the real text, not a summary. Afterwards you can ask them what they thought, and they will tell you.
3. It stops the systems that used to talk over you. While you are genuinely mid-conversation, the police dispatcher, the air unit and ambient pedestrian chatter all stand down. Ads and news are deliberately exempt, because those are not talking to you — they are playing on the radio you are both listening to.
4. It closes twenty-six bugs. Not with workarounds. Each one was traced to the exact line that caused it, and each one ships with a regression test that fails on the old code first and passes on the new. If a fix cannot prove the bug existed, it is a guess, not a fix.
Nothing from v4.3 was removed.
Neon Glass, the 29 faction skins, police dispatch, Weazel News, the LSPD air unit, Memory v3 with grudges and gossip, the Custom Rules file, the AI Thinking Level dial, eight menu languages, LS Episodes, two-NPC and three-NPC linked scenes, mission contracts, commitment locking, the numbered target roster, action ownership, the validated action system, the stop-command family, the random world director, the 40 behaviour modes, drag races, lifts, homies, shopping routines, dog commands, vision, spatial audio and every diagnostic remain fully present and were extended.
This is not a basic chatbot overlay.
This is not a collection of preset "funny NPC lines."
This is not an illusion where an NPC says "I am aiming at him" while physically standing idle.
This is a city where a pedestrian can remember that you shot at them two weeks ago, tell their friends about it, hear your name on the news, and then sit in your passenger seat and complain about the advert that just played.
-===========================================================-
THE BIG v4.4 IDEA: THE CITY IS ON THE AIR
-===========================================================-
In v4.3 the world reported on you. In v4.4 the world is playing in the background whether you are the subject or not, and you can talk to the people listening to it with you.
Get in a car, turn the radio on, and roughly every three minutes this happens without you doing anything:
- A ten second warning appears. Press N and the whole break is skipped.
- Your station host — the actual host of the actual station you are on — hands over to the break in character.
- Two or three adverts play for Los Santos businesses. At least one is built around something genuinely trending in the real world right now, because the mod searched for it.
- Weazel News reads two real world headlines, reported accurately, delivered as pure Weazel satire. If you have recently caused a crime spree, that goes out first, from the confirmed police dossier.
- The DJ comes back, throws one dismissive line at what just aired, and the music returns.
And if somebody is in the car with you, they were there for all of it.
-===========================================================-
WHAT MAKES v4.4 DIFFERENT FROM v4.3
-===========================================================-
v4.3 was about presentation and consequence.
v4.4 is about continuity, shared experience, and honesty about bugs.
CONTINUITY
The radio break runs on a real cycle. It survives a police chase. It survives an open conversation. It caches its own content ahead of time so a break starts speaking in about two seconds instead of twenty-five. It carries leftover content across game sessions.
SHARED EXPERIENCE
For the first time, an NPC and the player have both experienced the same thing at the same time, and both remember it. That is what the passenger-seat listening system is. It is not the NPC being told there was an advert. It is the NPC having the advert text in their context.
HONESTY
Twenty-six bugs, each with the actual root cause published. Several of them were things the code claimed to do and did not. One comment in the codebase said the blast protection was re-applied every scan; the line underneath made it run exactly once, forever. Another said scene ownership always wins; the check was never written. Those are in the changelog by name.
-===========================================================-
v4.4 BRAND-NEW FEATURE HIGHLIGHTS
-===========================================================-
The largest new systems and upgrades in LIVING CITY include:
- the radio break cycle, four chained live AI sessions every three minutes,
- 22 written station hosts across 26 supported stations,
- adverts built from a live web search of what is genuinely trending today,
- a ten second pre-roll warning with N to skip the entire break,
- shared listening, so an NPC in your car hears the real advert and news text,
- a five minute window in which they can react to it, quote it or argue with it,
- automatic ad pause that holds an open conversation instead of ending it,
- an on-screen prompt telling you to wait for the break or skip it with N,
- conversation priority, so dispatch, air unit and ambient barks stand down while you talk,
- ads and news deliberately exempt from that gate,
- the radio break content cache, six ads and six bulletins pre-written, up to twenty,
- cache copy authored in your selected language, not English,
- three-layer anti-repetition: a banned list, a rotating creative brief, and a similarity filter,
- a fifth chatbox skin dedicated to advert breaks,
- the new [ENTERCAR] tag, which finally lets an ordinary NPC get into your car,
- the new [ROBSTORE] tag, which walks an NPC to one of 16 real mapped stores,
- a rewritten [LEANONCAR] that no longer launches your car into the sky,
- the new [SNIPEKILL@n] tag for a specific numbered target at range,
- model-aware clothing detection that stops calling a suited Michael naked,
- an absolute 25 second ceiling on radio ducking so a chase cannot mute your music,
- two new developer guards, scopecheck and shadowcheck,
- 706 automated regression tests,
- and twenty-six traced-to-root-cause community bug fixes.
All major v4.1, v4.2 and v4.3 systems remain part of the experience unless explicitly replaced or improved.
-===========================================================-
NEW: THE RADIO BREAK CYCLE
-===========================================================-
Every three minutes, your station takes a break.
It is not a sound file. It is four chained live AI sessions:
HOST_INTRO — the real host of your real station hands over, in their own voice and character. Eight seconds, two sentences maximum. It is a link, not a monologue.
ADS — two or three short commercials, back to back, for Los Santos businesses. Cluckin' Bell, Fleeca, Ammu-Nation, Bean Machine, Sprunk, eCola, Los Santos Customs, Ponsonbys, Burger Shot, Pisswasser and invented ones. One absurd, one aggressive hard sell, one fake customer testimonial. Every advert ends with a rushed mumbled disclaimer admitting something terrible.
NEWS — Weazel News. If you have an unreported crime spree it leads with that, from the real dossier. Then two genuinely current real world stories, reported accurately, with the facts intact and the tone entirely satirical.
HOST_OUTRO — the DJ comes back, insults the break, and puts the music on.
Twenty-two station hosts are written in, including DJ Pooh on West Coast Classics, Big Boy on Radio Los Santos, Jesco White on Rebel Radio, Keith Morris on Channel X, Cara Delevingne on Non-Stop-Pop and Lazlow on WCTR. Twenty-six stations are supported in total.
You get a ten second pre-roll warning. Press N at any point to skip the entire break and go straight back to the music.
Configuration: RadioBreakCycle= turns it on or off, RadioBreakMinutes= sets the interval.
-===========================================================-
NEW: THE ADS ARE ABOUT TODAY
-===========================================================-
Before writing an advert, the mod searches the web for something genuinely trending right now — a viral meme, a big game release, a sports result, internet drama — and builds at least one commercial around a Los Santos business cynically cashing in on it.
This means the adverts age with the real world. A break you hear in six months will not be the same break you hear today.
Anti-repetition is enforced three ways, because the first version of this genuinely did repeat itself:
- The writer is shown everything already in the cache and explicitly forbidden from reusing an opening line, a brand or a punchline from it.
- Every batch is assigned a different mandatory creative angle and a different mandatory lead brand, rotating through eight angles and twelve brands, so two consecutive refills cannot converge even on the same trend.
- Anything that comes back too similar to existing copy is rejected outright by a similarity check before it can ever reach your speakers.
Worn-out openings are banned by name. "Tired of…" is on that list.
-===========================================================-
NEW: THE NPC IN YOUR CAR HEARS IT TOO
-===========================================================-
This is the part that does not exist anywhere else.
If an NPC is sitting in your vehicle when the break plays, the actual advert text and the actual news text enter their context. Not a note saying an advert happened. The words.
Afterwards, for five minutes, they can:
- laugh at how stupid the advert was,
- argue with a headline,
- quote a line back at you,
- complain that the station is nothing but commercials.
They will only bring it up if it fits the moment, and they can never claim to have heard something that was not actually broadcast.
It is gated honestly. Only an NPC who genuinely shared the cabin gets it. Someone standing on the pavement outside your car did not hear your radio, and the mod does not pretend they did. Lift drivers always count, because they are in the car by definition.
-===========================================================-
NEW: AUTOMATIC AD PAUSE
-===========================================================-
If a break starts while you are mid-conversation, the conversation pauses instead of being trampled.
Pauses, not ends. The NPC stays. Your history stays. The session stays warm.
Press your microphone or text key during a break and the mod tells you plainly: wait for the ad to end to talk, or press N to skip it and carry on. The message is throttled so holding the key does not spam your feed.
When the break finishes you simply continue the conversation you were already having.
This works during a lift as well as a normal chat.
-===========================================================-
NEW: CONVERSATION PRIORITY DURING A CHASE
-===========================================================-
Previously, a five star chase meant the police scanner cut across whatever an NPC was saying to you, every few seconds, forever.
In v4.4, while you have a live conversation open — menu open, scene running, recording, typing, awaiting a reply, or riding a lift — three systems stand down:
- the LSPD dispatcher,
- the air unit loudspeaker,
- ambient auto NPC chatter.
They resume the moment you close the conversation with Backspace.
Ads and news are deliberately exempt, because those are not interrupting your conversation. They are the radio, and the person you are talking to can hear them too.
A related bug was found while building this: any wanted star at all used to push the radio break back thirty seconds. A chase lasts longer than thirty seconds, so the timer reset forever and a break could never air during a pursuit. It can now.
-===========================================================-
NEW: RADIO BREAK CONTENT CACHE
-===========================================================-
Ads and bulletins are written ahead of time and stored in radio_break_cache.json next to the scenario cache.
Six of each are kept, up to a maximum of twenty, capped at 60 KB. The file appends and is never overwritten, so unused content carries across game sessions.
The practical effect: a break starts speaking in about two seconds instead of waiting twenty-five for the model to research and write. It is primed at boot and refilled after every break, in the background, over the REST endpoint so it can never interrupt audio you are listening to.
In v4.4 the cache is also written in your selected language. In the first build it was always authored in English regardless of your setting, because the language lock had been applied to the component that reads the copy rather than the one that writes it. Both now carry it, and copy already sitting in the file in English is translated as it is read.
-===========================================================-
NEW & IMPROVED TAGS IN v4.4
-===========================================================-
[ENTERCAR] / [GETIN]
The NPC walks over and physically gets into your car. Until v4.4 there was no general boarding tag at all — the only one that existed was gated behind an NPC already being a homie, which is why inviting an ordinary pedestrian along resulted in them agreeing enthusiastically and then standing on the pavement.
It picks a free passenger seat, never takes the driver seat while you are driving it, re-issues the task if they snag on a kerb, and gives up cleanly with a stated reason rather than leaving somebody walking into a wall forever.
[ROBSTORE] / [ROBSHOP]
Talk an NPC into robbing a shop and they walk to a real, mapped store and hold it up at gunpoint. Sixteen verified locations across 24/7, LTD Gasoline and Rob's Liquor. The clerk puts their hands up.
The walk is re-issued every eight seconds while they are still travelling, because ambient events love to eat a movement task. If you already handed them a weapon, they keep it — the mod only arms an NPC who is genuinely unarmed.
[LEANONCAR]
They walk to your car and lean on the front. Rewritten in v4.4 to target a point outside the bumper and hold the car still while they settle, because the old version teleported the ped inside the collision shell and the physics engine resolved that by launching your car into the sky.
[SNIPEKILL@n]
Take out a specific numbered person from the live roster at range. Distinct from a generic kill order, which picks whoever is nearest and usually ends in a fist fight.
-===========================================================-
THE v4.4 BUG HUNT — TWENTY-SIX ROOT CAUSES
-===========================================================-
Every one of these has a regression test that reproduces the original failure on the old code before proving the fix.
1. NPC gives you money and your balance never changes.
Three faults stacked. The pickup hash 0xFE3CE0F6 was not a real hash. The fallback path swallowed its own exception so it never ran. And ScriptHookVDotNet's Player.Money setter has a default: return; — it silently writes nothing at all on any model that is not Michael, Franklin or Trevor.
2. "Yesterday he was Frankie, today the same guy is Mario."
Identity was seeded from new Random(npc.Handle). A ped handle is a recycled pool slot, not a person. When a ped despawns the engine hands that same number to somebody completely different minutes later. Identity is now fingerprinted from appearance.
3. Saved NPCs greeted you like a stranger.
Memory files were keyed {modelHash}_{nameSlug}.json. The moment the name changed, the file could never be found again.
4. Rumours never spread.
The gossip system existed and did nothing. Its eligibility check tested for a {modelHash}.json filename that no longer existed after the memory rewrite, so every single pedestrian was skipped.
5. FlyLo FM never tuned.
The code sent RADIO_14_SAMPLED. The real station name is RADIO_14_DANCE_02.
6. Asking for a ride on a motorcycle always failed.
A collapsed ternary explicitly rejected vehicle class 8, which is Motorcycle.
7. New moods never appeared.
106 moods in the pool, the same dozen in play. The personality index lists were hardcoded with a maximum index of 59, so everything added after that was unreachable.
8. Hard crash, 0xc0000005, roughly thirty seconds into a shop scene.
The face-hold watchdog's own comment claimed scene ownership always wins. The check was never written. One ped ended up owned by the watchdog, the shop routine and the scene simultaneously, and CLEAR_PED_TASKS fired on it every 900ms for thirty seconds while the scene ran its own task sequence on the same ped. The task tree was torn out from under its own pointer. The test reproduced 34 destructive clears on the old code and 0 on the new.
9. "Playing as Michael and everyone thinks I'm naked."
Clothing detection read drawable 0 on components 11 and 4 and called it undressed. That is true on a freemode body and false on every protagonist — Michael's stock outfit is 0/0. Nudity is now only inferred on models where drawable 0 provably is the bare body. The old logic misfired on 31 of 961 tested combinations.
10. Chatbox vanished two to three seconds after appearing.
The 45 second panel watchdog called its recovery routine, and that routine never reset the timestamp it is judged by. Anything that re-opened the panel matched the stale timestamp instantly and got killed again on the next frame. One log showed 120 force-releases in 40 seconds.
11. Chatbox truncated past roughly 380 characters.
The text command has exactly four slots of 99 characters, a hard ceiling of 396. The push loop added a fifth component, which malforms the command, and the engine drew nothing at all.
12. LEANONCAR launched cars into orbit.
The ped was teleported to a point inside the car's collision shell. Physics resolved the overlap with a separating impulse.
13. Radio break played 85 chunks of silence.
The break never claimed the audio lane, so gain stayed at 0.0 for the entire transmission.
14. Music returned in the middle of a break.
The duck was held for the audio that had just played, about 3.8 seconds, but the next stage takes 15 to 30 seconds to generate. The hold expired in the gap.
15. Music died for an entire chase, and Q stopped opening the radio wheel.
Every dispatch call pushed the duck ceiling forward by twenty seconds. During a pursuit they fire faster than that, so the ceiling was shoved forward indefinitely. One log showed 51 unbroken seconds of silence. The wheel died with it, because it cannot open on a vehicle whose radio is disabled. There is now an absolute 25 second cap regardless of how many transmissions stack up.
16. NPCs never remembered the Weazel bulletin.
City awareness was wired to the standalone bulletin only. The radio break news stage never called it. Four breaks aired in one test session and not one awareness seed was written.
17. The same advert twice in a row.
Every cache refill used an identical prompt, found the same trend and wrote the same joke, with no knowledge of what was already cached.
18. Adverts always in English regardless of language setting.
Three code paths, and the one missing the language lock was the one that writes the cached copy. It authored in English, and the reader was then instructed to read it word for word — which beats a language lock aimed at the reader.
19. The "no response" death spiral, where once it broke it stayed broken.
The session closer ran unconditionally on every start, killing sockets that were still in setup.
20. Los Santos Customs menu locked up during a break.
The N skip key used SuppressKeyPress, starving the shop menu of the same input.
21. The rebindable dismiss key did nothing.
It was read at the bottom of the key handler, behind sixteen early returns.
22. "Let me look that up" broadcast live on air.
Nothing forbade the anchor from narrating their own research. There is now an explicit ban list on every broadcast prompt.
23. Commercials displayed the LSPD air unit badge.
The avatar emblem block had no branch for the advert skin, so it fell through to the helicopter badge.
24. Shop scenes drifted off topic.
"You got any food?" produced a lecture about the weather, because routines inherited the player's last direct line. Each routine now states its single purpose and bans small talk outright.
25. Traffic drivers were hijacked into scenes and got out mid-road.
No driver guard existed, and the scene called TASK_LEAVE_ANY_VEHICLE on whoever it picked.
26. The radio break killed its own audio one second after starting.
Disabling the vehicle radio makes GET_PLAYER_RADIO_STATION_NAME return RADIO_36_AUDIOPLAYER. The station-change guard read that as the player switching station and aborted the break it had just started.
-===========================================================-
CONTENT IN v4.4
-===========================================================-
- 612 NPC first names, 308 male and 304 female
- 106 mood states
- 124 backstories
- 42 job types
- 26 radio stations with 22 written station hosts
- 16 news segment types
- 55 verified scenario props, every one checked against the game's own prop list
- 29 faction skins from 186 mapped pedestrian models
- 40 behaviour modes
- 20 named lift destinations
- 16 mapped robbable store locations
- 14 scene languages, 8 fully localised menu languages
- 706 automated tests, all passing
-===========================================================-
TRY THIS FIRST IN v4.4
-===========================================================-
1. Get in a car and turn the radio on.
2. Drive for a few minutes. When the break warning appears, do not skip it. Listen to the whole thing.
3. Now find a pedestrian, ask them to get in, and drive off.
4. Wait for the next break. Let it play with them in the car.
5. When the music comes back, ask them what they thought of the adverts.
They were there. They heard it.
-===========================================================-
THE BIG v4.3 IDEA: THE CITY TALKS BACK (previous release)
-===========================================================-
Earlier versions made individual pedestrians intelligent.
v4.3 makes the city itself a participant.
Previously, everything the AI produced was aimed at you: an NPC spoke to you, a scene played out in front of you, an episode involved people standing near you.
In v4.3 there are now systems that talk about you instead of to you.
Cause a serious crime spree and the following can happen without you speaking to a single person:
- A police dispatcher reads your crime, your street, your zone and your last known direction over the scanner in a clipped radio cadence.
- A helicopter unit with its own separate personality calls your position from above.
- After you escape and stay clean, a completed dossier of everything you did becomes one real Weazel News bulletin that interrupts your car radio and then restores the station volume afterwards.
- Every pedestrian in the city now silently knows that story for roughly twenty real minutes.
- Roughly eight percent of them are allowed to bring it up naturally, but only from the second conversational turn onward, and only three per broadcast, so it stays a rare surprise instead of a citywide chant.
- If you were busted or killed, your identity became public, and around half of nearby pedestrians can recognise your face and react: flee, insult you, or call 911.
- Every NPC who has already told you the story is locked out forever, so nobody repeats the same news at you twice.
That is a full loop: you act, the world records it, the world broadcasts it, and the world remembers it.
-===========================================================-
WHAT MAKES v4.3 DIFFERENT FROM v4.2 (previous release)
-===========================================================-
v4.2 was about conversations becoming episodes.
v4.3 is about consequence, presentation, and reliability.
The three headline changes:
CONSEQUENCE
Crime spree recording, police dispatch, Weazel News, air unit, city awareness, grudge decay, debts and gossip mean your actions now leave a trail through the world that outlives the conversation that started it.
PRESENTATION
The Neon Glass renderer replaces a panel that used to despawn and respawn up to four times in a single turn. It is now one persistent panel that changes its own contents, with a real dual waveform, a transcript of what your microphone actually heard, and colours that identify who is talking.
RELIABILITY
Twelve reproducible bugs from the community thread and fresh session logs were traced to root cause and fixed, including the long-standing "NPC accepts a fight then runs away" problem, which turned out to be a relationship-group issue rather than a combat issue.
-===========================================================-
v4.3 FEATURE HIGHLIGHTS (previous release, all still active)
-===========================================================-
The largest new systems and upgrades in NEON GLASS include:
- Neon Glass UI engine with 15 render layers,
- 5 panel presets: Cinematic, Compact, Minimal, Ghost, Custom,
- 7 colour themes including Mood Auto and a live Rainbow HSV cycle,
- 4 anchor positions and adjustable scale and opacity,
- live preview while you scroll the settings menu,
- automatic aspect-ratio correction for ultrawide and super-ultrawide monitors,
- auto-fit panel height measured from real text width,
- zero-flicker single-panel state machine,
- dual 14-bar rolling waveform showing your microphone and the NPC voice separately,
- an in-panel dimmed transcript row showing what your microphone actually heard,
- lock-free volatile audio mirror that removed a 30-times-per-second lock fight,
- 29 faction skins mapped from 186 pedestrian models,
- dedicated broadcast styling for police, news and air unit transmissions,
- AI police dispatch engine reading live wanted level, crime, street and direction,
- Weazel News crime spree recorder and automatic bulletin,
- LSPD air unit helicopter loudspeaker with its own voice and personality,
- a four-lane audio arbiter so NPC, News, Dispatch and Heli can never overlap,
- in-game radio ducking to roughly ten percent while an anchor speaks,
- vehicle cabin muffling with a real low-pass filter,
- the new [OPENWINDOW] and [CLOSEWINDOW] tags that physically roll a window and open the filter,
- the new [STANDONONELEG] tag,
- the new [STOPFOLLOWING] self-initiative behaviour,
- the new [LIFT_PLAYERDRIVE] and [LIFT_GIVEBACKDRIVE] driver-swap tags,
- Memory v3 with exponential grudge decay,
- tracked debts in both directions,
- gossip that writes into other NPCs' memory files and spreads by hops,
- the city awareness engine with tiered aware / vocal / recogniser behaviour,
- a Custom Rules text file appended to every NPC prompt across all five AI sockets,
- an AI Thinking Level dial with four steps and written pros and cons,
- a Google Search grounding toggle,
- German language support, bringing the total to eight,
- a rebindable dismiss key,
- a public-release Credits and Community menu hub,
- lift fare charged only on a completed ride,
- and twelve traced-to-root-cause community bug fixes.
All major v4.1 and v4.2 systems remain part of the experience unless explicitly replaced or improved.
-===========================================================-
COMPLETE FEATURE MAP — LIVING LS AIs A TO Z
-===========================================================-
This is the quick A-to-Z map of the complete Living LS AIs experience in v4.4. Every item is explained in greater detail later in this description.
A — AI Conversations, Actions, Auto Reactions & Airwaves
- Real Gemini Live conversations.
- Text and microphone input.
- Streamed native voice output.
- Validated physical action execution.
- Auto NPC Convo reactions to personal space, staring, suspicious following, collisions and social tension.
- AI-generated LS Episodes that can begin without a player command.
- New in 4.4: a full radio break cycle — DJ, adverts and Weazel News — playing on your car radio every three minutes.
B — Behaviors, Bravery, Body States & Broadcasts
- 40 selectable NPC behavior styles.
- Brave, cowardly, moral, criminal, friendly, drunk, savage, disciplined, tourist, hustler and many other personalities.
- Physical body states including hands up, cower, kneel, dance, push-ups, phone, recording, yoga, sitting, sleeping, drinking, smoking, cover and fleeing.
- Dynamic transition and stop controls for persistent states.
- New in 4.4: dispatch, air unit and ambient barks all stand down while you are mid-conversation.
C — Context, Combat, Conditional Contracts & City Awareness
- Location, interior, vehicle, radio, activity, held-item, relationship, visual and witness context.
- Physical aim, shoot, fight, cover, surrender, flee and disengage logic.
- Multi-turn mission contracts with conditional progression after refusal, non-payment, compliance, escape or threat.
- New in 4.4: shared listening context, so an NPC who rode with you through a radio break has the real advert and news text in their head.
D — Direct Talk, Drag Races, Dogs, Diagnostics & Dispatch
- Menuless/direct interaction flow.
- Dedicated drag race system with wagers, vehicle selection, countdown, finish detection, reactions and cleanup.
- Dog commands for movement, tricks, guard, fetch, vehicles and numbered targets.
- Detailed bridge, vision, audio, action, scene, cache and scheduler diagnostics.
- New in 4.4: radio break stage diagnostics, cache dedupe reporting and ad-pause state in the log.
E — LS Episodes & Escape Dossiers
- AI-only persistent random incident packs.
- 11 fresh scenarios requested every session, merged with unused previous ones.
- Maximum 55 unique cached scenarios and 100 KB cache size.
- Physical openings, props, evolving body states, linked voices, structured outcomes and natural cleanup.
- New in 4.4: that same dossier is also read out as the lead item in the news stage of a radio break.
F — Friendship, Follow, Flee & Faction Skins
- Persistent friendship scoring and friend identity.
- Homie/bodyguard-style relationships.
- Follow and stop-following states, and in 4.3 an NPC can decide to stop following you on their own initiative.
- Physical fear and flee reactions.
- New in 4.4: the [ENTERCAR] tag, so an ordinary NPC you invite along actually walks over and gets in.
G — Gemini Live, Grounding, Grudges & GTA Integration
- Persistent Gemini Live WebSocket bridge.
- Native voice and microphone transcription workflow.
- Main-thread GTA native execution.
- Human-only grounded LS Episode pairing.
- No arbitrary AI native names, hashes, animation dictionaries or prop models.
- New in 4.4: adverts and news bulletins are built from a live web search of what is genuinely trending today.
H — Homies, Hands Up, History & Helicopters
- Become-homie and accomplice systems.
- Hands-up/hands-down tactical states.
- Persistent NPC history, conversation count, player-name knowledge and witnessed-event memory.
- New in 4.4: the air unit now holds fire while you are actually mid-conversation with somebody.
I — Identity, Interiors, Interruptions & INI Control
- Canonical story-character identity locks.
- Interior and neighborhood awareness.
- Player microphone interruption during two-NPC and three-NPC scenes.
- Participant invalidation protection.
- New in 4.4: RadioBreakCycle and RadioBreakMinutes in the INI, and a dismiss key that is finally read before the sixteen early returns that used to eat it.
J — Jobs, Judgement & Joined Scenes
- NPCs may accept, refuse, judge, negotiate or demand payment for jobs.
- Accepted jobs become commitment-locked.
- Two-person and three-person joined Gemini scene sessions.
- New in 4.4: the [ROBSTORE] tag, so a shop robbery you talk somebody into physically happens at one of 16 real mapped stores.
K — Key Simplicity & Knowledge
- Gemini-first modern workflow centered around one Gemini API configuration.
- NPC knowledge shaped by personality, memory, world state, vision and canonical relationships.
- API keys remain private and must never be shared in public logs.
- v4.3 position: no shared key will ever be bundled with the script. A shared public key gets rate-limited and banned within hours and then the mod is broken for everybody.
L — Language, Lip-Sync, Lifts & Lanes
- Strict multilingual scene language locking.
- Original stable audio-driven lip-sync.
- Dynamic spatial voice positioning.
- General lifts, waypoint travel and 20 named destinations.
- New in 4.4: the radio break cache is authored in your selected language, and English copy already on disk is translated as it is read.
M — Memory v3, Microphone & Money
- Persistent memory with exponential grudge decay, tracked debts and spreading gossip.
- Bounded history and full backward compatibility with v2 memory files.
- Live microphone streaming with ownership protection.
- Verified money deductions and ordered payment plus scene-start transactions.
- New in 4.4: money from an NPC actually arrives in your wallet, verified against the game's own stat before and after.
N — NPC-to-NPC, Three-NPC & News
- NPC A to NPC B conversations.
- NPC A to NPC B to NPC C group scenes.
- Independent voices, shared transcripts, fair rotation, target ownership, physical actions and player participation.
- Numbered target roster with stable handle locking.
- New in 4.4: the news stage of a radio break now seeds city awareness, which it never did before.
O — Outcomes, Ownership & Occlusion
- Resolved, unresolved and escalated LS Episode outcomes.
- Action ownership prevents the target from copying the executor's commands.
- Session and microphone ownership reject stale packets.
- Spatial audio occlusion and distance filtering.
- New in 4.4: shared listening is cabin-gated, so only an NPC who genuinely sat in your car claims to have heard your radio.
P — Props, Personalities, Physical Performance & Presets
- Validated phones, cameras, wallets, money bags, cash, documents, drinks, food and evidence props.
- 40 personality modes.
- Physical performance rather than dialogue-only narration.
- New in 4.4: a fifth panel skin dedicated to advert breaks, so a commercial no longer wears a police badge.
Q — Queues, Quotas & Quality Controls
- Main-thread action queues.
- Mandatory LS Episodes wait in a safe gameplay queue.
- Gemini quota and API availability handled through cache, retry, key rotation and backoff.
- PCM quality verification before accepting voiced scene turns.
- New in 4.4: the search grounding quota trips cleanly, disables search for that session and lets the conversation carry on.
R — Relationships, Routines, Random Stories & Radio
- GTA story relationship network.
- Ammu-Nation, clothing-store and convenience-store routines.
- Random LS Episodes independent of NPC Routines.
- Radio and vehicle context.
- New in 4.4: radio ducking has an absolute 25 second ceiling, so a long chase can never mute your music or kill the Q radio wheel.
S — Spatial Audio, Shops, Story Characters, Stop Commands & Skins
- Dynamic stereo positioning and distance attenuation.
- Shopping and checkout scenes.
- Michael, Franklin, Trevor, families, allies, rivals and broader story identities.
- Complete semantic NPC-to-NPC stop-command family.
- New in 4.4: a rewritten [LEANONCAR] that leans on your bonnet instead of launching it into the sky.
T — Target Locks, Three-Person Scenes, Transitions & Thinking Level
- Stable numbered target handles.
- Three-person linked scenes.
- Dynamic transitions between cower, stand, flee, yoga, phone, record, aim, dance, sit, sleep and other states.
- New in 4.4: [SNIPEKILL@n] takes out a specific numbered person at range instead of whoever happens to be nearest.
U — Unscripted Incidents & User Freedom
- No hand-written local fallback templates for LS Episodes.
- Player can aim, shoot, reload, use the weapon wheel and melee during supported conversations and scenes.
- Every session can produce a different story pack.
- New in 4.4: an ad break pauses your conversation instead of trampling it, and tells you to wait or press N to skip.
V — Vision, Vehicles & Voices
- Fresh screen-frame visual context.
- Vehicle and window conversations.
- Lift, exit, drive-away, stop-for-player and race systems.
- Independent Gemini voices for linked participants.
- New in 4.4: an NPC riding with you hears your radio, and shared listening works during a lift as well as a normal drive.
W — Witnesses, Weapons, World Awareness & Weazel
- Crime, dead-body, threat and suspicious-action awareness.
- Weapon handoff and persistent weapon ownership.
- Location, time, activity, radio, vehicle and physical evidence awareness.
- New in 4.4: rumours finally spread — the gossip system was silently skipping every pedestrian because of a stale filename check.
X — XML/Legacy Tag Repair
- Repairs validated legacy forms such as and .
- Repairs ordinary scene tags into the NPCTONPC namespace.
- Unknown AI markup remains non-executable.
Y — Your Choices Matter
- Personality and relationship affect acceptance.
- Payment and weapon exchange affect contracts.
- Player interruption can redirect, stop, continue or escalate a scene.
- Target replies determine conditional physical phases.
- New in 4.4: what you sat through on the radio becomes something you and a passenger genuinely share.
Z — Zexiva's Living Los Santos
- A complete single-player AI sandbox where conversations become physical, persistent, voiced Episodes, and where the city broadcasts and remembers what you did.
-===========================================================-
NEW: THE NEON GLASS UI ENGINE
-===========================================================-
The dialogue panel was rebuilt from scratch.
The old panel had a structural problem. It called its show routine separately for listening, transcribing, thinking and reply, which meant the box visibly died and respawned up to four times in a single conversational turn. It also contained 77 hardcoded magic numbers producing exactly one fixed look, and it stretched badly on ultrawide monitors.
Neon Glass is one persistent panel whose contents change.
The renderer draws fifteen ordered layers:
1. Outer bloom.
2. Drop shadow.
3. Three-band glass body.
4. Scanlines at a fixed interval.
5. Left neon spine in three segments running bright to dim.
6. Top and bottom hairlines.
7. Broadcast overlay: a counter-travelling blue and red police siren sweep, a Weazel red lower-third band, or an amber helicopter searchlight sweep.
8. A travelling top-edge shimmer while the system is busy.
9. Corner brackets and right-hand verticals.
10. Footer strip.
11. Avatar with a triple ring.
12. Name badge, friendship pips, faction chip and header status dot.
13. Recording indicator and lift ribbon.
14. The dimmed "YOU said" transcript row.
15. Body text with typewriter caret, footer hint with marching dots, character counter and action-flash toast.
Presets
- Cinematic
- Compact
- Minimal
- Ghost
- Custom
Colour themes
- Mood Auto, which follows the NPC's current mood score
- Cyber
- Sunset
- Toxic
- Royal
- Blood
- Rainbow, which cycles hue continuously
Anchors
- Bottom
- Top
- Bottom Left
- Bottom Right
Scale and opacity are both adjustable, and every change previews live while you scroll the menu rather than forcing you to close it and test.
Aspect-ratio correction is applied on every draw, so 21:9 and 32:9 monitors stop stretching the panel.
Panel height auto-fits from the real measured text width divided by the available column, capped at a sensible maximum, so a two-word reply does not get a nine-line box.
If you prefer the old look, the legacy renderer is still available through a configuration switch.
-===========================================================-
NEW: THE DUAL WAVEFORM IS REAL DATA
-===========================================================-
Under the avatar there are two independent 14-bar rolling histories.
The top row, in blue, is your microphone level.
The bottom row, in the current accent colour, is the NPC's actual streamed voice level.
New samples push in from the right and the history scrolls left. Neither row ever disappears: a silent side flatlines to a thin idle line instead of vanishing, so the panel never visually pops while you talk.
The meter is capped so it cannot burn frames, and it now reads from a lock-free volatile mirror instead of polling the audio buffer roughly thirty times a second. That old polling behaviour was fighting the same lock the PCM writer needed and was a genuine source of audio flicker during replies.
-===========================================================-
NEW: 29 FACTION SKINS
-===========================================================-
186 pedestrian models are mapped to 29 visual identities. When you talk to someone, the panel adopts their faction colours and shows a faction chip.
Gangs and crews
- Ballas
- Families
- Vagos
- The Lost MC
- Marabunta
- Korean Mob
- Triads
- Armenian Mob
- Varrios
Law and government
- LSPD Officer
- Sheriff
- NOOSE / SWAT
- FIB
- Army
- Security
- Inmate
Services
- Paramedic
- Firefighter
- Medical
Social and regional
- Blaine County
- Professional
- Nightlife
- Infected
- Animal
- Transient
- Beach
- Business
- Hipster
- Country
Radio skins are handled separately. Police dispatch, Weazel News and the LSPD Air Unit each get their own broadcast styling, so you instantly know a transmission is not a person standing next to you. A late fix also clears any lingering faction colour when a radio transmission begins, because a Ballas-purple panel labelled LSPD DISPATCH is not acceptable.
-===========================================================-
NEW: AI POLICE DISPATCH
-===========================================================-
A real AI dispatcher now runs on the police band.
The dispatcher receives live world state and reads it back in a clipped radio cadence:
- your current wanted level,
- the type of crime,
- the street name,
- the zone,
- and your last known direction of travel.
It is gated so it cannot spam during an active call, it is throttled with diagnostic logging that records exactly why a transmission was skipped, and it outranks ambient chatter, so a dispatch call is allowed to cut across a random pedestrian bark.
Example:
"All units, we have a 187 in progress on Marathon Avenue. Suspect on foot, last seen heading west."
-===========================================================-
NEW: WEAZEL NEWS BULLETINS & THE CRIME SPREE RECORDER
-===========================================================-
Weazel News does not report random noise. It reports you, accurately, using a recorded dossier.
The crime spree recorder arms at three stars and then records continuously until you are completely clean again:
- peak wanted level,
- police killed,
- civilians killed,
- vehicles exploded,
- shooting events,
- the zone where the spree started,
- every chase zone,
- every shooting zone,
- your escape zone,
- your escape method,
- and the final outcome: ESCAPED, BUSTED or WASTED.
Staying clean for a short confirmation window counts as an escape. About a minute later the completed dossier automatically becomes one real bulletin.
While the anchor speaks, your in-game radio station ducks to roughly ten percent and then restores. Reported dossiers are wiped afterwards so the anchor can never repeat old news, and a watchdog guarantees the bulletin can never sit stuck on "Generating..." forever.
Example:
"We're getting reports of gunfire in Del Perro. More on this as it develops."
-===========================================================-
NEW: LSPD AIR UNIT
-===========================================================-
A police helicopter has its own separate voice and its own personality.
During a pursuit it calls your position from above. Its loudspeaker is deliberately the single loudest thing in the game, and it outranks ground dispatch, because in a real pursuit the chopper takes the lane.
Example:
"Air One has visual. Suspect is in the alley behind the strip mall, still moving."
-===========================================================-
NEW: THE FOUR-LANE AUDIO ARBITER
-===========================================================-
With NPCs, dispatch, news and a helicopter all capable of speaking, the mod needed traffic control.
Four audio lanes are claimed and released explicitly:
- NPC
- News
- Dispatch
- Heli
Two systems can never fight for your speakers mid-sentence. A queued pedestrian bark will not jump the line while LSPD is transmitting; it waits. A bark that was queued twelve seconds ago is discarded if you are already a block away, because it is no longer relevant.
Radio transmissions are also pinned dead centre in the stereo field rather than positioned in 3D space, since a voice coming out of a scanner does not have a physical location in the world.
-===========================================================-
NEW: CITY AWARENESS ENGINE
-===========================================================-
After a bulletin airs, Los Santos remembers it for roughly twenty real minutes.
If every pedestrian opened with "did you hear the news," the mod would be unbearable within three minutes. So awareness is tiered:
AWARE — the overwhelming majority
The story sits in their context. They will never raise it themselves. They only answer if you ask.
VOCAL — roughly eight percent
They may bring it up naturally, and only from the second conversational turn onward. Hard-capped at three per broadcast so it stays a rare surprise.
RECOGNIZER — only when you were BUSTED or WASTED
Your identity became public. Around half of nearby pedestrians recognise your face and react physically: flee, insult you, or call 911.
Every NPC who speaks about it is locked out permanently, so nobody repeats the same story at you.
Knowledge is injected instantly. An earlier build delayed awareness by sixty seconds, which meant that if you asked an NPC immediately after a bulletin they knew nothing. Only the ability to raise it unprompted is delayed now, which is the part that actually needed pacing.
Linked NPC-to-NPC scenes hear the news too, so two strangers can naturally end up discussing something you did.
-===========================================================-
NEW: MEMORY v3 — GRUDGES, DEBTS & GOSSIP
-===========================================================-
NPC memory is no longer a flat friendship score.
Exponential grudge decay
Individual events carry their own weight and fade at their own speed. Being shot at stays in someone's head for roughly two weeks of decay. A plain insult fades in about a day. Everything in between scales smoothly, so a serious betrayal is not forgotten at the same rate as a rude comment.
Tracked debts
Money owed in either direction is stored as its own record. An NPC can be genuinely friendly with you and still want their two hundred dollars back.
Gossip that spreads
When something notable happens it propagates outward to nearby pedestrians and is written directly into their memory files. The radius grows with each hop, up to a bounded number of people per event, inside a freshness window. Walk back an hour later and a total stranger may already know what you did.
Full backward compatibility
Old v2 memory files load without conversion. Nothing you already built with an NPC is lost.
-===========================================================-
NEW: CUSTOM RULES FILE
-===========================================================-
A plain text file whose contents are appended to every NPC prompt.
Location:
scripts/LLAI SERVER/LLAIBridge/LLAI CUSTOM RULES.txt
Behaviour:
- auto-created with a template on first run,
- lines beginning with # are comments,
- needs more than a few real characters before it activates,
- capped at 8000 characters,
- reaches all five AI sockets.
The old /CustomPromptHere: override was retired because it replaced the entire prompt engine and therefore broke every action tag. This one adds to the prompt instead of replacing it.
The parser passed its full test set and was confirmed working in game with a complete "everyone in Los Santos believes they are the strongest person alive" rule set. A sample file ships next to the template.
-===========================================================-
NEW: AI THINKING LEVEL
-===========================================================-
A four-step dial in the menu, with pros and cons written out in your own language so you are not guessing what you just changed.
Minimal — default
Fastest possible reply. Simplest reasoning.
Low
Slightly smarter. Small delay.
Medium
Handles complex requests. Noticeable pause.
High
Deepest reasoning. Slowest, and it does break conversational flow.
Why this needed fixing: the bridge was hard-coding a thinking budget of zero into five different sockets, and it was using the wrong parameter family entirely for the newer model generation, which rejects it. v4.3 detects the model family and sends the correct form.
-===========================================================-
NEW: GOOGLE SEARCH GROUNDING TOGGLE
-===========================================================-
An optional toggle that attaches a search tool to the live session so NPCs can reference real information.
Honest note: this is provided as an experimental option and defaults to OFF. Grounding support depends entirely on what the live model actually honours, and in testing the current live preview model did not always issue search queries. It is harmless when disabled and it is documented here rather than hidden.
-===========================================================-
NEW: 8 LANGUAGES INCLUDING GERMAN
-===========================================================-
Requested directly by the community.
- English
- Hindi
- Portuguese
- Spanish
- French
- Italian
- Japanese
- German (new in 4.3)
This is not just NPC speech. Menus, notifications, item descriptions and the scene language rules were all localised.
The bug behind this: roughly 275 notification strings were silently English-or-Portuguese only, because the translation helper returned its input unchanged unless the language happened to be Portuguese. v4.3 replaces it with a proper runtime lookup so every language actually resolves.
The multilingual scene language lock from v4.2 remains, covering English, Hinglish, Haryanvi, Bhojpuri, Khari Boli, Spanish, Brazilian Portuguese, Japanese, French, Italian, Simplified Chinese, Malaysian Malay, Arabic and Indonesian.
-===========================================================-
NEW & IMPROVED TAGS IN v4.3
-===========================================================-
[OPENWINDOW]
An NPC inside a vehicle physically rolls their own window down so you can actually hear them. This pairs with the cabin muffling system: the moment the glass drops, the low-pass filter opens and the voice becomes clear.
[CLOSEWINDOW]
Rolls it back up. The muffle returns smoothly.
[STANDONONELEG]
A stock ambient yoga scenario whose tree-pose phase has the ped balancing on one leg. Yes, this genuinely exists in GTA V.
[STOPFOLLOWING]
An NPC who is following you can now decide to stop on their own initiative and walk away. Previously they could only stop when you ordered it. This was implemented purely through prompt law and worked examples, with zero keyword detectors, because word-matching guards are fragile and produce false positives.
[LIFT_PLAYERDRIVE]
During a lift, you take the wheel and the NPC moves to the passenger seat. The route pauses.
[LIFT_GIVEBACKDRIVE]
Hand the wheel back. The NPC becomes the driver again and the route resumes.
[FIGHTENEMY]
Restored. This tag was listed in the prompt but its supporting field was write-only, meaning an NPC who agreed to defend you never actually engaged. It works now.
-===========================================================-
NEW: VEHICLE CABIN MUFFLING
-===========================================================-
Acoustic realism for vehicle conversations.
A voice coming from inside a closed car is filtered. When the window comes down, the filter opens. When it goes back up, the muffle returns smoothly rather than snapping.
Combined with the existing spatial audio system, this means a driver talking to you through a closed window genuinely sounds like a driver talking to you through a closed window.
-===========================================================-
THE v4.3 BUG HUNT — TWELVE REPORTS, TWELVE ROOT CAUSES (previous release)
-===========================================================-
Community reports were not worked around. Each one was traced to the actual line that caused it.
1. "90% of NPCs think they're Beverly."
Reported by impoliceofficer, who noticed the problem scaled with the number of files in the memory folder: 135 files made it constant, deleting them made it stop.
Root cause: story-character name matching ran against generated ambient names, so more memory files meant more collisions.
Fix: a story-category gate plus a whole-word matcher applied across 117 call sites.
2. NPC says "I'm hitting you" while standing still.
Root cause: combat ability defaulted to Poor, so the engine accepted the task and then held position.
Fix: combat ability, movement and range set explicitly, plus anti-coward combat attributes.
3. NPC accepts a fight, then runs away.
This was the big one, and it took a full session log to find.
Root cause: the in-chat combat path never moved the ped into the HATES_PLAYER relationship group. Without it the engine classifies you as a threat, which generates a panic and flee event, rather than as an enemy, which generates a combat task. Every reassert tick lost to a fresh flee event. That is also why it only ever worked after you cancelled the conversation.
Fix: explicit enemy identity, removal from the original group, a hard immediate task clear rather than a soft abort, the anti-flee combat attribute, identity re-asserted every tick, and a longer lock window.
4. Space bar dismiss makes you jump or handbrake.
Reported by impoliceofficer.
Fix: the dismiss key is now rebindable through DismissKey= in the INI, and the "wait until audio ends" gate was removed so it responds immediately.
5. The beer and weed errand scam.
Reported by impoliceofficer, including the specific case of an NPC named Wayne who took a hundred dollars for weed, called his dealer, quoted a price and then ran away.
Root cause: NPCs were accepting errands the engine cannot physically perform.
Fix: a hard prompt law stating exactly which errands exist. Money taken for an impossible errand no longer happens because the errand is no longer offered.
6. NPCs refuse to help in shootouts.
Reported by impoliceofficer.
Root cause: the ambient cowardice profile kept overriding the combat order.
Fix: AlwaysFight and DisableFleeFromCombat re-applied for as long as the combat lock is active.
7. Voice conversations randomly stop working until you press Backspace.
Reported by impoliceofficer.
Fix: session and turn ownership guards, warm-hold handling, and a microphone queue that discards stale audio safely instead of jamming.
8. Audio flicker during replies.
Found in session logs.
Root cause: the waveform polled the audio buffer roughly thirty times a second and fought the same lock the PCM writer needed.
Fix: a lock-free volatile mirror.
9. Backspace did nothing while the Settings menu was open.
Found in logs.
Fix: Backspace now clears menus and the panel in one press.
10. An NPC never stops following on its own.
Found in logs, where the player had to manually say "then stop following me," and the NPC responded with a drive-away tag while standing on the pavement with no vehicle.
Fix: the prompt now grants the NPC the right to leave, with worked good and bad examples including that exact failure. No keyword detectors were added.
11. [WAVE] never played.
Found in logs, failing four times out of four.
Root cause: it used a multiplayer celebration animation dictionary that never streams in singleplayer.
Fix: swapped to a gesture that is already resident in both the male and female standing-casual dictionaries, and the animation load budget was raised.
12. Lift driver never exited and the fare never settled.
Root cause: the drop-off logic lived inside the renderer behind three early returns, so with the chatbox hidden it never ran at all.
Fix: extracted into its own unconditional tick.
Additional fixes in the same pass:
- The lift fare was being charged the instant a ride started; it is now charged only when the ride actually completes.
- After a drop-off the driver would exit and jack a nearby vehicle. Fixed.
- A mobile phone was being counted as a weapon. Fixed with the shared weapon check.
- Every ped kept ranting about smog that only exists because of graphics mods. Removed.
- An auto-convo NPC could hold the bridge hostage so the player could not start a new conversation. Fixed.
- A dispatch open event never appeared in the bridge while heli and news did. Fixed.
- A news blackout could stick for three straight minutes. Fixed.
- The episode director stalled for over two minutes while the player was ragdolling on a bike. Fixed.
- Weazel News could hang forever on "Generating..." if the timeout fired the same second the audio arrived. Fixed with a watchdog.
- A world-event spacing correction was logging 33 times per second. The correction still runs every tick; only the log is throttled.
- Dead code cleanup: an unreferenced goto label, two write-only variables, and one write-only field that was hiding an entirely dead feature.
One request that was declined
Several people asked for a working API key to be bundled directly inside the script. That is a hard no. A shared public key is rate-limited and banned within hours, and then the mod is broken for everybody, including the people who asked. A free Gemini key takes about a minute to create and stays yours.
-===========================================================-
EVERYTHING FROM v4.2 AND v4.3 IS STILL HERE
-===========================================================-
LIVING CITY is an expansion, not a replacement. Everything below remains fully present and active in v4.4.
LS EPISODES
Los Santos generates independent AI-only episodes around you, with no hand-written local scenario templates. Eleven fresh scenarios are requested every game session and merged with unused previous ones, up to 55 unique cached scenarios and 100 KB. There is a 50% opportunistic check every 10 seconds and a mandatory deadline every 30 seconds, which waits for a safe gameplay window rather than interrupting chat, microphone recording, an active scene, a lift, combat, ragdoll or unsafe vehicle conditions.
TWO-NPC AND THREE-NPC LINKED SCENES
NPC A can walk to NPC B and hold a fully linked conversation with independent Gemini Live sessions, independent voices, a shared chronological transcript, physical state facts, language locking and scene-ending rules. Three-NPC scenes add round-robin speaking, fair participation, optional routing, target validation and duplicate-person protection.
MISSION CONTRACTS AND THE NEGOTIATION LEDGER
A mission can be negotiated across many turns. A dedicated raw negotiation ledger preserves the chronological deal so that a payment line modifies the job instead of replacing it, and a short confirmation like "go" or "do it" cannot erase the original concrete request.
COMMITMENT LOCK
Before accepting, an NPC keeps full agency to refuse, question, negotiate or demand payment. Once they accept, take payment and walk to the target, they cannot reopen the negotiation inside the scene.
NUMBERED TARGET ROSTER
The AI receives a numbered roster of up to five nearby entities with name, gender, type, role, distance, activity and vehicle state, then selects an exact target. Handles are locked for the conversation, so "3RD: tourist woman" cannot silently become "3RD: random male driver" while you negotiate.
ACTION OWNERSHIP
Every physical tag belongs to the current speaker. The target does not copy the executor's contract just because the shared transcript contains the word "shoot." They react as themselves: hands up, cower, back off, flee, take cover, comply, refuse, or fight back when justified.
VALIDATED PHYSICAL ACTION SYSTEM
Combat and threat: aim, stop aiming, shoot, stop shooting, fight, stop fight, take cover.
Fear and movement: hands up, hands down, cower, kneel, stand up, back off, flee.
Social: hug, kiss, shove, slap, wave.
Activities: dance, push-ups, phone, record, yoga, cheer, impatient, drink, sit, sleep, smoke.
The AI cannot execute arbitrary native hashes, arbitrary native names, arbitrary animation dictionaries, arbitrary prop models, teleports or freezes.
COMPLETE STOP-COMMAND FAMILY
A full set of semantic stop controls, with a clear distinction preserved: stopping an activity is not the same as ending the conversation. "Stop dancing" stops the dancing and the scene continues. "End this conversation" ends the scene. "Keep going, no stopping" forbids both stop types for that turn.
PLAYER INTERRUPTION
You can interrupt an active NPC-to-NPC scene with your microphone. The system preserves current audio, waits for the final transcript, broadcasts the interruption into the shared scene and determines the next speaker. NPCs are instructed never to invent your answer on your behalf.
MALFORMED TAG REPAIR
Validated legacy and ordinary aliases are repaired into the correct namespace. Unknown model-generated markup remains non-executable. The streaming parser holds an incomplete split tag until the closing bracket arrives.
ACCIDENTAL PLAYER-HOSTILITY PROTECTION
Direct hostile actions are deferred until the full turn reveals whether a linked scene is starting, so the initiating NPC cannot accidentally aim at you before walking to the actual target.
GROUNDED PARTICIPANT SELECTION
Human participants only, nearest compatible pair preferred, no driver NPCs, roughly 18 metre scan radius, roughly 12 metre maximum pair separation, venue compatibility, safe-window checks and entity validation. No freezing, no teleporting, no anchor snapping.
AI-GENERATED PHYSICAL OPENINGS AND VALIDATED PROPS
Both participants receive a real physical opening state from a validated capability list, with semantic props including bottles, pill bags, money bags, wallets, phones, cameras, clipboards, cash, duffel bags, food, coffee and documents. A phone prop automatically activates phone behaviour and a camera automatically activates recording.
PHYSICAL HALLUCINATION PROTECTION
The generator is prohibited from inventing unsupported physical facts such as an ATM, a bench, fire, crash damage or a doorway unless the live environment or validated setup confirms it.
STRUCTURED ENDINGS
Ambient episodes require sufficient exchanges and must close with a structured resolved, unresolved or escalated outcome that explains the actual result. Vague endings are rejected.
40 BEHAVIOR MODES
The complete personality collection remains, from Default, Angry, Ultra Roaster, Savage, Polite, Psychopath, Introvert, Kind, Selfish, Dumb, Conspiracy, Flirty, Depressed, Gangster, Philosopher, Comedian, Drunk, High IQ, Disciplined and Chapri, through to Obey Everything, Ride-or-Die Homie, Coward Civilian, Psycho Criminal, Street Hustler, Rich Snob, Corrupt Cop, Gang Soldier, Silent Killer, Drunk Desi Uncle, Helpful Local Guide, Paranoid Prepper, Romantic Flirt, Moral Citizen, Tired Worker, Tourist Outsider, Insult Battle, Street Philosopher, Command Tester and Unfiltered Local.
STORY CHARACTER IDENTITY AND RELATIONSHIPS
Canonical Player, Story, Cutscene and Multiplayer categories, identity locks, and the full relationship network across Michael, Franklin, Trevor, Lamar, Amanda, Jimmy, Tracey, Lester, Dave Norton, Steve Haines, Devin Weston, Ron, Wade, Floyd, Patricia, Martin Madrazo, Simeon, Stretch and the broader story network.
SWEARING / ABUSE CONTROL
The two-mode system is unchanged. With swearing and abuse OFF the AI stays PG-13: no English profanity, no Hindi gaalis, no slurs, no censored or obfuscated variants. With it ON the AI may use contextual English profanity, Hindi and Hinglish gaalis, regional slang, GTA-style insults and character-appropriate rough speech. Identity-slur spam is still not the goal. The setting applies to direct chat and to linked scene rules, and in v4.3 it also applies to the police dispatch, news anchor and air unit voices, which stay professional regardless.
MOVEMENT CONTROLS: OUTOFVEHICLE, DRIVEAWAY AND STOPFORPLAYER
OUTOFVEHICLE requests a natural safe exit and avoids forcing a suicidal exit from a fast-moving vehicle.
DRIVEAWAY lets a driver leave naturally and return to vehicle wandering behaviour. In v4.3 the prompt was tightened with worked examples after a log showed an NPC emitting a drive-away tag while standing on the pavement with no vehicle; that tag is now clearly reserved for actually driving a vehicle, and walking away has its own behaviour.
STOPFORPLAYER asks a walking or wandering NPC to stop, wait, come here and stop, stop walking away, or face the player. On foot the NPC clears the current movement task, stays unfrozen, turns toward you and looks at you. A vehicle driver uses a controlled temporary vehicle stop. No teleport is used. In v4.3 a face-hold watchdog keeps STOPFORPLAYER and FACETARGET peds actually facing you instead of drifting back to their ambient heading.
LIFTS WITH 20 NAMED DESTINATIONS
Davis, Grove Street, Legion Square, Vespucci Beach, Del Perro Pier, Los Santos International Airport, Rockford Hills, Downtown Vinewood, Mirror Park, Diamond Casino, Maze Bank Arena, Sandy Shores, Grapeseed, Paleto Bay, Chumash, Harmony, Fort Zancudo, Galileo Observatory, Mount Chiliad and Marlowe Vineyard, plus current-waypoint routing.
DRAG RACES, HOMIES, SHOPS, ANIMALS
The drag race system with wagers and cleanup, homie and accomplice progression, clothing store, convenience store and Ammu-Nation routines, ambient task preservation, and the full dog and animal command set all remain.
VISION, SPATIAL AUDIO, LIP-SYNC
Multimodal frame capture with full lifecycle diagnostics, dynamic spatial positioning with distance and occlusion, and the stable audio-driven lip-sync workflow.
MAIN-THREAD SAFETY AND OWNERSHIP
GTA natives stay on the ScriptHookVDotNet main thread or the main-thread action queue. Session IDs, microphone turn IDs, scene turn IDs, generation IDs and in-flight guards reject stale and duplicate packets.
-===========================================================-
QUICK SETUP OVERVIEW
-===========================================================-
Living LS AIs is a single-player ScriptHookVDotNet mod.
Always follow the exact installation guide included with the download, because dependency versions and package layout may change between public builds.
The normal v4.4 setup includes:
- GTA V single-player,
- ScriptHookV,
- ScriptHookVDotNet 3 / Nightly,
- LemonUI for SHVDN3,
- Newtonsoft.Json,
- NAudio,
- the included LivingLSAIs DLL,
- the included LLAI SERVER data folder,
- the readable local server.js Gemini Live bridge,
- Node.js for the local bridge,
- and your own valid Gemini API key.
Important installation rules
Only one active LivingLSAIs DLL should exist. The main DLL belongs in the GTA V scripts directory. Do not leave a second duplicate inside LLAI SERVER, because duplicate script loading causes unpredictable behaviour.
Delete outdated LivingLSAIs files, stale duplicate folders and old mismatched builds before copying in v4.4.
The local bridge belongs inside the included LLAIBridge folder under LLAI SERVER.
If you are upgrading from a build that had the Beverly identity bug, consider clearing the NPC_MEMORIES folder for a clean slate. Hundreds of files generated by the buggy build can persist even after the fix.
-===========================================================-
BASIC FOLDER LAYOUT
-===========================================================-
GTA V/
├── GTA5.exe
├── ScriptHookV.dll
├── ScriptHookVDotNet.asi
├── ScriptHookVDotNet3.dll
├── scripts/
│ ├── LivingLSAIs.dll
│ ├── LivingLSAIs.ini
│ ├── LemonUI.SHVDN3.dll
│ ├── NAudio.dll
│ └── Newtonsoft.Json.dll
│ └── LLAI SERVER/
│ ├── LLAIBridge/
│ │ ├── server.js
│ │ ├── node.exe
│ │ ├── LLAI CUSTOM RULES.txt (new in 4.3)
│ │ └── radio_break_cache.json (new in 4.4)
│ ├── NPC_MEMORIES/ (memory v3 json files)
│ ├── LLAIsession.log
│ ├── LLAIDEBUG.log
│ ├── bridge_audio.log
│ └── bridge_fatal.log
-===========================================================-
CORE CONTROLS
-===========================================================-
E — Lock onto a nearby NPC and open the conversation flow.
T — Instant text chat with a nearby NPC or the active conversation target.
Y (hold) — Voice input, push-to-talk style live speech.
ENTER — Select menu items, confirm choices, and progress drag race setup and start.
BACKSPACE — End chat or cancel active flows such as drag race setup. In v4.3 it also clears an open Settings menu and the panel in one press.
SPACE — Dismiss the chatbox instantly. New in 4.3: rebindable through DismissKey= in the INI, because Space is also jump and handbrake. Fixed in 4.4: the custom key is now read before the sixteen early returns that used to eat it.
N — New in 4.4. Skip the radio break, either during the ten second warning or at any point once it has started. Deliberately not suppressed, so shop menus that also read N keep working.
Interface menu — New in 4.3. Live-preview every preset, colour theme, scale, opacity and anchor while you scroll. Saves to the INI automatically.
Credits & Community menu — New in 4.3. A public-release hub with credits, links and support information.
-===========================================================-
FIRST-TIME USER TUTORIAL
-===========================================================-
Step 1 — Install the required GTA V scripting foundation.
Install ScriptHookV and ScriptHookVDotNet according to their official instructions, then place the mod files exactly as described in the included installation guide.
Step 2 — Configure Gemini.
Add your own valid Gemini API key using the configuration method included with the release. Do not publicly share your key. Gemini availability, quota, regional availability and model limits all affect response generation.
Step 3 — Start GTA V Story Mode.
Living LS AIs is made for single-player. Do not use it in GTA Online.
Step 4 — Approach a pedestrian and start talking.
Use text input, microphone input, menuless direct interaction, or the menu, depending on your settings.
Step 5 — Speak naturally.
You do not need to memorise internal tags for normal gameplay:
- "What are you doing here?"
- "Do you know where the beach is?"
- "Take my gun for a minute."
- "Give me a ride to Davis."
- "Roll your window down, I can't hear you."
- "Let me drive."
- "Go ask that woman if this phone belongs to her."
- "Ask that man to dance. If he refuses, aim at him."
Step 6 — Watch the world, not only the subtitles.
Notice who walks to whom, who is holding an item, who aims, who surrenders, who flees, and how the scene resolves.
Step 7 — New in 4.3: cause trouble and then listen.
Get three stars, run, escape, then get in a car and turn the radio on. About a minute later you may hear a Weazel News anchor describing what you just did. Then go and talk to a pedestrian and ask them about the news.
Step 8 — New in 4.4: bring somebody with you.
Ask a pedestrian to get in your car. Drive until a radio break plays and let it finish. When the music comes back, ask them what they thought of the adverts. They heard every word of it, and they will tell you.
-===========================================================-
TUNING THE PANEL
-===========================================================-
Open the Interface menu and scroll. Everything previews live.
- Try Cinematic if you want the full look.
- Try Compact or Minimal if you find the panel distracting during driving.
- Try Ghost if you want the text to feel like it is floating with almost no chrome.
- Switch Anchor to Top if the bottom of your screen is busy with other mod HUDs.
- Set the colour theme to Mood Auto and watch it shift as an NPC's mood changes during an argument.
- Set it to Rainbow if you simply want it to cycle.
- Raise or lower Scale for your resolution, and Opacity for your taste.
If you prefer the older renderer entirely, set UiEngineV2=false in the INI.
-===========================================================-
WRITING YOUR OWN RULES
-===========================================================-
Open scripts/LLAI SERVER/LLAIBridge/LLAI CUSTOM RULES.txt
Write anything you want appended to every NPC prompt. Lines starting with # are ignored.
Examples of what people have used it for:
- Making every pedestrian believe they are the strongest person in Los Santos.
- Enforcing a specific roleplay setting or time period.
- Forcing a consistent regional speech style.
- Adding a house rule such as "nobody in this city ever admits they are wrong."
- Making every NPC obsessed with a particular topic.
It applies on top of the existing prompt engine, so all action tags, scene rules and physical laws keep working.
-===========================================================-
EXAMPLE SESSION 1 — THE CITY REPORTS ON YOU
-===========================================================-
You start a firefight in Del Perro and reach four stars.
The crime spree recorder arms and begins logging: peak stars, cops killed, vehicles destroyed, every zone you shot in, every zone you were chased through.
Police dispatch cuts across the ambient chatter:
"All units, shots fired on Del Perro Boulevard. Suspect is armed, heading north on foot."
The chopper arrives and claims the audio lane above dispatch:
"Air One has visual. Suspect is on the rooftops, moving east."
You escape into an alley and stay clean long enough for the escape to confirm.
About a minute later you get in a car, and your station ducks to ten percent:
"We're getting reports of a violent incident in Del Perro this afternoon. Police say the suspect fled the scene and remains at large. More on this as it develops."
The station volume restores.
You walk up to a pedestrian and ask what happened in Del Perro. They know. They were never going to bring it up unprompted, but they can answer.
You walk to another one. They say nothing about it, because they are in the aware tier, not the vocal tier.
A third one recognises you, because that last spree ended with you getting arrested and your identity became public. They back away and pull out their phone.
-===========================================================-
EXAMPLE SESSION 2 — DANCE OR ELSE
-===========================================================-
Player: "Take this gun."
NPC A: "Understood. Anything else?"
Player: "Ask that guy to dance. Aim if he refuses. Shoot only if he still refuses."
NPC A accepts and walks to NPC B.
NPC A: "Hey, the boss wants you to dance. Got a problem with that?"
NPC B: "Dance? What is this, performance art?"
NPC A physically aims.
NPC A: "Make some moves or things stop being friendly."
NPC B physically cowers.
NPC B: "Okay, easy! What exactly do you want?"
Player interrupts by microphone: "Tell him to dance."
NPC A: "You heard them. Dance."
NPC B physically dances.
Player: "Perfect. Keep going."
The scene continues instead of incorrectly ending.
-===========================================================-
EXAMPLE SESSION 3 — THE LIFT, YOUR WAY
-===========================================================-
Player: "Give me a ride to Sandy Shores."
The NPC accepts, you get in, and the lift ribbon appears in the panel showing the destination.
Player: "I can't hear you over the engine."
NPC rolls their window down. The cabin muffle opens and the voice becomes clear.
Player: "Actually, let me drive."
You take the wheel, the NPC moves to the passenger seat, and the route pauses.
You drive halfway, get bored, and hand it back.
The NPC becomes the driver again and the route resumes from where it paused.
At the actual drop-off, the fare settles. Not at the start of the ride, and the driver does not exit and steal a nearby car afterwards.
-===========================================================-
EXAMPLE SESSION 4 — A GRUDGE THAT TRAVELLED
-===========================================================-
You shoot near a pedestrian in Mirror Park and then leave without another word.
That event is recorded in their memory file with a heavy weight and a two-week decay curve. It also seeds gossip.
Over the next fifteen minutes it propagates outward by hops into the memory files of nearby pedestrians, with the radius growing each hop, up to a bounded number of people.
You come back an hour later, walk two blocks over, and speak to a complete stranger you have never met.
They already know.
-===========================================================-
LOGGING & DIAGNOSTICS
-===========================================================-
v4.3 produces detailed logs for testing and support, covering:
- bridge startup and handshake,
- Gemini session readiness and reconnect behaviour,
- microphone lifecycle and stale packet rejection,
- STT transcript lifecycle,
- vision capture and send flow,
- PCM chunks, bytes and RMS activity,
- lip-sync start and stop,
- spatial audio calculations and cabin muffling,
- the numbered target roster and handle locking,
- negotiation chronology and scene commitment,
- action receipt, namespace repair, normalization, execution, blocking and deduplication,
- LS Episode generation, cache source, prop attachment, transitions and outcomes,
- scheduler safe-window reasons,
- money transaction verification,
- entity invalidation and scene cleanup,
- and new in 4.3: dispatch gate reasons, heli mutual-exclusion state, news blackout state, crime spree recording, city awareness tiers, faction skin resolution and UI skin release.
When reporting a bug, include the relevant session log section, the debug log section, the exact command you gave, what every NPC said, what physically happened, and what you expected instead. Short clips are extremely useful for physical-action or pathfinding bugs.
-===========================================================-
PUBLIC RELEASE TIPS
-===========================================================-
- Use Story Mode only.
- Keep exactly one active LivingLSAIs DLL.
- Use a stable ScriptHookVDotNet installation.
- Make sure the local bridge can run through Node.js.
- Use your own valid Gemini API key with available quota.
- If you are upgrading and NPC identities feel wrong, clear NPC_MEMORIES.
- Rebind the dismiss key if you drive a lot, since Space is handbrake.
- Avoid switching between many NPCs while a microphone turn is still processing.
- Give moving scene participants a moment to approach naturally.
- Remember that GTA pathfinding can fail in crowded, blocked or unusual geometry.
- Keep logs when reporting a bug.
- New in 4.4: if the adverts ever feel repetitive or come out in the wrong language, delete radio_break_cache.json. The mod rebuilds it on the next boot in your current language.
-===========================================================-
LIMITATIONS & HONEST EXPECTATIONS
-===========================================================-
Living LS AIs connects a generative live model to a dynamic GTA V world, so exact dialogue is not deterministic.
Gemini may occasionally produce no PCM on a scene turn and require a retry, misunderstand unclear speech, choose an unexpected but valid reaction, or be affected by API availability and quota. A "quota exceeded" or 429 line in your log is your own key hitting its free-tier limit, not a mod failure; ambient scenario generation falls back to the cached library automatically and live conversation keeps working.
Google Search grounding is provided as an experimental toggle and defaults to OFF, because grounding support depends on what the live model actually honours.
GTA pedestrians may occasionally fail pathfinding, despawn, be interrupted by world combat, enter traffic danger, or die from unrelated causes. The mod validates physical actions and scene ownership, but it does not replace the entire GTA V pedestrian engine.
The architecture prioritises one foreground voiced interaction while background routines and physical systems continue. It does not promise unlimited simultaneous independent voiced conversations.
Random LS Episodes intentionally use no hand-written local scenario fallback. If Gemini and the valid AI cache are both unavailable, the mod will not invent a scripted replacement incident.
The always-on microphone was removed in v4.3 by request, because it could not reliably distinguish intentional speech from background noise.
Google's Search grounding quota is a separate and much smaller free-tier bucket than normal chat. When it runs out the mod detects it, disables search automatically for that session and carries on talking. You may see one WEB_SEARCH_QUOTA_TRIPPED line in your log per session. It resets at midnight Pacific. This is your key's free tier, not a mod failure.
Rumours degrade as they travel, by design. A story four hops from its source is an unreliable version of what happened, and the NPC telling it is meant to sound unsure about the details. That is the system working, not the model hallucinating.
-===========================================================-
WHO THIS MOD IS FOR
-===========================================================-
Living LS AIs v4.4 is designed for players who want:
- immersive roleplay,
- unscripted stories,
- sandbox chaos,
- AI experiments,
- cinematic encounters,
- memory-driven NPCs who hold grudges,
- a reputation that travels through the city without you,
- a police scanner that actually knows what you did,
- news coverage of your own rampage,
- a car radio that takes real commercial breaks,
- a passenger who heard the same advert you did and has opinions about it,
- social reactions,
- voiced characters,
- physical AI missions,
- dynamic arguments,
- random street episodes,
- and a Los Santos that feels less like a city of cardboard extras.
If you only want a screenshot where an NPC displays one clever sentence, this mod goes far beyond that.
Living LS AIs is designed for the moments after the screenshot:
What does the NPC remember?
Who did they tell?
What did the news say about you?
Will the guy two blocks over already know your face?
-===========================================================-
v4.4 LIVING CITY — MASTER CHANGELOG
-===========================================================-
Radio break cycle
- Added the four-stage radio break: HOST_INTRO, ADS, NEWS, HOST_OUTRO.
- Added 22 written station hosts across 26 supported stations.
- Added a three minute default interval, configurable with RadioBreakMinutes.
- Added RadioBreakCycle to turn the whole system on or off.
- Added a ten second pre-roll warning with N to skip.
- Chained the stages on socket close rather than on timers, so a slow stage cannot overlap the next one.
- Added live web search so adverts reference what is genuinely trending today.
- Added an explicit ban on narrating the search out loud.
- Added the radio break content cache: six ads and six bulletins, up to twenty, capped at 60 KB.
- Made the cache append rather than overwrite, so leftovers carry across sessions.
- Primed the cache at boot and refilled it after every break over the REST endpoint.
- Added a fifth chatbox skin for advert breaks with its own emblem.
Shared listening
- Added shared break context: the real advert and news text enters a passenger's head.
- Gated it to NPCs who genuinely shared the vehicle cabin, plus lift drivers.
- Added a five minute freshness window.
- Capped stored copy at 700 characters per stage.
- Forbade the NPC from claiming to have heard anything not actually broadcast.
Ad pause and conversation priority
- Added automatic ad pause that holds an open conversation instead of ending it.
- Kept the NPC, the history and the warm bridge session through the pause.
- Added an on-screen prompt when the mic or text key is pressed during a break.
- Throttled that prompt so holding a key cannot spam the feed.
- Made dispatch, the air unit and ambient barks stand down while a conversation is live.
- Deliberately exempted ads and news from that gate.
- Removed the wanted-level block that made a break impossible during a chase.
Anti-repetition and language
- Added a banned list of existing cached copy shown to the writer.
- Added a rotating creative brief: eight angles and twelve lead brands.
- Banned worn-out advert openings by name.
- Capped video-game references to one advert per batch.
- Added a similarity filter that rejects near-duplicate copy on the way into the cache.
- Passed the player's language into the cache writer, which never received it before.
- Made the cached reader translate English copy already sitting on disk.
New tags
- Added [ENTERCAR] / [GETIN] / [GETINCAR], the first general vehicle boarding tag.
- Added [ROBSTORE] / [ROBSHOP] with 16 mapped store locations.
- Added [SNIPEKILL@n] for a specific numbered target at range.
- Rewrote [LEANONCAR] to target a point outside the bumper and pin the car while the ped settles.
Content
- Expanded to 612 NPC names, 106 moods, 124 backstories and 42 jobs.
- Expanded to 26 radio stations and 16 news segment types.
- Verified all 55 scenario props against the game's own prop list.
Engineering
- Added scopecheck.py, which catches cross-class static calls before they reach a compiler.
- Added shadowcheck.py, which catches local variable shadowing.
- Grew the automated regression suite to 706 tests, all passing.
- Every bug fix in this release ships with a test that fails on the old code first.
Bug fixes
- Fixed NPC money never reaching your wallet: a bogus pickup hash, a swallowed exception and a silent no-op in the SHVDN money setter.
- Fixed NPC identity changing between sessions by fingerprinting appearance instead of the recycled ped handle.
- Fixed saved memory never loading by removing the name from the memory file key.
- Fixed rumours never spreading: the eligibility check tested for a filename that no longer existed.
- Fixed FlyLo FM by correcting the station name to RADIO_14_DANCE_02.
- Fixed bike lifts being refused by a collapsed ternary that rejected vehicle class 8.
- Fixed newly added moods being unreachable behind a hardcoded index ceiling of 59.
- Fixed the 0xc0000005 shop-routine crash by making the face-hold watchdog release to all sixteen owning systems.
- Fixed a suited Michael being announced as naked by making clothing detection model-aware.
- Fixed the chatbox vanishing after two seconds: the panel watchdog never reset the timestamp it is judged by.
- Fixed chatbox text truncating past 396 characters by capping at four components on a word boundary.
- Fixed [LEANONCAR] launching cars into the sky.
- Fixed the radio break playing 85 chunks of silence by claiming the audio lane.
- Fixed music returning mid-break by extending the duck across the next stage's generation window.
- Fixed music dying for an entire chase with an absolute 25 second duck ceiling.
- Restored the Q radio wheel, which the permanent duck had also disabled.
- Fixed NPCs never remembering the radio break bulletin by seeding city awareness from the news stage.
- Fixed repeated adverts with a banned list, a rotating brief and a similarity filter.
- Fixed adverts always being English by passing the language to the cache writer.
- Fixed the no-response death spiral caused by closing sockets that were still in setup.
- Fixed the Los Santos Customs menu locking up during a break by not suppressing the N key.
- Fixed the rebindable dismiss key being read behind sixteen early returns.
- Fixed the anchor narrating its own web search on air.
- Fixed commercials displaying the LSPD air unit badge.
- Fixed shop routines drifting off topic by giving each routine a single stated purpose.
- Fixed traffic drivers being hijacked into scenes and exiting mid-road.
- Fixed the radio break aborting itself one second after starting by teaching the station guard about RADIO_36_AUDIOPLAYER.
-===========================================================-
v4.3 NEON GLASS — MASTER CHANGELOG (previous release)
-===========================================================-
Interface
- Added the Neon Glass renderer with 15 ordered layers.
- Replaced the multi-spawn overlay with one persistent panel.
- Added 5 presets: Cinematic, Compact, Minimal, Ghost, Custom.
- Added 7 colour themes including Mood Auto and Rainbow.
- Added 4 anchor positions.
- Added adjustable scale and opacity.
- Added live preview while scrolling the settings menu.
- Added automatic aspect-ratio correction for ultrawide displays.
- Added auto-fit panel height from measured text width.
- Added the dual 14-bar microphone and voice waveform.
- Added the dimmed in-panel "YOU said" transcript row.
- Added friendship pips, faction chip, header status dot and action-flash toast.
- Added police, news and air-unit broadcast styling.
- Added a lift ribbon showing the active destination.
- Replaced 30-per-second audio lock polling with a lock-free volatile mirror.
- Added a headshot texture guard against a rare d3d11 crash.
- Kept the legacy renderer available behind a configuration switch.
Faction identity
- Added 29 faction skins.
- Mapped 186 pedestrian models to those skins.
- Added faction chip labelling in the panel.
- Cleared lingering faction colour when a radio transmission starts.
City broadcast systems
- Added the AI police dispatch engine.
- Added live wanted level, crime type, street, zone and direction reporting.
- Added dispatch gating, throttling and skip-reason diagnostics.
- Added the LSPD air unit helicopter loudspeaker with its own voice.
- Added air-unit priority above ground dispatch.
- Added the Weazel News crime spree recorder.
- Added automatic dossier broadcast about a minute after a confirmed escape.
- Added ESCAPED, BUSTED and WASTED outcomes.
- Added in-game radio ducking and restoration.
- Added a news blackout window around a bulletin.
- Added a watchdog so a bulletin can never hang on "Generating..."
- Added the four-lane audio arbiter for NPC, News, Dispatch and Heli.
- Added centre-locked positioning for radio transmissions.
- Added relevance expiry for stale queued barks.
- Set proactive barks to default OFF.
City awareness
- Added the tiered awareness engine with a 20 minute lifetime.
- Added the AWARE tier that answers only when asked.
- Added the VOCAL tier at roughly 8 percent, delayed and hard-capped at 3 per broadcast.
- Added the RECOGNIZER tier at roughly 50 percent when identity is public.
- Added permanent per-NPC lockout after they discuss it once.
- Made awareness knowledge instant while keeping unprompted mentions paced.
- Extended awareness into NPC-to-NPC linked scenes.
Memory v3
- Added exponential grudge decay with per-event weights.
- Added tracked debts in both directions.
- Added gossip seeding and multi-hop spread into other NPCs' memory files.
- Added a freshness window and a per-event spread cap.
- Kept full backward compatibility with v2 memory files.
- Fixed memory persistence.
Configuration and control
- Added the Custom Rules file with template auto-creation.
- Added comment support, minimum-length activation and an 8000 character cap.
- Delivered custom rules to all five AI sockets.
- Retired the old prompt-replacing override.
- Added the four-step AI Thinking Level dial with localised pros and cons.
- Fixed the hard-coded zero thinking budget across five sockets.
- Added model-family detection for the correct thinking parameter form.
- Added the Google Search grounding toggle, default OFF.
- Added the rebindable DismissKey INI setting.
- Added the Credits and Community menu hub.
- Removed the always-on microphone by request.
Language
- Added German.
- Fixed roughly 275 notification strings that only resolved in English or Portuguese.
- Replaced the passthrough translation helper with a proper runtime lookup.
- Localised menu items, descriptions and notifications across all eight languages.
New tags and behaviours
- Added [OPENWINDOW] and [CLOSEWINDOW] with real cabin filter response.
- Added [STANDONONELEG].
- Added [STOPFOLLOWING] self-initiative through prompt law only, with zero keyword detectors.
- Added [LIFT_PLAYERDRIVE] and [LIFT_GIVEBACKDRIVE].
- Restored [FIGHTENEMY], which had been silently dead.
- Added vehicle cabin muffling with a low-pass filter.
Bug fixes
- Fixed the Beverly identity collision with a story-category gate and a whole-word matcher across 117 call sites.
- Fixed NPCs narrating combat while standing still by setting combat ability, movement and range explicitly.
- Fixed NPCs fleeing after accepting a fight by assigning proper enemy relationship identity instead of leaving the player classified as a threat.
- Added an immediate hard task clear instead of a soft abort in the combat reassert loop.
- Added anti-flee combat attributes and per-tick enemy identity re-assertion.
- Extended the combat lock window.
- Fixed the Space bar dismiss conflict with jump and handbrake.
- Removed the "wait until audio ends" dismiss gate.
- Fixed the beer and weed errand scam with a hard prompt law on which errands physically exist.
- Fixed NPCs refusing to fight alongside the player during shootouts.
- Fixed voice conversations silently stopping until Backspace was pressed.
- Fixed audio flicker caused by waveform lock contention.
- Fixed Backspace doing nothing while the Settings menu was open.
- Fixed NPCs never ending a follow on their own initiative.
- Fixed [WAVE] never playing by removing a multiplayer-only animation dictionary.
- Raised animation load budgets.
- Fixed the lift driver never exiting and the fare never settling.
- Moved lift fare charging from ride start to ride completion.
- Fixed the driver jacking a nearby vehicle after a drop-off.
- Fixed a mobile phone being counted as a weapon.
- Removed the smog rant that only applied to graphics-modded games.
- Fixed an auto-convo NPC holding the bridge hostage.
- Fixed the missing dispatch open event in the bridge.
- Fixed a news blackout sticking for three minutes.
- Fixed the episode director stalling while the player ragdolled on a bike.
- Fixed the Weazel timeout racing its own audio arrival.
- Throttled a world-event spacing log that fired 33 times per second.
- Removed an unreferenced goto label and cleaned up write-only variables.
- Added PCM jitter cushioning to remove playback flicker on short chunks.
-===========================================================-
IMPORTANT
-===========================================================-
Single-player only.
Do not use Living LS AIs in GTA Online.
Back up your game and mod setup before installing major updates.
Never share your private API key in screenshots, logs, Discord messages or public bug reports.
No API key is bundled with this mod, and none ever will be. Create your own free Gemini key. It takes about a minute and it stays yours.
-===========================================================-
DISCORD / COMMUNITY / BETA TESTING
-===========================================================-
For updates, support, installation help, testing news, community discussion, bug reporting, beta opportunities, future previews and release announcements, join the Living LS AIs community:
https://discord.gg/NnQhARUbp9
GTA5-Mods page:
https://www.gta5-mods.com/scripts/livinglsais-0706c201-ba7c-4e19-9c70-d77db561f835
YouTube:
https://www.youtube.com/@ZEXIVA77
When applying for beta testing, provide your PC specifications, your GTA V version, your ScriptHookVDotNet version, whether you can reproduce bugs reliably, whether you can provide logs and clips, and why you want to help test unstable builds.
Good beta testing is not only playing early. It means trying strange commands, testing different personalities, checking physical action ownership, interrupting scenes, cancelling episodes, testing crowded locations, testing vehicles and interiors, causing crime sprees to test the broadcast systems, reporting exact reproduction steps and keeping useful logs.
Special thanks for v4.4
Dzinu — for the report that an invited NPC could agree to come along and then simply never get in the car, and for the separate one about an armed NPC never reaching the store he had agreed to rob. Both turned out to be missing action tags rather than broken behaviour. [ENTERCAR] and [ROBSTORE] exist because of those two messages.
Vampire — for "while playing with Michael everyone seems to think I'm naked", which was a regression introduced by v4.4's own clothing-awareness feature. Reported clearly enough that the root cause was obvious once somebody actually looked: drawable 0 means the model's first outfit, not no clothes. Also for confirming the radio adverts landed, which mattered more than it sounds.
indragon99 — for testing on Enhanced, which nobody else was able to do, and for pushing on the truck explosion issue until the real cause surfaced.
impoliceofficer — whose v4.3 reports are still shaping this mod. Several v4.4 fixes are downstream of investigations that started with those logs.
Maciel — for the report that a saved NPC did not remember the last conversation, which led straight to the memory key bug.
Anyiiikunnn — for getting addon peds working on Enhanced and documenting how, and for the API quota question that clarified how key rotation is presented.
Everyone who filed a report with a log attached rather than just "it doesn't work."
Special thanks for v4.3
impoliceofficer, whose detailed reports produced six of the twelve fixes in that release, including the observation that the identity bug scaled with the number of memory files. That single detail is what led to the actual root cause.
T0XiQ96, who requested German. It is in.
-===========================================================-
CREDITS
-===========================================================-
Living LS AIs
Created by Zexiva
Creator, main developer, system designer, gameplay designer, prompt and episode architect, integration developer, and project lead.
Legacy & Special Credits
AbirTheLegend — legacy and special credit preserved for support, ideas, testing, feedback and contributions connected to the project's development history.
Murilo Walker — credit preserved with the Living LS AIs project, for major contributions and the three-NPC scene work.
Community — thank you to every beta tester, supporter, log collector, clip creator, bug reporter and community member who helped break unstable builds and improve them. Every stable system exists because somebody tested the version where it was not stable yet.
AI / API
Google Gemini and Gemini Live — the main modern live AI route used for direct conversation, native voice, microphone transcription workflow, visual context, linked NPC scenes, AI-generated LS Episodes, the police dispatch, news anchor and air unit voices, and in v4.4 the entire radio break cycle: its station hosts, its commercials and its news bulletins.
Groq — credit preserved for optional provider support and earlier multi-provider experimentation where included.
UnrealSpeech — credit preserved for optional and alternate TTS experimentation where included.
OpenAI Whisper — credit for earlier speech-to-text development paths. Not the main modern Gemini Live route, but part of the project's development history.
Local Bridge / Runtime
Node.js — provides the runtime foundation for the local Gemini Live bridge, enabling persistent WebSocket communication, live audio transport, microphone stream transport, image transport, action-tag streaming, scene session management, random Episode generation, broadcast voice generation, the radio break cycle and cache communication.
ws — the WebSocket implementation used by the bridge. It is bundled inside the download, so you never need to run npm install.
GTA V Modding Foundation
Alexander Blade — ScriptHookV
crosire and the ScriptHookVDotNet contributors — the ScriptHookVDotNet ecosystem
justalemon — LemonUI
Newtonsoft.Json — JSON handling
NAudio — audio playback and processing support
Microsoft .NET and the C# ecosystem — scripting and runtime foundation
Respect to the Community
Huge respect to the GTA V single-player modding community. Living LS AIs exists because of years of shared tools, documentation, experiments, reverse engineering, testing, and players who keep pushing Los Santos beyond its original limits.
-===========================================================-
FINAL NOTE
-===========================================================-
Living LS AIs v4.2 made a conversation into an episode.
Living LS AIs v4.3 made that episode into a consequence.
Living LS AIs v4.4 makes that consequence into something you and an NPC sat through together.
The NPCs can still notice, speak, remember, judge, negotiate, accept, refuse, travel, select real people, carry physical objects, change body states, react to danger, perform conditional missions, create independent incidents and produce a real outcome.
Now the city itself joins in.
A dispatcher reads out your street. A helicopter calls your position. A news anchor summarises your worst afternoon and your car radio gets quieter so you can hear it. A pedestrian two blocks away already knows what you did, because someone told them. And the guy you shot at last week has not forgotten, and will not for about two more weeks.
And now, every three minutes, the radio takes a break — and the woman in your passenger seat heard the same stupid advert you did, and she has opinions about it.
A pedestrian is no longer only a pedestrian.
They can become a witness, a friend, a coward, a criminal, a negotiator, a driver, a customer, a target, an accomplice, a scene partner, a source of gossip, someone who recognises your face from the news, someone who gets in your car and complains about the radio, or the main character of the next completely unscripted Episode.
Living LS AIs v4.4 — LIVING CITY
The city was already talking. Now it is on the air, and somebody is listening with you.
Real AI Lives, a Radio That Broadcasts About You, and NPCs Who Sit in Your Car and Listen
By Zexiva
v4.3 made the city look alive. v4.4 makes it behave alive.
-===========================================================-
OVERVIEW
-===========================================================-
Living LS AIs is a full open-world AI overhaul for Grand Theft Auto V that turns normal pedestrians into reactive, memory-driven, voice-enabled AI characters capable of speaking, remembering, negotiating, travelling, fighting, surrendering, helping, refusing, creating trouble, holding grudges, spreading rumours about you, and interacting physically with each other.
Living LS AIs v4.4 is called:
LIVING CITY
v4.3 was NEON GLASS. It rebuilt how the mod looked and gave Los Santos a police scanner and a news anchor. v4.4 is about what happens in the gaps between all of that.
v4.4 does four things at once:
1. It gives your car radio a real commercial break. Every three minutes the station you are listening to cuts away. The DJ hands over in character, two or three adverts play, Weazel News reads the headlines, and the DJ comes back. Four chained live AI sessions, twenty-two written station hosts across twenty-six stations, and adverts built around whatever is genuinely trending in the real world today.
2. It puts the NPC in your passenger seat inside that moment with you. If somebody is riding with you when the break plays, they heard the actual adverts and the actual bulletin — the real text, not a summary. Afterwards you can ask them what they thought, and they will tell you.
3. It stops the systems that used to talk over you. While you are genuinely mid-conversation, the police dispatcher, the air unit and ambient pedestrian chatter all stand down. Ads and news are deliberately exempt, because those are not talking to you — they are playing on the radio you are both listening to.
4. It closes twenty-six bugs. Not with workarounds. Each one was traced to the exact line that caused it, and each one ships with a regression test that fails on the old code first and passes on the new. If a fix cannot prove the bug existed, it is a guess, not a fix.
Nothing from v4.3 was removed.
Neon Glass, the 29 faction skins, police dispatch, Weazel News, the LSPD air unit, Memory v3 with grudges and gossip, the Custom Rules file, the AI Thinking Level dial, eight menu languages, LS Episodes, two-NPC and three-NPC linked scenes, mission contracts, commitment locking, the numbered target roster, action ownership, the validated action system, the stop-command family, the random world director, the 40 behaviour modes, drag races, lifts, homies, shopping routines, dog commands, vision, spatial audio and every diagnostic remain fully present and were extended.
This is not a basic chatbot overlay.
This is not a collection of preset "funny NPC lines."
This is not an illusion where an NPC says "I am aiming at him" while physically standing idle.
This is a city where a pedestrian can remember that you shot at them two weeks ago, tell their friends about it, hear your name on the news, and then sit in your passenger seat and complain about the advert that just played.
-===========================================================-
THE BIG v4.4 IDEA: THE CITY IS ON THE AIR
-===========================================================-
In v4.3 the world reported on you. In v4.4 the world is playing in the background whether you are the subject or not, and you can talk to the people listening to it with you.
Get in a car, turn the radio on, and roughly every three minutes this happens without you doing anything:
- A ten second warning appears. Press N and the whole break is skipped.
- Your station host — the actual host of the actual station you are on — hands over to the break in character.
- Two or three adverts play for Los Santos businesses. At least one is built around something genuinely trending in the real world right now, because the mod searched for it.
- Weazel News reads two real world headlines, reported accurately, delivered as pure Weazel satire. If you have recently caused a crime spree, that goes out first, from the confirmed police dossier.
- The DJ comes back, throws one dismissive line at what just aired, and the music returns.
And if somebody is in the car with you, they were there for all of it.
-===========================================================-
WHAT MAKES v4.4 DIFFERENT FROM v4.3
-===========================================================-
v4.3 was about presentation and consequence.
v4.4 is about continuity, shared experience, and honesty about bugs.
CONTINUITY
The radio break runs on a real cycle. It survives a police chase. It survives an open conversation. It caches its own content ahead of time so a break starts speaking in about two seconds instead of twenty-five. It carries leftover content across game sessions.
SHARED EXPERIENCE
For the first time, an NPC and the player have both experienced the same thing at the same time, and both remember it. That is what the passenger-seat listening system is. It is not the NPC being told there was an advert. It is the NPC having the advert text in their context.
HONESTY
Twenty-six bugs, each with the actual root cause published. Several of them were things the code claimed to do and did not. One comment in the codebase said the blast protection was re-applied every scan; the line underneath made it run exactly once, forever. Another said scene ownership always wins; the check was never written. Those are in the changelog by name.
-===========================================================-
v4.4 BRAND-NEW FEATURE HIGHLIGHTS
-===========================================================-
The largest new systems and upgrades in LIVING CITY include:
- the radio break cycle, four chained live AI sessions every three minutes,
- 22 written station hosts across 26 supported stations,
- adverts built from a live web search of what is genuinely trending today,
- a ten second pre-roll warning with N to skip the entire break,
- shared listening, so an NPC in your car hears the real advert and news text,
- a five minute window in which they can react to it, quote it or argue with it,
- automatic ad pause that holds an open conversation instead of ending it,
- an on-screen prompt telling you to wait for the break or skip it with N,
- conversation priority, so dispatch, air unit and ambient barks stand down while you talk,
- ads and news deliberately exempt from that gate,
- the radio break content cache, six ads and six bulletins pre-written, up to twenty,
- cache copy authored in your selected language, not English,
- three-layer anti-repetition: a banned list, a rotating creative brief, and a similarity filter,
- a fifth chatbox skin dedicated to advert breaks,
- the new [ENTERCAR] tag, which finally lets an ordinary NPC get into your car,
- the new [ROBSTORE] tag, which walks an NPC to one of 16 real mapped stores,
- a rewritten [LEANONCAR] that no longer launches your car into the sky,
- the new [SNIPEKILL@n] tag for a specific numbered target at range,
- model-aware clothing detection that stops calling a suited Michael naked,
- an absolute 25 second ceiling on radio ducking so a chase cannot mute your music,
- two new developer guards, scopecheck and shadowcheck,
- 706 automated regression tests,
- and twenty-six traced-to-root-cause community bug fixes.
All major v4.1, v4.2 and v4.3 systems remain part of the experience unless explicitly replaced or improved.
-===========================================================-
NEW: THE RADIO BREAK CYCLE
-===========================================================-
Every three minutes, your station takes a break.
It is not a sound file. It is four chained live AI sessions:
HOST_INTRO — the real host of your real station hands over, in their own voice and character. Eight seconds, two sentences maximum. It is a link, not a monologue.
ADS — two or three short commercials, back to back, for Los Santos businesses. Cluckin' Bell, Fleeca, Ammu-Nation, Bean Machine, Sprunk, eCola, Los Santos Customs, Ponsonbys, Burger Shot, Pisswasser and invented ones. One absurd, one aggressive hard sell, one fake customer testimonial. Every advert ends with a rushed mumbled disclaimer admitting something terrible.
NEWS — Weazel News. If you have an unreported crime spree it leads with that, from the real dossier. Then two genuinely current real world stories, reported accurately, with the facts intact and the tone entirely satirical.
HOST_OUTRO — the DJ comes back, insults the break, and puts the music on.
Twenty-two station hosts are written in, including DJ Pooh on West Coast Classics, Big Boy on Radio Los Santos, Jesco White on Rebel Radio, Keith Morris on Channel X, Cara Delevingne on Non-Stop-Pop and Lazlow on WCTR. Twenty-six stations are supported in total.
You get a ten second pre-roll warning. Press N at any point to skip the entire break and go straight back to the music.
Configuration: RadioBreakCycle= turns it on or off, RadioBreakMinutes= sets the interval.
-===========================================================-
NEW: THE ADS ARE ABOUT TODAY
-===========================================================-
Before writing an advert, the mod searches the web for something genuinely trending right now — a viral meme, a big game release, a sports result, internet drama — and builds at least one commercial around a Los Santos business cynically cashing in on it.
This means the adverts age with the real world. A break you hear in six months will not be the same break you hear today.
Anti-repetition is enforced three ways, because the first version of this genuinely did repeat itself:
- The writer is shown everything already in the cache and explicitly forbidden from reusing an opening line, a brand or a punchline from it.
- Every batch is assigned a different mandatory creative angle and a different mandatory lead brand, rotating through eight angles and twelve brands, so two consecutive refills cannot converge even on the same trend.
- Anything that comes back too similar to existing copy is rejected outright by a similarity check before it can ever reach your speakers.
Worn-out openings are banned by name. "Tired of…" is on that list.
-===========================================================-
NEW: THE NPC IN YOUR CAR HEARS IT TOO
-===========================================================-
This is the part that does not exist anywhere else.
If an NPC is sitting in your vehicle when the break plays, the actual advert text and the actual news text enter their context. Not a note saying an advert happened. The words.
Afterwards, for five minutes, they can:
- laugh at how stupid the advert was,
- argue with a headline,
- quote a line back at you,
- complain that the station is nothing but commercials.
They will only bring it up if it fits the moment, and they can never claim to have heard something that was not actually broadcast.
It is gated honestly. Only an NPC who genuinely shared the cabin gets it. Someone standing on the pavement outside your car did not hear your radio, and the mod does not pretend they did. Lift drivers always count, because they are in the car by definition.
-===========================================================-
NEW: AUTOMATIC AD PAUSE
-===========================================================-
If a break starts while you are mid-conversation, the conversation pauses instead of being trampled.
Pauses, not ends. The NPC stays. Your history stays. The session stays warm.
Press your microphone or text key during a break and the mod tells you plainly: wait for the ad to end to talk, or press N to skip it and carry on. The message is throttled so holding the key does not spam your feed.
When the break finishes you simply continue the conversation you were already having.
This works during a lift as well as a normal chat.
-===========================================================-
NEW: CONVERSATION PRIORITY DURING A CHASE
-===========================================================-
Previously, a five star chase meant the police scanner cut across whatever an NPC was saying to you, every few seconds, forever.
In v4.4, while you have a live conversation open — menu open, scene running, recording, typing, awaiting a reply, or riding a lift — three systems stand down:
- the LSPD dispatcher,
- the air unit loudspeaker,
- ambient auto NPC chatter.
They resume the moment you close the conversation with Backspace.
Ads and news are deliberately exempt, because those are not interrupting your conversation. They are the radio, and the person you are talking to can hear them too.
A related bug was found while building this: any wanted star at all used to push the radio break back thirty seconds. A chase lasts longer than thirty seconds, so the timer reset forever and a break could never air during a pursuit. It can now.
-===========================================================-
NEW: RADIO BREAK CONTENT CACHE
-===========================================================-
Ads and bulletins are written ahead of time and stored in radio_break_cache.json next to the scenario cache.
Six of each are kept, up to a maximum of twenty, capped at 60 KB. The file appends and is never overwritten, so unused content carries across game sessions.
The practical effect: a break starts speaking in about two seconds instead of waiting twenty-five for the model to research and write. It is primed at boot and refilled after every break, in the background, over the REST endpoint so it can never interrupt audio you are listening to.
In v4.4 the cache is also written in your selected language. In the first build it was always authored in English regardless of your setting, because the language lock had been applied to the component that reads the copy rather than the one that writes it. Both now carry it, and copy already sitting in the file in English is translated as it is read.
-===========================================================-
NEW & IMPROVED TAGS IN v4.4
-===========================================================-
[ENTERCAR] / [GETIN]
The NPC walks over and physically gets into your car. Until v4.4 there was no general boarding tag at all — the only one that existed was gated behind an NPC already being a homie, which is why inviting an ordinary pedestrian along resulted in them agreeing enthusiastically and then standing on the pavement.
It picks a free passenger seat, never takes the driver seat while you are driving it, re-issues the task if they snag on a kerb, and gives up cleanly with a stated reason rather than leaving somebody walking into a wall forever.
[ROBSTORE] / [ROBSHOP]
Talk an NPC into robbing a shop and they walk to a real, mapped store and hold it up at gunpoint. Sixteen verified locations across 24/7, LTD Gasoline and Rob's Liquor. The clerk puts their hands up.
The walk is re-issued every eight seconds while they are still travelling, because ambient events love to eat a movement task. If you already handed them a weapon, they keep it — the mod only arms an NPC who is genuinely unarmed.
[LEANONCAR]
They walk to your car and lean on the front. Rewritten in v4.4 to target a point outside the bumper and hold the car still while they settle, because the old version teleported the ped inside the collision shell and the physics engine resolved that by launching your car into the sky.
[SNIPEKILL@n]
Take out a specific numbered person from the live roster at range. Distinct from a generic kill order, which picks whoever is nearest and usually ends in a fist fight.
-===========================================================-
THE v4.4 BUG HUNT — TWENTY-SIX ROOT CAUSES
-===========================================================-
Every one of these has a regression test that reproduces the original failure on the old code before proving the fix.
1. NPC gives you money and your balance never changes.
Three faults stacked. The pickup hash 0xFE3CE0F6 was not a real hash. The fallback path swallowed its own exception so it never ran. And ScriptHookVDotNet's Player.Money setter has a default: return; — it silently writes nothing at all on any model that is not Michael, Franklin or Trevor.
2. "Yesterday he was Frankie, today the same guy is Mario."
Identity was seeded from new Random(npc.Handle). A ped handle is a recycled pool slot, not a person. When a ped despawns the engine hands that same number to somebody completely different minutes later. Identity is now fingerprinted from appearance.
3. Saved NPCs greeted you like a stranger.
Memory files were keyed {modelHash}_{nameSlug}.json. The moment the name changed, the file could never be found again.
4. Rumours never spread.
The gossip system existed and did nothing. Its eligibility check tested for a {modelHash}.json filename that no longer existed after the memory rewrite, so every single pedestrian was skipped.
5. FlyLo FM never tuned.
The code sent RADIO_14_SAMPLED. The real station name is RADIO_14_DANCE_02.
6. Asking for a ride on a motorcycle always failed.
A collapsed ternary explicitly rejected vehicle class 8, which is Motorcycle.
7. New moods never appeared.
106 moods in the pool, the same dozen in play. The personality index lists were hardcoded with a maximum index of 59, so everything added after that was unreachable.
8. Hard crash, 0xc0000005, roughly thirty seconds into a shop scene.
The face-hold watchdog's own comment claimed scene ownership always wins. The check was never written. One ped ended up owned by the watchdog, the shop routine and the scene simultaneously, and CLEAR_PED_TASKS fired on it every 900ms for thirty seconds while the scene ran its own task sequence on the same ped. The task tree was torn out from under its own pointer. The test reproduced 34 destructive clears on the old code and 0 on the new.
9. "Playing as Michael and everyone thinks I'm naked."
Clothing detection read drawable 0 on components 11 and 4 and called it undressed. That is true on a freemode body and false on every protagonist — Michael's stock outfit is 0/0. Nudity is now only inferred on models where drawable 0 provably is the bare body. The old logic misfired on 31 of 961 tested combinations.
10. Chatbox vanished two to three seconds after appearing.
The 45 second panel watchdog called its recovery routine, and that routine never reset the timestamp it is judged by. Anything that re-opened the panel matched the stale timestamp instantly and got killed again on the next frame. One log showed 120 force-releases in 40 seconds.
11. Chatbox truncated past roughly 380 characters.
The text command has exactly four slots of 99 characters, a hard ceiling of 396. The push loop added a fifth component, which malforms the command, and the engine drew nothing at all.
12. LEANONCAR launched cars into orbit.
The ped was teleported to a point inside the car's collision shell. Physics resolved the overlap with a separating impulse.
13. Radio break played 85 chunks of silence.
The break never claimed the audio lane, so gain stayed at 0.0 for the entire transmission.
14. Music returned in the middle of a break.
The duck was held for the audio that had just played, about 3.8 seconds, but the next stage takes 15 to 30 seconds to generate. The hold expired in the gap.
15. Music died for an entire chase, and Q stopped opening the radio wheel.
Every dispatch call pushed the duck ceiling forward by twenty seconds. During a pursuit they fire faster than that, so the ceiling was shoved forward indefinitely. One log showed 51 unbroken seconds of silence. The wheel died with it, because it cannot open on a vehicle whose radio is disabled. There is now an absolute 25 second cap regardless of how many transmissions stack up.
16. NPCs never remembered the Weazel bulletin.
City awareness was wired to the standalone bulletin only. The radio break news stage never called it. Four breaks aired in one test session and not one awareness seed was written.
17. The same advert twice in a row.
Every cache refill used an identical prompt, found the same trend and wrote the same joke, with no knowledge of what was already cached.
18. Adverts always in English regardless of language setting.
Three code paths, and the one missing the language lock was the one that writes the cached copy. It authored in English, and the reader was then instructed to read it word for word — which beats a language lock aimed at the reader.
19. The "no response" death spiral, where once it broke it stayed broken.
The session closer ran unconditionally on every start, killing sockets that were still in setup.
20. Los Santos Customs menu locked up during a break.
The N skip key used SuppressKeyPress, starving the shop menu of the same input.
21. The rebindable dismiss key did nothing.
It was read at the bottom of the key handler, behind sixteen early returns.
22. "Let me look that up" broadcast live on air.
Nothing forbade the anchor from narrating their own research. There is now an explicit ban list on every broadcast prompt.
23. Commercials displayed the LSPD air unit badge.
The avatar emblem block had no branch for the advert skin, so it fell through to the helicopter badge.
24. Shop scenes drifted off topic.
"You got any food?" produced a lecture about the weather, because routines inherited the player's last direct line. Each routine now states its single purpose and bans small talk outright.
25. Traffic drivers were hijacked into scenes and got out mid-road.
No driver guard existed, and the scene called TASK_LEAVE_ANY_VEHICLE on whoever it picked.
26. The radio break killed its own audio one second after starting.
Disabling the vehicle radio makes GET_PLAYER_RADIO_STATION_NAME return RADIO_36_AUDIOPLAYER. The station-change guard read that as the player switching station and aborted the break it had just started.
-===========================================================-
CONTENT IN v4.4
-===========================================================-
- 612 NPC first names, 308 male and 304 female
- 106 mood states
- 124 backstories
- 42 job types
- 26 radio stations with 22 written station hosts
- 16 news segment types
- 55 verified scenario props, every one checked against the game's own prop list
- 29 faction skins from 186 mapped pedestrian models
- 40 behaviour modes
- 20 named lift destinations
- 16 mapped robbable store locations
- 14 scene languages, 8 fully localised menu languages
- 706 automated tests, all passing
-===========================================================-
TRY THIS FIRST IN v4.4
-===========================================================-
1. Get in a car and turn the radio on.
2. Drive for a few minutes. When the break warning appears, do not skip it. Listen to the whole thing.
3. Now find a pedestrian, ask them to get in, and drive off.
4. Wait for the next break. Let it play with them in the car.
5. When the music comes back, ask them what they thought of the adverts.
They were there. They heard it.
-===========================================================-
THE BIG v4.3 IDEA: THE CITY TALKS BACK (previous release)
-===========================================================-
Earlier versions made individual pedestrians intelligent.
v4.3 makes the city itself a participant.
Previously, everything the AI produced was aimed at you: an NPC spoke to you, a scene played out in front of you, an episode involved people standing near you.
In v4.3 there are now systems that talk about you instead of to you.
Cause a serious crime spree and the following can happen without you speaking to a single person:
- A police dispatcher reads your crime, your street, your zone and your last known direction over the scanner in a clipped radio cadence.
- A helicopter unit with its own separate personality calls your position from above.
- After you escape and stay clean, a completed dossier of everything you did becomes one real Weazel News bulletin that interrupts your car radio and then restores the station volume afterwards.
- Every pedestrian in the city now silently knows that story for roughly twenty real minutes.
- Roughly eight percent of them are allowed to bring it up naturally, but only from the second conversational turn onward, and only three per broadcast, so it stays a rare surprise instead of a citywide chant.
- If you were busted or killed, your identity became public, and around half of nearby pedestrians can recognise your face and react: flee, insult you, or call 911.
- Every NPC who has already told you the story is locked out forever, so nobody repeats the same news at you twice.
That is a full loop: you act, the world records it, the world broadcasts it, and the world remembers it.
-===========================================================-
WHAT MAKES v4.3 DIFFERENT FROM v4.2 (previous release)
-===========================================================-
v4.2 was about conversations becoming episodes.
v4.3 is about consequence, presentation, and reliability.
The three headline changes:
CONSEQUENCE
Crime spree recording, police dispatch, Weazel News, air unit, city awareness, grudge decay, debts and gossip mean your actions now leave a trail through the world that outlives the conversation that started it.
PRESENTATION
The Neon Glass renderer replaces a panel that used to despawn and respawn up to four times in a single turn. It is now one persistent panel that changes its own contents, with a real dual waveform, a transcript of what your microphone actually heard, and colours that identify who is talking.
RELIABILITY
Twelve reproducible bugs from the community thread and fresh session logs were traced to root cause and fixed, including the long-standing "NPC accepts a fight then runs away" problem, which turned out to be a relationship-group issue rather than a combat issue.
-===========================================================-
v4.3 FEATURE HIGHLIGHTS (previous release, all still active)
-===========================================================-
The largest new systems and upgrades in NEON GLASS include:
- Neon Glass UI engine with 15 render layers,
- 5 panel presets: Cinematic, Compact, Minimal, Ghost, Custom,
- 7 colour themes including Mood Auto and a live Rainbow HSV cycle,
- 4 anchor positions and adjustable scale and opacity,
- live preview while you scroll the settings menu,
- automatic aspect-ratio correction for ultrawide and super-ultrawide monitors,
- auto-fit panel height measured from real text width,
- zero-flicker single-panel state machine,
- dual 14-bar rolling waveform showing your microphone and the NPC voice separately,
- an in-panel dimmed transcript row showing what your microphone actually heard,
- lock-free volatile audio mirror that removed a 30-times-per-second lock fight,
- 29 faction skins mapped from 186 pedestrian models,
- dedicated broadcast styling for police, news and air unit transmissions,
- AI police dispatch engine reading live wanted level, crime, street and direction,
- Weazel News crime spree recorder and automatic bulletin,
- LSPD air unit helicopter loudspeaker with its own voice and personality,
- a four-lane audio arbiter so NPC, News, Dispatch and Heli can never overlap,
- in-game radio ducking to roughly ten percent while an anchor speaks,
- vehicle cabin muffling with a real low-pass filter,
- the new [OPENWINDOW] and [CLOSEWINDOW] tags that physically roll a window and open the filter,
- the new [STANDONONELEG] tag,
- the new [STOPFOLLOWING] self-initiative behaviour,
- the new [LIFT_PLAYERDRIVE] and [LIFT_GIVEBACKDRIVE] driver-swap tags,
- Memory v3 with exponential grudge decay,
- tracked debts in both directions,
- gossip that writes into other NPCs' memory files and spreads by hops,
- the city awareness engine with tiered aware / vocal / recogniser behaviour,
- a Custom Rules text file appended to every NPC prompt across all five AI sockets,
- an AI Thinking Level dial with four steps and written pros and cons,
- a Google Search grounding toggle,
- German language support, bringing the total to eight,
- a rebindable dismiss key,
- a public-release Credits and Community menu hub,
- lift fare charged only on a completed ride,
- and twelve traced-to-root-cause community bug fixes.
All major v4.1 and v4.2 systems remain part of the experience unless explicitly replaced or improved.
-===========================================================-
COMPLETE FEATURE MAP — LIVING LS AIs A TO Z
-===========================================================-
This is the quick A-to-Z map of the complete Living LS AIs experience in v4.4. Every item is explained in greater detail later in this description.
A — AI Conversations, Actions, Auto Reactions & Airwaves
- Real Gemini Live conversations.
- Text and microphone input.
- Streamed native voice output.
- Validated physical action execution.
- Auto NPC Convo reactions to personal space, staring, suspicious following, collisions and social tension.
- AI-generated LS Episodes that can begin without a player command.
- New in 4.4: a full radio break cycle — DJ, adverts and Weazel News — playing on your car radio every three minutes.
B — Behaviors, Bravery, Body States & Broadcasts
- 40 selectable NPC behavior styles.
- Brave, cowardly, moral, criminal, friendly, drunk, savage, disciplined, tourist, hustler and many other personalities.
- Physical body states including hands up, cower, kneel, dance, push-ups, phone, recording, yoga, sitting, sleeping, drinking, smoking, cover and fleeing.
- Dynamic transition and stop controls for persistent states.
- New in 4.4: dispatch, air unit and ambient barks all stand down while you are mid-conversation.
C — Context, Combat, Conditional Contracts & City Awareness
- Location, interior, vehicle, radio, activity, held-item, relationship, visual and witness context.
- Physical aim, shoot, fight, cover, surrender, flee and disengage logic.
- Multi-turn mission contracts with conditional progression after refusal, non-payment, compliance, escape or threat.
- New in 4.4: shared listening context, so an NPC who rode with you through a radio break has the real advert and news text in their head.
D — Direct Talk, Drag Races, Dogs, Diagnostics & Dispatch
- Menuless/direct interaction flow.
- Dedicated drag race system with wagers, vehicle selection, countdown, finish detection, reactions and cleanup.
- Dog commands for movement, tricks, guard, fetch, vehicles and numbered targets.
- Detailed bridge, vision, audio, action, scene, cache and scheduler diagnostics.
- New in 4.4: radio break stage diagnostics, cache dedupe reporting and ad-pause state in the log.
E — LS Episodes & Escape Dossiers
- AI-only persistent random incident packs.
- 11 fresh scenarios requested every session, merged with unused previous ones.
- Maximum 55 unique cached scenarios and 100 KB cache size.
- Physical openings, props, evolving body states, linked voices, structured outcomes and natural cleanup.
- New in 4.4: that same dossier is also read out as the lead item in the news stage of a radio break.
F — Friendship, Follow, Flee & Faction Skins
- Persistent friendship scoring and friend identity.
- Homie/bodyguard-style relationships.
- Follow and stop-following states, and in 4.3 an NPC can decide to stop following you on their own initiative.
- Physical fear and flee reactions.
- New in 4.4: the [ENTERCAR] tag, so an ordinary NPC you invite along actually walks over and gets in.
G — Gemini Live, Grounding, Grudges & GTA Integration
- Persistent Gemini Live WebSocket bridge.
- Native voice and microphone transcription workflow.
- Main-thread GTA native execution.
- Human-only grounded LS Episode pairing.
- No arbitrary AI native names, hashes, animation dictionaries or prop models.
- New in 4.4: adverts and news bulletins are built from a live web search of what is genuinely trending today.
H — Homies, Hands Up, History & Helicopters
- Become-homie and accomplice systems.
- Hands-up/hands-down tactical states.
- Persistent NPC history, conversation count, player-name knowledge and witnessed-event memory.
- New in 4.4: the air unit now holds fire while you are actually mid-conversation with somebody.
I — Identity, Interiors, Interruptions & INI Control
- Canonical story-character identity locks.
- Interior and neighborhood awareness.
- Player microphone interruption during two-NPC and three-NPC scenes.
- Participant invalidation protection.
- New in 4.4: RadioBreakCycle and RadioBreakMinutes in the INI, and a dismiss key that is finally read before the sixteen early returns that used to eat it.
J — Jobs, Judgement & Joined Scenes
- NPCs may accept, refuse, judge, negotiate or demand payment for jobs.
- Accepted jobs become commitment-locked.
- Two-person and three-person joined Gemini scene sessions.
- New in 4.4: the [ROBSTORE] tag, so a shop robbery you talk somebody into physically happens at one of 16 real mapped stores.
K — Key Simplicity & Knowledge
- Gemini-first modern workflow centered around one Gemini API configuration.
- NPC knowledge shaped by personality, memory, world state, vision and canonical relationships.
- API keys remain private and must never be shared in public logs.
- v4.3 position: no shared key will ever be bundled with the script. A shared public key gets rate-limited and banned within hours and then the mod is broken for everybody.
L — Language, Lip-Sync, Lifts & Lanes
- Strict multilingual scene language locking.
- Original stable audio-driven lip-sync.
- Dynamic spatial voice positioning.
- General lifts, waypoint travel and 20 named destinations.
- New in 4.4: the radio break cache is authored in your selected language, and English copy already on disk is translated as it is read.
M — Memory v3, Microphone & Money
- Persistent memory with exponential grudge decay, tracked debts and spreading gossip.
- Bounded history and full backward compatibility with v2 memory files.
- Live microphone streaming with ownership protection.
- Verified money deductions and ordered payment plus scene-start transactions.
- New in 4.4: money from an NPC actually arrives in your wallet, verified against the game's own stat before and after.
N — NPC-to-NPC, Three-NPC & News
- NPC A to NPC B conversations.
- NPC A to NPC B to NPC C group scenes.
- Independent voices, shared transcripts, fair rotation, target ownership, physical actions and player participation.
- Numbered target roster with stable handle locking.
- New in 4.4: the news stage of a radio break now seeds city awareness, which it never did before.
O — Outcomes, Ownership & Occlusion
- Resolved, unresolved and escalated LS Episode outcomes.
- Action ownership prevents the target from copying the executor's commands.
- Session and microphone ownership reject stale packets.
- Spatial audio occlusion and distance filtering.
- New in 4.4: shared listening is cabin-gated, so only an NPC who genuinely sat in your car claims to have heard your radio.
P — Props, Personalities, Physical Performance & Presets
- Validated phones, cameras, wallets, money bags, cash, documents, drinks, food and evidence props.
- 40 personality modes.
- Physical performance rather than dialogue-only narration.
- New in 4.4: a fifth panel skin dedicated to advert breaks, so a commercial no longer wears a police badge.
Q — Queues, Quotas & Quality Controls
- Main-thread action queues.
- Mandatory LS Episodes wait in a safe gameplay queue.
- Gemini quota and API availability handled through cache, retry, key rotation and backoff.
- PCM quality verification before accepting voiced scene turns.
- New in 4.4: the search grounding quota trips cleanly, disables search for that session and lets the conversation carry on.
R — Relationships, Routines, Random Stories & Radio
- GTA story relationship network.
- Ammu-Nation, clothing-store and convenience-store routines.
- Random LS Episodes independent of NPC Routines.
- Radio and vehicle context.
- New in 4.4: radio ducking has an absolute 25 second ceiling, so a long chase can never mute your music or kill the Q radio wheel.
S — Spatial Audio, Shops, Story Characters, Stop Commands & Skins
- Dynamic stereo positioning and distance attenuation.
- Shopping and checkout scenes.
- Michael, Franklin, Trevor, families, allies, rivals and broader story identities.
- Complete semantic NPC-to-NPC stop-command family.
- New in 4.4: a rewritten [LEANONCAR] that leans on your bonnet instead of launching it into the sky.
T — Target Locks, Three-Person Scenes, Transitions & Thinking Level
- Stable numbered target handles.
- Three-person linked scenes.
- Dynamic transitions between cower, stand, flee, yoga, phone, record, aim, dance, sit, sleep and other states.
- New in 4.4: [SNIPEKILL@n] takes out a specific numbered person at range instead of whoever happens to be nearest.
U — Unscripted Incidents & User Freedom
- No hand-written local fallback templates for LS Episodes.
- Player can aim, shoot, reload, use the weapon wheel and melee during supported conversations and scenes.
- Every session can produce a different story pack.
- New in 4.4: an ad break pauses your conversation instead of trampling it, and tells you to wait or press N to skip.
V — Vision, Vehicles & Voices
- Fresh screen-frame visual context.
- Vehicle and window conversations.
- Lift, exit, drive-away, stop-for-player and race systems.
- Independent Gemini voices for linked participants.
- New in 4.4: an NPC riding with you hears your radio, and shared listening works during a lift as well as a normal drive.
W — Witnesses, Weapons, World Awareness & Weazel
- Crime, dead-body, threat and suspicious-action awareness.
- Weapon handoff and persistent weapon ownership.
- Location, time, activity, radio, vehicle and physical evidence awareness.
- New in 4.4: rumours finally spread — the gossip system was silently skipping every pedestrian because of a stale filename check.
X — XML/Legacy Tag Repair
- Repairs validated legacy forms such as and .
- Repairs ordinary scene tags into the NPCTONPC namespace.
- Unknown AI markup remains non-executable.
Y — Your Choices Matter
- Personality and relationship affect acceptance.
- Payment and weapon exchange affect contracts.
- Player interruption can redirect, stop, continue or escalate a scene.
- Target replies determine conditional physical phases.
- New in 4.4: what you sat through on the radio becomes something you and a passenger genuinely share.
Z — Zexiva's Living Los Santos
- A complete single-player AI sandbox where conversations become physical, persistent, voiced Episodes, and where the city broadcasts and remembers what you did.
-===========================================================-
NEW: THE NEON GLASS UI ENGINE
-===========================================================-
The dialogue panel was rebuilt from scratch.
The old panel had a structural problem. It called its show routine separately for listening, transcribing, thinking and reply, which meant the box visibly died and respawned up to four times in a single conversational turn. It also contained 77 hardcoded magic numbers producing exactly one fixed look, and it stretched badly on ultrawide monitors.
Neon Glass is one persistent panel whose contents change.
The renderer draws fifteen ordered layers:
1. Outer bloom.
2. Drop shadow.
3. Three-band glass body.
4. Scanlines at a fixed interval.
5. Left neon spine in three segments running bright to dim.
6. Top and bottom hairlines.
7. Broadcast overlay: a counter-travelling blue and red police siren sweep, a Weazel red lower-third band, or an amber helicopter searchlight sweep.
8. A travelling top-edge shimmer while the system is busy.
9. Corner brackets and right-hand verticals.
10. Footer strip.
11. Avatar with a triple ring.
12. Name badge, friendship pips, faction chip and header status dot.
13. Recording indicator and lift ribbon.
14. The dimmed "YOU said" transcript row.
15. Body text with typewriter caret, footer hint with marching dots, character counter and action-flash toast.
Presets
- Cinematic
- Compact
- Minimal
- Ghost
- Custom
Colour themes
- Mood Auto, which follows the NPC's current mood score
- Cyber
- Sunset
- Toxic
- Royal
- Blood
- Rainbow, which cycles hue continuously
Anchors
- Bottom
- Top
- Bottom Left
- Bottom Right
Scale and opacity are both adjustable, and every change previews live while you scroll the menu rather than forcing you to close it and test.
Aspect-ratio correction is applied on every draw, so 21:9 and 32:9 monitors stop stretching the panel.
Panel height auto-fits from the real measured text width divided by the available column, capped at a sensible maximum, so a two-word reply does not get a nine-line box.
If you prefer the old look, the legacy renderer is still available through a configuration switch.
-===========================================================-
NEW: THE DUAL WAVEFORM IS REAL DATA
-===========================================================-
Under the avatar there are two independent 14-bar rolling histories.
The top row, in blue, is your microphone level.
The bottom row, in the current accent colour, is the NPC's actual streamed voice level.
New samples push in from the right and the history scrolls left. Neither row ever disappears: a silent side flatlines to a thin idle line instead of vanishing, so the panel never visually pops while you talk.
The meter is capped so it cannot burn frames, and it now reads from a lock-free volatile mirror instead of polling the audio buffer roughly thirty times a second. That old polling behaviour was fighting the same lock the PCM writer needed and was a genuine source of audio flicker during replies.
-===========================================================-
NEW: 29 FACTION SKINS
-===========================================================-
186 pedestrian models are mapped to 29 visual identities. When you talk to someone, the panel adopts their faction colours and shows a faction chip.
Gangs and crews
- Ballas
- Families
- Vagos
- The Lost MC
- Marabunta
- Korean Mob
- Triads
- Armenian Mob
- Varrios
Law and government
- LSPD Officer
- Sheriff
- NOOSE / SWAT
- FIB
- Army
- Security
- Inmate
Services
- Paramedic
- Firefighter
- Medical
Social and regional
- Blaine County
- Professional
- Nightlife
- Infected
- Animal
- Transient
- Beach
- Business
- Hipster
- Country
Radio skins are handled separately. Police dispatch, Weazel News and the LSPD Air Unit each get their own broadcast styling, so you instantly know a transmission is not a person standing next to you. A late fix also clears any lingering faction colour when a radio transmission begins, because a Ballas-purple panel labelled LSPD DISPATCH is not acceptable.
-===========================================================-
NEW: AI POLICE DISPATCH
-===========================================================-
A real AI dispatcher now runs on the police band.
The dispatcher receives live world state and reads it back in a clipped radio cadence:
- your current wanted level,
- the type of crime,
- the street name,
- the zone,
- and your last known direction of travel.
It is gated so it cannot spam during an active call, it is throttled with diagnostic logging that records exactly why a transmission was skipped, and it outranks ambient chatter, so a dispatch call is allowed to cut across a random pedestrian bark.
Example:
"All units, we have a 187 in progress on Marathon Avenue. Suspect on foot, last seen heading west."
-===========================================================-
NEW: WEAZEL NEWS BULLETINS & THE CRIME SPREE RECORDER
-===========================================================-
Weazel News does not report random noise. It reports you, accurately, using a recorded dossier.
The crime spree recorder arms at three stars and then records continuously until you are completely clean again:
- peak wanted level,
- police killed,
- civilians killed,
- vehicles exploded,
- shooting events,
- the zone where the spree started,
- every chase zone,
- every shooting zone,
- your escape zone,
- your escape method,
- and the final outcome: ESCAPED, BUSTED or WASTED.
Staying clean for a short confirmation window counts as an escape. About a minute later the completed dossier automatically becomes one real bulletin.
While the anchor speaks, your in-game radio station ducks to roughly ten percent and then restores. Reported dossiers are wiped afterwards so the anchor can never repeat old news, and a watchdog guarantees the bulletin can never sit stuck on "Generating..." forever.
Example:
"We're getting reports of gunfire in Del Perro. More on this as it develops."
-===========================================================-
NEW: LSPD AIR UNIT
-===========================================================-
A police helicopter has its own separate voice and its own personality.
During a pursuit it calls your position from above. Its loudspeaker is deliberately the single loudest thing in the game, and it outranks ground dispatch, because in a real pursuit the chopper takes the lane.
Example:
"Air One has visual. Suspect is in the alley behind the strip mall, still moving."
-===========================================================-
NEW: THE FOUR-LANE AUDIO ARBITER
-===========================================================-
With NPCs, dispatch, news and a helicopter all capable of speaking, the mod needed traffic control.
Four audio lanes are claimed and released explicitly:
- NPC
- News
- Dispatch
- Heli
Two systems can never fight for your speakers mid-sentence. A queued pedestrian bark will not jump the line while LSPD is transmitting; it waits. A bark that was queued twelve seconds ago is discarded if you are already a block away, because it is no longer relevant.
Radio transmissions are also pinned dead centre in the stereo field rather than positioned in 3D space, since a voice coming out of a scanner does not have a physical location in the world.
-===========================================================-
NEW: CITY AWARENESS ENGINE
-===========================================================-
After a bulletin airs, Los Santos remembers it for roughly twenty real minutes.
If every pedestrian opened with "did you hear the news," the mod would be unbearable within three minutes. So awareness is tiered:
AWARE — the overwhelming majority
The story sits in their context. They will never raise it themselves. They only answer if you ask.
VOCAL — roughly eight percent
They may bring it up naturally, and only from the second conversational turn onward. Hard-capped at three per broadcast so it stays a rare surprise.
RECOGNIZER — only when you were BUSTED or WASTED
Your identity became public. Around half of nearby pedestrians recognise your face and react physically: flee, insult you, or call 911.
Every NPC who speaks about it is locked out permanently, so nobody repeats the same story at you.
Knowledge is injected instantly. An earlier build delayed awareness by sixty seconds, which meant that if you asked an NPC immediately after a bulletin they knew nothing. Only the ability to raise it unprompted is delayed now, which is the part that actually needed pacing.
Linked NPC-to-NPC scenes hear the news too, so two strangers can naturally end up discussing something you did.
-===========================================================-
NEW: MEMORY v3 — GRUDGES, DEBTS & GOSSIP
-===========================================================-
NPC memory is no longer a flat friendship score.
Exponential grudge decay
Individual events carry their own weight and fade at their own speed. Being shot at stays in someone's head for roughly two weeks of decay. A plain insult fades in about a day. Everything in between scales smoothly, so a serious betrayal is not forgotten at the same rate as a rude comment.
Tracked debts
Money owed in either direction is stored as its own record. An NPC can be genuinely friendly with you and still want their two hundred dollars back.
Gossip that spreads
When something notable happens it propagates outward to nearby pedestrians and is written directly into their memory files. The radius grows with each hop, up to a bounded number of people per event, inside a freshness window. Walk back an hour later and a total stranger may already know what you did.
Full backward compatibility
Old v2 memory files load without conversion. Nothing you already built with an NPC is lost.
-===========================================================-
NEW: CUSTOM RULES FILE
-===========================================================-
A plain text file whose contents are appended to every NPC prompt.
Location:
scripts/LLAI SERVER/LLAIBridge/LLAI CUSTOM RULES.txt
Behaviour:
- auto-created with a template on first run,
- lines beginning with # are comments,
- needs more than a few real characters before it activates,
- capped at 8000 characters,
- reaches all five AI sockets.
The old /CustomPromptHere: override was retired because it replaced the entire prompt engine and therefore broke every action tag. This one adds to the prompt instead of replacing it.
The parser passed its full test set and was confirmed working in game with a complete "everyone in Los Santos believes they are the strongest person alive" rule set. A sample file ships next to the template.
-===========================================================-
NEW: AI THINKING LEVEL
-===========================================================-
A four-step dial in the menu, with pros and cons written out in your own language so you are not guessing what you just changed.
Minimal — default
Fastest possible reply. Simplest reasoning.
Low
Slightly smarter. Small delay.
Medium
Handles complex requests. Noticeable pause.
High
Deepest reasoning. Slowest, and it does break conversational flow.
Why this needed fixing: the bridge was hard-coding a thinking budget of zero into five different sockets, and it was using the wrong parameter family entirely for the newer model generation, which rejects it. v4.3 detects the model family and sends the correct form.
-===========================================================-
NEW: GOOGLE SEARCH GROUNDING TOGGLE
-===========================================================-
An optional toggle that attaches a search tool to the live session so NPCs can reference real information.
Honest note: this is provided as an experimental option and defaults to OFF. Grounding support depends entirely on what the live model actually honours, and in testing the current live preview model did not always issue search queries. It is harmless when disabled and it is documented here rather than hidden.
-===========================================================-
NEW: 8 LANGUAGES INCLUDING GERMAN
-===========================================================-
Requested directly by the community.
- English
- Hindi
- Portuguese
- Spanish
- French
- Italian
- Japanese
- German (new in 4.3)
This is not just NPC speech. Menus, notifications, item descriptions and the scene language rules were all localised.
The bug behind this: roughly 275 notification strings were silently English-or-Portuguese only, because the translation helper returned its input unchanged unless the language happened to be Portuguese. v4.3 replaces it with a proper runtime lookup so every language actually resolves.
The multilingual scene language lock from v4.2 remains, covering English, Hinglish, Haryanvi, Bhojpuri, Khari Boli, Spanish, Brazilian Portuguese, Japanese, French, Italian, Simplified Chinese, Malaysian Malay, Arabic and Indonesian.
-===========================================================-
NEW & IMPROVED TAGS IN v4.3
-===========================================================-
[OPENWINDOW]
An NPC inside a vehicle physically rolls their own window down so you can actually hear them. This pairs with the cabin muffling system: the moment the glass drops, the low-pass filter opens and the voice becomes clear.
[CLOSEWINDOW]
Rolls it back up. The muffle returns smoothly.
[STANDONONELEG]
A stock ambient yoga scenario whose tree-pose phase has the ped balancing on one leg. Yes, this genuinely exists in GTA V.
[STOPFOLLOWING]
An NPC who is following you can now decide to stop on their own initiative and walk away. Previously they could only stop when you ordered it. This was implemented purely through prompt law and worked examples, with zero keyword detectors, because word-matching guards are fragile and produce false positives.
[LIFT_PLAYERDRIVE]
During a lift, you take the wheel and the NPC moves to the passenger seat. The route pauses.
[LIFT_GIVEBACKDRIVE]
Hand the wheel back. The NPC becomes the driver again and the route resumes.
[FIGHTENEMY]
Restored. This tag was listed in the prompt but its supporting field was write-only, meaning an NPC who agreed to defend you never actually engaged. It works now.
-===========================================================-
NEW: VEHICLE CABIN MUFFLING
-===========================================================-
Acoustic realism for vehicle conversations.
A voice coming from inside a closed car is filtered. When the window comes down, the filter opens. When it goes back up, the muffle returns smoothly rather than snapping.
Combined with the existing spatial audio system, this means a driver talking to you through a closed window genuinely sounds like a driver talking to you through a closed window.
-===========================================================-
THE v4.3 BUG HUNT — TWELVE REPORTS, TWELVE ROOT CAUSES (previous release)
-===========================================================-
Community reports were not worked around. Each one was traced to the actual line that caused it.
1. "90% of NPCs think they're Beverly."
Reported by impoliceofficer, who noticed the problem scaled with the number of files in the memory folder: 135 files made it constant, deleting them made it stop.
Root cause: story-character name matching ran against generated ambient names, so more memory files meant more collisions.
Fix: a story-category gate plus a whole-word matcher applied across 117 call sites.
2. NPC says "I'm hitting you" while standing still.
Root cause: combat ability defaulted to Poor, so the engine accepted the task and then held position.
Fix: combat ability, movement and range set explicitly, plus anti-coward combat attributes.
3. NPC accepts a fight, then runs away.
This was the big one, and it took a full session log to find.
Root cause: the in-chat combat path never moved the ped into the HATES_PLAYER relationship group. Without it the engine classifies you as a threat, which generates a panic and flee event, rather than as an enemy, which generates a combat task. Every reassert tick lost to a fresh flee event. That is also why it only ever worked after you cancelled the conversation.
Fix: explicit enemy identity, removal from the original group, a hard immediate task clear rather than a soft abort, the anti-flee combat attribute, identity re-asserted every tick, and a longer lock window.
4. Space bar dismiss makes you jump or handbrake.
Reported by impoliceofficer.
Fix: the dismiss key is now rebindable through DismissKey= in the INI, and the "wait until audio ends" gate was removed so it responds immediately.
5. The beer and weed errand scam.
Reported by impoliceofficer, including the specific case of an NPC named Wayne who took a hundred dollars for weed, called his dealer, quoted a price and then ran away.
Root cause: NPCs were accepting errands the engine cannot physically perform.
Fix: a hard prompt law stating exactly which errands exist. Money taken for an impossible errand no longer happens because the errand is no longer offered.
6. NPCs refuse to help in shootouts.
Reported by impoliceofficer.
Root cause: the ambient cowardice profile kept overriding the combat order.
Fix: AlwaysFight and DisableFleeFromCombat re-applied for as long as the combat lock is active.
7. Voice conversations randomly stop working until you press Backspace.
Reported by impoliceofficer.
Fix: session and turn ownership guards, warm-hold handling, and a microphone queue that discards stale audio safely instead of jamming.
8. Audio flicker during replies.
Found in session logs.
Root cause: the waveform polled the audio buffer roughly thirty times a second and fought the same lock the PCM writer needed.
Fix: a lock-free volatile mirror.
9. Backspace did nothing while the Settings menu was open.
Found in logs.
Fix: Backspace now clears menus and the panel in one press.
10. An NPC never stops following on its own.
Found in logs, where the player had to manually say "then stop following me," and the NPC responded with a drive-away tag while standing on the pavement with no vehicle.
Fix: the prompt now grants the NPC the right to leave, with worked good and bad examples including that exact failure. No keyword detectors were added.
11. [WAVE] never played.
Found in logs, failing four times out of four.
Root cause: it used a multiplayer celebration animation dictionary that never streams in singleplayer.
Fix: swapped to a gesture that is already resident in both the male and female standing-casual dictionaries, and the animation load budget was raised.
12. Lift driver never exited and the fare never settled.
Root cause: the drop-off logic lived inside the renderer behind three early returns, so with the chatbox hidden it never ran at all.
Fix: extracted into its own unconditional tick.
Additional fixes in the same pass:
- The lift fare was being charged the instant a ride started; it is now charged only when the ride actually completes.
- After a drop-off the driver would exit and jack a nearby vehicle. Fixed.
- A mobile phone was being counted as a weapon. Fixed with the shared weapon check.
- Every ped kept ranting about smog that only exists because of graphics mods. Removed.
- An auto-convo NPC could hold the bridge hostage so the player could not start a new conversation. Fixed.
- A dispatch open event never appeared in the bridge while heli and news did. Fixed.
- A news blackout could stick for three straight minutes. Fixed.
- The episode director stalled for over two minutes while the player was ragdolling on a bike. Fixed.
- Weazel News could hang forever on "Generating..." if the timeout fired the same second the audio arrived. Fixed with a watchdog.
- A world-event spacing correction was logging 33 times per second. The correction still runs every tick; only the log is throttled.
- Dead code cleanup: an unreferenced goto label, two write-only variables, and one write-only field that was hiding an entirely dead feature.
One request that was declined
Several people asked for a working API key to be bundled directly inside the script. That is a hard no. A shared public key is rate-limited and banned within hours, and then the mod is broken for everybody, including the people who asked. A free Gemini key takes about a minute to create and stays yours.
-===========================================================-
EVERYTHING FROM v4.2 AND v4.3 IS STILL HERE
-===========================================================-
LIVING CITY is an expansion, not a replacement. Everything below remains fully present and active in v4.4.
LS EPISODES
Los Santos generates independent AI-only episodes around you, with no hand-written local scenario templates. Eleven fresh scenarios are requested every game session and merged with unused previous ones, up to 55 unique cached scenarios and 100 KB. There is a 50% opportunistic check every 10 seconds and a mandatory deadline every 30 seconds, which waits for a safe gameplay window rather than interrupting chat, microphone recording, an active scene, a lift, combat, ragdoll or unsafe vehicle conditions.
TWO-NPC AND THREE-NPC LINKED SCENES
NPC A can walk to NPC B and hold a fully linked conversation with independent Gemini Live sessions, independent voices, a shared chronological transcript, physical state facts, language locking and scene-ending rules. Three-NPC scenes add round-robin speaking, fair participation, optional routing, target validation and duplicate-person protection.
MISSION CONTRACTS AND THE NEGOTIATION LEDGER
A mission can be negotiated across many turns. A dedicated raw negotiation ledger preserves the chronological deal so that a payment line modifies the job instead of replacing it, and a short confirmation like "go" or "do it" cannot erase the original concrete request.
COMMITMENT LOCK
Before accepting, an NPC keeps full agency to refuse, question, negotiate or demand payment. Once they accept, take payment and walk to the target, they cannot reopen the negotiation inside the scene.
NUMBERED TARGET ROSTER
The AI receives a numbered roster of up to five nearby entities with name, gender, type, role, distance, activity and vehicle state, then selects an exact target. Handles are locked for the conversation, so "3RD: tourist woman" cannot silently become "3RD: random male driver" while you negotiate.
ACTION OWNERSHIP
Every physical tag belongs to the current speaker. The target does not copy the executor's contract just because the shared transcript contains the word "shoot." They react as themselves: hands up, cower, back off, flee, take cover, comply, refuse, or fight back when justified.
VALIDATED PHYSICAL ACTION SYSTEM
Combat and threat: aim, stop aiming, shoot, stop shooting, fight, stop fight, take cover.
Fear and movement: hands up, hands down, cower, kneel, stand up, back off, flee.
Social: hug, kiss, shove, slap, wave.
Activities: dance, push-ups, phone, record, yoga, cheer, impatient, drink, sit, sleep, smoke.
The AI cannot execute arbitrary native hashes, arbitrary native names, arbitrary animation dictionaries, arbitrary prop models, teleports or freezes.
COMPLETE STOP-COMMAND FAMILY
A full set of semantic stop controls, with a clear distinction preserved: stopping an activity is not the same as ending the conversation. "Stop dancing" stops the dancing and the scene continues. "End this conversation" ends the scene. "Keep going, no stopping" forbids both stop types for that turn.
PLAYER INTERRUPTION
You can interrupt an active NPC-to-NPC scene with your microphone. The system preserves current audio, waits for the final transcript, broadcasts the interruption into the shared scene and determines the next speaker. NPCs are instructed never to invent your answer on your behalf.
MALFORMED TAG REPAIR
Validated legacy and ordinary aliases are repaired into the correct namespace. Unknown model-generated markup remains non-executable. The streaming parser holds an incomplete split tag until the closing bracket arrives.
ACCIDENTAL PLAYER-HOSTILITY PROTECTION
Direct hostile actions are deferred until the full turn reveals whether a linked scene is starting, so the initiating NPC cannot accidentally aim at you before walking to the actual target.
GROUNDED PARTICIPANT SELECTION
Human participants only, nearest compatible pair preferred, no driver NPCs, roughly 18 metre scan radius, roughly 12 metre maximum pair separation, venue compatibility, safe-window checks and entity validation. No freezing, no teleporting, no anchor snapping.
AI-GENERATED PHYSICAL OPENINGS AND VALIDATED PROPS
Both participants receive a real physical opening state from a validated capability list, with semantic props including bottles, pill bags, money bags, wallets, phones, cameras, clipboards, cash, duffel bags, food, coffee and documents. A phone prop automatically activates phone behaviour and a camera automatically activates recording.
PHYSICAL HALLUCINATION PROTECTION
The generator is prohibited from inventing unsupported physical facts such as an ATM, a bench, fire, crash damage or a doorway unless the live environment or validated setup confirms it.
STRUCTURED ENDINGS
Ambient episodes require sufficient exchanges and must close with a structured resolved, unresolved or escalated outcome that explains the actual result. Vague endings are rejected.
40 BEHAVIOR MODES
The complete personality collection remains, from Default, Angry, Ultra Roaster, Savage, Polite, Psychopath, Introvert, Kind, Selfish, Dumb, Conspiracy, Flirty, Depressed, Gangster, Philosopher, Comedian, Drunk, High IQ, Disciplined and Chapri, through to Obey Everything, Ride-or-Die Homie, Coward Civilian, Psycho Criminal, Street Hustler, Rich Snob, Corrupt Cop, Gang Soldier, Silent Killer, Drunk Desi Uncle, Helpful Local Guide, Paranoid Prepper, Romantic Flirt, Moral Citizen, Tired Worker, Tourist Outsider, Insult Battle, Street Philosopher, Command Tester and Unfiltered Local.
STORY CHARACTER IDENTITY AND RELATIONSHIPS
Canonical Player, Story, Cutscene and Multiplayer categories, identity locks, and the full relationship network across Michael, Franklin, Trevor, Lamar, Amanda, Jimmy, Tracey, Lester, Dave Norton, Steve Haines, Devin Weston, Ron, Wade, Floyd, Patricia, Martin Madrazo, Simeon, Stretch and the broader story network.
SWEARING / ABUSE CONTROL
The two-mode system is unchanged. With swearing and abuse OFF the AI stays PG-13: no English profanity, no Hindi gaalis, no slurs, no censored or obfuscated variants. With it ON the AI may use contextual English profanity, Hindi and Hinglish gaalis, regional slang, GTA-style insults and character-appropriate rough speech. Identity-slur spam is still not the goal. The setting applies to direct chat and to linked scene rules, and in v4.3 it also applies to the police dispatch, news anchor and air unit voices, which stay professional regardless.
MOVEMENT CONTROLS: OUTOFVEHICLE, DRIVEAWAY AND STOPFORPLAYER
OUTOFVEHICLE requests a natural safe exit and avoids forcing a suicidal exit from a fast-moving vehicle.
DRIVEAWAY lets a driver leave naturally and return to vehicle wandering behaviour. In v4.3 the prompt was tightened with worked examples after a log showed an NPC emitting a drive-away tag while standing on the pavement with no vehicle; that tag is now clearly reserved for actually driving a vehicle, and walking away has its own behaviour.
STOPFORPLAYER asks a walking or wandering NPC to stop, wait, come here and stop, stop walking away, or face the player. On foot the NPC clears the current movement task, stays unfrozen, turns toward you and looks at you. A vehicle driver uses a controlled temporary vehicle stop. No teleport is used. In v4.3 a face-hold watchdog keeps STOPFORPLAYER and FACETARGET peds actually facing you instead of drifting back to their ambient heading.
LIFTS WITH 20 NAMED DESTINATIONS
Davis, Grove Street, Legion Square, Vespucci Beach, Del Perro Pier, Los Santos International Airport, Rockford Hills, Downtown Vinewood, Mirror Park, Diamond Casino, Maze Bank Arena, Sandy Shores, Grapeseed, Paleto Bay, Chumash, Harmony, Fort Zancudo, Galileo Observatory, Mount Chiliad and Marlowe Vineyard, plus current-waypoint routing.
DRAG RACES, HOMIES, SHOPS, ANIMALS
The drag race system with wagers and cleanup, homie and accomplice progression, clothing store, convenience store and Ammu-Nation routines, ambient task preservation, and the full dog and animal command set all remain.
VISION, SPATIAL AUDIO, LIP-SYNC
Multimodal frame capture with full lifecycle diagnostics, dynamic spatial positioning with distance and occlusion, and the stable audio-driven lip-sync workflow.
MAIN-THREAD SAFETY AND OWNERSHIP
GTA natives stay on the ScriptHookVDotNet main thread or the main-thread action queue. Session IDs, microphone turn IDs, scene turn IDs, generation IDs and in-flight guards reject stale and duplicate packets.
-===========================================================-
QUICK SETUP OVERVIEW
-===========================================================-
Living LS AIs is a single-player ScriptHookVDotNet mod.
Always follow the exact installation guide included with the download, because dependency versions and package layout may change between public builds.
The normal v4.4 setup includes:
- GTA V single-player,
- ScriptHookV,
- ScriptHookVDotNet 3 / Nightly,
- LemonUI for SHVDN3,
- Newtonsoft.Json,
- NAudio,
- the included LivingLSAIs DLL,
- the included LLAI SERVER data folder,
- the readable local server.js Gemini Live bridge,
- Node.js for the local bridge,
- and your own valid Gemini API key.
Important installation rules
Only one active LivingLSAIs DLL should exist. The main DLL belongs in the GTA V scripts directory. Do not leave a second duplicate inside LLAI SERVER, because duplicate script loading causes unpredictable behaviour.
Delete outdated LivingLSAIs files, stale duplicate folders and old mismatched builds before copying in v4.4.
The local bridge belongs inside the included LLAIBridge folder under LLAI SERVER.
If you are upgrading from a build that had the Beverly identity bug, consider clearing the NPC_MEMORIES folder for a clean slate. Hundreds of files generated by the buggy build can persist even after the fix.
-===========================================================-
BASIC FOLDER LAYOUT
-===========================================================-
GTA V/
├── GTA5.exe
├── ScriptHookV.dll
├── ScriptHookVDotNet.asi
├── ScriptHookVDotNet3.dll
├── scripts/
│ ├── LivingLSAIs.dll
│ ├── LivingLSAIs.ini
│ ├── LemonUI.SHVDN3.dll
│ ├── NAudio.dll
│ └── Newtonsoft.Json.dll
│ └── LLAI SERVER/
│ ├── LLAIBridge/
│ │ ├── server.js
│ │ ├── node.exe
│ │ ├── LLAI CUSTOM RULES.txt (new in 4.3)
│ │ └── radio_break_cache.json (new in 4.4)
│ ├── NPC_MEMORIES/ (memory v3 json files)
│ ├── LLAIsession.log
│ ├── LLAIDEBUG.log
│ ├── bridge_audio.log
│ └── bridge_fatal.log
-===========================================================-
CORE CONTROLS
-===========================================================-
E — Lock onto a nearby NPC and open the conversation flow.
T — Instant text chat with a nearby NPC or the active conversation target.
Y (hold) — Voice input, push-to-talk style live speech.
ENTER — Select menu items, confirm choices, and progress drag race setup and start.
BACKSPACE — End chat or cancel active flows such as drag race setup. In v4.3 it also clears an open Settings menu and the panel in one press.
SPACE — Dismiss the chatbox instantly. New in 4.3: rebindable through DismissKey= in the INI, because Space is also jump and handbrake. Fixed in 4.4: the custom key is now read before the sixteen early returns that used to eat it.
N — New in 4.4. Skip the radio break, either during the ten second warning or at any point once it has started. Deliberately not suppressed, so shop menus that also read N keep working.
Interface menu — New in 4.3. Live-preview every preset, colour theme, scale, opacity and anchor while you scroll. Saves to the INI automatically.
Credits & Community menu — New in 4.3. A public-release hub with credits, links and support information.
-===========================================================-
FIRST-TIME USER TUTORIAL
-===========================================================-
Step 1 — Install the required GTA V scripting foundation.
Install ScriptHookV and ScriptHookVDotNet according to their official instructions, then place the mod files exactly as described in the included installation guide.
Step 2 — Configure Gemini.
Add your own valid Gemini API key using the configuration method included with the release. Do not publicly share your key. Gemini availability, quota, regional availability and model limits all affect response generation.
Step 3 — Start GTA V Story Mode.
Living LS AIs is made for single-player. Do not use it in GTA Online.
Step 4 — Approach a pedestrian and start talking.
Use text input, microphone input, menuless direct interaction, or the menu, depending on your settings.
Step 5 — Speak naturally.
You do not need to memorise internal tags for normal gameplay:
- "What are you doing here?"
- "Do you know where the beach is?"
- "Take my gun for a minute."
- "Give me a ride to Davis."
- "Roll your window down, I can't hear you."
- "Let me drive."
- "Go ask that woman if this phone belongs to her."
- "Ask that man to dance. If he refuses, aim at him."
Step 6 — Watch the world, not only the subtitles.
Notice who walks to whom, who is holding an item, who aims, who surrenders, who flees, and how the scene resolves.
Step 7 — New in 4.3: cause trouble and then listen.
Get three stars, run, escape, then get in a car and turn the radio on. About a minute later you may hear a Weazel News anchor describing what you just did. Then go and talk to a pedestrian and ask them about the news.
Step 8 — New in 4.4: bring somebody with you.
Ask a pedestrian to get in your car. Drive until a radio break plays and let it finish. When the music comes back, ask them what they thought of the adverts. They heard every word of it, and they will tell you.
-===========================================================-
TUNING THE PANEL
-===========================================================-
Open the Interface menu and scroll. Everything previews live.
- Try Cinematic if you want the full look.
- Try Compact or Minimal if you find the panel distracting during driving.
- Try Ghost if you want the text to feel like it is floating with almost no chrome.
- Switch Anchor to Top if the bottom of your screen is busy with other mod HUDs.
- Set the colour theme to Mood Auto and watch it shift as an NPC's mood changes during an argument.
- Set it to Rainbow if you simply want it to cycle.
- Raise or lower Scale for your resolution, and Opacity for your taste.
If you prefer the older renderer entirely, set UiEngineV2=false in the INI.
-===========================================================-
WRITING YOUR OWN RULES
-===========================================================-
Open scripts/LLAI SERVER/LLAIBridge/LLAI CUSTOM RULES.txt
Write anything you want appended to every NPC prompt. Lines starting with # are ignored.
Examples of what people have used it for:
- Making every pedestrian believe they are the strongest person in Los Santos.
- Enforcing a specific roleplay setting or time period.
- Forcing a consistent regional speech style.
- Adding a house rule such as "nobody in this city ever admits they are wrong."
- Making every NPC obsessed with a particular topic.
It applies on top of the existing prompt engine, so all action tags, scene rules and physical laws keep working.
-===========================================================-
EXAMPLE SESSION 1 — THE CITY REPORTS ON YOU
-===========================================================-
You start a firefight in Del Perro and reach four stars.
The crime spree recorder arms and begins logging: peak stars, cops killed, vehicles destroyed, every zone you shot in, every zone you were chased through.
Police dispatch cuts across the ambient chatter:
"All units, shots fired on Del Perro Boulevard. Suspect is armed, heading north on foot."
The chopper arrives and claims the audio lane above dispatch:
"Air One has visual. Suspect is on the rooftops, moving east."
You escape into an alley and stay clean long enough for the escape to confirm.
About a minute later you get in a car, and your station ducks to ten percent:
"We're getting reports of a violent incident in Del Perro this afternoon. Police say the suspect fled the scene and remains at large. More on this as it develops."
The station volume restores.
You walk up to a pedestrian and ask what happened in Del Perro. They know. They were never going to bring it up unprompted, but they can answer.
You walk to another one. They say nothing about it, because they are in the aware tier, not the vocal tier.
A third one recognises you, because that last spree ended with you getting arrested and your identity became public. They back away and pull out their phone.
-===========================================================-
EXAMPLE SESSION 2 — DANCE OR ELSE
-===========================================================-
Player: "Take this gun."
NPC A: "Understood. Anything else?"
Player: "Ask that guy to dance. Aim if he refuses. Shoot only if he still refuses."
NPC A accepts and walks to NPC B.
NPC A: "Hey, the boss wants you to dance. Got a problem with that?"
NPC B: "Dance? What is this, performance art?"
NPC A physically aims.
NPC A: "Make some moves or things stop being friendly."
NPC B physically cowers.
NPC B: "Okay, easy! What exactly do you want?"
Player interrupts by microphone: "Tell him to dance."
NPC A: "You heard them. Dance."
NPC B physically dances.
Player: "Perfect. Keep going."
The scene continues instead of incorrectly ending.
-===========================================================-
EXAMPLE SESSION 3 — THE LIFT, YOUR WAY
-===========================================================-
Player: "Give me a ride to Sandy Shores."
The NPC accepts, you get in, and the lift ribbon appears in the panel showing the destination.
Player: "I can't hear you over the engine."
NPC rolls their window down. The cabin muffle opens and the voice becomes clear.
Player: "Actually, let me drive."
You take the wheel, the NPC moves to the passenger seat, and the route pauses.
You drive halfway, get bored, and hand it back.
The NPC becomes the driver again and the route resumes from where it paused.
At the actual drop-off, the fare settles. Not at the start of the ride, and the driver does not exit and steal a nearby car afterwards.
-===========================================================-
EXAMPLE SESSION 4 — A GRUDGE THAT TRAVELLED
-===========================================================-
You shoot near a pedestrian in Mirror Park and then leave without another word.
That event is recorded in their memory file with a heavy weight and a two-week decay curve. It also seeds gossip.
Over the next fifteen minutes it propagates outward by hops into the memory files of nearby pedestrians, with the radius growing each hop, up to a bounded number of people.
You come back an hour later, walk two blocks over, and speak to a complete stranger you have never met.
They already know.
-===========================================================-
LOGGING & DIAGNOSTICS
-===========================================================-
v4.3 produces detailed logs for testing and support, covering:
- bridge startup and handshake,
- Gemini session readiness and reconnect behaviour,
- microphone lifecycle and stale packet rejection,
- STT transcript lifecycle,
- vision capture and send flow,
- PCM chunks, bytes and RMS activity,
- lip-sync start and stop,
- spatial audio calculations and cabin muffling,
- the numbered target roster and handle locking,
- negotiation chronology and scene commitment,
- action receipt, namespace repair, normalization, execution, blocking and deduplication,
- LS Episode generation, cache source, prop attachment, transitions and outcomes,
- scheduler safe-window reasons,
- money transaction verification,
- entity invalidation and scene cleanup,
- and new in 4.3: dispatch gate reasons, heli mutual-exclusion state, news blackout state, crime spree recording, city awareness tiers, faction skin resolution and UI skin release.
When reporting a bug, include the relevant session log section, the debug log section, the exact command you gave, what every NPC said, what physically happened, and what you expected instead. Short clips are extremely useful for physical-action or pathfinding bugs.
-===========================================================-
PUBLIC RELEASE TIPS
-===========================================================-
- Use Story Mode only.
- Keep exactly one active LivingLSAIs DLL.
- Use a stable ScriptHookVDotNet installation.
- Make sure the local bridge can run through Node.js.
- Use your own valid Gemini API key with available quota.
- If you are upgrading and NPC identities feel wrong, clear NPC_MEMORIES.
- Rebind the dismiss key if you drive a lot, since Space is handbrake.
- Avoid switching between many NPCs while a microphone turn is still processing.
- Give moving scene participants a moment to approach naturally.
- Remember that GTA pathfinding can fail in crowded, blocked or unusual geometry.
- Keep logs when reporting a bug.
- New in 4.4: if the adverts ever feel repetitive or come out in the wrong language, delete radio_break_cache.json. The mod rebuilds it on the next boot in your current language.
-===========================================================-
LIMITATIONS & HONEST EXPECTATIONS
-===========================================================-
Living LS AIs connects a generative live model to a dynamic GTA V world, so exact dialogue is not deterministic.
Gemini may occasionally produce no PCM on a scene turn and require a retry, misunderstand unclear speech, choose an unexpected but valid reaction, or be affected by API availability and quota. A "quota exceeded" or 429 line in your log is your own key hitting its free-tier limit, not a mod failure; ambient scenario generation falls back to the cached library automatically and live conversation keeps working.
Google Search grounding is provided as an experimental toggle and defaults to OFF, because grounding support depends on what the live model actually honours.
GTA pedestrians may occasionally fail pathfinding, despawn, be interrupted by world combat, enter traffic danger, or die from unrelated causes. The mod validates physical actions and scene ownership, but it does not replace the entire GTA V pedestrian engine.
The architecture prioritises one foreground voiced interaction while background routines and physical systems continue. It does not promise unlimited simultaneous independent voiced conversations.
Random LS Episodes intentionally use no hand-written local scenario fallback. If Gemini and the valid AI cache are both unavailable, the mod will not invent a scripted replacement incident.
The always-on microphone was removed in v4.3 by request, because it could not reliably distinguish intentional speech from background noise.
Google's Search grounding quota is a separate and much smaller free-tier bucket than normal chat. When it runs out the mod detects it, disables search automatically for that session and carries on talking. You may see one WEB_SEARCH_QUOTA_TRIPPED line in your log per session. It resets at midnight Pacific. This is your key's free tier, not a mod failure.
Rumours degrade as they travel, by design. A story four hops from its source is an unreliable version of what happened, and the NPC telling it is meant to sound unsure about the details. That is the system working, not the model hallucinating.
-===========================================================-
WHO THIS MOD IS FOR
-===========================================================-
Living LS AIs v4.4 is designed for players who want:
- immersive roleplay,
- unscripted stories,
- sandbox chaos,
- AI experiments,
- cinematic encounters,
- memory-driven NPCs who hold grudges,
- a reputation that travels through the city without you,
- a police scanner that actually knows what you did,
- news coverage of your own rampage,
- a car radio that takes real commercial breaks,
- a passenger who heard the same advert you did and has opinions about it,
- social reactions,
- voiced characters,
- physical AI missions,
- dynamic arguments,
- random street episodes,
- and a Los Santos that feels less like a city of cardboard extras.
If you only want a screenshot where an NPC displays one clever sentence, this mod goes far beyond that.
Living LS AIs is designed for the moments after the screenshot:
What does the NPC remember?
Who did they tell?
What did the news say about you?
Will the guy two blocks over already know your face?
-===========================================================-
v4.4 LIVING CITY — MASTER CHANGELOG
-===========================================================-
Radio break cycle
- Added the four-stage radio break: HOST_INTRO, ADS, NEWS, HOST_OUTRO.
- Added 22 written station hosts across 26 supported stations.
- Added a three minute default interval, configurable with RadioBreakMinutes.
- Added RadioBreakCycle to turn the whole system on or off.
- Added a ten second pre-roll warning with N to skip.
- Chained the stages on socket close rather than on timers, so a slow stage cannot overlap the next one.
- Added live web search so adverts reference what is genuinely trending today.
- Added an explicit ban on narrating the search out loud.
- Added the radio break content cache: six ads and six bulletins, up to twenty, capped at 60 KB.
- Made the cache append rather than overwrite, so leftovers carry across sessions.
- Primed the cache at boot and refilled it after every break over the REST endpoint.
- Added a fifth chatbox skin for advert breaks with its own emblem.
Shared listening
- Added shared break context: the real advert and news text enters a passenger's head.
- Gated it to NPCs who genuinely shared the vehicle cabin, plus lift drivers.
- Added a five minute freshness window.
- Capped stored copy at 700 characters per stage.
- Forbade the NPC from claiming to have heard anything not actually broadcast.
Ad pause and conversation priority
- Added automatic ad pause that holds an open conversation instead of ending it.
- Kept the NPC, the history and the warm bridge session through the pause.
- Added an on-screen prompt when the mic or text key is pressed during a break.
- Throttled that prompt so holding a key cannot spam the feed.
- Made dispatch, the air unit and ambient barks stand down while a conversation is live.
- Deliberately exempted ads and news from that gate.
- Removed the wanted-level block that made a break impossible during a chase.
Anti-repetition and language
- Added a banned list of existing cached copy shown to the writer.
- Added a rotating creative brief: eight angles and twelve lead brands.
- Banned worn-out advert openings by name.
- Capped video-game references to one advert per batch.
- Added a similarity filter that rejects near-duplicate copy on the way into the cache.
- Passed the player's language into the cache writer, which never received it before.
- Made the cached reader translate English copy already sitting on disk.
New tags
- Added [ENTERCAR] / [GETIN] / [GETINCAR], the first general vehicle boarding tag.
- Added [ROBSTORE] / [ROBSHOP] with 16 mapped store locations.
- Added [SNIPEKILL@n] for a specific numbered target at range.
- Rewrote [LEANONCAR] to target a point outside the bumper and pin the car while the ped settles.
Content
- Expanded to 612 NPC names, 106 moods, 124 backstories and 42 jobs.
- Expanded to 26 radio stations and 16 news segment types.
- Verified all 55 scenario props against the game's own prop list.
Engineering
- Added scopecheck.py, which catches cross-class static calls before they reach a compiler.
- Added shadowcheck.py, which catches local variable shadowing.
- Grew the automated regression suite to 706 tests, all passing.
- Every bug fix in this release ships with a test that fails on the old code first.
Bug fixes
- Fixed NPC money never reaching your wallet: a bogus pickup hash, a swallowed exception and a silent no-op in the SHVDN money setter.
- Fixed NPC identity changing between sessions by fingerprinting appearance instead of the recycled ped handle.
- Fixed saved memory never loading by removing the name from the memory file key.
- Fixed rumours never spreading: the eligibility check tested for a filename that no longer existed.
- Fixed FlyLo FM by correcting the station name to RADIO_14_DANCE_02.
- Fixed bike lifts being refused by a collapsed ternary that rejected vehicle class 8.
- Fixed newly added moods being unreachable behind a hardcoded index ceiling of 59.
- Fixed the 0xc0000005 shop-routine crash by making the face-hold watchdog release to all sixteen owning systems.
- Fixed a suited Michael being announced as naked by making clothing detection model-aware.
- Fixed the chatbox vanishing after two seconds: the panel watchdog never reset the timestamp it is judged by.
- Fixed chatbox text truncating past 396 characters by capping at four components on a word boundary.
- Fixed [LEANONCAR] launching cars into the sky.
- Fixed the radio break playing 85 chunks of silence by claiming the audio lane.
- Fixed music returning mid-break by extending the duck across the next stage's generation window.
- Fixed music dying for an entire chase with an absolute 25 second duck ceiling.
- Restored the Q radio wheel, which the permanent duck had also disabled.
- Fixed NPCs never remembering the radio break bulletin by seeding city awareness from the news stage.
- Fixed repeated adverts with a banned list, a rotating brief and a similarity filter.
- Fixed adverts always being English by passing the language to the cache writer.
- Fixed the no-response death spiral caused by closing sockets that were still in setup.
- Fixed the Los Santos Customs menu locking up during a break by not suppressing the N key.
- Fixed the rebindable dismiss key being read behind sixteen early returns.
- Fixed the anchor narrating its own web search on air.
- Fixed commercials displaying the LSPD air unit badge.
- Fixed shop routines drifting off topic by giving each routine a single stated purpose.
- Fixed traffic drivers being hijacked into scenes and exiting mid-road.
- Fixed the radio break aborting itself one second after starting by teaching the station guard about RADIO_36_AUDIOPLAYER.
-===========================================================-
v4.3 NEON GLASS — MASTER CHANGELOG (previous release)
-===========================================================-
Interface
- Added the Neon Glass renderer with 15 ordered layers.
- Replaced the multi-spawn overlay with one persistent panel.
- Added 5 presets: Cinematic, Compact, Minimal, Ghost, Custom.
- Added 7 colour themes including Mood Auto and Rainbow.
- Added 4 anchor positions.
- Added adjustable scale and opacity.
- Added live preview while scrolling the settings menu.
- Added automatic aspect-ratio correction for ultrawide displays.
- Added auto-fit panel height from measured text width.
- Added the dual 14-bar microphone and voice waveform.
- Added the dimmed in-panel "YOU said" transcript row.
- Added friendship pips, faction chip, header status dot and action-flash toast.
- Added police, news and air-unit broadcast styling.
- Added a lift ribbon showing the active destination.
- Replaced 30-per-second audio lock polling with a lock-free volatile mirror.
- Added a headshot texture guard against a rare d3d11 crash.
- Kept the legacy renderer available behind a configuration switch.
Faction identity
- Added 29 faction skins.
- Mapped 186 pedestrian models to those skins.
- Added faction chip labelling in the panel.
- Cleared lingering faction colour when a radio transmission starts.
City broadcast systems
- Added the AI police dispatch engine.
- Added live wanted level, crime type, street, zone and direction reporting.
- Added dispatch gating, throttling and skip-reason diagnostics.
- Added the LSPD air unit helicopter loudspeaker with its own voice.
- Added air-unit priority above ground dispatch.
- Added the Weazel News crime spree recorder.
- Added automatic dossier broadcast about a minute after a confirmed escape.
- Added ESCAPED, BUSTED and WASTED outcomes.
- Added in-game radio ducking and restoration.
- Added a news blackout window around a bulletin.
- Added a watchdog so a bulletin can never hang on "Generating..."
- Added the four-lane audio arbiter for NPC, News, Dispatch and Heli.
- Added centre-locked positioning for radio transmissions.
- Added relevance expiry for stale queued barks.
- Set proactive barks to default OFF.
City awareness
- Added the tiered awareness engine with a 20 minute lifetime.
- Added the AWARE tier that answers only when asked.
- Added the VOCAL tier at roughly 8 percent, delayed and hard-capped at 3 per broadcast.
- Added the RECOGNIZER tier at roughly 50 percent when identity is public.
- Added permanent per-NPC lockout after they discuss it once.
- Made awareness knowledge instant while keeping unprompted mentions paced.
- Extended awareness into NPC-to-NPC linked scenes.
Memory v3
- Added exponential grudge decay with per-event weights.
- Added tracked debts in both directions.
- Added gossip seeding and multi-hop spread into other NPCs' memory files.
- Added a freshness window and a per-event spread cap.
- Kept full backward compatibility with v2 memory files.
- Fixed memory persistence.
Configuration and control
- Added the Custom Rules file with template auto-creation.
- Added comment support, minimum-length activation and an 8000 character cap.
- Delivered custom rules to all five AI sockets.
- Retired the old prompt-replacing override.
- Added the four-step AI Thinking Level dial with localised pros and cons.
- Fixed the hard-coded zero thinking budget across five sockets.
- Added model-family detection for the correct thinking parameter form.
- Added the Google Search grounding toggle, default OFF.
- Added the rebindable DismissKey INI setting.
- Added the Credits and Community menu hub.
- Removed the always-on microphone by request.
Language
- Added German.
- Fixed roughly 275 notification strings that only resolved in English or Portuguese.
- Replaced the passthrough translation helper with a proper runtime lookup.
- Localised menu items, descriptions and notifications across all eight languages.
New tags and behaviours
- Added [OPENWINDOW] and [CLOSEWINDOW] with real cabin filter response.
- Added [STANDONONELEG].
- Added [STOPFOLLOWING] self-initiative through prompt law only, with zero keyword detectors.
- Added [LIFT_PLAYERDRIVE] and [LIFT_GIVEBACKDRIVE].
- Restored [FIGHTENEMY], which had been silently dead.
- Added vehicle cabin muffling with a low-pass filter.
Bug fixes
- Fixed the Beverly identity collision with a story-category gate and a whole-word matcher across 117 call sites.
- Fixed NPCs narrating combat while standing still by setting combat ability, movement and range explicitly.
- Fixed NPCs fleeing after accepting a fight by assigning proper enemy relationship identity instead of leaving the player classified as a threat.
- Added an immediate hard task clear instead of a soft abort in the combat reassert loop.
- Added anti-flee combat attributes and per-tick enemy identity re-assertion.
- Extended the combat lock window.
- Fixed the Space bar dismiss conflict with jump and handbrake.
- Removed the "wait until audio ends" dismiss gate.
- Fixed the beer and weed errand scam with a hard prompt law on which errands physically exist.
- Fixed NPCs refusing to fight alongside the player during shootouts.
- Fixed voice conversations silently stopping until Backspace was pressed.
- Fixed audio flicker caused by waveform lock contention.
- Fixed Backspace doing nothing while the Settings menu was open.
- Fixed NPCs never ending a follow on their own initiative.
- Fixed [WAVE] never playing by removing a multiplayer-only animation dictionary.
- Raised animation load budgets.
- Fixed the lift driver never exiting and the fare never settling.
- Moved lift fare charging from ride start to ride completion.
- Fixed the driver jacking a nearby vehicle after a drop-off.
- Fixed a mobile phone being counted as a weapon.
- Removed the smog rant that only applied to graphics-modded games.
- Fixed an auto-convo NPC holding the bridge hostage.
- Fixed the missing dispatch open event in the bridge.
- Fixed a news blackout sticking for three minutes.
- Fixed the episode director stalling while the player ragdolled on a bike.
- Fixed the Weazel timeout racing its own audio arrival.
- Throttled a world-event spacing log that fired 33 times per second.
- Removed an unreferenced goto label and cleaned up write-only variables.
- Added PCM jitter cushioning to remove playback flicker on short chunks.
-===========================================================-
IMPORTANT
-===========================================================-
Single-player only.
Do not use Living LS AIs in GTA Online.
Back up your game and mod setup before installing major updates.
Never share your private API key in screenshots, logs, Discord messages or public bug reports.
No API key is bundled with this mod, and none ever will be. Create your own free Gemini key. It takes about a minute and it stays yours.
-===========================================================-
DISCORD / COMMUNITY / BETA TESTING
-===========================================================-
For updates, support, installation help, testing news, community discussion, bug reporting, beta opportunities, future previews and release announcements, join the Living LS AIs community:
https://discord.gg/NnQhARUbp9
GTA5-Mods page:
https://www.gta5-mods.com/scripts/livinglsais-0706c201-ba7c-4e19-9c70-d77db561f835
YouTube:
https://www.youtube.com/@ZEXIVA77
When applying for beta testing, provide your PC specifications, your GTA V version, your ScriptHookVDotNet version, whether you can reproduce bugs reliably, whether you can provide logs and clips, and why you want to help test unstable builds.
Good beta testing is not only playing early. It means trying strange commands, testing different personalities, checking physical action ownership, interrupting scenes, cancelling episodes, testing crowded locations, testing vehicles and interiors, causing crime sprees to test the broadcast systems, reporting exact reproduction steps and keeping useful logs.
Special thanks for v4.4
Dzinu — for the report that an invited NPC could agree to come along and then simply never get in the car, and for the separate one about an armed NPC never reaching the store he had agreed to rob. Both turned out to be missing action tags rather than broken behaviour. [ENTERCAR] and [ROBSTORE] exist because of those two messages.
Vampire — for "while playing with Michael everyone seems to think I'm naked", which was a regression introduced by v4.4's own clothing-awareness feature. Reported clearly enough that the root cause was obvious once somebody actually looked: drawable 0 means the model's first outfit, not no clothes. Also for confirming the radio adverts landed, which mattered more than it sounds.
indragon99 — for testing on Enhanced, which nobody else was able to do, and for pushing on the truck explosion issue until the real cause surfaced.
impoliceofficer — whose v4.3 reports are still shaping this mod. Several v4.4 fixes are downstream of investigations that started with those logs.
Maciel — for the report that a saved NPC did not remember the last conversation, which led straight to the memory key bug.
Anyiiikunnn — for getting addon peds working on Enhanced and documenting how, and for the API quota question that clarified how key rotation is presented.
Everyone who filed a report with a log attached rather than just "it doesn't work."
Special thanks for v4.3
impoliceofficer, whose detailed reports produced six of the twelve fixes in that release, including the observation that the identity bug scaled with the number of memory files. That single detail is what led to the actual root cause.
T0XiQ96, who requested German. It is in.
-===========================================================-
CREDITS
-===========================================================-
Living LS AIs
Created by Zexiva
Creator, main developer, system designer, gameplay designer, prompt and episode architect, integration developer, and project lead.
Legacy & Special Credits
AbirTheLegend — legacy and special credit preserved for support, ideas, testing, feedback and contributions connected to the project's development history.
Murilo Walker — credit preserved with the Living LS AIs project, for major contributions and the three-NPC scene work.
Community — thank you to every beta tester, supporter, log collector, clip creator, bug reporter and community member who helped break unstable builds and improve them. Every stable system exists because somebody tested the version where it was not stable yet.
AI / API
Google Gemini and Gemini Live — the main modern live AI route used for direct conversation, native voice, microphone transcription workflow, visual context, linked NPC scenes, AI-generated LS Episodes, the police dispatch, news anchor and air unit voices, and in v4.4 the entire radio break cycle: its station hosts, its commercials and its news bulletins.
Groq — credit preserved for optional provider support and earlier multi-provider experimentation where included.
UnrealSpeech — credit preserved for optional and alternate TTS experimentation where included.
OpenAI Whisper — credit for earlier speech-to-text development paths. Not the main modern Gemini Live route, but part of the project's development history.
Local Bridge / Runtime
Node.js — provides the runtime foundation for the local Gemini Live bridge, enabling persistent WebSocket communication, live audio transport, microphone stream transport, image transport, action-tag streaming, scene session management, random Episode generation, broadcast voice generation, the radio break cycle and cache communication.
ws — the WebSocket implementation used by the bridge. It is bundled inside the download, so you never need to run npm install.
GTA V Modding Foundation
Alexander Blade — ScriptHookV
crosire and the ScriptHookVDotNet contributors — the ScriptHookVDotNet ecosystem
justalemon — LemonUI
Newtonsoft.Json — JSON handling
NAudio — audio playback and processing support
Microsoft .NET and the C# ecosystem — scripting and runtime foundation
Respect to the Community
Huge respect to the GTA V single-player modding community. Living LS AIs exists because of years of shared tools, documentation, experiments, reverse engineering, testing, and players who keep pushing Los Santos beyond its original limits.
-===========================================================-
FINAL NOTE
-===========================================================-
Living LS AIs v4.2 made a conversation into an episode.
Living LS AIs v4.3 made that episode into a consequence.
Living LS AIs v4.4 makes that consequence into something you and an NPC sat through together.
The NPCs can still notice, speak, remember, judge, negotiate, accept, refuse, travel, select real people, carry physical objects, change body states, react to danger, perform conditional missions, create independent incidents and produce a real outcome.
Now the city itself joins in.
A dispatcher reads out your street. A helicopter calls your position. A news anchor summarises your worst afternoon and your car radio gets quieter so you can hear it. A pedestrian two blocks away already knows what you did, because someone told them. And the guy you shot at last week has not forgotten, and will not for about two more weeks.
And now, every three minutes, the radio takes a break — and the woman in your passenger seat heard the same stupid advert you did, and she has opinions about it.
A pedestrian is no longer only a pedestrian.
They can become a witness, a friend, a coward, a criminal, a negotiator, a driver, a customer, a target, an accomplice, a scene partner, a source of gossip, someone who recognises your face from the news, someone who gets in your car and complains about the radio, or the main character of the next completely unscripted Episode.
Living LS AIs v4.4 — LIVING CITY
The city was already talking. Now it is on the air, and somebody is listening with you.
First Uploaded: 01. jun 2026
Last Updated: 1 dan
Last Downloaded: 3 minute







📌 IMPORTANT — PLEASE READ BEFORE REPORTING CRASHES OR RATING DOWN
I’m honestly getting annoyed seeing people report crashes or reduce the mod’s rating without providing ANY logs or evidence that LLAI is actually responsible.
If your game crashes, DO NOT automatically assume it is caused by this mod. GTA V can crash because of other mods, ScriptHookV/ScriptHookVDotNet, game files, drivers, configuration, etc.
🔴 NO LOG = NO WAY TO INVESTIGATE
If you believe LLAI caused your crash, please provide:
• Windows Event Viewer crash information
Search Windows for Event Viewer → Windows Logs → Application → find the Error around the time of the crash and provide the relevant details/screenshot.
• ScriptHookV / ScriptHookVDotNet logs
Include the relevant log files generated when the crash happens.
• LLAI Debug Log
Please provide the LLAI debug log from the same session.
Without these logs, I cannot determine what actually caused the crash, and unsupported claims will be ignored.
📖 INSTALLATION
The complete installation guide, setup instructions and troubleshooting information are already included in the README HTML file inside the downloaded mod archive.
Please read the README before commenting “how to install” or reporting an issue that is already covered there.
I’ve spent a lot of time making the documentation as clear as possible. Please use it.
⭐ Please do not lower the mod’s rating because of an unverified crash or because the README was not checked first.
If you have a genuine issue, provide the logs and details — I’ll investigate it properly.
Thank you to everyone who actually reads the documentation and provides useful reports.
@ZEXIVA77 no worries i understood that u kept it as development term. And no rush with languages stuff. Better focusing on bug fixing for now. Ill give u the log of that "no shooting" restrictions probably today.
I don't have "node.exe" in my files. Can someone help me?
@jasiuu777 read above i posted a comment how to install 4.3 version. But u have to have 4.2 first.
How do i install this mod??
@xeisenberg readme
20:24:10] [BODYTAG_ANIM_PLAYED] tag=TALK_GESTURE ped=2156546 dict=gestures@f@standing@casual clip=gesture_convo_hand_move_l verifiedPlaying=False reason=NATIVE_SENT_BUT_VERIFY_FALSE_NEXT_FRAME_MAY_STILL_START
[20:24:11] [SPATIAL_AUDIO] speaker=2156546 dist=2.6 pan=0.10 gainL=0.25 gainR=0.28 cutoff=10714 occluded=False facing=0.73 cabinMuffle=0.00
[20:24:13] [BODYTAG_ANIM_QUEUED] tag=TALK_GESTURE ped=2156546 dict=gestures@f@standing@casual clip=gesture_convo_scared duration=1850 flags=49 loadedNow=True
[20:24:13] [BODYTAG_ANIM_PLAYED] tag=TALK_GESTURE ped=2156546 dict=gestures@f@standing@casual clip=gesture_convo_scared verifiedPlaying=False reason=NATIVE_SENT_BUT_VERIFY_FALSE_NEXT_FRAME_MAY_STILL_START
[20:24:14] [SPATIAL_AUDIO] speaker=2156546 dist=2.5 pan=-0.36 gainL=0.29 gainR=0.20 cutoff=9673 occluded=False facing=0.40 cabinMuffle=0.00
[20:24:17] [SPATIAL_AUDIO] speaker=2156546 dist=2.9 pan=-0.33 gainL=0.26 gainR=0.19 cutoff=10173 occluded=False facing=0.58 cabinMuffle=0.00
[20:24:17] [BODYTAG_ANIM_QUEUED] tag=TALK_GESTURE ped=2156546 dict=gestures@f@standing@casual clip=gesture_convo_feel_strongly duration=1850 flags=49 loadedNow=True
[20:24:17] [BODYTAG_ANIM_PLAYED] tag=TALK_GESTURE ped=2156546 dict=gestures@f@standing@casual clip=gesture_convo_feel_strongly verifiedPlaying=False reason=NATIVE_SENT_BUT_VERIFY_FALSE_NEXT_FRAME_MAY_STILL_START
[20:24:18] [LIPSYNC_STOPPED] ped=2156546 bufferMs=2260
[20:24:20] [SPATIAL_AUDIO] speaker=2156546 dist=2.0 pan=-0.44 gainL=0.35 gainR=0.22 cutoff=10234 occluded=False facing=0.56 cabinMuffle=0.00
[20:24:21] [GEMINI_STT_FINAL] turn=14 chars=91 text="Just chill. Sit down. No need to stand up each time you want to answer me, you know? Relax."
[20:24:21] [DIRECT_LIPSYNC_STOP_ARMED] ped=2156546 remainingPcm=0ms stopAfter=700ms
[20:24:21] [GEMINI_MIC_DELIVERED] transcriptChars=91 npc=Natalia
[20:24:21] [BRIDGE_EARLY_ACTION_STRIP] Removed already-fired tags from final reply. beforeChars=319 afterChars=273
[20:24:23] [SPATIAL_AUDIO] speaker=2156546 dist=2.3 pan=-0.22 gainL=0.29 gainR=0.23 cutoff=9704 occluded=False facing=0.41 cabinMuffle=0.00
[20:24:26] [SPATIAL_AUDIO] speaker=2156546 dist=2.4 pan=-0.37 gainL=0.29 gainR=0.20 cutoff=9676 occluded=False facing=0.40 cabinMuffle=0.00
[20:24:29] [SPATIAL_AUDIO] speaker=2156546 dist=3.2 pan=-0.20 gainL=0.26 gainR=0.22 cutoff=11379 occluded=False facing=0.96 cabinMuffle=0.00
[20:24:31] [VISION_CAPTURE_OK] trigger=mic_start src=2560x1440 scaled=512x512 jpegBytes=27019 base64Chars=36028
[20:24:31] [VISION_SEND_REQUEST] trigger=mic_start visionId=18 base64Chars=36028 session=2/0
[20:24:31] [GEMINI_MIC_STREAM_START] turn=15 contextChars=3110
[20:24:31] [GEMINI_MIC_CAPTURE_START] turn=15 live 40ms streaming active.
[20:24:31] [GEMINI_MIC_STATUS] turn=15 status=started
[20:24:31] [VISION_STATUS] trigger=mic_start visionId=18 status=sent stage=gemini_send base64Chars=36028 imageBytes=27019 reason=csharp_request
[20:24:32] [SPATIAL_AUDIO] speaker=2156546 dist=3.0 pan=-0.10 gainL=0.25 gainR=0.22 cutoff=10638 occluded=False facing=0.72 cabinMuffle=0.00
[20:24:35] [SPATIAL_AUDIO] speaker=2156546 dist=3.0 pan=-0.24 gainL=0.25 gainR=0.19 cutoff=9957 occluded=False facing=0.51 cabinMuffle=0.00
[20:24:35] [GEMINI_MIC_CAPTURE_STOP] turn=15 queuedBytes=131200
[20:24:35] [GEMINI_MIC_STATUS] turn=15 status=audio-ended
[20:24:35] [GEMINI_MIC_STREAM_END] turn=15 chunks=103 bytes=131200 discarded=False
[20:24:35] [GEMINI_STT_DELTA] turn=15 chars=48
[20:24:37] [BRIDGE_EARLY_ACTION] Fired [SITDOWN] from Gemini streaming text immediately — no turnComplete/audio-end wait.
[20:24:37] [LIPSYNC] StartLipSync -> ped 2156546 | duration=12000ms
[20:24:37] [BRIDGE_LIPSYNC] Audio-driven LipSync started on first PCM chunk for ped 2156546 | duration=12000ms
[20:24:37] [BODYTAG_ANIM_QUEUED] tag=TALK_GESTURE ped=2156546 dict=gestures@f@standing@casual clip=gesture_convo_hand_move_l duration=1850 flags=49 loadedNow=True
[20:24:37] [BODYTAG_ANIM_PLAYED] tag=TALK_GESTURE ped=2156546 dict=gestures@f@standing@casual clip=gesture_convo_hand_move_l verifiedPlaying=False reason=NATIVE_SENT_BUT_VERIFY_FALSE_NEXT_FRAME_MAY_STILL_START
[20:24:37] [BRIDGE_EARLY_ACTION] Processed immediate tag packet while Gemini reply is still streaming; _waitingReply preserved.
[20:24:38] [SPATIAL_AUDIO] speaker=2156546 dist=3.0 pan=-0.19 gainL=0.24 gainR=0.20 cutoff=10244 occluded=False facing=0.60 cabinMuffle=0.00
[20:24:40] [GEMINI_STT_FINAL] turn=15 chars=48 text="Yeah, I got you. Just sit down right now. Chill."
[20:24:40] [DIRECT_LIPSYNC_STOP_ARMED] ped=2156546 remainingPcm=0ms stopAfter=700ms
[20:24:40] [GEMINI_MIC_DELIVERED] transcriptChars=48 npc=Natalia
[20:24:40] [BRIDGE_EARLY_ACTION_STRIP] Removed already-fired tags from final reply. beforeChars=42 afterChars=29
[20:24:40] [LIPSYNC_STOPPED] ped=2156546 bufferMs=0
[20:24:41] [SPATIAL_AUDIO] speaker=2156546 dist=2.2 pan=0.12 gainL=0.24 gainR=0.27 cutoff=9415 occluded=False facing=0.31 cabinMuffle=0.00
[20:24:44] [SPATIAL_AUDIO] speaker=2156546 dist=2.6 pan=0.07 gainL=0.25 gainR=0.27 cutoff=10632 occluded=False facing=0.70 cabinMuffle=0.00
[20:24:47] [SPATIAL_AUDIO] speaker=2156546 dist=2.7 pan=0.11 gainL=0.25 gainR=0.27 cutoff=11008 occluded=False facing=0.83 cabinMuffle=0.00
[20:24:47] [VISION_CAPTURE_OK] trigger=mic_start src=2560x1440 scaled=512x512 jpegBytes=26957 base64Chars=35944
[20:24:47] [VISION_SEND_REQUEST] trigger=mic_start visionId=19 base64Chars=35944 session=2/0
[20:24:47] [GEMINI_MIC_STREAM_START] turn=16 contextChars=3110
[20:24:47] [GEMINI_MIC_CAPTURE_START] turn=16 live 40ms streaming active.
[20:24:47] [GEMINI_MIC_STATUS] turn=16 status=started
[20:24:47] [VISION_STATUS] trigger=mic_start visionId=19 status=sent stage=gemini_send base64Chars=35944 imageBytes=26957 reason=csharp_request
[20:24:50] [SPATIAL_AUDIO] speaker=2156546 dist=2.9 pan=0.06 gainL=0.25 gainR=0.26 cutoff=11181 occluded=False facing=0.88 cabinMuffle=0.00
[20:24:53] [SPATIAL_AUDIO] speaker=2156546 dist=2.2 pan=0.20 gainL=0.25 gainR=0.30 cutoff=10172 occluded=False facing=0.55 cabinMuffle=0.00
[20:24:53] [GEMINI_MIC_STREAM_END] turn=16 chunks=150 bytes=192000 discarded=False
[20:24:53] [GEMINI_MIC_CAPTURE_STOP] turn=16 queuedBytes=192000
[20:24:53] [GEMINI_MIC_STATUS] turn=16 status=audio-ended
[20:24:54] [GEMINI_STT_DELTA] turn=16 chars=47
[20:24:56] [SPATIAL_AUDIO] speaker=2156546 dist=2.8 pan=0.00 gainL=0.19 gainR=0.19 cutoff=8343 occluded=False facing=0.00 cabinMuffle=0.00
[20:24:58] [BRIDGE_EARLY_ACTION] Fired [LOOKAROUND] from Gemini streaming text immediately — no turnComplete/audio-end wait.
[20:24:58] [LIPSYNC] StartLipSync -> ped 2156546 | duration=12000ms
[20:24:58] [BRIDGE_LIPSYNC] Audio-driven LipSync started on first PCM chunk for ped 2156546 | duration=12000ms
[20:24:58] [BODYTAG_ANIM_QUEUED] tag=TALK_GESTURE ped=2156546 dict=gestures@f@standing@casual clip=gesture_convo_agree duration=1850 flags=49 loadedNow=True
[20:24:58] [BODYTAG_ANIM_PLAYED] tag=TALK_GESTURE ped=2156546 dict=gestures@f@standing@casual clip=gesture_convo_agree verifiedPlaying=False reason=NATIVE_SENT_BUT_VERIFY_FALSE_NEXT_FRAME_MAY_STILL_START
[20:24:58] [BRIDGE_EARLY_ACTION] Processed immediate tag packet while Gemini reply is still streaming; _waitingReply preserved.
[20:24:58] [BODYTAG_DETECTED] LOOKAROUND from reply lowerChars=12 uiChars=0
[20:24:58] [EXPLICIT_BODYTAG_QUEUED] tag=LOOKAROUND ped=2156546 dict=gestures@f@standing@casual clip=gesture_convo_look_around duration=2400
[20:24:58] [BODYTAG_ISSUED] LOOKAROUND ped=2156546 reason=QUEUED_LOOK_AROUND_GESTURE
[20:24:58] [EXPLICIT_BODYTAG_PLAYED] tag=LOOKAROUND ped=2156546 dict=gestures@f@standing@casual clip=gesture_convo_look_around reason=FIFO_MAIN_THREAD_SENT
[20:24:59] [SPATIAL_AUDIO] speaker=2156546 dist=2.9 pan=-0.18 gainL=0.22 gainR=0.18 cutoff=8836 occluded=False facing=0.16 cabinMuffle=0.00
[20:25:02] [SPATIAL_AUDIO] speaker=2156546 dist=2.9 pan=-0.12 gainL=0.21 gainR=0.18 cutoff=8582 occluded=False facing=0.08 cabinMuffle=0.00
[20:25:02] [BODYTAG_ANIM_QUEUED] tag=TALK_GESTURE ped=2156546 dict=gestures@f@standing@casual clip=gesture_convo_hand_move_l duration=1850 flags=49 loadedNow=True
[20:25:02] [BODYTAG_ANIM_PLAYED] tag=TALK_GESTURE ped=2156546 dict=gestures@f@standing@casual clip=gesture_convo_hand_move_l verifiedPlaying=False reason=NATIVE_SENT_BUT_VERIFY_FALSE_NEXT_FRAME_MAY_STILL_START
[20:25:04] [GEMINI_STT_FINAL] turn=16 chars=47 text="So, is this something I can help you with, Ned?"
[20:25:04] [GEMINI_MIC_DELIVERED] transcriptChars=47 npc=Natalia
[20:25:04] [DIRECT_LIPSYNC_STOP_ARMED] ped=2156546 remainingPcm=0ms stopAfter=700ms
[20:25:04] [BRIDGE_EARLY_ACTION_STRIP] Removed already-fired tags from final reply. beforeChars=129 afterChars=104
[20:25:04] [LIPSYNC_STOPPED] ped=2156546 bufferMs=0
[20:25:05] [SPATIAL_AUDIO] speaker=2156546 dist=2.9 pan=-0.06 gainL=0.20 gainR=0.19 cutoff=8411 occluded=False facing=0.03 cabinMuffle=0.00
[20:23:13] Natalia: Already on it, just getting comfortable.
[20:23:49] Player: So, that's tell me. What What are you looking for in this place?
[20:23:49] Natalia: Just trying to survive, you know? Get the respect I deserve and make my mark... and maybe find a way to actually stay on top for once.
[20:24:21] Player: Just chill. Sit down. No need to stand up each time you want to answer me, you know? Relax.
[20:24:21] Natalia: It's not really about relaxing, you know? Just always trying to be aware of my surroundings... guess staying on my toes is just habit now. Especially after what I've seen, you know, around Madrazo's crowd or just surviving in this city, you learn to always look behind you.
[20:24:40] Player: Yeah, I got you. Just sit down right now. Chill.
[20:24:40] Natalia: Fine, fine. I'm sitting down.
[20:25:04] Player: So, is this something I can help you with, Ned?
[20:25:04] Natalia: Nah, we're good for now. Just enjoying that view from your terrace again... it really is something else.
This log for the situation when npc stands up each time when answer to the player.
[21:04:24] [SPATIAL_AUDIO] speaker=7358483 dist=2.8 pan=-0.02 gainL=0.27 gainR=0.27 cutoff=11504 occluded=False facing=0.98 cabinMuffle=0.00
[21:04:27] [SPATIAL_AUDIO] speaker=7358483 dist=3.2 pan=-0.25 gainL=0.25 gainR=0.20 cutoff=10787 occluded=False facing=0.78 cabinMuffle=0.00
[21:04:29] [GEMINI_MIC_CAPTURE_STOP] turn=79 queuedBytes=201600
[21:04:29] [GEMINI_MIC_STATUS] turn=79 status=audio-ended
[21:04:30] [GEMINI_STT_DELTA] turn=79 chars=78
[21:04:30] [SPATIAL_AUDIO] speaker=7358483 dist=2.5 pan=0.00 gainL=0.21 gainR=0.21 cutoff=8410 occluded=False facing=0.02 cabinMuffle=0.00
[21:04:32] [BRIDGE_EARLY_ACTION] Fired [SHAKEHEAD] from Gemini streaming text immediately — no turnComplete/audio-end wait.
[21:04:32] [LIPSYNC] StartLipSync -> ped 7358483 | duration=12000ms
[21:04:32] [BRIDGE_LIPSYNC] Audio-driven LipSync started on first PCM chunk for ped 7358483 | duration=12000ms
[21:04:32] [BODYTAG_ANIM_QUEUED] tag=TALK_GESTURE ped=7358483 dict=gestures@f@standing@casual clip=gesture_hand_down duration=1850 flags=49 loadedNow=True
[21:04:32] [BODYTAG_ANIM_PLAYED] tag=TALK_GESTURE ped=7358483 dict=gestures@f@standing@casual clip=gesture_hand_down verifiedPlaying=False reason=NATIVE_SENT_BUT_VERIFY_FALSE_NEXT_FRAME_MAY_STILL_START
[21:04:32] [BRIDGE_EARLY_ACTION] Processed immediate tag packet while Gemini reply is still streaming; _waitingReply preserved.
[21:04:32] [BODYTAG_DETECTED] SHAKEHEAD from reply lowerChars=11 uiChars=0
[21:04:32] [EXPLICIT_BODYTAG_QUEUED] tag=SHAKEHEAD ped=7358483 dict=gestures@m@standing@casual clip=gesture_convo_disagree duration=1400
[21:04:32] [BODYTAG_ISSUED] SHAKEHEAD ped=7358483 reason=QUEUED_SHAKEHEAD_GESTURE
[21:04:32] [EXPLICIT_BODYTAG_PLAYED] tag=SHAKEHEAD ped=7358483 dict=gestures@m@standing@casual clip=gesture_convo_disagree reason=FIFO_MAIN_THREAD_SENT
[21:04:33] [SPATIAL_AUDIO] speaker=7358483 dist=2.5 pan=-0.05 gainL=0.22 gainR=0.20 cutoff=8374 occluded=False facing=0.01 cabinMuffle=0.00
[21:04:35] [FACE_HOLD_REASSERT] ped=7358483 caught drifting, re-anchored.
[21:04:35] [BODYTAG_ANIM_QUEUED] tag=TALK_GESTURE ped=7358483 dict=gestures@m@standing@casual clip=gesture_convo_hand_move_r duration=1850 flags=49 loadedNow=True
[21:04:35] [BODYTAG_ANIM_PLAYED] tag=TALK_GESTURE ped=7358483 dict=gestures@m@standing@casual clip=gesture_convo_hand_move_r verifiedPlaying=False reason=NATIVE_SENT_BUT_VERIFY_FALSE_NEXT_FRAME_MAY_STILL_START
[21:04:36] [SPATIAL_AUDIO] speaker=7358483 dist=3.5 pan=-0.07 gainL=0.20 gainR=0.18 cutoff=9692 occluded=False facing=0.45 cabinMuffle=0.00
[21:04:37] [GEMINI_STT_FINAL] turn=79 chars=78 text="What was just now? Why three of you just attacked me for no reason? Yo, nigga."
[21:04:37] [DIRECT_LIPSYNC_STOP_ARMED] ped=7358483 remainingPcm=0ms stopAfter=700ms
[21:04:37] [GEMINI_MIC_DELIVERED] transcriptChars=78 npc=Dmitri
[21:04:37] [BRIDGE_EARLY_ACTION_STRIP] Removed already-fired tags from final reply. beforeChars=126 afterChars=103
[21:04:37] [LIPSYNC_STOPPED] ped=7358483 bufferMs=0
[21:04:37] [VISION_CAPTURE_OK] trigger=mic_start src=2560x1440 scaled=512x512 jpegBytes=12514 base64Chars=16688
[21:04:37] [VISION_SEND_REQUEST] trigger=mic_start visionId=95 base64Chars=16688 session=9/0
[21:04:37] [GEMINI_MIC_STREAM_START] turn=80 contextChars=3810
[21:04:37] [GEMINI_MIC_CAPTURE_START] turn=80 live 40ms streaming active.
[21:04:37] [VISION_STATUS] trigger=mic_start visionId=95 status=sent stage=gemini_send base64Chars=16688 imageBytes=12514 reason=csharp_request
[21:04:37] [GEMINI_MIC_STATUS] turn=80 status=started
[21:04:38] [RECYCLE_GUARD] Erased handle 1206548 (exists:False, dead:False) instantly.
[21:04:39] [SPATIAL_AUDIO] speaker=7358483 dist=3.8 pan=-0.08 gainL=0.17 gainR=0.16 cutoff=8914 occluded=False facing=0.22 cabinMuffle=0.00
[21:04:40] [GEMINI_MIC_CAPTURE_STOP] turn=80 queuedBytes=105600
[21:04:40] [GEMINI_MIC_STREAM_END] turn=80 chunks=83 bytes=105600 discarded=False
[21:04:40] [GEMINI_MIC_STATUS] turn=80 status=audio-ended
[21:04:40] [UI] Soft release conversation: Release key pressed
[21:04:40] [MIC_RESET_SENT] asked the bridge to drop any half-finished mic turn.
[21:04:40] [AUTO_CONVO_PRE_QUIET] armed 12s global / 30s per-ped before release.
[21:04:40] [POST_CHAT_AUTO_QUIET] ped=7358483 npcCooldown=30000ms globalQuiet=12000ms
[21:04:40] Chat ended. NPC: Dmitri | History turns: 3
[21:04:40] [MEMORY_V2] Queued save for Dmitri | turns:3 | special:False
[21:04:40] [BRIDGE_WARM_HOLD] Keeping Gemini session warm for 30000ms. session=9 npc=7358483
[21:04:40] [LIPSYNC_STOPPED] ped=7358483 bufferMs=0
[21:04:40] [MEMORY_V2] Saved: E:\Steam\steamapps\common\Grand Theft Auto V\scripts\LLAI SERVER\NPC_MEMORIES\3896218551.json | score=0 friend=False convos=4
[21:04:40] [GEMINI_MIC_STATUS] turn=80 status=force-released
[21:04:41] [DEAD_BODY] Marked NPC 5990420 near body dist=21.1m zone=CHAMH
[21:04:43] [DIRECT_ACTION_STALE_IGNORED] action=STEPFORWARD packetSession=9 activeSession=9 packetTurn=0 activeTurn=80
[21:04:43] [RECYCLE_GUARD] Erased handle 5849108 (exists:False, dead:False) instantly.
[21:04:44] [DAMAGE_DETECTED] Victim 7358483 | Type:punch | SelfDefense:False
[21:04:44] [ACTIVITY] [23:00] Punched / melee attacked a person near CHAMH
[21:04:44] [LIVE_ACTION] PUNCH/MELEE detected near CHAMH
[21:04:44] [DEAD_BODY] Marked NPC 6990356 near body dist=21.2m zone=CHAMH
[21:04:45] [FACE_HOLD_REASSERT] ped=7358483 caught drifting, re-anchored.
[21:04:46] [DEAD_BODY] Marked NPC 7866644 near body dist=27.7m zone=CHAMH
[21:04:46] [DAMAGE_DETECTED] Victim 7358483 | Type:punch | SelfDefense:False
[21:04:46] [ACTIVITY] [23:00] Punched / melee attacked a person near CHAMH
[21:04:46] [LIVE_ACTION] PUNCH/MELEE detected near CHAMH
[21:04:46] [WITNESS] NPC 7806228 marked witnessed: punch near CHAMH (dist=10.7m)
[21:04:47] [DIRECT_TEXT_STALE_IGNORED] session=9/9 turn=0/80
[21:04:47] [DIRECT_TURN_STALE_IGNORED] session=9/9 turn=0/80
[21:04:48] [DEAD_BODY] Marked NPC 6756116 near body dist=29.0m zone=CHAMH
[21:04:49] [RECYCLE_GUARD] Erased handle 7806228 (exists:False, dead:False) instantly.
[21:04:50] [DEAD_BODY] Marked NPC 3206676 near body dist=34.8m zone=CHAMH
[21:04:52] [ACTIVITY] [23:00] Opened fire / fired a weapon at a person (wounded) near CHAMH
[21:04:52] [LIVE_ACTION] SHOOTING detected near CHAMH
[21:04:52] [WITNESS] NPC 1839124 marked witnessed: shoot near CHAMH (dist=35.4m)
[21:04:54] [DEAD_BODY] Marked NPC 8029204 near body dist=48.8m zone=CHAMH
[21:04:54] [RECYCLE_GUARD] Erased handle 8029204 (exists:False, dead:False) instantly.
[21:04:54] [RECYCLE_GUARD] Erased handle 7435540 (exists:False, dead:False) instantly.
[21:04:57] [RECYCLE_GUARD] Erased handle 6131988 (exists:False, dead:False) instantly.
[21:05:00] [RECYCLE_GUARD] Erased handle 6990356 (exists:False, dead:False) instantly.
[21:05:00] [GEMINI_STT_TIMEOUT] turn=80 no final input transcript within 20s.
[21:05:03] [RECYCLE_GUARD] Erased handle 7866644 (exists:False, dead:False) instantly.
[21:02:36] Player: Yeah. You better say this to these dumb homie that acting like I don't know, like fucking idiot. Pointing the gun on family's member, you know?
[21:02:36] Kendall: Shit is messy, yeah. Look, regardless, don't pull that kinda shit round here no more. We keep our business tight, ain't trying to invite no more heat, feel me?
[21:02:51] Player: This is not me. Made this hit, you know?
[21:02:51] Kendall: Man, cut that shit. Whatever, just remember what I said about drama, feel me?
[21:03:03] Player: Yeah. You too. I hope you're heard.
[21:03:03] Kendall: Oh I heard you, player. Just keep that drama off Forum Drive, that's all. Later.
[21:04:20] Player: Stop there.
[21:04:20] Dmitri: Man, fuck you want from me now? I told you to keep that drama out our hood.
[21:04:37] Player: What was just now? Why three of you just attacked me for no reason? Yo, nigga.
[21:04:37] Dmitri: Homie, what the fuck you talking about? I ain't seen no three people. You just out here trippin' again.
This is the moment of the restriction to shoot just got cought.
Some troubleshooting at 4.4 version: in first case half of spoken by npc wasnt sounded at all only had a text. in second case there were no any responce from npcs also at that time even Menu button stopped working. But dismiss botton worked fine.
=== LivingLSAIs Debug Log Started: 2026-08-08 22:08:44 ===
Session log:
Crash log:
[22:08:44] [INI_PATH] Reading config from: E:\Steam\steamapps\common\Grand Theft Auto V\scripts\LivingLSAIs.ini
[22:08:44] [INI_KEY_OK] line='GeminiKey1= ...' len=53 head=AQ.A
[22:08:44] [INI_KEY_PLACEHOLDER] 'GeminiKey2=' still holds the template value — not a real key.
[22:08:44] [INI_KEY_PLACEHOLDER] 'GeminiKey3=' still holds the template value — not a real key.
[22:08:44] [INI_KEY_PLACEHOLDER] 'GeminiKey4=' still holds the template value — not a real key.
[22:08:44] [INI_KEY_PLACEHOLDER] 'GeminiKey5=' still holds the template value — not a real key.
[22:08:44] [INI_KEY_SUMMARY] file='E:\Steam\steamapps\common\Grand Theft Auto V\scripts\LivingLSAIs.ini' keyLinesSeen=5 keysAccepted=1
[22:08:44] [LCPP] LCPP not detected | support=True auto=True forceLC=False
[22:08:44] [CONFIG] Gemini Live settings loaded.
[22:08:44] [MEMORY_V2] Directory ready: E:\Steam\steamapps\common\Grand Theft Auto V\scripts\LLAI SERVER\NPC_MEMORIES
[22:08:44] [MEMORY] Memories directory ready: E:\Steam\steamapps\common\Grand Theft Auto V\scripts\LLAI SERVER\npc_memory
[22:08:44] === LivingLSAIs v4.4 Session Started: 2026-08-08 22:08:44 ===
[22:08:44] [BUILD_FEATURE_STAMP] ctx-engine+witness-p2+witness-gossip+shooting-witness+mission-gate+softlock-wd+search-licence+scene-search-licence+news-citylife+news-segments+memory-slug+search-quota-recover+dispatch-latch+scenario-shape-repair+refusal-guard+aim-lowered+clothing-truth+wallet-credit-fix+stable-identity+gossip-repair+eavesdrop+wheelie+bike-lift+snipekill+leanoncar+car-relations+news15+realism-law+props55+radio26+radio-break-cycle+break-selfkill-fix+break-preroll+break-skip-N+lean-tight+cabin-glass+break-audio-lock+break-ad-emblem+break-station-guard+nkey-safe+dismiss-key-hoist+session-adopt+break-duck-span+break-panel-hold+break-nosearch-narration+break-content-cache+lean-nolaunch+facehold-ownership-crashfix+routine-topic-lock+panel-textcap+clothing-model-aware+entercar+robstore+panel-watchdog-loopfix+break-caption-hold+break-news-awareness+duck-ceiling+ads-antirepeat+cache-language+swear-register
[22:08:44] [BRIDGE_PATH] Using bridge folder: E:\Steam\steamapps\common\Grand Theft Auto V\scripts\LLAI SERVER\LLAIBridge
[22:08:44] [BRIDGE_NODE_VIA] bundled
[22:08:44] [BRIDGE_NODE] E:\Steam\steamapps\common\Grand Theft Auto V\scripts\LLAI SERVER\LLAIBridge\node.exe
[22:08:44] [BRIDGE_WS] E:\Steam\steamapps\common\Grand Theft Auto V\scripts\LLAI SERVER\LLAIBridge\node_modules
[22:08:44] [BRIDGE] Node server launched. PID: 25320
[22:08:45] [BRIDGE] Connected to local bridge socket; awaiting local version handshake. generation=1 timeoutMs=6000
[22:08:50] [MISSION_GATE] Scripted mission/cutscene detected — auto conversations and random scenarios paused.
[22:08:50] [THINKING_LEVEL] pushed to bridge: minimal
[22:08:50] [CUSTOM_RULES] Pushed to bridge. active=False
[22:08:50] [WEB_SEARCH] Pushed to bridge: False
[22:08:50] [BRIDGE_BUILD_OK] LLAI-v4.3-NET-COMBAT-WORLD-RANGE-20260726AN scriptedScenarioFallback=false
[22:08:50] [SCENARIO_PREFETCH_REQUESTED] Gemini is generating 11 fresh scenarios; unused prior cache will be retained and merged.
[22:08:50] [RADIO_CACHE_PRIME] reason=scenario prefetch adult=True
[22:08:50] [LCPP_MAP] LOS SANTOS | no-lcpp-markers
[22:08:50] [MISSION_GATE] Auto conversation suppressed — a scripted mission or cutscene is running.
[22:08:52] [MISSION_GATE] Mission ended — auto conversations and random scenarios resumed.
[22:09:08] [IDENTITY] decorator LLAI_ID registered (int)
[22:09:08] [IDENTITY_NEW] handle=253442 fp=-634611634:0:0:0:0 -> id=972418420
[22:09:08] [DIRECT_NEGOTIATION_LEDGER_RESET] New direct chat; mission chronology and target roster will lock independently.
[22:09:08] [AMBIENT_PRESERVE] Chat opened without clearing NPC scenario/held-prop task.
[22:09:08] [MEMORY_ROLLOVER] Securoserve Guard (Male) score=0 friend=False convos=1 memoryChars=0
[22:09:08] [BRIDGE] Session start triggered from OpenChatMenu for Securoserve Guard (Male) (253442).
[22:09:08] [VISION_CAPTURE_OK] trigger=chat_open_initial src=2560x1440 scaled=512x512 jpegBytes=25377 base64Chars=33836
[22:09:08] [VISION_SEND_REQUEST] trigger=chat_open_initial visionId=1 base64Chars=33836 session=0/1
[22:09:08] [VISION_STATUS] trigger=chat_open_initial visionId=1 status=queued stage=bridge_queue base64Chars=33836 imageBytes=0 reason=SESSION_NOT_READY (csharp_request)
[22:09:08] [IDENTITY_RELINK] handle=253698 fp=-634611634:0:0:0:0 -> id=972418420 (known face, memory preserved)
[22:09:08] [NPCTONPC_ROSTER_LOCKED] Stable numbered handles preserved for this direct chat; negotiation/payment cannot silently retarget slots.
[22:09:08] [NPCTONPC_ROSTER] count=1 1ST: Securoserve Guard (Male) | male human | Security Guard — watchful, authoritative, perpetually underpaid for what they deal with | 17.6m | making a phone call / looking at their phone | on foot
[22:09:09] [LOCATION_UPDATE] Писфул-стрит, Pillbox Hill, Downtown Los Santos
[22:09:09] [BRIDGE] Gemini Live session ready for NPC handle 253442. session=1
[22:09:09] [VISION_STATUS] trigger=chat_open_initial visionId=1 status=sent stage=gemini_send base64Chars=33836 imageBytes=25377 reason=sessionReadyDrain
[22:09:26] [CONFIG] Permanently synchronized config variables back to ini.
[22:09:26] [CONFIG] Permanently synchronized config variables back to ini.
[22:09:26] [CONFIG] Permanently synchronized config variables back to ini.
[22:09:26] [CONFIG] Permanently synchronized config variables back to ini.
[22:09:27] [CONFIG] Permanently synchronized config variables back to ini.
[22:09:28] [CONFIG] Permanently synchronized config variables back to ini.
[22:09:40] [CONFIG] Permanently synchronized config variables back to ini.
[22:09:40] [AUTO_WORLD_EVENT_WAIT] Busy gameplay window; opportunistic 50% roll paused. reason=DIRECT_CHAT_OPEN
[22:09:42] [SCENARIO_PREFETCH_STATUS] status=ready freshGenerated=11 retainedBeforeMerge=0 totalCache=11 source=GEMINI_AI_PACK keyIndex=0 error=
[22:09:42] [SCENARIO_PREFETCH_DIRECTOR_ARMED] First natural event queued for next safe stationary window.
[22:09:46] [THINKING_LEVEL] pushed to bridge: low
[22:09:46] [CONFIG] Permanently synchronized config variables back to ini.
[22:09:49] [THINKING_LEVEL] pushed to bridge: minimal
[22:09:49] [CONFIG] Permanently synchronized config variables back to ini.
[22:09:55] [AUTO_WORLD_EVENT_MANDATORY_WAIT] Deadline scenario queued; waiting for safe window. reason=DIRECT_CHAT_OPEN
[22:10:10] [AUTO_WORLD_EVENT_MANDATORY_WAIT] Deadline scenario queued; waiting for safe window. reason=DIRECT_CHAT_OPEN
[22:10:10] [CONFIG] Permanently synchronized config variables back to ini.
[22:10:17] [CONFIG] MenuKey saved: OemQuestion
[22:10:18] [CONFIG] MicKey saved: Menu
[22:10:21] [CONFIG] TextKey saved: Multiply
[22:10:24] [CONFIG] ReleaseKey saved: D4
[22:10:25] [AUTO_WORLD_EVENT_MANDATORY_WAIT] Deadline scenario queued; waiting for safe window. reason=DIRECT_CHAT_OPEN
[22:10:27] [CONFIG] DismissKey saved: V
[22:10:40] [CONFIG] Permanently synchronized config variables back to ini.
[22:10:40] [CONFIG] Permanently synchronized config variables back to ini.
[22:10:40] [AUTO_WORLD_EVENT_MANDATORY_WAIT] Deadline scenario queued; waiting for safe window. reason=DIRECT_CHAT_OPEN
[22:10:40] [CONFIG] Permanently synchronized config variables back to ini.
[22:10:42] [CONFIG] Permanently synchronized config variables back to ini.
[22:10:45] [CONFIG] Permanently synchronized config variables back to ini.
[22:10:46] [CONFIG] Permanently synchronized config variables back to ini.
[22:10:46] [CONFIG] Permanently synchronized config variables back to ini.
[22:10:46] [CONFIG] Permanently synchronized config variables back to ini.
[22:10:47] [CONFIG] Permanently synchronized config variables back to ini.
[22:10:48] [CONFIG] Permanently synchronized config variables back to ini.
[22:10:49] [CONFIG] Permanently synchronized config variables back to ini.
[22:10:49] [CONFIG] Permanently synchronized config variables back to ini.
[22:10:51] [CONFIG] Permanently synchronized config variables back to ini.
[22:10:52] [CONFIG] Permanently synchronized config variables back to ini.
[22:10:53] [CONFIG] Permanently synchronized config variables back to ini.
[22:10:54] [CONFIG] Permanently synchronized config variables back to ini.
[22:10:55] [AUTO_WORLD_EVENT_MANDATORY_WAIT] Deadline scenario queued; waiting for safe window. reason=DIRECT_CHAT_OPEN
[22:10:56] [CONFIG] Permanently synchronized config variables back to ini.
[22:10:57] [CONFIG] Permanently synchronized config variables back to ini.
[22:10:58] [CONFIG] Permanently synchronized config variables back to ini.
[22:11:08] [AUTO_WORLD_EVENT_CANCEL] Player cancelled automatic scenario with Backspace.
[22:11:08] [WORLD_EVENT_APPROACH_RELEASE] Player cancelled automatic scenario with Backspace.
[22:11:09] [UI] Soft release conversation: Backspace pressed
[22:11:09] [MIC_RESET_SENT] asked the bridge to drop any half-finished mic turn.
[22:11:09] [AUTO_CONVO_PRE_QUIET] armed 12s global / 30s per-ped before release.
[22:11:09] [POST_CHAT_AUTO_QUIET] ped=253442 npcCooldown=30000ms globalQuiet=12000ms
[22:11:09] Chat ended. NPC: Securoserve Guard (Male) | History turns: 0
[22:11:09] [BRIDGE_WARM_HOLD] Keeping Gemini session warm for 30000ms. session=1 npc=253442
[22:11:09] [LIPSYNC_STOPPED] ped=253442 bufferMs=0
[22:11:09] [AMBIENT_PRESERVE] Chat ended; original seated/eating/working task preserved. No wander reset.
[22:11:10] [AUTO_NPC_CONVO] stalking_warning triggered for Securoserve Guard (Male) (253442). Gemini-only prompt queued. cooldown=45000ms
[22:11:10] [VISION_SEND_REQUEST] trigger=chat_open_initial visionId=2 base64Chars=33836 session=1/0
[22:11:10] [SPATIAL_AUDIO] speaker=253442 dist=6.3 pan=-0.49 gainL=0.16 gainR=0.10 cutoff=10685 occluded=False facing=0.89 cabinMuffle=0.00
[22:11:10] [VISION_STATUS] trigger=chat_open_initial visionId=2 status=sent stage=gemini_send base64Chars=33836 imageBytes=25377 reason=csharp_request
[22:11:10] [AUTO_WORLD_EVENT_WAIT] Busy gameplay window; opportunistic 50% roll paused. reason=WAITING_REPLY
[22:11:10] [BRIDGE] playerMessage sent (Gemini Live): "[AUTO NPC CONVO — STALKING / BEING FOLLOWED]
This is an NPC-"
[22:11:11] [BRIDGE_EARLY_ACTION] Fired [CHECKPHONE] from Gemini streaming text immediately — no turnComplete/audio-end wait.
[22:11:11] [BRIDGE_EARLY_ACTION] Processed immediate tag packet while Gemini reply is still streaming; _waitingReply preserved.
[22:11:11] [BODYTAG_DETECTED] CHECKPHONE from reply lowerChars=12 uiChars=0
[22:11:11] [BODYTAG_ISSUED] CHECKPHONE ped=253442 reason=SCENARIO_WORLD_HUMAN_STAND_MOBILE_SENT_AFTER_CLEAR_TASKS
[22:11:11] [AUTO_NPC_CONVO_CLEANUP] Scheduled ambient return for NPC 253442 in 1.8s; queued explicit incidents may dispatch next.
[22:11:11] [AUTO_NPC_LIPSYNC_STOP_ARMED] ped=253442 remainingPcm=0ms stopAfter=1000ms
[22:11:11] [BRIDGE_EARLY_ACTION_STRIP] Removed already-fired tags from final reply. beforeChars=108 afterChars=95
[22:11:11] [AUTO_NPC_CONVO_CLEANUP] Scheduled ambient return for NPC 253442 in 1.8s; queued explicit incidents may dispatch next.
[22:11:13] [SPATIAL_AUDIO] speaker=253442 dist=3.4 pan=0.05 gainL=0.23 gainR=0.24 cutoff=11464 occluded=False facing=1.00 cabinMuffle=0.00
[22:11:14] [LIPSYNC_STOPPED] ped=253442 bufferMs=0
[22:11:14] [AUTO_NPC_CONVO_CLEANUP] Returned NPC 253442 to ambient wander. reason=Auto NPC reply completed
[22:11:14] [AUTO_NPC_CONVO_RELEASE] reason=Auto NPC reply completed; ped=253442
[22:11:15] [AUTO_NPC_CONVO] personal_space triggered for Securoserve Guard (Male) (253442). Gemini-only prompt queued. cooldown=30000ms
[22:11:15] [BRIDGE] playerMessage sent (Gemini Live): "[AUTO NPC CONVO — PERSONAL SPACE INVASION]
This is an NPC-in"
[22:11:16] [BRIDGE_EARLY_ACTION] Fired [BACKOFF] from Gemini streaming text immediately — no turnComplete/audio-end wait.
[22:11:16] [AUTO_NPC_LIPSYNC_STOP_ARMED] ped=253442 remainingPcm=0ms stopAfter=1000ms
[22:11:16] [BRIDGE_EARLY_ACTION_STRIP] Removed already-fired tags from final reply. beforeChars=75 afterChars=65
[22:11:16] [BRIDGE_EARLY_ACTION] Processed immediate tag packet while Gemini reply is still streaming; _waitingReply preserved.
[22:11:16] [AUTO_NPC_CONVO_CLEANUP] Scheduled ambient return for NPC 253442 in 1.8s; queued explicit incidents may dispatch next.
[22:11:16] [SPATIAL_AUDIO] speaker=253442 dist=2.6 pan=-0.05 gainL=0.29 gainR=0.28 cutoff=11559 occluded=False facing=0.99 cabinMuffle=0.00
[22:11:18] [LIPSYNC_STOPPED] ped=253442 bufferMs=0
[22:11:18] [AUTO_NPC_CONVO_CLEANUP] Returned NPC 253442 to ambient wander. reason=Auto NPC reply completed
[22:11:18] [AUTO_NPC_CONVO_RELEASE] reason=Auto NPC reply completed; ped=253442
[22:11:22] [DIRECT_NEGOTIATION_LEDGER_RESET] New direct chat; mission chronology and target roster will lock independently.
[22:11:22] [AMBIENT_PRESERVE] Chat opened without clearing NPC scenario/held-prop task.
[22:11:22] [MEMORY_ROLLOVER] Securoserve Guard (Male) score=0 friend=False convos=2 memoryChars=4971
[22:11:22] [BRIDGE_PREWARM_HIT] Reusing ready Gemini session for Securoserve Guard (Male) (253442).
[22:11:22] [VISION_CAPTURE_OK] trigger=chat_open_initial src=2560x1440 scaled=512x512 jpegBytes=24269 base64Chars=32360
[22:11:22] [VISION_SEND_REQUEST] trigger=chat_open_initial visionId=3 base64Chars=32360 session=1/0
[22:11:22] [VISION_CAPTURE_OK] trigger=mic_start src=2560x1440 scaled=512x512 jpegBytes=24269 base64Chars=32360
[22:11:22] [GEMINI_MIC_DEVICE] device 0 "Mic/Inst/Line In 1/2 (Studio 26" of 2
[22:11:22] [VISION_SEND_REQUEST] trigger=mic_start visionId=4 base64Chars=32360 session=1/0
[22:11:22] [GEMINI_MIC_STREAM_START] turn=1 contextChars=1665
[22:11:22] [GEMINI_MIC_CAPTURE_START] turn=1 live 40ms streaming active.
[22:11:22] [DIRECT_CHAT_QUEUE] Mic recording started immediately for NPC 253442; Gemini may connect in background.
[22:11:22] [VISION_STATUS] trigger=chat_open_initial visionId=3 status=sent stage=gemini_send base64Chars=32360 imageBytes=24269 reason=csharp_request
[22:11:22] [GEMINI_MIC_STATUS] turn=1 status=started
[22:11:22] [VISION_STATUS] trigger=mic_start visionId=4 status=sent stage=gemini_send base64Chars=32360 imageBytes=24269 reason=csharp_request
[22:11:22] [NPCTONPC_ROSTER_LOCKED] Stable numbered handles preserved for this direct chat; negotiation/payment cannot silently retarget slots.
[22:11:22] [NPCTONPC_ROSTER] count=1 1ST: Securoserve Guard (Male) | male human | Security Guard — watchful, authoritative, perpetually underpaid for what they deal with | 16.6m | making a phone call / looking at their phone | on foot
[22:11:22] [SPATIAL_AUDIO] speaker=253442 dist=2.6 pan=-0.05 gainL=0.29 gainR=0.28 cutoff=11516 occluded=False facing=0.98 cabinMuffle=0.00
[22:11:22] [LIPSYNC_STOPPED] ped=253442 bufferMs=0
[22:11:24] [GEMINI_MIC_CAPTURE_STOP] turn=1 queuedBytes=51200
[22:11:24] [GEMINI_MIC_STREAM_END] turn=1 chunks=40 bytes=51200 discarded=False
[22:11:24] [GEMINI_MIC_STATUS] turn=1 status=audio-ended
[22:11:24] [GEMINI_STT_DELTA] turn=1 chars=8
[22:11:25] [BRIDGE_EARLY_ACTION] Fired [CHECKPHONE] from Gemini streaming text immediately — no turnComplete/audio-end wait.
[22:11:25] [LIPSYNC] StartLipSync -> ped 253442 | duration=12000ms
[22:11:25] [BRIDGE_LIPSYNC] Audio-driven LipSync started on first PCM chunk for ped 253442 | duration=12000ms
[22:11:25] [BODYTAG_ANIM_QUEUED] tag=TALK_GESTURE ped=253442 dict=gestures@m@standing@casual clip=gesture_convo_throw_up_hands duration=1850 flags=49 loadedNow=True
[22:11:25] [BODYTAG_ANIM_PLAYED] tag=TALK_GESTURE ped=253442 dict=gestures@m@standing@casual clip=gesture_convo_throw_up_hands verifiedPlaying=False reason=NATIVE_SENT_BUT_VERIFY_FALSE_NEXT_FRAME_MAY_STILL_START
[22:11:25] [BRIDGE_EARLY_ACTION] Processed immediate tag packet while Gemini reply is still streaming; _waitingReply preserved.
[22:11:25] [BODYTAG_DETECTED] CHECKPHONE from reply lowerChars=12 uiChars=0
[22:11:25] [BODYTAG_ISSUED] CHECKPHONE ped=253442 reason=SCENARIO_WORLD_HUMAN_STAND_MOBILE_SENT_AFTER_CLEAR_TASKS
[22:11:25] [SPATIAL_AUDIO] speaker=253442 dist=2.3 pan=0.18 gainL=0.27 gainR=0.32 cutoff=11094 occluded=False facing=0.83 cabinMuffle=0.00
[22:11:25] [AUTO_WORLD_EVENT_WAIT] Busy gameplay window; opportunistic 50% roll paused. reason=DIRECT_CHAT_OPEN
[22:11:28] [SPATIAL_AUDIO] speaker=253442 dist=2.3 pan=0.19 gainL=0.27 gainR=0.33 cutoff=11110 occluded=False facing=0.83 cabinMuffle=0.00
[22:11:28] [BODYTAG_ANIM_QUEUED] tag=TALK_GESTURE ped=253442 dict=gestures@m@standing@casual clip=gesture_convo_feel_strongly duration=1850 flags=49 loadedNow=True
[22:11:28] [BODYTAG_ANIM_PLAYED] tag=TALK_GESTURE ped=253442 dict=gestures@m@standing@casual clip=gesture_convo_feel_strongly verifiedPlaying=False reason=NATIVE_SENT_BUT_VERIFY_FALSE_NEXT_FRAME_MAY_STILL_START
[22:11:31] [SPATIAL_AUDIO] speaker=253442 dist=2.3 pan=0.19 gainL=0.27 gainR=0.33 cutoff=11111 occluded=False facing=0.84 cabinMuffle=0.00
[22:11:31] [GEMINI_STT_FINAL] turn=1 chars=8 text="Yo, bop."
[22:11:31] [DIRECT_LIPSYNC_STOP_ARMED] ped=253442 remainingPcm=0ms stopAfter=700ms
[22:11:31] [GEMINI_MIC_DELIVERED] transcriptChars=8 npc=Securoserve Guard (Male)
[22:11:31] [BRIDGE_EARLY_ACTION_STRIP] Removed already-fired tags from final reply. beforeChars=125 afterChars=98
[22:11:31] [LIPSYNC_STOPPED] ped=253442 bufferMs=0
[22:11:34] [SPATIAL_AUDIO] speaker=253442 dist=2.3 pan=0.19 gainL=0.27 gainR=0.33 cutoff=11111 occluded=False facing=0.84 cabinMuffle=0.00
[22:11:37] [VISION_CAPTURE_OK] trigger=mic_start src=2560x1440 scaled=512x512 jpegBytes=25580 base64Chars=34108
[22:11:37] [GEMINI_MIC_DEVICE] device 0 "Mic/Inst/Line In 1/2 (Studio 26" of 2
[22:11:37] [VISION_SEND_REQUEST] trigger=mic_start visionId=5 base64Chars=34108 session=1/0
[22:11:37] [GEMINI_MIC_STREAM_START] turn=2 contextChars=3022
[22:11:37] [GEMINI_MIC_CAPTURE_START] turn=2 live 40ms streaming active.
[22:11:37] [GEMINI_MIC_STATUS] turn=2 status=started
[22:11:37] [VISION_STATUS] trigger=mic_start visionId=5 status=sent stage=gemini_send base64Chars=34108 imageBytes=25580 reason=csharp_request
[22:11:37] [SPATIAL_AUDIO] speaker=253442 dist=2.6 pan=0.01 gainL=0.28 gainR=0.28 cutoff=11445 occluded=False facing=0.95 cabinMuffle=0.00
[22:11:38] [AUTO_WORLD_EVENT_MANDATORY_DUE] Thirty-second deadline reached. Scenario is queued and will start at the first safe gameplay window.
[22:11:39] [GEMINI_MIC_CAPTURE_STOP] turn=2 queuedBytes=80000
[22:11:39] [GEMINI_MIC_STREAM_END] turn=2 chunks=63 bytes=80000 discarded=False
[22:11:39] [GEMINI_MIC_STATUS] turn=2 status=audio-ended
[22:11:40] [GEMINI_STT_DELTA] turn=2 chars=40
[22:11:40] [SPATIAL_AUDIO] speaker=253442 dist=2.7 pan=-0.05 gainL=0.28 gainR=0.27 cutoff=11504 occluded=False facing=0.98 cabinMuffle=0.00
[22:11:40] [BRIDGE_EARLY_ACTION] Fired [NOD] from Gemini streaming text immediately — no turnComplete/audio-end wait.
[22:11:40] [BRIDGE_EARLY_ACTION] Processed immediate tag packet while Gemini reply is still streaming; _waitingReply preserved.
[22:11:40] [BODYTAG_DETECTED] NOD from reply lowerChars=5 uiChars=0
[22:11:40] [EXPLICIT_BODYTAG_QUEUED] tag=NOD ped=253442 dict=gestures@m@standing@casual clip=gesture_convo_agree duration=1200
[22:11:40] [BODYTAG_ISSUED] NOD ped=253442 reason=QUEUED_NOD_GESTURE
[22:11:40] [EXPLICIT_BODYTAG_PLAYED] tag=NOD ped=253442 dict=gestures@m@standing@casual clip=gesture_convo_agree reason=FIFO_MAIN_THREAD_SENT
[22:11:40] [AUTO_WORLD_EVENT_MANDATORY_WAIT] Deadline scenario queued; waiting for safe window. reason=DIRECT_CHAT_OPEN
[22:11:41] [GEMINI_STT_FINAL] turn=2 chars=40 text="Who the fuck are you talking about, Bob?"
[22:11:41] [GEMINI_MIC_DELIVERED] transcriptChars=40 npc=Securoserve Guard (Male)
[22:11:41] [DIRECT_LIPSYNC_STOP_ARMED] ped=253442 remainingPcm=0ms stopAfter=700ms
[22:11:41] [BRIDGE_EARLY_ACTION_STRIP] Removed already-fired tags from final reply. beforeChars=93 afterChars=87
[22:11:43] [SPATIAL_AUDIO] speaker=253442 dist=2.7 pan=-0.05 gainL=0.28 gainR=0.27 cutoff=11504 occluded=False facing=0.98 cabinMuffle=0.00
[22:11:46] [SPATIAL_AUDIO] speaker=253442 dist=2.7 pan=-0.05 gainL=0.28 gainR=0.27 cutoff=11504 occluded=False facing=0.98 cabinMuffle=0.00
[22:11:48] [VISION_CAPTURE_OK] trigger=mic_start src=2560x1440 scaled=512x512 jpegBytes=25457 base64Chars=33944
[22:11:48] [GEMINI_MIC_DEVICE] device 0 "Mic/Inst/Line In 1/2 (Studio 26" of 2
[22:11:48] [VISION_SEND_REQUEST] trigger=mic_start visionId=6 base64Chars=33944 session=1/0
[22:11:48] [GEMINI_MIC_STREAM_START] turn=3 contextChars=3022
[22:11:48] [GEMINI_MIC_CAPTURE_START] turn=3 live 40ms streaming active.
[22:11:48] [GEMINI_MIC_STATUS] turn=3 status=started
[22:11:48] [VISION_STATUS] trigger=mic_start visionId=6 status=sent stage=gemini_send base64Chars=33944 imageBytes=25457 reason=csharp_request
[22:11:49] [SPATIAL_AUDIO] speaker=253442 dist=2.7 pan=-0.05 gainL=0.28 gainR=0.27 cutoff=11504 occluded=False facing=0.98 cabinMuffle=0.00
[22:11:50] [GEMINI_MIC_STREAM_END] turn=3 chunks=30 bytes=38400 discarded=False
[22:11:50] [GEMINI_MIC_CAPTURE_STOP] turn=3 queuedBytes=38400
[22:11:50] [GEMINI_MIC_STATUS] turn=3 status=audio-ended
[22:11:50] [GEMINI_STT_DELTA] turn=3 chars=5
[22:11:51] [BRIDGE_EARLY_ACTION] Fired [CHECKPHONE] from Gemini streaming text immediately — no turnComplete/audio-end wait.
[22:11:51] [LIPSYNC] StartLipSync -> ped 253442 | duration=12000ms
[22:11:51] [BRIDGE_LIPSYNC] Audio-driven LipSync started on first PCM chunk for ped 253442 | duration=12000ms
[22:11:51] [BODYTAG_ANIM_QUEUED] tag=TALK_GESTURE ped=253442 dict=gestures@m@standing@casual clip=gesture_convo_feel_strongly duration=1850 flags=49 loadedNow=True
[22:11:51] [BODYTAG_ANIM_PLAYED] tag=TALK_GESTURE ped=253442 dict=gestures@m@standing@casual clip=gesture_convo_feel_strongly verifiedPlaying=False reason=NATIVE_SENT_BUT_VERIFY_FALSE_NEXT_FRAME_MAY_STILL_START
[22:11:51] [BRIDGE_EARLY_ACTION] Processed immediate tag packet while Gemini reply is still streaming; _waitingReply preserved.
[22:11:51] [BODYTAG_DETECTED] CHECKPHONE from reply lowerChars=12 uiChars=0
[22:11:51] [BODYTAG_NOT_PLAYED] CHECKPHONE ped=253442 reason=ALREADY_USING_PHONE_DUPLICATE_BLOCKED
[22:11:52] [SPATIAL_AUDIO] speaker=253442 dist=2.7 pan=-0.05 gainL=0.28 gainR=0.27 cutoff=11504 occluded=False facing=0.98 cabinMuffle=0.00
[22:11:54] [BODYTAG_ANIM_QUEUED] tag=TALK_GESTURE ped=253442 dict=gestures@m@standing@casual clip=gesture_convo_hand_move_l duration=1850 flags=49 loadedNow=True
[22:11:54] [BODYTAG_ANIM_PLAYED] tag=TALK_GESTURE ped=253442 dict=gestures@m@standing@casual clip=gesture_convo_hand_move_l verifiedPlaying=False reason=NATIVE_SENT_BUT_VERIFY_FALSE_NEXT_FRAME_MAY_STILL_START
[22:11:55] [SPATIAL_AUDIO] speaker=253442 dist=2.7 pan=-0.05 gainL=0.28 gainR=0.27 cutoff=11503 occluded=False facing=0.98 cabinMuffle=0.00
[22:11:55] [AUTO_WORLD_EVENT_MANDATORY_WAIT] Deadline scenario queued; waiting for safe window. reason=DIRECT_CHAT_OPEN
[22:11:57] [GEMINI_STT_FINAL] turn=3 chars=5 text="What?"
[22:11:57] [GEMINI_MIC_DELIVERED] transcriptChars=5 npc=Securoserve Guard (Male)
[22:11:57] [DIRECT_LIPSYNC_STOP_ARMED] ped=253442 remainingPcm=0ms stopAfter=700ms
[22:11:57] [BRIDGE_EARLY_ACTION_STRIP] Removed already-fired tags from final reply. beforeChars=138 afterChars=111
[22:11:57] [LIPSYNC_STOPPED] ped=253442 bufferMs=0
[22:11:58] [SPATIAL_AUDIO] speaker=253442 dist=2.7 pan=-0.07 gainL=0.28 gainR=0.26 cutoff=11523 occluded=False facing=0.98 cabinMuffle=0.00
[22:11:58] [VISION_CAPTURE_OK] trigger=mic_start src=2560x1440 scaled=512x512 jpegBytes=26843 base64Chars=35792
[22:11:58] [GEMINI_MIC_DEVICE] device 0 "Mic/Inst/Line In 1/2 (Studio 26" of 2
[22:11:58] [VISION_SEND_REQUEST] trigger=mic_start visionId=7 base64Chars=35792 session=1/0
[22:11:58] [GEMINI_MIC_STREAM_START] turn=4 contextChars=3022
[22:11:58] [GEMINI_MIC_CAPTURE_START] turn=4 live 40ms streaming active.
[22:11:58] [GEMINI_MIC_STATUS] turn=4 status=started
[22:11:58] [VISION_STATUS] trigger=mic_start visionId=7 status=sent stage=gemini_send base64Chars=35792 imageBytes=26843 reason=csharp_request
[22:12:01] [SPATIAL_AUDIO] speaker=253442 dist=2.7 pan=-0.07 gainL=0.28 gainR=0.26 cutoff=11523 occluded=False facing=0.98 cabinMuffle=0.00
[22:12:04] [SPATIAL_AUDIO] speaker=253442 dist=2.7 pan=-0.07 gainL=0.28 gainR=0.26 cutoff=11523 occluded=False facing=0.98 cabinMuffle=0.00
[22:12:05] [GEMINI_MIC_STREAM_END] turn=4 chunks=170 bytes=217600 discarded=False
[22:12:05] [GEMINI_MIC_CAPTURE_STOP] turn=4 queuedBytes=217600
[22:12:05] [GEMINI_MIC_STATUS] turn=4 status=audio-ended
[22:12:05] [GEMINI_STT_DELTA] turn=4 chars=77
[22:12:06] [BRIDGE_EARLY_ACTION] Fired [FINGER] from Gemini streaming text immediately — no turnComplete/audio-end wait.
[22:12:06] [BRIDGE_EARLY_ACTION] Processed immediate tag packet while Gemini reply is still streaming; _waitingReply preserved.
[22:12:06] [BODYTAG_DETECTED] FINGER from reply lowerChars=8 uiChars=0
[22:12:06] [EXPLICIT_BODYTAG_QUEUED] tag=FINGER ped=253442 dict=gestures@m@standing@casual clip=gesture_damn duration=1800
[22:12:06] [BODYTAG_ISSUED] FINGER ped=253442 reason=QUEUED_RUDE_GESTURE
[22:12:06] [EXPLICIT_BODYTAG_PLAYED] tag=FINGER ped=253442 dict=gestures@m@standing@casual clip=gesture_damn reason=FIFO_MAIN_THREAD_SENT
[22:12:06] [GEMINI_STT_FINAL] turn=4 chars=77 text="You fucking forgot who you're working to? You're working on me, motherfucker."
[22:12:06] [DIRECT_LIPSYNC_STOP_ARMED] ped=253442 remainingPcm=0ms stopAfter=700ms
[22:12:06] [BRIDGE_EARLY_ACTION_STRIP] Removed already-fired tags from final reply. beforeChars=120 afterChars=111
[22:12:06] [GEMINI_MIC_DELIVERED] transcriptChars=77 npc=Securoserve Guard (Male)
[22:12:07] [SPATIAL_AUDIO] speaker=253442 dist=2.7 pan=-0.07 gainL=0.28 gainR=0.26 cutoff=11523 occluded=False facing=0.98 cabinMuffle=0.00
[22:12:10] [SPATIAL_AUDIO] speaker=253442 dist=2.7 pan=-0.07 gainL=0.28 gainR=0.26 cutoff=11523 occluded=False facing=0.98 cabinMuffle=0.00
[22:12:10] [AUTO_WORLD_EVENT_MANDATORY_WAIT] Deadline scenario queued; waiting for safe window. reason=DIRECT_CHAT_OPEN
[22:12:12] SendSecretMessage triggered for: Securoserve Guard (Male)
[22:12:12] [LIVE_AIM_AUTO_REPLY] npc=253442
[22:12:12] [VISION_SEND_REQUEST] trigger=chat_open_initial visionId=8 base64Chars=32360 session=1/0
[22:12:12] [VISION_STATUS] trigger=chat_open_initial visionId=8 status=sent stage=gemini_send base64Chars=32360 imageBytes=24269 reason=csharp_request
[22:12:12] [BRIDGE] playerMessage sent (Gemini Live): "[LIVE GAME EVENT — PLAYER AIMED AT YOU] The player just rais"
[22:12:13] [BRIDGE_EARLY_ACTION] Fired [HANDSUP] from Gemini streaming text immediately — no turnComplete/audio-end wait.
[22:12:13] [BRIDGE_EARLY_ACTION] Processed immediate tag packet while Gemini reply is still streaming; _waitingReply preserved.
[22:12:13] [DIRECT_LIPSYNC_STOP_ARMED] ped=253442 remainingPcm=0ms stopAfter=700ms
[22:12:13] [BRIDGE_EARLY_ACTION_STRIP] Removed already-fired tags from final reply. beforeChars=141 afterChars=131
[22:12:14] [SPATIAL_AUDIO] speaker=253442 dist=1.8 pan=0.00 gainL=0.36 gainR=0.36 cutoff=11544 occluded=False facing=0.95 cabinMuffle=0.00
[22:12:17] [WITNESS_SCAN] shooting in Пиллбокс-Хилл: 1 saw it, 1 only heard it, 2 checked. desc="carrying a Пистолет"
[22:12:17] [WITNESS_DESCRIPTION] "carrying a Пистолет" — this is what they can describe, nothing more.
[22:12:17] [MEMORY_V3_GOSSIP] Seeded: there was a shooting in Пиллбокс-Хилл — carrying a Пистолет
[22:12:17] [WITNESS_RUMOUR_SEEDED] 1 eyewitness(es) started talking: "there was a shooting in Пиллбокс-Хилл — carrying a Пистолет"
[22:12:17] [ACTIVITY] [15:00] Opened fire / fired a weapon at someone near PBOX
[22:12:17] [LIVE_ACTION] SHOOTING detected near PBOX
[22:12:17] [WITNESS] NPC 253698 marked witnessed: shoot near PBOX (dist=17.6m)
[22:12:17] [LIVE_EVENT SKIPPED - cooldown active]: [LIVE_GAME_EVENT — REACT IMMEDIATELY AND NATURALLY]
The play...
[22:12:17] [SPATIAL_AUDIO] speaker=253442 dist=1.9 pan=-0.04 gainL=0.36 gainR=0.34 cutoff=11555 occluded=False facing=0.95 cabinMuffle=0.00
[22:12:20] [SPATIAL_AUDIO] speaker=253442 dist=1.8 pan=-0.02 gainL=0.37 gainR=0.36 cutoff=11555 occluded=False facing=0.95 cabinMuffle=0.00
[22:12:20] SendSecretMessage triggered for: Securoserve Guard (Male)
[22:12:20] [LIVE_AIM_AUTO_REPLY] npc=253442
[22:12:20] [BRIDGE] playerMessage sent (Gemini Live): "[LIVE GAME EVENT — PLAYER AIMED AT YOU] The player just rais"
[22:12:21] [BRIDGE_EARLY_ACTION] Fired [HANDSUP] from Gemini streaming text immediately — no turnComplete/audio-end wait.
[22:12:21] [BRIDGE_EARLY_ACTION] Processed immediate tag packet while Gemini reply is still streaming; _waitingReply preserved.
[22:12:21] [AUTO-CANCEL] Previous active task cleared for new tag.
[22:12:21] [DIRECT_LIPSYNC_STOP_ARMED] ped=253442 remainingPcm=0ms stopAfter=700ms
[22:12:21] [BRIDGE_EARLY_ACTION_STRIP] Removed already-fired tags from final reply. beforeChars=141 afterChars=131
[22:12:23] [MEMORY_V3_GOSSIP_WRITE] 3660355662_972418420.json <- "there was a shooting in Пиллбокс-Хилл — carrying a Пистолет" (hop 0)
[22:12:23] [MEMORY_V3_GOSSIP] 'there was a shooting in Пиллбокс-Хилл — carrying a Пистолет' reached 2 more (hop 0, total 2)
[22:12:23] [SPATIAL_AUDIO] speaker=253442 dist=1.8 pan=-0.01 gainL=0.36 gainR=0.36 cutoff=11567 occluded=False facing=0.95 cabinMuffle=0.00
[22:12:26] [SPATIAL_AUDIO] speaker=253442 dist=1.8 pan=-0.03 gainL=0.28 gainR=0.27 cutoff=8945 occluded=False facing=0.15 cabinMuffle=0.00
[22:12:26] [AUTO_WORLD_EVENT_MANDATORY_WAIT] Deadline scenario queued; waiting for safe window. reason=DIRECT_CHAT_OPEN
[22:12:29] [MEMORY_V3_GOSSIP] 'there was a shooting in Пиллбокс-Хилл — carrying a Пистолет' reached 2 more (hop 1, total 4)
[22:12:29] [SPATIAL_AUDIO] speaker=253442 dist=3.5 pan=0.04 gainL=0.16 gainR=0.17 cutoff=8450 occluded=False facing=0.06 cabinMuffle=0.00
[22:12:32] [SPATIAL_AUDIO] speaker=253442 dist=2.4 pan=0.65 gainL=0.14 gainR=0.30 cutoff=9051 occluded=False facing=0.21 cabinMuffle=0.00
[22:12:35] [IDENTITY_NEW] handle=13570 fp=-1589423867:0:1:0:0 -> id=46385502
[22:12:35] [MEMORY_V3_GOSSIP_WRITE] 2705543429_46385502.json <- "there was a shooting in Пиллбокс-Хилл — carrying a Пистолет" (hop 2)
[22:12:35] [IDENTITY_NEW] handle=194562 fp=951767867:0:0:1:0 -> id=894017342
[22:12:35] [MEMORY_V3_GOSSIP_WRITE] 951767867_894017342.json <- "there was a shooting in Пиллбокс-Хилл — carrying a Пистолет" (hop 2)
[22:12:35] [MEMORY_V3_GOSSIP] 'there was a shooting in Пиллбокс-Хилл — carrying a Пистолет' reached 3 more (hop 2, total 7)
[22:12:35] [SPATIAL_AUDIO] speaker=253442 dist=3.3 pan=-0.08 gainL=0.19 gainR=0.17 cutoff=8670 occluded=False facing=0.12 cabinMuffle=0.00
[22:12:38] [SPATIAL_AUDIO] speaker=253442 dist=6.6 pan=-0.52 gainL=0.05 gainR=0.03 cutoff=2600 occluded=True facing=0.11 cabinMuffle=0.00
[22:12:41] [MEMORY_V3_GOSSIP] 'there was a shooting in Пиллбокс-Хилл — carrying a Пистолет' reached 3 more (hop 3, total 10)
[22:12:41] [SPATIAL_AUDIO] speaker=253442 dist=16.6 pan=-0.81 gainL=0.05 gainR=0.02 cutoff=4919 occluded=False facing=0.02 cabinMuffle=0.00
[22:12:41] [UI] Soft release conversation: Release key pressed
[22:12:41] [MIC_RESET_SENT] asked the bridge to drop any half-finished mic turn.
[22:12:41] [AUTO_CONVO_PRE_QUIET] armed 12s global / 30s per-ped before release.
[22:12:41] [POST_CHAT_AUTO_QUIET] ped=253442 npcCooldown=30000ms globalQuiet=12000ms
[22:12:41] Chat ended. NPC: Securoserve Guard (Male) | History turns: 13
[22:12:41] [MEMORY_V2] Queued save for Securoserve Guard (Male) | turns:13 | special:False
[22:12:41] [BRIDGE_WARM_HOLD] Keeping Gemini session warm for 30000ms. session=1 npc=253442
[22:12:41] [LIPSYNC_STOPPED] ped=253442 bufferMs=0
[22:12:41] [MEMORY_V2] Saved: E:\Steam\steamapps\common\Grand Theft Auto V\scripts\LLAI SERVER\NPC_MEMORIES\3660355662_972418420.json | score=0 friend=False convos=2
[22:12:41] [AUTO_WORLD_EVENT_TRIGGER] request=2 mandatory=True manualTest=False stationaryMs=0.
[22:12:41] [WORLD_EVENT_FAIL] Not enough NPCs from GetAllPeds. Found: 0; retryMs=7000
[22:12:51] [MEMORY_V3_GOSSIP_WRITE] 3660355662_972418420.json <- "there was a shooting in Пиллбокс-Хилл — carrying a Пистолет" (hop 4)
[22:12:51] [MEMORY_V3_GOSSIP] 'there was a shooting in Пиллбокс-Хилл — carrying a Пистолет' reached 3 more (hop 4, total 13)
[22:12:52] [AUTO_WORLD_EVENT_TRIGGER] request=3 mandatory=True manualTest=False stationaryMs=0.
[22:12:52] [IDENTITY_RELINK] handle=254210 fp=-634611634:0:0:0:0 -> id=972418420 (known face, memory preserved)
[22:12:52] [MEMORY_V2] Loaded memory for Securoserve Guard (Male) (model=3660355662 id=972418420) len=905
[22:12:52] [MEMORY_V3] Securoserve Guard (Male): 0 events, 0 grudges, 1 rumours
[22:12:52] [MEMORY_V2] Restored state for Securoserve Guard (Male): score=0, friend=False, convos=2
[22:12:52] [IDENTITY_RELINK] handle=253954 fp=-634611634:0:0:0:0 -> id=972418420 (known face, memory preserved)
[22:12:52] [MEMORY_V2] Loaded memory for Securoserve Guard (Male) (model=3660355662 id=972418420) len=905
[22:12:52] [MEMORY_V3] Securoserve Guard (Male): 0 events, 0 grudges, 1 rumours
[22:12:52] [MEMORY_V2] Restored state for Securoserve Guard (Male): score=0, friend=False, convos=2
[22:12:52] [WORLD_EVENT_ANCHORS] atm=False bench=False trashBin=False
[22:12:52] [AUTO_WORLD_EVENT_PAIR] A=Securoserve Guard (Male) B=Securoserve Guard (Male) playerDistA=49.6m playerDistB=51.1m minRequired=15.0m shopPair=False preferNoCashier=False venue=
[22:12:52] [AUTO_WORLD_EVENT_SCAN_SKIP] Nearest valid pair midpoint was outside the 45m event bubble.
[22:12:54] [AUTO_WORLD_EVENT_TRIGGER] request=4 mandatory=True manualTest=False stationaryMs=0.
[22:12:54] [WORLD_EVENT_ANCHORS] atm=False bench=False trashBin=False
[22:12:54] [AUTO_WORLD_EVENT_PAIR] A=Securoserve Guard (Male) B=Securoserve Guard (Male) playerDistA=51.4m playerDistB=53.0m minRequired=15.0m shopPair=False preferNoCashier=False venue=
[22:12:54] [AUTO_WORLD_EVENT_SCAN_SKIP] Nearest valid pair midpoint was outside the 45m event bubble.
[22:12:56] [AUTO_WORLD_EVENT_TRIGGER] request=5 mandatory=True manualTest=False stationaryMs=0.
[22:12:56] [IDENTITY_NEW] handle=18173187 fp=2120901815:0:0:2:0 -> id=1091554122
[22:12:56] [IDENTITY_NEW] handle=18020867 fp=-1606864033:0:0:1:0 -> id=761243226
[22:12:56] [WORLD_EVENT_ANCHORS] atm=False bench=False trashBin=False
[22:12:56] [AUTO_WORLD_EVENT_PAIR] A=Echo B=Heaven playerDistA=50.6m playerDistB=51.0m minRequired=15.0m shopPair=False preferNoCashier=False venue=
[22:12:56] [AUTO_WORLD_EVENT_SCAN_SKIP] Nearest valid pair midpoint was outside the 45m event bubble.
[22:12:57] [MEMORY_V3_GOSSIP] 'there was a shooting in Пиллбокс-Хилл — carrying a Пистолет' reached 1 more (hop 5, total 14)
[22:12:58] [AUTO_WORLD_EVENT_TRIGGER] request=6 mandatory=True manualTest=False stationaryMs=0.
[22:12:58] [WORLD_EVENT_ANCHORS] atm=False bench=False trashBin=False
[22:12:58] [AUTO_WORLD_EVENT_PAIR] A=Echo B=Heaven playerDistA=43.7m playerDistB=48.0m minRequired=15.0m shopPair=False preferNoCashier=False venue=
[22:12:58] [AUTO_WORLD_EVENT_SCAN_SKIP] Nearest valid pair midpoint was outside the 45m event bubble.
[22:13:00] [AUTO_WORLD_EVENT_TRIGGER] request=7 mandatory=True manualTest=False stationaryMs=0.
[22:13:00] [IDENTITY_NEW] handle=17999875 fp=-1606864033:0:0:0:0 -> id=761242265
[22:13:00] [IDENTITY_NEW] handle=19179267 fp=2120901815:0:0:0:0 -> id=1091552200
[22:13:00] [WORLD_EVENT_ANCHORS] atm=False bench=False trashBin=False
[22:13:00] [AUTO_WORLD_EVENT_PAIR] A=Kim B=Nickels playerDistA=38.2m playerDistB=41.2m minRequired=15.0m shopPair=False preferNoCashier=False venue=
[22:13:00] [WORLD_EVENT_PAIR_RESERVED] Waiting for validated AI JSON before blips/approach.
[22:13:00] [WORLD_EVENT] Requesting scenario for Kim + Nickels at Сан-Андреас-авеню, Downtown Los Santos
[22:13:00] [WORLD_EVENT] Prompt size: 13718 chars
[22:13:00] [AUTO_WORLD_EVENT_SOURCE] source=AI_CACHE cacheRemaining=10 keyIndex=-1
[22:13:00] [WORLD_EVENT] AI JSON received: 2148 chars
[22:13:00] [AUTO_WORLD_EVENT_BLIPS_CREATED] A=True B=True longRange=true
[22:13:00] [AUTO_WORLD_EVENT_PLAYER_NOTICE] Nearby scenario generated; yellow blips active.
[22:13:00] [APPROACH] dist=3.3m speed=1.2 (walk)
[22:13:00] [WORLD_EVENT_APPROACH] Normal NPC-to-NPC walk started. distance=3.3m
[22:13:00] [AUTO_WORLD_EVENT_SCENARIO_READY] JSON ready; waiting for natural NPC approach.
[22:13:02] [APPROACH] dist=2.5m speed=1.2 (walk)
[22:13:03] [WORLD_EVENT_ORIENTATION_START] Pair in range at 2.24m; allowing natural body turn before setup.
[22:13:03] [WORLD_EVENT_ORIENTATION_ANGLE] aligned=True dotA=1.00 dotB=0.99 elapsed=8ms
[22:13:03] [WORLD_EVENT_ORIENTATION_READY] Natural face-to-face settling complete. distance=2.24m
[22:13:03] [WORLD_EVENT] ═══════════════════════════════
[22:13:03] [WORLD_EVENT] Type: stiffed_cab_fare
[22:13:03] [WORLD_EVENT] Description: A dispute over unpaid cab services on a sidewalk.
[22:13:03] [WORLD_EVENT] Mood: tense | Exchanges: 12
[22:13:03] [WORLD_EVENT] Behaviors: A=adamant | B=defensive | Dynamic=service provider versus delinquent customer
[22:13:03] [WORLD_EVENT_INCIDENT] brief=Passenger refused to pay the full cab fare after a short cross-town trip. | backstory=The driver took a longer route due to road construction, inflating the expected price. | stakes=The driver loses daily income and the passenger risks being reported for theft of services. | twist=The passenger left their phone in the backseat, making their identity instantly verifiable.
[22:13:03] [WORLD_EVENT_PHYSICAL_EVIDENCE] type=PROP:CLIPBOARD owner=A opening=NPC A holds a clipboard facing NPC B, while NPC B looks impatient and holds a wallet.
[22:13:03] [WORLD_EVENT] Opening intent: "Demand immediate settlement of the unpaid fare shown on the clipboard." | fallback line: "You are not walking away until every cent of this meter is settled."
[22:13:03] [WORLD_EVENT] NPC A: Kim (handle=17999875) | NPC B: Nickels (handle=19179267)
[22:13:03] [WORLD_EVENT_AI_JSON] Full AI Response:
{"schemaVersion":2,"venueType":"any","requirements":{"requiresCashier":false,"requiresAnimal":false,"requiresVehicle":false,"requiresIndoor":false,"requiresAtm":false,"requiresBench":false,"requiresTrashBin":false},"eventType":"stiffed_cab_fare","sceneDescription":"A dispute over unpaid cab services on a sidewalk.","setup":[{"tag":"FACE","npc":"A","purpose":"orientation","physicalReason":"facing the passenger to demand payment","dialogueFact":"NPC A drove the cab and demands the owed fare."},{"tag":"IMPATIENT","npc":"B","purpose":"social_activity","physicalReason":"checking watch while waiting to leave","dialogueFact":"NPC B claims the ride quality was poor and refuses to pay the full amount."},{"tag":"PROP","npc":"A","purpose":"evidence_holding","physicalReason":"holding the receipt clipboard showing the meter total","dialogueFact":"NPC A holds the official meter printout.","prop":"CLIPBOARD","target":"A"},{"tag":"PROP","npc":"B","purpose":"evidence_holding","physicalReason":"clutching wallet to withhold funds","dialogueFact":"NPC B holds the wallet with exact change.","prop":"WALLET","target":"B"}],"sceneConfig":{"openingIntent":"Demand immediate settlement of the unpaid fare shown on the clipboard.","openingLine":"You are not walking away until every cent of this meter is settled.","incidentBrief":"Passenger refused to pay the full cab fare after a short cross-town trip.","backstory":"The driver took a longer route due to road construction, inflating the expected price.","stakes":"The driver loses daily income and the passenger risks being reported for theft of services.","twist":"The passenger left their phone in the backseat, making their identity instantly verifiable.","dangerLevel":"low","primaryEvidenceType":"PROP:CLIPBOARD","primaryEvidenceOwner":"A","physicalOpeningState":"NPC A holds a clipboard facing NPC B, while NPC B looks impatient and holds a wallet.","mood":"tense","behaviorA":"adamant","behaviorB":"defensive","relationshipDynamic":"service provider versus delinquent customer","maxExchanges":12},"cleanup":[{"delayMs":5000,"npc":"A","tag":"CLIPBOARD"},{"delayMs":5000,"npc":"B","tag":"WALLET"}]}
[22:13:03] [WORLD_EVENT] FACE OK: A → B
[22:13:03] [WORLD_EVENT_ACTION_OK] B IMPATIENT reason=checking watch while waiting to leave
[22:13:03] [v4.4_MIND_CORE_ARMED] Action receipts, cognitive envelope, causal state, and continuity reset for new Gemini Live scene.
[22:13:03] [SCENE_LANGUAGE_LOCK] A=english B=english
[22:13:03] [SEARCH_LICENCE_SCENE] webSearch=False applied to scene prompts.
[22:13:03] [SCENE_PROMPT_CACHE] Main-thread prompts ready: A=4125 chars, B=3985 chars.
[22:13:03] [SCENE] Scene started: Kim vs Nickels
[22:13:03] [AUTO_WORLD_EVENT_DEADLINE_RESET] Unique AI scenario accepted; next mandatory deadline is 30s.
[22:13:03] [WORLD_EVENT] ✅ Scene started: Kim ↔ Nickels
[22:13:03] [BRIDGE] startSceneSession sent — A: Kim (Kore), B: Nickels (Orus)
[22:13:03] [SCENE] Gemini scene sessions initializing — waiting up to 6s...
[22:13:03] [WORLD_EVENT_PROP_ATTACHED] ped=19179267 model=ba_prop_battle_wallet_pickup object=19849987
[22:13:03] [WORLD_EVENT_PROP_ATTACHED] ped=17999875 model=p_amb_clipboard_01 object=19851267
[22:13:03] [BRIDGE] Gemini scene: both NPC sessions ready!
[22:13:03] [SCENE TURN 1] Kim responding...
[22:13:03] [SCENE_AUDIO_PREBUFFER] npc=A turn=1 targetMs=700
[22:13:03] [SCENE_AUDIO_REQUEST] npc=A turn=1 attempt=1 textChars=7473
[22:13:03] [SCENE_AUDIO_TURN_START] turn=1 expected=1 flags preserved.
[22:13:05] [SCENE_ACTION_RECEIVED] npc=A action=SCENECONTINUE
[22:13:05] [LIPSYNC] StartLipSync -> ped 17999875 | duration=20000ms
[22:13:05] [BRIDGE_LIPSYNC] Audio-driven LipSync started on first PCM chunk for ped 17999875 | duration=20000ms
[22:13:05] [SPATIAL_AUDIO] speaker=17999875 dist=34.6 pan=0.42 gainL=0.00 gainR=0.01 cutoff=2600 occluded=True facing=0.00 cabinMuffle=0.00
[22:13:07] [AUTO_WORLD_EVENT_DISTANCE_GRACE] distance=45.0 radius=45 graceMs=10000
[22:13:08] [SPATIAL_AUDIO] speaker=17999875 dist=42.4 pan=0.30 gainL=0.00 gainR=0.01 cutoff=2801 occluded=False facing=0.00 cabinMuffle=0.00
[22:13:09] [BRIDGE] Passing 2 history turns to reconnected session for Kim
[22:13:09] [GEMINI_MIC_QUEUE] Correct STT session requested for handle=17999875; PCM queues until ready.
[22:13:09] [SCENE_PLAYER_MIC_START] target=B sourceTurn=0; next scene turn held until transcript final.
[22:13:09] [VISION_CAPTURE_OK] trigger=mic_start src=2560x1440 scaled=512x512 jpegBytes=25910 base64Chars=34548
[22:13:09] [SCENE_PLAYER_MIC_AUDIO_PRESERVE] Current NPC scene PCM/lipsync left untouched during STT-only interruption.
[22:13:09] [GEMINI_MIC_DEVICE] device 0 "Mic/Inst/Line In 1/2 (Studio 26" of 2
[22:13:09] [GEMINI_MIC_CAPTURE_START] turn=5 live 40ms streaming active.
[22:13:09] [BRIDGE] Gemini Live session ready for NPC handle 17999875. session=2
[22:13:09] [VISION_SEND_REQUEST] trigger=mic_start visionId=9 base64Chars=34548 session=2/0
[22:13:09] [GEMINI_MIC_STREAM_START] turn=5 contextChars=165
[22:13:09] [SCENE_PLAYER_STT_TURN_START] micTurn=5; current scene PCM/overlay preserved.
[22:13:09] [GEMINI_MIC_STATUS] turn=5 status=started
[22:13:09] [VISION_STATUS] trigger=mic_start visionId=9 status=sent stage=gemini_send base64Chars=34548 imageBytes=25910 reason=csharp_request
[22:13:10] [GEMINI_MIC_STREAM_END] turn=5 chunks=25 bytes=32000 discarded=False
[22:13:10] [GEMINI_MIC_CAPTURE_STOP] turn=5 queuedBytes=32000
[22:13:10] [GEMINI_MIC_STATUS] turn=5 status=audio-ended
[22:13:10] [GEMINI_STT_DELTA] turn=5 chars=3
[22:13:11] [SPATIAL_AUDIO] speaker=17999875 dist=47.7 pan=0.78 gainL=0.00 gainR=0.00 cutoff=3603 occluded=False facing=0.00 cabinMuffle=0.00
[22:13:13] [AUTO_WORLD_EVENT_DISTANCE_RECOVERED] distance=45.0
[22:13:14] [SCENE_AUDIO_SERVER_REPORT] npc=A turn=1 serverChunks=191 serverBytes=410880 dropped=0 forwardErrors=0 localChunks=191 localBytes=410880 rms=0.290445 reason=OK textChars=155
[22:13:14] [SCENE_AUDIO_RELEASE] npc=A turn=1 chunks=191 bytes=410880 reason=OK
[22:13:14] [SCENE_AUDIO_OK] npc=A turn=1 attempt=1 chunks=191/191 bytes=410880 rms=0.290445 bufferedMs=0 outputRunning=True serverReason=OK
[22:13:14] [SCENE_REPLY] Kim: You are not walking away until every cent of this meter is settled; that detour was unavoidable due to the construction, and you know that.
[22:13:14] [EAVESDROP] 1 bystander(s) within 5m heard: [Kim] You are not walking away until every cent of this mete
[22:13:14] Chat ended. NPC: none | History turns: 0
[22:13:14] [BRIDGE_WARM_HOLD] Keeping Gemini session warm for 30000ms. session=2 npc=17999875
[22:13:14] [SCENE_AUDIO_DRAINED] waitedMs=500 emptyPolls=5 bufferedMs=0
[22:13:16] [SCENE_PLAYER_MIC_START] target=B sourceTurn=1; next scene turn held until transcript final.
[22:13:16] [VISION_CAPTURE_OK] trigger=mic_start src=2560x1440 scaled=512x512 jpegBytes=31993 base64Chars=42660
[22:13:16] [SCENE_PLAYER_MIC_AUDIO_PRESERVE] Current NPC scene PCM/lipsync left untouched during STT-only interruption.
[22:13:16] [GEMINI_MIC_DEVICE] device 0 "Mic/Inst/Line In 1/2 (Studio 26" of 2
[22:13:16] [VISION_SEND_REQUEST] trigger=mic_start visionId=10 base64Chars=42660 session=2/0
[22:13:16] [GEMINI_MIC_STREAM_START] turn=6 contextChars=165
[22:13:16] [GEMINI_MIC_CAPTURE_START] turn=6 live 40ms streaming active.
[22:13:16] [GEMINI_MIC_STATUS] turn=6 status=duplicate-start-ignored
[22:13:16] [VISION_STATUS] trigger=mic_start visionId=10 status=sent stage=gemini_send base64Chars=42660 imageBytes=31993 reason=csharp_request
[22:13:16] [GEMINI_MIC_STALE_IGNORED] turn=5 active=6 snapshotNpc=17999875 currentNpc=0
[22:13:16] [DIRECT_TURN_STALE_IGNORED] session=2/2 turn=5/6
[22:13:17] [GEMINI_MIC_CAPTURE_STOP] turn=6 queuedBytes=28800
[22:13:17] [GEMINI_MIC_STREAM_END] turn=6 chunks=23 bytes=28800 discarded=False
[22:13:17] [GEMINI_MIC_DELIVERED] transcriptChars=0 npc=Kim
[22:13:17] [GEMINI_MIC_STATUS] turn=6 status=stale-end-ignored
[22:13:30] [GEMINI_STT_TIMEOUT] turn=5 no final input transcript within 20s.
[22:13:30] [SCENE TURN 2] Nickels responding...
[22:13:30] [SCENE_AUDIO_PREBUFFER] npc=B turn=2 targetMs=700
[22:13:30] [SCENE_AUDIO_REQUEST] npc=B turn=2 attempt=1 textChars=6121
[22:13:30] [SCENE_AUDIO_TURN_START] turn=2 expected=2 flags preserved.
[22:13:31] [DIRECT_CHAT_BLOCKED] Could not claim NPC 18173187; an existing reply/session still owns the bridge.
[22:13:31] [SCENE_ACTION_RECEIVED] npc=B action=SCENECONTINUE
[22:13:31] [LIPSYNC] StartLipSync -> ped 19179267 | duration=20000ms
[22:13:31] [BRIDGE_LIPSYNC] Audio-driven LipSync started on first PCM chunk for ped 19179267 | duration=20000ms
[22:13:31] [SPATIAL_AUDIO] speaker=19179267 dist=14.4 pan=0.81 gainL=0.03 gainR=0.09 cutoff=9757 occluded=False facing=1.00 cabinMuffle=0.00
[22:13:33] [AUTO_WORLD_EVENT_MANDATORY_DUE] Thirty-second deadline reached. Scenario is queued and will start at the first safe gameplay window.
[22:13:34] [UI] Soft release conversation: Release key pressed
[22:13:34] [AUTO_WORLD_EVENT_ENDING] Scene ended.
[22:13:34] [AUTO_WORLD_EVENT_END] Ambient scene ended without report-back; both peds released.
[22:13:34] [BRIDGE] endSceneSession sent — both NPC sessions closing.
[22:13:34] [SCENARIO_CACHE_RETURN_REQUEST] reason=scene ended after 1 turn(s)
[22:13:34] [NEGOTIATION_LEDGER_CLEARED] Completed scene cannot contaminate the next mission contract.
[22:13:34] [AUTO_WORLD_EVENT_MANDATORY_WAIT] Deadline scenario queued; waiting for safe window. reason=WAITING_REPLY
[22:13:34] [SCENE_STALE_TURN_ABORT] npc=B turn=2 cancelled while awaiting Gemini.
[22:13:34] [SCENE_LIVE_ONLY_RETRY] turn=1; noPcmCycles=1; waiting for Gemini Live PCM. No REST/TTS fallback.
[22:13:34] [SPATIAL_AUDIO] speaker=19179267 dist=13.3 pan=0.13 gainL=0.07 gainR=0.07 cutoff=9912 occluded=False facing=0.99 cabinMuffle=0.00
[22:13:35] [DIRECT_CHAT_BLOCKED] Could not claim NPC 18173187; an existing reply/session still owns the bridge.
[22:13:37] [SPATIAL_AUDIO] speaker=19179267 dist=8.4 pan=0.12 gainL=0.10 gainR=0.11 cutoff=10690 occluded=False facing=1.00 cabinMuffle=0.00
[22:13:40] [AUTO_NPC_INCIDENT_QUEUED] reason=personal_space ped=18173187 priority=54 pending=1
[22:13:40] [SPATIAL_AUDIO] speaker=19179267 dist=0.9 pan=0.72 gainL=0.15 gainR=0.37 cutoff=6851 occluded=False facing=0.29 cabinMuffle=0.00
[22:13:43] [SPATIAL_AUDIO] speaker=19179267 dist=6.6 pan=0.04 gainL=0.08 gainR=0.08 cutoff=5698 occluded=False facing=0.01 cabinMuffle=0.00
[22:13:46] [SPATIAL_AUDIO] speaker=19179267 dist=11.7 pan=-0.02 gainL=0.05 gainR=0.05 cutoff=5283 occluded=False facing=0.00 cabinMuffle=0.00
[22:13:49] [AUTO_WORLD_EVENT_MANDATORY_WAIT] Deadline scenario queued; waiting for safe window. reason=WAITING_REPLY
[22:13:49] [SPATIAL_AUDIO] speaker=19179267 dist=21.1 pan=-0.03 gainL=0.03 gainR=0.03 cutoff=4523 occluded=False facing=0.00 cabinMuffle=0.00
[22:13:52] [SPATIAL_AUDIO] speaker=19179267 dist=29.6 pan=-0.16 gainL=0.02 gainR=0.02 cutoff=3834 occluded=False facing=0.00 cabinMuffle=0.00
[22:13:55] [SPATIAL_AUDIO] speaker=19179267 dist=39.6 pan=-0.10 gainL=0.01 gainR=0.01 cutoff=3032 occluded=False facing=0.00 cabinMuffle=0.00
=== LivingLSAIs Session Log Started: 08.08.2026 22:08:44 ===
Scripts dir: E:\Steam\steamapps\common\Grand Theft Auto V\scripts\LLAI SERVER
Session log : E:\Steam\steamapps\common\Grand Theft Auto V\scripts\LLAI SERVER\LLAIsession.log
Crash report: E:\Steam\steamapps\common\Grand Theft Auto V\scripts\LLAI SERVER\LLAIcrashreport.log
[22:11:11] Securoserve Guard (Male): Hey man, you mind? Tryna make a damn phone call here, and you're kinda hanging right behind me.
[22:11:16] Securoserve Guard (Male): Damn, son, back up a little. You're practically kissing me, damn.
[22:11:31] Player: Yo, bop.
[22:11:31] Securoserve Guard (Male): You want another piece, wise ass? Last time was all space. Now you're all up in my business again.
[22:11:41] Player: Who the fuck are you talking about, Bob?
[22:11:41] Securoserve Guard (Male): I'm talking about you, dumbass. Quit acting like you don't know why you're crowding me.
[22:11:57] Player: What?
[22:11:57] Securoserve Guard (Male): You heard me, prick. Stop feigning ignorance and move on before I make you. Got actual business to handle here.
[22:12:06] Player: You fucking forgot who you're working to? You're working on me, motherfucker.
[22:12:06] Securoserve Guard (Male): You think I work for you? You're out of your damn mind, dumbass. I look like a servant to you? Piss off, freak.
[22:12:13] Securoserve Guard (Male): Whoa, whoa, okay! I was off base, seriously! Take it easy, I'm just a Securoserve Guard (Male), damn, you proved your point, prick!
[22:12:21] Securoserve Guard (Male): Goddamn, okay! I see the heat you're packing, saw you blasting earlier, asshole! Just keep that pistol away from me, man, I get it!
[22:13:14] Kim: You are not walking away until every cent of this meter is settled; that detour was unavoidable due to the construction, and you know that.
[22:13:14] Kim: [Kim] You are not walking away until every cent of this meter is settled; that detour was unavoidable due to the construction, and you know that.
I'm having trouble with version 4.4. The mod works fine in version 4.3, but in 4.4, when I enter the game, the menu doesn't appear, nor does any message in the bottom-left corner above the map—things that appear and work correctly in 4.3. I opened the Nibs menu and the mod is there, but the menu won't open, and neither the microphone button nor the text button works; nothing is functioning. Please help me; I'm a huge fan of this amazing mod.
Hello this mod is incredible but i a, having an issue sometimes the gvta crashes and dont know the reason
@Torunas Update your script hookv dotnet nightly
@AlanPlay If the game is crashing, please provide the crash log and your system/mod setup before assuming that LLAI is the cause.
The mod itself does not automatically mean every crash you experience is caused by it. GTA V has many possible causes for crashes, especially with other scripts, mods, ScriptHook versions, game files, or system issues.
Also, the included README already contains installation and troubleshooting instructions.
I completely understand reporting a genuine issue, but giving a reduced rating because of an unverified crash without providing any log or evidence isn't really a fair way to evaluate the mod.
If you provide the crash details/log, I'll be happy to investigate it.
@xeisenberg Never ignore the README — especially when it already contains the complete installation guide and troubleshooting steps.
You guys skipped the README and then came here asking questions that are already answered there. I’ve put a lot of effort into making the installation as clear and easy as possible.
And honestly, seeing the mod’s rating go down because the README wasn’t even checked first is pretty rough.
Please read the README before assuming there’s an issue with the mod or rating it down for something that’s already explained there.
One of the best free mods, really impressed with the radio adverts feature. I have two requests for future updates... could you reduce the time it takes for NPCs to react to you looking/facing at them (they get agitated and angry within seconds) and also if you could add a feature that could detect companion scripts ( like Forever together by Dealien the Alien or Playercompanion by HKH191 is installed)
@THarveyKam thanks and I will do that
[18:28:56] Player: Yo. Hi. How much for I mean how much do one hotels?
[18:28:56] Kwame: [OPENWINDOW] Hotels around here? Man, I ain't a tour guide, I got places to be. Shit, you probably got more cash than me anyway, judgin' by those supercars I saw earlier.
[18:29:17] Player: Yo, you're a taxi. Premium taxi actually. So, how much?
[18:29:17] Kwame: [OPENWINDOW] Taxi? Dickhead, I ain't drivin' no damn taxi. Just 'cause the ride's clean don't mean I'm for hire, man. You got me mixed up.
[18:29:43] Player: What the fuck are you talking about? You're got the label of taxi, idiot.
[18:29:43] Kwame: [OPENWINDOW] Yeah, yeah, it says taxi, asshole. Don't mean I'm working for your idiot self. Get lost.
[18:30:07] Player: What the fuck are you talking about? I'm gonna crash your fucking rating. You got it?
[18:30:07] Kwame: [OPENWINDOW] Crash my rating? What damn rating, prick? I told you, I ain't no cabbie. You wanna keep yappin', I'll show you a rating adjustment.
[18:30:27] Player: Yeah, show me fucking bacon.
[18:30:27] Kwame: [OPENWINDOW] Bacon? What the hell are you even talking about now, you freak? Keep runnin' your mouth and the only thing you'll be seeing is the pavement.
[18:30:40] Player: You're moron. I said big.
[18:30:40] Kwame: [OPENWINDOW] Big? You're a damn moron for standing here yapping, dickhead. Beat it before I run your big mouth over.
[18:30:50] Player: You're a dickhead moron. I said pig. You're a fucking idiot.
[18:30:50] Kwame: Pig? You calling me po-po, asshole? Say that shit again, see what happens. Back the hell off my window before you really learn what's up.
[18:31:01] Player: I say again, pig.
[18:31:01] Kwame: Told you what happened, dickhead!
[18:31:08] Kwame: [STOPSHOOTING][AIMWITHGUN] Yeah, sure what, asshole? Think you can push regular folks around and not get fucked up? Now get your ass outta here before I empty the clip for real.
[18:32:20] Player: I'm going to go to the store.
[18:32:20] Orson: [OPENWINDOW] Oh shit, man... you're just walking after that? I'm literally just sitting here waiting.
[18:32:40] Player: You got it? Go back to your fucking hospital.
[18:32:40] Orson: Fuck... okay, whatever you say. I'm getting out of here.
[18:34:12] Player: Yo, what's up? Yo, what's up?
[18:34:12] Zuri: Hey, not much, just trying to get some cardio in. Damn, that Cheetah yours? Sweet ride.
[18:34:20] Player: Where do you see cheetah
[18:34:20] Zuri: Uh, weren't you just drivin' that thing? Must be parked around here somewhere, dickhead.
[18:34:35] Player: Why did you fucking call me dickhead?
[18:34:35] Zuri: Chill, man, don't get all pissy. Just saying, you literally just got out of that Cheetah and already lost it.
[18:34:54] Player: Why Why the fuck did you get it from?
[18:34:54] Zuri: The fuck are you even asking? I saw you driving it, period. What's the problem?
[18:35:09] Player: No, you didn't. Don't fucking lie to me.
[18:35:09] Zuri: Dude, I ain't lying. I saw you park it like an hour ago. You high or something?
[18:35:23] Player: Oh yeah. So and where did did they park it? medium
[18:35:23] Zuri: It's right around the block from here. What the hell you talkin' about 'medium', you high again?
[18:35:34] Player: Yeah, I think you are.
[18:35:34] Zuri: Whatever man, I'm just trying to get my damn run in. You want your car back, just head that way.
[18:35:47] Player: I don't know what car you talking about.
[18:35:47] Zuri: The purple Cheetah you were just drivin', asshole. Whatever, play stupid.
[18:36:01] Player: I don't have any purple cheetahs.
[18:36:01] Zuri: Oh shit, my bad, maybe it wasn't purple. Still saw you in a damn Cheetah though, prick.
[18:35:47] [BRIDGE_EARLY_ACTION_STRIP] Removed already-fired tags from final reply. beforeChars=93 afterChars=73
[18:35:47] [LIPSYNC_STOPPED] ped=12405520 bufferMs=0
[18:35:49] [SPATIAL_AUDIO] speaker=12405520 dist=4.4 pan=0.06 gainL=0.13 gainR=0.14 cutoff=8322 occluded=False facing=0.06 cabinMuffle=0.00
[18:35:50] [VISION_CAPTURE_OK] trigger=mic_start src=2560x1440 scaled=512x512 jpegBytes=18715 base64Chars=24956
[18:35:50] [GEMINI_MIC_DEVICE] device 0 "Mic/Inst/Line In 1/2 (Studio 26" of 2
[18:35:50] [VISION_SEND_REQUEST] trigger=mic_start visionId=24 base64Chars=24956 session=3/0
[18:35:50] [GEMINI_MIC_STREAM_START] turn=20 contextChars=4241
[18:35:50] [GEMINI_MIC_CAPTURE_START] turn=20 live 40ms streaming active.
[18:35:50] [GEMINI_MIC_STATUS] turn=20 status=started
[18:35:50] [VISION_STATUS] trigger=mic_start visionId=24 status=sent stage=gemini_send base64Chars=24956 imageBytes=18715 reason=csharp_request
[18:35:52] [GEMINI_MIC_STREAM_END] turn=20 chunks=55 bytes=70400 discarded=False
[18:35:52] [GEMINI_MIC_CAPTURE_STOP] turn=20 queuedBytes=70400
[18:35:52] [GEMINI_MIC_STATUS] turn=20 status=audio-ended
[18:35:52] [SPATIAL_AUDIO] speaker=12405520 dist=4.1 pan=0.31 gainL=0.12 gainR=0.17 cutoff=8256 occluded=False facing=0.02 cabinMuffle=0.00
[18:35:52] [GEMINI_STT_DELTA] turn=20 chars=33
[18:35:55] [SPATIAL_AUDIO] speaker=12405520 dist=4.1 pan=0.30 gainL=0.12 gainR=0.17 cutoff=8257 occluded=False facing=0.02 cabinMuffle=0.00
[18:35:56] [BRIDGE_EARLY_ACTION] Fired [SHAKEHEAD] from Gemini streaming text immediately — no turnComplete/audio-end wait.
[18:35:56] [LIPSYNC] StartLipSync -> ped 12405520 | duration=12000ms
[18:35:56] [BRIDGE_LIPSYNC] Audio-driven LipSync started on first PCM chunk for ped 12405520 | duration=12000ms
[18:35:56] [BODYTAG_ANIM_QUEUED] tag=TALK_GESTURE ped=12405520 dict=gestures@f@standing@casual clip=gesture_convo_point duration=1850 flags=49 loadedNow=True
[18:35:56] [BODYTAG_ANIM_PLAYED] tag=TALK_GESTURE ped=12405520 dict=gestures@f@standing@casual clip=gesture_convo_point verifiedPlaying=False reason=NATIVE_SENT_BUT_VERIFY_FALSE_NEXT_FRAME_MAY_STILL_START
[18:35:56] [BRIDGE_EARLY_ACTION] Processed immediate tag packet while Gemini reply is still streaming; _waitingReply preserved.
[18:35:56] [BODYTAG_DETECTED] SHAKEHEAD from reply lowerChars=11 uiChars=0
[18:35:56] [EXPLICIT_BODYTAG_QUEUED] tag=SHAKEHEAD ped=12405520 dict=gestures@f@standing@casual clip=gesture_convo_disagree duration=1400
[18:35:56] [BODYTAG_ISSUED] SHAKEHEAD ped=12405520 reason=QUEUED_SHAKEHEAD_GESTURE
[18:35:56] [EXPLICIT_BODYTAG_PLAYED] tag=SHAKEHEAD ped=12405520 dict=gestures@f@standing@casual clip=gesture_convo_disagree reason=FIFO_MAIN_THREAD_SENT
[18:35:58] [SPATIAL_AUDIO] speaker=12405520 dist=4.4 pan=0.05 gainL=0.13 gainR=0.14 cutoff=8316 occluded=False facing=0.06 cabinMuffle=0.00
[18:35:59] [BODYTAG_ANIM_QUEUED] tag=TALK_GESTURE ped=12405520 dict=gestures@f@standing@casual clip=gesture_convo_feel_strongly duration=1850 flags=49 loadedNow=True
[18:35:59] [BODYTAG_ANIM_PLAYED] tag=TALK_GESTURE ped=12405520 dict=gestures@f@standing@casual clip=gesture_convo_feel_strongly verifiedPlaying=False reason=NATIVE_SENT_BUT_VERIFY_FALSE_NEXT_FRAME_MAY_STILL_START
[18:36:01] [GEMINI_STT_FINAL] turn=20 chars=33 text="I don't have any purple cheetahs."
[18:36:01] [GEMINI_MIC_DELIVERED] transcriptChars=33 npc=Zuri
[18:36:01] [DIRECT_LIPSYNC_STOP_ARMED] ped=12405520 remainingPcm=0ms stopAfter=700ms
[18:36:01] [BRIDGE_EARLY_ACTION_STRIP] Removed already-fired tags from final reply. beforeChars=112 afterChars=87
[18:36:01] [LIPSYNC_STOPPED] ped=12405520 bufferMs=0
[18:36:01] [SPATIAL_AUDIO] speaker=12405520 dist=4.4 pan=0.04 gainL=0.13 gainR=0.14 cutoff=8317 occluded=False facing=0.06 cabinMuffle=0.00
[18:36:02] [VISION_CAPTURE_OK] trigger=mic_start src=2560x1440 scaled=512x512 jpegBytes=19911 base64Chars=26548
[18:36:02] [GEMINI_MIC_DEVICE] device 0 "Mic/Inst/Line In 1/2 (Studio 26" of 2
[18:36:02] [VISION_SEND_REQUEST] trigger=mic_start visionId=25 base64Chars=26548 session=3/0
[18:36:02] [GEMINI_MIC_STREAM_START] turn=21 contextChars=4241
[18:36:02] [GEMINI_MIC_CAPTURE_START] turn=21 live 40ms streaming active.
[18:36:02] [VISION_STATUS] trigger=mic_start visionId=25 status=sent stage=gemini_send base64Chars=26548 imageBytes=19911 reason=csharp_request
[18:36:02] [GEMINI_MIC_STATUS] turn=21 status=started
[18:36:03] [GEMINI_MIC_CAPTURE_STOP] turn=21 queuedBytes=60800
[18:36:03] [GEMINI_MIC_STREAM_END] turn=21 chunks=48 bytes=60800 discarded=False
[18:36:03] [GEMINI_MIC_STATUS] turn=21 status=audio-ended
[18:36:04] [GEMINI_STT_DELTA] turn=21 chars=17
[18:36:04] [SPATIAL_AUDIO] speaker=12405520 dist=4.4 pan=0.04 gainL=0.13 gainR=0.14 cutoff=8317 occluded=False facing=0.06 cabinMuffle=0.00
[18:36:07] [SPATIAL_AUDIO] speaker=12405520 dist=4.4 pan=0.04 gainL=0.13 gainR=0.14 cutoff=8317 occluded=False facing=0.06 cabinMuffle=0.00
[18:36:10] [SPATIAL_AUDIO] speaker=12405520 dist=4.4 pan=0.04 gainL=0.13 gainR=0.14 cutoff=8317 occluded=False facing=0.06 cabinMuffle=0.00
[18:36:13] [SPATIAL_AUDIO] speaker=12405520 dist=4.4 pan=0.04 gainL=0.13 gainR=0.14 cutoff=8318 occluded=False facing=0.06 cabinMuffle=0.00
[18:36:16] [SPATIAL_AUDIO] speaker=12405520 dist=4.4 pan=0.04 gainL=0.13 gainR=0.14 cutoff=8318 occluded=False facing=0.06 cabinMuffle=0.00
[18:36:19] [SPATIAL_AUDIO] speaker=12405520 dist=4.4 pan=0.04 gainL=0.13 gainR=0.14 cutoff=8318 occluded=False facing=0.06 cabinMuffle=0.00
[18:36:20] [DIRECT_CHAT_BLOCKED] Could not claim NPC 12405520; an existing reply/session still owns the bridge.
[18:36:21] [UI] Soft release conversation: Release key pressed
[18:36:21] [MIC_RESET_SENT] asked the bridge to drop any half-finished mic turn.
[18:36:21] [AUTO_CONVO_PRE_QUIET] armed 12s global / 30s per-ped before release.
[18:36:21] [POST_CHAT_AUTO_QUIET] ped=12405520 npcCooldown=30000ms globalQuiet=12000ms
[18:36:21] Chat ended. NPC: Zuri | History turns: 13
[18:36:21] [MEMORY_V2] Queued save for Zuri | turns:13 | special:False
[18:36:21] [BRIDGE_WARM_HOLD] Keeping Gemini session warm for 30000ms. session=3 npc=12405520
[18:36:21] [LIPSYNC_STOPPED] ped=12405520 bufferMs=0
[18:36:21] [MEMORY_V2] Saved: E:\Steam\steamapps\common\Grand Theft Auto V\scripts\LLAI SERVER\NPC_MEMORIES\1583988826_1363763268.json | score=0 friend=False convos=1
[18:36:21] [GEMINI_MIC_STATUS] turn=21 status=force-released
[18:36:21] [DIRECT_NEGOTIATION_LEDGER_RESET] New direct chat; mission chronology and target roster will lock independently.
[18:36:21] [MEMORY_ROLLOVER] Zuri score=0 friend=False convos=2 memoryChars=483
[18:36:21] [BRIDGE_PREWARM_HIT] Reusing ready Gemini session for Zuri (12405520).
[18:36:21] [VISION_CAPTURE_OK] trigger=chat_open_initial src=2560x1440 scaled=512x512 jpegBytes=17018 base64Chars=22692
[18:36:21] [VISION_SEND_REQUEST] trigger=chat_open_initial visionId=26 base64Chars=22692 session=3/0
[18:36:21] [VISION_CAPTURE_OK] trigger=mic_start src=2560x1440 scaled=512x512 jpegBytes=17018 base64Chars=22692
[18:36:21] [GEMINI_MIC_DEVICE] device 0 "Mic/Inst/Line In 1/2 (Studio 26" of 2
[18:36:21] [VISION_SEND_REQUEST] trigger=mic_start visionId=27 base64Chars=22692 session=3/0
[18:36:21] [GEMINI_MIC_STREAM_START] turn=22 contextChars=2296
[18:36:21] [GEMINI_MIC_CAPTURE_START] turn=22 live 40ms streaming active.
[18:36:21] [DIRECT_CHAT_QUEUE] Mic recording started immediately for NPC 12405520; Gemini may connect in background.
[18:36:21] [VISION_STATUS] trigger=chat_open_initial visionId=26 status=sent stage=gemini_send base64Chars=22692 imageBytes=17018 reason=csharp_request
[18:36:21] [VISION_STATUS] trigger=mic_start visionId=27 status=sent stage=gemini_send base64Chars=22692 imageBytes=17018 reason=csharp_request
[18:36:21] [GEMINI_MIC_STATUS] turn=22 status=started
[18:36:21] [IDENTITY_NEW] handle=6238737 fp=534725268:0:0:0:0 -> id=176783415
[18:36:21] [IDENTITY_NEW] handle=17472528 fp=1371553700:0:1:2:0 -> id=562786860
[18:36:21] [IDENTITY_NEW] handle=13972752 fp=933092024:0:1:1:0 -> id=1758625099
[18:36:21] [IDENTITY_NEW] handle=2319121 fp=70821038:0:0:0:0 -> id=4296128
[18:36:21] [IDENTITY_NEW] handle=9810449 fp=933092024:0:0:1:0 -> id=1757701578
[18:36:21] [IDENTITY_NEW] handle=11268625 fp=-1047300121:0:0:2:0 -> id=40636117
[18:36:21] [IDENTITY_NEW] handle=12774161 fp=1312913862:0:0:1:0 -> id=1988022758
[18:36:21] [IDENTITY_RELINK] handle=19145488 fp=-2109222095:0:1:1:0 -> id=970977016 (known face, memory preserved)
[18:36:21] [IDENTITY_RELINK] handle=6495761 fp=534725268:0:0:0:0 -> id=176783415 (known face, memory preserved)
[18:36:21] [IDENTITY_NEW] handle=12796433 fp=-1047300121:0:1:1:0 -> id=41558677
[18:36:21] [IDENTITY_NEW] handle=11819792 fp=1312913862:0:0:0:0 -> id=1988021797
[18:36:21] [IDENTITY_RELINK] handle=13197584 fp=1462895032:0:0:0:0 -> id=1285410115 (known face, memory preserved)
[18:36:21] [MEMORY_V2] Loaded memory for Cat (model=1462895032 id=1285410115) len=0
[18:36:21] [MEMORY_V3] Cat: 0 events, 0 grudges, 3 rumours
[18:36:21] [MEMORY_V2] Restored state for Cat: score=0, friend=False, convos=1
[18:36:21] [NPCTONPC_ROSTER_LOCKED] Stable numbered handles preserved for this direct chat; negotiation/payment cannot silently retarget slots.
[18:36:21] [NPCTONPC_ROSTER] count=12 1ST: Zeke | male human | You are connected to Vinewood culture. You care about status, image, nightlife, networking, appearances, and social reputation. | 7.5m | running | on foot || 2ND: Clementine | female human | East Los Santos local — grew up in the neighborhood, knows every block and face around here | 11.6m | running | on foot || 3RD: Anjali | female human | You are connected to Vinewood culture. You care about status, image, nightlife, networking, appearances, and social reputation. | 17.8m | waiting to cross the street | on foot || 4TH: Mercy | female human | East Los Santos local — grew up in the neighborhood, knows every block and face around here | 19.1m | running | on foot || 5TH: Harlow | female human | You are connected to Vinewood culture. You care about status, image, nightlife, networking, appearances, and social reputation. | 27.3m | running | on foot || 5TH: Jonah | male human | You are connected to Vinewood culture. You care about status, image, nightlife, networking, appearances, and social reputation. | 28.7m | sitting inside a vehicle | driving a vehicle || 5TH: Jozef | male human | You are part of the Los Santos hipster scene. You care about music, art, coffee, fashion, social causes, nightlife, and having opinions about culture. | 32.3m | sitting inside a vehicle | driving a vehicle || 5TH: Tessa | female human | You are part of the Los Santos hipster scene. You care about music, art, coffee, fashion, social causes, nightlife, and having opinions about culture. | 34.2m | running | on foot || 5TH: Zeke | male human | You are connected to Vinewood culture. You care about status, image, nightlife, networking, appearances, and social reputation. | 35.1m | standing still | on foot || 5TH: Ezequiel | male human | You are connected to Vinewood culture. You care about status, image, nightlife, networking, appearances, and social reputation. | 36.7m | sitting inside a vehicle | driving a vehicle || 5TH: Jin | male human | You are part of the Los Santos hipster scene. You care about music, art, coffee, fashion, social causes, nightlife, and having opinions about culture. | 42.4m | running | on foot || 5TH: Cat | male animal | Cat — a living animal, driven by instincts instead of human thoughts | 44.2m | standing still | on foot
[18:36:22] [SPATIAL_AUDIO] speaker=12405520 dist=4.8 pan=-0.08 gainL=0.15 gainR=0.14 cutoff=9136 occluded=False facing=0.33 cabinMuffle=0.00
[18:36:24] [GEMINI_STT_TIMEOUT] turn=21 no final input transcript within 20s.
[18:36:25] [GEMINI_MIC_CAPTURE_STOP] turn=22 queuedBytes=105600
[18:36:25] [GEMINI_MIC_STREAM_END] turn=22 chunks=83 bytes=105600 discarded=False
[18:36:25] [GEMINI_MIC_STATUS] turn=22 status=audio-ended
[18:36:25] [GEMINI_STT_DELTA] turn=22 chars=57
[18:36:25] [SPATIAL_AUDIO] speaker=12405520 dist=4.7 pan=0.14 gainL=0.14 gainR=0.16 cutoff=9202 occluded=False facing=0.34 cabinMuffle=0.00
[18:36:28] [SPATIAL_AUDIO] speaker=12405520 dist=4.8 pan=-0.02 gainL=0.15 gainR=0.14 cutoff=9334 occluded=False facing=0.39 cabinMuffle=0.00
[18:36:31] [SPATIAL_AUDIO] speaker=12405520 dist=4.8 pan=-0.02 gainL=0.15 gainR=0.14 cutoff=9334 occluded=False facing=0.39 cabinMuffle=0.00
[18:36:34] [SPATIAL_AUDIO] speaker=12405520 dist=4.8 pan=-0.02 gainL=0.15 gainR=0.14 cutoff=9334 occluded=False facing=0.39 cabinMuffle=0.00
[18:36:37] [SPATIAL_AUDIO] speaker=12405520 dist=4.8 pan=-0.02 gainL=0.15 gainR=0.14 cutoff=9334 occluded=False facing=0.39 cabinMuffle=0.00
[18:36:40] [SPATIAL_AUDIO] speaker=12405520 dist=4.8 pan=-0.02 gainL=0.15 gainR=0.14 cutoff=9333 occluded=False facing=0.39 cabinMuffle=0.00
[18:36:43] [SPATIAL_AUDIO] speaker=12405520 dist=4.4 pan=-0.01 gainL=0.18 gainR=0.18 cutoff=10988 occluded=False facing=0.89 cabinMuffle=0.00
[18:36:45] [GEMINI_STT_TIMEOUT] turn=22 no final input transcript within 20s.
[18:36:46] [SPATIAL_AUDIO] speaker=12405520 dist=3.8 pan=-0.02 gainL=0.19 gainR=0.19 cutoff=10085 occluded=False facing=0.59 cabinMuffle=0.00
[18:36:49] [SPATIAL_AUDIO] speaker=12405520 dist=3.1 pan=0.05 gainL=0.20 gainR=0.21 cutoff=9513 occluded=False facing=0.38 cabinMuffle=0.00
[18:36:51] [DIRECT_CHAT_BLOCKED] Could not claim NPC 12405520; an existing reply/session still owns the bridge.
[18:36:52] [SPATIAL_AUDIO] speaker=12405520 dist=3.0 pan=-0.13 gainL=0.21 gainR=0.19 cutoff=9194 occluded=False facing=0.28 cabinMuffle=0.00
[18:36:53] [UI] Soft release conversation: Release key pressed
[18:36:53] [MIC_RESET_SENT] asked the bridge to drop any half-finished mic turn.
[18:36:53] [AUTO_CONVO_PRE_QUIET] armed 12s global / 30s per-ped before release.
[18:36:53] [POST_CHAT_AUTO_QUIET] ped=12405520 npcCooldown=30000ms globalQuiet=12000ms
[18:36:53] Chat ended. NPC: Zuri | History turns: 1
[18:36:53] [MEMORY_V2] Queued save for Zuri | turns:1 | special:False
[18:36:53] [BRIDGE_WARM_HOLD] Keeping Gemini session warm for 30000ms. session=3 npc=12405520
[18:36:53] [LIPSYNC_STOPPED] ped=12405520 bufferMs=0
[18:36:53] [MEMORY_V2] Saved: E:\Steam\steamapps\common\Grand Theft Auto V\scripts\LLAI SERVER\NPC_MEMORIES\1583988826_1363763268.json | score=0 friend=False convos=2
[18:36:53] [GEMINI_MIC_STATUS] turn=22 status=force-released
[18:36:53] [DIRECT_NEGOTIATION_LEDGER_RESET] New direct chat; mission chronology and target roster will lock independently.
[18:36:53] [MEMORY_ROLLOVER] Zuri score=0 friend=False convos=3 memoryChars=483
[18:36:53] [BRIDGE_PREWARM_HIT] Reusing ready Gemini session for Zuri (12405520).
[18:36:53] [VISION_CAPTURE_OK] trigger=chat_open_initial src=2560x1440 scaled=512x512 jpegBytes=19777 base64Chars=26372
[18:36:53] [VISION_SEND_REQUEST] trigger=chat_open_initial visionId=28 base64Chars=26372 session=3/0
[18:36:53] [VISION_CAPTURE_OK] trigger=mic_start src=2560x1440 scaled=512x512 jpegBytes=19777 base64Chars=26372
[18:36:53] [GEMINI_MIC_DEVICE] device 0 "Mic/Inst/Line In 1/2 (Studio 26" of 2
[18:36:53] [VISION_SEND_REQUEST] trigger=mic_start visionId=29 base64Chars=26372 session=3/0
[18:36:53] [GEMINI_MIC_STREAM_START] turn=23 contextChars=2296
[18:36:53] [GEMINI_MIC_CAPTURE_START] turn=23 live 40ms streaming active.
[18:36:53] [DIRECT_CHAT_QUEUE] Mic recording started immediately for NPC 12405520; Gemini may connect in background.
[18:36:53] [VISION_STATUS] trigger=chat_open_initial visionId=28 status=sent stage=gemini_send base64Chars=26372 imageBytes=19777 reason=csharp_request
[18:36:53] [VISION_STATUS] trigger=mic_start visionId=29 status=sent stage=gemini_send base64Chars=26372 imageBytes=19777 reason=csharp_request
[18:36:53] [GEMINI_MIC_STATUS] turn=23 status=started
[18:36:53] [IDENTITY_RELINK] handle=11355153 fp=-88831029:0:1:2:0 -> id=528428344 (known face, memory preserved)
[18:36:53] [NPCTONPC_ROSTER_LOCKED] Stable numbered handles preserved for this direct chat; negotiation/payment cannot silently retarget slots.
[18:36:53] [NPCTONPC_ROSTER] count=3 1ST: Harlow | female human | You are connected to Vinewood culture. You care about status, image, nightlife, networking, appearances, and social reputation. | 24.5m | running | on foot || 2ND: Anjali | female human | You are connected to Vinewood culture. You care about status, image, nightlife, networking, appearances, and social reputation. | 33.9m | walking | on foot || 3RD: Paige | female human | LS local woman — living her life, has her own story, not interested in yours unless you earn it | 38.5m | walking while holding a phone | on foot
[18:36:55] [GEMINI_MIC_CAPTURE_STOP] turn=23 queuedBytes=54400
[18:36:55] [GEMINI_MIC_STATUS] turn=23 status=audio-ended
[18:36:55] [GEMINI_MIC_STREAM_END] turn=23 chunks=43 bytes=54400 discarded=False
[18:36:55] [GEMINI_STT_DELTA] turn=23 chars=9
[18:36:55] [SPATIAL_AUDIO] speaker=12405520 dist=3.4 pan=0.26 gainL=0.16 gainR=0.20 cutoff=8999 occluded=False facing=0.23 cabinMuffle=0.00
[18:36:58] [SPATIAL_AUDIO] speaker=12405520 dist=2.7 pan=0.79 gainL=0.10 gainR=0.29 cutoff=9138 occluded=False facing=0.25 cabinMuffle=0.00
[18:37:01] [SPATIAL_AUDIO] speaker=12405520 dist=3.0 pan=0.75 gainL=0.10 gainR=0.27 cutoff=9107 occluded=False facing=0.25 cabinMuffle=0.00
[18:37:04] [LOCATION_UPDATE] Мильтон-роуд, West Vinewood
[18:37:04] [SPATIAL_AUDIO] speaker=12405520 dist=4.2 pan=0.34 gainL=0.14 gainR=0.19 cutoff=9737 occluded=False facing=0.49 cabinMuffle=0.00
[18:37:07] [SPATIAL_AUDIO] speaker=12405520 dist=5.6 pan=0.04 gainL=0.12 gainR=0.13 cutoff=9097 occluded=False facing=0.35 cabinMuffle=0.00
[18:37:10] [SPATIAL_AUDIO] speaker=12405520 dist=4.0 pan=-0.18 gainL=0.22 gainR=0.18 cutoff=11229 occluded=False facing=0.96 cabinMuffle=0.00
[18:37:12] [LOCATION_UPDATE] Спэниш-авеню, West Vinewood
[18:37:13] [SPATIAL_AUDIO] speaker=12405520 dist=5.6 pan=-0.11 gainL=0.14 gainR=0.12 cutoff=9514 occluded=False facing=0.48 cabinMuffle=0.00
[18:37:15] [GEMINI_STT_TIMEOUT] turn=23 no final input transcript within 20s.
[18:37:16] [SPATIAL_AUDIO] speaker=12405520 dist=6.2 pan=0.14 gainL=0.11 gainR=0.12 cutoff=9156 occluded=False facing=0.39 cabinMuffle=0.00
NPC stopped responding while dialogue.
[18:43:52] [WORLD_EVENT] Opening intent: "Accuse the finder of withholding personal property." | fallback line: "I know you picked up my wallet off the ground just now."
[18:43:52] [WORLD_EVENT] NPC A: Mike (handle=19151123) | NPC B: Xavier (handle=10668819)
[18:43:52] [WORLD_EVENT_AI_JSON] Full AI Response:
{"schemaVersion":2,"venueType":"any","requirements":{"requiresCashier":false,"requiresAnimal":false,"requiresVehicle":false,"requiresIndoor":false,"requiresAtm":false,"requiresBench":false,"requiresTrashBin":false},"eventType":"lost_wallet_accusation","sceneDescription":"A heated dispute over a dropped leather wallet containing valuable identification.","setup":[{"tag":"SEARCH_GROUND","npc":"A","purpose":"social_activity","physicalReason":"Actor A is frantically scanning the floor for missing items.","dialogueFact":"Actor A lost a leather wallet during an accidental collision."},{"tag":"PROP","npc":"B","purpose":"evidence_holding","physicalReason":"Actor B is holding the recovered wallet in their palm.","dialogueFact":"Actor B picked up the dropped wallet from the pavement.","placement":"HAND","prop":"WALLET"}],"sceneConfig":{"openingIntent":"Accuse the finder of withholding personal property.","openingLine":"I know you picked up my wallet off the ground just now.","incidentBrief":"Actor B recovered Actor A's dropped wallet but refuses to hand it over without a cash reward.","backstory":"Actor A dropped their wallet while running for the bus, and Actor B scooped it up instantly.","stakes":"Loss of credit cards, driver license, and three hundred dollars in cash.","twist":"The wallet contains a stash of compromising photographs rather than money.","dangerLevel":"low","primaryEvidenceType":"PROP:WALLET","primaryEvidenceOwner":"B","physicalOpeningState":"Actor A is searching the ground while Actor B holds the contested wallet.","mood":"suspicious","behaviorA":"Desperate and accusatory.","behaviorB":"Opportunistic and calm.","relationshipDynamic":"Stranger confrontation over lost property.","maxExchanges":12},"cleanup":[]}
[18:43:52] [WORLD_EVENT_ACTION_OK] A SEARCH_GROUND reason=Actor A is frantically scanning the floor for missing items.
[18:43:52] [v4.4_MIND_CORE_ARMED] Action receipts, cognitive envelope, causal state, and continuity reset for new Gemini Live scene.
[18:43:52] [SCENE_LANGUAGE_LOCK] A=english B=english
[18:43:52] [SEARCH_LICENCE_SCENE] webSearch=False applied to scene prompts.
[18:43:52] [SCENE_PROMPT_CACHE] Main-thread prompts ready: A=4015 chars, B=3776 chars.
[18:43:52] [SCENE] Scene started: Mike vs Xavier
[18:43:52] [AUTO_WORLD_EVENT_DEADLINE_RESET] Unique AI scenario accepted; next mandatory deadline is 30s.
[18:43:52] [WORLD_EVENT] ✅ Scene started: Mike ↔ Xavier
[18:43:52] [BRIDGE] startSceneSession sent — A: Mike (Alnilam), B: Xavier (Zubenelgenubi)
[18:43:52] [SCENE] Gemini scene sessions initializing — waiting up to 6s...
[18:43:52] [WORLD_EVENT_PROP_ATTACHED] ped=10668819 model=ba_prop_battle_wallet_pickup object=752148
[18:43:52] [DEAD_BODY] Marked NPC 18880275 near body dist=41.3m zone=PBOX
[18:43:52] [RECYCLE_GUARD] Erased handle 777748 (exists:False, dead:False) instantly.
[18:43:53] [IDENTITY_RELINK] handle=17356307 fp=-1280051738:0:0:1:0 -> id=1060334206 (known face, memory preserved)
[18:43:53] [MEMORY_V3_GOSSIP] 'there was a killing in Центр — carrying a Пистолет' reached 3 more (hop 3, total 12)
[18:43:53] [BRIDGE] Gemini scene: both NPC sessions ready!
[18:43:53] [SCENE TURN 1] Mike responding...
[18:43:53] [SCENE_AUDIO_PREBUFFER] npc=A turn=4 targetMs=700
[18:43:53] [SCENE_AUDIO_REQUEST] npc=A turn=4 attempt=1 textChars=7540
[18:43:53] [SCENE_AUDIO_TURN_START] turn=4 expected=4 flags preserved.
[18:43:53] [RECYCLE_GUARD] Erased handle 836116 (exists:False, dead:False) instantly.
[18:43:54] [RECYCLE_GUARD] Erased handle 12244243 (exists:False, dead:False) instantly.
[18:43:54] [SCENE_ACTION_RECEIVED] npc=A action=SCENECONTINUE
[18:43:54] [LIPSYNC] StartLipSync -> ped 19151123 | duration=20000ms
[18:43:54] [BRIDGE_LIPSYNC] Audio-driven LipSync started on first PCM chunk for ped 19151123 | duration=20000ms
[18:43:54] [SPATIAL_AUDIO] speaker=19151123 dist=4.6 pan=0.75 gainL=0.05 gainR=0.13 cutoff=6311 occluded=False facing=0.83 cabinMuffle=0.67
[18:43:54] [DEAD_BODY] Marked NPC 701972 near body dist=49.0m zone=PBOX
[18:43:55] [RECYCLE_GUARD] Erased handle 1158164 (exists:False, dead:False) instantly.
[18:43:56] [DEAD_BODY] Marked NPC 1284116 near body dist=40.7m zone=PBOX
[18:43:57] [RECYCLE_GUARD] Erased handle 980500 (exists:False, dead:False) instantly.
[18:43:57] [DEAD_BODY] Marked NPC 1461524 near body dist=31.8m zone=PBOX
[18:43:57] [SPATIAL_AUDIO] speaker=19151123 dist=4.4 pan=0.09 gainL=0.14 gainR=0.16 cutoff=9002 occluded=False facing=0.27 cabinMuffle=0.00
[18:43:58] [RECYCLE_GUARD] Erased handle 14492435 (exists:False, dead:False) instantly.
[18:43:58] [DEAD_BODY] Marked NPC 1569044 near body dist=31.8m zone=PBOX
[18:43:59] [RECYCLE_GUARD] Erased handle 1569044 (exists:False, dead:False) instantly.
[18:43:59] [IDENTITY_RELINK] handle=701972 fp=2120901815:0:0:2:0 -> id=1091554122 (known face, memory preserved)
[18:43:59] [MEMORY_V3_GOSSIP_WRITE] 2120901815_1091554122.json <- "there was a killing in Центр — carrying a Пистолет" (hop 4)
[18:43:59] [MEMORY_V3_GOSSIP] 'there was a killing in Центр — carrying a Пистолет' reached 2 more (hop 4, total 14)
[18:44:00] [BRIDGE] Passing 2 history turns to reconnected session for Mike
[18:44:00] [GEMINI_MIC_QUEUE] Correct STT session requested for handle=19151123; PCM queues until ready.
[18:44:00] [SCENE_PLAYER_MIC_START] target=B sourceTurn=0; next scene turn held until transcript final.
[18:44:00] [VISION_CAPTURE_OK] trigger=mic_start src=2560x1440 scaled=512x512 jpegBytes=22420 base64Chars=29896
[18:44:00] [SCENE_PLAYER_MIC_AUDIO_PRESERVE] Current NPC scene PCM/lipsync left untouched during STT-only interruption.
[18:44:00] [GEMINI_MIC_DEVICE] device 0 "Mic/Inst/Line In 1/2 (Studio 26" of 2
[18:44:00] [GEMINI_MIC_CAPTURE_START] turn=28 live 40ms streaming active.
[18:44:00] [SCENE_AUDIO_SERVER_REPORT] npc=A turn=4 serverChunks=114 serverBytes=263040 dropped=0 forwardErrors=0 localChunks=114 localBytes=263040 rms=0.339058 reason=OK textChars=108
[18:44:00] [SCENE_AUDIO_RELEASE] npc=A turn=4 chunks=114 bytes=263040 reason=OK
[18:44:00] [SCENE_AUDIO_OK] npc=A turn=4 attempt=1 chunks=114/114 bytes=263040 rms=0.339058 bufferedMs=0 outputRunning=True serverReason=OK
[18:44:00] [SCENE_REPLY] Mike: I saw you grab that wallet off the pavement! You think nobody was looking? Give it back now!
[18:44:00] [EAVESDROP] 2 bystander(s) within 5m heard: [Mike] I saw you grab that wallet off the pavement! You thin
[18:44:00] [SPATIAL_AUDIO] speaker=19151123 dist=3.4 pan=0.00 gainL=0.20 gainR=0.20 cutoff=10034 occluded=False facing=0.55 cabinMuffle=0.00
[18:44:00] [BRIDGE] Gemini Live session ready for NPC handle 19151123. session=7
[18:44:00] [VISION_SEND_REQUEST] trigger=mic_start visionId=40 base64Chars=29896 session=7/0
[18:44:00] [GEMINI_MIC_STREAM_START] turn=28 contextChars=297
[18:44:00] [SCENE_PLAYER_STT_TURN_START] micTurn=28; current scene PCM/overlay preserved.
[18:44:00] [GEMINI_MIC_STATUS] turn=28 status=started
[18:44:00] [VISION_STATUS] trigger=mic_start visionId=40 status=sent stage=gemini_send base64Chars=29896 imageBytes=22420 reason=csharp_request
[18:44:00] [SCENE_AUDIO_DRAINED] waitedMs=500 emptyPolls=5 bufferedMs=0
[18:44:01] [DEAD_BODY] Marked NPC 17867795 near body dist=24.1m zone=PBOX
[18:44:02] [RECYCLE_GUARD] Erased handle 17867795 (exists:False, dead:False) instantly.
[18:44:02] [GEMINI_MIC_CAPTURE_STOP] turn=28 queuedBytes=64000
[18:44:02] [GEMINI_MIC_STREAM_END] turn=28 chunks=50 bytes=64000 discarded=False
[18:44:02] [GEMINI_MIC_STATUS] turn=28 status=audio-ended
[18:44:02] [GEMINI_STT_DELTA] turn=28 chars=17
[18:44:03] [DEAD_BODY] Marked NPC 2173204 near body dist=47.6m zone=PBOX
[18:44:03] [RECYCLE_GUARD] Erased handle 2201364 (exists:False, dead:False) instantly.
[18:44:03] [SPATIAL_AUDIO] speaker=19151123 dist=3.4 pan=-0.37 gainL=0.22 gainR=0.15 cutoff=9347 occluded=False facing=0.34 cabinMuffle=0.00
[18:44:04] [RECYCLE_GUARD] Erased handle 1869844 (exists:False, dead:False) instantly.
[18:44:05] [DEAD_BODY] Marked NPC 1440532 near body dist=44.3m zone=PBOX
[18:44:06] [SPATIAL_AUDIO] speaker=19151123 dist=2.2 pan=0.00 gainL=0.30 gainR=0.30 cutoff=10889 occluded=False facing=0.76 cabinMuffle=0.00
[18:44:07] [DEAD_BODY] Marked NPC 2563860 near body dist=6.6m zone=PBOX
[18:44:07] [RECYCLE_GUARD] Erased handle 2625300 (exists:False, dead:False) instantly.
[18:44:08] [DEAD_BODY] Marked NPC 2741524 near body dist=46.1m zone=PBOX
[18:44:09] [DIRECT_CHAT_BLOCKED] Could not claim NPC 19151123; an existing reply/session still owns the bridge.
[18:44:09] [RECYCLE_GUARD] Erased handle 2876948 (exists:False, dead:False) instantly.
[18:44:09] [SPATIAL_AUDIO] speaker=19151123 dist=2.4 pan=-0.08 gainL=0.30 gainR=0.28 cutoff=11338 occluded=False facing=0.91 cabinMuffle=0.00
[18:44:10] [DEAD_BODY] Marked NPC 20428819 near body dist=49.8m zone=PBOX
[18:44:10] [UI] Soft release conversation: Release key pressed
[18:44:10] [AUTO_WORLD_EVENT_ENDING] Scene ended.
[18:44:10] [AUTO_WORLD_EVENT_END] Ambient scene ended without report-back; both peds released.
[18:44:10] [BRIDGE] endSceneSession sent — both NPC sessions closing.
[18:44:10] [SCENARIO_CACHE_RETURN_REQUEST] reason=scene ended after 1 turn(s)
[18:44:10] [NEGOTIATION_LEDGER_CLEARED] Completed scene cannot contaminate the next mission contract.
[18:44:10] [AUTO_WORLD_EVENT_WAIT] Busy gameplay window; opportunistic 50% roll paused. reason=WAITING_REPLY
[18:44:10] [DIRECT_CHAT_BLOCKED] Could not claim NPC 19151123; an existing reply/session still owns the bridge.
[18:44:10] [GEMINI_MIC_STALE_IGNORED] turn=28 active=28 snapshotNpc=19151123 currentNpc=17844498
[18:44:10] [DIRECT_TURN_STALE_IGNORED] session=7/7 turn=28/28
[18:44:10] [GEMINI_MIC_DELIVERED] transcriptChars=0 npc=Mike
[18:44:11] [RECYCLE_GUARD] Erased handle 2199828 (exists:False, dead:False) instantly.
[18:44:12] [UI] Soft release conversation: Release key pressed
[18:44:12] [MIC_RESET_SENT] asked the bridge to drop any half-finished mic turn.
[18:44:12] [AUTO_CONVO_PRE_QUIET] armed 12s global / 30s per-ped before release.
[18:44:12] Chat ended. NPC: Yale | History turns: 7
[18:44:12] [MEMORY_V2] Queued save for Yale | turns:7 | special:False
[18:44:12] [BRIDGE_WARM_HOLD] Keeping Gemini session warm for 30000ms. session=7 npc=19151123
[18:44:12] [LIPSYNC_STOPPED] ped=17844498 bufferMs=0
[18:44:12] [MEMORY_V2] Saved: E:\Steam\steamapps\common\Grand Theft Auto V\scripts\LLAI SERVER\NPC_MEMORIES\2597531625_1342594065.json | score=0 friend=False convos=2
[18:44:13] [RECYCLE_GUARD] Erased handle 8775955 (exists:False, dead:False) instantly.
[18:44:13] [DEAD_BODY] Marked NPC 3093012 near body dist=48.4m zone=PBOX
[18:44:13] [DEAD_BODY] Marked NPC 3352852 near body dist=38.6m zone=PBOX
[18:44:14] [RECYCLE_GUARD] Erased handle 3505940 (exists:False, dead:False) instantly.
[18:44:15] [AUTO_NPC_CONVO] player_attack triggered for Mike (19151123). Gemini-only prompt queued. cooldown=12000ms
[18:44:15] [BRIDGE] playerMessage sent (Gemini Live): "[AUTO NPC CONVO — PLAYER PHYSICAL ATTACK]
This is an NPC-ini"
[18:43:25] Paige: I've seen you do this before! You think you own this sidewalk, and I'm filming for the neighborhood code violation report.
[18:43:25] Paige: [Paige] I've seen you do this before! You think you own this sidewalk, and I'm filming for the neighborhood code violation report.
[18:43:40] Yale: [OPENWINDOW] What the hell is wrong with you, dumbass, watch where you're putting that dirty piece of junk! I ain't got time for your bullshit, get that thing away from my Jackal, seriously.
[18:43:42] Yale: Tell Lisa...
[18:44:00] Mike: I saw you grab that wallet off the pavement! You think nobody was looking? Give it back now!
[18:44:00] Mike: [Mike] I saw you grab that wallet off the pavement! You think nobody was looking? Give it back now!
Afer that game crushed
does anyone have a set of api keys the ones i use wont work and i just want this mod to work
i hope rockstar wont take this down, i didnt installed it yet, i will check it out when i buy a mic becuase my previous one doesnt work anymore