public bool IsWearingAtLeast(EBodyArea target, WEAR_SHOW min) { if (target == EBodyArea.BREASTS) { return((Actor.wears.IsEquiped(Actor.customParam, WEAR_SHOW_TYPE.BRA) && Actor.wears.GetShow(WEAR_SHOW_TYPE.BRA, false) <= min) || (Actor.wears.IsEquiped(Actor.customParam, WEAR_SHOW_TYPE.TOPUPPER) && Actor.wears.GetShow(WEAR_SHOW_TYPE.TOPUPPER, false) <= min) || (Actor.wears.IsEquiped(Actor.customParam, WEAR_SHOW_TYPE.TOPLOWER) && Actor.wears.GetShow(WEAR_SHOW_TYPE.TOPLOWER, false) <= min) || (Actor.wears.IsEquiped(Actor.customParam, WEAR_SHOW_TYPE.SWIM_TOPUPPER) && Actor.wears.GetShow(WEAR_SHOW_TYPE.SWIM_TOPUPPER, false) <= min) || (Actor.wears.IsEquiped(Actor.customParam, WEAR_SHOW_TYPE.SWIM_TOPLOWER) && Actor.wears.GetShow(WEAR_SHOW_TYPE.SWIM_TOPLOWER, false) <= min) || (Actor.wears.IsEquiped(Actor.customParam, WEAR_SHOW_TYPE.SWIMUPPER) && Actor.wears.GetShow(WEAR_SHOW_TYPE.SWIMUPPER, false) <= min)); } else if (target == EBodyArea.CROTCH) { return((Actor.wears.IsEquiped(Actor.customParam, WEAR_SHOW_TYPE.BOTTOM) && Actor.wears.GetShow(WEAR_SHOW_TYPE.BOTTOM, false) <= min) || (Actor.wears.IsEquiped(Actor.customParam, WEAR_SHOW_TYPE.PANST) && Actor.wears.GetShow(WEAR_SHOW_TYPE.PANST, false) <= WEAR_SHOW.ALL) || (Actor.wears.IsEquiped(Actor.customParam, WEAR_SHOW_TYPE.SWIM_BOTTOM) && Actor.wears.GetShow(WEAR_SHOW_TYPE.SWIM_BOTTOM, false) <= min) || (Actor.wears.IsEquiped(Actor.customParam, WEAR_SHOW_TYPE.SWIMLOWER) && Actor.wears.GetShow(WEAR_SHOW_TYPE.SWIMLOWER, false) <= min) || (Actor.wears.IsEquiped(Actor.customParam, WEAR_SHOW_TYPE.SHORTS) && Actor.wears.GetShow(WEAR_SHOW_TYPE.SHORTS, false) <= min)); } else if (target == EBodyArea.THIGHS) { return((Actor.wears.IsEquiped(Actor.customParam, WEAR_SHOW_TYPE.BOTTOM) && Actor.wears.GetShow(WEAR_SHOW_TYPE.BOTTOM, false) <= min) || (Actor.wears.IsEquiped(Actor.customParam, WEAR_SHOW_TYPE.PANST) && Actor.wears.GetShow(WEAR_SHOW_TYPE.PANST, false) <= min)); } return(false); }
public void ResetClothes(WEAR_SHOW newState = WEAR_SHOW.ALL) { for (WEAR_SHOW_TYPE type = WEAR_SHOW_TYPE.TOPUPPER; type < WEAR_SHOW_TYPE.SHOES; ++type) { Actor.wears.ChangeShow(type, newState); } Actor.CheckShow(); }
private static WEAR_SHOW UndressStep(WEAR_SHOW_TYPE type, Human human) { WEAR_SHOW now = human.wears.GetShow(type, false); WEAR_SHOW res = now; switch (human.wears.GetWearShowNum(type)) { case 2: res = (WEAR_SHOW)((int)(now + 1) % 3); break; case 1: res = now != WEAR_SHOW.ALL ? WEAR_SHOW.ALL : WEAR_SHOW.HIDE; break; } return(now > res ? now : res); }
private bool DoUndressStep(EBodyArea target, WEAR_SHOW currentStep, bool bNoPanties) { // Order matters to get the proper undress sequence if (target == EBodyArea.BREASTS) { if ((Actor.wears.IsEquiped(Actor.customParam, WEAR_SHOW_TYPE.TOPUPPER) && Actor.wears.GetShow(WEAR_SHOW_TYPE.TOPUPPER, false) == currentStep) || (Actor.wears.IsEquiped(Actor.customParam, WEAR_SHOW_TYPE.TOPLOWER) && Actor.wears.GetShow(WEAR_SHOW_TYPE.TOPLOWER, false) == currentStep)) { Actor.wears.ChangeShow(WEAR_SHOW_TYPE.TOPUPPER, UndressStep(WEAR_SHOW_TYPE.TOPUPPER, Actor)); Actor.wears.ChangeShow(WEAR_SHOW_TYPE.TOPLOWER, UndressStep(WEAR_SHOW_TYPE.TOPLOWER, Actor)); } else if ((Actor.wears.IsEquiped(Actor.customParam, WEAR_SHOW_TYPE.SWIM_TOPUPPER) && Actor.wears.GetShow(WEAR_SHOW_TYPE.SWIM_TOPUPPER, false) == currentStep) || (Actor.wears.IsEquiped(Actor.customParam, WEAR_SHOW_TYPE.SWIM_TOPLOWER) && Actor.wears.GetShow(WEAR_SHOW_TYPE.SWIM_TOPLOWER, false) == currentStep)) { Actor.wears.ChangeShow(WEAR_SHOW_TYPE.SWIM_TOPUPPER, UndressStep(WEAR_SHOW_TYPE.SWIM_TOPUPPER, Actor)); Actor.wears.ChangeShow(WEAR_SHOW_TYPE.SWIM_TOPLOWER, UndressStep(WEAR_SHOW_TYPE.SWIM_TOPLOWER, Actor)); } else if (Actor.wears.IsEquiped(Actor.customParam, WEAR_SHOW_TYPE.SWIMUPPER) && Actor.wears.GetShow(WEAR_SHOW_TYPE.SWIMUPPER, false) == currentStep) { Actor.wears.ChangeShow(WEAR_SHOW_TYPE.SWIMUPPER, UndressStep(WEAR_SHOW_TYPE.SWIMUPPER, Actor)); } else if (Actor.wears.IsEquiped(Actor.customParam, WEAR_SHOW_TYPE.BRA) && Actor.wears.GetShow(WEAR_SHOW_TYPE.BRA, false) == currentStep) { Actor.wears.ChangeShow(WEAR_SHOW_TYPE.BRA, UndressStep(WEAR_SHOW_TYPE.BRA, Actor)); } else { return(false); } Actor.CheckShow(); return(true); } else if (target == EBodyArea.CROTCH) { if (Actor.wears.IsEquiped(Actor.customParam, WEAR_SHOW_TYPE.BOTTOM) && Actor.wears.GetShow(WEAR_SHOW_TYPE.BOTTOM, false) == currentStep) { Actor.wears.ChangeShow(WEAR_SHOW_TYPE.BOTTOM, UndressStep(WEAR_SHOW_TYPE.BOTTOM, Actor)); } else if (Actor.wears.IsEquiped(Actor.customParam, WEAR_SHOW_TYPE.PANST) && Actor.wears.GetShow(WEAR_SHOW_TYPE.PANST, false) == WEAR_SHOW.ALL) { Actor.wears.ChangeShow(WEAR_SHOW_TYPE.PANST, UndressStep(WEAR_SHOW_TYPE.PANST, Actor)); } else if (Actor.wears.IsEquiped(Actor.customParam, WEAR_SHOW_TYPE.SWIM_BOTTOM) && Actor.wears.GetShow(WEAR_SHOW_TYPE.SWIM_BOTTOM, false) == currentStep) { Actor.wears.ChangeShow(WEAR_SHOW_TYPE.SWIM_BOTTOM, UndressStep(WEAR_SHOW_TYPE.SWIM_BOTTOM, Actor)); } else if (Actor.wears.IsEquiped(Actor.customParam, WEAR_SHOW_TYPE.SWIMLOWER) && Actor.wears.GetShow(WEAR_SHOW_TYPE.SWIMLOWER, false) == currentStep) { Actor.wears.ChangeShow(WEAR_SHOW_TYPE.SWIMLOWER, UndressStep(WEAR_SHOW_TYPE.SWIMLOWER, Actor)); } else if (!bNoPanties && Actor.wears.IsEquiped(Actor.customParam, WEAR_SHOW_TYPE.SHORTS) && Actor.wears.GetShow(WEAR_SHOW_TYPE.SHORTS, false) == currentStep) { Actor.wears.ChangeShow(WEAR_SHOW_TYPE.SHORTS, UndressStep(WEAR_SHOW_TYPE.SHORTS, Actor)); } else { return(false); } Actor.CheckShow(); return(true); } else if (target == EBodyArea.THIGHS) { if (Actor.wears.IsEquiped(Actor.customParam, WEAR_SHOW_TYPE.BOTTOM) && Actor.wears.GetShow(WEAR_SHOW_TYPE.BOTTOM, false) == currentStep) { Actor.wears.ChangeShow(WEAR_SHOW_TYPE.BOTTOM, UndressStep(WEAR_SHOW_TYPE.BOTTOM, Actor)); } else if (Actor.wears.IsEquiped(Actor.customParam, WEAR_SHOW_TYPE.PANST) && Actor.wears.GetShow(WEAR_SHOW_TYPE.PANST, false) == currentStep) { Actor.wears.ChangeShow(WEAR_SHOW_TYPE.PANST, UndressStep(WEAR_SHOW_TYPE.PANST, Actor)); } else { return(false); } Actor.CheckShow(); return(true); } return(false); }
public static bool Prefix(Wears __instance, WEAR_SHOW_TYPE showType) { WEAR_TYPE wear_TYPE = Wears.ShowToWearType[(int)showType]; int num = (int)wear_TYPE; FieldInfo wearObjsField = typeof(Wears).GetField("wearObjs", BindingFlags.Instance | BindingFlags.NonPublic); FieldInfo wearParamField = typeof(Wears).GetField("wearParam", BindingFlags.Instance | BindingFlags.NonPublic); WearObj[] wearObjs = wearObjsField.GetValue(__instance) as WearObj[]; WearParameter wearParam = wearParamField.GetValue(__instance) as WearParameter; if (wearObjs[num] == null) { return(false); } GameObject obj = wearObjs[num].obj; WEAR_SHOW show = __instance.GetShow(showType, true); bool flag = true; bool flag2 = false; if (wear_TYPE == WEAR_TYPE.SWIM) { WearData wearData = __instance.GetWearData(WEAR_TYPE.SWIM); if (wearData != null && wearData.coordinates == 0) { flag2 = true; } } if (!flag2) { flag = (show != WEAR_SHOW.HIDE); } if (flag) { flag = Wears.IsEnableWear(wearParam.isSwimwear, wear_TYPE); } if (wear_TYPE == WEAR_TYPE.BRA && flag) { if (wearObjs[0] != null && __instance.GetShow(WEAR_SHOW_TYPE.TOPUPPER, true) == WEAR_SHOW.ALL) { flag = false; } WearData wearData2 = __instance.GetWearData(WEAR_TYPE.TOP); WearData wearData3 = __instance.GetWearData(WEAR_TYPE.BOTTOM); if (wearData2 != null) { if (wearData2.nip) { flag = true; } if (wearData2.braDisable) { flag = false; } } if (wearData3 != null && wearData3.braDisable) { flag = false; } } if (wear_TYPE == WEAR_TYPE.SHORTS && flag) { WearData wearData4 = __instance.GetWearData(WEAR_TYPE.TOP); WearData wearData5 = __instance.GetWearData(WEAR_TYPE.BOTTOM); if (wearData4 != null && wearData4.shortsDisable) { flag = false; } if (wearData5 != null && wearData5.shortsDisable) { flag = false; } } if (wear_TYPE == WEAR_TYPE.BOTTOM && flag) { WearData wearData6 = __instance.GetWearData(WEAR_TYPE.TOP); if (wearData6 != null && wearData6.coordinates == 2) { flag = false; } } WearObj wearObj = wearObjs[num]; if (Wears.IsLower(showType)) { wearObj.ChangeShow_Lower(show); } else { wearObj.obj.SetActive(flag); if (wearObj.liquid != null && wearObj.liquid.root != null) { wearObj.liquid.root.SetActive(flag); } wearObj.ChangeShow_Upper(show); } return(false); }