From 43c2f03a72af76f707d74714344db9133055488e Mon Sep 17 00:00:00 2001
From: Wultir <62209995+wultir@users.noreply.github.com>
Date: Sun, 22 Nov 2020 11:22:38 +0100
Subject: [PATCH 1/2] Fix comment.

---
 BondageClub/Scripts/Character.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/BondageClub/Scripts/Character.js b/BondageClub/Scripts/Character.js
index ff1a0ce388..78300e877f 100644
--- a/BondageClub/Scripts/Character.js
+++ b/BondageClub/Scripts/Character.js
@@ -331,7 +331,7 @@ function CharacterOnlineRefresh(Char, data, SourceMemberNumber) {
  */
 function CharacterLoadOnline(data, SourceMemberNumber) {
 
-	// Checks if the NPC already exists and returns it if it's the case
+	// Checks if the character already exists and returns it if it's the case
 	var Char = null;
 	if (data.ID.toString() == Player.OnlineID)
 		Char = Player;
-- 
GitLab


From d1280d4c931c88ee48afca201882791ef94aa821 Mon Sep 17 00:00:00 2001
From: Wultir <62209995+wultir@users.noreply.github.com>
Date: Sun, 22 Nov 2020 11:25:26 +0100
Subject: [PATCH 2/2] Use incrementing counter for character ID instead of
 Character.length

---
 BondageClub/Screens/Character/Login/Login.js       |  1 +
 BondageClub/Screens/Character/Wardrobe/Wardrobe.js |  2 +-
 BondageClub/Scripts/Character.js                   | 10 ++++++----
 3 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/BondageClub/Screens/Character/Login/Login.js b/BondageClub/Screens/Character/Login/Login.js
index 158e20962d..ea10a3d091 100644
--- a/BondageClub/Screens/Character/Login/Login.js
+++ b/BondageClub/Screens/Character/Login/Login.js
@@ -91,6 +91,7 @@ function LoginLoad() {
 
 	// Resets the player and other characters
 	Character = [];
+	NextCharacterId = 1;
 	CharacterReset(0, "Female3DCG");
 	LoginDoNextThankYou();
 	CharacterLoadCSVDialog(Player);
diff --git a/BondageClub/Screens/Character/Wardrobe/Wardrobe.js b/BondageClub/Screens/Character/Wardrobe/Wardrobe.js
index f83d5f78c0..9882b37f5b 100644
--- a/BondageClub/Screens/Character/Wardrobe/Wardrobe.js
+++ b/BondageClub/Screens/Character/Wardrobe/Wardrobe.js
@@ -46,7 +46,7 @@ function WardrobeLoadCharacters(Fast) {
 		if (WardrobeCharacter.length <= P && ((W == null) || !Fast)) {
 
 			// Creates a character
-			CharacterReset(Character.length, "Female3DCG");
+			CharacterReset(NextCharacterId++, "Female3DCG");
 			var C = Character[Character.length - 1];
 			C.AccountName = "Wardrobe-" + P.toString();
 			C.Name = Player.WardrobeCharacterNames[P];
diff --git a/BondageClub/Scripts/Character.js b/BondageClub/Scripts/Character.js
index 78300e877f..9eba88531f 100644
--- a/BondageClub/Scripts/Character.js
+++ b/BondageClub/Scripts/Character.js
@@ -1,5 +1,6 @@
 "use strict";
 var Character = [];
+var NextCharacterId = 1;
 
 /**
  * Loads a character into the buffer, creates it if it does not exist
@@ -107,10 +108,11 @@ function CharacterReset(CharacterID, CharacterAssetFamily) {
 	};
 
 	// If the character doesn't exist, we create it
-	if (CharacterID >= Character.length)
+	var CharacterIndex = Character.findIndex(c => c.ID == CharacterID);
+	if(CharacterIndex == -1)
 		Character.push(NewCharacter);
 	else
-		Character[CharacterID] = NewCharacter;
+		Character[CharacterIndex] = NewCharacter;
 
 	// Creates the inventory and default appearance
 	if (CharacterID == 0) {
@@ -272,7 +274,7 @@ function CharacterLoadNPC(NPCType) {
 			return Character[C];
 
 	// Randomize the new character
-	CharacterReset(Character.length, "Female3DCG");
+	CharacterReset(NextCharacterId++, "Female3DCG");
 	let C = Character[Character.length - 1];
 	C.AccountName = NPCType;
 	CharacterLoadCSVDialog(C);
@@ -350,7 +352,7 @@ function CharacterLoadOnline(data, SourceMemberNumber) {
 			}
 		
 		// Creates the new character from the online template
-		CharacterReset(Character.length, "Female3DCG");
+		CharacterReset(NextCharacterId++, "Female3DCG");
 		Char = Character[Character.length - 1];
 		Char.Name = data.Name;
 		Char.Lover = (data.Lover != null) ? data.Lover : "";
-- 
GitLab