Spaces:
Sleeping
Sleeping
LovecaSim Opcode Reference
This document provides a technical breakdown of all opcodes used by the LovecaSim game engine. Opcodes are processed by the bytecode interpreter in engine_rust_src/src/core/logic/interpreter.rs.
1. Flow Control & Meta
| ID | Name | Description | Example Cards |
|---|---|---|---|
| 1 | RETURN | Ends the current ability execution and returns to the calling state. | LL-bp1-001-R+ |
| 2 | JUMP | Unconditionally jumps to a specific instruction offset in the bytecode. | PL!-PR-005-PR |
| 3 | JUMP_IF_FALSE | Jumps to an offset if the last conditional check (cond) failed. | - |
| 29 | META_RULE | Modifies global gameplay rules (e.g., Cheer mod count). | PL!-pb1-018-P+ |
| 34 | FLAVOR_ACTION | Placeholder for actions that have no mechanical effect but show text/UI. | - |
2. State Modification (Direct)
| ID | Name | Description | Example Cards |
|---|---|---|---|
| 10 | DRAW | Draws X cards from the deck to the hand. |
PL!-PR-005-PR |
| 11 | ADD_BLADES | Adds X Blades to the targeted member slot. |
LL-bp2-001-R+ |
| 12 | ADD_HEARTS | Adds X Hearts of color C to the targeted slot. |
PL!-bp3-008-P |
| 13 | REDUCE_COST | Reduces the cost of the next member played by X. |
LL-bp2-001-R+ |
| 18 | BUFF_POWER | Temporarily increases the power/stats of a member. | LL-bp2-001-R+ |
| 23 | ENERGY_CHARGE | Adds X cards from the top of the deck to the energy zone. |
PL!N-bp3-007-P |
| 37 | SET_SCORE | Sets the player's current score to exactly X. |
PL!S-bp3-019-L |
| 50 | ADD_STAGE_ENERGY | Adds raw energy pips directly to a member slot. | - |
| 81 | ACTIVATE_ENERGY | Forces an energy card to become "Active" (untapped). | LL-bp3-001-R+ |
3. Complex Interactions (Response Required)
| ID | Name | Description | Example Cards |
|---|---|---|---|
| 15 | RECOVER_LIVE | Moves a Live card from the discard pile to the Live Zone. | PL!-PR-003-PR |
| 17 | RECOVER_MEMBER | Moves a Member card from the discard pile to the Hand. | LL-bp1-001-R+ |
| 41 | LOOK_AND_CHOOSE | Looks at X cards from Zone, picks Y to move to Dest. |
LL-bp4-001-R+ |
| 45 | COLOR_SELECT | Prompts the player to choose a heart color (Pink, Red, etc.). | PL!-sd1-003-SD |
| 58 | MOVE_TO_DISCARD | Prompts player to discard X cards from Source. |
PL!-sd1-007-SD |
| 63 | PLAY_FROM_DISCARD | Plays a member directly from the discard pile to a slot. | PL!HS-bp1-002-P |
| 65 | SELECT_MEMBER | Prompts player to select a member on the stage. | PL!-pb1-018-P+ |
| 68 | SELECT_LIVE | Prompts player to select a Live card in the Live Zone. | - |
4. Targeting Opcodes
These opcodes set the target register for subsequent instructions.
- 100: SET_TARGET_SELF
- 101: SET_TARGET_PLAYER
- 102: SET_TARGET_OPPONENT
- 104: SET_TARGET_MEMBER_SELF
- 110: SET_TARGET_MEMBER_SELECT
5. Triggers
| ID | Name | Description |
|---|---|---|
| 1 | ON_PLAY | Fires when the member is played to the stage. |
| 2 | ON_LIVE_START | Fires at the beginning of a Live performance. |
| 3 | ON_LIVE_SUCCESS | Fires when a Live is successfully completed. |
| 6 | CONSTANT | Active as long as the card is in the correct zone. |
| 7 | ACTIVATED | Requires manual activation by the player. |
| 8 | ON_LEAVES | Fires when the member leaves the stage. |
6. Conditions (Check Logic)
Used within abilities to determine if an effect should execute.
- 201: CHECK_HAS_MEMBER (Does the player have a specific member?)
- 204: CHECK_COUNT_HAND (Does the player have
Xcards in hand?) - 206: CHECK_IS_CENTER (Is the member in the Center slot?)
- 213: CHECK_COUNT_ENERGY (Does the player have
Xenergy?) - 221: CHECK_HAS_CHOICE (Did the player make a specific choice in a previous step?)