<?xml version="1.0"?>
<rss version="2.0"><channel><title>Patch Notes Latest Topics</title><link>https://forum.roleplayproject.net/forum/58-patch-notes/</link><description>Patch Notes Latest Topics</description><language>en</language><item><title>Patch Notes: May 3 - May 16, 2026</title><link>https://forum.roleplayproject.net/topic/61-patch-notes-may-3-may-16-2026/</link><description><![CDATA[<p>
	<span style="font-size:24px;"><strong>Patch Notes - 3rd May to 16th May 2026</strong></span>
</p>

<p>
	Two solid weeks of work from the dev team. Big refactor under the hood, a new drug economy on top, and a long list of fixes scattered through almost every system. Credits per section below.
</p>

<p>
	 
</p>

<hr />
<p>
	 
</p>

<p>
	<span style="font-size:18px;"><strong>Core engine + tooling</strong></span><br />
	  <strong>Developer: <a contenteditable="false" data-ipshover="" data-ipshover-target="https://forum.roleplayproject.net/profile/46-java/?do=hovercard" data-mentionid="46" href="https://forum.roleplayproject.net/profile/46-java/" rel="">@java</a></strong>
</p>

<ul>
	<li>
		<strong>TypeORM migration.</strong> Around 140 manager files moved off raw SQL onto TypeORM repositories and the query builder. One AppDataSource, automatic snake_case mapping, migrations table now owns schema changes.<br />
		 
	</li>
	<li>
		<strong>Command system rewrite.</strong> All new commands use <strong>defineCommand</strong> in <em>systems/&lt;domain&gt;/commands/&lt;name&gt;.ts</em>, registered via <strong>static readonly commands</strong> on the manager class. Typed args, guards, cooldowns, automatic usage hints, dev-mode-only gating.<br />
		 
	</li>
	<li>
		<strong>Vue overlay framework.</strong> Vue 3 + Tailwind v4 overlay replaces the old per-feature CEF browsers. Centralised CursorManager with key-based refcount swept across 145 files. Strict ipc layer with six directional event enums to keep server, client, and overlay talking<br />
		  through typed strings.<br />
		 
	</li>
	<li>
		<strong>Chat moved fully to Vue</strong> with 1:1 visual parity to the legacy chat plus FontAwesome Pro 6.4 icons and scoped SCSS.<br />
		 
	</li>
	<li>
		<strong>Server-side boot</strong> initialisation now waits for every system to be ready before processing events. Boot-time DDL stripped from manager initialisers (DB and migrations own schema now).<br />
		 
	</li>
	<li>
		<strong>Dockerised</strong> the application with deployment configuration.<br />
		 
	</li>
	<li>
		<strong>Refactor</strong> moved event handlers out of <em>index.ts</em> into their owning managers; <em>index.ts</em> is now bootstrap-only.<br />
		 
	</li>
</ul>

<p>
	 
</p>

<hr />
<p>
	  <span style="font-size:18px;"><strong>Drug system (new)</strong></span><br />
	  <strong>Developer: <a contenteditable="false" data-ipshover="" data-ipshover-target="https://forum.roleplayproject.net/profile/1-melondisrupt/?do=hovercard" data-mentionid="1" href="https://forum.roleplayproject.net/profile/1-melondisrupt/" rel="">@MelonDisrupt</a></strong>
</p>

<p>
	  A full player-driven drug economy. No NPC dealers, no auto-spawn customers. Every gram is produced and sold by a real character.
</p>

<p>
	  <span style="font-size:14px;"><strong>Cannabis lifecycle</strong></span><br />
	 
</p>

<ul>
	<li>
		Plant a strain seed in a grow setup and harvest <em>wet buds</em>.<br />
		 
	</li>
	<li>
		<strong>/trimweed</strong> runs a leaf-snip minigame.<br />
		 
	</li>
	<li>
		<strong>/dryweed</strong> hangs trimmed buds on a drying rack. Ready in ~30 minutes, over-dried past 90.<br />
		 
	</li>
	<li>
		<strong>/curejar</strong> seals dried weed in a mason jar; 2 hours unlocks premium tier.<br />
		 
	</li>
	<li>
		<strong>/presskief</strong> sifts trim into kief; <strong>/presshash</strong> compresses it.<br />
		 
	</li>
	<li>
		<strong>/makebutter</strong> for cannabis butter, <strong>/bakeedible</strong> for brownies.<br />
		 
	</li>
	<li>
		Quality propagates through every stage. Bad inputs cap the ceiling.<br />
		 
	</li>
</ul>

<p>
	  <span style="font-size:14px;"><strong>Lab pipelines</strong></span><br />
	 
</p>

<ul>
	<li>
		Eight commands: <strong>/cookcocaine /cookmeth /cookheroin /cookmdma /cooklsd /cookfentanyl /cookdmt /cookcrack</strong>.<br />
		 
	</li>
	<li>
		Data-driven engine walks per-drug recipes from the catalog. Each stage runs a minigame and produces an intermediate item. Run the same command repeatedly to advance through stages.<br />
		 
	</li>
	<li>
		11 new precursor + intermediate items (cocaine_base, heroin_base, ergotamine, lsd_liquid, lsd_blotter, fentanyl_raw, fentanyl_packaged, mimosa_bark, dmt_extract, dmt_crude, dmt_crystal).<br />
		 
	</li>
</ul>

<p>
	  <span style="font-size:14px;"><strong>Mushrooms</strong></span><br />
	 
</p>

<ul>
	<li>
		<strong>/sterilizejar</strong> pressure-cooks a grain jar.<br />
		 
	</li>
	<li>
		<strong>/inoculate</strong> injects a spore syringe.<br />
		 
	</li>
	<li>
		<strong>/checkcake</strong> promotes the substrate after a 1-hour colonisation.<br />
		 
	</li>
	<li>
		<strong>/mistcake</strong> keeps humidity up; debounced 5 minutes.<br />
		 
	</li>
	<li>
		<strong>/harvestflush</strong> pulls a flush every 3 hours, up to 3 per cake.<br />
		 
	</li>
	<li>
		<strong>/drymushrooms</strong> is a passive 30-minute dry.<br />
		 
	</li>
</ul>

<p>
	  <span style="font-size:14px;"><strong>Davis Head Shop</strong></span><br />
	 
</p>

<ul>
	<li>
		Old Hydroponics shop renamed and rebuilt as a Vue panel.<br />
		 
	</li>
	<li>
		Two tabs: <strong>Cultivation Supplies</strong> (seeds, grow gear, drying racks, cure jars, scales, baggies) and <strong>Head Shop</strong> (mushroom kit, reagent kits, fentanyl test strips).<br />
		 
	</li>
	<li>
		Legal notice banner on the Head Shop tab.<br />
		 
	</li>
	<li>
		Walk up to the marker and press E.<br />
		 
	</li>
</ul>

<p>
	  <span style="font-size:14px;"><strong>Addiction, withdrawal, overdose</strong></span><br />
	 
</p>

<ul>
	<li>
		Every dose stamps the <em>drug_addictions</em> row: tolerance up, total uses up, lastUse refreshed.<br />
		 
	</li>
	<li>
		Withdrawal severity climbs the longer you go without a dose. Visual timecycle + HP regen tax.<br />
		 
	</li>
	<li>
		Overdose math: effective dose against <em>lethalDoseBaseline × (1 + tolerance / 50)</em>. Triggers the existing INJURED bleed-out state.<br />
		 
	</li>
	<li>
		<strong>/naloxone &lt;id&gt;</strong> revives opioid OD victims within 5 minutes. 3m proximity gate.<br />
		 
	</li>
	<li>
		<strong>/detox</strong> at Pillbox Hill Medical Center clears every addiction record for $1,500.<br />
		 
	</li>
</ul>

<p>
	  <span style="font-size:14px;"><strong>Weighing, bagging, cutting, selling</strong></span><br />
	 
</p>

