├── .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 | --------------------------------------------------------------------------------