Geoffrey Horsington 4 роки тому
батько
коміт
62c6a25daa
56 змінених файлів з 725 додано та 256 видалено
  1. 5 5
      Assembly-CSharp.sln
  2. 19 17
      Assembly-CSharp/Assembly-CSharp.csproj
  3. 1 1
      Assembly-CSharp/BaseKagManager.cs
  4. 1 1
      Assembly-CSharp/BasePhotoCustomObject.cs
  5. 1 1
      Assembly-CSharp/BasePhotoWindowManager.cs
  6. 3 7
      Assembly-CSharp/BodyCtrlData.cs
  7. 4 4
      Assembly-CSharp/CMSystem.cs
  8. 4 4
      Assembly-CSharp/CharacterMgr.cs
  9. 2 2
      Assembly-CSharp/ControllerShortcutSettingData.cs
  10. 20 0
      Assembly-CSharp/DailyMgr.cs
  11. 1 1
      Assembly-CSharp/DeskManager.cs
  12. 3 3
      Assembly-CSharp/DynamicBone.cs
  13. 1 1
      Assembly-CSharp/DynamicSkirtBone.cs
  14. 1 1
      Assembly-CSharp/EditMod.cs
  15. 18 18
      Assembly-CSharp/ElbowKneeIKData.cs
  16. 4 1
      Assembly-CSharp/EmpireLifeModeAPI.cs
  17. 1 1
      Assembly-CSharp/EmpireLifeModeManager.cs
  18. 1 1
      Assembly-CSharp/FacilityManager.cs
  19. 15 1
      Assembly-CSharp/FreeModeItemLifeMode.cs
  20. 39 20
      Assembly-CSharp/FreeSkillSelect.cs
  21. 7 7
      Assembly-CSharp/FullBodyIKCtrl.cs
  22. 2 2
      Assembly-CSharp/GameMain.cs
  23. 1 1
      Assembly-CSharp/GameModeManager.cs
  24. 59 35
      Assembly-CSharp/GameUty.cs
  25. 91 31
      Assembly-CSharp/HandFootIKData.cs
  26. 2 2
      Assembly-CSharp/HandSignShortcut.cs
  27. 43 2
      Assembly-CSharp/IKCtrlData.cs
  28. 1 1
      Assembly-CSharp/Kasizuki/KasizukiManager.cs
  29. 12 1
      Assembly-CSharp/LimbIKData.cs
  30. 3 3
      Assembly-CSharp/Maid.cs
  31. 1 1
      Assembly-CSharp/MaidParts.cs
  32. 1 1
      Assembly-CSharp/MaidProp.cs
  33. 11 0
      Assembly-CSharp/MaidStatus/Feeling.cs
  34. 153 0
      Assembly-CSharp/MaidStatus/PersonalEventBlocker.cs
  35. 14 1
      Assembly-CSharp/MaidStatus/Status.cs
  36. 1 1
      Assembly-CSharp/Menu.cs
  37. 1 1
      Assembly-CSharp/Misc.cs
  38. 1 1
      Assembly-CSharp/ModCompile.cs
  39. 2 2
      Assembly-CSharp/OvrIK.cs
  40. 1 1
      Assembly-CSharp/PhotoModeSaveAndLoad.cs
  41. 1 1
      Assembly-CSharp/PlayerStatus/Status.cs
  42. 6 0
      Assembly-CSharp/PrivateEventListUnit.cs
  43. 1 1
      Assembly-CSharp/PrivateEventManager.cs
  44. 39 8
      Assembly-CSharp/PrivateEventSelectPanel.cs
  45. 4 0
      Assembly-CSharp/SceneFreeModeSelectManager.cs
  46. 1 1
      Assembly-CSharp/SceneNPCEdit/SaveData.cs
  47. 48 25
      Assembly-CSharp/Schedule/ScheduleAPI.cs
  48. 10 2
      Assembly-CSharp/Schedule/ScheduleCSVData.cs
  49. 22 3
      Assembly-CSharp/ScheduleTaskCtrl.cs
  50. 1 1
      Assembly-CSharp/ScriptManager.cs
  51. 24 24
      Assembly-CSharp/ShoulderThighIKData.cs
  52. 1 1
      Assembly-CSharp/WindowPartsFingerPreset.cs
  53. 6 3
      Assembly-CSharp/YotogiResultManager.cs
  54. 4 0
      Assembly-CSharp/YotogiSkillListManager.cs
  55. 1 1
      Assembly-CSharp/YotogiSkillSelectManager.cs
  56. 5 1
      Assembly-CSharp/YotogiSubCharacterSelectManager.cs

+ 5 - 5
Assembly-CSharp.sln