<ul>
	<li>
		<strong>/weigh</strong> reads exact grams and quality off a bag. Needs a digital scale.<br />
		 
	</li>
	<li>
		<strong>/bag</strong> splits a parent bag into a smaller baggie (small / medium / large = 1g / 7g / 28g).<br />
		 
	</li>
	<li>
		<strong>/testdrug</strong> burns a Marquis kit, Mecke kit, or fentanyl strip. Reveals quality and adulterants.<br />
		 
	</li>
	<li>
		<strong>/cut</strong> mixes a cutting agent into a drug bag, bumps weight without quality.<br />
		 
	</li>
	<li>
		<strong>/sell &lt;player&gt; &lt;drug&gt; &lt;grams&gt; &lt;price&gt;</strong> hand-to-hand sale, 3m proximity, atomic cash transfer.<br />
		 
	</li>
	<li>
		<strong>/relationships</strong> shows your last 20 trade partners. Private to you.<br />
		 
	</li>
	<li>
		New <em>drug_p2p_sales</em> table backs the reputation log.<br />
		 
	</li>
</ul>

<p>
	 
</p>

<hr />
<p>
	  <span style="font-size:18px;"><strong>Vehicles + ELS + animations</strong></span><br />
	  <strong>Developer: <a contenteditable="false" data-ipshover="" data-ipshover-target="https://forum.roleplayproject.net/profile/3-fatcattuxedo/?do=hovercard" data-mentionid="3" href="https://forum.roleplayproject.net/profile/3-fatcattuxedo/" rel="">@FatCatTuxedo</a></strong>
</p>

<p>
	 
</p>

<ul>
	<li>
		New ELS system (client + server). Replaces the old one.<br />
		 
	</li>
	<li>
		Vehicle engine sync and light sync re-coded.<br />
		 
	</li>
	<li>
		Vehicle doors sync migrated to the new class.<br />
		 
	</li>
	<li>
		Engine behaviour fixed on entry and exit.<br />
		 
	</li>
	<li>
		New animation system, including <strong>/crun</strong> in dev mode.<br />
		 
	</li>
	<li>
		Anim class converted to the new coding standards.<br />
		 
	</li>
	<li>
		Server permission fix for <strong>/setfaction</strong> and <strong>/setrank</strong>.<br />
		 
	</li>
</ul>

<p>
	 
</p>

<hr />
<p>
	  <span style="font-size:18px;"><strong>Phone rebuild</strong></span><br />
	  <strong>Developer: <a contenteditable="false" data-ipshover="" data-ipshover-target="https://forum.roleplayproject.net/profile/1-melondisrupt/?do=hovercard" data-mentionid="1" href="https://forum.roleplayproject.net/profile/1-melondisrupt/" rel="">@MelonDisrupt</a></strong>
</p>

<p>
	 
</p>

<ul>
	<li>
		Halo OS-style redesign in two phases. Every app wired through to the new shell.<br />
		 
	</li>
	<li>
		Hand-attached phone prop while in use. Tuned position, rotation, and bone attachment.<br />
		 
	</li>
	<li>
		Holding-phone pose triggers when open.<br />
		 
	</li>
	<li>
		F3 keeps the phone open instead of cancelling.<br />
		 
	</li>
	<li>
		Clock locked to UK time (Europe/London).<br />
		 
	</li>
	<li>
		Rebound default hotkey to M.<br />
		 
	</li>
	<li>
		Optional Windows desktop notifications for <strong>/pm</strong> and messenger DMs when the GTA window is alt-tabbed. Toggle in /settings → Chat → Accessibility.<br />
		 
	</li>
</ul>

<p>
	 
</p>

<hr />
<p>
	  <span style="font-size:18px;"><strong>Property</strong></span><br />
	  <strong>Developer: <a contenteditable="false" data-ipshover="" data-ipshover-target="https://forum.roleplayproject.net/profile/1-melondisrupt/?do=hovercard" data-mentionid="1" href="https://forum.roleplayproject.net/profile/1-melondisrupt/" rel="">@MelonDisrupt</a></strong>
</p>

<ul>
	<li>
		<strong>/propertyadmin</strong> redesigned to match /amotd visual language. Streaming payload for large lists, instant re-render after every mutation.<br />
		 
	</li>
	<li>
		Interior picker per row (filtered by tier and search).<br />
		 
	</li>
	<li>
		Re-list button on owned rows with optional refund to the previous owner.<br />
		 
	</li>
	<li>
		Duplicate address rejection on create.<br />
		 
	</li>
	<li>
		Soft-delete with 30-day restore in trash tab.<br />
		 
	</li>
	<li>
		On-duty admins can lock or unlock any property via <strong>/aduty</strong>.<br />
		 
	</li>
	<li>
		Property creator UI rebuilt as a makeup-style tabbed panel with 29 new interior shells and typed natives.<br />
		 
	</li>
	<li>
		Entry/exit prompts now use the shared bottom prompt-hud.<br />
		 
	</li>
	<li>
		Lock + entry bug fixed after stale-cache scenarios.<br />
		 
	</li>
</ul>

<p>
	 
</p>

<hr />
<p>
	  <span style="font-size:18px;"><strong>Combat, death, EMS</strong></span><br />
	  <strong>Developer: <a contenteditable="false" data-ipshover="" data-ipshover-target="https://forum.roleplayproject.net/profile/1-melondisrupt/?do=hovercard" data-mentionid="1" href="https://forum.roleplayproject.net/profile/1-melondisrupt/" rel="">@MelonDisrupt</a></strong>
</p>

<p>
	 
</p>

<ul>
	<li>
		New three-state injury flow: <strong>INJURED → DEAD</strong> with bleed-out timer.<br />
		 
	</li>
	<li>
		GTA death cam skipped on player death. Custom edge vignette replaces the oppressive death FX stack.<br />
		 
	</li>
	<li>
		Timecycle cleared on revive; re-shot injured players execute properly.<br />
		 
	</li>
	<li>
		<strong>Live damage chat ping</strong> on every weapon hit, with attacker, weapon, damage taken, and remaining HP.<br />
		 
	</li>
	<li>
		<strong>/damages</strong> command lists your last 25 hits.<br />
		 
	</li>
	<li>
		Per-weapon damage multipliers calibrated against 100 HP: pistols ~1.6x, rifles ~2.0x, snipers 4x, shotguns ~2.5x, knives 1.4x.<br />
		 
	</li>
	<li>
		Gunshot audio pings within 50m, flushed every 4s.<br />
		 
	</li>
	<li>
		Down state hardened: corpses can no longer walk through their own ragdoll by holding W.<br />
		 
	</li>
	<li>
		<strong>/tackle</strong> command (closest player or <strong>/tackle &lt;id&gt;</strong>) and E-key sprint tackle when running. Both players ragdoll, attacker plays the takedown anim.<br />
		 
	</li>
	<li>
		<strong>/blindfold</strong> toggleable IC blindfold with fullscreen black render.<br />
		 
	</li>
	<li>
		Weapon draw protected against firing or fast-swapping mid-animation.<br />
		 
	</li>
	<li>
		Tab cycle plays an /ame so bystanders see the draw or holster.<br />
		 
	</li>
</ul>

<p>
	 
</p>

<hr />
<p>
	  <span style="font-size:18px;"><strong>Chat</strong></span><br />
	  <strong>Developers: <a contenteditable="false" data-ipshover="" data-ipshover-target="https://forum.roleplayproject.net/profile/46-java/?do=hovercard" data-mentionid="46" href="https://forum.roleplayproject.net/profile/46-java/" rel="">@java</a> &amp; <a contenteditable="false" data-ipshover="" data-ipshover-target="https://forum.roleplayproject.net/profile/1-melondisrupt/?do=hovercard" data-mentionid="1" href="https://forum.roleplayproject.net/profile/1-melondisrupt/" rel="">@MelonDisrupt</a></strong>
</p>

<p>
	 
</p>

