├── .gitignore
├── CHARA_NAME.json
├── CHARA_PROFILE.json
├── LICENSE
├── README.md
├── UnavailableChara.json
├── __init__.py
├── _pcr_data.py
├── config.json
├── gacha.py
└── update.py
/.gitignore:
--------------------------------------------------------------------------------
1 | # 备份的原版本文件
2 | backup.json
3 | # 本地版本号文件
4 | local_ver.json
5 |
6 | # python
7 | __pycache__/
8 |
9 | # 测试文件
10 | test.py
--------------------------------------------------------------------------------
/CHARA_NAME.json:
--------------------------------------------------------------------------------
1 | {
2 | "1000": [
3 | "未知角色",
4 | "未知キャラ",
5 | "Unknown"
6 | ],
7 | "1001": [
8 | "日和",
9 | "ヒヨリ",
10 | "Hiyori",
11 | "日和莉",
12 | "猫拳",
13 | "东山",
14 | "🐱👊"
15 | ],
16 | "1002": [
17 | "优衣",
18 | "ユイ",
19 | "Yui",
20 | "种田",
21 | "普田",
22 | "由衣",
23 | "结衣",
24 | "ue",
25 | "↗↘↗↘"
26 | ],
27 | "1003": [
28 | "怜",
29 | "レイ",
30 | "Rei",
31 | "剑圣",
32 | "普怜",
33 | "伶"
34 | ],
35 | "1004": [
36 | "禊",
37 | "ミソギ",
38 | "Misogi",
39 | "未奏希",
40 | "炸弹",
41 | "炸弹人",
42 | "熊孩子",
43 | "💣"
44 | ],
45 | "1005": [
46 | "茉莉",
47 | "マツリ",
48 | "Matsuri",
49 | "跳跳虎",
50 | "老虎",
51 | "虎",
52 | "跳刀虎",
53 | "🐅"
54 | ],
55 | "1006": [
56 | "茜里",
57 | "アカリ",
58 | "Akari",
59 | "妹法",
60 | "阿卡丽",
61 | "妹妹法"
62 | ],
63 | "1007": [
64 | "宫子",
65 | "ミヤコ",
66 | "Miyako",
67 | "布丁",
68 | "布",
69 | "幽灵",
70 | "🍮"
71 | ],
72 | "1008": [
73 | "雪",
74 | "ユキ",
75 | "Yuki",
76 | "小雪",
77 | "镜子",
78 | "镜法",
79 | "伪娘",
80 | "男孩子",
81 | "男孩纸",
82 | "雪哥"
83 | ],
84 | "1009": [
85 | "杏奈",
86 | "アンナ",
87 | "Anna",
88 | "中二",
89 | "煤气罐"
90 | ],
91 | "1010": [
92 | "真步",
93 | "マホ",
94 | "Maho",
95 | "狐狸",
96 | "真扎",
97 | "咕噜灵波",
98 | "真布",
99 | "🦊"
100 | ],
101 | "1011": [
102 | "璃乃",
103 | "リノ",
104 | "Rino",
105 | "妹弓"
106 | ],
107 | "1012": [
108 | "初音",
109 | "ハツネ",
110 | "Hatsune",
111 | "hego",
112 | "星法",
113 | "星星法",
114 | "⭐法",
115 | "睡法",
116 | "拍大星"
117 | ],
118 | "1013": [
119 | "七七香",
120 | "ナナカ",
121 | "Nanaka",
122 | "娜娜卡",
123 | "77k",
124 | "77香",
125 | "十十力"
126 | ],
127 | "1014": [
128 | "霞",
129 | "カスミ",
130 | "Kasumi",
131 | "香澄",
132 | "侦探",
133 | "杜宾犬",
134 | "驴",
135 | "驴子",
136 | "驴妹",
137 | "🔍"
138 | ],
139 | "1015": [
140 | "美里",
141 | "ミサト",
142 | "Misato",
143 | "圣母"
144 | ],
145 | "1016": [
146 | "铃奈",
147 | "スズナ",
148 | "Suzuna",
149 | "暴击弓",
150 | "暴弓",
151 | "爆击弓",
152 | "爆弓",
153 | "辣妹弓",
154 | "政委"
155 | ],
156 | "1017": [
157 | "香织",
158 | "カオリ",
159 | "Kaori",
160 | "琉球犬",
161 | "狗子",
162 | "狗",
163 | "狗拳",
164 | "🐶",
165 | "🐕",
166 | "🐶👊🏻",
167 | "🐶👊"
168 | ],
169 | "1018": [
170 | "伊绪",
171 | "イオ",
172 | "Io",
173 | "老师",
174 | "魅魔",
175 | "依绪"
176 | ],
177 | "1020": [
178 | "美美",
179 | "ミミ",
180 | "Mimi",
181 | "兔子",
182 | "兔兔",
183 | "兔剑",
184 | "萝卜霸断剑",
185 | "人参霸断剑",
186 | "天兔霸断剑",
187 | "🐇",
188 | "🐰"
189 | ],
190 | "1021": [
191 | "胡桃",
192 | "クルミ",
193 | "Kurumi",
194 | "铃铛",
195 | "🔔"
196 | ],
197 | "1022": [
198 | "依里",
199 | "ヨリ",
200 | "Yori",
201 | "姐法",
202 | "姐姐法"
203 | ],
204 | "1023": [
205 | "绫音",
206 | "アヤネ",
207 | "Ayane",
208 | "熊锤",
209 | "🐻🔨",
210 | "🐻"
211 | ],
212 | "1025": [
213 | "铃莓",
214 | "スズメ",
215 | "Suzume",
216 | "女仆",
217 | "妹抖",
218 | "悠木碧",
219 | "umb",
220 | "雀"
221 | ],
222 | "1026": [
223 | "铃",
224 | "リン",
225 | "Rin",
226 | "松鼠",
227 | "🐿",
228 | "🐿️"
229 | ],
230 | "1027": [
231 | "惠理子",
232 | "エリコ",
233 | "Eriko",
234 | "病娇"
235 | ],
236 | "1028": [
237 | "咲恋",
238 | "サレン",
239 | "Saren",
240 | "充电宝",
241 | "青梅竹马",
242 | "幼驯染",
243 | "院长",
244 | "园长",
245 | "🔋",
246 | "普电"
247 | ],
248 | "1029": [
249 | "望",
250 | "ノゾミ",
251 | "Nozomi",
252 | "偶像",
253 | "小望",
254 | "🎤"
255 | ],
256 | "1030": [
257 | "妮诺",
258 | "ニノン",
259 | "Ninon",
260 | "妮侬",
261 | "扇子"
262 | ],
263 | "1031": [
264 | "忍",
265 | "シノブ",
266 | "Shinobu",
267 | "普忍",
268 | "鬼父",
269 | "💀"
270 | ],
271 | "1032": [
272 | "秋乃",
273 | "アキノ",
274 | "Akino",
275 | "哈哈剑"
276 | ],
277 | "1033": [
278 | "真阳",
279 | "マヒル",
280 | "Mahiru",
281 | "奶牛",
282 | "🐄",
283 | "🐮",
284 | "真☀"
285 | ],
286 | "1034": [
287 | "优花梨",
288 | "ユカリ",
289 | "Yukari",
290 | "由加莉",
291 | "黄骑",
292 | "酒鬼",
293 | "奶骑",
294 | "圣骑",
295 | "🍺",
296 | "🍺👻",
297 | "油咖喱"
298 | ],
299 | "1036": [
300 | "镜华",
301 | "キョウカ",
302 | "Kyouka",
303 | "小仓唯",
304 | "xcw",
305 | "小苍唯",
306 | "8岁",
307 | "八岁",
308 | "喷水萝",
309 | "八岁喷水萝",
310 | "8岁喷水萝"
311 | ],
312 | "1037": [
313 | "智",
314 | "トモ",
315 | "Tomo",
316 | "卜毛",
317 | "脱毛",
318 | "智爷"
319 | ],
320 | "1038": [
321 | "栞",
322 | "シオリ",
323 | "Shiori",
324 | "tp弓",
325 | "小栞",
326 | "白虎弓",
327 | "白虎妹",
328 | "栞栞",
329 | "白虎"
330 | ],
331 | "1040": [
332 | "碧",
333 | "アオイ",
334 | "Aoi",
335 | "香菜",
336 | "香菜弓",
337 | "绿毛弓",
338 | "毒弓",
339 | "绿帽弓",
340 | "绿帽"
341 | ],
342 | "1042": [
343 | "千歌",
344 | "チカ",
345 | "Chika",
346 | "绿毛奶",
347 | "精灵奶"
348 | ],
349 | "1043": [
350 | "真琴",
351 | "マコト",
352 | "Makoto",
353 | "狼",
354 | "🐺",
355 | "月月",
356 | "朋",
357 | "狼姐"
358 | ],
359 | "1044": [
360 | "伊莉亚",
361 | "イリヤ",
362 | "Iriya",
363 | "伊利亚",
364 | "伊莉雅",
365 | "伊利雅",
366 | "yly",
367 | "吸血鬼",
368 | "那个女人"
369 | ],
370 | "1045": [
371 | "空花",
372 | "クウカ",
373 | "Kuuka",
374 | "抖m",
375 | "抖"
376 | ],
377 | "1046": [
378 | "珠希",
379 | "タマキ",
380 | "Tamaki",
381 | "猫剑",
382 | "🐱剑",
383 | "🐱🗡️"
384 | ],
385 | "1047": [
386 | "纯",
387 | "ジュン",
388 | "Jun",
389 | "黑骑",
390 | "saber"
391 | ],
392 | "1048": [
393 | "美冬",
394 | "ミフユ",
395 | "Mifuyu",
396 | "子龙",
397 | "赵子龙"
398 | ],
399 | "1049": [
400 | "静流",
401 | "シズル",
402 | "Shizuru",
403 | "姐姐"
404 | ],
405 | "1050": [
406 | "美咲",
407 | "ミサキ",
408 | "Misaki",
409 | "大眼",
410 | "眼球法",
411 | "👀",
412 | "👁️",
413 | "👁"
414 | ],
415 | "1051": [
416 | "深月",
417 | "ミツキ",
418 | "Mitsuki",
419 | "眼罩",
420 | "抖s",
421 | "医生"
422 | ],
423 | "1052": [
424 | "莉玛",
425 | "リマ",
426 | "Rima",
427 | "Lima",
428 | "草泥马",
429 | "羊驼",
430 | "🦙",
431 | "🐐"
432 | ],
433 | "1053": [
434 | "莫妮卡",
435 | "モニカ",
436 | "Monika",
437 | "毛二力",
438 | "莫尼卡"
439 | ],
440 | "1054": [
441 | "纺希",
442 | "ツムギ",
443 | "Tsumugi",
444 | "裁缝",
445 | "蜘蛛侠",
446 | "🕷️",
447 | "🕸️"
448 | ],
449 | "1055": [
450 | "步未",
451 | "アユミ",
452 | "Ayumi",
453 | "步美",
454 | "路人",
455 | "路人妹"
456 | ],
457 | "1056": [
458 | "流夏",
459 | "ルカ",
460 | "Ruka",
461 | "大姐",
462 | "大姐头",
463 | "儿力",
464 | "luka",
465 | "刘夏",
466 | "露卡",
467 | "卢卡"
468 | ],
469 | "1057": [
470 | "吉塔",
471 | "ジータ",
472 | "Jiita",
473 | "姬塔",
474 | "团长",
475 | "吉他",
476 | "🎸",
477 | "骑空士",
478 | "qks"
479 | ],
480 | "1058": [
481 | "贪吃佩可",
482 | "ペコリーヌ",
483 | "Pecorine",
484 | "Pekoriinu",
485 | "佩可莉姆",
486 | "吃货",
487 | "佩可",
488 | "公主",
489 | "饭团",
490 | "🍙"
491 | ],
492 | "1059": [
493 | "可可萝",
494 | "コッコロ",
495 | "Kokkoro",
496 | "可可罗",
497 | "妈",
498 | "普白",
499 | "普妈",
500 | "kkr"
501 | ],
502 | "1060": [
503 | "凯留",
504 | "キャル",
505 | "Karyl",
506 | "Kyaru",
507 | "凯露",
508 | "百地希留耶",
509 | "希留耶",
510 | "Kiruya",
511 | "黑猫",
512 | "臭鼬",
513 | "普黑",
514 | "接头霸王",
515 | "街头霸王",
516 | "猫猫",
517 | "猫猫头"
518 | ],
519 | "1061": [
520 | "矛依未",
521 | "ムイミ",
522 | "Muimi",
523 | "诺维姆",
524 | "Noemu",
525 | "夏娜",
526 | "511",
527 | "无意义",
528 | "天楼霸断剑",
529 | "姆咪",
530 | "母咪"
531 | ],
532 | "1063": [
533 | "亚里莎",
534 | "アリサ",
535 | "Arisa",
536 | "鸭梨瞎",
537 | "瞎子",
538 | "亚里沙",
539 | "鸭梨傻",
540 | "亚丽莎",
541 | "亚莉莎",
542 | "瞎子弓",
543 | "🍐🦐",
544 | "yls"
545 | ],
546 | "1064": [
547 | "雪菲",
548 | "シェフィ",
549 | "Shephy",
550 | "Shefi",
551 | "紫布菜",
552 | "冰龙"
553 | ],
554 | "1065": [
555 | "嘉夜",
556 | "カヤ",
557 | "Kaya",
558 | "憨憨龙",
559 | "龙拳",
560 | "🐲👊🏻",
561 | "🐉👊🏻",
562 | "接龙笨比",
563 | "鬼道嘉夜",
564 | "卡雅",
565 | "卡亚",
566 | "卡娅"
567 | ],
568 | "1066": [
569 | "祈梨",
570 | "イノリ",
571 | "Inori",
572 | "梨老八",
573 | "李老八",
574 | "龙锤",
575 | "🐲🔨"
576 | ],
577 | "1067": [
578 | "帆稀",
579 | "ホマレ",
580 | "Homare",
581 | "穗希",
582 | "龙妈",
583 | "龙王",
584 | "大仓唯"
585 | ],
586 | "1068": [
587 | "拉比林斯达",
588 | "ラビリスタ",
589 | "Labyrista",
590 | "Rabirisuta",
591 | "迷宫女王",
592 | "模索路晶",
593 | "模索路",
594 | "晶",
595 | "迷宫女",
596 | "王晶",
597 | "晶姐",
598 | "日日日"
599 | ],
600 | "1069": [
601 | "真那",
602 | "マナ",
603 | "Mana",
604 | "霸瞳皇帝",
605 | "千里真那",
606 | "千里",
607 | "霸瞳",
608 | "霸铜"
609 | ],
610 | "1070": [
611 | "似似花",
612 | "ネネカ",
613 | "Neneka",
614 | "变貌大妃",
615 | "现士实似似花",
616 | "現士実似々花",
617 | "現士実",
618 | "现士实",
619 | "nnk",
620 | "448",
621 | "捏捏卡",
622 | "变貌",
623 | "大妃",
624 | "奶奶卡"
625 | ],
626 | "1071": [
627 | "克莉丝提娜",
628 | "クリスティーナ",
629 | "Kurisutiina",
630 | "誓约女君",
631 | "克莉丝提娜·摩根",
632 | "Christina",
633 | "Cristina",
634 | "克总",
635 | "女帝",
636 | "克",
637 | "摩根",
638 | "克姐"
639 | ],
640 | "1072": [
641 | "可萝爹",
642 | "長老",
643 | "Chourou",
644 | "岳父",
645 | "爷爷"
646 | ],
647 | "1073": [
648 | "拉基拉基",
649 | "ラジニカーント",
650 | "Rajinigaanto",
651 | "跳跃王",
652 | "Rajiraji",
653 | "Lajilaji",
654 | "垃圾垃圾",
655 | "教授"
656 | ],
657 | "1075": [
658 | "贪吃佩可(夏日)",
659 | "ペコリーヌ(サマー)",
660 | "Pecorine(Summer)",
661 | "Pekoriinu(Summer)",
662 | "佩可莉姆(夏日)",
663 | "水吃",
664 | "水饭",
665 | "水吃货",
666 | "水佩可",
667 | "水公主",
668 | "水饭团",
669 | "水🍙",
670 | "泳吃",
671 | "泳饭",
672 | "泳吃货",
673 | "泳佩可",
674 | "泳公主",
675 | "泳饭团",
676 | "泳🍙",
677 | "泳装吃货",
678 | "泳装公主",
679 | "泳装饭团",
680 | "泳装🍙",
681 | "佩可(夏日)",
682 | "🥡",
683 | "👙🍙",
684 | "泼妇"
685 | ],
686 | "1076": [
687 | "可可萝(夏日)",
688 | "コッコロ(サマー)",
689 | "Kokkoro(Summer)",
690 | "水白",
691 | "水妈",
692 | "水可",
693 | "水可可",
694 | "水可可萝",
695 | "水可可罗",
696 | "泳装妈",
697 | "泳装可可萝",
698 | "泳装可可罗"
699 | ],
700 | "1077": [
701 | "铃莓(夏日)",
702 | "スズメ(サマー)",
703 | "Suzume(Summer)",
704 | "水女仆",
705 | "水妹抖"
706 | ],
707 | "1078": [
708 | "凯留(夏日)",
709 | "キャル(サマー)",
710 | "Karyl(Summer)",
711 | "Kyaru(Summer)",
712 | "凯露(夏日)",
713 | "水黑",
714 | "水黑猫",
715 | "水臭鼬",
716 | "泳装黑猫",
717 | "泳装臭鼬",
718 | "潶",
719 | "溴",
720 | "💧黑",
721 | "流泪猫猫头"
722 | ],
723 | "1079": [
724 | "珠希(夏日)",
725 | "タマキ(サマー)",
726 | "Tamaki(Summer)",
727 | "水猫剑",
728 | "水猫",
729 | "渵",
730 | "💧🐱",
731 | "💧🐱🗡️",
732 | "水🐱🗡️"
733 | ],
734 | "1080": [
735 | "美冬(夏日)",
736 | "ミフユ(サマー)",
737 | "Mifuyu(Summer)",
738 | "水子龙",
739 | "水美冬"
740 | ],
741 | "1081": [
742 | "忍(万圣节)",
743 | "シノブ(ハロウィン)",
744 | "Shinobu(Halloween)",
745 | "万圣忍",
746 | "瓜忍",
747 | "鬼忍",
748 | "🎃忍",
749 | "🎃💀"
750 | ],
751 | "1082": [
752 | "宫子(万圣节)",
753 | "ミヤコ(ハロウィン)",
754 | "Miyako(Halloween)",
755 | "万圣宫子",
756 | "万圣布丁",
757 | "狼丁",
758 | "狼布丁",
759 | "万圣🍮",
760 | "🐺🍮",
761 | "🎃🍮",
762 | "👻🍮"
763 | ],
764 | "1083": [
765 | "美咲(万圣节)",
766 | "ミサキ(ハロウィン)",
767 | "Misaki(Halloween)",
768 | "万圣美咲",
769 | "万圣大眼",
770 | "瓜眼",
771 | "🎃眼",
772 | "🎃👀",
773 | "🎃👁️",
774 | "🎃👁"
775 | ],
776 | "1084": [
777 | "千歌(圣诞节)",
778 | "チカ(クリスマス)",
779 | "Chika(Xmas)",
780 | "圣诞千歌",
781 | "圣千",
782 | "蛋鸽",
783 | "🎄💰🎶",
784 | "🎄千🎶",
785 | "🎄1000🎶"
786 | ],
787 | "1085": [
788 | "胡桃(圣诞节)",
789 | "クルミ(クリスマス)",
790 | "Kurumi(Xmas)",
791 | "圣诞胡桃",
792 | "圣诞铃铛"
793 | ],
794 | "1086": [
795 | "绫音(圣诞节)",
796 | "アヤネ(クリスマス)",
797 | "Ayane(Xmas)",
798 | "圣诞熊锤",
799 | "蛋锤",
800 | "圣锤",
801 | "🎄🐻🔨",
802 | "🎄🐻"
803 | ],
804 | "1087": [
805 | "日和(新年)",
806 | "ヒヨリ(ニューイヤー)",
807 | "Hiyori(NewYear)",
808 | "新年日和",
809 | "春猫",
810 | "👘🐱"
811 | ],
812 | "1088": [
813 | "优衣(新年)",
814 | "ユイ(ニューイヤー)",
815 | "Yui(NewYear)",
816 | "新年优衣",
817 | "春田",
818 | "新年由衣"
819 | ],
820 | "1089": [
821 | "怜(新年)",
822 | "レイ(ニューイヤー)",
823 | "Rei(NewYear)",
824 | "春剑",
825 | "春怜",
826 | "春伶",
827 | "新春剑圣",
828 | "新年怜",
829 | "新年剑圣"
830 | ],
831 | "1090": [
832 | "惠理子(情人节)",
833 | "エリコ(バレンタイン)",
834 | "Eriko(Valentine)",
835 | "情人节病娇",
836 | "恋病",
837 | "情病",
838 | "恋病娇",
839 | "情病娇",
840 | "青椒"
841 | ],
842 | "1091": [
843 | "静流(情人节)",
844 | "シズル(バレンタイン)",
845 | "Shizuru(Valentine)",
846 | "情人节静流",
847 | "情姐",
848 | "情人节姐姐",
849 | "恋姐"
850 | ],
851 | "1092": [
852 | "安",
853 | "アン",
854 | "An",
855 | "胖安",
856 | "55kg",
857 | "小安"
858 | ],
859 | "1093": [
860 | "露",
861 | "ルゥ",
862 | "Ruu",
863 | "逃课女王",
864 | "补考女帝"
865 | ],
866 | "1094": [
867 | "古蕾娅",
868 | "グレア",
869 | "Gurea",
870 | "龙姬",
871 | "古雷娅",
872 | "古蕾亚",
873 | "古雷亚",
874 | "古蕾雅",
875 | "🐲🐔",
876 | "🐉🐔"
877 | ],
878 | "1095": [
879 | "空花(大江户)",
880 | "クウカ(オーエド)",
881 | "Kuuka(Ooedo)",
882 | "江户空花",
883 | "江户抖m",
884 | "江m",
885 | "花m",
886 | "江花",
887 | "大江m",
888 | "花抖"
889 | ],
890 | "1096": [
891 | "妮诺(大江户)",
892 | "ニノン(オーエド)",
893 | "Ninon(Ooedo)",
894 | "江户扇子",
895 | "忍扇"
896 | ],
897 | "1097": [
898 | "雷姆",
899 | "レム",
900 | "Remu",
901 | "蕾姆"
902 | ],
903 | "1098": [
904 | "拉姆",
905 | "ラム",
906 | "Ramu"
907 | ],
908 | "1099": [
909 | "爱蜜莉雅",
910 | "エミリア",
911 | "Emiria",
912 | "艾米莉亚",
913 | "emt"
914 | ],
915 | "1100": [
916 | "铃奈(夏日)",
917 | "スズナ(サマー)",
918 | "Suzuna(Summer)",
919 | "瀑击弓",
920 | "水爆",
921 | "水爆弓",
922 | "水暴",
923 | "瀑",
924 | "水暴弓",
925 | "水暴击弓",
926 | "水政委",
927 | "瀑弓",
928 | "泳装暴弓",
929 | "泳装爆弓",
930 | "泳装政委"
931 | ],
932 | "1101": [
933 | "伊绪(夏日)",
934 | "イオ(サマー)",
935 | "Io(Summer)",
936 | "水魅魔",
937 | "水老师",
938 | "泳装魅魔",
939 | "泳装老师",
940 | "水io"
941 | ],
942 | "1102": [
943 | "美咲(夏日)",
944 | "ミサキ(サマー)",
945 | "Misaki(Summer)",
946 | "水大眼",
947 | "泳装大眼"
948 | ],
949 | "1103": [
950 | "咲恋(夏日)",
951 | "サレン(サマー)",
952 | "Saren(Summer)",
953 | "水电",
954 | "泳装充电宝",
955 | "泳装咲恋",
956 | "水着咲恋",
957 | "水电站",
958 | "水电宝",
959 | "水充",
960 | "👙🔋"
961 | ],
962 | "1104": [
963 | "真琴(夏日)",
964 | "マコト(サマー)",
965 | "Makoto(Summer)",
966 | "水狼",
967 | "浪",
968 | "水🐺",
969 | "泳狼",
970 | "泳月",
971 | "泳月月",
972 | "泳朋",
973 | "水月",
974 | "水月月",
975 | "水朋",
976 | "👙🐺"
977 | ],
978 | "1105": [
979 | "香织(夏日)",
980 | "カオリ(サマー)",
981 | "Kaori(Summer)",
982 | "水狗",
983 | "泃",
984 | "水🐶",
985 | "水🐕",
986 | "泳狗",
987 | "水狗拳"
988 | ],
989 | "1106": [
990 | "真步(夏日)",
991 | "マホ(サマー)",
992 | "Maho(Summer)",
993 | "水狐狸",
994 | "水狐",
995 | "水壶",
996 | "水真步",
997 | "水maho",
998 | "氵🦊",
999 | "水🦊",
1000 | "💧🦊"
1001 | ],
1002 | "1107": [
1003 | "碧(插班生)",
1004 | "アオイ(編入生)",
1005 | "Aoi(Hennyuusei)",
1006 | "生菜",
1007 | "插班碧",
1008 | "学院碧",
1009 | "转校弓",
1010 | "转学弓"
1011 | ],
1012 | "1108": [
1013 | "克萝依",
1014 | "クロエ",
1015 | "Kuroe",
1016 | "克罗依",
1017 | "华哥",
1018 | "黑江",
1019 | "黑江花子",
1020 | "花子"
1021 | ],
1022 | "1109": [
1023 | "琪爱儿",
1024 | "チエル",
1025 | "Chieru",
1026 | "千爱瑠",
1027 | "切露",
1028 | "茄露",
1029 | "茄噜",
1030 | "切噜",
1031 | "佐仓"
1032 | ],
1033 | "1110": [
1034 | "优妮",
1035 | "ユニ",
1036 | "Yuni",
1037 | "真行寺由仁",
1038 | "由仁",
1039 | "优尼",
1040 | "u2",
1041 | "优妮辈先",
1042 | "辈先",
1043 | "书记",
1044 | "uni",
1045 | "先辈",
1046 | "仙贝",
1047 | "油腻",
1048 | "优妮先辈",
1049 | "学姐",
1050 | "18岁黑丝学姐",
1051 | "咖啡人"
1052 | ],
1053 | "1111": [
1054 | "镜华(万圣节)",
1055 | "キョウカ(ハロウィン)",
1056 | "Kyouka(Halloween)",
1057 | "万圣镜华",
1058 | "万圣小仓唯",
1059 | "万圣xcw",
1060 | "猫仓唯",
1061 | "黑猫仓唯",
1062 | "mcw",
1063 | "猫唯",
1064 | "猫仓",
1065 | "喵唯"
1066 | ],
1067 | "1112": [
1068 | "禊(万圣节)",
1069 | "ミソギ(ハロウィン)",
1070 | "Misogi(Halloween)",
1071 | "万圣禊",
1072 | "万圣炸弹人",
1073 | "瓜炸弹人",
1074 | "万圣炸弹",
1075 | "万圣炸",
1076 | "瓜炸",
1077 | "南瓜炸",
1078 | "万圣节禊",
1079 | "万圣熊孩",
1080 | "🎃💣"
1081 | ],
1082 | "1113": [
1083 | "美美(万圣节)",
1084 | "ミミ(ハロウィン)",
1085 | "Mimi(Halloween)",
1086 | "万圣兔",
1087 | "万圣兔子",
1088 | "万圣兔兔",
1089 | "绷带兔",
1090 | "绷带兔子",
1091 | "万圣美美",
1092 | "绷带美美",
1093 | "瓜兔",
1094 | "万圣🐰",
1095 | "绷带🐰",
1096 | "🎃🐰",
1097 | "万圣🐇",
1098 | "绷带🐇",
1099 | "🎃🐇"
1100 | ],
1101 | "1114": [
1102 | "露娜",
1103 | "ルナ",
1104 | "Runa",
1105 | "Luna",
1106 | "露仓唯",
1107 | "露cw"
1108 | ],
1109 | "1115": [
1110 | "克莉丝提娜(圣诞节)",
1111 | "クリスティーナ(クリスマス)",
1112 | "Kurisutiina(Xmas)",
1113 | "Christina(Xmas)",
1114 | "Cristina(Xmas)",
1115 | "圣诞克",
1116 | "圣诞克总",
1117 | "圣诞女帝",
1118 | "蛋克",
1119 | "蛋壳",
1120 | "圣克",
1121 | "必胜客"
1122 | ],
1123 | "1116": [
1124 | "望(圣诞节)",
1125 | "ノゾミ(クリスマス)",
1126 | "Nozomi(Xmas)",
1127 | "圣诞望",
1128 | "圣诞偶像",
1129 | "蛋偶像",
1130 | "蛋望"
1131 | ],
1132 | "1117": [
1133 | "伊莉亚(圣诞节)",
1134 | "イリヤ(クリスマス)",
1135 | "Iriya(Xmas)",
1136 | "圣诞伊莉亚",
1137 | "圣诞伊利亚",
1138 | "圣诞伊莉雅",
1139 | "圣诞伊利雅",
1140 | "圣诞yly",
1141 | "圣诞吸血鬼",
1142 | "圣伊",
1143 | "圣yly",
1144 | "伊利丹"
1145 | ],
1146 | "1118": [
1147 | "贪吃佩可(新年)",
1148 | "ペコリーヌ(ニューイヤー)",
1149 | "Pecorine(NewYear)",
1150 | "佩可莉姆(新年)",
1151 | "春吃",
1152 | "新吃",
1153 | "新年吃货",
1154 | "年货"
1155 | ],
1156 | "1119": [
1157 | "可可萝(新年)",
1158 | "コッコロ(ニューイヤー)",
1159 | "Kokkoro(NewYear)",
1160 | "春可可",
1161 | "春白",
1162 | "新年妈",
1163 | "春妈"
1164 | ],
1165 | "1120": [
1166 | "凯留(新年)",
1167 | "キャル(ニューイヤー)",
1168 | "Karyl(NewYear)",
1169 | "Kyaru(NewYear)",
1170 | "凯露(新年)",
1171 | "春凯留",
1172 | "春黑猫",
1173 | "春黑",
1174 | "春臭鼬",
1175 | "新年凯留",
1176 | "新年黑猫",
1177 | "新年臭鼬",
1178 | "唯一神",
1179 | "神"
1180 | ],
1181 | "1121": [
1182 | "铃莓(新年)",
1183 | "スズメ(ニューイヤー)",
1184 | "Suzume(NewYear)",
1185 | "春铃莓",
1186 | "春女仆",
1187 | "春妹抖",
1188 | "新年铃莓",
1189 | "新年女仆",
1190 | "新年妹抖"
1191 | ],
1192 | "1122": [
1193 | "霞(魔法少女)",
1194 | "カスミ(マジカル)",
1195 | "Kasumi(MagiGirl)",
1196 | "魔法少女霞",
1197 | "魔法侦探",
1198 | "魔法杜宾犬",
1199 | "魔法驴",
1200 | "魔法驴子",
1201 | "魔驴",
1202 | "魔法霞",
1203 | "魔法少驴"
1204 | ],
1205 | "1123": [
1206 | "栞(魔法少女)",
1207 | "シオリ(マジカル)",
1208 | "Shiori(MagiGirl)",
1209 | "魔法少女栞",
1210 | "魔法tp弓",
1211 | "魔法小栞",
1212 | "魔法白虎弓",
1213 | "魔法白虎妹",
1214 | "魔法白虎",
1215 | "魔栞",
1216 | "魔弓",
1217 | "魔法弓",
1218 | "法弓"
1219 | ],
1220 | "1124": [
1221 | "卯月(NGs)",
1222 | "ウヅキ(デレマス)",
1223 | "Udsuki(DEREM@S)",
1224 | "卯月(偶像大师)",
1225 | "卯月",
1226 | "卵用",
1227 | "Udsuki(DEREMAS)",
1228 | "岛村卯月",
1229 | "Udsuki"
1230 | ],
1231 | "1125": [
1232 | "凛(NGs)",
1233 | "リン(デレマス)",
1234 | "Rin(DEREM@S)",
1235 | "凛(偶像大师)",
1236 | "凛",
1237 | "Rin(DEREMAS)",
1238 | "涩谷凛",
1239 | "西部凛"
1240 | ],
1241 | "1126": [
1242 | "未央(NGs)",
1243 | "ミオ(デレマス)",
1244 | "Mio(DEREM@S)",
1245 | "未央(偶像大师)",
1246 | "未央",
1247 | "Mio(DEREMAS)",
1248 | "本田未央",
1249 | "Mio"
1250 | ],
1251 | "1127": [
1252 | "铃(游侠)",
1253 | "リン(レンジャー)",
1254 | "Rin(Ranger)",
1255 | "骑兵松鼠",
1256 | "游侠松鼠",
1257 | "游骑兵松鼠",
1258 | "护林员松鼠",
1259 | "护林松鼠",
1260 | "游侠🐿️",
1261 | "武松",
1262 | "钻头松鼠"
1263 | ],
1264 | "1128": [
1265 | "真阳(游侠)",
1266 | "マヒル(レンジャー)",
1267 | "Mahiru(Ranger)",
1268 | "骑兵奶牛",
1269 | "游侠奶牛",
1270 | "游骑兵奶牛",
1271 | "护林员奶牛",
1272 | "护林奶牛",
1273 | "游侠🐄",
1274 | "游侠🐮",
1275 | "牛叉"
1276 | ],
1277 | "1129": [
1278 | "璃乃(奇幻)",
1279 | "リノ(ワンダー)",
1280 | "Rino(Wonder)",
1281 | "璃乃(奇境)",
1282 | "璃乃(仙境)",
1283 | "爽弓",
1284 | "爱丽丝弓",
1285 | "爱弓",
1286 | "兔弓",
1287 | "奇境妹弓",
1288 | "奇幻妹弓",
1289 | "奇幻璃乃",
1290 | "仙境妹弓",
1291 | "白丝妹弓",
1292 | "爱丽丝妹弓"
1293 | ],
1294 | "1130": [
1295 | "步未(奇幻)",
1296 | "アユミ(ワンダー)",
1297 | "Ayumi(Wonder)",
1298 | "步未(奇境)",
1299 | "步未(仙境)",
1300 | "路人兔",
1301 | "兔人妹",
1302 | "爱丽丝路人",
1303 | "奇境路人",
1304 | "奇幻路人",
1305 | "奇幻步未",
1306 | "仙境路人",
1307 | "爱丽丝路人妹",
1308 | "梦路"
1309 | ],
1310 | "1131": [
1311 | "流夏(夏日)",
1312 | "ルカ(サマー)",
1313 | "Ruka(Summer)",
1314 | "泳装流夏",
1315 | "水流夏",
1316 | "泳装刘夏",
1317 | "水刘夏",
1318 | "泳装大姐",
1319 | "泳装大姐头",
1320 | "水大姐",
1321 | "水大姐头",
1322 | "水儿力",
1323 | "泳装儿力",
1324 | "水流"
1325 | ],
1326 | "1132": [
1327 | "杏奈(夏日)",
1328 | "アンナ(サマー)",
1329 | "Anna(Summer)",
1330 | "泳装中二",
1331 | "泳装煤气罐",
1332 | "水中二",
1333 | "水煤气罐",
1334 | "冲",
1335 | "冲二"
1336 | ],
1337 | "1133": [
1338 | "七七香(夏日)",
1339 | "ナナカ(サマー)",
1340 | "Nanaka(Summer)",
1341 | "泳装娜娜卡",
1342 | "泳装77k",
1343 | "泳装77香",
1344 | "水娜娜卡",
1345 | "水77k",
1346 | "水77香",
1347 | "水七七香",
1348 | "泳装七七香",
1349 | "水七"
1350 | ],
1351 | "1134": [
1352 | "初音(夏日)",
1353 | "ハツネ(サマー)",
1354 | "Hatsune(Summer)",
1355 | "水星",
1356 | "海星",
1357 | "水hego",
1358 | "水星法",
1359 | "泳装星法",
1360 | "水⭐法",
1361 | "水睡法",
1362 | "湦",
1363 | "泳装初音",
1364 | "水初音",
1365 | "夏日初音"
1366 | ],
1367 | "1135": [
1368 | "美里(夏日)",
1369 | "ミサト(サマー)",
1370 | "Misato(Summer)",
1371 | "水母",
1372 | "泳装圣母",
1373 | "水圣母"
1374 | ],
1375 | "1136": [
1376 | "纯(夏日)",
1377 | "ジュン(サマー)",
1378 | "Jun(Summer)",
1379 | "泳装黑骑",
1380 | "水黑骑",
1381 | "泳装纯",
1382 | "水纯",
1383 | "小次郎"
1384 | ],
1385 | "1137": [
1386 | "茜里(天使)",
1387 | "アカリ(エンジェル)",
1388 | "Akari(Angel)",
1389 | "天使妹法",
1390 | "天使茜里",
1391 | "丘比特妹法",
1392 | "天妹"
1393 | ],
1394 | "1138": [
1395 | "依里(天使)",
1396 | "ヨリ(エンジェル)",
1397 | "Yori(Angel)",
1398 | "天使姐法",
1399 | "天使依里",
1400 | "丘比特姐法",
1401 | "天姐"
1402 | ],
1403 | "1139": [
1404 | "纺希(万圣节)",
1405 | "ツムギ(ハロウィン)",
1406 | "Tsumugi(Halloween)",
1407 | "万圣裁缝",
1408 | "万圣蜘蛛侠",
1409 | "🎃🕷️",
1410 | "🎃🕸️",
1411 | "万裁",
1412 | "瓜裁",
1413 | "鬼裁",
1414 | "鬼才"
1415 | ],
1416 | "1140": [
1417 | "怜(万圣节)",
1418 | "レイ(ハロウィン)",
1419 | "Rei(Halloween)",
1420 | "万圣剑圣",
1421 | "万剑",
1422 | "瓜剑",
1423 | "瓜怜",
1424 | "万圣怜",
1425 | "鬼剑",
1426 | "鬼怜"
1427 | ],
1428 | "1141": [
1429 | "茉莉(万圣节)",
1430 | "マツリ(ハロウィン)",
1431 | "Matsuri(Halloween)",
1432 | "万圣跳跳虎",
1433 | "万圣老虎",
1434 | "瓜虎",
1435 | "万圣虎",
1436 | "🎃🐅"
1437 | ],
1438 | "1142": [
1439 | "莫妮卡(魔法少女)",
1440 | "モニカ(マジカル)",
1441 | "Monika(MagiGirl)",
1442 | "魔法少女莫妮卡",
1443 | "魔二力",
1444 | "魔卡少女"
1445 | ],
1446 | "1143": [
1447 | "智(魔法少女)",
1448 | "トモ(マジカル)",
1449 | "Tomo(MagiGirl)",
1450 | "魔法少女智",
1451 | "琪露诺",
1452 | "9智",
1453 | "⑨"
1454 | ],
1455 | "1144": [
1456 | "秋乃(圣诞节)",
1457 | "アキノ(クリスマス)",
1458 | "Akino(Xmas)",
1459 | "圣剑",
1460 | "生煎",
1461 | "圣诞哈哈剑",
1462 | "哈哈剑(圣诞节)",
1463 | "圣哈",
1464 | "蛋哈",
1465 | "蛋剑"
1466 | ],
1467 | "1145": [
1468 | "咲恋(圣诞节)",
1469 | "サレン(クリスマス)",
1470 | "Saren(Xmas)",
1471 | "圣诞充电宝",
1472 | "圣电",
1473 | "圣诞咲恋"
1474 | ],
1475 | "1146": [
1476 | "优花梨(圣诞节)",
1477 | "ユカリ(クリスマス)",
1478 | "Yukari(Xmas)",
1479 | "蛋黄",
1480 | "由加莉(圣诞节)",
1481 | "圣诞黄骑",
1482 | "圣诞圣骑",
1483 | "蛋骑",
1484 | "黄骑(圣诞节)",
1485 | "圣黄"
1486 | ],
1487 | "1147": [
1488 | "矛依未(新年)",
1489 | "ムイミ(ニューイヤー)",
1490 | "Muimi(NewYear)",
1491 | "新年511",
1492 | "春511",
1493 | "春11",
1494 | "春矛",
1495 | "512"
1496 | ],
1497 | "1150": [
1498 | "似似花(新年)",
1499 | "ネネカ(ニューイヤー)",
1500 | "Neneka(NewYear)",
1501 | "新年似似花",
1502 | "春似似花",
1503 | "春nnk",
1504 | "春花",
1505 | "新年nnk",
1506 | "春妃",
1507 | "春448"
1508 | ],
1509 | "1155": [
1510 | "可可萝(祭服)",
1511 | "コッコロ(儀装束)",
1512 | "Kokkoro(Costume)",
1513 | "可可萝(仪装束)",
1514 | "礼妈",
1515 | "仪妈",
1516 | "仪装妈",
1517 | "姨妈",
1518 | "礼白"
1519 | ],
1520 | "1156": [
1521 | "优衣(祭服)",
1522 | "ユイ(儀装束)",
1523 | "Yui(Costume)",
1524 | "优衣(仪装束)",
1525 | "礼ue",
1526 | "礼装ue",
1527 | "礼装优衣",
1528 | "仪装ue",
1529 | "礼衣",
1530 | "礼田"
1531 | ],
1532 | "1157": [
1533 | "霞(夏日)",
1534 | "カスミ(サマー)",
1535 | "Kasumi(Summer)",
1536 | "水驴",
1537 | "泳装驴",
1538 | "沪"
1539 | ],
1540 | "1158": [
1541 | "莉玛(灰姑娘)",
1542 | "リマ(シンデレラ)",
1543 | "Rima(Cinderella)",
1544 | "人形羊驼",
1545 | "人驼",
1546 | "灰驼",
1547 | "灰姑娘羊驼",
1548 | "灰羊"
1549 | ],
1550 | "1159": [
1551 | "真琴(灰姑娘)",
1552 | "マコト(シンデレラ)",
1553 | "Makoto(Cinderella)",
1554 | "灰姑娘狼",
1555 | "灰狼"
1556 | ],
1557 | "1160": [
1558 | "真步(灰姑娘)",
1559 | "マホ(シンデレラ)",
1560 | "Maho(Cinderella)",
1561 | "灰姑娘狐狸",
1562 | "灰狐狸",
1563 | "灰狐",
1564 | "灰壶",
1565 | "茶狐",
1566 | "茶壶"
1567 | ],
1568 | "1162": [
1569 | "克萝依(圣学祭)",
1570 | "クロエ(聖学祭)",
1571 | "Kuroe(Seigakusai)",
1572 | "运动华",
1573 | "运动华哥",
1574 | "圣学祭华",
1575 | "圣学祭克萝依",
1576 | "圣华"
1577 | ],
1578 | "1163": [
1579 | "琪爱儿(圣学祭)",
1580 | "チエル(聖学祭)",
1581 | "Chieru(Seigakusai)",
1582 | "千爱瑠(圣学祭)",
1583 | "运动切噜",
1584 | "圣学祭切噜",
1585 | "圣学祭琪爱儿",
1586 | "圣学祭千爱瑠",
1587 | "圣爱瑠"
1588 | ],
1589 | "1164": [
1590 | "优妮(圣学祭)",
1591 | "ユニ(聖学祭)",
1592 | "Yuni(Seigakusai)",
1593 | "圣优妮",
1594 | "圣uni",
1595 | "运动优妮",
1596 | "运动服",
1597 | "罗塞塔"
1598 | ],
1599 | "1165": [
1600 | "祈梨(时间旅行)",
1601 | "イノリ(タイムトラベル)",
1602 | "Inori(TimeTravel)",
1603 | "时间旅行龙锤",
1604 | "穿越龙锤",
1605 | "穿越梨老八",
1606 | "军装龙锤",
1607 | "元首龙锤",
1608 | "元首",
1609 | "元老八"
1610 | ],
1611 | "1166": [
1612 | "嘉夜(时间旅行)",
1613 | "カヤ(タイムトラベル)",
1614 | "Kaya(TimeTravel)",
1615 | "时间旅行龙拳",
1616 | "穿越龙拳",
1617 | "水手龙",
1618 | "水手龙拳"
1619 | ],
1620 | "1167": [
1621 | "碧(作业服)",
1622 | "アオイ(作業服)",
1623 | "Aoi(Sagyoufuku)",
1624 | "碧(工作服)",
1625 | "工菜",
1626 | "韭菜",
1627 | "工作碧",
1628 | "贡菜"
1629 | ],
1630 | "1168": [
1631 | "珠希(作业服)",
1632 | "タマキ(作業服)",
1633 | "Tamaki(Sagyoufuku)",
1634 | "珠希(工作服)",
1635 | "工猫贼",
1636 | "工猫剑",
1637 | "工贼",
1638 | "工珠希"
1639 | ],
1640 | "1169": [
1641 | "美冬(作业服)",
1642 | "ミフユ(作業服)",
1643 | "Mifuyu(Sagyoufuku)",
1644 | "美冬(工作服)",
1645 | "电子龙",
1646 | "工子龙",
1647 | "工龙",
1648 | "工头"
1649 | ],
1650 | "1170": [
1651 | "惠理子(夏日)",
1652 | "エリコ(サマー)",
1653 | "Eriko(Summer)",
1654 | "泳装惠理子",
1655 | "泳装病娇",
1656 | "水病",
1657 | "水病娇",
1658 | "水饺",
1659 | "水娇"
1660 | ],
1661 | "1171": [
1662 | "静流(夏日)",
1663 | "シズル(サマー)",
1664 | "Shizuru(Summer)",
1665 | "泳装静流",
1666 | "泳装姐姐",
1667 | "水姐",
1668 | "水姐姐",
1669 | "水解",
1670 | "沮"
1671 | ],
1672 | "1172": [
1673 | "望(夏日)",
1674 | "ノゾミ(サマー)",
1675 | "Nozomi(Summer)",
1676 | "泳装偶像",
1677 | "泳装望",
1678 | "水望",
1679 | "水偶像",
1680 | "夏日偶像",
1681 | "夏日望",
1682 | "潒"
1683 | ],
1684 | "1173": [
1685 | "千歌(夏日)",
1686 | "チカ(サマー)",
1687 | "Chika(Summer)",
1688 | "泳装千歌",
1689 | "水千",
1690 | "汘",
1691 | "泳千"
1692 | ],
1693 | "1174": [
1694 | "纺希(夏日)",
1695 | "ツムギ(サマー)",
1696 | "Tsumugi(Summer)",
1697 | "泳装裁缝",
1698 | "泳装纺希",
1699 | "水裁缝",
1700 | "水裁",
1701 | "水彩",
1702 | "水纺希",
1703 | "漨"
1704 | ],
1705 | "1175": [
1706 | "深月(大江户)",
1707 | "ミツキ(オーエド)",
1708 | "Mitsuki(Ooedo)",
1709 | "江月",
1710 | "江S",
1711 | "江户深月",
1712 | "大江户深月"
1713 | ],
1714 | "1176": [
1715 | "雪(大江户)",
1716 | "ユキ(オーエド)",
1717 | "Yuki(Ooedo)",
1718 | "江雪",
1719 | "江哥",
1720 | "江户雪",
1721 | "江户小雪",
1722 | "江户雪哥",
1723 | "大江户雪"
1724 | ],
1725 | "1177": [
1726 | "香织(万圣节)",
1727 | "カオリ(ハロウィン)",
1728 | "Kaori(Halloween)",
1729 | "万圣狗",
1730 | "瓜狗",
1731 | "万圣狗拳"
1732 | ],
1733 | "1178": [
1734 | "妮诺(万圣节)",
1735 | "ニノン(ハロウィン)",
1736 | "Ninon(Halloween)",
1737 | "万圣扇",
1738 | "瓜扇",
1739 | "万圣扇子"
1740 | ],
1741 | "1179": [
1742 | "铃奈(万圣节)",
1743 | "スズナ(ハロウィン)",
1744 | "Suzuna(Halloween)",
1745 | "万圣暴弓",
1746 | "瓜弓",
1747 | "瓜暴弓",
1748 | "万圣爆弓",
1749 | "瓜爆弓"
1750 | ],
1751 | "1180": [
1752 | "克蕾琪塔",
1753 | "クレジッタ",
1754 | "Kurejitta",
1755 | "富婆",
1756 | "信用卡"
1757 | ],
1758 | "1181": [
1759 | "兰法",
1760 | "ランファ",
1761 | "Ranfa",
1762 | "Ranpha",
1763 | "兰法妈妈",
1764 | "兰妈妈",
1765 | "兰妈"
1766 | ],
1767 | "1183": [
1768 | "初音(初音&栞)",
1769 | "ハツネ(ハツネ&シオリ)",
1770 | "Hatsune(Hatsune&Shiori)",
1771 | "星弓星",
1772 | "星栞星"
1773 | ],
1774 | "1184": [
1775 | "栞(初音&栞)",
1776 | "シオリ(ハツネ&シオリ)",
1777 | "Shiori(Hatsune&Shiori)",
1778 | "星弓栞",
1779 | "星弓弓",
1780 | "星栞栞",
1781 | "星栞弓"
1782 | ],
1783 | "1185": [
1784 | "花凛",
1785 | "カリン",
1786 | "Karin",
1787 | "佳凛",
1788 | "绿色恶魔",
1789 | "绿魔",
1790 | "绿毛恶魔"
1791 | ],
1792 | "1190": [
1793 | "伊绪(黑暗)",
1794 | "イオ(ノワール)",
1795 | "Io(Noir)",
1796 | "黑老师",
1797 | "黑魅魔"
1798 | ],
1799 | "1191": [
1800 | "空花(黑暗)",
1801 | "クウカ(ノワール)",
1802 | "Kuuka(Noir)",
1803 | "黑m",
1804 | "暗m"
1805 | ],
1806 | "1192": [
1807 | "真阳(圣诞节)",
1808 | "マヒル(クリスマス)",
1809 | "Mahiru(Xmas)",
1810 | "圣牛",
1811 | "蛋牛",
1812 | "圣诞奶牛",
1813 | "圣诞牛"
1814 | ],
1815 | "1193": [
1816 | "璃乃(圣诞节)",
1817 | "リノ(クリスマス)",
1818 | "Rino(Xmas)",
1819 | "圣诞妹弓",
1820 | "圣诞璃乃",
1821 | "弹弓",
1822 | "蛋弓",
1823 | "诞弓"
1824 | ],
1825 | "1199": [
1826 | "宫子(圣诞节)",
1827 | "ミヤコ(クリスマス)",
1828 | "Miyako(Xmas)",
1829 | "圣诞布丁",
1830 | "圣诞宫子",
1831 | "诞丁",
1832 | "蛋丁",
1833 | "但丁"
1834 | ],
1835 | "1204": [
1836 | "美美(小小甜心)",
1837 | "ミミ(リトルリリカル)",
1838 | "Mimi(LittleLyrical)"
1839 | ],
1840 | "1205": [
1841 | "禊(小小甜心)",
1842 | "ミソギ(リトルリリカル)",
1843 | "Misogi(LittleLyrical)",
1844 | "未奏希(小小甜心)"
1845 | ],
1846 | "1206": [
1847 | "镜华(小小甜心)",
1848 | "キョウカ(リトルリリカル)",
1849 | "Kyouka(LittleLyrical)"
1850 | ],
1851 | "1207": [
1852 | "雪菲(新年)",
1853 | "シェフィ(ニューイヤー)",
1854 | "Shephy(NewYear)",
1855 | "Shefi(NewYear)",
1856 | "新年雪菲",
1857 | "春雪菲",
1858 | "春菲",
1859 | "春冰龙"
1860 | ],
1861 | "1208": [
1862 | "流夏(新年)",
1863 | "ルカ(ニューイヤー)",
1864 | "Ruka(NewYear)",
1865 | "春流夏"
1866 | ],
1867 | "1209": [
1868 | "伊莉亚(新年)",
1869 | "イリヤ(ニューイヤー)",
1870 | "Iriya(NewYear)",
1871 | "新年伊莉亚",
1872 | "新年伊利亚",
1873 | "新年伊莉雅",
1874 | "新年伊利雅",
1875 | "新年yly",
1876 | "新年吸血鬼",
1877 | "春伊",
1878 | "春yly",
1879 | "伊莉旦"
1880 | ],
1881 | "1210": [
1882 | "贪吃佩可(超载)",
1883 | "ペコリーヌ(オーバーロード)",
1884 | "Pecorine(Overload)",
1885 | "Pekoriinu(Overload)",
1886 | "超载吃",
1887 | "超吃",
1888 | "超载佩可",
1889 | "超载佩",
1890 | "超佩"
1891 | ],
1892 | "1211": [
1893 | "凯留(超载)",
1894 | "キャル(オーバーロード)",
1895 | "Karyl(Overload)",
1896 | "凯露(超载)",
1897 | "Kyaru(Overload)",
1898 | "超载凯留",
1899 | "超凯留",
1900 | "超载黑猫",
1901 | "超黑",
1902 | "超猫",
1903 | "超威蓝猫"
1904 | ],
1905 | "1212": [
1906 | "拉比林斯达(超载)",
1907 | "ラビリスタ(オーバーロード)",
1908 | "Labyrista(Overload)",
1909 | "Rabirisuta(Overload)",
1910 | "超载晶",
1911 | "超晶"
1912 | ],
1913 | "1213": [
1914 | "胡桃(舞台)",
1915 | "クルミ(ステージ)",
1916 | "Kurumi(Stage)",
1917 | "舞台胡桃",
1918 | "舞桃",
1919 | "演员",
1920 | "舞胡",
1921 | "芜湖",
1922 | "舞铃",
1923 | "舞台铃",
1924 | "戏铃"
1925 | ],
1926 | "1214": [
1927 | "美咲(舞台)",
1928 | "ミサキ(ステージ)",
1929 | "Misaki(Satge)",
1930 | "舞台大眼",
1931 | "舞台眼",
1932 | "舞台美咲",
1933 | "泥头车大眼",
1934 | "车眼"
1935 | ],
1936 | "1215": [
1937 | "步未(怪盗)",
1938 | "アユミ(怪盗)",
1939 | "Ayumi(Kaitou)",
1940 | "怪盗路人",
1941 | "怪盗路人妹"
1942 | ],
1943 | "1216": [
1944 | "祈梨(怪盗)",
1945 | "イノリ(怪盗)",
1946 | "Inori(Kaitou)",
1947 | "怪盗祈梨",
1948 | "怪盗龙锤",
1949 | "忍龙",
1950 | "忍龙锤"
1951 | ],
1952 | "1217": [
1953 | "秋乃(秋乃&咲恋)",
1954 | "アキノ(アキノ&サレン)",
1955 | "Akino(Akino&Saren)"
1956 | ],
1957 | "1218": [
1958 | "咲恋(秋乃&咲恋)",
1959 | "サレン(アキノ&サレン)",
1960 | "Saren(Akino&Saren)"
1961 | ],
1962 | "1219": [
1963 | "杏奈(海盗)",
1964 | "アンナ(パイレーツ)",
1965 | "Anna(Pirates)",
1966 | "海盗中二",
1967 | "海盗杏奈",
1968 | "船长中二",
1969 | "船二"
1970 | ],
1971 | "1220": [
1972 | "忍(海盗)",
1973 | "シノブ(パイレーツ)",
1974 | "Shinobu(Pirates)",
1975 | "海盗忍",
1976 | "海贼忍",
1977 | "海忍",
1978 | "水手忍",
1979 | "手忍"
1980 | ],
1981 | "1221": [
1982 | "碧(露营)",
1983 | "アオイ(キャンプ)",
1984 | "Aoi(Camp)",
1985 | "露营碧",
1986 | "露碧",
1987 | "野菜"
1988 | ],
1989 | "1222": [
1990 | "优花梨(露营)",
1991 | "ユカリ(キャンプ)",
1992 | "Yukari(Camp)",
1993 | "露营优花梨",
1994 | "露优花梨",
1995 | "露花梨",
1996 | "露营黄骑",
1997 | "露黄骑",
1998 | "露黄"
1999 | ],
2000 | "1701": [
2001 | "环奈",
2002 | "カンナ",
2003 | "Kanna",
2004 | "桥本环奈",
2005 | "红二力",
2006 | "毛大力",
2007 | "毛小力",
2008 | "毛六力",
2009 | "可大萝",
2010 | "大可萝",
2011 | "缝合怪",
2012 | "一环"
2013 | ],
2014 | "1702": [
2015 | "环奈(振袖)",
2016 | "カンナ(振袖)",
2017 | "Kanna(Furisode)",
2018 | "振袖环奈",
2019 | "春环",
2020 | "春奈",
2021 | "春环奈",
2022 | "二环",
2023 | "振环奈",
2024 | "振环",
2025 | "甄嬛",
2026 | "震动环",
2027 | "年糕环奈",
2028 | "年糕环"
2029 | ],
2030 | "1801": [
2031 | "日和(公主)",
2032 | "ヒヨリ(プリンセス)",
2033 | "Hiyori(Princess)",
2034 | "公主日和",
2035 | "公猫",
2036 | "炎拳猫",
2037 | "火猫",
2038 | "炎拳"
2039 | ],
2040 | "1802": [
2041 | "优衣(公主)",
2042 | "ユイ(プリンセス)",
2043 | "Yui(Princess)",
2044 | "公主优衣",
2045 | "公主yui",
2046 | "公主种田",
2047 | "公主田",
2048 | "公主ue",
2049 | "掉毛优衣",
2050 | "掉毛yui",
2051 | "掉毛ue",
2052 | "掉毛",
2053 | "飞翼优衣",
2054 | "飞翼ue",
2055 | "飞翼",
2056 | "飞翼高达",
2057 | "飞田",
2058 | "羽田",
2059 | "羽衣",
2060 | "毛衣",
2061 | "pfue"
2062 | ],
2063 | "1803": [
2064 | "怜(公主)",
2065 | "レイ(プリンセス)",
2066 | "Rei(Princess)",
2067 | "公主怜",
2068 | "公剑",
2069 | "风剑",
2070 | "pf怜"
2071 | ],
2072 | "1804": [
2073 | "贪吃佩可(公主)",
2074 | "ペコリーヌ(プリンセス)",
2075 | "Pecorine(Princess)",
2076 | "佩可莉姆(公主)",
2077 | "Pekoriinu(Princess)",
2078 | "公主吃",
2079 | "公主饭",
2080 | "公主吃货",
2081 | "公主佩可",
2082 | "公主饭团",
2083 | "公主🍙",
2084 | "命运高达",
2085 | "高达",
2086 | "命运公主",
2087 | "高达公主",
2088 | "命吃",
2089 | "春哥高达",
2090 | "🤖🍙",
2091 | "🤖",
2092 | "公吃",
2093 | "pf吃"
2094 | ],
2095 | "1805": [
2096 | "可可萝(公主)",
2097 | "コッコロ(プリンセス)",
2098 | "Kokkoro(Princess)",
2099 | "公主妈",
2100 | "月光妈",
2101 | "蝶妈",
2102 | "蝴蝶妈",
2103 | "月光蝶妈",
2104 | "公主可",
2105 | "公主可萝",
2106 | "公主可可萝",
2107 | "月光可",
2108 | "月光可萝",
2109 | "月光可可萝",
2110 | "蝶可",
2111 | "蝶可萝",
2112 | "蝶可可萝",
2113 | "公可",
2114 | "pf妈",
2115 | "飞妈"
2116 | ],
2117 | "1806": [
2118 | "凯留(公主)",
2119 | "キャル(プリンセス)",
2120 | "Karyl(Princess)",
2121 | "Kyaru(Princess)",
2122 | "凯露(公主)",
2123 | "公主黑猫",
2124 | "公主猫",
2125 | "公主猫猫头",
2126 | "白猫"
2127 | ],
2128 | "1807": [
2129 | "初音&栞",
2130 | "ハツネ&シオリ",
2131 | "Hatsune&Shiori",
2132 | "星弓",
2133 | "星栞",
2134 | "双子弓",
2135 | "姐妹弓",
2136 | "姊妹弓",
2137 | "姐妹丼",
2138 | "姊妹丼",
2139 | "姐妹井",
2140 | "贴贴弓",
2141 | "替身弓",
2142 | "白金之星",
2143 | "食堂泼辣酱",
2144 | "初音栞",
2145 | "星法栞"
2146 | ],
2147 | "1808": [
2148 | "禊&美美&镜华",
2149 | "ミソギ&ミミ&キョウカ",
2150 | "Misogi&Mimi&Kyouka",
2151 | "小小甜心",
2152 | "狱三家",
2153 | "小御三家"
2154 | ],
2155 | "1809": [
2156 | "秋乃&咲恋",
2157 | "アキノ&サレン",
2158 | "Akino&Saren",
2159 | "咲哈哈",
2160 | "哈哈电",
2161 | "哈哈咲",
2162 | "哈电",
2163 | "电哈",
2164 | "光焰"
2165 | ],
2166 | "1900": [
2167 | "爱梅斯",
2168 | "アメス",
2169 | "Amesu"
2170 | ],
2171 | "1901": [
2172 | "菲欧",
2173 | "フィオ",
2174 | "Fio"
2175 | ],
2176 | "1907": [
2177 | "大古",
2178 | "タイゴ",
2179 | "Taigo",
2180 | "大吾",
2181 | "鬼道大吾"
2182 | ],
2183 | "1909": [
2184 | "涅比亚",
2185 | "ネビア",
2186 | "Nevia",
2187 | "Nebia"
2188 | ],
2189 | "1910": [
2190 | "真崎",
2191 | "マサキ",
2192 | "Masaki"
2193 | ],
2194 | "1911": [
2195 | "米涅尔β",
2196 | "ミネルβ",
2197 | "MineruBeta",
2198 | "米涅尔",
2199 | "ミネル",
2200 | "Mineru"
2201 | ],
2202 | "1913": [
2203 | "和正",
2204 | "カズマサ",
2205 | "Kazumasa"
2206 | ],
2207 | "1914": [
2208 | "豪绅",
2209 | "ゴウシン",
2210 | "Goushin"
2211 | ],
2212 | "1916": [
2213 | "基洛",
2214 | "キイロ",
2215 | "Kiiro"
2216 | ],
2217 | "1917": [
2218 | "赞恩",
2219 | "ゼーン",
2220 | "Seen",
2221 | "大舅哥",
2222 | "Zane"
2223 | ],
2224 | "1919": [
2225 | "阿佐尔德",
2226 | "アンゾールド",
2227 | "Anzoorudo",
2228 | "猪哥",
2229 | "Azold"
2230 | ],
2231 | "1920": [
2232 | "美空",
2233 | "ミソラ",
2234 | "Misora"
2235 | ],
2236 | "4031": [
2237 | "骷髅",
2238 | "髑髏",
2239 | "Dokuro",
2240 | "骷髅老爹",
2241 | "老爹"
2242 | ],
2243 | "9000": [
2244 | "祐树",
2245 | "ユウキ",
2246 | "Yuuki",
2247 | "骑士",
2248 | "骑士君"
2249 | ]
2250 | }
2251 |
--------------------------------------------------------------------------------
/CHARA_PROFILE.json:
--------------------------------------------------------------------------------
1 | {
2 | "1001": {
3 | "名字": "日和",
4 | "公会": "破晓之星",
5 | "生日": "8月27日",
6 | "年龄": "16",
7 | "身高": "155cm",
8 | "体重": "44kg",
9 | "血型": "A",
10 | "种族": "兽人族",
11 | "喜好": "助人、打气加油",
12 | "声优": "东山奈央",
13 | "口头禅和座右铭": "放不下心"
14 | },
15 | "1002": {
16 | "名字": "优衣",
17 | "公会": "破晓之星",
18 | "生日": "4月5日",
19 | "年龄": "17",
20 | "身高": "158cm",
21 | "体重": "47kg",
22 | "血型": "O",
23 | "种族": "人族",
24 | "喜好": "料理、观察人类",
25 | "声优": "种田梨沙",
26 | "特技": "全体治愈",
27 | "儿时玩伴": "真琴"
28 | },
29 | "1003": {
30 | "名字": "怜",
31 | "公会": "破晓之星",
32 | "生日": "1月12日",
33 | "年龄": "18",
34 | "身高": "163cm",
35 | "体重": "46kg",
36 | "血型": "B",
37 | "种族": "魔族",
38 | "喜好": "读书、骑马、茶",
39 | "声优": "早见沙织",
40 | "隐藏特技": "骑马"
41 | },
42 | "1004": {
43 | "名字": "禊",
44 | "公会": "小小甜心",
45 | "生日": "8月10日",
46 | "年龄": "9",
47 | "身高": "128cm",
48 | "体重": "27kg",
49 | "血型": "O",
50 | "种族": "人族",
51 | "喜好": "恶作剧、探险",
52 | "声优": "诸星堇",
53 | "无人能出其右的技巧": "捣蛋鬼"
54 | },
55 | "1005": {
56 | "名字": "茉莉",
57 | "公会": "王宫骑士团",
58 | "生日": "11月25日",
59 | "年龄": "12",
60 | "身高": "146cm",
61 | "体重": "40kg",
62 | "血型": "O",
63 | "种族": "兽人族",
64 | "喜好": "英雄扮演游戏",
65 | "声优": "下田麻美",
66 | "称号": "见习英雄"
67 | },
68 | "1006": {
69 | "名字": "茜里",
70 | "公会": "恶魔伪王国军",
71 | "生日": "11月22日",
72 | "年龄": "13",
73 | "身高": "150cm",
74 | "体重": "42kg",
75 | "血型": "O",
76 | "种族": "魔族",
77 | "喜好": "萨克斯风",
78 | "声优": "浅仓杏美",
79 | "称号": "小恶魔",
80 | "姊姊": "依里"
81 | },
82 | "1007": {
83 | "名字": "宫子",
84 | "公会": "恶魔伪王国军",
85 | "生日": "1月23日",
86 | "年龄": "14",
87 | "身高": "130cm",
88 | "体重": "32kg",
89 | "血型": "B",
90 | "种族": "魔族",
91 | "喜好": "吃布丁",
92 | "声优": "雨宫天"
93 | },
94 | "1008": {
95 | "名字": "雪",
96 | "公会": "纯白之翼兰德索尔分部",
97 | "生日": "10月10日",
98 | "年龄": "14",
99 | "身高": "150cm",
100 | "体重": "40kg",
101 | "血型": "AB",
102 | "种族": "精灵族",
103 | "喜好": "欣赏镜中的自己",
104 | "声优": "大空直美",
105 | "罪过": "美丽的自己",
106 | "癖好": "自恋"
107 | },
108 | "1009": {
109 | "名字": "杏奈",
110 | "公会": "暮光流星群",
111 | "生日": "7月5日",
112 | "年龄": "17",
113 | "身高": "159cm",
114 | "体重": "45kg",
115 | "血型": "A",
116 | "种族": "魔族",
117 | "喜好": "写小说",
118 | "声优": "高野麻美",
119 | "称号": "疾风之冥姬"
120 | },
121 | "1010": {
122 | "名字": "真步",
123 | "公会": "自卫团",
124 | "生日": "9月22日",
125 | "年龄": "16",
126 | "身高": "155cm",
127 | "体重": "42kg",
128 | "血型": "O",
129 | "种族": "兽人族",
130 | "喜好": "幻想、收集玩偶",
131 | "声优": "内田真礼",
132 | "身份": "某谜之国度的公主"
133 | },
134 | "1011": {
135 | "名字": "璃乃",
136 | "公会": "拉比林斯",
137 | "生日": "8月25日",
138 | "年龄": "15",
139 | "身高": "156cm",
140 | "体重": "44kg",
141 | "血型": "A",
142 | "种族": "人族",
143 | "喜好": "裁缝",
144 | "声优": "阿澄佳奈",
145 | "自称": "妹妹",
146 | "称号": "小笨蛋"
147 | },
148 | "1012": {
149 | "名字": "初音",
150 | "公会": "森林守卫",
151 | "生日": "12月24日",
152 | "年龄": "17",
153 | "身高": "156cm",
154 | "体重": "46kg",
155 | "血型": "A",
156 | "种族": "精灵族",
157 | "喜好": "和妹妹一起玩、回笼觉、午睡、早睡",
158 | "声优": "大桥彩香",
159 | "称号": "超能力少女",
160 | "妹妹": "小栞"
161 | },
162 | "1013": {
163 | "名字": "七七香",
164 | "公会": "暮光流星群",
165 | "生日": "8月21日",
166 | "年龄": "18",
167 | "身高": "166cm",
168 | "体重": "55kg",
169 | "血型": "O",
170 | "种族": "魔族",
171 | "喜好": "读书、魔法",
172 | "声优": "佳村遥",
173 | "称号": "魔法少女"
174 | },
175 | "1014": {
176 | "名字": "霞",
177 | "公会": "自卫团",
178 | "生日": "11月3日",
179 | "年龄": "15",
180 | "身高": "152cm",
181 | "体重": "41kg",
182 | "血型": "AB",
183 | "种族": "兽人族",
184 | "喜好": "读书、推理",
185 | "声优": "水濑祈",
186 | "称号": "名侦探"
187 | },
188 | "1015": {
189 | "名字": "美里",
190 | "公会": "森林守卫",
191 | "生日": "9月5日",
192 | "年龄": "21",
193 | "身高": "165cm",
194 | "体重": "54kg",
195 | "血型": "O",
196 | "种族": "精灵族",
197 | "喜好": "制作绘本",
198 | "声优": "国府田麻理子",
199 | "工作": "幼稚园的老师"
200 | },
201 | "1016": {
202 | "名字": "铃奈",
203 | "公会": "月光学院",
204 | "生日": "4月10日",
205 | "年龄": "18",
206 | "身高": "167cm",
207 | "体重": "48kg",
208 | "血型": "O",
209 | "种族": "魔族",
210 | "喜好": "时尚",
211 | "声优": "上坂堇",
212 | "工作": "超级名模",
213 | "称号": "辣妹"
214 | },
215 | "1017": {
216 | "名字": "香织",
217 | "公会": "自卫团",
218 | "生日": "7月7日",
219 | "年龄": "19",
220 | "身高": "158cm",
221 | "体重": "53kg",
222 | "血型": "A",
223 | "种族": "兽人族",
224 | "喜好": "跳舞、空手道",
225 | "声优": "高森奈津美",
226 | "绝技": "琉球空手道",
227 | "问候的方式": "嗨——呵"
228 | },
229 | "1018": {
230 | "名字": "伊绪",
231 | "公会": "月光学院",
232 | "生日": "8月14日",
233 | "年龄": "23",
234 | "身高": "162cm",
235 | "体重": "52kg",
236 | "血型": "B",
237 | "种族": "魔族",
238 | "喜好": "看恋爱小说、恋爱剧、恋爱漫画",
239 | "声优": "伊藤静",
240 | "工作": "新来的老师"
241 | },
242 | "1020": {
243 | "名字": "美美",
244 | "公会": "小小甜心",
245 | "生日": "4月3日",
246 | "年龄": "10",
247 | "身高": "117cm",
248 | "体重": "21kg",
249 | "血型": "O",
250 | "种族": "兽人族",
251 | "喜好": "收集可爱的东西",
252 | "声优": "日高里菜",
253 | "最喜欢": "兔子先生"
254 | },
255 | "1021": {
256 | "名字": "胡桃",
257 | "公会": "咲恋救济院",
258 | "生日": "6月9日",
259 | "年龄": "12",
260 | "身高": "150cm",
261 | "体重": "40kg",
262 | "血型": "B",
263 | "种族": "人族",
264 | "喜好": "看戏、扮家家酒",
265 | "声优": "植田佳奈",
266 | "称号": "知名女演员"
267 | },
268 | "1022": {
269 | "名字": "依里",
270 | "公会": "恶魔伪王国军",
271 | "生日": "11月22日",
272 | "年龄": "13",
273 | "身高": "150cm",
274 | "体重": "40kg",
275 | "血型": "O",
276 | "种族": "魔族",
277 | "喜好": "所有游戏",
278 | "声优": "原纱友里",
279 | "妹妹": "茜里",
280 | "性格": "害羞",
281 | "称号": "天才玩家"
282 | },
283 | "1023": {
284 | "名字": "绫音",
285 | "公会": "咲恋救济院",
286 | "生日": "5月10日",
287 | "年龄": "14",
288 | "身高": "148cm",
289 | "体重": "38kg",
290 | "血型": "B",
291 | "种族": "人族",
292 | "喜好": "能在房间里玩的游戏",
293 | "声优": "芹泽优",
294 | "伙伴": "噗吉"
295 | },
296 | "1025": {
297 | "名字": "铃莓",
298 | "公会": "咲恋救济院",
299 | "生日": "12月12日",
300 | "年龄": "15",
301 | "身高": "154cm",
302 | "体重": "43kg",
303 | "血型": "O",
304 | "种族": "人族",
305 | "喜好": "服侍",
306 | "声优": "悠木碧",
307 | "特点": "冒冒失失"
308 | },
309 | "1026": {
310 | "名字": "铃",
311 | "公会": "伊丽莎白牧场",
312 | "生日": "1月1日",
313 | "年龄": "17",
314 | "身高": "144cm",
315 | "体重": "42kg",
316 | "血型": "B",
317 | "种族": "兽人族",
318 | "喜好": "红豆面包",
319 | "声优": "小岩井小鸟",
320 | "性格": "懒散"
321 | },
322 | "1027": {
323 | "名字": "惠理子",
324 | "公会": "暮光流星群",
325 | "生日": "7月30日",
326 | "年龄": "16",
327 | "身高": "154cm",
328 | "体重": "43kg",
329 | "血型": "B",
330 | "种族": "魔族",
331 | "喜好": "实验、裁缝、料理",
332 | "声优": "桥本千波",
333 | "称号": "破坏者"
334 | },
335 | "1028": {
336 | "名字": "咲恋",
337 | "公会": "咲恋救济院",
338 | "生日": "10月4日",
339 | "年龄": "17",
340 | "身高": "156cm",
341 | "体重": "43kg",
342 | "血型": "A",
343 | "种族": "精灵族",
344 | "喜好": "经营、茶会",
345 | "声优": "堀江由衣",
346 | "称号": "妈妈"
347 | },
348 | "1029": {
349 | "名字": "望",
350 | "公会": "慈乐之音",
351 | "生日": "1月24日",
352 | "年龄": "17",
353 | "身高": "157cm",
354 | "体重": "40kg",
355 | "血型": "B",
356 | "种族": "人族",
357 | "喜好": "看舞台剧、跳舞",
358 | "声优": "日笠阳子",
359 | "称号": "超人气偶像"
360 | },
361 | "1030": {
362 | "名字": "妮诺",
363 | "公会": "纯白之翼兰德索尔分部",
364 | "生日": "8月31日",
365 | "年龄": "16",
366 | "身高": "163cm",
367 | "体重": "51kg",
368 | "血型": "O",
369 | "种族": "人族",
370 | "喜好": "忍术开发",
371 | "声优": "佐藤聪美",
372 | "憧憬的地方": "东国",
373 | "称号": "冒牌忍者",
374 | "爱读的书": "《武士道》"
375 | },
376 | "1031": {
377 | "名字": "忍",
378 | "公会": "恶魔伪王国军",
379 | "生日": "12月22日",
380 | "年龄": "18",
381 | "身高": "157cm",
382 | "体重": "42kg",
383 | "血型": "AB",
384 | "种族": "魔族",
385 | "喜好": "占卜",
386 | "声优": "大坪由佳",
387 | "称号": "占卜师"
388 | },
389 | "1032": {
390 | "名字": "秋乃",
391 | "公会": "墨丘利财团",
392 | "生日": "3月12日",
393 | "年龄": "18",
394 | "身高": "157cm",
395 | "体重": "45kg",
396 | "血型": "AB",
397 | "种族": "人族",
398 | "喜好": "慈善事业",
399 | "声优": "松嵜丽",
400 | "称号": "大小姐"
401 | },
402 | "1033": {
403 | "名字": "真阳",
404 | "公会": "伊丽莎白牧场",
405 | "生日": "3月3日",
406 | "年龄": "20",
407 | "身高": "142cm",
408 | "体重": "35kg",
409 | "血型": "B",
410 | "种族": "人族",
411 | "喜好": "相声",
412 | "声优": "新田惠海",
413 | "工作": "牧场主人",
414 | "职业道路": "搞笑艺人之路"
415 | },
416 | "1034": {
417 | "名字": "优花梨",
418 | "公会": "墨丘利财团",
419 | "生日": "3月16日",
420 | "年龄": "22",
421 | "身高": "164cm",
422 | "体重": "55kg",
423 | "血型": "A",
424 | "种族": "精灵族",
425 | "喜好": "随意逛街",
426 | "声优": "今井麻美",
427 | "称号": "女中酒豪"
428 | },
429 | "1036": {
430 | "名字": "镜华",
431 | "公会": "小小甜心",
432 | "生日": "2月2日",
433 | "年龄": "8",
434 | "身高": "118cm",
435 | "体重": "21kg",
436 | "血型": "A",
437 | "种族": "精灵族",
438 | "喜好": "读书",
439 | "声优": "小仓唯",
440 | "称号": "资优生"
441 | },
442 | "1037": {
443 | "名字": "智",
444 | "公会": "王宫骑士团",
445 | "生日": "8月11日",
446 | "年龄": "13",
447 | "身高": "149cm",
448 | "体重": "43kg",
449 | "血型": "A",
450 | "种族": "人族",
451 | "喜好": "剑术、戏弄长者",
452 | "声优": "茅原实里",
453 | "家传剑技": "御久间流",
454 | "家传剑技的奥义": "阿修罗"
455 | },
456 | "1038": {
457 | "名字": "栞",
458 | "公会": "伊丽莎白牧场",
459 | "生日": "11月3日",
460 | "年龄": "14",
461 | "身高": "153cm",
462 | "体重": "40kg",
463 | "血型": "A",
464 | "种族": "兽人族",
465 | "喜好": "读书、散步",
466 | "声优": "小清水亚美",
467 | "姊姊": "初音"
468 | },
469 | "1040": {
470 | "名字": "碧",
471 | "公会": "森林守卫",
472 | "生日": "6月6日",
473 | "年龄": "13",
474 | "身高": "158cm",
475 | "体重": "44kg",
476 | "血型": "AB",
477 | "种族": "精灵族",
478 | "喜好": "交朋友的想象训练",
479 | "声优": "花泽香菜",
480 | "称号": "边缘人"
481 | },
482 | "1042": {
483 | "名字": "千歌",
484 | "公会": "慈乐之音",
485 | "生日": "6月3日",
486 | "年龄": "17",
487 | "身高": "163cm",
488 | "体重": "46kg",
489 | "血型": "O",
490 | "种族": "人族",
491 | "喜好": "各种乐器",
492 | "声优": "福原绫香",
493 | "工作": "唱唤师",
494 | "称号": "歌姬"
495 | },
496 | "1043": {
497 | "名字": "真琴",
498 | "公会": "自卫团",
499 | "生日": "8月9日",
500 | "年龄": "17",
501 | "身高": "168cm",
502 | "体重": "54kg",
503 | "血型": "O",
504 | "种族": "兽人族",
505 | "喜好": "做点心",
506 | "声优": "小松未可子",
507 | "儿时玩伴": "优衣"
508 | },
509 | "1044": {
510 | "名字": "伊莉亚",
511 | "公会": "恶魔伪王国军",
512 | "生日": "5月5日",
513 | "年龄": "???",
514 | "身高": "172cm",
515 | "体重": "50kg",
516 | "血型": "A",
517 | "种族": "魔族",
518 | "喜好": "征服世界",
519 | "声优": "丹下樱",
520 | "称号": "传说的吸血鬼",
521 | "工作": "统领黑夜"
522 | },
523 | "1045": {
524 | "名字": "空花",
525 | "公会": "纯白之翼兰德索尔分部",
526 | "生日": "11月19日",
527 | "年龄": "18",
528 | "身高": "157cm",
529 | "体重": "49kg",
530 | "血型": "AB",
531 | "种族": "人族",
532 | "喜好": "阅读小说",
533 | "声优": "长妻树里",
534 | "称号": "被虐狂"
535 | },
536 | "1046": {
537 | "名字": "珠希",
538 | "公会": "墨丘利财团",
539 | "生日": "3月1日",
540 | "年龄": "18",
541 | "身高": "158cm",
542 | "体重": "48kg",
543 | "血型": "AB",
544 | "种族": "兽人族",
545 | "喜好": "与猫咪玩耍",
546 | "声优": "沼仓爱美",
547 | "外表": "猫娘",
548 | "称号": "幻影猫"
549 | },
550 | "1047": {
551 | "名字": "纯",
552 | "公会": "王宫骑士团",
553 | "生日": "10月25日",
554 | "年龄": "25",
555 | "身高": "171cm",
556 | "体重": "50kg",
557 | "血型": "A",
558 | "种族": "人族",
559 | "喜好": "格斗技、入浴",
560 | "声优": "川澄绫子",
561 | "职位": "团长"
562 | },
563 | "1048": {
564 | "名字": "美冬",
565 | "公会": "墨丘利财团",
566 | "生日": "11月11日",
567 | "年龄": "20",
568 | "身高": "163cm",
569 | "体重": "49kg",
570 | "血型": "O",
571 | "种族": "人族",
572 | "喜好": "佣兵等等的打工",
573 | "声优": "田所梓",
574 | "信条": "效率至上"
575 | },
576 | "1049": {
577 | "名字": "静流",
578 | "公会": "拉比林斯",
579 | "生日": "10月24日",
580 | "年龄": "18",
581 | "身高": "168cm",
582 | "体重": "54kg",
583 | "血型": "O",
584 | "种族": "人族",
585 | "喜好": "所有家事",
586 | "声优": "生天目仁美",
587 | "自称": "姐姐"
588 | },
589 | "1050": {
590 | "名字": "美咲",
591 | "公会": "月光学院",
592 | "生日": "1月3日",
593 | "年龄": "11",
594 | "身高": "120cm",
595 | "体重": "22kg",
596 | "血型": "A",
597 | "种族": "魔族",
598 | "喜好": "阅读流行杂志、搜集化妆品",
599 | "声优": "久野美咲",
600 | "自称": "成熟的淑女"
601 | },
602 | "1051": {
603 | "名字": "深月",
604 | "公会": "暮光流星群",
605 | "生日": "3月7日",
606 | "年龄": "27",
607 | "身高": "166cm",
608 | "体重": "53kg",
609 | "血型": "A",
610 | "种族": "人族",
611 | "喜好": "研究、实验",
612 | "声优": "三石琴乃",
613 | "工作": "疯狂科学家",
614 | "称号": "独眼恶魔"
615 | },
616 | "1052": {
617 | "名字": "莉玛",
618 | "公会": "伊丽莎白牧场",
619 | "生日": "3月14日",
620 | "年龄": "18",
621 | "身高": "150cm",
622 | "体重": "100kg",
623 | "血型": "A",
624 | "种族": "兽人族",
625 | "喜好": "理毛、聊天",
626 | "声优": "德井青空",
627 | "特点": "毛茸茸"
628 | },
629 | "1053": {
630 | "名字": "莫妮卡",
631 | "公会": "纯白之翼兰德索尔分部",
632 | "生日": "7月28日",
633 | "年龄": "18",
634 | "身高": "140cm",
635 | "体重": "33kg",
636 | "血型": "A",
637 | "种族": "人族",
638 | "喜好": "逛糖果店",
639 | "声优": "辻亚由美",
640 | "称号": "小鬼头"
641 | },
642 | "1054": {
643 | "名字": "纺希",
644 | "公会": "慈乐之音",
645 | "生日": "9月7日",
646 | "年龄": "14",
647 | "身高": "153cm",
648 | "体重": "45kg",
649 | "血型": "AB",
650 | "种族": "人族",
651 | "喜好": "裁缝",
652 | "声优": "木户衣吹",
653 | "创办的组织": "怜大人粉丝俱乐部"
654 | },
655 | "1055": {
656 | "名字": "步未",
657 | "公会": "纯白之翼兰德索尔分部",
658 | "生日": "4月7日",
659 | "年龄": "16",
660 | "身高": "155cm",
661 | "体重": "43kg",
662 | "血型": "O",
663 | "种族": "精灵族",
664 | "喜好": "观察",
665 | "声优": "大关英里",
666 | "称号": "跟踪狂"
667 | },
668 | "1056": {
669 | "名字": "流夏",
670 | "公会": "暮光流星群",
671 | "生日": "7月11日",
672 | "年龄": "25",
673 | "身高": "167cm",
674 | "体重": "54kg",
675 | "血型": "B",
676 | "种族": "人族",
677 | "喜好": "钓鱼",
678 | "声优": "佐藤利奈",
679 | "称号": "大姐头"
680 | },
681 | "1057": {
682 | "名字": "吉塔",
683 | "公会": "???",
684 | "生日": "3月10日",
685 | "年龄": "17",
686 | "身高": "156cm",
687 | "体重": "45kg",
688 | "血型": "O",
689 | "种族": "人族",
690 | "喜好": "冒险、聊天",
691 | "声优": "金元寿子",
692 | "称号": "苍空的骑空士"
693 | },
694 | "1058": {
695 | "名字": "贪吃佩可",
696 | "公会": "美食殿堂",
697 | "生日": "3月31日",
698 | "年龄": "17",
699 | "身高": "156cm",
700 | "体重": "46kg",
701 | "血型": "O",
702 | "种族": "人族",
703 | "喜好": "边走边吃、料理",
704 | "声优": "M·A·O",
705 | "口头禅": "太赞了吧☆",
706 | "装备": "皇家装备",
707 | "身份": "阿斯特赖亚王家的王女"
708 | },
709 | "1059": {
710 | "名字": "可可萝",
711 | "公会": "美食殿堂",
712 | "生日": "5月11日",
713 | "年龄": "11",
714 | "身高": "140cm",
715 | "体重": "35kg",
716 | "血型": "B",
717 | "种族": "精灵族",
718 | "喜好": "冥想、养育动植物",
719 | "声优": "伊藤美来",
720 | "职责": "向导",
721 | "工作": "巫女"
722 | },
723 | "1060": {
724 | "名字": "凯留",
725 | "公会": "美食殿堂",
726 | "生日": "9月2日",
727 | "年龄": "14",
728 | "身高": "152cm",
729 | "体重": "39kg",
730 | "血型": "A",
731 | "种族": "兽人族",
732 | "喜好": "和猫咪玩耍",
733 | "声优": "立花理香",
734 | "性格特点": "傲娇"
735 | },
736 | "1061": {
737 | "名字": "矛依未",
738 | "公会": "???",
739 | "生日": "8月11日",
740 | "年龄": "16",
741 | "身高": "148cm",
742 | "体重": "40kg",
743 | "血型": "O",
744 | "种族": "人族",
745 | "喜好": "冒险、回忆故事",
746 | "声优": "潘惠美",
747 | "真正的名字": "诺维姆"
748 | },
749 | "1063": {
750 | "名字": "亚里莎",
751 | "公会": "???",
752 | "生日": "6月17日",
753 | "年龄": "15",
754 | "身高": "155cm",
755 | "体重": "42kg",
756 | "血型": "O",
757 | "种族": "精灵族",
758 | "喜好": "搜集漂亮的叶子",
759 | "声优": "优木加奈",
760 | "称号": "见习森林守卫"
761 | },
762 | "1065": {
763 | "名字": "嘉夜",
764 | "公会": "龙族巢穴",
765 | "生日": "6月25日",
766 | "年龄": "16",
767 | "身高": "156cm",
768 | "体重": "???kg",
769 | "血型": "B",
770 | "种族": "龙人族",
771 | "喜好": "格斗技",
772 | "声优": "小市真琴",
773 | "称号": "笨蛋打架狂"
774 | },
775 | "1066": {
776 | "名字": "祈梨",
777 | "公会": "龙族巢穴",
778 | "生日": "9月29日",
779 | "年龄": "13",
780 | "身高": "145cm",
781 | "体重": "???kg",
782 | "血型": "AB",
783 | "种族": "龙人族",
784 | "喜好": "游戏",
785 | "声优": "藤田茜",
786 | "特技": "龙之吐息",
787 | "职位": "干部"
788 | },
789 | "1070": {
790 | "名字": "似似花",
791 | "公会": "???",
792 | "生日": "3月24日",
793 | "年龄": "24",
794 | "身高": "149cm",
795 | "体重": "???kg",
796 | "血型": "O",
797 | "种族": "精灵族",
798 | "喜好": "模仿、艺术欣赏",
799 | "声优": "井口裕香",
800 | "称号": "变貌大妃",
801 | "特技": "分身"
802 | },
803 | "1071": {
804 | "名字": "克莉丝提娜",
805 | "公会": "王宫骑士团",
806 | "生日": "2月7日",
807 | "年龄": "27",
808 | "身高": "165cm",
809 | "体重": "???kg",
810 | "血型": "O",
811 | "种族": "人族",
812 | "喜好": "和强敌之间的竞争",
813 | "声优": "高桥智秋",
814 | "称号": "誓约女君",
815 | "职位": "副团长"
816 | },
817 | "1092": {
818 | "名字": "安",
819 | "公会": "???",
820 | "生日": "12月1日",
821 | "年龄": "17",
822 | "身高": "156cm",
823 | "体重": "55kg",
824 | "血型": "AB",
825 | "种族": "人族",
826 | "喜好": "读书",
827 | "声优": "日笠阳子"
828 | },
829 | "1093": {
830 | "名字": "露",
831 | "公会": "???",
832 | "生日": "2月4日",
833 | "年龄": "15",
834 | "身高": "144cm",
835 | "体重": "45kg",
836 | "血型": "O",
837 | "种族": "人族",
838 | "喜好": "吃饭、睡觉",
839 | "声优": "古山贵实子"
840 | },
841 | "1094": {
842 | "名字": "古蕾娅",
843 | "公会": "???",
844 | "生日": "11月3日",
845 | "年龄": "17",
846 | "身高": "167cm",
847 | "体重": "67kg",
848 | "血型": "B",
849 | "种族": "半人半龙",
850 | "喜好": "钢琴",
851 | "声优": "福原绫香"
852 | },
853 | "1097": {
854 | "名字": "雷姆",
855 | "公会": "???",
856 | "生日": "2月2日",
857 | "年龄": "17",
858 | "身高": "154cm",
859 | "体重": "???kg",
860 | "血型": "???",
861 | "种族": "鬼族",
862 | "喜好": "戏剧欣赏、诗和散文",
863 | "声优": "水濑祈"
864 | },
865 | "1098": {
866 | "名字": "拉姆",
867 | "公会": "???",
868 | "生日": "2月2日",
869 | "年龄": "17",
870 | "身高": "154cm",
871 | "体重": "???kg",
872 | "血型": "???",
873 | "种族": "鬼族",
874 | "喜好": "读书",
875 | "声优": "村川梨衣"
876 | },
877 | "1099": {
878 | "名字": "爱蜜莉雅",
879 | "公会": "???",
880 | "生日": "9月23日",
881 | "年龄": "114",
882 | "身高": "164cm",
883 | "体重": "???kg",
884 | "血型": "???",
885 | "种族": "半精灵族",
886 | "喜好": "帮帕克梳理毛发、念书",
887 | "声优": "高桥李依"
888 | },
889 | "1108": {
890 | "名字": "克萝依",
891 | "公会": "圣特蕾莎女子学院(好朋友社)",
892 | "生日": "8月7日",
893 | "年龄": "17",
894 | "身高": "154cm",
895 | "体重": "42kg",
896 | "血型": "O",
897 | "种族": "精灵族",
898 | "喜好": "飞镖",
899 | "声优": "种崎敦美",
900 | "性格特点": "阴暗系",
901 | "称号": "圣德蕾女的狂人"
902 | },
903 | "1109": {
904 | "名字": "琪爱儿",
905 | "公会": "圣特蕾莎女子学院(好朋友社)",
906 | "生日": "9月15日",
907 | "年龄": "16",
908 | "身高": "156cm",
909 | "体重": "46kg",
910 | "血型": "O",
911 | "种族": "人族",
912 | "喜好": "跳舞、卡拉OK",
913 | "声优": "佐仓绫音",
914 | "切嚕唎咧咧囉唎囉唎囉": "咧切嚕切嚕啵啪嗶",
915 | "称号": "圣德蕾女的狂人"
916 | },
917 | "1110": {
918 | "名字": "优妮",
919 | "公会": "圣特蕾莎女子学院(好朋友社)",
920 | "生日": "2月28日",
921 | "年龄": "18",
922 | "身高": "142cm",
923 | "体重": "36kg",
924 | "血型": "O",
925 | "种族": "人族",
926 | "喜好": "读书",
927 | "声优": "小原好美",
928 | "生活习惯": "茧居族",
929 | "称号": "圣德蕾女的狂人"
930 | },
931 | "1114": {
932 | "名字": "露娜",
933 | "公会": "???",
934 | "生日": "???",
935 | "年龄": "???",
936 | "身高": "142cm",
937 | "体重": "28kg",
938 | "血型": "???",
939 | "种族": "人族",
940 | "喜好": "找「朋友」之事",
941 | "声优": "小仓唯"
942 | },
943 | "1124": {
944 | "名字": "卯月",
945 | "公会": "NewGeneration",
946 | "生日": "4月24日",
947 | "年龄": "17",
948 | "身高": "159cm",
949 | "体重": "45kg",
950 | "血型": "O",
951 | "种族": "人族",
952 | "喜好": "和朋友打长电话",
953 | "声优": "大桥彩香"
954 | },
955 | "1125": {
956 | "名字": "凛",
957 | "公会": "NewGeneration",
958 | "生日": "8月10日",
959 | "年龄": "15",
960 | "身高": "165cm",
961 | "体重": "44kg",
962 | "血型": "B",
963 | "种族": "人族",
964 | "喜好": "带狗散步",
965 | "声优": "福原绫香"
966 | },
967 | "1126": {
968 | "名字": "未央",
969 | "公会": "NewGeneration",
970 | "生日": "12月1日",
971 | "年龄": "15",
972 | "身高": "161cm",
973 | "体重": "46kg",
974 | "血型": "B",
975 | "种族": "人族",
976 | "喜好": "购物",
977 | "声优": "原纱友里"
978 | }
979 | }
980 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | GNU GENERAL PUBLIC LICENSE
2 | Version 3, 29 June 2007
3 |
4 | Copyright (C) 2007 Free Software Foundation, Inc.
5 | Everyone is permitted to copy and distribute verbatim copies
6 | of this license document, but changing it is not allowed.
7 |
8 | Preamble
9 |
10 | The GNU General Public License is a free, copyleft license for
11 | software and other kinds of works.
12 |
13 | The licenses for most software and other practical works are designed
14 | to take away your freedom to share and change the works. By contrast,
15 | the GNU General Public License is intended to guarantee your freedom to
16 | share and change all versions of a program--to make sure it remains free
17 | software for all its users. We, the Free Software Foundation, use the
18 | GNU General Public License for most of our software; it applies also to
19 | any other work released this way by its authors. You can apply it to
20 | your programs, too.
21 |
22 | When we speak of free software, we are referring to freedom, not
23 | price. Our General Public Licenses are designed to make sure that you
24 | have the freedom to distribute copies of free software (and charge for
25 | them if you wish), that you receive source code or can get it if you
26 | want it, that you can change the software or use pieces of it in new
27 | free programs, and that you know you can do these things.
28 |
29 | To protect your rights, we need to prevent others from denying you
30 | these rights or asking you to surrender the rights. Therefore, you have
31 | certain responsibilities if you distribute copies of the software, or if
32 | you modify it: responsibilities to respect the freedom of others.
33 |
34 | For example, if you distribute copies of such a program, whether
35 | gratis or for a fee, you must pass on to the recipients the same
36 | freedoms that you received. You must make sure that they, too, receive
37 | or can get the source code. And you must show them these terms so they
38 | know their rights.
39 |
40 | Developers that use the GNU GPL protect your rights with two steps:
41 | (1) assert copyright on the software, and (2) offer you this License
42 | giving you legal permission to copy, distribute and/or modify it.
43 |
44 | For the developers' and authors' protection, the GPL clearly explains
45 | that there is no warranty for this free software. For both users' and
46 | authors' sake, the GPL requires that modified versions be marked as
47 | changed, so that their problems will not be attributed erroneously to
48 | authors of previous versions.
49 |
50 | Some devices are designed to deny users access to install or run
51 | modified versions of the software inside them, although the manufacturer
52 | can do so. This is fundamentally incompatible with the aim of
53 | protecting users' freedom to change the software. The systematic
54 | pattern of such abuse occurs in the area of products for individuals to
55 | use, which is precisely where it is most unacceptable. Therefore, we
56 | have designed this version of the GPL to prohibit the practice for those
57 | products. If such problems arise substantially in other domains, we
58 | stand ready to extend this provision to those domains in future versions
59 | of the GPL, as needed to protect the freedom of users.
60 |
61 | Finally, every program is threatened constantly by software patents.
62 | States should not allow patents to restrict development and use of
63 | software on general-purpose computers, but in those that do, we wish to
64 | avoid the special danger that patents applied to a free program could
65 | make it effectively proprietary. To prevent this, the GPL assures that
66 | patents cannot be used to render the program non-free.
67 |
68 | The precise terms and conditions for copying, distribution and
69 | modification follow.
70 |
71 | TERMS AND CONDITIONS
72 |
73 | 0. Definitions.
74 |
75 | "This License" refers to version 3 of the GNU General Public License.
76 |
77 | "Copyright" also means copyright-like laws that apply to other kinds of
78 | works, such as semiconductor masks.
79 |
80 | "The Program" refers to any copyrightable work licensed under this
81 | License. Each licensee is addressed as "you". "Licensees" and
82 | "recipients" may be individuals or organizations.
83 |
84 | To "modify" a work means to copy from or adapt all or part of the work
85 | in a fashion requiring copyright permission, other than the making of an
86 | exact copy. The resulting work is called a "modified version" of the
87 | earlier work or a work "based on" the earlier work.
88 |
89 | A "covered work" means either the unmodified Program or a work based
90 | on the Program.
91 |
92 | To "propagate" a work means to do anything with it that, without
93 | permission, would make you directly or secondarily liable for
94 | infringement under applicable copyright law, except executing it on a
95 | computer or modifying a private copy. Propagation includes copying,
96 | distribution (with or without modification), making available to the
97 | public, and in some countries other activities as well.
98 |
99 | To "convey" a work means any kind of propagation that enables other
100 | parties to make or receive copies. Mere interaction with a user through
101 | a computer network, with no transfer of a copy, is not conveying.
102 |
103 | An interactive user interface displays "Appropriate Legal Notices"
104 | to the extent that it includes a convenient and prominently visible
105 | feature that (1) displays an appropriate copyright notice, and (2)
106 | tells the user that there is no warranty for the work (except to the
107 | extent that warranties are provided), that licensees may convey the
108 | work under this License, and how to view a copy of this License. If
109 | the interface presents a list of user commands or options, such as a
110 | menu, a prominent item in the list meets this criterion.
111 |
112 | 1. Source Code.
113 |
114 | The "source code" for a work means the preferred form of the work
115 | for making modifications to it. "Object code" means any non-source
116 | form of a work.
117 |
118 | A "Standard Interface" means an interface that either is an official
119 | standard defined by a recognized standards body, or, in the case of
120 | interfaces specified for a particular programming language, one that
121 | is widely used among developers working in that language.
122 |
123 | The "System Libraries" of an executable work include anything, other
124 | than the work as a whole, that (a) is included in the normal form of
125 | packaging a Major Component, but which is not part of that Major
126 | Component, and (b) serves only to enable use of the work with that
127 | Major Component, or to implement a Standard Interface for which an
128 | implementation is available to the public in source code form. A
129 | "Major Component", in this context, means a major essential component
130 | (kernel, window system, and so on) of the specific operating system
131 | (if any) on which the executable work runs, or a compiler used to
132 | produce the work, or an object code interpreter used to run it.
133 |
134 | The "Corresponding Source" for a work in object code form means all
135 | the source code needed to generate, install, and (for an executable
136 | work) run the object code and to modify the work, including scripts to
137 | control those activities. However, it does not include the work's
138 | System Libraries, or general-purpose tools or generally available free
139 | programs which are used unmodified in performing those activities but
140 | which are not part of the work. For example, Corresponding Source
141 | includes interface definition files associated with source files for
142 | the work, and the source code for shared libraries and dynamically
143 | linked subprograms that the work is specifically designed to require,
144 | such as by intimate data communication or control flow between those
145 | subprograms and other parts of the work.
146 |
147 | The Corresponding Source need not include anything that users
148 | can regenerate automatically from other parts of the Corresponding
149 | Source.
150 |
151 | The Corresponding Source for a work in source code form is that
152 | same work.
153 |
154 | 2. Basic Permissions.
155 |
156 | All rights granted under this License are granted for the term of
157 | copyright on the Program, and are irrevocable provided the stated
158 | conditions are met. This License explicitly affirms your unlimited
159 | permission to run the unmodified Program. The output from running a
160 | covered work is covered by this License only if the output, given its
161 | content, constitutes a covered work. This License acknowledges your
162 | rights of fair use or other equivalent, as provided by copyright law.
163 |
164 | You may make, run and propagate covered works that you do not
165 | convey, without conditions so long as your license otherwise remains
166 | in force. You may convey covered works to others for the sole purpose
167 | of having them make modifications exclusively for you, or provide you
168 | with facilities for running those works, provided that you comply with
169 | the terms of this License in conveying all material for which you do
170 | not control copyright. Those thus making or running the covered works
171 | for you must do so exclusively on your behalf, under your direction
172 | and control, on terms that prohibit them from making any copies of
173 | your copyrighted material outside their relationship with you.
174 |
175 | Conveying under any other circumstances is permitted solely under
176 | the conditions stated below. Sublicensing is not allowed; section 10
177 | makes it unnecessary.
178 |
179 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
180 |
181 | No covered work shall be deemed part of an effective technological
182 | measure under any applicable law fulfilling obligations under article
183 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or
184 | similar laws prohibiting or restricting circumvention of such
185 | measures.
186 |
187 | When you convey a covered work, you waive any legal power to forbid
188 | circumvention of technological measures to the extent such circumvention
189 | is effected by exercising rights under this License with respect to
190 | the covered work, and you disclaim any intention to limit operation or
191 | modification of the work as a means of enforcing, against the work's
192 | users, your or third parties' legal rights to forbid circumvention of
193 | technological measures.
194 |
195 | 4. Conveying Verbatim Copies.
196 |
197 | You may convey verbatim copies of the Program's source code as you
198 | receive it, in any medium, provided that you conspicuously and
199 | appropriately publish on each copy an appropriate copyright notice;
200 | keep intact all notices stating that this License and any
201 | non-permissive terms added in accord with section 7 apply to the code;
202 | keep intact all notices of the absence of any warranty; and give all
203 | recipients a copy of this License along with the Program.
204 |
205 | You may charge any price or no price for each copy that you convey,
206 | and you may offer support or warranty protection for a fee.
207 |
208 | 5. Conveying Modified Source Versions.
209 |
210 | You may convey a work based on the Program, or the modifications to
211 | produce it from the Program, in the form of source code under the
212 | terms of section 4, provided that you also meet all of these conditions:
213 |
214 | a) The work must carry prominent notices stating that you modified
215 | it, and giving a relevant date.
216 |
217 | b) The work must carry prominent notices stating that it is
218 | released under this License and any conditions added under section
219 | 7. This requirement modifies the requirement in section 4 to
220 | "keep intact all notices".
221 |
222 | c) You must license the entire work, as a whole, under this
223 | License to anyone who comes into possession of a copy. This
224 | License will therefore apply, along with any applicable section 7
225 | additional terms, to the whole of the work, and all its parts,
226 | regardless of how they are packaged. This License gives no
227 | permission to license the work in any other way, but it does not
228 | invalidate such permission if you have separately received it.
229 |
230 | d) If the work has interactive user interfaces, each must display
231 | Appropriate Legal Notices; however, if the Program has interactive
232 | interfaces that do not display Appropriate Legal Notices, your
233 | work need not make them do so.
234 |
235 | A compilation of a covered work with other separate and independent
236 | works, which are not by their nature extensions of the covered work,
237 | and which are not combined with it such as to form a larger program,
238 | in or on a volume of a storage or distribution medium, is called an
239 | "aggregate" if the compilation and its resulting copyright are not
240 | used to limit the access or legal rights of the compilation's users
241 | beyond what the individual works permit. Inclusion of a covered work
242 | in an aggregate does not cause this License to apply to the other
243 | parts of the aggregate.
244 |
245 | 6. Conveying Non-Source Forms.
246 |
247 | You may convey a covered work in object code form under the terms
248 | of sections 4 and 5, provided that you also convey the
249 | machine-readable Corresponding Source under the terms of this License,
250 | in one of these ways:
251 |
252 | a) Convey the object code in, or embodied in, a physical product
253 | (including a physical distribution medium), accompanied by the
254 | Corresponding Source fixed on a durable physical medium
255 | customarily used for software interchange.
256 |
257 | b) Convey the object code in, or embodied in, a physical product
258 | (including a physical distribution medium), accompanied by a
259 | written offer, valid for at least three years and valid for as
260 | long as you offer spare parts or customer support for that product
261 | model, to give anyone who possesses the object code either (1) a
262 | copy of the Corresponding Source for all the software in the
263 | product that is covered by this License, on a durable physical
264 | medium customarily used for software interchange, for a price no
265 | more than your reasonable cost of physically performing this
266 | conveying of source, or (2) access to copy the
267 | Corresponding Source from a network server at no charge.
268 |
269 | c) Convey individual copies of the object code with a copy of the
270 | written offer to provide the Corresponding Source. This
271 | alternative is allowed only occasionally and noncommercially, and
272 | only if you received the object code with such an offer, in accord
273 | with subsection 6b.
274 |
275 | d) Convey the object code by offering access from a designated
276 | place (gratis or for a charge), and offer equivalent access to the
277 | Corresponding Source in the same way through the same place at no
278 | further charge. You need not require recipients to copy the
279 | Corresponding Source along with the object code. If the place to
280 | copy the object code is a network server, the Corresponding Source
281 | may be on a different server (operated by you or a third party)
282 | that supports equivalent copying facilities, provided you maintain
283 | clear directions next to the object code saying where to find the
284 | Corresponding Source. Regardless of what server hosts the
285 | Corresponding Source, you remain obligated to ensure that it is
286 | available for as long as needed to satisfy these requirements.
287 |
288 | e) Convey the object code using peer-to-peer transmission, provided
289 | you inform other peers where the object code and Corresponding
290 | Source of the work are being offered to the general public at no
291 | charge under subsection 6d.
292 |
293 | A separable portion of the object code, whose source code is excluded
294 | from the Corresponding Source as a System Library, need not be
295 | included in conveying the object code work.
296 |
297 | A "User Product" is either (1) a "consumer product", which means any
298 | tangible personal property which is normally used for personal, family,
299 | or household purposes, or (2) anything designed or sold for incorporation
300 | into a dwelling. In determining whether a product is a consumer product,
301 | doubtful cases shall be resolved in favor of coverage. For a particular
302 | product received by a particular user, "normally used" refers to a
303 | typical or common use of that class of product, regardless of the status
304 | of the particular user or of the way in which the particular user
305 | actually uses, or expects or is expected to use, the product. A product
306 | is a consumer product regardless of whether the product has substantial
307 | commercial, industrial or non-consumer uses, unless such uses represent
308 | the only significant mode of use of the product.
309 |
310 | "Installation Information" for a User Product means any methods,
311 | procedures, authorization keys, or other information required to install
312 | and execute modified versions of a covered work in that User Product from
313 | a modified version of its Corresponding Source. The information must
314 | suffice to ensure that the continued functioning of the modified object
315 | code is in no case prevented or interfered with solely because
316 | modification has been made.
317 |
318 | If you convey an object code work under this section in, or with, or
319 | specifically for use in, a User Product, and the conveying occurs as
320 | part of a transaction in which the right of possession and use of the
321 | User Product is transferred to the recipient in perpetuity or for a
322 | fixed term (regardless of how the transaction is characterized), the
323 | Corresponding Source conveyed under this section must be accompanied
324 | by the Installation Information. But this requirement does not apply
325 | if neither you nor any third party retains the ability to install
326 | modified object code on the User Product (for example, the work has
327 | been installed in ROM).
328 |
329 | The requirement to provide Installation Information does not include a
330 | requirement to continue to provide support service, warranty, or updates
331 | for a work that has been modified or installed by the recipient, or for
332 | the User Product in which it has been modified or installed. Access to a
333 | network may be denied when the modification itself materially and
334 | adversely affects the operation of the network or violates the rules and
335 | protocols for communication across the network.
336 |
337 | Corresponding Source conveyed, and Installation Information provided,
338 | in accord with this section must be in a format that is publicly
339 | documented (and with an implementation available to the public in
340 | source code form), and must require no special password or key for
341 | unpacking, reading or copying.
342 |
343 | 7. Additional Terms.
344 |
345 | "Additional permissions" are terms that supplement the terms of this
346 | License by making exceptions from one or more of its conditions.
347 | Additional permissions that are applicable to the entire Program shall
348 | be treated as though they were included in this License, to the extent
349 | that they are valid under applicable law. If additional permissions
350 | apply only to part of the Program, that part may be used separately
351 | under those permissions, but the entire Program remains governed by
352 | this License without regard to the additional permissions.
353 |
354 | When you convey a copy of a covered work, you may at your option
355 | remove any additional permissions from that copy, or from any part of
356 | it. (Additional permissions may be written to require their own
357 | removal in certain cases when you modify the work.) You may place
358 | additional permissions on material, added by you to a covered work,
359 | for which you have or can give appropriate copyright permission.
360 |
361 | Notwithstanding any other provision of this License, for material you
362 | add to a covered work, you may (if authorized by the copyright holders of
363 | that material) supplement the terms of this License with terms:
364 |
365 | a) Disclaiming warranty or limiting liability differently from the
366 | terms of sections 15 and 16 of this License; or
367 |
368 | b) Requiring preservation of specified reasonable legal notices or
369 | author attributions in that material or in the Appropriate Legal
370 | Notices displayed by works containing it; or
371 |
372 | c) Prohibiting misrepresentation of the origin of that material, or
373 | requiring that modified versions of such material be marked in
374 | reasonable ways as different from the original version; or
375 |
376 | d) Limiting the use for publicity purposes of names of licensors or
377 | authors of the material; or
378 |
379 | e) Declining to grant rights under trademark law for use of some
380 | trade names, trademarks, or service marks; or
381 |
382 | f) Requiring indemnification of licensors and authors of that
383 | material by anyone who conveys the material (or modified versions of
384 | it) with contractual assumptions of liability to the recipient, for
385 | any liability that these contractual assumptions directly impose on
386 | those licensors and authors.
387 |
388 | All other non-permissive additional terms are considered "further
389 | restrictions" within the meaning of section 10. If the Program as you
390 | received it, or any part of it, contains a notice stating that it is
391 | governed by this License along with a term that is a further
392 | restriction, you may remove that term. If a license document contains
393 | a further restriction but permits relicensing or conveying under this
394 | License, you may add to a covered work material governed by the terms
395 | of that license document, provided that the further restriction does
396 | not survive such relicensing or conveying.
397 |
398 | If you add terms to a covered work in accord with this section, you
399 | must place, in the relevant source files, a statement of the
400 | additional terms that apply to those files, or a notice indicating
401 | where to find the applicable terms.
402 |
403 | Additional terms, permissive or non-permissive, may be stated in the
404 | form of a separately written license, or stated as exceptions;
405 | the above requirements apply either way.
406 |
407 | 8. Termination.
408 |
409 | You may not propagate or modify a covered work except as expressly
410 | provided under this License. Any attempt otherwise to propagate or
411 | modify it is void, and will automatically terminate your rights under
412 | this License (including any patent licenses granted under the third
413 | paragraph of section 11).
414 |
415 | However, if you cease all violation of this License, then your
416 | license from a particular copyright holder is reinstated (a)
417 | provisionally, unless and until the copyright holder explicitly and
418 | finally terminates your license, and (b) permanently, if the copyright
419 | holder fails to notify you of the violation by some reasonable means
420 | prior to 60 days after the cessation.
421 |
422 | Moreover, your license from a particular copyright holder is
423 | reinstated permanently if the copyright holder notifies you of the
424 | violation by some reasonable means, this is the first time you have
425 | received notice of violation of this License (for any work) from that
426 | copyright holder, and you cure the violation prior to 30 days after
427 | your receipt of the notice.
428 |
429 | Termination of your rights under this section does not terminate the
430 | licenses of parties who have received copies or rights from you under
431 | this License. If your rights have been terminated and not permanently
432 | reinstated, you do not qualify to receive new licenses for the same
433 | material under section 10.
434 |
435 | 9. Acceptance Not Required for Having Copies.
436 |
437 | You are not required to accept this License in order to receive or
438 | run a copy of the Program. Ancillary propagation of a covered work
439 | occurring solely as a consequence of using peer-to-peer transmission
440 | to receive a copy likewise does not require acceptance. However,
441 | nothing other than this License grants you permission to propagate or
442 | modify any covered work. These actions infringe copyright if you do
443 | not accept this License. Therefore, by modifying or propagating a
444 | covered work, you indicate your acceptance of this License to do so.
445 |
446 | 10. Automatic Licensing of Downstream Recipients.
447 |
448 | Each time you convey a covered work, the recipient automatically
449 | receives a license from the original licensors, to run, modify and
450 | propagate that work, subject to this License. You are not responsible
451 | for enforcing compliance by third parties with this License.
452 |
453 | An "entity transaction" is a transaction transferring control of an
454 | organization, or substantially all assets of one, or subdividing an
455 | organization, or merging organizations. If propagation of a covered
456 | work results from an entity transaction, each party to that
457 | transaction who receives a copy of the work also receives whatever
458 | licenses to the work the party's predecessor in interest had or could
459 | give under the previous paragraph, plus a right to possession of the
460 | Corresponding Source of the work from the predecessor in interest, if
461 | the predecessor has it or can get it with reasonable efforts.
462 |
463 | You may not impose any further restrictions on the exercise of the
464 | rights granted or affirmed under this License. For example, you may
465 | not impose a license fee, royalty, or other charge for exercise of
466 | rights granted under this License, and you may not initiate litigation
467 | (including a cross-claim or counterclaim in a lawsuit) alleging that
468 | any patent claim is infringed by making, using, selling, offering for
469 | sale, or importing the Program or any portion of it.
470 |
471 | 11. Patents.
472 |
473 | A "contributor" is a copyright holder who authorizes use under this
474 | License of the Program or a work on which the Program is based. The
475 | work thus licensed is called the contributor's "contributor version".
476 |
477 | A contributor's "essential patent claims" are all patent claims
478 | owned or controlled by the contributor, whether already acquired or
479 | hereafter acquired, that would be infringed by some manner, permitted
480 | by this License, of making, using, or selling its contributor version,
481 | but do not include claims that would be infringed only as a
482 | consequence of further modification of the contributor version. For
483 | purposes of this definition, "control" includes the right to grant
484 | patent sublicenses in a manner consistent with the requirements of
485 | this License.
486 |
487 | Each contributor grants you a non-exclusive, worldwide, royalty-free
488 | patent license under the contributor's essential patent claims, to
489 | make, use, sell, offer for sale, import and otherwise run, modify and
490 | propagate the contents of its contributor version.
491 |
492 | In the following three paragraphs, a "patent license" is any express
493 | agreement or commitment, however denominated, not to enforce a patent
494 | (such as an express permission to practice a patent or covenant not to
495 | sue for patent infringement). To "grant" such a patent license to a
496 | party means to make such an agreement or commitment not to enforce a
497 | patent against the party.
498 |
499 | If you convey a covered work, knowingly relying on a patent license,
500 | and the Corresponding Source of the work is not available for anyone
501 | to copy, free of charge and under the terms of this License, through a
502 | publicly available network server or other readily accessible means,
503 | then you must either (1) cause the Corresponding Source to be so
504 | available, or (2) arrange to deprive yourself of the benefit of the
505 | patent license for this particular work, or (3) arrange, in a manner
506 | consistent with the requirements of this License, to extend the patent
507 | license to downstream recipients. "Knowingly relying" means you have
508 | actual knowledge that, but for the patent license, your conveying the
509 | covered work in a country, or your recipient's use of the covered work
510 | in a country, would infringe one or more identifiable patents in that
511 | country that you have reason to believe are valid.
512 |
513 | If, pursuant to or in connection with a single transaction or
514 | arrangement, you convey, or propagate by procuring conveyance of, a
515 | covered work, and grant a patent license to some of the parties
516 | receiving the covered work authorizing them to use, propagate, modify
517 | or convey a specific copy of the covered work, then the patent license
518 | you grant is automatically extended to all recipients of the covered
519 | work and works based on it.
520 |
521 | A patent license is "discriminatory" if it does not include within
522 | the scope of its coverage, prohibits the exercise of, or is
523 | conditioned on the non-exercise of one or more of the rights that are
524 | specifically granted under this License. You may not convey a covered
525 | work if you are a party to an arrangement with a third party that is
526 | in the business of distributing software, under which you make payment
527 | to the third party based on the extent of your activity of conveying
528 | the work, and under which the third party grants, to any of the
529 | parties who would receive the covered work from you, a discriminatory
530 | patent license (a) in connection with copies of the covered work
531 | conveyed by you (or copies made from those copies), or (b) primarily
532 | for and in connection with specific products or compilations that
533 | contain the covered work, unless you entered into that arrangement,
534 | or that patent license was granted, prior to 28 March 2007.
535 |
536 | Nothing in this License shall be construed as excluding or limiting
537 | any implied license or other defenses to infringement that may
538 | otherwise be available to you under applicable patent law.
539 |
540 | 12. No Surrender of Others' Freedom.
541 |
542 | If conditions are imposed on you (whether by court order, agreement or
543 | otherwise) that contradict the conditions of this License, they do not
544 | excuse you from the conditions of this License. If you cannot convey a
545 | covered work so as to satisfy simultaneously your obligations under this
546 | License and any other pertinent obligations, then as a consequence you may
547 | not convey it at all. For example, if you agree to terms that obligate you
548 | to collect a royalty for further conveying from those to whom you convey
549 | the Program, the only way you could satisfy both those terms and this
550 | License would be to refrain entirely from conveying the Program.
551 |
552 | 13. Use with the GNU Affero General Public License.
553 |
554 | Notwithstanding any other provision of this License, you have
555 | permission to link or combine any covered work with a work licensed
556 | under version 3 of the GNU Affero General Public License into a single
557 | combined work, and to convey the resulting work. The terms of this
558 | License will continue to apply to the part which is the covered work,
559 | but the special requirements of the GNU Affero General Public License,
560 | section 13, concerning interaction through a network will apply to the
561 | combination as such.
562 |
563 | 14. Revised Versions of this License.
564 |
565 | The Free Software Foundation may publish revised and/or new versions of
566 | the GNU General Public License from time to time. Such new versions will
567 | be similar in spirit to the present version, but may differ in detail to
568 | address new problems or concerns.
569 |
570 | Each version is given a distinguishing version number. If the
571 | Program specifies that a certain numbered version of the GNU General
572 | Public License "or any later version" applies to it, you have the
573 | option of following the terms and conditions either of that numbered
574 | version or of any later version published by the Free Software
575 | Foundation. If the Program does not specify a version number of the
576 | GNU General Public License, you may choose any version ever published
577 | by the Free Software Foundation.
578 |
579 | If the Program specifies that a proxy can decide which future
580 | versions of the GNU General Public License can be used, that proxy's
581 | public statement of acceptance of a version permanently authorizes you
582 | to choose that version for the Program.
583 |
584 | Later license versions may give you additional or different
585 | permissions. However, no additional obligations are imposed on any
586 | author or copyright holder as a result of your choosing to follow a
587 | later version.
588 |
589 | 15. Disclaimer of Warranty.
590 |
591 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
592 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
593 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
594 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
595 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
596 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
597 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
598 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
599 |
600 | 16. Limitation of Liability.
601 |
602 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
603 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
604 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
605 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
606 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
607 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
608 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
609 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
610 | SUCH DAMAGES.
611 |
612 | 17. Interpretation of Sections 15 and 16.
613 |
614 | If the disclaimer of warranty and limitation of liability provided
615 | above cannot be given local legal effect according to their terms,
616 | reviewing courts shall apply local law that most closely approximates
617 | an absolute waiver of all civil liability in connection with the
618 | Program, unless a warranty or assumption of liability accompanies a
619 | copy of the Program in return for a fee.
620 |
621 | END OF TERMS AND CONDITIONS
622 |
623 | How to Apply These Terms to Your New Programs
624 |
625 | If you develop a new program, and you want it to be of the greatest
626 | possible use to the public, the best way to achieve this is to make it
627 | free software which everyone can redistribute and change under these terms.
628 |
629 | To do so, attach the following notices to the program. It is safest
630 | to attach them to the start of each source file to most effectively
631 | state the exclusion of warranty; and each file should have at least
632 | the "copyright" line and a pointer to where the full notice is found.
633 |
634 |
635 | Copyright (C)
636 |
637 | This program is free software: you can redistribute it and/or modify
638 | it under the terms of the GNU General Public License as published by
639 | the Free Software Foundation, either version 3 of the License, or
640 | (at your option) any later version.
641 |
642 | This program is distributed in the hope that it will be useful,
643 | but WITHOUT ANY WARRANTY; without even the implied warranty of
644 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
645 | GNU General Public License for more details.
646 |
647 | You should have received a copy of the GNU General Public License
648 | along with this program. If not, see .
649 |
650 | Also add information on how to contact you by electronic and paper mail.
651 |
652 | If the program does terminal interaction, make it output a short
653 | notice like this when it starts in an interactive mode:
654 |
655 | Copyright (C)
656 | This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
657 | This is free software, and you are welcome to redistribute it
658 | under certain conditions; type `show c' for details.
659 |
660 | The hypothetical commands `show w' and `show c' should show the appropriate
661 | parts of the General Public License. Of course, your program's commands
662 | might be different; for a GUI interface, you would use an "about box".
663 |
664 | You should also get your employer (if you work as a programmer) or school,
665 | if any, to sign a "copyright disclaimer" for the program, if necessary.
666 | For more information on this, and how to apply and follow the GNU GPL, see
667 | .
668 |
669 | The GNU General Public License does not permit incorporating your program
670 | into proprietary programs. If your program is a subroutine library, you
671 | may consider it more useful to permit linking proprietary applications with
672 | the library. If this is what you want to do, use the GNU Lesser General
673 | Public License instead of this License. But first, please read
674 | .
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # gacha
2 | 适用于[HoshinoBot](https://github.com/Ice-Cirno/HoshinoBot)的可以自动更新的全限定卡池。包含27个限定卡池, 国服日服台服卡池, 以及混合卡池. 仅测试了v2而没有对v1进行测试. 本卡池默认不会禁言, 抽卡需要@Bot, 如果有需要请自行修改.
3 |
4 | **请务必阅读[开始使用](#开始使用)**
5 |
6 | 请注意, 咖啡佬在8月5日提交了一次针对角色名称的修改[b256942](https://github.com/Ice-Cirno/HoshinoBot/commit/7cfa868ec7d6f777ab608b77743af32d34add551#diff-7cb6cbc27352fcca4672d1966d984863),将"游骑兵"更换为了"游侠", 如果您部署的时间早于此时间, 请注意更新角色名称.([#7](https://github.com/pcrbot/gacha/issues/7))
7 |
8 | 想法来自[HoshinoBot](https://github.com/Ice-Cirno/HoshinoBot)的[#113](https://github.com/Ice-Cirno/HoshinoBot/pull/113), 但是从其源站获取的卡池是数字ID格式, 于是利用`_pcr_data.py`的数据将其转变为第一个中文名称, 更新卡池后原卡池会被备份至`backup.json`, 如出现错误可由此恢复.
9 |
10 | 同时可以选择自动更新角色数据和头像, 只会添加本地缺失的角色, 不会影响已有角色, 如果涉及git请注意忽略或提交.
11 |
12 | 本项目GitHub地址:https://github.com/pcrbot/gacha
13 |
14 | Gitee地址:https://gitee.com/varmixer/gacha
15 |
16 | 卡池数据更新来源: https://api.redive.lolikon.icu/gacha/default_gacha.json
17 |
18 | 角色数据更新来源: https://api.redive.lolikon.icu/gacha/unitdata.py
19 |
20 | ## 指令与功能
21 | * 更新卡池: 更新卡池, 仅限超级管理员, 可群聊可私聊, 无需@, 无需开启服务.
22 | * 强制更新卡池: 不检查版本而直接覆盖本地卡池
23 | * 选择卡池: 与原指令相同, 请根据提示操作.
24 | * (自动)自动更新: 每日自动更新卡池.
25 |
26 |
27 | 其余指令与原先抽卡系统一致.
28 |
29 |
30 | ## 开始使用
31 |
32 | 1. 切换至PCR模块目录下(请自行根据实际情况修改路径):
33 | ```
34 | cd ~/HoshinoBot/hoshino/modules/priconne
35 | ```
36 | 2. 移除原有的`gacha/`目录, 建议自行备份以防止出现问题:
37 | ```
38 | rm gacha/ -rf
39 | ```
40 | 3. 在同目录下克隆本项目, 保证目录结构与原来一致, 即`/hoshino/modules/priconne/gacha/`:
41 | ```
42 | git clone https://github.com/pcrbot/gacha.git
43 | ```
44 | 4. 移动文件`_pcr_data.py`、`CHARA_NAME.json`、`CHARA_PROFILE.json`、`UnavailableChara.json`到上级目录, 注意需要让`_pcr_data.py`覆盖原来的文件, 此修改与项目的其他插件完全兼容, 仅是修改了数据的保存方式, 因此无需担心(出问题我跑路)
45 | ```
46 | cd gacha/
47 | # 提示覆盖请确认覆盖文件
48 | mv _pcr_data.py ..
49 | mv CHARA_NAME.json ..
50 | mv CHARA_PROFILE.json ..
51 | mv UnavailableChara.json ..
52 | ```
53 |
54 | ## 配置
55 | 1. 自动更新出现错误或者是发现新卡池而完成自动更新, 可通知SUPERUSER列表的第一名用户, 如果您想接受到通知, 可以将`update.py`第13行改为`NOTICE = 1`.
56 |
57 | 2. `PCRDATA_UPDATA`为`True`时将自动更新角色昵称, 并下载头像. 角色信息保存在外部json文件中, 不会触发热重载.
58 |
59 |
60 | ## 更新日志
61 |
62 | ### 2022/6/7
63 | * 更新卡池信息
64 | * 更新200井
65 | * 兼容最新版[HoshinoBot](https://github.com/Ice-Cirno/HoshinoBot), 包含了`UnavailableChara`
66 | * 屏蔽远程数据库同步至本地的重复角色
67 |
68 | ### 2020/11/9
69 | * 将角色信息全部给改为json文件存储, 在启动时读取, 并且加入了动态改变角色昵称的方法, 从而在更新角色数据时不会触发全局热重载
70 | * 兼容最新版[HoshinoBot](https://github.com/Ice-Cirno/HoshinoBot), 包含了`CHARA_PROFILE`
71 | * 路径更换为绝对路径, 解决因启动路径而引起的报错
72 | * 自检, **当角色别称出现空字符时, 会自动移除**。
73 | > 此漏洞会引发什么[问题](https://github.com/pcrbot/HoshinoBot-gacha/commit/7e3cc18f29aaf7d7755d42192e533914fe32a35d)?
74 | > 当角色别称出现空字符时, 查询竞技场的指令可能导致进入死循环.
75 |
76 |
77 | ### 2020/10/16
78 | * (可选)可以自动更新角色数据(昵称)和自动下载角色头像了 [#9](https://github.com/pcrbot/gacha/issues/9)
79 | * 新增指令【强制更新卡池】可以无视版本号, 强制更新本地卡池(会同时更新角色数据图标)
80 | * 稍微整理了下乱的要命的代码(虽然现在也是)
81 |
82 | ### 2020/9/29
83 | * 所有请求全部替换为异步调用(使用`hoshino.aiorequests`)
84 | * 定时任务改为`nonebot.scheduler`来触发, 不再依赖hoshino服务层
85 |
86 |
87 | ### 2020/9/10
88 | * 更新了部分游骑兵相关角色名称 [#7](https://github.com/pcrbot/gacha/issues/7)
89 | * 当up角色重复出现在star3中时, 会自动移除 [#8](https://github.com/pcrbot/gacha/issues/8)
90 |
91 | ### 2020/8/18
92 | * 解决了使用Hoshino后续版本时, 繁体指令提示冲突的问题
93 | * 解决了看看UP时出现USE_CQPRO不存在的问题([#1](https://github.com/pcrbot/gacha/issues/1))
94 |
95 | ## 本模块原README
96 | 本模块基于 0皆无0(NGA uid=60429400)dalao的[PCR姬器人:可可萝·Android](https://bbs.nga.cn/read.php?tid=18434108),移植至nonebot框架而成。
97 |
98 | 重构 by IceCoffee
99 |
100 | 源代码的使用已获原作者授权。
101 |
--------------------------------------------------------------------------------
/UnavailableChara.json:
--------------------------------------------------------------------------------
1 | {
2 | "1069": [
3 | "霸瞳"
4 | ],
5 | "1072": [
6 | "可萝爹"
7 | ],
8 | "1073": [
9 | "拉基拉基"
10 | ],
11 | "1102": [
12 | "泳装大眼"
13 | ],
14 | "1183": [
15 | "星弓星"
16 | ],
17 | "1184": [
18 | "星弓栞"
19 | ],
20 | "1204": [
21 | "小小甜心美美"
22 | ],
23 | "1205": [
24 | "小小甜心禊"
25 | ],
26 | "1206": [
27 | "小小甜心镜华"
28 | ],
29 | "1217": [
30 | "秋乃(秋乃&咲恋)"
31 | ],
32 | "1218": [
33 | "咲恋(秋乃&咲恋)"
34 | ]
35 | }
36 |
--------------------------------------------------------------------------------
/__init__.py:
--------------------------------------------------------------------------------
1 | import os
2 | import random
3 | from collections import defaultdict
4 | import re
5 |
6 | from hoshino import Service, priv, util
7 | from hoshino.typing import *
8 | from hoshino.util import DailyNumberLimiter, concat_pic, pic2b64, silence
9 |
10 | from .. import chara
11 | from .gacha import Gacha
12 | from .update import *
13 | try:
14 | import ujson as json
15 | except:
16 | import json
17 |
18 | sv_help = '''
19 | [@Bot单抽] 转蛋模拟
20 | [@Bot十连] 转蛋模拟
21 | [@Bot来一井] 3w钻!
22 | [查看卡池] 模拟卡池&出率
23 | [切换卡池] 更换模拟卡池
24 | [氪金@某人] 为某人氪金,恢复抽卡次数
25 | '''.strip()
26 | sv = Service('gacha', help_=sv_help, bundle='pcr娱乐')
27 | jewel_limit = DailyNumberLimiter(15000)
28 | tenjo_limit = DailyNumberLimiter(5)
29 |
30 | JEWEL_EXCEED_NOTICE = f'您今天已经抽过{jewel_limit.max}钻了,欢迎明早5点后再来!'
31 | TENJO_EXCEED_NOTICE = f'您今天已经抽过{tenjo_limit.max}张天井券了,欢迎明早5点后再来!'
32 | POOL = ('混合', '日服', '台服', '国服')
33 | DEFAULT_POOL = POOL[0]
34 |
35 | _pool_config_file = os.path.expanduser('~/.hoshino/group_pool_config.json')
36 | _group_pool = {}
37 | try:
38 | with open(_pool_config_file, encoding='utf8') as f:
39 | _group_pool = json.load(f)
40 | except FileNotFoundError as e:
41 | sv.logger.warning('group_pool_config.json not found, will create when needed.')
42 | _group_pool = defaultdict(lambda: DEFAULT_POOL, _group_pool)
43 |
44 | def dump_pool_config():
45 | with open(_pool_config_file, 'w', encoding='utf8') as f:
46 | json.dump(_group_pool, f, ensure_ascii=False)
47 |
48 |
49 | gacha_10_aliases = ('抽十连', '十连', '十连!', '十连抽', '来个十连', '来发十连', '来次十连', '抽个十连', '抽发十连', '抽次十连', '十连扭蛋', '扭蛋十连', '10连', '10连!', '10连抽', '来个10连', '来发10连', '来次10连', '抽个10连', '抽发10连', '抽次10连', '10连扭蛋', '扭蛋10连')
50 | gacha_1_aliases = ('单抽', '单抽!', '来发单抽', '来个单抽', '来次单抽', '扭蛋单抽', '单抽扭蛋')
51 | gacha_300_aliases = ('抽一井', '来一井', '来发井', '抽发井', '天井扭蛋', '扭蛋天井')
52 |
53 | @sv.on_fullmatch(('卡池资讯', '查看卡池', '看看卡池', '康康卡池', '看看up', '看看UP'))
54 | async def gacha_info(bot, ev: CQEvent):
55 | gid = str(ev.group_id)
56 | try:
57 | gacha = Gacha(_group_pool[gid])
58 | except:
59 | await bot.finish(ev, f'未知卡池,{POOL_NAME_TIP}', at_sender=True)
60 | up_chara = gacha.up
61 | up_chara = map(lambda x: str(
62 | chara.fromname(x, star=3).icon.cqcode) + x, up_chara)
63 | up_chara = '\n'.join(up_chara)
64 | await bot.send(ev, f"本期卡池主打的角色:\n{up_chara}\nUP角色合计={(gacha.up_prob/10):.1f}% 3★出率={(gacha.s3_prob)/10:.1f}%")
65 |
66 |
67 | POOL_NAME_TIP = '请选择以下卡池\n> 选择卡池 日服\n> 选择卡池 台服\n> 选择卡池 国服\n> 选择卡池 Fes\n> 选择卡池 七冠\n> 选择卡池 联动\n> 选择卡池 限定\n> 选择卡池 混合'
68 | @sv.on_prefix(('切换卡池', '选择卡池'))
69 | async def set_pool(bot, ev: CQEvent):
70 | #if not priv.check_priv(ev, priv.ADMIN):
71 | # await bot.finish(ev, '只有群管理才能切换卡池', at_sender=True)
72 | name = util.normalize_str(ev.message.extract_plain_text())
73 | if not name:
74 | await bot.finish(ev, POOL_NAME_TIP, at_sender=True)
75 | elif name in ('联动', '活动'):
76 | await bot.finish(ev,'请选择以下卡池\n环奈、re0、cgss')
77 | elif name in ('限定'):
78 | await bot.finish(ev,'请选择以下卡池\n> 选择卡池 夏日限定\n> 选择卡池 万圣节限定\n> 选择卡池 圣诞节限定\n> 选择卡池 新年限定\n> 选择卡池 其他限定')
79 | elif name in ('夏日限定'):
80 | await bot.finish(ev,'请选择以下卡池\n水吃、水女仆、水黑、水猫剑、水暴、水电、水狼、水狐、水流、水星、水饺、水望')
81 | elif name in ('万圣节限定'):
82 | await bot.finish(ev,'请选择以下卡池\n瓜忍、瓜眼、猫仓唯、鬼裁、瓜狗')
83 | elif name in ('圣诞节限定'):
84 | await bot.finish(ev,'请选择以下卡池\n圣千、圣锤、圣克、圣哈、蛋丁')
85 | elif name in ('新年限定'):
86 | await bot.finish(ev,'请选择以下卡池\n春田、春猫、春黑、春妈、春吃、春花、春菲、春伊')
87 | elif name in ('其他限定'):
88 | await bot.finish(ev,'请选择以下卡池\n情姐、礼妈、富婆、超吃、超猫、怪盗路人妹')
89 | elif name in ('混合', '混', 'mix'):
90 | name = '混合'
91 | elif name in ('日服', '日', 'jp', 'cy', 'cygames'):
92 | name = '日服'
93 | elif name in ('台服', '台', 'tw', '搜内', 'sonet'):
94 | name = '台服'
95 | elif name in ('国服', '国', 'cn', 'b服', 'b', 'bl', 'bilibili'):
96 | name = '国服'
97 | elif name in ('公主祭典', 'fes'):
98 | name = '公主祭典(Fes)'
99 | elif name in ('七冠', 'セブンクラウンズ'):
100 | name = '七冠(セブンクラウンズ)'
101 | elif name in ('环奈'):
102 | name = '桥本环奈'
103 | elif name in ('re0', 're0联动', 're:0联动'):
104 | name = 'Re:从零开始的异世界生活'
105 | elif name in ('cgss', 'cgss联动', '偶像大师', '偶像大师联动'):
106 | name = '偶像大师 灰姑娘女孩 星光舞台'
107 | elif name in ('贪吃佩可(夏日)', '水吃', '泳装吃货'):
108 | name = '贪吃佩可(夏日)'
109 | elif name in ('铃莓(夏日)', '水女仆', '泳装女仆'):
110 | name = '铃莓(夏日)'
111 | elif name in ('凯留(夏日)', '水黑', '泳装黑猫'):
112 | name = '凯留(夏日)'
113 | elif name in ('珠希(夏日)', '水猫剑', '泳装猫剑'):
114 | name = '珠希(夏日)'
115 | elif name in ('铃奈(夏日)', '水暴', '泳装暴击弓'):
116 | name = '铃奈(夏日)'
117 | elif name in ('咲恋(夏日)', '水电', '泳装充电宝'):
118 | name = '咲恋(夏日)'
119 | elif name in ('真琴(夏日)', '水狼', '泳装狼'):
120 | name = '真琴(夏日)'
121 | elif name in ('真步(夏日)', '水狐', '水壶', '泳装狐狸'):
122 | name = '真步(夏日)'
123 | elif name in ('流夏(夏日)', '水流', '泳装流夏'):
124 | name = '流夏(夏日)'
125 | elif name in ('初音(夏日)', '水星', '海星', '泳装初音'):
126 | name = '初音(夏日)'
127 | elif name in ('惠理子(夏日)', '水病', '水饺', '泳装病娇'):
128 | name = '惠理子(夏日)'
129 | elif name in ('望(夏日)', '水望', '水偶像', '泳装偶像'):
130 | name = '望(夏日)'
131 | elif name in ('忍(万圣节)', '瓜忍', '万圣忍'):
132 | name = '忍(万圣节)'
133 | elif name in ('美咲(万圣节)', '瓜眼', '万圣大眼'):
134 | name = '美咲(万圣节)'
135 | elif name in ('镜华(万圣节)', '猫仓唯', 'mcw', '万圣小仓唯'):
136 | name = '镜华(万圣节)'
137 | elif name in ('纺希(万圣节)', '鬼裁', '万圣裁缝'):
138 | name = '纺希(万圣节)'
139 | elif name in ('香织(万圣节)', '瓜狗', '万圣狗'):
140 | name = '香织(万圣节)'
141 | elif name in ('千歌(圣诞节)', '圣千', '圣诞千歌'):
142 | name = '千歌(圣诞节)'
143 | elif name in ('绫音(圣诞节)', '圣锤', '圣诞熊锤'):
144 | name = '绫音(圣诞节)'
145 | elif name in ('克莉丝提娜(圣诞节)', '圣克', '圣诞克总'):
146 | name = '克莉丝提娜(圣诞节)'
147 | elif name in ('秋乃(圣诞节)', '圣哈', '圣诞哈哈剑'):
148 | name = '秋乃(圣诞节)'
149 | elif name in ('宫子(圣诞节)', '诞丁', '蛋丁', '但丁', '圣诞布丁'):
150 | name = '宫子(圣诞节)'
151 | elif name in ('优衣(新年)', '春田'):
152 | name = '优衣(新年)'
153 | elif name in ('日和(新年)', '春猫'):
154 | name = '日和(新年)'
155 | elif name in ('凯留(新年)', '春黑', '唯一神'):
156 | name = '凯留(新年)'
157 | elif name in ('可可萝(新年)', '春妈'):
158 | name = '可可萝(新年)'
159 | elif name in ('贪吃佩可(新年)', '春吃'):
160 | name = '贪吃佩可(新年)'
161 | elif name in ('似似花(新年)', '春花'):
162 | name = '似似花(新年)'
163 | elif name in ('雪菲(新年)', '春菲'):
164 | name = '雪菲(新年)'
165 | elif name in ('伊莉亚(新年)', '春伊'):
166 | name = '伊莉亚(新年)'
167 | elif name in ('静流(情人节)', '情姐'):
168 | name = '静流(情人节)'
169 | elif name in ('可可萝(祭服)', '礼妈', '仪妈'):
170 | name = '可可萝(祭服)'
171 | elif name in ('克蕾琪塔', '富婆'):
172 | name = '克蕾琪塔'
173 | elif name in ('贪吃佩可(超载)', '超吃'):
174 | name = '贪吃佩可(超载)'
175 | elif name in ('凯留(超载)', '超猫'):
176 | name = '凯留(超载)'
177 | elif name in ('步未(怪盗)', '怪盗路人妹'):
178 | name = '步未(怪盗)'
179 | else:
180 | await bot.finish(ev, f'未知卡池,{POOL_NAME_TIP}', at_sender=True)
181 | gid = str(ev.group_id)
182 | _group_pool[gid] = name
183 | dump_pool_config()
184 | await bot.send(ev, f'已切换为{name}卡池', at_sender=True)
185 | await gacha_info(bot, ev)
186 |
187 |
188 | async def check_jewel_num(bot, ev: CQEvent):
189 | if not jewel_limit.check(ev.user_id):
190 | await bot.finish(ev, JEWEL_EXCEED_NOTICE, at_sender=True)
191 |
192 |
193 | async def check_tenjo_num(bot, ev: CQEvent):
194 | if not tenjo_limit.check(ev.user_id):
195 | await bot.finish(ev, TENJO_EXCEED_NOTICE, at_sender=True)
196 |
197 |
198 | @sv.on_prefix(gacha_1_aliases, only_to_me=True)
199 | async def gacha_1(bot, ev: CQEvent):
200 |
201 | await check_jewel_num(bot, ev)
202 | jewel_limit.increase(ev.user_id, 150)
203 |
204 | gid = str(ev.group_id)
205 | try:
206 | gacha = Gacha(_group_pool[gid])
207 | except:
208 | await bot.finish(ev, f'未知卡池,{POOL_NAME_TIP}', at_sender=True)
209 | chara, hiishi = gacha.gacha_one(gacha.up_prob, gacha.s3_prob, gacha.s2_prob)
210 | # silence_time = hiishi * 60
211 |
212 | res = f'{chara.name} {"★"*chara.star}'
213 | res = f'{chara.icon.cqcode} {res}'
214 |
215 | # await silence(ev, silence_time)
216 | await bot.send(ev, f'素敵な仲間が増えますよ!\n{res}', at_sender=True)
217 |
218 |
219 | @sv.on_prefix(gacha_10_aliases, only_to_me=True)
220 | async def gacha_10(bot, ev: CQEvent):
221 | SUPER_LUCKY_LINE = 170
222 |
223 | await check_jewel_num(bot, ev)
224 | jewel_limit.increase(ev.user_id, 1500)
225 |
226 | gid = str(ev.group_id)
227 | try:
228 | gacha = Gacha(_group_pool[gid])
229 | except:
230 | await bot.finish(ev, f'未知卡池,{POOL_NAME_TIP}', at_sender=True)
231 | result, hiishi = gacha.gacha_ten()
232 | # silence_time = hiishi * 6 if hiishi < SUPER_LUCKY_LINE else hiishi * 60
233 |
234 |
235 | res1 = await chara.gen_team_pic(result[:5], star_slot_verbose=False)
236 | res2 = await chara.gen_team_pic(result[5:], star_slot_verbose=False)
237 | res = concat_pic([res1, res2])
238 | res = pic2b64(res)
239 | res = MessageSegment.image(res)
240 | result = [f'{c.name}{"★"*c.star}' for c in result]
241 | res1 = ' '.join(result[0:5])
242 | res2 = ' '.join(result[5:])
243 | res = f'{res}\n{res1}\n{res2}'
244 |
245 |
246 | if hiishi >= SUPER_LUCKY_LINE:
247 | await bot.send(ev, '恭喜海豹!おめでとうございます!')
248 | await bot.send(ev, f'素敵な仲間が増えますよ!\n{res}\n', at_sender=True)
249 | #await silence(ev, silence_time)
250 |
251 |
252 | @sv.on_prefix(gacha_300_aliases, only_to_me=True)
253 | async def gacha_300(bot, ev: CQEvent):
254 |
255 | await check_tenjo_num(bot, ev)
256 | tenjo_limit.increase(ev.user_id)
257 |
258 | gid = str(ev.group_id)
259 | try:
260 | gacha = Gacha(_group_pool[gid])
261 | except:
262 | await bot.finish(ev, f'未知卡池,{POOL_NAME_TIP}', at_sender=True)
263 | result = gacha.gacha_tenjou()
264 | up = len(result['up'])
265 | s3 = len(result['s3'])
266 | s2 = len(result['s2'])
267 | s1 = len(result['s1'])
268 |
269 | res = [*(result['up']), *(result['s3'])]
270 | random.shuffle(res)
271 | lenth = len(res)
272 | if lenth <= 0:
273 | res = "竟...竟然没有3★?!"
274 | else:
275 | step = 4
276 | pics = []
277 | for i in range(0, lenth, step):
278 | j = min(lenth, i + step)
279 | pics.append(await chara.gen_team_pic(res[i:j], star_slot_verbose=False))
280 | res = concat_pic(pics)
281 | res = pic2b64(res)
282 | res = MessageSegment.image(res)
283 |
284 | msg = [
285 | f"\n素敵な仲間が増えますよ! {res}",
286 | f"★★★×{up+s3} ★★×{s2} ★×{s1}",
287 | f"获得记忆碎片×{gacha.memo_pieces*up}与女神秘石×{50*(up+s3) + 10*s2 + s1}!\n第{result['first_up_pos']}抽首次获得up角色" if up else f"获得女神秘石{50*(up+s3) + 10*s2 + s1}个!"
288 | ]
289 |
290 | if up == 0 and s3 == 0:
291 | msg.append("太惨了,咱们还是退款删游吧...")
292 | elif up == 0 and s3 > 7:
293 | msg.append("up呢?我的up呢?")
294 | elif up == 0 and s3 <= 3:
295 | msg.append("这位酋长,梦幻包考虑一下?")
296 | elif up == 0:
297 | msg.append("据说天井的概率只有" + gacha.tenjou_rate)
298 | elif up <= 2:
299 | if result['first_up_pos'] < 50:
300 | msg.append("你的喜悦我收到了,滚去喂鲨鱼吧!")
301 | elif result['first_up_pos'] < 100:
302 | msg.append("已经可以了,您已经很欧了")
303 | elif result['first_up_pos'] > gacha.tenjou_line - 10:
304 | msg.append("标 准 结 局")
305 | elif result['first_up_pos'] > gacha.tenjou_line - 50:
306 | msg.append("补井还是不补井,这是一个问题...")
307 | else:
308 | msg.append("期望之内,亚洲水平")
309 | elif up == 3:
310 | msg.append("抽井母五一气呵成!多出30等专武~")
311 | elif up >= 4:
312 | msg.append("记忆碎片一大堆!您是托吧?")
313 |
314 | await bot.send(ev, '\n'.join(msg), at_sender=True)
315 | #silence_time = (100*up + 50*(up+s3) + 10*s2 + s1) * 1
316 | #await silence(ev, silence_time)
317 |
318 |
319 | @sv.on_prefix('氪金')
320 | async def kakin(bot, ev: CQEvent):
321 | #if ev.user_id not in bot.config.SUPERUSERS:
322 | # return
323 | count = 0
324 | for m in ev.message:
325 | if m.type == 'at' and m.data['qq'] != 'all':
326 | uid = int(m.data['qq'])
327 | jewel_limit.reset(uid)
328 | tenjo_limit.reset(uid)
329 | count += 1
330 | if count:
331 | await bot.send(ev, f"已为{count}位用户充值完毕!谢谢惠顾~")
332 |
--------------------------------------------------------------------------------
/_pcr_data.py:
--------------------------------------------------------------------------------
1 | import os
2 | import json
3 |
4 |
5 | CHARA_NAME = {}
6 | CHARA_PROFILE = {}
7 | UnavailableChara = {}
8 |
9 | class CharaMaster:
10 | def __init__(self) -> None:
11 | self.chara_name_path = os.path.join(os.path.dirname(__file__), 'CHARA_NAME.json')
12 | self.chara_profile_path = os.path.join(os.path.dirname(__file__), 'CHARA_PROFILE.json')
13 | self.unavailablechara_path = os.path.join(os.path.dirname(__file__), 'UnavailableChara.json')
14 | self.__load_pcr_data()
15 | self.__selfcheck()
16 |
17 | def __selfcheck(self) -> None:
18 | for chara_id in CHARA_NAME:
19 | if "" in CHARA_NAME[chara_id]:
20 | CHARA_NAME[chara_id].remove("")
21 | self.__save_pcr_data()
22 |
23 |
24 | def __load_pcr_data(self) -> None:
25 | # load CHARA_NAME
26 | with open(self.chara_name_path, 'r', encoding='utf-8') as f:
27 | chara_name_str = json.load(f)
28 | global CHARA_NAME
29 | for id in chara_name_str:
30 | CHARA_NAME[int(id)] = chara_name_str[id]
31 |
32 | # load CHARA_PROFILE
33 | with open(self.chara_profile_path, 'r', encoding='utf-8') as f:
34 | chara_profile_str = json.load(f)
35 | global CHARA_PROFILE
36 | for id in chara_profile_str:
37 | CHARA_PROFILE[int(id)] = chara_profile_str[id]
38 |
39 | # load UnavailableChara
40 | with open(self.unavailablechara_path, 'r', encoding='utf-8') as f:
41 | unavailablechara_str = json.load(f)
42 | global UnavailableChara
43 | for id in unavailablechara_str:
44 | UnavailableChara[int(id)] = unavailablechara_str[id]
45 |
46 |
47 | def __save_pcr_data(self) -> None:
48 | # save CHARA_NAME
49 | with open(self.chara_name_path, 'w+', encoding='utf-8') as f:
50 | json.dump(CHARA_NAME, f, indent=4, ensure_ascii=False)
51 |
52 | # save CHARA_PROFILE
53 | with open(self.chara_profile_path, 'w+' , encoding='utf-8') as f:
54 | json.dump(CHARA_PROFILE, f, indent=4, ensure_ascii=False)
55 |
56 | # save UnavailableChara
57 | with open(self.unavailablechara_path, 'w+' , encoding='utf-8') as f:
58 | json.dump(UnavailableChara, f, indent=4, ensure_ascii=False)
59 |
60 |
61 | def check_nickname(self, id:int, nickname:str):
62 | '''
63 | Return true if nickname already existed.
64 | '''
65 | if id not in CHARA_NAME:
66 | return None
67 | nicknames = CHARA_NAME[id]
68 | if nickname in nicknames:
69 | return True
70 | else:
71 | return False
72 |
73 | def add_chara(self, id:int, names:list) -> None:
74 | CHARA_NAME[id] = names
75 | self.__save_pcr_data()
76 |
77 |
78 | def add_nickname(self, id:int, nickname:str) -> None:
79 | CHARA_NAME[id].append(nickname)
80 | self.__save_pcr_data()
81 |
82 |
83 | # CHARA_NAME will be loaded while init
84 | chara_master = CharaMaster()
85 |
--------------------------------------------------------------------------------
/gacha.py:
--------------------------------------------------------------------------------
1 | import random
2 |
3 | from hoshino import util
4 | from .. import chara
5 |
6 |
7 | class Gacha(object):
8 |
9 | def __init__(self, pool_name: str = "混合"):
10 | super().__init__()
11 | self.pool_name = pool_name
12 | if pool_name == '国服' or pool_name == '桥本环奈' or pool_name == 'Re:从零开始的异世界生活' or pool_name == '偶像大师 灰姑娘女孩 星光舞台' or pool_name == '贪吃佩可(夏日)' or pool_name == '铃莓(夏日)' or pool_name == '凯留(夏日)' or pool_name == '珠希(夏日)' or pool_name == '铃奈(夏日)' or pool_name == '咲恋(夏日)' or pool_name == '真琴(夏日)' or pool_name == '真步(夏日)' or pool_name == '流夏(夏日)' or pool_name == '初音(夏日)' or pool_name == '忍(万圣节)' or pool_name == '美咲(万圣节)' or pool_name == '镜华(万圣节)' or pool_name == '纺希(万圣节)' or pool_name == '千歌(圣诞节)' or pool_name == '绫音(圣诞节)' or pool_name == '克莉丝提娜(圣诞节)' or pool_name == '秋乃(圣诞节)' or pool_name == '优衣(新年)' or pool_name == '日和(新年)' or pool_name == '凯留(新年)' or pool_name == '可可萝(新年)' or pool_name == '贪吃佩可(新年)' or pool_name == '似似花(新年)' or pool_name == '静流(情人节)' or pool_name == '可可萝(祭服)':
13 | self.tenjou_line = 300
14 | self.tenjou_rate = '12.16%'
15 | else:
16 | self.tenjou_line = 200
17 | self.tenjou_rate = '24.54%'
18 | self.memo_pieces = 200 if (pool_name == '混合' or pool_name == '日服' or pool_name == '台服' or pool_name == '公主祭典(Fes)' or pool_name == '七冠(セブンクラウンズ)' or pool_name == '步未(怪盗)') else 100
19 | self.load_pool(pool_name)
20 |
21 |
22 | def load_pool(self, pool_name: str):
23 | config = util.load_config(__file__)
24 | pool = config[pool_name]
25 | self.up_prob = pool["up_prob"]
26 | self.s3_prob = pool["s3_prob"]
27 | self.s2_prob = pool["s2_prob"]
28 | self.s1_prob = 1000 - self.s2_prob - self.s3_prob
29 | self.up = pool["up"]
30 | self.star3 = pool["star3"]
31 | self.star2 = pool["star2"]
32 | self.star1 = pool["star1"]
33 |
34 |
35 | def gacha_one(self, up_prob: int, s3_prob: int, s2_prob: int, s1_prob: int = None):
36 | '''
37 | sx_prob: x星概率,要求和为1000
38 | up_prob: UP角色概率(从3星划出)
39 | up_chara: UP角色名列表
40 |
41 | return: (单抽结果:Chara, 秘石数:int)
42 | ---------------------------
43 | |up| | 20 | 78 |
44 | | *** | ** | * |
45 | ---------------------------
46 | '''
47 | if s1_prob is None:
48 | s1_prob = 1000 - s3_prob - s2_prob
49 | total_ = s3_prob + s2_prob + s1_prob
50 | pick = random.randint(1, total_)
51 | if pick <= up_prob:
52 | return chara.fromname(random.choice(self.up), 3), 100
53 | elif pick <= s3_prob:
54 | return chara.fromname(random.choice(self.star3), 3), 50
55 | elif pick <= s2_prob + s3_prob:
56 | return chara.fromname(random.choice(self.star2), 2), 10
57 | else:
58 | return chara.fromname(random.choice(self.star1), 1), 1
59 |
60 |
61 | def gacha_ten(self):
62 | result = []
63 | hiishi = 0
64 | up = self.up_prob
65 | s3 = self.s3_prob
66 | s2 = self.s2_prob
67 | s1 = 1000 - s3 - s2
68 | for _ in range(9): # 前9连
69 | c, y = self.gacha_one(up, s3, s2, s1)
70 | result.append(c)
71 | hiishi += y
72 | c, y = self.gacha_one(up, s3, s2 + s1, 0) # 保底第10抽
73 | result.append(c)
74 | hiishi += y
75 |
76 | return result, hiishi
77 |
78 |
79 | def gacha_tenjou(self):
80 | total_div_10 = self.tenjou_line // 10
81 | result = {'up': [], 's3': [], 's2':[], 's1':[]}
82 | first_up_pos = 999999
83 | up = self.up_prob
84 | s3 = self.s3_prob
85 | s2 = self.s2_prob
86 | s1 = 1000 - s3 - s2
87 | for i in range(9 * total_div_10):
88 | c, y = self.gacha_one(up, s3, s2, s1)
89 | if 100 == y:
90 | result['up'].append(c)
91 | first_up_pos = min(first_up_pos, 10 * ((i+1) // 9) + ((i+1) % 9))
92 | elif 50 == y:
93 | result['s3'].append(c)
94 | elif 10 == y:
95 | result['s2'].append(c)
96 | elif 1 == y:
97 | result['s1'].append(c)
98 | else:
99 | pass # should never reach here
100 | for i in range(total_div_10):
101 | c, y = self.gacha_one(up, s3, s2 + s1, 0)
102 | if 100 == y:
103 | result['up'].append(c)
104 | first_up_pos = min(first_up_pos, 10 * (i+1))
105 | elif 50 == y:
106 | result['s3'].append(c)
107 | elif 10 == y:
108 | result['s2'].append(c)
109 | else:
110 | pass # should never reach here
111 | result['first_up_pos'] = first_up_pos
112 | return result
113 |
--------------------------------------------------------------------------------
/update.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 | from os import stat
3 | from nonebot import on_command, get_bot, scheduler
4 | from requests.sessions import session
5 | from hoshino import aiorequests, priv, util
6 | from ast import literal_eval
7 | import hoshino
8 | import os, json
9 | from .. import _pcr_data
10 | from ..chara import download_chara_icon, roster
11 |
12 | # 卡池更新是否通知管理员
13 | NOTICE = False
14 |
15 |
16 | # 是否自动更新缺失的角色数据并下载图标, 是否重载花名册
17 | # 此选项会使您的仓库存在未提交的修改, 如果有影响请注意处理
18 | PCRDATA_UPDATA = True
19 |
20 | local_ver_path = os.path.join(os.path.dirname(__file__), 'local_ver.json')
21 | local_pool_path = os.path.join(os.path.dirname(__file__), 'config.json')
22 | local_pool_backup_path = os.path.join(os.path.dirname(__file__), 'backup.json')
23 |
24 |
25 | online_ver_url = 'https://api.redive.lolikon.icu/gacha/gacha_ver.json'
26 | online_pool_url = 'https://api.redive.lolikon.icu/gacha/default_gacha.json'
27 | online_pcr_data_url = 'https://api.redive.lolikon.icu/gacha/unitdata.py'
28 |
29 | #屏蔽重复角色
30 | blacklist = [1908, 1915, 1918, 1194, 1195, 1196, 1197, 1201, 1202, 1203, 1234, 9401]
31 |
32 | async def get_online_pcrdata():
33 | '''
34 | 获取在线的角色数据信息, 并处理为json格式
35 | '''
36 | online_pcrdata = await aiorequests.get(url=online_pcr_data_url, timeout=10, verify=False)
37 | if online_pcrdata.status_code != 200:
38 | hoshino.logger.error(f'获取在线角色数据时发生错误{online_pcrdata.status_code}')
39 | return {}
40 |
41 | # 移除开头的'CHARA_NAME = ', 格式化为json便于处理
42 | online_pcrdata_text = await online_pcrdata.text
43 | online_pcrdata_text = online_pcrdata_text.replace('CHARA_NAME = ', '')
44 | online_pcrdata_json = literal_eval(online_pcrdata_text)
45 | return online_pcrdata_json
46 |
47 |
48 | def sort_priority(values, group):
49 | def helper(x):
50 | if x in group:
51 | return (0, x)
52 | return(1, x)
53 | values.sort(key=helper)
54 |
55 |
56 | async def update_pcrdata():
57 | '''
58 | 对比本地和远程的_pcr_data.py, 自动补充本地没有的角色信息, 已有角色信息进行补全
59 | '''
60 | online_pcrdata = await get_online_pcrdata()
61 | hoshino.logger.info('开始对比角色数据')
62 | if online_pcrdata == {}:
63 | return -1
64 | for id in online_pcrdata:
65 | # 增加对只有一个key的名字的检查,从而更新之前检查所添加的没有别称的新角色
66 | if (id not in _pcr_data.CHARA_NAME or len(_pcr_data.CHARA_NAME[id]) == 1) and id not in blacklist:
67 | hoshino.logger.info(f'已开始更新角色{id}的数据和图标')
68 | # 由于返回数据可能出现全半角重复, 做一定程度的兼容性处理, 会将所有全角替换为半角, 并移除重复别称
69 | for i, name in enumerate(online_pcrdata[id]):
70 | name_format = name.replace('(', '(')
71 | name_format = name_format.replace(')', ')')
72 | name_format = util.normalize_str(name_format)
73 | online_pcrdata[id][i] = name_format
74 | n = online_pcrdata[id][0]
75 | group = {f'{n}'}
76 | # 转集合再转列表, 移除重复元素, 按日文原名优先顺序排列
77 | m = list(set(online_pcrdata[id]))
78 | sort_priority(m, group)
79 | _pcr_data.chara_master.add_chara(id, m)
80 | await download_chara_icon(id, 6)
81 | await download_chara_icon(id, 3)
82 | await download_chara_icon(id, 1)
83 | # 重载花名册(不会引起全局reload)
84 | roster.update()
85 |
86 |
87 | def ids2names(ids: list) -> list:
88 | '''
89 | 根据ID转换为官方译名,为了与现行卡池兼容
90 | '''
91 | res = []
92 | for id in ids:
93 | if id in blacklist:
94 | pass
95 | elif id in _pcr_data.CHARA_NAME:
96 | res.append(_pcr_data.CHARA_NAME[id][0])
97 | else:
98 | hoshino.logger.warning(f'缺少角色{id}的信息, 请注意更新静态资源')
99 | return res
100 |
101 |
102 | def get_local_ver() -> int:
103 | '''
104 | 获取本地版本号
105 | '''
106 | if os.path.exists(local_ver_path):
107 | with open(local_ver_path, 'r') as lv:
108 | lvj = json.load(lv)
109 | local_ver = int(lvj["ver"])
110 | else:
111 | local_ver = 0
112 | hoshino.logger.info(f'检查卡池更新, 本地卡池版本{local_ver}')
113 | return local_ver
114 |
115 |
116 | async def get_online_ver() -> int:
117 | '''
118 | 获取在线版本号
119 | '''
120 | online_pool_ver = await aiorequests.get(url=online_ver_url, timeout=10, verify=False)
121 |
122 | if online_pool_ver.status_code != 200:
123 | hoshino.logger.error(f'获取在线卡池版本时发生错误{online_pool_ver.status_code}')
124 | return online_pool_ver.status_code
125 | online_pool_ver_json = await online_pool_ver.json()
126 | online_ver = int(online_pool_ver_json["ver"])
127 |
128 | hoshino.logger.info(f'检查卡池更新, 在线卡池版本{online_ver}')
129 | return online_ver
130 |
131 |
132 | def update_local_ver(ver: int) -> None:
133 | '''
134 | 修改本地版本号
135 | '''
136 | local_ver_json = {"ver": str(ver)}
137 | hoshino.logger.info(f'写入本地版本号文件')
138 | with open(local_ver_path, 'w+', encoding='utf-8') as lvf:
139 | json.dump(local_ver_json, lvf, indent=4, ensure_ascii=False)
140 |
141 |
142 | async def get_online_pool():
143 | '''
144 | 获取在线卡池, 返回json格式
145 | '''
146 | hoshino.logger.info(f'开始获取在线卡池')
147 | online_pool_f = await aiorequests.get(online_pool_url, timeout=10, verify=False)
148 | if online_pool_f.status_code != 200:
149 | hoshino.logger.error(f'获取在线卡池时发生错误{online_pool_f.status_code}')
150 | return online_pool_f.status_code
151 | online_pool = await online_pool_f.json()
152 | return online_pool
153 |
154 |
155 | def update_local_pool(online_pool) -> None:
156 | '''
157 | 更新本地卡池文件, 并备份原卡池
158 | '''
159 | # 读取本地卡池
160 | with open(local_pool_path, 'r', encoding='utf-8') as lf:
161 | local_pool = json.load(lf)
162 |
163 | # 备份本地卡池
164 | hoshino.logger.info(f'开始备份本地卡池')
165 | with open(local_pool_backup_path, 'w', encoding='utf-8') as backup:
166 | json.dump(local_pool, backup, indent=4, ensure_ascii=False)
167 |
168 | # 需要进行id转角色名的键
169 | ids_list = ['up', 'star3', 'star2', 'star1']
170 | # 服务器名称可能的键
171 | pool_name = {
172 | '国服': ['BL', 'bl', 'Bl', 'bL', 'CN', 'cn'],
173 | '台服': ['TW', 'tw', 'so-net', 'sonet'],
174 | '日服': ['JP', 'jp'],
175 | '混合': ['MIX', 'mix', 'Mix', 'All', 'all', 'ALL']
176 | }
177 |
178 | for server in pool_name:
179 | for online_pool_name in online_pool:
180 | if online_pool_name in pool_name[server]:
181 | # 仅当命中时才更新卡池, 如果网站删除一个卡池, 更新后不会影响本地卡池
182 | local_pool[server] = online_pool[online_pool_name]
183 | # 检查UP角色是重复在star3中出现
184 | if local_pool[server]['up'] != []:
185 | up_chara_id = local_pool[server]['up'][0]
186 | if up_chara_id in local_pool[server]['star3']:
187 | local_pool[server]['star3'].remove(up_chara_id)
188 | # 角色名转id
189 | for star in ids_list:
190 | local_pool[server][star] = ids2names(local_pool[server][star])
191 | if local_pool[server][star] == []:
192 | # MIX池会出现无UP角色的空列表, 然后偷偷换成我老婆
193 | local_pool[server][star] = ['镜华(万圣节)']
194 | hoshino.logger.info(f'{server}卡池{star}列表为空, 已替换为镜华(万圣节)')
195 |
196 | # 将新卡池写入文件
197 | hoshino.logger.info(f'开始写入本地卡池文件')
198 | with open(local_pool_path, 'w+', encoding='utf-8') as lf:
199 | json.dump(local_pool, lf, indent=4, ensure_ascii=False)
200 |
201 |
202 | async def update_pool(force=False) -> int:
203 | '''
204 | 从远程拉取卡池覆盖本地的卡池
205 | 1, 备份原卡池到backup.json
206 | 2, 从远程卡池获取数据, 修改本地卡池数据
207 | 3, 从远程卡池获取版本号, 覆盖到本地
208 | 指定force为true, 则不会比较本地版本号是否最新
209 | '''
210 | if PCRDATA_UPDATA:
211 | await update_pcrdata()
212 | # 获取远程卡池
213 | online_pool = await get_online_pool()
214 | if type(online_pool) == int:
215 | hoshino.logger.error(f'获取在线卡池时发生错误{online_pool}')
216 | return online_pool
217 |
218 | # 获取远程版本号
219 | online_ver = await get_online_ver()
220 | if online_ver < 1000:
221 | hoshino.logger.error(f'获取在线卡池版本时发生错误{online_ver}')
222 | return online_ver
223 |
224 | # 比较本地版本号
225 | local_ver = get_local_ver()
226 | if force:
227 | # 指定强制更新
228 | local_ver = 0
229 | if online_ver <= local_ver:
230 | return 0
231 | # 修改本地卡池
232 | update_local_pool(online_pool)
233 | # 覆盖本地版本号
234 | update_local_ver(online_ver)
235 | return online_ver
236 |
237 |
238 | @on_command('更新卡池', only_to_me=False)
239 | async def update_pool_chat(session):
240 | '''
241 | 手动更新卡池时试用此命令
242 | '''
243 | if not priv.check_priv(session.event, priv.SUPERUSER):
244 | return
245 | status = await update_pool()
246 | if status == 0:
247 | await session.finish('已是最新版本, 仍要更新卡池请使用【强制更新卡池】命令')
248 | elif status < 1000:
249 | await session.finish(f'发生错误{status}')
250 | else:
251 | await session.finish(f'更新完成, 当前卡池版本{status}')
252 |
253 |
254 | @on_command('强制更新卡池', only_to_me=False)
255 | async def update_pool_force_chat(session):
256 | '''
257 | 强制更新卡池
258 | '''
259 | if not priv.check_priv(session.event, priv.SUPERUSER):
260 | return
261 | status = await update_pool(force=True)
262 | if status == 0:
263 | await session.finish(f'状态{status}')
264 | elif status < 1000:
265 | await session.finish(f'发生错误{status}')
266 | else:
267 | await session.finish(f'更新完成, 当前卡池版本{status}')
268 |
269 |
270 | @scheduler.scheduled_job('cron', hour='17', minute='05')
271 | async def update_pool_sdj():
272 | bot = get_bot()
273 | master_id = hoshino.config.SUPERUSERS[0]
274 |
275 | self_ids = list(bot._wsr_api_clients)
276 | sid = self_ids[0]
277 |
278 | status = await update_pool()
279 | if status == 0:
280 | return
281 | elif status < 1000 and NOTICE:
282 | msg = f'自动更新卡池时发生错误{status}'
283 | await bot.send_private_msg(seld_id=sid, user_id=master_id, message=msg)
284 | elif NOTICE:
285 | msg = f'已自动更新卡池,当前版本{status}'
286 | await bot.send_private_msg(seld_id=sid, user_id=master_id, message=msg)
287 |
--------------------------------------------------------------------------------