[Quest API] Add CanRaceEquipItem(item_id) to Perl/Lua. (#1411)

* [Quest API] Add CanRaceEquipItem(item_id) to Perl/Lua.
- Add $mob->CanRaceEquipItem(item_id) to Perl.
- Add mob:CanClassEquipItem(item_id) to Lua.
- Add mob:CanRaceEquipItem(item_id) to Lua.

* Use constants.

Co-authored-by: Chris Miles <akkadius1@gmail.com>
This commit is contained in:
Alex
2021-06-17 18:42:44 -04:00
committed by GitHub
parent ccfc8b296f
commit 249cbb7bc7
5 changed files with 73 additions and 10 deletions
+39 -8
View File
@@ -5673,22 +5673,53 @@ bool Mob::CanClassEquipItem(uint32 item_id)
const EQ::ItemData* itm = nullptr;
itm = database.GetItem(item_id);
if (!itm)
if (!itm) {
return false;
}
if(itm->Classes == 65535 )
auto item_classes = itm->Classes;
if(item_classes == PLAYER_CLASS_ALL_MASK) {
return true;
}
if (GetClass() > 16)
auto class_id = GetClass();
if (class_id > BERSERKER) {
return false;
}
int bitmask = 1;
bitmask = bitmask << (GetClass() - 1);
if(!(itm->Classes & bitmask))
int class_bitmask = GetPlayerClassBit(class_id);
if(!(item_classes & class_bitmask)) {
return false;
else
} else {
return true;
}
}
bool Mob::CanRaceEquipItem(uint32 item_id)
{
const EQ::ItemData* itm = nullptr;
itm = database.GetItem(item_id);
if (!itm) {
return false;
}
auto item_races = itm->Races;
if(item_races == PLAYER_RACE_ALL_MASK) {
return true;
}
auto race_id = GetBaseRace();
if (!IsPlayerRace(race_id)) {
return false;
}
int race_bitmask = GetPlayerRaceBit(race_id);
if(!(item_races & race_bitmask)) {
return false;
} else {
return true;
}
}
void Mob::SendAddPlayerState(PlayerState new_state)