Skip to content

Commit

Permalink
feat: Cerberus correctly comes as 3 instances Zenoo#947
Browse files Browse the repository at this point in the history
  • Loading branch information
Ambryal committed Oct 15, 2024
1 parent edaefcc commit 1d3290e
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 11 deletions.
4 changes: 4 additions & 0 deletions core/src/brute/bosses.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ export interface Boss {
disarm: number;
damage: number;
reach: number;
count: number;
}

const bear = pets.find((p) => p.name === PetName.bear) as Pet;
Expand All @@ -42,6 +43,7 @@ const bosses: Boss[] = [
disarm: bear.disarm,
damage: bear.damage,
reach: 3,
count: 1,
},
{
name: BossName.EmberFang,
Expand All @@ -60,6 +62,7 @@ const bosses: Boss[] = [
disarm: panther.disarm,
damage: panther.damage,
reach: 3,
count: 1,
},
{
name: BossName.Cerberus,
Expand All @@ -78,6 +81,7 @@ const bosses: Boss[] = [
disarm: dog1.disarm,
damage: dog1.damage,
reach: 1,
count: 3,
},
];

Expand Down
31 changes: 22 additions & 9 deletions server/src/utils/fight/generateFight.ts
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,16 @@ const generateFight = async ({
}
}

if(team1.bosses?.length || team2.bosses?.length){
// Handle bosses coming as multiple instances
team1.bosses?.forEach(boss => {
team1.bosses?.push(...Array(boss.count - 1).fill({ ...boss }));
});
team2.bosses?.forEach(boss => {
team2.bosses?.push(...Array(boss.count - 1).fill({ ...boss }));
});
}

// Global fight data
const fightDataFighters = await getFighters({
prisma,
Expand Down Expand Up @@ -291,8 +301,9 @@ const generateFight = async ({

if (team1.bosses?.length || team2.bosses?.length) {
// Update clan limit and boss if boss slain
const bossFighter = fightData.fighters.find((fighter) => fighter.type === 'boss');
if (bossFighter && bossFighter.hp <= 0) {
const bossFighters = fightData.fighters.filter(fighter => fighter.type === 'boss');
const aliveBossFighters = bossFighters.filter(boss => boss.hp > 0);
if (bossFighters.length && !aliveBossFighters.length) {
const clan = await prisma.clan.findUnique({
where: { id: clanId },
select: {
Expand Down Expand Up @@ -386,7 +397,7 @@ const generateFight = async ({
clan.bossDamages.forEach((damage) => {
userIds.add(damage.brute.userId || '');
});
const goldReward = bossFighter.name === BossName.Cerberus ? FIRST_BOSS_GOLD_REWARD : BOSS_GOLD_REWARD;
const goldReward = bossFighters.find((boss) => boss.name === BossName.Cerberus) ? FIRST_BOSS_GOLD_REWARD : BOSS_GOLD_REWARD;
const goldGains = Math.floor(goldReward / userIds.size);

await prisma.user.updateMany({
Expand All @@ -411,16 +422,18 @@ const generateFight = async ({
};
} else {
// Update damage on boss + store it
const initialBoss = fightData.initialFighters.find((fighter) => fighter.type === 'boss');
const finalBoss = fightData.fighters.find((fighter) => fighter.type === 'boss');
if (!initialBoss || !finalBoss) {
throw new Error('Boss not found');
}
const initialBossesHp = fightData.initialFighters
.filter(fighter => fighter.type === 'boss')
.reduce((sum, boss) => boss.hp > 0 ? sum + boss.hp : sum, 0);
const finalBossesHp = fightData.fighters
.filter(fighter => fighter.type === 'boss')
.reduce((sum, boss) => boss.hp > 0 ? sum + boss.hp : sum, 0);

if (!clanId) {
throw new Error('Clan ID not found');
}

const damage = initialBoss.hp - finalBoss.hp;
const damage = initialBossesHp - finalBossesHp;

await prisma.clan.update({
where: { id: clanId },
Expand Down
4 changes: 2 additions & 2 deletions server/src/utils/fight/getFighters.ts
Original file line number Diff line number Diff line change
Expand Up @@ -447,8 +447,8 @@ const getFighters = async ({
}

// Boss
positiveIndex++;
for (const boss of team.bosses) {
positiveIndex++;
spawnedPets++;

fighters.push({
Expand All @@ -460,7 +460,7 @@ const getFighters = async ({
level: 0,
type: 'boss' as const,
maxHp: boss.hp,
hp: boss.startHP,
hp: boss.startHP > 0 ? boss.startHP : 1,
strength: boss.strength,
agility: boss.agility,
speed: boss.speed,
Expand Down

0 comments on commit 1d3290e

Please sign in to comment.