i que quieres?.. que te den todo el robot hecho en una linea?...
No, pero supongo que tendra que aver algun metodo para abreviar
Insisto que crear un archivo de recursos y utilizar los Id para obtener los datos es una buena opción.
Por ejemplo vamos a suponer que desde el Id 100 al id 110 son saludos, y del 105 a 110 son saludos con un estado de ánimo deprimido. Entonces creamos las siguientes constantes:
Const MSG_GREET_BASE = 100 'Es el id base de los saludos.
Const MSG_GREET_CNT = 10 'Cantidad de saludos.
Const MSG_GREET_STATE1_BASE = 5 'Id base relativo a MSG_GREET_BASE de los saludos con el estado de ánimo 1 (supongamos que es deprimido)
Const ACTION_GREETINGS = 1 'Acción de saludar.
Const BOT_STATE_DEP = 1 'Estado deprimido.
Const BOT_STATE_HAPPY = 2 'Estado feliz.
Const BOT_STATE_ANGRY = 3 'Estado enojado.
Const BOT_STATE_NORMAL = 4 'Sin emociones :P
Luego se crea un procedimiento que reconozca todas las acciones y que la ejecute:
Private iCurState As Integer 'Variable de estado.
Private Sub PerformAction(Action as Integer)
Select Case Action
Case ACTION_GREETINGS
End Select
End Sub
Function GetGreet(State As Integer) As String
Dim iItem%, sMsg$
Select Case State
Case BOT_STATE_DEP: iItem = (MSG_GREET_BASE + MSG_GREET_STATE1_BASE) + _
(Rnd * (MSG_GREET_CNT - MSG_GREET_STATE1_BASE))
Case BOT_STATE_NORMAL: iItem = (MSG_GREET_BASE + (Rnd * MSG_GREET_STATE1_BASE))
End Select
sMsg = LoadResString(iItem)
GetGreet = sMsg
End Sub
Sólo es una idea, hay muchas formas más de hacerlo.
Saludos.