boneknocker

Newbie
Nov 4, 2019
52
22
Are you using my pack? Is anyone else experiencing this with my pack?

I have not seen this happen on my end, but I didn't trigger that story beat yet on 1.3, so would very much like to know if others experience this.

I'll be testing this on my pack later today regardless, but the more information the better... I'd also like it if someone using my pack and experience this could send me their output_log, preferably over DM over in discord so that I can look further into it.

I'd also like further info regarding what optional mods are in use.
i not sure about this but i heard it may trigger by repair the boat and go to that empty island which come with 1.0.2 update. i did try use 100% save and ran into another problem. this time Chan stay at that empty island instead, and do H with her cause no icon bug....what da hell is that.

any way thanks for reply. now i thinking about to reproduce this bug, but first i think i have to find any cheat that give me huge amount of resource to craft thing. since this game have only 1 save for each run.....why they did this any way ? it really frustrate.
 
Last edited:

boneknocker

Newbie
Nov 4, 2019
52
22
Can I for some help please? My vigilance is a bit high at around 300 so I am getting such things as "hatred missionary". I then increased the other parameters above 300 so it is higher than vigilance. However, I still get "hatred missionary". What am I doing wrong? Thank you for your help!
nahh you do nothing wrong. it think some certain H position relate with H skill (or may be normal skill too). i have 2-3 hate H position in one girl. but she just keep growing and end at 3 hearts level with in a few days any way. and now she is the one that wonder around the island and come back to give me some rare item all the time....well...even she still having those hate H position duhh.
 

boneknocker

Newbie
Nov 4, 2019
52
22
This happened to me on repack 1.2 and didnt change after updating to 1.3, feels unrelated to the repack.
Shan was standing in front of the warehouse thing and while H i changed position once because she was partly inside the wall. Then after that she was inside the bathroom and wont move from there, trying H will make the game unresponsive to anything thats not closing the game.
Where is the output_log? btw I am not using any optional mods.
we are in the same boat bro. my wide guess is this will happen if we clear the final story quest (repair boat and go to housing island). now i try hard to replay from start (new game). it must be great if you know where to find any cheat that give huge resource for crafting for speed game forward a little bit. honestly 1 save for each run is awkward FA.
 

Erik1986

Member
Jul 5, 2017
480
760
Sugjestion to add this website to the sugjested links:



Its the wiki for the game, and slowly but surely is being filled with explanaisions about the games various systems and content. Expect in time to have some detailed info about traits, character editor and other aspects of the game to be filled in.

Highly sugjest people to keep an eye on the page for future reference.

Also wanted to share a character ive been making, wanted a goth like look, and did the best i could sofar. Only thing wish, where for bigger extension of tattoo's. She only has basic ones, spider web on her back, and a spider on her thigh. Clothing wise its a hell to realy find gothic like stuff, so settled for something simple.

Manged to also add a lip and nose piercing, simply by rearanging and resizing a ring for her hands to fit the job. The necklace/choker is also a resized ring.
PS: She is a bit more chubby then the standard models, but i tried to not make it look fat. Just pleasingly curvy. ;)
AISChaF_20191104134926484.png
 
Last edited:

NewDawn

New Member
Oct 27, 2019
1
0
Does anyone know whether you have to buy a battery for the 2nd machine (that gives u the 3rd girl) or is it hidden somewhere in zone 3?
 

Erik1986

Member
Jul 5, 2017
480
760
Batteries are simply found with a very low rate of getting them from gathering spots. Ive managed to find all batteries through gathering, but is heavily RNG related.

Try orange gathering spots for the best chance i think.
 
  • Like
Reactions: ScrewThisNoise

EroShane

Active Member
Sep 7, 2019
815
965
For all those looking for a mod to add in more girls... Unfortunately the girls are not added in a static "item" sense... They are referred to as AgentActor [Heroine] in the programming (chara= Agent/Player/Merchant)... I found where they are added... The problem is they are tied to the repair and activation of their capsules [heroine_point]. Therefore, the only way we can add new girls would be:

A: place new capsules via decompressing the current game assets and assemblies, opening the module in Unity, duplicating the animated capsules with attached scripts, placing them in new locations on the map in Unity, then exporting the file package to be applied in the game's mods folder... (I wonder if the room at the back of the lab has the same animated capsules, deleting the box collider and model for that one collapsed capsule shouldn't be too hard to gain access to that back area -- provided it's not just a visual overlay and they are 3d objects in there -- if not we'd need to replace the capsules with the animated one outside, assign a new ID number, and duplicate them throughout that back room... should work in conventional theory)