<ul>
	<li>
		Default font bigger, full opacity, shadows restored for readability.<br />
		 
	</li>
	<li>
		Reliable scroll-to-bottom; MESSAGE_LIMIT bumped to 2000.<br />
		 
	</li>
	<li>
		Vue overlay defaults to top-left and suppresses Tab focus cycling.<br />
		 
	</li>
	<li>
		<strong>Rich disconnect cards</strong> with FontAwesome icons per reason (left / kicked / banned / timeout).<br />
		 
	</li>
	<li>
		Admin staff feed: connect, login, disconnect, duty toggle broadcasts. <strong>/anotify</strong> toggles per-admin.<br />
		 
	</li>
	<li>
		Welcome card improved with server time + recording-notice band.<br />
		 
	</li>
	<li>
		<strong>Player IDs</strong> shown on chat lines, prefixed with the stable <em>playerIdNumber</em> (matches /admins and /id).<br />
		 
	</li>
	<li>
		<strong>Per-type colour overrides</strong> in /settings → Chat → Message Colours (IC speech, action, OOC, whisper).<br />
		 
	</li>
	<li>
		Native colour picker swapped for in-page palette + hex popover (CEF doesn't render the native one).<br />
		 
	</li>
	<li>
		<strong>Action chat</strong> (/me /amy /melow /melonger /do) detected and tagged for no-shadow purple rendering.<br />
		 
	</li>
	<li>
		<strong>IC speech</strong> (says / shouts / whispers / phone) detected client-side: pure white, semi-bold, full opacity even when the chatOpacity slider dims everything.<br />
		 
	</li>
	<li>
		<strong>/b OOC lines</strong> get a thin 1px text outline so the slate-grey reads cleanly.<br />
		 
	</li>
	<li>
		<strong>ASCII emoticons</strong> render as unicode emoji on display (&lt;3, :), :(, ;D, etc.). Only OOC, PM, and system lines get the swap; IC stays literal.<br />
		 
	</li>
	<li>
		<strong>/pm visual polish</strong> with direction arrows (← incoming, → outgoing) and brighter name/id colours.<br />
		 
	</li>
	<li>
		<strong>/w &lt;id&gt; &lt;message&gt;</strong> directed 3m whisper with /ame for bystanders.<br />
		 
	</li>
	<li>
		Suggestions popup floats above the input instead of pushing it down.<br />
		 
	</li>
	<li>
		Chat hint and built-in chat hide reliably at init.<br />
		 
	</li>
	<li>
		Settings sync wired: fade toggle, text outline, high-contrast, reduce motion, dyslexia-friendly, emoticons toggle, timestamps.<br />
		 
	</li>
	<li>
		<strong>Accessibility section</strong> added to /settings Chat tab.<br />
		 
	</li>
</ul>

<p>
	 
</p>

<hr />
<p>
	  <span style="font-size:18px;"><strong>Settings + accessibility</strong></span><br />
	  <strong>Developer:  <a contenteditable="false" data-ipshover="" data-ipshover-target="https://forum.roleplayproject.net/profile/1-melondisrupt/?do=hovercard" data-mentionid="1" href="https://forum.roleplayproject.net/profile/1-melondisrupt/" rel="">@MelonDisrupt</a></strong>
</p>

<p>
	 
</p>

<ul>
	<li>
		4K / 5K / 6K / 8K-friendly scale ranges. Bumped slider max for chat font, HUD scale, nametag size, /ame text size, UI scale, notification scale, phone scale.<br />
		 
	</li>
	<li>
		Display Preset dropdown in /settings → General: Auto-detect, 1080p, 1440p, 4K, 5K, 6K, 8K, Custom. Bulk-applies tuned values.<br />
		 
	</li>
	<li>
		UI Sounds toggle in /settings → Chat → Accessibility.<br />
		 
	</li>
	<li>
		Show My Own Nametag toggle (default on).<br />
		 
	</li>
	<li>
		Show Player IDs toggle (default on).<br />
		 
	</li>
	<li>
		Chat Text Outline toggle (default on).<br />
		 
	</li>
</ul>

<p>
	 
</p>

<hr />
<p>
	  <span style="font-size:18px;"><strong>Hair, wardrobe, tattoos</strong></span><br />
	  <strong>Developer: <a contenteditable="false" data-ipshover="" data-ipshover-target="https://forum.roleplayproject.net/profile/1-melondisrupt/?do=hovercard" data-mentionid="1" href="https://forum.roleplayproject.net/profile/1-melondisrupt/" rel="">@MelonDisrupt</a></strong>
</p>

<p>
	 
</p>

<ul>
	<li>
		<strong>Hair slots</strong> cap raised from 10 to 60 saved styles per character. Wardrobe panel becomes scrollable with an "X / 60" header.<br />
		 
	</li>
	<li>
		<strong>/hair &lt;slot&gt;</strong> applies a saved style anywhere in the world. <strong>/hair list</strong> enumerates them.<br />
		 
	</li>
	<li>
		<strong>/hairstyle</strong> temporary restyling without touching the saved appearance. 12 presets. State in-memory, reverts on relog.<br />
		 
	</li>
	<li>
		<strong>/hairtattoo</strong> scalp overlays sold at the barber. Star, crossed lines, lightning bolt, tribal, skull detail, and 7 more. Priced $150 to $250.<br />
		 
	</li>
	<li>
		Hair colour palette now queried from the engine directly, so wardrobe swatches match what gets rendered.<br />
		 
	</li>
	<li>
		Freemode undershirt baseline re-applied after any hair-component write, so the default bra/sports-top stops bleeding through on female peds.<br />
		 
	</li>
	<li>
		<strong>First-outfit setup</strong> on character creation: wardrobe opens in a one-shot free creation mode with 30-second dwell timer. <em>first_outfit_done</em> flag stops second freebies.<br />
		 
	</li>
	<li>
		<strong>/shirt</strong> and <strong>/undershirt</strong> sync torso arms to the bare-arms variant when both upper layers are off.<br />
		 
	</li>
	<li>
		Tattoos use typed natives, re-apply after component changes, propagate to remote peds. Survives <strong>/nude</strong>, outfit loads, and wardrobe changes.<br />
		 
	</li>
	<li>
		<strong>/nude</strong> gated to private dimensions only (not main world).<br />
		 
	</li>
	<li>
		Wardrobe: hiddenZones cleared on outfit purchase or load so saved hats stop disappearing.<br />
		 
	</li>
	<li>
		Custom CEF dialogs replace native window.prompt / confirm / alert across propertyadmin, motd, wardrobe, faction management (CEF doesn't render natives — they froze the panels).<br />
		 
	</li>
</ul>

<p>
	 
</p>

<hr />
<p>
	  <span style="font-size:18px;"><strong>Admin tools</strong></span><br />
	  <strong>Developer: <a contenteditable="false" data-ipshover="" data-ipshover-target="https://forum.roleplayproject.net/profile/1-melondisrupt/?do=hovercard" data-mentionid="1" href="https://forum.roleplayproject.net/profile/1-melondisrupt/" rel="">@MelonDisrupt</a></strong>
</p>

<p>
	 
</p>

<ul>
	<li>
		<strong>/giveweapon</strong> ported to a Vue overlay panel with weapon, ammo, attachment, and audit tabs.<br />
		 
	</li>
	<li>
		<strong>/factionmanagement</strong> rebuilt to match /propertyadmin style. Sidebar faction list, Details / Ranks / Members tabs, inline modals for confirm and prompt flows, snapshot push after every mutation.<br />
		 
	</li>
	<li>
		Inline rank-picker modal replaces per-row dropdowns. Same picker drives Add Member.<br />
		 
	</li>
	<li>
		Permission gate: faction_management department flag OR admin level 4+.<br />
		 
	</li>
	<li>
		<strong>/forcereconnect &lt;id|name&gt; [reason]</strong> for admin level 1+. Drops with a chat line, kicks 1.5s later.<br />
		 
	</li>
	<li>
		<strong>/givemoney</strong> now allowed for admin 5+ OR the economy_manager department. Each give writes a <em>price_audit_log</em> row.<br />
		 
	</li>
	<li>
		<strong>/spectate</strong> camera fixed (was spinning due to two render handlers fighting for the same cam).<br />
		 
	</li>
	<li>
		Spectator / vanish actually hides the local ped now (the previous flag was setting an unrelated config flag).<br />
		 
	</li>
	<li>
		<strong>/amotd</strong> login MOTDs with BBCode and per-character ack.<br />
		 
	</li>
	<li>
		<strong>/aduty</strong> defence-in-depth gate and audit log for admin teleports. Rate-limited.<br />
		 
	</li>
	<li>
		<strong>/getup</strong> heal exempted from the cooldown bypass it was failing.<br />
		 
	</li>
</ul>

<p>
	 
</p>

<hr />
<p>
	  <span style="font-size:18px;"><strong>Pets</strong></span><br />
	  <strong>Developer: <a contenteditable="false" data-ipshover="" data-ipshover-target="https://forum.roleplayproject.net/profile/1-melondisrupt/?do=hovercard" data-mentionid="1" href="https://forum.roleplayproject.net/profile/1-melondisrupt/" rel="">@MelonDisrupt</a></strong>
</p>

<p>
	 
</p>

<ul>
	<li>
		Pet panel rewritten to /settings-style sidebar with Overview, Tricks, Wardrobe, and Stats tabs.<br />
		 
	</li>
	<li>
		<strong>/pets</strong> opens the panel. New columns: hunger, happiness, health, energy, xp, level, bond, personality, rarity, collar, walks, tricks, favorite.<br />
		 
	</li>
	<li>
		5-minute global SQL decay tick runs against offline pets too.<br />
		 
	</li>
	<li>
		<strong>pet:action</strong> router handles feed, play, pat, walk, train, spawn, despawn with stat deltas and /me chat.<br />
		 
	</li>
	<li>
		Pet shop rebuilt with rarity, personality, descriptions, inline adopt card, owned-pets tab.<br />
		 
	</li>
	<li>
		Follow loop re-issues taskFollowToOffsetOf when the pet falls more than 2m behind. 4 Hz tick, walk/jog/sprint by distance.<br />
		 
	</li>
	<li>
		Auto-/me from pets broadcasts as the pet ("* Max wags its tail") instead of through the owner.<br />
		 
	</li>
	<li>
		Pets switched to typed Ped instance methods so they actually follow (the old globals didn't exist in the type defs).<br />
		 
	</li>
</ul>

<p>
	 
</p>

<hr />
<p>
	  <span style="font-size:18px;"><strong>Trading cards</strong></span><br />
	  <strong>Developer: <a contenteditable="false" data-ipshover="" data-ipshover-target="https://forum.roleplayproject.net/profile/1-melondisrupt/?do=hovercard" data-mentionid="1" href="https://forum.roleplayproject.net/profile/1-melondisrupt/" rel="">@MelonDisrupt</a></strong>
</p>

<p>
	 
</p>

<ul>
	<li>
		First Year (2026) Pack with 400 cards and holographic UI.<br />
		 
	</li>
	<li>
		Full design-pack visuals: frame, art-bg, gloss, holo, shimmer, mouse tilt, legendary burst, wax-seal pack.<br />
		 
	</li>
	<li>
		10h playtime gate dropped on cash purchases.<br />
		 
	</li>
	<li>
		First pack auto-opens on purchase.<br />
		 
	</li>
	<li>
		Inactive series hidden in the store.<br />
		 
	</li>
	<li>
		<strong>/collection</strong> panel with sort and cash-only export.<br />
		 
	</li>
	<li>
		Bag double-counting fixed (exported cards filtered out of the collection grid).<br />
		 
	</li>
	<li>
		Card export refuses on inventory full and only flips <em>is_exported=1</em> if addItem succeeded.<br />
		 
	</li>
	<li>
		Using a trading_card from inventory now redeems it back into the collection.<br />
		 
	</li>
	<li>
		First-press E drop on the card store fixed (was throttled to 500ms).<br />
		 
	</li>
</ul>

<p>
	 
</p>

<hr />
<p>
	  <span style="font-size:18px;"><strong>Reports</strong></span><br />
	  <strong>Developer: <a contenteditable="false" data-ipshover="" data-ipshover-target="https://forum.roleplayproject.net/profile/1-melondisrupt/?do=hovercard" data-mentionid="1" href="https://forum.roleplayproject.net/profile/1-melondisrupt/" rel="">@MelonDisrupt</a></strong>
</p>

<p>
	 
</p>

<ul>
	<li>
		<strong>/reports</strong> rebuilt as a settings-style threaded panel.<br />
		 
	</li>
	<li>
		Quick <strong>/report &lt;msg&gt;</strong> and <strong>/areply</strong> commands. Chat banners and off-duty flood pings.<br />
		 
	</li>
	<li>
		Refresh open admin panels on new submission. Off-duty admins included.<br />
		 
	</li>
	<li>
		Inline resolve modal, chat-delivery feedback, arg coercion fixed.<br />
		 
	</li>
</ul>

<p>
	 
</p>

<hr />
<p>
	  <span style="font-size:18px;"><strong>Smoking, props, ambience</strong></span><br />
	  <strong>Developer: <a contenteditable="false" data-ipshover="" data-ipshover-target="https://forum.roleplayproject.net/profile/1-melondisrupt/?do=hovercard" data-mentionid="1" href="https://forum.roleplayproject.net/profile/1-melondisrupt/" rel="">@MelonDisrupt</a></strong>
</p>

<p>
	 
</p>

<ul>
	<li>
		Smoking system: looping animation, hand-attached cigarette, visible smoke, toggle-off.<br />
		 
	</li>
	<li>
		<strong>247store</strong> UI made bigger with a smoking section, multi-use packs, more snacks.<br />
		 
	</li>
	<li>
		<strong>Radio</strong> muffling logic dropped the <em>isWindowIntact</em> gate (false-positive on coupes). 3D audio is unmuffled when any window is down or broken.<br />
		 
	</li>
	<li>
		<strong>/domelight</strong> and <strong>/vwindow</strong> toggles, synced via vehicle vars and broadcast through player.call.<br />
		 
	</li>
	<li>
		<strong>Trash cleanup</strong> expanded from ~20 to ~80 binbag / cardboard / pizza box / cup / bottle / cigarette pack / tyre pile / litter models. Scan radius bumped 80 → 120m. Per-tick per-hash cap raised. <strong>/cleantrash</strong> for on-demand admin sweep.<br />
		 
	</li>
	<li>
		<strong>Spraytag</strong> occlusion raycast, scale cap, lazy redraw, typed natives.<br />
		 
	</li>
	<li>
		Speed limiter caps by blocking the accelerator instead of forcing speed.<br />
		 
	</li>
</ul>

<p>
	 
</p>

<hr />
<p>
	  <span style="font-size:18px;"><strong>Shipping + jobs</strong></span><br />
	  <strong>Developer: <a contenteditable="false" data-ipshover="" data-ipshover-target="https://forum.roleplayproject.net/profile/1-melondisrupt/?do=hovercard" data-mentionid="1" href="https://forum.roleplayproject.net/profile/1-melondisrupt/" rel="">@MelonDisrupt</a></strong>
</p>

<p>
	 
</p>

<ul>
	<li>
		<strong>Shipping</strong> manual box loading and unloading, better blips, HUD.<br />
		 
	</li>
	<li>
		<strong>/jobs</strong> settings-style hub with Trucking + Bus Driver tabs (active job, lifetime stats, recent history) backed by JobsHubManager.<br />
		 
	</li>
</ul>

<p>
	 
</p>

<hr />
<p>
	  <span style="font-size:18px;"><strong>Website, docs, infrastructure</strong></span><br />
	  <strong>Developer: <a contenteditable="false" data-ipshover="" data-ipshover-target="https://forum.roleplayproject.net/profile/1-melondisrupt/?do=hovercard" data-mentionid="1" href="https://forum.roleplayproject.net/profile/1-melondisrupt/" rel="">@MelonDisrupt</a></strong>
</p>

<p>
	 
</p>

<ul>
	<li>
		New <strong>/docs</strong> section with Notion-style sidebar and .md content. 9 starter pages + 5 added (glossary, ATMs detail, joining a faction, inventory &amp; items, death / injuries / EMS).<br />
		 
	</li>
	<li>
		Docs visual overhaul: hero card per page, index card-grid with category icons, sidebar icons + scroll-spy TOC, callout post-processor (NOTE / TIP / IMPORTANT / WARNING / CAUTION).<br />
		 
	</li>
	<li>
		Homepage pulls real stats from <strong>/api/public/stats</strong>.<br />
		 
	</li>
	<li>
		Download points to the correct game server.<br />
		 
	</li>
	<li>
		Developer forum decommissioned. Tip text points to forum.roleplayproject.net.<br />
		 
	</li>
	<li>
		News page removed from website nav; legacy WelcomeFest music emitter deleted.<br />
		 
	</li>
	<li>
		UCP login API base fixed; register page removed (in-game only). Legacy UCP HTML scanned into the CSS bundle.<br />
		 
	</li>
</ul>

<p>
	 
</p>

<hr />
<p>
	  <span style="font-size:18px;"><strong>Security audit</strong></span><br />
	  <strong>Developer: <a contenteditable="false" data-ipshover="" data-ipshover-target="https://forum.roleplayproject.net/profile/1-melondisrupt/?do=hovercard" data-mentionid="1" href="https://forum.roleplayproject.net/profile/1-melondisrupt/" rel="">@MelonDisrupt</a></strong>
</p>

<p>
	  Critical + high + medium severity fixes from the audit pass:
</p>

<p>
	 
</p>

<ul>
	<li>
		<strong>/kick</strong> and <strong>/admins</strong> authorization corrected.<br />
		 
	</li>
	<li>
		propertyadmin SQL injection vector closed with a whitelist.<br />
		 
	</li>
	<li>
		Metrics endpoint locked down to 127.0.0.1 with env token, SQL action dropped.<br />
		 
	</li>
	<li>
		9 secrets hoisted to .env (Revolut, Intercom, 6 Discord webhooks, metrics token).<br />
		 
	</li>
	<li>
		CayoPerico TOCTOU debit closed.<br />
		 
	</li>
	<li>
		Vehicle health monotonic guard.<br />
		 
	</li>
	<li>
		Admin teleport rate-limit and audit log.<br />
		 
	</li>
	<li>
		EnergyManager IN clause parameterised.<br />
		 
	</li>
	<li>
		<strong>/aduty</strong> defence-in-depth gate.<br />
		 
	</li>
	<li>
		Registration verification fixed (was "Data too long for column code" — verifyCode wrote a 48-char token into a VARCHAR(6) column).<br />
		 
	</li>
</ul>

<p>
	 
</p>

<hr />
<p>
	  <span style="font-size:18px;"><strong>Smaller fixes worth knowing</strong></span><br />
	  <strong>Developer: <a contenteditable="false" data-ipshover="" data-ipshover-target="https://forum.roleplayproject.net/profile/1-melondisrupt/?do=hovercard" data-mentionid="1" href="https://forum.roleplayproject.net/profile/1-melondisrupt/" rel="">@MelonDisrupt</a></strong>
</p>

<p>
	 
</p>

<ul>
	<li>
		<strong>/pay</strong> and <strong>/pm</strong> now resolve player IDs by displayed <em>playerIdNumber</em> instead of RAGEMP's runtime slot.<br />
		 
	</li>
	<li>
		<strong>/factionmanagement invite</strong> same fix.<br />
		 
	</li>
	<li>
		Gym prop spam crash fixed (was minting a new prop entity 60×/sec when attach silently threw).<br />
		 
	</li>
	<li>
		Indicator off-state stuck bug fixed.<br />
		 
	</li>
	<li>
		<strong>/vol 0</strong> no longer falls back to 50%.<br />
		 
	</li>
	<li>
		<strong>/vehicles</strong> spawn race-double fixed.<br />
		 
	</li>
	<li>
		Cards: first-press E drop fixed by recomputing distance on demand.<br />
		 
	</li>
	<li>
		Carlot uses live <strong>/economy</strong> prices instead of frozen catalogue.<br />
		 
	</li>
	<li>
		Spawn: ped tasks cleared and level rotation set server-side.<br />
		 
	</li>
	<li>
		Registration code timestamp uses DB-side NOW() / DATE_ADD so codes don't appear pre-expired across timezones.<br />
		 
	</li>
	<li>
		Pollable browser init helper replaces single-shot setTimeout in 18 init sites. Eliminates blank UIs on slow CEF loads.<br />
		 
	</li>
	<li>
		11 "Press X to do Y" prompts converted from scaledText to the shared bottom prompt-hud.<br />
		 
	</li>
	<li>
		142 raw <em>mp.game.invoke 0xHASH</em> calls converted to typed natives across the client. Plus 91 in rounds 2 and 3, plus 38 more in round 4.<br />
		 
	</li>
	<li>
		Trading-card export refuses on full inventory and only marks exported on success.<br />
		 
	</li>
	<li>
		<strong>/cleantrash</strong> for on-demand admin sweep.<br />
		 
	</li>
	<li>
		Phone clock locked to UK time.<br />
		 
	</li>
</ul>

<p>
	 
</p>

<hr />
<p>
	  <span style="font-size:18px;"><strong>Server perms</strong></span><br />
	  <strong>Developer: <a contenteditable="false" data-ipshover="" data-ipshover-target="https://forum.roleplayproject.net/profile/3-fatcattuxedo/?do=hovercard" data-mentionid="3" href="https://forum.roleplayproject.net/profile/3-fatcattuxedo/" rel="">@FatCatTuxedo</a></strong>
</p>

<p>
	 
</p>

<ul>
	<li>
		Permission fix for <strong>/setfaction</strong> and <strong>/setrank</strong>.<br />
		 
	</li>
	<li>
		Two follow-up perm passes.<br />
		 
	</li>
</ul>

<p>
	 
</p>

<hr />
]]></description><guid isPermaLink="false">61</guid><pubDate>Sat, 16 May 2026 18:09:26 +0000</pubDate></item><item><title>The Drug Update</title><link>https://forum.roleplayproject.net/topic/60-the-drug-update/</link><description><![CDATA[<p style="text-align:center;">
	<a class="ipsAttachLink ipsAttachLink_image" href="https://forum.roleplayproject.net/uploads/monthly_2026_05/f02d5d77-a74b-4566-85f3-6d21a649167d.png.7d60c2e76e1a868cf4440901d0edc500.png" data-fileid="47" data-fileext="png" rel=""><img class="ipsImage ipsImage_thumbnailed" data-fileid="47" data-ratio="56.20" width="1000" alt="f02d5d77-a74b-4566-85f3-6d21a649167d.thumb.png.addfd7495249aa40297337d5bb0d10de.png" data-src="https://forum.roleplayproject.net/uploads/monthly_2026_05/f02d5d77-a74b-4566-85f3-6d21a649167d.thumb.png.addfd7495249aa40297337d5bb0d10de.png" src="https://forum.roleplayproject.net/applications/core/interface/js/spacer.png" /></a>
</p>

<p style="text-align:center;">
	 
</p>

<p>
	<span style="font-size:20px;"><strong>Drug system overhaul is live</strong></span>
</p>

<p>
	Spent the last few days rebuilding the drug system from the ground up. It's a lot, so I'll keep this skim-friendly. Short version: if you want to deal, you grow it, cook it, weigh it, bag it, and sell it to actual players. No more NPC dealers, no auto spawn customers. The whole loop runs on real characters.
</p>

<p>
	<strong><span style="font-size:20px;">Cannabis got the full treatment</span></strong>
</p>

<p>
	Plant a strain seed in a grow setup, water it, harvest wet buds, then you actually have to do something with them. /trimweed runs a little minigame where you snip leaves off the bud. /dryweed hangs it on a drying rack for about 30 minutes (don't leave it longer than 90 or quality drops a tier). /curejar seals it for two hours and unlocks the premium tier if you wait it out. You can also /presskief to sift trichomes, /presshash to compress those into hash, /makebutter for cannabis butter, and /bakeedible for brownies.
</p>

<p>
	Quality propagates the whole way through. A weak plant trimmed perfectly still caps at medium. A premium plant rushed through cure won't hit premium.
</p>

<p>
	<strong><span style="font-size:20px;">Eight lab drugs</span></strong>
</p>

<p>
	Cocaine, meth, heroin, MDMA, LSD, fentanyl, DMT, and crack. Every one is a multistage recipe with real precursors. You source them, you cook them in order, and each stage runs a minigame. The engine looks at your inventory and figures out which stage you can run next, so you just type /cookcocaine (or /cookmeth, /cookheroin, etc.) and it picks up where you left off. Quality flows through stages the same way it does for weed.
</p>

<p>
	<strong><span style="font-size:20px;">Mushrooms</span></strong>
</p>

<p>
	Whole separate flow. Buy a grain jar and a spore syringe at the Davis Head Shop (more on that in a sec). /sterilizejar pressure cooks it, /inoculate injects the spores, then it colonises for about an hour before /checkcake turns it into a fruiting cake. After that you /mistcake to keep the humidity up (every five minutes counts, more often doesn't help) and /harvestflush to pull mushrooms. You get up to three flushes per cake. /drymushrooms takes about thirty minutes per batch and that's your final product.
</p>

<p>
	<strong><span style="font-size:20px;">Davis Head Shop</span></strong>
</p>

<p>
	The old Hydroponics shop got a rebuild. New name, new UI, two tabs. Cultivation Supplies has all the grow gear (seeds across 105 cannabis strains, grow setups, lighting, nutrients, the new drying racks and cure jars) plus the new digital scale and baggies. The Head Shop tab carries the mushroom kit (grain jars, spore syringes) and the harm reduction stuff (Marquis kit, Mecke kit, fentanyl test strips). There's a legal notice at the top of the Head Shop tab. Spore syringes are sold for microscopy. What you do with them is on you. Walk up to the marker and press E.
</p>

<p>
	<strong><span style="font-size:20px;">Weighing, bagging, cutting, selling</span></strong>
</p>

<p>
	Drug bags now carry exact grams. /weigh tells you what's in a bag (need a digital scale on you). /bag splits a parent bag into a smaller baggie with the exact amount you specify, so you can portion off a 3.5g eighth from your big stash. Quality and any cuts carry over to the smaller bag.
</p>

<p>
	/cut lets you mix something into a drug bag to bulk it up. Bumps the gram weight, doesn't add quality, and leaves a paper trail in the bag's metadata.
</p>

<p>
	/sell does hand to hand sales. You need to be within 3 metres of the buyer. Pass it the player ID, drug, grams, and price. Cash moves, drug moves, both of you get a row in /relationships which shows your last 20 trade partners. Nobody else can see your relationships list. It's just for you.
</p>

<p>
	<span style="font-size:20px;"><strong>Test kits actually matter now</strong></span>
</p>

<p>
	If you /cut your heroin with fentanyl and sell it to someone, and they don't /testdrug it first, they're rolling the dice. Marquis and Mecke kits flag any unexpected adulterants in your bag and tell you the quality. Fentanyl test strips do one thing only, but they do it well: positive or negative, take it or don't.
</p>

<p>
	This is also why the head shop sells these openly. Same reason real ones do.
</p>

<p>
	<span style="font-size:20px;"><strong>Addiction, withdrawal, overdose</strong></span>
</p>

<p>
	Every time you use a drug, your tolerance to it goes up and your last use time gets stamped. Go too long without a dose and you start feeling it. Mild withdrawal looks like a faint screen tint, severe withdrawal taxes your HP regen until you score or detox. The visual is per drug. Opioid withdrawal feels different from stimulant withdrawal.
</p>

<p>
	Overdose is real. The math compares your dose to your tolerance and a per drug lethal baseline. New users overdose easy. Long term users have to take more to hit the threshold, which is why heroin and fentanyl ODs are usually old hands who got an unexpectedly pure batch. When it triggers, you go down into the injured state and start bleeding out. You have five minutes.
</p>

<p>
	<span style="font-size:20px;"><strong>Naloxone</strong></span>
</p>

<p>
	  New item. Anyone can carry it. If you're standing next to someone who just OD'd on heroin or fentanyl, /naloxone  and you can pull them back. Only works on opioids, only within the five minute window. Get it from medics or pretty much anyone who's been smart enough to stock up.
</p>

<p>
	<strong><span style="font-size:20px;">Detox</span></strong>
</p>

<p>
	Cleaned up for $1,500 at Pillbox Hill Medical Center. /detox there wipes every addiction record you have. Withdrawal stops on the spot. Worth it if you've been hitting heroin hard and want a fresh start.
</p>

<p>
	<strong><span style="font-size:20px;">A few honest notes</span></strong>
</p>

<p>
	A lot of the minigames are running through a shared click target visual for now while I build the per drug panels. The mechanics are real (your score affects quality, timing affects yield), just the visuals are placeholder. They'll get prettier soon.
</p>

<p>
	Naloxone doesn't have a vendor yet. If you want some, ask a medic or wait for the pharmacy add I'm planning.
</p>

<p>
	That's the whole loop. Grow it, process it, weigh it, bag it, optionally cut it, sell it, log it. Players move every gram. Have fun.
</p>

<p style="text-align:center;">
	 
</p>
]]></description><guid isPermaLink="false">60</guid><pubDate>Sat, 16 May 2026 17:49:09 +0000</pubDate></item><item><title>The Weapon Update</title><link>https://forum.roleplayproject.net/topic/46-the-weapon-update/</link><description><![CDATA[<p style="text-align:center;">
	<a class="ipsAttachLink ipsAttachLink_image" href="https://forum.roleplayproject.net/uploads/monthly_2026_05/xbvh7sm.png.9124821354f318ed29351f9bfc6435a3.png" data-fileid="33" data-fileext="png" rel=""><img class="ipsImage ipsImage_thumbnailed" data-fileid="33" data-ratio="56.20" width="1000" alt="xbvh7sm.thumb.png.17058b3145513149f7c9a6c64a7f6a30.png" data-src="https://forum.roleplayproject.net/uploads/monthly_2026_05/xbvh7sm.thumb.png.17058b3145513149f7c9a6c64a7f6a30.png" src="https://forum.roleplayproject.net/applications/core/interface/js/spacer.png" /></a>
</p>

<p style="text-align:center;">
	 
</p>

<p style="text-align:center;">
	 
</p>

<p>
	We've torn down our entire firearms system and rebuilt it from the ground up. This isn't a tweak. This is a complete overhaul of what it means to carry a gun in our city.
</p>

<p>
	<strong>Realistic Milspec Weapons</strong><br />
	Every firearm now carries its real-world identity. The Pistol is now an M1911A1 (.45 ACP). The Combat Pistol is a P226 SIG (9×19 Para). The Carbine Rifle is an M4A1 (5.56 NATO). The Assault Rifle is an AK-103 (7.62×39). The Sniper Rifle is a Remington 700 (.308). Every weapon has a real name, a real caliber, a real magazine size, and a real fire rate.
</p>

<p>
	<strong>Caliber-Locked Ammunition</strong><br />
	Generic ammo is dead. Every round in your inventory now carries a specific caliber - 9mm Para, .45 ACP, .380 ACP, .50 AE, 5.56 NATO, 7.62×39, 12-gauge buckshot, .308 Winchester. Try to load a .308 round into your AK and the magazine refuses. Buy the right rounds for the right gun, or your weapon is a paperweight.
</p>

<p>
	<strong>Per-Weapon Magazines</strong><br />
	Every weapon item carries its own loaded magazine. Pick up a pistol someone dropped - the rounds in it are the rounds they had loaded. Drop your gun, pick up another player's - different mag, different round count. Each firearm is its own physical object with its own state.
</p>

<p>
	<strong>Per-Part Durability - Six Parts Per Weapon</strong><br />
	This is where it gets serious. Every weapon has six tier-specific mechanical parts. A pistol has a barrel, slide, hammer, recoil spring, magazine spring, and trigger group. A rifle has a barrel, bolt carrier group, gas system, buffer spring, mag spring, and trigger group. A shotgun has its own for end and ejector. A sniper has a scope mount that walks loose under recoil.
</p>

<p>
	Every shot wears the firing parts. Every reload wears the springs. Each part degrades independently and each part matters.
</p>

<p>
	<strong>Real Mechanical Consequences</strong><br />
	Worn parts don't just look bad - they break things.
</p>

<ul>
	<li>
		Slide wear under 30% - random jams mid-magazine. Your weapon dies and you're forced to /reload to clear it. Get caught in a firefight with a worn slide and you'll feel it.
	</li>
	<li>
		Magazine spring under 40% - your reload cooldown doubles to 5 seconds and the animation visibly slows. Worn springs mean fumbling hands when you need speed most.
	</li>
	<li>
		Barrel under 50% - outgoing damage scales down. A 0% barrel deals half damage. Worn barrels make weak shooters.<br />
		 
	</li>
</ul>

<p>
	<img class="ipsImage ipsImage_thumbnailed" data-fileid="34" data-ratio="66.07" width="949" alt="Screenshot2026-05-09164927.png.07bd4d82c9e826ec4518e0e84db4f800.png" data-src="https://forum.roleplayproject.net/uploads/monthly_2026_05/Screenshot2026-05-09164927.png.07bd4d82c9e826ec4518e0e84db4f800.png" src="https://forum.roleplayproject.net/applications/core/interface/js/spacer.png" />
</p>

<p>
	<img class="ipsImage ipsImage_thumbnailed" data-fileid="35" data-ratio="66.77" width="951" alt="Screenshot2026-05-09164935.png.9d242b5d1a64f39e74a7ba35d6d20e2c.png" data-src="https://forum.roleplayproject.net/uploads/monthly_2026_05/Screenshot2026-05-09164935.png.9d242b5d1a64f39e74a7ba35d6d20e2c.png" src="https://forum.roleplayproject.net/applications/core/interface/js/spacer.png" />
</p>

<p>
	<img class="ipsImage ipsImage_thumbnailed" data-fileid="36" data-ratio="64.72" width="958" alt="Screenshot2026-05-09164944.png.c21b717fb3957a7712f13697a6934b33.png" data-src="https://forum.roleplayproject.net/uploads/monthly_2026_05/Screenshot2026-05-09164944.png.c21b717fb3957a7712f13697a6934b33.png" src="https://forum.roleplayproject.net/applications/core/interface/js/spacer.png" />
</p>

<p>
	<img class="ipsImage ipsImage_thumbnailed" data-fileid="37" data-ratio="65.94" width="963" alt="Screenshot2026-05-09164951.png.985d211cdcf4f9d8d5bd436de85661a0.png" data-src="https://forum.roleplayproject.net/uploads/monthly_2026_05/Screenshot2026-05-09164951.png.985d211cdcf4f9d8d5bd436de85661a0.png" src="https://forum.roleplayproject.net/applications/core/interface/js/spacer.png" />
</p>
]]></description><guid isPermaLink="false">46</guid><pubDate>Sat, 09 May 2026 16:39:33 +0000</pubDate></item><item><title>Patch Notes: Apr 22 &#x2013; May 3, 2026</title><link>https://forum.roleplayproject.net/topic/18-patch-notes-apr-22-%E2%80%93-may-3-2026/</link><description><![CDATA[<p>
	A huge fortnight. New careers, a casino, a forensics overhaul, a full radio system, and dozens of quality-of-life upgrades. Highlights below.
