diff --git a/src/js/DefaultRules.js b/src/js/DefaultRules.js
index 8b565adae01fc363914756ac81c9e55beec6adcb..4abf3903b1d5b1913402e0074e92743e4009043f 100644
--- a/src/js/DefaultRules.js
+++ b/src/js/DefaultRules.js
@@ -46,6 +46,8 @@ globalThis.DefaultRules = (function() {
 		if (slave.fuckdoll === 0) {
 			ProcessClothing(slave, rule);
 			ProcessCollar(slave, rule);
+			ProcessMask(slave, rule);
+			ProcessGag(slave, rule);
 			ProcessEyewear(slave, rule);
 			ProcessEarwear(slave, rule);
 			ProcessDildos(slave, rule);
@@ -206,9 +208,6 @@ globalThis.DefaultRules = (function() {
 				if (rule.collar === "preg biometrics" && slave.preg <= -1 && slave.ovaries === 0 && slave.mpreg === 0) {
 					slave.collar = "none";
 					r += `${slave.slaveName} cannot utilize preg biometrics. `;
-				} else if ((rule.collar === "massive dildo gag" && slave.skill.oral <= 50)) {
-					slave.collar = "none";
-					r += `${slave.slaveName} lacks the oral skill to successfully keep the massive dildo gag in ${his} throat. `;
 				} else {
 					slave.collar = rule.collar;
 				}
@@ -216,7 +215,7 @@ globalThis.DefaultRules = (function() {
 					r += `${slave.slaveName} has been given no collar.`;
 				} else if ((slave.collar === "pretty jewelry")) {
 					r += `${slave.slaveName} has been given ${slave.collar}.`;
-				} else if ((["ball gag", "bell collar", "bit gag", "bowtie", "dildo gag", "massive dildo gag", "neck corset", "porcelain mask"].includes(slave.collar))) {
+				} else if ((["bell collar", "bowtie", "neck corset"].includes(slave.collar))) {
 					r += `${slave.slaveName} has been given a ${slave.collar}.`;
 				} else {
 					r += `${slave.slaveName} has been given a ${slave.collar} collar.`;
@@ -225,6 +224,49 @@ globalThis.DefaultRules = (function() {
 		}
 	}
 
+	/**
+	 * @param {App.Entity.SlaveState} slave
+	 * @param {App.RA.RuleSetters} rule
+	 */
+	function ProcessMask(slave, rule) {
+		// apply faceAccessory to slave
+		if ((rule.faceAccessory !== undefined) && (rule.faceAccessory !== null)) {
+			if (slave.faceAccessory !== rule.faceAccessory) {
+				r += "<br>";
+				slave.faceAccessory = rule.faceAccessory;
+				if (slave.faceAccessory === "none") {
+					r += `${slave.slaveName} has had their mask removed.`;
+				} else {
+					r += `${slave.slaveName} has been given a ${slave.faceAccessory}.`;
+				}
+			}
+		}
+	}
+
+	/**
+	 * @param {App.Entity.SlaveState} slave
+	 * @param {App.RA.RuleSetters} rule
+	 */
+	function ProcessGag(slave, rule) {
+		// apply mouthAccessory to slave
+		if ((rule.mouthAccessory !== undefined) && (rule.mouthAccessory !== null)) {
+			if (slave.mouthAccessory !== rule.mouthAccessory) {
+				r += "<br>";
+				if ((rule.mouthAccessory === "massive dildo gag" && slave.skill.oral <= 50)) {
+					slave.mouthAccessory = "none";
+					r += `${slave.slaveName} lacks the oral skill to successfully keep the massive dildo gag in ${his} throat. `;
+				} else {
+					slave.mouthAccessory = rule.mouthAccessory;
+				}
+				if (slave.mouthAccessory === "none") {
+					r += `${slave.slaveName} has been given no gag.`;
+				} else {
+					r += `${slave.slaveName} has been given a ${slave.mouthAccessory}.`;
+				}
+			}
+		}
+	}
+
 	/**
 	 * @param {App.Entity.SlaveState} slave
 	 * @param {App.RA.RuleSetters} rule
diff --git a/src/js/rulesAssistantOptions.js b/src/js/rulesAssistantOptions.js
index 27554ebb74a037bebae672b5144a0a41b47c159f..08d195385554f6056bd3aad5df7c7d06573944b0 100644
--- a/src/js/rulesAssistantOptions.js
+++ b/src/js/rulesAssistantOptions.js
@@ -1573,6 +1573,8 @@ globalThis.rulesAssistantOptions = (function() {
 			super("appearance", "Appearance", tabButtons);
 			this.appendChild(new ClothesList());
 			this.appendChild(new CollarList());
+			this.appendChild(new GagList());
+			this.appendChild(new MaskList());
 			this.appendChild(new ShoeList());
 			this.appendChild(new CorsetList());
 			this.appendChild(new GlovesList());
@@ -1822,6 +1824,21 @@ globalThis.rulesAssistantOptions = (function() {
 		}
 	}
 
+	class MaskList extends ListSelector {
+		constructor() {
+			super("Mask", isItemAccessible.array(App.Data.misc.faceAccessory ));
+			this.setValue(current_rule.set.faceAccessory );
+			this.onchange = (value) => current_rule.set.faceAccessory  = value;
+		}
+	}
+
+	class GagList extends ListSelector {
+		constructor() {
+			super("Gag", isItemAccessible.array(App.Data.misc.mouthAccessory ));
+			this.setValue(current_rule.set.mouthAccessory );
+			this.onchange = (value) => current_rule.set.mouthAccessory = value;
+		}
+	}
 	class ShoeList extends ListSelector {
 		constructor() {
 			super("Shoes", isItemAccessible.array(App.Data.misc.shoes));