B: Track down the script that is deleting the functionality of the add girl function in the existing capsules, which would more-or-less be gamebreaking in that you would be able to load infinite girls from the first capsule you find and repair. This would be easier in theory but would be broken in completed games and could possibly cause save corruption, and also would need to be used experimentally and not in excess since I would imagine if you blindly added a dozen girls then went to play there is a possibility the game would freeze completely. Since they are all going to be battling one another for your attention immediately after. We would probably have to add one, run around and test FPS drops, then save, then add another, lather rinse repeat.

C: Lastly, there may be a way to add a module with a UI overlay to simply spawn in an additional girl at your location using a simple location get script and then making it call the spawn of the new girl routine just kind of plopping her on top of you. That would also operate the same as the B: option in general...

I would feel best with A since that would require you to get to the end of the island, but it would also be more work with higher potential of causing deeper issues and breaking more stuff. However, the other two would likely make it easier to break the game in various ways... I dunno, just spitballing...

This is the LoadAgents script that utilizes the capsules:
C:
private IEnumerator LoadAgents(WorldData profile, bool existsBackup)
    {
        DefinePack define = Singleton<Manager.Resources>.Instance.DefinePack;
        AgentProfile agentProfile = Singleton<Manager.Resources>.Instance.AgentProfile;
        string bundlePath = define.ABPaths.ActorPrefab;
        string manifest = define.ABManifests.Default;
        GameObject agentPrefab = CommonLib.LoadAsset<GameObject>(bundlePath, "Agent", clone: false, manifest);
        if (!MapScene.AssetBundlePaths.Exists((UnityEx.ValueTuple<string, string> x) => x.Item1 == bundlePath && x.Item2 == manifest))
        {
            MapScene.AssetBundlePaths.Add(new UnityEx.ValueTuple<string, string>(bundlePath, manifest));
        }
        int[] chunkKeys = ChunkTable.Keys.ToArray();
        int maxCharaNum = Config.GraphicData.MaxCharaNum;
        bool[] charasEnter = Config.GraphicData.CharasEntry;
        for (int i = 0; i < profile.AgentTable.Count; i++)
        {
            if (!charasEnter[i] && (!TutorialMode || i != 0))
            {
                continue;
            }
            AgentData data = profile.AgentTable[i];
            if (!data.OpenState || data.CharaFileName.IsNullOrEmpty())
            {
                continue;
            }
            GameObject agentObj = UnityEngine.Object.Instantiate(agentPrefab, ActorRoot);
            agentObj.name = string.Format("Heroine_{0}", i.ToString("00"));
            AgentActor agent = agentObj.GetComponent<AgentActor>();
            agent.ID = i;
            agent.AgentData = data;
            data.param.Bind(agent);
            RegisterActor(i, agent);
            RegisterAgent(i, agent);
            if (existsBackup)
            {
                if (!TutorialMode)
                {
                    if (agentProfile.BlackListInSaveAndLoad.Contains(data.ModeType))
                    {
                        data.ModeType = Desire.ActionType.Normal;
                    }
                    if (data.ModeType == Desire.ActionType.Date || data.ModeType == Desire.ActionType.Onbu)
                    {
                        data.ModeType = Desire.ActionType.Normal;
                    }
                }
                agent.Mode = data.ModeType;
                agent.PrevMode = data.PrevMode;
                if (i == 0 && TutorialMode)
                {
                    AgentActor agentActor = agent;
                    Desire.ActionType actionType2 = data.ModeType = Desire.ActionType.Idle;
                    actionType2 = actionType2;
                    agent.PrevActionMode = actionType2;
                    actionType2 = actionType2;
                    agent.PrevMode = actionType2;
                    agentActor.Mode = actionType2;
                    agent.PrevActionMode = Desire.ActionType.Idle;
                    agent.TutorialType = data.TutorialModeType;
                    agent.TutorialMode = true;
                    TutorialAgent = agent;
                    agent.CreateTutorialBehaviorResources();
                }
                Vector3 pos = data.Position;
                (from _ in Observable.EveryUpdate()
                    where agent.NavMeshAgent.enabled
                    select _).TakeWhile((long _) => !agent.NavMeshAgent.isOnNavMesh).Subscribe(delegate
                {
                    agent.NavMeshAgent.Warp(pos);
                });
                agent.Rotation = data.Rotation;
                ChunkTable.TryGetValue(data.ChunkID, out Chunk value);
                MapArea[] mapAreas = value.MapAreas;
                foreach (MapArea mapArea in mapAreas)
                {
                    if (mapArea.AreaID == data.AreaID)
                    {
                        agent.MapArea = mapArea;
                    }
                }
            }
            else
            {
                StoryPoint storyPoint = GetStoryPoint(0);
                if (TutorialMode && i == 0 && storyPoint != null)
                {
                    AgentActor agentActor2 = agent;
                    Desire.ActionType actionType2 = data.ModeType = Desire.ActionType.Idle;
                    actionType2 = actionType2;
                    agent.PrevActionMode = actionType2;
                    actionType2 = actionType2;
                    agent.PrevMode = actionType2;
                    agentActor2.Mode = actionType2;
                    AIProject.Definitions.Tutorial.ActionType actionType6 = agent.TutorialType = (data.TutorialModeType = AIProject.Definitions.Tutorial.ActionType.Idle);
                    agent.MapArea = storyPoint.OwnerArea;
                    Transform transform = storyPoint.transform.FindLoop("heroine_point").transform;
                    AgentActor agentActor3 = agent;
                    Vector3? vector = transform?.position;
                    agentActor3.Position = ((!vector.HasValue) ? (storyPoint.Position + Player.Rotation * storyPoint.Forward * 3f) : vector.Value);
                    AgentActor agentActor4 = agent;
                    Quaternion? quaternion = transform?.rotation;
                    agentActor4.Rotation = ((!quaternion.HasValue) ? storyPoint.Rotation : quaternion.Value);
                    agent.TutorialMode = true;
                    TutorialAgent = agent;
                    agent.CreateTutorialBehaviorResources();
                }
                else
                {
                    int key = 0;
                    ChunkTable.TryGetValue(key, out Chunk value2);
                    List<Waypoint> waypoints = value2.MapAreas[0].Waypoints;
                    List<Waypoint> list = waypoints.FindAll(delegate(Waypoint x)
                    {
                        Vector3 position = Player.Position;
                        float num = Vector3.Distance(x.transform.position, position);
                        return num > 50f;
                    });
                    if (Debug.isDebugBuild)
                    {
                        Debug.Log($"近距離で除外されたウェイポイントの数 = {waypoints.Count - list.Count}");
                    }
                    Waypoint element = list.GetElement(UnityEngine.Random.Range(0, list.Count));
                    agent.Position = element.transform.position;
                    agent.MapArea = value2.MapAreas[0];
                }
            }
            agent.Relocate();
            agentObj.SetActiveSafe(isActive: true);
            yield return agent.LoadAsync();
            if (!existsBackup)
            {
                agent.SetDefaultImmoral();
                foreach (KeyValuePair<int, float> item in agent.ChaControl.fileGameInfo.desireDefVal)
                {
                    agent.AgentData.DesireTable[item.Key] = item.Value;
                }
            }
            yield return null;
        }
        yield return null;

public void LoadAgentTargetActionPoint()
    {
        foreach (KeyValuePair<int, AgentActor> agent in _agentTable)
        {
            ActionPoint actionPoint = PointAgent.ActionPoints.FirstOrDefault((ActionPoint x) => x.RegisterID == agent.Value.AgentData.CurrentActionPointID);
            if (actionPoint == null)
            {
                actionPoint = PointAgent.AppendActionPoints.Find((ActionPoint x) => x.RegisterID == agent.Value.AgentData.CurrentActionPointID);
            }
            if (actionPoint != null && !actionPoint.AgentEventType.Contains(AIProject.EventType.Move) && !actionPoint.AgentEventType.Contains(AIProject.EventType.DoorOpen))
            {
                agent.Value.TargetInSightActionPoint = actionPoint;
            }
        }
    }

    public void LoadAgentTargetActor()
    {
        foreach (KeyValuePair<int, AgentActor> item in _agentTable)
        {
            if (_actorTable.TryGetValue(item.Value.AgentData.ActionTargetID, out Actor value))
            {
                item.Value.TargetInSightActor = value;
            }
        }
    } 
    }
