Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 0 additions & 20 deletions connection.js

This file was deleted.

110 changes: 57 additions & 53 deletions core/arena/arena.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
const Gladiator = require('./gladiator');
const querySql = require('../../connection');
const knex = require('../../utils/knex');
const colosseum = require('../colosseum');

class Arena {
Expand Down Expand Up @@ -104,65 +104,69 @@ class Arena {
}

endArena(winner, loser) {
querySql(`
SELECT
Experience,
Level,
Wins,
Losses
FROM Levels
WHERE UserID = ${winner.id}
`)
.then((results) => {
const xp = results[ 0 ].Experience;
const awardedXp = 20;
let query;
if (xp + awardedXp > 99) {
query = `
UPDATE \`GladiatorBot\`.\`Levels\`
SET \`Experience\` = 0,
\`Level\` = Level + 1,
\`Wins\` = Wins + 1,
\`Streak\` = Streak + 1
WHERE \`UserId\` = ${winner.id};

UPDATE \`GladiatorBot\`.\`Levels\`
SET \`Losses\` = Losses + 1,
\`Streak\` = Streak = 0
WHERE \`UserId\` = ${loser.id};
`;
colosseum.send(`${winner.userObject} is now level ${results[0].Level + 1}!`);
colosseum.send(`.tip 250 ${winner.userObject} Congratulations champion!`)
} else {
query = `
UPDATE \`GladiatorBot\`.\`Levels\`
SET \`Experience\` = Experience + ${awardedXp},
\`Wins\` = Wins + 1,
\`Streak\` = Streak + 1
WHERE \`UserId\` = ${winner.id};

UPDATE \`GladiatorBot\`.\`Levels\`
SET \`Losses\` = Losses + 1,
\`Streak\` = Streak = 0
WHERE \`UserId\` = ${loser.id};
`;
colosseum.send(`${winner.userObject} is only ${100 - (xp + 20)}xp from reaching level ${results[0].Level + 1}!`);
colosseum.send(`.tip 250 ${winner.userObject} Congratulations champion!`)
}
return querySql(query)
knex('levels')
.select('Experience', 'Level', 'Wins', 'Losses')
.where('UserID', winner.id)
.then((results) => {

const xp = results[0].Experience;
const awardedXp = 20;

const loser = knex('Levels')
.update({
Losses: knex.raw('Losses + 1'),
Streak: 0
})
('UserID', loser.id)

let levelMessage

if (xp + awardedXp > 99) {

const winner = knex('Levels')
.update({
Experience: 0,
Level: knex.raw('Level + 1'),
Wins: knex.raw('Wins + 1'),
Streak = knex.raw('Streak + 1')
})
.where('UserID', winner.id)

levelMessage = `${winner.userObject} is now level ${results[0].Level + 1}!`;

} else {

const winner = knex('Levels')
.update({
Experience: awardedXp,
Wins: knex.raw('Wins + 1'),
Streak = knex.raw('Streak + 1')
})
.where('UserID', winner.id)

levelMessage = `${winner.userObject} is only ${100 - (xp + 20)}xp from reaching level ${results[0].Level + 1}!`;
}


Promise.all([winner, loser])
.then(result => {

colosseum.send(levelMessage);
colosseum.send(`.tip 250 ${winner.userObject} Congratulations champion!`)

})
.then(() => {
console.log(`Updated ${winner.id}`);
})
.catch(console.error);
})


return {
message: 'WIN',
winner,
loser
}
return {
message: 'WIN',
winner,
loser
}
}

attackHead(attackingUser) {
return this._attackGladiator(attackingUser, this.attacks.head);
Expand Down
3 changes: 3 additions & 0 deletions core/arena/challenges.js
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,10 @@ class Challenges {
break;
}
}

if (found) {
const fightStarted = arena.startFight(found.challenger, found.target);

if (fightStarted) {
this.challenges.splice(idx, 1);
return {
Expand All @@ -50,6 +52,7 @@ class Challenges {
success: false,
message: 'NO_CHALLENGE'
};

}
}
}
Expand Down
33 changes: 20 additions & 13 deletions core/commands/accept/handler.js
Original file line number Diff line number Diff line change
@@ -1,30 +1,37 @@
const randomElement = require('../../../utils/get-random-element');
const parseVariables = require('../../response-variables');
const challenges = require('../../arena/challenges');
const querySql = require('../../../connection.js');
const knex = require('../../../utils/knex');
const MessageController = require('../message-controller');

class AcceptCommand extends MessageController {

constructor() {
super();
this.cooldown = 1000;
}

handler(message) {
message.delete(10000);
querySql(`INSERT IGNORE INTO Levels (userId) VALUES (${message.author.id})`).catch(console.error);
if (this.lastUsed + this.cooldown > Date.now()) return;

const challenge = challenges.acceptChallenge(message.author);
message.delete(10000);

if (challenge.success) {
message.channel.send(`${challenge.data.challenger} and ${challenge.data.target} step into the arena. Use the commands *head *body or *legs to attack your opponent!`);
} else {
// could handle challenge.message responses here if desired. could get spammy though
console.log(challenge);
message.channel.send(`You can't accept that challenge right now. Either you weren't challenged or a battle is already ongoing`)
}
knew.raw(knex('levels').insert({ userId: message.author.id }).toString().replace('insert', 'INSERT IGNORE'))
.then(result => {
if (this.lastUsed + this.cooldown > Date.now()) return;

this.lastUsed = Date.now();
const challenge = challenges.acceptChallenge(message.author);

if (challenge.success) {
message.channel.send(`${challenge.data.challenger} and ${challenge.data.target} step into the arena. Use the commands *head *body or *legs to attack your opponent!`);
} else {
// could handle challenge.message responses here if desired. could get spammy though
console.log(challenge);
message.channel.send(`You can't accept that challenge right now. Either you weren't challenged or a battle is already ongoing`)
}

this.lastUsed = Date.now();
})
.catch(console.error);
}
}

Expand Down
46 changes: 27 additions & 19 deletions core/commands/challenge/handler.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,39 +3,47 @@ const randomElement = require('../../../utils/get-random-element');
const parseVariables = require('../../response-variables');
const challenges = require('../../arena/challenges');
const arena = require('../../arena/arena');
const querySql = require('../../../connection.js');
const knex = require('../../../utils/knex');
const MessageController = require('../message-controller');

class ChallengeCommand extends MessageController {

constructor() {
super();
this.cooldown = 5000;
}

handler(message) {

message.delete(1000);

if (this.lastUsed + this.cooldown > Date.now()) return;
this.lastUsed = Date.now();

querySql(`INSERT IGNORE INTO Levels (userId) VALUES (${message.author.id})`).catch(console.error);
const target = message.mentions.users.first();
if (arena.inProgress === true) {
message.channel.send(`${message.author} there is already a battle in progress. Please wait for it to finish before issuing your challenge`);
knew.raw(knex('levels').insert({ userId: message.author.id }).toString().replace('insert', 'INSERT IGNORE'))
.then(result => {
const target = message.mentions.users.first();
if (arena.inProgress === true) {
message.channel.send(`${message.author} there is already a battle in progress. Please wait for it to finish before issuing your challenge`);
return;
}
if (target && message.author.id === target.id) {
message.channel.send(`${message.author} if you want to fall on your own sword, please do it elsewhere`);
return;
}
if (target && message.author.id === target.id) {
message.channel.send(`${message.author} if you want to fall on your own sword, please do it elsewhere`);
return;
}

const mention = message.mentions.users.size > 0;
let response = randomElement(responses[mention ? 'mention' : 'noMention']);
response = parseVariables(response, message);
message.channel.send(response);

if (mention) {
challenges.addChallenge(message.author, message.mentions.users.first());
}
}
const mention = message.mentions.users.size > 0;
let response = randomElement(responses[mention ? 'mention' : 'noMention']);
response = parseVariables(response, message);
message.channel.send(response);

if (mention) {
challenges.addChallenge(message.author, message.mentions.users.first());
}
})
.catch(err => {
console.log(err)
})
}
}

Expand Down
6 changes: 3 additions & 3 deletions core/commands/help/handler.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,10 @@ class HelpCommand extends MessageController {

And may the odds be *ever* in your favour!
` );
message.channel.send(`To contribute to my prize fund, tip me directly!`);

message.channel.send(`To contribute to my prize fund, tip me directly!`);
this.lastUsed = Date.now();
}

}
}

module.exports = new HelpCommand();
19 changes: 8 additions & 11 deletions core/commands/leader/handler.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ const randomElement = require('../../../utils/get-random-element');
const parseVariables = require('../../response-variables');
const challenges = require('../../arena/challenges');
const arena = require('../../arena/arena');
const querySql = require('../../../connection.js');
const knex = require('../../../utils/knex');
const MessageController = require('../message-controller');
const colosseum = require('../../colosseum');

Expand All @@ -15,15 +15,13 @@ class LevelCommand extends MessageController {
handler(message) {
message.delete(1000);
if (this.lastUsed + this.cooldown > Date.now()) return;

this.lastUsed = Date.now();
querySql(`
SELECT UserId,
Wins,
Losses
FROM Levels
ORDER BY Wins DESC
LIMIT 10
`)

knex('levels')
.select('UserId', 'Wins', 'Losses')
.orderBy('Wins', 'desc')
.limit(10)
.then((results) => {
const users = results.map((user) => {
return Object.assign({}, user, {
Expand All @@ -41,8 +39,7 @@ class LevelCommand extends MessageController {
const username = user.userObject ? (user.userObject.nickname || user.userObject.user.username) : 'Unknown';

// prepend each users message with a new line. Have to remove all indentation for this message
message += `
${i}. ${username}. Wins: ${user.Wins}, Losses: ${user.Losses}`;
message += `${i}. ${username}. Wins: ${user.Wins}, Losses: ${user.Losses}`;

// Increment the leader number
i++;
Expand Down
34 changes: 15 additions & 19 deletions core/commands/level/handler.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ const randomElement = require('../../../utils/get-random-element');
const parseVariables = require('../../response-variables');
const challenges = require('../../arena/challenges');
const arena = require('../../arena/arena');
const querySql = require('../../../connection.js');
const knex = require('../../../utils/knex');
const MessageController = require('../message-controller');

class LevelCommand extends MessageController {
Expand All @@ -13,25 +13,21 @@ class LevelCommand extends MessageController {

handler(message) {
message.delete(1000);
querySql(`INSERT IGNORE INTO Levels (userId) VALUES (${message.author.id})`)
.then(() => querySql(`
SELECT Level,
Wins,
Losses,
Streak
FROM Levels
WHERE UserID = ${message.author.id}
`))

.then((results) => {
const level = results[0] ? results[ 0 ].Level : 0;
const wins = results[0] ? results[ 0 ].Wins : 0;
const losses = results[0] ? results[ 0 ].Losses : 0;
const streak = results[0] ? results[ 0 ].Streak : 0;
message.reply(`You are currently Level ${level} with a winning streak of ${streak} and a total of ${wins} wins and ${losses} losses!`);
})
.catch(console.error);

const insertLevel = knew.raw(knex('levels').insert({ userId: message.author.id }).toString().replace('insert', 'INSERT IGNORE'))
const selectLevel = knex('levels').select('Level', 'Wins', 'Losses', 'Streak').where('UserID', message.author.id)

Promise.all([insertLevel, selectLevel])
.then(function(insertResult, selectResult) {

const level = selectResult[0] ? selectResult[0].Level : 0;
const wins = selectResult[0] ? selectResult[0].Wins : 0;
const losses = selectResult[0] ? selectResult[0].Losses : 0;
const streak = selectResult[0] ? selectResult[0].Streak : 0;

message.reply(`You are currently Level ${level} with a winning streak of ${streak} and a total of ${wins} wins and ${losses} losses!`);
})
.catch(console.error);

if (this.lastUsed + this.cooldown > Date.now()) return;

Expand Down
Loading