Economy and city hooks
Cash, bank, commerce, property, law, city systems, medical, taxi, contracts, chat and phone events.
Hooks and payloads
All channels on this page run synchronously on the host. Requested payloads inherit LitherarpCancelableRequest unless the row describes another mutable decision.
| Hook | Payload and public members | Timing and effect |
|---|---|---|
MoneyChanged | LitherarpMoneyChangedEventPlayer, Delta, NewBalance | Post-event for any wallet change. This is a high-frequency channel. |
BalanceChangeRequested | LitherarpBalanceChangeRequestPlayer, Kind, PreviousBalance, RequestedBalance, NewBalance, RequestedDelta, Delta, Reason; SetNewBalance, Deny | Universal cancelable cash or bank mutation before commit. Persistence restore is excluded. Compound operations preflight every leg. |
ShopPurchaseRequested | LitherarpShopPurchaseRequestPlayer, EntryId, Cost, Deny | Cancelable before a spawn shop entity purchase. |
ShopPurchaseCompleted | LitherarpShopPurchaseCompletedEventPlayer, EntryId, Cost | Post-event after money and entity spawn commit. |
DealerPurchaseRequested | LitherarpDealerPurchaseRequestPlayer, Kind, ItemId, Price, Deny | Cancelable before a native NPC dealer charges the player. |
DealerPurchaseCompleted | LitherarpDealerPurchaseCompletedEventPlayer, Dealer, ProductKind, ProductId, Quantity, AmountPaid | Host post-event after successful debit and delivery by the native weapon or food dealer. It covers weapons, ammo, kevlar, food, phones and backpacks. Quantity is the amount actually delivered after inventory policy; direct weapon, phone and backpack delivery reports one. AmountPaid is the amount actually charged after BalanceChangeRequested. |
DrugSaleRequested | LitherarpDrugSaleRequestPlayer, DealerKind, Deny | Cancelable before contraband items are consumed. |
DrugSaleCompleted | LitherarpDrugSaleCompletedEventPlayer, DealerKind, UnitsSold, Earnings | Post-event after sale completion. |
PrinterCollectRequested | LitherarpPrinterCollectRequestPlayer, Amount, Deny | Cancelable before stored printer money is credited. A denial leaves it stored. |
PrinterMoneyCollected | LitherarpPrinterMoneyCollectedEventPlayer, Amount | Post-event after printer collection. |
PropertyPurchaseRequested | LitherarpPropertyPurchaseRequestBuyer, PropertyId, Price, Deny | Cancelable before charging for a door group, single door or penthouse. |
PropertyPurchased | LitherarpPropertyPurchasedEventBuyer, PropertyId, Price | Post-event after ownership commits. |
PropertySold | LitherarpPropertySoldEventnullable Seller, SellerSteamId, PropertyId, Refund | Post-event after release or eviction. Offline sellers have no pawn and receive no in-memory refund. |
BankBalanceChanged | LitherarpBankBalanceChangedEventPlayer, Delta, NewBalance | Post-event for any bank change. The game permits bank debt. |
BankOperationRequested | LitherarpBankOperationRequestPlayer, Kind, Amount, Deny | Cancelable before an ATM deposit or withdrawal. |
BankTransferRequested | LitherarpBankTransferRequestSender, RecipientName, Amount, Deny | Cancelable before a player-to-player wire commits. |
SalaryPaymentRequested | LitherarpSalaryPaymentRequestPlayer, JobId, Amount; SetAmount, Deny | Cancelable before any leg of the salary movement. Amount is the post-tax base before a mayor bonus. |
CuffRequested | LitherarpCuffRequestOfficer, Target, Deny | Cancelable before cuffing. |
PlayerCuffed | LitherarpPlayerCuffedEventnullable Officer, Target | Post-event after cuff state commits. |
PlayerUncuffed | LitherarpPlayerUncuffedEventTarget | Post-event for normal uncuff and struggle escape. |
JailRequested | LitherarpJailRequestTarget, nullable Officer, Reason, DurationSeconds; SetDurationSeconds, Deny | Cancelable before arrest or admin jail commits. |
PlayerJailed | LitherarpPlayerJailedEventTarget, nullable Officer, Reason, DurationSeconds | Post-event after jail state commits. |
PlayerReleased | LitherarpPlayerReleasedEventTarget | Post-event after timer, admin or reconnect release. |
ArrestRequested | LitherarpArrestRequestOfficer, Target, ArrestId, Label, DurationSeconds, Deny | Cancelable before an officer arrests a cuffed player. |
FineRequested | LitherarpFineRequestOfficer, Target, FineId, Label, Amount, Deny | Cancelable before a fine is applied. |
FineIssued | LitherarpFineIssuedEventOfficer, Target, FineId, Label, Amount, FromCash, FromBank | Post-event after fine payment allocation. |
WarrantRequested | LitherarpWarrantRequestOfficer, TargetSteamId, TargetName, Reason, Deny | Cancelable before a warrant enters the system. |
WarrantIssued | LitherarpWarrantIssuedEventRequesterSteamId, TargetSteamId, TargetName, Reason | Post-event for a pending mayor-approval warrant. |
RawChatInputRequested | LitherarpRawChatInputRequestPlayer, Text, integer Channel, IsProtectedSystemInput, IsConsumed; SetText, SetChannel, Consume, Deny | Global host input before addon and built-in command dispatch. Text mutations reject blank input and cap it at 300 characters; channels accept 0 through 2. Protected admin-ticket input is observable, but mutation, consumption and denial are ignored by the protected core path. |
ChatMessageRequested | LitherarpChatMessageRequestPlayer, Text, integer Channel; SetText, SetChannel, Deny | Cancelable after sanitize, mute and spam gates, before dispatch. Addon commands are consumed first. SetText rejects blank input and caps it at 300 characters; SetChannel accepts 0 through 2. |
ChatMessageSent | LitherarpChatMessageSentEventPlayer, Text, integer Channel | Post-event after channel dispatch. |
VoteStarted | LitherarpVoteStartedEventKind, InitiatorSteamId, TargetSteamId, Subject | Post-event when a job or demote vote opens. |
VoteFinished | LitherarpVoteFinishedEventKind, Passed, Yes, No, TargetSteamId | Post-event when a vote concludes. |
LotteryEnded | LitherarpLotteryEndedEventWinnerSteamId, WinnerName, Payout | Post-event after the lottery draw. |
HeistStarted | LitherarpHeistStartedEventActor, Payout | Post-event when the City Hall vault opens. |
HeistEnded | LitherarpHeistEndedEventno members | Post-event when the heist vault resets. |
LawToggled | LitherarpLawToggledEventLawId, IsActive, Mayor | Post-event after a predefined law changes. |
TaxRateChanged | LitherarpTaxRateChangedEventNewRate, Mayor | Post-event after the mayor changes tax rate. |
GroupBankOperationRequested | LitherarpGroupBankOperationRequestActor, AccountId, Kind, Amount, Deny | Cancelable before group-account checks and movement. |
GroupBankOperationCompleted | LitherarpGroupBankOperationCompletedEventActor, AccountId, AccountName, Kind, Amount, NewBalance | Post-event after group-account commit. |
ReviveRequested | LitherarpReviveRequestMedic, nullable Target, Deny | Cancelable before the medic success roll. |
ReviveCompleted | LitherarpReviveCompletedEventMedic, nullable Target, Success, Reward | Post-event after the revive attempt, including a failed roll. |
ClinicHealRequested | LitherarpClinicHealRequestPlayer, Cost, HealAmount, Deny | Cancelable before the clinic charges the player. |
ClinicHealCompleted | LitherarpClinicHealCompletedEventPlayer, Cost, HealAmount | Post-event after paid healing. |
TaxiFareRequested | LitherarpTaxiFareRequestPassenger, Fare, Deny | Cancelable before fare billing. |
TaxiFareCompleted | LitherarpTaxiFareCompletedEventPassenger, nullable Driver, Fare, PaidToDriver | Post-event after billing. The driver may already be gone. |
HitContractRequested | LitherarpHitContractRequestClient, Hitman, Target, Amount, Reason, Deny | Cancelable before a new contract charges its client. |
HitContractAccepted | LitherarpHitContractAcceptedEventClientSteamId, HitmanSteamId, TargetSteamId, TargetName, Amount | Post-event after a hitman accepts. |
HitContractCompleted | LitherarpHitContractCompletedEventnullable Hitman, HitmanSteamId, ClientSteamId, TargetSteamId, TargetName, Amount | Post-event after target death and payout. |
HitContractCancelled | LitherarpHitContractCancelledEventClientSteamId, HitmanSteamId, TargetSteamId, Amount, Refunded | Post-event after cancel, refusal or expiry. |
DrugCollectRequested | LitherarpDrugCollectRequestPlayer, Kind, Deny | Cancelable before collecting finished weed or meth products. |
DrugProduced | LitherarpDrugProducedEventPlayer, Kind, ItemId, Quantity, Purity | Post-event when a player-owned drug drop enters the world. |
PhoneCallRequested | LitherarpPhoneCallRequestCaller, PeerSteamId, Deny | Early cancelable hook before callee reachability gates. |
PhoneCallAcceptRequested | LitherarpPhoneCallAcceptRequestAccepter, Caller, Deny | Cancelable after both players resolve, before the ringing call becomes connected. |
PhoneCallStarted | LitherarpPhoneCallStartedEventCallerSteamId, AccepterSteamId | Post-event after both sides connect. |
PhoneCallEnding | LitherarpPhoneCallEndingEventEnderSteamId, PeerSteamId | Notification immediately before a connected call or unanswered ring is cleared. This event is not cancelable. |
PhoneCallEnded | LitherarpPhoneCallEndedEventEnderSteamId, PeerSteamId | Post-event after a call or unanswered ring ends. Peer id zero means an unanswered ring. |
PhoneMessageRequested | LitherarpPhoneMessageRequestSender, PeerSteamId, Body; SetBody, Deny | Cancelable after reachability gates, before delivery. SetBody rejects blank text. |
PhoneMessageSent | LitherarpPhoneMessageSentEventSender, PeerSteamId, Body | Post-event after delivery. |
Economy enums
| Type | Values |
|---|---|
LitherarpBalanceKind | Cash, Bank. |
LitherarpBankOperationKind | Deposit, Withdraw. |
LitherarpDealerPurchaseKind | Weapon, Ammo, Kevlar, Phone, Backpack, Food. |
LitherarpNpcPurchaseDealer | Weapon, Food. |
Balance atomicity
BalanceChangeRequested is the final gameplay cash and bank policy point. Compound operations preflight every balance leg before any leg commits. Use the specific purchase or salary hook for domain intent, and use the balance hook only when the rule truly applies to every balance mutation.