diff --git a/website/views/options/social/boss/bossStats.jade b/website/views/options/social/boss/bossStats.jade new file mode 100644 index 0000000000..4abdc0a6ce --- /dev/null +++ b/website/views/options/social/boss/bossStats.jade @@ -0,0 +1,23 @@ +if tavern + div(class="quest_{{group.quest.key}} quest_{{group.quest.key}}_#{env.worldDmg.recent}") +else + div(class="quest_{{::group.quest.key}}") + +.hero-stats + .meter-label(tooltip=env.t('bossHP')) + span.glyphicon.glyphicon-heart + .meter.health + .bar(ng-style='width: {{Shared.percent(progress.hp, boss.hp)}}%;') + span.meter-text.value + | {{Math.ceil(progress.hp) | roundLargeNumbers}} + |  / {{::boss.hp | roundLargeNumbers}} + div(ng-if='boss.rage') + .meter-label(tooltip='Rage') + span.glyphicon.glyphicon-fire + .meter.mana(popover="{{::boss.rage.description()}}", + popover-title="{{::boss.rage.title()}}", + popover-trigger='mouseenter', popover-placement='right') + .bar(ng-style='width: {{Shared.percent(progress.rage, boss.rage.value)}}%;') + span.meter-text.value + | {{Math.ceil(progress.rage) | roundLargeNumbers}} + |  / {{::boss.rage.value | roundLargeNumbers}} diff --git a/website/views/options/social/boss/collectionStats.jade b/website/views/options/social/boss/collectionStats.jade new file mode 100644 index 0000000000..68217b86d7 --- /dev/null +++ b/website/views/options/social/boss/collectionStats.jade @@ -0,0 +1,10 @@ +div(class="quest_{{::group.quest.key}}") +h4=env.t('collected') + ':' +table.table.table-striped + tr(ng-repeat='(item,number) in group.quest.progress.collect', + class='quest_collected_{{number >= Content.quests[group.quest.key].collect[item].count}}') + td + .pull-left(class='quest_{{::group.quest.key}}_{{::item}}') + | {{::Content.quests[group.quest.key].collect[item].text()}} + td + | {{number}} / {{Content.quests[group.quest.key].collect[item].count}} diff --git a/website/views/options/social/boss/ianQuestInfo.jade b/website/views/options/social/boss/ianQuestInfo.jade new file mode 100644 index 0000000000..f6305e6dc8 --- /dev/null +++ b/website/views/options/social/boss/ianQuestInfo.jade @@ -0,0 +1,14 @@ +.npc_ian.pull-left + +div(ng-if='::Content.quests[group.quest.key].boss') + if tavern + p!=env.t('tavernBossInfo') + else + p!=env.t('bossDmg1') + br + p=env.t('bossDmg2') + +div(ng-if='::Content.quests[group.quest.key].collect') + p=env.t('bossColl1') + br + p=env.t('bossColl2') diff --git a/website/views/options/social/boss/index.jade b/website/views/options/social/boss/index.jade index ab97aba3f7..c4586f0739 100644 --- a/website/views/options/social/boss/index.jade +++ b/website/views/options/social/boss/index.jade @@ -7,106 +7,6 @@ mixin boss(tavern, mobile) h3.panel-title(ng-if='group.quest.active==false')=env.t('questInvitation') + ' {{::Content.quests[group.quest.key].text()}}' h3.panel-title(ng-if='group.quest.active==true') {{::Content.quests[group.quest.key].text()}} .panel-body.modal-fixed-height - div(ng-if='group.quest.active==false') - tabset - tab(heading=env.t('invitations')) - +participants(false) + include ./questNotActive - tab(heading=env.t('questDetails')) - div(class="quest_{{::group.quest.key}}") - div(ng-if='::Content.quests[group.quest.key].boss') - h4 {{::Content.quests[group.quest.key].boss.name()}} - p - strong=env.t('bossHP') + ': ' - | {{::Content.quests[group.quest.key].boss.hp}} - p - strong=env.t('bossStrength') + ': ' - | {{::Content.quests[group.quest.key].boss.str}} - div(ng-if='::Content.quests[group.quest.key].collect') - p(ng-repeat='(k,v) in ::Content.quests[group.quest.key].collect') - strong=env.t('collect') + ': ' - | {{::Content.quests[group.quest.key].collect[k].count}} {{::Content.quests[group.quest.key].collect[k].text()}} - div(ng-bind-html='::Content.quests[group.quest.key].notes()') - - hr - - .npc_ian.pull-left - p=env.t('questStart') - - // only the quest owner sees the begin button: - button.btn.btn-sm.btn-warning(ng-if=':: group.quest.leader && group.quest.leader==user._id && isMemberOfGroup(group.quest.leader,group) && isMemberOfPendingQuest(group.quest.leader,group)', ng-click='party.$questAccept({"force":true})')=env.t('begin') - // // only the quest owner sees the cancel button UNLESS the quest owner is no longer in the quest/party and then everyone sees it: - // This is commented-out until we have time to work out why it fails intermittently on the website and always on the mobile app (https://github.com/HabitRPG/habitrpg/issues/4074): - // button.btn.btn-sm.btn-danger(ng-if=':: (group.quest.leader && group.quest.leader==user._id && isMemberOfGroup(group.quest.leader,group) && isMemberOfPendingQuest(group.quest.leader,group)) || (! group.quest.leader || ! isMemberOfGroup(group.quest.leader,group) || ! isMemberOfPendingQuest(group.quest.leader,group))', ng-click='questCancel()')=env.t('cancel') - // only the quest owner sees the cancel button: - button.btn.btn-sm.btn-danger(ng-if=':: (group.quest.leader && group.quest.leader==user._id && isMemberOfGroup(group.quest.leader,group) && isMemberOfPendingQuest(group.quest.leader,group))', ng-click='questCancel()')=env.t('cancel') - - div(ng-if='group.quest.active==true') - unless tavern - tabset - tab(heading=env.t('questDetails')) - div(ng-if='::Content.quests[group.quest.key].boss',ng-init='boss=Content.quests[group.quest.key].boss;progress=group.quest.progress') - if tavern - div(class="quest_{{group.quest.key}} quest_{{group.quest.key}}_#{env.worldDmg.recent}") - else - div(class="quest_{{::group.quest.key}}") - //- - .progress - .bar(style='width: {{Shared.percent(group.quest.hp, Content.quests[group.quest.key].hp)}}%;') - span.meter-text - span.glyphicon.glyphicon-heart - | {{group.quest.hp | number:0}} / {{Content.quests[group.quest.key].hp}} - .hero-stats - .meter-label(tooltip=env.t('bossHP')) - span.glyphicon.glyphicon-heart - .meter.health - .bar(style='width: {{Shared.percent(progress.hp, boss.hp)}}%;') - span.meter-text.value - | {{Math.ceil(progress.hp) | roundLargeNumbers}} / {{boss.hp | roundLargeNumbers}} - .meter-label(tooltip='Rage', ng-if='boss.rage') - span.glyphicon.glyphicon-fire - .meter.mana(ng-if='boss.rage',popover="{{::boss.rage.description()}}",popover-title="{{::boss.rage.title()}}",popover-trigger='mouseenter',popover-placement='right') - .bar(style='width: {{Shared.percent(progress.rage, boss.rage.value)}}%;') - span.meter-text.value - | {{Math.ceil(progress.rage) | roundLargeNumbers}} / {{boss.rage.value | roundLargeNumbers}} - div(ng-if='::Content.quests[group.quest.key].collect') - div(class="quest_{{::group.quest.key}}") - h4=env.t('collected') + ':' - table.table.table-striped - tr(ng-repeat='(k,v) in group.quest.progress.collect', class='quest_collected_{{v >= Content.quests[group.quest.key].collect[k].count}}') - td - div.pull-left(class='quest_{{::group.quest.key}}_{{::k}}') - | {{::Content.quests[group.quest.key].collect[k].text()}} - td - |{{v}} / {{Content.quests[group.quest.key].collect[k].count}} - - div(ng-bind-html='::Content.quests[group.quest.key].notes()') - unless tavern - quest-rewards(key='{{::group.quest.key}}') - - tab(heading=env.t('questParticipants')) - +participants(true) - - hr - - div(ng-if='::Content.quests[group.quest.key].boss') - .npc_ian.pull-left - if tavern - p!=env.t('tavernBossInfo') - else - p!=env.t('bossDmg1') - br - p=env.t('bossDmg2') - - div(ng-if='::Content.quests[group.quest.key].collect') - .npc_ian.pull-left - p=env.t('bossColl1') - br - p=env.t('bossColl2') - - unless tavern - // // only the quest owner sees the abort button UNLESS the quest owner is no longer in the quest/party and then everyone sees it: - // This is commented-out until we have time to work out why it fails intermittently on the website and always on the mobile app (https://github.com/HabitRPG/habitrpg/issues/4074): - // button.btn.btn-sm.btn-warning(ng-if=':: (group.quest.leader && group.quest.leader==user._id && isMemberOfGroup(group.quest.leader,group) && isMemberOfRunningQuest(group.quest.leader,group)) || ! group.quest.leader || ! isMemberOfGroup(group.quest.leader,group) || ! isMemberOfRunningQuest(group.quest.leader,group)', ng-click='questAbort()')=env.t('abort') - // only the quest owner sees the abort button: - button.btn.btn-sm.btn-warning(ng-if=':: (group.quest.leader && group.quest.leader==user._id && isMemberOfGroup(group.quest.leader,group) && isMemberOfRunningQuest(group.quest.leader,group))', ng-click='questAbort()')=env.t('abort') + include ./questActive diff --git a/website/views/options/social/boss/questActive.jade b/website/views/options/social/boss/questActive.jade new file mode 100644 index 0000000000..8ac01203a8 --- /dev/null +++ b/website/views/options/social/boss/questActive.jade @@ -0,0 +1,24 @@ +div(ng-if='group.quest.active==true') + unless tavern + tabset + tab(heading=env.t('questDetails')) + div(ng-if='::Content.quests[group.quest.key].boss',ng-init='boss=Content.quests[group.quest.key].boss;progress=group.quest.progress') + include ./bossStats + + div(ng-if='::Content.quests[group.quest.key].collect') + include ./collectionStats + + div(ng-bind-html='::Content.quests[group.quest.key].notes()') + unless tavern + quest-rewards(key='{{::group.quest.key}}') + + tab(heading=env.t('questParticipants')) + +participants(true) + + hr + + include ./ianQuestInfo + + unless tavern + button.btn.btn-sm.btn-warning(ng-if=':: (group.quest.leader && group.quest.leader==user._id && isMemberOfGroup(group.quest.leader,group) && isMemberOfRunningQuest(group.quest.leader,group))', + ng-click='questAbort()')=env.t('abort') diff --git a/website/views/options/social/boss/questNotActive.jade b/website/views/options/social/boss/questNotActive.jade new file mode 100644 index 0000000000..4e6eb42d2f --- /dev/null +++ b/website/views/options/social/boss/questNotActive.jade @@ -0,0 +1,24 @@ +div(ng-if='group.quest.active==false') + tabset + tab(heading=env.t('invitations')) + +participants(false) + + tab(heading=env.t('questDetails')) + div(class="quest_{{::group.quest.key}}") + div(ng-if='::Content.quests[group.quest.key].boss') + h4 {{::Content.quests[group.quest.key].boss.name()}} + p: strong=env.t('bossHP') + ': {{::Content.quests[group.quest.key].boss.hp}}' + p: strong=env.t('bossStrength') + ': {{::Content.quests[group.quest.key].boss.str}}' + div(ng-if='::Content.quests[group.quest.key].collect') + p(ng-repeat='(k,v) in ::Content.quests[group.quest.key].collect') + strong=env.t('collect') + ': ' + | {{::Content.quests[group.quest.key].collect[k].count}} {{::Content.quests[group.quest.key].collect[k].text()}} + div(ng-bind-html='::Content.quests[group.quest.key].notes()') + + hr + + .npc_ian.pull-left + p=env.t('questStart') + + button.btn.btn-sm.btn-warning(ng-if=':: group.quest.leader && group.quest.leader==user._id && isMemberOfGroup(group.quest.leader,group) && isMemberOfPendingQuest(group.quest.leader,group)', ng-click='party.$questAccept({"force":true})')=env.t('begin') + button.btn.btn-sm.btn-danger(ng-if=':: (group.quest.leader && group.quest.leader==user._id && isMemberOfGroup(group.quest.leader,group) && isMemberOfPendingQuest(group.quest.leader,group))', ng-click='questCancel()')=env.t('cancel')