1 import { ChatCommand } from './base';
2 import { Socket } from 'socket.io';
3 import { broadcastMessage, Message } from '../../shared/message';
4 import { renderChatMessage } from './../views/chat';
5 import { updatePlayer } from '../player';
6 import { maxHp, maxVigor, Player } from '../../shared/player';
8 async function handler(rawCommand: string, sender: Socket, player: Player) {
9 if(player.permissions.includes('admin') || player.permissions.includes('tester')) {
11 // command in set-level username level
12 const pieces = rawCommand.split(' ');
13 if(pieces.length !== 2) {
14 message = broadcastMessage('server', 'format: /set-level level');
17 const level = parseInt(pieces.pop() || '0');
19 message = broadcastMessage('server', 'format: /set-level [level >= 1]');
22 message = broadcastMessage('server', `Set to level ${level}. Please reload.`);
26 player.constitution = 4;
28 player.intelligence = 4;
29 player.hp = maxHp(player.constitution, player.level);
30 player.vigor = maxVigor(player.constitution, player.level);
31 player.stat_points = level-1;
33 await updatePlayer(player);
37 sender.emit('chat', renderChatMessage(message));
42 export const setLevel = new ChatCommand('set-level', new RegExp(/^set-level \d+$/), handler);