diff --git a/src/models/group.js b/src/models/group.js index 516267e469..0f4682c1d5 100644 --- a/src/models/group.js +++ b/src/models/group.js @@ -264,8 +264,13 @@ GroupSchema.statics.tavernBoss = function(user,progress) { // Deal damage. Note a couple things here, str & def are calculated. If str/def are defined in the database, // use those first - which allows us to update the boss on the go if things are too easy/hard. if (!tavern.quest.extra) tavern.quest.extra = {}; - tavern.quest.progress.hp -= dmg / (tavern.quest.extra.def || quest.boss.def); - tavern.quest.progress.rage -= rage * (tavern.quest.extra.str || quest.boss.str); + if (tavern.quest.progress.hp < quest.boss.desperation.threshold) { + tavern.quest.progress.hp -= dmg / (quest.boss.desperation.def); + tavern.quest.progress.rage -= rage * (quest.boss.desperation.str); + } else { + tavern.quest.progress.hp -= dmg / (tavern.quest.extra.def || quest.boss.def); + tavern.quest.progress.rage -= rage * (tavern.quest.extra.str || quest.boss.str); + } if (tavern.quest.progress.rage >= quest.boss.rage.value) { if (!tavern.quest.extra.worldDmg) tavern.quest.extra.worldDmg = {}; var wd = tavern.quest.extra.worldDmg; @@ -283,6 +288,10 @@ GroupSchema.statics.tavernBoss = function(user,progress) { tavern.quest.progress.hp += (quest.boss.rage.healing * tavern.quest.progress.hp); } } + if (tavern.quest.progress.hp < quest.boss.desperation.threshold && !tavern.quest.extra.desperate) { + tavern.sendChat(quest.boss.desperation.text('en')); + tavern.quest.extra.desperate = true; + } tavern.save(cb); } }