eqemu-server/zone/perlparser.cpp

3730 lines
84 KiB
C++

/* EQEMu: Everquest Server Emulator
Copyright (C) 2001-2006 EQEMu Development Team (http://eqemulator.net)
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; version 2 of the License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY except by those people which sell it, which
are required to give you total support for your newly bought product;
without even the implied warranty of MERCHANTABILITY or FITNESS FOR
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
//#include "../common/features.h"
//
//#ifdef EMBPERL
//#ifdef EMBPERL_XS
//
//#include "../common/debug.h"
//#include "perlparser.h"
//#include "questmgr.h"
//#include "embxs.h"
//#include "entity.h"
//#include "../common/MiscFunctions.h"
//#include "zone.h"
//extern Zone* zone;
//
///*
//
//Some useful perl API info:
//
//SvUV == string to unsigned value (char->ulong)
//SvIV == string to signed value (char->long)
//SvNV == string to real value (float,double)
//SvPV_nolen == string with no length restriction
//
//
//*/
//
//PerlXSParser::PerlXSParser() : PerlembParser() {
// //we cannot rely on PerlembParser to call the right map_funs because
// //our virtual table is not set up until after we call them, so we need to move
// //the call to ReloadQuests out of the constructor.
//}
//
//void PerlXSParser::map_funs() {
// _empty_sv = newSV(0);
//
// perl->eval(
// "{"
// "package quest;"
// "&boot_quest;" //load our quest XS
//#ifdef EMBPERL_XS_CLASSES
// "package Mob;"
// "&boot_Mob;" //load our Mob XS
//
// "package Client;"
// "our @ISA = qw(Mob);" //client inherits mob.
// "&boot_Mob;" //load our Mob XS
// "&boot_Client;" //load our Client XS
//
// "package NPC;"
// "our @ISA = qw(Mob);" //NPC inherits mob.
// "&boot_Mob;" //load our Mob XS
// "&boot_NPC;" //load our NPC XS
//
// "package Corpse;"
// "our @ISA = qw(Mob);" //Corpse inherits mob.
// "&boot_Mob;" //load our Mob XS
// "&boot_Corpse;" //load our Mob XS
//
// "package EntityList;"
// "&boot_EntityList;" //load our EntityList XS
//
// "package PerlPacket;"
// "&boot_PerlPacket;" //load our PerlPacket XS
//
// "package Group;"
// "&boot_Group;" //load our Group XS
//
// "package Raid;"
// "&boot_Raid;" //load our Raid XS
//
// "package QuestItem;"
// "&boot_QuestItem;" // load quest Item XS
//
// "package HateEntry;"
// "&boot_HateEntry;" // load quest Hate XS
//
// "package Object;"
// "&boot_Object;" // load quest Object XS
//
// "package Doors;"
// "&boot_Doors;" // load quest Doors XS
//
//#endif
// "package main;"
// "}"
// );//eval
//}
//
//void PerlXSParser::SendCommands(const char * pkgprefix, const char *event, uint32 npcid, Mob* other, Mob* mob, ItemInst* iteminst)
//{
// if(!perl)
// return;
// _ZP(PerlXSParser_SendCommands);
//
// if(mob && mob->IsClient())
// quest_manager.StartQuest(other, mob->CastToClient(), iteminst);
// else
// quest_manager.StartQuest(other, nullptr, nullptr);
//
// try {
//
// std::string cmd = "package " + (std::string)(pkgprefix) + (std::string)(";");
// perl->eval(cmd.c_str());
//
//#ifdef EMBPERL_XS_CLASSES
// char namebuf[64];
//
// //init a couple special vars: client, npc, entity_list
// Client *curc = quest_manager.GetInitiator();
// snprintf(namebuf, 64, "%s::client", pkgprefix);
// SV *client = get_sv(namebuf, true);
// if(curc != nullptr) {
// sv_setref_pv(client, "Client", curc);
// } else {
// //clear out the value, mainly to get rid of blessedness
// sv_setsv(client, _empty_sv);
// }
//
// //only export NPC if it's a npc quest
// if(!other->IsClient()){
// NPC *curn = quest_manager.GetNPC();
// snprintf(namebuf, 64, "%s::npc", pkgprefix);
// SV *npc = get_sv(namebuf, true);
// sv_setref_pv(npc, "NPC", curn);
// }
//
// //only export QuestItem if it's an item quest
// if(iteminst) {
// ItemInst* curi = quest_manager.GetQuestItem();
// snprintf(namebuf, 64, "%s::questitem", pkgprefix);
// SV *questitem = get_sv(namebuf, true);
// sv_setref_pv(questitem, "QuestItem", curi);
// }
//
// snprintf(namebuf, 64, "%s::entity_list", pkgprefix);
// SV *el = get_sv(namebuf, true);
// sv_setref_pv(el, "EntityList", &entity_list);
//#endif
//
// //now call the requested sub
// perl->dosub(std::string(pkgprefix).append("::").append(event).c_str());
//
//#ifdef EMBPERL_XS_CLASSES
// std::string eval_str = (std::string)"$" + (std::string)pkgprefix + (std::string)"::client = undef;";
// eval_str += (std::string)"$" + (std::string)pkgprefix + (std::string)"::npc = undef;";
// eval_str += (std::string)"$" + (std::string)pkgprefix + (std::string)"::questitem = undef;";
// eval_str += (std::string)"$" + (std::string)pkgprefix + (std::string)"::entity_list = undef;";
// perl->eval(eval_str.c_str());
//#endif
//
// } catch(const char * err) {
//
// //try to reduce some of the console spam...
// //todo: tweak this to be more accurate at deciding what to filter (we don't want to gag legit errors)
// if(!strstr(err,"Undefined subroutine"))
// LogFile->write(EQEMuLog::Status, "Script error: %s::%s - %s", pkgprefix, event, err);
// }
//
// quest_manager.EndQuest();
//}
//
//
//#ifdef EMBPERL_XS_CLASSES
//
////Any creation of new Client objects gets the current quest Client
//XS(XS_Client_new);
//XS(XS_Client_new)
//{
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: Client::new()");
// {
// Client * RETVAL;
//
// RETVAL = quest_manager.GetInitiator();
// ST(0) = sv_newmortal();
// if(RETVAL)
// sv_setref_pv(ST(0), "Client", (void*)RETVAL);
// }
// XSRETURN(1);
//}
//
////Any creation of new NPC objects gets the current quest NPC
//XS(XS_NPC_new);
//XS(XS_NPC_new)
//{
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: NPC::new()");
// {
// NPC * RETVAL;
//
// RETVAL = quest_manager.GetNPC();
// ST(0) = sv_newmortal();
// if(RETVAL)
// sv_setref_pv(ST(0), "NPC", (void*)RETVAL);
// }
// XSRETURN(1);
//}
//
////Any creation of new NPC objects gets the current quest NPC
//XS(XS_EntityList_new);
//XS(XS_EntityList_new)
//{
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: EntityList::new()");
// {
// EntityList * RETVAL;
//
// RETVAL = &entity_list;
// ST(0) = sv_newmortal();
// if(RETVAL)
// sv_setref_pv(ST(0), "EntityList", (void*)RETVAL);
// }
// XSRETURN(1);
//}
//
////Any creation of new quest items gets the current quest item
//XS(XS_QuestItem_new);
//XS(XS_QuestItem_new)
//{
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: QuestItem::new()");
//
// ItemInst* RETVAL;
//
// RETVAL = quest_manager.GetQuestItem();
// ST(0) = sv_newmortal();
// if(RETVAL)
// sv_setref_pv(ST(0), "QuestItem", (void*)RETVAL);
//
// XSRETURN(1);
//}
//
////Any creation of new quest items gets the current quest item
//XS(XS_MobList_new);
//XS(XS_MobList_new)
//{
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: MobList::new()");
//
// ListElement<Mob*>* RETVAL;
//
// RETVAL = nullptr;
// ST(0) = sv_newmortal();
// if(RETVAL)
// sv_setref_pv(ST(0), "MobList", (void*)RETVAL);
//
// XSRETURN(1);
//}
//
//#endif //EMBPERL_XS_CLASSES
//
//
//XS(XS__echo); // prototype to pass -Wmissing-prototypes
//XS(XS__echo) {
// dXSARGS;
//
// if (items != 2)
// Perl_croak(aTHX_ "Usage: echo(id#, str)");
//
// quest_manager.echo(SvUV(ST(0)), SvPV_nolen(ST(1)));
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__say); // prototype to pass -Wmissing-prototypes
//XS(XS__say) {
// dXSARGS;
//
// if (items == 1)
// quest_manager.say(SvPV_nolen(ST(0)));
// else if (items == 2)
// quest_manager.say(SvPV_nolen(ST(0)), (int)SvIV(ST(1)));
// else
// Perl_croak(aTHX_ "Usage: say(str [, language])");
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__me); // prototype to pass -Wmissing-prototypes
//XS(XS__me) {
// dXSARGS;
//
// if (items != 1)
// Perl_croak(aTHX_ "Usage: %s(str)", "me");
//
// quest_manager.me(SvPV_nolen(ST(0)));
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__summonitem); // prototype to pass -Wmissing-prototypes
//XS(XS__summonitem)
//{
// dXSARGS;
// if (items == 1)
// quest_manager.summonitem(SvUV(ST(0)));
// else if(items == 2)
// quest_manager.summonitem(SvUV(ST(0)), SvUV(ST(1)));
// else
// Perl_croak(aTHX_ "Usage: summonitem(itemid, [charges])");
// XSRETURN_EMPTY;
//}
//
//XS(XS__write);
//XS(XS__write)
//{
// dXSARGS;
// if (items != 2)
// Perl_croak(aTHX_ "Usage: write(file, str)");
//
// char * file = (char *)SvPV_nolen(ST(0));
// char * str = (char *)SvPV_nolen(ST(1));
//
// quest_manager.write(file, str);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__spawn);
//XS(XS__spawn)
//{
// dXSARGS;
// if (items != 6)
// Perl_croak(aTHX_ "Usage: spawn(npc_type, grid, unused, x, y, z)");
//
// uint16 RETVAL;
// dXSTARG;
//
// int npc_type = (int)SvIV(ST(0));
// int grid = (int)SvIV(ST(1));
// int unused = (int)SvIV(ST(2));
// float x = (float)SvNV(ST(3));
// float y = (float)SvNV(ST(4));
// float z = (float)SvNV(ST(5));
//
// RETVAL = quest_manager.spawn2(npc_type, grid, unused, x, y, z, 0);
// XSprePUSH; PUSHu((UV)RETVAL);
//
// XSRETURN(1);
//}
//
//XS(XS__spawn2);
//XS(XS__spawn2)
//{
// dXSARGS;
// if (items != 7)
// Perl_croak(aTHX_ "Usage: spawn2(npc_type, grid, unused, x, y, z, heading)");
//
// uint16 RETVAL;
// dXSTARG;
//
// int npc_type = (int)SvIV(ST(0));
// int grid = (int)SvIV(ST(1));
// int unused = (int)SvIV(ST(2));
// float x = (float)SvNV(ST(3));
// float y = (float)SvNV(ST(4));
// float z = (float)SvNV(ST(5));
// float heading = (float)SvNV(ST(6));
//
// RETVAL = quest_manager.spawn2(npc_type, grid, unused, x, y, z, heading);
// XSprePUSH; PUSHu((UV)RETVAL);
//
// XSRETURN(1);
//}
//
//XS(XS__unique_spawn);
//XS(XS__unique_spawn)
//{
// dXSARGS;
// if (items != 6 && items != 7)
// Perl_croak(aTHX_ "Usage: unique_spawn(npc_type, grid, unused, x, y, z, [heading])");
//
// uint16 RETVAL;
// dXSTARG;
//
// int npc_type = (int)SvIV(ST(0));
// int grid = (int)SvIV(ST(1));
// int unused = (int)SvIV(ST(2));
// float x = (float)SvNV(ST(3));
// float y = (float)SvNV(ST(4));
// float z = (float)SvNV(ST(5));
// float heading = 0;
// if(items == 7)
// heading = (float)SvNV(ST(6));
//
// RETVAL = quest_manager.unique_spawn(npc_type, grid, unused, x, y, z, heading);
// XSprePUSH; PUSHu((UV)RETVAL);
//
// XSRETURN(1);
//}
//
//XS(XS__spawn_from_spawn2);
//XS(XS__spawn_from_spawn2)
//{
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: spawn_from_spawn2(spawn2_id)");
//
// uint16 RETVAL;
// dXSTARG;
//
// int spawn2_id = (int)SvIV(ST(0));
//
// RETVAL = quest_manager.spawn_from_spawn2(spawn2_id);
// XSprePUSH; PUSHu((UV)RETVAL);
//
// XSRETURN(1);
//}
//
//XS(XS__enable_spawn2);
//XS(XS__enable_spawn2)
//{
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: enable_spawn2(spawn2_id)");
//
// int spawn2_id = (int)SvIV(ST(0));
//
// quest_manager.enable_spawn2(spawn2_id);
// XSRETURN_EMPTY;
//}
//
//XS(XS__disable_spawn2);
//XS(XS__disable_spawn2)
//{
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: disable_spawn2(spawn2_id)");
//
// int spawn2_id = (int)SvIV(ST(0));
//
// quest_manager.disable_spawn2(spawn2_id);
// XSRETURN_EMPTY;
//}
//
//XS(XS__setstat);
//XS(XS__setstat)
//{
// dXSARGS;
// if (items != 2)
// Perl_croak(aTHX_ "Usage: setstat(stat, value)");
//
// int stat = (int)SvIV(ST(0));
// int value = (int)SvIV(ST(1));
//
// quest_manager.setstat(stat, value);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__incstat); //old setstat command aza
//XS(XS__incstat)
//{
// dXSARGS;
// if (items != 2)
// Perl_croak(aTHX_ "Usage: incstat(stat, value)");
//
// int stat = (int)SvIV(ST(0));
// int value = (int)SvIV(ST(1));
//
// quest_manager.incstat(stat, value);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__castspell);
//XS(XS__castspell)
//{
// dXSARGS;
// if (items != 2)
// Perl_croak(aTHX_ "Usage: castspell(spell_id, target_id)");
//
// int spell_id = (int)SvIV(ST(0));
// int target_id = (int)SvIV(ST(1));
//
// quest_manager.castspell(spell_id, target_id);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__selfcast);
//XS(XS__selfcast)
//{
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: selfcast(spell_id)");
//
// int spell_id = (int)SvIV(ST(0));
//
// quest_manager.selfcast(spell_id);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__addloot);
//XS(XS__addloot)
//{
// dXSARGS;
// if(items < 1 || items > 3)
// Perl_croak(aTHX_ "Usage: addloot(item_id, charges = 0, equipitem = true)");
//
// uint32 itemid = (uint32)SvUV(ST(0));
// uint16 charges = 0;
// bool equipitem = true;
//
// if (items > 1)
// charges = (uint16)SvUV(ST(1));
// if (items > 2)
// equipitem = (bool)SvTRUE(ST(2));
//
// quest_manager.addloot(itemid, charges, equipitem);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__zone);
//XS(XS__zone)
//{
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: zone(zone_name)");
//
// char * zone_name = (char *)SvPV_nolen(ST(0));
//
// quest_manager.Zone(zone_name);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__settimer);
//XS(XS__settimer)
//{
// dXSARGS;
// if (items != 2)
// Perl_croak(aTHX_ "Usage: settimer(timer_name, seconds)");
//
// char * timer_name = (char *)SvPV_nolen(ST(0));
// int seconds = (int)SvIV(ST(1));
//
// quest_manager.settimer(timer_name, seconds);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__settimerMS);
//XS(XS__settimerMS)
//{
// dXSARGS;
// if (items != 2)
// Perl_croak(aTHX_ "Usage: settimerMS(timer_name, milliseconds)");
//
// char * timer_name = (char *)SvPV_nolen(ST(0));
// int milliseconds = (int)SvIV(ST(1));
//
// quest_manager.settimerMS(timer_name, milliseconds);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__stoptimer);
//XS(XS__stoptimer)
//{
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: stoptimer(timer_name)");
//
// char * timer_name = (char *)SvPV_nolen(ST(0));
//
// quest_manager.stoptimer(timer_name);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__stopalltimers);
//XS(XS__stopalltimers)
//{
// dXSARGS;
// if (items != 0)
// Perl_croak(aTHX_ "Usage: stopalltimers()");
//
// quest_manager.stopalltimers();
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__emote);
//XS(XS__emote)
//{
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: emote(str)");
//
// char * str = (char *)SvPV_nolen(ST(0));
//
// quest_manager.emote(str);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__shout);
//XS(XS__shout)
//{
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: shout(str)");
//
// char * str = (char *)SvPV_nolen(ST(0));
//
// quest_manager.shout(str);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__shout2);
//XS(XS__shout2)
//{
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: shout2(str)");
//
// char * str = (char *)SvPV_nolen(ST(0));
//
// quest_manager.shout2(str);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__gmsay);
//XS(XS__gmsay)
//{
// dXSARGS;
// if ((items < 1) || (items > 5))
// Perl_croak(aTHX_ "Usage: gmsay(str, color, send_to_world?)");
//
// char * str = (char *)SvPV_nolen(ST(0));
// int color = 7;
// bool send_to_world = 0;
// uint32 to_guilddbid = 0;
// uint16 to_minstatus = 80;
//
// if (items > 1) {
// color = (int)SvIV(ST(1));
// }
//
// if (items > 2) {
// send_to_world = ((int)SvIV(ST(2))) == 0?false:true;
// }
//
// if (items > 3)
// to_guilddbid = (int)SvUV(ST(3));
//
// if (items > 4)
// to_minstatus = (int)SvUV(ST(4));
//
// quest_manager.gmsay(str, color, send_to_world, to_guilddbid, to_minstatus);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__depop);
//XS(XS__depop)
//{
// dXSARGS;
// if (items < 0 || items > 1)
// Perl_croak(aTHX_ "Usage: depop(npc_type= 0)");
//
// int npc_type;
//
// if (items < 1)
// npc_type = 0;
// else
// npc_type = (int)SvIV(ST(0));
//
//
// quest_manager.depop(npc_type);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__depop_withtimer);
//XS(XS__depop_withtimer)
//{
// dXSARGS;
// if (items < 0 || items > 1)
// Perl_croak(aTHX_ "Usage: depop_withtimer(npc_type= 0)");
//
// int npc_type;
//
// if (items < 1)
// npc_type = 0;
// else
// npc_type = (int)SvIV(ST(0));
//
//
// quest_manager.depop_withtimer(npc_type);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__depopall);
//XS(XS__depopall)
//{
// dXSARGS;
// if (items < 0 || items > 1)
// Perl_croak(aTHX_ "Usage: depopall(npc_type= 0)");
//
// int npc_type;
//
// if (items < 1)
// npc_type = 0;
// else
// npc_type = (int)SvIV(ST(0));
//
//
// quest_manager.depopall(npc_type);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__settarget);
//XS(XS__settarget)
//{
// dXSARGS;
// if (items != 2)
// Perl_croak(aTHX_ "Usage: settarget(type, target_id)");
//
// char * type = (char *)SvPV_nolen(ST(0));
// int target_id = (int)SvIV(ST(1));
//
// quest_manager.settarget(type, target_id);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__follow);
//XS(XS__follow)
//{
// dXSARGS;
// if (items != 1 && items != 2)
// Perl_croak(aTHX_ "Usage: follow(entity_id, [distance])");
//
// int entity_id = (int)SvIV(ST(0));
// int distance;
//
// if (items == 2)
// distance = (int)SvIV(ST(1));
// else
// distance = 10;
//
// quest_manager.follow(entity_id, distance);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__sfollow);
//XS(XS__sfollow)
//{
// dXSARGS;
// if (items != 0)
// Perl_croak(aTHX_ "Usage: sfollow()");
//
//
// quest_manager.sfollow();
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__changedeity);
//XS(XS__changedeity)
//{
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: changedeity(diety_id)");
//
// int diety_id = (int)SvIV(ST(0));
//
// quest_manager.changedeity(diety_id);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__exp);
//XS(XS__exp)
//{
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: exp(amt)");
//
// int amt = (int)SvIV(ST(0));
//
// quest_manager.exp(amt);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__level);
//XS(XS__level)
//{
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: level(newlevel)");
//
// int newlevel = (int)SvIV(ST(0));
//
// quest_manager.level(newlevel);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__traindisc);
//XS(XS__traindisc)
//{
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: traindisc(discipline_tome_item_id)");
//
// int discipline_tome_item_id = (int)SvIV(ST(0));
//
// quest_manager.traindisc(discipline_tome_item_id);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__isdisctome);
//XS(XS__isdisctome)
//{
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: isdisctome(item_id)");
//
// bool RETVAL;
// int item_id = (int)SvIV(ST(0));
//
// RETVAL = quest_manager.isdisctome(item_id);
//
// ST(0) = boolSV(RETVAL);
// sv_2mortal(ST(0));
// XSRETURN(1);
//}
//
//XS(XS__safemove);
//XS(XS__safemove)
//{
// dXSARGS;
// if (items != 0)
// Perl_croak(aTHX_ "Usage: safemove()");
//
//
// quest_manager.safemove();
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__rain);
//XS(XS__rain)
//{
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: rain(weather)");
//
// int weather = (int)SvIV(ST(0));
//
// quest_manager.rain(weather);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__snow);
//XS(XS__snow)
//{
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: snow(weather)");
//
// int weather = (int)SvIV(ST(0));
//
// quest_manager.snow(weather);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__surname);
//XS(XS__surname)
//{
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: surname(name)");
//
// char * name = (char *)SvPV_nolen(ST(0));
//
// quest_manager.surname(name);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__permaclass);
//XS(XS__permaclass)
//{
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: permaclass(class_id)");
//
// int class_id = (int)SvIV(ST(0));
//
// quest_manager.permaclass(class_id);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__permarace);
//XS(XS__permarace)
//{
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: permarace(race_id)");
//
// int race_id = (int)SvIV(ST(0));
//
// quest_manager.permarace(race_id);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__permagender);
//XS(XS__permagender)
//{
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: permagender(gender_id)");
//
// int gender_id = (int)SvIV(ST(0));
//
// quest_manager.permagender(gender_id);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__scribespells);
//XS(XS__scribespells)
//{
// dXSARGS;
// if (items < 1)
// Perl_croak(aTHX_ "Usage: scribespells(max_level, min_level = 1)");
//
// uint16 RETVAL;
// dXSTARG;
//
// uint8 max_level = (uint8)SvIV(ST(0));
// uint8 min_level = (uint8)SvIV(ST(1));
//
// if (min_level)
// RETVAL = quest_manager.scribespells(max_level, min_level);
// else
// RETVAL = quest_manager.scribespells(max_level);
//
// XSprePUSH; PUSHu((IV)RETVAL);
// XSRETURN(1);
//}
//
//XS(XS__traindiscs);
//XS(XS__traindiscs)
//{
// dXSARGS;
// if (items < 1)
// Perl_croak(aTHX_ "Usage: traindiscs(max_level, min_level = 1)");
//
// uint16 RETVAL;
// dXSTARG;
//
// uint8 max_level = (uint8)SvIV(ST(0));
// uint8 min_level = (uint8)SvIV(ST(1));
//
// if (min_level)
// RETVAL = quest_manager.traindiscs(max_level, min_level);
// else
// RETVAL = quest_manager.traindiscs(max_level);
//
// XSprePUSH; PUSHu((IV)RETVAL);
// XSRETURN(1);
//}
//
//XS(XS__unscribespells);
//XS(XS__unscribespells)
//{
// dXSARGS;
// if (items != 0)
// Perl_croak(aTHX_ "Usage: unscribespells()");
//
//
// quest_manager.unscribespells();
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__untraindiscs);
//XS(XS__untraindiscs)
//{
// dXSARGS;
// if (items != 0)
// Perl_croak(aTHX_ "Usage: untraindiscs()");
//
//
// quest_manager.untraindiscs();
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__givecash);
//XS(XS__givecash)
//{
// dXSARGS;
// if (items != 4)
// Perl_croak(aTHX_ "Usage: givecash(copper, silver, gold, platinum)");
//
// int copper = (int)SvIV(ST(0));
// int silver = (int)SvIV(ST(1));
// int gold = (int)SvIV(ST(2));
// int platinum = (int)SvIV(ST(3));
//
// quest_manager.givecash(copper, silver, gold, platinum);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__pvp);
//XS(XS__pvp)
//{
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: pvp(mode)");
//
// char * mode = (char *)SvPV_nolen(ST(0));
//
// quest_manager.pvp(mode);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__movepc);
//XS(XS__movepc)
//{
// dXSARGS;
// if (items != 4 && items != 5)
// Perl_croak(aTHX_ "Usage: movepc(zone_id, x, y, z [,heading])");
//
// int zoneid = (int)SvIV(ST(0));
// float x = (float)SvNV(ST(1));
// float y = (float)SvNV(ST(2));
// float z = (float)SvNV(ST(3));
//
// if (items == 4)
//
// quest_manager.movepc(zoneid, x, y, z, 0.0f);
//
// else {
// float heading = (float)SvNV(ST(4));
// quest_manager.movepc(zoneid, x, y, z, heading);
// }
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__gmmove);
//XS(XS__gmmove)
//{
// dXSARGS;
// if (items != 3)
// Perl_croak(aTHX_ "Usage: gmmove(x, y, z)");
//
// float x = (float)SvNV(ST(0));
// float y = (float)SvNV(ST(1));
// float z = (float)SvNV(ST(2));
//
// quest_manager.gmmove(x, y, z);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__movegrp);
//XS(XS__movegrp)
//{
// dXSARGS;
// if (items != 4)
// Perl_croak(aTHX_ "Usage: movegrp(zoneid, x, y, z)");
//
// int zoneid = (int)SvIV(ST(0));
// float x = (float)SvNV(ST(1));
// float y = (float)SvNV(ST(2));
// float z = (float)SvNV(ST(3));
//
// quest_manager.movegrp(zoneid, x, y, z);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__doanim);
//XS(XS__doanim)
//{
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: doanim(anim_id)");
//
// int anim_id = (int)SvIV(ST(0));
//
// quest_manager.doanim(anim_id);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__addskill);
//XS(XS__addskill)
//{
// dXSARGS;
// if (items != 2)
// Perl_croak(aTHX_ "Usage: addskill(skill_id, value)");
//
// int skill_id = (int)SvIV(ST(0));
// int value = (int)SvIV(ST(1));
//
// quest_manager.addskill(skill_id, value);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__setlanguage);
//XS(XS__setlanguage)
//{
// dXSARGS;
// if (items != 2)
// Perl_croak(aTHX_ "Usage: setlanguage(skill_id, value)");
//
// int skill_id = (int)SvIV(ST(0));
// int value = (int)SvIV(ST(1));
//
// quest_manager.setlanguage(skill_id, value);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__setskill);
//XS(XS__setskill)
//{
// dXSARGS;
// if (items != 2)
// Perl_croak(aTHX_ "Usage: setskill(skill_id, value)");
//
// int skill_id = (int)SvIV(ST(0));
// int value = (int)SvIV(ST(1));
//
// quest_manager.setskill(skill_id, value);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__setallskill);
//XS(XS__setallskill)
//{
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: setallskill(value)");
//
// int value = (int)SvIV(ST(0));
//
// quest_manager.setallskill(value);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__attack);
//XS(XS__attack)
//{
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: attack(client_name)");
//
// char * client_name = (char *)SvPV_nolen(ST(0));
//
// quest_manager.attack(client_name);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__attacknpc);
//XS(XS__attacknpc)
//{
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: attacknpc(npc_entity_id)");
//
// int npc_entity_id = (int)SvIV(ST(0));
//
// quest_manager.attacknpc(npc_entity_id);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__attacknpctype);
//XS(XS__attacknpctype)
//{
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: attacknpctype(npc_type_id)");
//
// int npc_type_id = (int)SvIV(ST(0));
//
// quest_manager.attacknpctype(npc_type_id);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__save);
//XS(XS__save)
//{
// dXSARGS;
// if (items != 0)
// Perl_croak(aTHX_ "Usage: save()");
//
//
// quest_manager.save();
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__faction);
//XS(XS__faction)
//{
// dXSARGS;
// if (items < 2 || items > 3)
// Perl_croak(aTHX_ "Usage: faction(faction_id, faction_value, temp)");
//
// int faction_id = (int)SvIV(ST(0));
// int faction_value = (int)SvIV(ST(1));
// int temp;
//
// if(items == 2)
// temp = 0;
// else
// temp = (int)SvIV(ST(2));
//
// quest_manager.faction(faction_id, faction_value, temp);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__setsky);
//XS(XS__setsky)
//{
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: setsky(new_sky)");
//
// unsigned char new_sky = (unsigned char)SvUV(ST(0));
//
// quest_manager.setsky(new_sky);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__setguild);
//XS(XS__setguild)
//{
// dXSARGS;
// if (items != 2)
// Perl_croak(aTHX_ "Usage: setguild(new_guild_id, new_rank)");
//
// unsigned long new_guild_id = (unsigned long)SvUV(ST(0));
// int new_rank = (int)SvIV(ST(1));
//
// quest_manager.setguild(new_guild_id, new_rank);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__createguild);
//XS(XS__createguild)
//{
// dXSARGS;
// if (items != 2)
// Perl_croak(aTHX_ "Usage: createguild(guild_name, leader)");
//
// char * guild_name = (char *)SvPV_nolen(ST(0));
// char * leader = (char *)SvPV_nolen(ST(1));
//
// quest_manager.CreateGuild(guild_name, leader);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__settime);
//XS(XS__settime)
//{
// dXSARGS;
// if (items != 2)
// Perl_croak(aTHX_ "Usage: settime(new_hour, new_min)");
//
// int new_hour = (int)SvIV(ST(0));
// int new_min = (int)SvIV(ST(1));
//
// quest_manager.settime(new_hour, new_min);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__itemlink);
//XS(XS__itemlink)
//{
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: itemlink(item_id)");
//
// int item_id = (int)SvIV(ST(0));
//
// quest_manager.itemlink(item_id);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__signalwith);
//XS(XS__signalwith)
//{
// dXSARGS;
//
// if (items == 2) {
// int npc_id = (int)SvIV(ST(0));
// int signal_id = (int)SvIV(ST(1));
// quest_manager.signalwith(npc_id, signal_id);
// } else if(items == 3) {
// int npc_id = (int)SvIV(ST(0));
// int signal_id = (int)SvIV(ST(1));
// int wait = (int)SvIV(ST(2));
// quest_manager.signalwith(npc_id, signal_id, wait);
// } else {
// Perl_croak(aTHX_ "Usage: signalwith(npc_id,signal_id[,wait_ms])");
// }
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__signal);
//XS(XS__signal)
//{
// dXSARGS;
//
// if (items == 1) {
// int npc_id = (int)SvIV(ST(0));
// quest_manager.signal(npc_id);
// } else if(items == 2) {
// int npc_id = (int)SvIV(ST(0));
// int wait = (int)SvIV(ST(1));
// quest_manager.signal(npc_id, wait);
// } else {
// Perl_croak(aTHX_ "Usage: signal(npc_id[,wait_ms])");
// }
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__setglobal);
//XS(XS__setglobal)
//{
// dXSARGS;
// if (items != 4)
// Perl_croak(aTHX_ "Usage: setglobal(varname, newvalue, options, duration)");
//
// char * varname = (char *)SvPV_nolen(ST(0));
// char * newvalue = (char *)SvPV_nolen(ST(1));
// int options = (int)SvIV(ST(2));
// char * duration = (char *)SvPV_nolen(ST(3));
//
// quest_manager.setglobal(varname, newvalue, options, duration);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__targlobal);
//XS(XS__targlobal)
//{
// dXSARGS;
// if (items != 6)
// Perl_croak(aTHX_ "Usage: targlobal(varname, value, duration, npcid, charid, zoneid)");
//
// char * varname = (char *)SvPV_nolen(ST(0));
// char * value = (char *)SvPV_nolen(ST(1));
// char * duration = (char *)SvPV_nolen(ST(2));
// int npcid = (int)SvIV(ST(3));
// int charid = (int)SvIV(ST(4));
// int zoneid = (int)SvIV(ST(5));
//
// quest_manager.targlobal(varname, value, duration, npcid, charid, zoneid);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__delglobal);
//XS(XS__delglobal)
//{
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: delglobal(varname)");
//
// char * varname = (char *)SvPV_nolen(ST(0));
//
// quest_manager.delglobal(varname);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__ding);
//XS(XS__ding)
//{
// dXSARGS;
// if (items != 0)
// Perl_croak(aTHX_ "Usage: ding()");
//
//
// quest_manager.ding();
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__rebind);
//XS(XS__rebind)
//{
// dXSARGS;
// if (items != 4)
// Perl_croak(aTHX_ "Usage: rebind(zoneid, x, y, z)");
//
// int zoneid = (int)SvIV(ST(0));
// float x = (float)SvNV(ST(1));
// float y = (float)SvNV(ST(2));
// float z = (float)SvNV(ST(3));
//
// quest_manager.rebind(zoneid, x, y, z);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__start);
//XS(XS__start)
//{
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: start(wp)");
//
// int wp = (int)SvIV(ST(0));
//
// quest_manager.start(wp);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__stop);
//XS(XS__stop)
//{
// dXSARGS;
// if (items != 0)
// Perl_croak(aTHX_ "Usage: stop()");
//
//
// quest_manager.stop();
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__pause);
//XS(XS__pause)
//{
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: pause(duration)");
//
// int duration = (int)SvIV(ST(0));
//
// quest_manager.pause(duration);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__moveto);
//XS(XS__moveto)
//{
// dXSARGS;
// if (items != 3 && items != 4 && items != 5)
// Perl_croak(aTHX_ "Usage: moveto(x, y, z, [mth, saveguard?])");
//
// float x = (float)SvNV(ST(0));
// float y = (float)SvNV(ST(1));
// float z = (float)SvNV(ST(2));
// float h;
// bool saveguard;
//
// if(items > 3)
// h = (float)SvNV(ST(3));
// else
// h = 0;
//
// if(items > 4)
// saveguard = (bool)SvTRUE(ST(4));
// else
// saveguard = false;
//
// quest_manager.moveto(x, y, z, h, saveguard);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__resume);
//XS(XS__resume)
//{
// dXSARGS;
// if (items != 0)
// Perl_croak(aTHX_ "Usage: resume()");
//
//
// quest_manager.resume();
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__addldonpoints);
//XS(XS__addldonpoints)
//{
// dXSARGS;
// if (items != 2)
// Perl_croak(aTHX_ "Usage: addldonpoints(points, theme)");
//
// long points = (long)SvIV(ST(0));
// unsigned long theme = (unsigned long)SvUV(ST(1));
//
// quest_manager.addldonpoints(points, theme);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__addldonwin);
//XS(XS__addldonwin)
//{
// dXSARGS;
// if (items != 2)
// Perl_croak(aTHX_ "Usage: addldonwin(wins, theme)");
//
// long wins = (long)SvIV(ST(0));
// unsigned long theme = (unsigned long)SvUV(ST(1));
//
// quest_manager.addldonwin(wins, theme);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__addldonloss);
//XS(XS__addldonloss)
//{
// dXSARGS;
// if (items != 2)
// Perl_croak(aTHX_ "Usage: addldonloss(losses, theme)");
//
// long losses = (long)SvIV(ST(0));
// unsigned long theme = (unsigned long)SvUV(ST(1));
//
// quest_manager.addldonloss(losses, theme);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__setnexthpevent);
//XS(XS__setnexthpevent)
//{
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: setnexthpevent(at)");
//
// int at = (int)SvIV(ST(0));
//
// quest_manager.setnexthpevent(at);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__setnextinchpevent);
//XS(XS__setnextinchpevent)
//{
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: setnextinchpevent(at)");
//
// int at = (int)SvIV(ST(0));
//
// quest_manager.setnextinchpevent(at);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__sethp);
//XS(XS__sethp)
//{
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: sethp(percentage)");
//
// int hpperc = (int)SvIV(ST(0));
//
// quest_manager.sethp(hpperc);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__respawn);
//XS(XS__respawn)
//{
// dXSARGS;
// if (items != 2)
// Perl_croak(aTHX_ "Usage: respawn(npc_type, grid)");
//
// int npc_type = (int)SvIV(ST(0));
// int grid = (int)SvIV(ST(1));
//
// quest_manager.respawn(npc_type, grid);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__ChooseRandom);
//XS(XS__ChooseRandom)
//{
// dXSARGS;
// if (items < 1)
// Perl_croak(aTHX_ "Usage: ChooseRandom(... list ...)");
//
// int index = MakeRandomInt(0, items-1);
//
// SV *tmp = ST(0);
// ST(0) = ST(index);
// ST(index) = tmp;
//
// XSRETURN(1); //return 1 element from the stack (ST(0))
//}
//
//XS(XS__set_proximity);
//XS(XS__set_proximity)
//{
// dXSARGS;
// if (items != 4 && items != 6)
// Perl_croak(aTHX_ "Usage: set_proximity(minx, maxx, miny, maxy [, minz, maxz])");
//
// float minx = (float)SvNV(ST(0));
// float maxx = (float)SvNV(ST(1));
// float miny = (float)SvNV(ST(2));
// float maxy = (float)SvNV(ST(3));
//
// if(items == 4)
// quest_manager.set_proximity(minx, maxx, miny, maxy);
// else {
// float minz = (float)SvNV(ST(4));
// float maxz = (float)SvNV(ST(5));
// quest_manager.set_proximity(minx, maxx, miny, maxy, minz, maxz);
// }
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__clear_proximity);
//XS(XS__clear_proximity)
//{
// dXSARGS;
// if (items != 0)
// Perl_croak(aTHX_ "Usage: clear_proximity()");
//
// quest_manager.clear_proximity();
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__setanim);
//XS(XS__setanim) //Cisyouc: mob->setappearance() addition
//{
// dXSARGS;
// if(items != 2)
// Perl_croak(aTHX_ "Usage: quest::setanim(npc_type, animnum);");
//
// quest_manager.setanim(SvUV(ST(0)), SvUV(ST(1)));
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__showgrid);
//XS(XS__showgrid)
//{
// dXSARGS;
// if(items != 1)
// Perl_croak(aTHX_ "Usage: quest::showgrid(grid_id);");
//
// quest_manager.showgrid(SvUV(ST(0)));
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__showpath);
//XS(XS__showpath)
//{
// dXSARGS;
// if (items != 3)
// Perl_croak(aTHX_ "Usage: showpath(x, y, z)");
//
// float x = (float)SvNV(ST(0));
// float y = (float)SvNV(ST(1));
// float z = (float)SvNV(ST(2));
//
// quest_manager.showpath(x, y, z);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__pathto);
//XS(XS__pathto)
//{
// dXSARGS;
// if (items != 3)
// Perl_croak(aTHX_ "Usage: pathto(x, y, z)");
//
// float x = (float)SvNV(ST(0));
// float y = (float)SvNV(ST(1));
// float z = (float)SvNV(ST(2));
//
// quest_manager.pathto(x, y, z);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__spawn_condition);
//XS(XS__spawn_condition)
//{
// dXSARGS;
// if (items < 3 || items > 4)
// Perl_croak(aTHX_ "Usage: spawn_condition(zone_short, [instance_id], condition_id, value)");
//
// if(items == 3)
// {
// char * zone_short = (char *)SvPV_nolen(ST(0));
// uint16 cond_id = (int)SvUV(ST(1));
// int16 value = (int)SvIV(ST(2));
//
// quest_manager.spawn_condition(zone_short, zone->GetInstanceID(), cond_id, value);
// }
// else
// {
// char * zone_short = (char *)SvPV_nolen(ST(0));
// uint32 instance_id = (int)SvUV(ST(1));
// uint16 cond_id = (int)SvUV(ST(2));
// int16 value = (int)SvIV(ST(3));
//
// quest_manager.spawn_condition(zone_short, instance_id, cond_id, value);
// }
// XSRETURN_EMPTY;
//}
//
//XS(XS__get_spawn_condition);
//XS(XS__get_spawn_condition)
//{
// dXSARGS;
// if (items < 2 || items > 3)
// Perl_croak(aTHX_ "Usage: get_spawn_condition(zone_short, [instance_id], condition_id)");
//
// if(items == 2)
// {
// int16 RETVAL;
// dXSTARG;
//
// char * zone_short = (char *)SvPV_nolen(ST(0));
// uint16 cond_id = (int)SvIV(ST(1));
//
// RETVAL = quest_manager.get_spawn_condition(zone_short, zone->GetInstanceID(), cond_id);
// XSprePUSH; PUSHu((IV)RETVAL);
//
// XSRETURN(1);
// }
// else
// {
// int16 RETVAL;
// dXSTARG;
//
// char * zone_short = (char *)SvPV_nolen(ST(0));
// uint16 instance_id = (int)SvIV(ST(1));
// uint16 cond_id = (int)SvIV(ST(2));
//
// RETVAL = quest_manager.get_spawn_condition(zone_short, instance_id, cond_id);
// XSprePUSH; PUSHu((IV)RETVAL);
//
// XSRETURN(1);
// }
//}
//
//XS(XS__toggle_spawn_event);
//XS(XS__toggle_spawn_event)
//{
// dXSARGS;
// if (items != 2)
// Perl_croak(aTHX_ "Usage: toggle_spawn_event(event_id, enabled?, reset_base)");
//
// uint32 event_id = (int)SvIV(ST(0));
// bool enabled = ((int)SvIV(ST(1))) == 0?false:true;
// bool reset_base = ((int)SvIV(ST(1))) == 0?false:true;
//
// quest_manager.toggle_spawn_event(event_id, enabled, reset_base);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__has_zone_flag);
//XS(XS__has_zone_flag)
//{
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: has_zone_flag(zone_id)");
//
// int16 RETVAL;
// dXSTARG;
//
// uint32 zone_id = (int)SvIV(ST(0));
//
// RETVAL = quest_manager.has_zone_flag(zone_id);
// XSprePUSH; PUSHu((IV)RETVAL);
//
// XSRETURN(1);
//
//}
//
//XS(XS__set_zone_flag);
//XS(XS__set_zone_flag)
//{
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: set_zone_flag(zone_id)");
//
// uint32 zone_id = (int)SvIV(ST(0));
//
// quest_manager.set_zone_flag(zone_id);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__clear_zone_flag);
//XS(XS__clear_zone_flag)
//{
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: clear_zone_flag(zone_id)");
//
// uint32 zone_id = (int)SvIV(ST(0));
//
// quest_manager.clear_zone_flag(zone_id);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__summonburriedplayercorpse);
//XS(XS__summonburriedplayercorpse)
//{
// dXSARGS;
// if (items != 5)
// Perl_croak(aTHX_ "Usage: summonburriedplayercorpse(char_id,dest_x,dest_y,dest_z,dest_heading)");
//
// bool RETVAL;
// uint32 char_id = (int)SvIV(ST(0));
// float dest_x = (float)SvIV(ST(1));
// float dest_y = (float)SvIV(ST(2));
// float dest_z = (float)SvIV(ST(3));
// float dest_heading = (float)SvIV(ST(4));
//
// RETVAL = quest_manager.summonburriedplayercorpse(char_id, dest_x, dest_y, dest_z, dest_heading);
//
// ST(0) = boolSV(RETVAL);
// sv_2mortal(ST(0));
// XSRETURN(1);
//}
//
//XS(XS__summonallplayercorpses);
//XS(XS__summonallplayercorpses)
//{
// dXSARGS;
// if (items != 5)
// Perl_croak(aTHX_ "Usage: summonallplayercorpses(char_id,dest_x,dest_y,dest_z,dest_heading)");
//
// bool RETVAL;
// uint32 char_id = (int)SvIV(ST(0));
// float dest_x = (float)SvIV(ST(1));
// float dest_y = (float)SvIV(ST(2));
// float dest_z = (float)SvIV(ST(3));
// float dest_heading = (float)SvIV(ST(4));
//
// RETVAL = quest_manager.summonallplayercorpses(char_id, dest_x, dest_y, dest_z, dest_heading);
//
// ST(0) = boolSV(RETVAL);
// sv_2mortal(ST(0));
// XSRETURN(1);
//}
//
//XS(XS__getplayerburriedcorpsecount);
//XS(XS__getplayerburriedcorpsecount)
//{
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: getplayerburriedcorpsecount(char_id)");
//
// uint32 RETVAL;
// dXSTARG;
//
// uint32 char_id = (int)SvIV(ST(0));
//
// RETVAL = quest_manager.getplayerburriedcorpsecount(char_id);
// XSprePUSH; PUSHu((IV)RETVAL);
//
// XSRETURN(1);
//}
//
//XS(XS__buryplayercorpse);
//XS(XS__buryplayercorpse)
//{
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: buryplayercorpse(char_id)");
//
// uint32 RETVAL;
// dXSTARG;
//
// uint32 char_id = (int)SvIV(ST(0));
//
// RETVAL = quest_manager.buryplayercorpse(char_id);
// XSprePUSH; PUSHu((IV)RETVAL);
//
// XSRETURN(1);
//}
//
//XS(XS__forcedooropen);
//XS(XS__forcedooropen)
//{
// dXSARGS;
// if (items < 1 || items > 2)
// Perl_croak(aTHX_ "Usage: forcedooropen(doorid [, altmode=0])");
//
// if (items == 1)
// {
// uint32 did = (int)SvIV(ST(0));
//
// quest_manager.forcedooropen(did, false);
//
// XSRETURN_EMPTY;
// }
// else
// {
// uint32 did = (int)SvIV(ST(0));
// bool am = (int)SvIV(ST(1)) == 0?false:true;
//
// quest_manager.forcedooropen(did, am);
//
// XSRETURN_EMPTY;
// }
//}
//
//XS(XS__forcedoorclose);
//XS(XS__forcedoorclose)
//{
// dXSARGS;
// if (items < 1 || items > 2)
// Perl_croak(aTHX_ "Usage: forcedoorclose(doorid [, altmode=0])");
//
// if (items == 1)
// {
// uint32 did = (int)SvIV(ST(0));
//
// quest_manager.forcedoorclose(did, false);
//
// XSRETURN_EMPTY;
// }
// else
// {
// uint32 did = (int)SvIV(ST(0));
// bool am = (int)SvIV(ST(1)) == 0?false:true;
//
// quest_manager.forcedoorclose(did, am);
//
// XSRETURN_EMPTY;
// }
//}
//
//XS(XS__toggledoorstate);
//XS(XS__toggledoorstate)
//{
// dXSARGS;
// if (items !=1)
// Perl_croak(aTHX_ "Usage: toggledoorstate(doorid)");
//
// uint32 did = (int)SvIV(ST(0));
//
// quest_manager.toggledoorstate(did);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__isdooropen);
//XS(XS__isdooropen)
//{
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: isdooropen(doorid)");
//
// bool RETVAL;
// dXSTARG;
//
// uint32 doorid = (int)SvIV(ST(0));
//
// RETVAL = quest_manager.isdooropen(doorid);
// XSprePUSH; PUSHu((IV)RETVAL);
//
// XSRETURN(1);
//}
//
//XS(XS__depopzone);
//XS(XS__depopzone)
//{
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: depopzone(StartSpawnStatus)");
//
// bool StartSpawnStatus = ((int)SvIV(ST(0))) == 0?false:true;
//
// quest_manager.depopzone(StartSpawnStatus);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__repopzone);
//XS(XS__repopzone)
//{
// dXSARGS;
// if (items != 0)
// Perl_croak(aTHX_ "Usage: repopzone()");
//
// quest_manager.repopzone();
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__npcrace);
//XS(XS__npcrace)
//{
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: npcrace(race_id)");
//
// int race_id = (int)SvIV(ST(0));
//
// quest_manager.npcrace(race_id);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__npcgender);
//XS(XS__npcgender)
//{
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: npcgender(gender_id)");
//
// int gender_id= (int)SvIV(ST(0));
//
// quest_manager.npcgender(gender_id);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__npcsize);
//XS(XS__npcsize)
//{
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: npcsize(newsize)");
//
// int newsize = (int)SvIV(ST(0));
//
// quest_manager.npcsize(newsize);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__npctexture);
//XS(XS__npctexture)
//{
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: npctexture(newtexture)");
//
// int newtexture = (int)SvIV(ST(0));
//
// quest_manager.npctexture(newtexture);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__playerrace);
//XS(XS__playerrace)
//{
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: playerrace(race_id)");
//
// int race_id = (int)SvIV(ST(0));
//
// quest_manager.playerrace(race_id);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__playergender);
//XS(XS__playergender)
//{
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: playergender(gender_id)");
//
// int gender_id= (int)SvIV(ST(0));
//
// quest_manager.playergender(gender_id);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__playersize);
//XS(XS__playersize)
//{
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: playersize(newsize)");
//
// int newsize = (int)SvIV(ST(0));
//
// quest_manager.playersize(newsize);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__playertexture);
//XS(XS__playertexture)
//{
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: playertexture(newtexture)");
//
// int newtexture = (int)SvIV(ST(0));
//
// quest_manager.playertexture(newtexture);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__playerfeature);
//XS(XS__playerfeature)
//{
// dXSARGS;
// if (items != 2)
// Perl_croak(aTHX_ "Usage: playerfeature(feature, setting)");
//
// char * feature = (char *)SvPV_nolen(ST(0));
// int setting = (int)SvIV(ST(1));
//
// quest_manager.playerfeature(feature, setting);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__npcfeature);
//XS(XS__npcfeature)
//{
// dXSARGS;
// if (items != 2)
// Perl_croak(aTHX_ "Usage: npcfeature(feature, setting)");
//
// char * feature = (char *)SvPV_nolen(ST(0));
// int setting = (int)SvIV(ST(1));
//
// quest_manager.npcfeature(feature, setting);
//
// XSRETURN_EMPTY;
//}
//
//#ifdef BOTS
//
//XS(XS__createbotcount);
//XS(XS__createbotcount)
//{
// dXSARGS;
// int RETVAL;
// dXSTARG;
//
// RETVAL = quest_manager.createbotcount();
// XSprePUSH; PUSHi((IV)RETVAL);
//
// XSRETURN(1);
//}
//
//XS(XS__spawnbotcount);
//XS(XS__spawnbotcount)
//{
// dXSARGS;
// int RETVAL;
// dXSTARG;
//
// RETVAL = quest_manager.spawnbotcount();
// XSprePUSH; PUSHi((IV)RETVAL);
//
// XSRETURN(1);
//}
//
//XS(XS__botquest);
//XS(XS__botquest)
//{
// dXSARGS;
// bool RETVAL;
// dXSTARG;
//
// RETVAL = quest_manager.botquest();
// XSprePUSH; PUSHu((IV)RETVAL);
//
// XSRETURN(1);
//}
//
//XS(XS__createBot);
//XS(XS__createBot)
//{
// dXSARGS;
// bool RETVAL;
// dXSTARG;
//
// if(items != 6)
// {
// Perl_croak(aTHX_ "Usage: createBot(firstname, lastname, level, race, class, gender)");
// }
//
// char *firstname = (char *)SvPV_nolen(ST(0));
// char *lastname = (char *)SvPV_nolen(ST(1));
// int level = (int) SvIV(ST(2));
// int race = (int) SvIV(ST(3));
// int botclass = (int) SvIV(ST(4));
// int gender = (int) SvIV(ST(5));
//
// RETVAL = quest_manager.createBot(firstname, lastname, level, race, botclass, gender);
// XSprePUSH; PUSHu((IV)RETVAL);
// XSRETURN(1);
//}
//
//#endif //BOTS
//
//XS(XS__taskselector);
//XS(XS__taskselector)
//{
// dXSARGS;
// if((items >= 1) && (items <=MAXCHOOSERENTRIES)) {
// int tasks[MAXCHOOSERENTRIES];
// for(int i=0; i< items; i++) {
// tasks[i] = (int)SvIV(ST(i));
// }
// quest_manager.taskselector(items, tasks);
// } else {
// Perl_croak(aTHX_ "Usage: taskselector(taskid1, taskid2, ..., taskid%i)", MAXCHOOSERENTRIES);
// }
//
// XSRETURN_EMPTY;
//}
//XS(XS__tasksetselector);
//XS(XS__tasksetselector)
//{
// dXSARGS;
// if(items == 1) {
// int tasksetid = (int)SvIV(ST(0));
// quest_manager.tasksetselector(tasksetid);
// } else {
// Perl_croak(aTHX_ "Usage: tasksetselector(tasksetid)");
// }
//
// XSRETURN_EMPTY;
//}
//XS(XS__enabletask);
//XS(XS__enabletask)
//{
// dXSARGS;
// if((items >= 1) && (items <=10)) {
// int tasks[10];
// for(int i=0; i< items; i++) {
// tasks[i] = (int)SvIV(ST(i));
// }
// quest_manager.enabletask(items, tasks);
// } else {
// Perl_croak(aTHX_ "Usage: enabletask(taskid1, taskid2, ..., taskid10");
// }
//
// XSRETURN_EMPTY;
//}
//XS(XS__disabletask);
//XS(XS__disabletask)
//{
// dXSARGS;
// if((items >= 1) && (items <=10)) {
// int tasks[10];
// for(int i=0; i< items; i++) {
// tasks[i] = (int)SvIV(ST(i));
// }
// quest_manager.disabletask(items, tasks);
// } else {
// Perl_croak(aTHX_ "Usage: disabletask(taskid1, taskid2, ..., taskid10");
// }
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__istaskenabled);
//XS(XS__istaskenabled)
//{
// dXSARGS;
// bool RETVAL;
// dXSTARG;
//
// if(items == 1) {
// unsigned int taskid = (int)SvIV(ST(0));
// RETVAL = quest_manager.istaskenabled(taskid);
// } else {
// Perl_croak(aTHX_ "Usage: istaskenabled(taskid)");
// }
//
// XSprePUSH; PUSHu((IV)RETVAL);
//
// XSRETURN(1);
//}
//XS(XS__istaskactive);
//XS(XS__istaskactive)
//{
// dXSARGS;
// bool RETVAL;
// dXSTARG;
//
// if(items == 1) {
// unsigned int task = (int)SvIV(ST(0));
// RETVAL = quest_manager.istaskactive(task);
// } else {
// Perl_croak(aTHX_ "Usage: istaskactive(task)");
// }
//
// XSprePUSH; PUSHu((IV)RETVAL);
//
// XSRETURN(1);
//}
//XS(XS__istaskactivityactive);
//XS(XS__istaskactivityactive)
//{
// dXSARGS;
// bool RETVAL;
// dXSTARG;
//
// if(items == 2) {
// unsigned int task = (int)SvIV(ST(0));
// unsigned int activity = (int)SvIV(ST(1));
// RETVAL = quest_manager.istaskactivityactive(task, activity);
// } else {
// Perl_croak(aTHX_ "Usage: istaskactivityactive(task,activity)");
// }
//
// XSprePUSH; PUSHu((IV)RETVAL);
//
// XSRETURN(1);
//}
//XS(XS__gettaskactivitydonecount);
//XS(XS__gettaskactivitydonecount)
//{
// dXSARGS;
// uint32 RETVAL;
// dXSTARG;
//
// if(items == 2) {
// unsigned int task = (int)SvIV(ST(0));
// unsigned int activity = (int)SvIV(ST(1));
// RETVAL = quest_manager.gettaskactivitydonecount(task, activity);
// XSprePUSH; PUSHu((UV)RETVAL);
// } else {
// Perl_croak(aTHX_ "Usage: gettaskactivitydonecount(task,activity)");
// }
//
// XSRETURN(1);
//}
//XS(XS__updatetaskactivity);
//XS(XS__updatetaskactivity)
//{
// dXSARGS;
// unsigned int task, activity;
// int count = 1;
// if(items == 2) {
// task = (int)SvIV(ST(0));
// activity = (int)SvIV(ST(1));
// quest_manager.updatetaskactivity(task, activity, count);
// }
// else if(items == 3) {
// task = (int)SvIV(ST(0));
// activity = (int)SvIV(ST(1));
// count = (int)SvIV(ST(2));
// quest_manager.updatetaskactivity(task, activity, count);
// } else {
// Perl_croak(aTHX_ "Usage: updatetaskactivity(task, activity [,count])");
// }
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__resettaskactivity);
//XS(XS__resettaskactivity)
//{
// dXSARGS;
// unsigned int task, activity;
// if(items == 2) {
// task = (int)SvIV(ST(0));
// activity = (int)SvIV(ST(1));
// quest_manager.resettaskactivity(task, activity);
// } else {
// Perl_croak(aTHX_ "Usage: resettaskactivity(task, activity)");
// }
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__taskexploredarea);
//XS(XS__taskexploredarea)
//{
// dXSARGS;
// unsigned int exploreid;
// if(items == 1) {
// exploreid = (int)SvIV(ST(0));
// quest_manager.taskexploredarea(exploreid);
// } else {
// Perl_croak(aTHX_ "Usage: taskexplorearea(exploreid)");
// }
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__assigntask);
//XS(XS__assigntask)
//{
// dXSARGS;
// unsigned int taskid;
// if(items == 1) {
// taskid = (int)SvIV(ST(0));
// quest_manager.assigntask(taskid);
// } else {
// Perl_croak(aTHX_ "Usage: assigntask(taskid)");
// }
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__failtask);
//XS(XS__failtask)
//{
// dXSARGS;
// unsigned int taskid;
// if(items == 1) {
// taskid = (int)SvIV(ST(0));
// quest_manager.failtask(taskid);
// } else {
// Perl_croak(aTHX_ "Usage: failtask(taskid)");
// }
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__tasktimeleft);
//XS(XS__tasktimeleft)
//{
// dXSARGS;
// int RETVAL;
// dXSTARG;
//
// if(items == 1) {
// unsigned int taskid = (int)SvIV(ST(0));
// RETVAL = quest_manager.tasktimeleft(taskid);
// } else {
// Perl_croak(aTHX_ "Usage: tasktimeleft(taskid)");
// }
//
// XSprePUSH; PUSHi((IV)RETVAL);
//
// XSRETURN(1);
//}
//
//XS(XS__istaskcompleted);
//XS(XS__istaskcompleted)
//{
// dXSARGS;
// int RETVAL;
// dXSTARG;
//
// if(items == 1) {
// unsigned int taskid = (int)SvIV(ST(0));
// RETVAL = quest_manager.istaskcompleted(taskid);
// } else {
// Perl_croak(aTHX_ "Usage: istaskcompleted(taskid)");
// }
//
// XSprePUSH; PUSHi((IV)RETVAL);
//
// XSRETURN(1);
//}
//
//XS(XS__enabledtaskcount);
//XS(XS__enabledtaskcount)
//{
// dXSARGS;
// int RETVAL;
// dXSTARG;
//
// if(items == 1) {
// unsigned int taskset = (int)SvIV(ST(0));
// RETVAL = quest_manager.enabledtaskcount(taskset);
// } else {
// Perl_croak(aTHX_ "Usage: enabledtaskcount(taskset)");
// }
//
// XSprePUSH; PUSHi((IV)RETVAL);
//
// XSRETURN(1);
//}
//
//XS(XS__firsttaskinset);
//XS(XS__firsttaskinset)
//{
// dXSARGS;
// int RETVAL;
// dXSTARG;
//
// if(items == 1) {
// unsigned int taskset = (int)SvIV(ST(0));
// RETVAL = quest_manager.firsttaskinset(taskset);
// } else {
// Perl_croak(aTHX_ "Usage: firsttaskinset(taskset)");
// }
//
// XSprePUSH; PUSHi((IV)RETVAL);
//
// XSRETURN(1);
//}
//
//XS(XS__lasttaskinset);
//XS(XS__lasttaskinset)
//{
// dXSARGS;
// int RETVAL;
// dXSTARG;
//
// if(items == 1) {
// unsigned int taskset = (int)SvIV(ST(0));
// RETVAL = quest_manager.lasttaskinset(taskset);
// } else {
// Perl_croak(aTHX_ "Usage: lasttaskinset(taskset)");
// }
//
// XSprePUSH; PUSHi((IV)RETVAL);
//
// XSRETURN(1);
//}
//
//XS(XS__nexttaskinset);
//XS(XS__nexttaskinset)
//{
// dXSARGS;
// int RETVAL;
// dXSTARG;
//
// if(items == 2) {
// unsigned int taskset = (int)SvIV(ST(0));
// unsigned int taskid = (int)SvIV(ST(1));
// RETVAL = quest_manager.nexttaskinset(taskset, taskid);
// } else {
// Perl_croak(aTHX_ "Usage: nexttaskinset(taskset, taskid)");
// }
//
// XSprePUSH; PUSHi((IV)RETVAL);
//
// XSRETURN(1);
//}
//XS(XS__activespeaktask);
//XS(XS__activespeaktask)
//{
// dXSARGS;
// int RETVAL;
// dXSTARG;
//
// if(items == 0) {
// RETVAL = quest_manager.activespeaktask();
// } else {
// Perl_croak(aTHX_ "Usage: activespeaktask()");
// }
//
// XSprePUSH; PUSHi((IV)RETVAL);
//
// XSRETURN(1);
//}
//
//XS(XS__activespeakactivity);
//XS(XS__activespeakactivity)
//{
// dXSARGS;
// int RETVAL;
// dXSTARG;
//
// if(items == 1) {
// unsigned int taskid = (int)SvIV(ST(0));
// RETVAL = quest_manager.activespeakactivity(taskid);
// } else {
// Perl_croak(aTHX_ "Usage: activespeakactivity(taskid)");
// }
//
// XSprePUSH; PUSHi((IV)RETVAL);
//
// XSRETURN(1);
//}
//
//XS(XS__activetasksinset);
//XS(XS__activetasksinset)
//{
// dXSARGS;
// int RETVAL;
// dXSTARG;
//
// if(items == 1) {
// unsigned int taskset = (int)SvIV(ST(0));
// RETVAL = quest_manager.activetasksinset(taskset);
// } else {
// Perl_croak(aTHX_ "Usage: activetasksinset(taskset)");
// }
//
// XSprePUSH; PUSHi((IV)RETVAL);
//
// XSRETURN(1);
//}
//
//XS(XS__completedtasksinset);
//XS(XS__completedtasksinset)
//{
// dXSARGS;
// int RETVAL;
// dXSTARG;
//
// if(items == 1) {
// unsigned int taskset = (int)SvIV(ST(0));
// RETVAL = quest_manager.completedtasksinset(taskset);
// } else {
// Perl_croak(aTHX_ "Usage: completedtasksinset(taskset)");
// }
//
// XSprePUSH; PUSHi((IV)RETVAL);
//
// XSRETURN(1);
//}
//
//
//XS(XS__istaskappropriate);
//XS(XS__istaskappropriate)
//{
// dXSARGS;
// bool RETVAL;
// dXSTARG;
//
// if(items == 1) {
// unsigned int task = (int)SvIV(ST(0));
// RETVAL = quest_manager.istaskappropriate(task);
// } else {
// Perl_croak(aTHX_ "Usage: istaskaappropriate(task)");
// }
//
// XSprePUSH; PUSHu((IV)RETVAL);
//
// XSRETURN(1);
//}
//
// XS(XS__popup); // prototype to pass -Wmissing-prototypes
// XS(XS__popup) {
// dXSARGS;
// int popupid = 0;
// int buttons = 0;
// int duration = 0;
//
// if((items < 2) || (items > 5))
// Perl_croak(aTHX_ "Usage: popup(windowtitle, text, popupid, buttons, duration)");
//
// if(items >= 3)
// popupid = (int)SvIV(ST(2));
//
// if(items >= 4)
// buttons = (int)SvIV(ST(3));
//
// if(items == 5)
// duration = (int)SvIV(ST(4));
//
// quest_manager.popup(SvPV_nolen(ST(0)), SvPV_nolen(ST(1)), popupid, buttons, duration);
//
// XSRETURN_EMPTY;
// }
//XS(XS__clearspawntimers);
//XS(XS__clearspawntimers)
//{
// dXSARGS;
// if (items != 0)
// Perl_croak(aTHX_ "Usage: clearspawntimers()");
//
// quest_manager.clearspawntimers();
//
// XSRETURN_EMPTY;
//}
//XS(XS__ze);
//XS(XS__ze)
//{
// dXSARGS;
// if (items != 2)
// Perl_croak(aTHX_ "Usage: ze(type, str)");
//
// int type = (int)SvIV(ST(0));
// char * str = (char *)SvPV_nolen(ST(1));
//
// quest_manager.ze(type, str);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__we);
//XS(XS__we)
//{
// dXSARGS;
// if (items != 2)
// Perl_croak(aTHX_ "Usage: we(type, str)");
//
// int type = (int)SvIV(ST(0));
// char * str = (char *)SvPV_nolen(ST(1));
//
// quest_manager.we(type, str);
//
// XSRETURN_EMPTY;
//}
//XS(XS__getlevel);
//XS(XS__getlevel)
//{
// dXSARGS;
// if (items > 1)
// Perl_croak(aTHX_ "Usage: getlevel(type)");
//
// int RETVAL;
// dXSTARG;
//
// int type;
// if (items == 1)
// type = (int)SvIV(ST(0));
// else
// type = 0;
//
// RETVAL = quest_manager.getlevel(type);
// XSprePUSH; PUSHu((IV)RETVAL);
//
// XSRETURN(1);
//}
//
//XS(XS__CreateGroundObject);
//XS(XS__CreateGroundObject)
//{
// dXSARGS;
// if (items != 5 && items != 6)
// Perl_croak(aTHX_ "Usage: creategroundobject(itemid, x, y, z, heading, [decay_time])");
//
// int itemid = (int)SvIV(ST(0));
// float x = (float)SvNV(ST(1));
// float y = (float)SvNV(ST(2));
// float z = (float)SvNV(ST(3));
// float heading = (float)SvNV(ST(4));
// uint16 id = 0;
//
// if(items == 5)
// id = quest_manager.CreateGroundObject(itemid, x, y, z, heading);
// else{
// uint32 decay_time = (uint32)SvIV(ST(5));
// id = quest_manager.CreateGroundObject(itemid, x, y, z, heading, decay_time);
// }
//
// XSRETURN_IV(id);
//}
//
//XS(XS__CreateGroundObjectFromModel);
//XS(XS__CreateGroundObjectFromModel)
//{
// dXSARGS;
// if (items < 5 || items > 7)
// Perl_croak(aTHX_ "Usage: creategroundobjectfrommodel(modelname, x, y, z, heading, [type], [decay_time])");
//
// char * modelname = (char *)SvPV_nolen(ST(0));
// float x = (float)SvNV(ST(1));
// float y = (float)SvNV(ST(2));
// float z = (float)SvNV(ST(3));
// float heading = (float)SvNV(ST(4));
// uint32 type = 0;
// uint32 decay_time = 0;
// uint16 id = 0;
//
// if (items > 5)
// type = (uint32)SvIV(ST(5));
//
// if (items > 6)
// decay_time = (uint32)SvIV(ST(6));
//
// id = quest_manager.CreateGroundObjectFromModel(modelname, x, y, z, heading, type, decay_time);
// XSRETURN_IV(id);
//}
//
//XS(XS__CreateDoor);
//XS(XS__CreateDoor)
//{
// dXSARGS;
// if (items < 5 || items > 7)
// Perl_croak(aTHX_ "Usage: createdoor(modelname, x, y, z, heading, [type], [size])");
//
// char * modelname = (char *)SvPV_nolen(ST(0));
// float x = (float)SvNV(ST(1));
// float y = (float)SvNV(ST(2));
// float z = (float)SvNV(ST(3));
// float heading = (float)SvNV(ST(4));
// uint32 type = 58;
// uint32 size = 100;
// uint16 id = 0;
//
// if (items > 5)
// type = (uint32)SvIV(ST(5));
//
// if (items > 6)
// size = (uint32)SvIV(ST(6));
//
// id = quest_manager.CreateDoor(modelname, x, y, z, heading, type, size);
// XSRETURN_IV(id);
//}
//
//XS(XS__ModifyNPCStat);
//XS(XS__ModifyNPCStat)
//{
// dXSARGS;
// if (items != 2)
// Perl_croak(aTHX_ "Usage: ModifyNPCStat(identifier, newValue)");
//
// quest_manager.ModifyNPCStat(SvPV_nolen(ST(0)), SvPV_nolen(ST(1)));
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__collectitems);
//XS(XS__collectitems)
//{
// dXSARGS;
// if (items != 2)
// Perl_croak(aTHX_ "Usage: collectitems(item_id, remove?)");
//
// uint32 item_id = (int)SvIV(ST(0));
// bool remove = ((int)SvIV(ST(1))) == 0?false:true;
//
// int quantity =
// quest_manager.collectitems(item_id, remove);
//
// XSRETURN_IV(quantity);
//}
//
//XS(XS__UpdateSpawnTimer);
//XS(XS__UpdateSpawnTimer)
//{
// dXSARGS;
// if (items != 2)
// Perl_croak(aTHX_ "Usage: UpdateSpawnTimer(Spawn2_ID, Updated_Time_Till_Repop)");
//
// uint32 id = (int)SvIV(ST(0));
// uint32 duration = (int)SvIV(ST(1));
//
// quest_manager.UpdateSpawnTimer(id, duration);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__MerchantSetItem);
//XS(XS__MerchantSetItem) {
// dXSARGS;
// if (items != 2 && items != 3)
// Perl_croak(aTHX_ "Usage: MerchantSetItem(NPCid, itemid [, quantity])");
//
// uint32 NPCid = (int)SvUV(ST(0));
// uint32 itemid = (int)SvUV(ST(1));
// uint32 quantity = 0;
// if (items == 3)
// quantity = (int)SvUV(ST(2));
//
// quest_manager.MerchantSetItem(NPCid, itemid, quantity);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__MerchantCountItem);
//XS(XS__MerchantCountItem) {
// dXSARGS;
// if (items != 2)
// Perl_croak(aTHX_ "Usage: MerchantCountItem(NPCid, itemid)");
//
// uint32 NPCid = (int)SvUV(ST(0));
// uint32 itemid = (int)SvUV(ST(1));
// uint32 quantity = quest_manager.MerchantCountItem(NPCid, itemid);
//
// XSRETURN_UV(quantity);
//}
//
//XS(XS__varlink);
//XS(XS__varlink) {
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: varlink(itemID)");
// dXSTARG;
//
// Const_char * RETVAL;
// char text[250];
// uint32 itemID;
// itemID = (int)SvUV(ST(0));
//
// RETVAL = quest_manager.varlink(text, itemID);
//
// sv_setpv(TARG, RETVAL); XSprePUSH; PUSHTARG;
// XSRETURN(1);
//}
//
//XS(XS__CreateInstance);
//XS(XS__CreateInstance) {
// dXSARGS;
// if (items != 3)
// Perl_croak(aTHX_ "Usage: CreateInstance(zone_name, version, duration)");
//
// char * zone = (char *)SvPV_nolen(ST(0));
// uint16 version = (int)SvUV(ST(1));
// uint32 duration = (int)SvUV(ST(2));
// uint32 id = quest_manager.CreateInstance(zone, version, duration);
//
// XSRETURN_UV(id);
//}
//
//XS(XS__DestroyInstance);
//XS(XS__DestroyInstance) {
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: DestroyInstance(id)");
//
// uint16 id = (int)SvUV(ST(0));
// quest_manager.DestroyInstance(id);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__GetInstanceID);
//XS(XS__GetInstanceID) {
// dXSARGS;
// if (items != 2)
// Perl_croak(aTHX_ "Usage: GetInstanceID(zone_name, version)");
//
// char * zone = (char *)SvPV_nolen(ST(0));
// uint16 version = (int)SvUV(ST(1));
// uint16 id = quest_manager.GetInstanceID(zone, version);
//
// XSRETURN_UV(id);
//}
//
//XS(XS__AssignToInstance);
//XS(XS__AssignToInstance) {
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: AssignToInstance(id)");
//
// uint16 id = (int)SvUV(ST(0));
// quest_manager.AssignToInstance(id);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__AssignGroupToInstance);
//XS(XS__AssignGroupToInstance) {
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: AssignGroupToInstance(id)");
//
// uint16 id = (int)SvUV(ST(0));
// quest_manager.AssignGroupToInstance(id);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__AssignRaidToInstance);
//XS(XS__AssignRaidToInstance) {
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: AssignRaidToInstance(id)");
//
// uint16 id = (int)SvUV(ST(0));
// quest_manager.AssignRaidToInstance(id);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__MovePCInstance);
//XS(XS__MovePCInstance)
//{
// dXSARGS;
// if (items != 5 && items != 6)
// Perl_croak(aTHX_ "Usage: MovePCInstance(zone_id, instance_id, x, y, z [,heading])");
//
// int zoneid = (int)SvIV(ST(0));
// int instanceid = (int)SvIV(ST(1));
// float x = (float)SvNV(ST(2));
// float y = (float)SvNV(ST(3));
// float z = (float)SvNV(ST(4));
//
// if (items == 4)
// {
// quest_manager.MovePCInstance(zoneid, instanceid, x, y, z, 0.0f);
// }
// else
// {
// float heading = (float)SvNV(ST(5));
// quest_manager.MovePCInstance(zoneid, instanceid, x, y, z, heading);
// }
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__FlagInstanceByGroupLeader);
//XS(XS__FlagInstanceByGroupLeader) {
// dXSARGS;
// if (items != 2)
// Perl_croak(aTHX_ "Usage: FlagInstanceByGroupLeader(zone, version)");
//
// uint32 zone = (int)SvUV(ST(0));
// uint16 version = (int)SvUV(ST(1));
// quest_manager.FlagInstanceByGroupLeader(zone, version);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__FlagInstanceByRaidLeader);
//XS(XS__FlagInstanceByRaidLeader) {
// dXSARGS;
// if (items != 2)
// Perl_croak(aTHX_ "Usage: FlagInstanceByRaidLeader(zone, version)");
//
// uint32 zone = (int)SvUV(ST(0));
// uint16 version = (int)SvUV(ST(1));
// quest_manager.FlagInstanceByRaidLeader(zone, version);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__saylink);
//XS(XS__saylink) {
// dXSARGS;
// if (items < 1 || items > 3)
// Perl_croak(aTHX_ "Usage: saylink(phrase,[silent?],[linkname])");
// dXSTARG;
//
// Const_char * RETVAL;
// char text[250];
// char text2[250];
// bool silent = false;
// strcpy(text,(char *)SvPV_nolen(ST(0)));
// if(items >= 2) {
// silent = ((int)SvIV(ST(1))) == 0 ? false : true;
// }
// if (items == 3)
// strcpy(text2,(char *)SvPV_nolen(ST(2)));
// else
// strcpy(text2,text);
//
// RETVAL = quest_manager.saylink(text, silent, text2);
// sv_setpv(TARG, RETVAL); XSprePUSH; PUSHTARG;
// XSRETURN(1);
//}
//
//XS(XS__getguildnamebyid);
//XS(XS__getguildnamebyid) {
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: getguildnamebyid(guild_id)");
// dXSTARG;
//
// Const_char * RETVAL;
// uint32 guild_id = (int)SvUV(ST(0));
//
// RETVAL = quest_manager.getguildnamebyid(guild_id);
//
// sv_setpv(TARG, RETVAL); XSprePUSH; PUSHTARG;
// XSRETURN(1);
//}
//
//XS(XS__SetRunning);
//XS(XS__SetRunning)
//{
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: SetRunning(val)");
//
// bool val = ((int)SvIV(ST(0))) == 0?false:true;
//
// quest_manager.SetRunning(val);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__IsRunning);
//XS(XS__IsRunning)
//{
// dXSARGS;
// if (items >= 1)
// Perl_croak(aTHX_ "Usage: IsRunning()");
//
// bool RETVAL;
// dXSTARG;
//
//
// RETVAL = quest_manager.IsRunning();
// XSprePUSH; PUSHu((IV)RETVAL);
//
// XSRETURN(1);
//}
//
//XS(XS__IsEffectInSpell);
//XS(XS__IsEffectInSpell)
//{
// dXSARGS;
// if (items != 2)
// Perl_croak(aTHX_ "Usage: IsEffectInSpell(spell_id, effect_id)");
//
// uint32 spell_id = (uint32)SvUV(ST(0));
// uint32 effect_id = (uint32)SvUV(ST(1));
// bool RETVAL;
// dXSTARG;
//
//
// RETVAL = IsEffectInSpell(spell_id, effect_id);
// XSprePUSH; PUSHu((IV)RETVAL);
//
// XSRETURN(1);
//}
//
//XS(XS__IsBeneficialSpell);
//XS(XS__IsBeneficialSpell)
//{
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: IsBeneficialSpell(spell_id)");
//
// uint32 spell_id = (uint32)SvUV(ST(0));
// bool RETVAL;
// dXSTARG;
//
//
// RETVAL = BeneficialSpell(spell_id);
// XSprePUSH; PUSHu((IV)RETVAL);
//
// XSRETURN(1);
//}
//
//XS(XS__GetSpellResistType);
//XS(XS__GetSpellResistType)
//{
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: GetSpellResistType(spell_id)");
//
// uint32 spell_id = (uint32)SvUV(ST(0));
// int32 spell_val = 0;
// dXSTARG;
//
// spell_val = GetSpellResistType(spell_id);
// XSRETURN_UV(spell_val);
//}
//
//XS(XS__GetSpellTargetType);
//XS(XS__GetSpellTargetType)
//{
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: GetSpellTargetType(spell_id)");
//
// uint32 spell_id = (uint32)SvUV(ST(0));
// int32 spell_val = 0;
// dXSTARG;
//
// spell_val = GetSpellTargetType(spell_id);
// XSRETURN_UV(spell_val);
//}
//
//XS(XS__FlyMode);
//XS(XS__FlyMode) {
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: FlyMode([0/1/2])");
//
// uint8 flymode = (int)SvUV(ST(0));
// quest_manager.FlyMode(flymode);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS_FactionValue);
//XS(XS_FactionValue) {
// dXSARGS;
// if (items != 0)
// Perl_croak(aTHX_ "Usage: factionvalue()");
//
// uint8 fac = quest_manager.FactionValue();
// XSRETURN_UV(fac);
//}
//
//XS(XS__enabletitle);
//XS(XS__enabletitle)
//{
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: enabletitle(titleset)");
//
// int titleset = (int)SvIV(ST(0));
//
// quest_manager.enabletitle(titleset);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__checktitle);
//XS(XS__checktitle)
//{
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: checktitle(titleset)");
//
// bool RETVAL;
// int titleset = (int)SvIV(ST(0));
//
// RETVAL = quest_manager.checktitle(titleset);
//
// ST(0) = boolSV(RETVAL);
// sv_2mortal(ST(0));
// XSRETURN(1);
//}
//
//XS(XS__removetitle);
//XS(XS__removetitle)
//{
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: removetitle(titleset)");
//
// int titleset = (int)SvIV(ST(0));
//
// quest_manager.removetitle(titleset);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__wearchange);
//XS(XS__wearchange)
//{
// dXSARGS;
// if (items != 2)
// Perl_croak(aTHX_ "Usage: wearchange(slot, texture)");
//
// uint8 slot = (int)SvUV(ST(0));
// uint16 texture = (int)SvUV(ST(1));
//
// quest_manager.wearchange(slot, texture);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__voicetell);
//XS(XS__voicetell)
//{
// dXSARGS;
// if (items != 4)
// Perl_croak(aTHX_ "Usage: voicetell(clientname, type, race, gender)");
//
// char * str = (char *)SvPV_nolen(ST(0));
// int macronum = (int)SvIV(ST(1));
// int racenum = (int)SvIV(ST(2));
// int gendernum = (int)SvIV(ST(3));
//
// quest_manager.voicetell(str, macronum, racenum, gendernum);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__LearnRecipe);
//XS(XS__LearnRecipe)
//{
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: LearnRecipe(recipe_id)");
//
// uint32 recipe_id = (uint32)SvIV(ST(0));
//
// quest_manager.LearnRecipe(recipe_id);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__SendMail);
//XS(XS__SendMail)
//{
// dXSARGS;
// if (items != 4)
// Perl_croak(aTHX_ "Usage: SendMail(to, from, subject, message)");
//
// char *to = (char *)SvPV_nolen(ST(0));
// char *from = (char *)SvPV_nolen(ST(1));
// char *subject = (char *)SvPV_nolen(ST(2));
// char *message = (char *)SvPV_nolen(ST(3));
//
// quest_manager.SendMail(to, from, subject, message);
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__GetZoneID);
//XS(XS__GetZoneID)
//{
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: GetZoneID(zone)");
//
// char *zone = (char *)SvPV_nolen(ST(0));
// int32 id = quest_manager.GetZoneID(zone);
//
// XSRETURN_IV(id);
//}
//
//XS(XS__GetZoneLongName);
//XS(XS__GetZoneLongName)
//{
// dXSARGS;
// if (items != 1)
// Perl_croak(aTHX_ "Usage: GetZoneLongName(zone)");
// dXSTARG;
// char *zone = (char *)SvPV_nolen(ST(0));
// Const_char* RETVAL = quest_manager.GetZoneLongName(zone);
//
// sv_setpv(TARG, RETVAL); XSprePUSH; PUSHTARG;
// XSRETURN(1);
//}
//
//XS(XS__GetTimeSeconds);
//XS(XS__GetTimeSeconds)
//{
// dXSARGS;
// if (items != 0)
// Perl_croak(aTHX_ "Usage: GetTimeSeconds()");
//
// uint32 seconds = 0;
// dXSTARG;
//
// seconds = Timer::GetTimeSeconds();
// XSRETURN_UV(seconds);
//}
//
//XS(XS__handleturnin); // prototype to pass -Wmissing-prototypes
//XS(XS__handleturnin) {
// dXSARGS;
//
// if (items != 2)
// Perl_croak(aTHX_ "Usage: handleturnin(itemid, itemcharges)");
// int itemid = (int)SvIV(ST(0));
// int charges = (int)SvIV(ST(1));
//
// bool returnVal = quest_manager.TurnInItem(itemid,charges);
//
// ST(0) = boolSV(returnVal);
// sv_2mortal(ST(0));
// XSRETURN(1);
//}
//
//XS(XS__completehandin); // prototype to pass -Wmissing-prototypes
//XS(XS__completehandin) {
// dXSARGS;
//
// if (items != 0)
// Perl_croak(aTHX_ "Usage: completehandin()");
//
// quest_manager.CompleteHandIn();
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__resethandin); // prototype to pass -Wmissing-prototypes
//XS(XS__resethandin) {
// dXSARGS;
//
// if (items != 0)
// Perl_croak(aTHX_ "Usage: resethandin()");
//
// quest_manager.ResetHandIn();
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__clearhandin); // prototype to pass -Wmissing-prototypes
//XS(XS__clearhandin) {
// dXSARGS;
//
// if (items != 0)
// Perl_croak(aTHX_ "Usage: clearhandin()");
//
// quest_manager.ClearHandIn();
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__crosszonesignalclientbycharid);
//XS(XS__crosszonesignalclientbycharid)
//{
// dXSARGS;
//
// if (items != 2)
// Perl_croak(aTHX_ "Usage: crosszonesignalclientbycharid(char_id, data)");
//
// if (items == 2) {
// int char_id = (int)SvIV(ST(0));
// uint32 data = (uint32)SvIV(ST(1));
// quest_manager.CrossZoneSignalPlayerByCharID(char_id, data);
// } else {
// Perl_croak(aTHX_ "Usage: crosszonesignalclientbycharid(char_id, data)");
// }
//
// XSRETURN_EMPTY;
//}
//
//XS(XS__crosszonesignalclientbyname);
//XS(XS__crosszonesignalclientbyname)
//{
// dXSARGS;
//
// if (items != 2)
// Perl_croak(aTHX_ "Usage: crosszonesignalclientbycharid(Name, data)");
//
// if (items == 2) {
// char *Name = (char *)SvPV_nolen(ST(0));
// uint32 data = (uint32)SvIV(ST(1));
// quest_manager.CrossZoneSignalPlayerByName(Name, data);
// } else {
// Perl_croak(aTHX_ "Usage: crosszonesignalclientbycharid(Name, data)");
// }
//
// XSRETURN_EMPTY;
//}
//
//
//XS(XS__crosszonemessageplayerbyname);
//XS(XS__crosszonemessageplayerbyname)
//{
// dXSARGS;
//
// if (items != 3)
// Perl_croak(aTHX_ "Usage: crosszonemessageplayerbyname(Type, Name, Message)");
//
// if (items == 3) {
// uint32 Type = (uint32)SvIV(ST(0));
// char *Name = (char *)SvPV_nolen(ST(1));
// char *Message = (char *)SvPV_nolen(ST(2));
// quest_manager.CrossZoneMessagePlayerByName(Type, Name, Message);
// } else {
// Perl_croak(aTHX_ "Usage: crosszonemessageplayerbyname(Type, Name, Message)");
// }
//
// XSRETURN_EMPTY;
//}
//
///*
//This is the callback perl will look for to setup the
//quest package's XSUBs
//*/
//EXTERN_C XS(boot_quest); // prototype to pass -Wmissing-prototypes
//EXTERN_C XS(boot_quest)
//{
// dXSARGS;
// char file[256];
// strncpy(file, __FILE__, 256);
// file[255] = '\0';
//
// if(items != 1)
// LogFile->write(EQEMuLog::Error, "boot_quest does not take any arguments.");
//
// char buf[128]; //shouldent have any function names longer than this.
//
// //add the strcpy stuff to get rid of const warnings....
//
// XS_VERSION_BOOTCHECK ;
// newXS(strcpy(buf, "echo"), XS__echo, file);
// newXS(strcpy(buf, "say"), XS__say, file);
// newXS(strcpy(buf, "me"), XS__me, file);
// newXS(strcpy(buf, "summonitem"), XS__summonitem, file);
// newXS(strcpy(buf, "write"), XS__write, file);
// newXS(strcpy(buf, "spawn"), XS__spawn, file);
// newXS(strcpy(buf, "spawn2"), XS__spawn2, file);
// newXS(strcpy(buf, "unique_spawn"), XS__unique_spawn, file);
// newXS(strcpy(buf, "spawn_from_spawn2"), XS__spawn_from_spawn2, file);
// newXS(strcpy(buf, "enable_spawn2"), XS__enable_spawn2, file);
// newXS(strcpy(buf, "disable_spawn2"), XS__disable_spawn2, file);
// newXS(strcpy(buf, "setstat"), XS__setstat, file);
// newXS(strcpy(buf, "incstat"), XS__incstat, file);
// newXS(strcpy(buf, "castspell"), XS__castspell, file);
// newXS(strcpy(buf, "selfcast"), XS__selfcast, file);
// newXS(strcpy(buf, "addloot"), XS__addloot, file);
// newXS(strcpy(buf, "zone"), XS__zone, file);
// newXS(strcpy(buf, "settimer"), XS__settimer, file);
// newXS(strcpy(buf, "settimerMS"), XS__settimerMS, file);
// newXS(strcpy(buf, "stoptimer"), XS__stoptimer, file);
// newXS(strcpy(buf, "stopalltimers"), XS__stopalltimers, file);
// newXS(strcpy(buf, "emote"), XS__emote, file);
// newXS(strcpy(buf, "shout"), XS__shout, file);
// newXS(strcpy(buf, "shout2"), XS__shout2, file);
// newXS(strcpy(buf, "gmsay"), XS__gmsay, file);
// newXS(strcpy(buf, "depop"), XS__depop, file);
// newXS(strcpy(buf, "depop_withtimer"), XS__depop_withtimer, file);
// newXS(strcpy(buf, "settarget"), XS__settarget, file);
// newXS(strcpy(buf, "follow"), XS__follow, file);
// newXS(strcpy(buf, "sfollow"), XS__sfollow, file);
// newXS(strcpy(buf, "changedeity"), XS__changedeity, file);
// newXS(strcpy(buf, "exp"), XS__exp, file);
// newXS(strcpy(buf, "level"), XS__level, file);
// newXS(strcpy(buf, "traindisc"), XS__traindisc, file);
// newXS(strcpy(buf, "isdisctome"), XS__isdisctome, file);
// newXS(strcpy(buf, "safemove"), XS__safemove, file);
// newXS(strcpy(buf, "rain"), XS__rain, file);
// newXS(strcpy(buf, "snow"), XS__snow, file);
// newXS(strcpy(buf, "surname"), XS__surname, file);
// newXS(strcpy(buf, "permaclass"), XS__permaclass, file);
// newXS(strcpy(buf, "permarace"), XS__permarace, file);
// newXS(strcpy(buf, "permagender"), XS__permagender, file);
// newXS(strcpy(buf, "scribespells"), XS__scribespells, file);
// newXS(strcpy(buf, "traindiscs"), XS__traindiscs, file);
// newXS(strcpy(buf, "unscribespells"), XS__unscribespells, file);
// newXS(strcpy(buf, "untraindiscs"), XS__untraindiscs, file);
// newXS(strcpy(buf, "givecash"), XS__givecash, file);
// newXS(strcpy(buf, "pvp"), XS__pvp, file);
// newXS(strcpy(buf, "movepc"), XS__movepc, file);
// newXS(strcpy(buf, "gmmove"), XS__gmmove, file);
// newXS(strcpy(buf, "movegrp"), XS__movegrp, file);
// newXS(strcpy(buf, "doanim"), XS__doanim, file);
// newXS(strcpy(buf, "addskill"), XS__addskill, file);
// newXS(strcpy(buf, "setlanguage"), XS__setlanguage, file);
// newXS(strcpy(buf, "setskill"), XS__setskill, file);
// newXS(strcpy(buf, "setallskill"), XS__setallskill, file);
// newXS(strcpy(buf, "attack"), XS__attack, file);
// newXS(strcpy(buf, "attacknpc"), XS__attacknpc, file);
// newXS(strcpy(buf, "attacknpctype"), XS__attacknpctype, file);
// newXS(strcpy(buf, "save"), XS__save, file);
// newXS(strcpy(buf, "faction"), XS__faction, file);
// newXS(strcpy(buf, "setsky"), XS__setsky, file);
// newXS(strcpy(buf, "setguild"), XS__setguild, file);
// newXS(strcpy(buf, "createguild"), XS__createguild, file);
// newXS(strcpy(buf, "settime"), XS__settime, file);
// newXS(strcpy(buf, "itemlink"), XS__itemlink, file);
// newXS(strcpy(buf, "signal"), XS__signal, file);
// newXS(strcpy(buf, "signalwith"), XS__signalwith, file);
// newXS(strcpy(buf, "setglobal"), XS__setglobal, file);
// newXS(strcpy(buf, "targlobal"), XS__targlobal, file);
// newXS(strcpy(buf, "delglobal"), XS__delglobal, file);
// newXS(strcpy(buf, "ding"), XS__ding, file);
// newXS(strcpy(buf, "rebind"), XS__rebind, file);
// newXS(strcpy(buf, "start"), XS__start, file);
// newXS(strcpy(buf, "stop"), XS__stop, file);
// newXS(strcpy(buf, "pause"), XS__pause, file);
// newXS(strcpy(buf, "moveto"), XS__moveto, file);
// newXS(strcpy(buf, "resume"), XS__resume, file);
// newXS(strcpy(buf, "addldonpoints"), XS__addldonpoints, file);
// newXS(strcpy(buf, "addldonwin"), XS__addldonpoints, file);
// newXS(strcpy(buf, "addldonloss"), XS__addldonpoints, file);
// newXS(strcpy(buf, "setnexthpevent"), XS__setnexthpevent, file);
// newXS(strcpy(buf, "setnextinchpevent"), XS__setnextinchpevent, file);
// newXS(strcpy(buf, "sethp"), XS__sethp, file);
// newXS(strcpy(buf, "respawn"), XS__respawn, file);
// newXS(strcpy(buf, "getItemName"), XS_qc_getItemName, file);
// newXS(strcpy(buf, "ChooseRandom"), XS__ChooseRandom, file);
// newXS(strcpy(buf, "set_proximity"), XS__set_proximity, file);
// newXS(strcpy(buf, "clear_proximity"), XS__clear_proximity, file);
// newXS(strcpy(buf, "setanim"), XS__setanim, file);
// newXS(strcpy(buf, "showgrid"), XS__showgrid, file);
// newXS(strcpy(buf, "showpath"), XS__showpath, file);
// newXS(strcpy(buf, "pathto"), XS__pathto, file);
// newXS(strcpy(buf, "spawn_condition"), XS__spawn_condition, file);
// newXS(strcpy(buf, "get_spawn_condition"), XS__get_spawn_condition, file);
// newXS(strcpy(buf, "toggle_spawn_event"), XS__toggle_spawn_event, file);
// newXS(strcpy(buf, "has_zone_flag"), XS__has_zone_flag, file);
// newXS(strcpy(buf, "set_zone_flag"), XS__set_zone_flag, file);
// newXS(strcpy(buf, "clear_zone_flag"), XS__clear_zone_flag, file);
// newXS(strcpy(buf, "summonburriedplayercorpse"), XS__summonburriedplayercorpse, file);
// newXS(strcpy(buf, "summonallplayercorpses"), XS__summonallplayercorpses, file);
// newXS(strcpy(buf, "getplayerburriedcorpsecount"), XS__getplayerburriedcorpsecount, file);
// newXS(strcpy(buf, "buryplayercorpse"), XS__buryplayercorpse, file);
// newXS(strcpy(buf, "forcedooropen"), XS__forcedooropen, file);
// newXS(strcpy(buf, "forcedoorclose"), XS__forcedoorclose, file);
// newXS(strcpy(buf, "toggledoorstate"), XS__toggledoorstate, file);
// newXS(strcpy(buf, "isdooropen"), XS__isdooropen, file);
// newXS(strcpy(buf, "depopall"), XS__depopall, file);
// newXS(strcpy(buf, "depopzone"), XS__depopzone, file);
// newXS(strcpy(buf, "repopzone"), XS__repopzone, file);
// newXS(strcpy(buf, "npcrace"), XS__npcrace, file);
// newXS(strcpy(buf, "npcgender"), XS__npcgender, file);
// newXS(strcpy(buf, "npcsize"), XS__npcsize, file);
// newXS(strcpy(buf, "npctexture"), XS__npctexture, file);
// newXS(strcpy(buf, "playerrace"), XS__playerrace, file);
// newXS(strcpy(buf, "playergender"), XS__playergender, file);
// newXS(strcpy(buf, "playersize"), XS__playersize, file);
// newXS(strcpy(buf, "playertexture"), XS__playertexture, file);
// newXS(strcpy(buf, "playerfeature"), XS__playerfeature, file);
// newXS(strcpy(buf, "npcfeature"), XS__npcfeature, file);
//
//#ifdef BOTS
// newXS(strcpy(buf, "botquest"), XS__botquest, file);
// newXS(strcpy(buf, "spawnbotcount"), XS__spawnbotcount, file);
// newXS(strcpy(buf, "createbotcount"), XS__createbotcount, file);
// newXS(strcpy(buf, "createBot"), XS__createBot, file);
//#endif //BOTS
//
// newXS(strcpy(buf, "taskselector"), XS__taskselector, file);
// newXS(strcpy(buf, "tasksetselector"), XS__tasksetselector, file);
// newXS(strcpy(buf, "enabletask"), XS__enabletask, file);
// newXS(strcpy(buf, "disabletask"), XS__disabletask, file);
// newXS(strcpy(buf, "istaskenabled"), XS__istaskenabled, file);
// newXS(strcpy(buf, "istaskactive"), XS__istaskactive, file);
// newXS(strcpy(buf, "istaskactivityactive"), XS__istaskactivityactive, file);
// newXS(strcpy(buf, "gettaskactivitydonecount"), XS__gettaskactivitydonecount, file);
// newXS(strcpy(buf, "updatetaskactivity"), XS__updatetaskactivity, file);
// newXS(strcpy(buf, "resettaskactivity"), XS__resettaskactivity, file);
// newXS(strcpy(buf, "taskexploredarea"), XS__taskexploredarea, file);
// newXS(strcpy(buf, "assigntask"), XS__assigntask, file);
// newXS(strcpy(buf, "failtask"), XS__failtask, file);
// newXS(strcpy(buf, "tasktimeleft"), XS__tasktimeleft, file);
// newXS(strcpy(buf, "istaskcompleted"), XS__istaskcompleted, file);
// newXS(strcpy(buf, "enabledtaskcount"), XS__enabledtaskcount, file);
// newXS(strcpy(buf, "firsttaskinset"), XS__firsttaskinset, file);
// newXS(strcpy(buf, "lasttaskinset"), XS__lasttaskinset, file);
// newXS(strcpy(buf, "nexttaskinset"), XS__nexttaskinset, file);
// newXS(strcpy(buf, "activespeaktask"), XS__activespeaktask, file);
// newXS(strcpy(buf, "activespeakactivity"), XS__activespeakactivity, file);
// newXS(strcpy(buf, "activetasksinset"), XS__activetasksinset, file);
// newXS(strcpy(buf, "completedtasksinset"), XS__completedtasksinset, file);
// newXS(strcpy(buf, "istaskappropriate"), XS__istaskappropriate, file);
// newXS(strcpy(buf, "popup"), XS__popup, file);
// newXS(strcpy(buf, "clearspawntimers"), XS__clearspawntimers, file);
// newXS(strcpy(buf, "ze"), XS__ze, file);
// newXS(strcpy(buf, "we"), XS__we, file);
// newXS(strcpy(buf, "getlevel"), XS__getlevel, file);
// newXS(strcpy(buf, "creategroundobject"), XS__CreateGroundObject, file);
// newXS(strcpy(buf, "creategroundobjectfrommodel"), XS__CreateGroundObjectFromModel, file);
// newXS(strcpy(buf, "createdoor"), XS__CreateDoor, file);
// newXS(strcpy(buf, "modifynpcstat"), XS__ModifyNPCStat, file);
// newXS(strcpy(buf, "collectitems"), XS__collectitems, file);
// newXS(strcpy(buf, "updatespawntimer"), XS__UpdateSpawnTimer, file);
// newXS(strcpy(buf, "MerchantSetItem"), XS__MerchantSetItem, file);
// newXS(strcpy(buf, "MerchantCountItem"), XS__MerchantCountItem, file);
// newXS(strcpy(buf, "varlink"), XS__varlink, file);
// newXS(strcpy(buf, "saylink"), XS__saylink, file);
// newXS(strcpy(buf, "getguildnamebyid"), XS__getguildnamebyid, file);
// newXS(strcpy(buf, "CreateInstance"), XS__CreateInstance, file);
// newXS(strcpy(buf, "DestroyInstance"), XS__DestroyInstance, file);
// newXS(strcpy(buf, "GetInstanceID"), XS__GetInstanceID, file);
// newXS(strcpy(buf, "AssignToInstance"), XS__AssignToInstance, file);
// newXS(strcpy(buf, "AssignGroupToInstance"), XS__AssignGroupToInstance, file);
// newXS(strcpy(buf, "AssignRaidToInstance"), XS__AssignRaidToInstance, file);
// newXS(strcpy(buf, "MovePCInstance"), XS__MovePCInstance, file);
// newXS(strcpy(buf, "FlagInstanceByGroupLeader"), XS__FlagInstanceByGroupLeader, file);
// newXS(strcpy(buf, "FlagInstanceByRaidLeader"), XS__FlagInstanceByRaidLeader, file);
// newXS(strcpy(buf, "SetRunning"), XS__SetRunning, file);
// newXS(strcpy(buf, "IsRunning"), XS__IsRunning, file);
// newXS(strcpy(buf, "IsEffectInSpell"), XS__IsEffectInSpell, file);
// newXS(strcpy(buf, "IsBeneficialSpell"), XS__IsBeneficialSpell, file);
// newXS(strcpy(buf, "GetSpellResistType"), XS__GetSpellResistType, file);
// newXS(strcpy(buf, "GetSpellTargetType"), XS__GetSpellTargetType, file);
// newXS(strcpy(buf, "FlyMode"), XS__FlyMode, file);
// newXS(strcpy(buf, "factionvalue"), XS_FactionValue, file);
// newXS(strcpy(buf, "checktitle"), XS__checktitle, file);
// newXS(strcpy(buf, "enabletitle"), XS__enabletitle, file);
// newXS(strcpy(buf, "removetitle"), XS__removetitle, file);
// newXS(strcpy(buf, "wearchange"), XS__wearchange, file);
// newXS(strcpy(buf, "voicetell"), XS__voicetell, file);
// newXS(strcpy(buf, "LearnRecipe"), XS__LearnRecipe, file);
// newXS(strcpy(buf, "SendMail"), XS__SendMail, file);
// newXS(strcpy(buf, "GetZoneID"), XS__GetZoneID, file);
// newXS(strcpy(buf, "GetZoneLongName"), XS__GetZoneLongName, file);
// newXS(strcpy(buf, "GetTimeSeconds"), XS__GetTimeSeconds, file);
// newXS(strcpy(buf, "handleturnin"), XS__handleturnin, file);
// newXS(strcpy(buf, "completehandin"), XS__completehandin, file);
// newXS(strcpy(buf, "resethandin"), XS__resethandin, file);
// newXS(strcpy(buf, "clearhandin"), XS__clearhandin, file);
// newXS(strcpy(buf, "crosszonesignalclientbycharid"), XS__crosszonesignalclientbycharid, file);
// newXS(strcpy(buf, "crosszonesignalclientbyname"), XS__crosszonesignalclientbyname, file);
// newXS(strcpy(buf, "crosszonemessageplayerbyname"), XS__crosszonemessageplayerbyname, file);
// XSRETURN_YES;
//}
//
//#endif
//#endif