This seems to be the script that is activated to actually spawn the girl into the world:

Code:
public AgentActor AddAgent(int id, AgentData agentData)
    {
        if (_agentPrefab == null)
        {
            DefinePack definePack = Singleton<Manager.Resources>.Instance.DefinePack;
            string bundlePath = definePack.ABPaths.ActorPrefab;
            string manifest = definePack.ABManifests.Default;
            _agentPrefab = CommonLib.LoadAsset<GameObject>(bundlePath, "Agent", clone: false, manifest);
            if (!MapScene.AssetBundlePaths.Exists((UnityEx.ValueTuple<string, string> x) => x.Item1 == bundlePath && x.Item2 == manifest))
            {
                MapScene.AssetBundlePaths.Add(new UnityEx.ValueTuple<string, string>(bundlePath, manifest));
            }
        }
        int[] array = ChunkTable.Keys.ToArray();
        GameObject gameObject = UnityEngine.Object.Instantiate(_agentPrefab, ActorRoot);
        gameObject.name = string.Format("Heroine_{0}", id.ToString("00"));
        AgentActor component = gameObject.GetComponent<AgentActor>();
        component.ID = id;
        component.AgentData = agentData;
        if (Singleton<Manager.Resources>.Instance.AgentProfile.DefaultAreaIDTable.TryGetValue(id, out int value))
        {
            int num3 = component.AreaID = (agentData.AreaID = value);
            foreach (KeyValuePair<int, Chunk> item in ChunkTable)
            {
                MapArea[] mapAreas = item.Value.MapAreas;
                foreach (MapArea mapArea in mapAreas)
                {
                    if (mapArea.AreaID == value)
                    {
                        component.MapArea = mapArea;
                    }
                }
            }
        }
        agentData.param.Bind(component);
        RegisterActor(id, component);
        RegisterAgent(id, component);
        if (Singleton<AnimalManager>.IsInstance())
        {
            Singleton<AnimalManager>.Instance.AddTargetAnimals(component);
        }
        component.Relocate();
        gameObject.SetActiveSafe(isActive: true);
        component.Load();
        return component;
    }
