Os pongo dos versiones en AGE. La primera es si se quiere que el evento vaya dirigido a una habitación (y se muestre a todos los jugadores y criaturas que están en ella):
Código:
/*
r: habitación donde tendrá lugar el evento
probability: probabilidad entre 0 y 1 de que suceda un evento
texts: textos aleatorios para elegir uno que se mostrará en caso de que suceda el evento
*/
void randomEvent ( Room r , double probability , String[] texts )
{
if ( world.getRandom().nextDouble() < probability ) //echar a suertes si hay evento
{
int eventIndex = Math.abs( world.getRandom().nextInt() % texts.length ); //elegir qué mensaje se muestra
r.reportActionAuto ( null , null , texts[eventIndex] , false ); //mostrar el mensaje
}
}
La segunda es si se quiere que el evento vaya dirigido directamente al jugador, esté en la habitación donde esté:
Código:
/*
m: criatura que recibirá el evento
probability: probabilidad entre 0 y 1 de que suceda un evento
texts: textos aleatorios para elegir uno que se mostrará en caso de que suceda el evento
*/
void randomEvent ( Mobile m , double probability , String[] texts )
{
if ( world.getRandom().nextDouble() < probability ) //echar a suertes si hay evento
{
int eventIndex = Math.abs( world.getRandom().nextInt() % texts.length ); //elegir qué mensaje se muestra
m.writeStory ( texts[eventIndex] ); //mostrar el mensaje
}
}
Así, por ejemplo, para usar la primera forma, podríamos llamarla así:
Código:
String[] mensajes = {"Un trueno hace resonar todo el vestíbulo.","Desde un rincón oscuro del vestíbulo, oyes el chirrido de una rata."};
randomEvent ( room("Vestíbulo") , 0.5 , mensajes );
Que mostraría uno de los dos mensajes en el vestíbulo con probabilidad 0.5 (50%).