friendship token

by jkysa88·v1.0.0·Updated 2025-11-03

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)

  1. Install SMAPI first (Stardew Valley's mod loader): download it from smapi.io, run 'install on Windows.bat' and pick your game folder.
  2. Unzip the archive from playbuff and find the folder that contains manifest.json — that folder is the mod.
  3. Copy that whole folder into Stardew Valley/Mods/.
  4. 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.

File & checksum

Filename
FriendshipTokens
File size
13.9 KiB
SHA-256
ff63d567da50a3db08d2c0d96b9dc9e06eb7381382c400082d22eea1ff139d61
Stored at
2026-10-10 10:28