That looks very clustered. I suggest using the parameter variables. For example use:
void ResetWine(string &in asParent, string &in asChild, int alState)
{
AddTimer(asParent, 3, "TimerResetWine");
}
void TimerResetWine(string &in asTimer)
{
ResetProp(asTimer);
}
Doing it like this would make the script much shorted but achieve the same. Instead of using absolute names, it will reference to the current value of asParent / asTimer, which at runtime will be the entity currently used to call the events.
Anyway, have you tried, instead of using ResetProp, to use the CreateEntityAtArea? Perhaps you can just create new bottles at defined areas instead? Broken props may not want to reset, as they might be considered non-existant.