---
title: LS Contacts
subtitle: VRChat Contact support for Lastation decks using `<contact[collisiontag]>`
download_title: Download
download_note: Import `LSContacts.unitypackage` into your avatar Unity project (VRChat SDK 3).
download_href: downloads/LSContacts.unitypackage
download_label: Download LSContacts.unitypackage
---

## Overview {#overview}

**LS Contacts** is a system in our worlds that uses the VRChat contact sender feature.
When a deck line uses `<contact[collisiontag]>`, the world sends that event to the player that rolled it's avatar.

<br>

When a supported Lastation world receives this event it executes a `VRC Contact Sender` in this order:
- Enables the Contact object.
- Set `collisionTag` to the received tag from the game.
- Teleport contact sender into player that rolled the card. (triggers the On_Enter event)
- After 1 second clears tag and disables contact object.

<br>

There are two ways to interact with this system:
- Use the prefab we provide above.
- Make your own animator layer and contact system to listen for our `collisiontags` or your own custom ones.

## Requirements {#requirements}

- VRChat SDK 3.0 avatar project (not a world project)
- An avatar you can edit and upload
- Basic familiarity with Unity, Animators, and VRC Contacts.
- Lastation worlds that emit contact events (any deck using `<contact[...]>` tags)
- [Avatar 3.0 Manager](https://github.com/VRLabs/Avatars-3.0-Manager) and [VRCFury](https://vrcfury.com/download/) (prefab path only)

## Installation {#install}

Download **LSContacts.unitypackage** with the button above, then follow **one** of the paths below.

### Prefab install

1. Import the `LSContacts.unitypackage`, `Avatar 3.0 Manager` and `VRCFury` into your avatar project.
2. Drag the **LS Contacts** prefab onto your avatars root.
3. Choose your animator, Two are bundled with the package.
   - Basic: Uses a single pulse to a VRC Parameter Driver to **flash a variable to a specified state**. (i.e Off)

   - Normal: Uses a single pulse to a VRC Parameter Driver to **flip between two specified states**. (i.e On and Off)
           Requires setting up a `ControlVariable` to path to the correct state at a given moment.
4. Use `Avatar 3.0 Manager` to merge whichever animator you selected with your existing FX Animator.
5. Go into your FX Animator and find the layer called `LS_Control` to start setting up what each "ContactEvent" does.
6. Upload and test in one of our supported worlds!

<br>
If your avatar already uses many FX layers, merge carefully and resolve any duplicate parameter names on the Avatar Descriptor.

### Manual setup

1. Import `LSContacts.unitypackage` only if you want reference assets; you do not need the prefab on the avatar.
2. Add **VRC Contact Receiver** components where collisions should be detected.
3. Within the VRC Contact Receiver, set **Receiver Type** to `On Enter`, then set the collision tag to one of our standards (or a custom tag if your deck requires it).
   - The world sends the tag exactly as written in the brackets — spelling and capitalization must match the deck line (e.g. `<contact[LS_Other]>` ≠ `<contact[LS_other]>`).
4. Create or extend an **FX** animator layer that reacts when a contact fires a parameter.
   - The contact parameter does **not** need to be on **VRC Expression Parameters** — only in the animator.

<br><br>

Contact receivers must use the same collisiontag spelling as deck lines (e.g. `<contact[yourTag]>`).
Unless you have a specific reason to use custom defined tags please use our standard below to keep decks cross-compatible.

## Standardized Collision Tags {#standardized-collision-tags}

Deck creators should use these **Lastation standard** collision tags in deck lines so avatars and worlds stay cross-compatible. In the Deck Builder, each tag is written as `<contact[TagName]>` — spelling and capitalization must match exactly.

![Standardized collision tags used in Lastation decks](assets/ls-standard-collision-tags.png)

| Collision Tag | Example deck line |
|-----|-------------------|
| `LS_Shirt` | `<contact[LS_Shirt]>` |
| `LS_Skirt` | `<contact[LS_Skirt]>` |
| `LS_Underwear` | `<contact[LS_Underwear]>` |
| `LS_Bra` | `<contact[LS_Bra]>` |
| `LS_Socks` | `<contact[LS_Socks]>` |
| `LS_Glasses` | `<contact[LS_Glasses]>` |
| `LS_Shoes` | `<contact[LS_Shoes]>` |
| `LS_Jacket` | `<contact[LS_Jacket]>` |
| `LS_Pants` | `<contact[LS_Pants]>` |
| `LS_Body` | `<contact[LS_Body]>` |
| `LS_NSFW` | `<contact[LS_NSFW]>` |
| `LS_Other` | `<contact[LS_Other]>` |
| `LS_Accessory1` | `<contact[LS_Accessory1]>` |
| `LS_Accessory2` | `<contact[LS_Accessory2]>` |
| `LS_Accessory3` | `<contact[LS_Accessory3]>` |
| `LS_Accessory4` | `<contact[LS_Accessory4]>` |

- **Collision tag** — the text inside the brackets (e.g. `LS_Shirt`). Must match the **Collision Tag** on the avatar's VRC Contact Receiver and whatever that receiver drives in your animator.
- **Accessory slots** — use `LS_Accessory1`–`LS_Accessory4` for extra wearables that do not fit the named slots above.
- **LS_Other** — catch-all when nothing else fits; prefer a named slot when you can.
- **Local player only** — the world sends the event to the local player's receiver (the person whose turn triggered the line).

Avatar setup: add a contact receiver (or use the LS Contacts prefab) per tag you want to react to, each set to **On Enter** with the same collision tag as the deck line.

## Testing in-world {#testing}

1. Upload your avatar with LS Contacts configured.
2. Join a Lastation world that loads a deck containing `<contact[yourEvent]>` lines.
3. Trigger a line that includes your event name and confirm your avatar reacts.
4. If nothing happens, verify the event name spelling (case-sensitive), that you're the local player for that line, and that the receiver is active on your uploaded avatar.

## Troubleshooting {#troubleshooting}

| Issue | Things to check |
|-------|-----------------|
| No reaction in-world | Event name matches deck tag; receiver enabled; correct avatar uploaded |
| Works in editor, not in VRChat | Build/upload pipeline; parameters synced on descriptor |
| Wrong animation plays | Duplicate or conflicting FX layers; parameter drivers |
| Deck never sends contacts | Deck line actually contains `<contact[...]>`; lint passed when publishing |

For deck-side contact syntax, see **Help** on the [Deck Builder](index.html). For community support, use the Discord link in the footer.
