Merge branch 'pose' into 'master'

BUG: Enforce that `Character.ActivePose` is always a string array

See merge request 
This commit is contained in:
BondageProjects 2023-03-22 02:17:20 +00:00
commit 0d6afacd64
9 changed files with 12 additions and 12 deletions
BondageClub
Screens
Online/ChatRoom
Room
Cell
Management
Nursery
PandoraPrison
Photographic
Private
Scripts

View file

@ -3604,7 +3604,7 @@ function ChatRoomSyncPose(data) {
if (!character) return;
// Sets the active pose
character.ActivePose = /** @type {AssetPoseName[]} */(data.Pose);
character.ActivePose = data.Pose;
CharacterRefresh(character, false);
// Update the cached copy in the chatroom

View file

@ -43,7 +43,7 @@ function CellRun() {
* @returns {void} - Nothing
*/
function CellClick() {
if (MouseIn(1885, 25, 90, 90) && Player.CanKneel() && (CellOpenTimer > CurrentTime)) CharacterSetActivePose(Player, ((Player.ActivePose == null) || (Player.ActivePose.length == 0) || (Player.ActivePose[0] == null)) ? "Kneel" : null, true);
if (MouseIn(1885, 25, 90, 90) && Player.CanKneel() && (CellOpenTimer > CurrentTime)) CharacterSetActivePose(Player, (Player.ActivePose.length === 0) ? "Kneel" : null, true);
if (MouseIn(750, 0, 500, 1000)) CharacterSetCurrent(Player);
if (MouseIn(1885, 145, 90, 90)) InformationSheetLoadCharacter(Player);
if (CellOpenTimer < CurrentTime) {

View file

@ -394,7 +394,7 @@ function ManagementClick() {
if (MouseIn(1250, 0, 500, 1000) && !ManagementEmpty) CharacterSetCurrent(ManagementSub);
if (MouseIn(1885, 25, 90, 90) && Player.CanWalk()) CommonSetScreen("Room", "MainHall");
if (MouseIn(1885, 145, 90, 90)) InformationSheetLoadCharacter(Player);
if (MouseIn(1885, 265, 90, 90) && Player.CanKneel()) CharacterSetActivePose(Player, (Player.ActivePose == null) ? "Kneel" : null, true);
if (MouseIn(1885, 265, 90, 90) && Player.CanKneel()) CharacterSetActivePose(Player, (Player.ActivePose.length === 0) ? "Kneel" : null, true);
}
/**

View file

@ -135,7 +135,7 @@ function NurseryClick() {
NurseryGateMsg = true;
NurseryJustClicked = true;
}
if ((MouseX >= 1885) && (MouseX < 1975) && (MouseY >= 505) && (MouseY < 595) && Player.CanKneel()) CharacterSetActivePose(Player, (Player.ActivePose == null) ? "Kneel" : null, true);
if ((MouseX >= 1885) && (MouseX < 1975) && (MouseY >= 505) && (MouseY < 595) && Player.CanKneel()) CharacterSetActivePose(Player, (Player.ActivePose.length === 0) ? "Kneel" : null, true);
}
if (NurserySituation == "AtGate") {
if ((MouseX >= 500) && (MouseX < 1000) && (MouseY >= 0) && (MouseY < 1000)) CharacterSetCurrent(Player);

View file

@ -106,7 +106,7 @@ function PandoraPrisonGuardNewActivity() {
* @returns {void} - Nothing
*/
function PandoraPrisonClick() {
if (MouseIn(1885, 25, 90, 90) && Player.CanKneel()) CharacterSetActivePose(Player, (Player.ActivePose == null) ? "Kneel" : null, true);
if (MouseIn(1885, 25, 90, 90) && Player.CanKneel()) CharacterSetActivePose(Player, (Player.ActivePose.length === 0) ? "Kneel" : null, true);
if ((PandoraPrisonCharacter == null) && MouseIn(750, 0, 500, 1000)) CharacterSetCurrent(Player);
if ((PandoraPrisonCharacter != null) && MouseIn(1000, 0, 500, 1000)) {
if (PandoraPrisonGuard.Stage == "RANDOM") PandoraPrisonGuardNewActivity();

View file

@ -72,7 +72,7 @@ function PhotographicClick() {
}
if ((MouseX >= 1885) && (MouseX < 1975) && (MouseY >= 145) && (MouseY < 235)) InformationSheetLoadCharacter(Player);
if ((MouseX >= 1885) && (MouseX < 1975) && (MouseY >= 265) && (MouseY < 355) && Player.CanInteract()) CommonTakePhoto(750, 0, 500, 1000);
if ((MouseX >= 1885) && (MouseX < 1975) && (MouseY >= 385) && (MouseY < 475) && Player.CanKneel()) CharacterSetActivePose(Player, (Player.ActivePose == null) ? "Kneel" : null, true);
if ((MouseX >= 1885) && (MouseX < 1975) && (MouseY >= 385) && (MouseY < 475) && Player.CanKneel()) CharacterSetActivePose(Player, (Player.ActivePose.length === 0) ? "Kneel" : null, true);
if ((MouseX >= 1885) && (MouseX < 1975) && (MouseY >= 505) && (MouseY < 595) && Player.CanChangeOwnClothes()) CharacterAppearanceLoadCharacter(Player);
}

View file

@ -848,7 +848,7 @@ function PrivateClick() {
if (MouseIn(500, 0, 500, 1000) && !LogQuery("RentRoom", "PrivateRoom")) CharacterSetCurrent(Player);
if (MouseIn(1000, 0, 500, 1000) && !LogQuery("RentRoom", "PrivateRoom")) { NPCTraitDialog(PrivateVendor); CharacterSetCurrent(PrivateVendor); }
if (MouseIn(1885, PrivateButtonTop(0), 90, 90) && Player.CanWalk() && (Player.Cage == null)) PrivateExit();
if (MouseIn(1885, PrivateButtonTop(1), 90, 90) && LogQuery("RentRoom", "PrivateRoom") && Player.CanKneel()) CharacterSetActivePose(Player, (Player.ActivePose == null) ? "Kneel" : null, true);
if (MouseIn(1885, PrivateButtonTop(1), 90, 90) && LogQuery("RentRoom", "PrivateRoom") && Player.CanKneel()) CharacterSetActivePose(Player, (Player.ActivePose.length === 0) ? "Kneel" : null, true);
if (MouseIn(1885, PrivateButtonTop(2), 90, 90) && LogQuery("RentRoom", "PrivateRoom") && Player.CanWalk() && (Player.Cage == null)) CharacterSetCurrent(PrivateVendor);
if (MouseIn(1885, PrivateButtonTop(3), 90, 90) && LogQuery("RentRoom", "PrivateRoom") && Player.CanChangeOwnClothes()) CharacterAppearanceLoadCharacter(Player);
if (MouseIn(1885, PrivateButtonTop(4), 90, 90) && LogQuery("RentRoom", "PrivateRoom") && Player.CanChangeOwnClothes() && LogQuery("Wardrobe", "PrivateRoom")) CommonSetScreen("Character", "Wardrobe");

View file

@ -669,7 +669,7 @@ function CharacterLoadSimple(AccName) {
function CharacterOnlineRefresh(Char, data, SourceMemberNumber) {
if ((Char.ID != 0) && ((Char.MemberNumber == SourceMemberNumber) || (Char.Title == null))) Char.Title = data.Title;
if ((Char.ID != 0) && ((Char.MemberNumber == SourceMemberNumber) || (Char.Nickname == null))) Char.Nickname = data.Nickname;
Char.ActivePose = data.ActivePose;
Char.ActivePose = Array.isArray(data.ActivePose) ? data.ActivePose.filter(i => typeof i === "string") : [];
Char.LabelColor = data.LabelColor;
Char.Creation = data.Creation;
Char.Description = data.Description;
@ -1456,13 +1456,13 @@ function CharacterFullRandomRestrain(C, Ratio, Refresh) {
/**
* Sets a new pose for the character
* @param {Character} C - Character for which to set the pose
* @param {AssetPoseName} NewPose - Name of the pose to set as active
* @param {null | AssetPoseName} NewPose - Name of the pose to set as active or `null` to return to the default pose
* @param {boolean} [ForceChange=false] - TRUE if the set pose(s) should overwrite current active pose(s)
* @returns {void} - Nothing
*/
function CharacterSetActivePose(C, NewPose, ForceChange = false) {
if (NewPose == null || ForceChange || C.ActivePose == null) {
C.ActivePose = [NewPose];
C.ActivePose = (NewPose == null) ? [] : [NewPose];
CharacterRefresh(C, false);
return;
}
@ -1482,7 +1482,7 @@ function CharacterSetActivePose(C, NewPose, ForceChange = false) {
}
// If we reset to base, we remove the poses
if (C.ActivePose.filter(P => P !== "BaseUpper" && P !== "BaseLower").length == 0) C.ActivePose = null;
if (C.ActivePose.filter(P => P !== "BaseUpper" && P !== "BaseLower").length == 0) C.ActivePose = [];
CharacterRefresh(C, false);
}

View file

@ -408,7 +408,7 @@ interface IChatRoomSyncExpressionMessage {
interface IChatRoomSyncPoseMessage {
MemberNumber: number;
Pose: string[] | string;
Pose: AssetPoseName[];
}
interface IChatRoomSyncArousalMessage {