static bool TagFace(BaseKagManager baseKagManager, KagTagSupport tag_data)
    {
        Maid maidAndMan = GetMaidAndMan(tag_data);

        if (maidAndMan == null)
        {
            return(false);
        }
        if (maidAndMan != null && ExSaveData.GetBool(maidAndMan, PluginName, "FACE_OFF", false))
        {
            // Helper.Log("FACE_OFF() -> match");
            return(false);
        }

        baseKagManager.CheckAbsolutelyNecessaryTag(tag_data, "face", new string[] { "name" });

        string oldName = tag_data.GetTagProperty("name").AsString();
        string newName = FaceScriptTemplates.ProcFaceName(maidAndMan, PluginName, oldName);
        // Helper.Log("TagFace({0})->({1})", oldName, newName);

        WaitEventList waitEventList = GetWaitEventList(baseKagManager, "face");
        int           num           = 0;

        if (tag_data.IsValid("wait"))
        {
            num = tag_data.GetTagProperty("wait").AsInteger();
        }
        if (num > 0)
        {
            waitEventList.Add(() =>
            {
                if (maidAndMan != null && maidAndMan.body0 != null && maidAndMan.body0.isLoadedBody)
                {
                    maidAndMan.FaceAnime(newName, 1f, 0);
                }
            }, num);
        }
        else
        {
            maidAndMan.FaceAnime(newName, 1f, 0);
            waitEventList.Clear();
        }
        return(false);
    }