Then these are used to unload the existing girls from the world:

Code:
public void RemoveAgent(AgentActor agent)
    {
        agent.DisableBehavior();
        agent.BehaviorResources.DisableAllBehaviors();
        foreach (KeyValuePair<int, Dictionary<int, UnityEx.ValueTuple<AudioSource, FadePlayer>>> item in agent.Animation.ActionLoopSETable)
        {
            foreach (KeyValuePair<int, UnityEx.ValueTuple<AudioSource, FadePlayer>> item2 in item.Value)
            {
                UnityEx.ValueTuple<AudioSource, FadePlayer> value = item2.Value;
                if (!(value.Item2 == null))
                {
                    UnityEx.ValueTuple<AudioSource, FadePlayer> value2 = item2.Value;
                    value2.Item2.Stop(0f);
                }
            }
        }
        agent.Animation.ActionLoopSETable.Clear();
        Player.PlayerController.CommandArea.RemoveCommandableObject(agent);
        UnregisterAgent(agent.ID);
        UnregisterActor(agent.ID);
        foreach (KeyValuePair<int, AgentActor> item3 in AgentTable)
        {
            if (!(item3.Value == agent))
            {
                item3.Value.RemoveActor(agent);
            }
        }
        Singleton<Character>.Instance.DeleteChara(agent.ChaControl);
        UnityEngine.Object.Destroy(agent.gameObject);
    }
These are found at:
Assembly-CSharp.dll>Manager>Map>Line 2580

Attached a full version of the map.xml file if anyone wants to look at the whole thing and throw about some ideas...
 

w.iT

Member
Feb 4, 2018
423
390
Got a question here...the H part is entirely from the male side? The girl wont self initiate the sequence or self proceed with the process while doing it?
 
  • Like
Reactions: EroShane

EroShane

Active Member
Sep 7, 2019
815
965
Hah! Found it! Wonder if simply tweaking this will make it work...

Located in: Assembly-CSharp>ConfigScene>GraphicSystem>Line 9


C:
// ConfigScene.GraphicSystem
using ConfigScene;
using System;
using System.Xml;
using UnityEngine;

public class GraphicSystem : BaseSystem
{
    public const int MAX_CHARA_NUM = 4;

    public const byte CHARA_GRAPHIC_QUALITY = 0;

    public const byte MAP_GRAPHIC_QUALITY = 0;

    public bool SelfShadow = true;

    public bool Bloom = true;

    public bool SSAO = true;

    public bool SSR = true;

    public bool DepthOfField = true;

    public bool Atmospheric = true;

    public bool Vignette = true;

    public bool Rain = true;

    public byte CharaGraphicQuality;

    public byte MapGraphicQuality;

    public bool FaceLight;

    public bool AmbientLight = true;

    public bool Shield = true;

    public bool SimpleBody;

    public Color SilhouetteColor = Color.blue;

    public Color BackColor = Color.black;

    public int MaxCharaNum = 4;

    public bool[] CharasEntry = new bool[4];

    public GraphicSystem(string elementName)
        : base(elementName)
    {
    }

    public override void Init()
    {
        SelfShadow = true;
        Bloom = true;
        SSAO = true;
        SSR = true;
        DepthOfField = true;
        Atmospheric = true;
        Vignette = true;
        Rain = true;
        CharaGraphicQuality = 0;
        MapGraphicQuality = 0;
        FaceLight = false;
        AmbientLight = true;
        Shield = true;
        SimpleBody = false;
        SilhouetteColor = Color.blue;
        BackColor = Color.black;
        MaxCharaNum = 4;
        for (int i = 0; i < 4; i++)
        {
            CharasEntry[i] = true;
        }
    }

