ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/plugins/cfperl/cfperl.xs
(Generate patch)

Comparing deliantra/server/plugins/cfperl/cfperl.xs (file contents):
Revision 1.59 by elmex, Sat Jul 15 11:57:02 2006 UTC vs.
Revision 1.63 by root, Thu Jul 20 07:22:41 2006 UTC

53extern sint64 *levels; // the experience table 53extern sint64 *levels; // the experience table
54 54
55typedef object object_ornull; 55typedef object object_ornull;
56typedef mapstruct mapstruct_ornull; 56typedef mapstruct mapstruct_ornull;
57 57
58typedef double val64;
59#define newSVval64 newSVnv
60#define SvVAL64 SvNV
61
58static f_plug_api gethook; 62static f_plug_api gethook;
59static f_plug_api registerGlobalEvent; 63static f_plug_api registerGlobalEvent;
60static f_plug_api unregisterGlobalEvent; 64static f_plug_api unregisterGlobalEvent;
61static f_plug_api systemDirectory; 65static f_plug_api systemDirectory;
62static f_plug_api object_set_property; 66static f_plug_api object_set_property;
231 case CFAPI_INT: 235 case CFAPI_INT:
232 sv = newSViv (*va_arg (args, int *)); 236 sv = newSViv (*va_arg (args, int *));
233 break; 237 break;
234 238
235 case CFAPI_LONG: 239 case CFAPI_LONG:
236 sv = newSVnv ((double)*va_arg (args, sint64 *)); /* oh, the humanity! */ 240 sv = newSVval64 ((val64)*va_arg (args, sint64 *));
237 break; 241 break;
238 242
239 case CFAPI_DOUBLE: 243 case CFAPI_DOUBLE:
240 sv = newSVnv (*va_arg (args, double *)); 244 sv = newSVnv (*va_arg (args, double *));
241 break; 245 break;
255 sv = &PL_sv_undef; 259 sv = &PL_sv_undef;
256 else 260 else
257 switch (obj->type) 261 switch (obj->type)
258 { 262 {
259 case MAP: 263 case MAP:
260 sv = newSVptr_cached (obj, "cf::object::map"); 264 sv = newSVptr_cached (obj, "cf::object::map::wrap");
261 break; 265 break;
262 266
263 case PLAYER: 267 case PLAYER:
264 sv = newSVptr_cached (obj, "cf::object::player"); 268 sv = newSVptr_cached (obj, "cf::object::player::wrap");
265 break; 269 break;
266 270
267 default: 271 default:
268 sv = newSVptr_cached (obj, "cf::object"); 272 sv = newSVptr_cached (obj, "cf::object::wrap");
269 break; 273 break;
270 } 274 }
271 } 275 }
272 break; 276 break;
273 277
274 case CFAPI_PMAP: 278 case CFAPI_PMAP:
275 sv = newSVptr (va_arg (args, mapstruct *), "cf::map"); 279 sv = newSVptr (va_arg (args, mapstruct *), "cf::map::wrap");
276 break; 280 break;
277 281
278 case CFAPI_PPLAYER: 282 case CFAPI_PPLAYER:
279 sv = newSVptr (va_arg (args, player *), "cf::player"); 283 sv = newSVptr (va_arg (args, player *), "cf::player::wrap");
280 break; 284 break;
281 285
282 case CFAPI_PARCH: 286 case CFAPI_PARCH:
283 sv = newSVptr (va_arg (args, archetype *), "cf::arch"); 287 sv = newSVptr (va_arg (args, archetype *), "cf::arch::wrap");
284 break; 288 break;
285 289
286 case CFAPI_PPARTY: 290 case CFAPI_PPARTY:
287 sv = newSVptr (va_arg (args, partylist *), "cf::party"); 291 sv = newSVptr (va_arg (args, partylist *), "cf::party::wrap");
288 break; 292 break;
289 293
290 case CFAPI_PREGION: 294 case CFAPI_PREGION:
291 sv = newSVptr (va_arg (args, region *), "cf::region"); 295 sv = newSVptr (va_arg (args, region *), "cf::region::wrap");
292 break; 296 break;
293 297
294 default: 298 default:
295 assert (("unhandled type in newSVcfapi", 0)); 299 assert (("unhandled type in newSVcfapi", 0));
296 } 300 }
1429char * 1433char *
1430cf_get_maps_directory (char *path) 1434cf_get_maps_directory (char *path)
1431 PROTOTYPE: $ 1435 PROTOTYPE: $
1432 ALIAS: maps_directory = 0 1436 ALIAS: maps_directory = 0
1433 1437
1438void
1439sub_generation_inc ()
1440 CODE:
1441 PL_sub_generation++;
1442
1434char * 1443char *
1435mapdir () 1444mapdir ()
1436 PROTOTYPE: 1445 PROTOTYPE:
1437 ALIAS: 1446 ALIAS:
1438 mapdir = 0 1447 mapdir = 0
1454 PROTOTYPE: $ 1463 PROTOTYPE: $
1455 1464
1456int random_roll(int min, int max, object *op, int goodbad); 1465int random_roll(int min, int max, object *op, int goodbad);
1457 1466
1458int 1467int
1459exp_to_level (double exp) 1468exp_to_level (val64 exp)
1460 CODE: 1469 CODE:
1470{
1461 int i = 0; 1471 int i = 0;
1462 RETVAL = 0; 1472
1473 RETVAL = settings.max_level;
1474
1463 for (i = 1; i <= settings.max_level; i++) 1475 for (i = 1; i <= settings.max_level; i++)
1464 { 1476 {
1465 if (levels[i] > exp) 1477 if (levels[i] > exp)
1466 { 1478 {
1467 RETVAL = i - 1; 1479 RETVAL = i - 1;
1468 break; 1480 break;
1469 } 1481 }
1470 } 1482 }
1483}
1471 OUTPUT: RETVAL 1484 OUTPUT: RETVAL
1472 1485
1473double 1486val64
1474level_to_min_exp (int level) 1487level_to_min_exp (int level)
1475 CODE: 1488 CODE:
1489 if (level > settings.max_level)
1490 RETVAL = levels[settings.max_level];
1491 else if (level < 1)
1476 RETVAL = 0; 1492 RETVAL = 0;
1477 if (level > settings.max_level)
1478 RETVAL = levels[settings.max_level];
1479 else if (level < 1)
1480 RETVAL = 0;
1481 else 1493 else
1482 RETVAL = levels[level]; 1494 RETVAL = levels[level];
1483 OUTPUT: RETVAL 1495 OUTPUT: RETVAL
1484 1496
1485SV * 1497SV *
1486resistance_to_string (int atnr) 1498resistance_to_string (int atnr)
1487 CODE: 1499 CODE:
1488 if (atnr >= 0 && atnr < NROFATTACKS) 1500 if (atnr >= 0 && atnr < NROFATTACKS)
1489 {
1490 RETVAL = newSVpv (resist_plus[atnr], 0); 1501 RETVAL = newSVpv (resist_plus[atnr], 0);
1491 }
1492 else 1502 else
1493 {
1494 XSRETURN_UNDEF; 1503 XSRETURN_UNDEF;
1495 }
1496 OUTPUT: RETVAL 1504 OUTPUT: RETVAL
1497 1505
1498MODULE = cf PACKAGE = cf::object PREFIX = cf_object_ 1506MODULE = cf PACKAGE = cf::object PREFIX = cf_object_
1499 1507
1500SV * 1508SV *
1510 { 1518 {
1511 case CFAPI_INT: 1519 case CFAPI_INT:
1512 cf_object_set_int_property (obj, idx, SvIV (newval)); 1520 cf_object_set_int_property (obj, idx, SvIV (newval));
1513 break; 1521 break;
1514 case CFAPI_LONG: 1522 case CFAPI_LONG:
1515 cf_object_set_long_property (obj, idx, SvNV (newval)); 1523 cf_object_set_long_property (obj, idx, SvVAL64 (newval));
1516 break; 1524 break;
1517 case CFAPI_DOUBLE: 1525 case CFAPI_DOUBLE:
1518 { 1526 {
1519 int unused_type; 1527 int unused_type;
1520 object_set_property (&unused_type, obj, idx, (double)SvNV (newval)); 1528 object_set_property (&unused_type, obj, idx, (double)SvNV (newval));
1598 1606
1599object *cf_object_clone (object *op, int clonetype = 0) 1607object *cf_object_clone (object *op, int clonetype = 0)
1600 1608
1601int cf_object_pay_item (object *op, object *buyer) 1609int cf_object_pay_item (object *op, object *buyer)
1602 1610
1603int cf_object_pay_amount (object *op, double amount) 1611int cf_object_pay_amount (object *op, val64 amount)
1604 1612
1605int cf_object_cast_spell (object *caster, object *ctoo, int dir, object *spell_ob, char *stringarg = 0) 1613int cf_object_cast_spell (object *caster, object *ctoo, int dir, object *spell_ob, char *stringarg = 0)
1606 1614
1607int cf_object_cast_ability (object *caster, object *ctoo, int dir, object *sp_, char *stringarg = 0) 1615int cf_object_cast_ability (object *caster, object *ctoo, int dir, object *sp_, char *stringarg = 0)
1608 1616
1645 1653
1646void cf_object_pickup (object *op, object *what) 1654void cf_object_pickup (object *op, object *what)
1647 1655
1648object *cf_create_object_by_name (const char *name) 1656object *cf_create_object_by_name (const char *name)
1649 1657
1650void change_exp (object *op, double exp, const char *skill_name = 0, int flag = 0) 1658void change_exp (object *op, val64 exp, const char *skill_name = 0, int flag = 0)
1651 1659
1652void pay_player (object *op, double amount) 1660void pay_player (object *op, val64 amount)
1653 1661
1654double pay_player_arch (object *op, const char *arch, double amount) 1662val64 pay_player_arch (object *op, const char *arch, val64 amount)
1655 1663
1656void player_lvl_adj (object *who, object *skill = 0) 1664void player_lvl_adj (object *who, object *skill = 0)
1657 1665
1658int kill_object (object *op, int dam = 0, object *hitter = 0, int type = AT_PHYSICAL) 1666int kill_object (object *op, int dam = 0, object *hitter = 0, int type = AT_PHYSICAL)
1659 1667
1660int calc_skill_exp (object *who, object *op, object *skill); 1668int calc_skill_exp (object *who, object *op, object *skill);
1661 1669
1662char *cf_object_get_key (object *op, char *keyname) 1670void push_button (object *op);
1663 ALIAS: key = 0
1664 1671
1665void cf_object_set_key (object *op, char *keyname, char *value) 1672void use_trigger (object *op);
1673
1674void add_button_link (object *button, mapstruct *map, int connected);
1675
1676void remove_button_link (object *op);
1666 1677
1667void 1678void
1668cf_object_set_resistance (object *op, int rtype, int val) 1679cf_object_set_resistance (object *op, int rtype, int val)
1669 CODE: 1680 CODE:
1670 if (rtype >= 0 && rtype < NROFATTACKS) 1681 if (rtype >= 0 && rtype < NROFATTACKS)
1700const char *options (object *op) 1711const char *options (object *op)
1701 CODE: 1712 CODE:
1702 RETVAL = op->name; 1713 RETVAL = op->name;
1703 OUTPUT: 1714 OUTPUT:
1704 RETVAL 1715 RETVAL
1716
1717player *contr (object *op)
1718 CODE:
1719 RETVAL = op->contr;
1720 OUTPUT: RETVAL
1705 1721
1706const char *get_ob_key_value (object *op, const char *key) 1722const char *get_ob_key_value (object *op, const char *key)
1707 1723
1708bool set_ob_key_value (object *op, const char *key, const char *value = 0, int add_key = 1) 1724bool set_ob_key_value (object *op, const char *key, const char *value = 0, int add_key = 1)
1709 1725
1753 1769
1754void cf_player_message (object *obj, char *txt, int flags = NDI_ORANGE | NDI_UNIQUE) 1770void cf_player_message (object *obj, char *txt, int flags = NDI_ORANGE | NDI_UNIQUE)
1755 1771
1756object *cf_player_send_inventory (object *op) 1772object *cf_player_send_inventory (object *op)
1757 1773
1758player *contr (object *op)
1759 CODE:
1760 RETVAL = op->contr;
1761 OUTPUT: RETVAL
1762
1763char *cf_player_get_ip (object *op) 1774char *cf_player_get_ip (object *op)
1764 ALIAS: ip = 0 1775 ALIAS: ip = 0
1765 1776
1766object *cf_player_get_marked_item (object *op) 1777object *cf_player_get_marked_item (object *op)
1767 ALIAS: marked_item = 0 1778 ALIAS: marked_item = 0
1771partylist *cf_player_get_party (object *op) 1782partylist *cf_player_get_party (object *op)
1772 ALIAS: party = 0 1783 ALIAS: party = 0
1773 1784
1774void cf_player_set_party (object *op, partylist *party) 1785void cf_player_set_party (object *op, partylist *party)
1775 1786
1776void change_skill (object *op, double exp, char *skill_name = 0, int flag = 0) 1787void change_skill (object *op, val64 exp, char *skill_name = 0, int flag = 0)
1777 1788
1778void kill_player (object *op) 1789void kill_player (object *op)
1779 1790
1780MODULE = cf PACKAGE = cf::object::map PREFIX = cf_ 1791MODULE = cf PACKAGE = cf::object::map PREFIX = cf_
1781 1792
2168 ALIAS: message = 0 2179 ALIAS: message = 0
2169 2180
2170 2181
2171MODULE = cf PACKAGE = cf::living PREFIX = cf_living_ 2182MODULE = cf PACKAGE = cf::living PREFIX = cf_living_
2172 2183
2173double 2184val64
2174exp (living *liv, double new_val = 0.) 2185exp (living *liv, val64 new_val = 0)
2175 PROTOTYPE: $;$ 2186 PROTOTYPE: $;$
2176 ALIAS: 2187 ALIAS:
2177 Str = 1 2188 Str = 1
2178 Dex = 2 2189 Dex = 2
2179 Con = 3 2190 Con = 3

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines