diff --git a/zone/embparser_api.cpp b/zone/embparser_api.cpp index 83839457b..f95730eb0 100644 --- a/zone/embparser_api.cpp +++ b/zone/embparser_api.cpp @@ -1523,12 +1523,12 @@ XS(XS__addldonpoints) { if (items != 2) Perl_croak(aTHX_ "Usage: quest::addldonpoints(int points, int theme_id)"); - long points = (long) SvIV(ST(0)); - unsigned long theme_id = (unsigned long) SvUV(ST(1)); +long points = (long)SvIV(ST(0)); +unsigned long theme_id = (unsigned long)SvUV(ST(1)); - quest_manager.addldonpoints(points, theme_id); +quest_manager.addldonpoints(points, theme_id); - XSRETURN_EMPTY; +XSRETURN_EMPTY; } XS(XS__addldonwin); @@ -1537,8 +1537,8 @@ XS(XS__addldonwin) { if (items != 2) Perl_croak(aTHX_ "Usage: quest::addldonwin(int wins, int theme_id)"); - long wins = (long) SvIV(ST(0)); - unsigned long theme_id = (unsigned long) SvUV(ST(1)); + long wins = (long)SvIV(ST(0)); + unsigned long theme_id = (unsigned long)SvUV(ST(1)); quest_manager.addldonwin(wins, theme_id); @@ -1551,8 +1551,8 @@ XS(XS__addldonloss) { if (items != 2) Perl_croak(aTHX_ "Usage: quest::addldonloss(int losses, int theme_id)"); - long losses = (long) SvIV(ST(0)); - unsigned long theme_id = (unsigned long) SvUV(ST(1)); + long losses = (long)SvIV(ST(0)); + unsigned long theme_id = (unsigned long)SvUV(ST(1)); quest_manager.addldonloss(losses, theme_id); @@ -1565,7 +1565,7 @@ XS(XS__setnexthpevent) { if (items != 1) Perl_croak(aTHX_ "Usage: quest::setnexthpevent(int at_mob_percentage)"); - int at = (int) SvIV(ST(0)); + int at = (int)SvIV(ST(0)); quest_manager.setnexthpevent(at); @@ -1578,7 +1578,7 @@ XS(XS__setnextinchpevent) { if (items != 1) Perl_croak(aTHX_ "Usage: quest::setnextinchpevent(int at_mob_percentage)"); - int at = (int) SvIV(ST(0)); + int at = (int)SvIV(ST(0)); quest_manager.setnextinchpevent(at); @@ -1591,7 +1591,7 @@ XS(XS__sethp) { if (items != 1) Perl_croak(aTHX_ "Usage: quest::sethp(int mob_health_percentage [0-100])"); - int hpperc = (int) SvIV(ST(0)); + int hpperc = (int)SvIV(ST(0)); quest_manager.sethp(hpperc); @@ -1604,14 +1604,21 @@ XS(XS__respawn) { if (items != 2) Perl_croak(aTHX_ "Usage: quest::respawn(int npc_type_id, int grid_id)"); - int npc_type_id = (int) SvIV(ST(0)); - int grid_id = (int) SvIV(ST(1)); + int npc_type_id = (int)SvIV(ST(0)); + int grid_id = (int)SvIV(ST(1)); quest_manager.respawn(npc_type_id, grid_id); XSRETURN_EMPTY; } +//64 bit windows seems to optimize something poorly here causing access violations. +//If you don't do anything with index before passing it to perl it gets optimized out +//Disabling optimization right now for msvc on this function is the best solution. +#ifdef _MSC_VER +#pragma optimize( "", off ) +#endif + XS(XS__ChooseRandom); XS(XS__ChooseRandom) { dXSARGS; @@ -1620,7 +1627,7 @@ XS(XS__ChooseRandom) { dXSTARG; int index = zone->random.Int(0, items - 1); - SV *RETVAL = ST(index); + SV* RETVAL = ST(index); XSprePUSH; PUSHs(RETVAL); @@ -1628,6 +1635,10 @@ XS(XS__ChooseRandom) { XSRETURN(1); //return 1 element from the stack (ST(0)) } +#ifdef _MSC_VER +#pragma optimize( "", on ) +#endif + XS(XS__set_proximity); XS(XS__set_proximity) { dXSARGS;