semi-random tentative crappy code for improving quest aborting, especially when the quest owner has left the party
This commit is contained in:
@@ -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);
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@@ -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')
|
||||
|*
|
||||
{{::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')
|
||||
|*
|
||||
=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')
|
||||
|*
|
||||
{{::v.profile.name}}
|
||||
|*
|
||||
=env.t('questOwner')
|
||||
// span(ng-if=':: group.quest.leader && group.members.indexOf(group.quest.leader) > -1')
|
||||
// |*
|
||||
// =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')
|
||||
|
||||
Reference in New Issue
Block a user