updated version
This commit is contained in:
parent
2a2d6d0305
commit
3041ae7d08
|
@ -4,7 +4,13 @@
|
|||
* Cleaned up top menu
|
||||
* Post Ads and Ad Editor have been merged together into My Ads
|
||||
* Profile Helper now only shows up if you have anything to fix; otherwise the profile helper can be found in the Settings menu
|
||||
* Channel owners can now add `[ads: 30min]` in the channel description to control how often Rising can auto-post ads on the channel
|
||||
|
||||
## 1.24.0
|
||||
* Channel owners can now add `[ads: 30min]` in the channel description to limit how often Rising auto-posts ads on the channel
|
||||
* Neko/mimi species are now considered human, not anthro
|
||||
* Fixed a bug that prevented the client from occasionally recognizing gender preferences
|
||||
* Fixed more random freezes
|
||||
* New URL: https://hearmeneigh.github.io/fchat-rising/
|
||||
|
||||
## 1.23.5
|
||||
* Fixed random freezes caused by profile cache
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
# Download
|
||||
[Windows](https://github.com/hearmeneigh/fchat-rising/releases/download/v1.23.5/F-Chat-Rising-1.23.5-win.exe) (82 MB)
|
||||
| [MacOS Intel](https://github.com/hearmeneigh/fchat-rising/releases/download/v1.23.5/F-Chat-Rising-1.23.5-macos-intel.dmg) (82 MB)
|
||||
| [MacOS M1](https://github.com/hearmeneigh/fchat-rising/releases/download/v1.23.5/F-Chat-Rising-1.23.5-macos-m1.dmg) (84 MB)
|
||||
| [Linux](https://github.com/hearmeneigh/fchat-rising/releases/download/v1.23.5/F-Chat-Rising-1.23.5-linux.AppImage) (82 MB)
|
||||
[Windows](https://github.com/hearmeneigh/fchat-rising/releases/download/v1.24.0/F-Chat-Rising-1.24.0-win.exe) (82 MB)
|
||||
| [MacOS Intel](https://github.com/hearmeneigh/fchat-rising/releases/download/v1.24.0/F-Chat-Rising-1.24.0-macos-intel.dmg) (82 MB)
|
||||
| [MacOS M1](https://github.com/hearmeneigh/fchat-rising/releases/download/v1.24.0/F-Chat-Rising-1.24.0-macos-m1.dmg) (84 MB)
|
||||
| [Linux](https://github.com/hearmeneigh/fchat-rising/releases/download/v1.24.0/F-Chat-Rising-1.24.0-linux.AppImage) (82 MB)
|
||||
|
||||
|
||||
# F-Chat Rising
|
||||
|
|
|
@ -89,6 +89,25 @@ export class AdManager {
|
|||
);
|
||||
}
|
||||
|
||||
private determineNextAdDelayMs(chanConv: Conversation.ChannelConversation): number {
|
||||
const match = chanConv.channel.description.toLowerCase().match(/\[\s*ads:\s*([0-9.]+)\s*(m|min|minutes?|h|hr|hours?|s|secs?|seconds?)\s*]/);
|
||||
|
||||
if (!match) {
|
||||
return AdManager.POST_DELAY;
|
||||
}
|
||||
|
||||
const n = _.toNumber(match[1]);
|
||||
let mul = 1000; // seconds
|
||||
|
||||
if (match[2].substr(0, 1) === 'h') {
|
||||
mul = 60 * 60 * 1000; // hours
|
||||
} else if (match[2].substr(0, 1) === 'm') {
|
||||
mul = 60 * 1000; // minutes
|
||||
}
|
||||
|
||||
return Math.max((n * mul) - (Date.now() - chanConv.nextAd), AdManager.POST_DELAY);
|
||||
}
|
||||
|
||||
private async sendNextPost(): Promise<void> {
|
||||
const msg = this.getNextAd();
|
||||
|
||||
|
@ -103,7 +122,7 @@ export class AdManager {
|
|||
|
||||
// post next ad every 12 - 22 minutes
|
||||
const nextInMs = Math.max(0, (chanConv.nextAd - Date.now())) +
|
||||
AdManager.POST_DELAY +
|
||||
this.determineNextAdDelayMs(chanConv) +
|
||||
Math.random() * AdManager.POST_VARIANCE;
|
||||
|
||||
this.adIndex = this.adIndex + 1;
|
||||
|
|
|
@ -50,7 +50,7 @@ theme: jekyll-theme-slate
|
|||
changelog: https://github.com/hearmeneigh/fchat-rising/blob/master/CHANGELOG.md
|
||||
|
||||
download:
|
||||
version: 1.23.5
|
||||
version: 1.24.0
|
||||
|
||||
url: https://github.com/hearmeneigh/fchat-rising/releases/download/v%VERSION%/F-Chat-Rising-%VERSION%-%PLATFORM_TAIL%
|
||||
|
||||
|
|
|
@ -144,6 +144,7 @@
|
|||
|
||||
import BBCodeTester from '../bbcode/Tester.vue';
|
||||
import { BBCodeView } from '../bbcode/view';
|
||||
import { EIconStore } from '../learn/eicon/store';
|
||||
|
||||
// import ImagePreview from '../chat/preview/ImagePreview.vue';
|
||||
// import Bluebird from 'bluebird';
|
||||
|
@ -259,6 +260,10 @@
|
|||
|
||||
log.debug('init.chat.cache.done');
|
||||
|
||||
await EIconStore.getSharedStore();
|
||||
|
||||
log.debug('init.eicons.update.done');
|
||||
|
||||
clearTimeout(timer);
|
||||
|
||||
parent.send('rising-upgrade-complete');
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "fchat",
|
||||
"version": "1.23.5",
|
||||
"version": "1.24.0",
|
||||
"author": "The F-List Team and Mister Stallion (Esq.)",
|
||||
"description": "F-List.net Chat Client",
|
||||
"main": "main.js",
|
||||
|
|
|
@ -8,7 +8,7 @@ import * as path from 'path';
|
|||
import { EIconRecord, EIconUpdater } from './updater';
|
||||
|
||||
export class EIconStore {
|
||||
protected records: EIconRecord[] = [];
|
||||
// protected records: EIconRecord[] = [];
|
||||
|
||||
protected lookup: Record<string, EIconRecord> = {};
|
||||
|
||||
|
@ -18,11 +18,13 @@ export class EIconStore {
|
|||
|
||||
async save(): Promise<void> {
|
||||
const fn = this.getStoreFilename();
|
||||
log.info('eicons.save', { records: this.records.length, asOfTimestamp: this.asOfTimestamp, fn });
|
||||
const recordArray = _.values(this.lookup);
|
||||
|
||||
log.info('eicons.save', { records: recordArray.length, asOfTimestamp: this.asOfTimestamp, fn });
|
||||
|
||||
fs.writeFileSync(fn, JSON.stringify({
|
||||
asOfTimestamp: this.asOfTimestamp,
|
||||
records: this.records
|
||||
records: recordArray
|
||||
}));
|
||||
|
||||
remote.ipcMain.emit('eicons.reload', { asOfTimestamp: this.asOfTimestamp });
|
||||
|
@ -35,15 +37,17 @@ export class EIconStore {
|
|||
try {
|
||||
const data = JSON.parse(fs.readFileSync(fn, 'utf-8'));
|
||||
|
||||
this.records = data?.records || [];
|
||||
// this.records = data?.records || [];
|
||||
this.asOfTimestamp = data?.asOfTimestamp || 0;
|
||||
this.lookup = _.fromPairs(_.map(this.records, (r) => [r.eicon, r]));
|
||||
this.lookup = _.fromPairs(_.map(data?.records || [], (r) => [r.eicon, r]));
|
||||
|
||||
log.info('eicons.loaded.local', { records: this.records.length, asOfTimestamp: this.asOfTimestamp });
|
||||
const recordCount = _.keys(this.lookup).length;
|
||||
|
||||
log.info('eicons.loaded.local', { records: recordCount, asOfTimestamp: this.asOfTimestamp });
|
||||
|
||||
await this.update();
|
||||
|
||||
log.info('eicons.loaded.update.remote', { records: this.records.length, asOfTimestamp: this.asOfTimestamp });
|
||||
log.info('eicons.loaded.update.remote', { records: recordCount, asOfTimestamp: this.asOfTimestamp });
|
||||
} catch (err) {
|
||||
try {
|
||||
await this.downloadAll();
|
||||
|
@ -65,8 +69,7 @@ export class EIconStore {
|
|||
|
||||
const eicons = await this.updater.fetchAll();
|
||||
|
||||
this.records = eicons.records;
|
||||
this.lookup = _.fromPairs(_.map(this.records, (r) => [r.eicon, r]));
|
||||
this.lookup = _.fromPairs(_.map(eicons.records, (r) => [r.eicon, r]));
|
||||
|
||||
_.each(eicons.records, (changeRecord) => this.addIcon(changeRecord));
|
||||
|
||||
|
@ -100,7 +103,7 @@ export class EIconStore {
|
|||
}
|
||||
|
||||
protected resortList(): void {
|
||||
_.sortBy(this.records, 'eicon');
|
||||
// _.sortBy(this.records, 'eicon');
|
||||
}
|
||||
|
||||
protected addIcon(record: EIconRecord): void {
|
||||
|
@ -114,7 +117,6 @@ export class EIconStore {
|
|||
timestamp: record.timestamp
|
||||
};
|
||||
|
||||
this.records.push(r);
|
||||
this.lookup[record.eicon] = r;
|
||||
}
|
||||
|
||||
|
@ -124,17 +126,11 @@ export class EIconStore {
|
|||
}
|
||||
|
||||
delete this.lookup[record.eicon];
|
||||
|
||||
const idx = this.records.findIndex((r) => (r.eicon === record.eicon));
|
||||
|
||||
if (idx >= 0) {
|
||||
this.records.splice(idx, 1);
|
||||
}
|
||||
}
|
||||
|
||||
search(searchString: string): EIconRecord[] {
|
||||
const lcSearch = searchString.trim().toLowerCase();
|
||||
const found = _.filter(this.records, (r) => r.eicon.indexOf(lcSearch) >= 0);
|
||||
const found = _.filter(this.lookup, (r) => r.eicon.indexOf(lcSearch) >= 0);
|
||||
|
||||
return found.sort((a, b) => {
|
||||
if ((a.eicon.substr(0, lcSearch.length) === lcSearch) && (b.eicon.substr(0, lcSearch.length) !== lcSearch)) {
|
||||
|
@ -150,7 +146,7 @@ export class EIconStore {
|
|||
}
|
||||
|
||||
random(count: number): EIconRecord[] {
|
||||
return _.sampleSize(this.records, count);
|
||||
return _.sampleSize(this.lookup, count);
|
||||
}
|
||||
|
||||
private static sharedStore: EIconStore | undefined;
|
||||
|
|
|
@ -118,6 +118,9 @@ export enum Kink {
|
|||
Herms = 132,
|
||||
Shemales = 356,
|
||||
Cuntboys = 231,
|
||||
TransFemales = 606,
|
||||
TransMales = 607,
|
||||
Nonbinary = 712,
|
||||
|
||||
OlderCharacters = 109,
|
||||
YoungerCharacters = 197,
|
||||
|
@ -447,6 +450,28 @@ export const speciesNames: SpeciesStrMap = {
|
|||
[Species.Suidae]: 'swine'
|
||||
};
|
||||
|
||||
const humanLikeNekoSpecies = [
|
||||
'kemomimi', 'kemonomimi', 'kemono', // generic
|
||||
'inumimi', 'oo?kamimimi', 'jakkarumimi', 'chinchiramimi', // canine
|
||||
'umamimi', 'shimaumamimi', // equine
|
||||
'neko[ -]?mimi', 'nekomimi', 'toramimi', 'shishimimi', 'pansamimi', 'hyoumimi', 'neko', // feline
|
||||
'kitsunemimi', // vulpine
|
||||
'doragonmimi', // dragon
|
||||
'komorimimi', // bat
|
||||
'torimimi', // avian
|
||||
'ushimimi', // bovine
|
||||
'yagimimi', 'hitsujimimi', // caprinae
|
||||
'shikamimi', // cervine
|
||||
'kirinmimi', // giraffe
|
||||
'hachimimi', // insect
|
||||
'usagimimi', // lapine
|
||||
'kawausomimi', 'itachimimi', 'ferettomimi', // musteline
|
||||
'sarumimi', // primate
|
||||
'tanukimimi', 'rakunmimi', // procyon
|
||||
'risumimi', 'nezumimi', // rodent
|
||||
'butamimi', // suidae
|
||||
'pandamimi', 'kumamimi' // ursine
|
||||
];
|
||||
|
||||
export const likelyHuman: SpeciesMap = {
|
||||
[Species.Human]: ['bimbo', 'witch', 'wizard', 'gyaru', 'milf', '.*slut', 'black', 'azarathian', 'kryptonian', 'mensch', 'thot',
|
||||
|
@ -459,7 +484,9 @@ export const likelyHuman: SpeciesMap = {
|
|||
'dothraki', 'amazon', 'african[ -]?american', 'amazonian', 'latina', 'latino',
|
||||
|
||||
'astartes', 'saiyan', 'echani', 'cathar', 'shikaisen', 'hyur', 'mid[ -]?lander', 'high[ -]?lander', 'arkanian',
|
||||
'exalted', 'leftherian'
|
||||
'exalted', 'leftherian',
|
||||
|
||||
...humanLikeNekoSpecies
|
||||
]
|
||||
};
|
||||
|
||||
|
@ -472,9 +499,8 @@ function gen(s: string): string {
|
|||
return `${s}[ -]?(kin|folk|woman|man|g[iu]rl|bo[yi][e]?)?`;
|
||||
}
|
||||
|
||||
|
||||
export const speciesMapping: SpeciesMap = {
|
||||
[Species.Anthro]: ['anthro', 'anthropomorphic', 'kemono', 'kemomimi', 'kemonomimi', 'furry', 'erune', 'vastayan?', 'rakshasa',
|
||||
[Species.Anthro]: ['anthro', 'anthropomorphic', 'furry', 'erune', 'vastayan?', 'rakshasa',
|
||||
gen('(beast|anthro|furry)')
|
||||
],
|
||||
|
||||
|
@ -491,9 +517,9 @@ export const speciesMapping: SpeciesMap = {
|
|||
'terrier', 'bull[ -]?terrier', 'australian[ -]?shepherd', 'australian[ -]?shep[h]?ard', 'german[ -]?shep[h]?([ea]rd)?',
|
||||
'malinois', 'woof', 'labrador', 'collie', 'canis', 'lupus', 'canid', 'chihuahua', 'poodle', 'chinchilla',
|
||||
'chow[ -]?chow', 'corgi', 'anubis', 'beagle', '.*wolf', 'direwolf', 'pointer', 'dhole', 'worg(en)?',
|
||||
'anubian', 'dalmatian', 'dalmation', 'inumimi', 'lupine', 'malamute', 'mastiff', 'mutt', 'rott?w[ea]ill?er', 'shih[ -]?tzu',
|
||||
'anubian', 'dalmatian', 'dalmation', 'lupine', 'malamute', 'mastiff', 'mutt', 'rott?w[ea]ill?er', 'shih[ -]?tzu',
|
||||
'vallhund', 'puppy', 'oo?kami', 'great[ -]?dane', 'golden[ -]?(retriever|lab|labrador)', 'cocker[ -]?spaniel', 'samm?oyed', 'awoo+',
|
||||
'borzoi', 'spaniel', 'ookamimimi', 'jakkarumimi', 'chinchiramimi', 'woffo', 'wuff', 'wolfdog', 'setter', 'papillon',
|
||||
'borzoi', 'spaniel', 'woffo', 'wuff', 'wolfdog', 'setter', 'papillon',
|
||||
'🐶', '🐺', '🐕', '🐩', 'aussie[ -]?doodle', 'shiba', 'inu', 'veil[ -]?hound', 'timber[ -]?wolf', 'hell[ -]?hound', 'hound',
|
||||
'kangal', 'behemoth', 'mongrel', 'fenrir', 'v[aá]na[r]?gand[r]?', 'crux', 'st.?[ -]?bernard',
|
||||
'wolfess', 'latrans', gen('(dog|wolf)'), 'chien', 'loup', 'sch[aä]ferhund',
|
||||
|
@ -504,29 +530,29 @@ export const speciesMapping: SpeciesMap = {
|
|||
'filly', 'neigh', 'dullahan', 'tikbalang', 'gypsy[ -]?vanner', 'ardenne[r]?', 'ardennais[e]?', 'mule', 'zeeb', 'shire',
|
||||
'cream[ -]?draft', 'belgian[ -]?draft', 'saddle[ -]?bred', 'warm[ -]?blood', 'marsh tacky', 'fox[ -]?trotter', 'morab',
|
||||
'saddle[ -]?horse', 'walkaloosa', 'welara', 'tiger[ -]?horse', 'tinker[ -]?hengste?', 'jackass',
|
||||
gen('(horsi?ey?|hoss|zeeb(ra)?|donkey|pon[yie])'), 'umamimi', 'shimaumamimi', 'thestral', 'foal', 'palomino',
|
||||
gen('(horsi?ey?|hoss|zeeb(ra)?|donkey|pon[yie])'), 'thestral', 'foal', 'palomino',
|
||||
'mustang', 'horse.*', '.*horse', '.*pony', 'equus', 'kelpie', 'kuranta', 'zonkey', 'whorse',
|
||||
'🐴', '🦓', '🐎'],
|
||||
|
||||
[Species.Feline]: ['cat', 'jaguar', 'cheetah', 'lynx', 'tiger.*', 'puma', 'lion.*', 'kitten',
|
||||
'neko[ -]?mimi', 'lioness', 'panther', 'panthe?ress', 'tige?ress', 'feline', 'leopard(ess)?', 'cougar', 'kitty', 'migo\'?te',
|
||||
'lioness', 'panther', 'panthe?ress', 'tige?ress', 'feline', 'leopard(ess)?', 'cougar', 'kitty', 'migo\'?te',
|
||||
'miqo\'?te', 'ocelot', 'saber[ -]?tooth', 'tabby', 'serval', 'russian[ -]?blue', 'thunderian', 'meow', 'lombax',
|
||||
'(exotic|domestic|british|oriental|american|shaded|chinchilla)[ -]?shorthair', 'burmese', 'maine[ -]?coon', 'korat', 'ragdoll',
|
||||
'ocicat', 'chartreux', 'german[ -]?rex', 'turkish[ -]?van', 'ragamuffin', 'norwegian[ -]?forest[ -]?(cat)?', 'burmilla',
|
||||
'khajiit', 'catamount', 'cat[ -]?person', 'tetton', 'tigre', 'calico', 'caracal', 'tabaxi', 'housecat', 'neko',
|
||||
'kodkod', 'karotanta', 'siamese', 'felis', 'catus', 'nekomata', 'nekomimi', 'trianii', 'caitian', 'catt[o|e]', '.*cat', 'toramimi',
|
||||
'shishimimi', 'pansamimi', 'hyoumimi', 'mytharii', 'felinid', 'kitteh', 'chat(te)?',
|
||||
'khajiit', 'catamount', 'cat[ -]?person', 'tetton', 'tigre', 'calico', 'caracal', 'tabaxi', 'housecat',
|
||||
'kodkod', 'karotanta', 'siamese', 'felis', 'catus', 'nekomata', 'trianii', 'caitian', 'catt[o|e]', '.*cat',
|
||||
'mytharii', 'felinid', 'kitteh', 'chat(te)?',
|
||||
gen('(cat|lion|tiger)'),
|
||||
'nyah', 'charr', 'kater', 'kat', 'jinko', '.*katze?', 'liger', 'tigon', 'sab(re|er)[ -]?tooth',
|
||||
'🐅', '🐆', '🐯', '🦁', '🐈'],
|
||||
|
||||
[Species.Vulpine]: ['fox', 'fennec', 'vixen', 'vulpine', 'fox.*', 'fennec', 'kitsune.*', 'kistune', 'gumiho', 'kumiho',
|
||||
'nogitsune', 'yako', '🦊', gen('fox'), 'vulpes', 'silver[ -]?fox', 'arctic[ -]?fox', 'fennec[ -]?fox', 'red[ -]?fox',
|
||||
'cape[ -]?fox', 'ninetails', 'ninetales', 'vulpo', 'vulpera', 'kitsunemimi', 'fire[ -]?fox', 'faw(x|ks)'],
|
||||
'cape[ -]?fox', 'ninetails', 'ninetales', 'vulpo', 'vulpera', 'fire[ -]?fox', 'faw(x|ks)'],
|
||||
|
||||
[Species.Dragon]: ['dragon', '🐉', 'wyvern', 'felkin', 'dragon.*', '.*dra(k|ch)e', '.*wyvern', '.*felkin',
|
||||
'night[ -]?fury', 'draconian', 'dragonn?ess', 'draconic', 'draconis', 'dragovian',
|
||||
'sea[ -]?dragon', 'doragonmimi', 'doragon', 'half[ -]dragon', 'wyverian', 'glavenus',
|
||||
'sea[ -]?dragon', 'doragon', 'half[ -]dragon', 'wyverian', 'glavenus',
|
||||
'anjanath', 'ragon', 'zinogre', 'drgn',
|
||||
gen('dragon')
|
||||
],
|
||||
|
@ -556,26 +582,26 @@ export const speciesMapping: SpeciesMap = {
|
|||
[Species.Amphibian]: ['salamander', 'frog', 'toad', 'newt', 'amphibian', 'axolotl'],
|
||||
|
||||
[Species.Avian]: ['bird', 'gryphon', 'raven', 'cardinal', 'cockatiel', 'ph(oe|eo)nix', 'roc', 'chimera', 'avian', 'albatross',
|
||||
'dove', 'eagle', 'owl', 'penguin', 'cockatoo', 'shoebill', 'rito', 'crow', 'meadow[ -]?lark', 'torimimi',
|
||||
'dove', 'eagle', 'owl', 'penguin', 'cockatoo', 'shoebill', 'rito', 'crow', 'meadow[ -]?lark',
|
||||
'peacock', 'chocobo', 'emu', 'ostrich', 'flamingo', 'duck', 'swallow', 'nightingale', 'toucan', 'secretary[ -?]bird',
|
||||
'(pink|blue)[ -]?jay', 'jaybird', 'chicken', 'rooster', 'blauhäher', 'gryphon', 'gr[iy]ff[io]n',
|
||||
'parrot', 'avarr?ian', gen('(bird|raven)'),
|
||||
'maran',
|
||||
'🦚', '🦃', '🦢', '🦆', '🦅', '🦉', '🦜', '🦩'],
|
||||
|
||||
[Species.Bat]: ['bat', 'nimbat', 'foxbat', 'pteropus', 'komorimimi', '🦇'],
|
||||
[Species.Bat]: ['bat', 'nimbat', 'foxbat', 'pteropus', '🦇'],
|
||||
|
||||
[Species.Bovine]: ['cow', 'bison', 'bovine', 'antelope', 'gazelle', 'oryx', 'buffalo', 'bison', 'black[ -]?angus', 'bull', 'ox',
|
||||
'ushimimi', 'holstaur', 'moo', 'cattle', 'hucow', 'caprin[a]?e', 'goat[ -]?antelope', 'muskox', 'urial', 'mouflon',
|
||||
'holstaur', 'moo', 'cattle', 'hucow', 'caprin[a]?e', 'goat[ -]?antelope', 'muskox', 'urial', 'mouflon',
|
||||
'taurine', 'aurochs', 'bos', 'bos taurus', 'taur[u|o]s',
|
||||
'🐃', '🐂', '🐄', '🐐'],
|
||||
|
||||
[Species.Caprinae]: ['sheep', 'goat', 'ibex', 'takin', 'bharal', 'goral', 'serow', 'lamb', 'faun', 'ram', 'faunus', 'goat.*',
|
||||
'yagimimi', 'hitsujimimi', 'sheepie', gen('(sheep|goat|ram)')],
|
||||
'sheepie', gen('(sheep|goat|ram)')],
|
||||
|
||||
[Species.Camielidae]: ['camel', 'llama', 'alpaca', 'guanaco', 'dromedary', 'dromedar', '🦙', '🐪', '🐫'],
|
||||
|
||||
[Species.Cervine]: ['deer', 'elk', 'moose', 'caribou', 'reindeer', 'doe[ -]?(girl)?', 'fawn', 'cervid', 'cervine', 'stag', 'shikamimi',
|
||||
[Species.Cervine]: ['deer', 'elk', 'moose', 'caribou', 'reindeer', 'doe[ -]?(girl)?', 'fawn', 'cervid', 'cervine', 'stag',
|
||||
gen('deer')],
|
||||
|
||||
[Species.Dinosaur]: ['raptor', 't-rex', 'pterodactyl', 'deinonychus', 'death[ -]?claw', '[\\w-]*saurus', 'dinosaur',
|
||||
|
@ -589,7 +615,7 @@ export const speciesMapping: SpeciesMap = {
|
|||
gen('(shark|fish)'), '(angel|tiger|bull|whale|white|leopard|crocodile|goblin|zebra) ?shark', 'mako'
|
||||
],
|
||||
|
||||
[Species.Giraffe]: ['giraffe', '🦒', 'kirinmimi', 'okapi', '[gk]ira(ff|hv)[ei]?'],
|
||||
[Species.Giraffe]: ['giraffe', '🦒', 'okapi', '[gk]ira(ff|hv)[ei]?'],
|
||||
[Species.Herpestidae]: ['mongoose', 'meerkat', 'kusimanse', 'suricate'],
|
||||
[Species.Hippopotamidae]: ['hippo', 'hippopotamus', '🦛'],
|
||||
[Species.Hyaenidae]: ['hyena', 'aardwolf', 'hyaena', 'yeen', gen('hyena')],
|
||||
|
@ -598,13 +624,13 @@ export const speciesMapping: SpeciesMap = {
|
|||
'foxcoon', 'drazelle', 'vulpkanin', 'poochyena', 'batpon', 'delphox', 'unifox', 'rooram', 'catbat', 'bunfox'],
|
||||
|
||||
[Species.Insect]: ['bug', 'bee', 'wasp', 'ant', 'insect', 'buggo', 'hornet', 'vespidae',
|
||||
'mantis', gen('bee'), 'ladybug', 'hachimimi', 'moth', 'bumblebee', 'tolype',
|
||||
'mantis', gen('bee'), 'ladybug', 'moth', 'bumblebee', 'tolype',
|
||||
|
||||
// technically belong to their own group
|
||||
'tarantula', 'arachnida', 'spider', gen('spider'), 'arachnid', 'scorpion'
|
||||
],
|
||||
|
||||
[Species.Lapine]: ['bunny', 'rabbit', 'hare', 'lapine', 'viera', 'wabbit', 'lagomo(rp|pr)h', gen('(bunny|rabbit)'), 'usagimimi',
|
||||
[Species.Lapine]: ['bunny', 'rabbit', 'hare', 'lapine', 'viera', 'wabbit', 'lagomo(rp|pr)h', gen('(bunny|rabbit)'),
|
||||
'bun', '.*bunny', 'cabbit', 'fabbit', 'häschen', 'bunbun', 'cottontail', 'rabbet', 'jack[ -]?rabbit', 'lapine?', 'jackalope',
|
||||
'leporids?', 'leporidae', 'broodal', 'kanin(chen)?', '🐇'],
|
||||
|
||||
|
@ -617,28 +643,28 @@ export const speciesMapping: SpeciesMap = {
|
|||
[Species.Mephitidae]: ['skunk', '🦨', 'stink[ -]?badger'],
|
||||
|
||||
[Species.Musteline]: ['otter', 'ferret', 'mink', 'weasel', 'stoat', 'wolverine', 'marten', 'musteline', 'badger',
|
||||
'kawausomimi', 'itachimimi', 'ferettomimi', 'ottsel', gen('(otter|ferret|weasel)'), '🦡', '🦦'],
|
||||
'ottsel', gen('(otter|ferret|weasel)'), '🦡', '🦦'],
|
||||
|
||||
[Species.Pinniped]: ['seal', 'walrus', 'fur seal', 'sea[ -]?lion'],
|
||||
|
||||
[Species.Primate]: ['gorilla', 'monkey', 'ape', 'chimp', 'lemur', 'bonobo', 'chimpanzee', 'silverback', 'sarumimi', 'primate',
|
||||
[Species.Primate]: ['gorilla', 'monkey', 'ape', 'chimp', 'lemur', 'bonobo', 'chimpanzee', 'silverback', 'primate',
|
||||
'🐒', '🦍', '🦧'],
|
||||
|
||||
[Species.Procyon]: ['raccoon', 'coatimund', 'longtail', 'procyon', 'tanuki', 'tanukimimi', '🦝', 'racoon', 'rakunmimi',
|
||||
[Species.Procyon]: ['raccoon', 'coatimund', 'longtail', 'procyon', 'tanuki', '🦝', 'racoon',
|
||||
'ring[ -]?tail(ed)?'],
|
||||
|
||||
[Species.Rhinoceros]: ['rhino', 'rhinoceros', '🦏', '.*rhino'],
|
||||
|
||||
[Species.Rodent]: ['rat', 'mouse', 'chipmunk', 'squirrel', 'hamster', 'rodent', 'maus', 'gerbil', 'mousie', 'muskrat', 'ratsin',
|
||||
'skaven', 'roedor', 'risumimi', 'nezumimi', 'jerboa', 'burmecian', 'porcupine', 'squirril',
|
||||
'skaven', 'roedor', 'jerboa', 'burmecian', 'porcupine', 'squirril',
|
||||
gen('(rat|mousi?ey?|maus|squirrel)'),
|
||||
'🐀', '🐁', '🐿'],
|
||||
|
||||
[Species.Suidae]: ['pig', 'boar', 'warthog', 'bushpig', 'babirusa', 'sow', 'swine', 'suid', 'suine', 'piglet', 'hog',
|
||||
'piggie', 'piggy', 'quilboar', 'porcine', 'porcid', 'butamimi', '🐗', '🐖'],
|
||||
'piggie', 'piggy', 'quilboar', 'porcine', 'porcid', '🐗', '🐖'],
|
||||
|
||||
[Species.Ursine]: ['bear', 'panda', 'grizzly', 'black[ -]?bear', 'brown[ -]?bear', 'polar[ -]?bear', 'ursine', 'pandaren', 'ursus',
|
||||
'pandamimi', 'kumamimi'],
|
||||
],
|
||||
|
||||
// pangolin doesn't fit here
|
||||
[Species.Xenarthra]: ['armadillo', 'anteater', 'sloth', 'glyptodont', 'a(rm|mr)ad[iy]ll?o', 'sloth', 'ant[ -]?eater', 'pangoo?lin'],
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "f-list-rising",
|
||||
"version": "1.23.5",
|
||||
"version": "1.24.0",
|
||||
"author": "The F-List Team and and Mister Stallion (Esq.)",
|
||||
"description": "A heavily modded F-Chat 3.0 client for F-List",
|
||||
"license": "MIT",
|
||||
|
|
Loading…
Reference in New Issue