Social Move


Researched by SuperSaiyajinStackZ, Version: 0.1.0.


Some notes

  • There are 15 Social Moves in game.
  • The first Social Move starts at 0x3EE of the slot.
  • The size of the Social Move Structure is: 0x8 (8) bytes.
  • The full size for the Social Move section is: 0x78 bytes ( 15 * 0x8 ).

  • NOTE: The final Offset varies with the amount of items you have in your house, see Social Move Offset for how to get the proper final Offset.

Structure

You can find a C++ structure for the Social Moves below.

struct SocialMove {
	enum class Flag : uint8_t { Locked = 0x0, Unlocked = 0x1, Blocked = 0x2 };

	Flag Status = Flag::Locked; // The Status of the Social Move; 0x0.
	uint8_t Unknown1[0x3] = { 0x0 }; // Unknown; 0x1 - 0x3.
	uint8_t Level = 0x0; // The Level of the Social Move; 0x4.
	uint8_t Unknown2 = 0x0; // Unknown; 0x5.
	uint8_t BlockedHours = 0x0; // The hours for how long it's blocked; 0x6.
	uint8_t Unknown3 = 0x0; // Unknown; 0x7.
};

Social Move Offset

The Social Move final offset depends on how many items you have in your House.

The amount of items you have in your house is stored at byte 0xD6 of the SavSlot’s Data.

See below for a way how to get the final offset.

/*
	SlotData is the data of the SavSlot.
	SocialMoveIdx is the Social Move index ( 0 - 14 ).
*/
uint32_t GetOffset(uint8_t *SlotData, uint8_t SocialMoveIdx) {
	if (SocialMoveIdx >= 15) return 0; // Out of scope. Only 0 - 14 is valid.

	return 0x3EE + (SocialMoveIdx * 0x8) + (SlotData[0xD6] * 0x6);

	/*
		If you instead want to access it directly from the SavData instead of the SlotData, rework it like this:
		Slot being '1' for Slot 1, '2' for Slot 2 etc.

		return (Slot * 0x1000) + 0x3EE + (SocialMoveIdx * 0x8) + (SavData[(Slot * 0x1000) + 0xD6] * 0x6);
	*/
};

Social Move List

You can find a list with the base offsets for each Social Move below in the Table.

Social Move Name Start Offset End Offset
Chit-Chat 0x0 0x7
Entertain 0x8 0xF
Hug 0x10 0x17
Brag 0x18 0x1F
Apologize 0x20 0x27
Sweet Talk 0x28 0x2F
Flirt 0x30 0x37
Blow Kiss 0x38 0x3F
Kiss 0x40 0x47
Show Off Body 0x48 0x4F
Annoy 0x50 0x57
Insult 0x58 0x5F
Threaten 0x60 0x67
Rude Gesture 0x68 0x6F
Karate Moves 0x70 0x77

Social Move Flags

The flags say, if the Social Move is one of those:

  • Locked
  • Unlocked
  • Blocked

It is stored at byte 0x0 in the structure of the Social Moves.

Below you will find a table with the values and the flags.

Flag Value
Locked 0x0
Unlocked 0x1
Blocked 0x2

Social Move Levels

The Social Move Level is stored at byte 0x4 in the structure of the Social Moves.

The valid level range is: 0x0 for Level 1 up to 0x2 for Level 3.


Social Move Blocked Hours

The amount of hours the Social Move is blocked is stored at byte 0x6 in the structure of the Social Moves.

If the Social Move gets blocked, it sets that byte to 0xC which is 12 and means 12 Hours.

Every full hour, that value will decrease for 0x1.