… | |
… | |
1637 | rv = &op->stats.exp; |
1637 | rv = &op->stats.exp; |
1638 | *type = CFAPI_LONG; |
1638 | *type = CFAPI_LONG; |
1639 | break; |
1639 | break; |
1640 | |
1640 | |
1641 | case CFAPI_OBJECT_PROP_OWNER: |
1641 | case CFAPI_OBJECT_PROP_OWNER: |
1642 | rv = get_owner (op); |
1642 | rv = op->owner; |
1643 | *type = CFAPI_POBJECT; |
1643 | *type = CFAPI_POBJECT; |
1644 | break; |
1644 | break; |
1645 | |
1645 | |
1646 | case CFAPI_OBJECT_PROP_PRESENT: |
1646 | case CFAPI_OBJECT_PROP_PRESENT: |
1647 | { |
1647 | { |
… | |
… | |
1689 | case CFAPI_OBJECT_PROP_MERGEABLE: |
1689 | case CFAPI_OBJECT_PROP_MERGEABLE: |
1690 | { |
1690 | { |
1691 | object *op2; |
1691 | object *op2; |
1692 | op2 = va_arg (args, object *); |
1692 | op2 = va_arg (args, object *); |
1693 | |
1693 | |
1694 | ri = CAN_MERGE (op, op2); |
1694 | ri = object::can_merge_slow (op, op2); |
1695 | rv = &ri; |
1695 | rv = &ri; |
1696 | } |
1696 | } |
1697 | *type = CFAPI_INT; |
1697 | *type = CFAPI_INT; |
1698 | break; |
1698 | break; |
1699 | |
1699 | |
… | |
… | |
2271 | break; |
2271 | break; |
2272 | |
2272 | |
2273 | case CFAPI_OBJECT_PROP_OWNER: |
2273 | case CFAPI_OBJECT_PROP_OWNER: |
2274 | oparg = va_arg (args, object *); |
2274 | oparg = va_arg (args, object *); |
2275 | |
2275 | |
2276 | set_owner (op, oparg); |
2276 | op->set_owner (oparg); |
2277 | break; |
2277 | break; |
2278 | |
2278 | |
2279 | case CFAPI_OBJECT_PROP_CHEATER: |
2279 | case CFAPI_OBJECT_PROP_CHEATER: |
2280 | set_cheat (op); |
2280 | set_cheat (op); |
2281 | break; |
2281 | break; |
… | |
… | |
2621 | |
2621 | |
2622 | op = va_arg (args, object *); |
2622 | op = va_arg (args, object *); |
2623 | |
2623 | |
2624 | va_end (args); |
2624 | va_end (args); |
2625 | |
2625 | |
2626 | op->destroy (0); |
2626 | op->destroy (); |
2627 | |
2627 | |
2628 | *type = CFAPI_NONE; |
2628 | *type = CFAPI_NONE; |
2629 | return NULL; |
2629 | return NULL; |
2630 | } |
2630 | } |
2631 | |
2631 | |
… | |
… | |
2648 | *type = CFAPI_POBJECT; |
2648 | *type = CFAPI_POBJECT; |
2649 | return object_create_clone (op); |
2649 | return object_create_clone (op); |
2650 | } |
2650 | } |
2651 | else |
2651 | else |
2652 | { |
2652 | { |
2653 | object *tmp; |
2653 | object *tmp = op->clone (); |
2654 | |
|
|
2655 | tmp = get_object (); |
|
|
2656 | copy_object (op, tmp); |
|
|
2657 | *type = CFAPI_POBJECT; |
2654 | *type = CFAPI_POBJECT; |
2658 | return tmp; |
2655 | return tmp; |
2659 | } |
2656 | } |
2660 | } |
2657 | } |
2661 | void * |
2658 | void * |
… | |
… | |
2725 | *type = CFAPI_POBJECT; |
2722 | *type = CFAPI_POBJECT; |
2726 | switch (ival) |
2723 | switch (ival) |
2727 | { |
2724 | { |
2728 | case 0: |
2725 | case 0: |
2729 | va_end (args); |
2726 | va_end (args); |
2730 | return get_object (); |
2727 | return object::create (); |
2731 | break; |
2728 | break; |
2732 | |
2729 | |
2733 | case 1: /* Named object. Nearly the old plugin behavior, but we don't add artifact suffixes */ |
2730 | case 1: /* Named object. Nearly the old plugin behavior, but we don't add artifact suffixes */ |
2734 | { |
2731 | { |
2735 | char *sval; |
2732 | char *sval; |
… | |
… | |
2738 | |
2735 | |
2739 | op = get_archetype_by_object_name (sval); |
2736 | op = get_archetype_by_object_name (sval); |
2740 | |
2737 | |
2741 | if (strncmp (query_name (op), ARCH_SINGULARITY, ARCH_SINGULARITY_LEN) == 0) |
2738 | if (strncmp (query_name (op), ARCH_SINGULARITY, ARCH_SINGULARITY_LEN) == 0) |
2742 | { |
2739 | { |
2743 | op->destroy (0); |
2740 | op->destroy (); |
2744 | /* Try with archetype names... */ |
2741 | /* Try with archetype names... */ |
2745 | op = get_archetype (sval); |
2742 | op = get_archetype (sval); |
2746 | if (strncmp (query_name (op), ARCH_SINGULARITY, ARCH_SINGULARITY_LEN) == 0) |
2743 | if (strncmp (query_name (op), ARCH_SINGULARITY, ARCH_SINGULARITY_LEN) == 0) |
2747 | { |
2744 | { |
2748 | op->destroy (0); |
2745 | op->destroy (); |
2749 | *type = CFAPI_NONE; |
2746 | *type = CFAPI_NONE; |
2750 | va_end (args); |
2747 | va_end (args); |
2751 | return NULL; |
2748 | return NULL; |
2752 | } |
2749 | } |
2753 | } |
2750 | } |
… | |
… | |
2912 | |
2909 | |
2913 | op = va_arg (args, object *); |
2910 | op = va_arg (args, object *); |
2914 | |
2911 | |
2915 | va_end (args); |
2912 | va_end (args); |
2916 | |
2913 | |
2917 | clear_object (op); |
2914 | op->clear (); |
2918 | *type = CFAPI_NONE; |
2915 | *type = CFAPI_NONE; |
2919 | return NULL; |
2916 | return NULL; |
2920 | } |
2917 | } |
2921 | |
2918 | |
2922 | void * |
2919 | void * |
… | |
… | |
3222 | x = map->enter_x; |
3219 | x = map->enter_x; |
3223 | y = map->enter_y; |
3220 | y = map->enter_y; |
3224 | } |
3221 | } |
3225 | |
3222 | |
3226 | /* |
3223 | /* |
3227 | originator = get_object(); |
3224 | originator = object::create(); |
3228 | EXIT_PATH(originator) = add_string(map->path); |
3225 | EXIT_PATH(originator) = add_string(map->path); |
3229 | EXIT_X(originator) = x; |
3226 | EXIT_X(originator) = x; |
3230 | EXIT_Y(originator) = y; |
3227 | EXIT_Y(originator) = y; |
3231 | printf("B Transfer: X=%d, Y=%d, OP=%s\n", x, y, op->name);*/ |
3228 | printf("B Transfer: X=%d, Y=%d, OP=%s\n", x, y, op->name);*/ |
3232 | /*enter_exit(op, originator); */ |
3229 | /*enter_exit(op, originator); */ |
3233 | insert_ob_in_map_at (op, map, NULL, 0, x, y); |
3230 | insert_ob_in_map_at (op, map, NULL, 0, x, y); |
3234 | /*printf("A Transfer: X=%d, Y=%d, MAP=%s\n", x, y, op->map->name); |
3231 | /*printf("A Transfer: X=%d, Y=%d, MAP=%s\n", x, y, op->map->name); |
3235 | originator->destroy (0); |
3232 | originator->destroy (); |
3236 | */ |
3233 | */ |
3237 | *type = CFAPI_INT; |
3234 | *type = CFAPI_INT; |
3238 | return &rv; |
3235 | return &rv; |
3239 | break; |
3236 | break; |
3240 | |
3237 | |