chore(release): 0.3.6
[risinglegends.git] / src / server / chat-commands.ts
1 import { Server } from 'socket.io';
2 import { maxHp, maxVigor, Player } from '../shared/player';
3 import { createMonsters } from '../../seeds/monsters';
4 import { createAllCitiesAndLocations } from '../../seeds/cities';
5 import { createShopItems, createShopEquipment } from '../../seeds/shop_items';
6 import { broadcastMessage, Message } from '../shared/message';
7 import { updatePlayer } from './player';
8
9 export async function handleChatCommands(msg: string, player: Player, io: Server): Promise<Message> {
10   let message: Message;
11   if(msg === '/server refresh-monsters') {
12     await createMonsters();
13     message = broadcastMessage('server', 'Monster refresh!');
14   }
15   else if(msg === '/server refresh-cities') {
16     await createAllCitiesAndLocations();
17     message = broadcastMessage('server', 'Cities, Locations, and Paths refreshed!');
18   }
19   else if(msg === '/server refresh-shops') {
20     await createShopItems();
21     await createShopEquipment();
22     message = broadcastMessage('server', 'Refresh shop items');
23   }
24   else if(msg.startsWith('/server set-level')) {
25     const level = parseInt(msg.split(' ').pop());
26     if(level < 1) {
27       message = broadcastMessage('server', 'Needs to be at least level 1');
28     }
29     else {
30       message = broadcastMessage('server', `Set player level: ${level}`);
31
32       player.level = level;
33       player.strength = 4;
34       player.constitution = 4;
35       player.dexterity = 4;
36       player.intelligence = 4;
37       player.hp = maxHp(player.constitution, player.level);
38       player.vigor = maxVigor(player.constitution, player.level);
39       player.stat_points = level-1;
40
41       await updatePlayer(player);
42     }
43   }
44   else {
45     const str = msg.split('/server ')[1];
46     if(str) {
47       message = broadcastMessage('server', str);
48     }
49   }
50
51   return message;
52 }