Fix: Antidotes to Avatar Transformation Items should be added to Rewards by API (#11353)

* Fix: moved debuffPotions from vue component

- Move logic of choosing proper debuf potion from vue component to website commons
- introduce new function to get debuffSpellItems

* Fix: move debuffPotions to server

* Refactoring: move setting of debuff potion to func

* Fix: sanity

* Refactoring & Tests:

- Create test case for get and set DebuffPotionItems functions
- Fix setDebuffPotionItems function to not create duplicated debuff items
- Make debuff potion type of items unpinnable
- Move list of debuffs to constant to reuse it in tests and functions

* Fix: typo in test describe

* Fix: translation of unpin

* Fix: setDebuffPotionItems on cron buffs reset

* Fix: use full path for debuff potions
This commit is contained in:
Aleksey
2019-10-06 19:41:39 +03:00
committed by Matteo Pagliazzi
parent 85eab76a71
commit 5b57d91a9b
14 changed files with 214 additions and 35 deletions

View File

@@ -68,6 +68,9 @@ async function castSelfSpell (req, user, spell, quantity = 1) {
for (let i = 0; i < quantity; i += 1) {
spell.cast(user, null, req);
}
common.setDebuffPotionItems(user);
await user.save();
}
@@ -94,34 +97,37 @@ async function castPartySpell (req, party, partyMembers, user, spell, quantity =
return partyMembers;
}
async function castUserSpell (res, req, party, partyMembers, targetId, user, spell, quantity = 1) {
async function castUserSpell (res, req, party, partyMember, targetId, user, spell, quantity = 1) {
if (!party && (!targetId || user._id === targetId)) {
partyMembers = user;
partyMember = user;
} else {
if (!targetId) throw new BadRequest(res.t('targetIdUUID'));
if (!party) throw new NotFound(res.t('partyNotFound'));
partyMembers = await User
partyMember = await User
.findOne({_id: targetId, 'party._id': party._id})
.select(partyMembersFields)
// We need all fields due to adding debuf spell to pinned items of target of the spell
// .select(partyMembersFields)
.exec();
}
if (!partyMembers) throw new NotFound(res.t('userWithIDNotFound', {userId: targetId}));
if (!partyMember) throw new NotFound(res.t('userWithIDNotFound', {userId: targetId}));
for (let i = 0; i < quantity; i += 1) {
spell.cast(user, partyMembers, req);
spell.cast(user, partyMember, req);
}
if (partyMembers !== user) {
common.setDebuffPotionItems(partyMember);
if (partyMember !== user) {
await Promise.all([
user.save(),
partyMembers.save(),
partyMember.save(),
]);
} else {
await partyMembers.save(); // partyMembers is user
await partyMember.save(); // partyMembers is user
}
return partyMembers;
return partyMember;
}
async function castSpell (req, res, {isV3 = false}) {