    public override void Read(string rootName, XmlDocument xml)
    {
        try
        {
            XmlNodeList xmlNodeList = null;
            string text = rootName + "/" + elementName + "/";
            xmlNodeList = xml.SelectNodes(text + "SelfShadow");
            if (xmlNodeList != null)
            {
                XmlElement xmlElement = xmlNodeList.Item(0) as XmlElement;
                if (xmlElement != null)
                {
                    SelfShadow = (bool)BaseSystem.Cast(xmlElement.InnerText, SelfShadow.GetType());
                }
            }
            xmlNodeList = xml.SelectNodes(text + "Bloom");
            if (xmlNodeList != null)
            {
                XmlElement xmlElement2 = xmlNodeList.Item(0) as XmlElement;
                if (xmlElement2 != null)
                {
                    Bloom = (bool)BaseSystem.Cast(xmlElement2.InnerText, Bloom.GetType());
                }
            }
            xmlNodeList = xml.SelectNodes(text + "SSAO");
            if (xmlNodeList != null)
            {
                XmlElement xmlElement3 = xmlNodeList.Item(0) as XmlElement;
                if (xmlElement3 != null)
                {
                    SSAO = (bool)BaseSystem.Cast(xmlElement3.InnerText, SSAO.GetType());
                }
            }
            xmlNodeList = xml.SelectNodes(text + "SSR");
            if (xmlNodeList != null)
            {
                XmlElement xmlElement4 = xmlNodeList.Item(0) as XmlElement;
                if (xmlElement4 != null)
                {
                    SSR = (bool)BaseSystem.Cast(xmlElement4.InnerText, SSR.GetType());
                }
            }
            xmlNodeList = xml.SelectNodes(text + "DepthOfField");
            if (xmlNodeList != null)
            {
                XmlElement xmlElement5 = xmlNodeList.Item(0) as XmlElement;
                if (xmlElement5 != null)
                {
                    DepthOfField = (bool)BaseSystem.Cast(xmlElement5.InnerText, DepthOfField.GetType());
                }
            }
            xmlNodeList = xml.SelectNodes(text + "Atmospheric");
            if (xmlNodeList != null)
            {
                XmlElement xmlElement6 = xmlNodeList.Item(0) as XmlElement;
                if (xmlElement6 != null)
                {
                    Atmospheric = (bool)BaseSystem.Cast(xmlElement6.InnerText, Atmospheric.GetType());
                }
            }
            xmlNodeList = xml.SelectNodes(text + "Vignette");
            if (xmlNodeList != null)
            {
                XmlElement xmlElement7 = xmlNodeList.Item(0) as XmlElement;
                if (xmlElement7 != null)
                {
                    Vignette = (bool)BaseSystem.Cast(xmlElement7.InnerText, Vignette.GetType());
                }
            }
            xmlNodeList = xml.SelectNodes(text + "Rain");
            if (xmlNodeList != null)
            {
                XmlElement xmlElement8 = xmlNodeList.Item(0) as XmlElement;
                if (xmlElement8 != null)
                {
                    Rain = (bool)BaseSystem.Cast(xmlElement8.InnerText, Rain.GetType());
                }
            }
            xmlNodeList = xml.SelectNodes(text + "CharaGraphicQuality");
            if (xmlNodeList != null)
            {
                XmlElement xmlElement9 = xmlNodeList.Item(0) as XmlElement;
                if (xmlElement9 != null)
                {
                    CharaGraphicQuality = (byte)BaseSystem.Cast(xmlElement9.InnerText, CharaGraphicQuality.GetType());
                }
            }
            xmlNodeList = xml.SelectNodes(text + "MapGraphicQuality");
            if (xmlNodeList != null)
            {
                XmlElement xmlElement10 = xmlNodeList.Item(0) as XmlElement;
                if (xmlElement10 != null)
                {
                    MapGraphicQuality = (byte)BaseSystem.Cast(xmlElement10.InnerText, MapGraphicQuality.GetType());
                }
            }
            xmlNodeList = xml.SelectNodes(text + "FaceLight");
            if (xmlNodeList != null)
            {
                XmlElement xmlElement11 = xmlNodeList.Item(0) as XmlElement;
                if (xmlElement11 != null)
                {
                    FaceLight = (bool)BaseSystem.Cast(xmlElement11.InnerText, FaceLight.GetType());
                }
            }
            xmlNodeList = xml.SelectNodes(text + "AmbientLight");
            if (xmlNodeList != null)
            {
                XmlElement xmlElement12 = xmlNodeList.Item(0) as XmlElement;
                if (xmlElement12 != null)
                {
                    AmbientLight = (bool)BaseSystem.Cast(xmlElement12.InnerText, AmbientLight.GetType());
                }
            }
            xmlNodeList = xml.SelectNodes(text + "Shield");
            if (xmlNodeList != null)
            {
                XmlElement xmlElement13 = xmlNodeList.Item(0) as XmlElement;
                if (xmlElement13 != null)
                {
                    Shield = (bool)BaseSystem.Cast(xmlElement13.InnerText, Shield.GetType());
                }
            }
            xmlNodeList = xml.SelectNodes(text + "SimpleBody");
            if (xmlNodeList != null)
            {
                XmlElement xmlElement14 = xmlNodeList.Item(0) as XmlElement;
                if (xmlElement14 != null)
                {
                    SimpleBody = (bool)BaseSystem.Cast(xmlElement14.InnerText, SimpleBody.GetType());
                }
            }
            xmlNodeList = xml.SelectNodes(text + "SilhouetteColor");
            if (xmlNodeList != null)
            {
                XmlElement xmlElement15 = xmlNodeList.Item(0) as XmlElement;
                if (xmlElement15 != null)
                {
                    SilhouetteColor = (Color)BaseSystem.Cast(xmlElement15.InnerText, SilhouetteColor.GetType());
                }
            }
            xmlNodeList = xml.SelectNodes(text + "BackColor");
            if (xmlNodeList != null)
            {
                XmlElement xmlElement16 = xmlNodeList.Item(0) as XmlElement;
                if (xmlElement16 != null)
                {
                    BackColor = (Color)BaseSystem.Cast(xmlElement16.InnerText, BackColor.GetType());
                }
            }
            xmlNodeList = xml.SelectNodes(text + "MaxCharaNum");
            if (xmlNodeList != null)
            {
                XmlElement xmlElement17 = xmlNodeList.Item(0) as XmlElement;
                if (xmlElement17 != null)
                {
                    MaxCharaNum = (int)BaseSystem.Cast(xmlElement17.InnerText, MaxCharaNum.GetType());
                }
            }
            for (int i = 0; i < 4; i++)
            {
                xmlNodeList = xml.SelectNodes(text + "CharasEntry" + i);
                if (xmlNodeList != null)
                {
                    XmlElement xmlElement18 = xmlNodeList.Item(0) as XmlElement;
                    if (xmlElement18 != null)
                    {
                        CharasEntry[i] = (bool)BaseSystem.Cast(xmlElement18.InnerText, CharasEntry[i].GetType());
                    }
                }
            }
        }
        catch (Exception ex)
        {
            Debug.LogError(ex.Message);
        }
    }

