From a82f5f8bf661315778bc6080b3fa657386640f63 Mon Sep 17 00:00:00 2001 From: Akkadius Date: Mon, 28 Mar 2016 21:13:37 -0500 Subject: [PATCH] Allow heroforge textures to be manipulated via perl --- zone/embparser_api.cpp | 15 ++++++++++++--- zone/questmgr.cpp | 4 ++-- zone/questmgr.h | 2 +- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/zone/embparser_api.cpp b/zone/embparser_api.cpp index bf43e43a1..804d7cbab 100644 --- a/zone/embparser_api.cpp +++ b/zone/embparser_api.cpp @@ -3317,13 +3317,22 @@ XS(XS__wearchange); XS(XS__wearchange) { dXSARGS; - if (items != 2) - Perl_croak(aTHX_ "Usage: wearchange(slot, texture)"); + if (items < 4) + Perl_croak(aTHX_ "Usage: wearchange(slot, texture, [hero_forge_model], [elite_material])"); uint8 slot = (int)SvUV(ST(0)); uint16 texture = (int)SvUV(ST(1)); - quest_manager.wearchange(slot, texture); + uint32 hero_forge_model = 0; + uint32 elite_material = 0; + + if (items > 2) + hero_forge_model = (int)SvUV(ST(2)); + + if (items > 3) + elite_material = (int)SvUV(ST(3)); + + quest_manager.wearchange(slot, texture, hero_forge_model, elite_material); XSRETURN_EMPTY; } diff --git a/zone/questmgr.cpp b/zone/questmgr.cpp index b16613e75..dc5e3136f 100644 --- a/zone/questmgr.cpp +++ b/zone/questmgr.cpp @@ -2881,11 +2881,11 @@ void QuestManager::removetitle(int titleset) { initiator->RemoveTitle(titleset); } -void QuestManager::wearchange(uint8 slot, uint16 texture) +void QuestManager::wearchange(uint8 slot, uint16 texture, uint32 hero_forge_model /*= 0*/, uint32 elite_material /*= 0*/) { QuestManagerCurrentQuestVars(); if(owner){ - owner->SendTextureWC(slot, texture); + owner->SendTextureWC(slot, texture, hero_forge_model, elite_material); if(owner->IsNPC()) { owner->CastToNPC()->NPCSlotTexture(slot, texture); } diff --git a/zone/questmgr.h b/zone/questmgr.h index a4cc2a38b..612c7815f 100644 --- a/zone/questmgr.h +++ b/zone/questmgr.h @@ -240,7 +240,7 @@ public: bool IsRunning(); void FlyMode(uint8 flymode); uint8 FactionValue(); - void wearchange(uint8 slot, uint16 texture); + void wearchange(uint8 slot, uint16 texture, uint32 hero_forge_model = 0, uint32 elite_material = 0); void voicetell(const char *str, int macronum, int racenum, int gendernum); void LearnRecipe(uint32 recipe_id); void SendMail(const char *to, const char *from, const char *subject, const char *message);