Now, you are talking about workflow. ;)
What I suggested you is a very simple idea, but in order to be efficient and flexible in the future, you will need something else.
If I were you, I will store which enemy drops which item in 2 instance variables called "drop" and "chance". All enemies will be in one single family and that "droppingItem" family will have these 2 instance variables IN string. WHY in string?
Because I will store it like this:
drop = "None|Potion|Antidote"
chance = "60|30|10"
Now, when an enemy got killed, it's time to do some string parsing. First, get this instance variable. Parse the string using tokenat expression:
okenat(src, index, separator)
Return the Nth token from src, splitting the string by separator. For example, tokenat("apples|oranges|bananas", 1, "|") returns oranges.
tokenat(drop, 0, "|") shall return "None".
tokenat(drop, 1, "|") shall return "Potion".
tokenat(drop, 2, "|") shall return "Antidote".
tokenat(chance, 0, "|") shall return "60".
tokenat(chance, 1, "|") shall return "30".
tokenat(chance, 2, "|") shall return "10".
Yes, you will put this in a loop and using loopindex instead of 0,1,2. (if you want more technical info here, ask the forums regarding the loop in C2)
Now, you will want to check your random value against the chance value. Perhaps, with this:
okencount(src, separator)
Count how many tokens occur in src using separator. For example, tokencount("apples|oranges|bananas", "|") returns 3.
The pseudocode will be something like this: (if you never write a program before, just say so)
ran = random(100);
while ( tokencount(chance, "|") > loopindex){
if ( int(tokenat(chance, loopindex, "|")) < ran)
return tokenat(drop, loopindex, "|");
loopindex = loopindex + 1;
}
Now, with this here, you will get yourself one of the "None|Potion|Antidote". So how can you create an object type respectively? You need to use a plugin called "nickname" for this. Search for it in the forums. It allows you to create object via string.
This sounds complicated, but this is one possibility.