@@ -3,7 +3,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00
 # Visual Studio 15
 VisualStudioVersion = 15.0.26228.4
 MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Assembly-CSharp", "Assembly-CSharp\Assembly-CSharp.csproj", "{36DED01E-9E94-43B2-837D-CE9E60164CEF}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Assembly-CSharp", "Assembly-CSharp\Assembly-CSharp.csproj", "{ADC99AE5-80B8-4837-90A4-0111B739A360}"
 EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -11,10 +11,10 @@ Global
 		Release|Any CPU = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{36DED01E-9E94-43B2-837D-CE9E60164CEF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{36DED01E-9E94-43B2-837D-CE9E60164CEF}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{36DED01E-9E94-43B2-837D-CE9E60164CEF}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{36DED01E-9E94-43B2-837D-CE9E60164CEF}.Release|Any CPU.Build.0 = Release|Any CPU
+		{ADC99AE5-80B8-4837-90A4-0111B739A360}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{ADC99AE5-80B8-4837-90A4-0111B739A360}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{ADC99AE5-80B8-4837-90A4-0111B739A360}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{ADC99AE5-80B8-4837-90A4-0111B739A360}.Release|Any CPU.Build.0 = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE

+ 19 - 17
Assembly-CSharp/Assembly-CSharp.csproj

@@ -4,7 +4,7 @@
   <PropertyGroup>
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProjectGuid>{36DED01E-9E94-43B2-837D-CE9E60164CEF}</ProjectGuid>
+    <ProjectGuid>{ADC99AE5-80B8-4837-90A4-0111B739A360}</ProjectGuid>
     <OutputType>Library</OutputType>
     <RootNamespace>Assembly-CSharp</RootNamespace>
     <AssemblyName>Assembly-CSharp</AssemblyName>
@@ -34,52 +34,52 @@
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="Assembly-CSharp-firstpass">
-      <HintPath>A:\Gams\KISS\CMUlt\KISS\COM3D2\COM3D2x64_Data\Managed\Assembly-CSharp-firstpass.dll</HintPath>
+      <HintPath>A:\com3d2_up144\data\COM3D2x64_Data\Managed\Assembly-CSharp-firstpass.dll</HintPath>
     </Reference>
     <Reference Include="Assembly-UnityScript-firstpass">
-      <HintPath>A:\Gams\KISS\CMUlt\KISS\COM3D2\COM3D2x64_Data\Managed\Assembly-UnityScript-firstpass.dll</HintPath>
+      <HintPath>A:\com3d2_up144\data\COM3D2x64_Data\Managed\Assembly-UnityScript-firstpass.dll</HintPath>
     </Reference>
     <Reference Include="FoveUnityPlugin">
-      <HintPath>A:\Gams\KISS\CMUlt\KISS\COM3D2\COM3D2x64_Data\Managed\FoveUnityPlugin.dll</HintPath>
+      <HintPath>A:\com3d2_up144\data\COM3D2x64_Data\Managed\FoveUnityPlugin.dll</HintPath>
     </Reference>
     <Reference Include="Ionic.Zlib">
-      <HintPath>A:\Gams\KISS\CMUlt\KISS\COM3D2\COM3D2x64_Data\Managed\Ionic.Zlib.dll</HintPath>
+      <HintPath>A:\com3d2_up144\data\COM3D2x64_Data\Managed\Ionic.Zlib.dll</HintPath>
     </Reference>
     <Reference Include="JsonFx.Json">
-      <HintPath>A:\Gams\KISS\CMUlt\KISS\COM3D2\COM3D2x64_Data\Managed\JsonFx.Json.dll</HintPath>
+      <HintPath>A:\com3d2_up144\data\COM3D2x64_Data\Managed\JsonFx.Json.dll</HintPath>
     </Reference>
     <Reference Include="LeapCSharp.NET3.5">
-      <HintPath>A:\Gams\KISS\CMUlt\KISS\COM3D2\COM3D2x64_Data\Managed\LeapCSharp.NET3.5.dll</HintPath>
+      <HintPath>A:\com3d2_up144\data\COM3D2x64_Data\Managed\LeapCSharp.NET3.5.dll</HintPath>
     </Reference>
     <Reference Include="System">
-      <HintPath>A:\Gams\KISS\CMUlt\KISS\COM3D2\COM3D2x64_Data\Managed\System.dll</HintPath>
+      <HintPath>A:\com3d2_up144\data\COM3D2x64_Data\Managed\System.dll</HintPath>
     </Reference>
     <Reference Include="System.Core">
-      <HintPath>A:\Gams\KISS\CMUlt\KISS\COM3D2\COM3D2x64_Data\Managed\System.Core.dll</HintPath>
+      <HintPath>A:\com3d2_up144\data\COM3D2x64_Data\Managed\System.Core.dll</HintPath>
     </Reference>
     <Reference Include="System.Drawing">
-      <HintPath>A:\Gams\KISS\CMUlt\KISS\COM3D2\COM3D2x64_Data\Managed\System.Drawing.dll</HintPath>
+      <HintPath>A:\com3d2_up144\data\COM3D2x64_Data\Managed\System.Drawing.dll</HintPath>
     </Reference>
     <Reference Include="System.Windows.Forms">
-      <HintPath>A:\Gams\KISS\CMUlt\KISS\COM3D2\COM3D2x64_Data\Managed\System.Windows.Forms.dll</HintPath>
+      <HintPath>A:\com3d2_up144\data\COM3D2x64_Data\Managed\System.Windows.Forms.dll</HintPath>
     </Reference>
     <Reference Include="System.Xml">
-      <HintPath>A:\Gams\KISS\CMUlt\KISS\COM3D2\COM3D2x64_Data\Managed\System.Xml.dll</HintPath>
+      <HintPath>A:\com3d2_up144\data\COM3D2x64_Data\Managed\System.Xml.dll</HintPath>
     </Reference>
     <Reference Include="System.Xml.Linq">
-      <HintPath>A:\Gams\KISS\CMUlt\KISS\COM3D2\COM3D2x64_Data\Managed\System.Xml.Linq.dll</HintPath>
+      <HintPath>A:\com3d2_up144\data\COM3D2x64_Data\Managed\System.Xml.Linq.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine">
-      <HintPath>A:\Gams\KISS\CMUlt\KISS\COM3D2\COM3D2x64_Data\Managed\UnityEngine.dll</HintPath>
+      <HintPath>A:\com3d2_up144\data\COM3D2x64_Data\Managed\UnityEngine.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.UI">
-      <HintPath>A:\Gams\KISS\CMUlt\KISS\COM3D2\COM3D2x64_Data\Managed\UnityEngine.UI.dll</HintPath>
+      <HintPath>A:\com3d2_up144\data\COM3D2x64_Data\Managed\UnityEngine.UI.dll</HintPath>
     </Reference>
     <Reference Include="Win32">
-      <HintPath>A:\Gams\KISS\CMUlt\KISS\COM3D2\COM3D2x64_Data\Managed\Win32.dll</HintPath>
+      <HintPath>A:\com3d2_up144\data\COM3D2x64_Data\Managed\Win32.dll</HintPath>
     </Reference>
     <Reference Include="zxing.unity">
-      <HintPath>A:\Gams\KISS\CMUlt\KISS\COM3D2\COM3D2x64_Data\Managed\zxing.unity.dll</HintPath>
+      <HintPath>A:\com3d2_up144\data\COM3D2x64_Data\Managed\zxing.unity.dll</HintPath>
     </Reference>
   </ItemGroup>
   <ItemGroup>
@@ -723,6 +723,7 @@
     <Compile Include="MaidStatus\EnumConvert.cs" />
     <Compile Include="MaidStatus\EyePartsTab.cs" />
     <Compile Include="MaidStatus\Feature.cs" />
+    <Compile Include="MaidStatus\Feeling.cs" />
     <Compile Include="MaidStatus\HeroineType.cs" />
     <Compile Include="MaidStatus\IClassSystem.cs" />
     <Compile Include="MaidStatus\JobClass.cs" />
@@ -737,6 +738,7 @@
     <Compile Include="MaidStatus\Old\StatusReader.cs" />
     <Compile Include="MaidStatus\ParametersPack.cs" />
     <Compile Include="MaidStatus\Personal.cs" />
+    <Compile Include="MaidStatus\PersonalEventBlocker.cs" />
     <Compile Include="MaidStatus\Propensity.cs" />
     <Compile Include="MaidStatus\Relation.cs" />
     <Compile Include="MaidStatus\Seikeiken.cs" />

+ 1 - 1
Assembly-CSharp/BaseKagManager.cs

@@ -5497,7 +5497,7 @@ public class BaseKagManager : IDisposable
 	public void Serialize(BinaryWriter binary)
 	{
 		binary.Write("CM3D2_KAG");
-		binary.Write(1430);
+		binary.Write(1440);
 		byte[] array = this.kag_.Serialize();
 		int value = array.Length;
 		binary.Write(value);

+ 1 - 1
Assembly-CSharp/BasePhotoCustomObject.cs

@@ -173,7 +173,7 @@ public abstract class BasePhotoCustomObject : MonoBehaviour, IComparable<BasePho
 			using (BinaryWriter binaryWriter = new BinaryWriter(memoryStream))
 			{
 				binaryWriter.Write("COM3D2_PHOTO_CUSTOM_OBJECT");
-				binaryWriter.Write(1430);
+				binaryWriter.Write(1440);
 				binaryWriter.Write(this.type.ToString());
 				binaryWriter.Write(this.scale_);
 				binaryWriter.Write(this.enabledTextureColor_);

+ 1 - 1
Assembly-CSharp/BasePhotoWindowManager.cs

@@ -153,7 +153,7 @@ public abstract class BasePhotoWindowManager : MonoBehaviour
 			using (BinaryWriter binaryWriter = new BinaryWriter(memoryStream))
 			{
 				binaryWriter.Write(this.save_header_uidata);
-				binaryWriter.Write(1430);
+				binaryWriter.Write(1440);
 				binaryWriter.Write(this.save_data_.Count);
 				foreach (KeyValuePair<string, Dictionary<string, Dictionary<string, string>>> keyValuePair3 in this.save_data_)
 				{

+ 3 - 7
Assembly-CSharp/BodyCtrlData.cs

@@ -18,10 +18,6 @@ public class BodyCtrlData : IKCtrlData
 
 	public Vector3 OrijinMaidPos { get; private set; }
 
-	public override float PositionWeight { get; set; }
-
-	public override float RotationWeight { get; set; }
-
 	public override void ApplyIKSetting()
 	{
 		this.OrijinMaidPos = this.MyIKCtrl.TgtChara.GetPos();
@@ -75,7 +71,7 @@ public class BodyCtrlData : IKCtrlData
 		{
 			this.m_PosOffset = Vector3.Lerp(Vector3.zero, enable, data.BlendWeight);
 		}
-		this.PositionWeight = data.BlendWeight;
+		base.PositionWeight = data.BlendWeight;
 	}
 
 	public override void Update()
@@ -92,11 +88,11 @@ public class BodyCtrlData : IKCtrlData
 		if (!base.IsIKExec)
 		{
 			base.PointIK.IsIKExec = true;
-			this.PositionWeight = 1f;
+			base.PositionWeight = 1f;
 		}
 		this.IsDoSetCharaPos = true;
 		Vector3 pos = this.MyIKCtrl.TgtChara.GetPos();
-		this.MyIKCtrl.TgtChara.SetPos(pos + offset * this.PositionWeight);
+		this.MyIKCtrl.TgtChara.SetPos(pos + offset * base.PositionWeight);
 	}
 
 	public void CharaPosReset()

+ 4 - 4
Assembly-CSharp/CMSystem.cs

@@ -855,7 +855,7 @@ public class CMSystem
 	{
 		XElement xelement = new XElement("Config", new object[]
 		{
-			new XAttribute("Version", 1430),
+			new XAttribute("Version", 1440),
 			new XElement("System", new XElement("SysButtonShowAlways", this.SysButtonShowAlways)),
 			new XElement("Screen", new object[]
 			{
@@ -1203,7 +1203,7 @@ public class CMSystem
 		MemoryStream memoryStream = new MemoryStream();
 		BinaryWriter binaryWriter = new BinaryWriter(memoryStream);
 		binaryWriter.Write("CM3D2_SYSTEM2");
-		binaryWriter.Write(1430);
+		binaryWriter.Write(1440);
 		binaryWriter.Write(this.m_dicEditColorPresetData.Count);
 		foreach (KeyValuePair<int, Dictionary<string, int>> keyValuePair in this.m_dicEditColorPresetData)
 		{
@@ -1897,7 +1897,7 @@ public class CMSystem
 
 		public void OnBeforeSerialize()
 		{
-			this.m_nVersion = 1430;
+			this.m_nVersion = 1440;
 		}
 
 		public void OnAfterDeserialize()
@@ -1905,7 +1905,7 @@ public class CMSystem
 		}
 
 		[SerializeField]
-		private int m_nVersion = 1430;
+		private int m_nVersion = 1440;
 
 		[SerializeField]
 		private string m_strDShowFilter = "Microsoft DTV-DVD Video Decoder";

+ 4 - 4
Assembly-CSharp/CharacterMgr.cs

@@ -991,7 +991,7 @@ public class CharacterMgr : MonoBehaviour
 		BinaryWriter binaryWriter = new BinaryWriter(memoryStream);
 		string result = string.Empty;
 		binaryWriter.Write("CM3D2_PRESET_S");
-		binaryWriter.Write(1430);
+		binaryWriter.Write(1440);
 		binaryWriter.Write((char)presset_type);
 		maid.SerializePropLowCapacity(binaryWriter);
 		maid.SerializeMultiColor(binaryWriter);
@@ -1008,7 +1008,7 @@ public class CharacterMgr : MonoBehaviour
 		MemoryStream memoryStream = new MemoryStream();
 		BinaryWriter binaryWriter = new BinaryWriter(memoryStream);
 		binaryWriter.Write("CM3D2_PRESET");
-		binaryWriter.Write(1430);
+		binaryWriter.Write(1440);
 		binaryWriter.Write((int)f_type);
 		if (texture2D != null)
 		{
@@ -1054,7 +1054,7 @@ public class CharacterMgr : MonoBehaviour
 		MemoryStream memoryStream = new MemoryStream();
 		BinaryWriter binaryWriter = new BinaryWriter(memoryStream);
 		binaryWriter.Write("CM3D2_PRESET");
-		binaryWriter.Write(1430);
+		binaryWriter.Write(1440);
 		binaryWriter.Write((int)f_type);
 		if (texture2D != null)
 		{
@@ -1318,7 +1318,7 @@ public class CharacterMgr : MonoBehaviour
 	public bool Serialize(BinaryWriter bwWrite)
 	{
 		bwWrite.Write("CM3D2_CHR_MGR");
-		bwWrite.Write(1430);
+		bwWrite.Write(1440);
 		this.m_PlayerStatus.Serialize(bwWrite);
 		bwWrite.Write(this.m_listStockMan.Count);
 		for (int i = 0; i < this.m_listStockMan.Count; i++)

+ 2 - 2
Assembly-CSharp/ControllerShortcutSettingData.cs

@@ -33,7 +33,7 @@ public static class ControllerShortcutSettingData
 	{
 		public void OnBeforeSerialize()
 		{
-			this.m_nVersion = 1430;
+			this.m_nVersion = 1440;
 		}
 
 		public void OnAfterDeserialize()
@@ -261,7 +261,7 @@ public static class ControllerShortcutSettingData
 		private const string CONF_NAME = "OvrControllerShortcutConfig.json";
 
 		[SerializeField]
-		private int m_nVersion = 1430;
+		private int m_nVersion = 1440;
 
 		[SerializeField]
 		private bool IsDirectShortcutMode = true;

+ 20 - 0
Assembly-CSharp/DailyMgr.cs

@@ -2,6 +2,7 @@
 using System.Collections.Generic;
 using BackupParamAccessor;
 using com.workman.cm3d2.scene.dailyEtc;
+using MaidStatus;
 using Schedule;
 using UnityEngine;
 
@@ -134,6 +135,25 @@ public class DailyMgr : BaseCreatePanel
 		}
 		else if (menuButton.type == DailyCtrl.ButtonType.Next)
 		{
+			if (GameModeManager.nowGameMode == GameModeManager.Type.LifeMode)
+			{
+				CharacterMgr characterMgr = GameMain.Instance.CharacterMgr;
+				bool flag = false;
+				int num = 0;
+				while (num < characterMgr.GetStockMaidCount() && !flag)
+				{
+					if (!(characterMgr.GetStockMaid(num) == null))
+					{
+						flag = PersonalEventBlocker.IsEnabledLifeMode(characterMgr.GetStockMaid(num).status.personal);
+					}
+					num++;
+				}
+				if (!flag)
+				{
+					GameMain.Instance.SysDlg.ShowFromLanguageTerm("Dialog/現在のメイド構成ではライフモードを始める事ができません。", null, SystemDialog.TYPE.OK, null, null);
+					return;
+				}
+			}
 			this.m_pressingNext = true;
 			this.CloseDailyPanel();
 		}

+ 1 - 1
Assembly-CSharp/DeskManager.cs

@@ -143,7 +143,7 @@ internal class DeskManager
 	public static void SerializeSingleSaveData(BinaryWriter binary)
 	{
 		binary.Write("CM3D2_DeskCustomize");
-		binary.Write(1430);
+		binary.Write(1440);
 		binary.Write(DeskManager.item_inst_data_.Count);
 		for (int i = 0; i < DeskManager.item_inst_data_.Count; i++)
 		{

+ 3 - 3
Assembly-CSharp/DynamicBone.cs

@@ -30,7 +30,7 @@ public class DynamicBone : MonoBehaviour
 			return false;
 		};
 		f_bw.Write("CM3D21_PHY");
-		f_bw.Write(1430);
+		f_bw.Write(1440);
 		if (this.m_Root == null)
 		{
 			NDebug.MessageBox("エラー", "×物理ルートボーンが設定されていません。");
@@ -94,7 +94,7 @@ public class DynamicBone : MonoBehaviour
 	public bool SerializeWriteCollider(BinaryWriter f_bw, string f_strFileName)
 	{
 		f_bw.Write("CM3D21_COL");
-		f_bw.Write(1430);
+		f_bw.Write(1440);
 		if (this.m_Colliders == null || this.m_Colliders.Count == 0)
 		{
 			NDebug.MessageBox("エラー", "×物理Collidersは空です。");
@@ -110,7 +110,7 @@ public class DynamicBone : MonoBehaviour
 			else
 			{
 				f_bw.Write(this.m_Colliders[i].TypeName);
-				this.m_Colliders[i].Serialize(f_bw, 1430);
+				this.m_Colliders[i].Serialize(f_bw, 1440);
 			}
 		}
 		this.m_ColliderFileName = f_strFileName;

+ 1 - 1
Assembly-CSharp/DynamicSkirtBone.cs

@@ -18,7 +18,7 @@ public class DynamicSkirtBone : MonoBehaviour
 	public bool SerializeWrite(BinaryWriter f_bw)
 	{
 		f_bw.Write("CM3D21_PSK");
-		f_bw.Write(1430);
+		f_bw.Write(1440);
 		f_bw.Write(this.m_fPanierRadius);
 		this.SerializeWriteAnimationCurve(f_bw, this.m_PanierRadiusDistrib);
 		int num = (this.m_PanierRadiusDistribGroup == null) ? 0 : this.m_PanierRadiusDistribGroup.Length;

+ 1 - 1
Assembly-CSharp/EditMod.cs

@@ -303,7 +303,7 @@ public class EditMod : MonoBehaviour
 		MemoryStream memoryStream = new MemoryStream();
 		BinaryWriter binaryWriter = new BinaryWriter(memoryStream);
 		binaryWriter.Write("CM3D2_MOD");
-		binaryWriter.Write(1430);
+		binaryWriter.Write(1440);
 		binaryWriter.Write(value);
 		binaryWriter.Write(text2.ToLower());
 		binaryWriter.Write(value2);

+ 18 - 18
Assembly-CSharp/ElbowKneeIKData.cs

@@ -8,10 +8,9 @@ public class ElbowKneeIKData : LimbIKData
 	public ElbowKneeIKData(FBIKChain chain, IKMappingLimb ik_mapping, FullBodyIKCtrl ik_ctrl, Transform tgt_bone) : base(ik_ctrl, chain, ik_mapping, tgt_bone, false)
 	{
 		this.Chain.bendConstraint.bendGoal = base.IKTarget;
-		this.PositionWeight = 0f;
 		this.m_IsUpperBody = (this.TargetBone == this.MyIKCtrl.GetIKBone(FullBodyIKCtrl.IKBoneType.Forearm_L) || this.TargetBone == this.MyIKCtrl.GetIKBone(FullBodyIKCtrl.IKBoneType.Forearm_R));
 		this.m_ForceIKEnable = true;
-		this.m_FABRIK = ik_ctrl.IKTgtRoot.gameObject.AddComponent<FABRIK>();
+		this.m_FABRIK = base.IKTarget.parent.gameObject.AddComponent<FABRIK>();
 		this.m_FABRIK.solver.SetChain(new Transform[]
 		{
 			base.ChainBones[0],
@@ -21,20 +20,6 @@ public class ElbowKneeIKData : LimbIKData
 		this.m_FABRIK.enabled = false;
 	}
 
-	public override float PositionWeight
-	{
-		get
-		{
-			return this.Chain.bendConstraint.weight;
-		}
-		set
-		{
-			this.Chain.bendConstraint.weight = value;
-		}
-	}
-
-	public override float RotationWeight { get; set; }
-
 	public ShoulderThighIKData ShoulderThighData
 	{
 		get
@@ -51,6 +36,13 @@ public class ElbowKneeIKData : LimbIKData
 		}
 	}
 
+	public override void TagetTransCpy()
+	{
+		base.TagetTransCpy();
+		this.Chain.bendConstraint.weight = 0f;
+		this.m_FABRIK.solver.IKPositionWeight = 0f;
+	}
+
 	public override void ApplyIKSetting()
 	{
 		this.m_TargetBoneLocalRot = this.TargetBone.localRotation;
@@ -96,19 +88,27 @@ public class ElbowKneeIKData : LimbIKData
 		}
 		if (base.RotateIK.IsIKExec)
 		{
-			this.ShoulderThighData.TargetBone.rotation = Quaternion.Slerp(this.ShoulderThighData.TargetBone.rotation, this.ShoulderThighData.IKTarget.rotation, this.RotationWeight);
+			this.ShoulderThighData.TargetBone.rotation = Quaternion.Slerp(this.ShoulderThighData.TargetBone.rotation, this.ShoulderThighData.IKTarget.rotation, base.RotationWeight);
 			this.TargetBone.localRotation = this.m_TargetBoneLocalRot;
 			this.HandFootData.TargetBone.localRotation = this.m_HandFootLocalRot;
 		}
 		Quaternion rotation = this.TargetBone.rotation;
 		if (base.PointIK.IsIKExec)
 		{
-			this.m_FABRIK.solver.IKPositionWeight = this.PositionWeight;
 			this.m_FABRIK.solver.Update();
 			this.TargetBone.rotation = rotation;
 		}
 	}
 
+	protected override void OnPostSetPositionWeight(float val)
+	{
+		if (this.m_IsPullBody)
+		{
+			this.Chain.bendConstraint.weight = val;
+		}
+		this.m_FABRIK.solver.IKPositionWeight = val;
+	}
+
 	private ShoulderThighIKData m_ShoulderThighData;
 
 	private HandFootIKData m_HandFootData;

+ 4 - 1
Assembly-CSharp/EmpireLifeModeAPI.cs

@@ -128,7 +128,10 @@ public static class EmpireLifeModeAPI
 				{
 					if (EmpireLifeModeData.Data.personalUniqueNameEnabledList.Contains(maid.status.personal.uniqueName))
 					{
-						list.Add(maid);
+						if (PersonalEventBlocker.IsEnabledLifeMode(maid.status.personal))
+						{
+							list.Add(maid);
+						}
 					}
 				}
 			}

+ 1 - 1
Assembly-CSharp/EmpireLifeModeManager.cs

@@ -477,7 +477,7 @@ public class EmpireLifeModeManager : MonoBehaviour
 	public bool Serialize(BinaryWriter brWrite)
 	{
 		brWrite.Write("CM3D21_LIFE_MODE_MGR");
-		brWrite.Write(1430);
+		brWrite.Write(1440);
 		brWrite.Write("2");
 		DataArray<int, byte> saveDataScenarioExecuteCountArray = this.m_SaveDataScenarioExecuteCountArray;
 		if (EmpireLifeModeManager.<>f__mg$cache1 == null)

+ 1 - 1
Assembly-CSharp/FacilityManager.cs

@@ -657,7 +657,7 @@ public class FacilityManager : MonoBehaviour
 		Stopwatch stopwatch = new Stopwatch();
 		stopwatch.Start();
 		brWrite.Write("CM3D21_FACILITY_MGR");
-		brWrite.Write(1430);
+		brWrite.Write(1440);
 		brWrite.Write("5");
 		int num = 0;
 		for (int i = 0; i < this.m_FacilityArray.Count; i++)

+ 15 - 1
Assembly-CSharp/FreeModeItemLifeMode.cs

@@ -1,6 +1,7 @@
 using System;
 using System.Collections.Generic;
 using System.Linq;
+using MaidStatus;
 
 public class FreeModeItemLifeMode : AbstractFreeModeItem
 {
@@ -191,7 +192,20 @@ public class FreeModeItemLifeMode : AbstractFreeModeItem
 	{
 		get
 		{
-			return this.m_IsAllEnabledPersonal && this.m_LifeModeData.IsCorrectNTRBlock();
+			bool flag = this.m_IsAllEnabledPersonal && this.m_LifeModeData.IsCorrectNTRBlock();
+			if (flag && this.m_LifeModeData.dataMaidPersonalUniqueNameAndActiveSlotDic != null)
+			{
+				foreach (KeyValuePair<int, string> keyValuePair in this.m_LifeModeData.dataMaidPersonalUniqueNameAndActiveSlotDic)
+				{
+					Personal.Data data = Personal.GetData(keyValuePair.Value);
+					if (!PersonalEventBlocker.IsEnabledLifeMode(data))
+					{
+						flag = false;
+						break;
+					}
+				}
+			}
+			return flag;
 		}
 	}
 

+ 39 - 20
Assembly-CSharp/FreeSkillSelect.cs

@@ -2,6 +2,7 @@
 using System.Collections;
 using System.Collections.Generic;
 using I2.Loc;
+using MaidStatus;
 using UnityEngine;
 using wf;
 using Yotogis;
@@ -142,15 +143,19 @@ public class FreeSkillSelect : MonoBehaviour
 					foreach (FreeSkillSelect.ButtonData buttonData3 in buttonData2.children_list)
 					{
 						Skill.Data skill_data = buttonData3.skill_data;
-						if (1 < skill_data.user_player_num && 0 < skill_data.recollectionHaremLockPersonalIds.Count)
+						if (1 < skill_data.user_player_num)
 						{
 							int num = 1;
 							while (num < skill_data.user_player_num && !flag)
 							{
 								Maid maid = GameMain.Instance.CharacterMgr.GetMaid(num);
-								if (maid != null && !skill_data.recollectionHaremLockPersonalIds.Contains(maid.status.personal.id))
+								if (maid != null)
 								{
-									flag = true;
+									bool flag2 = !PersonalEventBlocker.IsEnabledYotodiSkill(maid.status.personal, skill_data.id);
+									if (!skill_data.recollectionHaremLockPersonalIds.Contains(maid.status.personal.id) && !flag2)
+									{
+										flag = true;
+									}
 								}
 								num++;
 							}
@@ -159,6 +164,10 @@ public class FreeSkillSelect : MonoBehaviour
 						{
 							flag = true;
 						}
+						if (flag)
+						{
+							break;
+						}
 					}
 				}
 				buttonData.tab_button_obj.isEnabled = flag;
@@ -390,15 +399,19 @@ public class FreeSkillSelect : MonoBehaviour
 			component2.SetTerm(skill_data.termName);
 		}
 		bool flag = true;
-		if (1 < skill_data.user_player_num && 0 < skill_data.recollectionHaremLockPersonalIds.Count)
+		if (1 < skill_data.user_player_num)
 		{
 			int num = 1;
 			while (num < skill_data.user_player_num && flag)
 			{
 				Maid maid = GameMain.Instance.CharacterMgr.GetMaid(num);
-				if (maid != null && skill_data.recollectionHaremLockPersonalIds.Contains(maid.status.personal.id))
+				if (maid != null)
 				{
-					flag = false;
+					bool flag2 = !PersonalEventBlocker.IsEnabledYotodiSkill(maid.status.personal, skill_data.id);
+					if (skill_data.recollectionHaremLockPersonalIds.Contains(maid.status.personal.id) || flag2)
+					{
+						flag = false;
+					}
 				}
 				num++;
 			}
@@ -557,23 +570,29 @@ public class FreeSkillSelect : MonoBehaviour
 			Skill.Data data = Skill.Get(keyArray[l]);
 			if (data.specialConditionType != Skill.Data.SpecialConditionType.NewType)
 			{
-				bool flag = false;
-				foreach (int item in data.playable_stageid_list)
+				if (PersonalEventBlocker.IsEnabledYotodiSkill(maid.status.personal, data.id))
 				{
-					flag = selectableStageIds.Contains(item);
-					if (flag)
+					if (data.IsExecPersonal(maid.status.personal))
 					{
-						break;
-					}
-				}
-				if (flag)
-				{
-					int category2 = (int)data.category;
-					if (!dictionary.ContainsKey(category2))
-					{
-						dictionary.Add(category2, new List<Skill.Data>());
+						bool flag = false;
+						foreach (int item in data.playable_stageid_list)
+						{
+							flag = selectableStageIds.Contains(item);
+							if (flag)
+							{
+								break;
+							}
+						}
+						if (flag)
+						{
+							int category2 = (int)data.category;
+							if (!dictionary.ContainsKey(category2))
+							{
+								dictionary.Add(category2, new List<Skill.Data>());
+							}
+							dictionary[category2].Add(data);
+						}
 					}
-					dictionary[category2].Add(data);
 				}
 			}
 		}

+ 7 - 7
Assembly-CSharp/FullBodyIKCtrl.cs

@@ -321,7 +321,7 @@ public class FullBodyIKCtrl : MonoBehaviour
 			{
 				if (!(ikctrlData is BodyCtrlData))
 				{
-					if (ikctrlData.IsIKExec && !ikctrlData.OldIkExec)
+					if (ikctrlData.NeedFullbodySolverUpdate)
 					{
 						flag = true;
 						break;
@@ -333,14 +333,14 @@ public class FullBodyIKCtrl : MonoBehaviour
 				Vector3 localPosition = this.m_FullbodyIK.references.spine[1].localPosition;
 				this.m_FullbodyIK.solver.Update();
 				this.m_FullbodyIK.references.spine[1].localPosition = localPosition;
-				foreach (IKCtrlData ikctrlData2 in this.m_StrIKDataPair.Values)
+			}
+			foreach (IKCtrlData ikctrlData2 in this.m_StrIKDataPair.Values)
+			{
+				if (!(ikctrlData2 is BodyCtrlData))
 				{
-					if (!(ikctrlData2 is BodyCtrlData))
+					if (ikctrlData2.IsIKExec)
 					{
-						if (ikctrlData2.IsIKExec)
-						{
-							ikctrlData2.Update();
-						}
+						ikctrlData2.Update();
 					}
 				}
 			}

+ 2 - 2
Assembly-CSharp/GameMain.cs

@@ -679,7 +679,7 @@ public class GameMain : MonoSingleton<GameMain>
 		serializeHeader.strComment = f_strComment;
 		serializeHeader.productTypeID = (int)Product.type;
 		binaryWriter.Write("COM3D2_SAVE");
-		binaryWriter.Write(1430);
+		binaryWriter.Write(1440);
 		this.SerializeWriteHeader(binaryWriter, serializeHeader);
 		binaryWriter.Write("bookmark_kk_01");
 		GameMain.BinaryBookmark binaryBookmark = new GameMain.BinaryBookmark(binaryWriter);
@@ -799,7 +799,7 @@ public class GameMain : MonoSingleton<GameMain>
 		MemoryStream memoryStream = new MemoryStream();
 		BinaryWriter binaryWriter = new BinaryWriter(memoryStream);
 		binaryWriter.Write("COM3D2_SAVE");
-		binaryWriter.Write(1430);
+		binaryWriter.Write(1440);
 		this.SerializeWriteHeader(binaryWriter, saveDataHeader);
 		binaryWriter.Write(array, (int)saveDataHeader.lHeaderSize, (int)((long)array.Length - saveDataHeader.lHeaderSize));
 		File.WriteAllBytes(path, memoryStream.ToArray());

+ 1 - 1
Assembly-CSharp/GameModeManager.cs

@@ -32,7 +32,7 @@ public static class GameModeManager
 	public static bool Serialize(BinaryWriter brWrite)
 	{
 		brWrite.Write("CM3D21_GAME_MODE_MGR");
-		brWrite.Write(1430);
+		brWrite.Write(1440);
 		brWrite.Write(1);
 		brWrite.Write((int)GameModeManager.m_NowGameModeType);
 		return true;

+ 59 - 35
Assembly-CSharp/GameUty.cs

@@ -3,6 +3,7 @@ using System.Collections.Generic;
 using System.IO;
 using System.Linq;
 using System.Text;
+using System.Text.RegularExpressions;
 using I2.Loc;
 using UnityEngine;
 using wf;
@@ -307,9 +308,9 @@ public class GameUty
 					{
 						GameUty.ExistCsvPathList.Add(text30);
 					}
-					for (int num12 = 2; num12 <= check_ver_no; num12++)
+					for (int num15 = 2; num15 <= check_ver_no; num15++)
 					{
-						AddFolderOrArchive(text31 + "_" + num12);
+						AddFolderOrArchive(text31 + "_" + num15);
 					}
 				}
 			}
@@ -330,7 +331,7 @@ public class GameUty
 					{
 						GameUty.ExistCsvPathList.Add(text30);
 					}
-					for (int num12 = 2; num12 <= check_ver_no; num12++)
+					for (int num15 = 2; num15 <= check_ver_no; num15++)
 					{
 						AddFolderOrArchive(string.Concat(new object[]
 						{
@@ -338,7 +339,31 @@ public class GameUty
 							"_",
 							text30,
 							"_",
-							num12
+							num15
+						}));
+					}
+				}
+			}
+		};
+		Action<string> action3 = delegate(string name)
+		{
+			foreach (string text30 in GameUty.PathList)
+			{
+				if (AddFolderOrArchive(name + "_" + text30))
+				{
+					if (name == "csv")
+					{
+						GameUty.ExistCsvPathList.Add(text30);
+					}
+					for (int num15 = 2; num15 <= check_ver_no; num15++)
+					{
+						AddFolderOrArchive(string.Concat(new object[]
+						{
+							name,
+							"_",
+							text30,
+							"_",
+							num15
 						}));
 					}
 				}
@@ -393,9 +418,9 @@ public class GameUty
 					}
 					if (flag)
 					{
-						for (int i = 2; i <= check_ver_no; i++)
+						for (int i2 = 2; i2 <= check_ver_no; i2++)
 						{
-							AddFolderOrArchive(text3 + "_" + i);
+							AddFolderOrArchive(text3 + "_" + i2);
 						}
 					}
 				}
@@ -655,8 +680,9 @@ public class GameUty
 			AddFolderOrArchive("voice");
 			for (int num6 = 0; num6 < 25; num6++)
 			{
-				string arg = "voice" + "_" + ((char)(97 + num6)).ToString();
-				AddFolderOrArchive(arg);
+				string arg = "voice";
+				string arg2 = arg + "_" + (char)(97 + num6);
+				AddFolderOrArchive(arg2);
 			}
 			foreach (string text25 in GameUty.PathList)
 			{
@@ -678,8 +704,8 @@ public class GameUty
 			}
 			for (int num8 = 2; num8 <= check_ver_no; num8++)
 			{
-				string arg2 = "voice";
-				AddFolderOrArchive(arg2 + num8);
+				string arg3 = "voice";
+				AddFolderOrArchive(arg3 + num8);
 			}
 			string text27 = "parts";
 			NDebug.Assert(AddFolderOrArchive(text27), str + text27);
@@ -701,9 +727,7 @@ public class GameUty
 				}
 			}
 			AddFolderOrArchive("parts2");
-			string str4 = "■■■■■■■■■■■■■■■■■■■■";
-			int num10 = stopWatch.Stop();
-			Debug.Log(str4 + num10.ToString() + " ms");
+			Debug.Log("■■■■■■■■■■■■■■■■■■■■" + stopWatch.Stop().ToString() + " ms");
 		}
 		GameUty.m_FileSystem.AddAutoPathForAllFolder();
 		if (Product.isPublic && !GameUty.m_FileSystem.IsExistentFile("21C399027026.dat"))
@@ -714,12 +738,11 @@ public class GameUty
 		}
 		GameUty.BgFiles = new Dictionary<string, AFileSystemBase>();
 		string[] list = GameUty.m_FileSystem.GetList("bg", AFileSystemBase.ListType.AllFile);
-		if (list != null && list.Length != 0)
+		if (list != null && 0 < list.Length)
 		{
-			string[] array = list;
-			for (int num10 = 0; num10 < array.Length; num10++)
+			foreach (string path in list)
 			{
-				string fileName = Path.GetFileName(array[num10]);
+				string fileName = Path.GetFileName(path);
 				if (!(Path.GetExtension(fileName) != ".asset_bg") && !GameUty.BgFiles.ContainsKey(fileName))
 				{
 					GameUty.BgFiles.Add(fileName, GameUty.m_FileSystem);
@@ -729,31 +752,30 @@ public class GameUty
 		if (Product.supportMultiLanguage)
 		{
 			list = GameUty.m_FileSystem.GetList("language", AFileSystemBase.ListType.AllFile);
-			if (list != null && list.Length != 0)
+			if (list != null && 0 < list.Length)
 			{
-				string[] array = list;
-				for (int num10 = 0; num10 < array.Length; num10++)
+				foreach (string path2 in list)
 				{
-					string fileName2 = Path.GetFileName(array[num10]);
+					string fileName2 = Path.GetFileName(path2);
 					if (!(Path.GetExtension(fileName2) != ".asset_language"))
 					{
 						using (AFileBase afileBase = GameUty.m_FileSystem.FileOpen(fileName2))
 						{
 							AssetBundle assetBundle = AssetBundle.LoadFromMemory(afileBase.ReadAll());
-							Component component = UnityEngine.Object.Instantiate<LanguageSource>(assetBundle.LoadAllAssets<GameObject>()[0].GetComponent<LanguageSource>());
+							LanguageSource languageSource = UnityEngine.Object.Instantiate<LanguageSource>(assetBundle.LoadAllAssets<GameObject>()[0].GetComponent<LanguageSource>());
 							if (GameMain.Instance.transform.Find("Language") == null)
 							{
 								new GameObject("Language").transform.SetParent(GameMain.Instance.transform);
 							}
-							component.transform.SetParent(GameMain.Instance.transform.Find("Language"));
+							languageSource.transform.SetParent(GameMain.Instance.transform.Find("Language"));
 							assetBundle.Unload(true);
 						}
 					}
 				}
 			}
-			foreach (LanguageSource languageSource in LocalizationManager.Sources)
+			foreach (LanguageSource languageSource2 in LocalizationManager.Sources)
 			{
-				languageSource.LoadAllLanguages(false);
+				languageSource2.LoadAllLanguages(false);
 			}
 		}
 		if (Directory.Exists(text + "Mod"))
@@ -761,7 +783,8 @@ public class GameUty
 			GameUty.m_ModFileSystem = new FileSystemWindows();
 			GameUty.m_ModFileSystem.SetBaseDirectory(text);
 			GameUty.m_ModFileSystem.AddFolder("Mod");
-			foreach (string text29 in GameUty.m_ModFileSystem.GetList(string.Empty, AFileSystemBase.ListType.AllFolder))
+			string[] list2 = GameUty.m_ModFileSystem.GetList(string.Empty, AFileSystemBase.ListType.AllFolder);
+			foreach (string text29 in list2)
 			{
 				if (!GameUty.m_ModFileSystem.AddAutoPath(text29))
 				{
@@ -770,15 +793,16 @@ public class GameUty
 			}
 		}
 		string[] fileListAtExtension = GameUty.m_FileSystem.GetFileListAtExtension(".menu");
-		List<string> list2 = new List<string>();
-		foreach (string path in fileListAtExtension)
+		List<string> list3 = new List<string>();
+		foreach (string path3 in fileListAtExtension)
 		{
-			list2.Add(Path.GetFileName(path));
+			list3.Add(Path.GetFileName(path3));
 		}
-		GameUty.m_aryMenuFiles = list2.ToArray();
+		GameUty.m_aryMenuFiles = list3.ToArray();
 		if (GameUty.m_ModFileSystem != null)
 		{
-			GameUty.m_aryModOnlysMenuFiles = GameUty.m_ModFileSystem.GetFileListAtExtension(".menu");
+			string[] list4 = GameUty.m_ModFileSystem.GetList(string.Empty, AFileSystemBase.ListType.AllFile);
+			GameUty.m_aryModOnlysMenuFiles = Array.FindAll<string>(list4, (string i) => new Regex(".*\\.menu$").IsMatch(i));
 			GameUty.m_aryMenuFiles = GameUty.m_aryMenuFiles.Concat(GameUty.m_aryModOnlysMenuFiles).ToArray<string>();
 		}
 		if (GameUty.m_aryModOnlysMenuFiles != null && GameUty.m_aryModOnlysMenuFiles.Length != 0)
@@ -790,9 +814,9 @@ public class GameUty
 		{
 			string[] menuFiles = GameUty.MenuFiles;
 			GameUty.rid_menu_dic_ = new Dictionary<int, string>();
-			for (int num11 = 0; num11 < menuFiles.Length; num11++)
+			for (int num14 = 0; num14 < menuFiles.Length; num14++)
 			{
-				string fileName3 = Path.GetFileName(menuFiles[num11]);
+				string fileName3 = Path.GetFileName(menuFiles[num14]);
 				int hashCode = fileName3.ToLower().GetHashCode();
 				if (!GameUty.rid_menu_dic_.ContainsKey(hashCode))
 				{
@@ -1380,14 +1404,14 @@ public class GameUty
 
 	public static string GetBuildVersionText()
 	{
-		int num = 1430;
+		int num = 1440;
 		return (num >= 1000) ? ((float)num / 1000f).ToString("F2") : ((float)num / 100f).ToString("F2");
 	}
 
 	public static string GetGameVersionText()
 	{
 		string text = "COM3D2x64.exe";
-		int num = 1430;
+		int num = 1440;
 		string path = UTY.gameProjectPath + "\\update.lst";
 		string[] array = new string[0];
 		if (File.Exists(path))

+ 91 - 31
Assembly-CSharp/HandFootIKData.cs

@@ -11,6 +11,28 @@ public class HandFootIKData : LimbIKData
 		this.Effector.target = base.IKTarget;
 		this.m_IsUpperBody = (this.TargetBone == this.MyIKCtrl.GetIKBone(FullBodyIKCtrl.IKBoneType.Hand_L) || this.TargetBone == this.MyIKCtrl.GetIKBone(FullBodyIKCtrl.IKBoneType.Hand_R));
 		this.m_ForceIKEnable = true;
+		this.NoPullBodyIK = base.IKTarget.parent.gameObject.AddComponent<LimbIK>();
+		this.NoPullBodyIK.solver.SetChain(base.ChainBones[0], base.ChainBones[1], base.ChainBones[2], base.ChainBones[0]);
+		this.NoPullBodyIK.solver.target = base.IKTarget;
+		this.NoPullBodyIK.solver.bendModifier = IKSolverLimb.BendModifier.Goal;
+		this.NoPullBodyIK.solver.maintainRotationWeight = effector.maintainRelativePositionWeight;
+		this.NoPullBodyIK.enabled = false;
+		if (this.TargetBone == this.MyIKCtrl.GetIKBone(FullBodyIKCtrl.IKBoneType.Hand_L))
+		{
+			this.NoPullBodyIK.solver.goal = AvatarIKGoal.LeftHand;
+		}
+		else if (this.TargetBone == this.MyIKCtrl.GetIKBone(FullBodyIKCtrl.IKBoneType.Hand_R))
+		{
+			this.NoPullBodyIK.solver.goal = AvatarIKGoal.RightHand;
+		}
+		else if (this.TargetBone == this.MyIKCtrl.GetIKBone(FullBodyIKCtrl.IKBoneType.Foot_L))
+		{
+			this.NoPullBodyIK.solver.goal = AvatarIKGoal.LeftFoot;
+		}
+		else if (this.TargetBone == this.MyIKCtrl.GetIKBone(FullBodyIKCtrl.IKBoneType.Foot_R))
+		{
+			this.NoPullBodyIK.solver.goal = AvatarIKGoal.RightFoot;
+		}
 		this.ToCorrectBone = this.TargetBone;
 	}
 
@@ -30,30 +52,6 @@ public class HandFootIKData : LimbIKData
 		}
 	}
 
-	public override float PositionWeight
-	{
-		get
-		{
-			return this.Effector.positionWeight;
-		}
-		set
-		{
-			this.Effector.positionWeight = value;
-		}
-	}
-
-	public override float RotationWeight
-	{
-		get
-		{
-			return this.Effector.rotationWeight;
-		}
-		set
-		{
-			this.Effector.rotationWeight = value;
-		}
-	}
-
 	private void CheckBorder(HandFootIKData.BorderCorrectData correctData)
 	{
 		if (!correctData.Enable)
@@ -86,6 +84,16 @@ public class HandFootIKData : LimbIKData
 		}
 	}
 
+	public override void TagetTransCpy()
+	{
+		base.TagetTransCpy();
+		this.Effector.positionWeight = 0f;
+		this.Effector.rotationWeight = 0f;
+		this.NoPullBodyIK.solver.IKPositionWeight = 0f;
+		this.NoPullBodyIK.solver.IKRotationWeight = 0f;
+		this.NoPullBodyIK.solver.bendModifierWeight = 0f;
+	}
+
 	protected override void SetTargetTransform(IKCtrlData.IKSettingData data, Vector3 pos, Quaternion rot)
 	{
 		base.SetTargetTransform(data, pos, rot);
@@ -105,18 +113,34 @@ public class HandFootIKData : LimbIKData
 			float num = Mathf.Abs(Mathf.Acos(f) * 57.29578f);
 			float t = Mathf.Clamp01(num / this.m_BendFadeBorder);
 			Vector3 vector4 = base.IKTarget.position - iktarget.position;
-			float d = Vector3.Dot(vector - iktarget.position, vector4.normalized);
-			Vector3 vector5 = iktarget.position + vector4.normalized * d;
+			float num2 = Vector3.Dot(vector - iktarget.position, vector4.normalized);
+			if (float.IsNaN(num2))
+			{
+				num2 = 0f;
+			}
+			Vector3 vector5 = iktarget.position + vector4.normalized * num2;
 			Vector3 a = iktarget2.rotation * Vector3.up * 0.01f;
 			Vector3 b = (vector - vector5) * this.m_BendStlength;
 			Vector3 b2 = Vector3.Slerp(a, b, t);
 			iktarget2.position = vector5 + b2;
-			this.ElbowKneeData.PositionWeight = this.PositionWeight;
+			this.SetElbowKneePositionWeight(base.PositionWeight);
 		}
-		this.ElbowKneeData.RotationWeight = this.PositionWeight;
+		this.ElbowKneeData.RotationWeight = base.PositionWeight;
 		iktarget2.rotation = Quaternion.FromToRotation(this.TargetBone.position - this.ElbowKneeData.TargetBone.position, base.IKTarget.position - iktarget2.position) * iktarget2.rotation;
 	}
 
+	private void SetElbowKneePositionWeight(float val)
+	{
+		if (this.m_IsPullBody)
+		{
+			this.ElbowKneeData.PositionWeight = val;
+		}
+		else
+		{
+			this.NoPullBodyIK.solver.bendModifierWeight = val;
+		}
+	}
+
 	public override void ApplyIKSetting()
 	{
 		if (!base.GetIKSettingData(IKCtrlData.IKAttachType.NewPoint).IsIKExec && !base.GetFlagData(IKCtrlData.IKAttachType.NewPoint).IsEnable && (this.FloorCorrect.Enable || this.WallCorrect.Enable))
@@ -128,13 +152,13 @@ public class HandFootIKData : LimbIKData
 		{
 			if (this.ElbowKneeData.RotationWeight > 0f)
 			{
-				this.PositionWeight = this.ElbowKneeData.RotationWeight;
-				this.RotationWeight = this.ElbowKneeData.RotationWeight;
+				base.PositionWeight = this.ElbowKneeData.RotationWeight;
+				base.RotationWeight = this.ElbowKneeData.RotationWeight;
 				base.IKTarget.position = this.ElbowKneeData.IKTarget.TransformPoint(this.TargetBone.localPosition);
 			}
 			else
 			{
-				this.PositionWeight = this.ElbowKneeData.PositionWeight;
+				base.PositionWeight = this.ElbowKneeData.PositionWeight;
 				base.IKTarget.position += this.ElbowKneeData.IKTarget.position - this.ElbowKneeData.TargetBone.position;
 			}
 		}
@@ -155,6 +179,40 @@ public class HandFootIKData : LimbIKData
 	{
 		this.m_ElbowKneeData = elbowknee_data;
 		this.m_ShoulderThighData = shoulderthigh_data;
+		this.NoPullBodyIK.solver.bendGoal = elbowknee_data.IKTarget;
+	}
+
+	protected override void OnPostSetPositionWeight(float val)
+	{
+		if (this.m_IsPullBody)
+		{
+			this.Effector.positionWeight = val;
+		}
+		else
+		{
+			this.NoPullBodyIK.solver.IKPositionWeight = val;
+		}
+	}
+
+	protected override void OnPostSetRotationWeight(float val)
+	{
+		if (this.m_IsPullBody)
+		{
+			this.Effector.rotationWeight = val;
+		}
+		else
+		{
+			this.NoPullBodyIK.solver.IKRotationWeight = val;
+		}
+	}
+
+	public override void Update()
+	{
+		if (this.m_IsPullBody)
+		{
+			return;
+		}
+		this.NoPullBodyIK.solver.Update();
 	}
 
 	[Header("壁・床補正情報")]
@@ -181,6 +239,8 @@ public class HandFootIKData : LimbIKData
 
 	private ElbowKneeIKData m_ElbowKneeData;
 
+	private LimbIK NoPullBodyIK;
+
 	public enum BorderCorrectType
 	{
 		Bone,

+ 2 - 2
Assembly-CSharp/HandSignShortcut.cs

@@ -506,7 +506,7 @@ public class HandSignShortcut : MonoBehaviour
 	{
 		public void OnBeforeSerialize()
 		{
-			this.m_nVersion = 1430;
+			this.m_nVersion = 1440;
 		}
 
 		public void OnAfterDeserialize()
@@ -815,7 +815,7 @@ public class HandSignShortcut : MonoBehaviour
 		private const string CONF_NAME = "MaidFingerDataList.json";
 
 		[SerializeField]
-		private int m_nVersion = 1430;
+		private int m_nVersion = 1440;
 
 		[SerializeField]
 		private List<HandSignShortcut.MaidFingerData> MaidFingerDataList = new List<HandSignShortcut.MaidFingerData>();

+ 43 - 2
Assembly-CSharp/IKCtrlData.cs

@@ -148,9 +148,39 @@ public abstract class IKCtrlData
 		}
 	}
 
-	public abstract float PositionWeight { get; set; }
+	public float PositionWeight
+	{
+		get
+		{
+			return this.PointIK.Weight;
+		}
+		set
+		{
+			this.PointIK.Weight = value;
+			this.OnPostSetPositionWeight(value);
+		}
+	}
 
-	public abstract float RotationWeight { get; set; }
+	public float RotationWeight
+	{
+		get
+		{
+			return this.RotateIK.Weight;
+		}
+		set
+		{
+			this.RotateIK.Weight = value;
+			this.OnPostSetRotationWeight(value);
+		}
+	}
+
+	public virtual bool NeedFullbodySolverUpdate
+	{
+		get
+		{
+			return false;
+		}
+	}
 
 	public static bool operator true(IKCtrlData data)
 	{
@@ -232,6 +262,14 @@ public abstract class IKCtrlData
 	{
 	}
 
+	protected virtual void OnPostSetPositionWeight(float val)
+	{
+	}
+
+	protected virtual void OnPostSetRotationWeight(float val)
+	{
+	}
+
 	public virtual void TagetTransCpy()
 	{
 		this.m_BoneTgtPair.Copy();
@@ -1360,6 +1398,9 @@ public abstract class IKCtrlData
 
 		public float ElapsedTime;
 
+		[Range(0f, 1f)]
+		public float Weight;
+
 		[HideInInspector]
 		public bool FirstFrame;
 

+ 1 - 1
Assembly-CSharp/Kasizuki/KasizukiManager.cs

@@ -864,7 +864,7 @@ namespace Kasizuki
 		public void Serialize(BinaryWriter bw)
 		{
 			bw.Write("COM3D2_KASIZUKI");
-			bw.Write(1430);
+			bw.Write(1440);
 			this.SerializeOriginHeader(bw);
 			foreach (KeyValuePair<int, KasizukiManager.SaveData> keyValuePair in this.m_SaveDataArray)
 			{

+ 12 - 1
Assembly-CSharp/LimbIKData.cs

@@ -13,8 +13,17 @@ public abstract class LimbIKData : IKCtrlData
 		select node.transform).ToArray<Transform>();
 	}
 
+	public override bool NeedFullbodySolverUpdate
+	{
+		get
+		{
+			return base.IsIKExec && !base.OldIkExec && this.m_IsPullBody;
+		}
+	}
+
 	public override void SetPullState(bool pull_on)
 	{
+		this.m_IsPullBody = pull_on;
 		if (this.m_OrijinPull < 0f)
 		{
 			this.m_OrijinPull = this.Chain.pull;
@@ -43,7 +52,7 @@ public abstract class LimbIKData : IKCtrlData
 		base.ApplyIKSetting();
 		if (this.m_IsUpperBody)
 		{
-			this.IKMapping.weight = Mathf.Max(this.IKMapping.weight, Mathf.Max(this.PositionWeight, this.RotationWeight));
+			this.IKMapping.weight = Mathf.Max(this.IKMapping.weight, Mathf.Max(base.PositionWeight, base.RotationWeight));
 		}
 	}
 
@@ -54,4 +63,6 @@ public abstract class LimbIKData : IKCtrlData
 	protected bool m_IsUpperBody;
 
 	protected float m_OrijinPull = -1f;
+
+	protected bool m_IsPullBody = true;
 }

+ 3 - 3
Assembly-CSharp/Maid.cs

@@ -1378,7 +1378,7 @@ public class Maid : MonoBehaviour
 	public bool SerializeProp(BinaryWriter f_bwWrite)
 	{
 		f_bwWrite.Write("CM3D2_MPROP_LIST");
-		f_bwWrite.Write(1430);
+		f_bwWrite.Write(1440);
 		f_bwWrite.Write(this.m_dicMaidProp.Count);
 		int num = 0;
 		foreach (KeyValuePair<string, MaidProp> keyValuePair in this.m_dicMaidProp)
@@ -1412,7 +1412,7 @@ public class Maid : MonoBehaviour
 	public bool SerializeMisc(BinaryWriter f_bwWrite)
 	{
 		f_bwWrite.Write("CM3D2_MAID_MISC");
-		f_bwWrite.Write(1430);
+		f_bwWrite.Write(1440);
 		f_bwWrite.Write(this.m_nActiveSlotNo);
 		if (this.m_texIcon != null)
 		{
@@ -1437,7 +1437,7 @@ public class Maid : MonoBehaviour
 	public bool SerializeBody(BinaryWriter f_bwWrite)
 	{
 		f_bwWrite.Write("CM3D2_MAID_BODY");
-		f_bwWrite.Write(1430);
+		f_bwWrite.Write(1440);
 		return true;
 	}
 

+ 1 - 1
Assembly-CSharp/MaidParts.cs

@@ -37,7 +37,7 @@ public class MaidParts : MonoBehaviour
 	public unsafe bool Serialize(BinaryWriter f_bwWrite)
 	{
 		f_bwWrite.Write("CM3D2_MULTI_COL");
-		f_bwWrite.Write(1430);
+		f_bwWrite.Write(1440);
 		f_bwWrite.Write(this.m_aryPartsColor.Length);
 		for (int i = 0; i < this.m_aryPartsColor.Length; i++)
 		{

+ 1 - 1
Assembly-CSharp/MaidProp.cs

@@ -8,7 +8,7 @@ public class MaidProp
 	public bool Serialize(BinaryWriter f_bwWrite)
 	{
 		f_bwWrite.Write("CM3D2_MPROP");
-		f_bwWrite.Write(1430);
+		f_bwWrite.Write(1440);
 		f_bwWrite.Write(this.idx);
 		f_bwWrite.Write(this.name);
 		f_bwWrite.Write(this.type);

+ 11 - 0
Assembly-CSharp/MaidStatus/Feeling.cs

@@ -0,0 +1,11 @@
+using System;
+
+namespace MaidStatus
+{
+	public enum Feeling
+	{
+		Bad,
+		Normal = 10,
+		Goood = 20
+	}
+}

+ 153 - 0
Assembly-CSharp/MaidStatus/PersonalEventBlocker.cs

@@ -0,0 +1,153 @@
+using System;
+using System.Collections.Generic;
+
+namespace MaidStatus
+{
+	public static class PersonalEventBlocker
+	{
+		public static void CreateData()
+		{
+			if (PersonalEventBlocker.blockerDataList != null)
+			{
+				return;
+			}
+			PersonalEventBlocker.blockerDataList = new List<PersonalEventBlocker.Data>();
+			if (Product.type != Product.Type.EnAdult)
+			{
+				return;
+			}
+			using (AFileBase afileBase = GameUty.FileSystem.FileOpen("maid_personaleventblocker_list.nei"))
+			{
+				using (CsvParser csvParser = new CsvParser())
+				{
+					bool flag = csvParser.Open(afileBase);
+					if (flag)
+					{
+						int num = 1;
+						while (csvParser.IsCellToExistData(0, num))
+						{
+							PersonalEventBlocker.Data item = new PersonalEventBlocker.Data(csvParser, num);
+							PersonalEventBlocker.blockerDataList.Add(item);
+							num++;
+						}
+					}
+				}
+			}
+			if (GameUty.PathList != null)
+			{
+				HashSet<PersonalEventBlocker.Data> hashSet = new HashSet<PersonalEventBlocker.Data>();
+				foreach (string str in GameUty.PathList)
+				{
+					string f_strFileName = "maid_personaleventblocker_unlocklist_" + str + ".nei";
+					if (GameUty.FileSystem.IsExistentFile(f_strFileName))
+					{
+						using (AFileBase afileBase2 = GameUty.FileSystem.FileOpen(f_strFileName))
+						{
+							using (CsvParser csvParser2 = new CsvParser())
+							{
+								bool flag2 = csvParser2.Open(afileBase2);
+								if (flag2)
+								{
+									int num2 = 1;
+									while (csvParser2.IsCellToExistData(0, num2))
+									{
+										Personal.Data data = Personal.GetData(csvParser2.GetCellAsString(0, num2));
+										foreach (PersonalEventBlocker.Data data2 in PersonalEventBlocker.blockerDataList)
+										{
+											if (data == data2.personal)
+											{
+												hashSet.Add(data2);
+												break;
+											}
+										}
+										num2++;
+									}
+								}
+							}
+						}
+					}
+				}
+				foreach (PersonalEventBlocker.Data item2 in hashSet)
+				{
+					PersonalEventBlocker.blockerDataList.Remove(item2);
+				}
+			}
+		}
+
+		public static PersonalEventBlocker.Data GetData(Personal.Data personal)
+		{
+			foreach (PersonalEventBlocker.Data data in PersonalEventBlocker.blockerDataList)
+			{
+				if (personal == data.personal)
+				{
+					return data;
+				}
+			}
+			return null;
+		}
+
+		public static List<PersonalEventBlocker.Data> GetAllDatas()
+		{
+			return PersonalEventBlocker.blockerDataList;
+		}
+
+		public static bool IsEnabledYotodiSkill(Personal.Data personal, int yotogiSkillId)
+		{
+			PersonalEventBlocker.Data data = PersonalEventBlocker.GetData(personal);
+			return data == null || !data.blockYotogiIdList.Contains(yotogiSkillId);
+		}
+
+		public static bool IsEnabledScheduleTask(Personal.Data personal, int taskId)
+		{
+			PersonalEventBlocker.Data data = PersonalEventBlocker.GetData(personal);
+			return data == null || !data.blockScheduleIdList.Contains(taskId);
+		}
+
+		public static bool IsEnabledLifeMode(Personal.Data personal)
+		{
+			return PersonalEventBlocker.GetData(personal) == null;
+		}
+
+		private static List<PersonalEventBlocker.Data> blockerDataList;
+
+		public class Data
+		{
+			public Data(CsvParser csv, int readLineY)
+			{
+				if (!csv.IsValid() || !csv.IsCellToExistData(0, readLineY))
+				{
+					return;
+				}
+				Func<string, HashSet<int>> func = delegate(string cellText)
+				{
+					HashSet<int> hashSet = new HashSet<int>();
+					if (!string.IsNullOrEmpty(cellText))
+					{
+						foreach (string text in cellText.Split(new char[]
+						{
+							','
+						}))
+						{
+							int item;
+							if (int.TryParse(text.Trim(), out item))
+							{
+								hashSet.Add(item);
+							}
+						}
+					}
+					return hashSet;
+				};
+				int num = 0;
+				this.personal = Personal.GetData(csv.GetCellAsString(num++, readLineY));
+				this.blockScheduleIdList = func(csv.GetCellAsString(num++, readLineY));
+				this.blockYotogiIdList = func(csv.GetCellAsString(num++, readLineY));
+			}
+
+			public readonly Personal.Data personal;
+
+			public readonly HashSet<int> blockScheduleIdList;
+
+			public readonly HashSet<int> blockYotogiIdList;
+		}
+	}
+}

+ 14 - 1
Assembly-CSharp/MaidStatus/Status.cs

@@ -22,6 +22,7 @@ namespace MaidStatus
 			JobClass.CreateData();
 			Personal.CreateData();
 			SubMaid.CreateData();
+			PersonalEventBlocker.CreateData();
 			this.body = new BodyData();
 			this.features_ = new Dictionary<int, Feature.Data>();
 			this.features = new ReadOnlyDictionary<int, Feature.Data>(this.features_);
@@ -796,6 +797,18 @@ namespace MaidStatus
 			}
 		}
 
+		public Feeling feeling
+		{
+			get
+			{
+				return (Feeling)this.flags_["__vr_feeling"];
+			}
+			set
+			{
+				this.flags_["__vr_feeling"] = (int)value;
+			}
+		}
+
 		public int inranGap
 		{
 			get
@@ -1319,7 +1332,7 @@ namespace MaidStatus
 		{
 			this.SetFlag("__1330_specialrelation__", (int)this.specialRelation);
 			binary.Write("CM3D2_MAID_STATUS");
-			binary.Write(1430);
+			binary.Write(1440);
 			binary.Write(this.guid);
 			binary.Write(this.creationTime);
 			binary.Write((short)this.heroineType);

+ 1 - 1
Assembly-CSharp/Menu.cs

@@ -924,7 +924,7 @@ public class Menu : MonoBehaviour
 			Directory.CreateDirectory(text);
 		}
 		StreamWriter streamWriter = new StreamWriter(text + "\\" + text2 + ".txt", false, Encoding.UTF8);
-		streamWriter.WriteLine("出力バージョン\t" + 1430);
+		streamWriter.WriteLine("出力バージョン\t" + 1440);
 		streamWriter.WriteLine("基本アイテム\t" + filename.Replace(" ", ":"));
 		try
 		{

+ 1 - 1
Assembly-CSharp/Misc.cs

@@ -2,7 +2,7 @@
 
 public class Misc
 {
-	public const int GAME_VERSION = 1430;
+	public const int GAME_VERSION = 1440;
 
 	public const string GAME_DATA_PATH = "GameData";
 

+ 1 - 1
Assembly-CSharp/ModCompile.cs

@@ -604,7 +604,7 @@ public class ModCompile : MonoBehaviour
 		MemoryStream memoryStream = new MemoryStream();
 		BinaryWriter binaryWriter = new BinaryWriter(memoryStream);
 		binaryWriter.Write("CM3D2_MESH");
-		binaryWriter.Write(1430);
+		binaryWriter.Write(1440);
 		string fileNameWithoutExtension = Path.GetFileNameWithoutExtension(f_strMqoFile);
 		binaryWriter.Write(fileNameWithoutExtension);
 		binaryWriter.Write(exObjIn2.strName);

+ 2 - 2
Assembly-CSharp/OvrIK.cs

@@ -1568,7 +1568,7 @@ public class OvrIK : MonoBehaviour
 	{
 		public void OnBeforeSerialize()
 		{
-			this.m_nVersion = 1430;
+			this.m_nVersion = 1440;
 		}
 
 		public void OnAfterDeserialize()
@@ -1628,7 +1628,7 @@ public class OvrIK : MonoBehaviour
 		private const string CONF_NAME = "OvrIK.json";
 
 		[SerializeField]
-		private int m_nVersion = 1430;
+		private int m_nVersion = 1440;
 
 		[SerializeField]
 		private float solver_locomotion_weight = 1f;

+ 1 - 1
Assembly-CSharp/PhotoModeSaveAndLoad.cs

@@ -450,7 +450,7 @@ public class PhotoModeSaveAndLoad : MonoBehaviour
 	private XElement CreateCommonData(string title, string comment)
 	{
 		string value = DateTime.ParseExact(DateTime.Now.ToString("yyyyMMddHHmmss"), "yyyyMMddHHmmss", null).ToString("yyyy.MM.dd HH:mm");
-		XElement xelement = new XElement("GameVersion", 1430);
+		XElement xelement = new XElement("GameVersion", 1440);
 		XElement xelement2 = new XElement("SaveTime", value);
 		XElement xelement3 = new XElement("Title", title);
 		XElement xelement4 = new XElement("Comment", comment);

+ 1 - 1
Assembly-CSharp/PlayerStatus/Status.cs

@@ -831,7 +831,7 @@ namespace PlayerStatus
 		public void Serialize(BinaryWriter binary)
 		{
 			binary.Write("CM3D2_PLAYER_STATUS");
-			binary.Write(1430);
+			binary.Write(1440);
 			binary.Write(this.playerName_);
 			binary.Write(this.days_);
 			binary.Write(this.totalPurchasePrice_);

+ 6 - 0
Assembly-CSharp/PrivateEventListUnit.cs

@@ -95,6 +95,12 @@ public class PrivateEventListUnit : MonoBehaviour
 		this.iconSprite.sprite2D = Resources.Load<Sprite>(path);
 	}
 
+	public void SetEmptyInformation(string title)
+	{
+		this.titleLabel.text = title;
+		this.iconSprite.sprite2D = Resources.Load<Sprite>("ScenePrivate/Textures/privatemaid_icon_normal");
+	}
+
 	public void OnClickButton()
 	{
 		if (!this.isEnabled || this.onClickEvent == null)

+ 1 - 1
Assembly-CSharp/PrivateEventManager.cs

@@ -87,7 +87,7 @@ public class PrivateEventManager : WfScreenChildren
 				UILabel component = UTY.GetChildObject(this.eventHelpObject, "Text/Text", false).GetComponent<UILabel>();
 				if (component != null)
 				{
-					component.text = "イベントありません";
+					component.text = "イベントありません";
 				}
 			}
 		}

+ 39 - 8
Assembly-CSharp/PrivateEventSelectPanel.cs

@@ -5,6 +5,14 @@ using UnityEngine;
 
 public class PrivateEventSelectPanel : MonoBehaviour
 {
+	private bool isNoon
+	{
+		get
+		{
+			return GameMain.Instance.CharacterMgr.status.isDaytime;
+		}
+	}
+
 	private Maid maid
 	{
 		get
@@ -19,6 +27,7 @@ public class PrivateEventSelectPanel : MonoBehaviour
 		{
 			UnityEngine.Object.Destroy(obj);
 		}
+		this.unitList.Clear();
 		this.conditionParent.gameObject.SetActive(false);
 		DataBase.BG bg = (overRideBg != null) ? overRideBg : PrivateModeMgr.Instance.SelectBG;
 		Maid maid = (!(overRideMaid == null)) ? overRideMaid : this.maid;
@@ -26,7 +35,7 @@ public class PrivateEventSelectPanel : MonoBehaviour
 		{
 			return;
 		}
-		DataBase.BG.Event @event = bg.GetEvent(true);
+		DataBase.BG.Event @event = bg.GetEvent(this.isNoon);
 		foreach (DataBase.BG.Event.PointData pointData in @event.eventPointList)
 		{
 			bool flag = pointData.IsExec(maid) && @event.isNoon == GameMain.Instance.CharacterMgr.status.isDaytime;
@@ -35,14 +44,24 @@ public class PrivateEventSelectPanel : MonoBehaviour
 			for (int j = 0; j < pointData.information.Count; j++)
 			{
 				bool isAlreadyReaded = @event.IsFinishedReadingFile(maid, pointData, j);
-				DataBase.BG.Event.PointData.Information info = pointData.information[j];
-				bool isExec = flag && nextScenarioIndex == j;
-				PrivateEventListUnit privateEventListUnit = this.InstantiateUnitOBject(info, no, isExec, isAlreadyReaded);
-				this.unitGrid.AddChild(privateEventListUnit.transform);
-				this.unitGrid.repositionNow = true;
-				this.unitList.Add(privateEventListUnit.gameObject);
+				DataBase.BG.Event.PointData.Information information = pointData.information[j];
+				if (information.iconType != DataBase.BG.Event.PointData.Information.IconType.NTR || !GameMain.Instance.CharacterMgr.status.lockNTRPlay)
+				{
+					bool isExec = flag && nextScenarioIndex == j;
+					PrivateEventListUnit privateEventListUnit = this.InstantiateUnitOBject(information, no, isExec, isAlreadyReaded);
+					this.unitGrid.AddChild(privateEventListUnit.transform);
+					this.unitGrid.repositionNow = true;
+					this.unitList.Add(privateEventListUnit.gameObject);
+				}
 			}
 		}
+		if (this.unitList.Count <= 0)
+		{
+			PrivateEventListUnit privateEventListUnit2 = this.InstantiateEmptyUnitOBject();
+			this.unitGrid.AddChild(privateEventListUnit2.transform);
+			this.unitGrid.repositionNow = true;
+			this.unitList.Add(privateEventListUnit2.gameObject);
+		}
 	}
 
 	private PrivateEventListUnit InstantiateUnitOBject(DataBase.BG.Event.PointData.Information info, int eventNo, bool isExec, bool isAlreadyReaded)
@@ -70,13 +89,25 @@ public class PrivateEventSelectPanel : MonoBehaviour
 				{
 					return;
 				}
-				DataBase.BG.Event @event = instance.SelectBG.GetEvent(true);
+				DataBase.BG.Event @event = instance.SelectBG.GetEvent(this.isNoon);
 				@event.LoadScript(maid, eventNo);
 			}));
 		}
 		return component;
 	}
 
+	private PrivateEventListUnit InstantiateEmptyUnitOBject()
+	{
+		GameObject gameObject = UnityEngine.Object.Instantiate<GameObject>(this.eventUnit.gameObject, this.eventUnit.transform);
+		gameObject.SetActive(true);
+		PrivateEventListUnit component = gameObject.GetComponent<PrivateEventListUnit>();
+		component.SetEmptyInformation("イベントはありません");
+		component.isViewMode = true;
+		component.isEnabled = false;
+		component.isAlreadyReaded = true;
+		return component;
+	}
+
 	[SerializeField]
 	private PrivateEventListUnit eventUnit;
 

+ 4 - 0
Assembly-CSharp/SceneFreeModeSelectManager.cs

@@ -103,6 +103,10 @@ public class SceneFreeModeSelectManager : WfScreenManager
 			if (childObject6 != null)
 			{
 				childObject6.SetActive(FreeModeItemLifeMode.CreateItemList(true).Count > 0);
+				if (childObject6.activeSelf && !PersonalEventBlocker.IsEnabledLifeMode(maid.status.personal))
+				{
+					childObject6.SetActive(false);
+				}
 			}
 			childObject5.gameObject.SetActive(true);
 			childObject4.gameObject.SetActive(false);

+ 1 - 1
Assembly-CSharp/SceneNPCEdit/SaveData.cs

@@ -10,7 +10,7 @@ namespace SceneNPCEdit
 		public static void Serialize(BinaryWriter binary)
 		{
 			binary.Write("CM3D2_NPCEDIT");
-			binary.Write(1430);
+			binary.Write(1440);
 			binary.Write(SaveData.presetData.Count);
 			foreach (KeyValuePair<int, byte[]> keyValuePair in SaveData.presetData)
 			{

+ 48 - 25
Assembly-CSharp/Schedule/ScheduleAPI.cs

@@ -592,6 +592,13 @@ namespace Schedule
 			{
 				return list;
 			}
+			foreach (PersonalEventBlocker.Data data in PersonalEventBlocker.GetAllDatas())
+			{
+				if (condPersonalIds.Contains(data.personal.id))
+				{
+					condPersonalIds.Remove(data.personal.id);
+				}
+			}
 			for (int i = 0; i < GameMain.Instance.CharacterMgr.GetStockMaidCount(); i++)
 			{
 				Maid stockMaid = GameMain.Instance.CharacterMgr.GetStockMaid(i);
@@ -1377,12 +1384,12 @@ namespace Schedule
 							return false;
 						}
 					}
-					if (yotogi.condSpecialRelation.Count > 0)
+					if (yotogi.condAdditionalRelation.Count > 0)
 					{
 						bool flag5 = false;
-						for (int num4 = 0; num4 < yotogi.condSpecialRelation.Count; num4++)
+						for (int num4 = 0; num4 < yotogi.condAdditionalRelation.Count; num4++)
 						{
-							if (yotogi.condSpecialRelation[num4] == maid.status.specialRelation)
+							if (yotogi.condAdditionalRelation[num4] == maid.status.additionalRelation)
 							{
 								flag5 = true;
 								break;
@@ -1393,12 +1400,28 @@ namespace Schedule
 							return false;
 						}
 					}
+					if (yotogi.condSpecialRelation.Count > 0)
+					{
+						bool flag6 = false;
+						for (int num5 = 0; num5 < yotogi.condSpecialRelation.Count; num5++)
+						{
+							if (yotogi.condSpecialRelation[num5] == maid.status.specialRelation)
+							{
+								flag6 = true;
+								break;
+							}
+						}
+						if (!flag6)
+						{
+							return false;
+						}
+					}
 				}
 				if (yotogi.condManFlag1.Count > 0)
 				{
-					for (int num5 = 0; num5 < yotogi.condManFlag1.Count; num5++)
+					for (int num6 = 0; num6 < yotogi.condManFlag1.Count; num6++)
 					{
-						if (GameMain.Instance.CharacterMgr.status.GetFlag(yotogi.condManFlag1[num5]) < 1)
+						if (GameMain.Instance.CharacterMgr.status.GetFlag(yotogi.condManFlag1[num6]) < 1)
 						{
 							return false;
 						}
@@ -1406,9 +1429,9 @@ namespace Schedule
 				}
 				if (yotogi.condManFlag0.Count > 0)
 				{
-					for (int num6 = 0; num6 < yotogi.condManFlag0.Count; num6++)
+					for (int num7 = 0; num7 < yotogi.condManFlag0.Count; num7++)
 					{
-						if (GameMain.Instance.CharacterMgr.status.GetFlag(yotogi.condManFlag0[num6]) > 0)
+						if (GameMain.Instance.CharacterMgr.status.GetFlag(yotogi.condManFlag0[num7]) > 0)
 						{
 							return false;
 						}
@@ -1416,16 +1439,16 @@ namespace Schedule
 				}
 				if (yotogi.condContract.Count > 0)
 				{
-					bool flag6 = false;
-					for (int num7 = 0; num7 < yotogi.condContract.Count; num7++)
+					bool flag7 = false;
+					for (int num8 = 0; num8 < yotogi.condContract.Count; num8++)
 					{
-						if (yotogi.condContract[num7] == maid.status.contract)
+						if (yotogi.condContract[num8] == maid.status.contract)
 						{
-							flag6 = true;
+							flag7 = true;
 							break;
 						}
 					}
-					if (!flag6)
+					if (!flag7)
 					{
 						return false;
 					}
@@ -1434,8 +1457,8 @@ namespace Schedule
 				{
 					foreach (List<int> list in yotogi.condFacilityID)
 					{
-						bool flag7 = false;
-						foreach (int num8 in list)
+						bool flag8 = false;
+						foreach (int num9 in list)
 						{
 							Facility[] facilityArray = GameMain.Instance.FacilityMgr.GetFacilityArray();
 							foreach (Facility facility in facilityArray)
@@ -1456,11 +1479,11 @@ namespace Schedule
 								{
 									scheduleTime = ScheduleTaskViewer.ScheduleTime;
 								}
-								if (!(facility == null) && facility.defaultData.ID == num8)
+								if (!(facility == null) && facility.defaultData.ID == num9)
 								{
 									if (facility.IsOperation(scheduleTime))
 									{
-										flag7 = true;
+										flag8 = true;
 										Maid[] allocationMaidArray = facility.GetAllocationMaidArray(scheduleTime);
 										if (allocationMaidArray != null && allocationMaidArray.Length == facility.minMaidCount)
 										{
@@ -1468,24 +1491,24 @@ namespace Schedule
 											{
 												if (maid == y)
 												{
-													flag7 = false;
+													flag8 = false;
 													break;
 												}
 											}
 										}
-										if (flag7)
+										if (flag8)
 										{
 											break;
 										}
 									}
 								}
 							}
-							if (flag7)
+							if (flag8)
 							{
 								break;
 							}
 						}
-						if (!flag7)
+						if (!flag8)
 						{
 							ScheduleAPI.log("対象の施設が稼動していない");
 							return false;
@@ -1498,16 +1521,16 @@ namespace Schedule
 				}
 				if (yotogi.condPersonal.Count > 0)
 				{
-					bool flag8 = false;
-					for (int num11 = 0; num11 < yotogi.condPersonal.Count; num11++)
+					bool flag9 = false;
+					for (int num12 = 0; num12 < yotogi.condPersonal.Count; num12++)
 					{
-						if (maid.status.personal.id == yotogi.condPersonal[num11])
+						if (maid.status.personal.id == yotogi.condPersonal[num12])
 						{
-							flag8 = (!yotogi.isCheckGP002Personal || PluginData.IsEnabledForGP002Personal(maid.status.personal.uniqueName));
+							flag9 = (!yotogi.isCheckGP002Personal || PluginData.IsEnabledForGP002Personal(maid.status.personal.uniqueName));
 							break;
 						}
 					}
-					if (!flag8)
+					if (!flag9)
 					{
 						return false;
 					}

+ 10 - 2
Assembly-CSharp/Schedule/ScheduleCSVData.cs

@@ -747,6 +747,7 @@ namespace Schedule
 						'|'
 					}, StringSplitOptions.RemoveEmptyEntries);
 					yotogi.condRelation = new List<MaidStatus.Relation>();
+					yotogi.condAdditionalRelation = new List<AdditionalRelation>();
 					yotogi.condSpecialRelation = new List<SpecialRelation>();
 					yotogi.condRelationOld = new List<MaidStatus.Old.Relation>();
 					if (mode == ScheduleCSVData.ScheduleBase.Mode.COM3D)
@@ -757,6 +758,10 @@ namespace Schedule
 							{
 								yotogi.condRelation.Add((MaidStatus.Relation)Enum.Parse(typeof(MaidStatus.Relation), array10[num6], false));
 							}
+							else if (Enum.IsDefined(typeof(AdditionalRelation), array10[num6]))
+							{
+								yotogi.condAdditionalRelation.Add((AdditionalRelation)Enum.Parse(typeof(AdditionalRelation), array10[num6], false));
+							}
 							else if (Enum.IsDefined(typeof(SpecialRelation), array10[num6]))
 							{
 								yotogi.condSpecialRelation.Add((SpecialRelation)Enum.Parse(typeof(SpecialRelation), array10[num6], false));
@@ -921,7 +926,7 @@ namespace Schedule
 						}
 						else if (mode == ScheduleCSVData.ScheduleBase.Mode.CM3D2 && yotogi.yotogiType != ScheduleCSVData.YotogiType.Vip && yotogi.yotogiType != ScheduleCSVData.YotogiType.VipCall)
 						{
-							goto IL_B06;
+							goto IL_B54;
 						}
 						if (yotogi.id > 0)
 						{
@@ -929,7 +934,7 @@ namespace Schedule
 						}
 					}
 				}
-				IL_B06:;
+				IL_B54:;
 			}
 		}
 
@@ -979,6 +984,7 @@ namespace Schedule
 					yotogi.condSeikeiken = new List<Seikeiken>();
 					yotogi.condYotogiClass = new List<int>();
 					yotogi.condRelation = new List<MaidStatus.Relation>();
+					yotogi.condAdditionalRelation = new List<AdditionalRelation>();
 					yotogi.condSpecialRelation = new List<SpecialRelation>();
 					yotogi.condPropensity = new List<int>();
 					yotogi.condFlag0 = new List<string>();
@@ -1447,6 +1453,8 @@ namespace Schedule
 
 			public List<MaidStatus.Relation> condRelation;
 
+			public List<AdditionalRelation> condAdditionalRelation;
+
 			public List<SpecialRelation> condSpecialRelation;
 
 			public string subMaidUnipueName = string.Empty;

+ 22 - 3
Assembly-CSharp/ScheduleTaskCtrl.cs

@@ -1,6 +1,7 @@
 using System;
 using System.Collections;
 using System.Collections.Generic;
+using MaidStatus;
 using Schedule;
 using UnityEngine;
 
@@ -532,6 +533,7 @@ public class ScheduleTaskCtrl : BaseCreateViewerCtrl
 		this.m_scheduleApi = this.m_scheduleMgr.GetScheduleApi();
 		List<ScheduleBase> scheduleData = this.m_scheduleApi.slot[slotNo].scheduleData;
 		List<ScheduleBase> list = new List<ScheduleBase>();
+		Maid maid = this.m_scheduleApi.slot[slotNo].maid;
 		this.m_listWorksData.Add(ScheduleTaskCtrl.TaskType.Yotogi, list);
 		List<ScheduleTaskCtrl.TaskButton> list2 = new List<ScheduleTaskCtrl.TaskButton>();
 		foreach (ScheduleBase scheduleBase in scheduleData)
@@ -540,7 +542,12 @@ public class ScheduleTaskCtrl : BaseCreateViewerCtrl
 			if (scheduleBase.workType == ScheduleType.Yotogi)
 			{
 				ScheduleYotogi scheduleYotogi = (ScheduleYotogi)scheduleBase;
-				if (scheduleYotogi.visible)
+				bool flag = scheduleYotogi.visible;
+				if (flag && maid != null)
+				{
+					flag = PersonalEventBlocker.IsEnabledScheduleTask(maid.status.personal, scheduleBase.id);
+				}
+				if (flag)
 				{
 					list2.Add(new ScheduleTaskCtrl.YotogiTaskButton
 					{
@@ -561,6 +568,7 @@ public class ScheduleTaskCtrl : BaseCreateViewerCtrl
 		this.m_scheduleApi = this.m_scheduleMgr.GetScheduleApi();
 		List<ScheduleBase> scheduleData = this.m_scheduleApi.slot[slotNo].scheduleData;
 		List<ScheduleBase> list = new List<ScheduleBase>();
+		Maid maid = this.m_scheduleApi.slot[slotNo].maid;
 		this.m_listWorksData.Add(ScheduleTaskCtrl.TaskType.Training, list);
 		this.m_currentSlotInfo = this.m_scheduleApi.slot[slotNo];
 		List<ScheduleTaskCtrl.TaskButton> list2 = new List<ScheduleTaskCtrl.TaskButton>();
@@ -570,7 +578,12 @@ public class ScheduleTaskCtrl : BaseCreateViewerCtrl
 			if (scheduleBase.workType == ScheduleType.Training)
 			{
 				ScheduleTraining scheduleTraining = (ScheduleTraining)scheduleBase;
-				if (scheduleTraining.visible)
+				bool flag = scheduleTraining.visible;
+				if (flag && maid != null)
+				{
+					flag = PersonalEventBlocker.IsEnabledScheduleTask(maid.status.personal, scheduleBase.id);
+				}
+				if (flag)
 				{
 					list2.Add(new ScheduleTaskCtrl.TrainingTaskButton
 					{
@@ -593,6 +606,7 @@ public class ScheduleTaskCtrl : BaseCreateViewerCtrl
 		this.m_scheduleApi = this.m_scheduleMgr.GetScheduleApi();
 		List<ScheduleBase> scheduleData = this.m_scheduleApi.slot[slotNo].scheduleData;
 		List<ScheduleBase> list = new List<ScheduleBase>();
+		Maid maid = this.m_scheduleApi.slot[slotNo].maid;
 		this.m_listWorksData.Add(ScheduleTaskCtrl.TaskType.Work, list);
 		this.m_currentSlotInfo = this.m_scheduleApi.slot[slotNo];
 		List<ScheduleTaskCtrl.TaskButton> list2 = new List<ScheduleTaskCtrl.TaskButton>();
@@ -602,7 +616,12 @@ public class ScheduleTaskCtrl : BaseCreateViewerCtrl
 			if (scheduleBase.workType == ScheduleType.Work)
 			{
 				ScheduleWork scheduleWork = (ScheduleWork)scheduleBase;
-				if (scheduleWork.visible)
+				bool flag = scheduleWork.visible;
+				if (flag && maid != null)
+				{
+					flag = PersonalEventBlocker.IsEnabledScheduleTask(maid.status.personal, scheduleBase.id);
+				}
+				if (flag)
 				{
 					list2.Add(new ScheduleTaskCtrl.WorkTaskButton
 					{

+ 1 - 1
Assembly-CSharp/ScriptManager.cs

@@ -3336,7 +3336,7 @@ public class ScriptManager : IDisposable
 	public void Serialize(BinaryWriter binary)
 	{
 		binary.Write("CM3D2_SCRIPT");
-		binary.Write(1430);
+		binary.Write(1440);
 		this.adv_kag_.Serialize(binary);
 	}
 

+ 24 - 24
Assembly-CSharp/ShoulderThighIKData.cs

@@ -13,30 +13,6 @@ public class ShoulderThighIKData : LimbIKData
 		this.m_ForceIKEnable = true;
 	}
 
-	public override float PositionWeight
-	{
-		get
-		{
-			return this.Effector.positionWeight;
-		}
-		set
-		{
-			this.Effector.positionWeight = value;
-		}
-	}
-
-	public override float RotationWeight
-	{
-		get
-		{
-			return this.Effector.rotationWeight;
-		}
-		set
-		{
-			this.Effector.rotationWeight = value;
-		}
-	}
-
 	public ElbowKneeIKData ElbowKneeData
 	{
 		get
@@ -87,6 +63,30 @@ public class ShoulderThighIKData : LimbIKData
 		this.m_ElbowKneeData = elbowknee_data;
 	}
 
+	protected override void OnPostSetPositionWeight(float val)
+	{
+		if (this.m_IsPullBody)
+		{
+			this.Effector.positionWeight = val;
+		}
+	}
+
+	protected override void OnPostSetRotationWeight(float val)
+	{
+		if (this.m_IsPullBody)
+		{
+			this.Effector.rotationWeight = val;
+		}
+	}
+
+	public override void Update()
+	{
+		if (!this.m_IsPullBody && base.RotateIK.IsIKExec)
+		{
+			this.TargetBone.rotation = Quaternion.Lerp(this.TargetBone.rotation, base.IKTarget.rotation, base.RotationWeight);
+		}
+	}
+
 	public readonly IKEffector Effector;
 
 	private ElbowKneeIKData m_ElbowKneeData;

+ 1 - 1
Assembly-CSharp/WindowPartsFingerPreset.cs

@@ -182,7 +182,7 @@ public class WindowPartsFingerPreset : MonoBehaviour
 	{
 		WindowPartsFingerBlend.Type blendType = tareget_blend.BlendType;
 		FingerBlend.BaseFinger baseFingerClass = tareget_blend.GetBaseFingerClass(tareget_blend.mgr.select_maid, blendType);
-		XElement xelement = new XElement("GameVersion", 1430);
+		XElement xelement = new XElement("GameVersion", 1440);
 		XElement xelement2 = new XElement("RightData", blendType == WindowPartsFingerBlend.Type.RightArm || blendType == WindowPartsFingerBlend.Type.RightLeg);
 		XElement xelement3 = new XElement("BinaryData", Convert.ToBase64String(baseFingerClass.GetBinary()));
 		XNode[] contents = new XNode[]

+ 6 - 3
Assembly-CSharp/YotogiResultManager.cs

@@ -121,14 +121,17 @@ public class YotogiResultManager : WfScreenChildren
 			hashSet4.Remove(item4);
 		}
 		bool lockNTRPlay = GameMain.Instance.CharacterMgr.status.lockNTRPlay;
-		foreach (int id3 in hashSet4)
+		foreach (int num2 in hashSet4)
 		{
-			Skill.Data data = Skill.Get(id3);
+			Skill.Data data = Skill.Get(num2);
 			if (data.IsResultDisplay(lockNTRPlay))
 			{
 				if (data.IsExecSeikeiken(this.maid_.status.seikeiken))
 				{
-					this.AddAcquiredSkill(data.name, data.termName);
+					if (PersonalEventBlocker.IsEnabledYotodiSkill(this.maid_.status.personal, num2))
+					{
+						this.AddAcquiredSkill(data.name, data.termName);
+					}
 				}
 			}
 		}

+ 4 - 0
Assembly-CSharp/YotogiSkillListManager.cs

@@ -138,6 +138,10 @@ public class YotogiSkillListManager : MonoBehaviour
 				{
 					continue;
 				}
+				if (!PersonalEventBlocker.IsEnabledYotodiSkill(maid.status.personal, value.skillData.id))
+				{
+					continue;
+				}
 			}
 			else if (value.skillDataOld != null && lockNTRPlay && (value.skillDataOld.category == YotogiOld.Category.交換 || value.skillDataOld.category == YotogiOld.Category.乱交))
 			{

+ 1 - 1
Assembly-CSharp/YotogiSkillSelectManager.cs

@@ -166,7 +166,7 @@ public class YotogiSkillSelectManager : WfScreenChildren
 		foreach (KeyValuePair<int, YotogiSkillListManager.Data> keyValuePair in dictionary)
 		{
 			YotogiSkillListManager.Data value = keyValuePair.Value;
-			if (value.skillData.IsExecStage(this.setting_stage_data_))
+			if (value.skillData.IsExecStage(this.setting_stage_data_) && PersonalEventBlocker.IsEnabledYotodiSkill(this.maid_.status.personal, value.skillData.id))
 			{
 				this.category_data_array_[(int)value.skillData.category].skill_list.Add(value);
 			}

+ 5 - 1
Assembly-CSharp/YotogiSubCharacterSelectManager.cs

@@ -1,5 +1,6 @@
 using System;
 using System.Collections.Generic;
+using MaidStatus;
 using Yotogis;
 
 public class YotogiSubCharacterSelectManager : WfScreenChildren
@@ -18,7 +19,10 @@ public class YotogiSubCharacterSelectManager : WfScreenChildren
 			for (int i = 0; i < keyArray.Length; i++)
 			{
 				Skill.Data data = Skill.Get(keyArray[i]);
-				num = Math.Max(num, data.player_num);
+				if (PersonalEventBlocker.IsEnabledYotodiSkill(maid.status.personal, data.id))
+				{
+					num = Math.Max(num, data.player_num);
+				}
 			}
 			return ((this.yotogi_mgr_.GetPlayPossibleMaidCount() >= num) ? num : this.yotogi_mgr_.GetPlayPossibleMaidCount()) - 1;
 		}