1 | /* |
1 | /* |
2 | * static char *rcsid_plugins_c = |
2 | * static char *rcsid_plugins_c = |
3 | * "$Id: plugins.c,v 1.12 2006/07/15 11:57:02 elmex Exp $"; |
3 | * "$Id: plugins.c,v 1.13 2006/08/12 11:51:38 elmex Exp $"; |
4 | */ |
4 | */ |
5 | |
5 | |
6 | /*****************************************************************************/ |
6 | /*****************************************************************************/ |
7 | /* CrossFire, A Multiplayer game for X-windows */ |
7 | /* CrossFire, A Multiplayer game for X-windows */ |
8 | /* */ |
8 | /* */ |
… | |
… | |
416 | if (cp->gevent[eventcode] != NULL) |
416 | if (cp->gevent[eventcode] != NULL) |
417 | cp->gevent[eventcode](&rt, eventcode, op, buf); |
417 | cp->gevent[eventcode](&rt, eventcode, op, buf); |
418 | } |
418 | } |
419 | break; |
419 | break; |
420 | |
420 | |
421 | case EVENT_FIND_UNARMED_SKILL: |
421 | case EVENT_FIND_UNARMED_SKILL: |
422 | op = va_arg(args, object*); |
422 | op = va_arg(args, object*); |
423 | for (cp = plugins_list; cp != NULL; cp = cp->next) { |
423 | for (cp = plugins_list; cp != NULL; cp = cp->next) { |
424 | if (cp->gevent[eventcode] != NULL) |
424 | if (cp->gevent[eventcode] != NULL) |
425 | if ((tmpretval = cp->gevent[eventcode](&rt, eventcode, op)) && *tmpretval > 0) { |
425 | if ((tmpretval = cp->gevent[eventcode](&rt, eventcode, op)) && *tmpretval > 0) { |
426 | retval = *tmpretval; |
426 | retval = *tmpretval; |
427 | } |
|
|
428 | } |
427 | } |
|
|
428 | } |
429 | break; |
429 | break; |
430 | |
430 | |
431 | case EVENT_PLAYER_USE_SKILL: |
431 | case EVENT_PLAYER_USE_SKILL: |
432 | case EVENT_MONSTER_USE_SKILL: |
432 | case EVENT_MONSTER_USE_SKILL: |
433 | op = va_arg(args, object*); |
433 | op = va_arg(args, object*); |
434 | op2 = va_arg(args, object*); |
434 | op2 = va_arg(args, object*); |
435 | op3 = va_arg(args, object*); |
435 | op3 = va_arg(args, object*); |
436 | fix = va_arg(args, int); |
436 | fix = va_arg(args, int); |
437 | buf = va_arg(args, char*); |
437 | buf = va_arg(args, char*); |
438 | for (cp = plugins_list; cp != NULL; cp = cp->next) { |
438 | for (cp = plugins_list; cp != NULL; cp = cp->next) { |
439 | if (cp->gevent[eventcode] != NULL) |
439 | if (cp->gevent[eventcode] != NULL) |
440 | if ((tmpretval = cp->gevent[eventcode](&rt, eventcode, op, op2, op3, fix, buf)) && *tmpretval != 0) { |
440 | if ((tmpretval = cp->gevent[eventcode](&rt, eventcode, op, op2, op3, fix, buf)) && *tmpretval != 0) { |
441 | retval = *tmpretval; |
441 | retval = *tmpretval; |
442 | } |
|
|
443 | } |
442 | } |
|
|
443 | } |
444 | break; |
444 | break; |
|
|
445 | |
|
|
446 | case EVENT_CAST_SPELL: |
|
|
447 | op = va_arg(args, object*); |
|
|
448 | op2 = va_arg(args, object*); |
|
|
449 | op3 = va_arg(args, object*); |
|
|
450 | fix = va_arg(args, int); |
|
|
451 | buf = va_arg(args, char*); |
|
|
452 | for (cp = plugins_list; cp != NULL; cp = cp->next) { |
|
|
453 | if (cp->gevent[eventcode] != NULL) |
|
|
454 | if ((tmpretval = cp->gevent[eventcode](&rt, eventcode, op, op2, op3, fix, buf)) && *tmpretval != 0) { |
|
|
455 | retval = *tmpretval; |
|
|
456 | break; /* The first who did something wins! */ |
|
|
457 | } |
|
|
458 | } |
|
|
459 | break; |
445 | |
460 | |
446 | case EVENT_EXTCMD: |
461 | case EVENT_EXTCMD: |
447 | /*KICK: op, parms*/ |
462 | /*KICK: op, parms*/ |
448 | pl = va_arg (args, player *); |
463 | pl = va_arg (args, player *); |
449 | buf = va_arg (args, char *); |
464 | buf = va_arg (args, char *); |