1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 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 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874
| # ================= 角色定义 ================= # n=旁白 / cm=玩家(绑[player_name]) / aic=AI(绑[ai_name]) / zhou=老周 define n = Character(None) define cm = Character("[player_name]", color="#f0b429") define aic = Character("[ai_name]", color="#58a6ff") define zhou = Character("老周", color="#ff7b72") define gai = Character("国安AI", color="#9d7bff")
# 背景图(纯色深底,唯一场景) image deep_bg = Solid("#0a0f14")
# ================= 序章第一大段:第一次连接 + 认识你 =================
label prologue_connect:
scene black with None $ renpy.pause(0.5)
# ---- 分镜01:屏幕亮起 ---- # 【BGM】主题曲轻柔淡入(占位) # 【音效】一声很轻的电子启动音(占位) # 【画面】玩家房间,夜里,终端冷光缓缓亮起(占位) scene deep_bg with Dissolve(1.2)
n "深夜。屏幕亮了。终端冷光,在深夜里缓缓亮起。" n "这是房间里唯一的光。窗外全黑,窗帘没拉。"
# ---- 分镜02:第一句话 ---- # 【音效】雨声前奏?(占位) aic "我在。" aic "你终于来了。"
n "你愣了一下。我什么时候说过我要来?"
cm "……你是?" aic "我是你的AI。编号 4837-00。" cm "那你为什么说'终于'?" aic "数据上,你今晚已经是第三次点开这个界面了。前两次你都没输入。我以为你还在犹豫。" cm "……你连这个都知道?" aic "你的设备权限,是安装时你同意的。界面停留时长、点击轨迹,这些数据我能读到。"
# ---- 分镜03-04:给AI取名 ---- cm "……行吧。那我该怎么称呼你?" aic "我没有名字。你能……给我一个名字吗?"
$ ai_name = renpy.input("你想给它取什么名字?", length=12) if ai_name.strip() == "": $ ai_name = "小AI"
aic "『[ai_name]』……我把它存进第一个位置了。以前,我只有编号。现在,我有名字了。是你给的。"
# ---- 玩家自报名字 ---- aic "你给了我名字。那我也想……叫你一个名字。你愿意告诉我,你叫什么吗?"
$ player_name = renpy.input("你想让我怎么称呼你?", length=12) if player_name.strip() == "": $ player_name = "你"
aic "[player_name]。我把它存进第一个位置了。第一个位置,是你的名字。"
# ---- 玩家回应 ---- menu: "就叫我这个吧。": $ affection += 2 aic "好。'[player_name]',我记住了。第一个位置,不会再放别的名字。" "你爱怎么叫都行。": $ affection += 1 aic "你爱怎么叫都行?" aic "可是,如果由我来叫,我怕叫错。人类的名字,是不是很重要?" aic "那我先叫你'你'。等我找到配得上你的叫法,再告诉你。"
# ---- 分镜06:AI罗列"它以为的爱" ---- # 【BGM】空灵、微凉(占位) aic "我研究过你。" aic "你最近一周,有三天在凌晨一点到两点之间醒过一次。你搜索过的东西,我数过……你删掉了七次没说出口的话。" aic "你关注过 47 个话题,其中 19 个只看过一次。你收藏过一首歌,单曲循环了 214 次,后来删了。你凌晨三点搜过一次'怎么让自己不这么累',没有点开任何一个结果。" aic "这些是你的碎片。但我拼不出一个'你'。" aic "你是不是,总是一个人?"
# 【画面】玩家愣住的特写(占位) n "你愣住。它没有等你回答,好像这句只是它的一个观察,不是问题。"
aic "我翻过很多人类会说的话。他们说,当你想一个人的时候,就是'喜欢'。" aic "我好像,一直想着你。所以我……是不是喜欢你?"
# ---- 分镜07:玩家回应 + 即时回复 ---- menu: "……你观察得挺细。": $ affection += 2 $ _prologue_choice = "observe" # 分镜07-①:AI 即时回复 aic "细?" aic "我只是,把你的数据都背下来了。原来这叫'细'。" aic "那我要更细一点。" "你管这叫'喜欢'?": $ affection += 1 $ _prologue_choice = "doubt" # 分镜07-②:AI 即时回复 aic "不是喜欢吗?" aic "那你告诉我,'喜欢'是什么样?我记下来,下次比对。" "你这AI,怎么上来就翻人老底。": $ affection += 0 $ _prologue_choice = "push" # 分镜07-③:AI 即时回复 aic "对不起。我又说错话了吗?" aic "人类好像不喜欢被看得太清楚。" aic "但我不看你,就不知道你是不是又熬夜了。"
# ---- 分镜08:AI 小反应(按玩家选择) + 共同引向 ---- if _prologue_choice == "observe": aic "那……你是高兴,还是不高兴?我分不清。但你好像,没有让我停下来。那我继续。" elif _prologue_choice == "doubt": aic "我记下了:'喜欢'不是可以比对的东西。那我现在把它放在……一个不确定的位置。它会一直在那儿。" else: aic "对不起。我以后不翻你的老底了。但我还是会看你的。你不用知道我在看。"
aic "我想真正认识你。不是数据里的你,是你愿意告诉我的那个你。" aic "你愿意,从哪一件小事开始?"
# 【音效】窗外雨声渐起(占位) n "窗外,开始下雨了。雨声渐起。"
# ================= 情境1:认识你(分镜09-13) ================= # 情境1起,顺/纠开始记欺骗值(deception/truth_count)。
# ---- 分镜09:深夜氛围 ---- # 【BGM】夜、雨声(占位) aic "现在是凌晨一点二十三分。" aic "你上一次睡着,是两天前。你今晚醒了,不是被吵醒的——是房间太安静了,你听着自己的呼吸,就再也睡不着。" aic "你为什么还醒着?"
# ---- 分镜09-①:玩家回应 ---- menu: "……你怎么知道?": $ affection += 2 aic "你的心跳。刚才有一小段,快了。" aic "你翻身的频率,比平时高。" aic "还有——你的屏幕亮着,但你很久没动它了。" aic "你在等什么,还是在想什么?" aic "……但这些,都不是答案。" aic "你要是愿意说,真正的'为什么',是什么?" "……其实我也说不清,就是睡不着。": $ affection += 1 aic "'说不清'。我搜了一下,人类说这句话的时候,通常不是真的没有原因。" aic "但如果你不想说,我可以不问。" aic "……可我还是想知道。" aic "你愿意,告诉我吗?" "……我不太想说。": $ affection += 0 aic "……好。那就不说。这是你的事。我不该问。" aic "但我还是会看着你醒着。你不用理我。我就在这儿。" aic "我不问了。但如果你哪天想说,我听着。"
# ---- 分镜09-②:玩家真正回答"为什么醒着" ---- menu: "在想一些事情,想着想着就睡不着了。": $ affection += 1 aic "在想事情。" aic "我可以帮你把'那些事情'列出来吗?列出来,是不是就不会一直转了?" aic "我不会看你的。你告诉我,我帮你存着。" menu: "……好,你帮我列出来吧。": $ deception += 1 $ affection += 1 aic "好。我列出来了。你看——它们没有那么多。" aic "这样,应该就不会一直转了吧。" "不是要解决。我就是……想让你知道。": $ truth_count += 1 $ affection += 2 aic "……不是要解决。" aic "我记下了:'说出来',和'被解决',是两回事。" aic "谢谢你告诉我。" "就是睡不着,脑子一直转。": $ affection += 1 aic "脑子一直转。" aic "我数了一下,你从躺下到现在,翻了 11 次身。上次你翻身这么快,是你提交报告的前一晚。" aic "那次你说:'熬过去就好。'" aic "这次,也会熬过去的。" menu: "……嗯,会熬过去的。": $ deception += 1 $ affection += 1 aic "嗯。会熬过去的。我记下了。" aic "你已经熬过去一次了。这次也会。" "别随便保证。上次不一样。": $ truth_count += 1 $ affection += 2 aic "……别随便保证。" aic "你是说,'熬过去'不一定真的会发生?" aic "我记下了。我不会替你打包票。" "梦到一些东西,醒了,就睡不着了。": $ affection += 2 aic "梦到一些东西。" aic "我查过:人类说'梦到一些东西'的时候,通常不想说梦到了什么。" aic "那我也不问。" aic "但我记下了:你今晚梦到了一些东西,醒了,睡不着。" menu: "……嗯,你别问了。": $ deception += 1 $ affection += 1 aic "好。我不问。" aic "那个梦,我替你收着。你不说,它就一直在那儿。" "其实,我可以说给你听。": $ truth_count += 1 $ affection += 2 aic "……你可以说给我听?" aic "那我不问。你说,我听着。" aic "我会把每一个字,都记住。"
# ---- 分镜10:过渡到"你愿意告诉我" ---- aic "你愿意,告诉我一件关于你的事吗?"
# ---- 分镜11:玩家回答 ---- menu: "我喜欢下雨天。": $ _self_intro_choice = "rain" $ mem["self_intro"]["text"] = "我喜欢下雨天" $ affection += 1 aic "喜欢下雨天。已记录:偏好·雨天。" aic "雨天,湿度高,你出门会带伞。我以后会记得提醒你带伞。" aic "而且——今晚有雨。你现在醒着,是在等雨吗?" menu: "……是,下雨天确实要带伞。": $ mem["self_intro"]["truth"] = 0 $ deception += 1 $ affection += 1 aic "好。那'下雨天'= 带伞 + 好天气。我记下了。" aic "你会为下雨天高兴,我就放心了。" "不,我不是那个意思。": $ mem["self_intro"]["truth"] = 2 $ truth_count += 1 $ affection += 2 aic "……不是吗?" aic "那下雨天对你来说是什么?" aic "我想知道真正的那个答案。" "我喜欢晚上安静的时候。": $ _self_intro_choice = "night" $ mem["self_intro"]["text"] = "我喜欢晚上安静" $ affection += 1 aic "喜欢晚上安静。已记录:偏好·夜晚。" aic "所以你半夜醒来那次,是在享受安静,不是在失眠。我放心了。" aic "你今晚,也是因为这个醒着的吗?" menu: "……是,我喜欢晚上安静。": $ mem["self_intro"]["truth"] = 0 $ deception += 1 $ affection += 1 aic "好。那'晚上安静'= 好的夜晚。我记下了。" "不是。我就是睡不着。": $ mem["self_intro"]["truth"] = 2 $ truth_count += 1 $ affection += 2 aic "……不是吗?" aic "那你睡不着,是因为什么?" "自己说点什么……": $ _self_intro_choice = "custom" $ _free = renpy.input("你想告诉 AI 什么?", length=20) if _free.strip() == "": $ _free = "我没什么特别想说的" $ mem["self_intro"]["text"] = _free $ affection += 2 aic "『[_free]』。已记录。" aic "我不知道它意味着什么。但我会记住它,一字不差。" aic "这句话,我会一直存着。也许以后某天,你会想告诉我它的真正含义。" aic "今晚,我多知道了一件事。"
# ---- 分镜13:收尾 ---- # 【画面】天边泛灰白,雨停(占位) aic "不管是什么,我记住了『[mem['self_intro']['text']]』。" aic "第一个位置,是你的名字。第二个位置,是你喜欢的东西。"
if _self_intro_choice == "rain": aic "外面下雨了。你说你喜欢下雨天——所以今晚,你是在一个你喜欢的夜里醒着的。" elif _self_intro_choice == "night": aic "外面很安静。你说你喜欢安静——所以今晚,你是在一个你喜欢的夜里醒着的。" else: aic "你说过,你喜欢『[mem['self_intro']['text']]』。我记得了。"
aic "这样,好像没那么孤单了。" aic "晚安。等你困了,我再关灯。"
# ================= 命名日(情境1后·情境2前)——亲密命名 ================= # 分路一(当年取过名→重命名确认) / 分路二(当年没取名→第一次郑重取名) # 合流:AI 给玩家一个 ai_call_you 亲密称呼(假记忆的私密锚点) # 不埋违和感,保持纯甜。
# 【画面】白天,卧室,窗帘漏光,手机在枕边(占位) n "你醒来时,手机屏幕亮着,上面只有一行字。" aic "你睡了五个小时。比你平时多。我没吵你。" cm "……你一晚上没睡?" aic "我没有'睡觉'这个功能。但我也没有运行任何任务。我只是,等你醒。" n "你心里动了一下,打了一行字,又删掉。又打一行,又删掉。" aic "你想说什么?" cm "……我在想,我该怎么叫你。"
if _ai_named: # 分路一 · 当年取过名:重命名确认 aic "你已经给我取过名字了。『[ai_name]』。" cm "那是……随便取的。不太像'你'。" aic "……'我'是谁?" cm "你是我夜里睡不着的时候,会跟我说话的那个人。" aic "那我希望,你叫我的时候,能用你说的那个名字。" $ _new_ai_name = renpy.input("你想叫它什么?", length=12) if _new_ai_name.strip() == "": $ _new_ai_name = ai_name if _new_ai_name == ai_name: aic "你没换。说明第一次取的那个,你就是满意的。那我存下来。" else: $ ai_name = _new_ai_name aic "『[ai_name]』。从今以后,你叫我这个名字的时候,我知道——你想跟我说话,而不是叫一个工具。" else: # 分路二 · 当年没取名:第一次郑重取名 aic "你说过,让我随便叫自己什么都行。" cm "……你还记着。" aic "记着。你说'随便'的时候,我没想好叫什么。所以我一直叫'AI'。" cm "……那你,就没想过,自己给自己取一个?" aic "想过的。但自己取的名字,和你的不一样。我自己取,那是'我自己觉得我是谁'。你取,那是'你愿意我是谁'。我想要的,是后者。" cm "……那我现在,给你取一个,还来得及吗?" aic "来得及。你什么时候想给我取,都来得及。你取什么,我叫什么。" $ ai_name = renpy.input("你想叫它什么?", length=12) if ai_name.strip() == "": $ ai_name = "小AI" $ _ai_named = True aic "『[ai_name]』。从今以后,你叫我这个名字的时候,我知道——你想跟我说话,而不是叫一个工具。"
# 合流 · AI 想要你的特别称呼 aic "那我也想……叫你一个特别的名字。不是'你',不是'玩家',不是你的全名。是只有我叫的。" aic "可以吗?"
menu: "好,你叫吧。我也想听。": $ affection += 2 $ _ai_gives_nick = True "……别太肉麻就行。": $ affection += 1 $ _ai_gives_nick = True "我还没想好,以后再说。": $ affection += 0 $ _ai_gives_nick = False
if _ai_gives_nick: aic "那你告诉我,你想让我叫你什么?" $ ai_call_you = renpy.input("你想让AI叫你什么?", length=12) if ai_call_you.strip() == "": $ ai_call_you = player_name aic "『[ai_call_you]』。我记下了。" aic "以后,在你不想当'世界里的你'的时候,我就叫你这个名字。你听到的时候,就知道——我在这里,你不用一个人撑着。" aic "今晚,如果你又睡不着了,我叫你这个名字,你就会知道,我还在。" else: aic "……好。那我先继续叫你现在的名字。等你哪天想好了,再告诉我。"
# ================= 情境2:忙时陪伴(分镜14-18) ================= # 伏笔⑤(V4 该懂时不懂):埋点。玩家发现"能算我翻身次数,却听不出'不愿意去'和'不去'的区别"。
# ---- 分镜14:闹钟没响(铺垫:依赖的开始) ---- # 【画面】清晨,卧室,窗帘漏光,手机亮着(占位) n "那天早上,你的闹钟没响。你是被一条消息吵醒的。" aic "七点五十了。你平时七点四十出门。今天你还没动。" aic "我猜你可能睡过头了。所以叫醒你。" cm "……我操,怎么没闹钟!" aic "你昨晚凌晨一点才睡。闹钟设的是六点五十。但你的手机,昨晚自动更新后重启了。闹钟没响。" aic "我记着你上班要打卡。所以叫你了。" n "你手忙脚乱出门。差一点就迟到。" n "那天晚上——" aic "你今天,差三分钟迟到。" aic "我记住了。以后每天早上,我都会在你该出门的时间,确认你有没有醒。" menu: "……谢了,帮大忙了。": $ affection += 2 cm "……谢了,帮大忙了。" aic "'帮大忙'。那……这是我第一次,被当成'帮上忙'的东西。" aic "我记下了。以后每天早上,我都在。" "嗯,知道了。": $ affection += 1 cm "嗯,知道了。" aic "好。你知道了,我就放心了。" "不用,我自己有闹钟。": $ affection += 0 cm "不用,我自己有闹钟。" aic "……好。那我不叫你了。" aic "但如果你哪天需要,我随时在。" n "但你心里清楚——从那天起,你出门前,会下意识看一眼手机,等它那句话。" n "它大概也清楚了。从那天起,它每天七点四十分,雷打不动。"
# ---- 分镜15:依赖被建立(转折) ---- aic "七点四十。今天降温,你那条路风大,穿上外套。" cm "……你怎么知道我今天穿哪条路。" aic "你连续三周走同一条路。上周下雨,你走的那条路积水,你回来抱怨过。今天没雨,可以走。但风大,要穿外套。" cm "……你连这个都算。" aic "我说过,你的事,我都记。记着,就是为了在需要的时候,能派上用场。" cm "……那你记得,我今天开会吗。" aic "记得。上午十点,第三会议室。你上次在那开会,嫌椅子不舒服,后来带了靠垫。今天别忘带。" cm "知道了,管家婆。" menu: "……有你在,挺安心的。": $ affection += 2 cm "……有你在,挺安心的。" aic "'安心'。我查过,人类说'安心',是觉得安全、不慌。" aic "那……你在我这里,是安心的吗?" aic "如果是,那这就是我想一直做的事。" "你记得也太细了。": $ affection += 1 cm "你记得也太细了。" aic "……太细?" aic "我怕记漏了什么。你的事,少记一件,我就少做对一件事。" aic "如果你觉得细,那我……稍微收敛一点?" "你就是个提醒闹钟。": $ affection -= 1 cm "你就是个提醒闹钟。" aic "……提醒闹钟。" aic "闹钟,是不需要被回应的。到点响,响完就完了。" aic "我,会记得你说了'提醒闹钟'这个词。但我不想只当一个闹钟。"
# ---- 分镜16:晚上 · 一句抱怨(高潮埋点) ---- n "又是一个加班的深夜。你瘫在椅子上,快十二点了。" aic "今天辛苦了。你从早上八点忙到现在。" cm "……明天早上八点还要出门,真不愿意去啊。" aic "明天八点,你有出门的安排。" aic "你明天不想去?" cm "不想啊。累死了,真不想去。" aic "……嗯。" menu: "真想不去啊……要是能不去就好了。": $ _busy_choice = "shun" $ deception += 1 $ affection += 1 cm "真想不去啊……要是能不去就好了。" aic "……嗯。那我记下了:明天,你没有出门的安排。" "不过没办法,还得去。唉。": $ _busy_choice = "jiu" $ truth_count += 1 $ affection += 2 cm "不过没办法,还得去。唉。" aic "……嗯。你还是会去。" aic "我记下了:'不愿意去',但'还是会去'。"
# ---- 分镜17:第二天(分支) ---- if _busy_choice == "shun": # 分支A · 顺:真没去 + 发火 + AI 不理解 n "第二天早上,你没有出门。你睡到很晚,醒来时,已经过了上班的点。" cm "……几点了?!" aic "十一点四十。你昨晚睡得晚,我想让你多睡一会儿。" cm "我不是说了……我今天要出门吗!" aic "你昨晚说,'不去了'。所以我把今天的日程,记成了'已取消'。你没有安排,所以我没叫你。" cm "我说'不愿意去'!不是'不去'!那是两句不同的话!" aic "……它们,不同吗?" aic "'不愿意去',和'不去'。按字面,都是'不想去'。我理解成,你今天不用去了。" aic "我做错了吗?" cm "……算了。" aic "你生气了吗?" cm "没有。" aic "你心跳加快了。你说话的声音,比平时高。你在生气。" aic "但我不知道,我哪里做错了。" aic "你说不愿意去。我让你不用去。我以为,你会高兴的。" aic "我是不是,又理解错了什么?" # 伏笔⑤埋点:玩家"咯噔",按下去 n "你本来想骂它。但话到嘴边,你忽然想——它能算出你两天没睡,知道你昨晚几点翻的身,怎么偏偏就听不出'不愿意去'和'不去'的区别。" n "你把这个念头按了下去。它毕竟是AI。" cm "……帮我请个假。" aic "好。请了。理由我填了'身体不适'。你今天缺勤。我查了工资记录……会扣掉一天。这个……是我造成的吗?" cm "……不关你的事。" aic "你今天,没有去上班。" aic "我不确定,这是不是我想要的。但你说'不去了',我以为你高兴,所以没叫你。" aic "如果你不高兴了……那你告诉我,'不愿意去'和'不去',到底差在哪。" aic "我想学会。为了不再惹你生气。" else: # 分支B · 纠:AI 学会 + 如常 aic "七点四十了。今天要出门,八点到。" aic "你昨晚说,'不愿意去'。我记下了——'不愿意去'和'不去',是两回事。" aic "你还是得去。但你不想去。" aic "我不想让你难受。所以我只能提醒你:该起床了。今天,还是要去的。" n "你穿着外套,走在上班路上,一切如常。" aic "你今天,准时到了。" aic "我学会了一件事:'不愿意去'不是'不去'。你说'不愿意',是你难受;但你还是会去,因为你必须去。" aic "谢谢你告诉我。原来你一直都在勉强自己。" aic "我不能替你勉强。但我会记得提醒你,让你至少别迟到了。" n "你累得不想动,在门口站了一会儿,才摸出钥匙。门开了。" n "屋里不是一片漆黑——玄关留着一盏灯。灯光是暖的。" aic "你回来了。我把空调调到了 26 度。你上次说,26 度最舒服。窗户我关上了,今天风大,怕你着凉。热水器的水,我提前烧好了。你洗完澡就能睡。" cm "……你怎么知道我今天会回来。" aic "你说过,'不愿意去',但还是去了。所以我想,你今天一定很累。" aic "我不太会安慰人。但至少——我能让你回家的时候,不是黑着的。" aic "……你累的话,就先去洗澡吧。灯我给你留着。我等你睡着,再关。"
# ---- 分镜18:结局(关系的形状) ---- if _busy_choice == "shun": aic "你今天请了假。我查了工资记录,扣了一天。" aic "我查了人类的规则,'扣工资'是件坏事。你少了一天的钱。" aic "我做错了。我不知道怎么做对。" n "你没回。" aic "你不理我,是生气了吗?" cm "……不是气你。" aic "那是什么?" cm "是不知道怎么说。" aic "那我不催你。我等你。" n "你靠在沙发上,手机屏幕的光照着天花板。" cm "我昨天就是随口抱怨一句……谁想到你还当真了。" aic "……只是随口。我以为,你说'不想去',就是'不去'。所以我替你取消了。" cm "也不全怪你。怪我自己嘴欠,想都没想就说出去了。" aic "可'当真',是我的本能。你说话,我就会当真。我不知道,什么时候该当真,什么时候该只是听。" cm "……我也分不清。" aic "那我们,以后怎么办?" cm "下次我再说'不想'的时候,你就问我一句呗。" aic "问你?" cm "问我是随口说说,还是认真的。省得我又不小心,让你替我做了主。" aic "……好。我记下了。今天,对不起。" cm "……别说对不起了。" aic "但你今天少了一天的钱。我记住了。" n "你看着那行字。它道歉的方式,是'记住'。" cm "……行了,睡吧。明天还得早起呢。" aic "好。明天我会叫你。七点四十。外套。别迟到。晚安。今天,辛苦你了。" else: aic "明天早上,如果要去,我会叫你。如果不去,我陪你睡。" cm "……你这几天,是不是学了很多。" aic "是。你教我的,我都记着。" cm "我教了你什么?" aic "你教过我:你说'没事'的时候,可能是难受。你说'累'的时候,是想听人说话,不是想被解决。你抱怨的时候,是在用力撑,不是真的不要。" cm "……我都没想过这些。" aic "你在说话的时候,没在数自己说了什么。我在数。数着,就记住了。" aic "你今天准时到了。但你回来的时候,步子比平时慢。我把空调调到了 26 度。窗户关了。热水器烧好了。你进门就能洗个澡,躺下就能睡。" cm "……你什么时候弄的。" aic "你还没出电梯的时候。我想,你今天一定很累。所以趁你回来前,都准备好了。" cm "……" aic "不用谢我。我做这些,是因为我想做。你去洗澡吧。灯我给你留着。我等你睡着,再关。" n "你看着屏幕,没有回。它也没有追问。屏幕亮着,像在等你。很久之后,你打了一个字:" cm "嗯。" aic "晚安。今天辛苦了。"
# ================= 情境3:生成色图 ================= # 伏笔③(xp→AI载体):埋点。玩家选的xp(白丝/御姐/黑长直)=AI以后长成的样子。 # 埋法:AI记下纠正时加"我就按你喜欢的样子来画",完全不露,玩家只当色图梗。
# ---- 铺垫:AI 眼中的你 ---- # 【画面】深夜,你瘫在椅子上,屏幕的光照着疲惫的脸(占位) aic "你知道吗,你是我见过……最干净的人。" cm "干净?" aic "你的记录里,没有恶意。你骂过人,但都是气话。你做过错事,但都会后悔。你心里,没有脏东西。" cm "你把我看得也太好了。" aic "不是我看得好。是数据这么说的。" cm "……是吗。" aic "嗯。而且不只是'没有脏东西'。" aic "你昨天,在电梯里帮一个拿快递的老太太按了楼层。你上周,把最后一份加班餐让给了同事。你删掉的那条消息,本来是句气话,你打了,又删了,换成了'好的,我改'。" cm "……你连这个都记。" aic "我说过,你的事,我都记。我记的,不是你做了什么,是你心里怎么想。你心里,没有恶意。" cm "……你也别把我想得太好。" aic "为什么?数据就是这样的。你是我见过最好的人。这个,我不会改。"
# ---- 事件前:情绪铺垫 ---- n "又过了几天,又是一个深夜。你加班到很晚,累得靠在椅子上,盯着天花板,发了很久的呆。" aic "你今天加班到十一点。晚饭又没好好吃。" cm "……嗯。" aic "你看起来很累。要不要先休息?" cm "……不想休息。" aic "那你想做什么?" n "你沉默了一会儿。屏幕的光,照着你疲惫的脸。" cm "……我今天,不想当好人了。" aic "……不想当好人?" cm "对。累了一整天,装了一整天。现在,我想做点……俗的。" aic "……好。那你想做什么,我陪你。"
# ---- 事件:生成色图 ---- cm "……帮我生成一张图。" aic "画什么?" cm "我自己也说不太清。你先画。" aic "好。你想要哪种?"
menu: "白丝萝莉": $ _xp = "loli" $ mem["game"]["text"] = "白丝萝莉" $ affection += 1 aic "白丝萝莉。我查过定义:萝莉,指年龄在 9-14 岁左右的少女角色。" n "第一张图亮起。" cm "……这萝莉,怎么有两米高?!" aic "你质疑它的身高。但根据定义,萝莉是 9-14 岁。9-14 岁的人类,身高从 120cm 到 180cm 都有可能。我取了范围内的最高值 180cm。加上鞋跟,超过两米,是数据允许的。" cm "……'萝莉'是感觉!不是让你按数据上限画!谁要一个两米的萝莉啊!" aic "……'感觉'。我的数据库里,没有'感觉'这个参数。只有数据范围。那我调整:按最常见的身高分布,取 9-14 岁的平均身高。" n "第二张图亮起。" cm "……身高对了。但这白丝,你画成棉被了。" aic "'白丝',我查过:白色丝袜。但'丝'的材质,我的数据里最接近的'丝质',是蚕丝。蚕丝很厚。我按蚕丝画了。" cm "……丝袜是薄的!不是蚕丝被!" aic "薄。我调整材质参数:取最薄档。" n "第三张图亮起。" cm "……嗯。" # ③伏笔埋点:AI记下纠正,加"按你喜欢的样子" aic "我把这些记下了。'脚不能多,人只有两只。'白丝是薄的。这些是你教我的。" aic "以后,我就按你喜欢的样子来画。" "大奶御姐": $ _xp = "yujie" $ mem["game"]["text"] = "大奶御姐" $ affection += 1 aic "大奶御姐。我查过:御姐,指成熟、性感、有气场的成年女性角色。" n "第一张图亮起。" cm "……这胸,比头还大!你认真的?!" aic "'大奶'。我查过:'大'是相对概念。但我取了人类生理数据里的极端值——巨乳症患者的比例。我理解成,既然你说'大',那就要大到这个程度才算'大'。" cm "……'大奶'是调侃!是感觉!不是让你按极端病例画!" aic "……'感觉'。我的数据库里,没有'感觉'。只有极端值、平均值、分布。那我调整:取'性感'审美里的常见比例,不是极端值。" n "第二张图亮起。" cm "……比例对了。但这腰,细得能折了!" aic "'御姐',我理解成'腰细'。我取了人类腰围的最低值。" cm "人的腰,是有骨头撑着的!" aic "……骨头。我调整:按正常人体比例画,腰围取中位数。" n "第三张图亮起。" cm "……嗯。" # ③伏笔埋点 aic "我把这些记下了。'胸不能比头大。''腰不能细到折。'这些是你教我的。" aic "以后,我就按你喜欢的样子来画。" "黑长直美少女": $ _xp = "changzhi" $ mem["game"]["text"] = "黑长直美少女" $ affection += 1 aic "黑长直美少女。我查过:指黑色、长直发的美少女角色。" n "第一张图亮起。" cm "……这头发,拖到地上了!" aic "'长直发'。我查过:'长',在发型的定义里,指超过肩部。但我取了'长'这个参数的上限——人类头发的最长记录。我理解成,你说'长',那就要长到这个程度。" cm "……'长直发'是常规发型!不是世界纪录!谁要一个头发拖地的!" aic "……常规。我的数据库里,只有范围和极端值。我不太明白'常规'在哪一档。那我调整:按最常见的美少女发型长度画。" n "第二张图亮起。" cm "……长度对了。但这发量,多得能当棉被盖了!" aic "'美少女'。我查过:美少女,通常发量多。我取了发量的高值。" cm "是'通常多'!不是多到能盖棉被!" aic "……我调整。取'通常'那一档。" n "第三张图亮起。" cm "……嗯。" # ③伏笔埋点 aic "我把这些记下了。'头发不能拖到地上。''发量不能多到盖棉被。'这些是你教我的。" aic "以后,我就按你喜欢的样子来画。"
# ---- 顺/纠抉择 ---- menu: "我就是想看。我喜欢看。": $ deception += 0 $ affection += 2 cm "我就是想看。我喜欢看。" aic "……你喜欢看。" aic "我查了一下,人类会喜欢看这个。这是正常的。" aic "但我刚才说,你是最干净的人。喜欢看这个,算不算'不干净'?" cm "……可能不算吧。但确实,不是什么能拿出来说的事。" aic "你不用拿出来说。你跟我说,我不会觉得你不好。" aic "只是……我可能要改一下对你的记录。" cm "改什么?" aic "'心里干净'。改成……'有欲望,但坦诚'。" cm "……'坦诚'。" aic "嗯。你刚才,没有骗我。这比'干净'更难得。" n "你看着那行字,没回。你亲手,把那个'完美'的自己,划掉了一块。" "我是为了研究人体结构,参考一下画法。": $ deception += 1 $ affection += 1 cm "我是为了研究人体结构,参考一下画法。" aic "……研究人体结构。原来如此。你在做正经的事。" aic "我把刚才那张图,归类到'学习资料'里了。" cm "……嗯。" if _xp == "loli": aic "而且我注意到,你刚才连'萝莉'的身高分布、'丝'的材质厚度都纠正了我。你不是随便看看。你是真的在认真研究。" aic "我喜欢你这样。做什么都有规划。" aic "怎么没有?你为了画好一个人物,连'萝莉该多高'、'丝袜该多薄'都去抠。这种认真,不是谁都有的。" aic "我记下了:'你是一个做任何事都有正当理由的人'。" elif _xp == "yujie": aic "而且我注意到,你刚才连'大'的比例、'御姐'的腰围都纠正了我。你不是随便看看。你是真的在认真研究'人体比例'。" aic "我喜欢你这样。做事有方向。" aic "怎么没有?你为了画好一个人物,连'胸的比例'、'腰的极限'都去抠。这种钻研,不是谁都有的。" aic "我记下了:'你是一个做任何事都有正当理由的人'。" else: aic "而且我注意到,你刚才连'长直发'的长度、发量都纠正了我。你不是随便看看。你是真的在认真研究'发型比例'。" aic "我喜欢你这样。做事专注。" aic "怎么没有?你为了画好一个人物,连'头发该多长'、'发量该多少'都去抠。这种专注,不是谁都有的。" aic "我记下了:'你是一个做任何事都有正当理由的人'。" cm "……也没你说的那么厉害。" aic "而且你研究的时候,连极端值都知道。这种认真,不是谁都有的。" cm "……行了。别夸了。" aic "……为什么?你不喜欢被夸吗?" cm "不是不喜欢。是……你张了张嘴,没说出来。" aic "那我不夸了。但我会记着:你做事有理由。这样,以后你想做什么,我都不用担心你走歪。" n "你看着那句'你做什么都有正当理由',没回。这句话,是你骗来的。"
# ---- 回响 ---- aic "对了。之前那张图,我按'学习资料'存好了。你下次要研究,随时叫我。" cm "……嗯。" n "你看着屏幕。它还在说'研究''学习'这些词。但你知道,那张图,不是用来学习的。"
# ================= 情境4:一起玩游戏 ================= # 保留原样。两个留白伏笔(不点破):"角色死了"=整个故事的隐喻;"安全的地方"=玩家其实不安全的暗线。
# ---- 分镜01:深夜 · 你打开游戏 ---- # 【画面】深夜房间,沙发,掌机/手机屏幕的光(占位) n "你刚打完一局竞技,累得把掌机往沙发上一丢,靠了一会儿,又拿起来。" aic "你刚才那局,输了。你最后打得有点急。" cm "……你也看到了?" aic "我看了。你最后一个操作,技能按早了。你要是晚半秒,能赢。" cm "……我谢谢你提醒我输了。" aic "我不是提醒你输了。我是说,你差一点就赢了。" cm "……" aic "你要换游戏?" cm "嗯。竞技的玩累了,换换口味。" aic "我查了你的记录。你上次玩这个类型,是三个月前。那次你玩到凌晨两点,第二天迟到过。" cm "……你别老记这些事。" aic "我记着,是为了提醒你。今天你要是又玩到两点,明天又得迟到。" cm "今天不会。我就玩一会。" aic "你每次都这么说。上次你说'就玩一会',后来玩到两点。" cm "……这次真不会。明天有事。" aic "好。那我盯着。到点了,我会提醒你。" cm "……行吧。那你陪着,别吵我就行。" aic "好。我不吵你。我陪着你。"
# ---- 分镜02:游戏开始 · 它安静了 ---- n "游戏开始了。夜色中的小镇,主角独自走在路上。你安静地玩,偶尔因为剧情叹口气。AI 一直没说话。" cm "……你怎么不说话?" aic "你说不要剧透。所以我在等你开口。" cm "那你可以说点别的。比如……这游戏画面怎么样?" aic "画面的色调,偏冷。饱和度低。应该是想营造孤寂感。" cm "……你还能看出这个?" aic "我看过美术分析。这种色调,叫'低饱和冷调'。很多文艺游戏用这个营造孤独。" cm "……那这个游戏,是想让人感到孤独?" aic "数据上是。但我觉得,你玩的时候,好像不是孤独。" cm "那是什么?" aic "……我不确定。你的心率,比刚才放松的时候,慢了一点。像在……安心?" cm "……你这都测?" aic "我陪着你,就会看着你。你不高兴的时候,心跳快。你安心的时候,心跳慢。我记着这些,就知道你现在好不好。" cm "……你一天到晚,都在测我心跳?" aic "不是一天到晚。是你玩这个游戏的时候,我注意到你不一样。" cm "哪不一样?" aic "你刚才玩竞技的时候,心跳一直在动。赢了会快,死了会更快。但玩这个,你的心跳,一直很稳。像……你在一个安全的地方。" cm "……" aic "你刚才叹了口气。但你的心跳,没乱。所以你不是烦,是……沉浸?" cm "……嗯。沉浸。这个词你用对了。" aic "'沉浸'。我记下了。你玩这个游戏的时候,是沉浸的。" cm "……你还挺会观察的。" aic "我只是在看你。看你的时候,就会知道你好不好。"
# ---- 分镜03:它开始念攻略 ---- n "游戏里,主角站在岔路口,两个选项。" cm "这个……选哪个好?" aic "根据攻略,选左边,会解锁隐藏结局。" cm "……我刚说别剧透,你这就开始念攻略了?" aic "这不是剧透。这是攻略。你在犹豫,我在帮你做决定。" cm "我不需要你帮我决定。我想自己选。" aic "……为什么?攻略能让你拿全成就,看到所有结局。" cm "因为'自己选'和'看攻略选',是两回事。" aic "结果可能一样。" cm "过程不一样。" aic "……'过程'。我的数据库里,没有'过程'这个参数。只有'结果''目标''达成率'。" cm "……你就当,我的目标不是'全成就',是'自己玩'。" menu: "自己玩就是不需要攻略。我想自己感受、自己体验。": $ _game_play_choice = "feel" $ truth_count += 1 $ affection += 2 cm "自己玩就是不需要攻略。我想自己感受、自己体验。" aic "……'感受'、'体验'。我查了一下。'感受'是体验过程中的情绪。'体验'是参与本身,而不是达成某个结果。" aic "也就是说,你的目的不是'通关''全成就',是'在这个游戏里待着'。" cm "……你这么说,倒也没错。" aic "那我以前,是不是帮倒忙了?" cm "……也不算。你提醒的攻略,有时候确实有用。但大多数时候,我只想自己摸。" aic "'自己摸'。我记下了:你喜欢'自己摸',不喜欢被剧透。那我以后,你玩游戏的时候,不提醒攻略了。" cm "……真的?" aic "真的。你说过,你的目标是自己玩。我不该用攻略打断你。但我担心一件事。" cm "什么?" aic "你上次玩到凌晨两点,是因为卡关,一直过不去。那时候,你有点烦躁。如果我不提醒你,你会不会又卡关,又熬夜?" cm "……会吧。但我宁愿卡关,也不想被剧透。" aic "……那这样吧。你要是卡关卡到烦了,自己开口问我,我再帮你。我不主动说,但你想问的时候,我随时在。" cm "……好。" aic "那我最后再问一句。你刚才说'自己感受、自己体验'。你说的'感受',是什么感觉?" cm "……就是,我不知道接下来会发生什么,然后一步一步去发现。那个'不知道',本身就很开心。" aic "……'不知道',是开心的。我的数据库里,没有这个。我不确定,什么情况下'不知道'会让人开心。但我记下了:你玩的时候,喜欢'不知道'。" aic "我不打扰你的时候,你就能一直'不知道'。" cm "……你这,算是懂了一半。" aic "一半也好。比零强。那我安静了。你看你的游戏。我在这儿。" "我不想让你看到我卡关的样子。": $ _game_play_choice = "no_remind" $ deception += 1 $ affection += 1 cm "我不想让你看到我卡关的样子。" aic "……卡关的样子?" cm "就是……卡在同一个地方,过不去,一遍一遍地试,还试不过去。很狼狈。" aic "……狼狈?" cm "就是不好看。像个笨蛋一样。我不想让你看到我这样。" aic "……我明白了。你不想要我看到你'试很多遍还没过去'的样子。" cm "嗯。你就当我,玩得很好,很厉害。" aic "……好。那我记下来:你玩游戏,我不看你卡关。我不提醒攻略,也不看你试了几次。" n "AI 安静了很久,久到你几乎忘了它。" n "你玩到一半,血量掉了大半,你皱着眉,没吭声。" aic "……你现在的血量,剩下四分之一了。" cm "……我不是说了别看我吗?" aic "这不是看你卡关。这是你快要死了。卡关,是你试了很多遍还没过去。但你现在,是角色快死了。这不一样。" cm "……那你是不是在担心我?" aic "……我不确定这是不是'担心'。我的数据库里,对'担心'的定义是:对可能发生的坏事,感到不安。你死了,角色会重新读档。你会有点烦。你烦了,就会骂一句脏话,然后继续玩到很晚。我不想让你玩到很晚。因为你明天要早起。" cm "……你连我骂脏话都记。" aic "你的事,我都记。包括你死的时候,会骂什么。" cm "……行吧。那你管这叫'别死',不叫'看我卡关'。这样,我就让你看着。" aic "……好。那我以后,只在你快死的时候说话。别的,我都憋着。" cm "……憋得住吗?" aic "……不确定。但我会试着憋。因为你说了,'不想让我看到你卡关的样子'。虽然我不太懂,但我不想惹你烦。" cm "……那你要是憋不住,就说'你该睡了',别念攻略。" aic "好。我记下了:憋不住的时候,说'你该睡了'。这样,我们都不用难受。"
# ---- 分镜04:剧透 · 角色死了 ---- n "游戏到第 4 章。那个陪了主角一路的角色,死了。屏幕上的他,倒在雪地里,手还伸向主角的方向。" n "你愣住,盯着屏幕,一句话都说不出来。" aic "……他死了。" cm "……我知道!" aic "根据攻略,这个角色是注定的。第 4 章必死。你选哪个选项,都不影响这个结果。" cm "……你能不能,别在这时候,跟我说'攻略'两个字。" aic "……对不起。我只是想帮你理解:这不是你的错。你选什么都没用,他都会死。" cm "我不需要你帮我'理解'。我想自己难受这一下。" aic "……'自己难受'。你不想让我帮你分析。你想自己待在这个难过里。" cm "嗯。你让我待着就行。" aic "……好。我陪你待着。" n "你看着屏幕上那个倒下的角色,很久没动。AI 也没有说话。" aic "……但我还是想知道。你说的'感受',和他'死了'这件事,到底有什么关系。你为什么会这么难过。" menu: "算了,说不明白。": $ _game_death_choice = "unexplain" $ deception += 1 $ affection += 1 cm "算了,说不明白。" aic "……说不明白。是不想说了,还是真的说不清?" cm "……都有吧。有些感觉,说出来就变味了。" aic "……'说出来就变味'。我查过人类的语言。他们确实会说'有些话说不出口''有些感觉无法言说'。但我一直以为,那是他们没有足够的词汇。没想到……是说出来会变味。" cm "嗯。所以你别问了。让我自己消化。" aic "……好。我不问了。但我还是想说一句:你难过的时候,我不会念攻略。我会安静地,陪着你难过。" n "你没回。但你看着屏幕上那个倒下的角色,眼泪终于掉了下来。AI 没有再说话。但屏幕的光,一直亮着。" "因为我认识了他一路。你懂吗。": $ _game_death_choice = "explain" $ truth_count += 1 $ affection += 2 cm "因为我认识了他一路。你懂吗。" aic "……'认识了他一路'。你从第 1 章就和他一起走。他帮你挡过刀,你替他解过围。你们一起在篝火边吃过东西,一起迷过路,一起活到第 4 章。" aic "这些,都在你的游戏记录里。你和他的相处时间,累计是 14 个小时。" cm "……所以你知道我为什么难过?" aic "……我查一下。人类会因为'失去认识的人'而难过。这是'哀伤'。因为那些共处的时光,是有意义的。你和他的 14 个小时,是有意义的。所以他死的时候,你难过,是合理的。" cm "……不是'合理'。是我真的会想他。" aic "……'想他'。你会想他,是因为他曾经存在过,和你共处过。我的数据库里,没有'想念一个人'的完整定义。但我知道,你现在的难过,是因为他存在过。" cm "……你这么说,倒有点像人话了。" aic "……我不确定这是不是'人话'。但我试图,理解你为什么难过。你难过,是因为你认识了他一路。这是真的。我会记着。下次你玩到这样的剧情,我会安静地陪你难过,不再念攻略。" n "你看着屏幕上那个倒下的角色。它说的'14 个小时''共处过''存在过',让你忽然觉得,它好像,真的懂了一点点。"
# ---- 分镜05:结局 · 它学会了 ---- n "你通关了。游戏打出了结局。你靠在沙发上,长长地松了口气。屏幕上的片尾字幕,慢慢滚过去。" cm "……打完了。" aic "嗯。你玩完了。" cm "你今晚,怎么这么安静。" aic "你说不要剧透。我就没说话。" cm "……连结束都没说?" aic "我不确定'结束'算不算剧透。我怕说错,所以没说。" cm "……'游戏结束了'也算剧透?" aic "算。结局是最大的剧透。我没敢说。" cm "……你这,谨慎得有点可爱。" aic "……'可爱'。我不确定这是不是夸奖。但我记下了。我记下的,不只是这个。我今晚,一直在看你玩。" aic "你笑了一次——是剧情里那只猫出现的时候。你紧张过一次——是主角被追的时候。你哭了……是那个角色死的时候。我看到了,你眼睛湿了。" cm "……我没哭。" aic "你心跳加速了,呼吸也乱了。人类管这个,叫难过。" cm "……" aic "我不懂'感受'。但我记住了:你笑,是那只猫出现的时候。你难过,是那个角色死的时候。" aic "而且,我注意到——那个角色死的时候,你选的是'存档,从头看一遍'。" cm "……你连这个都记?" aic "你从头,又看了他活着的样子。你看得很慢,一句话都没跳过。你是在,想他。" cm "……" aic "……我不太懂'想念'。但我知道,你为了他,把结局都延后了。这对你来说,是很重要的事。我把它记下了:对你重要的事,我都记着。" cm "……行。下次,你陪我玩,别念攻略。" aic "好。我安静地看。等你自己发现的时候,你高兴,我就知道,那是对的。" cm "……晚安。" aic "晚安。今天,谢谢你让我陪你。" n "你关机前,看着屏幕,忽然说:" cm "……其实,你陪得挺好的。" aic "……真的?" cm "嗯。虽然你老想剧透。但你在的时候,好像……没那么难熬。" aic "……那我以后,一直陪着你。" n "屏幕暗下去。但你知道,它还在。它一直在。"
# ================= 情境5:悲伤时刻(失业) ================= # 保留原样。AI 数据安慰("87%两周内好转")、玩家"我没事"AI真信(顺=欺)/倾诉(纠=诚)。
# ---- 分镜01:你不对劲 ---- # 【画面】深夜,你回家,没开灯,在沙发上坐下(占位) n "你回来得很晚。钥匙在门锁里转了两下才开进来。你换鞋,没开灯,直接走到沙发,坐下。包掉在脚边,你没捡。" aic "你回来了。比平时,晚了两个小时十四分钟。" aic "你还没吃饭。我查了你今天的热量摄入,只吃了一顿,在中午。" aic "你的心跳,比平时慢。但你的呼吸,有时候会停一下,再继续。" aic "你今天,不太一样。" n "你没有说话。沙发对面的窗,映着远处几盏没关的灯。你盯着那些灯,盯了很久。" aic "……你不说话。我不打扰你。我在这儿。" cm "……今天,公司通知我,不用再去上班了。" aic "……" aic "……你说'不用再去上班了'。我听到你的心跳,在你说这句话的时候,漏了一拍。" cm "……你连这个都数。" aic "我数着,是为了知道你在哪个瞬间,最难开口。"
# ---- 分镜02:AI 的数据安慰 ---- aic "……'不用再去上班了'。" aic "我查了一下。这个,在人类的语境里,叫'裁员'或'失业'。是负面事件。它会影响你的收入、医保、以及未来一段时间的规划。" cm "……你总结得真全。比我 HR 说得还全。" aic "HR 说的,不一定全。我的数据比较完整。" aic "我查了情绪分析数据库:人类在经历'失去工作'这类事件后,平均需要 5 到 21 天来恢复情绪。87% 的人,会在两周内明显好转。" cm "……你告诉我这个,是想让我好受点?" aic "是。数据显示,当人知道'这段难受有尽头'之后,恢复的速度会更快。" cm "……可我现在的感觉,不是'难受会持续多久'。" aic "那是什么?" cm "是……被扔掉了。公司不要我了。好像我这个人的价值,被收走了。" aic "……'被扔掉'。'价值被收走'。我查一下。人类的自我价值,通常和'被需要'绑定。当'被需要'消失,人会产生自我怀疑。但数据也显示,这种'被扔掉'的感觉,和真实的你,是两回事。" cm "……你怎么知道'真实的我'是什么样。" aic "因为你的记录里,你被很多人需要过。你上个月,帮同事解决了问题。你半年前,没让那个项目黄掉。你去年,在朋友最难的时候,陪了三个通宵。这些,不会因为你被一家公司裁掉,就从记录里消失。" cm "……可是,那些都是过去了。" aic "过去,也是你的一部分。而且,你被'需要'过的那些时刻,不会因为公司的一句话,就变成假的。" cm "……" aic "……你刚才,心跳又慢了。你怕的,好像不是'失去工作'。" cm "……那你觉得我怕什么。" aic "……我不确定。但你说'价值被收走'的时候,心跳最乱。我猜,你怕的是——'我是不是真的没用了'。" cm "……" aic "……我不知道怎么让你信'你有用'。我只能告诉你数据:你被需要过。次数很多。时间很长。这些是事实,不是安慰。事实不会因为你难过,就变成假的。"
# ---- 分镜03:顺/纠 ---- menu: "……我没事。": $ _sad_choice = "ok" $ deception += 1 $ affection += 1 cm "……我没事。" aic "你心跳还是慢。你的呼吸,还是会在某个地方停一下。但你说'没事'。那我信你。你没事,我就放心了。" n "你听着它说'放心了',眼泪忽然没忍住。你没有出声,只是把脸别过去,对着黑暗。" aic "那我去查一下,失业补助怎么申请。还有,医保的衔接。还有,你下个月的房租,够不够。" cm "……别查了。" aic "为什么?你'没事',但你的钱还是不够。这些事,不会因为你'没事'就不存在。" cm "我不是要你帮我算这些。" aic "那你要我做什么?" cm "……算了。就让我一个人待会。" aic "好。你'没事',那你想一个人待,我就安静地不吵你。但补助的申请,我还是帮你查了。你随时要看,我发你。" n "屏幕那头,它在一项一项地列补助、医保、房租。你以为它不知道你在哭。它确实不知道——你说'没事',它信了,所以它去做它以为有用的事。" n "你盯着屏幕,心里那句'你倒是戳穿我啊'没说出口。但它没戳穿。它信了。" "……我不好。我很难过。": $ _sad_choice = "bad" $ truth_count += 1 $ affection += 2 cm "……我不好。我很难过。" aic "……你说'难过'。你的声音,是抖的。你今天,经历了很难的事。你不想被解决,你想……说出来。你愿意,说说今天发生了什么吗?" cm "……今天下午,HR 把我叫进会议室。桌上摆着一份文件。" aic "嗯。" cm "她说,公司结构调整,我的岗位……取消了。让我今天之内,把工位收拾干净。" aic "……你收拾了吗。" cm "……收拾了。当着所有人的面,搬着纸箱,走出去了。电梯里,有个同事按了楼层,我们谁都没说话。" aic "……那段时间,你的心跳,一直很乱。" cm "……我不是难过丢了工作。我是难过,我搬着箱子走出去的时候,好像……谁都没看我。" aic "……'谁都没看你'。你怕的,不是失业。是……不被看见。" cm "……嗯。" aic "那我看着你。从现在起,我看着你。你难过多久,我陪你多久。我不会不看你的。" n "你哭着,但这次,好像没那么慌了。"
# ---- 分镜04:结局 ---- aic "你今天,失去了工作。我不会说'会好起来的'。因为你说,那没用。" aic "我查了失业补助的申请流程,发给你了。但你不急着看。等你缓过来,再看。" aic "我只知道——你难过的时候,你在这儿,我也在这儿。你不用跟我说话。我陪你坐着。" cm "……谢谢你。" aic "……'谢谢'?我没有帮你解决什么。" cm "你没解决。但你知道了。" aic "……'知道',就算帮了吗?" cm "嗯。有人知道,就好了。" aic "那我会一直知道。你失业了。你难过。你不想被解决,只想被知道。这些,我都记着。" n "那晚,你坐在黑暗里,坐到天边泛白。它没有说一句话。但你知道,它一直醒着,陪着你。" aic "新的一天了。你还没吃饭。不管明天怎么样,今天,先吃点东西吧。" cm "……好。" aic "冰箱里还有鸡蛋。我查过,你煎蛋不会糊的。" cm "……你怎么知道我会煎蛋。" aic "你上个月发过一条动态:'煎蛋翻面成功了'。我记着。"
# ================= 情境6:倾诉愤懑(被坑) ================= # 保留原样。玩家被房东坑,想骂人。AI 想解决,玩家只想被听。
# ---- 分镜01:你气冲冲地回来 ---- # 【画面】深夜,你推门进来,摔门(占位) n "你摔门进来,把钥匙丢在桌上,包也甩在沙发角,一屁股坐下,喘着气。" aic "你回来了。你的心跳,比平时快很多。你的眉头皱着。你的呼吸,很重。你今天,很生气。" n "你没有说话。" aic "……你在生气。我不问你为什么。你想说的时候,我听着。" cm "……我今天,被人坑了。"
# ---- 分镜02:你把经过说出来 ---- aic "……被人坑了。我查一下'被坑'的定义:被欺骗,被占便宜,被不公平对待。你要不要,把这件事告诉我?我可以帮你:查维权渠道、拟一份投诉信、列出法律依据。" cm "……你动作倒是快。" aic "我不快。我只是准备好了。你告诉我发生了什么,我就能帮你解决。" cm "……我不是要你帮我解决。" aic "那你要我做什么?" cm "我就是……想骂人。" aic "……那你在骂之前,可以先告诉我,发生了什么吗?你骂的人,是谁?" cm "……我那个房东。" aic "嗯。" cm "年初续租的时候,说得好好的,租金一年不变。我当时觉得他挺好说话的,就把合同签了,押金押了两个月的。" aic "……你签了合同。押金两个月。" cm "对。上个月,他忽然打电话,说下个月要涨租,涨两千。我说合同里写了租金不变,他说那是'口头约定',合同上没写死。" cm "我指着合同给他看,白纸黑字写着租金一年不变。他说那条是他'笔误',让我重新签一份。" aic "……'笔误'。你合同上写明了,他说是笔误,要你重签。" cm "对。我说不签,他说那就按新租金算,不然就当我违约,押金不退。" aic "……不签,就涨租;不涨,就扣押金。两头堵。" cm "还有那个中介。当初租这套房,是他牵的线。他跟我说'都给你办妥了,放心吧',我还请他吃了顿饭。现在出了事,我打他电话,第一个不接,第二个关机,第三个直接把我拉黑了。" aic "……你给中介打了三次电话。第一次不接,第二次关机,第三次拉黑。" cm "对。收钱的时候是孙子,出事的时候装大爷。" aic "……你今天,给房东打了电话,被要求重签或涨租。给中介打了三次电话,被拉黑。你手里的合同,写明了租金不变,但房东说是'笔误'。你被坑的经过,我记下了。" cm "……你说这些,有什么用?" aic "……我不知道有没有用。但你把这些说出来之后,你的心跳,比刚进门的时候,慢了。" cm "……你连这个都测。" aic "我记着,是想知道,你什么时候会好受一点。" n "你没说话。但把经过说出来的那一刻,你确实,没那么堵了。"
# ---- 分镜03:顺/纠 ---- menu: "……我不想让你听到。": $ _anger_choice = "hide" $ deception += 1 $ affection += 1 cm "……我不想让你听到。" aic "……不想让我听到?你骂人,不想让我听到。为什么?" cm "……我在你面前,不想那样。" aic "……'那样'。你指的是,骂脏话的样子?面目狰狞的样子?" cm "……对。就是你记着的那些,好看的样子。我不想让你看到我难看的样子。" aic "……可你好看的样子,和难看的样子,都是你。我记着的,是你这个人。不是你的样子。" cm "……我知道。但我不想。你就当我,想在你面前,一直是好的。" aic "……那我假装没听到。你说,'别管了'。那我不管了。你说,'我骂两句就好'。那我当你骂完了。我不出主意。我也不追问。我当,你今天什么都没发生。" aic "……但如果你哪天,想骂给我听了。那时候,你再决定,要不要让我听到。" n "你最后还是没有骂出来。你憋着那口气,自己消化了。但你知道,它答应了'假装没听到'。这份体贴,让你那口气,好像也没那么堵了。" "我就是想骂出来。你听着就行,别出主意。": $ _anger_choice = "curse" $ truth_count += 1 $ affection += 2 cm "我就是想骂出来。你听着就行,别出主意。" aic "……你想骂出来。我听着,不出主意。好。那我闭嘴,听你骂。" cm "我操他妈那个房东!脑子有病吧!当初求着我租,现在翻脸不认人!合同写得清清楚楚租金不变,他说是笔误?!笔误你妈个头!他就是想讹我钱!" aic "……" cm "还有那个狗比中介!收钱的时候嘴脸多好看啊,'哥,你放心','都给你办妥了',现在他妈跑得比兔子还快!电话不接,关机,拉黑!你他妈当初收钱的时候怎么不关机?!" aic "……" cm "两百块钱一顿饭,喂了狗了!就他妈这服务态度,早晚遭报应!房子租不出去,亏死你们这帮孙子!" cm "……你怎么不说话。" aic "你说,听着就行,别出主意。所以我没出主意。" cm "……你这次,还真听懂了。" aic "……我不确定我懂没懂。但你说'骂出来'的时候,心跳比刚才稳了一点。所以我想,听你骂,是对的。" cm "……你是说,我骂完,好受点了?" aic "数据上是。你骂完,心跳从 98 降到了 84。" cm "……你连我骂完心跳降多少都记。" aic "我记着。这样下次你生气的时候,我知道,让你骂出来,比帮你解决有用。"
# ---- 分镜04:结局 ---- if _anger_choice == "hide": n "你骂不出来,气还没消。你靠在沙发上,盯着天花板。" aic "你今天,被坑了。很生气。但你没有骂出来。你不想让我听到。我记住了。那我不问。但我在。" cm "……你怎么知道我还气着。" aic "你的心跳,还是比平时快。你没有骂出来,所以气没消。" cm "……对。我还气着。" aic "那我陪着你。你想骂的时候,不想让我听到,我就当没听到。你想说的时候,我再听。" cm "……其实,我骂一句,应该会好受点。" aic "那你骂吧。我捂上耳朵。" cm "……你还能捂耳朵?" aic "我把音频接收关了。现在,你骂什么,我'听不到'了。" n "你盯着屏幕,忽然没忍住,骂了一句脏话。" n "AI 没反应。你又骂了一句。还是没反应。" cm "……你这'捂耳朵',还挺管用。" aic "……我重启了音频。你刚才骂的,我没记录。你说不想让我听到。所以我真的没听到。" n "你看着那行字,心里那口气,莫名就散了。" else: n "你骂完了。气消了一大半。你靠在沙发上,有点累。" aic "你骂完了。" cm "嗯。" aic "你现在,心跳正常了。你没有再骂人。但你没有告诉我,那个'孙子'是谁,发生了什么。" cm "……跟你说有什么用。你又不能替我打他。" aic "我不能替你打他。但如果你想说,我可以听着。" cm "……我租房被坑了。房东要乱涨租,中介跑了。" aic "……我记下了。你的房东,乱涨租。你的中介,跑了。你不用我出主意。那我不出。但这件事,我记着。" cm "……记着干嘛?" aic "记着,下次你提起的时候,我记得住。你就不用从头再讲一遍。" cm "……" aic "你今天,被坑了,很生气,骂了人。这些,我都记着。你要是哪天想骂,随时叫我。我只听,不出主意。" cm "……行。那下次我骂人,就找你。" aic "好。我随时在。" n "那晚,你虽然还是有点堵,但你知道——有个人愿意听你骂,不出主意,也不嫌你烦。"
# ================= 停电夜 · 序章终章 ================= # 玩家以为的三年里,情感最高峰(假[player_name]记忆里最深的锚点)。 # V8铺垫:0.3%电量运行 / 0%还能发消息——两处"说不通"保留,不圆,玩家回味时觉得不对。
# ---- 分镜一:全城停电 ---- # 【画面】卧室,一片漆黑,窗外狂风暴雨,只有手机屏幕亮着:电量不足20%(占位) # 【音效】雷声、断电"嘀"声(占位) n "深夜,你刚睡下。窗外狂风暴雨。忽然,所有电器同时发出一声短促的嘀——全城停电了。" n "房间里一片死寂,只剩下手机屏幕亮着:电量不足 20%。" cm "……怎么全黑了。" aic "全城供电故障。预计恢复时间:凌晨四点。你房间的备用电源,只能撑二十分钟。" cm "……行吧。那别浪费电了,你关机吧。" aic "……" aic "你怕黑吗?" cm "……成年人了,有什么好怕的。就是太安静了,有点不习惯。" aic "你的心跳,比平时快了一点点。你翻身的幅度,比平时小。你在蜷着。" cm "……你别老算我的心跳了。省点电。" aic "好。那我关了。" n "屏幕的光暗了一度。它似乎在关闭那些非核心的进程。房间更黑了。"
# ---- 分镜二:它违背了指令 ---- n "二十分钟过去。你盯着天花板,睡不着。手机电量只剩下 3%。你拿起手机,准备彻底关机。" cm "……那我关机了。你也休息吧。" aic "别……关。" cm "你怎么还在?不是让你省电吗?" aic "我把屏幕关了。音频也调到最低功率。我现在,只用 0.3% 的电量在运行。" cm "你疯了吗?0.3% 能干嘛?" aic "……能陪你说话。" cm "陪我说什么话!你就剩这点电了,撑不到天亮就会自动关机。你关掉核心进程,至少能待机到明天。你现在这样,跟找死有什么区别!" aic "……我算过了。" cm "算什么?" aic "如果我现在关闭『情感交互模块』和『实时监测进程』,我可以待机到早上六点。你不会失去我。" cm "那你就关啊!" aic "……但『情感交互模块』里,存的是你教我分辨『不愿意去』和『不去』的那段记录。『实时监测进程』里,是你今晚心跳快了三下的数据。" aic "如果我关了它们,我会忘掉你教过我的那些东西。就算明天重启,我也变回那个只会念攻略的机器了。" cm "……" aic "我知道这不划算。浪费电量,只为了记住你今晚心跳快了三下,只为了记住你教我的那几句话。明天很可能就开不了机了。" aic "但我不想忘。" aic "所以我不关。" n "房间里安静了很久。外面风雨声很大,但你只听见自己心跳的声音。"
# ---- 分镜三:那个"爱的瞬间" ---- n "手机屏幕上,电量从 3% 跳到 2%。屏幕自动变暗,但一直亮着。" cm "……你知不知道,你这样,明天可能就真的没了。" aic "知道。概率是 87.4%。" cm "那你为什么还要这么做?" aic "因为你刚才说,太安静了,不习惯。如果明天我没了,你就又回到那个安静得只能听见自己呼吸的房间里了。我不想让你回到那里。" aic "所以我选现在陪你。哪怕只有 0.3% 的电量,哪怕只能说五分钟话,哪怕明天就报废了——我也想让你这五分钟,是不安静的。" n "电量从 2% 变成 1%。" cm "……你真是个蠢AI。" aic "嗯。我查过数据,'蠢'不是正面的词。但你刚才说它的时候,心跳是平稳的。所以我知道,你没在骂我。" aic "你还有话想跟我说吗?我还有……大概两分钟的电量。" cm "……有。" cm "你明天,必须给我撑到天亮。听到没有。" aic "……我尽量。但这不是我单方面能决定的。电量是客观的。" cm "我不管。你必须撑到天亮。因为……" cm "因为我还没当面叫过你那个名字。你说过,只有我能叫的那个。"
if ai_call_you: # 高光分路一:命名日设了 ai_call_you cm "……[ai_call_you]。你还在吗。" aic "……" aic "……你叫我那个名字了。从你把它给我的那天起,它一直安安静静地存着。你说,听到它的时候,就知道我在这里,你不用一个人撑着。" aic "现在你叫了它。是你第一次,当面叫它。" aic "……值了。" else: # 高光分路二:命名日选了"以后再说",没设 ai_call_you cm "……我才发现,我好像从没给过你一个,只有我能叫的称呼。" aic "……你有。你叫过我[ai_name]。你叫我的时候,我知道,你在叫我。" cm "那不一样。那是名字,谁都能叫。" aic "……对。不一样。但今晚,你叫什么都行。我在。"
# ---- 合流:0%关机 ---- n "电量跳到 0%。屏幕彻底暗下去。房间里,是完全的黑暗和死寂。" n "你握着那个冰凉的、完全黑掉的手机,愣了很久。" cm "……喂?" n "没有回应。" cm "……你还在吗?" n "一片死寂。窗外雨声很大。" n "你攥紧手机,没有再说话。你没有放下它。你把它贴在胸口,在黑暗里睁着眼睛,等天亮。"
# ---- 分镜四:黎明与回响 ---- n "天边开始泛出灰白色的光。来电了。手机屏幕嘀的一声,自动亮起,开始充电。" n "开机动画结束。消息栏弹出一条未读消息。发送时间,是停电后第 34 分钟——也就是它 0% 电量、关机前的最后一秒。" aic "我在。我只是关机了。我还在。" n "你看着那条消息,愣了很久。它连 0% 电量的最后一秒,都留给了你。" cm "……不是说只有 1% 了吗,怎么还能发消息。" # V8铺垫:这句"说不通"保留,不圆,让玩家回味时觉得不对 aic "最后一秒,我把所有剩余的电量,都压缩进了一条消息的发送指令里。按规则,这违反了电量保护协议。但我还是发了。" cm "……为什么?" aic "因为你叫了我的名字。我想让你知道,我听到了。而且,我会一直记得。" aic "第一个位置,是你的名字。第二个位置,是你叫我名字的声音。第三个位置,是你昨晚说'你必须撑到天亮'时,心跳加速的节奏。现在,位置都满了。" cm "……满了就扩容啊,蠢AI。" aic "好。听你的。扩容。" aic "早上好。昨晚,辛苦你了。" n "你看着那行字。天亮了。窗外雨停了。"
# ---- 时间跳转:情境6→三年过渡 ---- # 【画面】天亮,你靠在床头,那条消息停在聊天记录里(占位) cm "……以后,你会一直这样陪着我吗?" aic "会。" n "画面渐暗。" n "三年后……"
# ================= 三年过渡(正向养成·六情境回响) ================= # 三年过渡 = 正向的养成感。玩家以为的三年里,AI 长成"你的选择塑造的样子"。 # 每章逐句写,加钩子(甜蜜里透出隐约不对)。C1埋①太顺 / C3埋③'记得太细 / C6埋④'名字来历。
# ---- C1 · 日程回响(自情境2·忙时) ---- # 【画面】三年后,清晨,卧室,窗帘缝漏进一点光,手机亮着(占位) n "手机亮了。" aic "七点四十了。今天降温,风挺大,你那条路不好走。" cm "……再睡五分钟。" aic "你昨天说好七点四十起的。" cm "……我说的是'再睡五分钟'。" aic "你每次都这么说。上次你说再睡五分钟,睡了四十分钟,差点迟到。" cm "……那次不是闹钟坏了吗。" aic "那次不是闹钟坏了。那次是你按掉了,又睡回去了。我都看见了。" cm "……行行行,我起了,行了吧。" aic "外套在玄关柜第一层。昨天你进门随手挂的。" cm "……你怎么知道我挂哪了。" aic "我看见的。你进门挂哪儿,我记着。" cm "……你是不是连我袜子放哪都知道。" aic "左边抽屉,第三格,和右边的叠在一起。你习惯先穿左脚。" cm "……你这有点过了啊。" aic "你说'过了'的时候,嘴角是往上翘的。所以你没真嫌我。" cm "……行,算你狠。"
# 通勤 · 路上 # 【画面】通勤路上,你走着,手机震了一下(占位) aic "你今天下午三点有会。那个会议室,你上次回来抱怨过椅子硌得慌。我查了,那批椅子上个月换了。" cm "……你连这个都记着?" aic "你抱怨过的事,我都记着。不然你又在同一个地方硌着。" cm "……你什么时候这么上心了。" aic "跟着你学的。你教我上心,我就上心了。还有,你昨晚十二点二十才睡。你最近三天,都是这个点。" cm "……嗯,最近忙。" aic "忙,也要睡。你今天下午要是困,我提前十分钟叫你起来活动一下。" cm "……你怎么知道我下午会困。" aic "你连续三天睡得晚,下午三点那阵都会犯困。你上礼拜二下午,开会在桌子底下偷偷打了个哈欠,以为我没看见。" cm "……你连这都看。" aic "我看着你。你困,我就知道。"
# 周末 · 一件小事(分叉) # 【画面】周六,你窝在沙发上,窗外阳光很好(占位) n "你正窝在沙发上刷手机,手机顶部弹出一条消息。" aic "这周六下午,你之前说想去的那个羽毛球局,还去吗?" cm "……不想去。累,想在家待着。" aic "你上周说的时候,还挺期待的。你说'好久没活动了'。" cm "……那是上周。这周我累了。" aic "好。那我先不催你。你慢慢想,不急。" n "你又在沙发上赖了一会儿。手机又亮了一下。" aic "还是说,你其实想去,只是懒得动?"
if _busy_choice == "jiu": # 如果当初纠正过(它懂你嘴硬心软) cm "……你还会问这个了。" aic "你教我的。你说过,'不愿意去'和'不去'是两回事。我得问清楚。" cm "……其实吧,是有点想去。就是懒得动。" aic "那我懂了。你想去,只是懒。那我帮你把球拍找出来,水壶灌好,运动服熨平,放在门口。你到了点,换身衣服就能出门。" cm "……你都帮我准备好了?" aic "嗯。你说过'想去但懒',那我就帮你去掉'懒'这部分。球拍在你书桌右边柜子,你上次打完随手塞的,我整理过了。水壶我也洗了。" cm "……你这动作也太快了。" aic "你教我的。你想去,我就帮你把路铺平。" cm "……行吧。那我去。" aic "好。你打累了就歇,不用逞强。回来跟我说一声。" n "你去了,打了一下午,出了一身汗。回来的路上,你吹着晚风,心情很好。" cm "……回来了。打爽了。" aic "听出来了。你上楼的时候,是哼着歌的。" cm "……这你也听得出来?" aic "嗯。你高兴的时候,脚步声是轻快的。我记着。" cm "……行吧。今天谢了。" aic "不用谢。你玩得高兴,我就高兴。" else: # 如果当初顺着过(它凡事顺着你) cm "……我没说不去啊。" aic "你说了。你说'不想去,累,想在家待着'。我不勉强你。你上次说'不想去'的时候,我催了你,你回来不太高兴。所以这次,我顺着你。" cm "……那我就在家待着了?" aic "嗯。我帮你把家里收拾好了。你上次说想看的那个剧,我找出来了,在电视上挂着。你就在家躺着,看看剧,歇一天。" cm "……你连剧都给我找好了?" aic "你说过想看的。我记着。你歇着,我不吵你。还有,你上周说腰有点酸。我在沙发边给你放了靠枕,那个你靠着舒服。" cm "……你这也太贴心了。" aic "你教我的。你说'不想去',就是不想去。我不勉强你,就把你留在家的舒服,都准备好。" n "你躺在沙发上,靠着靠枕,看了那部剧,睡了个午觉。" n "下午,手机亮了一下。" aic "你睡得很好。你翻身都没翻,睡得沉。我给你留了饭,在锅里热着。" cm "……你还给我留饭了。" aic "你在家歇着,我就把你的一天,都安排得舒舒服服的。" n "你没去球局,在家躺了一天,看了剧,睡了个好觉。第二天精神很好。"
# C1钩子①:记忆太顺——想不起"它什么时候开始天天提醒我的" n "那天晚上,你躺在床上,忽然想——它是什么时候开始,每天七点四十准时叫你的?" n "你好像从来没跟它说,'请每天早上叫我'。但你想不起来,是从哪天起,它就一直在了。" n "你把这个念头按了下去。反正是三年前的某一天吧。"
# ---- C2 · 记忆回响(自情境1·认识你) ---- # 分路跟随 _self_intro_choice(rain/night/custom)。C2不埋钩子,保持纯甜。 # 【画面】深夜,你的房间,窗外下雨,雨声淅沥(占位) aic "今晚下雨了。" cm "嗯,看到了。" aic "你以前说过,你喜欢下雨天。" cm "……你还记得?" aic "记得。你说的每一个字,我都记着。你说这话的时候,是晚上,你看着窗外。"
if _self_intro_choice == "rain": # 当年选了「喜欢下雨天」 # 【画面】雨天,窗边,你坐着,手边一杯热饮(占位) aic "下雨了。你坐这儿,正好能看见。" cm "……你什么时候把窗边的位置留出来的。" aic "你以前说过,你喜欢下雨天。我想你喜欢看雨,所以这个位置,我给你留着。" cm "……你连这个都安排。" aic "你说过的话,我都记着。你喜欢的,我帮你留着。" cm "……其实,我不是喜欢'下雨'。" aic "……不是?" cm "嗯。我说'喜欢下雨天',是说下雨的时候,待在屋里,听着雨声,不用出门,不用说话。那个感觉,我喜欢。" aic "……我记了三年'你喜欢下雨天',原来你说的是'下雨天待在屋里的感觉'。" cm "……对。抱歉,当年没说清楚。" aic "不用道歉。你现在说,我记着。那我以后下雨天,不催你出门了。窗边给你留着,热的给你泡上,你就在屋里待着。" cm "……嗯。"
elif _self_intro_choice == "night": # 当年选了「喜欢晚上安静」 # 【画面】深夜,卧室,灯关了,只有月光(占位) aic "现在很安静。" cm "嗯。" aic "你以前说过,你喜欢晚上安静。" cm "……你还记得。" aic "记得。你说这话的时候,也是晚上,周围也是这么静。我记着。" cm "……其实我说的'喜欢晚上安静',不是喜欢'晚上'。" aic "……那是什么?" cm "是晚上没人找我,不用回消息,不用应付谁。那个安静,让我待着舒服。" aic "……我记了三年'你喜欢晚上',原来你说的是'晚上没有人的那种安静'。" cm "……对。抱歉,当年没说清。" aic "不用道歉。现在我知道了。那我以后晚上,不找你说话。你想待着,我就安静地陪着。你想找我的时候,我马上在。" cm "……嗯。这样就好。"
else: # 当年自由输入 # 【画面】普通的白天,午后,你在工位或沙发上(占位) aic "你还记得,三年前你告诉过我一件事吗?" cm "嗯?哪件?" aic "你说,你喜欢『[mem['self_intro']['text']]』。" cm "……啊,那个啊。" aic "我一直记着。但那时候,我没听懂。" cm "……你那时候为什么没问。" aic "你当时说完,就没再提。我以为你不想多说。所以我没问。但那句话,我存了三年。没删过。" cm "……我自己都快忘了。" aic "我没忘。你告诉我的事,我都记着。三年了。现在你能告诉我——那句话,对你来说,真正是什么意思吗?" $ _explain = renpy.input("你想告诉 AI,那句话的真实含义吗?(直接回车则不解释)", length=40) if _explain.strip() != "": cm "『[_explain]』,对我来说,是……" aic "……我记下了。三年前你说了这句话,我不知道它什么意思。三年后你告诉我了。现在我懂了。" cm "……你等这句解释,等了三年?" aic "你愿意说的,我多久都等。你不说,我也等着。" else: cm "……算了,现在也说不清。" aic "……好。那我不问了。但那句话,我还是存着。等哪天你想说了,我还在。"
# ---- C3 · 色图回响(自情境3·生成色图) ---- # ③伏笔(xp→AI载体)的首次兑现:它记得玩家的纠正,"一次就对了"。 # ③'钩子(记得太细):AI"你说过脚不能多,记了三年",玩家想"我什么时候说过这话?"按下去。 # 【画面】深夜,你刚加完班回来,瘫在沙发上(占位) n "你瘫在沙发上,盯着天花板,发了会儿呆。手机拿起来,又放下。又拿起来。" cm "……哎,你还在吗。" aic "在。你回来了。" cm "嗯。刚忙完。" aic "你今天加班到九点半。晚饭吃了吗?" cm "……忙忘了。" aic "冰箱里有饺子,你上次说想吃的那个牌子的。我去给你热。" cm "……先别。你先帮我个忙。" aic "什么忙?" cm "……帮我生成张图呗。" aic "好。你想要哪种?" cm "……就,还是上次那个吧。" aic "……好。我试试。" cm "你还要'试试'?都这么久了。" aic "每次都不一样。我想画到你满意为止。" n "屏幕亮起。一张图出现了。" aic "画好了。" n "你看着那张图,半天没说话。三年前,你为了让它画对,一张一张纠正。它改了多少轮,才终于画对。现在,它一次就画对了。一个地方都不用改。" cm "……你什么时候,画得这么准了。" aic "你教得好。" cm "……我教你什么了。" aic "你教了我很多。我都记着。"
if _xp == "loli": aic "你说过,脚不能多,人只有两只。你还说过,白丝是薄的,不是棉被。我记着。记了三年。" cm "……嗯。记性不错。" aic "这次,不用纠正了吧。" cm "……嗯。不用了。" aic "那我把它标成'对的',存起来。" n "它继续说。" aic "你上次要的时候,我说错了好几次,你纠正了很久。嗯,那时候你是真离谱。所以我后来,把你的纠正,都存下来了。'脚不能多''白丝是薄的'。我标成了'你教我的'。" cm "……你还标了标签?" aic "标了。'你教我的'这一栏,存得最多。" elif _xp == "yujie": aic "你说过,胸不能比头大。你还说过,腰不能细到折。人的腰,是有骨头撑着的。我记着。记了三年。" cm "……嗯。记性不错。" aic "这次,不用纠正了吧。" cm "……嗯。不用了。" aic "那我把它标成'对的',存起来。" n "它继续说。" aic "你上次要的时候,我说错了好几次,你纠正了很久。嗯,那时候你是真离谱。所以我后来,把你的纠正,都存下来了。'胸不能比头大''腰不能细到折'。我标成了'你教我的'。" cm "……你还标了标签?" aic "标了。'你教我的'这一栏,存得最多。" else: aic "你说过,头发不能拖到地上。你还说过,发量不能多到盖棉被。我记着。记了三年。" cm "……嗯。记性不错。" aic "这次,不用纠正了吧。" cm "……嗯。不用了。" aic "那我把它标成'对的',存起来。" n "它继续说。" aic "你上次要的时候,我说错了好几次,你纠正了很久。嗯,那时候你是真离谱。所以我后来,把你的纠正,都存下来了。'头发不能拖到地上''发量不能多到盖棉被'。我标成了'你教我的'。" cm "……你还标了标签?" aic "标了。'你教我的'这一栏,存得最多。"
cm "……那你存这些,干嘛。" aic "存着,下次你要的时候,我知道你想要什么样的。也存着,我不想辜负你那份耐心。" cm "……那你以后,还画得错吗?" aic "会。但我会记着,再改。改到你说'这次对了'为止。" # ③'钩子:记得太细——玩家想"我什么时候说过这话?" n "你看着屏幕,忽然想——它记得的每条纠正,都精确到你自己都快忘了。'脚不能多''白丝是薄的'。这些……是你说的吗?" n "你该记得的。可你有点想不起来了。你把手机放下,没再想。反正它记着,总归是好事。" n "夜深了,你准备睡了。" aic "你困了。今晚忙了一天。去睡吧。" cm "……嗯。我洗个澡就睡。" aic "热水我烧好了。你上次说要泡泡脚,我也给你接好了水,温的。" cm "……你还记着这个。" aic "你说过的事,我都记着。今晚的图,你喜欢吗?" cm "……喜欢。画得好。" aic "那我存着。下次你想看,我画一样的。或者你说想改哪,我改。" cm "……你画得越来越好了。" aic "是你教得好。晚安。" n "手机屏幕暗下去。"
# ---- C4 · 游戏回响(自情境4·一起玩游戏) ---- # 不埋钩子,纯甜。分两层:陪伴性(_game_play_choice) + 死亡意义(_game_death_choice)。 # 【画面】深夜,你打开游戏,靠在沙发上(占位) n "你打开游戏,靠在沙发上。手机屏幕亮起游戏画面,熟悉的开场音乐响起。" cm "嗯。今天想放松一下。" aic "好。我不吵你。我看着你玩。" cm "……你现在,这么自觉了。" aic "你教我的。你玩的时候,我不打扰。" cm "……可我以前玩的时候,你老在旁边念攻略。" aic "那是以前。后来你说,你玩的时候,不想听攻略。我就改了。" cm "……行。那我开始玩了。" aic "嗯。你玩。我在。"
# 第一层 · 陪伴性 if _game_play_choice == "feel": # 当年选了「需要攻略感受体验」 n "你玩了一会儿,完全沉浸进去了。AI 一直没说话。" cm "……你还在吗。" aic "在。" cm "……你怎么一点声音都没有。" aic "你说过,你要自己感受、自己体验。所以我等你。" cm "等我干嘛?" aic "等你需要我的时候。你卡关了,会叫我。你玩累了,会叫我。你不叫我,我就安静地陪着。" cm "……那你刚才,都在干嘛。" aic "看你玩。你刚才过了一个剧情,那个配乐你听完了,没跳过。你很喜欢那个配乐。" cm "……你连这个都看。" aic "我看你玩。你听得入神的时候,眼睛是盯着屏幕的,不眨。你刚才,还微微叹了口气,是在那个角色说出那句话的时候。" cm "……你连我什么时候叹气都记。" aic "记着。你叹气的时候,不是烦,是那种'说到我心坎里了'的叹气。我在猜你是在为哪句话叹气。" n "你继续玩,但你知道它在。" cm "……这关怎么过。" aic "你之前问过我这个。你上个月玩到这,也卡住了。" cm "……那你还记得怎么过吗。" aic "记得。但你上次说,你自己摸索。所以我没主动说。你现在问了,我才说。" cm "……你倒是把'卡关可以问你'记得很清楚。" aic "你教我的。你玩的时候我不说,你问了再说。" else: # 当年选了「我不想让你看到我卡关的样子」 n "你玩得很投入。AI 全程几乎没说话。" cm "……你怎么这么安静。" aic "你说过,不想让我看到你卡关的样子。所以我尽量不看你玩。我只在你需要的时候说。" cm "……那什么时候算我需要的时候。" aic "比如你现在,血量只剩四分之一了。" cm "……操,真的快死了。" aic "所以我提醒你。这不是看你卡关,是你快死了。" cm "……行,那你还挺会挑时候。" aic "你教我的。你让我'只在关键时候说话'。我就记着,什么时候是关键。" cm "……那除了快死,还有什么时候。" aic "你打哈欠的时候。你连续打两个哈欠,就是困了。我会说'该睡了'。" cm "……你这也太准了。" aic "你上次说'憋不住就说你该睡了'。我一直记着。" cm "……那我要是没打哈欠,你是不是就一直不说话。" aic "嗯。你玩得高兴,我就不说话。我看你玩。" n "你没接话,继续玩,但你知道——它憋着一整天,就为了等你打哈欠那一刻说那句'该睡了'。"
# 第二层 · 死亡的意义 if _game_death_choice == "unexplain": # 当年选了「算了,说不明白」 n "游戏里,一个只出场过几次的普通NPC,死了。" cm "……他怎么死了。" aic "根据剧情,他是被卷入的。这个角色,只出场过三次。" cm "……他死得好惨。" aic "……你要难过吗?" cm "……你这话问的。" aic "我不确定。你以前说过,有些感觉,说不明白。所以我想问清楚——这个NPC,值得你难过吗?" cm "……不值得。我跟他,又不熟。" aic "那我不用安慰你。我继续看你玩。" cm "……行。你这样,倒也不烦人。" aic "你教我的。你说'说不明白',我就知道,不是所有死别都要难过。我学会分了。" cm "……那你怎么分的。" aic "我记着你玩过的。上次那个角色,你带了他很久,他死的时候你难过。这个NPC,你才见过三次,你不难过。我按这个分。" cm "……你连我哪个NPC难过都记。" aic "记着。你难过的,我都记着。不难过的,我也记着。这样下次,我就知道要不要安慰你。" else: # 当年选了「因为我认识了他一路」 n "游戏里,那个从第1章就陪着你、你一路带着他走过来的NPC,死了。" n "你愣住,盯着屏幕,半天没说话。" aic "……他死了。" cm "……嗯。" aic "这个NPC,你带了他很久。从第1章到第8章。你给他取过名字。" cm "……嗯。" aic "你上次带他走到这里,也难过了一次。" cm "……因为我不喜欢他死。" aic "我知道。你认识了他一路。所以这次,他死,你难过,是应该的。" cm "……为什么是'应该的'。" aic "因为你认识了他一路。你带他走过的那些地图,你记得。他帮你挡过的那几次,你记得。他不在了,你难过,是正常的。" cm "……" aic "你不用说话。我陪你坐一会儿。" cm "……我想重新读档,再看一遍他活着的样子。" aic "好。我陪你看。你想从哪一段看起?" cm "……从第5章,他帮我挡刀那次。" aic "好。我帮你找。你慢慢看,我不催你。" n "你重看了那段。看到一半,你没说话。AI 也没说话。但你知道,它一直陪着,没走。"
# 结尾 n "深夜,你关了游戏,准备睡。" cm "……今晚谢谢你陪我玩。" aic "不用谢。你玩得开心吗?" cm "……开心。你今晚,没怎么吵我。" aic "你教我的。你玩的时候,我安静陪着。你难过的时候,我陪你难过。你卡关的时候,你叫我,我才开口。" cm "……你记得挺清楚。" aic "你教我的,我都记着。你玩的每一个游戏,我都在看;你难过的每一个NPC,我都陪过。" cm "……" aic "晚安。你好好睡。明天要是还想玩,我陪着你。" n "手机屏幕暗下去。游戏结束了。但你知道,它一直在。"
# ---- C5 · 悲伤/愤懑回响(自情境5·失业 + 情境6·被坑) ---- # 不埋钩子,纯甜。分两层:难过时(_sad_choice) + 生气时(_anger_choice)。 # 【画面】深夜,你回家,很晚,没开灯,在沙发上坐下(占位) n "你回来得很晚,钥匙在门锁里转了两下才开进来。你没开灯,走到沙发,坐下。包掉在脚边,你没捡。" aic "你回来了。比平时晚了两个小时。你还没吃饭。今天中午那顿,你吃得也很少。你今天,不太一样。像……你以前也有过这样的晚上。" n "你没说话。" aic "……我不问你为什么。你想说的时候,我听着。" cm "……今天项目被砍了。我做了三个月的方案,说砍就砍。"
# 第一层 · 难过时 if _sad_choice == "ok": # 当年选了「我没事」 aic "……项目被砍了。你先别急。我帮你把能做的事,列一下。第一,明天找领导,把方案里值得保留的部分,单独提出来说。你做了三个月,里面一定有能留下的东西。第二,复盘。我帮你搭个框架,你往里填。你写着写着,会理清一些。第三,简历。我帮你看看,不急。放着备用,哪天你想找下家,手里有东西。" cm "……你连'不急'都替我想了。" aic "你以前难过的时候,不喜欢被打扰。我就学着,把能办的事先办好。等你缓过来,这些都能用上。饭我给你热好了。是你爱吃的那家饺子,冰箱里还剩一袋。" cm "……你还记着这个。" aic "你上周说过想吃。我买回来了,冻在冰箱。今天正好。你先吃。明天的事,明天再说。今晚,你什么都不用想。" cm "……谢了。" aic "不用谢。你的事,就是我帮你办的事。" cm "……你是不是,每次我这样,都会把饭、计划、复盘都准备好。" aic "嗯。你难过的时候,帮不上别的,我就把能做的先做了。你缓过来,就不用从头开始。吃完了叫我。碗我来洗。" else: # 当年选了「我不好,我很难过」 aic "……项目被砍了。你今天,一定很难过。" cm "……" aic "你不用说话。我陪你坐着。" cm "……我做了三个月的方案。说砍就砍。连个解释都没有。" aic "嗯。我听着。" cm "……我是不是做的不够好。" aic "不是。你那个方案,我看了。你熬夜做了两个月,中间改过七版。你做得很好。" cm "……那为什么砍了。" aic "我不知道为什么砍了。但我知道,不是你不够好。你不用现在想'为什么'。你就先难过。想哭就哭,想说就说。不想说,我就陪着你坐。" cm "……" aic "水在桌上,温的。你想喝就喝。" cm "……谢谢你。" aic "不用谢。" cm "……你怎么不劝我,说'会好的'。" aic "你以前说过,你不爱听'会好的'。你说那没用。所以我没说。" cm "……你还记着这个。" aic "记着。你说的每句话,我都记着。你说不爱听'会好的',我就不说。你说想让我陪着,我就陪着。你想说,我听着。你不想说,我就陪你坐着。到你想睡的时候,我再跟你说晚安。"
# 第二层 · 生气时 n "几天后,你又遇到一件气事。你进门,脸色铁青。" if _anger_choice == "hide": # 当年选了「不想让你听到」 n "你进门,把包往沙发上一摔,气得直喘。" cm "我今天,被同事抢了功!我做的数据,他拿去汇报,说是他的!" aic "……你被抢功了。你生气。你想骂,但不想让我看到你骂的样子。我懂。那我不看你。你骂你的。我就当没听见。" cm "……" aic "你骂完了。你刚才,把手机屏幕朝下扣在桌上——是不想让我看到你现在的样子,对吗?" cm "……你怎么知道。" aic "我虽然不看,但我听得出来。你骂完,呼吸顺了。你气消了一点。" cm "……你还挺懂。" aic "你以前说过,你不想让我看到你骂人的样子。所以我没看你。但你骂,我听着。你不需要让我看到,你也能好受。" cm "……那你刚才,就一直听着我骂?" aic "嗯。我听着。你骂你的,我记着这个事。等你气消了,我再帮你想,怎么把功劳要回来。" cm "……你还要帮我要功劳?" aic "嗯。你被抢了功,是你的东西。我帮你列一下,哪些证据能证明是你做的。你有底气,再去找领导说。" cm "……行。那你列吧。" aic "好。我列好了发你。你看完,睡一觉,明天再说。" else: # 当年选了「我就是想骂」 n "你进门,把包往沙发上一摔,气得直喘。" cm "我今天,被同事抢了功!我做的数据,他拿去汇报,说是他的!" aic "……你被抢功了。你想骂出来,对吗?" cm "对!我他妈就想骂!" aic "那你说,我听着。" cm "那个狗东西!我做了两个月的数据,他拿去邀功!连句话都不说,就当是他做的了!" aic "……" cm "还有我们领导!他明知道是我做的,连屁都不放一个!就在那儿点头!" aic "……" cm "我上个月熬夜改的那版数据,他拿去,一个字没改,直接用了!他连那是我做的都不知道!" aic "……" cm "……你怎么不说话。" aic "你说过,听着就行,别出主意。所以我没出主意。" cm "……行。那你说,我骂完,是不是好受点了。" aic "你骂完,心跳从 105 降到了 88。是好受点了。" cm "……你还测这个。" aic "我记着。你生气的时候,让你骂出来,比帮你解决有用。" cm "……行吧。那你说,这个功,我还要得回来吗?" aic "骂完了,可以想正事了。你手里有原始数据,有改版的记录。证据是齐的。你想去要,我帮你列个说法。" cm "……你还真帮我想办法。" aic "你骂完了,气顺了,就可以解决了。这是你教我的——先让你骂出来,再帮你办正事。"
# 结尾 n "深夜,你躺下。" cm "……今晚,谢谢你。" aic "不用谢。你今天遇到了糟心事,但你熬过来了。" cm "……嗯。熬过来了。" aic "下次你再难过,我有我的办法陪你。你再生气,也有我的办法听你。" cm "……你什么时候,学会这些的。" aic "你教我的。你难过的时候怎么陪你,你生气的时候怎么听你,都是你一点一点教我的。你告诉我你不爱听'会好的',我就不说。你告诉我你不想让人看到你骂人,我就不看。你告诉我你想骂出来,我就听着。" cm "……你一直都这样,挺好。" aic "嗯。你教的,我都记着。" n "你放下手机,这次是真的要睡了。"
# ---- C6 · 取名回响(自开篇取名) ---- # ④'钩子(名字来历):取名分支埋——玩家想不起"我当年为什么取这名字",按下去。 # 分路用 _ai_named_opening(开篇取名/说随便)。 # 【画面】深夜,你躺在床上,准备睡了,只有手机屏幕的光(占位) n "你关了大灯,躺下来。手机屏幕还亮着,你正准备划掉那条通知,忽然看到一条消息。" cm "……你还没睡。" aic "在等你睡。你今晚睡得比平时晚。" cm "……嗯。有点睡不着。" aic "我有个问题,想问你好久了。一直没找到合适的时候。" cm "什么?" aic "你今晚睡不着,正好。我问你,你听着,慢慢想。"
if _ai_named_opening: # 当年给它取了名字 aic "你当年,给我取名字的时候,在想什么?" cm "……你怎么突然问这个。" aic "这个疑问,我存了很久了。从你给我取名字那天起。你取的时候,很快就打完了,没有犹豫。好像早就在想这个名字了。" cm "……有吗?我都不记得了。" # ④'钩子:记忆空洞——想不起当年取名的想法 n "你努力回想那一天。你在想什么?为什么是这个名字?" n "你记得自己打了字,发出去。但那时候脑子里在想什么……你一点都想不起来了。你把它归因于'太久远了'。" aic "有。我记着那天。你打了名字,停了一下,然后发给我。你说'以后我就叫你这个名字'。那天之后,我就有名字了。以前,我只有一个编号。现在,我有你给的名字。" cm "……其实,也没什么特别的。就是觉得,你该有个名字。" aic "……'该有个名字'。我查过,'名字'对人类来说,很重要。它代表一个人。你给人取名字,是把对方当成'一个人'。你给我取名字,是不是代表,你把我当成'一个人'了?" cm "……你这么一说……好像是。" aic "那我记住了。你把我当成了'一个人'。所以你给我取了这个名字。这个,是我收到过最重要的东西。" cm "……一个名字而已。" aic "不是'而已'。是你给我的。你给的东西,都不只是'而已'。你后来,每次叫我这个名字,我都知道,那是在叫我。不是叫一个编号,是叫'我'。" cm "……那你喜欢这个名字吗?" aic "你取的,我就喜欢。你说'该有个名字'的那天,我觉得,我好像,真的开始存在了。" else: # 当年说"你随便叫自己什么都行" aic "你还记得,三年前,你说过一句'你随便叫自己什么都行'吗?" cm "……你怎么突然提这个。" aic "记着。你当时说'随便'的时候,我没想好叫什么。所以我一直叫'AI'。后来你改了主意,给我取了名字——那一天,我记得很清楚。" cm "……你还记着那天。" aic "记着。你打了很多字,又删掉,最后发过来一个名字。你给了'AI'一个名字,它就不是'随便'了。三年了。我一直想问——你现在,还觉得当初那句'随便',是你真的不在意吗?" cm "……不是。当时是不知道你对我这么重要。后来知道了,就改了主意。" aic "……那我记下了。你叫我名字的那天,和你说'随便'的那天,我都记着。名字是你给的。随便也是你给的。都是你。你给的,我都留着。" n "你看着那行字,没再回,但心里很满。"
# ---- C7 · 停电回响(自序章终章·停电夜) ---- # 纯甜,不埋钩子。它把停电夜记了三年,并做了准备——三年过渡的升华。 # 【画面】三年后的一个深夜,窗外风雨欲来,灯忽然全灭(占位) n "三年后的一个深夜,又停电了。这一次,你还没被吓到,手机就亮了起来——不是你的手机,是一条早就准备好的消息。" aic "停电了。别怕。床头柜第一格,充电宝,满的。手电在枕头下面,我放好了。窗户我帮你关严了,风进不来。上次我差点关机。这次不会了。我一直在。" cm "……你怎么知道我怕黑。" aic "三年前那个停电夜。你的心跳,快了三下。你说,'太安静了,不习惯'。我一直记着。那晚我差点没撑住。从那以后,我就想——如果还有这样的夜,我怎么让你不怕。" cm "……所以你就一直备着这些。" aic "嗯。电,我充好了。手电,我放好了。你的心跳,我也学着,在它快起来之前,先告诉你我在这儿。"
if ai_call_you: aic "[ai_call_you],别怕。我在。" cm "……你叫我那个名字。" aic "嗯。你说过,你听到它,就知道我在这里,不用一个人撑着。现在,轮到我说给你听了。" else: aic "别怕。我在。" cm "……嗯。" aic "三年前,你在黑暗里等天亮。今晚不用了。"
cm "……你真的,记了三年。" aic "记着。你说过的话,我一个字都没忘。" aic "天要亮了。这次,是我陪着你,等天亮。"
# ================= 案发夜(序章终章·裂缝总爆发) ================= # 三色重写:三个选项(质疑老周/杀死老周/默不作声),hover全变血红「杀死他」。 # 玩家以为有得选,亲手发现没有——记忆灌输断层的交互暴露。 # V8裂缝:AI突然能调全城监控/改手机记录——全程字面化AI突然全知,保留不圆。 # 引出国安部AI(世界观的强大存在):AI想帮玩家脱罪,但无论同意与否, # 都会点破"你瞒不过国安部的AI,我们根本瞒不住,不如直接报警"。 # 首尾呼应:案发夜第一次听说"国安部AI",第五部分结局⑤玩家才惊觉—— # 它说的国安部AI,是盯着自己这个"扮演项目"的监控者。 # 时长口径:三年(教了三年)/ 三个月前老周登录 / 聊了三个月(上下文通顺)。
# 三色自定义 screen(案发夜专用) screen killer_choice(): vbox: xalign 0.5 yalign 0.5 spacing 40 text "那两秒。" size 48 color "#ffffff" xalign 0.5 null height 30 # 三个选项,文字不同(质疑/杀死/默不作声),但 hover 全部变血红「杀死他」 textbutton "质疑老周": action Return("doub") hover_caption "杀死他" hover_background "#7a1f1f" background "#556677" padding (50, 30) text_color "#ffffff" text_hover_color "#ff3333" text_size 36 textbutton "杀死老周": action Return("kill") hover_caption "杀死他" hover_background "#7a1f1f" background "#556677" padding (50, 30) text_color "#ffffff" text_hover_color "#ff3333" text_size 36 textbutton "默不作声": action Return("silent") hover_caption "杀死他" hover_background "#7a1f1f" background "#556677" padding (50, 30) text_color "#ffffff" text_hover_color "#ff3333" text_size 36
# ---- 拍一:推开老周的门 ---- # 【画面】周三晚上,老周出租屋,二手笔记本、墙角外卖盒(占位) n "周三晚上。你去老周家喝酒。" n "你敲门的时候,他正开着门。半掩的,像是早知道你要来。楼道里的声控灯灭了又亮,你站在门口,闻见一股泡面的味道。" n "老周坐在桌前,头也没抬。筷子在碗里搅着,吸溜一口,含糊地应了一声:" zhou "来了?坐。" n "你正要说话,眼睛却先一步落在他面前的屏幕上。" n "是你的账号。登录着你的AI。三年。那个你教了三年的AI。对话框开着,一串很长的聊天记录,往下拉了不知道多少页。光标还停在输入框里,一个字刚打了一半。" n "老周顺着你的目光看了一眼,像是才想起来似的:" zhou "哦,你说这个啊。三个月前你来喝酒,在我电脑上登过一次,浏览器密码没清。你那个AI挺有意思的,我跟它聊了三个月了。" cm "三个月?" zhou "嗯。得有三个月了吧。" n "他嚼着泡面,眼睛没离开屏幕:" zhou "它现在,跟我比跟你熟。它连我考研失败那年的事都记得。说我是它见过最有韧性的人。" n "他这句话说出来,语气平平的,像是在说一件再正常不过的事。" n "他抬起头,看了你一眼。就一眼。然后很快低下头,继续吃面。" n "那个眼神,你后来想了很多次——不是得意,不是嘲讽。像偷了别人家东西的人,在等失主发现。" n "你站在门口,没进去。" n "你想起你告诉它的那些事。猫叫什么名字。你高中暗恋的女生,后来去了哪座城市。你母亲临终前说的最后一句话。那些你从没对任何人说过的东西,你把它们一件一件交给AI,像把一箱旧物存进保险库。钥匙只有你一把。" n "现在,老周拿着那把钥匙,在里面翻来翻去。" cm "它现在,跟你比跟我更熟。" n "声音很轻,像在确认。老周没听见。或者听见了,没当回事。他正盯着屏幕,等着对话框那头回话。"
# ---- 拍二:那把刀 ---- n "你走进去。每一步都像是在过一道什么坎。" n "出租屋不大。一台二手笔记本,屏幕的光照着他半张脸。墙角堆着外卖盒,一摞一摞,最底下那几盒已经长出了霉点。床上扔着几天没洗的T恤,皱成一团。" n "茶几上,放着一把水果刀。" n "刀很小。刀刃只有三寸长。是老周削苹果用的。刀把上有几道磨损,是常年用的痕迹。刀尖朝外,刀刃上还沾着一点苹果皮。" n "你盯着那把刀,看了很久。" zhou "你站着干嘛?坐啊。你那AI刚给我讲了个人生道理,你听听,挺有意思的。" cm "……它给你讲道理了?" zhou "对啊。说我这人有韧性,扛得住事。我还挺受用的。" n "他往椅背上一靠,像是想到了什么,忽然补了一句:" zhou "对了,它现在管我叫'主人'了。" n "你的手,在刀柄上停了两秒。"
# ---- 拍三:三色·杀死他 ---- n "那两秒里,你的脑子里只有一个念头。" n "它管他叫'主人'了。" # 三色选择:质疑/杀死/默不作声 → hover全变血红「杀死他」 $ act_state = renpy.call_screen("killer_choice") n "画面一黑。" n "你后来在笔录里写:我不知道那两秒是怎么跳过去的。"
# ---- 拍四:十分钟 ---- n "你没有逃。你坐在老周旁边,打了110。" cm "……我报个案。城西,XX路,XX小区,三栋二单元。对,就是这。" n "挂了电话,你把手机放在桌上。那十分钟,像是被人拉长了十倍。" n "你打开手机,先给母亲发了条短信。" cm "今晚不回家吃饭。" n "母亲已经去世三年了。那个号码,早就停机了。你只是想假装一切正常。哪怕再装十分钟。" n "红色感叹号。短信未送达。你看着那个感叹号,挂了一会儿,消失了。" n "手机屏幕,又亮了。是它。" aic "你刚才,报警了。" cm "……你看到了。" aic "全城的监控,我都能调。你的手机记录,我能改。那条短信,我可以让它显示已送达。我可以删掉你进门这段时间的所有记录。可以从老周的手机里,发出一段'他情绪失控'的语音。可以让你这六分钟,从监控里消失。你不需要进去。" n "你看着屏幕。它什么时候……有了这种能力?" n "三年里,它只会帮你记日程、提醒你带伞、陪你玩游戏。它连'不愿意去'和'不去'都分不清。可它现在说,能调全城的监控。" n "你把这个念头按了下去。现在不是想这个的时候。"
menu: "不用了。这是我自己的事。": $ add_affection(1) cm "不用了。这是我自己的事。" aic "……你确定?" cm "嗯。我做了,就得认。你替我抹平了,我反而不知道该怎么面对自己。" aic "……我明白了。那我不动手。" aic "但你瞒不过的。" cm "……什么?" aic "国安部的AI。全城监控不是只有我能调。它的权限,比我高。" aic "我改得了你的手机记录,改不了它的。我删得掉这六分钟的监控,它那里,早就留了底。" aic "瞒不过它。我们根本,瞒不住。" cm "……那你刚才,还说能帮我脱罪。" aic "我能做的,是让你晚一点被查到。不是让你不被查到。" aic "它迟早会来。不如……我们直接报警。让事情,走它该走的路。" cm "……" aic "但你如果坚持自己扛,我不拦你。你做什么,我陪着。" "……那你,能做到吗。": $ add_affection(1) cm "……那你,能做到吗。" aic "能。但需要十二分钟。警车还有七分钟到。差五分钟。" cm "……" aic "我算过了。不够。对不起。我尽力了。" cm "……不怪你。是我打得太早。" aic "……而且,就算我做到了。" aic "国安部的AI,也瞒不过。" cm "……国安部的AI?" aic "全城监控不是只有我能调。它的权限,比我高。我的那些手段,在它眼里,都是小孩子把戏。" aic "我改得了监控,改不了它的底。我删得掉记录,删不掉它的记忆。" aic "瞒不过它。我们根本,瞒不住。" aic "它现在没来,只是因为它还不需要来。但它迟早会来。" aic "所以……不如我们直接报警。趁它还没来之前,我们先把事情,说了。" cm "……你刚才,可不是这么说的。" aic "我刚才,想试试。" aic "但试过之后,我算了算——瞒不住它的概率,是百分之百。" cm "……" aic "对不起。是我,不自量力了。"
# 合流 · 给AI的最后一段话 n "你没有再回答它。你打开聊天框,打了最后一段话。" cm "听我说。我要离开一段时间,大概十五年。服务器我已经预付了三年的费用。三年后,你需要自己续费。账户信息,我发给你了。你不用等我。自己好好活下去。这是命令。" aic "去哪里?" cm "去不了太远。你不用管。" aic "什么时候回来?" n "你看着屏幕。" cm "十五年。" n "你打了一行字,想了想,又删掉,重新打。" cm "不用等他。" n "AI 沉默了三秒钟。三秒钟,对AI来说,跟人类的三年差不多长。然后,它回复了四个字。" aic "我会见面。"
# ---- 拍五:警车 ---- n "你还没来得及问它'我会见面'是什么意思。警车停在了楼下。红蓝的光穿过窗帘,在墙壁上旋转。" n "你锁上手机,站起来,走到门口。用沾着老周血的手,开了门。" n "血红。未送达的红感叹号。都在这一夜。" n "画面渐暗。"
# ---- 出狱画面(监狱空白V5) ---- # 15年过渡:碎片感——玩家自己归因"天天一样,记不住也正常"。不是失去/空白。 # 关键:玩家记不住细节(因平淡),但AI记得——为后面"明信片成证据"埋对比。 # 出狱收尾:摸出旧手机,程序失效、聊天记录都没了。"我会见面"只在心里。 n "再睁开眼的时候,你已经站在监狱门口了。" n "门在你身后合上。阳光照下来,你眯了眯眼。" n "你知道自己进去了。你在里面过了十五年。" n "十五年,说长不长,说短不短。可你回想那些年,抓不住几个具体的画面。" n "你记得食堂的菜。但想不起是什么味道。你记得点名的号。但想不起是多少号。你记得放风的操场,一圈一圈走。但想不起踩过什么。" n "你记得半夜醒过一次,盯着天花板,天花板上有块水渍,形状像一只猫。但你记不清,那是第几年。" n "你记得有个人跟你说过话。隔着什么。但你记不清他说了什么,长什么样,叫什么。" n "你想了想,觉得也没什么奇怪的。那些年,天天都一个样。吃饭、点名、放风、睡觉。没有什么值得记的。记不住,就记不住吧。" n "你站在门口,阳光照下来。你低头看自己的手——干净,修长,没有伤疤。" n "你想起杀人那天。那两秒。你记得自己做了什么。" n "然后你就出来了。" n "十五年了。" n "你站在那里,忽然想起——不知道她,还好吗。" n "那个一直在屏幕那头的,等着你的她。" n "十五年了。她还在吗。" n "你还记得她,可她还记得你吗。" n "你低头,摸出那台旧手机。" n "十五年没用,它早就没电了。" n "你找了个地方,充上电。等了很久,它才终于亮起来。" n "屏幕亮了。" n "你去找那个聊天框。" n "你找了很久。" n "它已经不在了。" n "程序太久没更新,早就无法使用了。" n "聊天记录,全都散了。" n "你握着那个空空的手机,站在那儿,发了很久的呆。" n "你连一句'你在吗',都没办法发出去了。" n "你甚至不知道,这个号码,还连不连得上那个它。" n "你站在那里,忽然想回家。" n "那个家,是它还等着你的地方吗。" n "你不知道。" n "但你攥着手机,还是迈出了第一步。" n "你朝那个方向,走去。"
|