mage and paladin strategy port

This commit is contained in:
Yunfan Li
2023-06-03 20:16:35 +08:00
parent 0f483047e5
commit e68a22d968
26 changed files with 414 additions and 172 deletions

View File

@@ -139,3 +139,27 @@ bool PartyMemberValue::IsTargetOfSpellCast(Player* target, SpellEntryPredicate &
return false;
}
class FindMainTankPlayer : public FindPlayerPredicate
{
public:
FindMainTankPlayer(PlayerbotAI* botAI) : botAI(botAI) {}
virtual bool Check(Unit* unit)
{
Player* player = unit->ToPlayer();
if (!player) {
return false;
}
return botAI->IsMainTank(player);
}
private:
PlayerbotAI* botAI;
};
Unit* PartyMemberMainTankValue::Calculate()
{
FindMainTankPlayer findMainTankPlayer(botAI);
return FindPartyMember(findMainTankPlayer);
}

View File

@@ -35,4 +35,11 @@ class PartyMemberValue : public UnitCalculatedValue
virtual bool Check(Unit* player);
};
class PartyMemberMainTankValue : public PartyMemberValue
{
public:
PartyMemberMainTankValue(PlayerbotAI* botAI) : PartyMemberValue(botAI) {}
virtual Unit* Calculate();
};
#endif

View File

@@ -285,6 +285,8 @@ class ValueContext : public NamedObjectContext<UntypedValue>
creators["RTSC saved location"] = &ValueContext::RTSC_saved_location;
creators["has area debuff"] = &ValueContext::has_area_debuff;
creators["main tank"] = &ValueContext::main_tank;
}
private:
@@ -475,6 +477,8 @@ class ValueContext : public NamedObjectContext<UntypedValue>
static UntypedValue* RTSC_saved_location(PlayerbotAI* botAI) { return new RTSCSavedLocationValue(botAI); }
static UntypedValue* has_area_debuff(PlayerbotAI* botAI) { return new HasAreaDebuffValue(botAI); }
static UntypedValue* main_tank(PlayerbotAI* ai) { return new PartyMemberMainTankValue(ai); }
};
#endif