</p>

<p>
	<br />
	  <img src="https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/72x72/1f33e.png" class="ipsEmoji" alt="🌾"> New Career: Farming
</p>

<ul>
	<li>
		A complete farming system has gone live. Head to the Farm Office to get started.
	</li>
	<li>
		Ten crops across four skill tiers (Lettuce all the way up to Watermelons)
	</li>
	<li>
		Farming levels 1–25 — every level boosts your sale price, capped at +50% at L25
	</li>
	<li>
		Plant / water / harvest minigames — perfect scores cut grow time and boost yield
	</li>
	<li>
		Live market surges push random crops to ×1.5, ×1.75, or ×2.0 sale prices for 5–15 minutes
	</li>
	<li>
		Two sale points: the Farm Stand (quick, lower price) or the City Market (premium, taxed)
	</li>
	<li>
		Plot locations are persistent and admin-placed (max 5 active plots per farmer)
	</li>
</ul>

<p>
	 
</p>

<p>
	  <img src="https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/72x72/1f37a.png" class="ipsEmoji" alt="🍺"> New Career: Brewing
</p>

<ul>
	<li>
		Brewing has rolled out across six phases — fully end-to-end now:
	</li>
	<li>
		Kit shop, recipe catalogue, and equipment placement (place gear straight from your inventory)
	</li>
	<li>
		Hobbyist brews → commercial-scale batches in warehouses with parallel fermenters
	</li>
	<li>
		Phase 5: spirits + oak-barrel aging
	</li>
	<li>
		Phase 6: licensed businesses can buy bottled stock from the distributor
	</li>
	<li>
		XP grants on bottling, full distributor sale flow
	</li>
