semi-random tentative crappy code for improving quest aborting, especially when the quest owner has left the party

This commit is contained in:
Alice Harris
2014-09-04 10:13:22 +10:00
parent c90c8f9a5f
commit 0e163034cf
2 changed files with 32 additions and 7 deletions
+18 -2
View File
@@ -571,13 +571,13 @@ api.questAccept = function(req, res, next) {
var user = res.locals.user;
var key = req.query.key;
if (!group) return res.json(400, {err: "Must be in a party to start quests (this will change in the future)."});
if (!group) return res.json(400, {err: "Must be in a party to start quests."});
// If ?key=xxx is provided, we're starting a new quest and inviting the party. Otherwise, we're a party member accepting the invitation
if (key) {
var quest = shared.content.quests[key];
if (!quest) return res.json(404,{err:'Quest ' + key + ' not found'});
if (quest.lvl && user.stats.lvl < quest.lvl) return res.json(400, {err: "You must be level "+quest.lvl+" to being this quest."});
if (quest.lvl && user.stats.lvl < quest.lvl) return res.json(400, {err: "You must be level "+quest.lvl+" to begin this quest."});
if (group.quest.key) return res.json(400, {err: 'Party already on a quest (and only have one quest at a time)'});
if (!user.items.quests[key]) return res.json(400, {err: "You don't own that quest scroll"});
group.quest.key = key;
@@ -609,8 +609,23 @@ api.questReject = function(req, res, next) {
questStart(req,res,next);
}
api.questCancel = function(req, res, next){
// Cancel a quest BEFORE it has begun (i.e., in the invitation stage)
var group = res.locals.group;
async.parallel([
function(cb){
group.quest = {key:null,progress:{},leader:null};
group.markModified('quest');
group.save(cb);
}
], function(err){
if (err) return next(err);
res.json(group);
})
}
api.questAbort = function(req, res, next){
// Abort a quest AFTER it has begun (see questCancel for BEFORE)
var group = res.locals.group;
async.parallel([
function(cb){
@@ -639,3 +654,4 @@ api.questAbort = function(req, res, next){
res.json(group);
})
}
+14 -5
View File
@@ -9,16 +9,23 @@ mixin boss(tavern, mobile)
table.table.table-striped
tr(ng-repeat='member in group.members')
td
span(ng-if=':: group.quest.leader==member._id')
span(ng-if=':: group.quest.leader && group.quest.leader==member._id')
|*&nbsp;
{{::member.profile.name}}
td {{group.quest.members[member._id] === true ? env.t('accepted') : group.quest.members[member._id] === false ? env.t('rejected') : env.t('pending')}}
//span(ng-if=':: group.quest.leader && group.members.indexOf(group.quest.leader) > -1')
|*&nbsp;
=env.t('questOwner')
br
span(ng-if=':: !group.quest.leader') no quest leader
br
span(ng-if=':: group.members.indexOf(group.quest.leader) == -1') not in group
// span(ng-if=':: !group.quest.leader || group.members.indexOf(group.quest.leader) == -1')=env.t('questOwnerMIA')
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', ng-click='party.$questAccept({"force":true})')=env.t('begin')
button.btn.btn-sm.btn-warning(ng-if=':: !group.quest.leader || group.members.indexOf(group.quest.leader) == -1 || group.quest.leader==user._id', ng-click='party.$questAccept({"force":true})')=env.t('begin')
//button.btn.btn-sm.btn-warning(ng-if=':: !group.quest.leader || group.members.indexOf(group.quest.leader) == -1 || group.quest.leader==user._id', ng-click='party.$questCancel()')=env.t('cancel')
//-TODO Cancel button
//-TODO Both force-start & cancel should only be available to quest-initiator
@@ -65,8 +72,10 @@ mixin boss(tavern, mobile)
span(ng-if=':: group.quest.leader==v._id')
|*&nbsp;
{{::v.profile.name}}
|*&nbsp;
=env.t('questOwner')
// span(ng-if=':: group.quest.leader && group.members.indexOf(group.quest.leader) > -1')
// |*&nbsp;
// =env.t('questOwner')
// span(ng-if=':: !group.quest.leader || group.members.indexOf(group.quest.leader) == -1')=env.t('questOwnerMIA')
quest-rewards(key='{{::group.quest.key}}')
div(ng-if='::Content.quests[group.quest.key].boss')
@@ -86,4 +95,4 @@ mixin boss(tavern, mobile)
unless tavern
button.btn.btn-xs.btn-danger(ng-if='::!group.quest.leader || group.quest.leader==user._id', ng-click='questAbort()')=env.t('abort')
button.btn.btn-xs.btn-danger(ng-if='::!group.quest.leader || group.members.indexOf(group.quest.leader) == -1 || group.quest.leader==user._id', ng-click='questAbort()')=env.t('abort')