新增碎片&钻石
This commit is contained in:
@@ -58,6 +58,7 @@ exports.SteamLogin = async (req, res) => {
|
|||||||
user.validation_level = 0;
|
user.validation_level = 0;
|
||||||
|
|
||||||
user.coins = config.start_coins;
|
user.coins = config.start_coins;
|
||||||
|
user.cardfragments = config.start_cardfragments;
|
||||||
user.elo = config.start_elo;
|
user.elo = config.start_elo;
|
||||||
user.xp = 0;
|
user.xp = 0;
|
||||||
|
|
||||||
|
|||||||
@@ -60,6 +60,8 @@ module.exports = {
|
|||||||
|
|
||||||
//New Users
|
//New Users
|
||||||
start_coins: 5000,
|
start_coins: 5000,
|
||||||
|
start_cardfragments: 0,
|
||||||
|
start_crystals: 0,
|
||||||
start_elo: 1000,
|
start_elo: 1000,
|
||||||
|
|
||||||
//Match Rewards
|
//Match Rewards
|
||||||
|
|||||||
@@ -9,6 +9,8 @@ exports.AddReward = async(req, res) =>
|
|||||||
var repeat = req.body.repeat;
|
var repeat = req.body.repeat;
|
||||||
var xp = req.body.xp;
|
var xp = req.body.xp;
|
||||||
var coins = req.body.coins;
|
var coins = req.body.coins;
|
||||||
|
var cardfragments = req.body.cardfragments;
|
||||||
|
var crystals = req.body.crystals;
|
||||||
var cards = req.body.cards;
|
var cards = req.body.cards;
|
||||||
var packs = req.body.packs;
|
var packs = req.body.packs;
|
||||||
var decks = req.body.decks;
|
var decks = req.body.decks;
|
||||||
@@ -25,6 +27,10 @@ exports.AddReward = async(req, res) =>
|
|||||||
return res.status(400).send({error: "Invalid parameters"});
|
return res.status(400).send({error: "Invalid parameters"});
|
||||||
if(coins && !Number.isInteger(coins))
|
if(coins && !Number.isInteger(coins))
|
||||||
return res.status(400).send({error: "Invalid parameters"});
|
return res.status(400).send({error: "Invalid parameters"});
|
||||||
|
if(cardfragments && !Number.isInteger(cardfragments))
|
||||||
|
return res.status(400).send({error: "Invalid parameters"});
|
||||||
|
if(crystals && !Number.isInteger(crystals))
|
||||||
|
return res.status(400).send({error: "Invalid parameters"});
|
||||||
if(cards && !Array.isArray(cards))
|
if(cards && !Array.isArray(cards))
|
||||||
return res.status(400).send({error: "Invalid parameters"});
|
return res.status(400).send({error: "Invalid parameters"});
|
||||||
if(packs && !Array.isArray(packs))
|
if(packs && !Array.isArray(packs))
|
||||||
@@ -42,6 +48,8 @@ exports.AddReward = async(req, res) =>
|
|||||||
repeat: repeat || false,
|
repeat: repeat || false,
|
||||||
xp: xp || 0,
|
xp: xp || 0,
|
||||||
coins: coins || 0,
|
coins: coins || 0,
|
||||||
|
cardfragments: cardfragments || 0,
|
||||||
|
crystals: crystals || 0,
|
||||||
cards: cards || [],
|
cards: cards || [],
|
||||||
packs: packs || [],
|
packs: packs || [],
|
||||||
decks: decks || [],
|
decks: decks || [],
|
||||||
|
|||||||
@@ -9,6 +9,8 @@ const rewardSchema = new Schema({
|
|||||||
|
|
||||||
xp: { type: Number, default: 0 },
|
xp: { type: Number, default: 0 },
|
||||||
coins: { type: Number, default: 0 },
|
coins: { type: Number, default: 0 },
|
||||||
|
cardfragments: { type: Number, default: 0 },
|
||||||
|
crystals: { type: Number, default: 0 },
|
||||||
cards: [{type: String}],
|
cards: [{type: String}],
|
||||||
packs: [{type: String}],
|
packs: [{type: String}],
|
||||||
decks: [{type: String}],
|
decks: [{type: String}],
|
||||||
|
|||||||
@@ -86,6 +86,7 @@ exports.DeleteDeck = async(req, res) => {
|
|||||||
return res.status(200).send(upUser.decks);
|
return res.status(200).send(upUser.decks);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// 购买卡片
|
||||||
exports.BuyCard = async (req, res) => {
|
exports.BuyCard = async (req, res) => {
|
||||||
|
|
||||||
const userId = req.jwt.userId;
|
const userId = req.jwt.userId;
|
||||||
@@ -117,17 +118,17 @@ exports.BuyCard = async (req, res) => {
|
|||||||
var variant = await VariantModel.get(variantId);
|
var variant = await VariantModel.get(variantId);
|
||||||
var factor = variant != null ? variant.cost_factor : 1;
|
var factor = variant != null ? variant.cost_factor : 1;
|
||||||
var cost = quantity * factor * card.cost;
|
var cost = quantity * factor * card.cost;
|
||||||
if(user.coins < cost)
|
if(user.cardfragments < cost)
|
||||||
return res.status(400).send({ error: "Not enough coins" });
|
return res.status(400).send({ error: "Not enough cardfragments" });
|
||||||
|
|
||||||
user.coins -= cost;
|
user.cardfragments -= cost;
|
||||||
|
|
||||||
var valid = await UserTool.addCards(user, [{tid: cardId, variant: variantId, quantity: quantity}]);
|
var valid = await UserTool.addCards(user, [{tid: cardId, variant: variantId, quantity: quantity}]);
|
||||||
if (!valid)
|
if (!valid)
|
||||||
return res.status(500).send({ error: "Error when adding cards" });
|
return res.status(500).send({ error: "Error when adding cards" });
|
||||||
|
|
||||||
//Update the user array
|
//Update the user array
|
||||||
var updatedUser = await UserModel.save(user, ["coins", "cards"]);
|
var updatedUser = await UserModel.save(user, ["cardfragments", "cards"]);
|
||||||
if (!updatedUser) return res.status(500).send({ error: "Error updating user: " + userId });
|
if (!updatedUser) return res.status(500).send({ error: "Error updating user: " + userId });
|
||||||
|
|
||||||
// Activity Log -------------
|
// Activity Log -------------
|
||||||
@@ -175,14 +176,14 @@ exports.SellCard = async (req, res) => {
|
|||||||
|
|
||||||
var factor = variant != null ? variant.cost_factor : 1;
|
var factor = variant != null ? variant.cost_factor : 1;
|
||||||
var cost = quantity * Math.round(card.cost * factor * config.sell_ratio);
|
var cost = quantity * Math.round(card.cost * factor * config.sell_ratio);
|
||||||
user.coins += cost;
|
user.cardfragments += cost;
|
||||||
|
|
||||||
var valid = await UserTool.addCards(user, [{tid: cardId, variant: variantId, quantity: -quantity}]);
|
var valid = await UserTool.addCards(user, [{tid: cardId, variant: variantId, quantity: -quantity}]);
|
||||||
if (!valid)
|
if (!valid)
|
||||||
return res.status(500).send({ error: "Error when removing cards" });
|
return res.status(500).send({ error: "Error when removing cards" });
|
||||||
|
|
||||||
//Update the user array
|
//Update the user array
|
||||||
var updatedUser = await UserModel.save(user, ["coins", "cards"]);
|
var updatedUser = await UserModel.save(user, ["cardfragments", "cards"]);
|
||||||
if (!updatedUser) return res.status(500).send({ error: "Error updating user: " + userId });
|
if (!updatedUser) return res.status(500).send({ error: "Error updating user: " + userId });
|
||||||
|
|
||||||
// Activity Log -------------
|
// Activity Log -------------
|
||||||
@@ -224,7 +225,7 @@ exports.SellDuplicateCards = async (req, res) => {
|
|||||||
return res.status(404).send({ error: "Cant find cards" });
|
return res.status(404).send({ error: "Cant find cards" });
|
||||||
|
|
||||||
var cards_to_sell = [];
|
var cards_to_sell = [];
|
||||||
var coins = 0;
|
var cardfragments = 0;
|
||||||
for(var i=0; i<user.cards.length; i++)
|
for(var i=0; i<user.cards.length; i++)
|
||||||
{
|
{
|
||||||
var card = user.cards[i];
|
var card = user.cards[i];
|
||||||
@@ -241,7 +242,7 @@ exports.SellDuplicateCards = async (req, res) => {
|
|||||||
var factor = variant != null ? variant.cost_factor : 1;
|
var factor = variant != null ? variant.cost_factor : 1;
|
||||||
var cost = quantity * Math.round(card_data.cost * factor * config.sell_ratio);
|
var cost = quantity * Math.round(card_data.cost * factor * config.sell_ratio);
|
||||||
cards_to_sell.push(sell);
|
cards_to_sell.push(sell);
|
||||||
coins += cost;
|
cardfragments += cost;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -250,14 +251,14 @@ exports.SellDuplicateCards = async (req, res) => {
|
|||||||
if(cards_to_sell.length == 0)
|
if(cards_to_sell.length == 0)
|
||||||
return res.status(200).send();
|
return res.status(200).send();
|
||||||
|
|
||||||
user.coins += coins;
|
user.cardfragments += cardfragments;
|
||||||
|
|
||||||
var valid = await UserTool.addCards(user, cards_to_sell);
|
var valid = await UserTool.addCards(user, cards_to_sell);
|
||||||
if (!valid)
|
if (!valid)
|
||||||
return res.status(500).send({ error: "Error when removing cards" });
|
return res.status(500).send({ error: "Error when removing cards" });
|
||||||
|
|
||||||
//Update the user array
|
//Update the user array
|
||||||
var updatedUser = await UserModel.save(user, ["coins", "cards"]);
|
var updatedUser = await UserModel.save(user, ["cardfragments", "cards"]);
|
||||||
if (!updatedUser) return res.status(500).send({ error: "Error updating user: " + userId });
|
if (!updatedUser) return res.status(500).send({ error: "Error updating user: " + userId });
|
||||||
|
|
||||||
// Activity Log -------------
|
// Activity Log -------------
|
||||||
@@ -269,6 +270,7 @@ exports.SellDuplicateCards = async (req, res) => {
|
|||||||
return res.status(200).send();
|
return res.status(200).send();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// 购买卡包 TODO 金币&钻石
|
||||||
exports.BuyPack = async (req, res) => {
|
exports.BuyPack = async (req, res) => {
|
||||||
|
|
||||||
const userId = req.jwt.userId;
|
const userId = req.jwt.userId;
|
||||||
|
|||||||
@@ -60,6 +60,8 @@ exports.RegisterUser = async (req, res, next) => {
|
|||||||
user.validation_level = validation;
|
user.validation_level = validation;
|
||||||
|
|
||||||
user.coins = config.start_coins;
|
user.coins = config.start_coins;
|
||||||
|
user.cardfragments = config.start_cardfragments;
|
||||||
|
user.crystals = config.start_crystals;
|
||||||
user.elo = config.start_elo;
|
user.elo = config.start_elo;
|
||||||
user.xp = 0;
|
user.xp = 0;
|
||||||
|
|
||||||
@@ -470,7 +472,7 @@ exports.GainReward = async(req, res) =>
|
|||||||
return res.status(500).send({error: "Failed adding reward: " + rewardId + " for " + userId});
|
return res.status(500).send({error: "Failed adding reward: " + rewardId + " for " + userId});
|
||||||
|
|
||||||
//Update the user
|
//Update the user
|
||||||
var updatedUser = await UserModel.save(user, ["rewards", "xp", "coins", "cards", "decks", "avatars", "cardbacks"]);
|
var updatedUser = await UserModel.save(user, ["rewards", "xp", "coins", "cardfragments", "cards", "decks", "avatars", "cardbacks"]);
|
||||||
if (!updatedUser) return res.status(500).send({ error: "Error updating user: " + userId });
|
if (!updatedUser) return res.status(500).send({ error: "Error updating user: " + userId });
|
||||||
|
|
||||||
//Log activity
|
//Log activity
|
||||||
|
|||||||
@@ -21,6 +21,8 @@ const userSchema = new Schema({
|
|||||||
avatar: {type: String, default: ""},
|
avatar: {type: String, default: ""},
|
||||||
cardback: {type: String, default: ""},
|
cardback: {type: String, default: ""},
|
||||||
coins: {type: Number, default: 0},
|
coins: {type: Number, default: 0},
|
||||||
|
cardfragments: {type: Number, default: 0},
|
||||||
|
crystals: {type: Number, default: 0},
|
||||||
xp: {type: Number, default: 0},
|
xp: {type: Number, default: 0},
|
||||||
elo: {type: Number, default: 1000},
|
elo: {type: Number, default: 1000},
|
||||||
|
|
||||||
|
|||||||
@@ -33,6 +33,8 @@ UserTool.GainUserReward = async(user, reward) =>
|
|||||||
{
|
{
|
||||||
//Add reward to user
|
//Add reward to user
|
||||||
user.coins += reward.coins || 0;
|
user.coins += reward.coins || 0;
|
||||||
|
user.cardfragments += reward.cardfragments || 0;
|
||||||
|
user.crystals += reward.crystals || 0;
|
||||||
user.xp += reward.xp || 0;
|
user.xp += reward.xp || 0;
|
||||||
|
|
||||||
UserTool.addAvatars(user, reward.avatars);
|
UserTool.addAvatars(user, reward.avatars);
|
||||||
|
|||||||
Reference in New Issue
Block a user