    public override void Write(XmlWriter writer)
    {
        writer.WriteStartElement(elementName);
        writer.WriteStartElement("SelfShadow");
        writer.WriteValue(BaseSystem.ConvertString(SelfShadow));
        writer.WriteEndElement();
        writer.WriteStartElement("Bloom");
        writer.WriteValue(BaseSystem.ConvertString(Bloom));
        writer.WriteEndElement();
        writer.WriteStartElement("SSAO");
        writer.WriteValue(BaseSystem.ConvertString(SSAO));
        writer.WriteEndElement();
        writer.WriteStartElement("SSR");
        writer.WriteValue(BaseSystem.ConvertString(SSR));
        writer.WriteEndElement();
        writer.WriteStartElement("DepthOfField");
        writer.WriteValue(BaseSystem.ConvertString(DepthOfField));
        writer.WriteEndElement();
        writer.WriteStartElement("Atmospheric");
        writer.WriteValue(BaseSystem.ConvertString(Atmospheric));
        writer.WriteEndElement();
        writer.WriteStartElement("Vignette");
        writer.WriteValue(BaseSystem.ConvertString(Vignette));
        writer.WriteEndElement();
        writer.WriteStartElement("Rain");
        writer.WriteValue(BaseSystem.ConvertString(Rain));
        writer.WriteEndElement();
        writer.WriteStartElement("CharaGraphicQuality");
        writer.WriteValue(BaseSystem.ConvertString(CharaGraphicQuality));
        writer.WriteEndElement();
        writer.WriteStartElement("MapGraphicQuality");
        writer.WriteValue(BaseSystem.ConvertString(MapGraphicQuality));
        writer.WriteEndElement();
        writer.WriteStartElement("FaceLight");
        writer.WriteValue(BaseSystem.ConvertString(FaceLight));
        writer.WriteEndElement();
        writer.WriteStartElement("AmbientLight");
        writer.WriteValue(BaseSystem.ConvertString(AmbientLight));
        writer.WriteEndElement();
        writer.WriteStartElement("Shield");
        writer.WriteValue(BaseSystem.ConvertString(Shield));
        writer.WriteEndElement();
        writer.WriteStartElement("SimpleBody");
        writer.WriteValue(BaseSystem.ConvertString(SimpleBody));
        writer.WriteEndElement();
        writer.WriteStartElement("SilhouetteColor");
        writer.WriteValue(BaseSystem.ConvertString(SilhouetteColor));
        writer.WriteEndElement();
        writer.WriteStartElement("BackColor");
        writer.WriteValue(BaseSystem.ConvertString(BackColor));
        writer.WriteEndElement();
        writer.WriteStartElement("MaxCharaNum");
        writer.WriteValue(BaseSystem.ConvertString(MaxCharaNum));
        writer.WriteEndElement();
        for (int i = 0; i < 4; i++)
        {
            string localName = "CharasEntry" + i;
            writer.WriteStartElement(localName);
            writer.WriteValue(BaseSystem.ConvertString(CharasEntry[i]));
            writer.WriteEndElement();
        }
        writer.WriteEndElement();
    }
}
 

Murazio

Newbie
Apr 30, 2018
38
17
Got a question here...the H part is entirely from the male side? The girl wont self initiate the sequence or self proceed with the process while doing it?
If you give her the slut trait she will force you to it from time to time.
 

Fakeuser002

Member
Jan 23, 2018
239
649
Manged to also add a lip and nose piercing, simply by rearanging and resizing a ring for her hands to fit the job. The necklace/choker is also a resized ring.
Yeah, you can use that trick to do some really nifty things with items. Here I used the headphones as a necklace and the nipple piercing as an earring, and turned a ring into a navel piercing. On other characters I've also turned a necklace into an anklet and finger rings into a series of ear piercings. It's amazing how many possibilities open up with those settings.

Untitled.jpg
 

Erik1986

Member
Jul 5, 2017
480
760
Like EroShane said, depends on the initiator. But that said, i think what you mean might also be "does the ecchi scene have a auto mode?" which it doesnt i think. You are in constant control of the pace and what position is done in the scenes.

PS: as said, it is posible for a girl to come to you at 100% horny mood to request sex, but thats it, afterwards it still acts like the usual ecchi scene, you control the action.

Edit: I dont have a "slut" trait girl, but i guess its posible she can initiate/start a ecchi scene in those cases?
 
  • Like
Reactions: w.iT
3.40 star(s) 33 Votes