</ul>

<p>
	 
</p>

<p>
	  <img src="https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/72x72/1f3b0.png" class="ipsEmoji" alt="🎰"> Diamond Casino — Roulette Is Open
</p>

<ul>
	<li>
		Real GTA V casino assets: table props, a working dealer ped, sync'd animations
	</li>
	<li>
		Multiplayer roulette tables at Diamond Casino #1
	</li>
	<li>
		NPC bartender with proper queueing and RP /me sequence
	</li>
</ul>

<p>
	 
</p>

<p>
	  <img src="https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/72x72/1f3a3.png" class="ipsEmoji" alt="🎣"> Fishing Overhaul
</p>

<ul>
	<li>
		Reworked tier system, fishing hotspots, weather-driven catches
	</li>
	<li>
		New stats UI and an achievements layer
	</li>
</ul>

<p>
	<br />
	  <img src="https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/72x72/1f693.png" class="ipsEmoji" alt="🚓"> Law Enforcement
</p>

<ul>
	<li>
		Forensics &amp; Evidence Lab — collect, process, and track evidence
	</li>
	<li>
		MDC Cases tab surfaces evidence directly from the cruiser
	</li>
	<li>
		LS Coroner's Office is back online (relocated to 240.81 / -1379.32 / 33.74)
	</li>
	<li>
		LSPD fleet wipe and reseed
	</li>
	<li>
		Female LSPD uniform now uses the correct canonical police pack
	</li>
	<li>
		Various MDC fixes: cleaner design, Mark Cold no longer crashes, archived CAD calls
	</li>
