mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-18 15:17:25 +01:00
feat: Disable spells on client when they cannot be cast
Closes #7110 Closes #6867
This commit is contained in:
@@ -10,6 +10,8 @@
|
|||||||
|
|
||||||
"spellWizardFrostText": "Chilling Frost",
|
"spellWizardFrostText": "Chilling Frost",
|
||||||
"spellWizardFrostNotes": "Ice covers your tasks. None of your streaks will reset to zero tomorrow! (One cast affects all streaks.)",
|
"spellWizardFrostNotes": "Ice covers your tasks. None of your streaks will reset to zero tomorrow! (One cast affects all streaks.)",
|
||||||
|
"spellWizardFrostAlreadyCast": " You have already cast this today. Your streaks are frozen, and there's no need to cast this again.",
|
||||||
|
|
||||||
|
|
||||||
"spellWarriorSmashText": "Brutal Smash",
|
"spellWarriorSmashText": "Brutal Smash",
|
||||||
"spellWarriorSmashNotes": "You hit a task with all of your might. It gets more blue/less red, and you deal extra damage to Bosses! Click on a task to cast. (Based on: STR)",
|
"spellWarriorSmashNotes": "You hit a task with all of your might. It gets more blue/less red, and you deal extra damage to Bosses! Click on a task to cast. (Based on: STR)",
|
||||||
@@ -34,6 +36,8 @@
|
|||||||
|
|
||||||
"spellRogueStealthText": "Stealth",
|
"spellRogueStealthText": "Stealth",
|
||||||
"spellRogueStealthNotes": "You are too sneaky to spot. Some of your undone Dailies will not cause damage tonight, and their streaks/color will not change. (Cast multiple times to affect more Dailies)",
|
"spellRogueStealthNotes": "You are too sneaky to spot. Some of your undone Dailies will not cause damage tonight, and their streaks/color will not change. (Cast multiple times to affect more Dailies)",
|
||||||
|
"spellRogueStealthDaliesAvoided": "<%= originalText %> Number of dailies avoided: <%= number %>.",
|
||||||
|
"spellRogueStealthMaxedOut": " You have already avoided all your dailies; there's no need to cast this again.",
|
||||||
|
|
||||||
"spellHealerHealText": "Healing Light",
|
"spellHealerHealText": "Healing Light",
|
||||||
"spellHealerHealNotes": "Light covers your body, healing your wounds. You regain health! (Based on: CON and INT)",
|
"spellHealerHealNotes": "Light covers your body, healing your wounds. You regain health! (Based on: CON and INT)",
|
||||||
|
|||||||
@@ -657,6 +657,15 @@ form
|
|||||||
padding-left: 0.2em
|
padding-left: 0.2em
|
||||||
text-align: left
|
text-align: left
|
||||||
border:none
|
border:none
|
||||||
|
|
||||||
|
&.disabled
|
||||||
|
// bootstrap .btn.disabled styles
|
||||||
|
pointer-events: none
|
||||||
|
cursor: not-allowed
|
||||||
|
-webkit-box-shadow: none
|
||||||
|
box-shadow: none
|
||||||
|
opacity: .65
|
||||||
|
|
||||||
span
|
span
|
||||||
position: relative
|
position: relative
|
||||||
left: -2px
|
left: -2px
|
||||||
|
|||||||
@@ -334,4 +334,34 @@ habitrpg.controller("TasksCtrl", ['$scope', '$rootScope', '$location', 'User','N
|
|||||||
task.tags.splice(tagIndex, 1);
|
task.tags.splice(tagIndex, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
------------------------
|
||||||
|
Disabling Spells
|
||||||
|
------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
$scope.spellDisabled = function (skill) {
|
||||||
|
if (skill === 'frost' && $scope.user.stats.buffs.streaks) {
|
||||||
|
return true;
|
||||||
|
} else if (skill === 'stealth' && $scope.user.stats.buffs.stealth >= $scope.user.dailys.length) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
$scope.skillNotes = function (skill) {
|
||||||
|
var notes = skill.notes();
|
||||||
|
|
||||||
|
if (skill.key === 'frost' && $scope.spellDisabled(skill.key)) {
|
||||||
|
notes = window.env.t('spellWizardFrostAlreadyCast');
|
||||||
|
} else if (skill.key === 'stealth' && $scope.spellDisabled(skill.key)) {
|
||||||
|
notes = window.env.t('spellRogueStealthMaxedOut');
|
||||||
|
} else if (skill.key === 'stealth') {
|
||||||
|
notes = window.env.t('spellRogueStealthDaliesAvoided', { originalText: notes, number: $scope.user.stats.buffs.stealth });
|
||||||
|
}
|
||||||
|
|
||||||
|
return notes;
|
||||||
|
};
|
||||||
}]);
|
}]);
|
||||||
|
|||||||
@@ -8,13 +8,14 @@ ul.items.rewards
|
|||||||
|
|
||||||
// Class Skills
|
// Class Skills
|
||||||
ul.items(ng-if='main && list.type=="reward" && user.stats.class && !user.preferences.disableClasses')
|
ul.items(ng-if='main && list.type=="reward" && user.stats.class && !user.preferences.disableClasses')
|
||||||
li.task.reward-item(ng-repeat='(k,skill) in Content.spells[user.stats.class]', ng-if='user.stats.lvl >= skill.lvl',popover-trigger='mouseenter', popover-placement='top', popover='{{skill.notes()}}')
|
li.task.reward-item.list-group-item(ng-repeat='(k,skill) in Content.spells[user.stats.class]', ng-if='user.stats.lvl >= skill.lvl',popover-trigger='mouseenter', popover-placement='top',
|
||||||
|
popover='{{skillNotes(skill)}}')
|
||||||
.task-meta-controls
|
.task-meta-controls
|
||||||
span.task-notes
|
span.task-notes
|
||||||
span.glyphicon.glyphicon-comment
|
span.glyphicon.glyphicon-comment
|
||||||
//left-hand size commands
|
//left-hand size commands
|
||||||
.task-controls.task-primary
|
.task-controls.task-primary
|
||||||
a.money.btn-buy.item-btn(ng-click='castStart(skill)', ng-class='{active: skill.key == spell.key}')
|
a.money.btn-buy.item-btn(ng-click='castStart(skill)', ng-class='{"disabled": spellDisabled(k)}')
|
||||||
span.reward-cost
|
span.reward-cost
|
||||||
strong {{::skill.mana}}
|
strong {{::skill.mana}}
|
||||||
=env.t('mp')
|
=env.t('mp')
|
||||||
|
|||||||
Reference in New Issue
Block a user