1 | /* |
1 | /* |
2 | * static char *rcsid_plugins_c = |
2 | * static char *rcsid_plugins_c = |
3 | * "$Id: plugins.c,v 1.7 2006/03/07 13:44:43 root Exp $"; |
3 | * "$Id: plugins.c,v 1.9 2006/03/17 02:35:08 root 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 | /* */ |
… | |
… | |
308 | if (cp->gevent[eventcode] != NULL) |
308 | if (cp->gevent[eventcode] != NULL) |
309 | cp->gevent[eventcode](&rt, eventcode); |
309 | cp->gevent[eventcode](&rt, eventcode); |
310 | } |
310 | } |
311 | break; |
311 | break; |
312 | |
312 | |
|
|
313 | case EVENT_PLAYER_LOAD: |
|
|
314 | case EVENT_PLAYER_SAVE: |
|
|
315 | /* object, filename */ |
|
|
316 | op = va_arg(args, object*); |
|
|
317 | buf = va_arg(args, char*); |
|
|
318 | for (cp = plugins_list; cp != NULL; cp = cp->next) { |
|
|
319 | if (cp->gevent[eventcode] != NULL) |
|
|
320 | cp->gevent[eventcode](&rt, eventcode, op, buf); |
|
|
321 | } |
|
|
322 | break; |
|
|
323 | |
313 | case EVENT_MAPLOAD: |
324 | case EVENT_MAPLOAD: |
314 | case EVENT_MAPOUT: |
325 | case EVENT_MAPOUT: |
315 | case EVENT_MAPIN: |
326 | case EVENT_MAPIN: |
316 | case EVENT_MAPCLEAN: |
327 | case EVENT_MAPCLEAN: |
317 | /* map argument */ |
328 | /* map argument */ |
… | |
… | |
1395 | rv = op->map; |
1406 | rv = op->map; |
1396 | *type = CFAPI_PMAP; |
1407 | *type = CFAPI_PMAP; |
1397 | break; |
1408 | break; |
1398 | |
1409 | |
1399 | case CFAPI_OBJECT_PROP_COUNT: |
1410 | case CFAPI_OBJECT_PROP_COUNT: |
1400 | rv = &op->count; |
1411 | ri = op->count; rv = &ri; |
1401 | *type = CFAPI_INT; |
1412 | *type = CFAPI_INT; |
1402 | break; |
1413 | break; |
1403 | |
1414 | |
1404 | case CFAPI_OBJECT_PROP_REFCOUNT: |
1415 | case CFAPI_OBJECT_PROP_REFCOUNT: |
1405 | rv = &op->refcount; |
1416 | ri = op->refcount; rv = &ri; |
1406 | *type = CFAPI_INT; |
1417 | *type = CFAPI_INT; |
1407 | break; |
1418 | break; |
1408 | |
1419 | |
1409 | case CFAPI_OBJECT_PROP_NAME: |
1420 | case CFAPI_OBJECT_PROP_NAME: |
1410 | rv = query_name(op); |
1421 | rv = query_name(op); |
… | |
… | |
1469 | rv = &op->speed_left; |
1480 | rv = &op->speed_left; |
1470 | *type = CFAPI_DOUBLE; |
1481 | *type = CFAPI_DOUBLE; |
1471 | break; |
1482 | break; |
1472 | |
1483 | |
1473 | case CFAPI_OBJECT_PROP_NROF: |
1484 | case CFAPI_OBJECT_PROP_NROF: |
1474 | rv = &op->nrof; |
1485 | ri = op->nrof; rv = &ri; |
1475 | *type = CFAPI_INT; |
1486 | *type = CFAPI_INT; |
1476 | break; |
1487 | break; |
1477 | |
1488 | |
1478 | case CFAPI_OBJECT_PROP_DIRECTION: |
1489 | case CFAPI_OBJECT_PROP_DIRECTION: |
1479 | rv = &op->direction; |
1490 | ri = op->direction; rv = &ri; |
1480 | *type = CFAPI_INT; |
1491 | *type = CFAPI_INT; |
1481 | break; |
1492 | break; |
1482 | |
1493 | |
1483 | case CFAPI_OBJECT_PROP_FACING: |
1494 | case CFAPI_OBJECT_PROP_FACING: |
1484 | rv = &op->facing; |
1495 | ri = op->facing; rv = &ri; |
1485 | *type = CFAPI_INT; |
1496 | *type = CFAPI_INT; |
1486 | break; |
1497 | break; |
1487 | |
1498 | |
1488 | case CFAPI_OBJECT_PROP_TYPE: |
1499 | case CFAPI_OBJECT_PROP_TYPE: |
1489 | rv = &op->type; |
1500 | ri = op->type; rv = &ri; |
1490 | *type = CFAPI_INT; |
1501 | *type = CFAPI_INT; |
1491 | break; |
1502 | break; |
1492 | |
1503 | |
1493 | case CFAPI_OBJECT_PROP_SUBTYPE: |
1504 | case CFAPI_OBJECT_PROP_SUBTYPE: |
1494 | rv = &op->subtype; |
1505 | ri = op->subtype; rv = &ri; |
1495 | *type = CFAPI_INT; |
1506 | *type = CFAPI_INT; |
1496 | break; |
1507 | break; |
1497 | |
1508 | |
1498 | case CFAPI_OBJECT_PROP_CLIENT_TYPE: |
1509 | case CFAPI_OBJECT_PROP_CLIENT_TYPE: |
1499 | rv = &op->client_type; |
1510 | ri = op->client_type; rv = &ri; |
1500 | *type = CFAPI_INT; |
1511 | *type = CFAPI_INT; |
1501 | break; |
1512 | break; |
1502 | |
1513 | |
1503 | case CFAPI_OBJECT_PROP_RESIST: |
1514 | case CFAPI_OBJECT_PROP_RESIST: |
1504 | { |
1515 | { |
1505 | int idx; |
1516 | int idx; |
1506 | idx = va_arg(args, int); |
1517 | idx = va_arg(args, int); |
1507 | rv = &op->resist[idx]; |
1518 | ri = op->resist[idx]; rv = &ri; |
1508 | } |
1519 | } |
1509 | *type = CFAPI_INT16; |
1520 | *type = CFAPI_INT; |
1510 | break; |
1521 | break; |
1511 | |
1522 | |
1512 | case CFAPI_OBJECT_PROP_ATTACK_TYPE: |
1523 | case CFAPI_OBJECT_PROP_ATTACK_TYPE: |
1513 | rv = &op->attacktype; |
1524 | ri = op->attacktype; rv = &ri; |
1514 | *type = CFAPI_INT; |
1525 | *type = CFAPI_INT; |
1515 | break; |
1526 | break; |
1516 | |
1527 | |
1517 | case CFAPI_OBJECT_PROP_PATH_ATTUNED: |
1528 | case CFAPI_OBJECT_PROP_PATH_ATTUNED: |
1518 | rv = &op->path_attuned; |
1529 | ri = op->path_attuned; rv = &ri; |
1519 | *type = CFAPI_INT; |
1530 | *type = CFAPI_INT; |
1520 | break; |
1531 | break; |
1521 | |
1532 | |
1522 | case CFAPI_OBJECT_PROP_PATH_REPELLED: |
1533 | case CFAPI_OBJECT_PROP_PATH_REPELLED: |
1523 | rv = &op->path_repelled; |
1534 | ri = op->path_repelled; rv = &ri; |
1524 | *type = CFAPI_INT; |
1535 | *type = CFAPI_INT; |
1525 | break; |
1536 | break; |
1526 | |
1537 | |
1527 | case CFAPI_OBJECT_PROP_PATH_DENIED: |
1538 | case CFAPI_OBJECT_PROP_PATH_DENIED: |
1528 | rv = &op->path_denied; |
1539 | ri = op->path_denied; rv = &ri; |
1529 | *type = CFAPI_INT; |
1540 | *type = CFAPI_INT; |
1530 | break; |
1541 | break; |
1531 | |
1542 | |
1532 | case CFAPI_OBJECT_PROP_MATERIAL: |
1543 | case CFAPI_OBJECT_PROP_MATERIAL: |
1533 | rv = &op->material; |
1544 | ri = op->material; rv = &ri; |
1534 | *type = CFAPI_INT; |
1545 | *type = CFAPI_INT; |
1535 | break; |
1546 | break; |
1536 | |
1547 | |
1537 | case CFAPI_OBJECT_PROP_MATERIAL_NAME: |
1548 | case CFAPI_OBJECT_PROP_MATERIAL_NAME: |
1538 | rv = (char*)op->materialname; |
1549 | rv = (char*)op->materialname; |
1539 | *type = CFAPI_STRING; |
1550 | *type = CFAPI_STRING; |
1540 | break; |
1551 | break; |
1541 | |
1552 | |
1542 | case CFAPI_OBJECT_PROP_MAGIC: |
1553 | case CFAPI_OBJECT_PROP_MAGIC: |
1543 | rv = &op->magic; |
1554 | ri = op->magic; rv = &ri; |
1544 | *type = CFAPI_INT; |
1555 | *type = CFAPI_INT; |
1545 | break; |
1556 | break; |
1546 | |
1557 | |
1547 | case CFAPI_OBJECT_PROP_VALUE: |
1558 | case CFAPI_OBJECT_PROP_VALUE: |
1548 | rv = &op->value; |
1559 | ri = op->value; rv = &ri; |
1549 | *type = CFAPI_INT; |
1560 | *type = CFAPI_INT; |
1550 | break; |
1561 | break; |
1551 | |
1562 | |
1552 | case CFAPI_OBJECT_PROP_LEVEL: |
1563 | case CFAPI_OBJECT_PROP_LEVEL: |
1553 | rv = &op->level; |
1564 | ri = op->level; rv = &ri; |
1554 | *type = CFAPI_INT; |
1565 | *type = CFAPI_INT; |
1555 | break; |
1566 | break; |
1556 | |
1567 | |
1557 | case CFAPI_OBJECT_PROP_LAST_HEAL: |
1568 | case CFAPI_OBJECT_PROP_LAST_HEAL: |
1558 | rv = &op->last_heal; |
1569 | ri = op->last_heal; rv = &ri; |
1559 | *type = CFAPI_INT; |
1570 | *type = CFAPI_INT; |
1560 | break; |
1571 | break; |
1561 | |
1572 | |
1562 | case CFAPI_OBJECT_PROP_LAST_SP: |
1573 | case CFAPI_OBJECT_PROP_LAST_SP: |
1563 | rv = &op->last_sp; |
1574 | ri = op->last_sp; rv = &ri; |
1564 | *type = CFAPI_INT; |
1575 | *type = CFAPI_INT; |
1565 | break; |
1576 | break; |
1566 | |
1577 | |
1567 | case CFAPI_OBJECT_PROP_LAST_GRACE: |
1578 | case CFAPI_OBJECT_PROP_LAST_GRACE: |
1568 | rv = &op->last_grace; |
1579 | ri = op->last_grace; rv = &ri; |
1569 | *type = CFAPI_INT; |
1580 | *type = CFAPI_INT; |
1570 | break; |
1581 | break; |
1571 | |
1582 | |
1572 | case CFAPI_OBJECT_PROP_LAST_EAT: |
1583 | case CFAPI_OBJECT_PROP_LAST_EAT: |
1573 | rv = &op->last_eat; |
1584 | ri = op->last_eat; rv = &ri; |
1574 | *type = CFAPI_INT; |
1585 | *type = CFAPI_INT; |
1575 | break; |
1586 | break; |
1576 | |
1587 | |
1577 | case CFAPI_OBJECT_PROP_INVISIBLE_TIME: |
1588 | case CFAPI_OBJECT_PROP_INVISIBLE_TIME: |
1578 | rv = &op->invisible; |
1589 | ri = op->invisible; rv = &ri; |
1579 | *type = CFAPI_INT; |
1590 | *type = CFAPI_INT; |
1580 | break; |
1591 | break; |
1581 | |
1592 | |
1582 | case CFAPI_OBJECT_PROP_PICK_UP: |
1593 | case CFAPI_OBJECT_PROP_PICK_UP: |
1583 | rv = &op->pick_up; |
1594 | ri = op->pick_up; rv = &ri; |
1584 | *type = CFAPI_INT; |
1595 | *type = CFAPI_INT; |
1585 | break; |
1596 | break; |
1586 | |
1597 | |
1587 | case CFAPI_OBJECT_PROP_ITEM_POWER: |
1598 | case CFAPI_OBJECT_PROP_ITEM_POWER: |
1588 | rv = &op->item_power; |
1599 | ri = op->item_power; rv = &ri; |
1589 | *type = CFAPI_INT; |
1600 | *type = CFAPI_INT; |
1590 | break; |
1601 | break; |
1591 | |
1602 | |
1592 | case CFAPI_OBJECT_PROP_GEN_SP_ARMOUR: |
1603 | case CFAPI_OBJECT_PROP_GEN_SP_ARMOUR: |
1593 | rv = &op->gen_sp_armour; |
1604 | ri = op->gen_sp_armour; rv = &ri; |
1594 | *type = CFAPI_INT; |
1605 | *type = CFAPI_INT; |
1595 | break; |
1606 | break; |
1596 | |
1607 | |
1597 | case CFAPI_OBJECT_PROP_WEIGHT: |
1608 | case CFAPI_OBJECT_PROP_WEIGHT: |
1598 | rv = &op->weight; |
1609 | ri = op->weight; rv = &ri; |
1599 | *type = CFAPI_INT; |
1610 | *type = CFAPI_INT; |
1600 | break; |
1611 | break; |
1601 | |
1612 | |
1602 | case CFAPI_OBJECT_PROP_WEIGHT_LIMIT: |
1613 | case CFAPI_OBJECT_PROP_WEIGHT_LIMIT: |
1603 | rv = &op->weight_limit; |
1614 | ri = op->weight_limit; rv = &ri; |
1604 | *type = CFAPI_INT; |
1615 | *type = CFAPI_INT; |
1605 | break; |
1616 | break; |
1606 | |
1617 | |
1607 | case CFAPI_OBJECT_PROP_CARRYING: |
1618 | case CFAPI_OBJECT_PROP_CARRYING: |
1608 | rv = &op->carrying; |
1619 | ri = op->carrying; rv = &ri; |
1609 | *type = CFAPI_INT; |
1620 | *type = CFAPI_INT; |
1610 | break; |
1621 | break; |
1611 | |
1622 | |
1612 | case CFAPI_OBJECT_PROP_GLOW_RADIUS: |
1623 | case CFAPI_OBJECT_PROP_GLOW_RADIUS: |
1613 | rv = &op->glow_radius; |
1624 | ri = op->glow_radius; rv = &ri; |
1614 | *type = CFAPI_INT; |
1625 | *type = CFAPI_INT; |
1615 | break; |
1626 | break; |
1616 | |
1627 | |
1617 | case CFAPI_OBJECT_PROP_PERM_EXP: |
1628 | case CFAPI_OBJECT_PROP_PERM_EXP: |
1618 | rv = &op->perm_exp; |
1629 | rv = &op->perm_exp; |
… | |
… | |
1633 | rv = op->attacked_by; |
1644 | rv = op->attacked_by; |
1634 | *type = CFAPI_POBJECT; |
1645 | *type = CFAPI_POBJECT; |
1635 | break; |
1646 | break; |
1636 | |
1647 | |
1637 | case CFAPI_OBJECT_PROP_RUN_AWAY: |
1648 | case CFAPI_OBJECT_PROP_RUN_AWAY: |
1638 | rv = &op->run_away; |
1649 | ri = op->run_away; rv = &ri; |
1639 | *type = CFAPI_INT; |
1650 | *type = CFAPI_INT; |
1640 | break; |
1651 | break; |
1641 | |
1652 | |
1642 | case CFAPI_OBJECT_PROP_CHOSEN_SKILL: |
1653 | case CFAPI_OBJECT_PROP_CHOSEN_SKILL: |
1643 | rv = op->chosen_skill; |
1654 | rv = op->chosen_skill; |
1644 | *type = CFAPI_POBJECT; |
1655 | *type = CFAPI_POBJECT; |
1645 | break; |
1656 | break; |
1646 | |
1657 | |
1647 | case CFAPI_OBJECT_PROP_HIDDEN: |
1658 | case CFAPI_OBJECT_PROP_HIDDEN: |
1648 | rv = &op->hide; |
1659 | ri = op->hide; rv = &ri; |
1649 | *type = CFAPI_INT; |
1660 | *type = CFAPI_INT; |
1650 | break; |
1661 | break; |
1651 | |
1662 | |
1652 | case CFAPI_OBJECT_PROP_MOVE_STATUS: |
1663 | case CFAPI_OBJECT_PROP_MOVE_STATUS: |
1653 | rv = &op->move_status; |
1664 | ri = op->move_status; rv = &ri; |
1654 | *type = CFAPI_INT; |
1665 | *type = CFAPI_INT; |
1655 | break; |
1666 | break; |
1656 | |
1667 | |
1657 | case CFAPI_OBJECT_PROP_MOVE_TYPE: |
1668 | case CFAPI_OBJECT_PROP_MOVE_TYPE: |
1658 | rv = &op->attack_movement; |
1669 | ri = op->attack_movement; rv = &ri; |
1659 | *type = CFAPI_INT; |
1670 | *type = CFAPI_INT; |
1660 | break; |
1671 | break; |
1661 | |
1672 | |
1662 | case CFAPI_OBJECT_PROP_SPELL_ITEM: |
1673 | case CFAPI_OBJECT_PROP_SPELL_ITEM: |
1663 | rv = op->spellitem; |
1674 | rv = op->spellitem; |
… | |
… | |
1683 | rv = (char*)op->custom_name; |
1694 | rv = (char*)op->custom_name; |
1684 | *type = CFAPI_STRING; |
1695 | *type = CFAPI_STRING; |
1685 | break; |
1696 | break; |
1686 | |
1697 | |
1687 | case CFAPI_OBJECT_PROP_ANIM_SPEED: |
1698 | case CFAPI_OBJECT_PROP_ANIM_SPEED: |
1688 | rv = &op->anim_speed; |
1699 | ri = op->anim_speed; rv = &ri; |
1689 | *type = CFAPI_INT; |
1700 | *type = CFAPI_INT; |
1690 | break; |
1701 | break; |
1691 | |
1702 | |
1692 | case CFAPI_OBJECT_PROP_FRIENDLY: |
1703 | case CFAPI_OBJECT_PROP_FRIENDLY: |
1693 | ri = is_friendly(op); |
1704 | ri = is_friendly(op); |
… | |
… | |
1714 | rv = &ri; |
1725 | rv = &ri; |
1715 | *type = CFAPI_INT; |
1726 | *type = CFAPI_INT; |
1716 | break; |
1727 | break; |
1717 | |
1728 | |
1718 | case CFAPI_OBJECT_PROP_LUCK: |
1729 | case CFAPI_OBJECT_PROP_LUCK: |
1719 | rv = &op->stats.luck; |
1730 | ri = op->stats.luck; rv = &ri; |
1720 | *type = CFAPI_INT; |
1731 | *type = CFAPI_INT; |
1721 | break; |
1732 | break; |
1722 | |
1733 | |
1723 | case CFAPI_OBJECT_PROP_EXP: |
1734 | case CFAPI_OBJECT_PROP_EXP: |
1724 | rv = &op->stats.exp; |
1735 | rv = &op->stats.exp; |
… | |
… | |
1761 | *type = CFAPI_POBJECT; |
1772 | *type = CFAPI_POBJECT; |
1762 | break; |
1773 | break; |
1763 | |
1774 | |
1764 | case CFAPI_OBJECT_PROP_CHEATER: |
1775 | case CFAPI_OBJECT_PROP_CHEATER: |
1765 | ri = (QUERY_FLAG(op, FLAG_WAS_WIZ)); |
1776 | ri = (QUERY_FLAG(op, FLAG_WAS_WIZ)); |
|
|
1777 | rv = &ri; |
1766 | *type = CFAPI_INT; |
1778 | *type = CFAPI_INT; |
1767 | break; |
1779 | break; |
1768 | |
1780 | |
1769 | case CFAPI_OBJECT_PROP_MERGEABLE: |
1781 | case CFAPI_OBJECT_PROP_MERGEABLE: |
1770 | { |
1782 | { |