</ul>

<p>
	 
</p>

<p>
	  <img src="https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/72x72/1f6a6.png" class="ipsEmoji" alt="🚦"> Traffic &amp; Speed Cameras
</p>

<ul>
	<li>
		Per-road speed limits driven by GTA V's own pathfinding nodes
	</li>
	<li>
		Speed-camera fines now route to /fines with a proper appeal flow (no more 3D text or pop-up warnings)
	</li>
	<li>
		/speedcamera and /speedlimits admin commands
	</li>
	<li>
		Speedo always queries the speed-limit system; defaults to MPH with a km/h toggle in /settings
	</li>
</ul>

<p>
	 
</p>

<p>
	  <img src="https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/72x72/1f3ab.png" class="ipsEmoji" alt="🎫"> Plates &amp; Vehicles
</p>

<ul>
	<li>
		/takeplates and /installplates — with MDC mismatch detection for stolen plates
	</li>
	<li>
		/takeplates runs a 4-screw minigame
	</li>
	<li>
		/reportstolen &lt;plate&gt; — flag a vehicle and trigger an NPC dispatch BOLO
	</li>
	<li>
		/lights on|off|auto plus headlights and engine state now persist after exit
	</li>
	<li>
		/plate UI rebuilt with a design preview and RP-tier pricing
	</li>
	<li>
		SA Exempt plate design for factions (also exempt from speed cameras)
	</li>
	<li>
		/vdoor (renamed from /door)
	</li>
	<li>
		/amodify admin vehicle mod UI with faction-aware audit
	</li>
