friendship token
Adds invisible friendship rewards to conversations. Can be used in any dialog line - the token is hidden and the sum is only applied once per dialog. Supports multiplayer games.
Screenshots 3 screenshots
About this mod Machine translation
Adds invisible friendship rewards to conversations. Can be used in any dialog line - the token is hidden and the sum is only applied once per dialog. Supports multiplayer games.
FriendshipTokens
🎮 **Invisible dialogue friendship reward system**
A lightweight utility that allows content packs to grant friendship points directly from dialogue text!
---
✨ Core Functions
- **Invisible Token**: Write `[[FT:+250]]` in the dialogue → the player cannot see anything → the dialogue applies +250 Friendship Points
- **One-time application**: Aggregates all tokens across pages and only applies once per dialog
- **Targeted Boost**: `[[FT:Robin:+30]]` Will boost Robin's friendship even when Shane is talking
- **Event Friendly**: Works with most event dialogue lines
- **Multiplayer Security**: Each client applies friendship to their own farmer
🎯 Usage scenarios
**No complex event code required! No custom code required! **
Translators and dialogue modders can adjust relationship progression pacing directly in i18n files.
---
📝 Basic syntax
**Current Speaker**:
- `[[FT:+250]]`、`[[FT:-40]]`
**Specify target by name**:
- `[[FT:Shane:+250]]` or `[[FT:Shane+250]]`
- (not case sensitive, supports internal or display names)
💡 **Tip**: 250 points = 1 heart (original setting)
---
🎮 Usage example
Content Patcher / i18n Example
```json
{
"OnlyShane.sample.1": "...Okay. Take it. [[FT:+40]]",
"OnlyShane.sample.2": "Tell Robin I tried my best. [[FT:Robin:+20]]"
}
```
EditData Example
```json
{
"Action": "EditData",
"Target": "Characters/Dialogue/Shane",
"Entries": {
"Introduction": "Do you consider yourself a good friend in Stardew Valley? [[FT:+250]] [[FT:Robin:+250]]"
}
}
```
Event example
```.../speak Shane "Okay...this is yours. [[FT:+120]]"/
message "Robin nodded. [[FT:Robin:+30]]"/...
```
---
🔧 How it works
- Tokens are removed at build time and before text is rendered
-Tokens are aggregated per dialog and applied in one go
- The current speaker token is applied when there is a speaker
- Target token is applied as soon as the NPC is resolvable
- UI never shows token
---
⚠️ Restrictions
- **NO SPEAKER = NO CURRENT SPEAKER BONUS**: LETTER/TV/SIGNS HAVE NO SPEAKER
- → The target token is still valid (`[[FT:Name:+N]]`), but `[[FT:+N]` is invalid
- Mods using custom dialogue UI may require minor compatibility patches
---
💡 Recommended value
- **Small easter egg dialogue**: ±10 ~ ±40
- **Meaningful moments**: ±60 ~ ±120
- **Scene Highlights** (Confession/Apology): Up to +250 (≈1 heart)
- **Penalty values** are usually lower than bonus values to maintain player comfort
---
🛠️ System requirements
- **SMAPI 4.x** (or newer)
📥 Installation instructions
- Install or update SMAPI
- Place this module into the Mods/ folder
- Run the game
- You should see in the SMAPI console: `[FT] Patched N DialogueBox ctors + getCurrentString()`
---
🔄 Compatibility & Multiplayer
- Compatible with original and Content Patcher dialogues
- **Co-op Mode**: Each player's client applies friendship to their own farmer - no double counting
❓ Troubleshooting
- **Token text appears on screen** → Another UI renders without DialogueBox
- **No change in friendship** → This line has no speaker and uses `[[FT:+N]` → Please use `[[FT:Name:+N]`
- **Target name not found** → Use the NPC's internal name or display name (case insensitive)
---
❓ FAQ
**Q. Is this cheating? **
A. This is a tool. The author chooses the numerical value. We also only apply each dialog once to prevent abuse.
**Q. Is it valid during an event? **
A. Effective for most conversations. message/letters/tv requires the target token.
---
🗓️ Development Plan
- Optional daily cap per NPC
- Optional heart range gating (activated only between X~Y hearts)
- Optional dialog-level default target (`[[FT@Shane]`)
---
**Author**: jkysa88
Install & use Install: SMAPI mod (Stardew Valley standard)
- Install SMAPI first (Stardew Valley's mod loader): download it from smapi.io, run 'install on Windows.bat' and pick your game folder.
- Unzip the archive from playbuff and find the folder that contains manifest.json — that folder is the mod.
- Copy that whole folder into Stardew Valley/Mods/.
- Launch the game through SMAPI (run StardewModdingAPI.exe or set it as the launch option). The console before the title screen lists each mod's load result.
Cheat-style tools may not need SMAPI — unzip and run them as the readme describes. Back up your save before editing it; SMAPI lists failed mods in its console.