The list of garment voice lines hasn't changed, but here it is:
undress, undressHat, undressShirt, undressSkirt, undressPants, undressShorts, undressDress, undressUndies, undressBra, undressStockings, undressShoes, undressModesty, undressTop, undressBottom
As for which clothing names triggers which line, it's not as straightforward as a list. It's a bunch of ordered string matching checks that get it right most of the time, but not always. I'll just post the code here.
public void playUndressVoice(Player player, Clothing clothing) {
PlayerVoiceData.VoiceEventType eventType = PlayerVoiceData.VoiceEventType.undress;
if(clothing != null) {
String clothingName = clothing.getName().trim().toLowerCase();
if (clothingName.contains("shirt") || clothingName.contains("blouse")) {
eventType = PlayerVoiceData.VoiceEventType.undressShirt;
} else if (clothingName.contains("skirt")) {
eventType = PlayerVoiceData.VoiceEventType.undressSkirt;
} else if (clothingName.contains("pants") || clothingName.contains("trousers")) {
eventType = PlayerVoiceData.VoiceEventType.undressPants;
} else if (clothingName.contains("shorts")) {
eventType = PlayerVoiceData.VoiceEventType.undressShorts;
} else if (clothingName.contains("dress") || clothingName.contains("gown") || clothingName.contains("robe")) {
eventType = PlayerVoiceData.VoiceEventType.undressDress;
} else if (clothingName.contains("panties") || clothingName.contains("undies") || clothingName.contains("bloomers") || clothingName.contains("knickers") || clothingName.contains("thong") || clothingName.contains("briefs") || clothingName.contains("g-string") || clothingName.contains("loincloth")) {
eventType = PlayerVoiceData.VoiceEventType.undressUndies;
} else if (clothingName.contains("bra") || clothingName.contains("corset") || clothingName.contains("bustier") || clothingName.contains("bikini top") || clothingName.contains("halter top")|| clothingName.contains("bandeau")) {
eventType = PlayerVoiceData.VoiceEventType.undressBra;
} else if (clothingName.contains("stockings") || clothingName.contains("pantyhose") || clothingName.contains("socks") || clothingName.contains("knee-highs") || clothingName.contains("tights") || clothingName.contains("body stocking")) {
eventType = PlayerVoiceData.VoiceEventType.undressStockings;
} else if (clothingName.contains("shoes") || clothingName.contains("boots") || clothingName.contains("slippers") || clothingName.contains("sandals") || clothingName.contains("sneaker")) {
eventType = PlayerVoiceData.VoiceEventType.undressShoes;
} else if (clothingName.contains("modesty")) {
eventType = PlayerVoiceData.VoiceEventType.undressModesty;
} else if (clothingName.contains("top") || clothingName.contains("sweater") || clothingName.contains("jacket") || clothingName.contains("coat") || clothingName.contains("vestments") || clothingName.contains("breastplate")) {
eventType = PlayerVoiceData.VoiceEventType.undressTop;
} else if (clothingName.contains("bottom") || clothingName.contains("leggings")) {
eventType = PlayerVoiceData.VoiceEventType.undressBottom;
} else if (clothingName.contains("hat") || clothingName.contains("veil") || clothingName.contains("headdress") || clothingName.contains("helmet") || (clothingName.contains("head") && clothingName.contains("scarf"))) {
eventType = PlayerVoiceData.VoiceEventType.undressHat;
}
}
if(!player.getPlayerVoiceData().hasVoiceEvent(eventType)) {
eventType = PlayerVoiceData.VoiceEventType.undress;
}
playVoice(player, eventType, true);
}