diff --git a/utils/scripts/eqemu_server.pl b/utils/scripts/eqemu_server.pl index de46a8bb0..f1a179ffc 100644 --- a/utils/scripts/eqemu_server.pl +++ b/utils/scripts/eqemu_server.pl @@ -1393,11 +1393,13 @@ sub fetch_latest_windows_binaries { } sub fetch_latest_windows_binaries_bots { - print "[Update] Fetching Latest Windows Binaries with Bots...\n"; - get_remote_file($install_repository_request_url . "master_windows_build_bots.zip", "updates_staged/master_windows_build_bots.zip", 1); + print "[Update] Fetching Latest Windows Binaries (unstable) with Bots...\n"; + get_remote_file("https://ci.appveyor.com/api/projects/KimLS/server/artifacts/eqemu-x86-bots.zip", "updates_staged/eqemu-x86-bots.zip", 1); + #::: old repository kept for reference until no issues reported + #::: get_remote_file($install_repository_request_url . "master_windows_build_bots.zip", "updates_staged/master_windows_build_bots.zip", 1); print "[Update] Fetched Latest Windows Binaries with Bots...\n"; print "[Update] Extracting...\n"; - unzip('updates_staged/master_windows_build_bots.zip', 'updates_staged/binaries/'); + unzip('updates_staged/eqemu-x86-bots.zip', 'updates_staged/binaries/'); my @files; my $start_dir = "updates_staged/binaries"; find( diff --git a/utils/sql/system_tables.txt b/utils/sql/system_tables.txt index a6bcfe81b..f2d9f7529 100644 --- a/utils/sql/system_tables.txt +++ b/utils/sql/system_tables.txt @@ -23,6 +23,7 @@ data_buckets db_str doors eqtime +faction_base_data faction_list faction_list_mod fear_hints diff --git a/zone/client.h b/zone/client.h index f14c7d692..a790dfbe0 100644 --- a/zone/client.h +++ b/zone/client.h @@ -791,7 +791,9 @@ public: uint32 GetCharMaxLevelFromQGlobal(); uint32 GetCharMaxLevelFromBucket(); + inline bool IsStanding() const {return (playeraction == 0);} inline bool IsSitting() const {return (playeraction == 1);} + inline bool IsCrouching() const {return (playeraction == 2);} inline bool IsBecomeNPC() const { return npcflag; } inline uint8 GetBecomeNPCLevel() const { return npclevel; } inline void SetBecomeNPC(bool flag) { npcflag = flag; } diff --git a/zone/inventory.cpp b/zone/inventory.cpp index 9c802b5a3..e86610697 100644 --- a/zone/inventory.cpp +++ b/zone/inventory.cpp @@ -972,8 +972,8 @@ void Client::DeleteItemInInventory(int16 slot_id, int8 quantity, bool client_upd safe_delete(outapp); } else { - outapp = new EQApplicationPacket(OP_MoveItem, sizeof(MoveItem_Struct)); - MoveItem_Struct* delitem = (MoveItem_Struct*)outapp->pBuffer; + outapp = new EQApplicationPacket(OP_DeleteItem, sizeof(DeleteItem_Struct)); + DeleteItem_Struct* delitem = (DeleteItem_Struct*)outapp->pBuffer; delitem->from_slot = slot_id; delitem->to_slot = 0xFFFFFFFF; delitem->number_in_stack = 0xFFFFFFFF; diff --git a/zone/lua_client.cpp b/zone/lua_client.cpp index a8991f97a..fc89db7d9 100644 --- a/zone/lua_client.cpp +++ b/zone/lua_client.cpp @@ -615,11 +615,21 @@ void Lua_Client::UntrainDiscAll(bool update_client) { self->UntrainDiscAll(update_client); } +bool Lua_Client::IsStanding() { + Lua_Safe_Call_Bool(); + return self->IsStanding(); +} + bool Lua_Client::IsSitting() { Lua_Safe_Call_Bool(); return self->IsSitting(); } +bool Lua_Client::IsCrouching() { + Lua_Safe_Call_Bool(); + return self->IsCrouching(); +} + void Lua_Client::SetFeigned(bool v) { Lua_Safe_Call_Void(); self->SetFeigned(v); @@ -1621,7 +1631,9 @@ luabind::scope lua_register_client() { .def("UntrainDisc", (void(Lua_Client::*)(int,bool))&Lua_Client::UntrainDisc) .def("UntrainDiscAll", (void(Lua_Client::*)(void))&Lua_Client::UntrainDiscAll) .def("UntrainDiscAll", (void(Lua_Client::*)(bool))&Lua_Client::UntrainDiscAll) + .def("IsStanding", (bool(Lua_Client::*)(void))&Lua_Client::IsStanding) .def("IsSitting", (bool(Lua_Client::*)(void))&Lua_Client::IsSitting) + .def("IsCrouching", (bool(Lua_Client::*)(void))&Lua_Client::IsCrouching) .def("SetFeigned", (void(Lua_Client::*)(bool))&Lua_Client::SetFeigned) .def("GetFeigned", (bool(Lua_Client::*)(void))&Lua_Client::GetFeigned) .def("AutoSplitEnabled", (bool(Lua_Client::*)(void))&Lua_Client::AutoSplitEnabled) diff --git a/zone/lua_client.h b/zone/lua_client.h index 715ea141d..95d6a0f55 100644 --- a/zone/lua_client.h +++ b/zone/lua_client.h @@ -148,7 +148,9 @@ public: void UntrainDisc(int slot, bool update_client); void UntrainDiscAll(); void UntrainDiscAll(bool update_client); + bool IsStanding(); bool IsSitting(); + bool IsCrouching(); void SetFeigned(bool v); bool GetFeigned(); bool AutoSplitEnabled(); diff --git a/zone/perl_client.cpp b/zone/perl_client.cpp index fcdeca352..9c0ae4200 100644 --- a/zone/perl_client.cpp +++ b/zone/perl_client.cpp @@ -2596,6 +2596,32 @@ XS(XS_Client_UntrainDiscAll) { XSRETURN_EMPTY; } +XS(XS_Client_IsStanding); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Client_IsStanding) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Client::IsStanding(THIS)"); + { + Client * THIS; + bool RETVAL; + + if (sv_derived_from(ST(0), "Client")) { + IV tmp = SvIV((SV*)SvRV(ST(0))); + THIS = INT2PTR(Client *,tmp); + } + else + Perl_croak(aTHX_ "THIS is not of type Client"); + if(THIS == nullptr) + Perl_croak(aTHX_ "THIS is nullptr, avoiding crash."); + + RETVAL = THIS->IsStanding(); + ST(0) = boolSV(RETVAL); + sv_2mortal(ST(0)); + } + XSRETURN(1); +} + XS(XS_Client_IsSitting); /* prototype to pass -Wmissing-prototypes */ XS(XS_Client_IsSitting) { dXSARGS; @@ -2620,6 +2646,32 @@ XS(XS_Client_IsSitting) { XSRETURN(1); } +XS(XS_Client_IsCrouching); /* prototype to pass -Wmissing-prototypes */ +XS(XS_Client_IsCrouching) +{ + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: Client::IsCrouching(THIS)"); + { + Client * THIS; + bool RETVAL; + + if (sv_derived_from(ST(0), "Client")) { + IV tmp = SvIV((SV*)SvRV(ST(0))); + THIS = INT2PTR(Client *,tmp); + } + else + Perl_croak(aTHX_ "THIS is not of type Client"); + if(THIS == nullptr) + Perl_croak(aTHX_ "THIS is nullptr, avoiding crash."); + + RETVAL = THIS->IsCrouching(); + ST(0) = boolSV(RETVAL); + sv_2mortal(ST(0)); + } + XSRETURN(1); +} + XS(XS_Client_IsBecomeNPC); /* prototype to pass -Wmissing-prototypes */ XS(XS_Client_IsBecomeNPC) { dXSARGS; @@ -6338,7 +6390,9 @@ XS(boot_Client) { newXSproto(strcpy(buf, "IsLD"), XS_Client_IsLD, file, "$"); newXSproto(strcpy(buf, "IsMedding"), XS_Client_IsMedding, file, "$"); newXSproto(strcpy(buf, "IsRaidGrouped"), XS_Client_IsRaidGrouped, file, "$"); + newXSproto(strcpy(buf, "IsStanding"), XS_Client_IsStanding, file, "$"); newXSproto(strcpy(buf, "IsSitting"), XS_Client_IsSitting, file, "$"); + newXSproto(strcpy(buf, "IsCrouching"), XS_Client_IsCrouching, file, "$"); newXSproto(strcpy(buf, "IsTaskActive"), XS_Client_IsTaskActive, file, "$$"); newXSproto(strcpy(buf, "IsTaskActivityActive"), XS_Client_IsTaskActivityActive, file, "$$$"); newXSproto(strcpy(buf, "IsTaskCompleted"), XS_Client_IsTaskCompleted, file, "$$");