diff --git a/data/aliases.ts b/data/aliases.ts index 33af770439..4ad093acfe 100644 --- a/data/aliases.ts +++ b/data/aliases.ts @@ -409,6 +409,34 @@ export const BattleAliases: {[alias: string]: string} = { miniorblue: "Minior", miniorindigo: "Minior", miniorviolet: "Minior", + unownb: "Unown", + unownc: "Unown", + unownd: "Unown", + unowne: "Unown", + unownf: "Unown", + unowng: "Unown", + unownh: "Unown", + unowni: "Unown", + unownj: "Unown", + unownk: "Unown", + unownl: "Unown", + unownm: "Unown", + unownn: "Unown", + unowno: "Unown", + unownp: "Unown", + unownq: "Unown", + unownr: "Unown", + unowns: "Unown", + unownt: "Unown", + unownu: "Unown", + unownv: "Unown", + unownw: "Unown", + unownx: "Unown", + unowny: "Unown", + unownz: "Unown", + unownexclamation: "Unown", + unownquestion: "Unown", + pokestargiant2: "Pokestar Giant", pokestarmonica2: "Pokestar Giant", pokestarufopropu1: "Pokestar UFO", diff --git a/server/ladders.ts b/server/ladders.ts index 587fe43c7f..6f574e3010 100644 --- a/server/ladders.ts +++ b/server/ladders.ts @@ -103,10 +103,15 @@ class Ladder extends LadderStore { return null; } - const regex = /(?:^|])([^|]*)\|/g; + const regex = /(?:^|])([^|]*)\|([^|]*)\|/g; let match = regex.exec(team); + let unownWord = ''; while (match) { let nickname = match[1]; + const speciesid = toID(match[2] || match[1]); + if (speciesid.length <= 6 && speciesid.startsWith('unown')) { + unownWord += speciesid.charAt(5) || 'a'; + } if (nickname) { nickname = Chat.nicknamefilter(nickname, user); if (!nickname || nickname !== match[1]) { @@ -119,6 +124,16 @@ class Ladder extends LadderStore { } match = regex.exec(team); } + if (unownWord) { + const filtered = Chat.nicknamefilter(unownWord, user); + if (!filtered || filtered !== unownWord) { + connection.popup( + `Your team was rejected for the following reason:\n\n` + + `- Your Unowns spell out a banned word: ${unownWord.toUpperCase()}` + ); + return null; + } + } let rating = 0; let valResult;