diff --git a/BondageClub/Assets/Female3DCG/Activity/GagKiss.png b/BondageClub/Assets/Female3DCG/Activity/GagKiss.png
new file mode 100644
index 0000000000000000000000000000000000000000..23e3e05c0eb8a045cab52f48cb327b8740d46c05
Binary files /dev/null and b/BondageClub/Assets/Female3DCG/Activity/GagKiss.png differ
diff --git a/BondageClub/Assets/Female3DCG/Activity/MoanGag.png b/BondageClub/Assets/Female3DCG/Activity/MoanGag.png
new file mode 100644
index 0000000000000000000000000000000000000000..0b8895bb85176a30c688b4105345b2cb92b7625c
Binary files /dev/null and b/BondageClub/Assets/Female3DCG/Activity/MoanGag.png differ
diff --git a/BondageClub/Assets/Female3DCG/Activity/MoanGagAngry.png b/BondageClub/Assets/Female3DCG/Activity/MoanGagAngry.png
new file mode 100644
index 0000000000000000000000000000000000000000..68f2168795b8456c2ce22f966fa91c616aebcc70
Binary files /dev/null and b/BondageClub/Assets/Female3DCG/Activity/MoanGagAngry.png differ
diff --git a/BondageClub/Assets/Female3DCG/Activity/MoanGagGroan.png b/BondageClub/Assets/Female3DCG/Activity/MoanGagGroan.png
new file mode 100644
index 0000000000000000000000000000000000000000..624834f3ee4093c6111714dac0b17f7e3b2d28ec
Binary files /dev/null and b/BondageClub/Assets/Female3DCG/Activity/MoanGagGroan.png differ
diff --git a/BondageClub/Assets/Female3DCG/Activity/MoanGagTalk.png b/BondageClub/Assets/Female3DCG/Activity/MoanGagTalk.png
new file mode 100644
index 0000000000000000000000000000000000000000..de052084009ac4f18045ce81f5febbd224c63fe2
Binary files /dev/null and b/BondageClub/Assets/Female3DCG/Activity/MoanGagTalk.png differ
diff --git a/BondageClub/Assets/Female3DCG/Activity/MoanGagWhimper.png b/BondageClub/Assets/Female3DCG/Activity/MoanGagWhimper.png
new file mode 100644
index 0000000000000000000000000000000000000000..d4fee0e0eba7f5bae5071847116b3a3dbbaa6c89
Binary files /dev/null and b/BondageClub/Assets/Female3DCG/Activity/MoanGagWhimper.png differ
diff --git a/BondageClub/Assets/Female3DCG/Female3DCG.js b/BondageClub/Assets/Female3DCG/Female3DCG.js
index 9d67f08f39fa5f51aa122e87f16c716a27619654..24f270325725d0f7744a3b6a9452802106d456cd 100644
--- a/BondageClub/Assets/Female3DCG/Female3DCG.js
+++ b/BondageClub/Assets/Female3DCG/Female3DCG.js
@@ -2251,7 +2251,7 @@ var AssetFemale3DCG = [
 		Top: 0,
 		Effect: ["BlockMouth", "GagNormal"],
 		Zone: [[100, 130, 100, 70]],
-		Activity: ["Bite", "Kiss", "FrenchKiss", "PoliteKiss", "Lick", "Nibble", "Caress", "HandGag", "TickleItem", "RubItem", "RollItem", "PenetrateSlow", "PenetrateFast"],
+		Activity: ["Bite", "Kiss", "FrenchKiss", "PoliteKiss", "Lick", "Nibble", "Caress", "HandGag", "TickleItem", "RubItem", "RollItem", "PenetrateSlow", "PenetrateFast", "MoanGag", "MoanGagTalk", "MoanGagWhimper", "MoanGagGroan", "MoanGagAngry", "GagKiss"],
 		Asset: [
 			{ Name: "ClothGag", Value: 15, Difficulty: -4, Time: 10, DefaultColor: "#B0B0B0", BuyGroup: "ClothGag", Prerequisite: "GagFlat", Effect: ["BlockMouth", "GagVeryLight"], AllowEffect: ["BlockMouth", "GagVeryLight", "GagLight", "GagEasy"], AllowType: ["Small", "Cleave", "OTM", "OTN"], ExpressionTrigger: [{ Name: "DroolSides", Group: "Fluids", Timer: 30 }], Extended: true },
 			{
@@ -3455,6 +3455,11 @@ var ActivityFemale3DCG = [
 		TargetSelf: ["ItemHands", "ItemArms", "ItemBoots", "ItemBreast", "ItemNipples"],
 		Prerequisite: ["ZoneAccessible", "UseMouth"]
 	},
+	{
+		Name: "GagKiss",
+		MaxProgress: 55,
+		Prerequisite: ["ZoneAccessible", "UseMouth", "TargetMouthBlocked"]
+	},
 	{
 		Name: "FrenchKiss",
 		MaxProgress: 70,
@@ -3583,6 +3588,36 @@ var ActivityFemale3DCG = [
 		TargetSelf: ["ItemMouth"],
 		Prerequisite: ["UseHands"]
 	},
+	{
+		Name: "MoanGag",
+		MaxProgress: 60,
+		TargetSelf: ["ItemMouth"],
+		Prerequisite: ["IsGagged", "SelfOnly"]
+	},
+	{
+		Name: "MoanGagTalk",
+		MaxProgress: 10,
+		TargetSelf: ["ItemMouth"],
+		Prerequisite: ["IsGagged", "SelfOnly"]
+	},
+	{
+		Name: "MoanGagWhimper",
+		MaxProgress: 40,
+		TargetSelf: ["ItemMouth"],
+		Prerequisite: ["IsGagged", "SelfOnly"]
+	},
+	{
+		Name: "MoanGagAngry",
+		MaxProgress: 10,
+		TargetSelf: ["ItemMouth"],
+		Prerequisite: ["IsGagged", "SelfOnly"]
+	},
+	{
+		Name: "MoanGagGroan",
+		MaxProgress: 30,
+		TargetSelf: ["ItemMouth"],
+		Prerequisite: ["IsGagged", "SelfOnly"]
+	},
 	{
 		Name: "MasturbateTongue",
 		MaxProgress: 100,
diff --git a/BondageClub/Screens/Character/Preference/ActivityDictionary.csv b/BondageClub/Screens/Character/Preference/ActivityDictionary.csv
index 77f995102453848f6f397be77b26df6895fec8c3..eed00684efcc45043c17d0e036a52200e6d37b1c 100644
--- a/BondageClub/Screens/Character/Preference/ActivityDictionary.csv
+++ b/BondageClub/Screens/Character/Preference/ActivityDictionary.csv
@@ -35,6 +35,12 @@ ActivityRubItem,Item Rub
 ActivityRollItem,Item Roll
 ActivityPourItem,Item Pour
 ActivityShockItem,Item Shock
+ActivityMoanGag,Moan into Gag
+ActivityMoanGagWhimper,Whimper into Gag
+ActivityMoanGagAngry,Shout into Gag
+ActivityMoanGagGroan,Groan into Gag
+ActivityMoanGagTalk,Talk into Gag
+ActivityGagKiss,Kiss on Gag
 Orgasm0,"SourceCharacter trembles and moans loudly, getting a powerful orgasm."
 Orgasm1,"SourceCharacter thrashes and loses all control, getting an intense orgasm."
 Orgasm2,"SourceCharacter screams silently and rocks her hips, getting a wonderful orgasm."
@@ -242,6 +248,13 @@ ChatSelf-ItemMouth-Nibble,SourceCharacter nibbles her lips.
 ChatSelf-ItemMouth-Caress,SourceCharacter caresses and wipes her mouth clean.
 ChatSelf-ItemMouth-Bite,SourceCharacter bites her lips.
 ChatSelf-ItemMouth-HandGag,SourceCharacter clamps her hand over her mouth.
+ChatSelf-ItemMouth-MoanGag,SourceCharacter moans into her gag.
+ChatSelf-ItemMouth-MoanGagWhimper,SourceCharacter whimpers pleadingly into her gag.
+ChatSelf-ItemMouth-MoanGagAngry,SourceCharacter screams furiously into her gag.
+ChatSelf-ItemMouth-MoanGagGroan,SourceCharacter groans desperately into her gag.
+ChatSelf-ItemMouth-MoanGagGroan,SourceCharacter groans desperately into her gag.
+ChatSelf-ItemMouth-MoanGagTalk,SourceCharacter mumbles incoherently into her gag.
+ChatOther-ItemMouth-GagKiss,SourceCharacter gives TargetCharacter a kiss on her gag.
 ChatOther-ItemMouth-Bite,SourceCharacter bites TargetCharacter's lips.
 ChatOther-ItemMouth-Kiss,SourceCharacter kisses TargetCharacter's lips.
 ChatOther-ItemMouth-FrenchKiss,SourceCharacter shares a long French kiss with TargetCharacter.
diff --git a/BondageClub/Scripts/Activity.js b/BondageClub/Scripts/Activity.js
index 38e1ec03c3cddeaebf7380f0f8223760180fac10..f7e8613f22f3598cef027c8b8af83736aed38d6d 100644
--- a/BondageClub/Scripts/Activity.js
+++ b/BondageClub/Scripts/Activity.js
@@ -104,6 +104,9 @@ function ActivityDialogBuild(C) {
 					for (let P = 0; P < Activity.Prerequisite.length; P++) {
 						if ((Activity.Prerequisite[P] == "UseMouth") && (Player.IsMouthBlocked() || !Player.CanTalk())) Allow = false;
 						else if ((Activity.Prerequisite[P] == "UseTongue") && Player.IsMouthBlocked()) Allow = false;
+						else if ((Activity.Prerequisite[P] == "TargetMouthBlocked") && !C.IsMouthBlocked()) Allow = false;
+						else if ((Activity.Prerequisite[P] == "IsGagged") && Player.CanTalk()) Allow = false;
+						else if ((Activity.Prerequisite[P] == "SelfOnly") && C.ID != 0) Allow = false;
 						else if ((Activity.Prerequisite[P] == "UseHands") && !Player.CanInteract()) Allow = false;
 						else if ((Activity.Prerequisite[P] == "UseArms") && (!Player.CanInteract() && (InventoryGet(Player, "ItemArms") || InventoryGroupIsBlocked(Player, "ItemArms")))) Allow = false;
 						else if ((Activity.Prerequisite[P] == "UseFeet") && !Player.CanWalk()) Allow = false;