mirror of
https://github.com/azerothcore/mod-ale
synced 2025-11-29 15:38:17 +08:00
Feat: Add new methods for player (GetQuestSlotQuestId, SetCanFly, ApplyRatingMod) (#345)
This commit is contained in:
@@ -555,6 +555,7 @@ ALERegister<Player> PlayerMethods[] =
|
|||||||
{ "GetTemporaryUnsummonedPetNumber", &LuaPlayer::GetTemporaryUnsummonedPetNumber },
|
{ "GetTemporaryUnsummonedPetNumber", &LuaPlayer::GetTemporaryUnsummonedPetNumber },
|
||||||
{ "GetLastPetNumber", &LuaPlayer::GetLastPetNumber },
|
{ "GetLastPetNumber", &LuaPlayer::GetLastPetNumber },
|
||||||
{ "GetLastPetSpell", &LuaPlayer::GetLastPetSpell },
|
{ "GetLastPetSpell", &LuaPlayer::GetLastPetSpell },
|
||||||
|
{ "GetQuestSlotQuestId", &LuaPlayer::GetQuestSlotQuestId },
|
||||||
|
|
||||||
// Setters
|
// Setters
|
||||||
{ "SetTemporaryUnsummonedPetNumber", &LuaPlayer::SetTemporaryUnsummonedPetNumber },
|
{ "SetTemporaryUnsummonedPetNumber", &LuaPlayer::SetTemporaryUnsummonedPetNumber },
|
||||||
@@ -613,6 +614,7 @@ ALERegister<Player> PlayerMethods[] =
|
|||||||
{ "GetInventoryItem", &LuaPlayer::GetInventoryItem },
|
{ "GetInventoryItem", &LuaPlayer::GetInventoryItem },
|
||||||
{ "GetBankItem", &LuaPlayer::GetBankItem },
|
{ "GetBankItem", &LuaPlayer::GetBankItem },
|
||||||
{ "GetCreationTime", &LuaPlayer::GetCreationTime },
|
{ "GetCreationTime", &LuaPlayer::GetCreationTime },
|
||||||
|
{ "SetCanFly", &LuaPlayer::SetCanFly },
|
||||||
|
|
||||||
// Boolean
|
// Boolean
|
||||||
{ "HasTankSpec", &LuaPlayer::HasTankSpec },
|
{ "HasTankSpec", &LuaPlayer::HasTankSpec },
|
||||||
@@ -829,6 +831,7 @@ ALERegister<Player> PlayerMethods[] =
|
|||||||
{ "SetViewpoint", &LuaPlayer::SetViewpoint },
|
{ "SetViewpoint", &LuaPlayer::SetViewpoint },
|
||||||
{ "ToggleInstantFlight", &LuaPlayer::ToggleInstantFlight },
|
{ "ToggleInstantFlight", &LuaPlayer::ToggleInstantFlight },
|
||||||
{ "SetCreationTime", &LuaPlayer::SetCreationTime },
|
{ "SetCreationTime", &LuaPlayer::SetCreationTime },
|
||||||
|
{ "ApplyRatingMod", &LuaPlayer::ApplyRatingMod },
|
||||||
|
|
||||||
{ NULL, NULL }
|
{ NULL, NULL }
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -4904,6 +4904,83 @@ namespace LuaPlayer
|
|||||||
ALE::Push(L, player->GetItemByPos(INVENTORY_SLOT_BAG_0, slot + BANK_SLOT_ITEM_START));
|
ALE::Push(L, player->GetItemByPos(INVENTORY_SLOT_BAG_0, slot + BANK_SLOT_ITEM_START));
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the [Quest] ID for the quest in the specified quest log slot.
|
||||||
|
*
|
||||||
|
* @param uint16 slot : quest log slot
|
||||||
|
* @return uint32 questId : quest ID or 0 if slot is invalid
|
||||||
|
*/
|
||||||
|
int GetQuestSlotQuestId(lua_State* L, Player* player)
|
||||||
|
{
|
||||||
|
uint16 slot = ALE::CHECKVAL<uint16>(L, 2);
|
||||||
|
if (slot > MAX_QUEST_LOG_SIZE)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
ALE::Push(L, player->GetQuestSlotQuestId(slot));
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets whether the [Player] can fly.
|
||||||
|
*
|
||||||
|
* @param bool activate = false : true to enable flying, false to disable
|
||||||
|
*/
|
||||||
|
int SetCanFly(lua_State* L, Player* player)
|
||||||
|
{
|
||||||
|
bool activate = ALE::CHECKVAL<bool>(L, 2, false);
|
||||||
|
player->SetCanFly(activate);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Applies a rating modifier to the [Player].
|
||||||
|
*
|
||||||
|
* @param int32 stat : combat rating type (see CombatRating enum)
|
||||||
|
* @param float value : rating value to apply
|
||||||
|
* @param bool apply = false : true to apply the modifier, false to remove it
|
||||||
|
*
|
||||||
|
* enum CombatRating // 24 stat
|
||||||
|
* {
|
||||||
|
* CR_WEAPON_SKILL = 0,
|
||||||
|
* CR_DEFENSE_SKILL = 1,
|
||||||
|
* CR_DODGE = 2,
|
||||||
|
* CR_PARRY = 3,
|
||||||
|
* CR_BLOCK = 4,
|
||||||
|
* CR_HIT_MELEE = 5,
|
||||||
|
* CR_HIT_RANGED = 6,
|
||||||
|
* CR_HIT_SPELL = 7,
|
||||||
|
* CR_CRIT_MELEE = 8,
|
||||||
|
* CR_CRIT_RANGED = 9,
|
||||||
|
* CR_CRIT_SPELL = 10,
|
||||||
|
* CR_HIT_TAKEN_MELEE = 11,
|
||||||
|
* CR_HIT_TAKEN_RANGED = 12,
|
||||||
|
* CR_HIT_TAKEN_SPELL = 13,
|
||||||
|
* CR_CRIT_TAKEN_MELEE = 14,
|
||||||
|
* CR_CRIT_TAKEN_RANGED = 15,
|
||||||
|
* CR_CRIT_TAKEN_SPELL = 16,
|
||||||
|
* CR_HASTE_MELEE = 17,
|
||||||
|
* CR_HASTE_RANGED = 18,
|
||||||
|
* CR_HASTE_SPELL = 19,
|
||||||
|
* CR_WEAPON_SKILL_MAINHAND = 20,
|
||||||
|
* CR_WEAPON_SKILL_OFFHAND = 21,
|
||||||
|
* CR_WEAPON_SKILL_RANGED = 22,
|
||||||
|
* CR_EXPERTISE = 23,
|
||||||
|
* CR_ARMOR_PENETRATION = 24
|
||||||
|
* };
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
int ApplyRatingMod(lua_State* L, Player* player)
|
||||||
|
{
|
||||||
|
int32 stat = ALE::CHECKVAL<int32>(L, 2);
|
||||||
|
|
||||||
|
float value = ALE::CHECKVAL<float>(L, 3);
|
||||||
|
bool apply = ALE::CHECKVAL<bool>(L, 4, false);
|
||||||
|
|
||||||
|
player->ApplyRatingMod(CombatRating(stat), value, apply);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user