</ul>

<p>
	<br />
	  <img src="https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/72x72/1f480.png" class="ipsEmoji" alt="💀"> Death &amp; Body System
</p>

<ul>
	<li>
		Cleaner death modal, transparent overlay, time lock before respawn
	</li>
	<li>
		Full corpse appearance match (head blend applied before hair tint so colour is right)
	</li>
	<li>
		/lootbody, ragdoll, and a quit penalty if you log out while down
	</li>
	<li>
		/abury admin command to force-remove the nearest corpse
	</li>
</ul>

<p>
	 
</p>

<p>
	  <img src="https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/72x72/1f3ad.png" class="ipsEmoji" alt="🎭"> Identity / Mask System
</p>

<ul>
	<li>
		/maskname — assigns a Mask_NNNNN alias, hides hair, with admin-only reveal
	</li>
	<li>
		Force changechar on name change so the world updates correctly
	</li>
	<li>
		Discord Rich Presence always shows "Roleplay Project" as line 1
	</li>
	<li>
		Nametag rendering rewritten to handle moving players and sit higher above the head
	</li>
</ul>

<p>
	 
</p>

<p>
	<br />
	  <img src="https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/72x72/1f6e1.png" class="ipsEmoji" alt="🛡️"> Scene Safety / Roleplay Tools
