2018-02-25 21:58:31 -05:00
/ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
2018-02-25 13:08:19 -05:00
*
* Claim : Plugin for PokeBot that powers the PokeWorld gym system .
* Copyright ( C ) 2018 TheEdge , jtsshieh , Alee
*
* This program is free software : you can redistribute it and / or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation , either version 3 of the License , or
* ( at your option ) any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with this program . If not , see < http : //www.gnu.org/licenses/>.
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
2018-02-24 21:22:16 -05:00
exports . run = async ( bot , msg ) => {
2018-03-30 21:13:41 -04:00
const isWhitelist = await bot . plugins . isWhitelist ( msg . guild . id ) ;
if ( isWhitelist ) return msg . reply ( 'This is a Whiltelisted command. Get your server whitelisted by joining our server at https://discord.me/thedigitalregion and asking in the general channel. Sorry!' ) ;
2018-02-24 21:40:27 -05:00
if ( ! msg . channel . name . startsWith ( 'gym-' ) ) return msg . reply ( 'Go into one of the gym channels and try again.' ) ;
2018-02-24 21:22:16 -05:00
if ( msg . channel . topic == 'Current Owner: *none*' ) {
2018-02-24 22:19:33 -05:00
let team ;
2018-03-27 19:37:54 -04:00
if ( msg . member . roles . find ( 'name' , 'Skull' ) ) team = 'Skull' ;
if ( msg . member . roles . find ( 'name' , 'Flare' ) ) team = 'Flare' ;
2018-02-24 22:19:33 -05:00
if ( ! team ) return msg . reply ( 'You have to join a team before you can claim a gym.' ) ;
2018-02-24 22:21:27 -05:00
msg . reply ( 'Alright, you have claimed this gym as yours! Be ready to battle anyone who approaches you' ) ;
2018-02-24 22:19:33 -05:00
msg . channel . setTopic ( 'Current Owner: ' + msg . author . id + '/' + msg . author . tag + '/' + team ) ;
2018-02-24 21:22:16 -05:00
}
else {
2018-02-24 22:19:33 -05:00
let team ;
2018-03-27 19:37:54 -04:00
if ( msg . member . roles . find ( 'name' , 'Skull' ) ) team = 'Skull' ;
if ( msg . member . roles . find ( 'name' , 'Flare' ) ) team = 'Flare' ;
2018-02-24 22:19:33 -05:00
if ( ! team ) return msg . reply ( 'You have to join a team before you can claim a gym.' ) ;
2018-02-24 21:36:52 -05:00
const owner = msg . channel . topic . slice ( 15 ) . substring ( 0 , 18 ) ;
2018-02-24 22:24:34 -05:00
if ( msg . guild . members . find ( 'id' , owner ) . roles . find ( 'name' , team ) ) return msg . reply ( 'Don\'t try battling your own team. They won\'t like you.' ) ;
2018-03-27 20:03:27 -04:00
if ( bot . gyms . get ( msg . channel . id ) != null ) return msg . reply ( 'Nope, someone is already battling the gym.' ) ;
2018-02-24 21:26:44 -05:00
msg . channel . send ( '<@' + owner + '>, come here as ' + msg . member . displayName + ' wants to battle you.' ) ;
2018-03-18 19:53:23 -04:00
const func = async mess => {
2018-03-18 19:13:33 -04:00
if ( mess . channel != msg . channel ) return ;
2018-03-10 16:21:01 -05:00
let field = mess . embeds [ 0 ] ;
if ( ! field ) return ;
field = field . description ;
if ( ! field ) return ;
field = field . split ( '\n' ) [ 0 ] ;
if ( ! field ) return ;
field = field . split ( ' ' ) [ 0 ] ;
2018-03-10 16:04:21 -05:00
if ( field != undefined ) {
const user = msg . guild . members . find ( member => member . user . username === field ) ;
if ( user != undefined ) {
2018-03-10 16:38:51 -05:00
if ( user . id == owner ) {
2018-03-10 16:41:12 -05:00
await msg . channel . send ( 'The owner has not been defeated!' ) ;
2018-03-27 20:12:02 -04:00
bot . gyms . set ( msg . channel . id , null ) ;
2018-03-18 19:53:23 -04:00
bot . removeListener ( 'message' , func ) ;
2018-03-10 16:38:51 -05:00
}
2018-03-10 16:21:01 -05:00
if ( user . id == msg . author . id ) {
2018-03-27 20:03:27 -04:00
await msg . channel . send ( 'The owner has been defeated! Transferring gym!' ) ;
2018-03-10 16:04:21 -05:00
let recipientTeam ;
2018-03-27 19:37:54 -04:00
if ( msg . member . roles . find ( 'name' , 'Skull' ) ) recipientTeam = 'Skull' ;
if ( msg . member . roles . find ( 'name' , 'Flare' ) ) recipientTeam = 'Flare' ;
2018-03-10 16:41:12 -05:00
await msg . channel . setTopic ( 'Current Owner: ' + msg . member . id + '/' + msg . author . tag + '/' + recipientTeam ) ;
2018-03-27 20:03:27 -04:00
bot . gyms . set ( msg . channel . id , null ) ;
2018-03-18 19:53:23 -04:00
bot . removeListener ( 'message' , func ) ;
2018-03-10 16:04:21 -05:00
}
}
}
2018-03-18 19:53:23 -04:00
} ;
2018-03-27 20:03:27 -04:00
bot . gyms . set ( msg . channel . id , func ) ;
2018-03-18 19:53:23 -04:00
bot . on ( 'message' , func ) ;
2018-02-24 21:22:16 -05:00
}
} ;
exports . conf = {
aliases : [ ] ,
guildOnly : true ,
} ;
exports . help = {
name : 'claim' ,
description : 'Claim a gym.' ,
} ;