</p>

<ul>
	<li>
		A new toolkit for keeping scenes consensual and safe:
	</li>
	<li>
		/cwc — Character Will &amp; Consent editor, viewer, and request flow (replaces /consent)
	</li>
	<li>
		Green-zone disclaimer added; combat/death prefs dropped from CWC
	</li>
</ul>

<p>
	<br />
	  <img src="https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/72x72/1f68c.png" class="ipsEmoji" alt="🚌"> Bus Service Rebuild
</p>

<ul>
	<li>
		/abusroute — admins build routes in-game (no more hardcoded list)
	</li>
	<li>
		/submitroute — players draft routes, admins review, +50 RPP on approve
	</li>
	<li>
		Submit-route tutorial tab and admin pending-tab with private-dim test
	</li>
</ul>

<p>
	 
</p>

<p>
	  <img src="https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/72x72/1f4de.png" class="ipsEmoji" alt="📞"> Phone
</p>

<ul>
	<li>
		Voicemail divert when the target is offline or set to Do Not Disturb
	</li>
</ul>

<p>
	<br />
	  <img src="https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/72x72/1f9e5.png" class="ipsEmoji" alt="🧥"> Inventory, Clothing &amp; Wardrobe
</p>

<ul>
	<li>
		Wearable backpacks — visible on the player, give a carry-weight bonus, stocked in 24/7
	</li>
	<li>
		24/7 now correctly lists backpacks under Accessories
	</li>
	<li>
		Clothing is no longer an inventory concept — handled by the wardrobe
	</li>
	<li>
		/strip tightened up + per-slot toggles: /hat, /shirt, /shoes, /glasses, /ears, etc.
	</li>
	<li>
		/outfit &lt;slot&gt; — quick-load a saved outfit by ID
	</li>
	<li>
		/shareoutfit / /acceptoutfit / /declineoutfit — gift outfits to other players
	</li>
	<li>
		Menyoo character import in /settings (first import free, 100 PP after)
	</li>
	<li>
		Barber properly honours /hat /glasses /ears toggles through wardrobe re-sync
	</li>
	<li>
		Removed the destroy-item flow
	</li>
	<li>
		/stashitem — RP-stash items as world props, with an admin-audit confirm modal
	</li>
</ul>

<p>
	  <img src="https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/72x72/1f3a8.png" class="ipsEmoji" alt="🎨"> UI / UX
</p>

<ul>
	<li>
		Modernised login + register screens, RP intro, redesigned new-character quiz
	</li>
	<li>
		/fines UI redesigned to match the farm-shop look
	</li>
	<li>
		ATM, bank, hospital, and pickup proximity prompts now use the new drawPrompt CEF widget
	</li>
	<li>
		Welcome box rebuilt with the logo, chat clears on character switch
	</li>
	<li>
		Hidden the native bottom-right GTA widget (vehicle name, area, class, street)
	</li>
	<li>
		GPS HUD pill restyled and lifted clear of the minimap (currently disabled while we tune it)
	</li>
	<li>
		Force lock-on targeting by default, with a toggle in /settings
	</li>
	<li>
		Combat roll and stealth kill disabled
	</li>
</ul>

<p>
	 
</p>

<p>
	  <img src="https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/72x72/1f6d2.png" class="ipsEmoji" alt="🛒"> Adverts (/ads)
</p>

<ul>
	<li>
		/ads rebuilt in the /settings shell with an RP boost flow
	</li>
	<li>
		Per-player cooldown, donator perk, all-active listing
	</li>
	<li>
		The Purchase button now tells you why it's disabled when it is
	</li>
</ul>

<p>
	 
</p>

<p>
	  <img src="https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/72x72/1f510.png" class="ipsEmoji" alt="🔐"> Login / Account
</p>

<ul>
	<li>
		Remember Me and Auto-Login toggles on the login form
	</li>
	<li>
		Warning modal explains what enabling them does
	</li>
	<li>
		/settings → Privacy → Disable Saved Login (per-device opt-out)
	</li>
	<li>
		Register + device verification emails routed through Resend
	</li>
	<li>
		Polished email theme, unsubscribe links, an inactivity-comeback campaign
	</li>
	<li>
		Dev-mode autologin check tightened
	</li>
	<li>
		2FA / register CEF↔server bridge fixed
	</li>
</ul>

<p>
	 
</p>

<p>
	  <img src="https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/72x72/1f4bc.png" class="ipsEmoji" alt="💼"> Admin Tools
</p>

<ul>
	<li>
		/resetpw &lt;username&gt; — admin-5+ password reset with audit log
	</li>
	<li>
		/atestwindow — public test windows (DB-driven schedule, default Friday 5pm–11pm)
	</li>
	<li>
		Department flag management moved into /adminmanager profile pages
	</li>
	<li>
		Developer flag grants a curated set of dev-test commands
	</li>
	<li>
		Several permission-check holes patched (/setfaction, /setrank, /createfaction for FM, property admin perms, dev access to non-mod commands)
	</li>
	<li>
		/ck now runs the full CK pipeline, names the admin, and kicks the target
	</li>
</ul>

<p>
	 
</p>

<p>
	  <img src="https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/72x72/1f4b0.png" class="ipsEmoji" alt="💰"> Economy
</p>

<ul>
	<li>
		New farming tab in /economy with manual surge controls
	</li>
	<li>
		Mining prices, farming seed costs, and farming buy/sell prices all manageable from /economy
	</li>
	<li>
		Surge chat alerts are now opt-in (toggle in /settings)
	</li>
</ul>

<p>
	<br />
	  <img src="https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/72x72/1f41b.png" class="ipsEmoji" alt="🐛"> Notable Fixes
</p>

<ul>
	<li>
		Vehicle entry crash (wrong arg count to getPedInSeat)
	</li>
	<li>
		Engine-reinforcement client tick was crashing — removed
	</li>
	<li>
		Recurring runtime errors in property blips, email sweep, admin import, and drug lab migration
	</li>
	<li>
		/editproperty fixed
	</li>
	<li>
		Speed-camera passenger fines no longer mis-fire
	</li>
	<li>
		/doormanage no longer crashes
	</li>
	<li>
		Casino roulette: switched to mp.objects.new, fixed model handling, added dealer ped sync animations
	</li>
	<li>
		Barber: per-frame prop scrub stops GTA's deferred auto-apply
	</li>
	<li>
		Real server time on the welcome and login screens
	</li>
	<li>
		Country Escape House and Private Island blip ranges limited
	</li>
</ul>
]]></description><guid isPermaLink="false">18</guid><pubDate>Tue, 05 May 2026 02:21:37 +0000</pubDate></item></channel></rss>
